2023-03-19 17:26:09 +00:00
|
|
|
#///////////////////////////////////////////
|
|
|
|
#// coverage-exclusions-rv64gc.do
|
|
|
|
#//
|
|
|
|
#// Written: David_Harris@hmc.edu 19 March 2023
|
|
|
|
#//
|
|
|
|
#// Purpose: Set of exclusions from coverage for rv64gc configuration
|
|
|
|
#// For example, signals hardwired to 0 should not be checked for toggle coverage
|
|
|
|
#//
|
|
|
|
#// A component of the CORE-V-WALLY configurable RISC-V project.
|
|
|
|
#//
|
|
|
|
#// Copyright (C) 2021-23 Harvey Mudd College & Oklahoma State University
|
|
|
|
#//
|
|
|
|
#// SPDX-License-Identifier: Apache-2.0 WITH SHL-2.1
|
|
|
|
#//
|
|
|
|
#// Licensed under the Solderpad Hardware License v 2.1 (the “License”); you may not use this file
|
|
|
|
#// except in compliance with the License, or, at your option, the Apache License version 2.0. You
|
|
|
|
#// may obtain a copy of the License at
|
|
|
|
#//
|
|
|
|
#// https://solderpad.org/licenses/SHL-2.1/
|
|
|
|
#//
|
|
|
|
#// Unless required by applicable law or agreed to in writing, any work distributed under the
|
|
|
|
#// License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
|
|
|
#// either express or implied. See the License for the specific language governing permissions
|
|
|
|
#// and limitations under the License.
|
|
|
|
#////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
2023-03-31 15:33:46 +00:00
|
|
|
# This file should be a last resort. It's preferable to put
|
|
|
|
# // coverage off
|
|
|
|
# statements inline with the code whenever possible.
|
2023-04-12 22:57:45 +00:00
|
|
|
# a hack to describe coverage exclusions without hardcoding linenumbers:
|
|
|
|
do GetLineNum.do
|
2023-03-31 15:33:46 +00:00
|
|
|
|
2023-03-24 00:25:27 +00:00
|
|
|
# LZA (i<64) statement confuses coverage tool
|
2023-03-31 15:33:46 +00:00
|
|
|
# This is ugly to exlcude the whole file - is there a better option? // coverage off isn't working
|
2023-03-24 00:25:27 +00:00
|
|
|
coverage exclude -srcfile lzc.sv
|
|
|
|
|
2023-04-12 22:57:45 +00:00
|
|
|
### Exclude D$ states and logic for the I$ instance
|
|
|
|
# This is cleaner than trying to set an I$-specific pragma in cachefsm.sv (which would exclude it for the D$ instance too)
|
|
|
|
# Also exclude the write line to ready transition for the I$ since we can't get a flush during this operation.
|
|
|
|
coverage exclude -scope /dut/core/ifu/bus/icache/icache/cachefsm -fstate CurrState STATE_FLUSH STATE_FLUSH_WRITEBACK STATE_FLUSH_WRITEBACK STATE_WRITEBACK
|
2023-04-12 07:48:06 +00:00
|
|
|
coverage exclude -scope /dut/core/ifu/bus/icache/icache/cachefsm -ftrans CurrState STATE_WRITE_LINE->STATE_READY
|
2023-04-12 22:57:45 +00:00
|
|
|
# exclude unused transitions from case statement. Unfortunately the whole branch needs to be excluded I think. Expression coverage should still work.
|
|
|
|
coverage exclude -scope /dut/core/ifu/bus/icache/icache/cachefsm -linerange [GetLineNum ../src/cache/cachefsm.sv "exclusion-tag: icache state-case"] -item b 1
|
|
|
|
# exclude branch/condition coverage: LineDirty if statement
|
|
|
|
coverage exclude -scope /dut/core/ifu/bus/icache/icache/cachefsm -linerange [GetLineNum ../src/cache/cachefsm.sv "exclusion-tag: icache FETCHStatement"] -item bc 1
|
|
|
|
# exclude the unreachable logic
|
|
|
|
set start [GetLineNum ../src/cache/cachefsm.sv "exclusion-tag-start: icache case"]
|
|
|
|
set end [GetLineNum ../src/cache/cachefsm.sv "exclusion-tag-end: icache case"]
|
|
|
|
coverage exclude -scope /dut/core/ifu/bus/icache/icache/cachefsm -linerange $start-$end
|
|
|
|
coverage exclude -scope /dut/core/ifu/bus/icache/icache/cachefsm -linerange [GetLineNum ../src/cache/cachefsm.sv "exclusion-tag: icache WRITEBACKStatement"]
|
|
|
|
# exclude Atomic Operation logic
|
|
|
|
coverage exclude -scope /dut/core/ifu/bus/icache/icache/cachefsm -linerange [GetLineNum ../src/cache/cachefsm.sv "exclusion-tag: icache storeAMO"] -item e 1 -fecexprrow 6
|
|
|
|
coverage exclude -scope /dut/core/ifu/bus/icache/icache/cachefsm -linerange [GetLineNum ../src/cache/cachefsm.sv "exclusion-tag: icache storeAMO1"] -item e 1 -fecexprrow 2-4
|
|
|
|
coverage exclude -scope /dut/core/ifu/bus/icache/icache/cachefsm -linerange [GetLineNum ../src/cache/cachefsm.sv "exclusion-tag: icache AnyUpdateHit"] -item e 1 -fecexprrow 2
|
|
|
|
# cache write logic
|
|
|
|
coverage exclude -scope /dut/core/ifu/bus/icache/icache/cachefsm -linerange [GetLineNum ../src/cache/cachefsm.sv "exclusion-tag: icache CacheW"] -item e 1 -fecexprrow 4
|
|
|
|
# output signal logic
|
|
|
|
coverage exclude -scope /dut/core/ifu/bus/icache/icache/cachefsm -linerange [GetLineNum ../src/cache/cachefsm.sv "exclusion-tag: icache StallStates"] -item e 1 -fecexprrow 8 12 14
|
|
|
|
set start [GetLineNum ../src/cache/cachefsm.sv "exclusion-tag-start: icache flushdirtycontrols"]
|
|
|
|
set end [GetLineNum ../src/cache/cachefsm.sv "exclusion-tag-end: icache flushdirtycontrols"]
|
|
|
|
coverage exclude -scope /dut/core/ifu/bus/icache/icache/cachefsm -linerange $start-$end
|
|
|
|
coverage exclude -scope /dut/core/ifu/bus/icache/icache/cachefsm -linerange [GetLineNum ../src/cache/cachefsm.sv "exclusion-tag: icache CacheBusW"]
|
|
|
|
coverage exclude -scope /dut/core/ifu/bus/icache/icache/cachefsm -linerange [GetLineNum ../src/cache/cachefsm.sv "exclusion-tag: icache SelAdrCauses"] -item e 1 -fecexprrow 4 10
|
|
|
|
coverage exclude -scope /dut/core/ifu/bus/icache/icache/cachefsm -linerange [GetLineNum ../src/cache/cachefsm.sv "exclusion-tag: icache CacheBusRCauses"] -item e 1 -fecexprrow 1-2 12
|
2023-03-24 00:25:27 +00:00
|
|
|
|
|
|
|
######################
|
|
|
|
# Toggle exclusions
|
|
|
|
# Not used because toggle coverage isn't measured
|
|
|
|
######################
|
|
|
|
|
2023-03-19 17:26:09 +00:00
|
|
|
# Exclude DivBusyE from all design units because rv64gc uses the fdivsqrt unit for integer division
|
2023-03-24 00:25:27 +00:00
|
|
|
#coverage exclude -togglenode DivBusyE -du *
|
2023-03-19 17:26:09 +00:00
|
|
|
# Exclude QuotM and RemM from MDU because rv64gc uses the fdivsqrt rather tha div unit for integer division
|
2023-03-24 00:25:27 +00:00
|
|
|
#coverage exclude -togglenode /dut/core/mdu/mdu/QuotM
|
|
|
|
#coverage exclude -togglenode /dut/core/mdu/mdu/RemM
|
2023-03-19 17:26:09 +00:00
|
|
|
|
|
|
|
# StallFCause is hardwired to 0
|
2023-03-24 00:25:27 +00:00
|
|
|
#coverage exclude -togglenode /dut/core/hzu/StallFCause
|
|
|
|
|