mirror of
https://github.com/lowRISC/ibex.git
synced 2025-04-23 13:27:10 -04:00
This doesn't produce a lint warning in the version of verilator currently used in CI but does produce a warning in newer versions.
72 lines
3.4 KiB
Text
72 lines
3.4 KiB
Text
// Copyright lowRISC contributors.
|
|
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
// Lint waivers for Verilator
|
|
// See https://www.veripool.org/projects/verilator/wiki/Manual-verilator#CONFIGURATION-FILES
|
|
// for documentation.
|
|
//
|
|
// Important: This file must included *before* any other Verilog file is read.
|
|
// Otherwise, only global waivers are applied, but not file-specific waivers.
|
|
|
|
`verilator_config
|
|
lint_off -rule PINCONNECTEMPTY
|
|
|
|
// We have some boolean top-level parameters in e.g. ibex_core_tracing.sv.
|
|
// When building with fusesoc, these get set with defines like
|
|
// -GRV32M=1 (rather than -GRV32M=1'b1), leading to warnings like:
|
|
//
|
|
// Operator VAR '<varname>' expects 1 bits on the Initial value, but
|
|
// Initial value's CONST '32'h1' generates 32 bits.
|
|
//
|
|
// This signoff rule ignores errors like this. Note that it only
|
|
// matches when you set a 1-bit value to a literal 1, so it won't hide
|
|
// silly mistakes like setting it to 2.
|
|
//
|
|
lint_off -rule WIDTH -file "*/rtl/ibex_top_tracing.sv"
|
|
-match "*expects 1 bits*Initial value's CONST '32'h1'*"
|
|
|
|
// Operator expects 1 bit on initial value but initial value's CONST generates
|
|
// 32 bits, need a specific RV32B waiver as it uses enums so the above catch-all
|
|
// waiver doesn't work.
|
|
lint_off -rule WIDTH -file "*/rtl/ibex_top_tracing.sv" -match "*'RV32B'*"
|
|
|
|
// Bits of signal are not used: be_i[3:1]
|
|
// Bits of signal are not used: addr_i[31:10,1:0]
|
|
// Bits of signal are not used: wdata_i[31:8]
|
|
//
|
|
// simulator_ctrl exposes a 32-bit write-only interface to its control
|
|
// registers, but actually only looks at the bottom byte and rounds addresses
|
|
// down to be 4-byte aligned.
|
|
//
|
|
lint_off -rule UNUSED -file "*/rtl/sim/simulator_ctrl.sv" -match "*'be_i'[3:1]*"
|
|
lint_off -rule UNUSED -file "*/rtl/sim/simulator_ctrl.sv" -match "*'addr_i'[31:10,1:0]*"
|
|
lint_off -rule UNUSED -file "*/rtl/sim/simulator_ctrl.sv" -match "*'wdata_i'[31:8]*"
|
|
|
|
// Bits of signal are not used: timer_addr_i[31:10]
|
|
//
|
|
// The upper bits of this address are used to select whether the timer is
|
|
// addressed at all (encoded in the timer_req_i input). However, we pass the
|
|
// entire 32-bit address around to make the code a bit cleaner.
|
|
lint_off -rule UNUSED -file "*/rtl/timer.sv" -match "*'timer_addr_i'[31:10]*"
|
|
|
|
// Signal is not used: clk_i
|
|
// leaving clk and reset connected in-case we want to add assertions
|
|
lint_off -rule UNUSED -file "*/rtl/ibex_pmp.sv" -match "*clk_i*"
|
|
lint_off -rule UNUSED -file "*/rtl/ibex_compressed_decoder.sv" -match "*clk_i*"
|
|
lint_off -rule UNUSED -file "*/rtl/ibex_decoder.sv" -match "*clk_i*"
|
|
lint_off -rule UNUSED -file "*/rtl/ibex_branch_predict.sv" -match "*clk_i*"
|
|
|
|
// Signal is not used: rst_ni
|
|
// leaving clk and reset connected in-case we want to add assertions
|
|
lint_off -rule UNUSED -file "*/rtl/ibex_pmp.sv" -match "*rst_ni*"
|
|
lint_off -rule UNUSED -file "*/rtl/ibex_compressed_decoder.sv" -match "*rst_ni*"
|
|
lint_off -rule UNUSED -file "*/rtl/ibex_decoder.sv" -match "*rst_ni*"
|
|
lint_off -rule UNUSED -file "*/rtl/ibex_branch_predict.sv" -match "*rst_ni*"
|
|
|
|
// Temporary waivers until OpenTitan primitives are lint-clean
|
|
// https://github.com/lowRISC/opentitan/issues/2313
|
|
lint_off -file "*/lowrisc_prim_*/rtl/*.sv"
|
|
|
|
lint_off -rule UNUSED -file "*/rtl/ibex_top_tracing.sv" -match "*RndCnstLfsrSeed*"
|
|
lint_off -rule UNUSED -file "*/rtl/ibex_top_tracing.sv" -match "*RndCnstLfsrPerm*"
|