常用时序分析SDC 联系客服

发布时间 : 星期一 文章常用时序分析SDC更新完毕开始阅读0355a7b15cf7ba0d4a7302768e9951e79a896975

.

常用时序分析SDC 命令参考 (一) 1. Define design environment

1.1. Set_operating_conditions 1.2. Set_wire_load_model 1.3. Set_driving_cell 1.4. Set_load 1.5. Set_fanout_load 1.6. Set_min_library

2. Set design constraints

2.1. Design rule constraints

2.1.1. Set_max_transition 2.1.2. Set_max_fanout 2.1.3. Set_max_capacitance

2.2. Design optimization constraints

2.2.1. Create_clock

2.2.2. create_generated_clock 2.2.3. Set_clock_latency 2.2.4. Set_propagated_clock 2.2.5. Set_clock_uncertainty 2.2.6. Set_input_delay 2.2.7. Set_output_delay 2.2.8. Set_max_area

3. Other commands

3.1. set_clock_groups 3.2. set_false_path 3.3. set_case_analysis 3.4. set_max_delay

1. Do not exist in timing fix sdc file:

1.1. Set_max_area

1.2. set_operation_conditions 1.3. set_wire_load_model 1.4. set_ideal_*

2. Must be placed in timing fix sdc file:

2.1. Set_clock_uncertainty, 2.2. set_max_transition 2.3. set_propagated_clock

create_clock

.

.

在当前设计中创建一个时钟

语法:

status create_clock [-name clock_name] [-add]

[source_ojbects] [-period period_value] [-waveform edge_list]

数据类型:

列表 浮点

clock_name 字符 source_objects period_value

edge_list 列表

参数:

指定时钟名称。如果你不使用该选项,时钟名称将会与第一个时钟源在source_objects指定的一样。如果你没有使用souce_objects,你就必须使用本选项,它会创建一个与端口或接脚无关的虚拟时钟。本选项与source_objects一起使用可以为时钟增加一个描述性的名称。

如果你使用-add选项,你必须使用-name选项,并且要为有相同源的时钟分配不同的名称。

(注解:-name如果省略,就必须要指定创建时钟的节点。这也是默认的做法。 不指定时钟创建节点的意思就是指创建一个虚拟时钟。

如果既指定了时钟节点,有写了-name选项,这个-name可以认为是一个alias。) (疑难点:虚拟时钟,-add选项)

-name clock_name

-add

.

.

指明是否将该时钟加到已存在的时钟中或将其覆盖。使用本选项抓取有相同源不同波形,进行同时分析的复合时钟。你使用该选项时,必须使用-name选项。定义在相同源接脚或端口的复合时钟相比一个单一时钟,会导致更长的运行时间和更高的存占用。因为时序综合引擎必须搜索所有开始(launch)和截取(capture)组合的可能性。使用set_false_path命令限制不期望的组合。该选项在默认为关闭,除非复合时钟分析的相关变量timing_enable_multiple_clocks_pre_reg被设为true。 (疑难点:timing_enable_multiple_clocks_per_reg,-add) (注意,这是create_clock命令,它也是有-add选项的。)

(举一个简单的例子,对于一个输入时钟端口,你创建了两个时钟。第二个时钟创建的时候使用了-add选项。则,看timing路径的时候,就会发现clk1和clk2互相检查的情况。这种情况是不真实的。需要使用false path把它们进行设置。这属于两时钟物理互斥的畴。)

source_objects

指定应用于时钟的接脚或端口的列表。如果你没有使用本选项,你必须使用-name clock_name ,它会创建一个与接脚或端口无关的虚拟时钟。如果你指定的时钟已经在接脚上了,旧的时钟会被取代,除非你增加-add选项。

-period period_value

以库时间单位指定时钟波形的周期。

-waveform edge_list

以库时间单位指定整个时间周期中时钟的上升或下降沿时间。列表中第一个时间是上升转换,通常第一个上升转换在时间零点之后。这里增加次数必须是偶数,并且它们假定为交替的上升和下降时间。数值上,为一个完整时钟周期。

如果-waveform edge_list没有设定,但有-period period_value,默认情况,波形假定为一个0.0上升沿和一个period_value/2下降沿。

(疑难点:通过-waveform把波形给画出来。但是,-period是必须要写的。也就是说,你可以只使用-period指定一个时钟周期。默认是50%占空比,且先1后0。如果想创建

.

.

占空比不是50%的时钟,就要通过-waveform来描述了,第一个上升的位置在什么时刻,下降的位置在什么时刻。)

(和create_generate_clock中的-edge选项很容易混淆!)

描述:

create_clock命令在当前设计中创建一个时钟。该命令在当前设计中定义指定的

source_objects作为时钟源。一个接脚或端口可以成为一个单时钟源。如果source_objects没有指定,但clock_name给定,一个虚拟时钟会被创建。一个虚拟时钟可以被创建,代表一个片外时钟用于描述输入或输出延迟。更多关于输入和输出延迟的信息,可以阅读set_input_delay和set_oupt_delay参考。

时钟影响到时钟网络的属性,比如dont_touch_network, fix_hold和propagated_clock。使用create_clock在已存在的时钟上会覆盖时钟上已有的属性。create_clock也同时定义时钟波形。时钟允许每个周期多脉冲形式。建立和保持路径延迟是从时钟波形路径的起点到终点自动衍生的。fix_hold属性(用set_fix_hold设定)指导compile修复时钟保持 (hold) 错误。 默认状态,时钟对应一组路径。该组与时钟相关的终点用于估算函数的计算。要将时钟从分配的组中删除,使用group_path命令分配时钟到另一个组或默认路径组。更多的信息可参考group_path命令帮助。

新的时钟有理想时序,不能通过时钟网络传播延迟。使用set_propagated_clock命令让时钟能够进行延迟传播。要添加偏差(skew)和不确定因素(uncertainty)到理想波形中,使用set_clock_latency或set_clock_uncertainty 命令。

显示当前设计中所有时钟源信息,使用report_clock命令。得到时钟源列表,使用get_clocks命令。返回所有与特定时钟相关的序列单元,使用all_registers命令。取消create_clock,使用remove_clock命令。

多条件多模式支持:

该命令仅使用当前方案中的信息。

例:

【不规则占空比】

在端口PHI1创建时钟周期为10,上升在5.0,下降在9.5. create_clock “PHI1” –period 10 –waveform {5.0 9.5}

【特殊】

.