@cocotb.test()
-def test05_wishbone(dut):
+def wishbone_basic(dut):
"""
Test of an added Wishbone interface
"""
+ clk_period = 100 # 10MHz
+ tck_period = 300 # 3MHz
+
data_in = BinaryValue()
# these have to match with soc.debug.jtag.JTAG ircodes
cmd_MEMADDRESS = BinaryValue("0101") # 5
cmd_MEMREAD = BinaryValue("0110") # 6
cmd_MEMREADWRITE = BinaryValue("0111") # 7
- # Run JTAG @ 1MHz
- jtagclk_period = get_sim_steps(1, "us")
- master = JTAG_Master(
- dut.tap_bus__tck, dut.tap_bus__tms, dut.tap_bus__tdi, dut.tap_bus__tdo,
- clk_period=jtagclk_period, ir_width=3,
- )
- # Run main chip @ 10MHz; need to be clocked for WB interface to function
- cocotb.fork(Clock(dut.clk, 100, "ns").start())
+ info = "Running Wishbone basic test"
+ wrap = yield from setup_sim(dut, info=info, clk_period=clk_period,
+ run=False)
+ master = yield from setup_jtag(wrap, tck_period = tck_period)
# Load the memory address
yield master.load_ir(cmd_MEMADDRESS)
yield master.load_ir(cmd_MEMREADWRITE)
dut._log.info("Writing memory")
- data_in.binstr = "01010101"
+ data_in.binstr = "01010101" * 8
dut._log.info(" input: {}".format(data_in.binstr))
yield master.shift_data(data_in)
dut._log.info(" output: {}".format(master.result.binstr))
- data_in.binstr = "10101010"
+ data_in.binstr = "10101010" * 8
dut._log.info(" input: {}".format(data_in.binstr))
yield master.shift_data(data_in)
dut._log.info(" output: {}".format(master.result.binstr))
dut._log.info(" input: {}".format(data_in.binstr))
yield master.shift_data(data_in)
dut._log.info(" output: {}".format(master.result.binstr))
- assert master.result.binstr == "1100000000000010"
+ assert master.result.binstr == "00000000000000000000000000000"
# Do read and write
yield master.load_ir(cmd_MEMREADWRITE)
dut._log.info(" input: {}".format(data_in.binstr))
yield master.shift_data(data_in)
dut._log.info(" output: {}".format(master.result.binstr))
- assert master.result.binstr == "1100000000000010"
+ assert master.result.binstr == "00000000000000000000000000010"
# Do read
yield master.load_ir(cmd_MEMREAD)
dut._log.info(" input: {}".format(data_in.binstr))
yield master.shift_data(data_in)
dut._log.info(" output: {}".format(master.result.binstr))
- assert master.result.binstr == "1100000000000010"
+ assert master.result.binstr == "00000000000000000000000000010"
# Do read
yield master.load_ir(cmd_MEMREAD) # MEMREAD
assert master.result.binstr == "01010101" * 8
dut._log.info("{!r}".format(wbmem))
+
+
# demo / debug how to get boundary scan names. run "python3 test.py"
if __name__ == '__main__':
pinouts = get_jtag_boundary()