soc.debug package¶
Submodules¶
soc.debug.dmi module¶
Converted from microwatt core_debug.vhdl to nmigen
Provides a DMI (Debug Module Interface) for accessing a Libre-SOC core, compatible with microwatt’s same interface.
See constants below for addresses and register formats
-
class
soc.debug.dmi.CoreDebug(LOG_LENGTH=0)¶ Bases:
nmigen.hdl.ir.Elaboratable-
elaborate(platform)¶
-
ports()¶
-
-
class
soc.debug.dmi.DBGCore¶ Bases:
object-
CR= 8¶
-
CTRL= 0¶
-
GSPR_DATA= 5¶
-
GSPR_IDX= 4¶
-
LOG_ADDR= 6¶
-
LOG_DATA= 7¶
-
MSR= 3¶
-
NIA= 2¶
-
STAT= 1¶
-
SVSTATE= 10¶
-
XER= 9¶
-
-
class
soc.debug.dmi.DMIInterface(name=None)¶ Bases:
nmutil.iocontrol.RecordObject-
connect_to(other)¶
-
-
class
soc.debug.dmi.DbgCRReg(name)¶ Bases:
nmutil.iocontrol.RecordObject
-
class
soc.debug.dmi.DbgReg(name)¶ Bases:
nmutil.iocontrol.RecordObject
-
soc.debug.dmi.test_debug()¶
soc.debug.firmware_upload module¶
JTAG Wishbone firmware upload program
to test, run “python3 debug/test/test_jtag_tap_srv.py server”
-
soc.debug.firmware_upload.brev(n, width)¶
-
soc.debug.firmware_upload.jtag_sim(dut, firmware)¶ uploads firmware with the following commands: * read IDcode (to check) * set “stopped” and reset * repeat until confirmed “stopped” * upload data over wishbone * read data back and check it * issue cache flush command * issue “start” command
-
soc.debug.firmware_upload.read_dmi_addr(dut, dmi_addr)¶
-
soc.debug.firmware_upload.test_pinset()¶
-
soc.debug.firmware_upload.writeread_dmi_addr(dut, dmi_addr, data)¶
soc.debug.jtag module¶
JTAG interface
using Staf Verhaegen (Chips4Makers) wishbone TAP
-
class
soc.debug.jtag.JTAG(pinset, wb_data_wid=32)¶ Bases:
soc.debug.dmi2jtag.DMITAP,soc.debug.jtag.Pins-
elaborate(platform)¶
-
external_ports()¶ create a list of ports that goes into the top level il (or verilog)
-
-
class
soc.debug.jtag.Pins(pindict)¶ Bases:
objectdeclare a list of pins, including name and direction. grouped by fn the pin dictionary needs to be in a reliable order so that the JTAG Boundary Scan is also in a reliable order
-
soc.debug.jtag.dummy_pinset()¶
soc.debug.jtagutils module¶
-
class
soc.debug.jtagutils.JTAGClient(debug=False)¶ Bases:
object-
close()¶
-
get_data(length=1024, timeout=None)¶
-
jtagremote_client_recv(timeout=None)¶
-
jtagremote_client_send(to_send)¶
-
send(data)¶
-
-
class
soc.debug.jtagutils.JTAGServer(debug=False)¶ Bases:
object-
close()¶
-
get_connection(timeout=0)¶
-
get_data(length=1024, timeout=None)¶
-
jtagremote_server_recv(tdo)¶
-
send(data)¶
-
-
soc.debug.jtagutils.client_sync(dut)¶
-
soc.debug.jtagutils.get_data(s, length=1024, timeout=None)¶
-
soc.debug.jtagutils.jtag_read_write_reg(dut, addr, d_len, d_in=0)¶
-
soc.debug.jtagutils.jtag_set_get_dr(dut, d_len, d_in=0)¶
-
soc.debug.jtagutils.jtag_set_idle(dut)¶
-
soc.debug.jtagutils.jtag_set_ir(dut, addr)¶
-
soc.debug.jtagutils.jtag_set_reset(dut)¶
-
soc.debug.jtagutils.jtag_set_run(dut)¶
-
soc.debug.jtagutils.jtag_set_shift_dr(dut)¶
-
soc.debug.jtagutils.jtag_set_shift_ir(dut)¶
-
soc.debug.jtagutils.jtag_srv(dut)¶
-
soc.debug.jtagutils.tms_data_getset(dut, tms, d_len, d_in=0)¶
-
soc.debug.jtagutils.tms_state_set(dut, bits)¶