BlockImplementation151 Lab
BlockImplementation151 Lab
Implementation Flow
Rapid Adoption Kit (RAK)
Cadence Trademarks
Trademarks and service marks of Cadence Design Systems, Inc. (Cadence) contained in this document are attributed to Cadence with
the appropriate symbol. For queries regarding Cadence trademarks, contact the corporate legal department at the address above or call
800.862.4522.
Other Trademarks
Open SystemC, Open SystemC Initiative, OSCI, SystemC, and SystemC Initiative are trademarks or registered trademarks of Open
SystemC Initiative, Inc. in the United States and other countries and are used with permission.
All other trademarks are the property of their respective holders.
Confidentiality Notice
No part of this publication may be reproduced in whole or in part by any means (including photocopying or storage in an information
storage/retrieval system) or transmitted in any form or by any means without prior written permission from Cadence Design Systems,
Inc. (Cadence).
Information in this document is subject to change without notice and does not represent a commitment on the part of Cadence. The
information contained herein is the proprietary and confidential information of Cadence or its licensors, and is supplied subject to, and
may be used only by Cadence customers in accordance with a written agreement between Cadence and its customers. Except as may
be explicitly set forth in such agreement, Cadence does not make, and expressly disclaims, any representations or warranties as to the
completeness, accuracy or usefulness of the information contained in this document. Cadence does not warrant that use of such
information will not infringe any third party rights, nor does Cadence assume any liability for damages or costs of any kind that may
result from use of such information.
RESTRICTED RIGHTS LEGEND Use, duplication, or disclosure by the Government is subject to restrictions as set forth in
subparagraph (c)(1)(ii) of the Rights in Technical Data and Computer Software clause at DFARS 252.227-7013.
UNPUBLISHED This document contains unpublished confidential information and is not to be disclosed or used except as authorized
by written contract with Cadence. Rights reserved under the copyright laws of the United States.
The goal of this tutorial is to provide you a small example of using the Innovus software.
It is very basic by design so we highly recommend users attend one of several Innovus
training classes provided by Cadence Educational Services. For more information on
available training please visit www.cadence.com and click Support & Training.
In addition to this tutorial the following resources are recommended to continue your
Innovus learning.
Online documentation is available via https://support.cadence.com
ResourcesProduct manualsInnovus15.2
Testcase database, Scripts and references can be found at Attachments and Related
Solutions sections below the PDF.
This pdf can be searched with the document 'Title' on https://support.cadence.com
2. Extract the RAK database and change directory to the work directory:
4. Start Innovus:
linux% innovus
Innovus creates three files for storing commands and their output. Each of these files will
have a number at the end of the name which is incremented with each session.
innovus.cmd Contains list of commands executed during the session. This file
can be used to create scripts to automate the execution of the commands and learn
what text command correspond to commands executed through the GUI.
innovus.log Contains basic information output from the executed commands.
The commands in the file are preceded with <CMD> in the file.
innovus.logv Similar to innovus.log but contains more verbose amount of
output. Useful for debugging.
Tips:
Overwrite the default names by using the cmd and log options when
executing innovus.
Use innovus init scriptName to execute a script when invoking
Innovus. Type win to open the GUI when the script completes.
Use innovus nowin to invoke Innovus in non-GUI mode.
The Linux shell Innovus is invoked from becomes the console where standard output is
printed, and is also where you enter text commands:
Tip: When entering text commands you can utilize up/down arrows to cycle through the
command history as well as tab completion to complete commands and their options to
save on typing.
Tip: You can toggle the GUI on and off using the commands win and win off. These
commands do not work when innovus nowin is used.
Design Views
The three design views in Innovus allow certain objects to be viewable and selectable.
You switch between views using the following widgets:
FloorplanView Widgets:
Use the Shift key for multiple object selections, and to move multiple objects.
You can also left-click and drag the mouse to select objects, such as partition pins
and block pins.
Use the Space Bar to change the highlighting focus on an object.
Double-click the left mouse button on an object to view or change object
attributes.
Right-click and drag the mouse to specify an area that you want to see in greater detail.
When you release the mouse button, the display zooms in to the selected area.
Click the middle button of your mouse to pan the viewable window to the center point.
This is equivalent to using the panCenter command.
Move the scroll wheel of your mouse to pan and zoom the design:
Note: There is a bug in Innovus which reverses the behavior of using the Shift and Ctrl
key with the mouse scroll wheel as described above. This will be fixed in a future release.
4. On the Design tab select the Binding Key button. Here you can view, edit and add
binding keys.
Tip: To open the Attribute Editor on overlapping objects, first click the LMB directly
over the object, then use the Space Bar key to cycle through the objects. Once the
desired object is selected, enter the Q key.
2. Select one of the blocks in the floorplan. Observe the instance name is shown in the
bottom left corner of the GUI.
4. At the top the Attribute Editor it shows the Object Type followed by the attributes
and their values. Notice the nets connected to the block are selected.
If there are overlapping objects under the cursor, text information displays for the object
that is on top. Use the N key to get information on the next object, and the P key to get
information on the previous object.
Tip: Press the F8 when hovering over an object to print the property information to the
console window. Note if a menu appears when you press F8, select Send F8.
Cadence Help provides access to the documentation including the User Guide,
Text Command Reference, Menu Reference and LEF/DEF Language Reference.
Open Cadence Help by selecting Help - Documentation Library or executing
cdnshelp from the Linux shell. Clicking the Help button on any of the Innovus
forms will also open it. Select Help - Launch Demo from within Cadence Help
to see a demonstration of using it.
Command line help is available from the Innovus console using the man or help
commands.
7. Use the man command to display the man page for the optDesign command:
man optDesign
Press the Spacebar or Enter keys to scroll down and Q to quit the man page.
8. Use the help command to display the options available for a specific command. Use
wildcards to report commands matching a certain string. Enter the following to see
the commands for setting different command modes:
help set*Mode
help setNanoRouteMode
You can use the widgets in the Design Browser to open forms to navigate through
displays, and perform actions. From the Design Browser, you can access the Connectivity
Browser to display the number of nets between instances, and the Attribute Editor to
display an object's type, name, and attributes.
1. Make sure nothing is selected and then open the Design Browser by selecting Tools -
Design Browser. The window below appears.
For each module it lists the instance name (i.e. proc0) and the module name in
parenthesis (i.e. proc) following by the number of leaf cells and blocks in the module.
3. Single-click the instance proc0 in the Design Browser and observe the objects
belonging to this instance are highlighted in the GUI:
Tip: These navigation widgets take you to the previous, next and top.
The search box is used to search for instances, nets, groups or cells and accepts
wildcards.
5. Set the object type to Net and enter the net name proc0/rfo[11] followed by the
Enter key. The net matching that name is listed in the Design Browser. You can
expand it to see what pins it connects to.
Tip: When a net is selected each logical terminal (represented by yellow box) is marked
with an X meaning input or an O meaning an output pin.
7. Fit the design and select the block in the lower right of the floorplan.
8. Click the Get Selected widget in the Design Browser and observe the selected
object(s) is listed.
widget to select all the items in the GUI that are in the list.
Tip: If you are running a new search, make sure you check the Clear Result Window
checkbox to clear the preexisting results.
This will create a file called DBS/design.enc which contains the command to restore
the database directory design.enc.dat.
In a new session you can then restore the design using one of the following methods:
The Innovus design database is composed of several ascii files respresenting the different
design data. The files may vary depending on the state of the design:
File/Directory Description
.fp Saves floorplan information; this file is not incremental unlike the
DEF
.globals Contains pointers to libraries and netlist, MMMC file and other
design information
.mode Saves mode options (like setPlaceMode, setOptMode,
setNanoRouteMode)
.place Saves standard cell placement
.route Saves routing information
.v Verilog netlist
.pref.tcl Saves user-specified design and display preferences
viewDefinition.tcl MMMC setup file
mmmc directory Includes the constraint modes
exit
1. Invoke Innovus:
innovus
Use the Design Import form to import the Verilog netlist, physical libraries (LEF),
process technology libraries, timing libraries, and timing constraints.
Observe the Design Import form is populated with the settings from leon.globals.
Tips:
When entering the values for the first time use the Save button to save the settings
to a file. Then you can load the file in future sessions.
The technology LEF file must always be listed first in the list of LEF files.
Use the equivalent text commands to the Design Import form to quickly load an
existing globals file:
source DATA/leon.globals
init_design
8. Press the F key to fit the design and you should see the floorplan below. The
floorplan has the blocks placed and power routing complete. You are now ready to
begin the implementation flow.
First, it is important to specify the process technology because it sets capacitance filters
and extraction effort level based on the process node.
Using multiple CPUs can significantly decrease run time to implement a design. Two
CPUs can be used with the base license. Additional licenses are needed beyond two
CPUs as explained in the Accelerating the Design Process By Using Multiple-CPU
Processing chapter of the Innovus User Guide.
10. If the machine you are running on has two CPUs available select Tools Set
Multiple CPU Usage.
12. Click OK. This will enable the use of two CPUs by commands in the flow that run
multi-threaded. Youre welcome to set this value to a higher number of CPUs if you
have the resources and licenses available.
14. In the Timing Mode select On-Chip Variation and select CPPR.
Alternatively, placement and optimization can be run separately using the commands as
follows, but place_opt_design is recommended as it provides better run time and
quality of results:
placeDesign
optDesign preCTS
1. You can specify placement and optimization mode settings prior to running
place_opt_design. Mode settings allow you to customize how commands run.
Select Tools Set Mode Mode Setup to specify the mode settings for placement
and optimization.
2. On the Mode Setup form select Placement on left side to see the mode settings
available for placement.
Select Place IO Pins if its not selected so that the IO pins get placed.
Tip: The equivalent text commands are setPlaceMode and setOptMode to specify
these mode settings. getPlaceMode and getOptMode report what the current
settings are. Other commands have similar set*Mode and get*Mode commands.
4. Specify cells with small drive strength should not be used by running the following
setDontUse commands:
place_opt_design
Once GigaPlace is done, you can view the placed design in the Amoeba and Physical
views. Observe the placed standard cells are visible in the Physical view (you may have
to zoom in or turn off the display of Nets to see the placed standard cells). The reason
In the console youll see a timing summary output so you can quickly see timing results
after optimization as well as standard cell utilization (density) and trialRoute over flow
values:
+----------------+-------------------------------+------------------+
| | Real | Total |
| DRVs +------------------+------------+------------------|
| | Nr nets(terms) | Worst Vio | Nr nets(terms) |
+----------------+------------------+------------+------------------+
| max_cap | 0 (0) | 0.000 | 8 (8) |
| max_tran | 0 (0) | 0.000 | 6 (6) |
| max_fanout | 0 (0) | 0 | 0 (0) |
| max_length | 0 (0) | 0 | 0 (0) |
+----------------+------------------+------------+------------------+
Density: 40.217%
Routing Overflow: 0.00% H and 0.06% V
------------------------------------------------------------
Use the Check Placement command to check for placement violations including
overlapping instances, instances out of the core area, or off-grid placement.
saveDesign DBS/prects.enc
4. Turn off the visibility of nets by deselecting the checkbox next to Net on the right
side of the GUI. Then zoom into the red diamond shapes until you can read the
numbers inside the diamond.
Another display of congestion will color the area based on the level of over congestion.
This makes it easier to distinguish whether an area is highly or moderately
overcongested.
5. Expand Overlay in the Layer Control Bar then select the Congestion radio button
and then the Route Cong. checkbox as shown below.
Observe a new pane appears on the left side of GUI. This pane has controls for
displaying horizontal and vertical congestion separately, as well as how many tracks a
GCell is overcongested. For example, green indicates overcongestion of 3 tracks.
Zoom and pan around to see areas of overcongestion.
7. Make nets visible again by selecting the visibility checkbox for Net on the Layer
Control bar.
Another way to analyze congestion is to view the log file or the Innovus console for the
congestion table produced by trial route. The label of the table is:
Congestion distribution:
Just before this table, look for the last line with label Phase 1l Overflow. If both numbers
in the (#% H) and (#% V) are less than 0.5%, then this design is good for any detail
router. The less than 0.5% is good for three (3) layers of metal and less than 1.0% is
usually good for five (5) or more layers of metal. For example with only 3 layers the
overflow is very high:
Extraction is run in pre-route mode prior to signal routing and in post-route mode after
the signals are routed with NanoRoute. In post-route mode there are four effort levels to
choose from (low, medium, high and signoff) which increase with accuracy at the
expense of longer run-times.
The RC extraction mode can be changed by the Tools - Set Mode - Specify RC
Extraction Mode form. Since the design has not been routed we will leave the default
mode set which is pre-route mode.
2. Click OK.
If you review the log file youll see extraction is run and then a SPEF file is written out.
The equivalent text commands to run extraction and export SPEF are:
extractRC
rcOut spef leon.spef rc_corner rc_worst
3. Click the Advanced tab and review the options. Use the remaining defaults and click
OK.
When timing analysis is done, a timing summary is printed to the Innovus shell. This
information is also written to the file timingReports/leon_preCTS.summary. The
timingReports directory contains several additional reports commonly used for
debugging:
4. After running timing analysis you typically want to explore and debug certain timing
paths. Run report_timing to report timing for the worst path.
report_timing
report_timing reports timing for the worst path by default. You can report specific
paths using the report_timing options. Type report_timing help for a
complete list of its options.
The Global Timing Debug Browser provides a visual display of the timing paths. This
browser is a powerful debug tool providing cross-probing between the report information
and the Innovus design display area. You can group timing violations into categories
making it easier to debug timing paths in groups rather than individual paths. Perform the
following to open the Global Timing Debug Browser:
3. Click OK.
A Timing Debug form displays path histogram and a Timing Browser displays in the
Innovus main window.
3. Double-click the first path in the Path List to open it in the Path Analyzer.
Header shows start point/end point, slack, clock edges involved, skew and view.
Slack Calculation shows components of slack calculation for launch and capture
paths.
Use tabs in the center of the form to show different details of the path. Selecting
an instance or net highlights it in the GUI.
Data delay part shows proportional delay for each instance and net in the path.
Hover over a bar to show delay value and percentage of total path delay.
Hierarchy View shows hierarchical boundaries the path crosses.
This tutorial does not go into detail on using Global Timing Debug but the Rapid
Adoption Kit (RAK) titled Global Timing Debug (GTD) using Innovus or ETS, version
11.1 and above takes you through a lab showing the details of debugging timing using
GTD.
Define a non-default rule (NDR) that has double the width and spacing of the
default rule. This will be used to route the clocks.
Configure CCOpt and generate a CCOpt specification file.
Run CCOpt-CTS to build the clock tree.
2. On the Create Non Default Rules form you can seed the width and spacing fields
with the values of an existing rule. The default width and spacing are shown by
default. Specify the rule name 2w2s and specify double the width and spacing of the
default rule as shown below:
4. Create a route type to define the NDR and layers to use for routing the clock tree:
8. Run CCOpt-CTS:
ccopt_design cts
9. Save the design by typing the following at the Innovus command prompt:
saveDesign DBS/cts.enc
1. Run post-CTS timing analysis by typing the following command in the Innovus
console:
timeDesign postCTS
optDesign postCTS
3. Run post-CTS hold timing analysis by typing the following command in the Innovus
console:
saveDesign DBS/postcts.enc
Running NanoRoute with the SI Driven option requires the capacitance table file (or
QRC technology file), and this file was read in during design import. Choosing SI Driven
option in NanoRoute is our first line of defense against noise.
saveDesign DBS/route.enc
3. Run setup and hold optimization simultanesouly to fix any remaining timing
violations:
A small number of violations may remain. If so, run optDesign again as above and
they should be resolved.
saveDesign DBS/postroute.enc
1. Select Verify Verify Geometry to verify physical design rules. Verify Geometry is
used for designs above 20nm. For 20nm and below design use Verify DRC.
2. Click OK.
Review the summary in the console once Verify Geometry completes. Are there any
violations reported? Use the Violation Browser to debug the violation.
Observe a description of the violation is shown in the Violation Browser indicating the
actual and required minimum spacing.
Tips:
Double-clicking a violation marker in the GUI will automatically open the
Violation Browser with that violation selected.
Select Load Violation Report to load a violation report from a physical
verification tool for debugging in Innovus.
2. Click OK. This will generate a default mapping file called streamOut.map and
then export GDS based on this mapping file. You can open streamOut.map to
view the example mapping file.
3. Click OK. This will copy the libraries and design data currently in memory to a
directory called testcase then tar and gzip it into the file testcase.tar.gz. The design
can then be easily restored by extracting the file and running innovus init
testcase.tcl.