blob: fa50924d79ca0f9251be6debfc17c1dc9ab44bfe [file] [log] [blame]
// 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]'"