Made nmigen code independent of VHDL code.
[c4m-jtag.git] / test / nmigen / cocotb / controller / test.py
index 7b465fb7b5797a2a44d62d1a0920917b5941233e..7b3143113001007c460a8d4f053e9ac4834afba7 100644 (file)
@@ -4,6 +4,7 @@ from cocotb.binary import BinaryValue
 
 from c4m.cocotb.jtag.c4m_jtag import JTAG_Master
 
+
 @cocotb.test()
 def test01_idcode(dut):
     """
@@ -26,6 +27,7 @@ def test01_idcode(dut):
 
     assert(result1 == result2)
     
+
 @cocotb.test()
 def test02_bypass(dut):
     """
@@ -48,6 +50,7 @@ def test02_bypass(dut):
     dut._log.info("bypass out: {}".format(master.result.binstr))
     assert(master.result.binstr[:-1] == data_in.binstr[1:])
 
+
 @cocotb.test()
 def test03_sample(dut):
     """
@@ -63,32 +66,71 @@ def test03_sample(dut):
     dut._log.info("Load SAMPLEPRELOAD command")
     yield master.load_ir(master.SAMPLEPRELOAD)
 
-    data_in.binstr = "011000"
+    data_in.binstr = "0100110"
     dut._log.info("  preloading data {}".format(data_in.binstr))
 
     # Set the ios pins
-    dut.top_coreo = 2
-    dut.top_coreoe = 0
-    dut.top_padi = 1
+    dut.tap_ioconn0__pad__i = 1
+    dut.tap_ioconn1__core__o = 0
+    dut.tap_ioconn2__core__o = 1
+    dut.tap_ioconn2__core__oe = 1
+    dut.tap_ioconn3__pad__i = 0
+    dut.tap_ioconn3__core__o = 0
+    dut.tap_ioconn3__core__oe = 1
     yield master.shift_data(data_in)
     dut._log.info("  output: {}".format(master.result.binstr))
-    assert(master.result.binstr == "100010")
+    assert(master.result.binstr == "1011001")
 
+    assert dut.tap_ioconn0__core__i == 1
+    assert dut.tap_ioconn1__pad__o == 0
+    assert dut.tap_ioconn2__pad__o == 1
+    assert dut.tap_ioconn2__pad__oe == 1
+    assert dut.tap_ioconn3__core__i == 0
+    assert dut.tap_ioconn3__pad__o == 0
+    assert dut.tap_ioconn3__pad__oe == 1
 
     dut._log.info("Load EXTEST command")
     yield master.load_ir(master.EXTEST)
 
-    data_in.binstr = "100111"
+    assert dut.tap_ioconn0__core__i == 0
+    assert dut.tap_ioconn1__pad__o == 1
+    assert dut.tap_ioconn2__pad__o == 0
+    assert dut.tap_ioconn2__pad__oe == 0
+    assert dut.tap_ioconn3__core__i == 1
+    assert dut.tap_ioconn3__pad__o == 1
+    assert dut.tap_ioconn3__pad__oe == 0
+
+    data_in.binstr = "1011001"
     dut._log.info("  input data {}".format(data_in.binstr))
     
     # Set the ios pins
-    dut.top_coreo = 1
-    dut.top_coreoe = 3
-    dut.top_padi = 2
+    dut.tap_ioconn0__pad__i = 0
+    dut.tap_ioconn1__core__o = 1
+    dut.tap_ioconn2__core__o = 0
+    dut.tap_ioconn2__core__oe = 0
+    dut.tap_ioconn3__pad__i = 1
+    dut.tap_ioconn3__core__o = 1
+    dut.tap_ioconn3__core__oe = 0
     yield master.shift_data(data_in)
     dut._log.info("  output: {}".format(master.result.binstr))
-    assert(master.result.binstr == "011101")
+    assert(master.result.binstr == "0100110")
+
+    assert dut.tap_ioconn0__core__i == 1
+    assert dut.tap_ioconn1__pad__o == 0
+    assert dut.tap_ioconn2__pad__o == 1
+    assert dut.tap_ioconn2__pad__oe == 1
+    assert dut.tap_ioconn3__core__i == 0
+    assert dut.tap_ioconn3__pad__o == 0
+    assert dut.tap_ioconn3__pad__oe == 1
+
+    yield master.reset()
+
+    assert dut.tap_ioconn0__core__i == 0
+    assert dut.tap_ioconn1__pad__o == 1
+    assert dut.tap_ioconn2__pad__o == 0
+    assert dut.tap_ioconn2__pad__oe == 0
+    assert dut.tap_ioconn3__core__i == 1
+    assert dut.tap_ioconn3__pad__o == 1
+    assert dut.tap_ioconn3__pad__oe == 0
 
-    dut._log.info("Do a capture of the last loaded data")
-    yield master.shift_data([])