Linting

In general Lint tools that flag suspicious and non- portable usage of language construct in any programming language. It points out the code where it likely to be bugs. In chip design world Lint tools (some time referred as Design Rule Checker) check the cleanness and portability of the HDLs code for various EDA tools. Usually compiler does not show the errors and warnings which detected by lint tools. There are many advantages of it, for example when design style enforced by lint tool it avoids a situation where the synthesis tools implements something different than expected from RTL code.
For example consider the following Verilog code. Lint Check example

module lint_check (x, y, z);
input x;
input y;
output z;
assign z= x + y;
Endmodule

This example is completely ok with compiler. Complier does not generate warning. In the above code by default the output variable ‘z’ is a wire. It is not necessary declare it as a wire. But some (not every) synthesis tools may need it to be declared it as a wire.

If Lint tool applied on the code before the synthesis, it points out the above mistake. This is just one example. There are many standards and lint check rules are available. Here are some example for rules, coding style, DFT, design style, language constructs, synthesis and also possible to include custom rule checking. It is possible to select/deselect the rules/standards during lint checking. It completely depends on the need of the particular environment and design. Lint check rule can be stand alone or it can be integrated with come verification environment. Spyglass is a stand alone Lint tool, nLint integrated with Verdi and Debussy debug systems. Leda (Synopsys call it ‘RTL checker’) Black-Tie from cadence are some other Lint tools in the market.