[Libre-soc-bugs] [Bug 493] DMI JTAG SERDES needed, to be translated from microwatt/dmi_dtm_xilinx.vhdl

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Tue Sep 22 17:08:59 BST 2020


https://bugs.libre-soc.org/show_bug.cgi?id=493

--- Comment #3 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
https://www2.lauterbach.com/pdf/training_jtag.pdf

this says, "Reading or writing the IR or DR is performed bitwise from LSB to
MSB. With every bit shifted into the TAP controller via TDI, the contents of DR
is rightshifted one bit, providing the LSB on TDO."

this seems to be ok:

            # tdo = reg[0], tdo_en = shift
            tdos.append((reg[0], sr_shift))

and yes, this seems to be ok:

                m.d.posjtag += reg.eq(Cat(reg[1:], self.bus.tdi))

however this seems anomalous in TAP._elaborate_ios():

        with m.Elif(shift):
            m.d.posjtag += io_sr.eq(Cat(self.bus.tdi, io_sr[:-1]))

ah.  right.

http://openocd.org/doc/html/TAP-Declaration.html

-ircapture NUMBER

The bit pattern loaded by the TAP into the JTAG shift register on entry to the
IRCAPTURE state, such as 0x01. JTAG requires the two LSBs of this value to be
01. By default, -ircapture and -irmask are set up to verify that two-bit value.
You may provide additional bits if you know them, or indicate that a TAP
doesn’t conform to the JTAG specification.

so this, if i am reading it correctly, indicates that when you "set" the IDCODE
shift register, it must have been pre-loaded with a default value of 0b00001

the *old* (previous) shift-ir must have been set (at reset) to "0b000001".

where at present i am finding that it is *all* 1s.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the libre-soc-bugs mailing list