28.11.2012 Views

i A PHYSICAL IMPLEMENTATION WITH CUSTOM LOW POWER ...

i A PHYSICAL IMPLEMENTATION WITH CUSTOM LOW POWER ...

i A PHYSICAL IMPLEMENTATION WITH CUSTOM LOW POWER ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

set VAL [expr "$NUMBER_OF_MODULES_PER_STRIPE % 2"]<br />

if {$VAL ==1} {<br />

set DIE_WIDTH [expr {($MODULE_WIDTH *$NUMBER_OF_MODULES_PER_STRIPE) +<br />

((($NUMBER_OF_MODULES_PER_STRIPE-1)/2)*$INTER_MODULE_DISTANCE_MIN) +<br />

(((($NUMBER_OF_MODULES_PER_STRIPE-1)/2)-1)*$INTER_MODULE_DISTANCE_MAX) +<br />

$MODULE_LEFT_DISTANCE + $MODULE_ RIGHT_DISTANCE + $<strong>POWER</strong>_RING_TOTAL_LEFT +<br />

$<strong>POWER</strong>_RING_TOTAL_RIGHT} ]<br />

} else {<br />

set DIE_WIDTH [expr {($MODULE_WIDTH *$NUMBER_OF_MODULES_PER_STRIPE) +<br />

((($NUMBER_OF_MODULES_PER_STRIPE)/2)*$INTER_MODULE_DISTANCE_MIN) +<br />

(((($NUMBER_OF_MODULES_PER_STRIPE)/2)-1)*$INTER_MODULE_DISTANCE_MAX) +<br />

$MODULE_LEFT_DISTANCE + $MODULE_RIGHT_DISTANCE + $<strong>POWER</strong>_RING_TOTAL_LEFT +<br />

$<strong>POWER</strong>_RING_TOTAL_RIGHT}]<br />

}<br />

set<br />

<strong>POWER</strong>_RING_WIDTH_TOP 7.2<br />

set<br />

<strong>POWER</strong>_RING_WIDTH_BOTTOM 7.2<br />

set<br />

<strong>POWER</strong>_RING_WIDTH_LEFT 7.2<br />

set <strong>POWER</strong>_RING_WIDTH_RIGHT 7.2<br />

set <strong>POWER</strong>_RING_SPACING_TOP 0.8<br />

set <strong>POWER</strong>_RING_SPACING_BOTTOM<br />

0.8<br />

set <strong>POWER</strong>_RING_SPACING_LEFT<br />

0.8<br />

set <strong>POWER</strong>_RING_SPACING_RIGHT 0.8<br />

#this power_ring_offset_left is the distance between the IO and the power ring and the distance between the power<br />

ring and core<br />

set <strong>POWER</strong>_RING_OFFSET_TOP 0.8<br />

set <strong>POWER</strong>_RING_OFFSET_BOTTOM 0.8<br />

set <strong>POWER</strong>_RING_OFFSET_LEFT<br />

0.8<br />

set <strong>POWER</strong>_RING_OFFSET_RIGHT 0.8<br />

#The 0.8 is distance between alu and mux<br />

set INTER_STRIPE_SPACING 7.2<br />

set FINAL_MUX_STRIPE_ROUTING_OFFSET 40<br />

set DIE_HEIGHT_ALU_STRIPE 285.6<br />

set DIE_HEIGHT_MUX_STRIPE 103.2<br />

set<br />

DIE_HEIGHT_FINAL_MUX_STRIPE 69.6<br />

set CHIP_<strong>POWER</strong>_OFFSET 16.8<br />

set ALU_MUX_TOTAL_HEIGHT<br />

[ expr {$DIE_HEIGHT_ALU_STRIPE + $DIE_HEIGHT_MUX_STRIPE}]<br />

#20.8 for additional mux height<br />

set DIE_HEIGHT [expr {($ ALU_MUX_TOTAL_HEIGHT*17)<br />

+ ($INTER_STRIPE_SPACING*34) +<br />

$DIE_HEIGHT_ALU_STRIPE + $INTER_STRIPE_SPACING + $DIE_HEIGHT_FINAL_MUX_STRIPE + (2 *<br />

$ CHIP_<strong>POWER</strong>_OFFSET) + $FINAL_MUX_STRIPE_ROUTING_OFFSET<br />

+ 2.4 + 14.4 + 7.2 + 2.0}]<br />

puts "DH $DIE_HEIGHT"<br />

floorplan -d $DIE_WIDTH $DIE_HEIGHT<br />

$CORE_TO_LEFT $CORE_TO_BOTTOM $CORE_TO_RIGHT<br />

$ CORE_TO_TOP -fplanOrigin l<br />

globalNetConnect vdd -type pgpin -pin VDD -instanceBasename<br />

* -all -override -verbose<br />

globalNetConnect gnd -type pgpin -pin VSS -instanceBasename<br />

* -all -override -verbose<br />

addRing -nets {gnd vdd} -type core_rings -follow core -center 0 -offset_top $<strong>POWER</strong>_RING_OFFSET_TOP -<br />

offset_bottom $<strong>POWER</strong>_RING_OFFSET_BOTTOM<br />

-offset_left $<strong>POWER</strong>_RING_OFFSET_LEFT -offset_right<br />

171

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!