SDC命令详解:使用set_operating_conditions命令进行约束(bc_wc模式和on_chip_variation模式)
相关阅读SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm1001.2014.3001.5482目录默认工作环境显式指定工作环境指定工作环境名指定最大条件的工作环境指定最大条件工作环境的搜索库指定最小条件的工作环境指定最小条件工作环境的搜索库指定搜索库指定对象名称Multicorner-Multimode支持指定分析模式PrimeTime与Design Compiler/IC Compiler的区别其他OCV方法set_operating_conditions命令用于设置设计的工作环境工作环境包括温度、电压、工艺等它们的变化会显著影响电路性能因此所有工艺库的数据都是在一个特定的工作环境下得到的这个环境被称为特征化环境并根据选择的工作环境进行相应调整。有关特征化环境和工作环境的更详细内容可以参考下面的博客。静态时序分析工艺库的特征化环境和工作环境https://blog.csdn.net/weixin_45791458/article/details/136088521?ops_request_misc%257B%2522request%255Fid%2522%253A%2522b3dbe94f88b3c34dbccf8e467840d97c%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257Drequest_idb3dbe94f88b3c34dbccf8e467840d97cbiz_id0utm_mediumdistribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-136088521-null-null.nonecaseutm_term%E7%89%B9%E5%BE%81%E5%8C%96spm1018.2226.3001.4450默认工作环境如果不使用set_operating_conditions命令指定工作环境Design Compiler将自动选择默认工作环境。逻辑库中可以使用default_operating_conditions库属性定义默认工作环境如果逻辑库中不存在default_operating_conditions库属性且只包含一个工作环境则该工作环境将被设置为默认工作环境如果逻辑库中不存在default_operating_conditions库属性且包含多个工作环境则标准工作环境nom_pvt将被创建并被设置为默认工作环境。Design Compiler会在link_library变量或local_link_library属性两者统称为link_path中的第一个逻辑库即主库中搜索默认工作环境如果失败则会选择标准工作环境nom_pvt。具体来说综合时Design Compiler将在target_library变量中的第一个逻辑库中搜索默认工作环境这是因为综合后设计的local_link_library属性将被设置为target_library变量其他情况下Design Compiler将在link_path中的第一个逻辑库中搜索默认工作环境。拓扑模式的Design Compiler NXT为了提升与物理实现工具如IC Compiler II的一致性在2021版本引入了一个新特性如果用户不使用set_operating_conditions命令指定工作环境在综合后需要使用compile_ultra -spg命令自动选择的默认工作环境将被添加为一个约束就像用户使用了set_operating_conditions命令那样该约束可以被传递给IC Compiler II Link也可以使用write_icc2_files命令或write_sdc命令输出综合或使用这两个命令时会提示以下信息。Warning: There is no user-defined operating conditions in the design. The tool is inferring operating conditions %s from the library %s. (DCT-399)在IC Compiler II中执行write_icc2_files命令输出的脚本时将会提示以下信息。Information: IC Compiler II will be using the default operating condition inferred by Design Compiler NXT显式指定工作环境与默认选择工作环境相比更加常用的是使用set_operating_conditions命令显式指定工作环境本文就将对此进行讨论。本文针对Design Compiler但该命令同样存在于PrimeTime、IC Compiler等工具中它们大致相同略有差别。set_operating_conditions命令的BNF范式有关BNF范式可以参考以往文章为set_operating_conditions [condition] [-max max_condition] [-max_library max_lib] [-min min_condition] [-min_library min_lib] [-library lib] [-object_list objects] [-analysis_type bc_wc | on_chip_variation]指定工作环境名condition参数指定了一个工作环境它被设置为最大条件下一般情况下如果不开启on_chip_variation这指的是建立时间检查和最小条件下一般情况下如果不开启on_chip_variation这指的是保持时间检查的工作环境。该参数不能与-min选项和-max选项一起使用。指定最大条件的工作环境-max选项指定了最大条件下的工作环境一般情况下如果不开启on_chip_variation这指的是建立时间检查。该参数不能与condition参数一起使用。指定最大条件工作环境的搜索库-max_library选项指定了搜索最大条件下的工作环境的库如果不指定-max_library选项则Design Compiler会在link_path指定的逻辑库中从左至右搜索指定的工作环境如果在-max_library选项中指定了多个逻辑库则Design Compiler会在这些指定的逻辑库中从左至右搜索指定的工作环境。该选项只有在使用了-max选项后才能使用。指定最小条件的工作环境-min选项指定了最小条件下的工作环境一般情况下如果不开启on_chip_variation这指的是保持时间检查如果不指定最小条件下的工作环境Design Compiler会使用最大条件的工作环境。该参数不能与condition参数一起使用。如果指定了最小条件的工作环境通常需要使用set_min_library命令设置最大与最小条件的库映射关系否则会出现设计映射到最大条件的逻辑库但在最小条件分析时由于最小条件的工作环境与最大条件的逻辑库中的特征化环境不一致而出现使用k系数(k-factors)调整的问题更详细的分析可以参考下面博客中的“与set_operating_conditions命令同时使用”一节。SDC命令详解使用set_min_library命令进行约束https://chenzhang.blog.csdn.net/article/details/149541491?spm1011.2415.3001.5331指定最小条件工作环境的搜索库-min_library选项指定了搜索最大条件下的工作环境的库如果不指定-min_library选项则Design Compiler会在link_path指定的逻辑库中从左至右搜索指定的工作环境如果在-min_library选项中指定了多个逻辑库则Design Compiler会在这些指定的逻辑库中从左至右搜索指定的工作环境。该选项只有在使用了-min选项后才能使用。指定搜索库-library选项指定了搜索最大条件和最小条件下的工作环境的库该选项的优先级高于-max_library选项和-min_library选项。指定对象名称-object_list选项指定要设置工作环境的单元或端口。如果不使用此选项则工作环境设置在整个设计上对象可以是叶单元也可以是层次单元。这个选项在早期的Design Compiler中即2007版本前此时UPF标准还尚未公布因此是非UPF模式用于指定多电压域设计中各电压域的工作环境现在已经废除。如今的多电压域设计中使用UPF文件指定电压意图使用set_voltage命令指定各电压域的工作电压使用set_operating_conditions命令指定整个工作温度和工作工艺。关于UPF模式和非UPF模式的更多介绍可以参考下面的博客。Design Compiler两种工作模式线负载模式和拓扑模式https://blog.csdn.net/weixin_45791458/article/details/144830461?sharetypeblogdetailsharerId144830461sharereferPCsharesourceweixin_45791458spm1011.2480.3001.8118Multicorner-Multimode支持该命令仅对当前场景生效换句话说只能在当前场景设置工作环境。如果使用了MCMM必须设置每个场景的工作环境。关于场景的更多介绍可以参考下面的博客。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指定分析模式-analysis_type选项指定了Design Compiler的分析模式可以是bc_wc模式默认或on_chip_variation模式PrimeTime默认。如果是bc_wc模式则Design Compiler在时序分析时只会使用单一的最大条件设置和最小条件设置对于建立时间分析Design Compiler使用最大条件下的工作环境以及最大条件设置即用-max选项设置的约束并在转换时间合并时统一使用最慢转换时间对于保持时间分析Design Compiler使用最小条件下的工作环境以及最大条件设置即用-min选项设置的约束并在转换时间合并时统一使用最快转换时间。关于转换时间合并可以参考下面的博客中有关GBA分析的那一部分。静态时序分析静态时序分析的原理及其两种模式PBA、GBAhttps://blog.csdn.net/weixin_45791458/article/details/136078969?ops_request_misc%257B%2522request%255Fid%2522%253A%2522f82123c01eaab2e7a8e5c467f18fad01%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257Drequest_idf82123c01eaab2e7a8e5c467f18fad01biz_id0utm_mediumdistribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-136078969-null-null.nonecaseutm_termPBAspm1018.2226.3001.4450如果是on_chip_variation模式则Design Compiler在时序分析时会根据检查类型对发射路径和捕获路径使用不同的条件设置对于建立时间分析Design Compiler会对发射路径使用最大条件设置转换时间合并时使用最慢转换时间对捕获路径使用最小条件设置转换时间合并时使用最快转换时间对于保持时间分析Design Compiler会对发射路径使用最小条件设置转换时间合并时使用最快转换时间对捕获路径使用最大条件设置转换时间合并时使用最慢转换时间以分析最差情况下的时序。下面以图1举例说明分析模式的使用。图1 简单的触发器首先使用create_clock命令以clk端口为源对象创建一个周期为10的时钟。create_clock -period 10 [get_ports clk]接着在输入端口d定义分别定义最大条件和最小条件的输入延迟。set_input_delay -max 0.8 -clock clk [get_ports d] set_input_delay -min 0.4 -clock clk [get_ports d]最后定义理想时钟最大条件和最小条件下的延迟。set_clock_latency 0.2 -max [get_clocks clk] set_clock_latency 0.1 -min [get_clocks clk]如果使用bc_wc模式默认则此时输入端口d的建立时间时序报告和保持时间时序报告分别如图2和图3所示。图2 输入端口的建立时间报告bc_wc模式图3 输入端口的保持时间报告bc_wc模式可以看出对于发射路径时序报告上半部分和捕获路径时序报告下半部分Design Compiler统一使用了最大条件或最小条件下的设置。如果使用on_chip_variation模式则此时输入端口d的建立时间时序报告和保持时间时序报告分别如图4和图5所示。图4 输入端口的建立时间报告on_chip_variation模式图5 输入端口的保持时间报告on_chip_variation模式可以看出对于发射路径时序报告上半部分和捕获路径时序报告下半部分Design Compiler在进行建立时间分析时发射路径选择了最慢的时钟延迟0.2而捕获路径选择了最快的时钟延迟0.1这导致了与bc_wc模式相比时序裕量由9.16下降为9.06在进行保持时间分析时发射路径选择了最快的时钟延迟0.1而捕获路径选择了最慢的时钟延迟0.2这导致了与bc_wc模式相比时序裕量由0.39下降为0.29。本例只展示了对于时钟延迟的设置在两种模式下的差异实际上所有可以分别设置-min选项和-max选项的命令在这两种模式下都是会有差异的。虽然on_chip_variation模式模拟了片上变化带来的影响但显而易见它是悲观的尤其是对于时钟路径上的共同路径这被称为共同路径悲观(Common Path Pessimism)如果想移除这种悲观可以将timing_remove_clock_reconvergence_pessimism变量设置为true默认值为false。在Design Compiler/IC Compiler中使用report_deisgn命令可以查看当前使用的工作环境使用report_scenarios命令可以查看当前使用的分析模式在PrimeTime中使用report_deisgn命令可以查看当前使用的工作环境和分析模式。PrimeTime与Design Compiler/IC Compiler的区别对于PrimeTime而言原本存在single模式、bc_wc模式和on_chip_variation模式三种分析模式如果选择bc_wc模式和on_chip_variation模式可以在使用其他命令时指定-min或-max选项后来bc_wc模式被删除了因此现在的PrimeTime只有在分析模式为on_chip_variation默认时才能在使用命令时指定-min或-max选项包括set_operating_conditions命令而Design Compiler/IC Compiler则无此要求。其他OCV方法除了设置分析模式之外还可以通过set_timing_derate模拟片上变化即使分析模式为bc_wc但该命令只能使用单一的因子进行降额。为了更加精准地模拟片上变化PrimeTime在2008版本推出了AOCV(Advanced On-Chip Variation)模式在2013版本推出了POCV(Parametric On-Chip Variation)模式使用它们可以在on_chip_variation模式的基础上考虑逻辑深度、举例和统计分析等更多因素。POCV模式在拓扑模式的Design Compiler Graphical中得到了支持AOCV模式和POCV模式在IC Compiler中得到了支持。

