diff options
| author | Alejandro Soto <alejandro@34project.org> | 2023-09-25 23:46:34 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2023-09-25 23:46:34 -0600 |
| commit | 1db38c7cccd74af09109a5161edc95233e75fc74 (patch) | |
| tree | 8c2e776635286974a630fee28eebc2afcbcc1627 /Makefile | |
| parent | 9fa82e6621df63335199b7abc0b4ca8acd2f3e03 (diff) | |
tb: implement coverage reports
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 33 |
1 files changed, 28 insertions, 5 deletions
@@ -6,16 +6,24 @@ TB_DIR := tb SIM_DIR := sim TB_SIM_DIR := $(TB_DIR)/sim SIM_OBJ_DIR := $(OBJ_DIR)/$(TOP)/sim -VERILATOR := verilator +VERILATOR ?= verilator +GENHTML ?= genhtml CROSS_CC := $(CROSS_COMPILE)gcc CROSS_OBJCOPY := $(CROSS_COMPILE)objcopy CROSS_CFLAGS := -O3 -Wall -Wextra -Werror CROSS_LDFLAGS := +VFLAGS ?= \ + --x-assign unique --x-initial unique \ + --threads $(shell nproc) \ + $(if $(DISABLE_COV),,--coverage) + RTL_FILES = $(shell find $(RTL_DIR)/ ! -path '$(RTL_DIR)/top/*' -type f -name '*.sv') RTL_FILES += $(shell find $(TB_DIR)/ ! -path '$(TB_DIR)/top/*' -type f -name '*.sv') TB_FILES = $(shell find $(TB_DIR)/ ! -path '$(TB_DIR)/top/*' -type f -name '*.cpp') +SIMS := $(patsubst $(TB_SIM_DIR)/%.py,%,$(wildcard $(TB_SIM_DIR)/*.py)) + all: sim clean: @@ -29,14 +37,29 @@ trace/%: exe/% $(VCD_DIR)/% $(VCD_DIR)/%: mkdir -p $@ -sim: $(patsubst $(TB_SIM_DIR)/%.py,sim/%,$(wildcard $(TB_SIM_DIR)/*.py)) +sim: $(addprefix sim/,$(SIMS)) sim/%: $(SIM_DIR)/sim.py $(TB_SIM_DIR)/%.py exe/$(TOP) $(SIM_OBJ_DIR)/%.bin - @$< $(TB_SIM_DIR)/$*.py $(OBJ_DIR)/$(TOP)/V$(TOP) $(SIM_OBJ_DIR)/$*.bin + @$< $(TB_SIM_DIR)/$*.py $(OBJ_DIR)/$(TOP)/V$(TOP) \ + $(SIM_OBJ_DIR)/$*.bin \ + $(if $(DISABLE_COV),,$(SIM_OBJ_DIR)/$*.cov) vmlaunch: $(SIM_DIR)/sim.py $(SIM_DIR)/gdbstub.py exe/$(TOP) @$< $(SIM_DIR)/gdbstub.py $(OBJ_DIR)/$(TOP)/V$(TOP) u-boot/build/taller/u-boot-dtb.bin +ifndef DISABLE_COV +cov: $(OBJ_DIR)/$(TOP)/cov.info + @rm -rf $@ + $(GENHTML) $< --output-dir=$@ + +cov/%: $(SIM_OBJ_DIR)/%.cov + +$(SIM_OBJ_DIR)/%.cov: sim/% + +$(OBJ_DIR)/$(TOP)/cov.info: $(patsubst %,$(SIM_OBJ_DIR)/%.cov,$(SIMS)) + $(VERILATOR)_coverage -write-info $@ $(SIM_OBJ_DIR)/*.cov +endif + $(SIM_OBJ_DIR)/%.bin: $(SIM_OBJ_DIR)/% $(CROSS_OBJCOPY) -O binary --only-section=._img $< $@ @@ -60,7 +83,7 @@ exe: exe/$(TOP) exe/%: $(OBJ_DIR)/%/V%.mk $(MAKE) -C $(OBJ_DIR)/$* -f V$*.mk -.PRECIOUS: $(SIM_OBJ_DIR)/% $(SIM_OBJ_DIR)/%.o $(SIM_OBJ_DIR)/%.bin +.PRECIOUS: $(SIM_OBJ_DIR)/% $(SIM_OBJ_DIR)/%.o $(SIM_OBJ_DIR)/%.bin $(SIM_OBJ_DIR)/%.cov .SECONDEXPANSION: $(OBJ_DIR)/%.mk: \ @@ -74,4 +97,4 @@ $(OBJ_DIR)/%.mk: \ $(VERILATOR) \ -O3 --cc --exe --trace -y $(RTL_DIR) --Mdir $(dir $@) \ --top $(word 1,$(subst /, ,$*)) $(patsubst tb/%,../tb/%,$^) \ - --x-assign unique --x-initial unique --threads $(shell nproc) + $(VFLAGS) |
