##################################################### # Power planning (Erik Brunvand, 2008) # ##################################################### puts "-------------Power Planning----------------" puts "-------Making power rings------------------" # # Make power and ground rings # $pwidth microns wide with $pspace spacing between them # and centered in the channel addRing -spacing_bottom $pspace -width_left $pwidth -width_bottom $pwidth \ -width_top $pwidth -spacing_top $pspace -layer_bottom metal1 -center 1 \ -stacked_via_top_layer metal3 -width_right $pwidth -around core \ -jog_distance $pspace -offset_bottom $pspace -layer_top metal1 \ -threshold $pspace -offset_left $pspace -spacing_right $pspace \ -spacing_left $pspace -offset_right $pspace -offset_top $pspace \ -layer_right metal2 -nets {gnd! vdd! } -stacked_via_bottom_layer metal1 \ -layer_left metal2 # puts "------making power stripes-----------------" # # Make Power Stripes. This step is optional. If you keep it in remember to # check the stripe spacing (set-to-set-distance = $sspace) # and stripe offset (xleft-offset = $soffset)) addStripe -block_ring_top_layer_limit metal3 -max_same_layer_jog_length 3.0 \ -snap_wire_center_to_grid Grid -padcore_ring_bottom_layer_limit metal1 \ -set_to_set_distance $sspace -stacked_via_top_layer metal3 \ -padcore_ring_top_layer_limit metal3 -spacing $pspace -xleft_offset $soffset \ -merge_stripes_value 1.5 -layer metal2 -block_ring_bottom_layer_limit metal1 \ -width $swidth -nets {gnd! vdd! } -stacked_via_bottom_layer metal1 # # Use the special-router to route the vdd! and gnd! nets sroute -jogControl { preferWithChanges differentLayer } # Save the design so far saveDesign ${BASENAME}_pplan.enc puts "-------------Power Planning done---------"