PrimeTime(PT)是Synopsys的sign-off quality的静态时序分析工具。PrimeTime可以集成于逻辑综合和物理综合的流程,让设计者分析并解决复杂的时序问题,并提高时序收敛的速度。
一、概述
PT最大的两个特点是:
- 基于时序路径进行分析
- 由约束(constraint)驱动
PT可以进行一系列的时序检查
有一些额外的检查可以在库中指定,例如:
clock separation:这是对主/从锁存器的约束,在两个时钟之间的最小要求的时钟间隔,以避免锁存器成为transparent。
nonsequential:这类似于两个数据引脚之间的数据到数据的设置和保持检查。
- constraint check:由使用者指定的约束检查(如 set_output_delay)
- library check:由供应商在库中为特定的子单元指定的检查(如 setup/hold)
STA是基于时序路径进行检查的,在STA中,对时序路径的定义如下:
一共有四类路径,我们使用report_global_timing命令就可以查看违例的时序路径:
此外,我们可以使用report_analysis_coverage命令来查看一个简单的汇总报告:
PT具有非常多的功能,而在使用PT之前,我们首先要知道PT的使用要求,即其最基本的输入要求:
其中,SPEF 是 IEEE标准的寄生交换格式,GPD是synopsys公司寄生交换格式。
二、PT 的 Analysis Flow
PrimeTime的时序分析主要有以下几步:
- 载入设计与相关库文件
- 读入相关寄生参数
- 载入约束文件,包括时序约束
- 进行分析并产生报告
- 保存session
- 退出
- 恢复session
这个STA流程需要反复迭代进行,直到达到sign off的要求。
1、读入设计与相关库文件
使用read_verilog命令即可读入设计文件,而current design命令是用来设置Top的。
其中,list_designs的标识含义如下:
- * :指明该design是current design
- L:指明该design已经链接
- N:指明该design不在memory中(未载入PT中)
- l:指明该design部分链接
在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就可以读入相关的库文件:
2、读入相关寄生参数
利用read_parasitics命令即可读入寄生参数相关文件,使用-format即可指定读入的文件格式:
PrimeTime支持以下格式的文件:
- Galaxy Parasitic Database(GPD)
- Standard Parasitic Exchange Format(SPEF)
- Detailed Standard Parasitic Format(DSPF)
- Reduced Standard Parasitic Format(RSPF)
- Milkyway(PARA)
PrimeTime推荐使用GPD以及SPEF格式的文件。
在读入寄生参数后,我们可以利用以report_annotated_parasitics命令来检查寄生参数标记的情况:
需要注意的是,read_parasitics命令会自动显示该报告,我们也可以在read_parasitics时检查PARA- RC-Warnings。
任何未被标记的pin to pin nets都需进一步检查。Driveless 和Loadless nets 通常是未使用的pin造成的,这些未标记的nets一般来说是正常的。
3、读入约束文件
使用read_sdc读入设计约束文件:
再读入约束文件后,需要进行约束完整性的检查,使用check_timing -verbose命令:
最后,一些单周期静态STA的例外情况有以下几种,即需要单独进行分析:
- False path
- Multi-cycle path
- set_max_delay and set_min_delay
而没有正确指定的例外情况需要忽略,使用report_exceptions -ignore命令进行查看:
4、进行分析
PBA: Path Based Analysis
在save_session前运行PBA选项可以避免在恢复session后重新计算。
而使用report_timing命令,配合其选项可以产生更详尽的报告:
GBA:Graph Based Analysis
5、保存session
使用save_session可以保存session
pt_shell>save_session $session_directory
一个保存好的session包含以下信息用于恢复。
- 链接的设计和加载的库
- 时钟、时序例外和其他约束条件
- 操作条件
- 反标SDF的延迟和寄生参数
- 变量设置
- 网表编辑(insert buffer、size cell、swap cell)。
- 分析数据
- 交叉耦合(cross-coupled)的延迟数据和噪声数据
其目录格式如下(以orca项目为例):
6、退出
一般使用以下命令完成退出
当然,也可以单独使用这两个指令:
7、恢复session
使用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的运行脚本,其内容如下: