当前位置: 首页 > 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.xdnf.cn/news/1365337.html

相关文章:

  • K8s高可用:Master与候选节点核心解析
  • 基于MalConv的恶意软件检测系统设计与实现
  • 力扣(用队列实现栈)
  • SSH 反向隧道:快速解决服务器网络限制
  • 蜗牛播放器 Android TV:解决大屏观影痛点的利器
  • 【科研绘图系列】R语言绘制代谢物与临床表型相关性的森林图
  • 从0死磕全栈第1天:从写一个React的hello world开始
  • leetcode 238 除自身以外数组的乘积
  • PHP学习笔记1
  • 基于MATLAB实现支持向量机(SVM)进行预测备
  • 数据结构青铜到王者第三话---ArrayList与顺序表(1)
  • 【数学·三角函数】两角和差公式 二倍角公式
  • idea官网选择具体版本的下载步骤
  • easy-dataset的安装
  • 【STM32】G030单片机的独立看门狗
  • 不止效率工具:AI 在文化创作中如何重构 “灵感逻辑”?
  • 《拉康精神分析学中的欲望辩证法:能指的拓扑学与主体的解构性重构》
  • 【科研绘图系列】R语言浮游植物生态数据的统计与可视化
  • [系统架构设计师]专业英语(二十二)
  • 系统架构设计师-计算机系统存储管理-页式、段氏、段页式模拟题
  • 探索量子计算的新前沿
  • 【Linux】timerfd和POSIX定时器(timer_create)
  • ASW3642 pin√pin替代TS3DV642方案,可使用原小板只需简单调整外围|ASW3642 HDMI二切一双向切换器方案
  • prepare_model_for_kbit_training()函数解析(56)
  • 解决getLocation获取当前的地理位置,报错:getLocation:fail auth deny及方法封装
  • 抖音多账号运营新范式:巨推AI如何解锁流量矩阵的商业密码
  • Unity中的特殊文件夹
  • Day60 Java面向对象15 abstract关键字详解
  • 物流架构实践:ZKmall开源商城物流接口对接与状态同步
  • 配置单区域 OSPF