相关阅读
静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm=1001.2014.3001.5482
set_ideal_network命令可以将当前设计中的一组端口或引脚标记为理想网络源(或者说设置端口或引脚的ideal_network_source属性为true),且在一定情况下,理想属性会沿着组合逻辑进行传播。不要使用set_ideal_net设置理想线网,它已经被set_ideal_network命令替代。
本文针对Design Compiler,但该命令同样存在于PrimeTime、IC Compiler等工具中,它们大致相同,略有差别。set_ideal_network命令的BNF范式(有关BNF范式,可以参考以往文章)为:
set_ideal_networkobject_list[-dont_care_placement][-no_propagate]//注:该命令的选项和参数顺序任意
指定理想网络源
指定一个对象列表,包含端口对象、线网对象或叶单元的引脚对象(不可以是层次单元的引脚),如果有多于一个对象,需要使用引号或大括号包围。
如果列表中包含线网对象,所有驱动该线网的端口/引脚将被标记为理想网络源,且必须使用-no_propagate选项。
指定不考虑布局
-dont_care_placement选项指定理想网络中的单元在布局过程中不会被考虑,而随机分配位置,理想网络中的线网视为未连接。默认情况下,理想网络在布局时优先级最低。
指定不传播
-no_propagate选项指定理想属性不会跨组合逻辑传播,但仍然可以跨层次结构传播。默认情况下,理想属性会跨组合逻辑传播,直到时序逻辑为止。
理想属性传播规则
从理想网络源开始,理想属性的传播规则如下:
组合逻辑单元被标记为理想:
1、当它的所有输入引脚要么是理想的,要么连接到常量线网(注意:case analysis属性不会被视为常量)。
引脚被标记为理想:
1、如果它是set_ideal_network命令指定的引脚。
2、如果它是驱动引脚,且它所属的单元是理想的。
3、如果它是负载引脚,且驱动它的线网是理想的。
线网被标记为理想:
1、所有驱动它的引脚都是理想的。
理想网络的影响
1、所有理想网络中的单元和线网都会被设置dont_touch属性,防止它们在优化过程中被修改。
2、理想网络源所属的单元(如有)会被设置size_only属性,这样可以确保理想网络源不会在综合过程中被优化掉(注意:该设置优先级高于set_size_only命令的设置)。
3、理想网络中的线网不会受到DRC约束,即max_capacitance、max_fanout和max_transition等约束。
4、理想网络中的线网和单元的延迟和转换时间默认为0,可以通过set_ideal_latency命令和set_ideal_transition命令人为指定。
简单使用
下面以图1为例说明set_ideal_network命令的使用。
图1 简单的例子
首先使用create_clock命令以clk端口为源对象创建一个周期为10的时钟。
create_clock -period 10 [get_port clk]
接着使用set_input_delay命令在输入端口a、b、c上添加输入延迟,参考时钟为clk,此时经过端口a的时序报告如图2所示(注意,该时序报告使用了-input_pins选项来显示输入引脚)。
set_input_delay 0.5 {a b c} -clock [get_clock clk]
图2 建立时间时序报告
然后使用set_ideal_network命令设置端口a为理想网络源,可以使用report_ideal_network命令报告所有的理想网络源,如图3所示(使用get_attribute ideal_network_source命令也可以确认一个对象是否是理想网络源)。
set_ideal_network [get_port a]
图3 理想网络源报告
根据理想属性的传播规则,线网a变成了理想线网,可以使用report_net命令进行确认,如图4所示(使用get_attribute ideal_net命令也可以确认一个对象是否是理想线网)。
图4 线网报告
此时经过端口a的时序报告如图5所示,其中唯一的不同是线网a的延迟变成了0。
图5 建立时间时序报告
需要注意的是,此时只有端口a、线网a和引脚u1/A被标记为理想,但理想属性不会穿过单元u1,因为其另一个输入引脚不是理想的。
下面接着使用set_ideal_network命令设置端口b为理想网络源,如图6所示。
set_ideal_network [get_port b]
图6 理想网络源报告
此时经过端口a的时序报告如图7所示,其中两个线网和一个单元的延迟为0。
图7 建立时间时序报告
此时被标记为理想的有:端口a、端口b、线网a、线网b、单元u1、单元u1的两个输入引脚、线网and_out、单元u2的输入引脚A,为了简略,这里不进行验证。
最后,set_ideal_network命令将单元u2的输出引脚Y设置为理想网络源,如图8所示。
set_ideal_network [get_pin u2/Y]
图8 理想网络源报告
根据理想属性的传播规则,u2此时不是理想单元,所以不管是引脚A还是引脚B到引脚Y的延迟都不是0,此时经过端口a的时序报告如图9所示。
图9 建立时间时序报告
但是由于此时单元u2的输出引脚Y传播,线网logic_out变成了理想线网,而理想线网的电容为0,这也会间接影响u2的单元延迟,图10所示为report_delay_calculation命令的结果。
图10 单元延迟计算