Knowledge Center
Knowledge Center


Removal of non-portable or suspicious code


Originally, Lint was the name attached to a Unix utility that could flag non-portable or suspicious C code. The name derives from unwanted bits of fluff from material. Lint is classified as a static analysis tool in that it does not execute the code, instead examining it based on a set of rules. Today, Lint is applied to many different languages including those used in the design of electronic systems.

As soon as RTL designers start writing code they will begin to introduce unintended errors. To eliminate these errors, designers will use a variety of tools to ensure the code is correct before hand-off. Functional errors are typically caught by a mix of static tools (auto-formal and assertion-based) and dynamic tools such as simulation.

Linting has the advantages in that it can deliver feedback about troublesome and even dangerous coding styles that would take a much longer time to uncover using simulation. With the right lint tool, you can catch the “low-hanging fruit” before tackling functional errors.

Lint tools often use policy files. Each policy file is intended to achieve a significantly greater level of maturity towards achieving quality RTL using a set of Lint rules. The policies can be tailored to apply across the broad spectrum of design types, but may be adjusted as needed. Design teams, after careful consideration, may skip individual steps in the flow in keeping with their priorities. Additionally, the sequence of policies is optimized to lend itself for early detection, faster debug and low noise. Here again, design teams may choose to re-order the recommendations based on their best practices.

One particular flow classifies HDL maturity into three stages of Initial, Mature and Handoff. The three stages are defined as follows:
Initial RTL – Initial RTL represents the early phase where the requirements may still be evolving. It ensures that regressions and builds failures are caught early.
Mature RTL – Modeling costs, simulation-synthesis mismatches, FSM complexity, etc. are higher order aspects of freeze-ready RTL that can significantly impact the design quality. The Mature RTL checks ensure necessary conditions for downstream interoperability.
Handoff RTL – At the handoff stage, the checks are geared towards compliance with industry standards or internal conventions, to allow easy integration and reuse.

Some of the initial content for this page provided by Real Intent


UPF-Aware Clock-Domain Crossing

Related Entities