Source code for hwtLib.amba.axis_fullduplex

from hwt.hdl.constants import DIRECTION
from hwt.synthesizer.interface import Interface
from hwt.synthesizer.param import Param
from hwtLib.amba.axis import AxiStream
from hwtSimApi.agents.base import AgentBase
from hwtSimApi.hdlSimulator import HdlSimulator


[docs]class AxiStreamFullDuplex(Interface): """ .. hwt-autodoc:: """ def _config(self): AxiStream._config(self) self.HAS_RX = Param(True) self.HAS_TX = Param(True) def _declr(self): with self._paramsShared(): if self.HAS_TX: self.tx = AxiStream() if self.HAS_RX: self.rx = AxiStream(masterDir=DIRECTION.IN)
[docs] def _initSimAgent(self, sim: HdlSimulator): self._ag = AxiStreamFullDuplexAgent(sim, self)
[docs]class AxiStreamFullDuplexAgent(AgentBase):
[docs] def __init__(self, sim: HdlSimulator, intf: AxiStreamFullDuplex): super(AxiStreamFullDuplexAgent, self).__init__(sim, intf) if intf.HAS_TX: intf.tx._initSimAgent(sim) if intf.HAS_RX: intf.rx._initSimAgent(sim)
[docs] def getDrivers(self): i = self.intf if i.HAS_TX: yield from i.tx._ag.getDrivers() if i.HAS_RX: yield from i.rx._ag.getMonitors()
[docs] def getMonitors(self): i = self.intf if i.HAS_TX: yield from i.tx._ag.getMonitors() if i.HAS_RX: yield from i.rx._ag.getDrivers()