静态时序分析

更新时间:2023-11-28 12:40:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

静态时序分析(Static Timing Analysis)技术是一种穷尽分析方法,用以衡量电路性能。

它提取整个电路的所有时序路径,通过计算信号沿在路径上的延迟找出违背时序约束的错误,主要是检查建立时间和保持时间是否满足要求,而它们又分别通过对最大路径延迟和最小路径延迟的分析得到。

静态时序分析的方法不依赖于激励,且可以穷尽所有路径,运行速度很快,占用内存很少。

它完全克服了动态时序验证的缺陷,适合进行超大规模的片上系统电路的验证,可以节省多达20%的设计时间。

PT是Synopsys的sign-off quality的STA工具,是一个单点的全芯片、门级静态时序分析器。

PrimeTime工作在设计的门级层次,并且和Synopsys其它工具整合得很紧密。 基本特点和功能:

建立和保持时间的检查(setup and hold checks) 时钟脉冲宽度的检查

门控时钟检查(clock-gating checks) recovery and removal checks unclocked registers

未约束的时序端点(unconstrained timing endpoints) multiple clocked registers

组合反馈回路(combinational feedback loops) 基于设计规则的检查,包括对最大电容、最大传输时间、最大扇出的检查等。

设置设计环境

设置查找路径和链接路径

The search_path variable specifies a list of directory paths thatPrimeTime uses to find the designs, libraries, and other files.

The link_path variable specifies a list of libraries that PrimeTime uses to link designs

读入设计(和库文件) 链接顶层设计

对必要的操作条件进行设置,这里包括了线上负载的模型、端口负载、驱动、以及转换时间等

指定时序约束(timing constraints)

定义时钟周期、波形、不确定度(uncertainty)、延时(latency) 指明输入输出端口的延时等

设置时序例外(timing exceptions)

设置多周期路径(multicycle paths) 设置虚假路径(false paths)

定义最大最小延时(max | min delay) 无效的arcs(disable timing)

进行时序分析:

在作好以上准备工作的基础上,可以对电路进行静态时序分析,生成constraint reports 和path timing reports。

PrimeTime提供两种用户界面,图形用户界面GUI(Graphical User Interface)和基

于Tcl的命令行界面pt_shell,其运行方式分别是:

%PrimeTime %pt_shell

1 设计输入

PT不能读取RTL源文件,它是静态分析引擎,只能读取映射后的设计,包括db、verilog、vhdl等格式的文件。 pt_shell>read_db–netlist_only.db

由于db格式的网表包含约束和环境属性等,故使用–netlist_only选项指示PT只加载结构化网表。

pt_shell>read_verilog.sv

2 时钟规范

创建时钟

create_clock

-period period_value [-name clock_name] [-waveform edge_list] [source_objects]

source_objects Specifies the objects used as sources of the clock. The sources can be ports, pins or nets in the design. If you do not use this option, you must use the -name option, which creates a virtual clock not associated with a port, pin or net. When a net is used as the source, the first driver pin of the net is the actual source used in creating the clock.

pt_shell>create_clock -period 4 -waveform [list 0 2] –name\\ clk [get_portsclk]

2 时钟规范

时钟延迟

set_clock_latency

[-rise][-fall]

[-min][-max] [-source] delayobject_list

pt_shell>set_clock_latency 1.2 -rise [get_clocks CLK1]

2 时钟规范

时钟转换

set_clock_transition [-rise][-fall] [-min] [-max] transition clock_list pt_shell>set_clock_transition 0.38 -rise [get_clocks CLK1]

传播时钟

set_propagated_clockobject_list

pt_shell>set_propagated_clock [all_clocks]

2 时钟规范

指定时钟歪斜:在同步设计中,数据在一个时钟边沿由FF发送,在下一个时钟沿由另一个FF接收,理想情况下两个边沿间应有准确的一个时钟周期的延时,然而由于连线延迟的差异,接收时钟沿可早、可晚。为保证设计的robust,须指定时钟歪斜。

set_clock_uncertainty

[-from from_clock | -to to_clock]

[-rise] [-fall] [-setup] [-hold] uncertainty

pt_shell>set_clock_uncertainty -setup 0.65 [get_clocks CLK] pt_shell>set_clock_uncertainty -hold 0.45 [get_clocks CLK]

2 时钟规范

指定生成的时钟

create_generated_clock

[-name clock_name] -source master_pin

[-divide_bydivide_factor | -multiply_bymultiply_factor] [-duty_cycle percent] source_objects

pt_shell>create_generated_clock -multiply_by 2

-duty_cycle60 -source [get_pins CLK] [get_pins foo1]

时序分析命令

禁止时序弧

分别禁止时序弧

pt_shell>set_disable_timing–from A2 –to Z

[get_cells U1]

pt_shell>report_disable_timing

情形分析

pt_shell>set_case_analysis 1 test_mode pt_shell>remove_case_analysistest_mode

时序分析命令

多周期路径

set_multicycle_path -from -to pt_shell>set_multicycle_path 2 -setup -from regA/clk -to regB/D

时序分析命令

虚假路径

set_false_path

[-from from_list]

[-through through_list] [-to to_list]

pt_shell>set_false_path -from ff12 -to ff34

pt_shell>set_false_path -from ff1/CP -through {U1/Z U2/Z}

-through {U3/Z U4/C} -to ff2/D

pt_shell>foreach_in_collection clk1 [all_clocks] { foreach_in_collectionclk [remove_from_collection [all_clocks]

[get_clocks $clk1]] {

set_false_path -from [get_clocks $clk1] -to [get_clocks $clk2] }

}

时序分析命令

生成报告

report_timing

[-from from_list] [-to to_list] [-through through_list]

[-delay_typedelay_type] [-nworstpaths_per_endpoint] [-max_paths count] [-nets] [-group group_name] [-significant_digits digits] [-nosplit] [-transition_time] [-capacitance]

时序分析命令

生成报告

report_bottleneck

[-from from_list] [-to to_list] [-through through_list] [-max_cellscell_count] [-max_pathspath_count]

[-nworst_pathspaths_per_endpoint] [-group group_name] [-significant_digits digits] [-nosplit]

swap_cellcell_listswap_in

pt_shell>swap_cell {u1 u2} [get_lib_cellsmisc_cmos/LC3]

本文来源:https://www.bwwdw.com/article/3j1t.html

Top