7b3143113001007c460a8d4f053e9ac4834afba7
2 from cocotb
.utils
import get_sim_steps
3 from cocotb
.binary
import BinaryValue
5 from c4m
.cocotb
.jtag
.c4m_jtag
import JTAG_Master
9 def test01_idcode(dut
):
11 Test the IDCODE command
15 clk_period
= get_sim_steps(1, "us")
16 master
= JTAG_Master(dut
.tap_bus__tck
, dut
.tap_bus__tms
, dut
.tap_bus__tdi
, dut
.tap_bus__tdo
, clk_period
=clk_period
)
18 dut
._log
.info("Trying to get IDCODE...")
21 result1
= master
.result
22 dut
._log
.info("IDCODE1: {}".format(result1
))
25 result2
= master
.result
26 dut
._log
.info("IDCODE2: {}".format(result2
))
28 assert(result1
== result2
)
32 def test02_bypass(dut
):
38 clk_period
= get_sim_steps(1, "us")
39 master
= JTAG_Master(dut
.tap_bus__tck
, dut
.tap_bus__tms
, dut
.tap_bus__tdi
, dut
.tap_bus__tdo
, clk_period
=clk_period
)
41 dut
._log
.info("Loading BYPASS command")
42 yield master
.load_ir(master
.BYPASS
)
44 dut
._log
.info("Sending data")
46 data_in
= BinaryValue()
47 data_in
.binstr
= "01001101"
48 yield master
.shift_data(data_in
)
50 dut
._log
.info("bypass out: {}".format(master
.result
.binstr
))
51 assert(master
.result
.binstr
[:-1] == data_in
.binstr
[1:])
55 def test03_sample(dut
):
57 Test of SAMPLEPRELOAD and EXTEST
59 data_in
= BinaryValue()
62 clk_period
= get_sim_steps(1, "us")
63 master
= JTAG_Master(dut
.tap_bus__tck
, dut
.tap_bus__tms
, dut
.tap_bus__tdi
, dut
.tap_bus__tdo
, clk_period
=clk_period
)
66 dut
._log
.info("Load SAMPLEPRELOAD command")
67 yield master
.load_ir(master
.SAMPLEPRELOAD
)
69 data_in
.binstr
= "0100110"
70 dut
._log
.info(" preloading data {}".format(data_in
.binstr
))
73 dut
.tap_ioconn0__pad__i
= 1
74 dut
.tap_ioconn1__core__o
= 0
75 dut
.tap_ioconn2__core__o
= 1
76 dut
.tap_ioconn2__core__oe
= 1
77 dut
.tap_ioconn3__pad__i
= 0
78 dut
.tap_ioconn3__core__o
= 0
79 dut
.tap_ioconn3__core__oe
= 1
80 yield master
.shift_data(data_in
)
81 dut
._log
.info(" output: {}".format(master
.result
.binstr
))
82 assert(master
.result
.binstr
== "1011001")
84 assert dut
.tap_ioconn0__core__i
== 1
85 assert dut
.tap_ioconn1__pad__o
== 0
86 assert dut
.tap_ioconn2__pad__o
== 1
87 assert dut
.tap_ioconn2__pad__oe
== 1
88 assert dut
.tap_ioconn3__core__i
== 0
89 assert dut
.tap_ioconn3__pad__o
== 0
90 assert dut
.tap_ioconn3__pad__oe
== 1
92 dut
._log
.info("Load EXTEST command")
93 yield master
.load_ir(master
.EXTEST
)
95 assert dut
.tap_ioconn0__core__i
== 0
96 assert dut
.tap_ioconn1__pad__o
== 1
97 assert dut
.tap_ioconn2__pad__o
== 0
98 assert dut
.tap_ioconn2__pad__oe
== 0
99 assert dut
.tap_ioconn3__core__i
== 1
100 assert dut
.tap_ioconn3__pad__o
== 1
101 assert dut
.tap_ioconn3__pad__oe
== 0
103 data_in
.binstr
= "1011001"
104 dut
._log
.info(" input data {}".format(data_in
.binstr
))
107 dut
.tap_ioconn0__pad__i
= 0
108 dut
.tap_ioconn1__core__o
= 1
109 dut
.tap_ioconn2__core__o
= 0
110 dut
.tap_ioconn2__core__oe
= 0
111 dut
.tap_ioconn3__pad__i
= 1
112 dut
.tap_ioconn3__core__o
= 1
113 dut
.tap_ioconn3__core__oe
= 0
114 yield master
.shift_data(data_in
)
115 dut
._log
.info(" output: {}".format(master
.result
.binstr
))
116 assert(master
.result
.binstr
== "0100110")
118 assert dut
.tap_ioconn0__core__i
== 1
119 assert dut
.tap_ioconn1__pad__o
== 0
120 assert dut
.tap_ioconn2__pad__o
== 1
121 assert dut
.tap_ioconn2__pad__oe
== 1
122 assert dut
.tap_ioconn3__core__i
== 0
123 assert dut
.tap_ioconn3__pad__o
== 0
124 assert dut
.tap_ioconn3__pad__oe
== 1
128 assert dut
.tap_ioconn0__core__i
== 0
129 assert dut
.tap_ioconn1__pad__o
== 1
130 assert dut
.tap_ioconn2__pad__o
== 0
131 assert dut
.tap_ioconn2__pad__oe
== 0
132 assert dut
.tap_ioconn3__core__i
== 1
133 assert dut
.tap_ioconn3__pad__o
== 1
134 assert dut
.tap_ioconn3__pad__oe
== 0