Cleanup Makefile infrastructure to support VCS

This commit is contained in:
Mike Thompson 2023-05-29 20:06:18 +00:00
parent f84a77a1ac
commit 00678f52c7
5 changed files with 31 additions and 17 deletions

3
.gitignore vendored
View file

@ -66,3 +66,6 @@ transcript
tools/spike tools/spike
tools/verilator* tools/verilator*
*_results/ *_results/
*.signature_output
ucli.key
vcs.cmd

View file

@ -18,7 +18,7 @@ CV_CORE_BRANCH ?= master
CV_CORE_HASH ?= fcd5968 CV_CORE_HASH ?= fcd5968
CV_CORE_TAG ?= none CV_CORE_TAG ?= none
# The CV_CORE_HASH above points to version of the RTL that is newer, but # The CV_CORE_HASH above points to version of the RTL that is newer, but
# ilogically equivalent RTL with respect to v1.0.0 RTL freeze version. # logically equivalent RTL with respect to v1.0.0 RTL freeze version.
# There are some implementation and testbench updates in the above hash. # There are some implementation and testbench updates in the above hash.
# Set CV_CORE_TAG as below to point to the exact cv32e40p repo as that used at RTL freeze # Set CV_CORE_TAG as below to point to the exact cv32e40p repo as that used at RTL freeze
#CV_CORE_TAG ?= cv32e40p_v1.0.0 #CV_CORE_TAG ?= cv32e40p_v1.0.0
@ -36,6 +36,13 @@ COMPLIANCE_BRANCH ?= master
# 2020-08-19 # 2020-08-19
COMPLIANCE_HASH ?= c21a2e86afa3f7d4292a2dd26b759f3f29cde497 COMPLIANCE_HASH ?= c21a2e86afa3f7d4292a2dd26b759f3f29cde497
# This Spike repo is only cloned when the DPI disassembler needs to be rebuilt.
# Typically users can simply use the checked-in shared library.
# Should you need to, the command is "make dpi_dasm".
DPI_DASM_SPIKE_REPO ?= https://github.com/riscv/riscv-isa-sim.git
DPI_DASM_SPIKE_BRANCH ?= master
DPI_DASM_SPIKE_HASH ?= 8faa928819fb551325e76b463fc0c978e22f5be3
# SVLIB # SVLIB
SVLIB_REPO ?= https://bitbucket.org/verilab/svlib/src/master/svlib SVLIB_REPO ?= https://bitbucket.org/verilab/svlib/src/master/svlib
SVLIB_BRANCH ?= master SVLIB_BRANCH ?= master

View file

@ -677,6 +677,7 @@ DPI_DASM_INC = -I$(DPI_DASM_PKG) -I$(DPI_INCLUDE) -I$(DPI_DASM_SPIKE_PKG)/ris
DPI_DASM_CXX = g++ DPI_DASM_CXX = g++
dpi_dasm: $(DPI_DASM_SPIKE_PKG) dpi_dasm: $(DPI_DASM_SPIKE_PKG)
$(CLONE_DPI_DASM_SPIKE_CMD)
$(DPI_DASM_CXX) $(DPI_DASM_CFLAGS) $(DPI_DASM_INC) $(DPI_DASM_SRC) -o $(DPI_DASM_LIB) $(DPI_DASM_CXX) $(DPI_DASM_CFLAGS) $(DPI_DASM_INC) $(DPI_DASM_SRC) -o $(DPI_DASM_LIB)
############################################################################### ###############################################################################

View file

