3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-08-11 13:40:53 +00:00

verific: Fix enum_values support and signed attribute values

This uses the same constant parsing for enum_values and for attributes
and extends it to handle signed values as those are used for enums that
implicitly use the int type.
This commit is contained in:
Jannis Harder 2023-03-14 19:13:18 +01:00
parent c50f641812
commit 390d1c583a
3 changed files with 89 additions and 34 deletions

View file

@ -0,0 +1,37 @@
typedef enum {
WA, WB, WC, WD
} wide_state_t;
typedef enum logic [1:0] {
A = 3, B = 0, C, D
} state_t;
module top(input clk, output z);
wide_state_t wide_state = WA;
always @(posedge clk) begin
case (wide_state)
WA: wide_state <= WB;
WB: wide_state <= WC;
WC: wide_state <= WD;
default: wide_state <= WA;
endcase
end
(* some_attribute = shortint'(42) *)
(* another_attribute = -1 *)
state_t state = A;
always @(posedge clk) begin
case (state)
A: state <= B;
B: state <= C;
C: state <= D;
default: state <= A;
endcase
end
assign z = (wide_state == WB) ^ (state == B);
endmodule