74 lines
2.6 KiB
Makefile
74 lines
2.6 KiB
Makefile
# Cadence Xcelium / SimVision / IMC flow
|
|
|
|
INCLUDE_FILE_NAME ?= member.include
|
|
TOP ?= cpu_tb_top
|
|
PYTHON ?= python3
|
|
IMC ?= /tools/software/cadence/vmanageragl/25.09.020/tools.lnx86/vmgr/bin/imc
|
|
|
|
CURRENT_DIR := $(shell pwd)
|
|
WORKSPACE := $(CURRENT_DIR)/WORKSPACE
|
|
|
|
# The encrypted RTL requires SIM to select its simulation-safe declarations.
|
|
XRUN_FLAGS = -64bit -sv -linedebug -access +rwc \
|
|
-timescale 1ns/10ps +define+SIM=1 +incdir+sym_links \
|
|
-coverage all -licqueue -covoverwrite
|
|
|
|
SIM_PLUSARGS ?=
|
|
SEED ?= 1
|
|
LOGFILE ?= simulation.log
|
|
WAVE_PLUSARGS ?=
|
|
COV_TEST ?= member
|
|
|
|
# Assign each Unix username to one of the three encrypted bug-hunt CPUs.
|
|
# Summing the username bytes keeps the mapping deterministic and portable;
|
|
# BUG_HUNT_VARIANT remains overridable for staff validation.
|
|
BUG_HUNT_USER ?= $(shell id -un)
|
|
BUG_HUNT_VARIANT ?= $(shell printf '%s' '$(BUG_HUNT_USER)' | od -An -tu1 | \
|
|
awk '{ for (i = 1; i <= NF; i++) sum += $$i } END { print sum % 3 }')
|
|
|
|
.PHONY: help clean link xrun bug_hunt simvision bug_hunt_simvision coverage run_and_view
|
|
|
|
help:
|
|
@echo " make xrun [SEED=n] run your CPU"
|
|
@echo " make bug_hunt [SEED=n|random] run the encrypted CPU and collect failures"
|
|
@echo " make simvision open the member-CPU waveform"
|
|
@echo " make bug_hunt_simvision open the encrypted-CPU waveform"
|
|
@echo " make coverage open the member coverage database"
|
|
@echo " make clean remove generated simulation files"
|
|
@echo " selected bug-hunt variant: $(BUG_HUNT_VARIANT) (user $(BUG_HUNT_USER))"
|
|
|
|
clean:
|
|
@rm -rf $(WORKSPACE)
|
|
|
|
link:
|
|
@mkdir -p $(WORKSPACE)/sym_links
|
|
@rm -rf $(WORKSPACE)/sym_links/*
|
|
@BUG_HUNT_VARIANT=$(BUG_HUNT_VARIANT) $(PYTHON) link_files.py $(INCLUDE_FILE_NAME)
|
|
|
|
xrun: link
|
|
cd $(WORKSPACE) && \
|
|
xrun $(XRUN_FLAGS) -svseed $(SEED) -f sym_links/sim_no_path.include \
|
|
-top $(TOP) -covtest $(COV_TEST) -logfile $(LOGFILE) \
|
|
+SEED_LABEL=$(SEED) $(WAVE_PLUSARGS) $(SIM_PLUSARGS)
|
|
|
|
bug_hunt:
|
|
@echo "Bug-hunt variant $(BUG_HUNT_VARIANT) selected for $(BUG_HUNT_USER)"
|
|
@rm -rf $(WORKSPACE)/xcelium.d
|
|
$(MAKE) xrun INCLUDE_FILE_NAME=bug_hunt.include \
|
|
LOGFILE=bug_hunt.log WAVE_PLUSARGS=+BUG_HUNT_WAVES COV_TEST=bug_hunt \
|
|
BUG_HUNT_VARIANT=$(BUG_HUNT_VARIANT) \
|
|
SIM_PLUSARGS="$(SIM_PLUSARGS) +NO_STOP_ON_ERROR"
|
|
|
|
simvision:
|
|
cd $(WORKSPACE) && simvision waves.shm &
|
|
|
|
bug_hunt_simvision:
|
|
cd $(WORKSPACE) && simvision bug_hunt_waves.shm &
|
|
|
|
coverage:
|
|
cd $(WORKSPACE) && $(IMC) -load cov_work/scope/$(COV_TEST) -load_refinement $(CURRENT_DIR)/exclusions.vRefine &
|
|
|
|
run_and_view: xrun simvision
|
|
|
|
.DEFAULT_GOAL := run_and_view
|