mirror of
https://github.com/openhwgroup/cvw.git
synced 2025-04-23 21:38:55 -04:00
Finish updating riscof and sim Makefiles to allow targets to run in parallel
This commit is contained in:
parent
14d76b9189
commit
68b854fc20
3 changed files with 56 additions and 101 deletions
35
sim/Makefile
35
sim/Makefile
|
@ -3,10 +3,11 @@
|
|||
# SPDX-License-Identifier: Apache-2.0 WITH SHL-2.1
|
||||
|
||||
SIM = ${WALLY}/sim
|
||||
TESTS = ${WALLY}/tests
|
||||
|
||||
all: riscoftests memfiles coveragetests deriv
|
||||
all: riscoftests coveragetests deriv
|
||||
|
||||
wally-riscv-arch-test: wallyriscoftests memfiles
|
||||
wally-riscv-arch-test: wallyriscoftests
|
||||
|
||||
QuestaCodeCoverage: questa/ucdb/rv64gc_arch64i.ucdb
|
||||
vcover merge -out questa/ucdb/cov.ucdb questa/ucdb/rv64gc_arch64i.ucdb questa/ucdb/rv64gc*.ucdb -logfile questa/cov/log
|
||||
|
@ -44,32 +45,26 @@ riscvdv:
|
|||
# python3 ${WALLY}/addins/riscv-dv/run.py --test ${test_name} --target rv64gc --output tests/riscvdv --iterations 1 -si questa --iss spike --verbose --cov --seed 0 --steps iss_sim >> ${SIM}/questa/fcov_logs/${test_name}.log 2>&1
|
||||
# run-elf.bash --seed ${SIM}/questa/seed0.txt --verbose --elf ${WALLY}/tests/riscvdv/asm_test/${test_name}_0.o >> ${SIM}/questa/fcov_logs/${test_name}.log 2>&1
|
||||
|
||||
allclean: clean all
|
||||
|
||||
clean:
|
||||
make clean -C ../tests/riscof
|
||||
# make clean -C ../../tests/wally-riscv-arch-test
|
||||
# make allclean -C ../../tests/imperas-riscv-tests
|
||||
|
||||
riscoftests:
|
||||
# Builds riscv-arch-test 64 and 32-bit versions and builds wally-riscv-arch-test 64 and 32-bit versions
|
||||
make -C ../tests/riscof/
|
||||
$(MAKE) -C ${TESTS}/riscof
|
||||
|
||||
wallyriscoftests:
|
||||
# Builds riscv-arch-test 64 and 32-bit versions and builds wally-riscv-arch-test 64 and 32-bit versions
|
||||
make -C ../tests/riscof/ wally-riscv-arch-test
|
||||
|
||||
memfiles:
|
||||
make -f makefile-memfile wally-sim-files --jobs
|
||||
# Builds wally-riscv-arch-test 64 and 32-bit versions
|
||||
$(MAKE) -C ${TESTS}/riscof wally-riscv-arch-test
|
||||
|
||||
coveragetests:
|
||||
make -C ../tests/coverage/ --jobs
|
||||
$(MAKE) -C ${TESTS}/coverage
|
||||
|
||||
deriv:
|
||||
derivgen.pl
|
||||
|
||||
benchmarks:
|
||||
$(MAKE) -C ../benchmarks/embench build
|
||||
$(MAKE) -C ../benchmarks/embench size
|
||||
$(MAKE) -C ../benchmarks/embench modelsim_build_memfile
|
||||
$(MAKE) -C ../benchmarks/coremark
|
||||
$(MAKE) -C ${WALLY}benchmarks/embench build
|
||||
$(MAKE) -C ${WALLY}/benchmarks/embench size
|
||||
$(MAKE) -C ${WALLY}/benchmarks/embench modelsim_build_memfile
|
||||
$(MAKE) -C ${WALLY}/benchmarks/coremark
|
||||
|
||||
clean:
|
||||
$(MAKE) clean -C ${TESTS}/riscof
|
||||
# $(MAKE) clean -C ${TESTS}/wally-riscv-arch-test
|
||||
|
|
|
@ -1,71 +1,49 @@
|
|||
arch_dir = ../../addins/riscv-arch-test
|
||||
wally_dir = ../wally-riscv-arch-test
|
||||
work_dir = ./riscof_work
|
||||
work = ./work
|
||||
arch_workdir = $(work)/riscv-arch-test
|
||||
wally_workdir = $(work)/wally-riscv-arch-test
|
||||
nproc = $(shell nproc --ignore=1)
|
||||
.SECONDEXPANSION:
|
||||
|
||||
current_dir = $(shell pwd)
|
||||
#XLEN ?= 64
|
||||
MAKEFLAGS += --output-sync --no-print-directory
|
||||
nproc := $(shell nproc --ignore=1)
|
||||
|
||||
all: root arch32 wally32 arch32e arch64 wally64
|
||||
# Directories
|
||||
arch_dir := $(WALLY)/addins/riscv-arch-test
|
||||
wally_dir := $(WALLY)/tests/wally-riscv-arch-test
|
||||
work_dir := ./riscof_work
|
||||
work := ./work
|
||||
arch_workdir := $(work)/riscv-arch-test
|
||||
wally_workdir := $(work)/wally-riscv-arch-test
|
||||
current_dir := $(shell pwd)
|
||||
|
||||
wally-riscv-arch-test: root wally64 wally32
|
||||
# General make rules
|
||||
.PHONY: all riscv-arch-test wally-riscv-arch-test quad64 clean
|
||||
all: riscv-arch-test wally-riscv-arch-test
|
||||
riscv-arch-test: arch32e arch32 arch64
|
||||
wally-riscv-arch-test: wally32 wally64
|
||||
|
||||
root:
|
||||
mkdir -p $(work_dir)
|
||||
mkdir -p $(work)
|
||||
mkdir -p $(arch_workdir)
|
||||
mkdir -p $(wally_workdir)
|
||||
sed 's,{0},$(current_dir),g;s,{1},32gc,g;s,{2},$(nproc),g' config.ini > config32.ini
|
||||
sed 's,{0},$(current_dir),g;s,{1},64gc,g;s,{2},$(nproc),g' config.ini > config64.ini
|
||||
sed 's,{0},$(current_dir),g;s,{1},32e,g;s,{2},$(nproc),g' config.ini > config32e.ini
|
||||
# Generate config.ini files
|
||||
config%.ini: config.ini
|
||||
sed 's,{0},$(current_dir),g;s,{1},$(patsubst %64,%64gc,$(patsubst %32,%32gc,$*)),g;s,{2},$(nproc),g' config.ini > $@
|
||||
|
||||
arch32e:
|
||||
riscof run --work-dir=$(work_dir) --config=config32e.ini --suite=$(arch_dir)/riscv-test-suite/ --env=$(arch_dir)/riscv-test-suite/env --no-browser
|
||||
rsync -a $(work_dir)/rv32e_m/ $(arch_workdir)/rv32e_m/ || echo "error suppressed"
|
||||
# Generate riscv-arch-test targets
|
||||
arch%: config$$*.ini | $(work_dir) $(arch_workdir)
|
||||
riscof run --work-dir=$(work_dir)/$@ --config=$< --suite=$(arch_dir)/riscv-test-suite/ --env=$(arch_dir)/riscv-test-suite/env --no-browser
|
||||
$(MAKE) -f makefile-memfile WORKDIR=$(work_dir)/$@
|
||||
rsync -a $(work_dir)/$@/rv*/* $(arch_workdir)/rv$(patsubst %64,%64i,$(patsubst %32,%32i,$*))_m || echo "error suppressed"
|
||||
|
||||
arch32:
|
||||
riscof run --work-dir=$(work_dir) --config=config32.ini --suite=$(arch_dir)/riscv-test-suite/ --env=$(arch_dir)/riscv-test-suite/env --no-browser
|
||||
rsync -a $(work_dir)/rv32i_m/ $(arch_workdir)/rv32i_m/ || echo "error suppressed"
|
||||
# Generate wally-riscv-arch-test targets
|
||||
wally%: config$$*.ini | $(work_dir) $(wally_workdir)
|
||||
riscof run --work-dir=$(work_dir)/$@ --config=$< --suite=$(wally_dir)/riscv-test-suite/ --env=$(wally_dir)/riscv-test-suite/env --no-browser --no-dut-run
|
||||
$(MAKE) -f makefile-memfile WORKDIR=$(work_dir)/$@
|
||||
rsync -a $(work_dir)/$@/rv*/* $(wally_workdir)/rv$(patsubst %64,%64i,$(patsubst %32,%32i,$*))_m || echo "error suppressed"
|
||||
|
||||
|
||||
arch64:
|
||||
riscof run --work-dir=$(work_dir) --config=config64.ini --suite=$(arch_dir)/riscv-test-suite/ --env=$(arch_dir)/riscv-test-suite/env --no-browser
|
||||
rsync -a $(work_dir)/rv64i_m/ $(arch_workdir)/rv64i_m/ || echo "error suppressed"
|
||||
# Also copy F and D tests to RV64
|
||||
rsync -a $(work_dir)/rv32i_m/ $(arch_workdir)/rv64i_m/ || echo "error suppressed"
|
||||
|
||||
wally32:
|
||||
riscof run --work-dir=$(work_dir) --config=config32.ini --suite=$(wally_dir)/riscv-test-suite/ --env=$(wally_dir)/riscv-test-suite/env --no-browser --no-dut-run
|
||||
rsync -a $(work_dir)/rv32i_m/ $(wally_workdir)/rv32i_m/ || echo "error suppressed"
|
||||
|
||||
wally64:
|
||||
riscof run --work-dir=$(work_dir) --config=config64.ini --suite=$(wally_dir)/riscv-test-suite/ --env=$(wally_dir)/riscv-test-suite/env --no-browser --no-dut-run
|
||||
rsync -a $(work_dir)/rv64i_m/ $(wally_workdir)/rv64i_m/ || echo "error suppressed"
|
||||
# Also copy F and D tests to RV64
|
||||
rsync -a $(work_dir)/rv32i_m/ $(wally_workdir)/rv64i_m/ || echo "error suppressed"
|
||||
|
||||
quad64:
|
||||
riscof run --work-dir=$(work_dir) --config=config64.ini --suite=$(wally_dir)/riscv-test-suite/rv64i_m/Q/riscv-ctg/tests/ --env=$(wally_dir)/riscv-test-suite/env
|
||||
|
||||
#wally32e:
|
||||
# riscof run --work-dir=$(work_dir) --config=config32e.ini --suite=$(wally_dir)/riscv-test-suite/ --env=$(wally_dir)/riscv-test-suite/env --no-browser --no-dut-run
|
||||
# rsync -a $(work_dir)/rv32i_m/ $(wally_workdir)/rv32i_m/ || echo "error suppressed"
|
||||
# rsync -a $(work_dir)/rv32e_unratified/ $(wally_workdir)/rv32e_unratified/ || echo "error suppressed"
|
||||
|
||||
|
||||
memfile:
|
||||
find $(work) -type f -name "*.elf" | grep "rv64i_m" | while read f; do riscv64-unknown-elf-elf2hex --bit-width 64 --input "$$f" --output "$$f.memfile"; done
|
||||
find $(work) -type f -name "*.elf" | grep "rv32i_m" | while read f; do riscv64-unknown-elf-elf2hex --bit-width 32 --input "$$f" --output "$$f.memfile"; done
|
||||
find $(work) -type f -name "*.elf.objdump" | while read f; do extractFunctionRadix.sh $$f; done
|
||||
quad64: config64.ini $(wally_dir)/riscv-test-suite/rv64i_m/Q/riscv-ctg/tests | $(work_dir)
|
||||
riscof run --work-dir=$(work_dir)/$@ --config=$< --suite=$(wally_dir)/riscv-test-suite/rv64i_m/Q/riscv-ctg/tests/ --env=$(wally_dir)/riscv-test-suite/env
|
||||
$(MAKE) -f makefile-memfile WORKDIR=$(work_dir)/$@
|
||||
|
||||
clean:
|
||||
rm -f config64.ini
|
||||
rm -f config32.ini
|
||||
rm -f config32e.ini
|
||||
rm -f config??*.ini
|
||||
rm -rf $(work_dir)
|
||||
rm -rf $(wally_workdir)
|
||||
rm -rf $(arch_workdir)
|
||||
rm -rf $(submodule_wor_dir)
|
||||
|
||||
$(work_dir) $(arch_workdir) $(wally_workdir):
|
||||
mkdir -p $@
|
||||
|
|
|
@ -1,27 +1,12 @@
|
|||
ROOT := ..
|
||||
SUFFIX := work
|
||||
ARCHDIR := $(ROOT)/tests/riscof
|
||||
WALLYDIR:= $(ROOT)/tests/wally-riscv-arch-test
|
||||
# IMPERASDIR := $(ROOT)/tests/imperas-riscv-tests
|
||||
# ALLDIRS := $(ARCHDIR)/$(SUFFIX) $(WALLYDIR)/$(SUFFIX) $(IMPERASDIR)/$(SUFFIX)
|
||||
IMPERASDIR := $(ROOT)/tests/imperas-riscv-tests
|
||||
#ALLDIRS := $(ARCHDIR)/$(SUFFIX) $(WALLYDIR)/$(SUFFIX)
|
||||
ALLDIRS := $(ARCHDIR)/$(SUFFIX)
|
||||
WORKDIR ?= $(WALLY)/tests/riscof/work/
|
||||
|
||||
ELFFILES ?= $(shell find $(ALLDIRS) -type f -regex ".*\.elf")
|
||||
OBJDUMPFILES ?= $(shell find $(ALLDIRS) -type f -regex ".*\.elf.objdump")
|
||||
ELFFILES ?= $(shell find $(WORKDIR) -type f -regex ".*\.elf")
|
||||
OBJDUMPFILES ?= $(shell find $(WORKDIR) -type f -regex ".*\.elf.objdump")
|
||||
MEMFILES ?= $(ELFFILES:.elf=.elf.memfile)
|
||||
ADDRFILES ?= $(OBJDUMPFILES:.objdump=.objdump.addr)
|
||||
|
||||
print:
|
||||
echo "files in $(ALLDIRS) are $(ELFFILES)."
|
||||
echo "memfiles are $(MEMFILES)"
|
||||
|
||||
.PHONY: all wally-sim-files
|
||||
all: wally-sim-files
|
||||
|
||||
wally-sim-files: $(MEMFILES) $(ADDRFILES)
|
||||
echo "$@"
|
||||
.PHONY: wally-sim-files
|
||||
wally-sim-files: $(MEMFILES) $(ADDRFILES)
|
||||
|
||||
# notes to self on how this works.
|
||||
# The find command locates all of the *.elf files in directory DIR1. A list of .memfiles and
|
||||
|
@ -36,6 +21,3 @@ wally-sim-files: $(MEMFILES) $(ADDRFILES)
|
|||
|
||||
%.elf.objdump.addr: %.elf.objdump
|
||||
extractFunctionRadix.sh $<
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
Loading…
Add table
Add a link
Reference in a new issue