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.