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

静态时序分析:SDC约束命令set_clock_jitter详解

相关阅读

静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html


目录

        指定周期抖动值

        指定占空比抖动值

        指定时钟列表

        周期抖动值的示例

        占空比抖动值的示例

        不应用时钟抖动的示例


        本章将讨论如何使用set_clock_jitter命令模拟设计中的时钟抖动(clock jitter),传统流程中往往将时钟抖动包含在时钟不确定度(uncertainty)之中,使用set_clock_uncertainty命令进行约束,但这需要进行较多的人为干预,例如保持时间的不确定度应小于建立时间的不确定度,因为保持时间检查在同一个时钟沿进行,所以只受到时钟偏差的影响。

        set_clock_jitter命令只适用于发射时钟和捕获时钟都为同一时钟的情况,如果时钟类型为生成时钟,还要求其为使用-multiply_by选项创建的生成时钟。

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

set_clock_jitter[-cycle cycle_to_cycle_jitter][-duty_cycle duty_cycle_jitter]-clocks clock_list//注:该命令的选项和参数顺序任意

指定周期抖动值

        -cycle选项指定了周期抖动值,当发射时钟沿和捕获时钟沿相隔为时钟周期的整数倍时,周期抖动值生效。

指定占空比抖动值

        -duty_cycle选项指定了占空比抖动值,当发射时钟沿和捕获时钟沿相隔不是时钟周期的整数倍时,占空比抖动值生效。

指定时钟列表

        -clocks选项指定了应用抖动值的时钟。

周期抖动值的示例

        下面以图1所示的两级D触发器为例说明周期抖动值的使用。

图1 简单的例子

        首先使用create_clock命令以clk_1端口为源对象创建一个周期为10的时钟。 

create_clock -period 10 [get_port clk_1]

        然后使用set_clock_jitter命令设置时钟clk_1的周期抖动值,此时的建立时间时序报告如图2所示。 

set_clock_jitter -cycle 0.5 -clocks [get_clock clk_1]

图2 建立时间时序报告

        从图2中可以看出,clk_1的时钟抖动体现在了cycle clock jitter这一项中,导致data  required time减少了0.5,也就导致了最后的裕度(slack)减少了0.5。

占空比抖动值的示例

        为了说明占空比抖动值的影响,改用图3所示的两级D触发器进行说明,图3和图1的区别在于:图3的捕获时钟路径上出现了反相器,这会导致时钟在时钟路径上传播时可能因为单元的单调性出现翻转。

图3 简单的例子

        首先使用create_clock命令以clk_1端口为源对象创建一个周期为10的时钟。  

create_clock -period 10 [get_port clk_1]

        然后使用set_clock_jitter命令设置时钟clk_1的占空比抖动值,此时的建立时间时序报告如图4所示。  

set_clock_jitter -duty_cycle 0.5 -clocks [get_clock clk_1]

图4 建立时间时序报告

        从图4中可以看出,由于反相器的存在,发射时钟的上升沿在0ns,而捕获时钟的下降沿在5ns时由于反相器变成了上升沿(从取反时钟clk_1'可以看出这一点),它们只相差半个周期。clk_1的时钟抖动体现在了duty cycle clock jitter这一项中,导致data  required time减少了0.5,也就导致了最后的裕度(slack)减少了0.5。

不应用时钟抖动的示例

        重新回到图1的例子,若此时查看保持时间时序报告,则会发现此时没有应用任何时钟抖动,因为保持时间检查在发射时钟和捕获时钟的同一个时钟沿进行(仅针对单周期情况),如图5所示。

图5 保持时间时序报告


http://www.mrgr.cn/news/93041.html

相关文章:

  • 【实战 ES】实战 Elasticsearch:快速上手与深度实践-2.2.3案例:电商订单日志每秒10万条写入优化
  • vue videojs使用canvas截取视频画面
  • 基于 DataEase 的企业数据分析实践
  • 硅基流动nodejs流式输出
  • 使用vite创建vue3项目
  • T-SQL 语言基础: SQL 数据库对象元数据及配置信息获取
  • AMD RDNA3 GPU架构解析
  • (十 九)趣学设计模式 之 中介者模式!
  • 【算法】手撕二分查找
  • stm32 jlink烧录时写保护
  • HOW - 在Windows浏览器中模拟MacOS的滚动条
  • 私有云基础架构
  • 多个pdf合并成一个pdf的方法
  • easyExcel使用案例有代码
  • SP导入智能材质球
  • 【子网掩码计算器:Python + Tkinter 实现】
  • 中间件专栏之MySQL篇——MySQL缓存策略
  • 以实例浅析汇编语句和高级语言
  • CDefView::_OnFSNotify函数分析
  • Pytorch xpu环境配置 Pytorch使用Intel集成显卡