Tempus
Tempus
Tempus
Introduction
● Why Tempus ?
● What we can do in Tempus ?
2
Timing Analysis
3
Design Import
● Input Requirements
○ Timing Libraries (Liberty dotlib files)
○ Verilog Netlist
○ SDC Constraints
○ Parasitic Data (SPEF)
● Design Import Flow
○ Read all the inputs
○ Link design
○ Update timing
○ Generate reports
● Performing Sanity Checks
○ check_design
○ check_timing
●
4
Types of analysis
What is Mode?
What is Corner?
What is view?
Types are:
5
run.tcl
6
7
8
Reports.tcl
9
Command: report_constraints -all_violators -early
10
Command: report_constraints -all_violators -drv_violation_type max_transition
11
Related Commands
● To display DRV violations
○ report_constraints -all_violators -drv_violation_type max_capacitance
○ report_constraints -all_violators -drv_violation_type min_transition
○ report_constraints -all_violators -drv_violation_type min_capacitance
○ report_constraints -all_violators -drv_violation_type max_fanout
○ report_constraints -all_violators -drv_violation_type min_fanout
● To display setup violations
○ report_timing -check_type setup
○ report_timing -late
○ report_constraints -all_violators -late
● To display hold violations
○ report_timing -check_type hold
○ report_timing -early
○ report_constraints -all_violators -early
● 12
Fixing Techniques
Setup : Take all violated paths and analyse the cell delays on data path.
● Upsize
● Vt swapping (HVT to LVT)
● Adding a buffer
Hold : Take all hold violated endpoints and add delay buffer with respect to negative slack if slack is
more then we add more delay buffers .
● Downsize
● Vt swapping (LVT to HVT)
Tran : If there is more load on particular net, then we need better transition to drive the net. So we
take the net driver and add one appropriate buffer on driver input side to improve transition.
Cap : If particular net having more fanout cells than the available load that impacts a cap violations
in other words charging and discharging takes more time . So we can split the load to perform a
cloning or add buffer at the driver output side. 13
Fixing of violations through ECO Opt
The only command to fix eco timing db is write_eco_opt_db. By using this design it
automatically create ecoTimingDB.
more balatran8_7_19 | grep "/D" | awk '{ print “add_repeater -term ”$1 “ -cell BUF_X16”}' 15
This is the file we need to source in our design for fixing of DRCs (max_tran) manually.
16
Multi-Mode Multi Corner
17
18
19
20
21
● For fixing of Timing violations, need to set view analysis mode to one view.
Commands:
22
● The script below shows all violators based on all views
● Here all the violators are fixed through ECO optimization techniques.
23
Initial Summary
Hold Analysis :
25
Initial Summary: Final Summary:
● SI Delay Analysis
● SI Glitch Analysis
SI Delay Analysis :
● SI can increase or decrease signal delay, which can, in turn cause setup or hold failures.
● Consider that attacker A1 switches in the opposite direction to the victim, as shown in the figure below, then
there can be a potential increase in the victim delay.
● SI can also decrease the delay and cause hold time failures. If both the attacker and victim are switching in the
same direction, as shown in the figure below, then there is a decrease in the victim net delay. If this occurs on a
critical minimum delay path, it can lead to hold violations.
28
SI Delay increases SI Delay decreases
29
SI enabling switches
● set_si_mode –individual_attacker_threshold 0.015
(Set the individual attacker threshold)
30
SI enabling switches
● set_delay_cal_mode –siAware true
(Enable signal integrity (SI) analysis)
31
Fixing of SI glitch through ECOs
● The below example shows fixing Si glitch violations only:
● The below example shows fixing of SI glitch violations using DRV fixing in addition to regular
max_tran/max_cap violations:
32
ECO generated glitch files
33
This is the file generated for innovus team (PNR)
34
Functional ECO
Ibias pin
read_spi
dma spi
35
Adding a functional cell in between modules
read_
spi
newnet
dma spi
ibias( net)
Ibias
pin
36
Commands to add Functional ECO
● detach_net read_spi SPI_INST/p214748365A/B1
● add_inst ecoAND FreePDK45_lib_v1.0/AND2_X1
● add_net balanet
● attach_net balanet ecoAND/A1
● attach_net balanet SPI_INST/p214748365A/B1
● attach_net read_spi ecoAND/ZN
● attach_net ibias ecoAND/A2
By using above commands we can add a cell in between modules. This we called it as
Functional ECO
37
Conclusion
38