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

`verilator_config

// Waive some width mismatch warnings in keymgr.sv and keymgr_kmac_if.sv that
// come from addressing inputs_invalid_d by elements of the keymgr_ops_e enum.
// The enum contains 4 actual operations plus an "OpDisable" entry, meaning
// that its elements are represented by $clog2(5) = 3 bits. The error_o array
// just has an entry for each of the 4 real operations, so Verilator expects to
// address it with a 2-bit index.
lint_off -rule WIDTH -file "*/rtl/keymgr.sv" -match "Bit extraction of var[3:0]*not 3 bits."
lint_off -rule WIDTH -file "*/rtl/keymgr_kmac_if.sv" -match "Bit extraction of var[3:0]*not 3 bits."
