15
2019
10

手动修transition的办法:找到driver->size up,如果线太长,则加buffer

#### # procs #### proc j_get_route_length { j_args } { set j_route_length 0 if { [get_attr [get_nets -of $j_args ] route_length ] == 0 } { return 0 } foreach obj [get_attr [get_nets -of $j_args ] route_length ] { set j_route_length [expr $j_route_length + [lindex $obj 1 ] ] } return $j_route_length } #### # body #### set j_violation_list_f /path/to/the/max/transition/violation/file/tran set j_f [open $j_violation_list_f r ] while { [gets $j_f line ] != -1 } { set j_violated_pin [lindex [regsub -all " +" $line " " ] 0 ] set j_driver [get_flat_cells -of [get_flat_pins -hier -of [get_flat_nets -of $j_violated_pin ] -filter "direction == out" ] ] set j_driver_name [get_object_name $j_driver ] set j_driver_ref_name [get_attr $j_driver ref_name ] set j_net_name [get_object_name [get_nets -of $j_violated_pin ] ] if { [regexp IVX $j_driver_ref_name ] } { puts "size_cell $j_driver_name C8T28SOI_LL_IVX43_P0" } elseif { [regexp BFX $j_driver_ref_name ] } { puts "size_cell $j_driver_name C8T28SOI_LL_BFX48_P0" } else { puts "size_cell $j_driver_name $j_driver_ref_name" } # output length more than 150um load pin if { [get_attr [get_pins $j_violated_pin ] direction ] == "in" } { if { [j_get_route_length $j_violated_pin ] > 150 } { puts "add_buffer_on_route $j_net_name -cell_prefix TRAN0826 -repeater_distance 100 -lib_cell C8T28SOI_LL_BFX29_P0" } } } close $j_f
« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。