SDC命令详解:使用set_propagated_clock命令进行约束
相关阅读SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm1001.2014.3001.5482目录指定端口列表/集合Multicorner-Multimode支持简单使用注意事项写在最后传播时钟是在进行了时钟树综合后使用set_propagated_clock命令可以将一个理想时钟转换为传播时钟注意虚拟时钟即无时钟源对象的时钟无法被转换为传播时钟设置对象的propagated_clock属性为true此时的时钟延迟由源延迟和真实网络延迟组成这里的网络延迟是根据时钟路径上的互连延迟和单元延迟真实计算出来的而不再使用set_clock_latency命令设置网络延时。有关理想时钟和传播时钟的更详细内容可以参考下面的博客。如果想要移除传播时钟使用remove_propagated_clock命令。静态时序分析ideal_clock、propagated_clock以及generated_clock的关系及其延迟计算规则一https://blog.csdn.net/weixin_45791458/article/details/139998035?ops_request_misc%257B%2522request%255Fid%2522%253A%2522e4f4bf160af3c2b2f079b3291ac96a32%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257Drequest_ide4f4bf160af3c2b2f079b3291ac96a32biz_id0utm_mediumdistribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-139998035-null-null.nonecaseutm_term%E4%BC%A0%E6%92%AD%E6%97%B6%E9%92%9Fspm1018.2226.3001.4450本文针对Design Compiler但该命令同样存在于PrimeTime、IC Compiler等工具中它们大致相同略有差别。set_fanout_load命令的BNF范式有关BNF范式可以参考以往文章为set_propagated_clock object_list指定端口列表/集合指定一个列表/集合包含时钟对象、端口对象或引脚对象对于列表而言如果有多于一个对象需要使用引号或大括号包围对使用集合无效关于列表和集合的区别可以参考下面的博客。SDC命令详解使用集合(Collection)而不是字符串(String)/列表(List)作为命令参数https://chenzhang.blog.csdn.net/article/details/147144571Multicorner-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简单使用下面用一个简单的例子进行说明图1是两个D触发器的简单级联可以看出此时的时钟路径上人为插入了一些缓冲器。图1 一个简单的例子下面使用create_clock命令在clk端口创建了一个理想时钟周期为10。dc_shell create_clock -period 10 [get_ports clk]对于理想时钟而言它的延迟包括两部分源延迟(source)和网络延迟(network delay)它们都是使用set_clock_latency命令进行设置的关于该命令的使用可以参考之前的文章SDC命令详解使用set_clock_latency命令进行约束。 注意理想时钟的网络延迟值是直接设置的而不会从时钟路径上的互连延迟(net delay)和单元延迟(cell delay)中推断出来。下面的命令设置了时钟clk的源延迟为2ns网络延迟为0.5ns。dc_shell set_clock_latency -source 2 [get_clocks clk] dc_shell set_clock_latency 0.5 [get_clocks clk]图2所示的建立时间时序报告显示时钟的总延迟为2.5ns(注意这里的network delay其实指的是总延迟而不只是网络延迟)括号中的ideal提示了这是一个理想时钟。图2 建立时间时序报告下面使用set_propagated_clock命令将理想时钟clk转换成传播时钟此时会给出警告。dc_shell set_propagated_clock [get_clocks clk] Warning: Converting ideal clock at clk to propagated clock. (UID-477)图3是此时的时钟报告可以看出此时的时钟clk已经拥有propagated_clock属性了即是一个传播时钟了。图3 时钟报告传播时钟此时的时钟延迟由源延迟和真实网络延迟组成这里的网络延迟是根据时钟路径上的互连延迟和单元延迟真实计算出来的如图4所示此时添加了-path full_clock选项以显示出完整的时钟路径。图4 展开时钟路径的建立时间报告注意事项有些时候会设置端口对象或引脚对象的传播时钟属性此时经过这些端口对象或引脚对象的时钟对象将被视为传播时钟注意该时钟本身可以是理想时钟。下面依旧以图1为例说明这种情况使用set_propagated_clock命令设置输入端口clk的传播时钟属性。​dc_shell set_propagated_clock [get_clocks clk]此时时钟对象依旧是理想时钟如图5所示。图5 时钟报告理想时钟下面使用set_input_delay命令设置输入端口d的输入延迟。dc_shell set_input_delay 0.5 -clock [get_clocks clk] [get_ports d]此时经过输入端口d的建立时间时序报告如图6所示此时添加了-path full_clock选项以显示出完整的时钟路径。图6 展开时钟路径的建立时间报告可以看出即使是同一个时钟对象clk对于发射路径其被视为理想时钟使用设置网络延迟 对于捕获路径其被视为传播时钟使用真实网络延迟。如果将时钟本身设置为传播时钟发射路径将只包含源延迟而不含网络延迟在不使用-reference_pin选项的情况下。写在最后尽管set_propagted_clock命令不存在set_size_only命令中多实例化设计(MIM)的问题但依旧可以通过使用current_design命令切换当前设计到多实例化设计设置propagated_clock属性后再切换回原当前设计来进行多个对象的propagated_clock属性设置但不推荐。如果这么做了使用write_script -hierarchy命令可以观察切换设计进行设置的过程。另外还有下面有几点需要注意1、即使子设计中的propagated_clock属性设置了还需要使用propagate_constraints -clocks命令将子设计的传播时钟约束传播到顶层设计实测该命令对多实例化设计中约束的传播效果不好建议先使用使用uniquify命令进行唯一化才能生效。2、如果下层设计设置属性的同时在上层设计设置了同一个对象的propagated_clock属性其上层的优先级更高。3、如果在上层设计设置了一个对象的propagated_clock属性其无法反向传递到下层设计。

相关新闻

MAA明日方舟助手 3步跑通日常指南

MAA明日方舟助手 3步跑通日常指南

MAA明日方舟助手 3步跑通日常指南 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://gitcode.com/GitHub_Trending/ma/Ma…

2026/11/16 3:18:39 阅读更多 →
PyTorch Geometric实战:用图神经网络管好百万节点的电网

PyTorch Geometric实战:用图神经网络管好百万节点的电网

PyTorch Geometric实战:用图神经网络管好百万节点的电网 【免费下载链接】pytorch_geometric Graph Neural Network Library for PyTorch 项目地址: https://gitcode.com/GitHub_Trending/py/pytorch_geometric 如果你写过 Python,但没碰过图神经…

2026/11/16 3:18:39 阅读更多 →
挖了一堆 SRC 水洞后,聊聊我的漏洞挖掘思路与实战技巧

挖了一堆 SRC 水洞后,聊聊我的漏洞挖掘思路与实战技巧

这段时间挖掘了挺多的SRC漏洞,虽然都是一些水洞,也没有一些高级的漏洞挖掘利用手法,但是闲下来也算是总结一下,说说我对SRC漏洞挖掘的思路技巧。 很多人可能都挖过很多漏洞其中包括一些EDU或者别的野战,但是对于SRC往…

2026/11/8 20:05:18 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/15 5:13:35 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/15 5:13:35 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/15 5:13:35 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/15 3:37:41 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/15 4:18:38 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/15 5:13:35 阅读更多 →

日新闻

周新闻

月新闻