静态时序分析:SDC约束命令set_ideal_network详解

相关阅读

静态时序分析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命令替代。如果想要移除理想网络,使用remove_ideal_network命令。

本文针对Design Compiler,但该命令同样存在于PrimeTime、IC Compiler等工具中,它们大致相同,略有差别。set_ideal_network命令的BNF范式(有关BNF范式,可以参考以往文章)为:

复制代码
set_ideal_network
    object_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_ideal_network -net命令进行确认,如图4所示(使用report_net或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 单元延迟计算

相关推荐
美好的事情总会发生19 小时前
电容详解:定义、作用、分类与使用要点
嵌入式硬件·硬件工程·智能硬件
Leiditech__2 天前
汽车氛围灯400V浪涌防护方案之SD3002P4-3的应用实践
嵌入式硬件·汽车·硬件工程·emc·mosfet
XINVRY-FPGA3 天前
XC7K160T-2FBG676I Xilinx 赛灵思 Kintex‑7 系列 FPGA
人工智能·ai·fpga开发·云计算·硬件工程·制造·fpga
Moonnnn.6 天前
运算放大器(五)电压比较器
笔记·学习·硬件工程
Moonnnn.8 天前
运算放大器(四)滤波电路(滤波器)
笔记·学习·硬件工程
日晨难再8 天前
Design Compiler:库特征分析(ALIB)
硬件工程·数字ic
敏捷利齐9 天前
Dell G16 7620克隆硬盘 扩容
硬件工程
长安——归故李9 天前
51单片机彩灯控制与数码管结合
汇编·单片机·嵌入式硬件·青少年编程·c#·51单片机·硬件工程
美好的事情总会发生10 天前
电阻(Resistor)详解
嵌入式硬件·硬件工程·智能硬件
云空10 天前
《新凯来:半导体设备制造领域的“国家队”》
硬件工程·制造·材料工程·精益工程