# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
#
# Rules for svlint, a SystemVerilog linter commonly used in editors.
# The configuration matches the lowRISC SystemVerilog style guide at
# https://github.com/lowRISC/style-guides/blob/master/VerilogCodingStyle.md.
# See https://github.com/dalance/svlint/blob/master/RULES.md for a list of rules.

[option]
exclude_paths = ["build.*", "sw/.*", ".sv.tpl$"]

[rules]
blocking_assignment_in_always_ff = true
case_default = true
default_nettype_none = false
enum_with_type = true
for_with_begin = true
function_same_as_system_function = true
function_with_automatic = true
generate_for_with_label = true
generate_if_with_label = true
generate_keyword_forbidden = true
generate_keyword_required = false
genvar_declaration_in_loop = true
genvar_declaration_out_loop = false
if_with_begin = true
inout_with_tri = false
input_with_var = false
interface_port_with_modport = false
legacy_always = false
level_sensitive_always = true
loop_variable_declaration = true
non_ansi_module = true
non_blocking_assignment_in_always_comb = true
output_with_var = false
parameter_in_package = false
priority_keyword = false
tab_character = true
unique0_keyword = false
unique_keyword = false
wire_reg = true
