Skip to content

Commit d59ddd4

Browse files
authored
Merge pull request The-OpenROAD-Project#2532 from Pinata-Consulting/lb-addon-cleanup
cleanup: introduce place_density_with_lb_addon proc
2 parents 4b8deb3 + 12966fa commit d59ddd4

5 files changed

+28
-27
lines changed

flow/scripts/global_place.tcl

+3-5
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ set_dont_use $::env(DONT_USE_CELLS)
77

88
fast_route
99

10-
source $::env(SCRIPTS_DIR)/set_place_density.tcl
11-
1210
set global_placement_args {}
1311

1412
# Parameters for routability mode in global placement
@@ -21,8 +19,8 @@ if {$::env(GPL_TIMING_DRIVEN)} {
2119
lappend global_placement_args {-timing_driven}
2220
}
2321

24-
proc do_placement {place_density global_placement_args} {
25-
set all_args [concat [list -density $place_density \
22+
proc do_placement {global_placement_args} {
23+
set all_args [concat [list -density [place_density_with_lb_addon] \
2624
-pad_left $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
2725
-pad_right $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT)] \
2826
$global_placement_args]
@@ -34,7 +32,7 @@ proc do_placement {place_density global_placement_args} {
3432
log_cmd global_placement {*}$all_args
3533
}
3634

37-
set result [catch {do_placement $place_density $global_placement_args} errMsg]
35+
set result [catch {do_placement $global_placement_args} errMsg]
3836
if {$result != 0} {
3937
write_db $::env(RESULTS_DIR)/3_3_place_gp-failed.odb
4038
error $errMsg

flow/scripts/global_place_skip_io.tcl

+8-8
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,17 @@ load_design 2_floorplan.odb 2_floorplan.sdc
66
if { [env_var_exists_and_non_empty FLOORPLAN_DEF] } {
77
puts "FLOORPLAN_DEF is set. Skipping global placement without IOs"
88
} else {
9-
source $::env(SCRIPTS_DIR)/set_place_density.tcl
9+
set place_density [place_density_with_lb_addon]
1010

1111
if { 0 != [llength [array get ::env GLOBAL_PLACEMENT_ARGS]] } {
12-
global_placement -skip_io -density $place_density \
13-
-pad_left $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
14-
-pad_right $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
15-
{*}$::env(GLOBAL_PLACEMENT_ARGS)
12+
log_cmd global_placement -skip_io -density $place_density \
13+
-pad_left $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
14+
-pad_right $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
15+
{*}$::env(GLOBAL_PLACEMENT_ARGS)
1616
} else {
17-
global_placement -skip_io -density $place_density \
18-
-pad_left $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
19-
-pad_right $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT)
17+
log_cmd global_placement -skip_io -density $place_density \
18+
-pad_left $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
19+
-pad_right $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT)
2020
}
2121
}
2222

flow/scripts/macro_place_util.tcl

+1-2
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,7 @@ if {[find_macros] != ""} {
5757
append_env_var additional_rtlmp_args RTLMP_FENCE_UX -fence_ux 1
5858
append_env_var additional_rtlmp_args RTLMP_FENCE_UY -fence_uy 1
5959

60-
source $::env(SCRIPTS_DIR)/set_place_density.tcl
61-
append additional_rtlmp_args " -target_util $place_density"
60+
append additional_rtlmp_args " -target_util [place_density_with_lb_addon]"
6261

6362
set all_args $additional_rtlmp_args
6463

flow/scripts/set_place_density.tcl

-12
This file was deleted.

flow/scripts/util.tcl

+16
Original file line numberDiff line numberDiff line change
@@ -136,3 +136,19 @@ proc erase_non_stage_variables {stage_name} {
136136
}
137137

138138
set global_route_congestion_report $::env(REPORTS_DIR)/congestion.rpt
139+
140+
proc place_density_with_lb_addon {} {
141+
# check the lower boundary of the PLACE_DENSITY and add PLACE_DENSITY_LB_ADDON if it exists
142+
if {[info exist ::env(PLACE_DENSITY_LB_ADDON)]} {
143+
set place_density_lb [gpl::get_global_placement_uniform_density \
144+
-pad_left $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
145+
-pad_right $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT)]
146+
set place_density [expr $place_density_lb + ((1.0 - $place_density_lb) * $::env(PLACE_DENSITY_LB_ADDON)) + 0.01]
147+
if {$place_density > 1.0} {
148+
utl::error FLW 24 "Place density exceeds 1.0 (current PLACE_DENSITY_LB_ADDON = $::env(PLACE_DENSITY_LB_ADDON)). Please check if the value of PLACE_DENSITY_LB_ADDON is between 0 and 0.99."
149+
}
150+
} else {
151+
set place_density $::env(PLACE_DENSITY)
152+
}
153+
return $place_density
154+
}

0 commit comments

Comments
 (0)