Files
OpenLane/scripts/openroad/common/resizer.tcl

69 lines
2.7 KiB
Tcl

# Copyright 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.
proc set_dont_touch_wrapper {} {
if { [info exists ::env(RSZ_DONT_TOUCH_RX)] && \
($::env(RSZ_USE_OLD_REMOVER) != 1 || $::env(RSZ_DONT_TOUCH_RX) != {^$}) } {
set pattern $::env(RSZ_DONT_TOUCH_RX)
variable odb_block [[[::ord::get_db] getChip] getBlock]
set odb_nets [odb::dbBlock_getNets $::odb_block]
set odb_instances [odb::dbBlock_getInsts $odb_block]
foreach net $odb_nets {
set net_name [odb::dbNet_getName $net]
if { [regexp "$pattern" $net_name full] } {
puts "\[INFO\] Net '$net_name' matched don't touch regular expression, setting as don't touch..."
set_dont_touch "$net_name"
}
}
foreach instance $odb_instances {
set instance_name [odb::dbInst_getName $instance]
if { [regexp "$pattern" $instance_name full] } {
puts "\[INFO\] Instance '$instance_name' matched don't touch regular expression, setting as don't touch..."
set_dont_touch "$instance_name"
}
}
}
if { [info exists ::env(RSZ_DONT_TOUCH_LIST)] } {
set_dont_touch $::env(RSZ_DONT_TOUCH_LIST)
}
}
proc unset_dont_touch_wrapper {} {
if { [info exists ::env(RSZ_DONT_TOUCH_RX)] && \
($::env(RSZ_USE_OLD_REMOVER) != 1 || $::env(RSZ_DONT_TOUCH_RX) != {^$}) } {
set pattern $::env(RSZ_DONT_TOUCH_RX)
variable odb_block [[[::ord::get_db] getChip] getBlock]
set odb_nets [odb::dbBlock_getNets $::odb_block]
set odb_instances [odb::dbBlock_getInsts $odb_block]
foreach net $odb_nets {
set net_name [odb::dbNet_getName $net]
if { [regexp "$pattern" $net_name full] } {
unset_dont_touch "$net_name"
}
}
foreach instance $odb_instances {
set instance_name [odb::dbInst_getName $instance]
if { [regexp "$pattern" $instance_name full] } {
unset_dont_touch "$instance_name"
}
}
}
if { [info exists ::env(RSZ_DONT_TOUCH_LIST)] } {
unset_dont_touch $::env(RSZ_DONT_TOUCH_LIST)
}
}