hwtLib.amba.axi_comp.interconnect package

Submodules

hwtLib.amba.axi_comp.interconnect.base module

class hwtLib.amba.axi_comp.interconnect.base.AxiInterconnectBase[source]

Bases: hwt.synthesizer.unit.Unit

Abstract class for axi interconnects

configureFromDrivers(drivers, datapump, byInterfaces=False)[source]

Check configuration of drivers and resolve MAX_LEN and aply it on datapump and this interconnect

connectDrivers(drivers, datapump)[source]

Connect drivers to datapump using this component

getDpIntf(unit)[source]
reqHandler(dpReq, orderFifoIn)[source]
hwtLib.amba.axi_comp.interconnect.base.getSizeWidth(maxLen, dataWidth)[source]

hwtLib.amba.axi_comp.interconnect.common module

class hwtLib.amba.axi_comp.interconnect.common.AxiInterconnectCommon(intfCls)[source]

Bases: hwtLib.abstract.busInterconnect.BusInterconnect

__init__(intfCls)[source]

Initialize self. See help(type(self)) for accurate signature.

_config()[source]

Configure object parameters

  • setup all parameters on this object, use Param class instances to allow use of parameter inheritance

  • called in __init__ of class

_declr(has_r=True, has_w=True)[source]

declarations

  • do all declarations of externally accessible objects there (Interfaces)

  • _declr method is called after _config

  • if this object is Unit all interfaces are threated as externally accessible interfaces if this object is Interface instance all subinterfaces are loaded as well

hwtLib.amba.axi_comp.interconnect.matrix module

class hwtLib.amba.axi_comp.interconnect.matrix.AxiInterconnectMatrix(intfCls)[source]

Bases: hwtLib.amba.axi_comp.interconnect.common.AxiInterconnectCommon

Matrix style interconnect for AXI-3/4/Lite interfaces

Variables
  • SLAVES – list of configuration of slave interfaces, configuration is tuple (address, size)

  • MASTERS – list of configuration of master interfaces, configuration is ALL if the master has visibility to all slaves or tuple of flags, where True means the master has visibility to slave on this index

Note

s[x] port should be connected to a AXI master, m[x] port should be connected to outside AXI slave

schematic
_config()[source]

Configure object parameters

  • setup all parameters on this object, use Param class instances to allow use of parameter inheritance

  • called in __init__ of class

_declr()[source]

declarations

  • do all declarations of externally accessible objects there (Interfaces)

  • _declr method is called after _config

  • if this object is Unit all interfaces are threated as externally accessible interfaces if this object is Interface instance all subinterfaces are loaded as well

_impl()[source]

implementations

  • implement functionality of componnent there

  • called after _declr

configure_sub_interconnect(master_indexes: Set[int], slave_indexes: Set[int], sub_interconnect: Union[hwtLib.amba.axi_comp.interconnect.matrixR.AxiInterconnectMatrixR, hwtLib.amba.axi_comp.interconnect.matrixW.AxiInterconnectMatrixW]) → List[Tuple[hwtLib.amba.axi_comp.interconnect.common.AxiInterconnectCommon, ipCorePackager.constants.INTF_DIRECTION, int, int]][source]
Note

sub interconnect are used if there are distinct group of masters and slaves in order to avoid unnecessary logic

Returns

tuples (sub_interconnect, SLAVE/MASTER, index of interface on this component, index of interface on sub_interconnect)

hwtLib.amba.axi_comp.interconnect.matrix.example_AxiInterconnectMatrix()[source]

hwtLib.amba.axi_comp.interconnect.matrixAddrCrossbar module

class hwtLib.amba.axi_comp.interconnect.matrixAddrCrossbar.AxiInterconnectMatrixAddrCrossbar(axi_addr_cls)[source]

Bases: hwt.synthesizer.unit.Unit

Component which implements N to M crossbar for AXI address channel. If there are multiple masters connected to any slave the access is mannaged by round-robin.

Variables
  • order_s_index_for_m_data_out – handshaked interface with index of slave for each master, data is send on start of the transaction

  • order_m_index_for_s_data_out – handshaked interface with index of master for each slave, data is send on start of the transaction

schematic
__init__(axi_addr_cls)[source]

Initialize self. See help(type(self)) for accurate signature.

_config()[source]

Configure object parameters

  • setup all parameters on this object, use Param class instances to allow use of parameter inheritance

  • called in __init__ of class

_declr()[source]

declarations

  • do all declarations of externally accessible objects there (Interfaces)

  • _declr method is called after _config

  • if this object is Unit all interfaces are threated as externally accessible interfaces if this object is Interface instance all subinterfaces are loaded as well

_impl()[source]

implementations

  • implement functionality of componnent there

  • called after _declr

