0% found this document useful (0 votes)
4K views

Innovus Help and Tips

The document provides instructions for various Innovus commands: 1) It describes how to change the net name, wire width, and select special nets and wires of a particular width. 2) It lists the options for the writeFPlanScript command and provides examples of floorplanning, blocks placement, routing obstruction creation, and global net connections. 3) It summarizes usage of the editSelect command and provides an example of selecting special nets on a particular layer.

Uploaded by

vibhash kumar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4K views

Innovus Help and Tips

The document provides instructions for various Innovus commands: 1) It describes how to change the net name, wire width, and select special nets and wires of a particular width. 2) It lists the options for the writeFPlanScript command and provides examples of floorplanning, blocks placement, routing obstruction creation, and global net connections. 3) It summarizes usage of the editSelect command and provides an example of selecting special nets on a particular layer.

Uploaded by

vibhash kumar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

How to change the net name of a wire segment or via ?

editSelect -nets VDD1


editSelectVia -nets VDD1
editChangeNet -to VDD2

How to change the wire width of a special net in Innovus ?


editSelect –nets <netname>
editChangeWidth -width_horizontal <value> -width_vertical <value>

you may consider using dbSelectObj when selecting special nets of a particular width:
dbSelectObj [dbGet –p [dbGe t –p top.nets.name <net_Name>].sWires.width <width> ]

For example, the following will select the wire segments of the VSS net that has a width of
1.6:
dbSelectObj [dbGet –p [dbGet –p top.nets.name VSS ].sWires.width 1.6 ]

### Look for all options of Below writeFPlanScript commnd


writeFPlanScript

# floorplan boundary
set ret [catch {floorplan -noResize -noSnapToGrid -b 0.000 0.000 \
1000.000 498.000 0.000 0.000 1000.000 498.000 5.016 5.010 594.984 492.990 }]

if {$ret != 0} {
floorplan -noSnapToGrid -b 0.000 0.000 1000.000 498.000 0.000 0.000 \
1000.000 498.000 5.016 5.010 594.984 492.990
}

### Blocks placemnet


unplaceAllBlocks
deleteHaloFromBlock -allBlock
placeInstance Memory_1 377.696 464.910 R180
addHaloToBlock 2 2 2 2 Memory_1
setInstancePlacementStatus -status fixed -name Memory_1

# Placement obstruction
deletePlaceBlockage -all
createPlaceBlockage -type hard -name defScreenName -box {218.9 280.7 315.95 382.53}
createPlaceBlockage -type soft -name defScreenName -box {218.9 280.7 315.95 382.53}

# Standard Cell Row


deleteRow -all
set rdagFPlanRowSpaceType 0
set rdagFPlanRowSpacing 0
createRow -site HDCORE_VDD -area 5.016 5.010 594.966 5.490 -noCheck
# Routing obstruction
deleteRouteBlk -all
createRouteBlk -name defLayerBlkName -layer M2 -boxList { 69.03 406.6 124.1 457.31700 }
createRouteBlk -name defLayerBlkName -layer {M2 M1 M3} -boxList { 69.03 406.6 124.1
457.31 }

# Pin blockage
deletePinBlkg -all

# Creating Instance group


#the group SCH is belong to power domain : SCH,
#Please use it carefully, for example don't delete it.
deleteInstGroup VI_H0
createInstGroup VI_H0
addInstToInstGroup VI_H0 snps_SCH__dft_outputs_iso_low_snps_ib_scan_out*
createRegion VI_H0 214.491000 521.520000 260.490000 526.080000

# Pin section
setPinAssignMode -pinEditInBatch true
editPin -pin clk -layer M7 -assign {189.924 528.96} -pinWidth 0.076 \
-pinDepth 0.395 -fixOverlap false -side N -fixedPin
editPin -pin proc_mrs -layer M7 -assign {190.152 528.96} -pinWidth \
0.076 -pinDepth 0.395 -fixOverlap false -side N -fixedPin
setPinAssignMode -pinEditInBatch false

# Global Net Connection


clearGlobalNets
globalNetConnect vdd_modem -pin {vdd_sub} -type pgpin -all
globalNetConnect vdd_modem -pin {vddaon} -type pgpin -all
globalNetConnect vdd_modem -pin {vdd_ext} -type pgpin -all

globalNetConnect vdd_sch_int -type tiehi -all


globalNetConnect vdd_sch_int -pin {vddfx} -type pgpin -all
globalNetConnect vdd_sch_int -pin {vddx} -type pgpin -all

