布局布线和时序分析
笔记本


2019-04-02 13:46:40修复transition走来走去202.101.58.98

set j_pin_list /path/to/max_transition.rpt

set j_f [open $j_pin_list r]

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
}

while { [gets $j_f line ] != -1 } {
	set j_violated_pin [lindex [regsub -all " +" $line " " ] 0 ]
	if { $synopsys_program_name == "icc2_shell" } {
		set j_net_length [ j_get_route_length $j_violated_pin ]
		set j_net_name [get_object_name [get_nets -of $j_violated_pin ] ]
		set j_driver_inst_name [get_object_name [get_flat_cells -hier -of [get_flat_pins -of $j_net_name -filter "direction == out" ] ] ]
		set j_driver_cell [get_attr $j_driver_inst_name ref_name ]
		if { ! [regexp X16 $j_driver_cell ] && ! [regexp MACRO_CELL_NAME $j_driver_cell ] } {
			if { [regexp INV $j_driver_cell ] } {
				puts "size_cell $j_driver_inst_name INV_REF_CELL_NAME"
			} elseif { [regexp BUF $j_driver_cell ] } {
				puts "size_cell $j_driver_inst_name BUF_REF_CELL_NAME"
			} else {
				puts "size_cell $j_driver_inst_name $j_driver_cell"
			}
		}
		if { $j_net_length > 250 } {
			puts "add_buffer_on_route $j_net_name -cell_prefix ECO0402XTALK -repeater_distance 200 -lib_cell BUF_REF_CELL_NAME"
		}
	}
	if { $synopsys_program_name == "pt_shell" } {
		set j_pin_slack [get_attr [get_timing_path -pba_mode path -through $j_violated_pin ] slack ] 
		if { $j_pin_slack < 0 } {
			puts "$j_violated_pin slack is : $j_pin_slack"
		}
	}
}



回到首页时钟 , 联系信箱:yzbox#163.com(把#换成@) 粤ICP备18155639号