forked from Github_Repos/cvw
		
	Merge branch 'main' of https://github.com/openhwgroup/cvw into dev
This commit is contained in:
		
						commit
						d71d84b386
					
				@ -77,7 +77,7 @@ for {set i 0} {$i < $numcacheways} {incr i} {
 | 
			
		||||
    coverage exclude -scope /dut/core/ifu/bus/icache/icache/CacheWays[$i] -linerange [GetLineNum ../src/cache/cacheway.sv "exclusion-tag: icache SetDirtyWay"] -item e 1
 | 
			
		||||
    coverage exclude -scope /dut/core/ifu/bus/icache/icache/CacheWays[$i] -linerange [GetLineNum ../src/cache/cacheway.sv "exclusion-tag: icache SelectedWiteWordEn"] -item e 1 -fecexprrow 4 6
 | 
			
		||||
    # below: flushD can't go high during an icache write b/c of pipeline stall
 | 
			
		||||
    coverage exclude -scope /dut/core/ifu/bus/icache/icache/CacheWays[$i] -linerange [GetLineNum ../src/cache/cacheway.sv "exclusion-tag: icache SetValidEN"] -item e 1 -fecexprrow 4
 | 
			
		||||
    coverage exclude -scope /dut/core/ifu/bus/icache/icache/CacheWays[$i] -linerange [GetLineNum ../src/cache/cacheway.sv "exclusion-tag: cache SetValidEN"] -item e 1 -fecexprrow 4
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
## D$ Exclusions.
 | 
			
		||||
@ -88,7 +88,11 @@ coverage exclude -scope /dut/core/lsu/bus/dcache/dcache/cachefsm -linerange [Get
 | 
			
		||||
coverage exclude -scope /dut/core/lsu/bus/dcache/dcache/cachefsm -linerange [GetLineNum ../src/cache/cachefsm.sv "exclusion-tag: cache AnyMiss"] -item e 1 -fecexprrow 4
 | 
			
		||||
set numcacheways 4
 | 
			
		||||
for {set i 0} {$i < $numcacheways} {incr i} {
 | 
			
		||||
    coverage exclude -scope /dut/core/lsu/bus/dcache/dcache/CacheWays[$i] -linerange [GetLineNum ../src/cache/cacheway.sv "exclusion-tag: dcache invalidateway"] -item be 1 -fecexprrow 4
 | 
			
		||||
    coverage exclude -scope /dut/core/lsu/bus/dcache/dcache/CacheWays[$i] -linerange [GetLineNum ../src/cache/cacheway.sv "exclusion-tag: dcache invalidateway"] -item bes 1 -fecexprrow 4
 | 
			
		||||
 | 
			
		||||
    # FlushStage=1 will never happen when SetValidWay=1 since a pipeline stall is asserted by the cache in the fetch stage, which happens before
 | 
			
		||||
    # going into the WRITE_LINE state (and asserting SetValidWay). No TrapM can fire and since StallW is high, a stallM caused by WFIStallM would not cause a flushW.
 | 
			
		||||
    coverage exclude -scope /dut/core/lsu/bus/dcache/dcache/CacheWays[$i] -linerange [GetLineNum ../src/cache/cacheway.sv "exclusion-tag: cache SetValidEN"] -item e 1 -fecexprrow 4
 | 
			
		||||
}
 | 
			
		||||
# D$ writeback, flush, write_line, or flush_writeback states can't be cancelled by a flush
 | 
			
		||||
coverage exclude -scope /dut/core/lsu/bus/dcache/dcache/cachefsm -ftrans CurrState STATE_WRITEBACK->STATE_READY STATE_FLUSH->STATE_READY STATE_WRITE_LINE->STATE_READY STATE_FLUSH_WRITEBACK->STATE_READY
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										4
									
								
								src/cache/cacheway.sv
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								src/cache/cacheway.sv
									
									
									
									
										vendored
									
									
								
							@ -82,6 +82,8 @@ module cacheway #(parameter NUMLINES=512, LINELEN = 256, TAGLEN = 26,
 | 
			
		||||
    mux2 #(1) seltagmux(VictimWay, FlushWay, SelFlush, SelTag);
 | 
			
		||||
 | 
			
		||||
    // FlushWay is part of a one hot way selection. Must clear it if FlushWay not selected.
 | 
			
		||||
    // coverage off -item e 1 -fecexprrow 3
 | 
			
		||||
    // nonzero ways will never see SelFlush=0 while FlushWay=1 since FlushWay only advances on a subset of SelFlush assertion cases.
 | 
			
		||||
    assign FlushWayEn = FlushWay & SelFlush;
 | 
			
		||||
    assign SelNonHit = FlushWayEn | SetValid | SelWriteback;
 | 
			
		||||
  end
 | 
			
		||||
@ -100,7 +102,7 @@ module cacheway #(parameter NUMLINES=512, LINELEN = 256, TAGLEN = 26,
 | 
			
		||||
  assign SetDirtyWay = SetDirty & SelData;                                 // exclusion-tag: icache SetDirtyWay
 | 
			
		||||
  assign ClearDirtyWay = ClearDirty & SelData;
 | 
			
		||||
  assign SelectedWriteWordEn = (SetValidWay | SetDirtyWay) & ~FlushStage;  // exclusion-tag: icache SelectedWiteWordEn
 | 
			
		||||
  assign SetValidEN = SetValidWay & ~FlushStage;                           // exclusion-tag: icache SetValidEN
 | 
			
		||||
  assign SetValidEN = SetValidWay & ~FlushStage;                           // exclusion-tag: cache SetValidEN
 | 
			
		||||
 | 
			
		||||
  // If writing the whole line set all write enables to 1, else only set the correct word.
 | 
			
		||||
  assign FinalByteMask = SetValidWay ? '1 : LineByteMask; // OR
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
// pmpcfg part 1
 | 
			
		||||
// Kevin Wan, kewan@hmc.edu, 4/18/2023
 | 
			
		||||
// Liam Chalk, lchalk@hmc.edu, 4/21/2023
 | 
			
		||||
// Liam Chalk, lchalk@hmc.edu, 4/25/2023
 | 
			
		||||
// locks each pmpXcfg bit field in order, from X = 15 to X = 0, with the A[1:0] field set to TOR. 
 | 
			
		||||
// See the next part in pmpcfg1.S
 | 
			
		||||
 | 
			
		||||
@ -52,6 +52,26 @@ main:
 | 
			
		||||
    li t0, 0x00001700
 | 
			
		||||
    csrw pmpcfg3, t0
 | 
			
		||||
 | 
			
		||||
    li t0, 0x90000000
 | 
			
		||||
    csrw pmpaddr0, t0
 | 
			
		||||
    li t0, 0x00170000
 | 
			
		||||
    csrw pmpcfg0, t0
 | 
			
		||||
 | 
			
		||||
    li t0, 0x90000000
 | 
			
		||||
    csrw pmpaddr2, t0
 | 
			
		||||
    li t0, 0x00170000
 | 
			
		||||
    csrw pmpcfg2, t0
 | 
			
		||||
 | 
			
		||||
    li t0, 0x90000000
 | 
			
		||||
    csrw pmpaddr0, t0
 | 
			
		||||
    li t0, 0x17000000
 | 
			
		||||
    csrw pmpcfg0, t0
 | 
			
		||||
 | 
			
		||||
    li t0, 0x90000000
 | 
			
		||||
    csrw pmpaddr2, t0
 | 
			
		||||
    li t0, 0x17000000
 | 
			
		||||
    csrw pmpcfg2, t0
 | 
			
		||||
 | 
			
		||||
    li t0, 0x8800000000000000
 | 
			
		||||
    csrw pmpcfg2, t0
 | 
			
		||||
    li t0, 0x88000000000000
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user