相关新闻

TeamViewer:远程协作的“隐形桥梁“,为什么企业离不开它?

TeamViewer:远程协作的“隐形桥梁“,为什么企业离不开它?

同事电脑出了问题,你在千里之外怎么帮忙?客户系统需要紧急调试,出差路上如何响应?在家办公要访问公司内网的文件,VPN 配置复杂到让人头大——这些场景,TeamViewer 用一根网线、一个软件、一组密码&#xff…

2026/10/20 13:44:01 阅读更多 →
方寸之间,万籁俱寂——AP-0316声学模组深度解码:50毫米如何消灭一切噪音

方寸之间,万籁俱寂——AP-0316声学模组深度解码:50毫米如何消灭一切噪音

想象一个场景:矿场深处,凿岩机的轰鸣震耳欲聋;就在这片噪声里,一名工人对着通话设备说了一句"3号巷道顶板有裂隙"——远在调度中心的值班员,听到的却是干净、清晰、几乎没有杂质的人声。这不是科幻。这是 AP…

2026/10/19 7:40:50 阅读更多 →
MC开服教程-白嫖面板服务器!小白也可以!

MC开服教程-白嫖面板服务器!小白也可以!

目录 说在前面 什么是雨云? 为什么选择雨云? 注册账号 赚取积分 实名认证 兑换产品 配置面板服 重装系统 续费面板服 电量-超重要!!!必看 进入正题 加入面板服 PCL2联机教程 安装PCL2 登录正版游戏 离…

