diff options
author | Jannis Harder <me@jix.one> | 2023-03-14 19:13:18 +0100 |
---|---|---|
committer | Jannis Harder <me@jix.one> | 2023-03-15 09:51:36 +0100 |
commit | 390d1c583a4529bb190684ddbf18545e34c07663 (patch) | |
tree | 45f4a9d8c19c78351958f3e0991e08a670741153 /tests/verific | |
parent | c50f641812deed626bc9ecbfe171f56f36bf8432 (diff) | |
download | yosys-390d1c583a4529bb190684ddbf18545e34c07663.tar.gz yosys-390d1c583a4529bb190684ddbf18545e34c07663.tar.bz2 yosys-390d1c583a4529bb190684ddbf18545e34c07663.zip |
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.
Diffstat (limited to 'tests/verific')
-rw-r--r-- | tests/verific/enum_values.sv | 37 | ||||
-rw-r--r-- | tests/verific/enum_values.ys | 19 |
2 files changed, 56 insertions, 0 deletions
diff --git a/tests/verific/enum_values.sv b/tests/verific/enum_values.sv new file mode 100644 index 000000000..69b53fd8e --- /dev/null +++ b/tests/verific/enum_values.sv @@ -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 diff --git a/tests/verific/enum_values.ys b/tests/verific/enum_values.ys new file mode 100644 index 000000000..f580ded8a --- /dev/null +++ b/tests/verific/enum_values.ys @@ -0,0 +1,19 @@ +read -sv enum_values.sv +hierarchy -top top +printattrs a:* + +select -assert-count 1 a:some_attribute=16'd42 +# currently select doesn't support negative values in attributes +select -assert-count 1 a:another_attribute=32'hffffffff + +select -assert-count 1 top/state a:wiretype=\state_t %i +select -assert-count 1 top/state a:enum_value_11=\A %i +select -assert-count 1 top/state a:enum_value_00=\B %i +select -assert-count 1 top/state a:enum_value_01=\C %i +select -assert-count 1 top/state a:enum_value_10=\D %i + +select -assert-count 1 top/wide_state a:wiretype=\wide_state_t %i +select -assert-count 1 top/wide_state a:enum_value_00000000000000000000000000000000=\WA %i +select -assert-count 1 top/wide_state a:enum_value_00000000000000000000000000000001=\WB %i +select -assert-count 1 top/wide_state a:enum_value_00000000000000000000000000000010=\WC %i +select -assert-count 1 top/wide_state a:enum_value_00000000000000000000000000000011=\WD %i |