2 from cocotb
.triggers
import Timer
3 from cocotb
.utils
import get_sim_steps
4 from cocotb
.binary
import BinaryValue
6 from 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
.tck
, dut
.tms
, dut
.tdi
, dut
.tdo
, dut
.trst_n
, 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
)
31 def test02_bypass(dut
):
37 clk_period
= get_sim_steps(1, "us")
38 master
= JTAG_Master(dut
.tck
, dut
.tms
, dut
.tdi
, dut
.tdo
, dut
.trst_n
, clk_period
)
40 dut
._log
.info("Loading BYPASS command")
41 yield master
.load_ir(master
.BYPASS
)
43 dut
._log
.info("Sending data")
45 data_in
= BinaryValue()
46 data_in
.binstr
= "01001101"
47 yield master
.shift_data(data_in
)
49 dut
._log
.info("bypass out: {}".format(master
.result
.binstr
))
50 assert(master
.result
.binstr
[:-1] == data_in
.binstr
[1:])
53 def test03_sample(dut
):
55 Test of SAMPLEPRELOAD and EXTEST
57 data_in
= BinaryValue()
60 clk_period
= get_sim_steps(1, "us")
61 master
= JTAG_Master(dut
.tck
, dut
.tms
, dut
.tdi
, dut
.tdo
, dut
.trst_n
, clk_period
)
64 dut
._log
.info("Load SAMPLEPRELOAD command")
65 yield master
.load_ir(master
.SAMPLEPRELOAD
)
67 data_in
.binstr
= "011"
68 dut
._log
.info(" preloading data {}".format(data_in
.binstr
))
74 yield master
.shift_data(data_in
)
75 dut
._log
.info(" output: {}".format(master
.result
.binstr
))
76 assert(master
.result
.binstr
== "100")
79 dut
._log
.info("Load EXTEST command")
80 yield master
.load_ir(master
.EXTEST
)
82 data_in
.binstr
= "100"
83 dut
._log
.info(" input data {}".format(data_in
.binstr
))
89 yield master
.shift_data(data_in
)
90 dut
._log
.info(" output: {}".format(master
.result
.binstr
))
91 assert(master
.result
.binstr
== "011")
93 dut
._log
.info("Do a capture of the last loaded data")
94 yield master
.shift_data([])