From 6803347a492873f4fc0a30172809ad9400357957 Mon Sep 17 00:00:00 2001 From: Liam Date: Thu, 27 Apr 2023 12:23:35 -0700 Subject: [PATCH] Pmpadrdecs test cases changing AdrMode to 2 or 3 Setting AdrMode to 2 or 3 for pmpadrdecs[0-4] writing values to pmpcfg0 to change AdrMode to 2 or 3 Also exclusion for pmpadrdecs[0] coverage case for PAgePMPAdrIn being hardwired to 1 in pmpadrdec.sv --- sim/coverage-exclusions-rv64gc.do | 2 ++ src/mmu/pmpadrdec.sv | 2 +- testbench/tests.vh | 1 + tests/coverage/pmpadrdecs.S | 22 ++++++++++++++++++++++ 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 tests/coverage/pmpadrdecs.S diff --git a/sim/coverage-exclusions-rv64gc.do b/sim/coverage-exclusions-rv64gc.do index d1aa0ade..24959b71 100644 --- a/sim/coverage-exclusions-rv64gc.do +++ b/sim/coverage-exclusions-rv64gc.do @@ -201,3 +201,5 @@ coverage exclude -scope /dut/core/ifu/immu/immu/tlb/tlb/tlbcontrol -linerange $l set line [GetLineNum ../src/generic/flop/floprc.sv "reset \\| clear"] coverage exclude -scope /dut/core/priv/priv/pmd/wfi/wficountreg -linerange $line-$line -item c 1 -feccondrow 2 +# Excluding pmpadrdecs[0] coverage case for PAgePMPAdrIn being hardwired to 1 +coverage exclude -scope /dut/core/ifu/immu/immu/pmp/pmpchecker/pmp/pmpadrdecs[0] -linerange [GetLineNum ../src/mmu/pmpadrdec.sv "exclusion-tag: PAgePMPAdrIn"] -item e 1 -fecexprrow 1 \ No newline at end of file diff --git a/src/mmu/pmpadrdec.sv b/src/mmu/pmpadrdec.sv index f36fa99f..a4fb8068 100644 --- a/src/mmu/pmpadrdec.sv +++ b/src/mmu/pmpadrdec.sv @@ -63,7 +63,7 @@ module pmpadrdec ( assign CurrentAdrFull = {PMPAdr, 2'b00}; assign PAltPMPAdr = {1'b0, PhysicalAddress} < {1'b0, CurrentAdrFull}; // unsigned comparison assign PAgePMPAdrOut = ~PAltPMPAdr; - assign TORMatch = PAgePMPAdrIn & PAltPMPAdr; + assign TORMatch = PAgePMPAdrIn & PAltPMPAdr; // exclusion-tag: PAgePMPAdrIn // Naturally aligned regions logic [`PA_BITS-1:0] NAMask, NABase; diff --git a/testbench/tests.vh b/testbench/tests.vh index a450b057..4630e96e 100644 --- a/testbench/tests.vh +++ b/testbench/tests.vh @@ -58,6 +58,7 @@ string tvpaths[] = '{ "pmpcfg", "pmpcfg1", "pmpcfg2", + "pmpadrdecs", "tlbKP", "tlbMP", "tlbM3", diff --git a/tests/coverage/pmpadrdecs.S b/tests/coverage/pmpadrdecs.S new file mode 100644 index 00000000..51ca4d14 --- /dev/null +++ b/tests/coverage/pmpadrdecs.S @@ -0,0 +1,22 @@ +// pmpadrdecs +// Liam Chalk, lchalk@hmc.edu, 4/27/2023 +// Setting AdrMode to 2 or 3 for pmpadrdecs[0-4] + +#include "WALLY-init-lib.h" +main: + + # Writing values to pmpcfg0 to change AdrMode to 2 or 3 + # pmpadrdec[0] + li t0, 0x0000000010 + csrw pmpcfg0, t0 + # pmpadrdec[1] + li t0, 0x0000001800 + csrw pmpcfg0, t0 + # pmpadrdec[2] + li t0, 0x0000180000 + csrw pmpcfg0, t0 + # pmpadrdec[4] + li t0, 0x1000000000 + csrw pmpcfg0, t0 + + j done \ No newline at end of file