Interconnect

This document is about implementing new Interconnect, check Interconnect generation to read about Interconnect concept in Topwrap.

Interconnect is base class for all interconnects, it has 3 generic classes that are used to represent params: InterconnectParams, InterconnectManagerParams and InterconnectSubordinateParams. All new implementations of interconnect need to be placed in in topwrap/interconnects/ and added to INTERCONNECT_TYPES. Each interconnect needs to have implemented Generator, refer to Generator to check how to implement one.

class Interconnect(*, name: str, clock: ReferencedPort, reset: ReferencedPort, params: _IPAR, managers: Mapping[ObjectId[ReferencedInterface], _MANPAR] = {}, subordinates: Mapping[ObjectId[ReferencedInterface], _SUBPAR] = {})

Base class for multiple interconnect generator implementations.

Interconnects connect multiple interface instances together in a many-to-many topology, combining multiple subordinates into a unified address space so that one or multiple managers can access them.

clock : ReferencedPort

The clock signal for this interconnect

managers : dict[ObjectId[ReferencedInterface], _MANPAR]

Manager interfaces controlling this interconnect described as a mapping between a referenced interface in a design and the type-specific manager configuration

params : _IPAR

Interconnect-wide type-specific parameters

parent : Design

The design containing this interconnect

reset : ReferencedPort

The reset signal for this interconnect

subordinates : dict[ObjectId[ReferencedInterface], _SUBPAR]

Subordinate interfaces subject to this interconnect described in the same format as managers

class InterconnectParams

Base class for parameters/settings specific to a concrete interconnect type

Schema

alias of InterconnectParams

class InterconnectSubordinateParams(address: ~topwrap.model.misc.ElaboratableValue = <factory>, size: ~topwrap.model.misc.ElaboratableValue = <factory>)

Base class for subordinate parameters specific to a concrete interconnect type.

Transactions to addresses in range [self.address; self.address + self.size) will be routed to this subordinate.

Schema

alias of InterconnectSubordinateParams

address : ElaboratableValue.Field

The start address of this subordinate in the memory map

size : ElaboratableValue.Field

The size in bytes of this subordinate’s address space

class InterconnectManagerParams

Base class for manager parameters specific to a concrete interconnect type

Schema

alias of InterconnectManagerParams

class InterconnectTypeInfo(intercon: Type[topwrap.model.interconnect.Interconnect], params: Type[topwrap.model.interconnect.InterconnectParams], man_params: Type[topwrap.model.interconnect.InterconnectManagerParams], sub_params: Type[topwrap.model.interconnect.InterconnectSubordinateParams])
INTERCONNECT_TYPES : dict[str, InterconnectTypeInfo]

Maps name to specific interconnect implementation. Used by YAML frontend.


Last update: 2025-09-04