These are not understood in a non-local way, reject them.
Docs say this annotation cannot be used on a module instantiated
multiple times (apparently) so non-local should never be needed.
This pass deconstructs the (rather complex) semantics of a >2 input cmerge operation into a series of 2-input cmerge operations + supporting logic. This simpler structure is better suited for `dc` lowering, which only supports lowering 2-input control merge operations.
Simplify
fix test
Also split regular merges
nit
Fix index type propagation for cmerge
Also zext non-`builtin.index`-typed `control_merge` operations
* [DC] Add merge lowering
Modelled after the Handshake lowering, however, becomes trivial with a 2-input merge.
* Add Handshake->DC merge lowerings
* Update lib/Conversion/DCToHW/DCToHW.cpp
Co-authored-by: Christian Ulmann <christianulmann@gmail.com>
* Update lib/Conversion/HandshakeToDC/HandshakeToDC.cpp
Co-authored-by: Christian Ulmann <christianulmann@gmail.com>
* format
* notifyMatchFailure
---------
Co-authored-by: Christian Ulmann <christianulmann@gmail.com>
Remove the named and ref types from the Moore dialect. These
corresponded to Verilog `typedef`s and the `type(<expr>)` syntax,
respectively. Since Slang performs full type checking on its AST, these
types are no longer necessary at the Moore dialect level. This
significantly simplifies the dialect's type system. Once we have a
working lowering from Slang to the core dialects, we can reintroduce a
dedicated type to track user-defined type names.
Remove the enum type from the Moore dialect. No passes or lowerings
currently make use of this type, but imemdiately resolve it to its
underlying integer type instead. This simplifies the dialect. Once the
need for an enum type arises again in the future, we can define a new
one.
Transmute these annotations to simple (temporary) attributes on modules.
This causes the desired behavior for hashing and since this must
match, when deduplicating no work is needed.
Presently, as annotations, each module dedup'd into the group
walks all annotations and "adds context" (makes them non-local)
and interns a new annotation array with those annotations.
At the end of the pass, all dedupGroup annotations are removed.
This causes a lot of unnecessary symbols, hierpaths, annotations, and arrays of
annotations as well as some quadratic behavior.
DedupGroup annotations are commonly on every single module,
so for those designs large dedup groups scaled poorly.
Instead, drop these annotations immediately and add as a simple
named attribute indicating the group.
Drop the (temporary) dedup group attributes at end of pass,
as they are just an in-IR way to track this per-module
during the pass.
Fixes#6979.
Also:
Cleanup all module-like's, not just fmoduleop's.
Pre-existing that caused these to persist to LowerToHW which
generated warnings about them (on non-fmoduleop fmodulelike's).
Now, prune the attribute added (on all) so they don't leak past.
* Add lowering for AssertProperty operations
* removed nl at start of file
* sorted cmake and removed unreachable branches
* Removed useless wire in test + removed symbol from hbr compreg
Arcilator currently does not support non-zero reset values for compreg. This change canonicalizes reset values to a mux on the input, as it currently makes no difference for simulation purposes, and sidesteps the reset value limitations.
Add an "inline" convention to layers by adding this to the existing
enumeration. By the nature of how the parser works, this automatically
adds support to parse this attribute without modifications to the parser.
This does not add any support for this in the FIRRTL pipeline.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@sifive.com>
We've rejected this during LowerAnnotations since we've had
LowerAnnotations, so it's safe to say this is thoroughly dead.
The internal source of this was removed in January.
Add option to allow this for compatibility.
Add statistic to count ports added to public modules,
as an interesting bit of information but particularly
to track how many are still being added when updating
a code base to avoid this.
Only warn once per module to keep it from being entirely overwhelming.
(and report how many, in terms of printf's, to convey magnitude)
Split out when-encoding parser behavior to dedicated file,
and look for the deprecation diagnostics in tests that use them.