addInterface<InterfaceType extends PairInterface> method
Adds an interface to this module with comprehensive configuration options.
This method creates an interface reference within this module, providing a connection point for interface-based communication. The interface can be automatically connected to module ports or left unconnected for manual configuration.
The intf specifies the interface instance to add, name provides the
name for the interface reference (subject to uniquification), and role
sets the interface role (consumer or provider) determining port
directions. The connect controls whether to auto-connect interface ports
via connectIO, allowNameUniquification determines whether to allow
automatic name resolution, and portUniquify provides a custom function
for generating unique port names.
When connect is true, the interface ports are automatically mapped to
module ports using the default naming scheme. When false, port mappings
must be established manually using addPortMap.
The portUniquify function receives the logical port name and should
return a unique physical port name. If not provided, defaults to
"${interfaceName}_${logicalPortName}" format.
Returns an InterfaceReference for accessing interface ports and methods.
Throws an Exception if an interface with the same name already exists.
Implementation
InterfaceReference<InterfaceType>
addInterface<InterfaceType extends PairInterface>(
InterfaceType intf, {
required String name,
required PairRole role,
bool connect = true,
bool allowNameUniquification = false,
String Function(String logical)? portUniquify,
}) {
name = _interfaceUniquifier.getUniqueName(
initialName: name,
reserved: !allowUniquification || !allowNameUniquification,
);
if (_interfaces.containsKey(name)) {
throw RohdBridgeException('Interface $name already exists in $this');
}
final ref = InterfaceReference(name, this, intf, role,
connect: connect,
portUniquify: portUniquify ?? (original) => '${name}_$original');
_interfaces[name] = ref;
return ref;
}