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

`verilator_config

// Tell the Verilator scheduler to split up these variables into
// separate pieces when it's figuring out process scheduling. This
// avoids spurious UNOPTFLAT warnings caused by the fact that the
// arrays feed into themselves (with different bits for different
// positions in the tree).
split_var -module "prim_arbiter_fixed" -var "data_tree"
split_var -module "prim_arbiter_fixed" -var "gnt_tree"
split_var -module "prim_arbiter_fixed" -var "idx_tree"
split_var -module "prim_arbiter_fixed" -var "req_tree"

split_var -module "prim_arbiter_tree" -var "req_tree"
split_var -module "prim_arbiter_tree" -var "prio_tree"
split_var -module "prim_arbiter_tree" -var "sel_tree"
split_var -module "prim_arbiter_tree" -var "mask_tree"
split_var -module "prim_arbiter_tree" -var "idx_tree"
split_var -module "prim_arbiter_tree" -var "data_tree"

// Waive ALWCOMBORDER warnings about the tree variables. We've got
// lines like "req_tree[Pa] = req_tree[C0] | req_tree[C1];" and it
// seems that the ALWCOMBORDER warning isn't affected by the split_var
// rules above.
lint_off -rule ALWCOMBORDER -file "*/rtl/prim_arbiter_fixed.sv" -match "*data_tree*"
lint_off -rule ALWCOMBORDER -file "*/rtl/prim_arbiter_fixed.sv" -match "*gnt_tree*"
lint_off -rule ALWCOMBORDER -file "*/rtl/prim_arbiter_fixed.sv" -match "*idx_tree*"
lint_off -rule ALWCOMBORDER -file "*/rtl/prim_arbiter_fixed.sv" -match "*req_tree*"

lint_off -rule ALWCOMBORDER -file "*/rtl/prim_arbiter_tree.sv" -match "*req_tree*"
lint_off -rule ALWCOMBORDER -file "*/rtl/prim_arbiter_tree.sv" -match "*prio_tree*"
lint_off -rule ALWCOMBORDER -file "*/rtl/prim_arbiter_tree.sv" -match "*sel_tree*"
lint_off -rule ALWCOMBORDER -file "*/rtl/prim_arbiter_tree.sv" -match "*mask_tree*"
lint_off -rule ALWCOMBORDER -file "*/rtl/prim_arbiter_tree.sv" -match "*idx_tree*"
lint_off -rule ALWCOMBORDER -file "*/rtl/prim_arbiter_tree.sv" -match "*data_tree*"

lint_off -rule ALWCOMBORDER -file "*/rtl/prim_arbiter_ppc.sv" -match "*ppc_out*"

// Waive unused clk and reset signals: they're just used for
// assertions (which Verilator doesn't see)
lint_off -rule UNUSED -file "*/rtl/prim_arbiter_fixed.sv" -match "*clk_i*"
lint_off -rule UNUSED -file "*/rtl/prim_arbiter_fixed.sv" -match "*rst_ni*"
