forked from Github_Repos/cvw
Added test coverage for reads to HPM counters and added exclusions for impossible cases in rv64gc
This commit is contained in:
parent
a77d403e4c
commit
34dd481f93
@ -198,9 +198,12 @@ module csrsr (
|
|||||||
STATUS_UBE <= #1 CSRWriteValM[6] & `U_SUPPORTED & `BIGENDIAN_SUPPORTED;
|
STATUS_UBE <= #1 CSRWriteValM[6] & `U_SUPPORTED & `BIGENDIAN_SUPPORTED;
|
||||||
STATUS_MBE <= #1 nextMBE;
|
STATUS_MBE <= #1 nextMBE;
|
||||||
STATUS_SBE <= #1 nextSBE;
|
STATUS_SBE <= #1 nextSBE;
|
||||||
|
// coverage off
|
||||||
|
// MSTATUSH only exists in 32-bit configurations, will not be hit on rv64gc
|
||||||
end else if (WriteMSTATUSHM) begin
|
end else if (WriteMSTATUSHM) begin
|
||||||
STATUS_MBE <= #1 CSRWriteValM[5] & `BIGENDIAN_SUPPORTED;
|
STATUS_MBE <= #1 CSRWriteValM[5] & `BIGENDIAN_SUPPORTED;
|
||||||
STATUS_SBE <= #1 CSRWriteValM[4] & `S_SUPPORTED & `BIGENDIAN_SUPPORTED;
|
STATUS_SBE <= #1 CSRWriteValM[4] & `S_SUPPORTED & `BIGENDIAN_SUPPORTED;
|
||||||
|
// coverage on
|
||||||
end else if (WriteSSTATUSM) begin // write a subset of the STATUS bits
|
end else if (WriteSSTATUSM) begin // write a subset of the STATUS bits
|
||||||
STATUS_MXR_INT <= #1 CSRWriteValM[19];
|
STATUS_MXR_INT <= #1 CSRWriteValM[19];
|
||||||
STATUS_SUM_INT <= #1 CSRWriteValM[18];
|
STATUS_SUM_INT <= #1 CSRWriteValM[18];
|
||||||
|
@ -81,11 +81,14 @@ module trap (
|
|||||||
///////////////////////////////////////////
|
///////////////////////////////////////////
|
||||||
|
|
||||||
assign BothInstrAccessFaultM = InstrAccessFaultM | HPTWInstrAccessFaultM;
|
assign BothInstrAccessFaultM = InstrAccessFaultM | HPTWInstrAccessFaultM;
|
||||||
|
// coverage off -item e 1 -fecexprrow 2
|
||||||
|
// excludes InstrMisalignedFaultM from coverage of this line, since misaligned instructions cannot occur in rv64gc.
|
||||||
assign ExceptionM = InstrMisalignedFaultM | BothInstrAccessFaultM | IllegalInstrFaultM |
|
assign ExceptionM = InstrMisalignedFaultM | BothInstrAccessFaultM | IllegalInstrFaultM |
|
||||||
LoadMisalignedFaultM | StoreAmoMisalignedFaultM |
|
LoadMisalignedFaultM | StoreAmoMisalignedFaultM |
|
||||||
InstrPageFaultM | LoadPageFaultM | StoreAmoPageFaultM |
|
InstrPageFaultM | LoadPageFaultM | StoreAmoPageFaultM |
|
||||||
BreakpointFaultM | EcallFaultM |
|
BreakpointFaultM | EcallFaultM |
|
||||||
LoadAccessFaultM | StoreAmoAccessFaultM;
|
LoadAccessFaultM | StoreAmoAccessFaultM;
|
||||||
|
// coverage on
|
||||||
assign TrapM = ExceptionM | InterruptM;
|
assign TrapM = ExceptionM | InterruptM;
|
||||||
assign RetM = mretM | sretM;
|
assign RetM = mretM | sretM;
|
||||||
|
|
||||||
|
@ -142,6 +142,65 @@ main:
|
|||||||
# Test writes to floating point CSRs
|
# Test writes to floating point CSRs
|
||||||
csrw frm, t0
|
csrw frm, t0
|
||||||
csrw fflags, t0
|
csrw fflags, t0
|
||||||
|
|
||||||
|
# CSRC MCOUNTEREN Register
|
||||||
|
# Go to machine mode
|
||||||
|
li a0, 3
|
||||||
|
ecall
|
||||||
|
# Activate HPM3
|
||||||
|
li t0, -1
|
||||||
|
csrw mcounteren, t0
|
||||||
|
csrw scounteren, t0
|
||||||
|
|
||||||
|
# Go to supervisor
|
||||||
|
li a0, 1
|
||||||
|
ecall
|
||||||
|
#try to write to HPMs
|
||||||
|
csrw 333, t0
|
||||||
|
#go to user mode
|
||||||
|
li a0, 0
|
||||||
|
ecall
|
||||||
|
csrr t0, hpmcounter22
|
||||||
|
|
||||||
|
# setting registers bits to 0
|
||||||
|
li a0, 3 # back to machine mode
|
||||||
|
ecall
|
||||||
|
li t0, 0
|
||||||
|
csrw mcounteren, t0
|
||||||
|
csrw scounteren, t0
|
||||||
|
|
||||||
|
# Write to satp when status.TVM is 1 from machine mode
|
||||||
|
bseti t0, zero, 20
|
||||||
|
csrs mstatus, t0
|
||||||
|
|
||||||
|
csrw satp, t0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Test checking privilege for reading counters (using counter 22 as an example)
|
||||||
|
|
||||||
|
# Go to machine mode
|
||||||
|
li a0, 3
|
||||||
|
ecall
|
||||||
|
|
||||||
|
# Set SCOUNTEREN to all 0s, MCOUNTEREN to all 1s
|
||||||
|
li t0, 0
|
||||||
|
csrw scounteren, t0
|
||||||
|
li t1, -1
|
||||||
|
csrw mcounteren, t1
|
||||||
|
|
||||||
|
# Go to supervisor mode
|
||||||
|
li a0, 1
|
||||||
|
ecall
|
||||||
|
|
||||||
|
# try to read from HPM22
|
||||||
|
csrr t0, hpmcounter22
|
||||||
|
|
||||||
|
# go to user mode
|
||||||
|
li a0, 0
|
||||||
|
ecall
|
||||||
|
|
||||||
|
csrr t0, hpmcounter22
|
||||||
|
|
||||||
j done
|
j done
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user