SDC命令详解:使用set_disable_timing命令进行约束
相关阅读SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm1001.2014.3001.5482目录指定对象列表/集合指定源、目的引脚指定恢复简单使用Multicorner-Multimode支持写在最后上一章中我们学习了如何使用set_case_analysis模式分析命令它通过指定某个端口或引脚为固定值从而使设计中的一些时序弧失效。本章将学习set_disable_timing命令它可以用于直接指定失效时序弧这会导致时序路径的中断常常用于减少时序分析的复杂度。如果想要恢复失效的时序弧使用-reset_path选项。本文针对Design Compiler但该命令同样存在于PrimeTime、IC Compiler等工具中它们大致相同略有差别。set_disable_timing命令的BNF范式有关BNF范式可以参考以往文章为set_disable_timing object_list [-from from_pin_name -to to_pin_name] [-restore] //注该命令的-from选项和-to选项必须同时出现指定对象列表/集合object_list参数指定了对象列表/集合包括需要中断时序弧的单元、端口、引脚、库单元或库引脚如果在PrimeTIme中还可以指定单元时序弧或库单元时序弧这个参数是必选的。对于列表而言如果有多于一个对象需要使用引号或大括号包围对使用集合无效关于列表和集合的区别可以参考下面的博客。SDC命令详解使用集合(Collection)而不是字符串(String)/列表(List)作为命令参数https://chenzhang.blog.csdn.net/article/details/147144571如果指定的对象是一个叶单元则其会被设置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属性的原因显式或隐式。指定源、目的引脚-from选项和-to选项必须成对出现它们指定了一个单元需要中断从源引脚到目的引脚这个特定的时序弧因此如果它们使用了则对象列表中只能有单元对象。指定恢复-restore选项表示将中断的时序弧恢复此时指定的其它选项要和指定时序弧失效时的命令一致。简单使用首先我们可以解决静态时序分析SDC约束命令create_clock详解一文中出现的时序路径混乱问题如图1所示首先在输入端口clk1和clk2定义两个时钟。create_clock -period 10 [get_ports clk1] create_clock -period 15 [get_ports clk2]图1 有两个时钟驱动的电路单元对于上面的电路本意是触发器b_reg和触发器c_reg同时受时钟clk1或时钟clk2之一触发但如果不使用set_disable_timing命令在使用report_timing命令后会出现时钟clk2和时钟clk1之间的时序分析报告如图2、图3所示我们真正需要的是图4的时序报告本文如不加说明默认时序报告为建立时间报告。图2 发射时钟是clk2捕获时钟是clk1图3 发射时钟是clk1捕获时钟是clk2图4 发射时钟是clk2捕获时钟是clk2下面我们使用set_disable_timing命令直接使得数据选择器U4从输入引脚B到输出引脚Y的时序弧失效当然你也可以是使输入引脚S0到输出引脚Y的时序弧也失效但由于输入引脚S0不会定义时钟因此它可以省略。可以通过report_design命令或report_disable_timing命令查看直接指定失效的时序弧注在Design Compiler中该命令无法查看库单元和库引脚上设置失效时序弧PrimeTime中可以查看如图5或图6所示从图6的Flag栏的u可以看出此时的失效路径是直接由用户定义的。此时的时序分析结果如图7和图8所示。set_disable_timing [get_cells U4] -from B -to Y set_disable_timing [get_cells U4] -from S0 -to Y //加上这句也可以图5 失效时序弧报告(一)图6 失效时序弧报告(二)图7 发射时钟和捕获时钟都是clk2图8 发射时钟和捕获时钟都是clk2对于使用set_disable_timing命令使得数据选择器U4从输入引脚A到输出引脚Y的时序弧失效与上面是一样的操作和结果。在讨论set_case_analysis命令时我们说到常量值会沿着逻辑传播直到传播终点为止常量值不能继续传播下去。那set_disable_timing命令是否也会导致失效时序弧沿着逻辑传播下面来看一个例子如图9所示。图9 一个简单的例子首先在输入端口clk定义一个时钟并对输入端口enable添加输入延迟约束。create_clock -period 10 [get_ports clk] set_input_delay 0.5 -clock clk [get_ports enable]此时如果直接使用report_timing命令则触发器t_reg和触发器data_out_reg以及端口enable和触发器data_out_reg之间的时序路径会正常报告如图10和图11所示。图10 两个触发器间的时序报告图11 端口和触发器间的时序报告下面使用set_disable_timing命令使与门U4从输入引脚B到输出引脚Y的时序弧失效可以使用report_design命令或report_disable_timing命令查看直接指定失效的时序弧如图12或图13所示可以看出失效时序弧不会沿着逻辑传播。set_disable_timing [get_cells U4] -from B -to Y图12 失效时序弧报告(一)图13 失效时序弧报告(二)下面我们来看set_disable_timing命令的一个特性时序路径分割这与set_case_analysis命令直接使时序路径消失不同下面来看一个例子。由于在图9中我们只使与门U4从输入引脚B到输出引脚Y的时序弧失效了而与门U4从输入引脚A到输出引脚Y的时序弧依然保留了所以t_reg和data_out_reg的时序路径依旧存在如图14所示。图10 两个触发器间的时序报告但是原本在输入端口enable到触发器data_out_reg之间的时序路径被切断了此时的时序路径变成了从输入端口enable到与门U4的B引脚尽管这不是一个常见的时序路径终点但现在确实如此如图11所示而此时与门U4的Y引脚到触发器data_out_reg输入引脚D的时序弧只属于t_reg到data_out_reg的时序路径。图11 一条奇怪的时序路径如果此时使用下面的命令再使与门U4从输入引脚A到输出引脚Y的时序弧失效如图12所示。则这把之前的两条时序路径都切断此时会出现三条时序路径第一条是从t_reg到与门U4的A引脚第二条是从输入端口enable到与门U4的B引脚第三条是从与门U4的Y引脚到触发器data_out_reg如图13、图14和图15所示从图中的startpoint和endpoint可以看出时序路径的起点和终点。set_disable_timing [get_cells U4] -from A -to Y图12 失效时序弧报告图13 第一条时序路径图14 第二条时序路径图15 第三条时序路径我们可以使用-restore选项移除两个指定的失效时序弧顺带一提还可以使用remove_disable_timing命令移除失效时序弧它们是等价的。set_disable_timing [get_cells U4] -from A -to Y -restore set_disable_timing [get_cells U4] -from B -to Y -restore //下面的命令等价 remove_disable_timing [get_cells U4] -from A -to Y -restore remove_disable_timing [get_cells U4] -from B -to Y -restore如果我们直接指定触发器data_out_reg的时钟引脚CK到数据引脚D的时序弧失效则针对触发器data_out_reg的建立时间和保持时间检查都不会进行如图16所示。set_disable_timing [get_cells data_out_reg] -from CK -to D图16 建立时间和保持时间不会检查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写在最后set_disable_timing命令能直接指定一条时序弧失效并中断和分割经过它的时序路径在实际运用中使用此命令前需要谨慎并明确自己在做什么。除了本文谈到的set_disable_timing命令和set_case_analysis命令外失效时序弧还可能因为固定值引起的常量传播、工具自动断开组合逻辑环(Timing Loop)和状态相关的时序弧(Conditional Timing Arc)缺少对应状态等方式产生。

