@@ -7,7 +7,6 @@ TRACK_FSM ?= 1
77
88# Paths
99CURDIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST ) ) ) )
10- I3C_ROOT := $(abspath $(CURDIR ) /../..)
1110CFGDIR :=
1211CONFIG :=
1312$(info From common.mk, CURDIR is $(CURDIR))
@@ -21,8 +20,7 @@ COMMON_SOURCES += $(TEST_DIR)/sim_build/i3c_config.vh
2120VERILOG_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
5957endif
6058
59+ # Switch between Verdi FSDB PLI and "classic" waveform dumping
60+ VERDI_PLI ?= 1
61+
6162ifeq ($(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
8285endif
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+
8495COCOTB_HDL_TIMEUNIT = 1ns
8596COCOTB_HDL_TIMEPRECISION = 1fs # # we need 1fs resolution to handle 333MHz clocks
8697
@@ -113,10 +124,10 @@ all: sim convert-vpd2vcd
113124
114125endif
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
117128CFG_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
0 commit comments