Professional Documents
Culture Documents
Low Power Design
Low Power Design
Tool Version
TEMPUS 16.20
Innovus 16.20
Nov – 2016
Tempus Timing Signoff Optimization
Table of Contents
I. INTRODUCTION .................................................................................................................................... 3
A. How to get the RAK Database .................................................................................................... 4
B. Directory Structure ..................................................................................................................... 4
C. Tools and Scripts ......................................................................................................................... 5
D. Terminology and Typographical Conventions ............................................................................ 5
E. Design ......................................................................................................................................... 6
F. Lab Flow ...................................................................................................................................... 6
Lab 1: MMMC SignOff at block level ....................................................................................................... 8
A. Lab1.1 : Fixing Hold timing violations ......................................................................................... 8
B. Lab1.2 : Fixing Hold timing violations with customizations...................................................... 17
C. Lab1.3 : Fixing Design Rule violations ....................................................................................... 20
D. Lab1.4 : Fixing DRV, Hold and Setup in one session ................................................................. 22
Lab 2 : Hierarchical Chip Finishing with Tempus ECO in Master/Clone mode ...................................... 26
A. Lab2.1 : Timing closure on Hierarchical design in Tempus....................................................... 26
Lab 3: Optimize Leakage/Timing with PBA ........................................................................................... 35
A. Lab3.1 : Optimizing Leakage in PBA mode ............................................................................... 35
Lab 4: Running Tempus ECO in Innovus ................................................................................................ 39
A. Lab4.1 : Optimizing DRV/Hold in PBA mode ............................................................................ 39
B. Lab4.2 : Optimizing Leakage in PBA mode ............................................................................... 42
In the following labs, you will learn how to perform ECOs for solving Hold, Setup and DRV timing
violations on a Dual Tone Multi Frequency (DTMF) design using Cadence Tempus and the Innovus
Digital Implementation System.
One Lab will cover Tempus ECO fixing on a block level design, the second Lab will cover Hierarchical
Chip finishing using Tempus ECO, the third Lab will show how to optimize Leakage/Timing in Path
Based Analysis mode and the fourth Lab will illustrate how to run Tempus ECO from Innovus cockpit.
It is recommended to run the Labs in the order they are described in this document, but since they
are each independent, you can directly jump to the one you are interested in.
Understand and perform all the steps required before starting the ECO process
NOTE: The Tempus ECO feature does require a Tempus ECO license.
_____________________________________________________________________
The RAK testcase database, Scripts and References can be found at ‘Attachments’ and ‘Related
Solutions’ sections below the PDF.
This pdf can also be searched with the document 'Title' on https://support.cadence.com
B. Directory Structure
<my_dir>/
design/
design_hier/
design_PBA/
docs/
libs/
scripts/
scripts_hier/
scripts_PBA/
scripts_SOD/
work/
work_hier/
work_PBA
work_SOD
The docs/ directory contain the Tempus ECO Lab Instructions and Presentation documents:
Tempus162_MMMC_ECO_RAK_Labs.pdf
Tempus162_MMMC_ECO_RAK_slides.pdf
Review this presentation before starting the labs, and use them as a reference throughout the
labs.
_____________________________________________________________________
This lab uses Tempus and the Innovus Digital Implementation. Make sure you have the following
versions installed:
TEMPUS 16.20
Innovus 16.20
Note: You must use the same tool version and environment (scripts, libraries, constraints, and so
on) throughout the design cycle (in other words, in the tapeout flow and for the ECO).
_____________________________________________________________________
DB = Database
GTD = Global Timing Debug environment available in the Tempus Graphical Interface under the
Analysis tab.
Throughout this lab, anything to be typed as shown is in bold italics, along with a typical
command prompt. For instance,
cd $WS_DIR/work/
Also, during this lab, anything printed in ”blue Courier font style” is representing
information that can be visible in a file (either a script or a log file)
_____________________________________________________________________
E. Design
Seven clocks
Note: This design is mapped on Cadence open source Libraries, so this explains why the clock
period and cell delay are probably larger than usual.
_____________________________________________________________________
F. Lab Flow
The following describes the overall Tempus ECO methodology for the labs when Tempus is the
main cockpit; this is also described in the Tempus ECO presentation document:
Tempus ECO is able to load and optimize timing on previously generated ECO Timing DB.
This allows keeping current D-MMMC SignOff STA environment to generate timing
information per views on an unlimited amount of views. In this session, user will
generate those ECO Timing DBs and can debug the timing using GTD feature.
Once the ECO Timing DB are generated, you can load all (or just some) of them in a
single session in order to perform timing fixing. The tool will automatically generate an
ECO file containing all the netlist change needed to close timing on the design.
The ECOs must be applied in an implementation tool in order to update the physical
context, meaning doing ECO routing. No placement refinement is needed because the
ECOs generated are fully legal since Tempus ECO is Physical-Aware. At the end of that
phase a new Verilog/DEF set will be generated and new SPEF files will be dumped.
With the new set of Verilog/DEF/SPEF containing the ECOs, user will perform a final
round of SignOff STA in D-MMMC mode and investigate the resulting timing in GTD
feature.
In the last Lab, when Innovus in the main cockpit, only one script is provided and it will run the
full flow.
Overview: Demonstrate the automated ECO timing closure flow using Tempus and Innovus
Digital Implementation tools.
Timing violations: The initial design contains some Hold timing violations that should be fixed
before going to TapeOut.
Goal: The Hold timing violations must be fixed without impacting Setup timing and without
creating any Design Rule Violations.
Location:
cd <MY_DIR>/work/
Steps:
cat ../scripts/run_session1.tcl
You can see that this file contains the minimum and standard required commands to perform a
D-MMMC SignOff timing analysis run on 36 actives views.
set_distribute_host -local
distribute_read_design -design_script
../scripts/loadDesign_DMMMC.tcl -outdir sta
cat ../scripts/loadDesign_DMMMC.tcl
This file contains the design data that must be loaded to perform a D-MMMC SignOff timing
analysis. This one also is a standard file, except that LEF/DEF data are being loaded.
read_view_definition ../design/viewDefinition.tcl
read_verilog
"../design/ECO_INIT_11_optSetup.enc.dat/dtmf_recvr_core.v.gz"
set_top_module dtmf_recvr_core -ignore_undefined_cell
read_def "../design/full.def"
Note: The LEF/DEF data are not needed to time the design or to generate the ECO Timing DB,
but since we will use the same script to load the design in all the sessions: STA and ECO,
therefore loading of physical data was added.
cat ../scripts/sta.tcl
This file contains the SPEF files location and the SignOff SI timing analysis settings/reporting
commands. At the end of the file, the only needed command to generate an ECO Timing DB is
write_eco_opt_db.
source ../scripts/spef.tcl
set_delay_cal_mode -SIAware true
write_eco_opt_db
This will run Tempus to perform SignOff SI timing analysis, then dump a Timing ECO DB per view
and ends by opening up GTD for timing investigation. Once the run is completed, please go to
the “Analysis” tab to have a complete view of the initial timing.
- Which timing view has the most Hold timing violations? __________________
- Which timing view has the least Hold timing violations? __________________
In MMMC SignOff timing analysis environment some timing violations are in every timing views
and some are only in a few views. The goal is to fix every timing violation without creating any
new timing violations in any of the views.
There are some IO paths Hold violations and some register-to-register paths Hold violations. The
range of the Hold violations are quite high on this technology but the Tempus ECO feature will
insert the right number of ECO buffers to fix them all at the minimum area cost.
Now, go back to the shell and type “Resume” in order to load the Setup timing analysis in the
“Analysis” tab.
- How many views are violated in Setup out of the 36 total views? __________
- How many violated paths are there in the worst view? __________________
ls ecoTimingDB/
In the current working directory you can see that a new directory was created and it contains the
ECO Timing DB per view. Those are the one needed for the next step.
cat ../scripts/run_session2.tcl
This is the file containing the necessary commands to load the design with physical data, to load
the MMMC environment settings and to set up the Tempus ECO fixing feature command called
eco_opt_design.
source ../scripts/loadDesign_DMMMC.tcl
source ../scripts/spef.tcl
You can note that the location of the SPEF files must be provided before running
eco_opt_design command since that is mandatory to perform precise timing evaluation during
the fixing process.
This will execute the script that runs Signoff ECO timing fixing.
more LOG_session2.log
This is the log file of the fixing SignOff ECO timing fixing session. By browsing through it please
provide answers to the following questions:
- What are the initial Hold timing WNS; TNS; No. of Viol paths? _________________
- What are the initial Setup timing WNS; TNS; No. of Viol paths? _________________
- Do you see any degradation in the final Setup timing or DRV? _______________
- How many buffers were inserted to fix the Hold timing violations? ____________
Open up the Graphical User Interface by typing the “start_gui” command and click on the
“Layout” tab. On this form you can see that TEMPUS has a full view of the placement and the
routing. You can remove the net visibility, by unselecting the left check box next to “Net” in the
“Layer Control” menu.
The ECO buffers have been highlighted in white. You can verify that all of them are located in
fully legal locations.
You can exit the TEMPUS session and check what ECOs are being done in the ECO file.
cat eco_innovus.tcl
This file contains the ECO instruction that will be sourced in Innovus in the next step. You can
scan over it and find out that it contains a list of ecoAddRepeater commands, with physical
information, which are natively supported by Innovus release.
cat ../scripts/run_PlaceAndRoute.tcl
This is the file containing the necessary commands to load the design in Innovus, to source the
ECO file and to run ECO routing.
source ../design/ECO_INIT_11_optSetup.enc
extractRC
source eco_innovus.tcl
ecoRoute
extractRC
LOG_Innovus_PlaceAndRoute.log
cat LOG_Innovus_PlaceAndRoute.logv
By browsing the Innovus log file you can see the ECO buffers being inserted and at the end of
that process the tool is calling placement refinement.
Indeed there is no instances movement because the ECO buffers location in the ECO file is all
fully legal.
From this session we do also generate the final Verilog/DEF and dump new SPEFs.
cat ../scripts/run_session3.tcl
This file is very similar to “run_session1.tcl” which we have reviewed earlier. Here again the
purpose is to run a D-MMMC SignOff STA. It will load the new Verilog/DEF/SPEFs to generate
timing reports and we will then be able to investigate the final timing in the graphical interface.
set_distribute_host -local
distribute_read_design \
-design_script ../scripts/loadDesign_DMMMC_postECO.tcl \
-outdir sta_postECO
Once the run is completed, please go to the “Analysis” tab to have a complete view of the Hold
timing.
From the Slack histogram you can also see that the Hold timing violations were not over fixed
since there are still a few Hold timing slack close to +0ps. This is because the tool is fixing the
timing violations to meet the target slack with the least impact on area increase.
Now, go back to the shell and type “Resume” in order to load the Setup timing views in the
“Analysis” tab.
- Are there any new Setup timing violations compared to the initial Setup timing measured
earlier in this lab? __________________
Tempus ECO was able to fix the Hold violations in many different timing views while not creating
any new Setup violations among all the Setup timing views. The fact that this feature is Physical-
Aware does provide higher timing predictability. You can see that the worst Setup path has some
large slews, which explains that any slight routing change may cause timing difference on it.
Once this path gets optimized in Setup timing, slews will be better and timing more stable.
You can exit the TEMPUS session. You now know how to run a complete loop of ECO timing
closure using ECO fixing feature.
_____________________________________________________________________
Overview: Demonstrate the automated Signoff ECO timing closure flow using Tempus and
Innovus Digital Implementation tools.
Timing violations: The initial design contains some Hold timing violations that should be fixed
before going to TapeOut. In addition, the user wants to apply some customization on top of the
default tool settings.
Goal: The Hold timing violations must be fixed without impacting Setup timing and without
creating any Design Rule Violations. Also the tool should honor the extra constraints/options
provided by the user.
Location:
cd <MY_DIR>/work/
Steps:
1. Run Tempus ECO Hold fixing session with positive Hold target slack
The customer methodology, for this slow process node, is to achieve a Hold target slack of
+500ps. In that context, all that is needed to honor this extra rule is to add the following option
in the scripts that calls eco_opt_design : ”set_eco_opt_mode -hold_target_slack 0.5”
So out of the different scripts/step from the LAB1, the only one that must be updated is:
../scripts/run_session2.tcl
LOG_session2_extra.log
This will execute the script that runs Tempus ECO Hold fixing with extra constraints.
more LOG_session2_extra.log
This is the log file of the fixing SignOff ECO Hold fixing session. By browsing through it and by
comparing it to the previous Hold fixing run, please provide answers to the following questions:
- Was the tool able to meet the +500ps Hold target slack? _________________
------------------------------------------------------------
Final Hold Summary
------------------------------------------------------------
+--------------------+-----------+
| Hold mode | all |
+--------------------+-----------+
| WNS (ns):| 0.502 |
| TNS (ns):| 0.000 |
| Violating Paths:| 0 |
+--------------------+-----------+
In this sub-section we could verify that on this design the tool was able to fix the Hold timing
violations up to a positive 502ps target slack without any negative side effect on Setup timing.
2. Run Tempus ECO Hold fixing session on register to register paths only
In addition to the positive Hold target slack of +500ps, the design team is willing to fix only the
register to register violated paths since the IO paths might not have accurate Hold timing
constraints.
In that context, all that is needed to honor this extra rule is to add the following command in the
scripts that calls eco_opt_design :
LOG_session2_extra2.log
This will execute the script that runs Tempus ECO Hold fixing with extra constraints on Hold
target slack and focusing only on register to register paths.
more LOG_session2_extra2.log
This is the log file of the fixing SignOff ECO Hold fixing session. By browsing through it and by
comparing it to the previous Hold fixing run, you will see that the initial Hold timing report is
now mentioning that Hold timing reported is on register to register only :
+--------------------+-----------+
| Hold mode | reg2reg |
+--------------------+-----------+
| WNS (ns):| -0.485 |
| TNS (ns):| -3.288 |
| Violating Paths:| 17 |
+--------------------+-----------+
The same will be for final Hold timing. On the other hand, the initial and final Setup timing will be
reported on the “all” path_group since while fixing Hold timing on register to register, tool will
ensure no Setup degradation on the entire design.
_____________________________________________________________________
Overview: Demonstrate the automated ECO timing closure flow using Tempus and Innovus
Digital Implementation tools.
Timing violations: The initial design contains one max_cap violation that should be fixed before
going to TapeOut and also some max_tran violations.
Goal: The max_cap violation must be fixed and the max_tran violation count must be reduced,
without impacting Setup timing and without creating any other Design Rule Violations.
Location:
cd <MY_DIR>/work/
Steps:
The same ECO Timing DB can be used to fix the DRV violations. So out of the different
scripts/step from the LAB1, the only one that must be updated is: ../scripts/run_session2.tcl
You should copy that script to ../scripts/run_session2_DRV.tcl and then edit it to only replace
the –hold by –drv option for the eco_opt_design command.
In addition, to be able to insert buffers along the routing, which is very helpful for DRV fixing,
you will need to load parasitic data through RCDB (since that will contain segment coordinates)
instead of SPEF, and enable the along route buffering feature. Here are the two commands:
restoreRC ../design/ECO_INIT_11_optSetup.enc.dat/dtmf_recvr_core.rcdb.d
set_eco_opt_mode -along_route_buffering true
LOG_session2_DRV.log
This will execute the script that runs Tempus ECO DRV fixing.
more LOG_session2_DRV.log
This is the log file of the fixing SignOff ECO DRV fixing session. By browsing through it please
provide answers to the following questions:
- Did the tool also reduce the max_tran violation count? _________________
At the end of the fixing process, there is a detailed diagnostic report explaining the reasons why
the remaining violations were not fixed.
---------------------------------------------------
ECO DRV Fixing Violated Nets Summary
---------------------------------------------------
*info: Total 4 net(s) have violated drvs
*info: 3 net(s): Could not be fixed because they are clock nets.
*info: The tool is not allowed to insert a buffer on a
clock net.
m_ram_clk__L5_N0
m_clk__L3_N0
m_dsram_clk__L1_N0
Tempus ECO is not allowed to touch the clock nets so the DRV on
those nets remain at the end of this process. That’s for the 3 nets
from the first category.
The single net from the second category remain unfixed because
the tool was not able to find a solution through buffering/resizing
to reduce the max_tran violations. Indeed, when highlighting that
“p_addrs[2]” net on the floorplan, using selectNet command,
you will see that this net is entirely over a placement blockage area
before connecting to the RAM.
_____________________________________________________________________
Overview: Demonstrate the incremental timing closure feature of Tempus ECO flow using
Tempus and Innovus Digital Implementation tools.
Timing violations: The initial design contains some DRV violations, some Hold timing violations
and also some Setup timing violations. Those must be fixed as much as possible before going to
TapeOut.
Goal: All those DRV/Hold/Setup violations must be fixed in one single session without having to
for full ECO loop after each fixing stage. This can be done using the incremental timing closure
feature available in Tempus.
Location:
cd <MY_DIR>/work/
Steps:
The same ECO Timing DB generated earlier can be used for this exercise too. So out of the
different scripts/step from the LAB1, the only two that must be updated are:
../scripts/run_session2_DRV.tcl and ../scripts/run_PlaceAndRoute.tcl
You should copy that first script to ../scripts/run_session2_incr.tcl and then edit it to replace the
eco_opt_design -drv command by this list of commands executing the incremental timing
closure flow:
Note: The DRV/Setup/Hold optimizations can be called in any order, since timing is incrementally
updated. But it is recommended to run first DRV fixing because it can impact Setup and Hold
timing, then it is usually better to continue with Setup optimization as it can help Hold
optimization by creating extra Setup timing margin.
LOG_session2_incr.log
This will execute the script that runs Tempus ECO for DRV/Hold/Setup fixing in the same session.
more LOG_session2_incr.log
This is the log file for that ECO session. By browsing through it please provide answers to the
following questions:
- Can you confirm that the DRV violations were reduced too? ____________
The conclusion is that the tool was able to fix all the Setup timing violations while still fixing the
Hold and DRV violations as it was happening in standalone during the earlier labs.
The other steps of the flow, to complete the full ECO loop, remain the same whether Tempus
ECO was called in regular or incremental mode except that you need to source each ECO file in
the order they were generated. So let’s run implementation of the ECOs and retime the new
Verilog/DEF/SPEF database.
source DRV_eco_Innovus.tcl
source SETUP_eco_Innovus.tcl
source HOLD_eco_Innovus.tcl
LOG_Innovus_PlaceAndRoute_incr.log
Once the run is completed, please go to the “Analysis” tab to have a complete view of the Hold
timing.
Now, go back to the shell and type “Resume” in order to load the Setup timing views in the
“Analysis” tab.
From this analysis form, you can see that there are no more Setup violations and the worst path
is now at +121ps.
Now, you know how to run a complete loop of ECO timing closure using Tempus ECO feature in
incremental mode in order to fix DRV/Setup/Hold timing violation in one single session.
Overview: Demonstrate the capability of Tempus to assemble the logical and physical data of
Hierarchical design in order to perform full flat STA and physical hierarchy-aware timing closure
in a scenario where some hierarchical instances are replicated (aka Master/Clone).
Goal: The design contains two partitions which are clones because the two modules are pointing
to the same cell name. The top level netlist was implemented in parallel of the partitions. The
design must be assembled to perform full flat STA and ECO timing closure.
Location:
cd <MY_DIR>/work_hier/
Steps:
To time the full flat netlist, all you need to provide is the complete list of Verilog for top level and
blocks. No need to load any physical data.
cat ../scripts_hier/loadDesign_DMMMC.tcl
You can see that this file contains the recommended flow and commands to laod the full flat
netlist in Tempus.
read_view_definition ../design_hier/viewDefinition.tcl
read_verilog "../design_hier/dtmf_recvr_core.v.gz
../design_hier/results_conv.v.gz"
The generation on the ECO timing DB is identical as for a block level design. Once the hierarchical
design is assembled, Tempus will see a full flat netlist and can perform full flat STA.
The following scripts are therefore very similar as the one reviewed in Lab 1 :
cat ../scripts_hier/run_session1.tcl
cat ../scripts_hier/loadDesign_DMMMC.tcl
cat ../scripts_hier/sta.tcl
To run full flat STA and ECO timing generation, here is what must be done:
This will run Tempus to assemble the hierarchical design, then perform SignOff SI timing analysis
and finally dump a Timing ECO DB per view. In order to investigate the initial timing this session
ends by opening up the graphical interface. Once the run is completed, please go to the
“Analysis” tab to have a complete view of the initial Hold timing.
In this design there are two partitions RESULTS_CONV_INST and RESULTS_CONV_INST2, pointing
to the same cell (results_conv).
From the “Analysis” tab, which does a hierarchical timing analysis, you can see that there are a
few violations on paths starting/ending in RESULTS_CONV_INST.
Those violations were seen when loading only the top level netlist or the block level netlist. It is
only when assembling the design and timing the full flat netlist that those timing violations can
be measured. This is also why there is a need to have a timing closure solution for Hierarchical
design to optimize the full flat timing view while honoring the physical hierarchies.
On the other hand, the second partition, named RESULTS_CONV_INST2, pointing to the same
cell (results_conv) is not violated in Hold. This is a typical situation of replicated modules not
having the same timing environment. The timing optimization engine will need to optimize
timing in RESULTS_CONV_INST while replicated all the change in RESULTS_CONV_INST2 and
checking that no netlist change would create negative side effects in both modules.
Now, go back to the shell and type “Resume” in order to load the Setup timing analysis in the
“Analysis” tab. This will allow you to investigate the Setup timing on the full flat netlist.
As for Hold timing, here we can see that some Setup timing violations are on timing paths ending
in the partitions. Either those were not well fixed at top or block level, or those paths were not
seen as violated. Once the design is assembled, the full flat STA can catch all those type of
violations and ECO fixing can find the right places to fix them, either at top level or at block level.
ls ecoTimingDB/
In the current working directory you can see that a new directory was created and it contains the
ECO Timing DB per view. Those are the one needed for the next step.
cat ../scripts_hier/run_session2.tcl
This is the file containing the necessary commands to load the top level design with physical
data, assemble the block, apply the MMMC environment settings and run ECO timing closure
using incremental calls of eco_opt_design.
In the script you will see one new option, named “-partition_list_file”, which is to point to a file
containing the cell name of the modules that should be considered as a partition. In other words,
when a module is defined in the partition list file, all the ECOs done in that module will be
separated from the top level ECOs and a unique ECO file will be generated for it. In case of
replicated modules, like in this lab where both RESULTS_CONV_INST and RESULTS_CONV_INST2
modules are pointing to cell “results_conv”, you only need to provide the common cell name.
In this exercise we will run incremental timing closure feature in order to clean up all possible
DRV, Hold and Setup violations.
source ../scripts_hier/loadDesign_DMMMC.tcl
source ../scripts_hier/spef.tcl
set_delay_cal_mode -SIAware true
This will execute the script that runs Tempus ECO flow for DRV/Hold/Setup timing optimization
on a hierarchical design with two partitions.
more LOG_session2.log
This is the log file of the fixing SignOff ECO timing fixing session. By browsing through it please
provide answers to the following questions:
- At the end of the last call of eco_opt_design, what are the Hold timing WNS; TNS; Nb of Viol
paths? _________________
- At the end of the last call of eco_opt_design, what are the Setup timing WNS; TNS; Nb of Viol
paths? _________________
By investigating in more details the reason for the remaining Hold violations not being fixed you
will see the following:
Hold fixing:
By default Tempus, like any other tools, would apply a don’t_touch on all replicated modules.
Tempus ECO supports Master/Clone timing optimization so let’s enable this to allow timing
optimization on the replicated modules too.
In the script “../scripts_hier/run_session2.tcl”, please uncomment the following line before the
first eco_opt_design call :
Once this small script modification is done, you should make a new run of ECO timing closure
using the following command:
By investigating the log file you will see that Setup and Hold timing are now met after the
incremental timing optimization.
more LOG_session2_bis.log
You can exit the Tempus session and check what are the ECOs being done in the ECO file. For
each optimization phase, an ECO file was generated for top level and for the cell of the
partitions.
cat DRV_dtmf_recvr_core_eco_innovus.tcl
cat DRV_results_conv_eco_innovus.tcl
cat HOLD_dtmf_recvr_core_eco_innovus.tcl
cat HOLD_results_conv_eco_innovus.tcl
cat SETUP_results_conv_eco_innovus.tcl
cat SETUP_dtmf_recvr_core_eco_innovus.tcl
Those file contains the ECO instruction that will be sourced in Innovus in the next step. You can
scan over them and find out that it contains a list of ecoAddRepeater/ecoChangeCell
commands, with physical information, which are natively supported by Innovus release.
cat ../scripts_hier/run_PlaceAndRoute.tcl
cat ../scripts_hier/run_PlaceAndRoute_block.tcl
Those two files contain the necessary commands to load the design in Innovus, either the top
level only or the block level only, then to source their respective ECO files and finally to run ECO
routing, parasitic extraction and DEF/Verilog/SPEF dump out.
cat LOG_Innovus_PlaceAndRoute.log
cat LOG_Innovus_PlaceAndRoute_block.logv
By browsing the Innovus log files you can see the ECO buffers being inserted and the cell being
resized.
Indeed there is no instances movement because the ECO buffers location in the ECO files are all
fully legal both at top level and block level.
From those sessions we do also generate the final Verilog/DEF and dump new SPEFs.
cat ../scripts_hier/run_session3.tcl
This file is very similar to “run_session1.tcl” which we have reviewed earlier. Here again the
purpose is to assemble the hierarchical design and run a D-MMMC SignOff STA. It will load the
new Verilog/DEF/SPEFs to generate timing reports and we will then be able to investigate the
final timing in the graphical interface.
Once the run is completed, please go to the “Analysis” tab to have a complete view of the Hold
timing.
As you could see, all Hold violations are fixed, even though those were in cloned modules.
Now, go back to the shell and type “Resume” in order to load the Setup timing views in the
“Analysis” tab.
Tempus ECO was able to fix the Hold/Setup/DRV violations in many different timing views,
including replicated modules, while not creating any new Setup violations among all the Setup
timing views. The fact that this feature is Physical-Aware does provide higher timing
predictability
You can exit the Tempus session. Now you know how to run a complete loop of ECO timing
closure using Tempus ECO feature on a hierarchical design which may contained replicated
hierarchies.
Overview: Demonstrate the automated ECO leakage reclaim flow in PBA mode using Tempus
and Innovus Digital Implementation tools.
Power optimization: The initial design contains too much leakage and that must be reduced
before going to TapeOut. At signoff stage, the Path Based Analysis mode is selected, which
means that overall timing is less pessimistic, and this gives new opportunities to recover power.
Goal: The leakage power must be reduced without impacting Setup timing and without creating
any Design Rule Violations.
Location:
cd <MY_DIR>/work_PBA/
Steps:
cat ../scripts_PBA/run_session1.tcl
You can see that this file contains the minimum and standard required commands to perform a
D-MMMC SignOff timing analysis run on 12 actives views.
cat ../scripts_PBA/loadDesign.tcl
This file contains the design data that must be loaded to perform a D-MMMC SignOff timing
analysis. This one also is a standard file, except that LEF/DEF data are being loaded.
cat ../scripts_PBA/sta.tcl
This file contains the SPEF files location and the SignOff SI timing analysis settings/reporting
commands. At the end of the file, the only needed command to generate an ECO Timing DB is
write_eco_opt_db.
In this exercise we will generate ECO Timing DB in PBA mode for both Setup and Hold timing.
write_eco_opt_db
-check_type : to choose whether retiming should be done for early or late paths, or both.
-max_slack : to choose up to which path slack the retiming should happen. By default this
option is at 0, but when optimizing Hold or Leakage, it is recommended to set it to a large value
(like +10ns) for Setup views to make sure that even positive setup slack paths get retimed.
-nworst : to choose how many paths per endpoint should be retimed. It is important to set a
high value to ensure that enough paths are retimed.
This will run TEMPUS to perform SignOff SI timing analysis in PBA mode, generate Timing ECO DB
per view in PBA mode and ends by opening up GTD for timing investigation. Once the run is
completed, please go to the “Analysis” tab to have a complete view of the initial timing.
Note: You need to type “resume” to move to the next timing report
From those four timing analysis forms, you should see that:
ls ECO-PBA/
In the current working directory you can see that a new directory was created and it contains an
ECO Timing DB per view. Those are the one needed for the next step.
cat ../scripts_PBA/run_session2_leakage.tcl
This is the file containing the necessary commands to load the design with physical data, to load
the MMMC environment settings and to set up the Tempus ECO fixing feature command called
eco_opt_design.
source ../scripts_PBA/loadDesign.tcl
source ../scripts_PBA/spef_new.tcl
set_delay_cal_mode -SIAware true
set_analysis_mode -aocv true -cppr both
This will execute the script that runs Signoff ECO Leakage optimization.
more LOG_session2_leakage.log
This is the log file of the SignOff ECO Leakage optimization session. By browsing through it please
provide answers to the following questions:
- What are the initial Setup timing WNS; TNS; No. of Viol paths? _________________
- Do you see any degradation in the final Setup timing or DRV? _______________
(The setup target slack is 0ns, so tool is allowed to degrade positive path slack down to 0ns when
recovery leakage)
You can exit the TEMPUS session and check the ECOs being done in the ECO file.
cat eco_innovus.tcl
This file contains the ECO instruction that can be sourced in Innovus to implement the ECOs
done during leakage recovery. In this Lab we will skip that step and directly retime the design
with the ECOs since leakage optimization does only Vth swapping, so no change in placement
and routing.
cat ../scripts_PBA/run_session3_leakage.tcl
This file is very similar to “run_session1.tcl” which we have reviewed earlier. Here again the
purpose is to run a D-MMMC SignOff STA in PBA mode. It will load the Verilog/DEF/SPEFs, then
source the ECO file generated during leakage optimization and then generate timing reports in
PBA mode to investigate the final timing in the graphical interface.
Once the run is completed, please go to the “Analysis” tab to have a complete view of the Hold
timing.
Note: You need to type “resume” to move to the next timing report
From those four timing analysis forms, you should see that:
- Setup timing is now violated in GBA mode. This is expected and it proves that the leakage
recovery engine took advantage of the lesser pessimistic PBA timing when optimizing
leakage.
- Setup timing is still met in PBA mode. This is mandatory since leakage recovery engine had
to ensure that no Setup violations would be created in PBA mode.
- Hold timing is still violated in GBA mode, but lesser than initially
- Hold timing is still violated in PBA mode, but lesser than initially
You can exit the TEMPUS session. You now know how to run leakage optimization in PBA mode.
Overview: Demonstrate the usage of Tempus ECO inside Innovus cockpit. In this first section,
we will go over a basic Hold fixing flow.
Timing violations: The initial design contains a few Hold timing violations that must be fixed
before going to TapeOut. At the same time we will fix the remaining DRV violations.
Goal: Fixing Hold timing violations without impacting Setup timing or creating any Design Rule
Violations. All timing reports and optimization must be done in PBA mode.
Location:
cd <MY_DIR>/work_SOD/
Steps:
cat ../scripts_SOD/run_SOD.tcl
ecoRoute
extractRC
signoffTimeDesign -reportOnly -outDir RPT_PBA_final -noEcoDb
You can see that this file contains the minimum and standard required commands to perform a
signoff Timing analysis in Innovus using signoffTimeDesign command and signoff Timing
optimization using signoffOptDesign command.
Innovus will use the Tempus executable pointed in the PATH environment variable.
This will load the initial DB, run parasitic extraction, then call signoffTimeDesign to perform
SignOff SI timing analysis in PBA mode (and generate Timing ECO DB per view in PBA mode),
then call signoffOptDesign to fix DRV/Hold violations. After that the script will run ECO routing
and parasitic extraction, then ends with a final signoffTimeDesin to perform SignOff SI timing
analysis in PBA mode.
+--------------------+-----------+-----------+-----------+-----------+-----------+
| Setup mode | all | reg2reg | in2reg | reg2out | in2out |
+--------------------+-----------+-----------+-----------+-----------+-----------+
| WNS (ns):| 1.383 | 1.383 | N/A | N/A | N/A |
| TNS (ns):| 0.000 | 0.000 | N/A | N/A | N/A |
| Violating Paths:| 0 | 0 | 0 | 0 | 0 |
+--------------------+-----------+-----------+-----------+-----------+-----------+
+----------------+-------------------------------+------------------+
| | Signal nets | Clock nets |
| DRVs +------------------+------------+------------------+
| | Nr nets(terms) | Worst Vio | Nr nets(terms) |
+----------------+------------------+------------+------------------+
| max_cap | 0 ( 0) | 0 | 0 ( 0) |
| max_tran | 1 ( 1) | -0.002 | 3 ( 3) |
| max_fanout | 0 ( 0) | 0 | 0 ( 0) |
+----------------+------------------+------------+------------------+
+--------------------+-----------+-----------+-----------+-----------+-----------+
| Hold mode | all | reg2reg | in2reg | reg2out | in2out |
+--------------------+-----------+-----------+-----------+-----------+-----------+
| WNS (ns):| -0.058 | -0.058 | N/A | N/A | N/A |
| TNS (ns):| -0.124 | -0.124 | N/A | N/A | N/A |
| Violating Paths:| 4 | 4 | 0 | 0 | 0 |
+--------------------+-----------+-----------+-----------+-----------+-----------+
| DRVs +------------------+------------+------------------+
| | Nr nets(terms) | Worst Vio | Nr nets(terms) |
+----------------+------------------+------------+------------------+
| max_cap | 0 ( 0) | 0 | 0 ( 0) |
| max_tran | 0 ( 0) | 0 | 3 ( 3) |
| max_fanout | 0 ( 0) | 0 | 0 ( 0) |
+----------------+------------------+------------+------------------+
+--------------------+-----------+-----------+-----------+-----------+-----------+
| Hold mode | all | reg2reg | in2reg | reg2out | in2out |
+--------------------+-----------+-----------+-----------+-----------+-----------+
| WNS (ns):| 0.007 | 0.007 | N/A | N/A | N/A |
| TNS (ns):| 0.000 | 0.000 | N/A | N/A | N/A |
| Violating Paths:| 0 | 0 | 0 | 0 | 0 |
+--------------------+-----------+-----------+-----------+-----------+-----------+
- Initial Setup timing is met in PBA mode but there are half a dozen Hold violations and some
small DRV violations.
- After running Tempus ECO in Innovus, all DRV/Hold violations are be fixed and Setup timing
remains unchanged
_____________________________________________________________________
Overview: Demonstrate the usage of Tempus ECO inside Innovus cockpit. In this second section,
we will go over a basic Leakage recovery flow.
Goal: Recovering leakage power in PBA mode with not creating any timing violations in PBA
mode.
Location:
cd <MY_DIR>/work_SOD/
Steps:
cat ../scripts_SOD/run_SOD_leakage.tcl
report_power -leakage
signoffOptDesign -noEcoRoute -leakage
signoffTimeDesign -reportOnly -outDir RPT_PBA_leakage_final -noEcoDb
report_power –leakage
You can see that this file contains the minimum and standard required commands to perform a
signoff Timing analysis in Innovus using signoffTimeDesign command and Leakage optimization
on signoff Timing optimization using signoffOptDesign command.
The main two differences compared to the DRV/Hold fixing flow is earlier section are:
This will load the initial DB, run parasitic extraction, then call signoffTimeDesign to perform
SignOff SI timing analysis in PBA mode (and generate Timing ECO DB per view in PBA mode) in
high effort PBA mode with positive GBA slack path retiming, then call signoffOptDesign to
recover leakage. After that the script ends with a final signoffTimeDesin to perform SignOff SI
timing analysis in PBA mode.
By looking at the log file you will see that “report_power –leakage“ command is showing
the following improvement:
- No PBA Setup timing violations are created during Leakage optimization. All DRV/Hold
violations are be fixed
- Leakage power reduction is ~8%