Professional Documents
Culture Documents
Power PDF
Power PDF
In this lab, Innovus is used to implement and practice Multi-Mode-Multi-Corner (MMMC) on the simple
DMA design through the Cadence® Low Power Design Foundation Flow by using CPF. This tutorial
helps you to take advantage of CPF to implement designs with multiple supply voltage (MSV) and power
shut-off (PSO) architecture and show you how to use the LP foundation flow. This workshop requires
the Innovus license with LP options to run.
The DMA gate-level netlist was generated by Cadence® RTL Compiler (RC) using the same CPF. There
are separate LABs for the frontend parts such as RC and CLP.
Cadence Innovus® Low Power Design Flow supports advanced power management techniques such as
multiple power domains with power shut-off (PSO) scheme, which can only be implemented at the
physical level (post synthesis). By adopting CPF, the designer’s intent for advanced power management
techniques can be captured as design and technology-related power constraints in a single file format for
use throughout the RTL and GDSII design flow including verification, validation, synthesis, test,
physical implementation, and signoff analysis.
In this workshop, CPF captures the following implementation techniques and will be loaded and
committed before power planning in this low power design flow. The explicit power domain creation
and shifter/isolation insertion will not be needed any more:
• Level shifter, isolation cell, state retention cell, power switch cell definition.
• Level shifter, isolation cell, power switch cell insertion rule definition.
• Power/ground net creation.
• Power domain and power/ground net connection creation.
• Hard macro/IP low power intent modeling
• Library set creation.
• Different analysis view creation based on combination of different operating corner or power
mode creation and bind with different library set.
Based on different analysis views, you can practice MMMC clock tree insertion and design optimization
on different stages such as preCTS, postCTS, and postRoute stages, respectively.
Refer to the foundation flow document for detailed info. Here is a brief description about the low power
foundation flow and how to run the flow in this workshop.
The low power foundation flow consists of three flow setup/environment scripts and a number of the
implementation scripts.
• setup.tcl: It is unique for each design. It specifies variables for the design (netlist), libraries,
constraints including CPF, and some timing views.
Implementation Scripts
The workshop is under LowPower directory. Under the LowPower, the directory structure is as follows:
The script is in ./FF/INNOVUS directory. It will source the plug-in post_init.tcl in PLUG/INNOVUS.
1. At the command prompt, enter this command string:
make –f ../SCRIPTS/Makefile init
or make init also works here since Makefile is created in your working directory.
2. It will run run_init.tcl. The script loads the design; do the floorplan, power switch insertion,
power planning and routing; and then saves the init.enc DB in the ./DBS under your working
directory.
The followings are some detailed descriptions about the major stages in the run_init.tcl.
CPF
• Level shifter, isolation cell, state retention cell, power switch cell definition.
Design
In the run_init.tcl file two PLUGINS are called : pre_init.tcl and post_init.tcl. location: (
PLUGS/INNOVUS/)
Go through these files for better understanding.
EDI11 onwards only MMMC flow is supported. In the low power flow, users can either define the
MMMC using CPF commands or Innovus CTE commands (viewDefinition.tcl) or both. The
viewDefinitoin.tcl has higher priority.
In the LP foundation flow, users must specify the MMMC objects in setup.tcl, it then converts those
variables to viewDefinition.tcl under FF dir in your working directory for the design import. But, this
viewDefinition.tcl is not complete for power domain binding.
The power domain binding is through CTE command: update_delay_corner –power_domain.
a) In this workshop, this is done by read_power_intent -cpf/commit_power_intent (MMMC is defined
in CPF). Please check viewDefinition.tcl in the init.enc.dat under DBS directory.
b) If using foundation Flow association of delay corner and power domain can be specified in setup.tcl
set vars(dc,power_domains) List of power domains
c) viewDefinition.tcl can have explicitly have these commands
1. To load the CPF file into Innovus, use the read_power_intent -cpf command. To commit the
CPF in the Innovus, use the commit_power_intent command. Both commands are in run_init.tcl
and are executed automatically once you specify the CPF file through vars(cpf_file) in setup.tcl.
2. commit_power_intent also created implicit ISO or LS rules based on the power modes defined
in CPF. The implicit rules are background rules without “-pins” and are created between all
possible two domains even if there is no logic connection. Those implict rules are used by
optDesign/BTS/verifyPowerDomain commands to prevent or check any LP Errors.
3. After read_power_intent -cpf and commit_power_intent, run_init.tcl creates RC corners and
binds them to the views defined in CPF through the delay corners. The rc corners are specified
in the vars(rc_corners) and the binding is defined in the vars(delay_corner,rc_corner) in setup.tcl.
The delay corners are created by commit_power_intent. The delay corner name is the view name
followed by _dc such as <viewname>_dc.
run_init.tcl sets the active views for implementation based on the vars(active_setup_views) and
vars(active_hold_views) defined in setup.tcl. The first view in the view list is the default view.
MMMC scenario has been created by read_power_intent -cpf/commit_power_intent and some
Innovus CTE commands such as create_rc_corner and setup_analysis_view. You can take the
following steps to browse the created analysis views, delay corners, constraint modes, library
sets, RC corners and the relationship among them:
4. Restore DBS/init.enc by entering
innovus –init DBS/init.enc.
• MinGap is a halo around the domain fence, and serves as a placement blockage. The row will
cut in MinGap so that there is no row overlap between domains.
• RouteSearchExt is a search distance for the power router to look for a legal target to connect
the power net.
The power domains need to be resized and reshaped after they have been placed in the core area. To
place, resize and reshape the power domain in the core area, use the Innovus command setObjFPlanBox
for rectangular power domain or setObjFPlanBoxList for rectilinear power domain. The power domain
floorplan is in ../PLUG/INNOVUS/post_init.tcl .
There are two types of the power switches: column and ring switches. This workshop uses the column-
type power switches. Those switches are inserted in the switchable domains after power domain
floorplan by addPowerSwitch.
Power Routing
The ../PLUG/INNOVUS/post_init.tcl connects power pins for blocks and standard cells in each power
domain as shown here.
Remember to close the Innovus session before starting the next lab.
After running the run_init.tcl script, the low power DB is created in DBS/init.enc. You can check
low power setup DB. Use reportShifter and reportIsolation to report shifter and isolation
connections.
1. Restore DBS/init.enc by entering
innovus -init DBS/init.enc
1. The ./FF/INNOVUS/run_place.tcl does the domain aware placement and also preCTS
optimization. It has two plug-in scripts: pre_place.tcl and post_place.tcl under
../PLUG/INNOVUS.
2. The pre_place.tcl script is running before run_place.tcl. You can put setPlaceMode to
control place behavior such as controlling ISO/LS placement (no show in this workshop).
This script also sets modes such as setOptMode, setTrialRouteMode and always-on buffer
dontUse attributes for preCTS optimization. Command reportAlwaysOnBuffer is used to
check the always-on buffer availability. We will include more about preCTS optimization in
Lab 2-2.
3. The post_place.tcl script is executed after place_opt_design. It does tie-high/low insertion
and highlight ISO/LS for ISO/LS placement checking.
4. The run_place.tcl does the placement and pre-CTS optimization using the
place_opt_design Innovus command.
5. To run this foundation step, at the command prompt, enter the following:
make –f ../SCRIPTS/Makefile place
After place_opt_design finishes the placement part, this super-command do preCTS optimization.
An important part of domain-aware preCTS optimization is always-on buffering. It has big impact
on the optimization QoR.
Always-on Buffering
In designs that contain modules that are shut-off, there will be nets that need to be always-on
buffering. Here are some examples:
2. Always-on buffer is not set to DontUse (using cmd setDontUse to set it false)
3. Always-on buffers should be bound to that power domain
4. Always-on buffer Site must be defined in that power domain
The pre_place.tcl sets the always-on buffers to don’t use and don’t touch to false and use
reportAlwaysOnBuffer to check the always-on availability as follows:
Always on buffers found for each power domain:
PowerDomain "PD09" (pd tag = "1") has 2 always on buffer(s) to use PowerDomain
"PDmac1" (pd tag = "2") has 2 always on buffer(s) to use PowerDomain "PDmac2"
(pd tag = "3") has 2 always on buffer(s) to use PowerDomain "PDcore" (pd tag =
"4") has 2 always on buffer(s) to use
Once always-on buffer is available, place_opt_design is able to use them whenever the always-on
buffers are necessary during DRV fixing. In this workshop, the PBUFX2 and PINVX1 is an always-
on buffer/inverter with a secondary power pin.
After completing the place_opt_design, you can find the initial timing summary and the preCTS
optimization final summary in the optDesign log in ./LOG/place.log.
What is the initial worse negative slack?
What is the worst max_tran violation?
What is the prects final worse negative slack?
What is the prect final worst max_tran violation?
DB Generated by run_place.tcl
After running run_place.tcl, the placed DB is created in DBS/place.enc. You can restore it using
the restoreDesign Innovus command and checking the placed and optimized result such as
shifter/isolation placement and running CLP. If there are still a number of DRVs, you can analyze
this DB and may run bufferTreeSynthesis to buffers the remaining DRV nets.
The ../PLUG/INNOVUS/pre_cts.tcl do the 2nd power pin routing and defines the clock buffers used by
ccopt. The clock specification is automatically generated by ccopt in ./FF/INNOVUS/run_cts.tcl. Both
regular buffers and always-on buffers may be used during ccopt, the engine is able to choose which
buffer it need during clock synthesis. If it uses always-on buffers, it can automatically connect the always-
on buffer’s 2nd power pin.
The pre_cts.tcl script is run before the cts step. It routes the secondary power pin for always-on buffers,
level shifters, and SRPG cells using the routePGPinUseSignalRoute command.
a) setPGPinUseSignalRoute PBUFX2:ExtVDD…
This command sets which secondary PG pin of a cell needs to be routed with signal routing.
PBUFX2 is the cell name and ExtVDD is the pin name. It needs to be consistent with the lib/lef
of this cell. Wildcard is supported, i.e. PBUF*:ExtVDD.
b) setNanoRouteMode –routeStripeLayerRange “4:8” to control the 2nd power pin routing layers.
c) routePGPinUseSignalRoute do the actual PG routing for the pins mentioned above.
The secondary PG routing result is shown below:
The ./FF/INNOVUS/run_cts.tcl synthesizes the clock trees. To run this foundation step, at the command
prompt, type the following:
make –f ../SCRIPTS/Makefile cts
After running the cts step, the CTS DB is created in DBS/cts.enc. You can restore it with the
restoreDesign and check the clock tree synthesized result, such as browsing the clock tree and viewing
the clock tree graphically.
Browsing the Clock Tree
1. Restore DBS/cts.enc by entering
innovus –init DBS/cts.enc.
2. To view the clock tree that crosses the power domains, choose Clock –CCopt Clock Tree
Debugger.
3. With defaults selected, in the CTD Configuration window, click OK.
4. Clock Tree Debugger for av_max3 corner is opened. Click on Visibility and control (on
the right top side).
5. Under visibility section -> select the PDMac2,PDcore . You can see the clock trees of these
two domains.
12. Notice that the same path is also highlighted in the Innovus design window.
13. Before closing clear the highlight path and close.
DB Generated by run_postcts.tcl
After running the run_postcts_hold.tcl script, the postCTS optimized DB is created in DBS/postcts.enc.
1. You can restore it using the restoreDesign Innovus command.
restoreDesign DBS/postcts.enc
The ./FF/INNOVUS/run_route.tcl routes the design. It uses plug-in script: pre_route.tcl under
../PLUG/INNOVUS.
1. To run this foundation step, at the command prompt, type the following:
make –f ../SCRIPTS/Makefile route
DB Generated by run_route.tcl
After running the run_route.tcl script, the routed DB is created in DBS/route.enc. You can restore it using
the restoreDesign Innovus command.
Next, explore GUI highlight and power debug using the routed DB.
2. Select Physical View above the All Colors button. Deselect the visibility for types Net and
Special Nets. This choice turns them off and allows better visibility of the analysis results.
5. Deselect the objects and Clear All to clear the highlights and then try other objects.
6. Click the Signal Nets/HLS Cell tab, select the PDcore power domain for Src. of PD.
7. Click Add to add one entry to the left panel, and then select this new added entry Net:PDcore
8. Click Highlight to see nets inside PDcore to be highlighted in the interface. Deselect Net and
Special Net under All Colors.
Do you find any net routed as feed through?
DB Generated by run_route.tcl
Workshop Summary
You completed the following steps to implement a multiple-power-domain design by CPF under
MMMC.
• Create Power Domain and Insert Level Shifter and Isolation Cell using CPF.
• MSV floorplanning
• MSV power gating
• MSV power planning and routing
• MMMC optimization and always-on buffering.
• Power mode aware clock tree synthesis
• 2nd power pin routing
We have used the Innovus LP foundation flow to go through each step. You can see the default
command/option setups throughout the flow by checking the Innovus run logs in the LOG
directory of your run directory.
Although the test case design is small, all steps that have been performed are applicable to a
design of a larger size.
Workshop Limitation
This workshop uses the general library developed by Cadence so that we can deliver the workshop
to customers. However, the library is still in the first release, it still needs some enhancements
such as the pin access for the route.