资讯详情

SDC命令详解:使用set_ideal_latency命令进行约束

📅 2026/11/6 4:54:52 | 华诺云谱 👁 阅读
SDC命令详解:使用set_ideal_latency命令进行约束
相关阅读SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm1001.2014.3001.5482目录指定理想延迟值指定理想网络对象指定上升、下降沿指定最大、最小条件Multicorner-Multimode支持理想网络延迟的影响简单使用当使用set_ideal_network命令将当前设计中的一组端口或引脚标记为理想网络源后理想属性会沿着组合逻辑进行传播理想网络中的线网和单元的延迟默认为0可以通过set_ideal_latency命令指定理想网络的延迟设置了理想网络对象的ideal_latency_max_rise、ideal_latency_max_fall、ideal_latency_max_rise、ideal_latency_max_rise属性。如果想要移除理想延迟使用remove_ideal_latency命令。建议在阅读本文前先在下面的博客学习set_ideal_network命令。静态时序分析SDC约束命令set_ideal_network详解https://chenzhang.blog.csdn.net/article/details/146082417?spm1001.2014.3001.5502本文针对Design Compiler但该命令同样存在于PrimeTime、IC Compiler等工具中它们大致相同略有差别。set_ideal_latency命令的BNF范式有关BNF范式可以参考以往文章为set_ideal_latency delay object_list [-rise | -fall] [-min | -max] //注该命令的object_list参数一定要放在delay参数后指定理想延迟值指定一个理想的延迟值。它的单位必须和工艺库中指定的负载单位一致例如工艺库中使用了纳秒则该参数的单位也为纳秒。指定理想网络对象指定一个理想网络对象列表/集合包含端口对象、线网对象或叶单元的引脚对象不可以是层次单元的引脚。对于列表而言如果有多于一个对象需要使用引号或大括号包围对使用集合无效关于列表和集合的区别可以参考下面的博客。SDC命令详解使用集合(Collection)而不是字符串(String)/列表(List)作为命令参数https://chenzhang.blog.csdn.net/article/details/147144571如果延迟值设置的对象不属于理想网络则设置无效。如果列表中包含线网对象理想延迟将添加在驱动该线网的端口/引脚上。指定上升、下降沿-rise选项用于指定延迟值作用于上升沿、-fall选项用于指定延迟值作用于下降沿。如果这两个选项都没有指定延迟同时作用于上升沿和下降沿它们不能同时使用。指定最大、最小条件-max选项用于指定延迟值作用于最大延迟分析一般情况下如果不开启on_chip_variation这指的是建立时间检查-min选项用于指定延迟值作用于最小延迟分析一般情况下如果不开启on_chip_variation这指的是保持时间检查。如果这两个选项都没有指定延迟同时作用于最大延迟和最小延迟分析它们不能同时使用。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理想网络延迟的影响理想网络延迟代表了从理想网络源到理想网络终点的延迟具体参考理想属性的传播规则所有包含理想网络源的时序路径都会考虑这个延迟并将其记录在对应的Incr列旁用符号^标注。多个理想网络延迟可以叠加这发生在时序路径中定义了多个延迟的情况。简单使用下面以图1为例说明set_ideal_latency命令的使用。图1 简单的例子首先使用create_clock命令以clk端口为源对象创建一个周期为10的时钟。create_clock -period 10 [get_ports clk]接着使用set_input_delay命令在输入端口a、b、c上添加输入延迟参考时钟为clk此时经过端口a的时序报告如图2所示注意该时序报告使用了-input_pins选项来显示输入引脚。set_input_delay 0.5 {a b c} -clock [get_clocks clk]图1 建立时间时序报告然后使用set_ideal_network命令设置端口a为理想网络源根据理想属性的传播规则线网a变成了理想线网此时经过端口a的时序报告如图2所示其中唯一的不同是线网a的延迟变成了0。set_ideal_network [get_ports a]图2 建立时间时序报告需要注意的是此时只有端口a、线网a和引脚u1/A被标记为理想但理想属性不会穿过单元u1因为其另一个输入引脚不是理想的。我们可以分别使用下面三个命令将理想延迟设置在端口a、线网a或引脚u1/A上相应的时序报告如图3、4、5所示。set_ideal_latency 0.5 [get_ports a]图3 建立时间时序报告set_ideal_latency 0.5 [get_nets a]图4 建立时间时序报告set_ideal_latency 0.5 [get_pins u1/A]图5 建立时间时序报告从上面三个图中可以看出啊除了理想线网其他延迟值都是设置在指定的理想网络对象上出现在该对象的Incr列中并且使用^进行标记。需要注意的是通过端口b的时序路径并不会包含任何理想对象因此不含有任何理想延迟。但如果在引脚u1/Y上设置理想延迟呢是否会出现叠加情况这是错误的因为此时引脚u1/Y并不是理想对象有两种方法可以解决这个问题。第一种方法是使单元u1的所有输入引脚都为理想引脚这样u1单元就成为理想单元其输出引脚也就成为理想引脚了这可以通过将端口b设置为理想网络源来完成。此时经过端口a的时序报告如图6所示。set_ideal_network [get_ports b]set_ideal_latency 0.6 [get_pins u1/Y]图6 建立时间时序报告从图6中可以看出引脚u1/A到引脚u1/Y的单元延迟此时已经不是之前的0.1567221而是理想延迟0.6并且两个理想延迟叠加了。如果我不将端口b设置为理想网络源也可以使用第二种方法直接设置引脚u1/Y为理想网络源但此时经过端口a的时序报告如图7所示这可能会令人疑惑。set_ideal_network [get_pins u1/Y]set_ideal_latency 0.6 [get_pins u1/Y]图7 建立时间时序报告引脚u1/A到引脚u1/Y的单元延迟似乎并不是设置的理想延迟0.6而是奇怪的0.6217709这是因为单元u1此时并不是理想单元所以其单元延迟不为0而是真实延迟叠加理想延迟。这也说明第一种方法中的单元延迟为0.6应该看作是00.6其中0是理想单元的延迟而0.6是理想延迟而因为理想延迟恰好设置在引脚u1/Y上所以进行了累加。在第二种方法中读者可以尝试将理想延迟设置在u2/A上看看此时引脚u1/A到引脚u1/Y的单元延迟是否为0。回到正题如果这么说那此时的单元延迟应该为之前的0.1567221加上0.6才对这还是对不上。其实这是因为此时线网and_out为理想线网其电容为0导致与之前电容不为0得到的单元延迟不同可以使用report_delay_calculation命令查看单元延迟的计算方法如图8所示。图8 单元延迟计算
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