Skip to content

Lint rules

Every rule astli lint has, by group, at the level its group gives it. astli lint --list prints the same.

correctness

At deny by default.

Rule
always-comb-blocking a non-blocking assignment in always_comb
always-ff-non-blocking a blocking assignment in always_ff to a variable not declared in it
duplicate-case-item a case label written twice, so its second item is never taken

suspicious

At warn by default.

Rule
always-comb always @* where always_comb would say what it is
case-missing-default a case with no default item that is not unique or unique0
forbid-defparam defparam, which overrides a parameter from elsewhere in the hierarchy
undriven-signal a signal of a module, interface or program read and never written, or an output never driven
unused-import an import nothing in the file uses
unused-parameter a parameter of a module, interface or program nothing reads
unused-signal a net, variable or input of a module, interface or program nothing reads
variable-initializer a variable in a module or interface given a value where it is declared
width-expand a value extended to a wider target, port or operand, in what --top builds
width-trunc a value truncated to a narrower target or port, in what --top builds

lowrisc

At warn by default.

Rule
constraint-name-style a constraint not lower_snake_case ending in _c
disable-statement disable of a label that is no begin block around it, or is a process's whole body
enum-name-style an enum type not lower_snake_case ending in _e or _t
explicit-function-lifetime a function outside a class without automatic or static
explicit-function-task-parameter-type a function or task argument without a type
explicit-parameter-storage-type a parameter without a type, other than one with a string value
explicit-task-lifetime a task outside a class without automatic or static
forbid-reg reg, where logic says the same
forbid-wildcard-connection an instance connecting its ports with .*
generate-label a generate block without a label
generate-label-prefix a generate block label not starting with gen_ or g_
instance-name-style an instance not lower_snake_case
interface-name-style an interface not lower_snake_case ending in _if
macro-name-style a macro not ALL_CAPS, other than UVM's uvm_ ones
module-begin-block a begin block directly in a module
module-filename a file declaring modules, none named as the file is
module-parameter an instance setting more than one parameter, some by position
module-port an instance connecting more than one port, some by position
package-filename a package not named as its file is
packed-dimensions-range-ordering a packed range in ascending order, [0:7]
parameter-name-style a parameter neither CamelCase nor ALL_CAPS
port-name-suffix a module's port not ending in _i, _o or _io as its direction says
positive-meaning-parameter-name a parameter named Disable...
signal-name-style a net, variable or port of a design element not lower_snake_case
struct-union-name-style a struct or union type not lower_snake_case ending in _t
typedef-enums an enum without a typedef
unpacked-dimensions-range-ordering an unpacked range in descending order, [7:0]
v2001-generate-begin a begin block directly inside generate

restriction

At allow by default.

Rule
endif-comment an `endif without a comment naming the `ifdef's macro
explicit-begin an if, else, loop or procedural block whose body has no begin
forbid-negative-array-dim a negative literal bound in a dimension
invalid-system-task-function $random, $dist_*, $psprintf or $srandom
legacy-generate-region a generate ... endgenerate region
legacy-genvar-declaration a genvar declared apart from its loop
one-module-per-file a second module in one file
proper-parameter-declaration a parameter outside a parameter list, or a localparam outside a design element, class or package
uvm-macro-semicolon a ; after a `uvm_ macro call