JTAG boundary scan test 1st attempt
[soc.git] / src / soc / debug / jtagutils.py
index 1dee686c2dd2678d47317476b198de544cc2eae2..7f77558fea100e0842f47fb0ef233db153b514b2 100644 (file)
@@ -41,7 +41,7 @@ def tms_data_getset(dut, tms, d_len, d_in=0):
         tdi = 1 if (d_in & (1<<i)) else 0
         yield dut.cbus.tck.eq(1)
         yield from client_sync(dut)
-        res |= (1<<i) if (yield dut.bus.tdo) else 0
+        res |= (1<<i) if (yield dut.cbus.tdo) else 0
         yield
         yield from client_sync(dut)
         yield dut.cbus.tdi.eq(tdi)
@@ -71,17 +71,24 @@ def jtag_set_idle(dut):
     yield from tms_state_set(dut, [1, 1, 0])
 
 
-def jtag_read_write_reg(dut, addr, d_len, d_in=0):
+def jtag_set_ir(dut, addr):
     yield from jtag_set_run(dut)
     yield from jtag_set_shift_ir(dut)
-    yield from tms_data_getset(dut, 0, dut._ir_width, addr)
+    result = yield from tms_data_getset(dut, 0, dut._ir_width, addr)
     yield from jtag_set_idle(dut)
+    return result
+
 
+def jtag_set_get_dr(dut, d_len, d_in=0):
     yield from jtag_set_shift_dr(dut)
     result = yield from tms_data_getset(dut, 0, d_len, d_in)
     yield from jtag_set_idle(dut)
     return result
 
+def jtag_read_write_reg(dut, addr, d_len, d_in=0):
+    yield from jtag_set_ir(dut, addr)
+    return (yield from jtag_set_get_dr(dut, d_len, d_in))
+
 
 def jtag_srv(dut):
     while not dut.stop:
@@ -98,7 +105,7 @@ def jtag_srv(dut):
         yield dut.bus.tms.eq(tms)
         yield dut.bus.tdi.eq(tdi)
         yield
-
+    print ("jtag srv stopping")
 
 
 def get_data(s, length=1024, timeout=None):