############################################################
## 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


Generated on Fri Sep 24 10:39:12 CEST 2010
Home