Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions docs/user/FlowVariables.md
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,7 @@ configuration file.
| <a name="GLOBAL_ROUTE_USE_CUGR"></a>GLOBAL_ROUTE_USE_CUGR| Passed as -use_cugr to global_route. Uses CUGR as the global routing solver instead of the default FastRoute solver. NOTE: CUGR is not ready for production.| 0|
| <a name="GND_NETS_VOLTAGES"></a>GND_NETS_VOLTAGES| Used for IR Drop calculation.| |
| <a name="GPL_KEEP_OVERFLOW"></a>GPL_KEEP_OVERFLOW| Passed as -keep_resize_below_overflow to global_placement. Only used when GPL_TIMING_DRIVEN is enabled.| |
| <a name="GPL_PLACE_IOS"></a>GPL_PLACE_IOS| Place IO pins together with the cells in global placement (-place_ios).| 0|
| <a name="GPL_RANDOM_SEED"></a>GPL_RANDOM_SEED| Specifies a random seed for global placement. Useful for perturbation studies.| |
| <a name="GPL_ROUTABILITY_DRIVEN"></a>GPL_ROUTABILITY_DRIVEN| Specifies whether the placer should use routability driven placement.| 1|
| <a name="GPL_TIMING_DRIVEN"></a>GPL_TIMING_DRIVEN| Specifies whether the placer should use timing driven placement.| 1|
Expand Down Expand Up @@ -484,6 +485,7 @@ configuration file.
- [FLOORPLAN_DEF](#FLOORPLAN_DEF)
- [GLOBAL_PLACEMENT_ARGS](#GLOBAL_PLACEMENT_ARGS)
- [GPL_KEEP_OVERFLOW](#GPL_KEEP_OVERFLOW)
- [GPL_PLACE_IOS](#GPL_PLACE_IOS)
- [GPL_RANDOM_SEED](#GPL_RANDOM_SEED)
- [GPL_ROUTABILITY_DRIVEN](#GPL_ROUTABILITY_DRIVEN)
- [GPL_TIMING_DRIVEN](#GPL_TIMING_DRIVEN)
Expand Down
9 changes: 9 additions & 0 deletions flow/scripts/global_place.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,12 @@ lappend global_placement_args -force_center_initial_place
lappend global_placement_args -min_phi_coef $::env(MIN_PLACE_STEP_COEF)
lappend global_placement_args -max_phi_coef $::env(MAX_PLACE_STEP_COEF)

set place_ios [expr { $::env(GPL_PLACE_IOS) && ![pins_fixed_in_floorplan] }]
if { $place_ios } {
log_cmd set_place_config {*}[place_pins_args_to_place_config]
lappend global_placement_args -place_ios
}
Comment thread
minjukim55 marked this conversation as resolved.

proc do_placement { global_placement_args } {
set all_args [concat [list -density [place_density_with_lb_addon] \
-pad_left $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
Expand All @@ -63,6 +69,9 @@ proc do_placement { global_placement_args } {
}

set result [catch { do_placement $global_placement_args } errMsg]
if { $place_ios } {
log_cmd reset_place_config
}
if { $result != 0 } {
orfs_write_db $::env(RESULTS_DIR)/3_3_place_gp-failed.odb
error $errMsg
Expand Down
5 changes: 5 additions & 0 deletions flow/scripts/global_place_skip_io.tcl
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
source $::env(SCRIPTS_DIR)/load.tcl
erase_non_stage_variables place
if { $::env(GPL_PLACE_IOS) } {
orfs_copy_db $::env(RESULTS_DIR)/2_floorplan.odb \
$::env(RESULTS_DIR)/3_1_place_gp_skip_io.odb
return
}
load_design 2_floorplan.odb 2_floorplan.sdc
source_step_tcl PRE GLOBAL_PLACE_SKIP_IO

Expand Down
6 changes: 1 addition & 5 deletions flow/scripts/io_placement.tcl
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
source $::env(SCRIPTS_DIR)/load.tcl
erase_non_stage_variables place

if {
![env_var_exists_and_non_empty FLOORPLAN_DEF] &&
![env_var_exists_and_non_empty FOOTPRINT] &&
![env_var_exists_and_non_empty FOOTPRINT_TCL]
} {
if { !$::env(GPL_PLACE_IOS) && ![pins_fixed_in_floorplan] } {
load_design 3_1_place_gp_skip_io.odb 2_floorplan.sdc
source_step_tcl PRE IO_PLACEMENT
log_cmd place_pins \
Expand Down
37 changes: 37 additions & 0 deletions flow/scripts/util.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,43 @@ proc env_var_or_empty { env_var } {
return ""
}

proc pins_fixed_in_floorplan { } {
return [expr {
[env_var_exists_and_non_empty FLOORPLAN_DEF] ||
[env_var_exists_and_non_empty FOOTPRINT] ||
[env_var_exists_and_non_empty FOOTPRINT_TCL]
}]
}

# set_place_config arguments for global_placement -place_ios, from the
# place_pins settings.
proc place_pins_args_to_place_config { } {
set config_args [list \
-io_pin_hor_layers $::env(IO_PLACER_H) \
-io_pin_ver_layers $::env(IO_PLACER_V)]
set pins_args [env_var_or_empty PLACE_PINS_ARGS]
for { set i 0 } { $i < [llength $pins_args] } { incr i } {
set arg [lindex $pins_args $i]
switch -- $arg {
-corner_avoidance -
-min_distance {
lappend config_args -io_pin_[string range $arg 1 end] \
[lindex $pins_args [incr i]]
}
-min_distance_in_tracks {
lappend config_args -io_pin_min_distance_in_tracks
}
default {
utl::warn FLW 25 "PLACE_PINS_ARGS $arg is not used with GPL_PLACE_IOS."
if { ![string match -* [lindex $pins_args [expr { $i + 1 }]]] } {
incr i
}
}
}
}
return $config_args
}

proc find_macros { } {
set macros ""

Expand Down
7 changes: 7 additions & 0 deletions flow/scripts/variables.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions flow/scripts/variables.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -719,6 +719,12 @@ GPL_ROUTABILITY_DRIVEN:
stages:
- place
default: 1
GPL_PLACE_IOS:
description: |
Place IO pins together with the cells in global placement (-place_ios).
stages:
- place
default: 0
GPL_KEEP_OVERFLOW:
description: >
Passed as -keep_resize_below_overflow to global_placement.
Expand Down
2 changes: 1 addition & 1 deletion tools/OpenROAD
Submodule OpenROAD updated 628 files