X-Git-Url: https://git.libre-soc.org/?p=c4m-jtag.git;a=blobdiff_plain;f=sim%2Fcocotb%2Fc4m_jtag.py;h=fe014f381182feacf050b22dbd55cb6785ce305d;hp=5deb89a1362f05293fecfac467ca24d2baa5b63a;hb=eb7100a9a5c02c468dcffc91b98918757084fc59;hpb=493ecad3a8956d5296d6593b5970867cd67f9bae diff --git a/sim/cocotb/c4m_jtag.py b/sim/cocotb/c4m_jtag.py index 5deb89a..fe014f3 100644 --- a/sim/cocotb/c4m_jtag.py +++ b/sim/cocotb/c4m_jtag.py @@ -1,8 +1,10 @@ import cocotb from cocotb.triggers import Timer -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 @@ -62,7 +64,7 @@ class JTAG_Master(object): @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) @@ -84,6 +86,12 @@ class JTAG_Master(object): @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()