Pt_shell>set link_path “* pt_lib.db STACK_lib.db Y_lib.db” * pt_lib.db STACK_lib.db Y_lib.db
读入设计:
PrimeTime支持以下设计格式:
. Synopsys database files (.db) (Use the read_db command) . Verilog netlist files (Use the read_verilog command)
. Electronic Design Interchange Format (EDIF) netlist files (Use the read_edif command.)
. VHDL netlist files (Use the read_vhdl command.) 读入AM2910的顶层设计文件: pt_shell> read_db AM2910.db
Loading db file '/u/joe/primetime/tutorial/AM2910.db' 1
链接设计:
pt_shell> link_design AM2910
Loading db file '/u/joe/primetime/tutorial/pt_lib.db'
Loading db file '/u/joe/primetime/tutorial/STACK_lib.db' Loading db file '/u/joe/primetime/tutorial/Y_lib.db' Linking design AM2010 ...
Loading db file '/u/joe/primetime/tutorial/STACK.db' ...
Designs used to link AM2910:
CONTROL, REGCNT, STACK, UPC, Y Libraries used to link AM2910: STACK_lib, Y_lib, pt_lib
Design 'AM2910' was successfully linked 1
显示当前已载入的设计: pt_shell>list_designs
得到当前载入单元的信息: pt_shell>report_cell
编译一个标记模型(Stamp Model):
标记模型是一个诸如像DSP或RAMS那样复杂模块的静态时序模型。 标记模型与.lib模型共存,而不能代替它们。
- 建立标记模型是用在晶体管层次的设计上,在这个层次上没有门级网表。 - 标记模型语言是一种源代码语言,被编译成Synopsys的.db文件格式,可
以被PrimeTime或Design Compiler使用。
- 标记模型包含引脚到引脚的时序弧、建立和保持时间数据、模式信息、引
脚的电容和驱动能力等等。标记模型还能保存属性(面积等等)。 - 三态输出、锁存器和内部生成的时钟都可以被建模。 一个标记模型包括两种源代码文件格式:
- .mod文件
仅包含引脚到引脚的弧的描述(没有延时数据)。 - .data文件
包含.mod文件中每条弧的延时数据。
标记模型可以有多个.data文件来描述不同运作条件下的时序。 两种文件格式都需要编译成一个.db模型。
编译AM2910中Y模块的标记模型(标记源代码文件是Y.mod和Y.data): pt_shell> compile_stamp_model -model_file Y.mod \\
-data_file Y.data -output Y
Wrote model library core to ?./Y_lib.db? Wrote model to ?./Y.db?
PrimeTime生成两个.db文件:
Y_lib.db:一个库文件,包含一个单元(cell)。这个单元叫做核(core)。 Y.db:一个设计文件,引用Y_lib.db中的单元核。
编译一个快速时序模型(Quick Timing Model):
可以为设计中还没有完成的模块建立一个快速时序模型,以使得完整的时序分析能够进行。通常的情形是:
- 模块的HDL代码还没有完成时
- 为了划分设计,在评估阶段为实际设计进行时序预测、约束估计时 - 模块的标记模型还没有完成时
一个快速时序模型是一组PrimeTime命令,而不是一种语言。为了方便和文档化可以将它们写在一个脚本文件中,然后保存为.db的格式。在PrimeTime和Design Compile中快速时序模型很有用处。
还可以将快速时序模型保存为标记模型,这是开始一个复杂标记模型的一种便利的方法。
例子中STACK模块的快速时序模型脚本文件是stack.qtm.pt,建立这个模型: pt_shell> source -echo stack.qtm.pt ...
pt_shell> report_qtm_model; ...
pt_shell> save_qtm_model -output STACK -format db Wrote model library core to './STACK_lib.db' Wrote model to './STACK.db' 1
进行时序分析
配置运作环境
读入并链接AM2910设计:
pt_shell> set search_path \
pt_shell> set link_path \ pt_shell> read_db AM2910.db pt_shell> link_design AM2910
链接了AM2910会导致其它已经链接的设计变为不链接的状态。在内存里只允许有一个链接的设计。当一个设计不链接,所有时序信息将被去除,并会出现警告,这和Design Compiler不同。如果需要保存所标注的信息,可以在链接一个新的设计之前用write_script命令。如果以后重新链接这个设计,只要运行这个脚本就可以了。
建立运作条件和连线负载模型:
PrimeTime在生成建立时序报告(setup timing reports)时使用最大(Maximum)运作条件和连线负载模型;在生成保持时序报告(hold timing reports)时使用最小(Minimum)运作条件和连线负载模型。
pt_shell> set_operating_conditions -library pt_lib -min BCCOM -max WCCOM pt_shell> set_wire_load_mode top
pt_shell> set_wire_load_model -library pt_lib -name 05x05 -min pt_shell> set_wire_load_model -library pt_lib -name 20x20 –max
如果运作条件在两个不同的库中,用set_min_library命令来在最大库和最小库中建立联系。
得到一张库的列表:
pt_shell> list_libraries Library Registry:
STACK_lib /home/gray/primetime/tutorial/ STACK_lib.db:STACK_lib
Y_lib /home/gray/primetime/tutorial/Y_lib.db:Y_lib * pt_lib /home/gray/primetime/tutorial/ pt_lib.db:pt_lib 得到一个库的详细信息: pt_shell>report_lib pt_lib
基本声明:
pt_shell> create_clock -period 30 [get_ports CLOCK]
pt_shell> set clock [get_clock CLOCK] pt_shell> set_clock_uncertainty 0.5 $clock pt_shell> set_clock_latency -min 3.5 $clock pt_shell> set_clock_latency -max 5.5 $clock pt_shell> set_clock_transition -min 0.25 $clock pt_shell> set_clock_transition -max 0.3 $clock