相关新闻

europeana_newspapers_images数据字段全解析:lines、words、alto_xml与置信度到底怎么用

europeana_newspapers_images数据字段全解析:lines、words、alto_xml与置信度到底怎么用

【免费下载链接】europeana_newspapers_images 项目地址: https://ai.gitcode.com/hf_mirrors/biglam/europeana_newspapers_images 点击查看 免费下载 europeana_newspapers_images 数据集收录了 98,877 张 17–20 世纪欧洲历史报纸页面图像(10 种语言…

2026/10/19 2:25:39 阅读更多 →
轻量级公式识别模型UniRec-0.1B:架构、9倍速推理与部署实战

轻量级公式识别模型UniRec-0.1B:架构、9倍速推理与部署实战

公式识别一直是文档数字化里最让人头疼的一环。你平时看论文、转电子教案、整理试卷,文字部分OCR都已经做得挺成熟,但一旦碰到积分公式、矩阵、分段函数,传统引擎基本就废了。最近我刷到一个开源项目,标题写得很直白:轻…

2026/10/19 2:24:38 阅读更多 →
Spring Boot电商商城系统从设计到部署:订单、购物车与后台管理实战

Spring Boot电商商城系统从设计到部署:订单、购物车与后台管理实战

这次我们来看一个非常典型的开源方向:基于 Spring Boot 的线上购物平台的设计与实现。这类项目在 GitHub 上很多,做成毕设、课程设计、或者拿来作电商系统原型都很合适。它的价值不在于技术有多新,而在于把商城主链路完整跑通了:商…

