top of page
Writer's picturesaumil vora

Sanity Checks in Physical Design

Updated: Apr 1, 2021

Hello Readers...!


Sanity check is a basic test to evaluate the design inputs. It is always advisable to run the sanity check before starting the PnR flow. This will ensure designer that the input files required for the physical implementation are accurate and any mismatch does not exist.


At the backend stage, mainly four types of sanity checks are performed.

1. Library Check

2. Design (or Netlist) Check

3. Constraints Check

4. Timing Check


1. Library Check:

There are two types of libraries available for physical implementation and they are physical (lef) and logical libraries (lib). For each cell used in the design (netlist), its physial and logical information must be present in the respective libraries. So basic idea of performing this test is to check there is a consistency between physical and logical library.

If any particular cell used in the design does not have LEF view or missing any timing/power/logic information than we can resolve the issue at this stage itself. Command to perform library check is check_library


2. Design (or Netlist) Check

The purpose of this test is to check that the netlist provided by the front-end team is unique and accurate. By unique netlist it means that there is only one main module in the design. Other checks carried out are:

  • Floating nets and/or input pins

  • Unconnected output pins

  • Multi-driven net/pin

  • Unconstrained pins

  • Don't use or don't touch cell used in the design

  • Combinational path having a loop

To run this check use the following command after reading in the netlist in PnR tool:

check_design


3. Constraints Check

To calculate the timing of a path, it has to be constrained. This test is performed to check that all paths on which timing analysis has to be carried out are constrained. Below issues can be captured with the constraints check:

  • Clock not reaching the clock pin of the sequential cell

  • Input/Output delay not defined on any IO port

  • Input/Output port missing the slew or load information

  • Ideal clock waveform

  • Unconstrained endpoints

  • Missing or inappropriate clock definition in SDC file

  • Multiple clock driving the same sequential cell

Command to check for the missing constraint is check_timing


4. Timing Check

Prior to kick-start the PnR flow it is important to check the critical path timing in the design. If timing is too bad at this stage than PnR tool will end up by adding a lot of buffers/inverters to converge the violating paths. If any architecture change is required in the design, it can be evaluated at this stage itself. Command to check timing at pre-place stage is:

time_design -pre_place

2,239 views0 comments

Comments


bottom of page