2023-05-20 06:48:08 -05: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 "met4 met5"
|
|
|
|
|
|
|
|
#### core ring ####
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met4 \
|
|
|
|
-width 5 \
|
|
|
|
-pitch 120 \
|
|
|
|
-offset 3.3 \
|
|
|
|
-spacing 1 \
|
|
|
|
-number_of_straps 1 \
|
|
|
|
-nets "vssd vccd vccd1 vssd1 vssd2 vccd2 vccd vssd" \
|
|
|
|
-starts_with POWER
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met4 \
|
|
|
|
-width 5 \
|
|
|
|
-pitch 120 \
|
|
|
|
-offset 3097.56 \
|
|
|
|
-spacing 1 \
|
|
|
|
-number_of_straps 1 \
|
|
|
|
-nets "vccd vssd vccd2 vssd2 vssd1 vccd1 vccd vssd" \
|
|
|
|
-starts_with POWER
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met5 \
|
|
|
|
-width 16 \
|
|
|
|
-pitch 120 \
|
|
|
|
-offset 5 \
|
|
|
|
-spacing 1.6 \
|
|
|
|
-number_of_straps 1 \
|
|
|
|
-nets "vccd vssd vccd1 vssd1 vssd2 vccd2" \
|
|
|
|
-starts_with POWER
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met5 \
|
|
|
|
-width 10 \
|
|
|
|
-pitch 146 \
|
|
|
|
-offset 1045.5 \
|
|
|
|
-spacing 1.6 \
|
|
|
|
-number_of_straps 1 \
|
|
|
|
-nets "vccd vccd2 vccd1 vssd vssd1 vssd2 vdda1 vssa1 vdda2 vssa2" \
|
|
|
|
-starts_with POWER
|
|
|
|
|
|
|
|
#### std cells stripes ####
|
|
|
|
#Metal4
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met4 \
|
|
|
|
-width 6.4 \
|
|
|
|
-pitch 100 \
|
|
|
|
-offset 117 \
|
|
|
|
-spacing 1.2 \
|
|
|
|
-nets "vccd vssd" \
|
|
|
|
-starts_with POWER
|
|
|
|
|
|
|
|
#Metal5
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met5 \
|
|
|
|
-width 6.4 \
|
|
|
|
-pitch 120 \
|
|
|
|
-offset 181 \
|
|
|
|
-spacing 2.4 \
|
|
|
|
-nets "vccd vssd" \
|
|
|
|
-starts_with POWER
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met5 \
|
2023-05-24 09:41:45 -05:00
|
|
|
-width 12.8 \
|
2023-05-20 06:48:08 -05:00
|
|
|
-pitch 120 \
|
|
|
|
-offset 239 \
|
|
|
|
-spacing 2.4 \
|
2023-05-24 09:41:45 -05:00
|
|
|
-number_of_straps 5 \
|
2023-05-20 06:48:08 -05:00
|
|
|
-nets "vccd vssd" \
|
|
|
|
-starts_with POWER
|
|
|
|
|
|
|
|
#### mgmt_protect macros stripes ####
|
|
|
|
#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
|
|
|
|
|
|
|
|
#### user_id_programming
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met4 \
|
|
|
|
-width 1.6 \
|
|
|
|
-pitch 120 \
|
|
|
|
-offset 2958.855 \
|
|
|
|
-spacing 21.18 \
|
|
|
|
-number_of_straps 1 \
|
|
|
|
-nets "vccd vssd" \
|
|
|
|
-starts_with POWER
|
|
|
|
|
|
|
|
#### vssio and vddio stripes ####
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
|
|
|
-layer met5 \
|
|
|
|
-width 5 \
|
|
|
|
-pitch 14 \
|
|
|
|
-offset 137 \
|
|
|
|
-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 "met4 met5"
|
|
|
|
|
|
|
|
# Adds the standard cell rails if enabled.
|
|
|
|
if { $::env(FP_PDN_ENABLE_RAILS) == 1 } {
|
|
|
|
add_pdn_stripe \
|
|
|
|
-grid stdcell_grid \
|
2023-05-23 04:16:44 -05:00
|
|
|
-layer met1 \
|
2023-05-20 06:48:08 -05:00
|
|
|
-width $::env(FP_PDN_RAIL_WIDTH) \
|
|
|
|
-followpins \
|
|
|
|
-starts_with POWER
|
|
|
|
|
|
|
|
add_pdn_connect \
|
|
|
|
-grid stdcell_grid \
|
2023-05-23 04:16:44 -05:00
|
|
|
-layers "met1 met4"
|
2023-05-20 06:48:08 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
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"
|
|
|
|
|