2026/10/19 2:24:38 阅读更多 →

最新新闻

Flink有界流与无界流:核心区别、运行时行为差异与选型避坑指南

Flink有界流与无界流:核心区别、运行时行为差异与选型避坑指南

1. 从一个反直觉的现象说起:为什么批处理跑得好好的,换成流处理就出问题刚接触 Flink 的人,十有八九会在某个时刻被一个看似简单的问题绊住:我明明写的是同一套算子逻辑,为什么换成流模式跑,结果要么迟迟不…

2026/10/19 3:14:03 阅读更多 →
Hadoop期末复习全攻略:HDFS、MapReduce与YARN核心考点精讲

Hadoop期末复习全攻略:HDFS、MapReduce与YARN核心考点精讲

1. 这门课到底在考什么:从一张复习卷看Hadoop知识体系的全貌每年到了期末季,总有一批同学在群里哀嚎:“Hadoop这东西,课上听懂了,一到做题就懵。”我当年带过几届大数据方向的课程助教,也帮不少朋友梳理过复…

2026/10/19 3:14:03 阅读更多 →
Halcon基于形状的模板匹配:原理、参数调优与实战经验

Halcon基于形状的模板匹配:原理、参数调优与实战经验

做视觉项目这些年,经常碰到有人问我:Halcon 里做定位用哪个方法最稳?我的回答往往不是特征点,也不是深度学习,而是那个看起来有点“老派”的——基于形状的模板识别。尤其当你面对的是低纹理的金属件、注塑件&#xff…

2026/10/19 3:14:03 阅读更多 →
基于PSO的LLC变换器PI参数自动寻优MATLAB仿真项目解析

基于PSO的LLC变换器PI参数自动寻优MATLAB仿真项目解析

简介:本资源为基于MATLAB的PSO-PID控制器参数优化实现工程,面向控制工程初学者、自动化专业学生及需要摆脱人工试凑整定PID参数的开发人员。压缩包内共3个文件,其中2个m脚本分别实现粒子群优化主程序与PID参数求解逻辑,1个mdl模型…

2026/10/19 3:14:03 阅读更多 →
SenseNova-U1.5-8B-MoT-pose-bf16完全介绍:跑在Apple Silicon上的开源AI姿态迁移模型是什么

SenseNova-U1.5-8B-MoT-pose-bf16完全介绍:跑在Apple Silicon上的开源AI姿态迁移模型是什么

【免费下载链接】SenseNova-U1.5-8B-MoT-pose-bf16 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/SenseNova-U1.5-8B-MoT-pose-bf16 点击查看 免费下载 SenseNova-U1.5-8B-MoT-pose-bf16 是一款跑在 Apple Silicon(M 系列芯片&#xff0…

2026/10/19 3:14:03 阅读更多 →
AI可复现性挑战:固定随机种子、锁定环境,让训练结果稳定复现

AI可复现性挑战:固定随机种子、锁定环境,让训练结果稳定复现

1. 从一次“幽灵复现失败”说起:到底什么是AI的可复现性挑战前阵子我把一台GPU服务器上的旧训练任务重新跑了一遍,用的确实是当时的代码、当时的数据文件、当时的依赖环境,结果AUC从0.713变成了0.704。当时我的第一反应不是“代码写错了”&am…

2026/10/19 3:13:03 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →