Skip to content

Commit 6dbcab6

Browse files
glaserfclayton8
authored andcommitted
[env] Clean up Makefiles and add preliminary support for Xcelium
Signed-off-by: Florian Glaser <glaserf@lowrisc.org>
1 parent f2768a9 commit 6dbcab6

8 files changed

Lines changed: 42 additions & 19 deletions

File tree

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ __pycache__
1818
*.vpd
1919
*.fst
2020
*.fsdb
21+
*.rc
22+
.verisium_debug*
23+
verisium_debug*
24+
*.shm
25+
*xrun.history
2126
novas.*
2227
verdiLog
2328
*.xml

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ install-uvm:
224224
clean: ## Clean all generated sources
225225
rm -rf $(I3C_ROOT_DIR)/{dsim.env,dsim_work,sw,*.log,*.rpt,*.vcd}
226226
rm -rf $(GENERIC_UVM_DIR) $(VERILATOR_UVM_DIR)
227-
rm -rf {$(VERIFICATION_DIR),$(COCOTB_VERIF_DIR),$(BLOCK_VERIF_DIR),$(TOP_VERIF_DIR),$(UVM_VERIF_DIR)}/**/{.nox,obj_dir,__pycache__,report,sim_build,*.dat,*.info,*.json,*.log,*.vpd,*.vcd,*.fsdb,*.fst,*.xml,ucli.key}
227+
rm -rf {$(VERIFICATION_DIR),$(COCOTB_VERIF_DIR),$(BLOCK_VERIF_DIR),$(TOP_VERIF_DIR),$(UVM_VERIF_DIR)}/**/{.nox,obj_dir,__pycache__,report,sim_build,*.dat,*.info,*.json,*.log,*.vpd,*.vcd,*.fsdb,*.fst,*.shm,*.xml,ucli.key,xrun.history}
228228
rm -rf $(TOOL_DIR)/**/{.nox,obj_dir,__pycache__,report,sim_build,*.dat,*.info,*.log,*.vcd,*.xml}
229229

230230
.PHONY: lint lint-check lint-rtl lint-tests \

src/i3c.f

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,10 @@
1-
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
2-
+incdir+${CALIPTRA_ROOT}/src/caliptra_prim/rtl
3-
+incdir+${CALIPTRA_ROOT}/src/axi/rtl
4-
+incdir+${I3C_ROOT_DIR}/src
5-
+incdir+${I3C_ROOT_DIR}/src/libs
61
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_pkg.sv
72
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_util_pkg.sv
83
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_count_pkg.sv
94
${CALIPTRA_ROOT}/src/caliptra_prim_generic/rtl/caliptra_prim_generic_flop.sv
105
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_flop.sv
116
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_flop_2sync.sv
127
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_assert.sv
13-
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_assert_dummy_macros.svh
148
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_fifo_sync_cnt.sv
159
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_fifo_sync.sv
1610
${CALIPTRA_ROOT}/src/libs/rtl/ahb_defines_pkg.sv

tools/reg_gen/gen_axi_csr_tracker.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@
9696
9797
endmodule : axi_csr_tracker
9898
99+
`ifdef I3C_USE_AXI
99100
bind axi_adapter axi_csr_tracker u_axi_csr_tracker (
100101
.clk_i (clk_i),
101102
.rst_ni (rst_ni),
@@ -105,6 +106,7 @@
105106
.s_cpuif_wr_data(s_cpuif_wr_data),
106107
.s_cpuif_rd_data(s_cpuif_rd_data)
107108
);
109+
`endif // I3C_USE_AXI
108110
109111
`endif // VERILATOR
110112
`endif // SYNTHESIS

tools/simulators/Makefile.xcelium

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
3+
ifeq (, $(shell which xrun))
4+
$(warning WARNING: SIMULATOR: Xcelium (xrun) is not in PATH.)
5+
endif
6+

verification/cocotb/common.mk

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ TRACK_FSM ?= 1
77

88
# Paths
99
CURDIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
10-
I3C_ROOT := $(abspath $(CURDIR)/../..)
1110
CFGDIR :=
1211
CONFIG :=
1312
$(info From common.mk, CURDIR is $(CURDIR))
@@ -21,8 +20,7 @@ COMMON_SOURCES += $(TEST_DIR)/sim_build/i3c_config.vh
2120
VERILOG_INCLUDE_DIRS= \
2221
$(CALIPTRA_ROOT)/src/libs/rtl \
2322
$(CALIPTRA_ROOT)/src/caliptra_prim/rtl \
24-
$(I3C_ROOT)/src \
25-
$(I3C_ROOT)/src/libs/axi \
23+
$(I3C_ROOT_DIR)/src \
2624
$(I3C_ROOT_DIR)/src/libs
2725

2826
$(info VERILOG_SOURCES = $(VERILOG_SOURCES))
@@ -58,17 +56,22 @@ ifeq ($(SIM), verilator)
5856
EXTRA_ARGS += -Wno-DECLFILENAME -Wno-TIMESCALEMOD
5957
endif
6058

