aboutsummaryrefslogtreecommitdiffstats
path: root/tests/proc
diff options
context:
space:
mode:
authorMarcelina Kościelnicka <mwk@0x04.net>2021-03-12 17:05:39 +0100
committerMarcelina Kościelnicka <mwk@0x04.net>2021-03-15 17:17:29 +0100
commita55bf6375b38a955de4589a66e4d2992ac7dd621 (patch)
tree2f9a517b5eb61dfc37a08a818bdd0214546d96ff /tests/proc
parent3af871f969f7f5bd5201bac17544559671312a6f (diff)
downloadyosys-a55bf6375b38a955de4589a66e4d2992ac7dd621.tar.gz
yosys-a55bf6375b38a955de4589a66e4d2992ac7dd621.tar.bz2
yosys-a55bf6375b38a955de4589a66e4d2992ac7dd621.zip
proc_arst: Add special-casing of clock signal in conditionals.
The already-existing special case for conditionals on clock has been remade as follows: - now triggered for the last remaining edge trigger after all others have been converted to async reset, not just when there is only one sync rule in the first place - does not require all contained assignments to be constant, as opposed to a reset conditional — merely const-folds the condition In addition, the code has been refactored a bit; as a bonus, the priority order of async resets found is now preserved in resulting sync rule ordering (though this is not yet respected by proc_dff). Fixes #2656.
Diffstat (limited to 'tests/proc')
-rw-r--r--tests/proc/bug2656.ys31
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/proc/bug2656.ys b/tests/proc/bug2656.ys
new file mode 100644
index 000000000..3fe7cb33b
--- /dev/null
+++ b/tests/proc/bug2656.ys
@@ -0,0 +1,31 @@
+read_verilog <<EOT
+module top (...);
+
+input clk, rst, d1, d2;
+output q1, q2;
+
+always @(posedge clk)
+ if (clk)
+ q1 <= d1;
+
+always @(posedge clk, posedge rst)
+ if (rst)
+ q2 <= 0;
+ else if (clk)
+ q2 <= d2;
+
+endmodule
+EOT
+
+proc
+opt
+
+select -assert-count 1 t:$dff
+select -assert-count 1 w:clk %a %co t:$dff %i
+select -assert-count 1 w:d1 %a %co t:$dff %i
+select -assert-count 1 w:q1 %a %ci t:$dff %i
+select -assert-count 1 t:$adff
+select -assert-count 1 w:clk %a %co t:$adff %i
+select -assert-count 1 w:rst %a %co t:$adff %i
+select -assert-count 1 w:d2 %a %co t:$adff %i
+select -assert-count 1 w:q2 %a %ci t:$adff %i