0% found this document useful (0 votes)
353 views10 pages

Netlist Quality Checks Overview

The document outlines essential netlist quality checks post-synthesis, including checks for no clocks, unconstraint endpoints, timing violations, and logical equivalence checks (LEC). It emphasizes the importance of correcting RTL and constraint files to resolve issues and provides commands for each check. Additionally, it addresses common errors in synthesis and their solutions, highlighting the significance of proper design constraints and timing management.

Uploaded by

mahesh bagari
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
353 views10 pages

Netlist Quality Checks Overview

The document outlines essential netlist quality checks post-synthesis, including checks for no clocks, unconstraint endpoints, timing violations, and logical equivalence checks (LEC). It emphasizes the importance of correcting RTL and constraint files to resolve issues and provides commands for each check. Additionally, it addresses common errors in synthesis and their solutions, highlighting the significance of proper design constraints and timing management.

Uploaded by

mahesh bagari
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Netlist quality checks

Below are certain checks that, should be fulfilled post-synthesis to ensure netlist
qualifications before it is delivered for physical implementation.

1. No Clocks:

In this check, we ensure that all the required clocks reach the sync points. Some
major reasons for getting no clock violation in design are mentioned below:

Clock definition missing: This is observed when clock creation is missing in the
clock constraint file.
RTL connectivity issue/Tie off: This type of no clock is observed when there is
missing connectivity in between modules in the RTL or having direct tie-offs in
the RTL.

Impact: Ideally, all the registers in the design should be clocked. If no clock issue
is left in the design, then it will report unconstraint endpoints and can cause
optimization issues on such paths.

Solution: To resolve the above-mentioned no clocks violation, we need to get


the corrected RTL (from the designer) and clock constraints files with all the
required clock definitions.

Command: check_timing -include {no_clock}

2. Unconstraint end-points:

This is due to the missing IO constraints, clock definitions, or due to some


exceptions at the sequential cells or ports. Possible reasons are case constant, no
arrival path, or false path.

Impact: If IO constraints are missing in the design, then the external launch time
for the input path or the capture time for the output path will be missed. It can
cause an incomplete timing check. If the path is expected to be false, it could
lead to an incorrect timing check.

Solution: To resolve these problems, we need the correct constraint file (sdc),
which defines all the required clocks used in the design, IO delays on all the
required ports, verified false path, and case constants in design.

Command: check_timing -include {unconstrained_endpoints}

3. Timing:

In this check, the entire design is divided into timing paths. For each timing path,
the delay is calculated and checks violation based on timing constraints (clock
period, clock uncertainty, and setup time). The major reasons for having timing
violations are- levels of logic, incorrect/missing constraints such as clock
relations, clock exceptions, and incorrect uncertainty.

Impact: If a huge timing violation is reported at the synthesis, this violation will
be difficult to fix at later stages (PNR/ECO), which also impacts the power and
area.
Solution: The techniques used to resolve/reduce timing violations are user-
defined path groups with appreciate weightage, by disabling selectively/entirely
multibit banking in design, bound creation, using timing efforts high or
incremental compilation. If we are performing Physical Aware synthesis, it is
expected to have a good macro placement that improves timing violations.

Command: report_timing or report_qor

4. LEC:

This is one of the important checks that validate the correctness of the netlist
concerning the RTL.

It is recommended to perform this check when there is an update in the RTL or


netlist. Generally, in the synthesis LEC, a check is performed between the RTL vs
synthesize netlist and synthesize netlist vs post scan netlist.

General issues due to which the LEC can fail are as follows:

 CSN Missing: The missing CSN (Connect Supply Net) can lead to LEC failure.

 Isolation cell mapping: When there is an issue with UPF constraint, then there
could be a possibility of having different isolation cells, mapped in between
the RTL and synthesize netlist, that may cause LEC failure.

 Undriven Nets: If we have undriven nets in the RTL, the synthesize tool will tie
off these nets causing LEC failure. This can be resolved by getting the RTL
fixed or if the undriven is expected, then you need to use undriven constraints
to pass the LEC.

Constraint used (formality): set_constants <net_name> <0/1>

Impact: If the LEC is not clean then the equivalence is not maintained between
the RTL and netlist which can lead to functionality failure.

EDA Tool: Formality from Synopsys, conformal from Cadence

5. Timing loop:

In the RTL, if in between combo logic, the output is again feed to the same input
of combo logic that forms a logical loop, this loop is called the timing loop. We
can get the timing loops due to RTL connectivity issues in design that, which can
lead to meta-stable data, thus, we should avoid timing loops while netlist
generation.

Impact: The path with timing loops will not have endpoints. If such loops are not
broken then the path will not be correctly timed.

