############################################################ ## Copyright: 2010 Integrated Sytems Laboratory, ETH Zurich ## http://www.iis.ee.ethz.ch/~sha3 ############################################################ ########################################################################### # power grid creation ########################################################################## # v0.11 - bm - Mon Sep 7 08:35:53 CEST 2009 # - fix grLayerH, grLayerV seting # v0.1 - bm - Tue Aug 4 09:00:37 CEST 2009 # - First version ########################################################################## ## just to be safe source scripts/globalnet.tcl ## standard cell and routing information settings set cellHeight 2.8 set routGrid 0.28 ## Ring settings set pr1LayerH metal1 set pr1LayerV metal2 set pr2LayerH metal3 set pr2LayerV metal4 set pr3LayerH metal5 set pr3LayerV metal6 set pr4LayerH metal7 set pr4LayerV metal8 set prWidth 12 set prSpacing 1 set prOffset 4 set prNets {GNDK VCCK} ## Grid settings for UMC90 set grLayerH $pr4LayerH set grLayerV $pr4LayerV set grWidth [expr $routGrid * 5] set grSpacing [expr $cellHeight * 3 - $grWidth] set grDistance [expr $cellHeight * 6] set grOffsetX [expr $cellHeight - $grWidth/2 + $routGrid/2] set grOffsetY [expr $cellHeight - $grWidth/2] ## Core Rings creation and connection at all levels addRing -spacing_top $prSpacing -spacing_bottom $prSpacing -spacing_right $prSpacing -spacing_left $prSpacing \ -width_top $prWidth -width_bottom $prWidth -width_right $prWidth -width_left $prWidth \ -offset_top $prOffset -offset_bottom $prOffset -offset_right $prOffset -offset_left $prOffset \ -layer_top $pr1LayerH -layer_bottom $pr1LayerH -layer_right $pr1LayerV -layer_left $pr1LayerV \ -stacked_via_top_layer metal8 -stacked_via_bottom_layer metal1 \ -around core -follow io -use_wire_group 1 \ -nets $prNets addRing -spacing_top $prSpacing -spacing_bottom $prSpacing -spacing_right $prSpacing -spacing_left $prSpacing \ -width_top $prWidth -width_bottom $prWidth -width_right $prWidth -width_left $prWidth \ -offset_top $prOffset -offset_bottom $prOffset -offset_right $prOffset -offset_left $prOffset \ -layer_top $pr2LayerH -layer_bottom $pr2LayerH -layer_right $pr2LayerV -layer_left $pr2LayerV \ -stacked_via_top_layer metal8 -stacked_via_bottom_layer metal1 \ -around core -follow io -use_wire_group 1 \ -nets $prNets addRing -spacing_top $prSpacing -spacing_bottom $prSpacing -spacing_right $prSpacing -spacing_left $prSpacing \ -width_top $prWidth -width_bottom $prWidth -width_right $prWidth -width_left $prWidth \ -offset_top $prOffset -offset_bottom $prOffset -offset_right $prOffset -offset_left $prOffset \ -layer_top $pr3LayerH -layer_bottom $pr3LayerH -layer_right $pr3LayerV -layer_left $pr3LayerV \ -stacked_via_top_layer metal8 -stacked_via_bottom_layer metal1 \ -around core -follow io -use_wire_group 1 \ -nets $prNets addRing -spacing_top $prSpacing -spacing_bottom $prSpacing -spacing_right $prSpacing -spacing_left $prSpacing \ -width_top $prWidth -width_bottom $prWidth -width_right $prWidth -width_left $prWidth \ -offset_top $prOffset -offset_bottom $prOffset -offset_right $prOffset -offset_left $prOffset \ -layer_top $pr4LayerH -layer_bottom $pr4LayerH -layer_right $pr4LayerV -layer_left $pr4LayerV \ -stacked_via_top_layer metal8 -stacked_via_bottom_layer metal1 \ -around core -follow io -use_wire_group 1 \ -nets $prNets # connect power pads to power rings sroute -noBlockPins -noPadRings -noCorePins -padPinPreferredLayerOnly -padPinMinLayer 2 \ -jogControl { preferWithChanges differentLayer } ## Grid creation and connection addStripe -set_to_set_distance $grDistance -spacing $grSpacing -xleft_offset $grOffsetX -width $grWidth \ -allow_jog_padcore_ring 1 -use_wire_group 1 \ -layer $grLayerV \ -nets {GNDK VCCK } addStripe -set_to_set_distance $grDistance -ybottom_offset $grOffsetY -spacing $grSpacing -width $grWidth \ -allow_jog_padcore_ring 1 -use_wire_group 1 \ -direction horizontal -layer $grLayerH \ -nets {GNDK VCCK } # connect macros sroute -blockPinRouteWithPinWidth -noPadRings -noCorePins -noPadPins -noStripes \ -blockPin { boundaryPins } -blockSides { top left } \ -straightConnections { straightWithDrcClean straightWithChanges } # connect std cells sroute -noBlockPins -noPadRings -noPadPins -noStripes \ -straightConnections { straightOnly straightWithDrcClean straightWithChanges } \ -targetPenetration { stripe 90 } redraw