Source code for hwtLib.mem.ramTransactional_io
from hwt.hdl.types.bits import HBits
from hwt.hwIO import HwIO
from hwt.hwIOs.agents.rdVldSync import UniversalRdVldSyncAgent
from hwt.hwIOs.agents.universalComposite import UniversalCompositeAgent
from hwt.hwIOs.hwIOStruct import HdlType_to_HwIO
from hwt.hwIOs.std import HwIORdVldSync, HwIOVectSignal, HwIOSignal
from hwt.hwParam import HwParam
from hwt.pyUtils.typingFuture import override
from hwtLib.amba.axi4s import Axi4Stream
from hwtSimApi.hdlSimulator import HdlSimulator
from ipCorePackager.constants import DIRECTION
[docs]
class TransRamHsR_addr(HwIORdVldSync):
"""
.. hwt-autodoc::
"""
@override
def hwConfig(self):
self.PRIV_T = HwParam(None)
self.ADDR_WIDTH = HwParam(32)
@override
def hwDeclr(self):
if self.PRIV_T is not None:
self.priv = HdlType_to_HwIO().apply(self.PRIV_T)
self.addr = HwIOVectSignal(self.ADDR_WIDTH)
HwIORdVldSync.hwDeclr(self)
[docs]
@override
def _initSimAgent(self, sim:HdlSimulator):
self._ag = UniversalRdVldSyncAgent(sim, self)
[docs]
class TransRamHsW_addr(TransRamHsR_addr):
"""
.. hwt-autodoc::
"""
@override
def hwConfig(self):
TransRamHsR_addr.hwConfig(self)
self.USE_FLUSH = HwParam(True)
@override
def hwDeclr(self):
TransRamHsR_addr.hwDeclr(self)
if(self.USE_FLUSH == True):
self.flush = HwIOSignal()
[docs]
@override
def _initSimAgent(self, sim:HdlSimulator):
self._ag = UniversalRdVldSyncAgent(sim, self)
[docs]
class TransRamHsR(HwIO):
"""
Handshaked RAM port
.. hwt-autodoc::
"""
@override
def hwConfig(self):
self.DATA_WIDTH = HwParam(8)
self.USE_STRB = HwParam(True)
self.ID_WIDTH = HwParam(0)
self.ADDR_WIDTH = HwParam(32)
@override
def hwDeclr(self):
with self._hwParamsShared():
a = self.addr = TransRamHsR_addr()
if self.ID_WIDTH:
a.PRIV_T = HBits(self.ID_WIDTH)
d = self.data = Axi4Stream(masterDir=DIRECTION.IN)
d.USE_STRB = False
d.USE_KEEP = False
[docs]
@override
def _initSimAgent(self, sim: HdlSimulator):
self._ag = UniversalCompositeAgent(sim, self)
[docs]
class TransRamHsW(HwIO):
"""
.. hwt-autodoc::
"""
@override
def hwConfig(self):
self.DATA_WIDTH = HwParam(64)
self.USE_STRB = HwParam(True)
TransRamHsW_addr.hwConfig(self)
@override
def hwDeclr(self):
with self._hwParamsShared():
self.addr = TransRamHsW_addr()
d = self.data = Axi4Stream()
d.ID_WIDTH = 0
d.USE_KEEP = False
[docs]
@override
def _initSimAgent(self, sim: HdlSimulator):
self._ag = UniversalCompositeAgent(sim, self)