PrimeTime(PT)是Synopsys的sign-off quality的静态时序分析工具。PrimeTime可以集成于逻辑综合和物理综合的流程,让设计者分析并解决复杂的时序问题,并提高时序收敛的速度。
PT最大的两个特点是:
PT可以进行一系列的时序检查
有一些额外的检查可以在库中指定,例如:
clock separation:这是对主/从锁存器的约束,在两个时钟之间的最小要求的时钟间隔,以避免锁存器成为transparent。
nonsequential:这类似于两个数据引脚之间的数据到数据的设置和保持检查。
STA是基于时序路径进行检查的,在STA中,对时序路径的定义如下:
一共有四类路径,我们使用report_global_timing命令就可以查看违例的时序路径:
此外,我们可以使用report_analysis_coverage命令来查看一个简单的汇总报告:
PT具有非常多的功能,而在使用PT之前,我们首先要知道PT的使用要求,即其最基本的输入要求:
其中,SPEF 是 IEEE标准的寄生交换格式,GPD是synopsys公司寄生交换格式。
PrimeTime的时序分析主要有以下几步:
这个STA流程需要反复迭代进行,直到达到sign off的要求。
使用read_verilog命令即可读入设计文件,而current design命令是用来设置Top的。
其中,list_designs的标识含义如下:
在PT读入设计及相关库文件之前,常常设置两个路径变量,以方便地解决文件查找的问题:
1、指定Prime Time搜索设计、逻辑库和其他设计数据的目录,如时序模型。通过设置search_path变量来完成此任务:
pt_shell> set_app_var search_path "目录路径"
Prime Time会按照你指定的顺序搜索这些目录。
2、通过设置 link_path 变量来指定 PrimeTme 在设计层次中寻找库文件。
pt_shell> set_app_var link_path "目录路径"
该变量可以包含短线(-)、库名和文件名。*指示PrimeTime在内存中搜索设计。Prime Tme按照你指定的顺序搜索库。主库是link_path中的第一个库。
使用link_design就可以读入相关的库文件:
利用read_parasitics命令即可读入寄生参数相关文件,使用-format即可指定读入的文件格式:
PrimeTime支持以下格式的文件:
PrimeTime推荐使用GPD以及SPEF格式的文件。
在读入寄生参数后,我们可以利用以report_annotated_parasitics命令来检查寄生参数标记的情况:
需要注意的是,read_parasitics命令会自动显示该报告,我们也可以在read_parasitics时检查PARA- RC-Warnings。
任何未被标记的pin to pin nets都需进一步检查。Driveless 和Loadless nets 通常是未使用的pin造成的,这些未标记的nets一般来说是正常的。
使用read_sdc读入设计约束文件:
再读入约束文件后,需要进行约束完整性的检查,使用check_timing -verbose命令:
最后,一些单周期静态STA的例外情况有以下几种,即需要单独进行分析:
而没有正确指定的例外情况需要忽略,使用report_exceptions -ignore命令进行查看:
PBA: Path Based Analysis
在save_session前运行PBA选项可以避免在恢复session后重新计算。
而使用report_timing命令,配合其选项可以产生更详尽的报告:
GBA:Graph Based Analysis
使用save_session可以保存session
pt_shell>save_session $session_directory
一个保存好的session包含以下信息用于恢复。
其目录格式如下(以orca项目为例):
一般使用以下命令完成退出
当然,也可以单独使用这两个指令:
使用restore_session可以保存session
pt_shell>restore_session $session_directory
setup file是PrimeTime的配置文件,其文件名为 .synopsys_pt.setup,当PT运行时会自动执行,完成配置工作。
setup file一共有三个层级,其优先级如下:
可以使用synopsys提供的RMgen(reference methodology generate)工具生成PT运行脚本的模板:
其中,pt.tcl就是PT的运行脚本,其内容如下: