mirror of
https://github.com/retroSoC/retroSoC.git
synced 2026-11-04 22:32:36 +00:00
refactor: remove HAVE_DEBUG feature and related code
- Eliminated the HAVE_DEBUG preprocessor directive and all associated code from the RTL and test files. - Updated the Emulator class to remove JTAG-related debug signals and configurations. - Adjusted the pin map and JSON configurations to exclude debug-related entries. - Modified the management core wrapper to only support the HAZARD3 core, removing references to the PICORV32 core. - Updated tests to reflect the removal of the HAVE_DEBUG feature, ensuring they no longer check for debug-related conditions. - Cleaned up various scripts and makefiles to remove dependencies on the HAVE_DEBUG flag, streamlining the build process.
This commit is contained in:
40 files changed
+450
-3513
No files matched your search
@@ -77,4 +77,3 @@ socver.*
|
||||
!/rtl/managed/clusterip/setup.py
|
||||
/rtl/managed/mpw/
|
||||
/rtl/managed/third_party/
|
||||
/rtl/managed/picorv32/rtl/picorv32_ver.v
|
||||
@@ -21,9 +21,14 @@ endif
|
||||
ifneq ($(origin IP),undefined)
|
||||
$(error IP is no longer configurable; user IP integration is fixed)
|
||||
endif
|
||||
ifneq ($(origin CORE),undefined)
|
||||
$(error CORE has been removed; the management core is fixed to Hazard3)
|
||||
endif
|
||||
ifneq ($(origin HAVE_DEBUG),undefined)
|
||||
$(error HAVE_DEBUG has been removed; the Hazard3 Debug Module is always enabled)
|
||||
endif
|
||||
|
||||
SOC ?= MINI
|
||||
CORE ?= HAZARD3
|
||||
SIMU ?= VCS
|
||||
SYNTH ?= NONE
|
||||
STA ?= NONE
|
||||
@@ -35,7 +40,6 @@ HAVE_SRAM_IF ?= NO
|
||||
HAVE_SRAM_MACRO ?= NO
|
||||
PDK_BEHAV ?= NO
|
||||
HAVE_SVA ?= NO
|
||||
HAVE_DEBUG ?= YES
|
||||
JTAG_IDCODE ?= DEADBEEF
|
||||
WAVE ?= NO
|
||||
FORMAL ?= NO
|
||||
@@ -74,8 +78,8 @@ VCS_SHELL_PYTHON := $(if $(filter VCS,$(SIMU)),$(if $(filter $(VCS_SHELL_GOALS
|
||||
JOBS ?= $(shell count=$$(nproc 2>/dev/null || printf '1'); \
|
||||
if [ "$$count" -gt "$(MAX_JOBS)" ]; then printf '%s' '$(MAX_JOBS)'; \
|
||||
else printf '%s' "$$count"; fi)
|
||||
CONFIG_KEY_VARS := SOC CORE PDK HAVE_PLL HAVE_SRAM_IF HAVE_SRAM_MACRO PDK_BEHAV HAVE_SVA \
|
||||
HAVE_DEBUG JTAG_IDCODE ISA HAVE_CSR APP LINK_TYPE RTL_TOP FIRMWARE_NAME
|
||||
CONFIG_KEY_VARS := SOC PDK HAVE_PLL HAVE_SRAM_IF HAVE_SRAM_MACRO PDK_BEHAV HAVE_SVA \
|
||||
JTAG_IDCODE ISA HAVE_CSR APP LINK_TYPE RTL_TOP FIRMWARE_NAME
|
||||
VARIANT_ID := $(strip $(shell $(VCS_SHELL_PYTHON) $(ROOT_PATH)/scripts/config_key.py \
|
||||
--lock $(LOCK_FILE) --profile $(PROFILE_NAME) --timestamp $(BUILD_TIMESTAMP) \
|
||||
$(foreach var,$(CONFIG_KEY_VARS),--value $(var)=$($(var))) | tail -n 1))
|
||||
@@ -99,7 +103,6 @@ FLOW_FILELIST_DIR := $(SIM_BUILD_ROOT)/filelists
|
||||
endif
|
||||
|
||||
VALID_SOC := MINI
|
||||
VALID_CORE := HAZARD3 PICORV32
|
||||
VALID_SIMU := VCS VERILATOR IVERILOG
|
||||
VALID_SYNTH := NONE YOSYS
|
||||
VALID_STA := NONE OPENSTA
|
||||
@@ -114,7 +117,6 @@ $(if $(filter $($(1)),$(2)),,$(error Invalid $(1)='$($(1))'; expected one of: $(
|
||||
endef
|
||||
|
||||
$(call validate_value,SOC,$(VALID_SOC))
|
||||
$(call validate_value,CORE,$(VALID_CORE))
|
||||
$(call validate_value,SIMU,$(VALID_SIMU))
|
||||
$(call validate_value,SYNTH,$(VALID_SYNTH))
|
||||
$(call validate_value,STA,$(VALID_STA))
|
||||
@@ -124,7 +126,6 @@ $(call validate_value,HAVE_SRAM_IF,$(VALID_BOOL))
|
||||
$(call validate_value,HAVE_SRAM_MACRO,$(VALID_BOOL))
|
||||
$(call validate_value,PDK_BEHAV,$(VALID_BOOL))
|
||||
$(call validate_value,HAVE_SVA,$(VALID_BOOL))
|
||||
$(call validate_value,HAVE_DEBUG,$(VALID_BOOL))
|
||||
$(call validate_value,WAVE,$(VALID_BOOL))
|
||||
$(call validate_value,FORMAL,$(VALID_BOOL))
|
||||
$(call validate_value,VCS_USE_LSF,$(VALID_BOOL))
|
||||
@@ -141,12 +142,6 @@ endif
|
||||
JTAG_IDCODE_DEC := $(shell value=$$(printf '%u' 0x$(JTAG_IDCODE)); \
|
||||
if [ $$value -gt 2147483647 ]; then echo $$((value - 4294967296)); else echo $$value; fi)
|
||||
|
||||
ifeq ($(HAVE_DEBUG),YES)
|
||||
ifneq ($(CORE),HAZARD3)
|
||||
$(error HAVE_DEBUG=YES requires CORE=HAZARD3; set HAVE_DEBUG=NO for CORE=$(CORE))
|
||||
endif
|
||||
endif
|
||||
|
||||
ifneq ($(filter benchmark-report,$(MAKECMDGOALS)),)
|
||||
ifneq ($(APP),benchmark)
|
||||
$(error benchmark-report requires APP=benchmark)
|
||||
@@ -170,7 +165,6 @@ endif
|
||||
|
||||
DEF_LIST ?= +define+PDK_$(PDK)
|
||||
DEF_LIST += +define+SIMU_$(SIMU)
|
||||
DEF_LIST += +define+CORE_$(CORE)
|
||||
DEF_LIST += +define+SOC_JTAG_IDCODE=$(JTAG_IDCODE_DEC)
|
||||
|
||||
ifeq ($(HAVE_PLL), YES)
|
||||
@@ -199,10 +193,6 @@ ifeq ($(HAVE_SVA), NO)
|
||||
DEF_LIST += +define+SV_ASSRT_DISABLE
|
||||
endif
|
||||
|
||||
ifeq ($(HAVE_DEBUG), YES)
|
||||
DEF_LIST += +define+HAVE_DEBUG
|
||||
endif
|
||||
|
||||
ifeq ($(SYNTH), YOSYS)
|
||||
DEF_LIST += +define+SYNTHESIS
|
||||
endif
|
||||
@@ -224,7 +214,7 @@ ifeq ($(STA), OPENSTA)
|
||||
include sta/opensta/opensta.mk
|
||||
endif
|
||||
|
||||
.PHONY: help config doctor setup setup-regression setup-mpw setup-core setup-clusterip setup-ip setup-pdk setup-app \
|
||||
.PHONY: help config doctor setup setup-regression setup-mpw setup-clusterip setup-ip setup-pdk setup-app \
|
||||
clean-all purge-cache manifest check-warnings metrics check-metrics package \
|
||||
regress-smoke regress-pr regress-nightly sim-asm format format-check sw-format sw-format-check mk-format \
|
||||
mk-format-check rtl-format rtl-format-check sw-policy-check sw-host-test \
|
||||
@@ -286,19 +276,19 @@ config:
|
||||
ROOT_PATH '$(ROOT_PATH)' CONFIG '$(or $(CONFIG_PATH),<defaults>)' \
|
||||
BUILD_TIMESTAMP '$(BUILD_TIMESTAMP)' VARIANT_ID '$(VARIANT_ID)' VARIANT_ROOT '$(VARIANT_ROOT)' \
|
||||
JOBS '$(JOBS)' \
|
||||
SOC '$(SOC)' CORE '$(CORE)' \
|
||||
SOC '$(SOC)' MGMT_CORE 'HAZARD3' \
|
||||
SIMU '$(SIMU)' SYNTH '$(SYNTH)' STA '$(STA)' FORMAL '$(FORMAL)' \
|
||||
VCS_USE_LSF '$(VCS_USE_LSF)' PDK '$(PDK)' \
|
||||
HAVE_PLL '$(HAVE_PLL)' HAVE_SRAM_IF '$(HAVE_SRAM_IF)' \
|
||||
HAVE_SRAM_MACRO '$(HAVE_SRAM_MACRO)' PDK_BEHAV '$(PDK_BEHAV)' HAVE_SVA '$(HAVE_SVA)' \
|
||||
HAVE_DEBUG '$(HAVE_DEBUG)' JTAG_IDCODE '$(JTAG_IDCODE)' \
|
||||
JTAG_IDCODE '$(JTAG_IDCODE)' \
|
||||
ISA '$(ISA)' HAVE_CSR '$(HAVE_CSR)' APP '$(APP)' \
|
||||
LINK_TYPE '$(LINK_TYPE)'
|
||||
|
||||
doctor:
|
||||
@python3 $(ROOT_PATH)/scripts/doctor.py \
|
||||
--root $(ROOT_PATH) --simu $(SIMU) --synth $(SYNTH) --sta $(STA) \
|
||||
--pdk $(PDK) --formal $(FORMAL) --debug $(HAVE_DEBUG) --lock $(LOCK_FILE)
|
||||
--pdk $(PDK) --formal $(FORMAL) --lock $(LOCK_FILE)
|
||||
|
||||
benchmark-report: firmware
|
||||
|
||||
@@ -306,7 +296,7 @@ benchmark-report: firmware
|
||||
$(FLOW_PYTHON) $(ROOT_PATH)/scripts/parse_performance_log.py --log $(PERF_LOG) \
|
||||
--output $(META_DIR)/performance.json
|
||||
|
||||
setup: setup-mpw setup-core setup-clusterip setup-ip setup-pdk setup-app
|
||||
setup: setup-mpw setup-clusterip setup-ip setup-pdk setup-app
|
||||
|
||||
setup-regression:
|
||||
$(MAKE) CONFIG=configs/ci/ihp130.mk setup
|
||||
@@ -321,9 +311,6 @@ setup-mpw:
|
||||
@mkdir -p $(dir $(MPW_STAMP))
|
||||
@touch $(MPW_STAMP)
|
||||
|
||||
setup-core: setup-mpw
|
||||
python3 $(ROOT_PATH)/rtl/mini/script/prepare_picorv32.py
|
||||
|
||||
setup-clusterip:
|
||||
python3 $(ROOT_PATH)/rtl/managed/clusterip/setup.py
|
||||
|
||||
|
||||
@@ -16,9 +16,9 @@ under the [Mulan Permissive Software License, Version 2](LICENSE).
|
||||
|
||||
## Highlights
|
||||
|
||||
- A fixed architecture with a Hazard3 management core by default (PicoRV32 is
|
||||
an explicit build option) and software-selected
|
||||
user-core and user-IP extension slots.
|
||||
- A fixed Hazard3 management core with a permanent JTAG Debug Module, plus
|
||||
software-selected user-core and user-IP extension slots, including PicoRV32
|
||||
at user-core slot C5.
|
||||
- A standard five-pad JTAG Debug Transport Module for the Hazard3 management
|
||||
core, with a reproducible Verilator, OpenOCD, and GDB acceptance flow.
|
||||
- Configurable GF180, SKY130, IHP130, and ICS55 implementation targets with
|
||||
@@ -51,8 +51,9 @@ under the [Mulan Permissive Software License, Version 2](LICENSE).
|
||||
|
||||
The committed profiles are the supported starting points. They select an ISA,
|
||||
PDK, application, linker layout, and optional features as one reproducible
|
||||
configuration. The user-extension fabric is fixed; `CORE` selects the management
|
||||
core and defaults to `HAZARD3`.
|
||||
configuration. The management core is fixed to Hazard3. The user-extension
|
||||
fabric exposes stable C0-C5 user-core slots and software selects one active
|
||||
user core.
|
||||
|
||||
| Profile | ISA | Application | Coverage |
|
||||
| --- | --- | --- | --- |
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
APP_SRCS += $(ROOT_PATH)/app/apps/debug/main.c
|
||||
APP_CRT_SRCS += $(ROOT_PATH)/app/apps/debug/startup.S
|
||||
APP_SRCS += $(ROOT_PATH)/app/apps/debug/main.c
|
||||
APP_CRT_SRCS += $(ROOT_PATH)/app/apps/debug/startup.S
|
||||
@@ -3,7 +3,7 @@
|
||||
"sources": {
|
||||
"mpw": {
|
||||
"url": "https://github.com/retroSoC/mini-ver-mpw.git",
|
||||
"revision": "14dc77916c090c0ec780589c3da03a0803367818",
|
||||
"revision": "e63d5cd71ffd912ad4f901e59f7f848c1a8bbfbd",
|
||||
"destination": "rtl/managed/mpw",
|
||||
"license": "NOASSERTION"
|
||||
},
|
||||
|
||||
+3
-2
@@ -2,8 +2,9 @@
|
||||
|
||||
This directory contains committed Make configuration profiles. Each profile
|
||||
selects SoC, PDK, ISA, CSR support, application, linker layout, and the
|
||||
supported validation tier. The user-extension fabric is fixed; the management
|
||||
core defaults to `HAZARD3` and may be set to `PICORV32` with `CORE`.
|
||||
supported validation tier. The management core is fixed to Hazard3 with its
|
||||
JTAG Debug Module enabled. The user-extension fabric exposes stable C0-C5
|
||||
slots, with PicoRV32 at C5.
|
||||
|
||||
`ci/` contains pull-request profiles, `cluster/` contains configurations
|
||||
requiring site tools or PDKs, and `benchmark/` contains fixed-workload baseline
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
SOC := MINI
|
||||
CORE := HAZARD3
|
||||
PDK := IHP130
|
||||
HAVE_PLL := NO
|
||||
HAVE_SRAM_IF := YES
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
SOC := MINI
|
||||
CORE := HAZARD3
|
||||
PDK := IHP130
|
||||
HAVE_PLL := NO
|
||||
HAVE_SRAM_IF := YES
|
||||
HAVE_SRAM_MACRO := YES
|
||||
PDK_BEHAV := YES
|
||||
HAVE_SVA := NO
|
||||
HAVE_DEBUG := YES
|
||||
ISA := RV32IM
|
||||
HAVE_CSR := NO
|
||||
APP := debug
|
||||
|
||||
@@ -7,13 +7,7 @@
|
||||
#include <retrosoc/generated/memory_map.h>
|
||||
#include <retrosoc/generated/user_extensions.h>
|
||||
|
||||
#if defined(RS_SOC_MGMT_CORE_HAZARD3)
|
||||
#define HW_CORE "Management Hazard3"
|
||||
#elif defined(RS_SOC_MGMT_CORE_PICORV32)
|
||||
#define HW_CORE "Management PicoRV32"
|
||||
#else
|
||||
#error "Management core selection is missing"
|
||||
#endif
|
||||
#define HW_CORE "Management Hazard3"
|
||||
|
||||
#define CPU_FREQ 72 // unit: MHz
|
||||
#define UART_BPS 921600 // unit: bps
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
|
||||
## Scope
|
||||
|
||||
The default `CORE=HAZARD3` configuration enables `HAVE_DEBUG=YES` and exposes
|
||||
a standard RISC-V JTAG Debug Transport Module (DTM) on five conditional pads:
|
||||
TCK, TMS, TDI, TRST_n, and TDO. The default JTAG ID code is `0xDEADBEEF`.
|
||||
Set `JTAG_IDCODE=<eight hexadecimal digits>` to use a board-specific value.
|
||||
The fixed Hazard3 management core always exposes a standard RISC-V JTAG Debug
|
||||
Transport Module (DTM) on five ASIC pads: TCK, TMS, TDI, TRST_n, and TDO. The
|
||||
default JTAG ID code is `0xDEADBEEF`. Set
|
||||
`JTAG_IDCODE=<eight hexadecimal digits>` to use a board-specific value.
|
||||
|
||||
The Debug Module (DM) controls only the management Hazard3 hart. It supports
|
||||
abstract register and memory commands and has `HAVE_SBA=0`, so it never becomes
|
||||
@@ -13,8 +13,8 @@ a second SoC bus master. Debugger memory operations execute through the halted
|
||||
hart and remain subject to the existing RIB access policy. User cores,
|
||||
peripherals, clocks, and pad control stay outside the debug-reset scope.
|
||||
|
||||
`CORE=PICORV32` does not implement this integration. Select
|
||||
`HAVE_DEBUG=NO CORE=PICORV32` when building that management-core option.
|
||||
PicoRV32 is available as software-selected user core C5 through mini-ver-mpw;
|
||||
it is not a management-core option and has no management Debug Module.
|
||||
|
||||
## Reset And Clocking
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ digraph mini_soc_block_diagram {
|
||||
|
||||
mgmt_core [
|
||||
fillcolor="#DDF2E3",
|
||||
label="Management core\nHazard3 by default, branch predictor\nPicoRV32 build option without debug"
|
||||
label="Management core\nFixed Hazard3, branch predictor\nJTAG Debug Module always present"
|
||||
];
|
||||
jtag_dtm [
|
||||
fillcolor="#E5E7EB",
|
||||
@@ -91,7 +91,7 @@ digraph mini_soc_block_diagram {
|
||||
];
|
||||
user_core [
|
||||
fillcolor="#DDF2E3",
|
||||
label="Selected user core\nC0-C4, one active"
|
||||
label="Selected user core\nC0-C5, one active\nPicoRV32 at C5"
|
||||
];
|
||||
dma [
|
||||
fillcolor="#DDF2E3",
|
||||
|
||||
@@ -90,8 +90,8 @@
|
||||
<title>mgmt_core</title>
|
||||
<path fill="#ddf2e3" stroke="#4b5563" stroke-width="1.1" d="M1141,-674.48C1141,-674.48 987,-674.48 987,-674.48 981,-674.48 975,-668.48 975,-662.48 975,-662.48 975,-641.48 975,-641.48 975,-635.48 981,-629.48 987,-629.48 987,-629.48 1141,-629.48 1141,-629.48 1147,-629.48 1153,-635.48 1153,-641.48 1153,-641.48 1153,-662.48 1153,-662.48 1153,-668.48 1147,-674.48 1141,-674.48"/>
|
||||
<text text-anchor="middle" x="1064" y="-660.48" font-family="Arial" font-size="10.00" fill="#111827">Management core</text>
|
||||
<text text-anchor="middle" x="1064" y="-649.48" font-family="Arial" font-size="10.00" fill="#111827">Hazard3 by default, branch predictor</text>
|
||||
<text text-anchor="middle" x="1064" y="-638.48" font-family="Arial" font-size="10.00" fill="#111827">PicoRV32 build option without debug</text>
|
||||
<text text-anchor="middle" x="1064" y="-649.48" font-family="Arial" font-size="10.00" fill="#111827">Fixed Hazard3, branch predictor</text>
|
||||
<text text-anchor="middle" x="1064" y="-638.48" font-family="Arial" font-size="10.00" fill="#111827">JTAG Debug Module always present</text>
|
||||
</g>
|
||||
<!-- mgmt_adapter -->
|
||||
<g id="node8" class="node">
|
||||
@@ -145,15 +145,16 @@
|
||||
<!-- user_core -->
|
||||
<g id="node9" class="node">
|
||||
<title>user_core</title>
|
||||
<path fill="#ddf2e3" stroke="#4b5563" stroke-width="1.1" d="M680,-569.98C680,-569.98 604,-569.98 604,-569.98 598,-569.98 592,-563.98 592,-557.98 592,-557.98 592,-545.98 592,-545.98 592,-539.98 598,-533.98 604,-533.98 604,-533.98 680,-533.98 680,-533.98 686,-533.98 692,-539.98 692,-545.98 692,-545.98 692,-557.98 692,-557.98 692,-563.98 686,-569.98 680,-569.98"/>
|
||||
<text text-anchor="middle" x="642" y="-554.98" font-family="Arial" font-size="10.00" fill="#111827">Selected user core</text>
|
||||
<text text-anchor="middle" x="642" y="-543.98" font-family="Arial" font-size="10.00" fill="#111827">C0-C4, one active</text>
|
||||
<path fill="#ddf2e3" stroke="#4b5563" stroke-width="1.1" d="M680,-574.48C680,-574.48 604,-574.48 604,-574.48 598,-574.48 592,-568.48 592,-562.48 592,-562.48 592,-541.48 592,-541.48 592,-535.48 598,-529.48 604,-529.48 604,-529.48 680,-529.48 680,-529.48 686,-529.48 692,-535.48 692,-541.48 692,-541.48 692,-562.48 692,-562.48 692,-568.48 686,-574.48 680,-574.48"/>
|
||||
<text text-anchor="middle" x="642" y="-560.48" font-family="Arial" font-size="10.00" fill="#111827">Selected user core</text>
|
||||
<text text-anchor="middle" x="642" y="-549.48" font-family="Arial" font-size="10.00" fill="#111827">C0-C5, one active</text>
|
||||
<text text-anchor="middle" x="642" y="-538.48" font-family="Arial" font-size="10.00" fill="#111827">PicoRV32 at C5</text>
|
||||
</g>
|
||||
<!-- user_core->fabric -->
|
||||
<g id="edge9" class="edge">
|
||||
<title>user_core->fabric</title>
|
||||
<path fill="none" stroke="#4b5563" stroke-width="1.2" d="M636.53,-533.94C632.09,-520.08 625.62,-499.91 619.78,-481.69"/>
|
||||
<polygon fill="#4b5563" stroke="#4b5563" stroke-width="1.2" points="621.96,-480.48 617.49,-474.57 617.29,-481.98 621.96,-480.48"/>
|
||||
<path fill="none" stroke="#4b5563" stroke-width="1.2" d="M635.06,-529.34C630.73,-515.85 625.01,-498.03 619.8,-481.75"/>
|
||||
<polygon fill="#4b5563" stroke="#4b5563" stroke-width="1.2" points="622.07,-480.81 617.59,-474.89 617.4,-482.31 622.07,-480.81"/>
|
||||
<text text-anchor="middle" x="634" y="-500.08" font-family="Arial" font-size="8.00" fill="#374151">RIB</text>
|
||||
</g>
|
||||
<!-- dma -->
|
||||
|
||||
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
@@ -28,17 +28,15 @@ only exposes the pad-side subset of `gpio_if`; neither module contains state.
|
||||
|
||||
## Management JTAG
|
||||
|
||||
`HAVE_DEBUG=YES` is the default for the Hazard3 management-core configuration.
|
||||
It adds five conditional ASIC pads: `jtag_tck_i_pad`, `jtag_tms_i_pad`,
|
||||
`jtag_tdi_i_pad`, `jtag_trst_n_i_pad`, and `jtag_tdo_o_pad`. The default DTM
|
||||
ID code is `0xDEADBEEF` and can be changed with the eight-hex-digit
|
||||
`JTAG_IDCODE` Make variable. `HAVE_DEBUG=YES` is invalid with `CORE=PICORV32`;
|
||||
select `HAVE_DEBUG=NO` for that explicit alternative core.
|
||||
The fixed Hazard3 management core always exposes five ASIC pads:
|
||||
`jtag_tck_i_pad`, `jtag_tms_i_pad`, `jtag_tdi_i_pad`, `jtag_trst_n_i_pad`, and
|
||||
`jtag_tdo_o_pad`. The default DTM ID code is `0xDEADBEEF` and can be changed
|
||||
with the eight-hex-digit `JTAG_IDCODE` Make variable.
|
||||
|
||||
The JTAG TCK is an asynchronous clock domain. The canonical clock/reset map
|
||||
declares a 10 MHz TCK constraint and an asynchronous DMI crossing into the
|
||||
system clock domain through Hazard3's APB async bridge. FPGA and RTL-testbench
|
||||
profiles tie the optional JTAG inputs inactive. The Verilator wrapper exposes
|
||||
profiles tie the JTAG inputs inactive. The Verilator wrapper exposes
|
||||
them to the local remote-bitbang server used by the debug acceptance flow.
|
||||
|
||||
## User IP GPIO ownership
|
||||
|
||||
@@ -76,24 +76,20 @@ module retrosoc_top (
|
||||
|
||||
wire s_sys_clk;
|
||||
wire s_aud_clk;
|
||||
`ifdef HAVE_DEBUG
|
||||
wire s_jtag_tck;
|
||||
wire s_jtag_tms;
|
||||
wire s_jtag_tdi;
|
||||
wire s_jtag_trst_n;
|
||||
`endif
|
||||
clk_wiz_0 u_clk_wiz_0 (
|
||||
.clk_in1 (clk_i),
|
||||
.clk_out1(s_sys_clk),
|
||||
.clk_out2(s_aud_clk)
|
||||
);
|
||||
|
||||
`ifdef HAVE_DEBUG
|
||||
assign s_jtag_tck = 1'b0;
|
||||
assign s_jtag_tms = 1'b0;
|
||||
assign s_jtag_tdi = 1'b0;
|
||||
assign s_jtag_trst_n = 1'b0;
|
||||
`endif
|
||||
|
||||
retrosoc_asic u_retrosoc (
|
||||
`include "retrosoc_asic_fpga_mini_bindings.svh"
|
||||
|
||||
@@ -1,10 +1,5 @@
|
||||
{
|
||||
"entries": [
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/hazard3/hdl/hazard3_core.v:<line>: Signal is not used: 'm_trig_event_exception'",
|
||||
"signature": "000fb8dd01a5428a"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/ip/ribp/memory/opipsram.sv:<line>: Signal is not used: 'dummy1'",
|
||||
@@ -15,6 +10,11 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_config.vh:<line>: Parameter is not used: 'U_MODE'",
|
||||
"signature": "00c52f1f83c2580c"
|
||||
},
|
||||
{
|
||||
"count": 3,
|
||||
"example": "GENUNNAMED:$ROOT/rtl/managed/mpw/core/picorv32/picorv32/picorv32.v:<line>: Unnamed generate block 'genblk1' (IEEE 1800-2023 27.6)",
|
||||
"signature": "012d196fe4d527a2"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "DECLFILENAME:$ROOT/rtl/managed/clusterip/common/rtl/utils/lfsr.sv:<line>: Filename 'lfsr' does not match MODULE name: 'lfsr_galois'",
|
||||
@@ -50,6 +50,11 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MHPMEVENT24'",
|
||||
"signature": "0575591db42a0fbd"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MEIPRA'",
|
||||
"signature": "05b320a7991ae73c"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MHPMCOUNTER21'",
|
||||
@@ -90,11 +95,6 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MHPMCOUNTER16'",
|
||||
"signature": "08e2a109c0d25a59"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/hazard3/hdl/hazard3_frontend.v:<line>: Signal is not used: 'trigger_break_any'",
|
||||
"signature": "0904528f6a17265d"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/hazard3/hdl/hazard3_core.v:<line>: Signal is not used: 'x_pmp_cfg_addr'",
|
||||
@@ -110,6 +110,11 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_ops.vh:<line>: Parameter is not used: 'ALUOP_XNOR'",
|
||||
"signature": "0973116d3d4b3b32"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/picorv32/picorv32/picorv32.v:<line>: Signal is not used: 'dbg_rs1val'",
|
||||
"signature": "09de4243869d0409"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_ops.vh:<line>: Parameter is not used: 'ALUOP_ORC_B'",
|
||||
@@ -155,11 +160,6 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_config.vh:<line>: Parameter is not used: 'W_ADDR'",
|
||||
"signature": "0bdf9e1cb55e00af"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/hazard3/hdl/hazard3_core.v:<line>: Signal is not used: 'x_trig_m_en'",
|
||||
"signature": "0c4a1987e01af028"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "DECLFILENAME:$ROOT/rtl/managed/mpw/core/femtorv32/user_core_design.sv:<line>: Filename 'user_core_design' does not match MODULE name: 'mpw_c3'",
|
||||
@@ -210,6 +210,11 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MHPMEVENT3'",
|
||||
"signature": "0fc1f528cb6bfcf4"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/picorv32/picorv32/picorv32.v:<line>: Signal is not used: 'dbg_insn_addr'",
|
||||
"signature": "10df4aa949a20760"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "DECLFILENAME:$ROOT/rtl/mini/dv/sva/rib_protocol_sva.sv:<line>: Filename 'rib_protocol_sva' does not match MODULE name: 'rib_bus_sva'",
|
||||
@@ -225,6 +230,11 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_config.vh:<line>: Parameter is not used: 'MVENDORID_VAL'",
|
||||
"signature": "12bc678368ec196f"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MEIPA'",
|
||||
"signature": "12bdd500c7a3121d"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/managed/mpw/core/serv/user_core_design.sv:<line>: Instance pin connected by name with empty reference: 'o_ext_rs2'",
|
||||
@@ -240,6 +250,11 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MHPMCOUNTER5H'",
|
||||
"signature": "145e16b1336a7477"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/picorv32/picorv32/picorv32.v:<line>: Bits of signal are not used: 'raddr2'[5]",
|
||||
"signature": "14fcd75ce06a0174"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/clusterip/archinfo/rtl/archinfo_reg_pkg.sv:<line>: Parameter is not used: 'ARCHINFO_IDH_ADDR'",
|
||||
@@ -430,11 +445,6 @@
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/ip/ribp/storage/xpi.sv:<line>: Signal is not driven, nor used: 's_xpi_rxlowb'",
|
||||
"signature": "208d42d47a5e277e"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/mini/top/mgmt_core_wrapper.sv:<line>: Instance pin connected by name with empty reference: 'dbg_data0_wen'",
|
||||
"signature": "21c010a36c0ecebd"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$BUILD/generated/pin_map/rtl/retrosoc_asic_verilator_bindings.svh:<line>: Instance pin connected by name with empty reference: 'gpio_27_io_pad'",
|
||||
@@ -465,6 +475,11 @@
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/darkriscv/darkriscv/darkriscv.v:<line>: Bits of signal are not used: 'FCT7'[6,4:0]",
|
||||
"signature": "24678d8b6abaec70"
|
||||
},
|
||||
{
|
||||
"count": 2,
|
||||
"example": "GENUNNAMED:$ROOT/rtl/managed/mpw/core/picorv32/picorv32/picorv32.v:<line>: Unnamed generate block 'genblk3' (IEEE 1800-2023 27.6)",
|
||||
"signature": "2495687cd718dcba"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MHPMCOUNTER28H'",
|
||||
@@ -550,6 +565,11 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/rv_opcodes.vh:<line>: Parameter is not used: 'RV_RS2_BITS'",
|
||||
"signature": "2ba7afcc1b2d4504"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/debug/dm/hazard3_dm.v:<line>: Parameter is not used: 'SBERROR_OK'",
|
||||
"signature": "2ce0fd1da9cc19ce"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "DECLFILENAME:$ROOT/rtl/managed/mpw/core/kianv_rv32ima/kianV/multiplier_extension_decoder.v:<line>: Filename 'multiplier_extension_decoder' does not match MODULE name: 'mpw_core_kianv_rv32ima_multiplier_extension_decoder'",
|
||||
@@ -600,11 +620,6 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_ops.vh:<line>: Parameter is not used: 'MEMOP_LH'",
|
||||
"signature": "316eeb1293a744d1"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/hazard3/hdl/hazard3_core.v:<line>: Signal is not used: 'm_trig_event_trap_cause'",
|
||||
"signature": "3181b9bed50e0b99"
|
||||
},
|
||||
{
|
||||
"count": 2,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/ip/ribp/interconnect/ribp2ribp.sv:<line>: Instance pin connected by name with empty reference: 'wr_full_o'",
|
||||
@@ -615,11 +630,6 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/clusterip/archinfo/rtl/archinfo_reg_pkg.sv:<line>: Parameter is not used: 'ARCHINFO_IDL_ADDR'",
|
||||
"signature": "322396a00ca3c09c"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/mini/top/mgmt_core_wrapper.sv:<line>: Instance pin connected by name with empty reference: 'dbg_running'",
|
||||
"signature": "325f409692811d44"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "WIDTHEXPAND:$ROOT/rtl/managed/mpw/core/darkriscv/darkriscv/darkriscv.v:<line>: Operator COND expects 32 bits on the Conditional True, but Conditional True's LTS generates 1 bits.",
|
||||
@@ -670,6 +680,16 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_config.vh:<line>: Parameter is not used: 'REDUCED_BYPASS'",
|
||||
"signature": "354fd21123f3a2ac"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/picorv32/picorv32/picorv32.v:<line>: Signal is not used: 'dbg_mem_valid'",
|
||||
"signature": "357a9505802ac588"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/managed/mpw/core/picorv32/user_core_design.sv:<line>: Instance pin connected by name with empty reference: 'eoi'",
|
||||
"signature": "3582de488a303cb6"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_config.vh:<line>: Parameter is not used: 'MTVEC_WMASK'",
|
||||
@@ -805,11 +825,6 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_width_const.vh:<line>: Parameter is not used: 'W_MULOP'",
|
||||
"signature": "3e3ced20ab2d11ea"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/mini/top/mgmt_core_wrapper.sv:<line>: Instance pin connected by name with empty reference: 'dbg_halted'",
|
||||
"signature": "3efc841792f6c49a"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$BUILD/generated/pin_map/rtl/retrosoc_asic_verilator_bindings.svh:<line>: Instance pin connected by name with empty reference: 'gpio_30_io_pad'",
|
||||
@@ -830,11 +845,6 @@
|
||||
"example": "DECLFILENAME:$ROOT/rtl/managed/mpw/core/kianv_rv32ima/kianV/fifo.v:<line>: Filename 'fifo' does not match MODULE name: 'mpw_core_kianv_rv32ima_fifo'",
|
||||
"signature": "40593d426a14f2c9"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/hazard3/hdl/hazard3_frontend.v:<line>: Signal is not used: 'btb_set_target_addr'",
|
||||
"signature": "41ca3e122d867001"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MHPMCOUNTER8'",
|
||||
@@ -895,6 +905,11 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_width_const.vh:<line>: Parameter is not used: 'W_BCOND'",
|
||||
"signature": "4584857873073628"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/picorv32/picorv32/picorv32.v:<line>: Signal is not used: 'dbg_mem_wstrb'",
|
||||
"signature": "45b8e1ffe0581381"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_ops.vh:<line>: Parameter is not used: 'ALUOP_RS2'",
|
||||
@@ -940,6 +955,11 @@
|
||||
"example": "DECLFILENAME:$ROOT/rtl/managed/mpw/core/kianv_rv32i/kianV/control_unit.v:<line>: Filename 'control_unit' does not match MODULE name: 'mpw_core_kianv_rv32i_control_unit'",
|
||||
"signature": "47ccc730f259e974"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "DECLFILENAME:$ROOT/rtl/managed/mpw/core/picorv32/user_core_design.sv:<line>: Filename 'user_core_design' does not match MODULE name: 'mpw_c5'",
|
||||
"signature": "4801ccefb75b11ae"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/ip/ribp/storage/xpi.sv:<line>: Signal is not used: 's_xpi_alttyp'",
|
||||
@@ -1032,8 +1052,8 @@
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/hazard3/hdl/hazard3_core.v:<line>: Signal is not used: 'f_trigger_m_mode'",
|
||||
"signature": "4c5d18bdecb9382f"
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/mpw/core/picorv32/picorv32/picorv32.v:<line>: Parameter is not used: 'REGS_INIT_ZERO'",
|
||||
"signature": "4cb4e6e68dedd942"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
@@ -1060,6 +1080,11 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MHPMEVENT30'",
|
||||
"signature": "4de9df4639f15bf4"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "DECLFILENAME:$ROOT/rtl/managed/mpw/core/picorv32/picorv32/picorv32.v:<line>: Filename 'picorv32' does not match MODULE name: 'mpw_core_picorv32_picorv32'",
|
||||
"signature": "4e2e851f282670eb"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "DECLFILENAME:$ROOT/rtl/managed/mpw/core/kianv_rv32ima/kianV/store_alignment.v:<line>: Filename 'store_alignment' does not match MODULE name: 'mpw_core_kianv_rv32ima_store_alignment'",
|
||||
@@ -1210,6 +1235,11 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MIDELEG'",
|
||||
"signature": "56eba9c6e5b585b8"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/managed/mpw/core/picorv32/user_core_design.sv:<line>: Instance pin connected by name with empty reference: 'pcpi_rd'",
|
||||
"signature": "56f5e81e565a48e6"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/ip/ribp/memory/opipsram.sv:<line>: Signal is not used: 'irq_o'",
|
||||
@@ -1230,11 +1260,6 @@
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/kianv_rv32ima/kianV/alu.v:<line>: Bits of signal are not used: 'sra_srai_rslt'[63:32]",
|
||||
"signature": "57fe2ba51c012db9"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/mini/top/mgmt_core_wrapper.sv:<line>: Instance pin connected by name with empty reference: 'dbg_instr_data_rdy'",
|
||||
"signature": "5817d543a504142c"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_ops.vh:<line>: Parameter is not used: 'MEMOP_LB'",
|
||||
@@ -1335,11 +1360,6 @@
|
||||
"example": "DECLFILENAME:$ROOT/rtl/managed/mpw/core/serv/serv/serv_bufreg.v:<line>: Filename 'serv_bufreg' does not match MODULE name: 'mpw_core_serv_serv_bufreg'",
|
||||
"signature": "61aa422d0c89d539"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/hazard3/hdl/hazard3_frontend.v:<line>: Signal is not used: 'trigger_break_d_mode'",
|
||||
"signature": "622747e89fd53878"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'PMPCFGM0'",
|
||||
@@ -1357,13 +1377,13 @@
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/mini/top/mgmt_core_wrapper.sv:<line>: Instance pin connected by name with empty reference: 'dbg_sbus_rdy'",
|
||||
"signature": "63c469702eb1c598"
|
||||
"example": "DECLFILENAME:$ROOT/rtl/managed/mpw/core/serv/serv/serv_synth_wrapper.v:<line>: Filename 'serv_synth_wrapper' does not match MODULE name: 'mpw_core_serv_serv_synth_wrapper'",
|
||||
"signature": "63e3dd4583dab654"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "DECLFILENAME:$ROOT/rtl/managed/mpw/core/serv/serv/serv_synth_wrapper.v:<line>: Filename 'serv_synth_wrapper' does not match MODULE name: 'mpw_core_serv_serv_synth_wrapper'",
|
||||
"signature": "63e3dd4583dab654"
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/picorv32/picorv32/picorv32.v:<line>: Signal is not used: 'dbg_rs2val'",
|
||||
"signature": "64024c60f7ccae5a"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
@@ -1465,31 +1485,31 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MSECCFG'",
|
||||
"signature": "6cb6b8ad455cc035"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/mini/top/mgmt_core_wrapper.sv:<line>: Instance pin connected by name with empty reference: 'dbg_data0_wdata'",
|
||||
"signature": "6def5419f7bda56c"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/ip/ribp/storage/spisd_init.sv:<line>: Parameter is not used: 'DIV_FREQ'",
|
||||
"signature": "6e3568070195ade2"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/mini/top/mgmt_core_wrapper.sv:<line>: Instance pin connected by name with empty reference: 'dbg_sbus_err'",
|
||||
"signature": "6ee45b6539994edb"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_ops.vh:<line>: Parameter is not used: 'ALUOP_UNZIP'",
|
||||
"signature": "6f439f5e9a4d68c8"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/picorv32/picorv32/picorv32.v:<line>: Signal is not used: 'dbg_rs2val_valid'",
|
||||
"signature": "6f447f6386d6d2e0"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "DECLFILENAME:$ROOT/rtl/mini/top/rcu.sv:<line>: Filename 'rcu' does not match MODULE name: 'pll_rcu_controller'",
|
||||
"signature": "6f97fc8d1bb13758"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/hazard3/hdl/debug/dm/hazard3_dm.v:<line>: Bits of signal are not used: 'dmi_paddr'[1:0]",
|
||||
"signature": "6fa77ea010fc54b8"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/managed/mpw/core/serv/user_core_design.sv:<line>: Instance pin connected by name with empty reference: 'o_mdu_valid'",
|
||||
@@ -1510,6 +1530,11 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/rv_opcodes.vh:<line>: Parameter is not used: 'RV_RS1_LSB'",
|
||||
"signature": "720de1ded416bbe9"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/picorv32/picorv32/picorv32.v:<line>: Signal is not used: 'dbg_rs1val_valid'",
|
||||
"signature": "7262cf0196977607"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/ip/ribp/multimedia/dvp.sv:<line>: Signal is not used: 's_rx_elem_num'",
|
||||
@@ -1520,11 +1545,21 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_config.vh:<line>: Parameter is not used: 'DEBUG_SUPPORT'",
|
||||
"signature": "73096c7d99d662dd"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/picorv32/picorv32/picorv32.v:<line>: Signal is not used: 'dbg_mem_instr'",
|
||||
"signature": "73a9cb4854f22611"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_config.vh:<line>: Parameter is not used: 'EXTENSION_ZBS'",
|
||||
"signature": "73ca0e54008058b8"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/managed/mpw/core/picorv32/user_core_design.sv:<line>: Instance pin connected by name with empty reference: 'pcpi_valid'",
|
||||
"signature": "740e077b411a6c34"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_ops.vh:<line>: Parameter is not used: 'ALUOP_ANDN'",
|
||||
@@ -1540,6 +1575,11 @@
|
||||
"example": "DECLFILENAME:$ROOT/rtl/managed/mpw/core/serv/serv/serv_rf_if.v:<line>: Filename 'serv_rf_if' does not match MODULE name: 'mpw_core_serv_serv_rf_if'",
|
||||
"signature": "74d93eda664174c1"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/picorv32/picorv32/picorv32.v:<line>: Signal is not used: 'dbg_mem_ready'",
|
||||
"signature": "7534660ce7698fce"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'PMPADDR9'",
|
||||
@@ -1550,11 +1590,21 @@
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/serv/serv/serv_bufreg.v:<line>: Signal is not used: 'i_shamt'",
|
||||
"signature": "758916bc522c013a"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/picorv32/picorv32/picorv32.v:<line>: Signal is not used: 'mem_busy'",
|
||||
"signature": "75b19c30cd945e2c"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MCOUNTEREN'",
|
||||
"signature": "776c10307a688b62"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/picorv32/picorv32/picorv32.v:<line>: Signal is not used: 'dbg_mem_rdata'",
|
||||
"signature": "778c9b0359632782"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MSLEEP'",
|
||||
@@ -1567,13 +1617,13 @@
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "SPECIFYIGN:$ROOT/pdk/IHP-Open-PDK/ihp-sg13g2/libs.ref/sg13g2_sram/verilog/RM_IHPSG13_1P_1024x64_c2_bm_bist.v:<line>: Ignoring unsupported: specify block construct",
|
||||
"signature": "7a759d6e07651fd8"
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/picorv32/picorv32/picorv32.v:<line>: Signal is not used: 'dbg_mem_addr'",
|
||||
"signature": "7a630762ee235ddb"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/mini/top/mgmt_core_wrapper.sv:<line>: Instance pin connected by name with empty reference: 'dbg_instr_caught_exception'",
|
||||
"signature": "7aa1422f28590293"
|
||||
"example": "SPECIFYIGN:$ROOT/pdk/IHP-Open-PDK/ihp-sg13g2/libs.ref/sg13g2_sram/verilog/RM_IHPSG13_1P_1024x64_c2_bm_bist.v:<line>: Ignoring unsupported: specify block construct",
|
||||
"signature": "7a759d6e07651fd8"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
@@ -1670,6 +1720,16 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_ops.vh:<line>: Parameter is not used: 'MEMOP_SH'",
|
||||
"signature": "830d44a2987b0b08"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/mpw/core/picorv32/user_core_design.sv:<line>: Parameter is not used: 'ID'",
|
||||
"signature": "8353387b5aa900c7"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/managed/mpw/core/picorv32/user_core_design.sv:<line>: Instance pin connected by name with empty reference: 'trap'",
|
||||
"signature": "837ab6f6d76c01b6"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/clusterip/common/rtl/cdc/cdc_2phase.sv:<line>: Signal is not driven, nor used: 's_ack_src_d'",
|
||||
@@ -1805,6 +1865,11 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_ops.vh:<line>: Parameter is not used: 'EXCEPT_STORE_ALIGN'",
|
||||
"signature": "8bff5f666595c600"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/picorv32/picorv32/picorv32.v:<line>: Signal is not used: 'dbg_valid_insn'",
|
||||
"signature": "8c190315775ebd73"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/kianv_rv32ima/user_core_design.sv:<line>: Bits of signal are not used: 's_rib_addr'[1:0]",
|
||||
@@ -1815,6 +1880,11 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MHPMEVENT13'",
|
||||
"signature": "8cbe5790e81f5b64"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/hazard3/hdl/debug/cdc/hazard3_apb_async_bridge.v:<line>: Signal is not used: 'src_penable'",
|
||||
"signature": "8cbe8e35b42cd8b2"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "DECLFILENAME:$ROOT/rtl/managed/mpw/core/serv/serv/serv_mem_if.v:<line>: Filename 'serv_mem_if' does not match MODULE name: 'mpw_core_serv_serv_mem_if'",
|
||||
@@ -1830,11 +1900,6 @@
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/femtorv32/user_core_design.sv:<line>: Signal is not used: 'irq_i'",
|
||||
"signature": "8d790409df1b9130"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/mini/top/mgmt_core_wrapper.sv:<line>: Instance pin connected by name with empty reference: 'dbg_instr_caught_ebreak'",
|
||||
"signature": "8f145c7b719e7fc2"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/ip/ribp/memory/opipsram.sv:<line>: Signal is not used: 'io_di_i'",
|
||||
@@ -1845,6 +1910,11 @@
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/hazard3/hdl/hazard3_core.v:<line>: Signal is not used: 'x_pmp_cfg_wdata'",
|
||||
"signature": "8f5f2bf62f5107ac"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MEINEXT'",
|
||||
"signature": "90a76897a1e4367a"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/mpw/core/darkriscv/darkriscv/darkriscv.v:<line>: Parameter is not used: 'CPTR'",
|
||||
@@ -2020,6 +2090,11 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_ops.vh:<line>: Parameter is not used: 'MEMOP_LBU'",
|
||||
"signature": "999e827601c9bbf9"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/managed/mpw/core/picorv32/user_core_design.sv:<line>: Instance pin connected by name with empty reference: 'pcpi_insn'",
|
||||
"signature": "9a45bc4caa931d1d"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_config.vh:<line>: Parameter is not used: 'W_DATA'",
|
||||
@@ -2050,11 +2125,6 @@
|
||||
"example": "DECLFILENAME:$ROOT/rtl/managed/mpw/core/serv/serv/serv_top.v:<line>: Filename 'serv_top' does not match MODULE name: 'mpw_core_serv_serv_top'",
|
||||
"signature": "9bc9f670bb4d815b"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/hazard3/hdl/hazard3_frontend.v:<line>: Signal is not used: 'pmp_trigger_check_dph_m_mode'",
|
||||
"signature": "9c371918925abc2d"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "DECLFILENAME:$ROOT/rtl/ip/ribp/peripheral/sysctrl.sv:<line>: Filename 'sysctrl' does not match IFACE name: 'sysctrl_if'",
|
||||
@@ -2115,11 +2185,6 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'DPC'",
|
||||
"signature": "a06ddefe87bea712"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/hazard3/hdl/hazard3_core.v:<line>: Signal is not used: 'x_trig_cfg_wen'",
|
||||
"signature": "a14fd17658d94c32"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MSCRATCH'",
|
||||
@@ -2137,8 +2202,8 @@
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/hazard3/hdl/hazard3_frontend.v:<line>: Signal is not used: 'btb_clear'",
|
||||
"signature": "a364eb2716792fd4"
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/picorv32/picorv32/picorv32.v:<line>: Signal is not used: 'dbg_mem_wdata'",
|
||||
"signature": "a2ee253d8eb81c7d"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
@@ -2150,6 +2215,11 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_ops.vh:<line>: Parameter is not used: 'BCOND_NEVER'",
|
||||
"signature": "a3a2cef6f858e478"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/managed/mpw/core/picorv32/user_core_design.sv:<line>: Instance pin connected by name with empty reference: 'mem_instr'",
|
||||
"signature": "a44a54010cce5f05"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MHPMCOUNTER18H'",
|
||||
@@ -2240,11 +2310,6 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/mpw/core/serv/user_core_design.sv:<line>: Parameter is not used: 'ID'",
|
||||
"signature": "aac36aa7f03bedcc"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/hazard3/hdl/hazard3_core.v:<line>: Signal is not used: 'f_trigger_addr'",
|
||||
"signature": "ab24c1149bdbbb6d"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'PMPADDR1'",
|
||||
@@ -2265,11 +2330,21 @@
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/managed/hazard3/hdl/hazard3_cpu_2port.v:<line>: Instance pin connected by name with empty reference: 'bus_aph_panic_i'",
|
||||
"signature": "ac01cb1c5156a90f"
|
||||
},
|
||||
{
|
||||
"count": 21,
|
||||
"example": "BLKSEQ:$ROOT/rtl/managed/mpw/core/picorv32/picorv32/picorv32.v:<line>: Blocking assignment '=' in sequential logic process",
|
||||
"signature": "ac28e0f261d7e48f"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "DECLFILENAME:$ROOT/rtl/ip/ribp/storage/spisd.sv:<line>: Filename 'spisd' does not match MODULE name: 'ribp_spisd'",
|
||||
"signature": "ac8b69917114a248"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/managed/mpw/core/picorv32/user_core_design.sv:<line>: Instance pin connected by name with empty reference: 'pcpi_wait'",
|
||||
"signature": "ad07d6d5d988a187"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_ops.vh:<line>: Parameter is not used: 'ALUOP_SRA'",
|
||||
@@ -2295,6 +2370,11 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'CYCLEH'",
|
||||
"signature": "ae37dfea9fdb082d"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/managed/mpw/core/picorv32/user_core_design.sv:<line>: Instance pin connected by name with empty reference: 'trace_valid'",
|
||||
"signature": "aeb773174300946d"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_ops.vh:<line>: Parameter is not used: 'ALUOP_BCLR'",
|
||||
@@ -2325,6 +2405,11 @@
|
||||
"example": "IMPORTSTAR:$ROOT/rtl/managed/clusterip/archinfo/rtl/archinfo_reg.sv:<line>: 'import::*' in $unit scope may pollute global namespace",
|
||||
"signature": "b13fd37a1362d500"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/managed/mpw/core/picorv32/user_core_design.sv:<line>: Instance pin connected by name with empty reference: 'mem_la_wstrb'",
|
||||
"signature": "b195bbfa4388905f"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/hazard3/hdl/hazard3_core.v:<line>: Signal is not used: 'x_pmp_cfg_wen'",
|
||||
@@ -2335,6 +2420,11 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MSTATUS'",
|
||||
"signature": "b2505fca5f4d7124"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/managed/mpw/core/picorv32/user_core_design.sv:<line>: Instance pin connected by name with empty reference: 'pcpi_rs1'",
|
||||
"signature": "b2c8cb1e6178b76b"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MHPMEVENT10'",
|
||||
@@ -2435,6 +2525,11 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_ops.vh:<line>: Parameter is not used: 'M_OP_DIVU'",
|
||||
"signature": "bb92bfd7f1c31784"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/managed/mpw/core/picorv32/user_core_design.sv:<line>: Instance pin connected by name with empty reference: 'trace_data'",
|
||||
"signature": "bbe26f87c17fe061"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MHPMEVENT22'",
|
||||
@@ -2470,6 +2565,11 @@
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/darkriscv/darkriscv/darkriscv.v:<line>: Signal is not used: 'IERR'",
|
||||
"signature": "bd725aee67be20ac"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MEIFA'",
|
||||
"signature": "bdd4bafae73b3f5e"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'PMPADDR4'",
|
||||
@@ -2510,11 +2610,6 @@
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/managed/clusterip/rtc/rtl/apb4_rtc.sv:<line>: Instance pin connected by name with empty reference: 'clk_fir_trg_o'",
|
||||
"signature": "bfd3207837c35f83"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/hazard3/hdl/hazard3_frontend.v:<line>: Signal is not used: 'btb_set_src_size'",
|
||||
"signature": "c0681281899ff1f2"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "DECLFILENAME:$ROOT/rtl/managed/mpw/core/kianv_rv32ima/kianV/csr_decoder.v:<line>: Filename 'csr_decoder' does not match MODULE name: 'mpw_core_kianv_rv32ima_csr_decoder'",
|
||||
@@ -2525,11 +2620,6 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_ops.vh:<line>: Parameter is not used: 'ALUOP_SHXADD'",
|
||||
"signature": "c18ba22b0ecb8975"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/hazard3/hdl/hazard3_frontend.v:<line>: Signal is not used: 'btb_set_src_addr'",
|
||||
"signature": "c1ed209e86e1ead7"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/kianv_rv32ima/kianV/store_decoder.v:<line>: Bits of signal are not used: 'funct3'[2]",
|
||||
@@ -2575,6 +2665,11 @@
|
||||
"example": "PINCONNECTEMPTY:$BUILD/generated/pin_map/rtl/retrosoc_asic_verilator_bindings.svh:<line>: Instance pin connected by name with empty reference: 'gpio_5_io_pad'",
|
||||
"signature": "c6838d7b98284986"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/managed/mpw/core/picorv32/user_core_design.sv:<line>: Instance pin connected by name with empty reference: 'pcpi_ready'",
|
||||
"signature": "c6e26f231e951afb"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_ops.vh:<line>: Parameter is not used: 'MEMOP_SW'",
|
||||
@@ -2630,6 +2725,11 @@
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/ip/ribp/storage/sdio.sv:<line>: Signal is not used: 'dat_di_i'",
|
||||
"signature": "cb8001b4af1077a9"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/managed/mpw/core/picorv32/user_core_design.sv:<line>: Instance pin connected by name with empty reference: 'pcpi_wr'",
|
||||
"signature": "cb8eca0c4a81d222"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/managed/clusterip/timer/rtl/apb4_tmr.sv:<line>: Instance pin connected by name with empty reference: 'dat_o'",
|
||||
@@ -2692,13 +2792,13 @@
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/hazard3/hdl/hazard3_core.v:<line>: Signal is not used: 'x_trig_cfg_addr'",
|
||||
"signature": "d0a38cc720ac8ab8"
|
||||
"example": "PROCASSINIT:$ROOT/rtl/managed/mpw/core/darkriscv/darkriscv/darkriscv.v:<line>: Procedural assignment to declaration with initial value: 'FLUSH'",
|
||||
"signature": "d14379be6774bed8"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PROCASSINIT:$ROOT/rtl/managed/mpw/core/darkriscv/darkriscv/darkriscv.v:<line>: Procedural assignment to declaration with initial value: 'FLUSH'",
|
||||
"signature": "d14379be6774bed8"
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/managed/mpw/core/picorv32/user_core_design.sv:<line>: Instance pin connected by name with empty reference: 'pcpi_rs2'",
|
||||
"signature": "d180668432728ed4"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
@@ -2740,11 +2840,6 @@
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/hazard3/hdl/hazard3_frontend.v:<line>: Signal is not used: 'pmp_i_kill'",
|
||||
"signature": "d53357cefd665164"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/hazard3/hdl/hazard3_core.v:<line>: Signal is not used: 'x_trig_cfg_wdata'",
|
||||
"signature": "d5668f0299879d4d"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/managed/mpw/core/serv/user_core_design.sv:<line>: Instance pin connected by name with empty reference: 'o_ext_funct3'",
|
||||
@@ -2755,6 +2850,11 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_config.vh:<line>: Parameter is not used: 'EXTENSION_ZBKB'",
|
||||
"signature": "d594ddfb87bc4c87"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/managed/mpw/core/picorv32/user_core_design.sv:<line>: Instance pin connected by name with empty reference: 'mem_la_wdata'",
|
||||
"signature": "d61e21ff3d24c8a1"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/kianv_rv32i/user_core_design.sv:<line>: Signal is not used: 'irq_i'",
|
||||
@@ -2765,6 +2865,11 @@
|
||||
"example": "DECLFILENAME:$ROOT/rtl/managed/mpw/core/kianv_rv32i/kianV/main_fsm.v:<line>: Filename 'main_fsm' does not match MODULE name: 'mpw_core_kianv_rv32i_main_fsm'",
|
||||
"signature": "d7ce843ff26f9abe"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/debug/dm/hazard3_dm.v:<line>: Parameter is not used: 'PROGBUF_SIZE'",
|
||||
"signature": "d806c7ef63c8398e"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/ip/ribp/peripheral/gpio.sv:<line>: Signal is not used: 'irq_o'",
|
||||
@@ -2775,6 +2880,11 @@
|
||||
"example": "DECLFILENAME:$ROOT/rtl/ip/ribp/memory/sdram.sv:<line>: Filename 'sdram' does not match IFACE name: 'sdram_if'",
|
||||
"signature": "d8996d75a35d3386"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/managed/mpw/core/picorv32/user_core_design.sv:<line>: Instance pin connected by name with empty reference: 'mem_la_addr'",
|
||||
"signature": "d8df02da4f56780c"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/mini/top/mgmt_core_wrapper.sv:<line>: Instance pin connected by name with empty reference: 'hexcl'",
|
||||
@@ -2785,11 +2895,26 @@
|
||||
"example": "PINCONNECTEMPTY:$BUILD/generated/pin_map/rtl/retrosoc_asic_verilator_bindings.svh:<line>: Instance pin connected by name with empty reference: 'gpio_6_io_pad'",
|
||||
"signature": "da214ececa878a17"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MEICONTEXT'",
|
||||
"signature": "da4e1c0063ee0d37"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/serv/serv/serv_bufreg.v:<line>: Signal is not used: 'i_right_shift_op'",
|
||||
"signature": "da5c9ee48fb062c2"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/picorv32/picorv32/picorv32.v:<line>: Signal is not used: 'dbg_ascii_state'",
|
||||
"signature": "da6b8cd7c9d83942"
|
||||
},
|
||||
{
|
||||
"count": 2,
|
||||
"example": "GENUNNAMED:$ROOT/rtl/managed/mpw/core/picorv32/picorv32/picorv32.v:<line>: Unnamed generate block 'genblk2' (IEEE 1800-2023 27.6)",
|
||||
"signature": "da854738bdfa480e"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "DECLFILENAME:$ROOT/rtl/ip/ribp/peripheral/timer.sv:<line>: Filename 'timer' does not match MODULE name: 'ribp_timer'",
|
||||
@@ -2855,6 +2980,11 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'PMPADDR14'",
|
||||
"signature": "e1551efdb128b61e"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/picorv32/picorv32/picorv32.v:<line>: Bits of signal are not used: 'raddr1'[5]",
|
||||
"signature": "e1d441c3c4fd1cb6"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/darkriscv/darkriscv/darkriscv.v:<line>: Bits of signal are not used: 'ALL1'[7:0]",
|
||||
@@ -2865,6 +2995,11 @@
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/darkriscv/darkriscv/darkriscv.v:<line>: Signal is not used: 'EBRK'",
|
||||
"signature": "e20a76642504e640"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/managed/mpw/core/picorv32/user_core_design.sv:<line>: Instance pin connected by name with empty reference: 'mem_la_read'",
|
||||
"signature": "e21c0876910737dc"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MCONTEXT'",
|
||||
@@ -2910,6 +3045,11 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_config.vh:<line>: Parameter is not used: 'IRQ_INPUT_BYPASS'",
|
||||
"signature": "e503c88cc7f36d36"
|
||||
},
|
||||
{
|
||||
"count": 2,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/picorv32/picorv32/picorv32.v:<line>: Bits of signal are not used: 'pcpi_insn'[24:15,11:7]",
|
||||
"signature": "e598be8668784cc8"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "DECLFILENAME:$ROOT/rtl/managed/mpw/core/femtorv32/femtorv32_tachyon.v:<line>: Filename 'femtorv32_tachyon' does not match MODULE name: 'mpw_core_femtorv32_FemtoRV32'",
|
||||
@@ -2920,6 +3060,16 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'PMPADDR10'",
|
||||
"signature": "e5c265b0e703668b"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/mpw/core/picorv32/picorv32/picorv32.v:<line>: Parameter is not used: 'regfile_size'",
|
||||
"signature": "e663bc3818a3022c"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MEIEA'",
|
||||
"signature": "e76bc25ed2f5fd1d"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/ip/ribp/storage/xpi.sv:<line>: Instance pin connected by name with empty reference: 'xpi_accmd_o'",
|
||||
@@ -2940,6 +3090,11 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MHPMEVENT8'",
|
||||
"signature": "e83b011f2d06370d"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/managed/mpw/core/picorv32/user_core_design.sv:<line>: Instance pin connected by name with empty reference: 'mem_la_write'",
|
||||
"signature": "e86e6a70e9fe9305"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/clusterip/common/rtl/interface/ahbl_if.sv:<line>: Signal is not used: 'hmastlock'",
|
||||
@@ -2957,13 +3112,13 @@
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MISA'",
|
||||
"signature": "e98223c9514b66f3"
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/mpw/core/picorv32/picorv32/picorv32.v:<line>: Bits of signal are not used: 'waddr'[5]",
|
||||
"signature": "e96c447784b825a7"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/hazard3/hdl/hazard3_frontend.v:<line>: Signal is not used: 'btb_set'",
|
||||
"signature": "e9c8969b9acc562b"
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MISA'",
|
||||
"signature": "e98223c9514b66f3"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
@@ -3000,11 +3155,6 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_width_const.vh:<line>: Parameter is not used: 'W_MEMOP'",
|
||||
"signature": "ebefcbb26f1f9236"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/hazard3/hdl/hazard3_core.v:<line>: Signal is not used: 'm_trig_event_interrupt'",
|
||||
"signature": "eca794f0ed109cfb"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_ops.vh:<line>: Parameter is not used: 'ALUOP_CPOP'",
|
||||
@@ -3066,7 +3216,7 @@
|
||||
"signature": "f1f0ace29e0a56d0"
|
||||
},
|
||||
{
|
||||
"count": 29,
|
||||
"count": 30,
|
||||
"example": "PINCONNECTEMPTY:$BUILD/generated/pin_map/rtl/retrosoc_asic_pad_bindings.svh:<line>: Instance pin connected by name with empty reference: 'p2c'",
|
||||
"signature": "f2548a0d3b636cfb"
|
||||
},
|
||||
@@ -3090,11 +3240,6 @@
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MCOUNTINHIBIT'",
|
||||
"signature": "f423f1b5d0e86d3f"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDSIGNAL:$ROOT/rtl/managed/hazard3/hdl/hazard3_frontend.v:<line>: Signal is not used: 'pmp_trigger_check_dph_addr'",
|
||||
"signature": "f453db0239cd62ee"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/mini/top/mgmt_core_wrapper.sv:<line>: Instance pin connected by name with empty reference: 'clk_en'",
|
||||
@@ -3220,11 +3365,6 @@
|
||||
"example": "PROCASSINIT:$ROOT/rtl/managed/mpw/core/darkriscv/darkriscv/darkbridge.v:<line>: Procedural assignment to declaration with initial value: 'XATAI2'",
|
||||
"signature": "fe2cb50cfb98e646"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "PINCONNECTEMPTY:$ROOT/rtl/mini/top/mgmt_core_wrapper.sv:<line>: Instance pin connected by name with empty reference: 'dbg_sbus_rdata'",
|
||||
"signature": "fe5a379927d7a450"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "UNUSEDPARAM:$ROOT/rtl/managed/hazard3/hdl/hazard3_csr_addr.vh:<line>: Parameter is not used: 'MHPMEVENT26'",
|
||||
|
||||
@@ -1,22 +1,27 @@
|
||||
{
|
||||
"entries": [
|
||||
{
|
||||
"count": 2,
|
||||
"count": 1,
|
||||
"example": "warning:asynchronous load value missing for variable '\\update_hart_data0.i'",
|
||||
"signature": "08138257546e860c"
|
||||
},
|
||||
{
|
||||
"count": 1,
|
||||
"example": "warning:asynchronous load value missing for variable '\\update_irq_reg_arrays.i'",
|
||||
"signature": "56c5f69398be8d7b"
|
||||
},
|
||||
{
|
||||
"count": 11,
|
||||
"count": 10,
|
||||
"example": "warning:The network is combinational (run \"fraig\" or \"fraig_sweep\").",
|
||||
"signature": "62cc5ee554312205"
|
||||
},
|
||||
{
|
||||
"count": 4,
|
||||
"count": 2,
|
||||
"example": "warning:asynchronous load value missing for variable '\\update_nonconst.prev'",
|
||||
"signature": "a30df20b98d49196"
|
||||
},
|
||||
{
|
||||
"count": 4,
|
||||
"count": 2,
|
||||
"example": "warning:asynchronous load value missing for variable '\\update_nonconst.nonconst'",
|
||||
"signature": "d35463a1de40c7b2"
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
+1
-8
@@ -31,12 +31,10 @@ FILELIST_STAMP := $(GENERATED_FL_DIR)/.stamp
|
||||
FILELIST_TEMPLATES := $(sort $(wildcard $(ROOT_PATH)/rtl/filelist/pdk_*.fl) \
|
||||
$(wildcard $(RTL_PATH)/filelist/*.fl) $(RTL_PATH)/lint.msg)
|
||||
|
||||
ifeq ($(CORE),HAZARD3)
|
||||
MPW_MANAGEMENT_CORE_CHECK := @test -d $(ROOT_PATH)/rtl/managed/hazard3/hdl || { \
|
||||
echo "missing $(ROOT_PATH)/rtl/managed/hazard3; run 'make setup-mpw' first" >&2; \
|
||||
exit 1; \
|
||||
}
|
||||
endif
|
||||
|
||||
$(MPW_STAMP):
|
||||
@test -d $(ROOT_PATH)/rtl/managed/mpw/.git || { \
|
||||
@@ -143,12 +141,7 @@ RTL_FLIST := -f $(MEMORY_MAP_FILELIST) -f $(SOC_TOPOLOGY_FILELIST) -f $(USER_EXT
|
||||
RTL_FLIST += -f $(GENERATED_FL_DIR)/clusterip.fl
|
||||
RTL_FLIST += -f $(GENERATED_FL_DIR)/ip.fl
|
||||
RTL_FLIST += -f $(GENERATED_FL_DIR)/tech.fl
|
||||
ifeq ($(CORE),HAZARD3)
|
||||
MGMT_CORE_FILELIST := core_hazard3.fl
|
||||
else
|
||||
MGMT_CORE_FILELIST := core_picorv32.fl
|
||||
endif
|
||||
RTL_FLIST += -f $(GENERATED_FL_DIR)/$(MGMT_CORE_FILELIST)
|
||||
RTL_FLIST += -f $(GENERATED_FL_DIR)/core_hazard3.fl
|
||||
|
||||
RTL_FLIST += -f $(MPW_OUTPUT_DIR)/core/core.fl
|
||||
RTL_FLIST += -f $(MPW_OUTPUT_DIR)/ip/ip.fl
|
||||
|
||||
@@ -28,12 +28,10 @@ module retrosoc_tb;
|
||||
`ifdef HAVE_PLL
|
||||
reg r_xtal_clk;
|
||||
`endif
|
||||
`ifdef HAVE_DEBUG
|
||||
wire s_jtag_tck;
|
||||
wire s_jtag_tms;
|
||||
wire s_jtag_tdi;
|
||||
wire s_jtag_trst_n;
|
||||
`endif
|
||||
wire s_jtag_tck;
|
||||
wire s_jtag_tms;
|
||||
wire s_jtag_tdi;
|
||||
wire s_jtag_trst_n;
|
||||
wire s_uart0_tx;
|
||||
// for handle x-prop issue
|
||||
wire s_uart0_rx = 1'b1;
|
||||
@@ -86,15 +84,13 @@ module retrosoc_tb;
|
||||
always #(1000 / AUD_CPU_FREQ / 2) r_aud_clk = (r_aud_clk === 1'b0);
|
||||
|
||||
// connect inout pad
|
||||
assign s_ext_clk = r_ext_clk;
|
||||
assign s_aud_clk = r_aud_clk;
|
||||
assign s_rst_n = r_rst_n;
|
||||
`ifdef HAVE_DEBUG
|
||||
assign s_ext_clk = r_ext_clk;
|
||||
assign s_aud_clk = r_aud_clk;
|
||||
assign s_rst_n = r_rst_n;
|
||||
assign s_jtag_tck = 1'b0;
|
||||
assign s_jtag_tms = 1'b0;
|
||||
assign s_jtag_tdi = 1'b0;
|
||||
assign s_jtag_trst_n = 1'b0;
|
||||
`endif
|
||||
|
||||
retrosoc_asic u_retrosoc_asic (
|
||||
`include "retrosoc_asic_tb_bindings.svh"
|
||||
|
||||
@@ -53,7 +53,6 @@ Emulator::Emulator(cxxopts::ParseResult &res) {
|
||||
dutPtr = new Vretrosoc_top;
|
||||
reset();
|
||||
|
||||
#ifdef HAVE_DEBUG
|
||||
if (args.jtagPort > 0) {
|
||||
if (args.jtagPort > 65535UL) {
|
||||
std::cerr << "remote-bitbang port is outside the TCP range" << std::endl;
|
||||
@@ -64,7 +63,6 @@ Emulator::Emulator(cxxopts::ParseResult &res) {
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (args.dumpWave) {
|
||||
#ifdef DUMP_WAVE_FST
|
||||
@@ -99,12 +97,10 @@ void Emulator::reset() {
|
||||
<< std::endl;
|
||||
dutPtr->rst_n_i = 1;
|
||||
dutPtr->ext_clk_i = 0;
|
||||
#ifdef HAVE_DEBUG
|
||||
dutPtr->jtag_tck_i = 0;
|
||||
dutPtr->jtag_tms_i = 0;
|
||||
dutPtr->jtag_tdi_i = 0;
|
||||
dutPtr->jtag_trst_n_i = 0;
|
||||
#endif
|
||||
dutPtr->eval();
|
||||
// std::cout << "rst_n_i: " << static_cast<unsigned>(dutPtr->rst_n_i) << " ext_clk_i: " <<
|
||||
// static_cast<unsigned>(dutPtr->ext_clk_i) << std::endl;
|
||||
@@ -125,9 +121,7 @@ void Emulator::reset() {
|
||||
}
|
||||
|
||||
dutPtr->rst_n_i = 1;
|
||||
#ifdef HAVE_DEBUG
|
||||
dutPtr->jtag_trst_n_i = 1;
|
||||
#endif
|
||||
for (int i = 0; i < 5; i++) {
|
||||
dutPtr->ext_clk_i = !dutPtr->ext_clk_i;
|
||||
dutPtr->eval();
|
||||
@@ -167,13 +161,11 @@ bool Emulator::getArriveTime() {
|
||||
void Emulator::runSim() {
|
||||
std::cout << rang::fg::yellow << "Running DUT simulation..." << rang::fg::reset << std::endl;
|
||||
while (!Verilated::gotFinish() && signal_received == 0 && !getArriveTime()) {
|
||||
#ifdef HAVE_DEBUG
|
||||
// TCP polling need not occur on every simulation half-cycle. A JTAG
|
||||
// command is still evaluated one-by-one by RemoteBitbang::service().
|
||||
if (remoteBitbang && (cycle & 0x3fU) == 0U && !remoteBitbang->service(*dutPtr)) {
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
step();
|
||||
}
|
||||
dutPtr->final();
|
||||
|
||||
@@ -13,9 +13,7 @@ namespace chrono = std::chrono;
|
||||
#endif
|
||||
#include "cxxopts.hpp"
|
||||
|
||||
#ifdef HAVE_DEBUG
|
||||
#include "RemoteBitbang.hpp"
|
||||
#endif
|
||||
|
||||
class Emulator {
|
||||
public:
|
||||
@@ -43,9 +41,7 @@ class Emulator {
|
||||
std::string image = "";
|
||||
} args;
|
||||
|
||||
#ifdef HAVE_DEBUG
|
||||
std::unique_ptr<RemoteBitbang> remoteBitbang;
|
||||
#endif
|
||||
|
||||
#ifdef DUMP_WAVE_FST
|
||||
VerilatedFstC *wavePtr = nullptr;
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
# Hazard3 RISC-V Debug Module through the local Verilator remote-bitbang TAP.
|
||||
# The caller must define jtag_port before loading this file.
|
||||
adapter driver remote_bitbang
|
||||
remote_bitbang port $jtag_port
|
||||
# OpenOCD 0.11 uses remote_bitbang_port; 0.12 and later use the grouped form.
|
||||
if {[catch {remote_bitbang port $jtag_port}]} {
|
||||
remote_bitbang_port $jtag_port
|
||||
}
|
||||
adapter speed 10000
|
||||
transport select jtag
|
||||
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
/picorv32/picorv32_ver.v
|
||||
@@ -8,7 +8,8 @@
|
||||
{"slot": 1, "module": "mpw_c1", "instance": "u_mpw_core_kianv_rv32ima", "bus": "ribp", "reset": "sync"},
|
||||
{"slot": 2, "module": "mpw_c2", "instance": "u_mpw_core_serv", "bus": "ribp", "reset": "async"},
|
||||
{"slot": 3, "module": "mpw_c3", "instance": "u_mpw_core_femtorv32", "bus": "ribp", "reset": "async"},
|
||||
{"slot": 4, "module": "mpw_c4", "instance": "u_mpw_core_darkriscv", "bus": "ribp", "reset": "async"}
|
||||
{"slot": 4, "module": "mpw_c4", "instance": "u_mpw_core_darkriscv", "bus": "ribp", "reset": "async"},
|
||||
{"slot": 5, "module": "mpw_c5", "instance": "u_mpw_core_picorv32", "bus": "ribp", "reset": "sync"}
|
||||
],
|
||||
"ip_targets": [
|
||||
{"slot": 1, "module": "mpw_i1", "instance": "u_mpw_ip_tiny_timer"},
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
{
|
||||
+lint=all;
|
||||
-file=/hazard3/arith/hazard3_muldiv_seq.v,/hazard3/hazard3_frontend.v,/hazard3/arith/hazard3_onehot_encode.v,/hazard3/hazard3_instr_decompress.v,/pdk/icsprout55-pdk/IP/IO/ICsprout_55LLULP1233_IO_251013/verilog/icsIOA_N55_3P3.v,/pdk/icsprout55-pdk/IP/STD_cell/ics55_LLSC_H7C_V1p10C100/ics55_LLSC_H7CR/verilog/ics55_LLSC_H7CR.v,/pdk/icsprout55-pdk/IP/STD_cell/ics55_LLSC_H7C_V1p10C100/ics55_LLSC_H7CL/verilog/ics55_LLSC_H7CL.v,/pdk/icsprout55-pdk/IP/STD_cell/ics55_LLSC_H7C_V1p10C100/ics55_LLSC_H7CH/verilog/ics55_LLSC_H7CH.v,/pdk/IHP-Open-PDK/ihp-sg13g2/libs.ref/sg13g2_stdcell/verilog/sg13g2_stdcell.v,/clusterip/i2c/model/at24cxxx.sv,/clusterip/spi/model/w25q128jvxim.sv,/picorv32/picorv32_ver.v,/picorv32/picorv32.v,/clusterip/common/rtl/cdc/cdc_2phase.sv,/clusterip/common/rtl/utils/register.sv,/clusterip/uart/model/rs232.sv,/tb/retrosoc_tb.sv,/clusterip/i2s/model/mic.sv,/model/ESP_PSRAM64H.sv,/third_party/model/sdram/sdr.v;
|
||||
-file=/hazard3/arith/hazard3_muldiv_seq.v,/hazard3/hazard3_frontend.v,/hazard3/arith/hazard3_onehot_encode.v,/hazard3/hazard3_instr_decompress.v,/pdk/icsprout55-pdk/IP/IO/ICsprout_55LLULP1233_IO_251013/verilog/icsIOA_N55_3P3.v,/pdk/icsprout55-pdk/IP/STD_cell/ics55_LLSC_H7C_V1p10C100/ics55_LLSC_H7CR/verilog/ics55_LLSC_H7CR.v,/pdk/icsprout55-pdk/IP/STD_cell/ics55_LLSC_H7C_V1p10C100/ics55_LLSC_H7CL/verilog/ics55_LLSC_H7CL.v,/pdk/icsprout55-pdk/IP/STD_cell/ics55_LLSC_H7C_V1p10C100/ics55_LLSC_H7CH/verilog/ics55_LLSC_H7CH.v,/pdk/IHP-Open-PDK/ihp-sg13g2/libs.ref/sg13g2_stdcell/verilog/sg13g2_stdcell.v,/clusterip/i2c/model/at24cxxx.sv,/clusterip/spi/model/w25q128jvxim.sv,/clusterip/common/rtl/cdc/cdc_2phase.sv,/clusterip/common/rtl/utils/register.sv,/clusterip/uart/model/rs232.sv,/tb/retrosoc_tb.sv,/clusterip/i2s/model/mic.sv,/model/ESP_PSRAM64H.sv,/third_party/model/sdram/sdr.v;
|
||||
}
|
||||
{ +warn=all; }
|
||||
@@ -41,7 +41,6 @@ endif
|
||||
endif
|
||||
|
||||
DEF_VAL += -DAPP_$(APP)
|
||||
DEF_VAL += -DRS_SOC_MGMT_CORE_$(CORE)
|
||||
DEF_VAL += -DCOMPILER_NAME='"$(CC)"'
|
||||
DEF_VAL += -DCOMPILER_CFLAGS='"$(GCC_FLAGS) $(SW_WARN_FLAGS)"'
|
||||
DEF_VAL += -DCOMPILER_ISA='"$(ISA_FLAGS)"'
|
||||
|
||||
+11
-12
@@ -21,16 +21,13 @@ SOC_VSRC_INCLPATH += -I$(SOC_VSRC_HOME)
|
||||
VERILATOR ?= verilator
|
||||
VERILATOR_JOBS ?= $(JOBS)
|
||||
VERILATOR_CXXFLAGS += -std=c++17 -Wall $(SOC_CSRC_INCLPATH) -DDUMP_WAVE_FST
|
||||
ifeq ($(HAVE_DEBUG),YES)
|
||||
VERILATOR_CXXFLAGS += -DHAVE_DEBUG
|
||||
endif
|
||||
VERILATOR_FLAGS += --cc --exe --no-timing --top-module $(SOC_VSRC_TOP)
|
||||
VERILATOR_FLAGS += --x-assign unique -O3 -CFLAGS "$(VERILATOR_CXXFLAGS)"
|
||||
VERILATOR_FLAGS += --trace-fst --assert --stats-vars --output-split 30000 --output-split-cfuncs 30000
|
||||
VERILATOR_FLAGS += --timescale "1ns/1ns" -Wno-fatal
|
||||
VERILATOR_FLAGS += -o $(BUILD_DIR)/emu
|
||||
VERILATOR_FLAGS += -Mdir $(SOC_COMPILE_HOME)
|
||||
VERILATOR_FLAGS += $(SOC_VSRC_INCLPATH) $(SOC_CXXFILES) $(SOC_VXXFILES)
|
||||
VERILATOR_FLAGS += --cc --exe --no-timing --top-module $(SOC_VSRC_TOP)
|
||||
VERILATOR_FLAGS += --x-assign unique -O3 -CFLAGS "$(VERILATOR_CXXFLAGS)"
|
||||
VERILATOR_FLAGS += --trace-fst --assert --stats-vars --output-split 30000 --output-split-cfuncs 30000
|
||||
VERILATOR_FLAGS += --timescale "1ns/1ns" -Wno-fatal
|
||||
VERILATOR_FLAGS += -o $(BUILD_DIR)/emu
|
||||
VERILATOR_FLAGS += -Mdir $(SOC_COMPILE_HOME)
|
||||
VERILATOR_FLAGS += $(SOC_VSRC_INCLPATH) $(SOC_CXXFILES) $(SOC_VXXFILES)
|
||||
|
||||
RTL_LINT_FLAGS := --lint-only --no-timing --top-module $(SOC_VSRC_TOP)
|
||||
RTL_LINT_FLAGS += --assert --Wall --timescale "1ns/1ns" -Wno-fatal
|
||||
@@ -112,8 +109,10 @@ sim: comp
|
||||
--result $(BUILD_DIR)/result-sim-check.json --require '$(SIM_SUCCESS_MARKER)'
|
||||
|
||||
debug-sim: comp firmware
|
||||
@test "$(HAVE_DEBUG)" = YES || { echo "debug-sim requires HAVE_DEBUG=YES" >&2; exit 2; }
|
||||
@test "$(CORE)" = HAZARD3 || { echo "debug-sim requires CORE=HAZARD3" >&2; exit 2; }
|
||||
@test "$(SIMU)" = VERILATOR || { echo "debug-sim requires SIMU=VERILATOR" >&2; exit 2; }
|
||||
$(FLOW_PYTHON) $(ROOT_PATH)/scripts/doctor.py --root $(ROOT_PATH) --simu $(SIMU) \
|
||||
--synth $(SYNTH) --sta $(STA) --pdk $(PDK) --formal $(FORMAL) \
|
||||
--require-debug-tools --lock $(LOCK_FILE)
|
||||
python3 $(DEBUG_SIM_SESSION) \
|
||||
--emulator $(VERILATOR_EMU) \
|
||||
--image $(SW_BUILD_DIR)/$(FIRMWARE_NAME).bin \
|
||||
|
||||
@@ -13,7 +13,7 @@ from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
|
||||
VALID_FEATURES = {"HAVE_DEBUG", "HAVE_PLL"}
|
||||
VALID_FEATURES = {"HAVE_PLL"}
|
||||
VALID_KINDS = {
|
||||
"full",
|
||||
"schmitt_input",
|
||||
|
||||
@@ -27,7 +27,6 @@
|
||||
{
|
||||
"kind": "tri_input",
|
||||
"direction": "inout",
|
||||
"feature": "HAVE_DEBUG",
|
||||
"ports": [
|
||||
{"name": "jtag_tck_i_pad", "signal": "s_jtag_tck"},
|
||||
{"name": "jtag_tms_i_pad", "signal": "s_jtag_tms"},
|
||||
@@ -37,7 +36,6 @@
|
||||
{
|
||||
"kind": "schmitt_input",
|
||||
"direction": "inout",
|
||||
"feature": "HAVE_DEBUG",
|
||||
"ports": [
|
||||
{"name": "jtag_trst_n_i_pad", "signal": "s_jtag_trst_n"}
|
||||
]
|
||||
@@ -45,7 +43,6 @@
|
||||
{
|
||||
"kind": "tri_output",
|
||||
"direction": "output",
|
||||
"feature": "HAVE_DEBUG",
|
||||
"ports": [
|
||||
{"name": "jtag_tdo_o_pad", "signal": "s_jtag_tdo"}
|
||||
]
|
||||
|
||||
@@ -25,7 +25,6 @@ PATH_PREFIXES = {
|
||||
"core": MINI_DIR / "core",
|
||||
"hazard3": RTL_DIR / "managed" / "hazard3" / "hdl",
|
||||
"mpw": RTL_DIR / "managed" / "mpw",
|
||||
"picorv32": RTL_DIR / "managed" / "picorv32" / "rtl",
|
||||
"tb": MINI_DIR / "dv" / "tb",
|
||||
"model": MINI_DIR / "dv" / "model",
|
||||
"sva": MINI_DIR / "dv" / "sva",
|
||||
@@ -66,7 +65,6 @@ def generate_all(output_dir: Path, defines: list[str]) -> list[Path]:
|
||||
"clusterip.fl",
|
||||
"commonip.fl",
|
||||
"core_hazard3.fl",
|
||||
"core_picorv32.fl",
|
||||
"inc.fl",
|
||||
"ip.fl",
|
||||
"sys_def.fl",
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[3]
|
||||
sys.path.insert(0, str(ROOT))
|
||||
from scripts.setup_helpers import atomic_write # noqa: E402
|
||||
|
||||
|
||||
def main() -> int:
|
||||
picorv32_dir = ROOT / "rtl/managed/picorv32/rtl"
|
||||
source = picorv32_dir / "picorv32.v"
|
||||
destination = picorv32_dir / "picorv32_ver.v"
|
||||
content = source.read_text(encoding="utf-8")
|
||||
content = content.replace("// synopsys full_case parallel_case", "")
|
||||
content = content.replace("// synopsys parallel_case", "")
|
||||
changed = atomic_write(destination, content)
|
||||
print(f"{'updated' if changed else 'unchanged'}: {destination}")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
@@ -24,47 +24,6 @@ module mgmt_core_wrapper (
|
||||
// verilog_format: on
|
||||
);
|
||||
|
||||
`ifdef CORE_PICORV32
|
||||
assign jtag_tdo_o = 1'b0;
|
||||
picorv32 #(
|
||||
.BARREL_SHIFTER (1),
|
||||
.COMPRESSED_ISA (1),
|
||||
.ENABLE_MUL (1),
|
||||
.ENABLE_FAST_MUL(1),
|
||||
.ENABLE_DIV (1),
|
||||
.ENABLE_IRQ (0),
|
||||
.PROGADDR_RESET (`SOC_CPU_RESET_ADDR),
|
||||
.PROGADDR_IRQ (`SOC_IRQ_START_ADDR)
|
||||
) u_picorv32 (
|
||||
.clk (clk_i),
|
||||
.resetn (rst_n_i),
|
||||
.trap (),
|
||||
.mem_valid (ribp.valid),
|
||||
.mem_instr (),
|
||||
.mem_addr (ribp.addr),
|
||||
.mem_wdata (ribp.wdata),
|
||||
.mem_wstrb (ribp.wstrb),
|
||||
.mem_rdata (ribp.rdata),
|
||||
.mem_ready (ribp.ready),
|
||||
.mem_la_read (),
|
||||
.mem_la_write(),
|
||||
.mem_la_addr (),
|
||||
.mem_la_wdata(),
|
||||
.mem_la_wstrb(),
|
||||
.pcpi_valid (),
|
||||
.pcpi_insn (),
|
||||
.pcpi_rs1 (),
|
||||
.pcpi_rs2 (),
|
||||
.pcpi_wr (),
|
||||
.pcpi_rd (),
|
||||
.pcpi_wait (),
|
||||
.pcpi_ready (),
|
||||
.irq (irq_i),
|
||||
.eoi (),
|
||||
.trace_valid (),
|
||||
.trace_data ()
|
||||
);
|
||||
`elsif CORE_HAZARD3
|
||||
logic s_pwrup_req;
|
||||
logic s_ahbl_idle;
|
||||
logic s_core_rst_n;
|
||||
@@ -94,7 +53,6 @@ module mgmt_core_wrapper (
|
||||
ahbl2ribp u_ahbl2ribp (u_ahbl_if, ribp, s_ahbl_idle);
|
||||
// verilog_format: on
|
||||
|
||||
`ifdef HAVE_DEBUG
|
||||
mgmt_debug_wrapper #(
|
||||
.JTAG_IDCODE(`SOC_JTAG_IDCODE)
|
||||
) u_mgmt_debug_wrapper (
|
||||
@@ -129,21 +87,6 @@ module mgmt_core_wrapper (
|
||||
.dbg_sbus_wdata_o (s_dbg_sbus_wdata),
|
||||
.dbg_sbus_rdata_i (s_dbg_sbus_rdata)
|
||||
);
|
||||
`else
|
||||
assign s_core_rst_n = rst_n_i;
|
||||
assign s_dbg_req_halt = 1'b0;
|
||||
assign s_dbg_req_halt_on_reset = 1'b0;
|
||||
assign s_dbg_req_resume = 1'b0;
|
||||
assign s_dbg_data0_rdata = '0;
|
||||
assign s_dbg_instr_data = '0;
|
||||
assign s_dbg_instr_data_vld = 1'b0;
|
||||
assign s_dbg_sbus_addr = '0;
|
||||
assign s_dbg_sbus_write = 1'b0;
|
||||
assign s_dbg_sbus_size = '0;
|
||||
assign s_dbg_sbus_vld = 1'b0;
|
||||
assign s_dbg_sbus_wdata = '0;
|
||||
assign jtag_tdo_o = 1'b0;
|
||||
`endif
|
||||
|
||||
hazard3_cpu_1port #(
|
||||
.RESET_VECTOR (`SOC_CPU_RESET_ADDR),
|
||||
@@ -178,11 +121,7 @@ module mgmt_core_wrapper (
|
||||
.PMP_HARDWIRED (0),
|
||||
.PMP_HARDWIRED_ADDR (0),
|
||||
.PMP_HARDWIRED_CFG (0),
|
||||
`ifdef HAVE_DEBUG
|
||||
.DEBUG_SUPPORT (1),
|
||||
`else
|
||||
.DEBUG_SUPPORT (0),
|
||||
`endif
|
||||
.BREAKPOINT_TRIGGERS(2),
|
||||
.NUM_IRQS (30),
|
||||
.IRQ_PRIORITY_BITS (2),
|
||||
@@ -251,9 +190,4 @@ module mgmt_core_wrapper (
|
||||
.soft_irq (irq_i[0]),
|
||||
.timer_irq (irq_i[1])
|
||||
);
|
||||
`else
|
||||
initial begin
|
||||
$error("exactly one management core macro must be defined");
|
||||
end
|
||||
`endif
|
||||
endmodule
|
||||
+2
-2
@@ -24,7 +24,7 @@ def parse_args() -> argparse.Namespace:
|
||||
parser.add_argument("--sta", required=True)
|
||||
parser.add_argument("--pdk", required=True)
|
||||
parser.add_argument("--formal", choices=("YES", "NO"), default="NO")
|
||||
parser.add_argument("--debug", choices=("YES", "NO"), default="NO")
|
||||
parser.add_argument("--require-debug-tools", action="store_true")
|
||||
parser.add_argument("--lock", type=Path, default=DEFAULT_LOCK)
|
||||
parser.add_argument("--format", choices=("text", "json"), default="text")
|
||||
parser.add_argument("--output", type=Path)
|
||||
@@ -67,7 +67,7 @@ def main() -> int:
|
||||
tools.append("sta")
|
||||
if args.formal == "YES":
|
||||
tools.extend(("sby", "yosys", "yosys-smtbmc", "sv2v", "bitwuzla"))
|
||||
if args.debug == "YES":
|
||||
if args.require_debug_tools:
|
||||
tools.extend(("openocd", "riscv32-unknown-elf-gdb"))
|
||||
|
||||
source_names = ["mpw", "hazard3", "cluster_common", "third_party_ip"]
|
||||
|
||||
+5
-3
@@ -66,7 +66,9 @@ def make_sbom(lock: dict[str, object]) -> dict[str, object]:
|
||||
components.extend(
|
||||
container_component(name, spec) for name, spec in lock["container_images"].items()
|
||||
)
|
||||
components.extend(component(f"nix/{name}", "source", spec) for name, spec in lock["nix_inputs"].items())
|
||||
components.extend(
|
||||
component(f"nix/{name}", "source", spec) for name, spec in lock["nix_inputs"].items()
|
||||
)
|
||||
for platform, tools in lock["toolchains"].items():
|
||||
components.extend(
|
||||
component(f"{platform}/{name}", "toolchain", spec) for name, spec in tools.items()
|
||||
@@ -108,8 +110,8 @@ def main() -> int:
|
||||
config["PDK"],
|
||||
"--simu",
|
||||
config["SIMU"],
|
||||
"--core",
|
||||
config.get("CORE", "HAZARD3"),
|
||||
"--jtag-idcode",
|
||||
config.get("JTAG_IDCODE", "DEADBEEF"),
|
||||
"--dynamic-core-filelist",
|
||||
str(args.variant_root / "generated/mpw" / config["SIMU"].lower() / "core/core.fl"),
|
||||
"--dynamic-ip-filelist",
|
||||
|
||||
@@ -71,7 +71,6 @@ def main() -> int:
|
||||
"-Wextra",
|
||||
"-Werror",
|
||||
"-fno-builtin",
|
||||
"-DRS_SOC_MGMT_CORE_HAZARD3",
|
||||
"-I",
|
||||
str(memory_map_root / "include"),
|
||||
"-I",
|
||||
|
||||
@@ -39,13 +39,10 @@ def build_defines(args: argparse.Namespace) -> list[str]:
|
||||
defines.append("+define+HAVE_SRAM_MACRO")
|
||||
if not args.have_sva:
|
||||
defines.append("+define+SV_ASSRT_DISABLE")
|
||||
if args.have_debug == "YES":
|
||||
defines.append("+define+HAVE_DEBUG")
|
||||
idcode = int(args.jtag_idcode, 16)
|
||||
if idcode >= (1 << 31):
|
||||
idcode -= 1 << 32
|
||||
defines.append(f"+define+SOC_JTAG_IDCODE={idcode}")
|
||||
defines.append(f"+define+CORE_{args.core}")
|
||||
return defines
|
||||
|
||||
|
||||
@@ -65,7 +62,7 @@ def configured_filelist(
|
||||
"ip.fl",
|
||||
"tech.fl",
|
||||
]
|
||||
names.append(f"core_{args.core.lower()}.fl")
|
||||
names.append("core_hazard3.fl")
|
||||
dynamic_core = args.dynamic_core_filelist
|
||||
if not dynamic_core.is_file():
|
||||
raise FileNotFoundError(f"user core filelist is not generated: {dynamic_core}")
|
||||
@@ -189,14 +186,12 @@ def parse_args() -> argparse.Namespace:
|
||||
parser = argparse.ArgumentParser(description="Export configured retroSoC RTL sources")
|
||||
parser.add_argument("mode", choices=("tar", "sv"))
|
||||
parser.add_argument("--soc", default="MINI", choices=("MINI",))
|
||||
parser.add_argument("--core", default="HAZARD3", choices=("HAZARD3", "PICORV32"))
|
||||
parser.add_argument("--pdk", default="IHP130", choices=("IHP130", "ICS55", "SKY130", "GF180"))
|
||||
parser.add_argument("--simu", default="VCS", choices=("VCS", "VERILATOR", "IVERILOG"))
|
||||
parser.add_argument("--have-pll", action="store_true")
|
||||
parser.add_argument("--have-sram-if", action="store_true")
|
||||
parser.add_argument("--have-sram-macro", action="store_true")
|
||||
parser.add_argument("--have-sva", action="store_true")
|
||||
parser.add_argument("--have-debug", choices=("YES", "NO"), default="YES")
|
||||
parser.add_argument("--jtag-idcode", default="DEADBEEF")
|
||||
parser.add_argument(
|
||||
"--dynamic-core-filelist",
|
||||
@@ -216,8 +211,6 @@ def main() -> int:
|
||||
args = parse_args()
|
||||
if not re.fullmatch(r"[0-9a-fA-F]{8}", args.jtag_idcode):
|
||||
raise SystemExit("--jtag-idcode must be exactly eight hexadecimal digits")
|
||||
if args.have_debug == "YES" and args.core != "HAZARD3":
|
||||
raise SystemExit("--have-debug YES requires --core HAZARD3")
|
||||
export_dir = args.output_dir.resolve()
|
||||
export_dir.mkdir(parents=True, exist_ok=True)
|
||||
with tempfile.TemporaryDirectory(prefix="retrosoc-filelists-") as temporary:
|
||||
|
||||
@@ -124,10 +124,10 @@ module sysctrl_fault_tb;
|
||||
if (read_data !== 32'd11) $fatal(1, "performance snapshot was not recorded");
|
||||
|
||||
read_register(32'h1000_B020, read_data);
|
||||
if (read_data !== 32'h0000_001F) $fatal(1, "user cores were not held in reset");
|
||||
if (read_data !== 32'h0000_003F) $fatal(1, "user cores were not held in reset");
|
||||
write_register(32'h1000_B000, 32'h0000_0006);
|
||||
read_register(32'h1000_B024, read_data);
|
||||
if ((read_data & 32'h0000_081F) !== 32'h0000_0800) begin
|
||||
if ((read_data & 32'h0000_083F) !== 32'h0000_0800) begin
|
||||
$fatal(1, "out-of-range user core selection was accepted");
|
||||
end
|
||||
write_register(32'h1000_B024, 32'h0000_0800);
|
||||
|
||||
+18
-14
@@ -44,15 +44,9 @@ def test_pin_map_generates_asic_and_platform_bindings(tmp_path: Path) -> None:
|
||||
|
||||
ports = (tmp_path / "rtl/retrosoc_asic_ports.svh").read_text(encoding="utf-8")
|
||||
pads = (tmp_path / "rtl/retrosoc_asic_pad_bindings.svh").read_text(encoding="utf-8")
|
||||
fpga = (tmp_path / "rtl/retrosoc_asic_fpga_mini_bindings.svh").read_text(
|
||||
encoding="utf-8"
|
||||
)
|
||||
testbench = (tmp_path / "rtl/retrosoc_asic_tb_bindings.svh").read_text(
|
||||
encoding="utf-8"
|
||||
)
|
||||
verilator = (tmp_path / "rtl/retrosoc_asic_verilator_bindings.svh").read_text(
|
||||
encoding="utf-8"
|
||||
)
|
||||
fpga = (tmp_path / "rtl/retrosoc_asic_fpga_mini_bindings.svh").read_text(encoding="utf-8")
|
||||
testbench = (tmp_path / "rtl/retrosoc_asic_tb_bindings.svh").read_text(encoding="utf-8")
|
||||
verilator = (tmp_path / "rtl/retrosoc_asic_verilator_bindings.svh").read_text(encoding="utf-8")
|
||||
|
||||
assert "inout extclk_i_pad," in ports
|
||||
assert "input xi_i_pad," in ports
|
||||
@@ -60,6 +54,8 @@ def test_pin_map_generates_asic_and_platform_bindings(tmp_path: Path) -> None:
|
||||
assert "inout jtag_tck_i_pad" in ports
|
||||
assert "inout jtag_trst_n_i_pad" in ports
|
||||
assert "output jtag_tdo_o_pad" in ports
|
||||
assert "HAVE_DEBUG" not in ports
|
||||
assert "HAVE_DEBUG" not in pads
|
||||
assert "u_gpio_31_io_pad" in pads
|
||||
assert "u_sdram_dq15_io_pad" in pads
|
||||
assert ".gpio_30_io_pad(gpio_io30)" in fpga
|
||||
@@ -78,9 +74,7 @@ def test_pin_map_generates_asic_and_platform_bindings(tmp_path: Path) -> None:
|
||||
|
||||
def test_pin_map_rejects_duplicate_pads(tmp_path: Path) -> None:
|
||||
document = json.loads(PIN_MAP.read_text(encoding="utf-8"))
|
||||
document["pads"][0]["ports"].append(
|
||||
{"name": "extclk_i_pad", "signal": "s_duplicate_clock"}
|
||||
)
|
||||
document["pads"][0]["ports"].append({"name": "extclk_i_pad", "signal": "s_duplicate_clock"})
|
||||
invalid_map = tmp_path / "duplicate.json"
|
||||
invalid_map.write_text(json.dumps(document), encoding="utf-8")
|
||||
|
||||
@@ -115,8 +109,18 @@ def test_pin_map_rejects_unknown_profile_pad(tmp_path: Path) -> None:
|
||||
|
||||
|
||||
def test_fpga_constraints_reference_declared_top_ports() -> None:
|
||||
top_ports = set(re.findall(r"^\s*(?:input|output|inout)\s+([A-Za-z_][A-Za-z0-9_]*)", FPGA_TOP.read_text(encoding="utf-8"), re.MULTILINE))
|
||||
xdc_ports = set(re.findall(r"\[get_ports\s+([A-Za-z_][A-Za-z0-9_]*)\]", FPGA_XDC.read_text(encoding="utf-8")))
|
||||
top_ports = set(
|
||||
re.findall(
|
||||
r"^\s*(?:input|output|inout)\s+([A-Za-z_][A-Za-z0-9_]*)",
|
||||
FPGA_TOP.read_text(encoding="utf-8"),
|
||||
re.MULTILINE,
|
||||
)
|
||||
)
|
||||
xdc_ports = set(
|
||||
re.findall(
|
||||
r"\[get_ports\s+([A-Za-z_][A-Za-z0-9_]*)\]", FPGA_XDC.read_text(encoding="utf-8")
|
||||
)
|
||||
)
|
||||
|
||||
assert xdc_ports
|
||||
assert xdc_ports <= top_ports
|
||||
|
||||
+60
-52
@@ -118,7 +118,7 @@ def test_generate_all_is_stable_and_expands_paths(tmp_path: Path) -> None:
|
||||
assert str(ROOT / "rtl/managed/hazard3/hdl") in hazard3
|
||||
assert "rtl/managed/mpw/core/username3" not in hazard3
|
||||
assert (tmp_path / "core_hazard3.fl").is_file()
|
||||
assert (tmp_path / "core_picorv32.fl").is_file()
|
||||
assert not (tmp_path / "core_picorv32.fl").exists()
|
||||
assert {
|
||||
"pdk_gf180.fl",
|
||||
"pdk_ics55.fl",
|
||||
@@ -138,13 +138,11 @@ def test_filelist_round_trips_verilog_define_values(tmp_path: Path) -> None:
|
||||
parsed = parse_filelists([tmp_path / "def.fl"])
|
||||
output = tmp_path / "round-trip.fl"
|
||||
write_filelist(output, parsed)
|
||||
assert output.read_text(encoding="utf-8") == (
|
||||
"+define+SOC_JTAG_IDCODE=32'hDEADBEEF\n"
|
||||
)
|
||||
assert output.read_text(encoding="utf-8") == ("+define+SOC_JTAG_IDCODE=32'hDEADBEEF\n")
|
||||
assert parse_filelists([output]) == parsed
|
||||
|
||||
|
||||
def test_source_export_selects_the_requested_management_core(tmp_path: Path) -> None:
|
||||
def test_source_export_uses_the_fixed_hazard3_management_core(tmp_path: Path) -> None:
|
||||
module_path = ROOT / "syn/tools/export_soc_sources.py"
|
||||
spec = importlib.util.spec_from_file_location("retrosoc_source_export", module_path)
|
||||
assert spec is not None and spec.loader is not None
|
||||
@@ -156,44 +154,39 @@ def test_source_export_selects_the_requested_management_core(tmp_path: Path) ->
|
||||
dynamic_core.write_text("", encoding="utf-8")
|
||||
dynamic_ip.write_text("", encoding="utf-8")
|
||||
|
||||
for core, source_name in (
|
||||
("HAZARD3", "hazard3_cpu_1port.v"),
|
||||
("PICORV32", "picorv32_ver.v"),
|
||||
):
|
||||
arguments = SimpleNamespace(
|
||||
pdk="IHP130",
|
||||
simu="IVERILOG",
|
||||
core=core,
|
||||
have_pll=False,
|
||||
have_sram_if=False,
|
||||
have_sram_macro=False,
|
||||
have_sva=False,
|
||||
have_debug="YES" if core == "HAZARD3" else "NO",
|
||||
jtag_idcode="DEADBEEF",
|
||||
dynamic_core_filelist=dynamic_core,
|
||||
dynamic_ip_filelist=dynamic_ip,
|
||||
)
|
||||
generated_dir = tmp_path / core.lower()
|
||||
user_extensions_dir = generated_dir / "user_extensions"
|
||||
source_export.generate_all(generated_dir, source_export.build_defines(arguments))
|
||||
source_export.generate_user_extensions(
|
||||
ROOT / "rtl/mini/integration/user_extensions.json", user_extensions_dir
|
||||
)
|
||||
filelist = source_export.configured_filelist(
|
||||
arguments, generated_dir, user_extensions_dir, require_files=False
|
||||
)
|
||||
arguments = SimpleNamespace(
|
||||
pdk="IHP130",
|
||||
simu="IVERILOG",
|
||||
have_pll=False,
|
||||
have_sram_if=False,
|
||||
have_sram_macro=False,
|
||||
have_sva=False,
|
||||
jtag_idcode="DEADBEEF",
|
||||
dynamic_core_filelist=dynamic_core,
|
||||
dynamic_ip_filelist=dynamic_ip,
|
||||
)
|
||||
generated_dir = tmp_path / "hazard3"
|
||||
user_extensions_dir = generated_dir / "user_extensions"
|
||||
source_export.generate_all(generated_dir, source_export.build_defines(arguments))
|
||||
source_export.generate_user_extensions(
|
||||
ROOT / "rtl/mini/integration/user_extensions.json", user_extensions_dir
|
||||
)
|
||||
filelist = source_export.configured_filelist(
|
||||
arguments, generated_dir, user_extensions_dir, require_files=False
|
||||
)
|
||||
|
||||
assert f"+define+CORE_{core}" in filelist.defines
|
||||
assert "+define+SOC_JTAG_IDCODE=-559038737" in filelist.defines
|
||||
assert ("+define+HAVE_DEBUG" in filelist.defines) == (core == "HAZARD3")
|
||||
assert any(path.name == source_name for path in filelist.files)
|
||||
assert "+define+SOC_JTAG_IDCODE=-559038737" in filelist.defines
|
||||
assert not any(item.startswith("+define+CORE_") for item in filelist.defines)
|
||||
assert "+define+HAVE_DEBUG" not in filelist.defines
|
||||
assert any(path.name == "hazard3_cpu_1port.v" for path in filelist.files)
|
||||
|
||||
|
||||
def test_package_forwards_manifest_management_core() -> None:
|
||||
def test_package_forwards_manifest_jtag_idcode() -> None:
|
||||
package_source = (ROOT / "scripts/package.py").read_text(encoding="utf-8")
|
||||
|
||||
assert '"--core"' in package_source
|
||||
assert 'config.get("CORE", "HAZARD3")' in package_source
|
||||
assert '"--jtag-idcode"' in package_source
|
||||
assert 'config.get("JTAG_IDCODE", "DEADBEEF")' in package_source
|
||||
assert '"--core"' not in package_source
|
||||
|
||||
|
||||
def test_formal_filelists_are_scoped_to_the_protocol_duts(tmp_path: Path) -> None:
|
||||
@@ -508,20 +501,29 @@ def test_make_dry_run_and_validation_do_not_write_filelists() -> None:
|
||||
assert invalid.returncode != 0
|
||||
assert "Invalid SIMU='UNKNOWN'" in invalid.stderr
|
||||
|
||||
invalid_core = subprocess.run(
|
||||
removed_core = subprocess.run(
|
||||
["make", "CORE=alternate", "config"],
|
||||
cwd=ROOT,
|
||||
text=True,
|
||||
capture_output=True,
|
||||
)
|
||||
assert invalid_core.returncode != 0
|
||||
assert "Invalid CORE='alternate'" in invalid_core.stderr
|
||||
assert removed_core.returncode != 0
|
||||
assert "CORE has been removed" in removed_core.stderr
|
||||
|
||||
default_core = run("make", "config").stdout
|
||||
assert "CORE HAZARD3" in default_core
|
||||
assert any(
|
||||
line.startswith("MGMT_CORE") and line.rstrip().endswith("HAZARD3")
|
||||
for line in default_core.splitlines()
|
||||
)
|
||||
|
||||
picorv32_core = run("make", "CORE=PICORV32", "config").stdout
|
||||
assert "CORE PICORV32" in picorv32_core
|
||||
removed_debug = subprocess.run(
|
||||
["make", "HAVE_DEBUG=NO", "config"],
|
||||
cwd=ROOT,
|
||||
text=True,
|
||||
capture_output=True,
|
||||
)
|
||||
assert removed_debug.returncode != 0
|
||||
assert "HAVE_DEBUG has been removed" in removed_debug.stderr
|
||||
|
||||
removed_ip = subprocess.run(
|
||||
["make", "IP=MDD", "config"],
|
||||
@@ -668,7 +670,8 @@ def test_verilator_simulations_use_uniform_timeout() -> None:
|
||||
for _, values in regression_commands:
|
||||
if "SIMU=VERILATOR" in values:
|
||||
assert not any(value.startswith("SOC_SIM_TIME=") for value in values)
|
||||
assert "HAVE_SVA=YES" in values
|
||||
if "debug-sim" not in values:
|
||||
assert "HAVE_SVA=YES" in values
|
||||
|
||||
|
||||
def test_verilator_has_no_external_core_selection() -> None:
|
||||
@@ -681,16 +684,18 @@ def test_verilator_has_no_external_core_selection() -> None:
|
||||
assert "core_sel_i" not in testbench
|
||||
|
||||
|
||||
def test_management_core_selection_is_limited_to_hazard3_and_picorv32() -> None:
|
||||
def test_management_core_is_fixed_to_hazard3_with_debug() -> None:
|
||||
wrapper = (ROOT / "rtl/mini/top/mgmt_core_wrapper.sv").read_text(encoding="utf-8")
|
||||
makefile = (ROOT / "Makefile").read_text(encoding="utf-8")
|
||||
|
||||
assert "VALID_CORE := HAZARD3 PICORV32" in makefile
|
||||
assert "DEF_LIST += +define+CORE_$(CORE)" in makefile
|
||||
assert "`ifdef CORE_PICORV32" in wrapper
|
||||
assert "`elsif CORE_HAZARD3" in wrapper
|
||||
assert "CORE has been removed" in makefile
|
||||
assert "HAVE_DEBUG has been removed" in makefile
|
||||
assert "CORE_$(CORE)" not in makefile
|
||||
assert "`ifdef CORE_" not in wrapper
|
||||
assert "`ifdef HAVE_DEBUG" not in wrapper
|
||||
assert "ahbl2ribp u_ahbl2ribp" in wrapper
|
||||
assert ".RESET_VECTOR (`SOC_CPU_RESET_ADDR)" in wrapper
|
||||
assert ".DEBUG_SUPPORT (1)" in wrapper
|
||||
|
||||
|
||||
def test_hazard3_debug_flow_is_locked_and_uses_remote_bitbang() -> None:
|
||||
@@ -704,19 +709,22 @@ def test_hazard3_debug_flow_is_locked_and_uses_remote_bitbang() -> None:
|
||||
encoding="utf-8"
|
||||
)
|
||||
|
||||
assert "HAVE_DEBUG ?= YES" in makefile
|
||||
assert "JTAG_IDCODE ?= DEADBEEF" in makefile
|
||||
assert "if [ $$value -gt 2147483647 ]" in makefile
|
||||
assert "HAVE_DEBUG=YES requires CORE=HAZARD3" in makefile
|
||||
assert "HAVE_DEBUG ?=" not in makefile
|
||||
assert ".MULDIV_UNROLL (2)" in wrapper
|
||||
assert ".BRANCH_PREDICTOR (1)" in wrapper
|
||||
assert ".BREAKPOINT_TRIGGERS(2)" in wrapper
|
||||
assert ".HAVE_SBA(0)" in debug_wrapper
|
||||
assert "mgmt_debug_reset u_mgmt_debug_reset" in debug_wrapper
|
||||
assert "--timeout $(SOC_SIM_TIME)" in verilator_makefile
|
||||
assert "--require-debug-tools" in verilator_makefile
|
||||
assert "HAVE_DEBUG" not in verilator_makefile
|
||||
assert "DEBUG_GDB_PASS" in driver
|
||||
assert "break *0x30000008" in driver
|
||||
assert "adapter driver remote_bitbang" in openocd
|
||||
assert "catch {remote_bitbang port $jtag_port}" in openocd
|
||||
assert "remote_bitbang_port $jtag_port" in openocd
|
||||
assert "-expected-id 0xdeadbeef" in openocd
|
||||
assert lock["toolchains"]["ubuntu-22.04"]["openocd"]["version"] == "0.12.0-1"
|
||||
assert any(profile == "configs/ci/ihp130-debug.mk" for profile, _ in PR_COMMANDS)
|
||||
|
||||
@@ -47,18 +47,20 @@ def test_extensions_generate_isolated_scalar_bindings(tmp_path: Path) -> None:
|
||||
core = (tmp_path / "rtl/user_core_bindings.svh").read_text(encoding="utf-8")
|
||||
ip = (tmp_path / "rtl/user_ip_bindings.svh").read_text(encoding="utf-8")
|
||||
filelist = (tmp_path / "user_extensions.fl").read_text(encoding="utf-8")
|
||||
config = (tmp_path / "rtl/user_extensions_config.svh").read_text(encoding="utf-8")
|
||||
|
||||
assert core.count("rib_if u_user_") == 5
|
||||
assert core.count("ribp_if u_user_") == 5
|
||||
assert core.count("ribp2rib #(") == 5
|
||||
assert core.count(".SYNC_RESET(1'b1)") == 2
|
||||
assert core.count("rib_if u_user_") == 6
|
||||
assert core.count("ribp_if u_user_") == 6
|
||||
assert core.count("ribp2rib #(") == 6
|
||||
assert core.count(".SYNC_RESET(1'b1)") == 3
|
||||
assert core.count(".SYNC_RESET(1'b0)") == 3
|
||||
assert "rib.cmd_valid = '0;" in core
|
||||
assert "5'd0: begin" in core
|
||||
assert "5'd4: begin" in core
|
||||
assert "5'd5: begin" not in core
|
||||
assert "5'd5: begin" in core
|
||||
assert "core_reset_i[0]" in core
|
||||
assert "mpw_c0 #(0)" in core
|
||||
assert "mpw_c5 #(5)" in core
|
||||
assert "mpw_i1 #(1)" in ip
|
||||
assert "User core 0 uses the RIBP contract" in core
|
||||
assert ip.count("user_gpio_if #(`USER_GPIO_NUM)") == 2
|
||||
@@ -66,6 +68,7 @@ def test_extensions_generate_isolated_scalar_bindings(tmp_path: Path) -> None:
|
||||
assert "8'd2: begin" in ip
|
||||
assert "u_user_2_apb_if.psel = apb.psel;" in ip
|
||||
assert filelist.startswith("+incdir+")
|
||||
assert "`define USER_CORE_COUNT 6" in config
|
||||
|
||||
|
||||
def test_extensions_reject_noncontiguous_slots_and_invalid_modules(tmp_path: Path) -> None:
|
||||
|
||||
Reference in new issue
Block a user