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
The FIRRTL spec allows for an amount of wiggle room on what can be done with deduplication and public modules. Currently, we don't do something as aggressive as we could. Consider the following:
FIRRTL version 4.0.0circuitFoo:
moduleA:
moduleB:
moduleC:
public moduleD:
public moduleFoo:
inst a of A
inst b of B
inst c of C
inst d of D
Currently, only modules A, B, and C dedup. However, it is legal to have these dedup with D.
Modify the dedup pass to dedup A, B, and C into D. In the final Verilog, there should only be two modules.
You can make a call and do anything legal if there are multiple possible dedup targets. E.g., if there is public module D and public module E. This should incorporate the must dedup annotations to do what they say.
The text was updated successfully, but these errors were encountered:
The linked PR added the ability to deduplicate a private module in to a public module, but it did not make the change to take in to account the MustDedup annotation when deciding which public module to dedup with. Right now MustDedup is only used to check the results of Dedup were what we were expecting, and using it to inform the deduplication procedure would be a larger change. I think we can close this issue because we don't have any plans on implementing this behaviour, but we can re-open it if we decide to go this route.
The FIRRTL spec allows for an amount of wiggle room on what can be done with deduplication and public modules. Currently, we don't do something as aggressive as we could. Consider the following:
Currently, only modules
A
,B
, andC
dedup. However, it is legal to have these dedup withD
.Modify the dedup pass to dedup
A
,B
, andC
intoD
. In the final Verilog, there should only be two modules.You can make a call and do anything legal if there are multiple possible dedup targets. E.g., if there is
public module D
andpublic module E
. This should incorporate the must dedup annotations to do what they say.The text was updated successfully, but these errors were encountered: