Description
SystemVerilog dialect's modeling of InterfaceInstanceOp
is a bit of an odd duck. Module instantiations in FIRRTL and HW dialects are both function-like, but InterfaceInstanceOp
works differently. InterfaceInstanceOp
currently has a return type of the interface type with a symbol back to the interface declaration.
The problem is that interfaces in SystemVerilog can be treated just like modules and instantiated. Something like::
MyInterface myInterface(
.a(a),
.b(b)
);
The current approach doesn't really capture this use case well. I'd like to see some unification around "instantiation" of modules and interfaces so that things like emitting binds (which works for either interface instances or module instances) then isn't having to be handled totally differently.
See terse initial suggestion from @darthscsi here: #1432 (comment).