Source code for hwtLib.amba.axi4s_fullduplex

from hwt.constants import DIRECTION
from hwt.hwIO import HwIO
from hwt.hwParam import HwParam
from hwt.pyUtils.typingFuture import override
from hwtLib.amba.axi4s import Axi4Stream
from hwtSimApi.agents.base import AgentBase
from hwtSimApi.hdlSimulator import HdlSimulator


[docs] class Axi4StreamFullDuplex(HwIO): """ .. hwt-autodoc:: """ @override def hwConfig(self): Axi4Stream.hwConfig(self) self.HAS_RX = HwParam(True) self.HAS_TX = HwParam(True) @override def hwDeclr(self): with self._hwParamsShared(): if self.HAS_TX: self.tx = Axi4Stream() if self.HAS_RX: self.rx = Axi4Stream(masterDir=DIRECTION.IN)
[docs] @override def _initSimAgent(self, sim: HdlSimulator): self._ag = Axi4StreamFullDuplexAgent(sim, self)
[docs] class Axi4StreamFullDuplexAgent(AgentBase):
[docs] def __init__(self, sim: HdlSimulator, hwIO: Axi4StreamFullDuplex): super(Axi4StreamFullDuplexAgent, self).__init__(sim, hwIO) if hwIO.HAS_TX: hwIO.tx._initSimAgent(sim) if hwIO.HAS_RX: hwIO.rx._initSimAgent(sim)
[docs] @override def getDrivers(self): i = self.hwIO if i.HAS_TX: yield from i.tx._ag.getDrivers() if i.HAS_RX: yield from i.rx._ag.getMonitors()
[docs] @override def getMonitors(self): i = self.hwIO if i.HAS_TX: yield from i.tx._ag.getMonitors() if i.HAS_RX: yield from i.rx._ag.getDrivers()