globalNetConnect vssx_0 -type tielo -all


globalNetConnect vssx_0 -pin {vssfx} -type pgpin -all
globalNetConnect vssx_0 -pin {vssx} -type pgpin -all
globalNetConnect vdd_sch_int -pin {vddmx} -singleInst instanceName -type pgpin

applyGlobalNets
Usage: editSelect [-help] [-area {x1 y1 x2 y2}] [-direction {H V 45 135}] \
[-layer {layer | list_of_layers}]
[-net {net | list_of_nets}]
[-shape {RING STRIPE FOLLOWPIN IOWIRE COREWIRE BLOCKWIRE \
PADRING BLOCKRING FILLWIRE FILLWIREOPC DRCFILL None}]
[-shield {0 1}] [-status {COVER FIXED NOSHIELD ROUTED SHIELD}]\
[-subclass <string>]
[-type {Regular Special Patch}] [-use {CLOCK POWER SIGNAL}]\
[-wires_only {0 1}] [-with_edit_flag {0 1}]

editSelect -type Special -net vssx_0 -layer M11


editSelect -type Special -net vdd_modem -layer M11

innovus > dbGet top.fplan.bndrys.??


boxes: {920.7 340.48 1114.74 511.84}
hInst: 0x18eabc20
objType: bndry
type: guide
boxes: {1057.98 582.4 1339.14 829.36}
hInst: 0x18eabcb0
objType: bndry
type: cluster

#To change the constraint type of a group


For example to change group from region to guide -
innovus > dbGet -p top.fplan.groups.conType
region
innovus > dbSet [dbGet -p top.fplan.groups.name group_name].conType guide

# To change constraint type of all groups:


dbSet top.fplan.groups.conType none

##To get/filter pointers of all the fences


dbForEachFPlanConstraint [dbHeadFPlan] constPtr {
set ctype [dbConstraintType $constPtr]
puts "$ctype"
if {$ctype == "dbcFence"} {
puts "$constPtr"
}
}
# To select/delete an object in the design
The below command can select rows based on pointer of the rows which are obtained
through matching pattern, then delete those rows.
dbSelectObj [dbGet -p2 top.fplan.rows.site.name core10]
dbDeleteObj [dbGet -p2 top.fplan.rows.site.name core10]

## To report information on placement blockages ##


innovus > dbGet top.fplan.pBlkgs.??
attr: undefined
boxes: {{692.34 1025.92 933.9 1081.36}}
density: 0
inst: 0x0
Name: defScreenName
objType: pBlkg
shapes: 0x1935ca20
type: partial

## Report halo sizes on each side ##


dbGet [dbGet -p2 top.insts.cell.subClass block*].pHaloTop
dbGet [dbGet -p2 top.insts.cell.subClass block*].pHaloBot
dbGet [dbGet -p2 top.insts.cell.subClass block*].pHaloLeft
dbGet [dbGet -p2 top.insts.cell.subClass block*].pHaloRight

## Report size and top/bottom layers of block routing halos ##


dbGet [dbGet -p2 top.insts.cell.subClass block*].rHaloSideSize
dbGet [dbGet -p2 top.insts.cell.subClass block*].rHaloBotLayer.name
dbGet [dbGet -p2 top.insts.cell.subClass block*].rHaloTopLayer.name

## Adding/Selecting/Removing blockages
createRouteBlockage -name route_blockage1 -layer M1
selectRouteBlk -layer M1 route_blockage1
deleteRouteBlk -layer M1 -name route_blockage1
innovus >dbget selected.??
area: 916.99776
attr: default
boxes: {{0.0 109.44 0.684 1450.08}}
density: 0
designRuleWidth: 0.0
inst: 0x0
isExceptPGNet: 1
isPGNetOnly: 0
isPushdown: 0
layer: 0x2adb25c29000
name: bdry_r1
objType: rBlkg
shapes: 0x2adc2672ae00
spacing: 0.
Note: The isPushDown attribute can be used to add blockage one level down the design.
dbSet selected.isPushDown 1
A new LEF MASTER SLICE layer TRIMMETAL is introduced in implementation flow. Trim (cut)
metal is used to shrink the end-to-end spacing, enclosure
and MAR, which should be always sandwiched by 2 wire line-ends
createRouteBlk -trimMetalLayer TL1 TL2

##Reporting types of Physical only cells used in design


dbget [dbget top.physInsts.isPhysOnly 1 -p].cell.name -u
For example : Endcap cells ,Filler cells

## Report all leaf cells through the complete hierarchy ##


dbGet top.insts

