// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0

`verilator_config

// Operator EQ expects 32 bits on the LHS, but LHS's VARREF 'addr' generates 3
// bits.
lint_off -rule WIDTH -file "*/rtl/otbn_lsu.sv" -match "*'addr' generates 3 bits*"

lint_off -rule UNUSED -file "*/rtl/otbn_decoder.sv" -match "Bits of signal are not used: 'insn_alu'[24:15,11:7]"

// imem_wmask_bus is only used in an assertion (which Verilator doesn't see).
lint_off -rule UNUSED -file "*/rtl/otbn.sv" -match "Signal is not used: 'imem_wmask_bus'"

// TODO: Remove this waiver once Verilator #3177
// (https://github.com/verilator/verilator/issues/3177) is fixed in a version we depend on.
// split_var of err_bits below should fix this but doesn't.
lint_off -rule UNOPTFLAT -file "*/rtl/otbn_controller.sv" -match "Signal unoptimizable: Feedback to clock or circular logic: '*.u_otbn_controller.non_insn_addr_software_err'"

split_var -module "otbn_controller" -var "err_bits"
