Miscellaneous makefile updates

This commit is contained in:
2025-12-28 18:03:50 -08:00
parent 36eedfb56d
commit 90dbd81844

View File

@@ -3,12 +3,23 @@ LOG_REDIR = >&
TIME=/usr/bin/time --format "Elapsed: %E, Memory: %M KB [Swaps %W]"
# Makefile variables
# NUM_PROCS=$(shell nproc --all)
NUM_PROCS=6
# Use as many threads as possible while keeping 2 for IO, browsing, etc.
# USE_PROCS = $(( $(shell nproc --all) - 2 ))
KEEP_PROCS=2
TOTAL_PROCS=$(shell nproc --all)
USE_PROCS=$(shell expr $(TOTAL_PROCS) - $(KEEP_PROCS))
PROJ_BASE=$(shell pwd)
# Make and run project
# Verilator setup
# VERILATOR_HOME=$(HOME)/git/verilator
VERILATOR_HOME=/usr/share/verilator
# UVM setup
UVM_HOME=$(HOME)/git/uvm-verilator
# UVM_HOME=$(HOME)/git/ca_uvm-verilator
# UVM_HOME=$(HOME)/git/1800.2-2017-1.0
# Make and run project
PROJ=axi
SV_OUT=obj_dir/Vuvm_pkg__verFiles.dat
@@ -22,7 +33,7 @@ SIM_LOG=$(PROJ)_sim.log
SV_FILES=$(shell ls common/*.sv src/axi/*.sv tb/*.sv)
SV_SRC=$(UVM_HOME)/src/uvm_pkg.sv common/common_pkg.sv src/axi/axi_types.sv src/axi/axi_pkg.sv tb/tb_pkg.sv
DPI_SRC=$(UVM_HOME)/src/dpi/uvm_dpi.cc
DPI_INC=-I/usr/share/verilator/include
DPI_INC=-I$(VERILATOR_HOME)/include
SV_DEPS=$(SV_FILES)
CPP_SRC=sim_$(PROJ).cpp
@@ -41,7 +52,7 @@ DISABLED_WARNINGS=-Wno-WIDTHTRUNC -Wno-WIDTHEXPAND \
BUILD_ARGS=-I$(UVM_HOME)/src -I. \
-o $(PROJ).sim \
-j $(NUM_PROCS) \
-j $(USE_PROCS) \
--error-limit 10 \
--timing $(TIMESCALE) \
--trace \
@@ -79,10 +90,10 @@ $(PROJ_BASE)/logs:
@if [ ! -d $(PROJ_BASE)/logs ]; then mkdir -p $(PROJ_BASE)/logs; fi
$(SV_OUT): $(PROJ_BASE)/logs $(SV_DEPS)
$(info #------------)
$(info # Building SV)
$(info #------------)
@verilator --cc $(BUILD_ARGS)
$(info #------------------------)
$(info # Building SV ($(USE_PROCS) threads))
$(info #------------------------)
@$(VERILATOR_HOME)/bin/verilator --cc $(BUILD_ARGS)
#
# C code build to generate testbench executable
@@ -90,10 +101,10 @@ $(SV_OUT): $(PROJ_BASE)/logs $(SV_DEPS)
build_cpp: build_sv $(CPP_OUT)
$(CPP_OUT): $(SV_OUT)
$(info #-------------)
$(info # Building CPP)
$(info #-------------)
@verilator --binary $(BUILD_ARGS)
$(info #-------------------------)
$(info # Building CPP ($(USE_PROCS) threads))
$(info #-------------------------)
@$(VERILATOR_HOME)/bin/verilator --binary $(BUILD_ARGS)
#
# Run just lint to detect syntax errors during development
@@ -102,20 +113,34 @@ lint:
$(info #--------)
$(info # Linting)
$(info #--------)
@verilator --lint-only $(BUILD_ARGS)
@$(VERILATOR_HOME)/bin/verilator --lint-only $(BUILD_ARGS)
#
# Run test. Use TEST_NAME=<test name> on make line to pick the test
#
run: $(CPP_OUT)
#run: $(CPP_OUT)
run:
$(info #---------------------)
$(info # Running $(TEST_NAME))
$(info #---------------------)
@if [ ! -d runs/$(TEST_NAME) ]; then mkdir -p runs/$(TEST_NAME); fi
@cd runs/$(TEST_NAME) && \
$(PROJ_BASE)/obj_dir/$(PROJ).sim +verilator+seed+2 +UVM_TESTNAME=$(TEST_NAME) +UVM_CONFIG_DB_TRACE |& tee $(SIM_LOG)
cd runs/$(TEST_NAME) && \
$(PROJ_BASE)/obj_dir/$(PROJ).sim +verilator+seed+2 \
+UVM_TESTNAME=$(TEST_NAME) \
+UVM_VERBOSITY=UVM_MEDIUM \
+uvm_set_verbosity=uvm_test_top.*,_ALL_,UVM_MEDIUM,run \
+UVM_CONFIG_DB_TRACE |& tee $(SIM_LOG)
notify-send "[$(PROJ)] Test run done"
build_and_run: $(CPP_OUT) run
$(info Build and Run done)
info:
$(info #----------------------)
$(info # Procs: $(TOTAL_PROCS))
$(info # Keep: $(KEEP_PROCS))
$(info # Threads: $(USE_PROCS))
$(info #----------------------)
#
# Remove generated files
# - This will not remove 'runs' directory that contains simulation run logs