@@ -3347,7 +3347,7 @@ coremark_help:
33473347# make bench - Run benchmarks (NO_ADDR=1)
33483348# make all_tests - Run all tests
33493349# make quick - Quick smoke (~5 min): ISA + CSR
3350- # make full - Full suite (~30 min) : ISA + Arch + Imperas + CSR
3350+ # make full - Full suite: ISA + Arch + Imperas + CSR + RISC-V DV + Torture
33513351# make nightly - Nightly build (full + CoreMark + benchmarks)
33523352# ============================================================
33533353
@@ -3589,10 +3589,19 @@ quick:
35893589 echo -e " $( GREEN) ╚══════════════════════════════════════════════════════════════╝$( RESET) " ; \
35903590 if [ $$ ISA_FAIL -gt 0 ] || [ $$ CSR_FAIL -gt 0 ]; then exit 1; fi
35913591
3592+ # Optional random stress for `make full` (override or skip on CLI):
3593+ # FULL_RISCV_DV_ITER=5 FULL_TORTURE_NUM_TESTS=8 make full
3594+ # SKIP_FULL_RISCV_DV=1 SKIP_FULL_TORTURE=1 make full
3595+ FULL_RISCV_DV_ITER ?= 3
3596+ FULL_TORTURE_NUM_TESTS ?= 5
3597+ FULL_TORTURE_MAX_INSNS ?= 500
3598+ SKIP_FULL_RISCV_DV ?= 0
3599+ SKIP_FULL_TORTURE ?= 0
3600+
35923601# -----------------------------------------
3593- # Full Test Suite (~30 min)
3602+ # Full Test Suite (~30–90 min; scales with DV/torture counts )
35943603# -----------------------------------------
3595- # ISA + Arch + Imperas + CSR
3604+ # ISA + Arch + Imperas + CSR + RISC-V DV + Torture
35963605.PHONY : full
35973606
35983607full :
@@ -3611,38 +3620,75 @@ full:
36113620 ARCH_PASS=0; ARCH_FAIL=0; \
36123621 IMP_PASS=0; IMP_FAIL=0; \
36133622 CSR_PASS=0; CSR_FAIL=0; \
3614- echo -e " $( YELLOW) [1/4] Running ISA tests...$( RESET) " ; \
3623+ DV_PASS=0; DV_FAIL=0; \
3624+ TORT_PASS=0; TORT_FAIL=0; \
3625+ echo -e " $( YELLOW) [1/6] Running ISA tests...$( RESET) " ; \
36153626 if $( MAKE) --no-print-directory isa CLEAN_LOGS=1 2>&1 | tee $( REGRESSION_DIR) /reg_isa.log; then \
36163627 ISA_PASS=$$(grep -c "PASSED" $(REGRESSION_DIR ) /reg_isa.log 2>/dev/null || true ) ; \
36173628 ISA_FAIL=$$(grep -c "FAILED" $(REGRESSION_DIR ) /reg_isa.log 2>/dev/null || true ) ; \
36183629 fi ; \
36193630 ISA_PASS=$$ {ISA_PASS:-0}; ISA_FAIL=$$ {ISA_FAIL:-0}; \
36203631 echo " ISA: $$ ISA_PASS passed, $$ ISA_FAIL failed" >> $$ REPORT; \
3621- echo -e " $( YELLOW) [2/4 ] Running Architecture tests...$( RESET) " ; \
3632+ echo -e " $( YELLOW) [2/6 ] Running Architecture tests...$( RESET) " ; \
36223633 if $( MAKE) --no-print-directory arch 2>&1 | tee $( REGRESSION_DIR) /reg_arch.log; then \
36233634 ARCH_PASS=$$(grep -c "PASSED" $(REGRESSION_DIR ) /reg_arch.log 2>/dev/null || true ) ; \
36243635 ARCH_FAIL=$$(grep -c "FAILED" $(REGRESSION_DIR ) /reg_arch.log 2>/dev/null || true ) ; \
36253636 fi ; \
36263637 ARCH_PASS=$$ {ARCH_PASS:-0}; ARCH_FAIL=$$ {ARCH_FAIL:-0}; \
36273638 echo " ARCH: $$ ARCH_PASS passed, $$ ARCH_FAIL failed" >> $$ REPORT; \
3628- echo -e " $( YELLOW) [3/4 ] Running Imperas tests...$( RESET) " ; \
3639+ echo -e " $( YELLOW) [3/6 ] Running Imperas tests...$( RESET) " ; \
36293640 if $( MAKE) --no-print-directory imperas 2>&1 | tee $( REGRESSION_DIR) /reg_imperas.log; then \
36303641 IMP_PASS=$$(grep -c "PASSED" $(REGRESSION_DIR ) /reg_imperas.log 2>/dev/null || true ) ; \
36313642 IMP_FAIL=$$(grep -c "FAILED" $(REGRESSION_DIR ) /reg_imperas.log 2>/dev/null || true ) ; \
36323643 fi ; \
36333644 IMP_PASS=$$ {IMP_PASS:-0}; IMP_FAIL=$$ {IMP_FAIL:-0}; \
36343645 echo " IMPERAS: $$ IMP_PASS passed, $$ IMP_FAIL failed" >> $$ REPORT; \
3635- echo -e " $( YELLOW) [4/4 ] Running CSR tests...$( RESET) " ; \
3646+ echo -e " $( YELLOW) [4/6 ] Running CSR tests...$( RESET) " ; \
36363647 if $( MAKE) --no-print-directory csr 2>&1 | tee $( REGRESSION_DIR) /reg_csr.log; then \
36373648 CSR_PASS=$$(grep -c "PASSED" $(REGRESSION_DIR ) /reg_csr.log 2>/dev/null || true ) ; \
36383649 CSR_FAIL=$$(grep -c "FAILED" $(REGRESSION_DIR ) /reg_csr.log 2>/dev/null || true ) ; \
36393650 fi ; \
36403651 CSR_PASS=$$ {CSR_PASS:-0}; CSR_FAIL=$$ {CSR_FAIL:-0}; \
36413652 echo " CSR: $$ CSR_PASS passed, $$ CSR_FAIL failed" >> $$ REPORT; \
3653+ if [ " $( SKIP_FULL_RISCV_DV) " = " 1" ]; then \
3654+ echo -e " $( YELLOW) [5/6] Skipping RISC-V DV (SKIP_FULL_RISCV_DV=1)$( RESET) " ; \
3655+ echo " RISCV-DV: skipped" >> $$ REPORT; \
3656+ else \
3657+ echo -e " $( YELLOW) [5/6] Running RISC-V DV (iter=$( FULL_RISCV_DV_ITER) )...$( RESET) " ; \
3658+ if $( MAKE) --no-print-directory riscv_dv_run \
3659+ RISCV_DV_ITER=$(FULL_RISCV_DV_ITER ) \
3660+ SIM=$(SIM ) 2>&1 | tee $(REGRESSION_DIR ) /reg_riscv_dv.log; then \
3661+ DV_PASS=$$(grep '\[RISCV-DV\] Results:' $(REGRESSION_DIR ) /reg_riscv_dv.log 2>/dev/null | tail -1 | sed -e 's/.*Results: //' -e 's/ passed.*//' || echo 0 ) ; \
3662+ DV_FAIL=$$(grep '\[RISCV-DV\] Results:' $(REGRESSION_DIR ) /reg_riscv_dv.log 2>/dev/null | tail -1 | sed -e 's/.*, //' -e 's/ failed.*//' || echo 0 ) ; \
3663+ else \
3664+ DV_PASS=$$(grep '\[RISCV-DV\] Results:' $(REGRESSION_DIR ) /reg_riscv_dv.log 2>/dev/null | tail -1 | sed -e 's/.*Results: //' -e 's/ passed.*//' || echo 0 ) ; \
3665+ DV_FAIL=$$(grep '\[RISCV-DV\] Results:' $(REGRESSION_DIR ) /reg_riscv_dv.log 2>/dev/null | tail -1 | sed -e 's/.*, //' -e 's/ failed.*//' || echo 1 ) ; \
3666+ fi ; \
3667+ DV_PASS=$$ {DV_PASS:-0}; DV_FAIL=$$ {DV_FAIL:-0}; \
3668+ echo " RISCV-DV: $$ DV_PASS passed, $$ DV_FAIL failed" >> $$ REPORT; \
3669+ fi ; \
3670+ if [ " $( SKIP_FULL_TORTURE) " = " 1" ]; then \
3671+ echo -e " $( YELLOW) [6/6] Skipping Torture (SKIP_FULL_TORTURE=1)$( RESET) " ; \
3672+ echo " TORTURE: skipped" >> $$ REPORT; \
3673+ else \
3674+ echo -e " $( YELLOW) [6/6] Running Torture (N=$( FULL_TORTURE_NUM_TESTS) , max_insns=$( FULL_TORTURE_MAX_INSNS) )...$( RESET) " ; \
3675+ if $( MAKE) --no-print-directory torture_batch \
3676+ TORTURE_NUM_TESTS=$(FULL_TORTURE_NUM_TESTS ) \
3677+ TORTURE_MAX_INSNS=$(FULL_TORTURE_MAX_INSNS ) \
3678+ SIM=$(SIM ) 2>&1 | tee $(REGRESSION_DIR ) /reg_torture.log; then \
3679+ TORT_PASS=$$(grep '\[TORTURE\] Results:' $(REGRESSION_DIR ) /reg_torture.log 2>/dev/null | tail -1 | sed -e 's/.*Results: //' -e 's/ passed.*//' || echo 0 ) ; \
3680+ TORT_FAIL=$$(grep '\[TORTURE\] Results:' $(REGRESSION_DIR ) /reg_torture.log 2>/dev/null | tail -1 | sed -e 's/.*, //' -e 's/ failed.*//' || echo 0 ) ; \
3681+ else \
3682+ TORT_PASS=$$(grep '\[TORTURE\] Results:' $(REGRESSION_DIR ) /reg_torture.log 2>/dev/null | tail -1 | sed -e 's/.*Results: //' -e 's/ passed.*//' || echo 0 ) ; \
3683+ TORT_FAIL=$$(grep '\[TORTURE\] Results:' $(REGRESSION_DIR ) /reg_torture.log 2>/dev/null | tail -1 | sed -e 's/.*, //' -e 's/ failed.*//' || echo 1 ) ; \
3684+ fi ; \
3685+ TORT_PASS=$$ {TORT_PASS:-0}; TORT_FAIL=$$ {TORT_FAIL:-0}; \
3686+ echo " TORTURE: $$ TORT_PASS passed, $$ TORT_FAIL failed" >> $$ REPORT; \
3687+ fi ; \
36423688 END_TIME=$$(date +%s ) ; \
36433689 DURATION=$$((END_TIME - START_TIME ) ); \
3644- TOTAL_PASS=$$((ISA_PASS + ARCH_PASS + IMP_PASS + CSR_PASS ) ); \
3645- TOTAL_FAIL=$$((ISA_FAIL + ARCH_FAIL + IMP_FAIL + CSR_FAIL ) ); \
3690+ TOTAL_PASS=$$((ISA_PASS + ARCH_PASS + IMP_PASS + CSR_PASS + DV_PASS + TORT_PASS ) ); \
3691+ TOTAL_FAIL=$$((ISA_FAIL + ARCH_FAIL + IMP_FAIL + CSR_FAIL + DV_FAIL + TORT_FAIL ) ); \
36463692 echo " ============================================" >> $$ REPORT; \
36473693 echo " TOTAL: $$ TOTAL_PASS passed, $$ TOTAL_FAIL failed" >> $$ REPORT; \
36483694 echo " Duration: $$ {DURATION}s" >> $$ REPORT; \
@@ -3655,6 +3701,12 @@ full:
36553701 printf " $( GREEN) ║$( RESET) %-12s %3d passed, %3d failed $( GREEN) ║$( RESET) \n" " ARCH:" $$ ARCH_PASS $$ ARCH_FAIL; \
36563702 printf " $( GREEN) ║$( RESET) %-12s %3d passed, %3d failed $( GREEN) ║$( RESET) \n" " IMPERAS:" $$ IMP_PASS $$ IMP_FAIL; \
36573703 printf " $( GREEN) ║$( RESET) %-12s %3d passed, %3d failed $( GREEN) ║$( RESET) \n" " CSR:" $$ CSR_PASS $$ CSR_FAIL; \
3704+ if [ " $( SKIP_FULL_RISCV_DV) " != " 1" ]; then \
3705+ printf " $( GREEN) ║$( RESET) %-12s %3d passed, %3d failed $( GREEN) ║$( RESET) \n" " RISCV-DV:" $$ DV_PASS $$ DV_FAIL; \
3706+ fi ; \
3707+ if [ " $( SKIP_FULL_TORTURE) " != " 1" ]; then \
3708+ printf " $( GREEN) ║$( RESET) %-12s %3d passed, %3d failed $( GREEN) ║$( RESET) \n" " TORTURE:" $$ TORT_PASS $$ TORT_FAIL; \
3709+ fi ; \
36583710 echo -e " $( GREEN) ╠══════════════════════════════════════════════════════════════╣$( RESET) " ; \
36593711 printf " $( GREEN) ║$( RESET) %-12s %3d passed, %3d failed $( GREEN) ║$( RESET) \n" " TOTAL:" $$ TOTAL_PASS $$ TOTAL_FAIL; \
36603712 echo -e " $( GREEN) ║$( RESET) Duration: $$ {DURATION}s $( GREEN) ║$( RESET) " ; \
@@ -3817,7 +3869,7 @@ help_lists:
38173869 @echo -e " $( CYAN) REGRESSION SUITES$( RESET) "
38183870 @echo -e " $( CYAN) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━$( RESET) "
38193871 @echo -e " $( GREEN) make quick$( RESET) – Quick smoke test (~5 min) [ISA + CSR]"
3820- @echo -e " $( GREEN) make full$( RESET) – Full regression (~30 min) [ISA + Arch + Imperas + CSR]"
3872+ @echo -e " $( GREEN) make full$( RESET) – Full regression [ISA + Arch + Imperas + CSR + RISC-V DV + Torture ]"
38213873 @echo -e " $( GREEN) make nightly$( RESET) – Nightly build (full + benchmarks + CoreMark)"
38223874 @echo -e " "
38233875 @echo -e " $( CYAN) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━$( RESET) "
@@ -3870,6 +3922,8 @@ help_lists:
38703922 @echo -e " $( YELLOW) Examples:$( RESET) "
38713923 @echo -e " make quick # Quick smoke test"
38723924 @echo -e " make full CLEAN_LOGS=1 # Full regression, clean logs first"
3925+ @echo -e " make full SKIP_FULL_RISCV_DV=1 # Skip RISC-V DV in full"
3926+ @echo -e " FULL_TORTURE_NUM_TESTS=8 make full # More torture tests"
38733927 @echo -e " make coverage # Full coverage analysis"
38743928 @echo -e " make t T=rv32ui-p-add SIM_FAST=1 # Single fast test"
38753929 @echo -e " "
@@ -4949,7 +5003,8 @@ torture_run: torture_build torture_verilate
49495003 fi ; \
49505004 fi ; \
49515005 done ; \
4952- echo -e " $( GREEN) [TORTURE] Results: $$ PASS passed, $$ FAIL failed$( RESET) "
5006+ echo -e " $( GREEN) [TORTURE] Results: $$ PASS passed, $$ FAIL failed$( RESET) " ; \
5007+ test $$ FAIL -eq 0
49535008
49545009# ============================================================
49555010# Batch Testing
0 commit comments