aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorJannis Harder <me@jix.one>2023-03-14 19:13:18 +0100
committerJannis Harder <me@jix.one>2023-03-15 09:51:36 +0100
commit390d1c583a4529bb190684ddbf18545e34c07663 (patch)
tree45f4a9d8c19c78351958f3e0991e08a670741153 /tests
parentc50f641812deed626bc9ecbfe171f56f36bf8432 (diff)
downloadyosys-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')
-rw-r--r--tests/verific/enum_values.sv37
-rw-r--r--tests/verific/enum_values.ys19
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