Linting is a process of Static code analysis of the RTL design, to check the quality of the code using thousands of guidelines/rules, based on some good coding practice. When these guidelines are violated, lint tool raises a flag either for review or waiver by design engineers. This is done before simulation once the RTL design is ready. The main objective of doing linting is to come up with a clean RTL before proceeding into the lengthy back end stages in the ASIC Design Cycle. This process reduces the synthesis errors and functional bugs in the design. Also it improves the coding styles for readability and reduces synthesis and simulation mismatch issues..
Linting provides an insight into the RTL code at the early stage of a design. Linting saves a good amount of time by identifying coding mistakes and recommending a fix at the initial stage of a design there by boosting the confidence of the RTL Design Engineer. Below are some examples of problems it addresses and raises a flag accordingly.
- Are there any unintentional Latches?
- Are there any set/reset conflicts?
- Are there any Out of Range indexing?
- Are there any combinational loops in the design?.
- Are there any multi driven ports/nets in the design?.
- Are there any non-synthesizable blocks in the design?
- Are there any undriven nets in the design?
- Are there any asynchronous resets in the design?
Lint can identify many errors which may or may not be caught by the functional simulators. If a lint is not performed for a design before passing it to the synthesis team, there is a high possibility that it causes issues during synthesis , could be due to some unintentional combinational loops, non-synthesizable code and multi-driven nets. As it costs a lot in terms of time and a design resources if the RTL design has to go through the same design phases again due to some bugs found at the later stages of a design flow.
List of some Lint Tools used in the VLSI industry are given below.
- SPYGLASS from Synopsys
- GASPER GOLD from Cadence
- ALINT PRO from Aldec
- Mentor Graphics (inbuilt with HDL Designer)