Solution: If we are getting timing loops that are expected to have then in such
case, we need to use the constraint to break such timing loops. If such timing
loops are not expected in design, then we need to get the updated RTL.

Command: check_timing -include {loops}


6. Empty module:

If the RTL module definitions don’t have any logical content such as wire, inputs,
or outputs, then such modules are called empty modules. This check is
performed before compilation.

By default, empty modules are removed during synthesis. If we want to preserve


this empty module, we need to apply constraint (set_dont_touch) on that module
before compilation.
Command: check_design
7. Removed Flop:

If the register is removed during compilation and optimization, then such flop is
reported as removed flops. If the register is either unloaded or constant, then by
default during compilation such flip flop is removed from the design.

If such flip flops are expected in design, then we need to use certain constraints
to preserve this.

Command:
report_unloaded_registers
report_constant_registers

8. Floating pins and multidriven pins:

In the design there might be a possibility that a few of the pins are not connected
to any element present in the design. Such pins are known as floating pins. While
performing optimization, such floating pins cells might get optimized due to
which there could be a breakdown in logic.

Multidriven nets are detected when there is more than one input connected to
the same net from different modules. This is not accepted in design and you need
to fix this issue. It requires RTL correction to resolve this issue.

9. Latches:

The latches are not expected in design and during compilation, the tool gives a
warning if the design infers a latch. Below are a few reasons why a latch is not
preferred in design:

 As latches are level triggers and can change the output at an active level of
the clock.

 The latch output is stable only at an inactive level of the clock cycle, due to
which the entire clock cycle is not utilized for timing check
Design Exchange Format (DEF file): The Design Exchange (DEF) file is
an ASCII representation of physical information of the design. DEF contains
Property definition, Die area, Row definition, Physical cell definition, STD
cell definition, special net, regular nets, port, blockages, module constraints
etc.

Physical Library (LEF): It contains all the physical information about the
cells (Technology and Macro cells) and nets. It also contains the Layer
definitions, Metal capacitance definitions, Macro cell definitions, macro cell
dimensions, Layout of pins, Blockages information, DRC information given
by foundry etc.

Link library

A link library is a collection of cells that are used to describe the function
of mapped cells prior to optimization. The link library is typically used to
provide cells that are not available in the target library, such as RAMs,
ROMs, and macros. The link library can contain cells from any technology
library, but it is typically recommended to use the same technology
library for the target library and the link library.

Target library

the technology library you want to map to during synthesis. Target library is
used for technology mapping. All the combo (AND, NAND, NOT, etc) and the
sequential (SDFF, DFF, etc) are mapped to equivalent gates from the target.
Synthesis is about converting RTL to gates.

Q. Can we do synthesis without giving timing constraints?

Yes, it is possible to do synthesis without giving timing constraints. However,


the resulting design may not meet the timing requirements of the design.
Q. Can we do synthesis without giving timing constraints?

Yes, it is possible to do synthesis without giving timing constraints. However, the


resulting design may not meet the timing requirements of the design.

ISSUE:

1. Syntax Errors

Description: These errors occur when the code written in Hardware


Description Languages (HDLs) like VHDL or Verilog does not conform to
the syntax rules of the language.

Fix: Review the HDL code for typos, missing semicolons, incorrect use of
keywords, and ensure proper module and port definitions.

2. Semantic Errors

Description: These errors arise when the code is syntactically correct but
does not make sense logically (e.g., using signals before they are
defined).

Fix: Check the logic of the design, ensure that all signals are properly
declared and initialized, and validate the intended functionality against
the specifications.

3. Timing Violations

Description: Timing violations occur when the design does not meet the
required setup, hold, or clock- to-output timing constraints.

Fix: Optimize critical paths by:

Adjusting the placement of

components. Changing the clock

speed.
Adding pipeline stages to distribute

logic delays. Using faster

components if feasible.

4. Resource Constraints

Description: This error happens when the design exceeds the available
resources on the target FPGA or ASIC, such as logic cells, memory blocks,
or I/O pins.

Fix:

Optimize the design to reduce resource usage (e.g., through

logic minimization). Use hierarchical design to manage

complexity

Partition the design if possible, or choose a target device with more resources.

5. Connectivity Errors

Description: These errors occur when there are issues with signal
connections, such as unconnected ports or incorrect connections
between modules.

Fix:

Use design rule checks (DRC) to identify

unconnected nets. Carefully review the

interconnections between modules.

Ensure that all ports are correctly connected and accounted for.

6. Functional Errors

Description: These errors occur when the synthesized design does not
produce the expected output for given inputs.

Fix:

Simulate the design using testbenches to verify

functionality. Review the logic to ensure it

matches the intended algorithm.

Use assertions and formal verification tools to catch discrepancies.


7. Optimization Errors

Description: Errors can arise from overly aggressive optimization that alters

