You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We are currently missing a ~(~foo) fold opportunity. The folder for comb.xor exists, but is blocked when an operand is defined in another block than the xor op itself.
I found this while looking at assumptions, which often are disabled when the reset signal is high. To accomplish this, the enable-line for an assumption is often ~reset. For example:
When we lower a FIRRTL assumption to SV, we merge the enable and predicate signals to a single formula: !enable | pred. Then our predicate in SV becomes ~(~reset) | test:
We are currently missing a
~(~foo)
fold opportunity. The folder forcomb.xor
exists, but is blocked when an operand is defined in another block than the xor op itself.See: #6235
I found this while looking at assumptions, which often are disabled when the reset signal is high. To accomplish this, the enable-line for an assumption is often
~reset
. For example:If we compile this with
--add-companion-assume
, this becomes:When we lower a FIRRTL assumption to SV, we merge the enable and predicate signals to a single formula:
!enable | pred
. Then our predicate in SV becomes~(~reset) | test
:This never gets simplified, so our final output is:
If folders in comb could fold across the
sv.ifdef
region, that would simplify the final verilog to "assume (reset | test)"The text was updated successfully, but these errors were encountered: