Usually, designers are required to run lint after completing RTL coding. This helps to avoid explicit typos and improve code quality. In modern ASIC design flow, lint is a must for RTL sign-off.
Lint is considered to be a formal check, i.e., it does not require stimuli. The most commonly used lint tool is Synopsys Spyglass Lint. Spyglass Lint helps to detect various of RTL errors, among which the most critical ones include:
- Inputs to the module have no driver
- Outputs from the module have no loads
- The addition and subtraction operations do not take overflow into account
- The Right Hand Side / RHS of multiplication operation does not have enough bits to count for the final product
- The widths of RHS and LHS do not match
- There exists self-determined expressions in RTL
- Incorrect usage of blocking and non-blocking assignments
If you know any other critical lint errors, you are welcome to add them in the comments.