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
3 changes: 3 additions & 0 deletions flow/scripts/final_report.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,9 @@ if {
} else {
puts "IR drop analysis for ground nets is skipped because GND_NETS_VOLTAGES is undefined"
}

# Check all drivers have parasitic annotation with exception of those with no connected loads
check_parasitic_annotation
} else {
puts "OpenRCX is not enabled for this platform."
puts "Falling back to global route-based estimates."
Expand Down
31 changes: 31 additions & 0 deletions flow/scripts/util.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -290,3 +290,34 @@ proc orfs_write_sdc { output_file } {
}
log_cmd write_sdc -no_timestamp $output_file
}

proc check_parasitic_annotation { } {
foreach scene [sta::scenes] {
set nmissing 0
set example "NULL"
foreach pin [get_pins *] {
if { [$pin is_leaf] && [$pin is_driver] } {
if { ![sta::parasitics_annotated $pin $scene] } {
set has_loads false
set pin_iter [$pin connected_pin_iterator]
while { [$pin_iter has_next] } {
set other_pin [$pin_iter next]
if { [$other_pin is_leaf] && [$other_pin is_load] && $other_pin != $pin } {
set has_loads true
break
}
}
$pin_iter finish
if { $has_loads } {
set nmissing [expr $nmissing + 1]
set example $pin
}
}
}
}
if { $nmissing > 0 } {
error "Missing parasitic annotation in scene $scene on $nmissing \
driver pins, for example [get_full_name $example]"
}
}
}
2 changes: 1 addition & 1 deletion tools/OpenROAD
Submodule OpenROAD updated 135 files