2023-02-27 12:38:06 -06:00
|
|
|
# Copyright 2020-2022 Efabless Corporation
|
|
|
|
#
|
|
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
# you may not use this file except in compliance with the License.
|
|
|
|
# You may obtain a copy of the License at
|
|
|
|
#
|
|
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
#
|
|
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
# See the License for the specific language governing permissions and
|
|
|
|
# limitations under the License.
|
|
|
|
|
|
|
|
source $::env(SCRIPTS_DIR)/openroad/common/set_global_connections.tcl
|
|
|
|
set_global_connections
|
|
|
|
|
|
|
|
set secondary []
|
|
|
|
foreach vdd $::env(VDD_NETS) gnd $::env(GND_NETS) {
|
|
|
|
if { $vdd != $::env(VDD_NET)} {
|
|
|
|
lappend secondary $vdd
|
|
|
|
|
|
|
|
set db_net [[ord::get_db_block] findNet $vdd]
|
|
|
|
if {$db_net == "NULL"} {
|
|
|
|
set net [odb::dbNet_create [ord::get_db_block] $vdd]
|
|
|
|
$net setSpecial
|
|
|
|
$net setSigType "POWER"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if { $gnd != $::env(GND_NET)} {
|
|
|
|
lappend secondary $gnd
|
|
|
|
|
|
|
|
set db_net [[ord::get_db_block] findNet $gnd]
|
|
|
|
if {$db_net == "NULL"} {
|
|
|
|
set net [odb::dbNet_create [ord::get_db_block] $gnd]
|
|
|
|
$net setSpecial
|
|
|
|
$net setSigType "GROUND"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
set_voltage_domain -name CORE -power $::env(VDD_NET) -ground $::env(GND_NET) \
|
|
|
|
-secondary_power $secondary
|
|
|
|
|
|
|
|
define_pdn_grid \
|
|
|
|
-name stdcell_grid \
|
|
|
|
-starts_with POWER \
|
|
|
|
-voltage_domain CORE \
|
|
|
|
-pins "$::env(FP_PDN_LOWER_LAYER) $::env(FP_PDN_UPPER_LAYER)"
|
|
|
|
|
|
|
|
#### core ring ####
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met4 \
|
|
|
|
-width 5 \
|
|
|
|
-pitch 120 \
|
|
|
|
-offset 3.3 \
|
|
|
|
-spacing 1 \
|
|
|
|
-number_of_straps 1 \
|
|
|
|
-nets "vccd vssd vccd1 vssd1 vssa2 vdda2 vssa1 vdda1 vssd2 vccd2" \
|
2023-03-05 02:59:13 -06:00
|
|
|
-starts_with POWER
|
2023-02-27 12:38:06 -06:00
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met4 \
|
|
|
|
-width 5 \
|
|
|
|
-pitch 120 \
|
|
|
|
-offset 3085.56 \
|
|
|
|
-spacing 1 \
|
|
|
|
-number_of_straps 1 \
|
|
|
|
-nets "vccd2 vssd2 vdda1 vssa1 vdda2 vssa2 vssd1 vccd1 vssd vccd" \
|
2023-03-05 02:59:13 -06:00
|
|
|
-starts_with POWER
|
2023-02-27 12:38:06 -06:00
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met5 \
|
|
|
|
-width 10 \
|
|
|
|
-pitch 120 \
|
|
|
|
-offset 5 \
|
|
|
|
-spacing 1.6 \
|
|
|
|
-number_of_straps 1 \
|
|
|
|
-nets "vccd vssd vccd1 vssd1 vssa2 vdda2 vssa1 vdda1 vssd2 vccd2" \
|
2023-03-05 02:59:13 -06:00
|
|
|
-starts_with POWER
|
2023-02-27 12:38:06 -06:00
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met5 \
|
2023-03-05 02:59:13 -06:00
|
|
|
-width 13 \
|
|
|
|
-pitch 146 \
|
|
|
|
-offset 4599.28 \
|
2023-02-27 12:38:06 -06:00
|
|
|
-spacing 1.6 \
|
|
|
|
-number_of_straps 1 \
|
|
|
|
-nets "vccd2 vssd2 vdda1 vssa1 vdda2 vssa2 vssd1 vccd1 vssd vccd" \
|
2023-03-05 02:59:13 -06:00
|
|
|
-starts_with POWER
|
2023-02-27 12:38:06 -06:00
|
|
|
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met4 \
|
|
|
|
-width 2 \
|
|
|
|
-pitch 120 \
|
|
|
|
-offset 61.8 \
|
|
|
|
-spacing 1 \
|
|
|
|
-number_of_straps 1 \
|
|
|
|
-nets "vccd vssd" \
|
|
|
|
-starts_with POWER
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met4 \
|
|
|
|
-width 2 \
|
|
|
|
-pitch 120 \
|
|
|
|
-offset 3078.06 \
|
|
|
|
-spacing 1 \
|
|
|
|
-number_of_straps 1 \
|
|
|
|
-nets "vccd vssd" \
|
|
|
|
-starts_with POWER
|
|
|
|
|
|
|
|
#### std cells stripes ####
|
|
|
|
#Metal4
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met4 \
|
2023-03-05 02:59:13 -06:00
|
|
|
-width 6.4 \
|
2023-02-27 12:38:06 -06:00
|
|
|
-pitch 100 \
|
|
|
|
-offset 117 \
|
2023-03-05 02:59:13 -06:00
|
|
|
-spacing 1.2 \
|
2023-02-27 12:38:06 -06:00
|
|
|
-nets "vccd vssd" \
|
|
|
|
-starts_with POWER
|
|
|
|
|
|
|
|
#Metal5
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met5 \
|
2023-03-05 02:59:13 -06:00
|
|
|
-width 6.4 \
|
2023-02-27 12:38:06 -06:00
|
|
|
-pitch 120 \
|
|
|
|
-offset 181 \
|
2023-03-05 02:59:13 -06:00
|
|
|
-spacing 2.4 \
|
2023-02-27 12:38:06 -06:00
|
|
|
-nets "vccd vssd" \
|
|
|
|
-starts_with POWER
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met5 \
|
2023-03-05 02:59:13 -06:00
|
|
|
-width 14.4 \
|
2023-02-27 12:38:06 -06:00
|
|
|
-pitch 120 \
|
|
|
|
-offset 239 \
|
2023-03-05 02:59:13 -06:00
|
|
|
-spacing 2.4 \
|
|
|
|
-number_of_straps 5 \
|
|
|
|
-nets "vccd vssd" \
|
|
|
|
-starts_with POWER
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met5 \
|
|
|
|
-width 14.4 \
|
|
|
|
-pitch 120 \
|
|
|
|
-offset 949.32 \
|
|
|
|
-spacing 2.4 \
|
|
|
|
-number_of_straps 1 \
|
2023-02-27 12:38:06 -06:00
|
|
|
-nets "vccd vssd" \
|
|
|
|
-starts_with POWER
|
|
|
|
|
|
|
|
#### mgmt_protect macros stripes ####
|
|
|
|
#Metal5
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met5 \
|
|
|
|
-width 4.8 \
|
|
|
|
-pitch 120 \
|
|
|
|
-offset 807 \
|
|
|
|
-spacing 3.2 \
|
|
|
|
-number_of_straps 1 \
|
|
|
|
-nets "vccd1 vssd1 vccd2 vssd2 vdda1 vssa1 vdda2 vssa2" \
|
|
|
|
-starts_with POWER
|
|
|
|
#Metal4
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met4 \
|
|
|
|
-width 4.8 \
|
|
|
|
-pitch 50 \
|
|
|
|
-offset 843 \
|
|
|
|
-spacing 3.2 \
|
|
|
|
-number_of_straps 2 \
|
|
|
|
-nets "vccd2 vssd2" \
|
|
|
|
-starts_with POWER
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met4 \
|
|
|
|
-width 4.8 \
|
|
|
|
-pitch 100 \
|
|
|
|
-offset 1268 \
|
|
|
|
-spacing 3.2 \
|
|
|
|
-number_of_straps 3 \
|
|
|
|
-nets "vccd1 vssd1" \
|
|
|
|
-starts_with POWER
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met4 \
|
|
|
|
-width 4.8 \
|
|
|
|
-pitch 40 \
|
|
|
|
-offset 1836 \
|
|
|
|
-spacing 3.2 \
|
|
|
|
-number_of_straps 2 \
|
|
|
|
-nets "vdda1 vssa1 vdda2 vssa2" \
|
|
|
|
-starts_with POWER
|
|
|
|
|
|
|
|
#### uppder gpio_high macros stripes ####
|
|
|
|
#Metal4
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met4 \
|
2023-03-05 02:59:13 -06:00
|
|
|
-width 6.4 \
|
2023-02-27 12:38:06 -06:00
|
|
|
-pitch 300 \
|
|
|
|
-offset 249.12 \
|
2023-03-05 02:59:13 -06:00
|
|
|
-spacing 1.2 \
|
|
|
|
-number_of_straps 8 \
|
2023-02-27 12:38:06 -06:00
|
|
|
-nets "vssd1 vccd1" \
|
|
|
|
-starts_with POWER
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met4 \
|
2023-03-05 02:59:13 -06:00
|
|
|
-width 6.4 \
|
2023-02-27 12:38:06 -06:00
|
|
|
-pitch 300 \
|
2023-03-05 02:59:13 -06:00
|
|
|
-offset 2749.12 \
|
|
|
|
-spacing 1.2 \
|
2023-02-27 12:38:06 -06:00
|
|
|
-number_of_straps 1 \
|
|
|
|
-nets "vssd1 vccd1" \
|
|
|
|
-starts_with POWER
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
2023-03-05 02:59:13 -06:00
|
|
|
-layer met4 \
|
|
|
|
-width 6.4 \
|
2023-02-27 12:38:06 -06:00
|
|
|
-pitch 300 \
|
2023-03-05 02:59:13 -06:00
|
|
|
-offset 949.12 \
|
|
|
|
-spacing 1.2 \
|
2023-02-27 12:38:06 -06:00
|
|
|
-number_of_straps 1 \
|
|
|
|
-nets "vssd1 vccd1" \
|
|
|
|
-starts_with POWER
|
2023-03-05 02:59:13 -06:00
|
|
|
#Metal5
|
|
|
|
# add_pdn_stripe \
|
|
|
|
# -grid stdcell_grid \
|
|
|
|
# -layer met5 \
|
|
|
|
# -width 3.2 \
|
|
|
|
# -pitch 300 \
|
|
|
|
# -offset 4594.76 \
|
|
|
|
# -spacing 2.24 \
|
|
|
|
# -number_of_straps 1 \
|
|
|
|
# -nets "vssd1 vccd1" \
|
|
|
|
# -starts_with POWER
|
2023-02-27 12:38:06 -06:00
|
|
|
|
|
|
|
#### vssio and vddio stripes ####
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met5 \
|
2023-03-05 02:59:13 -06:00
|
|
|
-width 5 \
|
|
|
|
-pitch 14 \
|
|
|
|
-offset 137 \
|
2023-02-27 12:38:06 -06:00
|
|
|
-spacing 2 \
|
|
|
|
-number_of_straps 2 \
|
|
|
|
-nets "vddio vssio" \
|
|
|
|
-starts_with POWER
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met4 \
|
|
|
|
-width 4.8 \
|
|
|
|
-pitch 386 \
|
|
|
|
-offset 647 \
|
|
|
|
-spacing 2 \
|
|
|
|
-number_of_straps 2 \
|
|
|
|
-nets "vddio vssio" \
|
|
|
|
-starts_with POWER
|
|
|
|
|
|
|
|
|
|
|
|
add_pdn_connect \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layers "$::env(FP_PDN_LOWER_LAYER) $::env(FP_PDN_UPPER_LAYER)"
|
|
|
|
|
|
|
|
# Adds the standard cell rails if enabled.
|
|
|
|
if { $::env(FP_PDN_ENABLE_RAILS) == 1 } {
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer $::env(FP_PDN_RAILS_LAYER) \
|
|
|
|
-width $::env(FP_PDN_RAIL_WIDTH) \
|
|
|
|
-followpins \
|
|
|
|
-starts_with POWER
|
|
|
|
|
|
|
|
add_pdn_connect \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layers "$::env(FP_PDN_RAILS_LAYER) $::env(FP_PDN_LOWER_LAYER)"
|
|
|
|
}
|
|
|
|
|
|
|
|
define_pdn_grid \
|
|
|
|
-macro \
|
|
|
|
-default \
|
|
|
|
-name macro \
|
|
|
|
-starts_with POWER \
|
|
|
|
-halo "$::env(FP_PDN_HORIZONTAL_HALO) $::env(FP_PDN_VERTICAL_HALO)"
|
|
|
|
|
|
|
|
add_pdn_connect \
|
|
|
|
-grid macro \
|
|
|
|
-layers "met3 met4"
|
|
|
|
|
|
|
|
add_pdn_connect \
|
|
|
|
-grid macro \
|
|
|
|
-layers "met4 met5"
|
|
|
|
|