有时候在IO和IOBUF之间有多余的BUF/INV,需要删除:
proc j_get_driver_instance_of_a_pin { j_para } {
set j_nets [get_nets -of $j_para ]
set j_driver_output_pin [get_pins -of $j_nets -filter "direction == out" ]
set j_driver_instance [get_cells -of $j_driver_output_pin ]
return [get_object_name $j_driver_instance ]
}
foreach_in_collection j_obj [all_outputs ] {
puts "# [get_object_name $j_obj ]"
set j_loading $j_obj
puts "remove_buffer {"
for { set i 0 } { $i < 10 } { incr i } {
set j_buf_name [j_get_driver_instance_of_a_pin $j_loading ]
set j_loading $j_buf_name/A
if { [regexp PORT_BUF $j_buf_name ] } {
# puts "# $j_buf_name"
break
}
puts "$j_buf_name"
# puts "change_selection -add $j_buf_name"
}
puts "}"
}
|