Skip to content
Merged
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: 2 additions & 1 deletion flow/scripts/final_report.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ source $::env(SCRIPTS_DIR)/deleteRoutingObstructions.tcl
deleteRoutingObstructions

write_def $::env(RESULTS_DIR)/6_final.def
write_verilog $::env(RESULTS_DIR)/6_final.v
write_verilog $::env(RESULTS_DIR)/6_final.v \
-remove_cells [find_physical_only_masters]

# Run extraction and STA
if {
Expand Down
36 changes: 36 additions & 0 deletions flow/scripts/util.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -201,3 +201,39 @@ proc hier_options { } {
return ""
}
}

proc is_physical_only_master { master } {
set physical_only_type_patterns [list \
"COVER" \
"COVER_BUMP" \
"RING" \
"PAD_SPACER" \
"CORE_FEEDTHROUGH" \
"CORE_SPACER" \
"CORE_ANTENNACELL" \
"CORE_WELLTAP" \
"ENDCAP*"]
set master_type [$master getType]
foreach pattern $physical_only_type_patterns {
if { [string match $pattern $master_type] } {
return 1
}
}
return 0
}

# Finds all physical-only masters in the current database and
# returns their names.
proc find_physical_only_masters { } {
set db [::ord::get_db]
set libs [$db getLibs]
set physical_only_masters [list]
foreach lib $libs {
foreach master [$lib getMasters] {
if { [is_physical_only_master $master] } {
lappend physical_only_masters [$master getName]
}
}
}
return $physical_only_masters
}