[DMI DPI] Instantiate DMI DPI in Verilator
- Makes DMI DPI the default option instead of JTAG DPI
Signed-off-by: Tom Roberts <tomroberts@lowrisc.org>
diff --git a/hw/ip/rv_dm/rtl/rv_dm.sv b/hw/ip/rv_dm/rtl/rv_dm.sv
index c3da3cd..0611c4c 100644
--- a/hw/ip/rv_dm/rtl/rv_dm.sv
+++ b/hw/ip/rv_dm/rtl/rv_dm.sv
@@ -264,6 +264,8 @@
.rdata_o ( rdata )
);
+ // Bound-in DPI module replaces the TAP
+`ifndef DMIDirectTAP
// JTAG TAP
dmi_jtag #(
.IdcodeValue (IdcodeValue)
@@ -289,6 +291,7 @@
.td_o,
.tdo_oe_o
);
+`endif
tlul_adapter_sram #(
.SramAw(AddressWidthWords),
diff --git a/hw/top_earlgrey/rtl/top_earlgrey_verilator.sv b/hw/top_earlgrey/rtl/top_earlgrey_verilator.sv
index 5535aed..c0835a5 100644
--- a/hw/top_earlgrey/rtl/top_earlgrey_verilator.sv
+++ b/hw/top_earlgrey/rtl/top_earlgrey_verilator.sv
@@ -90,6 +90,23 @@
.rx_i (cio_uart_tx_d2p)
);
+`ifdef DMIDirectTAP
+ // OpenOCD direct DMI TAP
+ bind rv_dm dmidpi u_dmidpi (
+ .clk_i,
+ .rst_ni,
+ .dmi_req_valid,
+ .dmi_req_ready,
+ .dmi_req_addr (dmi_req.addr),
+ .dmi_req_op (dmi_req.op),
+ .dmi_req_data (dmi_req.data),
+ .dmi_rsp_valid,
+ .dmi_rsp_ready,
+ .dmi_rsp_data (dmi_rsp.data),
+ .dmi_rsp_resp (dmi_rsp.resp),
+ .dmi_rst_n (dmi_rst_n)
+ );
+`else
// JTAG DPI for OpenOCD
jtagdpi u_jtagdpi (
.clk_i,
@@ -102,6 +119,7 @@
.jtag_trst_n (cio_jtag_trst_n),
.jtag_srst_n (cio_jtag_srst_n)
);
+`endif
// SPI DPI
spidpi u_spi (
diff --git a/hw/top_earlgrey/top_earlgrey_verilator.core b/hw/top_earlgrey/top_earlgrey_verilator.core
index c5e752d..8f3196a 100644
--- a/hw/top_earlgrey/top_earlgrey_verilator.core
+++ b/hw/top_earlgrey/top_earlgrey_verilator.core
@@ -11,6 +11,7 @@
- lowrisc:dv_dpi:uartdpi
- lowrisc:dv_dpi:gpiodpi
- lowrisc:dv_dpi:jtagdpi
+ - lowrisc:dv_dpi:dmidpi
- lowrisc:dv_dpi:spidpi
- lowrisc:dv_dpi:usbdpi
- lowrisc:dv_verilator:memutil_verilator
@@ -43,11 +44,15 @@
datatype : file
description : Application to load into Flash (in Verilog hex format)
paramtype : cmdlinearg
-
rominit:
datatype : file
description : Application to load into Boot ROM (in Verilog hex format)
paramtype : cmdlinearg
+ DMIDirectTAP:
+ datatype: bool
+ paramtype: vlogdefine
+ default: true
+ description: Replace JTAG TAP with an OpenOCD direct connection
targets:
sim:
@@ -58,6 +63,7 @@
- VERILATOR_END_SIM_ADDR=0x10008000
- flashinit
- rominit
+ - DMIDirectTAP
default_tool: verilator
filesets:
- files_sim_verilator