Source code for hwtLib.commonHwIO.addr

from hwt.hwIOs.agents.rdVldSync import HwIODataRdVldAgent
from hwt.hwIOs.std import HwIORdVldSync, HwIOVectSignal
from hwt.hwParam import HwParam
from hwt.pyUtils.typingFuture import override
from hwtSimApi.hdlSimulator import HdlSimulator


[docs] class HwIOAddrRdVld(HwIORdVldSync): @override def hwConfig(self): self.ID_WIDTH = HwParam(4) self.ADDR_WIDTH = HwParam(32) @override def hwDeclr(self): if self.ID_WIDTH: self.id = HwIOVectSignal(self.ID_WIDTH) self.addr = HwIOVectSignal(self.ADDR_WIDTH) HwIORdVldSync.hwDeclr(self)
[docs] @override def _initSimAgent(self, sim: HdlSimulator): self._ag = HwIOAddrRdVldAgent(sim, self)
[docs] class HwIOAddrRdVldAgent(HwIODataRdVldAgent):
[docs] @override def set_data(self, data): i = self.hwIO if data is None: id_, addr = None, None elif i.ID_WIDTH: id_, addr = data i.id.write(id_) else: addr = data i.addr.write(addr)
[docs] @override def get_data(self): i = self.hwIO if i.ID_WIDTH: return i.id.read(), i.addr.read() else: return i.addr.read()