mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-02 17:55:19 +00:00
Directed functional coverage tests
This commit is contained in:
parent
712a167a3a
commit
99282165ae
12
Makefile
12
Makefile
@ -59,6 +59,8 @@ funcovreg:
|
|||||||
iter-elf.bash --search ${WALLY}/tests/riscof/work/riscv-arch-test/rv64i_m/I --cover
|
iter-elf.bash --search ${WALLY}/tests/riscof/work/riscv-arch-test/rv64i_m/I --cover
|
||||||
vcover report -details -html ${SIM}/questa/riscv.ucdb
|
vcover report -details -html ${SIM}/questa/riscv.ucdb
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# test_name=riscv_arithmetic_basic_test
|
# test_name=riscv_arithmetic_basic_test
|
||||||
rvdv:
|
rvdv:
|
||||||
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 gen,gcc_compile >> ${SIM}/questa/regression_logs/${test_name}.log 2>&1
|
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 gen,gcc_compile >> ${SIM}/questa/regression_logs/${test_name}.log 2>&1
|
||||||
@ -100,11 +102,17 @@ rvdv_regression:
|
|||||||
rvdv_combine_coverage:
|
rvdv_combine_coverage:
|
||||||
mkdir -p ${SIM}/questa/regcov
|
mkdir -p ${SIM}/questa/regcov
|
||||||
cd ${SIM}/questa/regcov && rm -rf *
|
cd ${SIM}/questa/regcov && rm -rf *
|
||||||
vcover merge ${SIM}/questa/regcov/regcov.ucdb ${SIM}/questa/regression_ucdbs/* -suppress 6854 -64
|
run-elf-cov.bash --seed ${SIM}/questa/seed0.txt --verbose --coverdb ${SIM}/questa/regcov/add.ucdb --elf ${WALLY}/tests/functcov/rv64/I/WALLY-COV-add.elf >> ${SIM}/questa/regression_logs/add.log 2>&1
|
||||||
|
run-elf-cov.bash --seed ${SIM}/questa/seed0.txt --verbose --coverdb ${SIM}/questa/regcov/and.ucdb --elf ${WALLY}/tests/functcov/rv64/I/WALLY-COV-and.elf >> ${SIM}/questa/regression_logs/add.log 2>&1
|
||||||
|
run-elf-cov.bash --seed ${SIM}/questa/seed0.txt --verbose --coverdb ${SIM}/questa/regcov/ori.ucdb --elf ${WALLY}/tests/functcov/rv64/I/WALLY-COV-ori.elf >> ${SIM}/questa/regression_logs/add.log 2>&1
|
||||||
|
|
||||||
|
vcover merge ${SIM}/questa/regcov/regcov.ucdb ${SIM}/questa/regcov/*.ucdb -suppress 6854 -64
|
||||||
|
# vcover merge ${SIM}/questa/regcov/regcov.ucdb ${SIM}/questa/regression_ucdbs/* -suppress 6854 -64
|
||||||
vcover report -details -html ${SIM}/questa/regcov/regcov.ucdb
|
vcover report -details -html ${SIM}/questa/regcov/regcov.ucdb
|
||||||
vcover report ${SIM}/questa/regcov/regcov.ucdb -details -cvg > ${SIM}/questa/regcov/regcov.ucdb.log
|
vcover report ${SIM}/questa/regcov/regcov.ucdb -details -cvg > ${SIM}/questa/regcov/regcov.ucdb.log
|
||||||
vcover report ${SIM}/questa/regcov/regcov.ucdb -testdetails -cvg > ${SIM}/questa/regcov/regcov.ucdb.testdetails.log
|
vcover report ${SIM}/questa/regcov/regcov.ucdb -testdetails -cvg > ${SIM}/questa/regcov/regcov.ucdb.testdetails.log
|
||||||
vcover report ${SIM}/questa/regcov/regcov.ucdb -details -cvg -below 100 | egrep "Coverpoint|Covergroup|Cross" | grep -v Metric > ${SIM}/questa/regcov/regcov.ucdb.summary.log
|
# vcover report ${SIM}/questa/regcov/regcov.ucdb -details -cvg -below 100 | egrep "Coverpoint|Covergroup|Cross" | grep -v Metric > ${SIM}/questa/regcov/regcov.ucdb.summary.log
|
||||||
|
vcover report ${SIM}/questa/regcov/regcov.ucdb -details -cvg | egrep "Coverpoint|Covergroup|Cross|TYPE" > ${SIM}/questa/regcov/regcov.ucdb.summary.log
|
||||||
grep "Total Coverage By Instance" ${SIM}/questa/regcov/regcov.ucdb.log
|
grep "Total Coverage By Instance" ${SIM}/questa/regcov/regcov.ucdb.log
|
||||||
|
|
||||||
remove_rvdv_artifacts:
|
remove_rvdv_artifacts:
|
||||||
|
@ -33,6 +33,10 @@ def signedImm12(imm):
|
|||||||
|
|
||||||
def writeCovVector(desc, rs1, rs2, rd, rs1val, rs2val, immval, rdval, test, storecmd, xlen):
|
def writeCovVector(desc, rs1, rs2, rd, rs1val, rs2val, immval, rdval, test, storecmd, xlen):
|
||||||
lines = "\n# Testcase " + str(desc) + "\n"
|
lines = "\n# Testcase " + str(desc) + "\n"
|
||||||
|
if (rs1val < 0):
|
||||||
|
rs1val = rs1val + 2**xlen
|
||||||
|
if (rs2val < 0):
|
||||||
|
rs2val = rs2val + 2**xlen
|
||||||
lines = lines + "li x" + str(rd) + ", " + formatstr.format(rdval) + " # initialize rd to a random value that should get changed\n"
|
lines = lines + "li x" + str(rd) + ", " + formatstr.format(rdval) + " # initialize rd to a random value that should get changed\n"
|
||||||
if (test in rtype):
|
if (test in rtype):
|
||||||
lines = lines + "li x" + str(rs1) + ", " + formatstr.format(rs1val) + " # initialize rs1 to a random value \n"
|
lines = lines + "li x" + str(rs1) + ", " + formatstr.format(rs1val) + " # initialize rs1 to a random value \n"
|
||||||
@ -52,6 +56,10 @@ def writeCovVector(desc, rs1, rs2, rd, rs1val, rs2val, immval, rdval, test, stor
|
|||||||
def randomize():
|
def randomize():
|
||||||
rs1 = randint(1, 31)
|
rs1 = randint(1, 31)
|
||||||
rs2 = randint(1, 31)
|
rs2 = randint(1, 31)
|
||||||
|
# choose rd that is different than rs1 and rs2
|
||||||
|
rd = rs1
|
||||||
|
while (rd == rs1 or rd == rs2):
|
||||||
|
rd = randint(1, 31)
|
||||||
rd = randint(1, 31)
|
rd = randint(1, 31)
|
||||||
rs1val = randint(0, 2**xlen-1)
|
rs1val = randint(0, 2**xlen-1)
|
||||||
rs2val = randint(0, 2**xlen-1)
|
rs2val = randint(0, 2**xlen-1)
|
||||||
@ -80,25 +88,25 @@ def make_rs2(test, storecmd, xlen):
|
|||||||
def make_rd_rs1(test, storecmd, xlen):
|
def make_rd_rs1(test, storecmd, xlen):
|
||||||
for r in range(32):
|
for r in range(32):
|
||||||
[rs1, rs2, rd, rs1val, rs2val, immval, rdval] = randomize()
|
[rs1, rs2, rd, rs1val, rs2val, immval, rdval] = randomize()
|
||||||
desc = "cp_rd_rs1 (Test rd = rs1 = x" + str(r) + ")"
|
desc = "cmp_rd_rs1 (Test rd = rs1 = x" + str(r) + ")"
|
||||||
writeCovVector(desc, r, rs2, r, rs1val, rs2val, immval, rdval, test, storecmd, xlen)
|
writeCovVector(desc, r, rs2, r, rs1val, rs2val, immval, rdval, test, storecmd, xlen)
|
||||||
|
|
||||||
def make_rd_rs2(test, storecmd, xlen):
|
def make_rd_rs2(test, storecmd, xlen):
|
||||||
for r in range(32):
|
for r in range(32):
|
||||||
[rs1, rs2, rd, rs1val, rs2val, immval, rdval] = randomize()
|
[rs1, rs2, rd, rs1val, rs2val, immval, rdval] = randomize()
|
||||||
desc = "cp_rd_rs2 (Test rd = rs1 = x" + str(r) + ")"
|
desc = "cmp_rd_rs2 (Test rd = rs1 = x" + str(r) + ")"
|
||||||
writeCovVector(desc, rs1, r, r, rs1val, rs2val, immval, rdval, test, storecmd, xlen)
|
writeCovVector(desc, rs1, r, r, rs1val, rs2val, immval, rdval, test, storecmd, xlen)
|
||||||
|
|
||||||
def make_rd_rs1_rs2(test, storecmd, xlen):
|
def make_rd_rs1_rs2(test, storecmd, xlen):
|
||||||
for r in range(32):
|
for r in range(32):
|
||||||
[rs1, rs2, rd, rs1val, rs2val, immval, rdval] = randomize()
|
[rs1, rs2, rd, rs1val, rs2val, immval, rdval] = randomize()
|
||||||
desc = "cp_rd_rs1_rs2 (Test rd = rs1 = rs2 = x" + str(r) + ")"
|
desc = "cmp_rd_rs1_rs2 (Test rd = rs1 = rs2 = x" + str(r) + ")"
|
||||||
writeCovVector(desc, r, r, r, rs1val, rs2val, immval, rdval, test, storecmd, xlen)
|
writeCovVector(desc, r, r, r, rs1val, rs2val, immval, rdval, test, storecmd, xlen)
|
||||||
|
|
||||||
def make_rs1_rs2(test, storecmd, xlen):
|
def make_rs1_rs2(test, storecmd, xlen):
|
||||||
for r in range(32):
|
for r in range(32):
|
||||||
[rs1, rs2, rd, rs1val, rs2val, immval, rdval] = randomize()
|
[rs1, rs2, rd, rs1val, rs2val, immval, rdval] = randomize()
|
||||||
desc = "cp_rd_rs1_rs2 (Test rs1 = rs2 = x" + str(r) + ")"
|
desc = "cmp_rd_rs1_rs2 (Test rs1 = rs2 = x" + str(r) + ")"
|
||||||
writeCovVector(desc, r, r, rd, rs1val, rs2val, immval, rdval, test, storecmd, xlen)
|
writeCovVector(desc, r, r, rd, rs1val, rs2val, immval, rdval, test, storecmd, xlen)
|
||||||
|
|
||||||
def make_rs1_maxvals(test, storecmd, xlen):
|
def make_rs1_maxvals(test, storecmd, xlen):
|
||||||
@ -140,14 +148,14 @@ def make_rs1_rs2_eqval(test, storecmd, xlen):
|
|||||||
def make_rs1_sign(test, storecmd, xlen):
|
def make_rs1_sign(test, storecmd, xlen):
|
||||||
for v in [1, -1]:
|
for v in [1, -1]:
|
||||||
[rs1, rs2, rd, rs1val, rs2val, immval, rdval] = randomize()
|
[rs1, rs2, rd, rs1val, rs2val, immval, rdval] = randomize()
|
||||||
rs1val = abs(rs1val) * v;
|
rs1val = abs(rs1val % 2**(xlen-1)) * v;
|
||||||
desc = "cp_rs1_sign (Test source rs1 value = " + hex(rs1val) + ")"
|
desc = "cp_rs1_sign (Test source rs1 value = " + hex(rs1val) + ")"
|
||||||
writeCovVector(desc, rs1, rs2, rd, rs1val, rs2val, immval, rdval, test, storecmd, xlen)
|
writeCovVector(desc, rs1, rs2, rd, rs1val, rs2val, immval, rdval, test, storecmd, xlen)
|
||||||
|
|
||||||
def make_rs2_sign(test, storecmd, xlen):
|
def make_rs2_sign(test, storecmd, xlen):
|
||||||
for v in [1, -1]:
|
for v in [1, -1]:
|
||||||
[rs1, rs2, rd, rs1val, rs2val, immval, rdval] = randomize()
|
[rs1, rs2, rd, rs1val, rs2val, immval, rdval] = randomize()
|
||||||
rs2val = abs(rs2val) * v;
|
rs2val = abs(rs2val % 2**(xlen-1)) * v;
|
||||||
desc = "cp_rs2_sign (Test source rs2 value = " + hex(rs2val) + ")"
|
desc = "cp_rs2_sign (Test source rs2 value = " + hex(rs2val) + ")"
|
||||||
writeCovVector(desc, rs1, rs2, rd, rs1val, rs2val, immval, rdval, test, storecmd, xlen)
|
writeCovVector(desc, rs1, rs2, rd, rs1val, rs2val, immval, rdval, test, storecmd, xlen)
|
||||||
|
|
||||||
@ -155,8 +163,8 @@ def make_cr_rs1_rs2_sign(test, storecmd, xlen):
|
|||||||
for v1 in [1, -1]:
|
for v1 in [1, -1]:
|
||||||
for v2 in [1, -1]:
|
for v2 in [1, -1]:
|
||||||
[rs1, rs2, rd, rs1val, rs2val, immval, rdval] = randomize()
|
[rs1, rs2, rd, rs1val, rs2val, immval, rdval] = randomize()
|
||||||
rs1val = abs(rs1val) * v1;
|
rs1val = abs(rs1val % 2**(xlen-1)) * v1;
|
||||||
rs2val = abs(rs2val) * v2;
|
rs2val = abs(rs2val % 2**(xlen-1)) * v2;
|
||||||
desc = "cr_rs1_rs2 (Test source rs1 = " + hex(rs1val) + " rs2 = " + hex(rs2val) + ")"
|
desc = "cr_rs1_rs2 (Test source rs1 = " + hex(rs1val) + " rs2 = " + hex(rs2val) + ")"
|
||||||
writeCovVector(desc, rs1, rs2, rd, rs1val, rs2val, immval, rdval, test, storecmd, xlen)
|
writeCovVector(desc, rs1, rs2, rd, rs1val, rs2val, immval, rdval, test, storecmd, xlen)
|
||||||
|
|
||||||
|
@ -1,2 +1,5 @@
|
|||||||
|
|
||||||
|
self_loop:
|
||||||
|
j self_loop
|
||||||
|
|
||||||
.end
|
.end
|
||||||
|
Loading…
Reference in New Issue
Block a user