set target_pins "" set target_nets "" set target_ends "" set list1 "" set fp [open "output_file.txt" w] foreach path [get_ta_paths -path_group {SYSCLK_300} -max_number_of_paths 1000 -only_slack_less_than 0] { foreach point [get_property $path ta_points] { if {![info exists prev_point]} { set prev_point $point puts $point #puts [get_property $point incremental_delay] } else { #puts "[expr [get_property $point arrival_time] - [get_property $prev_point arrival_time]]" set delay [expr [get_property $point arrival_time] - [get_property $prev_point arrival_time]] if {"[get_cells -relate_to [get_property $point db_object]]" == "[get_cells -relate_to [get_property $prev_point db_object]]" && [get_property [get_cells -relate_to [get_property $point db_object]] cell_class] != "macro"} { if {[info exists prev_delay]} { set cell_delay [expr $delay + $prev_delay] if {$cell_delay > 0.060} { #puts "$point $prev_point" lappend target_pins [get_property $point db_object] lappend target_pins [get_property $prev_point db_object] lappend list1 "pin_name : $point cell delay : $cell_delay Lib cell name : [get_lib_cells -relate_to [get_cells -relate_to [get_name_of_object $point]]] Path group [get_property $path related_path_group]" lappend target_nets [get_nets -relate_to [get_property $prev_point db_object]] lappend target_ends [get_property $path end] }} } set prev_delay [expr [get_property $point arrival_time] - [get_property $prev_point arrival_time]] set prev_point $point } } } set target_pins2 [lsort -unique $target_pins] #foreach a [lsort -unique $list1] {if {[lsearch -regexp $a "reg2reg"] == -1} {puts $a}} #foreach a [lsort -unique $list1] {puts $a} foreach a $list1 { puts $fp $a puts $a } set target_nets2 [lsort -unique $target_nets] #puts $target_nets2 set target_ends2 [lsort -unique $target_ends] if {[info exists prev_point]} {unset prev_point} if {[info exists prev_delay]} {unset prev_delay} close $fp