Add simple test for DQSPattern
authorJean THOMAS <git0@pub.jeanthomas.me>
Mon, 20 Jul 2020 14:05:44 +0000 (16:05 +0200)
committerJean THOMAS <git0@pub.jeanthomas.me>
Mon, 20 Jul 2020 14:05:44 +0000 (16:05 +0200)
gram/test/test_common.py

index 10e6159634172b73a5332888223eb37dc5f2f3be..bfc144765e5e32a5025bfeddd969d1abc8559982 100644 (file)
@@ -1 +1,30 @@
-import unittest
+from nmigen import *
+from nmigen.hdl.ast import Past
+
+from gram.common import DQSPattern
+from utils import *
+
+class DQSPatternTestCase(FHDLTestCase):
+    def test_async(self):
+        m = Module()
+        m.d.sync += Signal().eq(0) # Workaround for nMigen#417
+        m.submodules.dut = dut = DQSPattern(register=False)
+
+        def process():
+            yield dut.preamble.eq(1) # Preamble=1, Postamble=0
+            yield
+            self.assertEqual((yield dut.o), 0b00010101)
+
+            yield dut.postamble.eq(1) # Preamble=1, Postamble=1
+            yield
+            self.assertEqual((yield dut.o), 0b00010101)
+
+            yield dut.preamble.eq(0) # Preamble=0, Postamble=1
+            yield
+            self.assertEqual((yield dut.o), 0b01010100)
+
+            yield dut.postamble.eq(0) # Preamble=1, Postamble=1
+            yield
+            self.assertEqual((yield dut.o), 0b01010101)
+
+        runSimulation(m, process, "test_dqspattern_async.vcd")