circt
circt copied to clipboard
[FIRRTL] Don't allow foreign types in wires or connects.
This forces dialects to handle storing their own types in their own ops and not tie them to firrtl connect semantics. To make this a bit easier, a new connect-like operation exists only for setting the value of foreign-typed output ports and instance inputs.
With this, foreign types may appear ONLY as module port types and will not appear in any (except foreign_output) firrtl operation or type.
There's a fair amount of simplification this will allow in the various passes' logic.
More tests comming.
@prithayan How breaking to you is this?
@prithayan How breaking to you is this?
Wire and connect is primarily being used with libdn.channel<> types, the wire serves a temporary, to use a value that is defined later . I can start working on eliminating their usage. Need to investigate a bit more on the ports usage.