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

`verilator_config

// Always_comb variable driven after use: 'regular'
// regular is assigned in a for loop, regular[1] depends on regular[0]
lint_off -rule ALWCOMBORDER -file "*/rtl/aes_key_expand.sv" -match "*'regular'"

// Masked SBox implementations may require multiple modules to prevent aggressive synthesis optimizations.
lint_off -rule DECLFILENAME -file "*/rtl/aes_sbox_*_masked*.sv" -match "Filename 'aes_sbox_*_masked*' does not match MODULE name: *"
lint_off -rule DECLFILENAME -file "*/rtl/aes_sbox_dom*.sv" -match "Filename 'aes_sbox_dom*' does not match MODULE name: *"

// In the following arrays some members may depend on others.
// There are no circular dependencies but the tool must be told to analyze each member separately for simulation, i.e., to split up the arrays internally.
// Otherwise the tool needs to evaluate corresponding statements multiple times before the entire signal settles.
// This slows down simulation and causes the tool to print UNOPTFLAT lint warnings.
split_var -module "aes_control" -var "*sp2v_sig*"
split_var -module "aes_cipher_control" -var "*sp2v_sig"
split_var -module "aes_cipher_control" -var "*sp2v_sig_chk*"
split_var -module "aes_masked_inverse_gf2p8*" -var "b"
split_var -module "aes_masked_inverse_gf2p8*" -var "b_buf"
split_var -module "aes_masked_inverse_gf2p8*" -var "a1_inv"
split_var -module "aes_masked_inverse_gf2p8*" -var "a1_inv_buf"
split_var -module "aes_masked_inverse_gf2p8*" -var "a0_inv"
split_var -module "aes_masked_inverse_gf2p8*" -var "a0_inv_buf"
split_var -module "aes_masked_inverse_gf2p4*" -var "c"
split_var -module "aes_masked_inverse_gf2p4*" -var "c_buf"
split_var -module "aes_masked_inverse_gf2p4*" -var "b1_inv"
split_var -module "aes_masked_inverse_gf2p4*" -var "b1_inv_buf"
split_var -module "aes_masked_inverse_gf2p4*" -var "b0_inv"
split_var -module "aes_masked_inverse_gf2p4*" -var "b0_inv_buf"

// Similarly, there are no circular dependencies in the signals below but here the split_var technique doesn't seem to work in Verilator 4.210 - 4.214.
// TODO: Remove these waivers once we upgrade to a Verilator version > 4.214.
// For details, see https://github.com/verilator/verilator/issues/3177
lint_off -rule UNOPTFLAT -file "*/rtl/aes_control.sv" -match "Signal unoptimizable: Feedback to clock or circular logic: '*u_aes_control.sp2v_sig[59:48]'"
lint_off -rule UNOPTFLAT -file "*/rtl/aes_control.sv" -match "Signal unoptimizable: Feedback to clock or circular logic: '*u_aes_control.sp2v_sig[23:12]'"
lint_off -rule UNOPTFLAT -file "*/rtl/aes_control.sv" -match "Signal unoptimizable: Feedback to clock or circular logic: '*u_aes_control.sp2v_sig[11:0]'"
lint_off -rule UNOPTFLAT -file "*/rtl/aes_cipher_control.sv" -match "Signal unoptimizable: Feedback to clock or circular logic: '*u_aes_cipher_control.sp2v_sig[23:12]'"
