From 769172334d7b828fda03284991d896e78d21f8f0 Mon Sep 17 00:00:00 2001 From: Jordan Carlin Date: Thu, 8 May 2025 00:58:19 -0700 Subject: [PATCH 1/9] Add riscv-arch-test fork for cvw-arch-verif merge dev --- .gitmodules | 3 +++ addins/cvw-riscv-arch-test | 1 + 2 files changed, 4 insertions(+) create mode 160000 addins/cvw-riscv-arch-test diff --git a/.gitmodules b/.gitmodules index 672ec445f..5a35f04a3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -33,3 +33,6 @@ path = addins/berkeley-testfloat-3 url = https://github.com/ucb-bar/berkeley-testfloat-3 ignore = untracked +[submodule "addins/cvw-riscv-arch-test"] + path = addins/cvw-riscv-arch-test + url = https://github.com/jordancarlin/riscv-arch-test diff --git a/addins/cvw-riscv-arch-test b/addins/cvw-riscv-arch-test new file mode 160000 index 000000000..a2b7ffd90 --- /dev/null +++ b/addins/cvw-riscv-arch-test @@ -0,0 +1 @@ +Subproject commit a2b7ffd90c183e2c64f8da9ae8438c396250d9e9 From d1958b05e0e470092cb78f59d974c75d67606de2 Mon Sep 17 00:00:00 2001 From: Jordan Carlin Date: Thu, 8 May 2025 01:01:08 -0700 Subject: [PATCH 2/9] Remove old quad64 makefile target --- tests/riscof/Makefile | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/tests/riscof/Makefile b/tests/riscof/Makefile index 131d724c4..c854ee7d5 100644 --- a/tests/riscof/Makefile +++ b/tests/riscof/Makefile @@ -13,7 +13,7 @@ wally_workdir := $(work)/wally-riscv-arch-test current_dir := $(shell pwd) # General make rules -.PHONY: all riscv-arch-test wally-riscv-arch-test quad64 clean +.PHONY: all riscv-arch-test wally-riscv-arch-test clean all: riscv-arch-test wally-riscv-arch-test riscv-arch-test: arch32e arch32 arch64 wally-riscv-arch-test: wally32 wally64 @@ -34,10 +34,6 @@ wally%: config$$*.ini | $(work_dir) $(wally_workdir) $(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" -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 config??*.ini rm -rf $(work_dir) From 8a9d15cd603eb0fb9f21e4ac42b9e0ff12f738d1 Mon Sep 17 00:00:00 2001 From: Jordan Carlin Date: Thu, 8 May 2025 01:25:09 -0700 Subject: [PATCH 3/9] Update riscof Makefile for better scalability with multiple suites --- tests/riscof/Makefile | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/tests/riscof/Makefile b/tests/riscof/Makefile index c854ee7d5..cf6834b43 100644 --- a/tests/riscof/Makefile +++ b/tests/riscof/Makefile @@ -15,31 +15,37 @@ current_dir := $(shell pwd) # General make rules .PHONY: all riscv-arch-test wally-riscv-arch-test clean all: riscv-arch-test wally-riscv-arch-test + +# Standard riscv-arch-test tests riscv-arch-test: arch32e arch32 arch64 +arch%: test_dir=$(arch_dir) +arch%: work_result=$(arch_workdir) +arch32e: riscof32e +arch32: riscof32 +arch64: riscof64 + +# wally-riscv-arch-test tests wally-riscv-arch-test: wally32 wally64 +wally%: test_dir=$(wally_dir) +wally%: work_result=$(wally_workdir) +wally32: riscof32 +wally64: riscof64 # 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 > $@ -# 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 +# Compile tests with riscof +riscof%: config$$*.ini | $(work_dir) + riscof run --work-dir=$(work_dir)/$@ --config=$< --suite=$(test_dir)/riscv-test-suite/ --env=$(test_dir)/riscv-test-suite/env --no-browser $(MAKE) -f makefile-memfile WORKDIR=$(work_dir)/$@ BITWIDTH=$(patsubst %32e,%32,$*) - rsync -a $(work_dir)/$@/rv*/* $(arch_workdir)/rv$(patsubst %64,%64i,$(patsubst %32,%32i,$*))_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" + mkdir -p $(work_result) + rsync -a $(work_dir)/$@/rv*/* $(work_result)/rv$(patsubst %64,%64i,$(patsubst %32,%32i,$*))_m || echo "error suppressed" clean: rm -f config??*.ini rm -rf $(work_dir) - rm -rf $(wally_workdir) - rm -rf $(arch_workdir) - rm -rf $(submodule_wor_dir) + rm -rf $(work) -$(work_dir) $(arch_workdir) $(wally_workdir): +$(work_dir): mkdir -p $@ From 7c4455e7cce7db04034fa6279b240e38439445ae Mon Sep 17 00:00:00 2001 From: Jordan Carlin Date: Thu, 8 May 2025 02:39:38 -0700 Subject: [PATCH 4/9] Continued makefile work --- tests/riscof/Makefile | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/tests/riscof/Makefile b/tests/riscof/Makefile index cf6834b43..4494a5ca7 100644 --- a/tests/riscof/Makefile +++ b/tests/riscof/Makefile @@ -5,10 +5,12 @@ nproc := $(shell nproc --ignore=1) # Directories arch_dir := $(WALLY)/addins/riscv-arch-test +cvw_arch_dir := $(WALLY)/addins/cvw-riscv-arch-test wally_dir := $(WALLY)/tests/wally-riscv-arch-test work_dir := ./riscof_work work := ./work arch_workdir := $(work)/riscv-arch-test +cvw_arch_workdir := $(work)/cvw-riscv-arch-test wally_workdir := $(work)/wally-riscv-arch-test current_dir := $(shell pwd) @@ -16,27 +18,36 @@ current_dir := $(shell pwd) .PHONY: all riscv-arch-test wally-riscv-arch-test clean all: riscv-arch-test wally-riscv-arch-test +$(wally_workdir)/wally%.stamp: $(shell find $(wally_dir) -type f) config.ini + $(MAKE) wally$* + touch $@ + +$(arch_workdir)/arch%.stamp: $(shell find $(arch_dir) -type f) config.ini + $(MAKE) arch$* + touch $@ + # Standard riscv-arch-test tests +# .PHONY: arch32e arch32 arch64 riscv-arch-test: arch32e arch32 arch64 arch%: test_dir=$(arch_dir) arch%: work_result=$(arch_workdir) -arch32e: riscof32e -arch32: riscof32 -arch64: riscof64 + +# cvw-arch-verif based riscv-arch-test tests +# cvw-riscv-arch-test: cvw_arch32 cvw_arch64 +# cvw_arch%: test_dir=$(cvw_arch_dir) +# cvw_arch%: work_result=$(cvw_arch_workdir) # wally-riscv-arch-test tests wally-riscv-arch-test: wally32 wally64 wally%: test_dir=$(wally_dir) wally%: work_result=$(wally_workdir) -wally32: riscof32 -wally64: riscof64 # 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 > $@ # Compile tests with riscof -riscof%: config$$*.ini | $(work_dir) +arch% wally%: config$$*.ini | $(work_dir) riscof run --work-dir=$(work_dir)/$@ --config=$< --suite=$(test_dir)/riscv-test-suite/ --env=$(test_dir)/riscv-test-suite/env --no-browser $(MAKE) -f makefile-memfile WORKDIR=$(work_dir)/$@ BITWIDTH=$(patsubst %32e,%32,$*) mkdir -p $(work_result) From 3d368d50d7ecbcdfa4736909b332f6e6e52b9310 Mon Sep 17 00:00:00 2001 From: Jordan Carlin Date: Thu, 8 May 2025 02:56:28 -0700 Subject: [PATCH 5/9] Revert makefile changes --- tests/riscof/Makefile | 45 ++++++++++++++----------------------------- 1 file changed, 14 insertions(+), 31 deletions(-) diff --git a/tests/riscof/Makefile b/tests/riscof/Makefile index 4494a5ca7..c854ee7d5 100644 --- a/tests/riscof/Makefile +++ b/tests/riscof/Makefile @@ -5,58 +5,41 @@ nproc := $(shell nproc --ignore=1) # Directories arch_dir := $(WALLY)/addins/riscv-arch-test -cvw_arch_dir := $(WALLY)/addins/cvw-riscv-arch-test wally_dir := $(WALLY)/tests/wally-riscv-arch-test work_dir := ./riscof_work work := ./work arch_workdir := $(work)/riscv-arch-test -cvw_arch_workdir := $(work)/cvw-riscv-arch-test wally_workdir := $(work)/wally-riscv-arch-test current_dir := $(shell pwd) # General make rules .PHONY: all riscv-arch-test wally-riscv-arch-test clean all: riscv-arch-test wally-riscv-arch-test - -$(wally_workdir)/wally%.stamp: $(shell find $(wally_dir) -type f) config.ini - $(MAKE) wally$* - touch $@ - -$(arch_workdir)/arch%.stamp: $(shell find $(arch_dir) -type f) config.ini - $(MAKE) arch$* - touch $@ - -# Standard riscv-arch-test tests -# .PHONY: arch32e arch32 arch64 riscv-arch-test: arch32e arch32 arch64 -arch%: test_dir=$(arch_dir) -arch%: work_result=$(arch_workdir) - -# cvw-arch-verif based riscv-arch-test tests -# cvw-riscv-arch-test: cvw_arch32 cvw_arch64 -# cvw_arch%: test_dir=$(cvw_arch_dir) -# cvw_arch%: work_result=$(cvw_arch_workdir) - -# wally-riscv-arch-test tests wally-riscv-arch-test: wally32 wally64 -wally%: test_dir=$(wally_dir) -wally%: work_result=$(wally_workdir) # 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 > $@ -# Compile tests with riscof -arch% wally%: config$$*.ini | $(work_dir) - riscof run --work-dir=$(work_dir)/$@ --config=$< --suite=$(test_dir)/riscv-test-suite/ --env=$(test_dir)/riscv-test-suite/env --no-browser +# 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)/$@ BITWIDTH=$(patsubst %32e,%32,$*) - mkdir -p $(work_result) - rsync -a $(work_dir)/$@/rv*/* $(work_result)/rv$(patsubst %64,%64i,$(patsubst %32,%32i,$*))_m || echo "error suppressed" + rsync -a $(work_dir)/$@/rv*/* $(arch_workdir)/rv$(patsubst %64,%64i,$(patsubst %32,%32i,$*))_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" clean: rm -f config??*.ini rm -rf $(work_dir) - rm -rf $(work) + rm -rf $(wally_workdir) + rm -rf $(arch_workdir) + rm -rf $(submodule_wor_dir) -$(work_dir): +$(work_dir) $(arch_workdir) $(wally_workdir): mkdir -p $@ From 1002f3badb7242f933e61b2ac3b2a75066b6edbb Mon Sep 17 00:00:00 2001 From: Jordan Carlin Date: Thu, 8 May 2025 03:12:01 -0700 Subject: [PATCH 6/9] Add support for cvw-riscv-arch-test --- tests/riscof/Makefile | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/tests/riscof/Makefile b/tests/riscof/Makefile index c854ee7d5..c50de30eb 100644 --- a/tests/riscof/Makefile +++ b/tests/riscof/Makefile @@ -5,10 +5,12 @@ nproc := $(shell nproc --ignore=1) # Directories arch_dir := $(WALLY)/addins/riscv-arch-test +cvw_arch_dir := $(WALLY)/addins/cvw-riscv-arch-test wally_dir := $(WALLY)/tests/wally-riscv-arch-test work_dir := ./riscof_work work := ./work arch_workdir := $(work)/riscv-arch-test +cvw_arch_workdir := $(work)/cvw-riscv-arch-test wally_workdir := $(work)/wally-riscv-arch-test current_dir := $(shell pwd) @@ -16,6 +18,7 @@ current_dir := $(shell pwd) .PHONY: all riscv-arch-test wally-riscv-arch-test clean all: riscv-arch-test wally-riscv-arch-test riscv-arch-test: arch32e arch32 arch64 +cvw-riscv-arch-test: cvw-arch32e cvw-arch32 cvw-arch64 wally-riscv-arch-test: wally32 wally64 # Generate config.ini files @@ -26,7 +29,14 @@ config%.ini: config.ini 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)/$@ BITWIDTH=$(patsubst %32e,%32,$*) - rsync -a $(work_dir)/$@/rv*/* $(arch_workdir)/rv$(patsubst %64,%64i,$(patsubst %32,%32i,$*))_m || echo "error suppressed" + rsync -a $(work_dir)/$@/rv*/* $(arch_workdir)/rv$(patsubst %64,%64i,$(patsubst %32,%32i,$*)) || echo "error suppressed" + +# Generate cvw-riscv-arch-test targets +# Generate riscv-arch-test targets +cvw-arch%: config$$*.ini | $(work_dir) $(cvw_arch_workdir) + riscof run --work-dir=$(work_dir)/$@ --config=$< --suite=$(cvw_arch_dir)/riscv-test-suite/ --env=$(cvw_arch_dir)/riscv-test-suite/env --no-browser + $(MAKE) -f makefile-memfile WORKDIR=$(work_dir)/$@ BITWIDTH=$(patsubst %32e,%32,$*) + rsync -a $(work_dir)/$@/rv*/* $(cvw_arch_workdir)/rv$(patsubst %64,%64i,$(patsubst %32,%32i,$*))_m || echo "error suppressed" # Generate wally-riscv-arch-test targets wally%: config$$*.ini | $(work_dir) $(wally_workdir) @@ -39,7 +49,7 @@ clean: rm -rf $(work_dir) rm -rf $(wally_workdir) rm -rf $(arch_workdir) - rm -rf $(submodule_wor_dir) + rm -rf $(cvw_arch_workdir) -$(work_dir) $(arch_workdir) $(wally_workdir): +$(work_dir) $(arch_workdir) $(wally_workdir) $(cvw_arch_workdir): mkdir -p $@ From 53db7995b3cddb63d992491db366fe9194b45eec Mon Sep 17 00:00:00 2001 From: Jordan Carlin Date: Thu, 8 May 2025 03:12:18 -0700 Subject: [PATCH 7/9] Update regression-wally --fcov-act --- bin/regression-wally | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/regression-wally b/bin/regression-wally index f037d804b..8bb0cd5fb 100755 --- a/bin/regression-wally +++ b/bin/regression-wally @@ -484,10 +484,10 @@ def selectTests(args, sims, coverStr): addTestsByDir(f"{WALLY}/tests/riscof/work/riscv-arch-test/rv32i_m/vm_sv32", "rv32gc", coveragesim, coverStr, configs, lockstepMode=1) # addTestsByDir(f"{WALLY}/tests/riscof/work/riscv-arch-test/rv32i_m/pmp32", "rv32gc", coveragesim, coverStr, configs, lockstepMode=1) TODO: Add when working in lockstep # addTestsByDir(f"{WALLY}/tests/riscof/work/riscv-arch-test/rv64i_m/pmp", "rv64gc", coveragesim, coverStr, configs, lockstepMode=1) TODO: Add when working in lockstep - # run riscv-arch-test tests in functional coverage mode + # run cvw-riscv-arch-test tests in functional coverage mode if args.fcov_act: - addTestsByDir(f"{WALLY}/tests/riscof/work/riscv-arch-test/rv32i_m", "rv32gc", coveragesim, coverStr, configs, lockstepMode=1) - addTestsByDir(f"{WALLY}/tests/riscof/work/riscv-arch-test/rv64i_m", "rv64gc", coveragesim, coverStr, configs, lockstepMode=1) + addTestsByDir(f"{WALLY}/tests/riscof/work/cvw-riscv-arch-test/rv32i", "rv32gc", coveragesim, coverStr, configs, lockstepMode=1) + addTestsByDir(f"{WALLY}/tests/riscof/work/cvw-riscv-arch-test/rv64i", "rv64gc", coveragesim, coverStr, configs, lockstepMode=1) # run branch predictor tests if args.branch: addTests(bpredtests, defaultsim, coverStr, configs) From c12d5a34846eabbfb03cf0b7e339c88b385cb620 Mon Sep 17 00:00:00 2001 From: Jordan Carlin Date: Thu, 8 May 2025 03:16:49 -0700 Subject: [PATCH 8/9] Bump cvw-riscv-test-suite --- addins/cvw-riscv-arch-test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addins/cvw-riscv-arch-test b/addins/cvw-riscv-arch-test index a2b7ffd90..44832a9d3 160000 --- a/addins/cvw-riscv-arch-test +++ b/addins/cvw-riscv-arch-test @@ -1 +1 @@ -Subproject commit a2b7ffd90c183e2c64f8da9ae8438c396250d9e9 +Subproject commit 44832a9d3bea991b099c6beb4c962e5b7c1ad3a3 From 385e8f6c241ebd336ea6204eb534d8ab1db6846f Mon Sep 17 00:00:00 2001 From: Jordan Carlin Date: Thu, 8 May 2025 03:43:48 -0700 Subject: [PATCH 9/9] Fix type --- tests/riscof/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/riscof/Makefile b/tests/riscof/Makefile index c50de30eb..59ec8ca84 100644 --- a/tests/riscof/Makefile +++ b/tests/riscof/Makefile @@ -29,14 +29,14 @@ config%.ini: config.ini 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)/$@ BITWIDTH=$(patsubst %32e,%32,$*) - rsync -a $(work_dir)/$@/rv*/* $(arch_workdir)/rv$(patsubst %64,%64i,$(patsubst %32,%32i,$*)) || echo "error suppressed" + rsync -a $(work_dir)/$@/rv*/* $(arch_workdir)/rv$(patsubst %64,%64i,$(patsubst %32,%32i,$*))_m || echo "error suppressed" # Generate cvw-riscv-arch-test targets # Generate riscv-arch-test targets cvw-arch%: config$$*.ini | $(work_dir) $(cvw_arch_workdir) riscof run --work-dir=$(work_dir)/$@ --config=$< --suite=$(cvw_arch_dir)/riscv-test-suite/ --env=$(cvw_arch_dir)/riscv-test-suite/env --no-browser $(MAKE) -f makefile-memfile WORKDIR=$(work_dir)/$@ BITWIDTH=$(patsubst %32e,%32,$*) - rsync -a $(work_dir)/$@/rv*/* $(cvw_arch_workdir)/rv$(patsubst %64,%64i,$(patsubst %32,%32i,$*))_m || echo "error suppressed" + rsync -a $(work_dir)/$@/rv*/* $(cvw_arch_workdir)/rv$(patsubst %64,%64i,$(patsubst %32,%32i,$*)) || echo "error suppressed" # Generate wally-riscv-arch-test targets wally%: config$$*.ini | $(work_dir) $(wally_workdir)