from cocotb.utils import get_sim_steps
from cocotb.binary import BinaryValue
+class JTAGException(Exception):
+ pass
+
class JTAG_Clock(object):
"""
Class for the JTAG clock, run cycle by cycle
@cocotb.coroutine
def cycle_clock(self, cycles=1):
- if self.state == "Run" and self.tms:
+ if self.state == "Run" and self.tms == 1:
self.state = "Scan"
yield self.clkgen.Cycle(cycles)
@cocotb.coroutine
def change_state(self, tms_list):
+ """
+ Put TAP in other state by giving a TMS sequence
+ This function does not detect if one ends up in reset or run
+ state afterwards, self.state has to be updated by caller
+ if that is the case.
+ """
tms_copy = list(tms_list)
while tms_copy:
self.tms <= tms_copy.pop()