Saturday, January 6, 2018

Min pulse width violation and fixing

http://tech.tdzire.com/what-is-minimum-pulse-width-check-and-pulse-absorption/

It is important for clock signal to ensure proper performance/functionality of sequential cells.

Definition:  
         This check ensures the width of clock should be more than min specified value.

Ensures that width of the clock signal is wide enough for the cell's internal operations to complete. i.e,.
It is min pulse width of the clock it has to maintain to get a stable output you need.

Impact:
       It can't capture at the edge of clock signal. So data may miss at that point.

Why does it shrink:
     Due to unequal rise and fall delays of combinational cells.

Detailed explanation:
Let us assume a clock entering a buffer. If the rise delay of that buffer is more than fall delay, the output clock will have less width than the input.

See the following figure which illustrates the same. So think of. what will happen to the same clock signal, when it passes through a series of same type of buffers. The width of the clock signal keeps decreasing, and at a point when the buffer delay is more than the clock pulse width, the clock pulse gets absorbed. This is known as Pulse absorption. So it is important to perform MPW check.


How to fix:
Keep symmetry rise and fall delays clock tree cells.

How to constrain in PT:

set  timing_enable_clock_constraints  true

#define min/max  pulse widths
set_pulse_clock_min_width
set_pulse_clock_max_width

#Remove/ignore MPW checks at particular sequential cells
remove_min_pulse_width

Query:
If asymmetric rise and fall delay cells present in the data path, what checks will be violated?
    - Data path delay means it is arrival time. If arrival time increases, setup violation comes otherwise hold violation comes.


From other website:
In ETS(or TEMPUS as the newest Cadence tool for STA is called), you will see a report like this:
In this example, the clock period is 6ns with a duty cycle of 50%.i.e. Here, the clock signal at clk_ctrl_reg/CP should be high at least for 0.3202ns (please note that the default time unit is ps in TEMPUS). The actual signal is high for 2.9731ns. Hence there is no minimum pulse width violation at the CP pin for src_clk.
Constraining the design
Now, let us see how you can specify this constraint for your design.
  1. Using .lib file
  2. Minimum pulse width depends on the technology node and the standard cell library design. You will have these modeled in your .lib file. Look for timing_type : min_pulse_width; in your liberty file. These will be defined for clock, reset and preset pins of a flop, or the enable pin of a latch.
    The index_1 is the transition at pin CP, and the last value in the table is the max_transition of the pin. The values denote the minimum pulse width values for the pin transition specified.
  3. SDC command ‘set_min_pulse_width’
  4. To specifically set the minimum pulse width constraint, you can use the command set_min_pulse_width
    If neither high now low is specified the constraint applies to both high and low signal levels.
Reporting the violations
You can use in majority of STA tool, report_timing or a similar command.
You can also use the command report_min_pulse_widthin TEMPUS to report the pulse width values.

Thursday, January 4, 2018

Design Rule Checks: max trans, max cap

Two of the frequently used design rules for STA are max transition and max capacitance. These rules check that all ports and pins in the design meet the specified limits for transition time1 and capacitance. These limits can be specified using: 
·      set_max_transition
·      set_max_capacitance

As part of the STA, any violations to these design rules are reported in terms of slack. Here are some examples. set_max_transition 0.6 IOBANK # Sets a limit of 600ps on IOBANK. set_max_capacitance 0.5 [current_design] # Max capacitance is set to 0.5pf on all nets in # current design.

Two of the frequently used design rules for STA are
         i) max transition
         ii) max capacitance

These rules check that all ports and pins in the design meet the specified limits for transition time
and capacitance. These limits can be specified using:
     • set_max_transition
     • set_max_capacitance

As part of the STA, any violations to these design rules are reported in terms of slack. Here are some examples.

set_max_transition 0.6 IOBANK
# Sets a limit of 600ps on IOBANK.

set_max_capacitance 0.5 [current_design]
# Max capacitance is set to 0.5pf on all nets in current design.

The capacitance on a net is calculated by taking the sum of all the pin capacitances plus any IO load plus any interconnect capacitance on the net.


There are other design rule checks that can also be specified for a design.

These are:
set_max_fanout
(specifies a fanout limit on all pins in design),

set_max_area
(for a design); however these checks apply for synthesis and not for STA.


Timing Exceptions

Timing Exceptions 

Timing exceptions are nothing but constraints which don’t follow the default when doing timing analysis. The different kinds of timing exceptions are

1. False path: If any path does not affect the output and does not contribute to the delay of the circuit then that path is called false path. Examples for paths are shown below.
a) Asynchronous paths
b) static paths
c) Non-functional paths

2. Multi-cycle Path : Multicycle paths in a design are the paths that require more than one clock cycle. Therefore they require special Multicycle setup and hold-time calculations


3. Min/Max Path : This path must match a delay constraint that matches a specific value. It is not an integer like the multicycle path. For example:Delay from one point to another max: 1.67ns; min: 1.87ns


4. Disabled Timing Arcs : The input to the output arc in a gate is disabled.
 For e.g. 3 input and gate (a, b, c) and output (out). If you want you can disable the path from input ‘a’ to output ‘out’ using disable timing arc constraint.




Different paths:
False path:
·      Not a valid path for TIMING (setup and hold across different clock domains)
·      Need not worry to meet setup and hold constraints for this path
E.g.:  (i) All asynchronous paths
            (ii) static paths (Timing for RESET pin)
            (iii) Non-functional paths







Static path:











Non-functional path:

­Multi Cycle paths:



False paths basics and examples

Interview Queries

1. What are worst setup and hold corners? why?
2. Difference b/w CW and RCW corners? Which is the worst case out of these two?
3. What are the different checks we do during timing sign-off?
4. What is MPW?
5. What checks or happens of symmetric rise/fall cells are not there in data path?
6. What are your roles in qualcomm?
        - ECO fixing
                 Tweaker, PT ECO and manual
        - Setting Flat and hier runs
        -  constraints validation
        - Full flat runs
        - Automation in perl and tcl

7. ECO Fixing:
which tools do you use
what is the procedure

8. Why hier runs are needed and what is the diff b/w flat and hier?
9.Do you generate constraints?
10. What validation do you do for constraints?
11. What are pvt corners and voltages for setup and hold>
12. If SDF and netlists are given, what is procedure do you follow for HOLD free design at gate level?
13. What is the clock uncertainity for setup (60ps)?
14 .Freq - 1.4 GHz
15. Design - 2 million gates
16. Logic depth - 20 levels
17. What kind of ECOs you have given>
both block level as well as interface ECO
mainly setup and hold
DRC (min tran and max cap)
Leakage

18. Which vt ?
Mixed one
Mostly LVT (80%)
RVT (10%)
10% ULVT

19.