01
Understanding the project
The idea in plain language.
SALT stands for SystemVerilog Analysis & Linting Tool. It is a fast Python linter intended for feedback on team conventions and common RTL/UVM mistakes without requiring a full compiler or heavyweight syntax parser.
The scanner discovers .sv and .svh files, builds a lightweight representation, applies enabled rules, and renders findings for either engineers or automation. Its modular rule structure makes it straightforward to add organization-specific checks.
02
Core capabilities
What the project can do.
-
01
Checks whitespace, line length, naming conventions, matching end tags, RTL constructs, and UVM conventions.
-
02
Includes core checks plus broad community-guideline rule sets for SystemVerilog and UVM.
-
03
Accepts YAML configuration for include/exclude patterns, rule enablement, and rule-specific options.
-
04
Produces text, JSON, or HTML reports while keeping diagnostic logging separate from report output.
-
05
Runs as either the salt command-line tool or a Python module.
03
Typical workflow
How someone uses it.
-
1
Create a salt.yaml file describing source globs, excluded build directories, and the rules your team wants.
-
2
Run salt check against one or more RTL or testbench paths.
-
3
Read the file, line, severity, rule ID, and explanation for each finding, or feed JSON/HTML output into CI reporting.
04
Under the hood
Technology and design choices.
- Python 3.11+
- argparse
- PyYAML
- Regex-based scanner
- Text/JSON/HTML reporters
05
Important considerations
What to know before using it.
- SALT is intentionally not a compiler or complete parser, so it complements rather than replaces simulator and elaboration checks.
- The demo contains deliberate violations and returns a non-zero status when it successfully finds them.