@@ -77,7 +77,7 @@ for {set i 0} {$i < $numcacheways} {incr i} {
7777 coverage exclude - scope /dut/core/ifu/bus/icache/icache/CacheWays[$i] - linerange [GetLineNum ../src/cache/cacheway.sv " exclusion-tag: icache SetDirtyWay" ] - item e 1
7878 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
7979 # below: flushD can't go high during an icache write b/c of pipeline stall
80- 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
80+ 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
8181}
8282
8383## D$ Exclusions.
@@ -88,7 +88,11 @@ coverage exclude -scope /dut/core/lsu/bus/dcache/dcache/cachefsm -linerange [Get
8888coverage exclude - scope /dut/core/lsu/bus/dcache/dcache/cachefsm - linerange [GetLineNum ../src/cache/cachefsm.sv " exclusion-tag: cache AnyMiss" ] - item e 1 - fecexprrow 4
8989set numcacheways 4
9090for {set i 0} {$i < $numcacheways} {incr i} {
91- 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
91+ 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
92+
93+ # FlushStage= 1 will never happen when SetValidWay= 1 since a pipeline stall is asserted by the cache in the fetch stage, which happens before
94+ # 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.
95+ 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
9296}
9397# D$ writeback, flush, write_line, or flush_writeback states can't be cancelled by a flush
9498coverage 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
@@ -115,20 +119,85 @@ coverage exclude -scope /dut/core/lsu/dmmu/dmmu/pmachecker/adrdecs/clintdec -lin
115119set line [GetLineNum ../src/mmu/adrdec.sv " & SizeValid" ]
116120coverage exclude - scope /dut/core/lsu/dmmu/dmmu/pmachecker/adrdecs/uncoreramdec - linerange $line- $line - item e 1 - fecexprrow 5
117121
118- # Excluding signals in lsu: the lsu never executes instructions so 'ExecuteAccess' will never be 1
122+ ## Excluding signals in lsu: the lsu never executes instructions so 'ExecuteAccessF' will never be 1
123+ # in pmachecker.sv
119124set line [GetLineNum ../src/mmu/pmachecker.sv " AccessRWX =" ]
120125coverage exclude - scope /dut/core/lsu/dmmu/dmmu/pmachecker - linerange $line- $line - item e 1 - fecexprrow 6
121126set line [GetLineNum ../src/mmu/pmachecker.sv " ReadAccessM \\| ExecuteAccessF" ]
122127coverage exclude - scope /dut/core/lsu/dmmu/dmmu/pmachecker - linerange $line- $line - item e 1 - fecexprrow 4
128+ set line [GetLineNum ../src/mmu/pmachecker.sv " ExecuteAccessF & PMAAccessFault" ]
129+ coverage exclude - scope /dut/core/lsu/dmmu/dmmu/pmachecker - linerange $line- $line - item e 1 - fecexprrow 2
130+
131+ # in mmu.sv
132+ set line [GetLineNum ../src/mmu/mmu.sv " ExecuteAccessF \\| ReadAccessM" ]
133+ coverage exclude - scope /dut/core/lsu/dmmu/dmmu - linerange $line- $line - item e 1 - fecexprrow 2
134+ set line [GetLineNum ../src/mmu/mmu.sv " TLBPageFault & ExecuteAccessF" ]
135+ coverage exclude - scope /dut/core/lsu/dmmu/dmmu - linerange $line- $line - item e 1 - fecexprrow 1,2,4
136+ set line [GetLineNum ../src/mmu/mmu.sv " PMAInstrAccessFaultF \\|" ]
137+ coverage exclude - scope /dut/core/lsu/dmmu/dmmu - linerange $line- $line - item e 1 - fecexprrow 2,4,5,6
138+
139+ # in pmpchecker.sv
140+ set line [GetLineNum ../src/mmu/pmpchecker.sv " EnforcePMP & ExecuteAccessF" ]
141+ coverage exclude - scope /dut/core/lsu/dmmu/dmmu/pmp/pmpchecker - linerange $line- $line - item e 1 - fecexprrow 1,2,4,5,6
123142
124- # Excluding ReadAccess and WriteAccess signal in the ifu that will never be true
143+
144+ ## Excluding ReadAccessM_1 and WriteAccessM_1 signals in the ifu pmachecker, mmu, pmpchecker because they will never be high
145+ ## and Excluding ExecuteAccessF_0 because it is always true/high in the ifu
146+ # in pmachecker.sv
125147set line [GetLineNum ../src/mmu/pmachecker.sv " ReadAccessM \\| WriteAccessM" ]
126148coverage exclude - scope /dut/core/ifu/immu/immu/pmachecker - linerange $line- $line - item e 1 - fecexprrow 2 4
127149set line [GetLineNum ../src/mmu/pmachecker.sv " WriteAccessM \\| ExecuteAccessF" ]
128150coverage exclude - scope /dut/core/ifu/immu/immu/pmachecker - linerange $line- $line - item e 1 - fecexprrow 1- 5
129151set line [GetLineNum ../src/mmu/pmachecker.sv " ReadAccessM \\| ExecuteAccessF" ]
130152coverage exclude - scope /dut/core/ifu/immu/immu/pmachecker - linerange $line- $line - item e 1 - fecexprrow 1- 3
131153
154+ set line [GetLineNum ../src/mmu/pmachecker.sv " ExecuteAccessF & PMAAccessFault" ]
155+ coverage exclude - scope /dut/core/ifu/immu/immu/pmachecker - linerange $line- $line - item e 1 - fecexprrow 1
156+ set line [GetLineNum ../src/mmu/pmachecker.sv " ReadAccessM & PMAAccessFault" ]
157+ coverage exclude - scope /dut/core/ifu/immu/immu/pmachecker - linerange $line- $line - item e 1 - fecexprrow 2- 4
158+ set line [GetLineNum ../src/mmu/pmachecker.sv " WriteAccessM & PMAAccessFault" ]
159+ coverage exclude - scope /dut/core/ifu/immu/immu/pmachecker - linerange $line- $line - item e 1 - fecexprrow 2- 4
160+ set line [GetLineNum ../src/mmu/pmachecker.sv " AccessRWX \\| AtomicAccessM" ]
161+ coverage exclude - scope /dut/core/ifu/immu/immu/pmachecker - linerange $line- $line - item e 1 - fecexprrow 3
162+
163+ # in mmu.sv
164+ set line [GetLineNum ../src/mmu/mmu.sv " ExecuteAccessF \\| ReadAccessM" ]
165+ coverage exclude - scope /dut/core/ifu/immu/immu - linerange $line- $line - item e 1 - fecexprrow 1,3,4
166+ set line [GetLineNum ../src/mmu/mmu.sv " ReadAccessM & ~WriteAccessM" ]
167+ coverage exclude - scope /dut/core/ifu/immu/immu - linerange $line- $line - item e 1 - fecexprrow 2- 4
168+ set line [GetLineNum ../src/mmu/mmu.sv " DataMisalignedM & WriteAccessM" ]
169+ coverage exclude - scope /dut/core/ifu/immu/immu - linerange $line- $line - item e 1 - fecexprrow 1,2,4
170+ set line [GetLineNum ../src/mmu/mmu.sv " TLBPageFault & ExecuteAccessF" ]
171+ coverage exclude - scope /dut/core/ifu/immu/immu - linerange $line- $line - item e 1 - fecexprrow 3
172+ set line [GetLineNum ../src/mmu/mmu.sv " TLBPageFault & ReadNoAmoAccessM" ]
173+ coverage exclude - scope /dut/core/ifu/immu/immu - linerange $line- $line - item e 1 - fecexprrow 1,2,4
174+ set line [GetLineNum ../src/mmu/mmu.sv " TLBPageFault & WriteAccessM" ]
175+ coverage exclude - scope /dut/core/ifu/immu/immu - linerange $line- $line - item e 1 - fecexprrow 1,2,4
176+ set line [GetLineNum ../src/mmu/mmu.sv " DataMisalignedM & ReadNoAmoAccessM" ]
177+ coverage exclude - scope /dut/core/ifu/immu/immu - linerange $line- $line - item e 1 - fecexprrow 1,2,4
178+
179+ # in pmpchecker.sv
180+ set line [GetLineNum ../src/mmu/pmpchecker.sv " EnforcePMP & WriteAccessM" ]
181+ coverage exclude - scope /dut/core/ifu/immu/immu/pmp/pmpchecker - linerange $line- $line - item e 1 - fecexprrow 1,2,4,5,6
182+ set line [GetLineNum ../src/mmu/pmpchecker.sv " EnforcePMP & ReadAccessM" ]
183+ coverage exclude - scope /dut/core/ifu/immu/immu/pmp/pmpchecker - linerange $line- $line - item e 1 - fecexprrow 1,2,4,5,6
184+
185+ ## Executing any LoadAccess or StoreAccess signal in the ifu - depend on Read and Write Access that the ifu will never have
186+ # in /mmu/mmu.sv
187+ set line [GetLineNum ../src/mmu/mmu.sv " PMALoadAccessFaultM \\| PMPLoadAccessFaultM" ]
188+ coverage exclude - scope /dut/core/ifu/immu/immu - linerange $line- $line - item e 1 - fecexprrow 2,4,5,6
189+ set line [GetLineNum ../src/mmu/mmu.sv " PMAStoreAmoAccessFaultM \\| PMPStoreAmoAccessFaultM" ]
190+ coverage exclude - scope /dut/core/ifu/immu/immu - linerange $line- $line - item e 1 - fecexprrow 2,4,5,6
191+
192+ ## Excluding ReadAccess_0, WriteAcess_1 in the TLB because the itlb only reads, and does not write
193+ set line [GetLineNum ../src/mmu/tlb/tlbcontrol.sv " ReadAccess \\| WriteAccess" ]
194+ coverage exclude - scope /dut/core/ifu/immu/immu/tlb/tlb/tlbcontrol - linerange $line- $line - item e 1 - fecexprrow 1,3,4
195+ set line [GetLineNum ../src/mmu/tlb/tlbcontrol.sv " CAMHit & TLBAccess" ]
196+ coverage exclude - scope /dut/core/ifu/immu/immu/tlb/tlb/tlbcontrol - linerange $line- $line - item e 1 - fecexprrow 3
197+ set line [GetLineNum ../src/mmu/tlb/tlbcontrol.sv " ~CAMHit & TLBAccess" ]
198+ coverage exclude - scope /dut/core/ifu/immu/immu/tlb/tlb/tlbcontrol - linerange $line- $line - item e 1 - fecexprrow 3
199+
132200# Excluding reset and clear for impossible case in the wficountreg in privdec
133201set line [GetLineNum ../src/generic/flop/floprc.sv " reset \\| clear" ]
134202coverage exclude - scope /dut/core/priv/priv/pmd/wfi/wficountreg - linerange $line- $line - item c 1 - feccondrow 2
203+
0 commit comments