时序分析基本概念介绍——min pulse width 最小脉冲宽度

06-26 1274阅读

文章目录

  • 前言
  • 一、什么是 min pulse width?
  • 二、为什么检查 min pulse width?
  • 三、如何设置 min pulse width约束?
    • 1. 在sdc里面定义
    • 2. library里面定义
    • 四、如何检查 min pulse width?
    • 五、如何修复 min pulse width?
    • 总结

      前言

      min pulse width 是对信号高电平或低电平脉冲最小宽度的衡量,通常都只针对clock path 做min pulse width 检查。

      一、什么是 min pulse width?

      min pulse width ,全称为最小脉冲宽度检查。min pulse width用于检查时钟信号的波形是否处在一个合理的状态。时序单元对时钟的高电平和低电平的脉冲宽度有一定的要求,经过min pulse width检查可以获悉时钟信号的最小脉冲宽度是否满足了时序单元的要求。

      二、为什么检查 min pulse width?

      一般情况下,由于cell本身的差异,rise和fall delay不相同,这样可能会造成时钟信号脉冲宽度减小。

      如下图一个周期为1ns,duty cycle 为50%的clock信号:

      时序分析基本概念介绍——min pulse width 最小脉冲宽度

      在经过一个buffer(rise delay: 0.05, fall delay:0.03):

      时序分析基本概念介绍——min pulse width 最小脉冲宽度

      clock信号波形变成如下图所示:

      时序分析基本概念介绍——min pulse width 最小脉冲宽度

      假设一个占空比为50%的时钟穿过一个buffer,该buffer的rise delay大于fall delay,则经过buffer后的脉冲宽度要比输入时钟小。如果时钟信号经过一系列相同类型的单元,则时钟信号的脉冲宽度将会持续减小。如果小于某个最小宽度,可能会导致器件不能正常的捕获数据。

      因此,在做timing分析时,我们是必须对cell的pin做min pulse width检查。

      三、如何设置 min pulse width约束?

      min pulse width检查设置通常有两类方法:在sdc里面重新设置min pulse width约束或者直接使用library里面的设置。

      1. 在sdc里面定义

      指令如下(示例):

      set_min_pulse_width 1.25 [get_clocks *]
      

      或者指令如下(示例):

      set_timing_derate -min_pulse_width 1.25 
      

      2. library里面定义

      EDA工具也可以通过查找单元库来获取 min pulse width的阈值,在单元库中,一般是以input transition 为index 的一张一维表。

      时序分析基本概念介绍——min pulse width 最小脉冲宽度

      一般情况下,如果要设置比lib里面更为严格的min pulse width检查,需要在sdc里面重新设置min pulse width约束。

      四、如何检查 min pulse width?

      因为library 中相应clock pin 上定义了min pulse width 属性,或用命令set_min_path_width 设了约束,因此在做了CTS之后,则可以使用命令report_min_pulse_width 可以报出相应min pulse width check。

      时序分析基本概念介绍——min pulse width 最小脉冲宽度

      如上电路图,我们想要计算ff2的clock pin的min pulse width check,采用report_min_pulse_width -path_type full_clock_expanded [get_pin ff2/CP],得到下面path路径slack。

      时序分析基本概念介绍——min pulse width 最小脉冲宽度

      如果想要报出所有的min pulse width violation可以使用report_min_pulse_width -all_violators命令。

      五、如何修复 min pulse width?

      1.由于普通buffer上升和下降的delay不一样,如果经过一连串的buffer的话,有时候会发生min pulse width的violation。因此,更加推荐采用clock inverter来取代buffer,相比buffer来说,inverter的上升和下降时间会相互补偿,这样就更容易避免min pulse width violation的产生;

      2. 检查是否有比较大的transition, 因为min pulse width的阈值在单元库中一般是以input transition 为index 的一张一维表;

      3. 检查时钟路径是否用了相同阈值电压(Vt)的的单元,是否用了时钟单元(一般以CK或DCCK开头),另外,对于先进工艺电路,一般时钟路径会使用低阈值电压单元(ULVT);

      4. 检查是否有串扰,消除或者减少串扰引起的delta delay。

      总结

      最小脉冲宽度对数字电子设备的功能和性能至关重要,它直接影响设备的稳定度和精度,因此设计数字电子设备时,必须仔细考虑最小脉冲宽度,并确保信号始终保持在可接受范围内。

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]