Source code for hwtLib.interfaces.addrDataHs

from hwt.interfaces.agents.handshaked import HandshakedAgent
from hwt.interfaces.std import VectSignal, HandshakeSync
from hwt.synthesizer.param import Param


[docs]class AddrDataHsAgent(HandshakedAgent):
[docs] def doWrite(self, s, data): i = self.intf w = s.write if data is None: addr, d = None, None else: addr, d = data w(addr, i.addr) w(d, i.data)
[docs] def doRead(self, s): i = self.intf r = s.read return r(i.addr), r(i.data), r(i.mask)
[docs]class AddrDataHs(HandshakeSync):
[docs] def _config(self): self.ADDR_WIDTH = Param(8) self.DATA_WIDTH = Param(8)
[docs] def _declr(self): super(AddrDataHs, self)._declr() self.addr = VectSignal(self.ADDR_WIDTH) self.data = VectSignal(self.DATA_WIDTH)
[docs] def _initSimAgent(self): self._ag = AddrDataHsAgent(self)
[docs]class AddrDataMaskHsAgent(HandshakedAgent):
[docs] def doWrite(self, s, data): i = self.intf w = s.write if data is None: addr, d, mask = None, None, None else: addr, d, mask = data w(addr, i.addr) w(d, i.data) w(mask, i.mask)
[docs] def doRead(self, s): i = self.intf r = s.read return r(i.addr), r(i.data), r(i.mask)
[docs]class AddrDataBitMaskHs(AddrDataHs):
[docs] def _declr(self): super(AddrDataBitMaskHs, self)._declr() self.mask = VectSignal(self.DATA_WIDTH)
[docs] def _initSimAgent(self): self._ag = AddrDataMaskHsAgent(self)