proc_arst: Add special-casing of clock signal in conditionals.
authorMarcelina Kościelnicka <mwk@0x04.net>
Fri, 12 Mar 2021 16:05:39 +0000 (17:05 +0100)
committerMarcelina Kościelnicka <mwk@0x04.net>
Mon, 15 Mar 2021 16:17:29 +0000 (17:17 +0100)
commita55bf6375b38a955de4589a66e4d2992ac7dd621
tree2f9a517b5eb61dfc37a08a818bdd0214546d96ff
parent3af871f969f7f5bd5201bac17544559671312a6f
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.
passes/proc/proc_arst.cc
tests/proc/bug2656.ys [new file with mode: 0644]