test: replace ConverterDUT.write_* with .write
This commit is contained in:
parent
7f36717516
commit
0afacba2ca
|
@ -31,50 +31,6 @@ class ConverterDUT(Module):
|
||||||
self.submodules.read_converter = LiteDRAMNativePortConverter(
|
self.submodules.read_converter = LiteDRAMNativePortConverter(
|
||||||
self.read_user_port, self.read_crossbar_port)
|
self.read_user_port, self.read_crossbar_port)
|
||||||
|
|
||||||
def write_up(self, address, data, we=None):
|
|
||||||
port = self.write_user_port
|
|
||||||
if we is None:
|
|
||||||
we = 2**port.wdata.we.nbits - 1
|
|
||||||
yield port.cmd.valid.eq(1)
|
|
||||||
yield port.cmd.we.eq(1)
|
|
||||||
yield port.cmd.addr.eq(address)
|
|
||||||
yield
|
|
||||||
while (yield port.cmd.ready) == 0:
|
|
||||||
yield
|
|
||||||
yield port.cmd.valid.eq(0)
|
|
||||||
yield
|
|
||||||
yield port.wdata.valid.eq(1)
|
|
||||||
yield port.wdata.data.eq(data)
|
|
||||||
yield port.wdata.we.eq(we)
|
|
||||||
yield
|
|
||||||
while (yield port.wdata.ready) == 0:
|
|
||||||
yield
|
|
||||||
yield port.wdata.valid.eq(0)
|
|
||||||
yield
|
|
||||||
|
|
||||||
def write_down(self, address, data, we=None):
|
|
||||||
# down converter must have all the data available along with cmd
|
|
||||||
# it will set user_port.cmd.ready only when it sends all input words
|
|
||||||
port = self.write_user_port
|
|
||||||
if we is None:
|
|
||||||
we = 2**port.wdata.we.nbits - 1
|
|
||||||
yield port.cmd.valid.eq(1)
|
|
||||||
yield port.cmd.we.eq(1)
|
|
||||||
yield port.cmd.addr.eq(address)
|
|
||||||
yield port.wdata.valid.eq(1)
|
|
||||||
yield port.wdata.data.eq(data)
|
|
||||||
yield port.wdata.we.eq(we)
|
|
||||||
yield
|
|
||||||
# ready goes up only after StrideConverter copied all words
|
|
||||||
while (yield port.cmd.ready) == 0:
|
|
||||||
yield
|
|
||||||
yield port.cmd.valid.eq(0)
|
|
||||||
yield
|
|
||||||
while (yield port.wdata.ready) == 0:
|
|
||||||
yield
|
|
||||||
yield port.wdata.valid.eq(0)
|
|
||||||
yield
|
|
||||||
|
|
||||||
def read(self, address, read_data=True):
|
def read(self, address, read_data=True):
|
||||||
port = self.read_user_port
|
port = self.read_user_port
|
||||||
yield port.cmd.valid.eq(1)
|
yield port.cmd.valid.eq(1)
|
||||||
|
@ -95,6 +51,53 @@ class ConverterDUT(Module):
|
||||||
yield
|
yield
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
def write(self, address, data, we=None):
|
||||||
|
if we is None:
|
||||||
|
we = 2**self.write_user_port.wdata.we.nbits - 1
|
||||||
|
if self.write_user_port.data_width > self.write_crossbar_port.data_width:
|
||||||
|
yield from self._write_down(address, data, we)
|
||||||
|
else:
|
||||||
|
yield from self._write_up(address, data, we)
|
||||||
|
|
||||||
|
def _write_up(self, address, data, we):
|
||||||
|
port = self.write_user_port
|
||||||
|
yield port.cmd.valid.eq(1)
|
||||||
|
yield port.cmd.we.eq(1)
|
||||||
|
yield port.cmd.addr.eq(address)
|
||||||
|
yield
|
||||||
|
while (yield port.cmd.ready) == 0:
|
||||||
|
yield
|
||||||
|
yield port.cmd.valid.eq(0)
|
||||||
|
yield
|
||||||
|
yield port.wdata.valid.eq(1)
|
||||||
|
yield port.wdata.data.eq(data)
|
||||||
|
yield port.wdata.we.eq(we)
|
||||||
|
yield
|
||||||
|
while (yield port.wdata.ready) == 0:
|
||||||
|
yield
|
||||||
|
yield port.wdata.valid.eq(0)
|
||||||
|
yield
|
||||||
|
|
||||||
|
def _write_down(self, address, data, we):
|
||||||
|
# down converter must have all the data available along with cmd
|
||||||
|
# it will set user_port.cmd.ready only when it sends all input words
|
||||||
|
port = self.write_user_port
|
||||||
|
yield port.cmd.valid.eq(1)
|
||||||
|
yield port.cmd.we.eq(1)
|
||||||
|
yield port.cmd.addr.eq(address)
|
||||||
|
yield port.wdata.valid.eq(1)
|
||||||
|
yield port.wdata.data.eq(data)
|
||||||
|
yield port.wdata.we.eq(we)
|
||||||
|
yield
|
||||||
|
# ready goes up only after StrideConverter copied all words
|
||||||
|
while (yield port.cmd.ready) == 0:
|
||||||
|
yield
|
||||||
|
yield port.cmd.valid.eq(0)
|
||||||
|
yield
|
||||||
|
while (yield port.wdata.ready) == 0:
|
||||||
|
yield
|
||||||
|
yield port.wdata.valid.eq(0)
|
||||||
|
yield
|
||||||
|
|
||||||
class CDCDUT(ConverterDUT):
|
class CDCDUT(ConverterDUT):
|
||||||
def do_finalize(self):
|
def do_finalize(self):
|
||||||
|
@ -137,13 +140,8 @@ class TestAdaptation(MemoryTestDataMixin, unittest.TestCase):
|
||||||
yield
|
yield
|
||||||
|
|
||||||
def main_generator(dut, pattern):
|
def main_generator(dut, pattern):
|
||||||
if dut.write_user_port.data_width > dut.write_crossbar_port.data_width:
|
|
||||||
write = dut.write_down
|
|
||||||
else:
|
|
||||||
write = dut.write_up
|
|
||||||
|
|
||||||
for adr, data in pattern:
|
for adr, data in pattern:
|
||||||
yield from write(adr, data)
|
yield from dut.write(adr, data)
|
||||||
|
|
||||||
for adr, _ in pattern:
|
for adr, _ in pattern:
|
||||||
yield from dut.read(adr, read_data=False)
|
yield from dut.read(adr, read_data=False)
|
||||||
|
@ -217,13 +215,8 @@ class TestAdaptation(MemoryTestDataMixin, unittest.TestCase):
|
||||||
yield
|
yield
|
||||||
|
|
||||||
def main_generator(dut, pattern):
|
def main_generator(dut, pattern):
|
||||||
if dut.write_user_port.data_width > dut.write_crossbar_port.data_width:
|
|
||||||
write = dut.write_down
|
|
||||||
else:
|
|
||||||
write = dut.write_up
|
|
||||||
|
|
||||||
for adr, data in pattern:
|
for adr, data in pattern:
|
||||||
yield from write(adr, data)
|
yield from dut.write(adr, data)
|
||||||
|
|
||||||
for adr, _ in pattern:
|
for adr, _ in pattern:
|
||||||
yield from dut.read(adr, read_data=False)
|
yield from dut.read(adr, read_data=False)
|
||||||
|
|
Loading…
Reference in New Issue