mirror of
https://github.com/retroSoC/retroSoC.git
synced 2026-11-06 14:55:14 +00:00
- Added timestamp normalization to function in , allowing for optional timestamp input. - Updated command-line interface to accept a timestamp argument for generating deterministic build variant IDs. - Modified in to include a build timestamp in the environment variables. - Introduced a new test suite in to validate the pin-map generator, including tests for duplicate pads and invalid entries. - Added a test for ensuring the regression runner uses a consistent build timestamp. - Created a new SystemVerilog testbench for the APB4 interface bridge to verify correct signal crossing.
132 lines
6.1 KiB
Makefile
132 lines
6.1 KiB
Makefile
IVERILOG ?= iverilog
|
|
VVP ?= vvp
|
|
GTKWAVE ?= gtkwave
|
|
|
|
NETLIST_PATH ?= $(SYN_BUILD_ROOT)/out/retrosoc_asic_yosys.v
|
|
POST_PATH ?= $(ROOT_PATH)/pd/sdf/retrosoc_asic.v
|
|
SDF_PATH ?= $(ROOT_PATH)/pd/sdf/retrosoc_asic_CTS_MIN.sdf.gz
|
|
SDF_SCOPE ?= $(RTL_TOP).u_retrosoc_asic
|
|
|
|
IVERILOG_ROOT := $(SIM_BUILD_ROOT)
|
|
IVERILOG_BEHV_DIR := $(IVERILOG_ROOT)/behv
|
|
IVERILOG_NETL_DIR := $(IVERILOG_ROOT)/netl
|
|
IVERILOG_POST_DIR := $(IVERILOG_ROOT)/post
|
|
IVERILOG_BEHV_FLIST := $(IVERILOG_BEHV_DIR)/iverilog.fl
|
|
IVERILOG_NETL_FLIST := $(IVERILOG_NETL_DIR)/iverilog.fl
|
|
IVERILOG_POST_FLIST := $(IVERILOG_POST_DIR)/iverilog.fl
|
|
CONVERTED_SOC := $(IVERILOG_BEHV_DIR)/converted_soc.v
|
|
CONVERTED_DEPFILE := $(IVERILOG_BEHV_DIR)/converted_soc.d
|
|
IVERILOG_BEHV_SIMV := $(IVERILOG_BEHV_DIR)/simv
|
|
IVERILOG_NETL_SIMV := $(IVERILOG_NETL_DIR)/simv
|
|
IVERILOG_POST_SIMV := $(IVERILOG_POST_DIR)/simv
|
|
IVERILOG_BEHV_DEPFILE := $(IVERILOG_BEHV_DIR)/simv.d
|
|
IVERILOG_NETL_DEPFILE := $(IVERILOG_NETL_DIR)/simv.d
|
|
IVERILOG_POST_DEPFILE := $(IVERILOG_POST_DIR)/simv.d
|
|
|
|
-include $(CONVERTED_DEPFILE) $(IVERILOG_BEHV_DEPFILE) $(IVERILOG_NETL_DEPFILE) $(IVERILOG_POST_DEPFILE)
|
|
|
|
IVERILOG_COMMON_OPTS := -g2012
|
|
IVERILOG_TIME_OPTS := -gno-specify
|
|
IVERILOG_POST_OPTS := -gspecify -Tmin
|
|
IVERILOG_SIM_OPTS := +core_sel=$(RTL_SIM_CORESEL) +sim_timeout=$(RTL_SIM_TIMEOUT) +wave_$(WAVE)
|
|
|
|
$(CONVERTED_SOC): $(MPW_VARIANT_STAMP) $(FILELIST_STAMP)
|
|
@mkdir -p $(@D)
|
|
python3 $(RTL_PATH)/script/convt_sv2v.py $(RTL_FLIST) --output $@
|
|
python3 $(RTL_PATH)/script/filelist_deps.py $(RTL_FLIST) --target $@ \
|
|
--output $(CONVERTED_DEPFILE)
|
|
|
|
$(IVERILOG_BEHV_FLIST): $(FILELIST_STAMP) $(CONVERTED_SOC)
|
|
@mkdir -p $(@D)
|
|
python3 $(RTL_PATH)/script/gen_iverilog_filelist.py \
|
|
--mode behv --pdk $(PDK) --generated-dir $(GENERATED_FL_DIR) \
|
|
--pin-map-rtl-dir $(PIN_MAP_DIR)/rtl --output $@ --converted $(CONVERTED_SOC)
|
|
|
|
$(IVERILOG_NETL_FLIST): $(FILELIST_STAMP) $(NETLIST_PATH)
|
|
@mkdir -p $(@D)
|
|
python3 $(RTL_PATH)/script/gen_iverilog_filelist.py \
|
|
--mode netl --pdk $(PDK) --generated-dir $(GENERATED_FL_DIR) \
|
|
--pin-map-rtl-dir $(PIN_MAP_DIR)/rtl --output $@ --netlist $(NETLIST_PATH)
|
|
|
|
$(IVERILOG_POST_FLIST): $(FILELIST_STAMP) $(POST_PATH) $(SDF_PATH)
|
|
@mkdir -p $(@D)
|
|
python3 $(RTL_PATH)/script/gen_iverilog_filelist.py \
|
|
--mode post --pdk $(PDK) --generated-dir $(GENERATED_FL_DIR) \
|
|
--pin-map-rtl-dir $(PIN_MAP_DIR)/rtl --output $@ --netlist $(POST_PATH) --sdf $(SDF_PATH) \
|
|
--sdf-scope $(SDF_SCOPE)
|
|
|
|
convt_sv2v: $(CONVERTED_SOC)
|
|
gen_iverilog_filelist: $(IVERILOG_BEHV_FLIST)
|
|
|
|
$(IVERILOG_BEHV_SIMV): $(IVERILOG_BEHV_FLIST)
|
|
@mkdir -p $(IVERILOG_BEHV_DIR)
|
|
python3 $(ROOT_PATH)/scripts/run_flow.py --tool iverilog \
|
|
--log $(IVERILOG_BEHV_DIR)/compile.log --result $(IVERILOG_BEHV_DIR)/result-compile.json \
|
|
--cwd $(IVERILOG_BEHV_DIR) -- $(IVERILOG) $(IVERILOG_COMMON_OPTS) \
|
|
$(IVERILOG_TIME_OPTS) -f $< -o simv -s $(RTL_TOP)
|
|
python3 $(RTL_PATH)/script/filelist_deps.py -f $(IVERILOG_BEHV_FLIST) \
|
|
--target $@ --output $(IVERILOG_BEHV_DEPFILE)
|
|
|
|
$(IVERILOG_NETL_SIMV): $(IVERILOG_NETL_FLIST)
|
|
@mkdir -p $(IVERILOG_NETL_DIR)
|
|
python3 $(ROOT_PATH)/scripts/run_flow.py --tool iverilog \
|
|
--log $(IVERILOG_NETL_DIR)/compile.log --result $(IVERILOG_NETL_DIR)/result-compile.json \
|
|
--cwd $(IVERILOG_NETL_DIR) -- $(IVERILOG) $(IVERILOG_COMMON_OPTS) \
|
|
$(IVERILOG_TIME_OPTS) -f $< -o simv -s $(RTL_TOP)
|
|
python3 $(RTL_PATH)/script/filelist_deps.py -f $(IVERILOG_NETL_FLIST) \
|
|
--target $@ --output $(IVERILOG_NETL_DEPFILE)
|
|
|
|
$(IVERILOG_POST_SIMV): $(IVERILOG_POST_FLIST)
|
|
@mkdir -p $(IVERILOG_POST_DIR)
|
|
python3 $(ROOT_PATH)/scripts/run_flow.py --tool iverilog \
|
|
--log $(IVERILOG_POST_DIR)/compile.log --result $(IVERILOG_POST_DIR)/result-compile.json \
|
|
--cwd $(IVERILOG_POST_DIR) -- $(IVERILOG) $(IVERILOG_COMMON_OPTS) \
|
|
$(IVERILOG_POST_OPTS) -f $< -o simv -s $(RTL_TOP) -s retrosoc_sdf_annotator
|
|
python3 $(RTL_PATH)/script/filelist_deps.py -f $(IVERILOG_POST_FLIST) \
|
|
--target $@ --output $(IVERILOG_POST_DEPFILE)
|
|
|
|
comp: $(IVERILOG_BEHV_SIMV)
|
|
netcomp: $(IVERILOG_NETL_SIMV)
|
|
postcomp: $(IVERILOG_POST_SIMV)
|
|
|
|
sim: comp
|
|
python3 $(RTL_PATH)/script/prepare_norflash.py --sim-dir $(IVERILOG_BEHV_DIR) \
|
|
--firmware $(SW_BUILD_DIR)/$(SIM_FIRMWARE_NAME).hex
|
|
python3 $(ROOT_PATH)/scripts/run_flow.py --tool iverilog-sim \
|
|
--log $(IVERILOG_BEHV_DIR)/sim.log --result $(IVERILOG_BEHV_DIR)/result-sim.json \
|
|
--cwd $(IVERILOG_BEHV_DIR) -- stdbuf -oL -eL $(VVP) simv -fst $(IVERILOG_SIM_OPTS)
|
|
python3 $(ROOT_PATH)/scripts/check_simulation.py --log $(IVERILOG_BEHV_DIR)/sim.log \
|
|
--result $(IVERILOG_BEHV_DIR)/result-sim-check.json --require '$(SIM_SUCCESS_MARKER)'
|
|
|
|
netsim: netcomp
|
|
python3 $(RTL_PATH)/script/prepare_norflash.py --sim-dir $(IVERILOG_NETL_DIR) \
|
|
--firmware $(SW_BUILD_DIR)/$(SIM_FIRMWARE_NAME).hex
|
|
python3 $(ROOT_PATH)/scripts/run_flow.py --tool iverilog-sim \
|
|
--log $(IVERILOG_NETL_DIR)/sim.log --result $(IVERILOG_NETL_DIR)/result-sim.json \
|
|
--cwd $(IVERILOG_NETL_DIR) -- stdbuf -oL -eL $(VVP) simv -fst $(IVERILOG_SIM_OPTS)
|
|
python3 $(ROOT_PATH)/scripts/check_simulation.py --log $(IVERILOG_NETL_DIR)/sim.log \
|
|
--result $(IVERILOG_NETL_DIR)/result-sim-check.json --require '$(SIM_SUCCESS_MARKER)'
|
|
|
|
postsim: postcomp
|
|
python3 $(RTL_PATH)/script/prepare_norflash.py --sim-dir $(IVERILOG_POST_DIR) \
|
|
--firmware $(SW_BUILD_DIR)/$(SIM_FIRMWARE_NAME).hex
|
|
python3 $(ROOT_PATH)/scripts/run_flow.py --tool iverilog-sim \
|
|
--log $(IVERILOG_POST_DIR)/sim.log --result $(IVERILOG_POST_DIR)/result-sim.json \
|
|
--cwd $(IVERILOG_POST_DIR) -- stdbuf -oL -eL $(VVP) simv -fst $(IVERILOG_SIM_OPTS)
|
|
python3 $(ROOT_PATH)/scripts/check_simulation.py --log $(IVERILOG_POST_DIR)/sim.log \
|
|
--result $(IVERILOG_POST_DIR)/result-sim-check.json --require '$(SIM_SUCCESS_MARKER)'
|
|
|
|
comp netcomp postcomp sim netsim postsim: | manifest
|
|
|
|
wave:
|
|
cd $(IVERILOG_BEHV_DIR) && $(GTKWAVE) $(RTL_TOP).fst &
|
|
netwave:
|
|
cd $(IVERILOG_NETL_DIR) && $(GTKWAVE) $(RTL_TOP).fst &
|
|
postwave:
|
|
cd $(IVERILOG_POST_DIR) && $(GTKWAVE) $(RTL_TOP).fst &
|
|
|
|
clean:
|
|
python3 $(ROOT_PATH)/scripts/clean.py --root $(ROOT_PATH) --path $(IVERILOG_ROOT)
|
|
|
|
.PHONY: convt_sv2v gen_iverilog_filelist comp netcomp postcomp sim netsim postsim wave netwave postwave clean
|