59+
# Switch between Verdi FSDB PLI and "classic" waveform dumping
60+
VERDI_PLI ?= 1
61+
6162
ifeq ($(SIM), vcs)
62-
EXTRA_ARGS += +vcs+lic+wait
63-
COMPILE_ARGS += -deraceclockdata +libext+.sv +libext+.v
64-
COMPILE_ARGS += $(foreach dir,$(VERILOG_INCLUDE_DIRS),-y $(dir))
6563
COMPILE_ARGS += -assert svaext
66-
COMPILE_ARGS += -debug_access+all +memcbk -assert svaext
6764
COMPILE_ARGS += -Xcflags='-Wno-error=implicit-function-declaration -Wno-error=int-conversion'
65+
ifeq ($(VERDI_PLI), 1)
66+
COMPILE_ARGS += -P $(VERDI_HOME)/share/PLI/VCS/LINUX64/novas.tab $(VERDI_HOME)/share/PLI/VCS/LINUX64/pli.a
67+
else
68+
COMPILE_ARGS += -debug_access+all
6869
COMPILE_ARGS += -kdb +vcs+fsdbon
69-
# Verdi FSDB PLI for waveform dumping
70-
COMPILE_ARGS += -P $(VERDI_HOME)/share/PLI/VCS/LINUX64/novas.tab $(VERDI_HOME)/share/PLI/VCS/LINUX64/pli.a
70+
endif
71+
ifeq ($(WAVES), 1)
72+
# Sim args seem to work for both wave dumping types (?)
7173
SIM_ARGS += +fsdbfile+dump.fsdb +fsdb+all=on +fsdb+mda=on
74+
endif
7275
EXTRA_ARGS += +vcs+lic+wait
7376

7477
# Opt-in FSM state transition logging: make ... TRACK_FSM=1
@@ -81,6 +84,14 @@ ifeq ($(SIM), vcs)
8184
endif
8285
endif
8386

87+
ifeq ($(SIM), xcelium)
88+
ifeq ($(WAVES), 1)
89+
SIM_ARGS += -input "@database -open cocotb_waves -default"
90+
SIM_ARGS += -input "@probe -database cocotb_waves -create $(TOPLEVEL) -all -depth all"
91+
SIM_ARGS += -input "@run" -input "@exit"
92+
endif
93+
endif
94+
8495
COCOTB_HDL_TIMEUNIT = 1ns
8596
COCOTB_HDL_TIMEPRECISION = 1fs ## we need 1fs resolution to handle 333MHz clocks
8697

@@ -113,10 +124,10 @@ all: sim convert-vpd2vcd
113124

114125
endif
115126

116-
CFG_FILE ?= $(I3C_ROOT)/i3c_core_configs.yaml## Path: YAML file holding configuration of the I3C RTL
127+
CFG_FILE ?= $(I3C_ROOT_DIR)/i3c_core_configs.yaml## Path: YAML file holding configuration of the I3C RTL
117128
CFG_NAME ?= axi## Valid configuration name from the YAML configuration file
118129

119130
$(TEST_DIR)/sim_build/i3c_config.vh:
120-
pushd $(I3C_ROOT) && CFG_FILE=$(CFG_FILE) CFG_NAME=$(CFG_NAME) make config && popd
131+
pushd $(I3C_ROOT_DIR) && CFG_FILE=$(CFG_FILE) CFG_NAME=$(CFG_NAME) make config && popd
121132
mkdir -p $(TEST_DIR)/sim_build
122133
touch $(TEST_DIR)/sim_build/i3c_config.vh

verification/cocotb/common/bus2csr.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,10 @@ async def setup_dut(clk, rst_n, clk_period: Tuple[int, str]) -> None:
2929
"""
3030
Setup clock & reset the unit
3131
"""
32-
await cocotb.start(Clock(clk, *clk_period).start())
32+
clk.value = 0
3333
rst_n.value = 0
34+
await Timer(1, units="ps")
35+
await cocotb.start(Clock(clk, *clk_period).start())
3436
await ClockCycles(clk, 10)
3537
await RisingEdge(clk)
3638
await Timer(1, units="ns")

verification/cocotb/top/lib_i3c_top/i3c_test_wrapper.sv

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@ i3c_wrapper xi3c_wrapper (
210210
.rlast_o(rlast),
211211
.rvalid_o(rvalid),
212212
.rready_i(rready),
213+
.ruser_o(),
213214

214215
.awaddr_i(awaddr),
215216
.awburst_i(awburst),
@@ -226,11 +227,13 @@ i3c_wrapper xi3c_wrapper (
226227
.wlast_i(wlast),
227228
.wvalid_i(wvalid),
228229
.wready_o(wready),
230+
.wuser_i('0),
229231

230232
.bresp_o(bresp),
231233
.bid_o(bid),
232234
.bvalid_o(bvalid),
233235
.bready_i(bready),
236+
.buser_o(),
234237

235238
`ifdef AXI_ID_FILTERING
236239
.disable_id_filtering_i(disable_id_filtering_i),

0 commit comments

Comments
 (0)