File tree Expand file tree Collapse file tree 5 files changed +28
-27
lines changed
Expand file tree Collapse file tree 5 files changed +28
-27
lines changed Original file line number Diff line number Diff line change @@ -7,8 +7,6 @@ set_dont_use $::env(DONT_USE_CELLS)
77
88fast_route
99
10- source $::env(SCRIPTS_DIR) /set_place_density.tcl
11-
1210set 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]
3836if {$result != 0} {
3937 write_db $::env(RESULTS_DIR) /3_3_place_gp-failed.odb
4038 error $errMsg
Original file line number Diff line number Diff line change @@ -6,17 +6,17 @@ load_design 2_floorplan.odb 2_floorplan.sdc
66if { [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
Original file line number Diff line number Diff 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
Load Diff This file was deleted.
Original file line number Diff line number Diff line change @@ -136,3 +136,19 @@ proc erase_non_stage_variables {stage_name} {
136136}
137137
138138set 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+ }
You can’t perform that action at this time.
0 commit comments