SDC命令详解:使用set_ideal_network命令进行约束
相关阅读SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm1001.2014.3001.5482目录指定理想网络源指定不考虑布局指定不传播Multicorner-Multimode支持理想属性传播规则理想网络的影响简单使用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] //注该命令的选项和参数顺序任意指定理想网络源指定一个对象列表/集合包含端口对象、线网对象或叶单元的引脚对象不可以是层次单元的引脚。对于列表而言如果有多于一个对象需要使用引号或大括号包围对使用集合无效关于列表和集合的区别可以参考下面的博客。SDC命令详解使用集合(Collection)而不是字符串(String)/列表(List)作为命令参数https://chenzhang.blog.csdn.net/article/details/147144571如果列表/集合中包含线网对象则驱动该线网的端口/引脚将被标记为理想网络源这可以理解为某种形式上的反向传播这也是该命令与set_dont_touch_network命令的不同之一且必须同时使用-no_propagate选项。指定不考虑布局-dont_care_placement选项指定理想网络中的单元在布局过程中不会被考虑而随机分配位置理想网络中的线网视为未连接。默认情况下理想网络在布局时优先级最低。指定不传播-no_propagate选项指定理想属性不会跨组合逻辑传播但仍然可以跨层次结构传播。默认情况下理想属性会跨组合逻辑传播直到时序逻辑为止不会将时序逻辑标记为理想。Multicorner-Multimode支持该命令对所有活跃场景生效关于场景的更多介绍可以参考下面的博客。Design Compiler多工艺角和多工作模式(Multicorner-Multimode, MCMM)https://blog.csdn.net/weixin_45791458/article/details/149578771?ops_request_misc%257B%2522request%255Fid%2522%253A%2522e3267dcc7cc26380435f53994dc8b9b8%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257Drequest_ide3267dcc7cc26380435f53994dc8b9b8biz_id0utm_mediumdistribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-149578771-null-null.nonecaseutm_termMCMMspm1018.2226.3001.4450理想属性传播规则从理想网络源开始理想属性的传播规则如下组合逻辑单元被标记为理想前提是没有指定-no_propagate选项1、当它的所有输入引脚要么是理想的要么连接到常量线网注意case analysis属性不会被视为常量而set_logic_one等命令则会。引脚被标记为理想1、如果它是set_ideal_network命令指定的引脚。2、如果它是驱动引脚且它所属的单元是理想的。3、如果它是负载引脚且驱动它的线网是理想的。线网被标记为理想1、所有驱动它的引脚都是理想的。理想网络的影响1、所有理想网络中的单元和线网都会被设置dont_touch属性防止它们在优化过程中被修改需要注意的是此时的dont_touch属性是隐式设置的这与使用set_dont_touch命令显式设置不同无法使用report_attribute命令或get_attribute命令直接查看也无法使用查询命令的-filter选项过滤而只能使用report_cell命令、report_net命令或report_dont_touch命令间接查看remove_attribute命令只能移除显式设置的dont_touch属性隐式dont_touch属性的优先级高于显式dont_touch属性使用list_dont_touch_types命令可以列出单元和线网被设置dont_touch属性的原因显式或隐式。2、理想网络源除端口外所属的叶单元会被设置size_only属性这样可以确保理想网络源不会在综合过程中被优化掉需要注意的是此时的size_only属性是隐式设置的这与使用set_size_only命令显式设置不同无法使用report_attribute命令或get_attribute命令直接查看也无法使用查询命令的-filter选项过滤而只能使用report_cell命令或report_size_only命令间接查看隐式size_only属性的优先级高于显式size_only属性使用list_size_only_types命令可以列出叶单元被设置size_only属性的原因显式或隐式。3、理想网络中的线网不会受到DRC约束即max_capacitance、max_fanout和max_transition等约束。4、理想网络中的线网和单元的延迟和转换时间默认为0假定理想线网的电容为0可以通过set_ideal_latency命令和set_ideal_transition命令人为指定。简单使用下面以图1为例说明set_ideal_network命令的使用。图1 简单的例子首先使用create_clock命令以clk端口为源对象创建一个周期为10的时钟。dc_shell create_clock -period 10 [get_ports clk]接着使用set_input_delay命令在输入端口a、b、c上添加输入延迟参考时钟为clk此时经过端口a的时序报告如图2所示注意该时序报告使用了-input_pins选项来显示输入引脚。dc_shell set_input_delay 0.5 {a b c} -clock [get_clocks clk]图2 建立时间时序报告然后使用set_ideal_network命令设置端口a为理想网络源可以使用report_ideal_network命令报告所有的理想网络源如图3所示使用get_attribute ideal_network_source命令也可以确认一个对象是否是理想网络源。dc_shell set_ideal_network [get_ports 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所示。dc_shell set_ideal_network [get_ports b]图6 理想网络源报告此时经过端口a的时序报告如图7所示其中两个线网和一个单元的延迟为0。图7 建立时间时序报告此时被标记为理想的有端口a、端口b、线网a、线网b、单元u1、单元u1的两个输入引脚、线网and_out、单元u2的输入引脚A为了简略这里不进行验证使用report_cell命令或report_ideal_network -cell命令可以确认一个对象是否是理想单元。最后set_ideal_network命令将单元u2的输出引脚Y设置为理想网络源如图8所示。dc_shell set_ideal_network [get_pins u2/Y]图8 理想网络源报告根据理想属性的传播规则u2此时不是理想单元所以不管是引脚A还是引脚B到引脚Y的延迟都不是0此时经过端口a的时序报告如图9所示。图9 建立时间时序报告但是由于此时单元u2的输出引脚Y传播线网or_out变成了理想线网而理想线网的电容为0这也会间接影响u2的单元延迟图10所示为report_delay_calculation命令的结果。图10 单元延迟计算
上一篇/下一篇内容由系统自动关联
返回资讯列表 →