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

`verilator_config

// When masking is disabled, KMAC exposes ports for the EDN clock and
// reset but doesn't use them. This is intentional; waive the
// warnings.
lint_off -rule UNUSED -file "*/rtl/kmac.sv" -match "Signal is not used: 'clk_edn_i'"
lint_off -rule UNUSED -file "*/rtl/kmac.sv" -match "Signal is not used: 'rst_edn_ni'"

// Waive warning about width mismatch when comparing "i" and "app_id".
lint_off -rule WIDTH -file "*/rtl/kmac_app.sv" -match "Operator EQ expects 32 bits*'app_id' generates 2 bits."
