diff options
author | Marcelina Kościelnicka <mwk@0x04.net> | 2021-03-12 17:05:39 +0100 |
---|---|---|
committer | Marcelina Kościelnicka <mwk@0x04.net> | 2021-03-15 17:17:29 +0100 |
commit | a55bf6375b38a955de4589a66e4d2992ac7dd621 (patch) | |
tree | 2f9a517b5eb61dfc37a08a818bdd0214546d96ff /tests/proc | |
parent | 3af871f969f7f5bd5201bac17544559671312a6f (diff) | |
download | yosys-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.ys | 31 |
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 |