forked from Github_Repos/cvw
		
	Merged coverage exclusions for PMP
This commit is contained in:
		
						commit
						d5c350c597
					
				@ -153,6 +153,8 @@ set line [GetLineNum ../src/mmu/mmu.sv "PMAInstrAccessFaultF    \\|"]
 | 
			
		||||
coverage exclude -scope /dut/core/lsu/dmmu/dmmu -linerange $line-$line -item e 1 -fecexprrow 2,4,5,6
 | 
			
		||||
set line [GetLineNum ../src/mmu/pmpchecker.sv "EnforcePMP & ExecuteAccessF"]
 | 
			
		||||
coverage exclude -scope /dut/core/lsu/dmmu/dmmu/pmp/pmpchecker -linerange $line-$line -item e 1 -fecexprrow 1,2,4,5,6
 | 
			
		||||
set line [GetLineNum ../src/mmu/pmpchecker.sv "EnforcePMP & ExecuteAccessF"]
 | 
			
		||||
coverage exclude -scope /dut/core/ifu/immu/immu/pmp/pmpchecker -linerange $line-$line -item e 1 -fecexprrow 3 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## The IFU has ReadAccess = WriteAccess = 0 and ExecuteAccess = 1 hardwired, so exclude alternatives
 | 
			
		||||
@ -206,3 +208,7 @@ coverage exclude -scope /dut/core/priv/priv/pmd/wfi/wficountreg -linerange $line
 | 
			
		||||
# TLB not recently used never has all RU bits = 1 because it will then clear all to 0
 | 
			
		||||
# This is a blunt instrument; perhaps there is a more graceful exclusion
 | 
			
		||||
coverage exclude -srcfile priorityonehot.sv 
 | 
			
		||||
 | 
			
		||||
# 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
 | 
			
		||||
coverage exclude -scope /dut/core/lsu/dmmu/dmmu/pmp/pmpchecker/pmp/pmpadrdecs[0] -linerange [GetLineNum ../src/mmu/pmpadrdec.sv "exclusion-tag: PAgePMPAdrIn"] -item e 1 -fecexprrow 1
 | 
			
		||||
 | 
			
		||||
@ -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;
 | 
			
		||||
 | 
			
		||||
@ -63,7 +63,8 @@ string tvpaths[] = '{
 | 
			
		||||
    "pmp",
 | 
			
		||||
    "pmpcfg",
 | 
			
		||||
    "pmpcfg1",
 | 
			
		||||
    "pmpcfg2"
 | 
			
		||||
    "pmpcfg2",
 | 
			
		||||
    "pmpadrdecs"
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  string coremark[] = '{
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										22
									
								
								tests/coverage/pmpadrdecs.S
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								tests/coverage/pmpadrdecs.S
									
									
									
									
									
										Normal file
									
								
							@ -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
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user