| ### PDN Config. All units in micrometer (um) |
| ## The values used in this config are for reference only and do not correspond to any specific foundry |
| ## design name to be used in DEF |
| set ::design $::env(DESIGN_NAME) |
| |
| ## DEF DBU |
| set ::def_units $::env(DEF_UNITS_PER_MACRON) |
| |
| ##Input DEF with macros packed |
| set ::FpOutDef $::env(replacemacro_tmp_file_tag).def |
| |
| #### input tech lef path |
| #set ::techLef $::env(TECH_LEF) |
| |
| #### input cell lef path |
| set ::cellLef [list $::env(MERGED_LEF)] |
| |
| #### input flat lef path. FLAT LEF that contains physical views of all standard cells and macros in the design |
| # Ensure that the file ends with END LIBRARY |
| set ::flatLef $::env(MERGED_LEF) |
| |
| set ::macro_power_pins $::env(VDD_PIN) |
| set ::macro_ground_pins $::env(GND_PIN) |
| |
| #### placement SITE name from LEF |
| set ::site_name $::env(PLACE_SITE) |
| set ::site_width $::env(PLACE_SITE_WIDTH) |
| |
| # Floorplan information - core boundary coordinates, std. cell row height, |
| # minimum track pitch as defined in LEF |
| # |
| |
| set coreinfo [join [exec $::env(SCRIPTS_DIR)/extract_coreinfo.sh $::FpOutDef] " "] |
| # DIEAREA ( 0 0 ) ( 93930 93930 ) ; |
| # ROW ROW_0 unit 0 0 FS DO 195 by 1 STEP 480 0 ; |
| # ROW ROW_27 unit 0 89910 N DO 195 by 1 STEP 480 0 ; |
| # 0 0 93930 93930 /// 0 0 0 89910 195 480 |
| set sites_per_row [lindex $coreinfo 8] |
| set step [lindex $coreinfo 9] |
| |
| set ::core_area_llx [expr { [lindex $coreinfo 4]/double($::def_units) }] |
| set ::core_area_lly [expr { [lindex $coreinfo 5]/double($::def_units) }] |
| set ::core_area_urx [expr { ([lindex $coreinfo 6]+$step*$sites_per_row)/double($::def_units) }] |
| set ::core_area_ury [expr { [lindex $coreinfo 7]/double($::def_units) }] |
| |
| set ::die_area_llx [expr { [lindex $coreinfo 0]/double($::def_units) }] |
| set ::die_area_lly [expr { [lindex $coreinfo 1]/double($::def_units) }] |
| set ::die_area_urx [expr { [lindex $coreinfo 2]/double($::def_units) }] |
| set ::die_area_ury [expr { [lindex $coreinfo 3]/double($::def_units) }] |
| |
| set ::row_height $::env(PLACE_SITE_HEIGHT) |
| |
| # Power nets |
| set ::power_nets "VDD" |
| set ::ground_nets "VSS" |
| |
| set ::macro_blockage_layer_list "" |
| |
| # Details from techlef (BEOL LEF) |
| set ::met_layer_list "met1 met2 met3 met4 met5" ;#From met1 and upwards |
| set ::met_layer_dir "hor ver hor ver hor" |
| |
| # Ensure pitches will make the stripes fall on track |
| # Ensure offsets will make the stripes fall on track |
| |
| pdn specify_grid stdcell [list \ |
| layers "met1 met4 met5" \ |
| dir "hor ver hor" \ |
| widths "0.14 0.3 1.6" \ |
| pitches "$::row_height $::env(FP_PDN_VPITCH) $::env(FP_PDN_HPITCH)" \ |
| loffset "0 $::env(FP_PDN_VOFFSET) 0" \ |
| boffset "0 0 $::env(FP_PDN_HOFFSET)" \ |
| connect "{met1 met4} {met4 met5}" \ |
| vias "M1M2_PR M2M3_PR M3M4_PR M4M5_PR" \ |
| ] |
| |
| #pdn specify_grid macro [list \ |
| # layers "M6" \ |
| # dir "ver" \ |
| # widths "0.93" \ |
| # pitches "40" \ |
| # loffset 2 \ |
| # boffset 0 \ |
| # min_pitch 0.2 \ |
| # connect "{M4_PIN_hor M6} {M6 M7}" \ |
| # vias "VIA1_RULE_1 VIA2_RULE_1 VIA3_RULE_1 VIA4_RULE_293 VIA5_RULE_360 VIA6_RULE_21 VIA7_RULE_18 VIA8_RULE_1" \ |
| #] |
| #set ::halo 4 |
| |
| # Metal layer for rails on every row |
| set ::rails_mlayer "met1" ; |
| |
| # POWER or GROUND #Std. cell rails starting with power or ground rails at the bottom of the core area |
| set ::rails_start_with "GROUND" ; |
| |
| # POWER or GROUND #Upper metal stripes starting with power or ground rails at the left/bottom of the core area |
| set ::stripes_start_with "GROUND" ; |
| |
| proc generate_viarules {} { |
| } |
| |
| cd $::env(TMP_DIR)/floorplan |