Skip to content

[SV] Make InterfaceInstanceOp more like InterfaceOp #1464

Open
@seldridge

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).

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions