2 from cocotb
.utils
import get_sim_steps
3 from cocotb
.binary
import BinaryValue
5 from c4m
.cocotb
.jtag
.c4m_jtag
import JTAG_Master
8 def test01_idcode(dut
):
10 Test the IDCODE command
14 clk_period
= get_sim_steps(1, "us")
15 master
= JTAG_Master(dut
.tck
, dut
.tms
, dut
.tdi
, dut
.tdo
, dut
.trst_n
, clk_period
)
17 dut
._log
.info("Trying to get IDCODE...")
20 result1
= master
.result
21 dut
._log
.info("IDCODE1: {}".format(result1
))
24 result2
= master
.result
25 dut
._log
.info("IDCODE2: {}".format(result2
))
27 assert(result1
== result2
)
30 def test02_bypass(dut
):
36 clk_period
= get_sim_steps(1, "us")
37 master
= JTAG_Master(dut
.tck
, dut
.tms
, dut
.tdi
, dut
.tdo
, dut
.trst_n
, clk_period
)
39 dut
._log
.info("Loading BYPASS command")
40 yield master
.load_ir(master
.BYPASS
)
42 dut
._log
.info("Sending data")
44 data_in
= BinaryValue()
45 data_in
.binstr
= "01001101"
46 yield master
.shift_data(data_in
)
48 dut
._log
.info("bypass out: {}".format(master
.result
.binstr
))
49 assert(master
.result
.binstr
[:-1] == data_in
.binstr
[1:])
52 def test03_sample(dut
):
54 Test of SAMPLEPRELOAD and EXTEST
56 data_in
= BinaryValue()
59 clk_period
= get_sim_steps(1, "us")
60 master
= JTAG_Master(dut
.tck
, dut
.tms
, dut
.tdi
, dut
.tdo
, dut
.trst_n
, clk_period
)
63 dut
._log
.info("Load SAMPLEPRELOAD command")
64 yield master
.load_ir(master
.SAMPLEPRELOAD
)
66 data_in
.binstr
= "0101110"
67 dut
._log
.info(" preloading data {}".format(data_in
.binstr
))
70 dut
.core_out
= BinaryValue("X010")
71 dut
.core_en
= BinaryValue("XX01")
72 dut
.pad_in
= BinaryValue("1XX0")
73 yield master
.shift_data(data_in
)
74 dut
._log
.info(" output: {}".format(master
.result
.binstr
))
75 assert(master
.result
.binstr
== "1010001")
78 dut
._log
.info("Load EXTEST command")
79 yield master
.load_ir(master
.EXTEST
)
81 data_in
.binstr
= "1010001"
82 dut
._log
.info(" input data {}".format(data_in
.binstr
))
85 dut
.core_out
= BinaryValue("X101")
86 dut
.core_en
= BinaryValue("XX10")
87 dut
.pad_in
= BinaryValue("0XX1")
88 yield master
.shift_data(data_in
)
89 dut
._log
.info(" output: {}".format(master
.result
.binstr
))
90 assert(master
.result
.binstr
== "0101110")
92 dut
._log
.info("Do a capture of the last loaded data")
93 yield master
.shift_data([])