"""
from soc.experiment.l0_cache import L0CacheBuffer2
-from nmigen import Module
+from nmigen import Module, Signal, Mux, Elaboratable, Cat, Const
from nmigen.cli import rtlil
from soc.scoreboard.addr_split import LDSTSplitter
from soc.scoreboard.addr_match import LenExpand
"""TestCacheMemoryPortInterface
This is a test class for simple verification of LDSTSplitter
- conforming to PortInterface,
+ conforming to PortInterface
"""
def __init__(self, regwid=64, addrwid=4):
super().__init__(regwid, addrwid)
- #self.ldst = LDSTSplitter()
+ self.ldst = LDSTSplitter(32, 48, 4)
- def set_wr_addr(self, m, addr, mask):
- lsbaddr, msbaddr = self.splitaddr(addr)
- #m.d.comb += self.mem.wrport.addr.eq(msbaddr)
+ def set_wr_addr(self, m, addr, mask, misalign, msr, is_dcbz, is_nc):
+ m.d.comb += self.ldst.addr_i.eq(addr)
- def set_rd_addr(self, m, addr, mask):
- lsbaddr, msbaddr = self.splitaddr(addr)
- #m.d.comb += self.mem.rdport.addr.eq(msbaddr)
+ def set_rd_addr(self, m, addr, mask, misalign, msr, is_nc):
+ m.d.comb += self.ldst.addr_i.eq(addr)
def set_wr_data(self, m, data, wen):
- #m.d.comb += self.mem.wrport.data.eq(data) # write st to mem
- #m.d.comb += self.mem.wrport.en.eq(wen) # enable writes
- return Const(1, 1) #document return value
+ m.d.comb += self.ldst.st_data_i.data.eq(data) # write st to mem
+ m.d.comb += self.ldst.is_st_i.eq(wen) # enable writes
+ st_ok = Const(1, 1)
+ return st_ok
def get_rd_data(self, m):
- #return self.mem.rdport.data, Const(1, 1)
- return None
+ # this path is still untested
+ ld_ok = Const(1, 1)
+ return self.ldst.ld_data_o.data, ld_ok
def elaborate(self, platform):
m = super().elaborate(platform)
yield from super().ports()
# TODO: memory ports
-def test_cache_single_run(dut):
+
+def tst_cache_single_run(dut):
#test single byte
addr = 0
data = 0xfeedface
dut = TestCachedMemoryPortInterface()
#LDSTSplitter(8, 48, 4) #data leng in bytes, address bits, select bits
- run_simulation(dut, test_cache_single_run(dut),
+ run_simulation(dut, tst_cache_single_run(dut),
vcd_name='test_cache_single.vcd')