当前位置: 首页 > news >正文

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

相关阅读

SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm=1001.2014.3001.5482


目录

        指定降额比例

        指定降额对象列表/集合

        指定沿

        指定最大、最小条件

        指定早、晚条件

        指定路径的类型

        指定降额类型

        指定约束

        指定增量

        写在最后       


        由于制造工艺的偏差,一块晶圆(Wafer)上的各个裸片(Die)拥有不同的特征,甚至一个裸片上的不同部位也可能出现偏差。前者称为全局工艺偏差(Global Process Variation),后者称为局部工艺偏差(Local Process Variation),这个偏差比全局工艺偏差小很多。

        除了工艺参数(Process),PVT中的电压(Voltage)和温度(Temperature)在芯片上的分布也不是恒定的,PVT偏差这可能由下面几种因素导致:

  1. PMOS晶体管和NMOS晶体管的电压阈值偏差。
  2. PMOS晶体管和NMOS晶体管的沟道长度(尺寸)差异
  3. 由于电压降(IR Drop)导致的晶体管电压偏差。
  4. 局部热点造成的温度偏差。
  5. 互连线的刻蚀不均造成互连线电阻和电容的偏差。

        上面的因素可以统称为OCV(On-Chip Variation),即片上变化。OCV会影响芯片上不同区域的单元延迟和互连延迟,在普通的STA分析中,我们只会选择一种工作条件(operating condition),并在此条件下分析,而没有考虑芯片上各区域的差异。因此,为了更好地模拟OCV效应的影响,set_timing_derate命令允许设计者设置时序降额,简单来说,就是允许某些路径快一些,允许某些路径慢一些,STA时会考虑到这些因素,从而分析最难满足的情况。

        下面是set_timing_derate命令的BNF范式(有关BNF范式,可以参考以往文章)为:

set_timing_deratevalue object_list[-rise] [-fall][-min] [-max][-early] [-late][-clock] [-data][-net_delay] [-cell_delay][-cell_check] [-min_period] [-min_pulse_width][-increment]//注:该命令的object_list参数一定要放在value参数后 

指定降额比例

        value参数指定了降额后的比例(在0.1到2之间),比如可以指定value为0.9,表示计算值为初始值的90%,即降额了10%。

指定降额对象列表/集合

        object_list用于指定降额值用于哪些对象,可以是叶单元、层次单元、库单元。当不指定降额对象列表/集合时,降额值用于整个设计,当整个设计的降额值和单元的降额值冲突时,以单元的降额值为准。

        对于列表而言,如果有多于一个对象,需要使用引号或大括号包围(对使用集合无效),关于列表和集合的区别,可以参考下面的博客。

SDC命令详解:使用集合(Collection)而不是字符串(String)/列表(List)作为命令参数https://chenzhang.blog.csdn.net/article/details/147144571

指定沿

        -rise选项用于指定降额值作用于尾部是上升沿的时序弧、-fall选项用于指定降额值作用于尾部是下降沿的时序弧。如果这两个选项都没有指定,降额值同时作用于所有时序弧(相当于它们同时指定)。

指定最大、最小条件

        -max选项用于指定降额值作用于最大延迟分析(一般情况下,如果不开启on_chip_variation,这指的是建立时间检查),-min选项用于指定降额值作用于最小延迟分析(一般情况下,如果不开启on_chip_variation,这指的是保持时间检查)。如果这两个选项都没有指定,降额值同时作用于最大延迟和最小延迟分析(相当于它们同时指定)。

指定早、晚条件

        -early和-late选项在set_clock_latency命令中也有,如下面的博客所示。

SDC命令详解:使用set_clock_latency命令进行约束https://blog.csdn.net/weixin_45791458/article/details/136130769?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522290c4b7d417404a42653da4af39c2fc8%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=290c4b7d417404a42653da4af39c2fc8&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-136130769-null-null.nonecase&utm_term=set_clock_latency&spm=1018.2226.3001.4450        -early选项用于指定降额值用于最快的路径,-late选项用于指定降额值用于最慢的路径。在建立时间分析和保持时间分析中,会对发射路径和捕获路径的这点进行考虑,给出最差情况下的分析结果。如果这两个选项都没有指定,降额值同时作用于发射路径和捕获路径(相当于它们同时指定)。为了与实际情况吻合,-early指定的降额值应小于1,-late指定的降额值应大于1。

        具体来说,对于建立时间分析,发射路径上的时钟路径和数据路径会使用-late选项指定的最慢降额值,而捕获路径上的时钟路径和数据路径会使用-early选项指定的最快降额值,这是最坏的情况下的结果;对于保持时间分析,发射路径上的时钟路径和数据路径会使用-early选项指定的最快降额值,而捕获路径上的时钟路径和数据路径会使用-late选项指定的最慢降额值,这是最坏的情况下的结果。

