Skip to content
Closed
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 @@ -143,6 +143,7 @@ configuration file.
| <a name="DPO_MAX_DISPLACEMENT"></a>DPO_MAX_DISPLACEMENT| Specifies how far an instance can be moved when optimizing.| 5 1|
| <a name="EARLY_SIZING_CAP_RATIO"></a>EARLY_SIZING_CAP_RATIO| Ratio between the input pin capacitance and the output pin load during initial gate sizing.| |
| <a name="ENABLE_DPO"></a>ENABLE_DPO| Enable detail placement with improve_placement feature.| 1|
| <a name="ENABLE_NB_LEGALIZER"></a>ENABLE_NB_LEGALIZER| Enable negotiation-based legalizer in detailed placement.| 0|
| <a name="ENABLE_RESISTANCE_AWARE"></a>ENABLE_RESISTANCE_AWARE| Passed as -resistance_aware to global_route.| |
| <a name="FASTROUTE_TCL"></a>FASTROUTE_TCL| Specifies a Tcl script with commands to run before FastRoute.| |
| <a name="FILL_CELLS"></a>FILL_CELLS| Fill cells are used to fill empty sites. If not set or empty, fill cell insertion is skipped.| |
Expand Down Expand Up @@ -628,6 +629,7 @@ configuration file.
- [DONT_USE_CELLS](#DONT_USE_CELLS)
- [DPO_MAX_DISPLACEMENT](#DPO_MAX_DISPLACEMENT)
- [ENABLE_DPO](#ENABLE_DPO)
- [ENABLE_NB_LEGALIZER](#ENABLE_NB_LEGALIZER)
- [FASTROUTE_TCL](#FASTROUTE_TCL)
- [FILL_CONFIG](#FILL_CONFIG)
- [FLOW_VARIANT](#FLOW_VARIANT)
Expand Down
18 changes: 16 additions & 2 deletions flow/scripts/cts.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,14 @@ set_placement_padding -global \
-left $::env(CELL_PAD_IN_SITES_DETAIL_PLACEMENT) \
-right $::env(CELL_PAD_IN_SITES_DETAIL_PLACEMENT)

set result [catch { log_cmd detailed_placement } msg]
if {
[env_var_exists_and_non_empty ENABLE_NB_LEGALIZER] &&
$::env(ENABLE_NB_LEGALIZER)
} {
set result [catch { log_cmd detailed_placement -use_negotiation } msg]
} else {
set result [catch { log_cmd detailed_placement } msg]
}
Comment thread
precisionmoon marked this conversation as resolved.
if { $result != 0 } {
save_progress 4_1_error
error "Detailed placement failed in CTS: $msg"
Expand All @@ -70,7 +77,14 @@ if { !$::env(SKIP_CTS_REPAIR_TIMING) } {
run_lec_test 4_rsz 4_before_rsz_lec.v 4_after_rsz_lec.v
}

set result [catch { log_cmd detailed_placement } msg]
if {
[env_var_exists_and_non_empty ENABLE_NB_LEGALIZER] &&
$::env(ENABLE_NB_LEGALIZER)
} {
set result [catch { log_cmd detailed_placement -use_negotiation } msg]
} else {
set result [catch { log_cmd detailed_placement } msg]
}
Comment thread
precisionmoon marked this conversation as resolved.
if { $result != 0 } {
save_progress 4_1_error
error "Detailed placement failed in CTS: $msg"
Expand Down
9 changes: 8 additions & 1 deletion flow/scripts/detail_place.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,14 @@ proc do_dpl { } {
set_placement_padding -global \
-left $::env(CELL_PAD_IN_SITES_DETAIL_PLACEMENT) \
-right $::env(CELL_PAD_IN_SITES_DETAIL_PLACEMENT)
log_cmd detailed_placement {*}[env_var_or_empty DETAIL_PLACEMENT_ARGS]
set dpl_args [env_var_or_empty DETAIL_PLACEMENT_ARGS]
if {
[env_var_exists_and_non_empty ENABLE_NB_LEGALIZER] &&
$::env(ENABLE_NB_LEGALIZER)
} {
lappend dpl_args "-use_negotiation"
}
log_cmd detailed_placement {*}$dpl_args

if { $::env(ENABLE_DPO) } {
if { [env_var_exists_and_non_empty DPO_MAX_DISPLACEMENT] } {
Expand Down
19 changes: 17 additions & 2 deletions flow/scripts/global_route.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,15 @@ proc global_route_helper { } {
# Running DPL to fix overlapped instances
# Run to get modified net by DPL
log_cmd global_route -start_incremental
log_cmd detailed_placement

if {
[env_var_exists_and_non_empty ENABLE_NB_LEGALIZER] &&
$::env(ENABLE_NB_LEGALIZER)
} {
log_cmd detailed_placement -use_negotiation
} else {
log_cmd detailed_placement
}
# Route only the modified net by DPL
log_cmd global_route -end_incremental {*}$res_aware \
-congestion_report_file $::env(REPORTS_DIR)/congestion_post_repair_design.rpt
Expand All @@ -80,7 +88,14 @@ proc global_route_helper { } {
# Running DPL to fix overlapped instances
# Run to get modified net by DPL
log_cmd global_route -start_incremental
log_cmd detailed_placement
if {
[env_var_exists_and_non_empty ENABLE_NB_LEGALIZER] &&
$::env(ENABLE_NB_LEGALIZER)
} {
log_cmd detailed_placement -use_negotiation
} else {
log_cmd detailed_placement
}
check_placement -verbose
# Route only the modified net by DPL
log_cmd global_route -end_incremental {*}$res_aware \
Expand Down
4 changes: 4 additions & 0 deletions flow/scripts/variables.json

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

4 changes: 4 additions & 0 deletions flow/scripts/variables.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -596,6 +596,10 @@ ENABLE_DPO:
description: |
Enable detail placement with improve_placement feature.
default: 1
ENABLE_NB_LEGALIZER:
description: |
Enable negotiation-based legalizer in detailed placement.
default: 0
DPO_MAX_DISPLACEMENT:
description: |
Specifies how far an instance can be moved when optimizing.
Expand Down