• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
      • Vl2014
        • Warnings
        • Primitives
        • Use-set
        • Syntax
        • Getting-started
        • Utilities
        • Loader
        • Transforms
        • Lint
          • Vl-lintconfig-p
          • Lucid
          • Skip-detection
          • Vl-lintresult-p
          • Lint-warning-suppression
          • Condcheck
          • Selfassigns
          • Leftright-check
          • Dupeinst-check
          • Oddexpr-check
          • Remove-toohard
          • Qmarksize-check
          • Portcheck
          • Duplicate-detect
          • Vl-print-certain-warnings
          • Duperhs-check
          • *vl-lint-help*
          • Lint-stmt-rewrite
          • Drop-missing-submodules
          • Check-case
          • Drop-user-submodules
          • Check-namespace
          • Vl-lint
        • Mlib
        • Server
        • Kit
        • Printer
        • Esim-vl
        • Well-formedness
      • Sv
      • Fgl
      • Vwsim
      • Vl
      • X86isa
      • Svl
      • Rtl
    • Software-verification
    • Math
    • Testing-utilities
  • Vl2014

Lint

A linting tool for Verilog and SystemVerilog.

A linter is a tool that looks for possible bugs in a program. We have used vl2014 to implement a linter for Verilog and SystemVerilog designs. It can scan your Verilog designs for potential bugs like size mismatches, unused wires, etc.

Note: Most of the documentation here is about the implementation of various linter checks. If you just want to run the linter on your own Verilog designs, you should see the VL kit. After building the kit, you should be able to run, e.g., vl lint --help to see the *vl-lint-help* message.

Subtopics

Vl-lintconfig-p
Command-line options for running vl lint.
Lucid
Check for unused, unset, spurious wires, and multiply driven wires.
Skip-detection
We try to detect missing signals from expressions.
Vl-lintresult-p
Results from running the linter.
Lint-warning-suppression
An attribute- mechanism for suppressing particular warnings when using lint.
Condcheck
Check for ?:-expressions with strange conditions.
Selfassigns
Simple check for self-assignments.
Leftright-check
Check for strange expressions like A [op] A.
Dupeinst-check
Check for module instances that are driving wires in identical ways.
Oddexpr-check
Check for odd expressions that might indicate precedence problems.
Remove-toohard
(Unsound transform). Remove from each module any assignments, instances, or inital/always blocks that have any "toohard" expressions in them, such as unresolved hierarchical identifiers, strings, function calls, system functions, and similar.
Qmarksize-check
Check the sizes of conditional expression tests.
Portcheck
Trivial check to make sure that each module's ports satisfy basic well-formedness conditions and agree with its port declarations and to issue style warnings for tricky ports.
Duplicate-detect
Check for instances and assignments that are literally identical.
Vl-print-certain-warnings
Print warnings of interest to standard output, while hiding other warnings.
Duperhs-check
Check for assignments with the same right-hand side.
*vl-lint-help*
Usage message for vl lint.
Lint-stmt-rewrite
(Unsound transform) eliminate $display and various other statements to cut down on noisy warnings about dropping unsupported constructs.
Drop-missing-submodules
(Unsound transform) Remove instances of missing submodules.
Check-case
Basic checker to ensure that wire names don't differ only by case.
Drop-user-submodules
(Unsound transform) Remove modules that the user says to drop, and simultaneously remove all instances of these submodules.
Check-namespace
A check for basic, incorrect constructs like name clashes.
Vl-lint
The vl lint command.