the intended functionality. Fix:

Review optimization settings in the synthesis tool.

Disable certain optimizations that may lead to functional changes and re-
synthesize.

8. Tool-Specific Errors

Description: These are errors specific to the synthesis tool being used, such
as licensing issues, bugs, or compatibility problems with the design files.

Fix:

Check the tool documentation for known issues and updates.

Ensure that you are using the correct version of the tool compatible with

your design files. Contact support for assistance with tool-specific

issues.

Real issue

Unresolved reference at elab stage in which module is missing and its logic
definition is also missing :-

Solution :- suppose there is Module say cvp_mme and its missing out design
we can add lib and lef to particular module so unresolved reference
resolved

As if we get unresolved reference then linking is not proper to our design it


fails . As module is not linked to sub module .

Logic of level is high in our design :-

Reason :- As in datapath combinal cell is taking more delay as result setup


is violate when clock reach to endpoint .
So how many number of cells is required in combination cell so that our setup
is not violate. As in synthesis we have to reduce setup violation.

Solution :- Replace lvt cells by hvt cells .

Which cell is taking more delay swap it lower drive strength

Upf cells is missing :- In synthesis some upf cells were

missing we can do Report_lp_ cells

So it report which cell is missing and we inform to upf power team so that
they will update in upf .
Sta :-

Issues seen in sta :-

1. In pre layout unlocked flop I seen in my design. So register is not


getting clock it coming from source but in between it doesn't reach to
particular pin of flop

Solution:- when u trace back through get_chain_selection

Then I found there is exception is applied on that path where

clock is not reaching... May be set_disable_timing or

set_false_path is applied .on that particular path So thats why it

is getting unclocked register

2. Bolna ki unconstrained endpoint I seen bolna if we solved


unclocked then unconstrained endpoint also gone .

Means unconstrained we are getting because proper constraint nhi milta


endpoint pe .

So is liye batata hai unconstrained endpoint.

Divide by 1 circuit create_generate_clock -combinational main use krte hai

Kyuki humko combinational path ke through generate clock dena padta hai
toh agar koi si frequency denge divide by 1 toh woh whi frequency output
tak jayegi through combinational cells

Cross-talk affects both Setup and Hold, just that depends on both the signals
switching direction. Hold may get affected if both switches in the same
direction & Setup gets affected if both switches in the opposite direction

Common questions

Powered by AI

Tool-specific errors can result in synthesis failures due to issues like licensing problems, compatibility conflicts, or inherent tool bugs. Diagnosing these involves consulting tool documentation, ensuring proper version usage, and seeking developer support. Efficient resolution requires timely tool updates and compatibility checks .

Empty modules, defined as RTL modules without logical content, typically arise if the module definitions lack inputs, outputs, or wires. These modules are usually removed by default during synthesis unless preserved using a 'set_dont_touch' constraint before compilation .

Floating pins, being unconnected, can lead to breakdowns in logic optimization, while multidriven pins, caused by multiple inputs to the same net, violate design guidelines. These issues require RTL correction to ensure proper connectivity and signal integrity .

Latches are discouraged because they are level-sensitive, which can cause timing uncertainties and underutilization of clock cycles. However, their presence might be justified in specific cases where level-sensitive behavior is needed, provided their timing and stability are meticulously managed .

No Clocks violations occur when required clocks do not reach sync points due to missing clock definitions or RTL connectivity issues. These violations lead to unconstraint endpoints, causing optimization issues and potentially hindering design functionality. Solutions include obtaining a corrected RTL and updated clock constraint files with all required clock definitions .

Semantic errors, arising from logical inaccuracies despite correct syntax, complicate verification by causing mismatches between intended and actual design functionality. Mitigation includes validating signal declarations and initializations, and comparing design logic against specifications through simulations .

Addressing timing violations during synthesis is critical because unresolved violations can be challenging to fix in later stages like PNR/ECO, potentially impacting power and area. To mitigate these, strategies include disabling multibit banking, creating path groups, using high timing efforts, and performing Physical Aware synthesis for better macro placement .

Cross-talk affects timing by altering signal propagation delays, impacting setup timing when signals switch in opposite directions and hold timing when they switch in the same direction. This interference can lead to timing violations if not properly managed .

LEC is crucial for ensuring that the synthesized netlist maintains equivalence with the original RTL, preventing functionality failures. Common issues leading to LEC failures include missing CSN, mismatches in isolation cell mapping due to UPF constraints, and undriven nets in the RTL . Solutions involve fixing the RTL or applying the necessary constraints .

Link libraries help define the functionality of unmapped cells prior to optimization, ensuring that all design components are correctly represented. Choosing the correct library is crucial as it impacts the mapping to equivalent gates and the overall design functionality, making it critical for integration and optimization .

You might also like