@ -37,6 +37,7 @@ DVE = $(CV_TOOL_PREFIX) dve
URG = $(CV_SIM_PREFIX) urg URG = $(CV_SIM_PREFIX) urg
# Paths # Paths
VCS_RESULTS ?= vcs_results
VCS_DIR ?= $(SIM_CFG_RESULTS)/vcs.d VCS_DIR ?= $(SIM_CFG_RESULTS)/vcs.d
VCS_ELAB_COV = -cm line+cond+tgl+fsm+branch+assert -cm_dir $(MAKECMDGOALS)/$(MAKECMDGOALS).vdb VCS_ELAB_COV = -cm line+cond+tgl+fsm+branch+assert -cm_dir $(MAKECMDGOALS)/$(MAKECMDGOALS).vdb
@ -47,13 +48,15 @@ VCS_TIMESCALE = $(shell echo "$(TIMESCALE)" | tr ' ' '=') # -timescale=1ns/1p
VCS_UVM_VERBOSITY ?= UVM_MEDIUM VCS_UVM_VERBOSITY ?= UVM_MEDIUM
# Flags # Flags
VCS_VERSION ?= S-2021.09-SP1 #VCS_UVMHOME_ARG ?= /opt/uvm/1800.2-2017-0.9/
VCS_UVMHOME_ARG ?= /synopsys/vcs/$(VCS_VERSION)/etc/uvm-1.2 #VCS_UVMHOME_ARG ?= /opt/synopsys/vcs-mx/O-2018.09-SP1-1/etc/uvm
VCS_UVMHOME_ARG ?= /synopsys/vcs/S-2021.09-SP1/etc/uvm
VCS_UVM_ARGS ?= +incdir+$(VCS_UVMHOME_ARG)/src $(VCS_UVMHOME_ARG)/src/uvm_pkg.sv +UVM_VERBOSITY=$(VCS_UVM_VERBOSITY) -ntb_opts uvm-1.2 VCS_UVM_ARGS ?= +incdir+$(VCS_UVMHOME_ARG)/src $(VCS_UVMHOME_ARG)/src/uvm_pkg.sv +UVM_VERBOSITY=$(VCS_UVM_VERBOSITY) -ntb_opts uvm-1.2
VCS_COMP_FLAGS ?= -lca -sverilog \ VCS_COMP_FLAGS ?= -lca -sverilog \
$(SV_CMP_FLAGS) $(VCS_UVM_ARGS) $(VCS_TIMESCALE) \ $(SV_CMP_FLAGS) $(VCS_UVM_ARGS) $(VCS_TIMESCALE) \
-assert svaext -race=all -ignore unique_checks -full64 -assert svaext -race=all -ignore unique_checks -full64
VCS_GUI ?= VCS_GUI ?=
VCS_RUN_COV = -cm line+cond+tgl+fsm+branch+assert -cm_dir $(MAKECMDGOALS).vdb VCS_RUN_COV = -cm line+cond+tgl+fsm+branch+assert -cm_dir $(MAKECMDGOALS).vdb
@ -63,6 +66,13 @@ VCS_PMA_INC += +incdir+$(TBSRC_HOME)/uvmt \
+incdir+$(CV_CORE_COREVDV_PKG)/ldgen \ +incdir+$(CV_CORE_COREVDV_PKG)/ldgen \
+incdir+$(abspath $(MAKE_PATH)/../../../lib/mem_region_gen) +incdir+$(abspath $(MAKE_PATH)/../../../lib/mem_region_gen)
# Need to re-define the LIB paths for VCS to drop the "*.so" extension.
DPI_DASM_LIB = $(DPI_DASM_PKG)/lib/$(DPI_DASM_ARCH)/libdpi_dasm
SVLIB_LIB = $(SVLIB_PKG)/../svlib_dpi
# Required by dpi_dasm target
DPI_INCLUDE ?= $(shell dirname $(shell which vcs))/../include
############################################################################### ###############################################################################
# Common QUIET flag defaults to -quiet unless VERBOSE is set # Common QUIET flag defaults to -quiet unless VERBOSE is set
ifeq ($(call IS_YES,$(VERBOSE)),YES) ifeq ($(call IS_YES,$(VERBOSE)),YES)
@ -157,10 +167,6 @@ VCS_RUN_FLAGS += $(VCS_RUN_WAVES_FLAGS)
VCS_RUN_FLAGS += $(VCS_RUN_COV_FLAGS) VCS_RUN_FLAGS += $(VCS_RUN_COV_FLAGS)
VCS_RUN_FLAGS += $(USER_RUN_FLAGS) VCS_RUN_FLAGS += $(USER_RUN_FLAGS)
# Special var to point to tool and installation dependent path of DPI headers.
# Used to recompile dpi_dasm_spike if needed (by default, not needed).
DPI_INCLUDE ?= $(shell dirname $(shell which vcs))/../lib
############################################################################### ###############################################################################
# Targets # Targets
@ -191,7 +197,7 @@ VCS_COMP = $(VCS_COMP_FLAGS) \
$(UVM_PLUSARGS) $(UVM_PLUSARGS)
comp: mk_vcs_dir $(CV_CORE_PKG) $(SVLIB_PKG) $(OVP_MODEL_DPI) comp: mk_vcs_dir $(CV_CORE_PKG) $(SVLIB_PKG) $(OVP_MODEL_DPI)
cd $(VCS_DIR) && $(VCS) $(VCS_COMP) -top uvmt_$(CV_CORE_LC)_tb cd $(SIM_CFG_RESULTS) && $(VCS) $(VCS_COMP) -top uvmt_$(CV_CORE_LC)_tb
@echo "$(BANNER)" @echo "$(BANNER)"
@echo "* $(SIMULATOR) compile complete" @echo "* $(SIMULATOR) compile complete"
@echo "* Log: $(SIM_CFG_RESULTS)/vcs.log" @echo "* Log: $(SIM_CFG_RESULTS)/vcs.log"
@ -222,12 +228,9 @@ export IMPERAS_TOOLS=$(SIM_RUN_RESULTS)/ovpsim.ic
# The new general test target # The new general test target
test: $(VCS_SIM_PREREQ) hex gen_ovpsim_ic test: $(VCS_SIM_PREREQ) hex gen_ovpsim_ic
@echo "$(BANNER)" echo $(IMPERAS_TOOLS)
@echo "* Running simulation"
@echo "$(BANNER)"
mkdir -p $(SIM_RUN_RESULTS) mkdir -p $(SIM_RUN_RESULTS)
cd $(SIM_RUN_RESULTS) && \ $(VCS_RESULTS)/$(CFG)/$(SIMV) \
$(VCS_DIR)/$(SIMV) \
-l vcs-$(TEST_NAME).log \ -l vcs-$(TEST_NAME).log \
-cm_name $(TEST_NAME) $(VCS_RUN_FLAGS) \ -cm_name $(TEST_NAME) $(VCS_RUN_FLAGS) \
$(CFG_PLUSARGS) \ $(CFG_PLUSARGS) \