Regression test: do not merge FFs with unconstrained initvals
authorJannis Harder <me@jix.one>
Fri, 1 Apr 2022 17:25:09 +0000 (19:25 +0200)
committerJannis Harder <me@jix.one>
Fri, 1 Apr 2022 17:25:09 +0000 (19:25 +0200)
Currently done by `opt -keepdc` via `opt_merge` but not valid in a
formal context.

tests/.gitignore
tests/invalid_ff_dcinit_merge.sby [new file with mode: 0644]

index 21f5f7806b9e58b73bb32f404d86f0484d69f475..f91f05aeb6d981e65c773e810cd19932a4c4680e 100644 (file)
@@ -12,4 +12,5 @@
 /submod_props*/
 /multi_assert*/
 /aim_vs_smt2_nonzero_start_offset*/
+/invalid_ff_dcinit_merge*/
 /2props1trace*/
diff --git a/tests/invalid_ff_dcinit_merge.sby b/tests/invalid_ff_dcinit_merge.sby
new file mode 100644 (file)
index 0000000..a23d8f0
--- /dev/null
@@ -0,0 +1,29 @@
+[options]
+mode bmc
+depth 4
+expect fail
+
+[engines]
+smtbmc
+
+[script]
+read -formal top.sv
+prep -top top
+
+[file top.sv]
+module top(
+input clk, d
+);
+
+reg q1;
+reg q2;
+
+always @(posedge clk) begin
+    q1 <= d;
+    q2 <= d;
+end;
+
+// q1 and q2 are unconstrained in the initial state, so this should fail
+always @(*) assert(q1 == q2);
+
+endmodule