71 lines
2.2 KiB
Makefile
71 lines
2.2 KiB
Makefile
|
|
# ============================================================================
|
||
|
|
# Terminal-only (batch) Vivado/xsim flow for the Calc1 UVM environment.
|
||
|
|
#
|
||
|
|
# make # compile + elaborate + run the default test (test_sanity)
|
||
|
|
# make TEST=test_corner
|
||
|
|
# make run TEST=test_random VERB=UVM_HIGH
|
||
|
|
# make WAVES=1 # also dump calc.vcd
|
||
|
|
# make clean
|
||
|
|
#
|
||
|
|
# Override the tool location if needed: make VIVADO=/path/to/Vivado/2022.2
|
||
|
|
# ============================================================================
|
||
|
|
|
||
|
|
SHELL := /bin/bash
|
||
|
|
VIVADO ?= /tools/Xilinx/Vivado/2022.2
|
||
|
|
SETTINGS := $(VIVADO)/settings64.sh
|
||
|
|
|
||
|
|
TEST ?= test_sanity
|
||
|
|
VERB ?= UVM_LOW
|
||
|
|
SEED ?= random
|
||
|
|
SNAP := calc_sim
|
||
|
|
TOP := calc_verif_top
|
||
|
|
|
||
|
|
# run xsim until UVM calls $finish; the driver/monitor have response timeouts
|
||
|
|
# so a non-responding DUT is reported, never hung on
|
||
|
|
RUN := -R
|
||
|
|
|
||
|
|
# optional waveform dump
|
||
|
|
ifeq ($(WAVES),1)
|
||
|
|
WAVEARG := -testplusarg WAVES
|
||
|
|
else
|
||
|
|
WAVEARG :=
|
||
|
|
endif
|
||
|
|
|
||
|
|
DUT_SRCS := $(wildcard dut/*.v)
|
||
|
|
INCDIRS := -i ./verif -i ./verif/Agent -i ./verif/Sequences -i ./verif/Configurations
|
||
|
|
TB_SRCS := ./verif/Configurations/configurations_pkg.sv \
|
||
|
|
./verif/Agent/calc_agent_pkg.sv \
|
||
|
|
./verif/Sequences/calc_seq_pkg.sv \
|
||
|
|
./verif/calc_test_pkg.sv \
|
||
|
|
./verif/calc_if.sv \
|
||
|
|
./verif/calc_verif_top.sv
|
||
|
|
|
||
|
|
.PHONY: all run comp elab sim clean
|
||
|
|
|
||
|
|
all: run
|
||
|
|
|
||
|
|
# ---- compile ---------------------------------------------------------------
|
||
|
|
comp:
|
||
|
|
@bash -c 'source $(SETTINGS) && \
|
||
|
|
xvlog --nolog $(DUT_SRCS) && \
|
||
|
|
xvlog --nolog --sv -L uvm $(INCDIRS) $(TB_SRCS)'
|
||
|
|
|
||
|
|
# ---- elaborate -------------------------------------------------------------
|
||
|
|
elab: comp
|
||
|
|
@bash -c 'source $(SETTINGS) && \
|
||
|
|
xelab --nolog -L uvm -timescale 1ns/10ps $(TOP) -s $(SNAP)'
|
||
|
|
|
||
|
|
# ---- simulate --------------------------------------------------------------
|
||
|
|
sim:
|
||
|
|
@bash -c 'source $(SETTINGS) && \
|
||
|
|
xsim --nolog $(SNAP) $(RUN) \
|
||
|
|
-testplusarg UVM_TESTNAME=$(TEST) \
|
||
|
|
-testplusarg UVM_VERBOSITY=$(VERB) \
|
||
|
|
$(WAVEARG) -sv_seed $(SEED)'
|
||
|
|
|
||
|
|
run: elab sim
|
||
|
|
|
||
|
|
clean:
|
||
|
|
@rm -rf xsim.dir xsim.covdb .Xil *.jou *.log *.pb *.wdb *.vcd xelab.* xvlog.* \
|
||
|
|
webtalk* usage_statistics_webtalk.* 2>/dev/null; echo "cleaned"
|