From 0eef5d4d55e0b7cd71f8f68d51cc7bcbc1976a4c Mon Sep 17 00:00:00 2001 From: Florent Kermarrec Date: Tue, 23 Jul 2019 16:36:21 +0200 Subject: [PATCH] test: add test_refresh with simple RefreshGenerator test --- test/test_refresh.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 test/test_refresh.py diff --git a/test/test_refresh.py b/test/test_refresh.py new file mode 100644 index 0000000..2b09159 --- /dev/null +++ b/test/test_refresh.py @@ -0,0 +1,42 @@ +# This file is Copyright (c) 2019 Florent Kermarrec +# License: BSD + +import unittest + +from migen import * + +from litedram.core.multiplexer import cmd_request_rw_layout +from litedram.core.refresher import RefreshGenerator + + +def c2bool(c): + return {"-": 1, "_": 0}[c] + +class TestRefresh(unittest.TestCase): + def refresh_generator_test(self, trp, trfc, starts, dones, cmds): + cmd = Record(cmd_request_rw_layout(a=16, ba=3)) + def generator(dut): + dut.errors = 0 + for start, done, cas, ras in zip(starts, dones, cmds.cas, cmds.ras): + yield dut.start.eq(c2bool(start)) + yield + if (yield dut.done) != c2bool(done): + dut.errors += 1 + if (yield cmd.cas) != c2bool(cas): + dut.errors += 1 + if (yield cmd.ras) != c2bool(ras): + dut.errors += 1 + dut = RefreshGenerator(cmd, trp, trfc) + run_simulation(dut, [generator(dut)]) + self.assertEqual(dut.errors, 0) + + def test_refresh_generator(self): + trp = 1 + trfc = 2 + class CMDS: pass + cmds = CMDS() + starts = "_-______________" + cmds.cas = "____-___________" + cmds.ras = "___--___________" + dones = "______-_________" + self.refresh_generator_test(trp, trfc, starts, dones, cmds)