## Return pointer for all of the leaf cell and hierarchical instances through
the complete hierarchy ##
dbGet top.hInst.alltreeinsts

## Return pointer of all the hierarchical instances through the complete


hierarchy ##
dbGet -p top.hInst.alltreeinsts.objType hInst

## To report row names for IO rows and Core rows ##


dbget [dbget -p2 dbget top.fPlan.rows.site.class pad].name
dbget [dbget -p2 dbget top.fPlan.rows.site.class core].name

##To select rows in the core area


select_row -site site0A10

## To determine the orientation of the first (bottom) row use the following
dbGet top.fplan.flipRows
first
Possible return values are:
## none = no flipping; (so, first row has orientation = N)
## first = first row is flipped, other rows alternate; (i.e 1st row orientation = S)
## second = first row is not flipped, other rows alternate
## (i.e. 1st row has N orientation)
## To edit nets
editSelect and selectNet commands can be used to select nets .
The difference between two is editSelect will select wire. selectNet will select the net. If you
want to delete wire portion of the net please do the following steps:
editSelect -net <net_name>
editDelete -selected

## To edit Pins
editPin
Modifies properties of pins, such as pin spreading, pin location, pin width and depth,
spacing, snap-to location, and status. The editPin command can be used
Also PinEditor form can be used which has the equivalent capabilities .
PinEditor form can be accessed from Edit--> PinEditor
##Report pin details of all Pin Groups
proc reportPinGroupPins {fileName} {
set fp [open $fileName w]
set allPinGrps [dbget top.fplan.pinGroups]
if { $allPinGrps != "0x0"} {
foreach pinGroup $allPinGrps {
puts $fp "Below are pins from Pin Group [dbget $pinGroup.name] ---> "
dbForEachPinGroupPin $pinGroup pin {
set pinName [dbget $pin.name]
puts $fp "$pinName"
}
}
} else {
Puts "No Pin Groups Loaded"
}
close $fp
}
TIPS RELATED TO MSV DESIGNS

## Report group and power domain information ##


dbGet top.fplan.groups.??
dbGet top.fplan.groups.pd.??

#To Check Site of Power Domain


innovus > dbPowerDomainTechSite [dbGetPowerDomainByName VDD1]
0x73925620
innovus > dbGet 0x73925620.name
Hv_core

# To get boxes of PowerDomain1:


innovus > dbget [dbget -p top.fPlan.groups.pd.name PowerDomain1].boxes
{{15.5 30.0} {150.2 200.4}}
# To select a power domain
innovus > dbget top.pds.name
VDD_SW dtmf_io/dtmf_core/vdd_sw _internal_vddio_vdd_sw
innovus >selectGroup VDD_SW
innovus >dbget selected.??
area: 192.62
boxes: {{331.284 199.2 358.188 210.24} {331.284 418.08 358.188 423.84} {331.284 841.44
358.188 847.2} {331.284 1027.68 358.188 1038.72} {414.96 1553.52 439.812 1757.52}
{414.96 851.76 439.812 1055.76} {414.96 257.52 439.812 461.52}}
conType: fence
density: 0.948012034038958
members: 0x2afaf8a68110 0x2afaf8a79550 0x2afaf8a79660
name: VDDA_SW
objType: group
parent: 0x0
pd: 0x2afb207d1880

## To check if PG nets on top are connected correctly to their macro cellpins


innovus > dbget top.insts.cell.baseClass block -p
0x2b8eb981e5b0
innovus > dbget 0x2b8eb981e5b0.pgInstTerms.name
vddsw vddao vss
innovus > dbget 0x2b8eb981e5b0.pgInstTerms.net.name
vddsw_1 vddao_1 vss_1

## To select Isolation/LS cells


innovus > foreach LS_inst [dbget top.insts.isLevelShifter 1 -p] {
selectInst [dbget $LS_inst.name]
}
innovus > foreach ISO_inst [dbget top.insts.isIsolation 1 -p ] {
selectInst [dbget $ISO_inst.name]
}

## To check supplies of power domain


reportPowerDomain -powerDomain VDD_CX -pgNet
Frequently used Commands at Floorplan step
writeFPlanScript
finishFloorplan
defOutBySection
defIn , defOut , saveFlan , loadFPlan , saveDesign , restoreDesign ,
freeDesign ,cutRow , createRow , initCoreRow, addEndcap,
verifyEndcap, addWellTap , verifyWelTap , verifyDrc

https://support.cadence.com/

userID : [email protected]
passWD: Noor@1234

You might also like