test: replace ConverterDUT.write_* with .write

This commit is contained in:
Jędrzej Boczar 2020-03-24 12:04:53 +01:00
parent 7f36717516
commit 0afacba2ca
1 changed files with 49 additions and 56 deletions

View File

@ -31,50 +31,6 @@ class ConverterDUT(Module):
self.submodules.read_converter = LiteDRAMNativePortConverter(
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):
port = self.read_user_port
yield port.cmd.valid.eq(1)
@ -95,6 +51,53 @@ class ConverterDUT(Module):
yield
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):
def do_finalize(self):
@ -137,13 +140,8 @@ class TestAdaptation(MemoryTestDataMixin, unittest.TestCase):
yield
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:
yield from write(adr, data)
yield from dut.write(adr, data)
for adr, _ in pattern:
yield from dut.read(adr, read_data=False)
@ -217,13 +215,8 @@ class TestAdaptation(MemoryTestDataMixin, unittest.TestCase):
yield
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:
yield from write(adr, data)
yield from dut.write(adr, data)
for adr, _ in pattern:
yield from dut.read(adr, read_data=False)