Professional Documents
Culture Documents
Cadence Design Systems, Inc.: Power Planning
Cadence Design Systems, Inc.: Power Planning
Application Note
Power Planning
Encounter Digital Implementation (EDI) System
Rev 1.0
June 2011
Table of Contents
1.
2.
3.
4.
5.
6.
7.
8.
9.
Currently tools have the capability of creating the power network for the designers. In
creating a power mesh, designers start from several approaches and reach a solution
that prevent IR drop. This document explains how Encounter Digital Implementation
(EDI) system software helps in achieving the best power network.
1. Power calculation
Power routing calculations has to be done for determine ring and stripe widths needed
for the implementation. To better understanding of calculation an example has been
taken as below to show how the calculation of power grid can be done.
The power network is mainly dependent on the process technology so from the
technology DRM (Design rule Manufacture) EM (Electro Migration) Line Current Limits
(High Density Backend) (Tj = 125C) has been taken out as below
Metal Level
M1 (Metal1)
M2 (Metal2)
M3 (Metal3)
M4 (Metal4)
M5 (Metal5)
M6 (Metal6)
M7 (Metal7)
0.759
1.007
1.007
1.007
1.007
2.904
2.904
Idc (mA)
* (W - 0.02)
* (W - 0.02)
* (W - 0.02)
* (W - 0.02)
* (W - 0.02)
* (W - 0.02)
* (W - 0.02)
: 4W
: 1.1v-1.2-v-1.3v
Operating temperature
: 125oc
No of VDD pads
: 24
: 3.64/24 = 151mA
Exceeds power pad, finger spec, ring mesh width need recalculation
CMOS90 spec indicates 110mA @125oc max continuous DC current per power pad
Pad Design
o Pad has 8x fingers which are available for connection into core
COPYRIGHT 2011, CADENCE DESIGN SYSTEMS, INC.
ALL RIGHTS RESERVED.
o Layer M4 to M7 is available for connection with 3.36um wide pin with 1.68um
spacing
Below figure shows the structure of the pad.
Finger of pad
Now we have to calculate the max current we can pass through the pad tracks so that
we can decide how to use the different metal layer
Current pre length*((width of finger-edge effect loss)*No. of fingers connected
Thin Metal (M4-M5) @125oc = 1.007*((3.36-0.02)*8) =26.9*2 layers=53.9mA
** 53.9mA current is calculated if we use both M4-M5 layers overlapping with each other
Note: Here, minimum width and minimum pitch of Metal layers are taken from DRM for the technology.
Calculating the ring width using current per pad distributed calculation
M7 4 power straps from the grid mesh are coincident with the power pad
M6 2 power straps from the grid mesh are coincident with the power pad
Connect
Connect
a region
Connect
clearGlobalNets resets the global net and all tie-high and tie-low nets.
encounter
encounter
encounter
encounter
>
>
>
>
globalNetConnect
globalNetConnect
globalNetConnect
globalNetConnect
gnd
gnd
vdd
vdd
-type
-type
-type
-type
pgpin
pgpin
pgpin
pgpin
-pin
-pin
-pin
-pin
gnd
GND
vdd
VDD
This will connect all gnd and GND pins to the global gnd net and all vdd and VDD pins to
the global vdd net, unless they are already explicitly connected to something else.
only works for pins of type USE POWER or USE GROUND which is defined in
LEF. The global nets must already have been defined in the configuration file. It is
possible to connect all cells within a given module of the hierarchy to a different power
net, e.g.:
globalNetConnect
encounter > globalNetConnect vdd1 -type pgpin -pin vdd -module alu -override
This will connect all vdd pins in all instances below the module alu to the global net vdd1
regardless of current connection. To connect a specific instance, use the inst option.
This does not take a hierarchical name, it is necessary to use it with the module option.
To specify only the vdd pin of the instance alu1/i1/i2, use the following command
encounter > globalNetConnect vdd -type pgpin -pin vdd -inst i2 -module alu1/i1 override
Below example shows how to use the get_cells with globalNetConnect command
encounter > globalNetConnect HVDD -type pgpin -pin {VDD_P} -sinst [get_object_name
[get_cells i_bs_block/PAD_*_HVDD -hierarchical]] -verbose -override
>
>
>
>
loadConfig ./Default.conf 0
commitConfig
globalNetConnect VDD -type tiehi
globalNetConnect VSS -type tielo
Now the constant instance pin gets assigned to the global net [virtually] and during the
signal route using the command globalDetailRoute it will connect physically.
When netlist has 1`b1 & 1`b0 and want to connect them to tie-hi and tie-lo cells
respectively then the flow will be
encounter
encounter
encounter
encounter
encounter
encounter
>
>
>
>
>
>
loadConfig ./Default.conf 0
commitConfig
placeDesign
setTieHiLoMode -cell {TIEHI TIELO}
addTieHiLo
# Tie-cells are only added after placement
globalDetailRoute
# Actual connections happen during signal routing
Therefore to connect constants with tie-cells it is not required to use "globalNetConnect type tiehi/tielo" command. It's only when you need direct connections with
power/ground global nets that you need this command.
To save the 1b1'b0/1'b1 with the respective net names use the command saveNetlist will replace the net names only on the leaf cells.
It will not replace them on hierarchical instantiations.
3. Power Ring
The power ring has been created to all around the core to get the proper connection
from the power pads. These rings can be specifying as planar rings, intermingled rings,
overlapping rings, etc.
It was observed that the I/O core power supply cells have pins on higher metals (metal6
and metal7). In order to make good connections to the rings, same metal layers (metal6
and metal7) are used for power routing.
In overlapping rings scenario where a pair of dual power rings between I/Os and the
core is created. The power rings are created using metal7 through to metal4. The
metal7 is on top of the metal5 and they are used for the horizontal edges, whilst the
metal6 is on top of the metal4 and they are used for the vertical edges. The main reason
behind having dual rings, i.e. two metal layers on each side of the core region, is to
have stripes connected in those places where I/O core supply cells connect to the ring. If
there was only a single ring, the I/O connections could block the stripes, which connect
to the ring. By using the dual power rings, the width of the rings can be reduced, hence
saving overall chip area. For other type of rings please see the solution linked.
The rings are created with the addRing command
encounter > addRing -layer_bottom M7 -layer_top M7 -layer_left M6 -layer_right M6 spacing_left spacing -spacing_top spacing -spacing_right spacing -spacing_bottom spacing
-width_left width -width_top width -width_right width -width_bottom width -center 1 -nets
"vdd gnd"
It is noted that the I/O connections are created before the stripe is inserted, so if there
be any conflict then stripe will use the vias and joggings to connect to the ring instead of
the I/O connections. From the power perspective, it is more important that the wide I/O
connections have direct and straight connections to the power ring, so that the power
can efficiently be distributed across the chip.VSS
I/
4. Power Stripes
Power mesh is created to supply the uniform power into the core. The density of the
mesh can be determined using the core power consumption of the chip. While
calculating the total power consumption of the core few assumptions has been taken
The clock tree has not yet been created. This may increase power consumption by
about 40%.
COPYRIGHT 2011, CADENCE DESIGN SYSTEMS, INC.
ALL RIGHTS RESERVED.
Gate sizes are likely to increase (overall) in order to fix timing problems.
Additional buffers will be added to fix timing problems.
The power mesh is uniform.
In some scenario where noise is the major impact then creation of stripes positioned for
optimal signal grid utilization so that signal tracks can be put adjacent to the power
straps without wasting any space. Also, all the VDD-VSS stripe pairs allow a signal route
to pass between them and in that way protect the susceptible signals from any noise.
There are examples where we can tell the tool where to stop (complete to last target or
first target, etc.) for completing the stripe connections to the rings. Encounter
command "addStripe" has the "extend_to design_boundary", "extend_to first_padring"
and "extend_to area_boundary" options to accomplish the above variations. Other
options to the command lend flexibility in the methodology chosen by the user.
Example script to specify stop points for stripes
Encounter > addStripe -extend_to design_boundary -set_to_set_distance 100 stacked_via_top_layer metal5 -spacing 10 -merge_stripes_value 5.5 -layer metal2 -width 8
-switch_layer_for_padcorering 1 -nets {VSS VDD} -stacked_via_bottom_layer metal1
Encounter > addStripe -extend_to first_padring -set_to_set_distance 100 stacked_via_top_layer metal5 -spacing 10 -merge_stripes_value 5.5 -layer metal2 -width 8
-switch_layer_for_padcorering 1 -nets {VSS VDD} -stacked_via_bottom_layer metal1
If user has to control the extension of power routing to the design boundary and create
pins to be used for connecting power to this block at the next level up use the below
command.
addStripe -extend_to design_boundary -create_pins 1
The corePinMaxViaHeight option is used to control the width of vias at the crossover of
core pins rails and stripes. This parameter is essential to prevent signal pin access
problems due to complex spacing rules and the metal plates in via stack.
The layerChangeRange option is used to controls the minimum & maximum layer that the
stack extends up to. This is useful when the power grid is on multiple layers and allows
the connection to the lowest layer of the grid.
The -stripeSCPinTarget none option is used for standard cell power routes to stop at the
end of the row instead of terminating at the block ring or stripe.
In case of variable widths for power pins in standard cells then Sroute will picks the
width based on the geometry at the edges of the cell. For ex. ff a standard cell has
followpins on 2 layers, the followpin on the layer that has the largest total pin area is
routed first. To change the width of the follow rail command sroute -corePinWidth 0.34
can be used.
In case user want the followpins routing through the standard cells to connect to the
Metal2 power pins using Metal2 then sroute to connect to Metal2 pins when creating the
followpins routing use the sroute option "-corePinLayer 2"
To make more control over snapping power routing to the grid, just as they now can
snap signal routing to grid. Use the setSnapGrid command:
setSnapGrid -layer { 2 3 4 5 } -pitch
setSnapGrid -layer { V12 V23 V34 V45 } -pitch
When all metal layers have been created and standard cells have been routed, it is
advisable to check the design for any violations on the widths, spacing, and internal
geometry of objects and the wiring between them. The power grid should be DRC clean
and can be quickly verified by the verifyGeometry command.
10
Some stripes may not be connected to the core rings. A straight stripe connection may
not be possible if blocked by an I/O to ring connection of the opposite net. Connections
can be made if jogs and layer changes are allowed. The following command is used
encounter> sroute -noBlockPins -noCorePins -noPadPins -noPadRings \
-layerChangeBotLayer <metaltopVName> -layerChangeTopLayer <metaltopHName> \
-jogControl { preferWithChanges differentLayer } -nets "gnd vdd"
After stripes are created over the core area, some of them have to be removed or
trimmed, for example, floating wires or wires that only have one connection. Both top
layers have to be selected.
encounter> editSelect -nets "gnd vdd" -layers "metalHName metalVName" -shapes STRIPE
When all stripes are selected, they are trimmed by the following command:
encounter> editTrim selected
In some circumstances the editTrim command has been observed to extend certain
metal shapes as well as to trim them. This can create shorts. These shorts can be fixed
by hand editing of the stripes in the affected areas.
Block pins
Pad pins
Standard cell pins
Unconnected stripes
The pinMinLayerNumber variable, specifies the bottom-most pin layer to connect to the
ring, whiles the pinMaxLayerNumber variable, specifies the top-most pin layer to connect to
the ring.
To check the standard cell geometries in the design for any spacing violations between
the power rail to power stripe vias and cell blockages we can use the command sroute
corePinCheckStdcellGeoms which detects the DRC violation and repairs these violations by
trimming the via arrays as needed. Use this parameter after routing the power
structures.
8. Well-Tap Cells
The well-tap cells have to be inserted before the placement of the design. The well-tap
cells are inserted with the following command:
COPYRIGHT 2011, CADENCE DESIGN SYSTEMS, INC.
ALL RIGHTS RESERVED.
11
is the same well-tap cell name used in the addWellTap command and WTrule is the
distance to be checked.
WTname
9. Power Vias
command is a powerful post-processing command to customize the via
arrays to your needs. It can be accessed through the GUI using the menu tree Power ->
editPowerVia
provides many options (such as area, connection type, layers, etc.) for
controlling which vias to modify. The vias can be scaled up or down, deleted, or you can
enable options to fix minimum cut (minCut) and/or minimum step (minStep) violations.
editPowerVia
For example, if you want to scale the height of all via56 arrays by 50% you would run:
editPowerVia -via_scale_height 50 -modify_vias 1 -bottom_layer Metal5 -top_layer Metal6
Adding power vias to the design or performs one of the following actions to existing
power vias can be done using the command editPowerVia.
12