PT通过size vt修时序脚本

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

以下内容仅供学习参考

##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
	}
}
STA(Static Timing Analysis)静态时序分析是设计验证中非常重要的一部分,它能够保证设计的时序满足要求,并且对于设计中存在的时序问题进行诊断和复。PT(PrimeTime)是业界较为常用的 STA 工具之一。下面是一个 PT 做 STA 静态时序分析的教程。 1. 确定时序约束 时序约束文件是进行静态时序分析的基础,它描述了设计中的时序要求。时序约束应该包括时钟频率、时钟时序、输入输出延迟等信息。在 PT 中,时序约束文件格式为 SDC(Synopsys Design Constraints)。 2. 进行时钟分析 时钟分析是静态时序分析的第一步,它能够检查时钟网络中存在的时序问题。在 PT 中,我们可以使用 clock report 命令生成时钟分析报告。时钟分析报告能够帮助我们确定时钟路径、时钟树等信息。 3. 进行时序分析 在进行时序分析之前,我们需要将设计进行综合,并产生时序数据库(.db 文件)。时序分析主要包括前端分析和后端分析,前端分析主要是对时序路径进行分析,后端分析主要是对时序路径进行优化。 在 PT 中,我们可以使用 timing report 命令生成时序分析报告,报告中包括了时序路径、时序偏差等信息。我们可以根据报告中的信息进行时序优化,例如添加时钟缓冲、调整时钟路径等操作。 4. 进行时序约束复 在进行时序分析时,PT 会给出一些违反时序约束的警告和错误信息。我们需要根据这些信息进行时序约束复,以保证设计满足时序要求。在 PT 中,我们可以使用 constraint report 命令生成时序约束复报告,报告中包括了需要复的时序约束信息。 5. 进行时序分析验证 在进行时序分析之后,我们需要进行时序分析验证,以保证时序分析结果的准确性。在 PT 中,我们可以使用 report checks 命令生成时序分析验证报告,报告中包括了时序分析结果的正确性信息。 以上就是 PT 做 STA 静态时序分析的教程,希望能够对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

seu他山之石

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值