svlint

SystemVerilog linter

Actions Status codecov

Crates.io svlint

svlint

Installation

Download binary

Download from release page, and extract to the directory in PATH.

snapcraft

You can install from snapcraft

sudo snap install svlint

Cargo

You can install by cargo.

cargo install svlint

Usage

Configuration

First of all, you must put a configuration file .svlint.toml to specify enabled rules. Configuration file is searched to the upper directory until /. So you can put configuration file (.svlint.toml) on the repository root like .gitignore. Alternatively, for project-wide rules you can set the environment variable SVLINT_CONFIG to something like /cad/projectFoo/teamBar.svlint.toml.

The example of configuration file is below:

```toml [option] excludepaths = ["ip/.*"] prefixlabel = ""

[rules] nonansimodule = true wire_reg = true ```

The complete example can be generated by svlint --example

[option] section

[rules] section

By default, all rules are disabled. If you want to enable some rules, true can be specified.

Configuration update

If svlint is updated, .svlint.toml can be updated to the latest version by svlint --update.

Rules

All rules are here. Suggesting a new rule through Issues or Pull requests is welcome. Some example rulesets, are available here.

If you need to turn off specific rules for a section, then you can use special comments: ...regular code... /* svlint off legacy_always */ always @* foo = bar; // this is special /* svlint on legacy_always */ ...more regular code...

Plugin

svlint supports rule plugin. A sample project is below:

https://github.com/dalance/svlint-plugin-sample

Filelist

svlint supports filelist like major EDA tools. The following features are supported.

An example is below:

xxx.sv ${XXX_DIR}/yyy.sv $(XXX_DIR)/zzz.sv +incdir+$(PWD)/header/src +define+SYNTHESIS -f other.f

Option

``` svlint 0.2.12

USAGE: svlint [FLAGS] [OPTIONS] ...

FLAGS: --example Prints config example -h, --help Prints help information -s, --silent Suppresses message -1 Prints results by single line --update Updates config -V, --version Prints version information -v, --verbose Prints verbose message

OPTIONS: -c, --config Config file [default: .svlint.toml] -d, --define ... Define -f, --filelist ... File list -i, --include ... Include path -p, --plugin ... Plugin file

ARGS: ... Source file ```