Source code for hwtLib.amba.axi_comp.cache.utils
from hwt.math import log2ceil
from hwt.pyUtils.typingFuture import override
from hwtLib.commonHwIO.addr_data import HwIOAddrData
from hwtLib.mem.cam import CamMultiPort
[docs]
class CamWithReadPort(CamMultiPort):
"""
Content addressable memory with a read port which can be used
to read cam array by index
.. hwt-autodoc::
"""
@override
def hwConfig(self):
CamMultiPort.hwConfig(self)
self.USE_VLD_BIT = False
@override
def hwDeclr(self):
assert not self.USE_VLD_BIT
CamMultiPort.hwDeclr(self)
r = self.read = HwIOAddrData()
r.ADDR_WIDTH = log2ceil(self.ITEMS - 1)
r.DATA_WIDTH = self.KEY_WIDTH
@override
def hwImpl(self):
CamMultiPort.hwImpl(self)
self.read.data(self._mem[self.read.addr])