File tree 5 files changed +28
-27
lines changed
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)
7
7
8
8
fast_route
9
9
10
- source $::env(SCRIPTS_DIR) /set_place_density.tcl
11
-
12
10
set global_placement_args {}
13
11
14
12
# Parameters for routability mode in global placement
@@ -21,8 +19,8 @@ if {$::env(GPL_TIMING_DRIVEN)} {
21
19
lappend global_placement_args {-timing_driven}
22
20
}
23
21
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] \
26
24
-pad_left $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
27
25
-pad_right $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) ] \
28
26
$global_placement_args ]
@@ -34,7 +32,7 @@ proc do_placement {place_density global_placement_args} {
34
32
log_cmd global_placement {*}$all_args
35
33
}
36
34
37
- set result [catch {do_placement $place_density $ global_placement_args } errMsg]
35
+ set result [catch {do_placement $global_placement_args } errMsg]
38
36
if {$result != 0} {
39
37
write_db $::env(RESULTS_DIR) /3_3_place_gp-failed.odb
40
38
error $errMsg
Original file line number Diff line number Diff line change @@ -6,17 +6,17 @@ load_design 2_floorplan.odb 2_floorplan.sdc
6
6
if { [env_var_exists_and_non_empty FLOORPLAN_DEF] } {
7
7
puts " FLOORPLAN_DEF is set. Skipping global placement without IOs"
8
8
} else {
9
- source $::env(SCRIPTS_DIR) /set_place_density.tcl
9
+ set place_density [place_density_with_lb_addon]
10
10
11
11
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)
16
16
} 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)
20
20
}
21
21
}
22
22
Original file line number Diff line number Diff line change @@ -57,8 +57,7 @@ if {[find_macros] != ""} {
57
57
append_env_var additional_rtlmp_args RTLMP_FENCE_UX -fence_ux 1
58
58
append_env_var additional_rtlmp_args RTLMP_FENCE_UY -fence_uy 1
59
59
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] "
62
61
63
62
set all_args $additional_rtlmp_args
64
63
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} {
136
136
}
137
137
138
138
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
+ }
You can’t perform that action at this time.
0 commit comments