2026/10/18 0:35:01 阅读更多 →

最新新闻

context-mode:上下文感知的自动模式切换引擎实践

context-mode:上下文感知的自动模式切换引擎实践

最早让我决定做一个 context-mode 项目,是因为一个特别具体的痛点:同一套应用,放在办公室、通勤路上、家里、深夜加班这些不同场景里,使用者的操作习惯和真实需求完全不一样。白天在公司网络下打开后台,你可能希望默认…

2026/10/20 20:59:49 阅读更多 →
AI检测率太高怎么办?一套有效降低AI率的文本改写优化方法

AI检测率太高怎么办?一套有效降低AI率的文本改写优化方法

不知道你有没有遇到过这种尴尬:用AI工具写了一版内容,读起来通顺、逻辑也完整,结果放进检测工具里一查,AI概率直接飙到百分之八九十。改了半天也不知道从哪里下手,只能一边吐槽检测器“不靠谱”,一边重新手…

2026/10/20 20:59:48 阅读更多 →
图结构在智能体系统中的应用:任务编排、记忆检索与多智能体协作

图结构在智能体系统中的应用:任务编排、记忆检索与多智能体协作

1. 图结构在智能体系统里到底解决了什么问题第一次把图结构塞进智能体系统的时候,我其实是带着怀疑的。毕竟那会儿大家都在卷提示词工程,谁有空去折腾数据结构。但做完两个项目之后我改主意了——图不是锦上添花,它解决的是智能体系统里最要命…