指定路径的类型

        -clock选项用于指定降额值只用于时钟路径,-data选项用于指定降额值只用于数据路径。如果这两个选项都没有指定,降额值同时用于时钟路径和数据路径(相当于它们同时指定)。

指定降额类型

        -net_delay选项用于指定降额值只用于互连延迟,-cell_delay选项用于指定降额值只用于单元延迟,需要注意的是,-net_delay选项不能与对象列表/集合一起使用,因为互连延迟的指定是全局性的。

指定约束

        默认情况下,建立时间、保持时间之类的时序约束不会被降额。

        -cell_check选项指定对单元的建立时间、保持时间约束应用降额,该选项不能与-clock、-data、-cell_delay、-net_delay选项一起使用。需要注意的是,set_input_delay命令设置的输入延迟和set_output_delay命令输出延迟不会被降额影响。

        -min_period选项指定对单元的最小周期约束应用降额,该选项只能与-rise、-fall选项一起使用,此时-rise选项表示使用上升沿到上升沿计算周期,-fall选项表示使用下降沿到下降沿计算周期。

        -min_pulse_width选项指定对单元的最小脉冲宽度约束应用降额,该选项只能与-rise、-fall选项一起使用,此时-rise选项表示高电平脉冲宽度,-fall选项表示低电平脉冲宽度。

指定增量

        -increment选项用于设置增量降额值,总降额值为基准降额值加增量降额值。

写在最后       

        随着工艺尺寸的不断缩小,静态时序分析受到的制造过程变化影响日益显著。传统的解决方案是使用一个全局的固定系数(set_timing_derate命令)来为设计添加裕量,以应对片上变化(On Chip Variation, OCV),虽然在130nm和90nm工艺节点时仍属合理,但在更先进的制程中已显得过于保守,带来了过度设计、性能下降和设计周期延长等问题。

        为解决这一挑战,PrimeTime在2008年左右引入了高级片上变化(AOCV)技术,这是对传统OCV方法的自然扩展,它通过更细致和上下文相关的建模方式,为设计提供了更真实、低悲观度的时序裕量控制。

http://www.dtcms.com/a/349531.html

相关文章:

  • 基于C语言实现的KV存储引擎(二)
  • ‌重塑培训架构,助力企业人才战略升级‌
  • 【C语言16天强化训练】从基础入门到进阶:Day 10
  • CPLD与FPGA
  • 《Password Guessing Using Large Language Models》——论文阅读
  • 企业级Java项目整合ELK日志收集分析可视化
  • [论文阅读]RQ-RAG: Learning to Refine Queries for Retrieval Augmented Generation
  • 大模型知识--MCP
  • 无人机芯片休眠模式解析
  • Linux系统的网络管理(一)
  • 血缘元数据采集开放标准:OpenLineage Integrations Apache Spark Main Concepts Installation
  • 05 开发环境和远程仓库Gitlab准备
  • 【spring进阶】spring应用内方法调用时长统计
  • 【数据结构】串——(一)
  • 36 NoSQL 注入
  • Docker 部署 GitLab 并开启 SSH 使用详解
  • 【Java后端】Java 多线程:从原理到实战,再到高频面试题
  • Claude Code 使用及配置智能体
  • 【科研绘图系列】R语言绘制代谢物与临床表型相关性的森林图
  • 从零到一:现代化充电桩App的React前端参考
  • 将FGUI的Shader全部预热后,WebGL平台没有加载成功
  • 基于MalConv的恶意软件检测系统设计与实现
  • 大模型 transformer 步骤
  • 《拉康精神分析学中的欲望辩证法:能指的拓扑学与主体的解构性重构》
  • 计算机大数据技术不会?医院体检数据可视化分析系统Django+Vue全栈方案
  • 不止效率工具:AI 在文化创作中如何重构 “灵感逻辑”?
  • 【DFS 或 BFS 或拓扑排序 - LeetCode】329. 矩阵中的最长递增路径
  • 【图像算法 - 23】工业应用:基于深度学习YOLO12与OpenCV的仪器仪表智能识别系统
  • 基于视觉的果园无人机导航:一种基于干预模仿学习与VAE控制器的真实世界验证
  • 机器人中的李代数是什么