addr_handler_N_to_M(master_addr_channels, slave_addr_channels, order_m_index_for_s_data_in, order_s_index_for_m_data_in)[source]

for each slave use roundrobin to select the master and store indexes of master and slave for later use

addr_handler_build_addr_mux(slv_addr_tmp, master_addr_channels, addr_assignments, isSelectedFlags)[source]

build all master addr to this slave mux

static priorityAck(priorityReg, vldSignals, index)[source]
propagate_addr(master_addr_channels, slave_addr_channels) → List[List[Tuple[hwt.synthesizer.rtlLevel.rtlSignal.RtlSignal, hwt.hdl.assignment.Assignment]]][source]
Returns

matrix of tuple(addr select, addr assignment) for all masters and slaves (master X slave)

hwtLib.amba.axi_comp.interconnect.matrixAddrCrossbar.example_AxiInterconnectMatrixAddrCrossbar()[source]

hwtLib.amba.axi_comp.interconnect.matrixCrossbar module

class hwtLib.amba.axi_comp.interconnect.matrixCrossbar.AxiInterconnectMatrixCrossbar(intfCls)[source]

Bases: hwt.synthesizer.unit.Unit

Crossbar for AXI-Stream like interfaces where internal switch box can be driven by

schematic
__init__(intfCls)[source]

Initialize self. See help(type(self)) for accurate signature.

_config()[source]

Configure object parameters

  • setup all parameters on this object, use Param class instances to allow use of parameter inheritance

  • called in __init__ of class

_declr()[source]

declarations

  • do all declarations of externally accessible objects there (Interfaces)

  • _declr method is called after _config

  • if this object is Unit all interfaces are threated as externally accessible interfaces if this object is Interface instance all subinterfaces are loaded as well

_impl()[source]

implementations

  • implement functionality of componnent there

  • called after _declr

static _masters_for_slave(masters, slave_cnt) → Dict[int, Set[int]][source]
connection_handler_N_to_M(dataOut_channels, dataIn_channels, order_dout_index_for_din, order_din_index_for_dout)[source]
get_last(intf)[source]
handler_data_mux(dataOut_channels, dataIn_channels, order_din_index_for_dout)[source]
handler_din_rd(dataOut_channels, dataIn_channels, order_dout_index_for_din, order_din_index_for_dout)[source]
handler_dout_vld(dataOut_channels, dataIn_channels, order_dout_index_for_din, order_din_index_for_dout)[source]
hwtLib.amba.axi_comp.interconnect.matrixCrossbar.example_AxiInterconnectMatrixCrossbar()[source]

hwtLib.amba.axi_comp.interconnect.matrixR module

class hwtLib.amba.axi_comp.interconnect.matrixR.AxiInterconnectMatrixR(intfCls)[source]

Bases: hwtLib.amba.axi_comp.interconnect.common.AxiInterconnectCommon

Read only AXI3/4/Lite interconnect with supports transaction overlapping and guarantees the order order of transactions on the bus

Variables
  • order_m_index_for_s_data – list, FIFOs for each slave which keeps the information about which master accessed slave on this index, to keep the order of transactions coherent

  • order_s_index_for_m_data – list, FIFOs for each master which keeps the information about where master should expect data

schematic
_declr()[source]

declarations

  • do all declarations of externally accessible objects there (Interfaces)

  • _declr method is called after _config

  • if this object is Unit all interfaces are threated as externally accessible interfaces if this object is Interface instance all subinterfaces are loaded as well

_impl()[source]

implementations

  • implement functionality of componnent there

  • called after _declr

hwtLib.amba.axi_comp.interconnect.matrixR.example_AxiInterconnectMatrixR()[source]

hwtLib.amba.axi_comp.interconnect.matrixW module

class hwtLib.amba.axi_comp.interconnect.matrixW.AxiInterconnectMatrixCrossbarB(intfCls)[source]

Bases: hwtLib.amba.axi_comp.interconnect.matrixCrossbar.AxiInterconnectMatrixCrossbar

get_last(intf)[source]
class hwtLib.amba.axi_comp.interconnect.matrixW.AxiInterconnectMatrixW(intfCls)[source]

Bases: hwtLib.amba.axi_comp.interconnect.common.AxiInterconnectCommon

Write-only AXI3/4/Lite interconnect with supports transaction overlapping and guarantees the order order of transactions on the bus

schematic
_declr()[source]

declarations

  • do all declarations of externally accessible objects there (Interfaces)

  • _declr method is called after _config

  • if this object is Unit all interfaces are threated as externally accessible interfaces if this object is Interface instance all subinterfaces are loaded as well

_impl()[source]

implementations

  • implement functionality of componnent there

  • called after _declr

hwtLib.amba.axi_comp.interconnect.matrixW.example_AxiInterconnectMatrixW()[source]