2026/10/20 20:59:48 阅读更多 →
基于图卷积神经网络的基因-疾病关联预测实战解析

基于图卷积神经网络的基因-疾病关联预测实战解析

做生信的人对“基因疾病关联”这个词不会陌生。从单基因病的位点筛查,到复杂疾病的多基因风险评分,我们一直在跟“哪个基因通过什么机制影响了哪种疾病”这个问题打交道。但传统做法要么靠体外实验一点一点验证,要么靠统计关联从海量样本里硬…

2026/10/20 20:59:48 阅读更多 →
Git分支与合并实战:从commit整理到冲突解决的协作指南

Git分支与合并实战:从commit整理到冲突解决的协作指南

1. 分支纠结现场:为什么大家的git乱成一锅粥1.1 一个真实困扰:代码怎么又“丢”了上个月某天下午,A同学在公司群里发了一句“我改的代码怎么没了”,紧接着截图里是一堆红色的冲突标记。那一刻我就知道,这不是代码丢了&…

2026/10/20 20:59:48 阅读更多 →
鸿蒙ArkTS生鲜超市实战项目解析与避坑指南

鸿蒙ArkTS生鲜超市实战项目解析与避坑指南

简介:本资源是一套基于华为鸿蒙操作系统(HarmonyOS)开发的生鲜超市行业应用实战项目,面向Android开发者转型鸿蒙生态、高校学生学习分布式应用开发及企业级HarmonyOS项目实践者。项目聚焦线上线下融合购物场景,完整呈现…

2026/10/20 20:58:45 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

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

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

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

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

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

2026/10/20 1:01:30 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 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/20 10:02:08 阅读更多 →
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/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练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/20 9:50:45 阅读更多 →