PT通过size vt修时序脚本

常用到mmmc的情况下通过synopsys的prime time的multisceanrio 模式提高fix 效率

以下内容仅供学习参考

bash 复制代码
##start job:dsubjob + pt_shell -multi_scenario -f setup_size_vt.tcl
set date [exec date +%m%d%H%M]
set work_path setup_fixvt_${date}
sh rm -rf ./$work/*
set_host_options -num_processes 4 -max_cores 32;##num_processes bigger than scenario
start_hosts
###loading session
create_scenario -name fun_0p6_wcz -image location_of_session_1
create_scenario -name fun_0p7_wc -image location_of_session_2
current_session -all
current_scenario -all
##user var setting
set fixsetup 1
remote_execute {
	if {1} {
		set_false_path -from [all_inputs]	
		set_false_path -to [all_inputs]
	}
	set_false_path -through $pin;
	set_false_path -from moduleA/pin1;
	set_false_path -to  moduleB/pin2;
} 
##tools_setting
remote_execute {
	set eco_alternative_area_ratio_threshold 1
	set_app_var timing_save_pin_arrival_and_slack true
	set_app_var read_parasitics_load_location true
	set_app_var eco_enable_more_scenarios_than_hosts true
	set_app_var eco_power_exclude_unconstrained_cells true;#unconstraint path is treated as dont touch
	set eco_strict_pin_name_equivalence true
}
###dont use
remote_excute {
	define_user_attribute pt_dont_use -quiet -type boolean -class lib_cell
	set vars(edi,dont_use) "mesh_* *D36* *SVT"
	foreach item $vars(edi,dont_use) {
		set_user_attribute -class lib_cell [get_lib_cells -quiet */$item] pt_dont_use true	
	}
	set_dont_use [get_lib_cells -quiet */*ULVT] true
}

##dont touch setting
remote_execute {
	set_dont_touch [get_cells -filter "ref_name =~ DCCK*" -hierarchical] true
	set_dont_touch [get_cells -filter "ref_name =~ CK*" -hierarchical] true
	set_dont_touch [get_cells -filter "ref_name =~ ISO*" -hierarchical] true
	set_dont_touch [get_cells -filter "ref_name =~ LVU*" -hierarchical] true
	set_dont_touch [get_cells -filter "ref_name =~ PT*" -hierarchical] true
	set_dont_touch [get_cells -filter "ref_name =~ AP*" -hierarchical] true
	set_dont_touch [get_cells -filter "ref_name =~ SYNC*" -hierarchical] true #同步
	set ck_cell [get_attribute [get_cells -filter "is_clock_network_cell == true" -hierarchical] full_name]
	foreach cell $ck_cell {
		set_dont_touch [get_cells $cell]
	}
}

###setting for size vt
remote_execute {
	my_set_lib_cell_vt_pattern_and_base_ref_name -pattern {SVT LVT ULVT}; vt pattern
	set_app_vareco_alternative_area_ratio_threshold 1 ;##fix timing only by size vt
}

##main proc for size vt
if {$fix_setup} {
	set pins {1 2 3} #define violation endpoint
	fix_eco_timing -type setup -verbose -cell_type combinational -methods size_cell -setup_margin 0.00 -verbose -to $pins -pba_mode ex;#fix_timing only size combinational cell
	fix_eco_timing -type setup -verbose -cell_type sequential -methods size_cell -setup_margin 0.00 -verbose -to $pins -pba_mode ex;#fix_timing only size sequential cell
#fix_eco_timing -type setup -verbose -cell_type combinational -methods size_cell -setup_margin 0.00 -verbose
#fix_eco_timing -type setup -verbose -cell_type sequential -methods size_cell -setup_margin 0.00 -verbose
	remote_execute {
		set date [exec date +%m%d]
		write_changes -format icctcl -output pt_${date}.icc.tcl
		write_changes -format ptsh -output pt_${date}.pt.tcl
		write_changes -format text -output pt_${date}.text.tcl
	}
}
相关推荐
中古传奇10 天前
【IC每日一题--单bitCDC跨时钟和同步FIFO】
ic
中古传奇17 天前
【IC每日一题】
ic
中古传奇18 天前
【 IC每日一题】
ic
Lambor_Ma1 个月前
【ARM】v8架构programmer guide(6)_MMU内存管理模块
arm开发·架构·硬件架构·ic·soc
这是我581 个月前
C++版iwanna1
c++·其他·游戏·ic·visual studio·iwanna·坑爹
Carol06303 个月前
20240829版图的层次
ic
Lambor_Ma3 个月前
【数字时序】时钟树延迟偏差——CPPR adjustment
ic·芯片设计·soc
Lambor_Ma3 个月前
【ARM】Cortex-A72技术手册(1)
arm开发·架构·硬件架构·ic·soc
Lambor_Ma3 个月前
【ARM】v8架构programmer guide(3)_ARMv8的寄存器
arm开发·架构·硬件架构·ic·fpga·soc·芯片