0%

Reset

复位

  • 对于单个 ASIC 而言,复位的主要目的是强制 ASIC 设计(RTL 等)进入已知状态,以进行仿真。
  • ASIC 制作完后,是否需要复位由一些因素决定。如果设计得当,使所有未知状态都指向合法初始状态,则不需要复位
  • 如果 ASIC 中的状态机在综合时利用了 don't care 优化,则需要复位。

带复位触发器的建模

  • 一个给定功能的所有触发器都应该在一个过程块中建模,例外是下述的同步触发器 & 无复位跟随器。
  • 触发器的 always 块中都应用非阻塞赋值 <=

同一个 always 中建模不同类型的触发器

  • 错误:在一个 always 中混合建模同步复位触发器跟随触发器,导致 rst_n 被推导为跟随触发器的使能信号 ld
image-20230721090540867
  • 正确:分别在两个 always 中描述。
image-20230721090818529
  • 不过,如果是异步复位,则会推导出相同的电路。

同步复位

编码风格

image-20230721093843824

综合电路

  • (#1)触发器无同步复位端口,复位信号为 d 输入逻辑云的一部分。
    • 复位树扇出高,相对于时钟而言可能是一个晚到信号,所以尽量限制复位信号到 d 之间必须穿越的逻辑。
    • sync_set_reset 可以帮助推导这种触发器,但是需要注意前后仿不一致的问题。(?)
image-20230721092304457 image-20230721092656483
  • (#2)触发器有同步复位端口,复位信号直接接入。

优点

  • 可以过滤复位毛刺。但如果毛刺发生在时钟边沿附近,会导致亚稳态。
  • 确保电路 100% 同步
  • 面积更小,但可能不明显。
  • 对于基于周期的仿真器,效率更高。
  • 在某些设计中,复位必须由一组内部条件产生,此时建议用同步复位,可以过滤时钟之间的逻辑等式故障。(?)
  • 通过使用同步复位和多个时钟作为复位过程的一部分,可以在复位缓冲树内使用触发器,帮助缓冲树的时序保持在一个周期内。(?)

缺点

  • 可能需要脉冲拉伸器,以保证复位脉冲足够宽,保证被时钟边沿采样。
  • 仿真器阻塞。(?)
  • 为了防止上电时三态总线上的总线争用,必须要有异步复位功能。

异步复位

异步复位最大的问题在于复位释放。

编码风格

Synopsys 要求,如果敏感列表中有任一个信号是边沿敏感的,则所有信号都必须是边沿敏感的。

image-20230721103038347

时序约束

复位缓冲树?

同时具有异步复位和异步置位功能的触发器

  • rst_nset_n 都拉低后,rst_n 再拉高,此时 q 却未被置位:仿真综合电路行为不匹配。
  • 需要使用 synopsys translate_off/on 和不可综合的构造才能与综合后的电路行为 100% 匹配。
image-20230721103636255

优点

  • 只要器件库有异步复位的触发器,就能保证数据通路是干净的,不会综合出额外的逻辑。
    • 那些对数据通路时序要求极高的设计,无法接受因同步复位(#1)而在数据通路中插入额外的逻辑、增加额外的延时
    • 不过如果器件库也有同步复位的触发器,并且设计人员让 Synopsys 能实际使用这些端口,则不成立。
image-20230721104642459
  • 电路可以在有时钟和没时钟的情况下复位。

缺点

  • 异步复位如果在有效时钟沿释放,会导致亚稳态问题。
  • 电路板上的噪声或故障或系统复位可能造成假复位。(?)
  • 使用异步复位的设计很难进行静态时序分析 STA ,必须对同步和异步复位的复位树进行时序分析,以确保在一个时钟周期内释放复位。复位树的时序分析必须在布局后进行,以确保这一时序要求。(?)
  • 对于 DFT ,如果异步复位不是由 I/O 引脚直接驱动,则在 DFT 扫描和测试时必须禁用来自复位驱动的复位网。(?)

异步复位问题

image-20230721111556348

复位恢复时间 trec

  • 复位恢复时间指从复位释放到下一个时钟有效边沿之间的时间,需要满足建立时间tsu,否则会导致亚稳态或信号完整性的问题。
  • Verilog 2001 有三个内指命令用于模拟和测试恢复时间和信号移除时序检查:$recovery $removal $recrem

复位去除时间

跨越不同时钟周期的复位释放

由于复位信号到达不同触发器时间存在偏差,可能导致两个触发器在不同的时钟周期释放复位。

复位信号同步电路

每个使用异步复位的 ASIC 都应该包括一个复位信号同步电路。

  • 第二个触发器用于消除复位释放靠近时钟边沿导致的亚稳态。
image-20230721113130845 image-20230721112157458
  • 同步复位信号经过 clk-q 延时、复位分配树延时到达,还需要满足目标触发器的复位恢复时间。(T < tclk-q + tpd + trec + tsu?)
image-20230721112835008

复位分配树

  • 复位树通常具有和时钟树一样多的负载。

复位信号的偏移(skew)

  • 复位树与时钟树的区别是偏移(skew)的平衡。
    • 与时钟信号不同,只要复位信号的延时足够短,能够在一个时钟周期内传播到所有复位负载,并仍满足目标触发器的复位恢复时间要求,那么复位信号之间的偏移(skew)就无关紧要。
image-20230721113330546

复位树和时钟树的时序(复位同步电路的时钟来源)

必须根据 clk-q 复位树的时序分析时钟树时序。

  • 为复位树提供时钟的最安全方法是:时钟树的叶时钟为复位同步触发器提供时钟。
    • 但是大多情况下,一个时钟周期不够时钟脉冲穿过时钟树、复位信号穿过 clk-q 、再穿越复位树。
image-20230721115003924
  • 为了加快复位到达所有目标触发器的速度,复位同步触发器采用时钟树中更早的时钟
    • 在完成布局并获得两棵树的实际时序之前,无法进行详细时序调整。
image-20230721115025576

复位毛刺的过滤

  • 这种方法可以过滤复位毛刺,但它是 ugly 的。(?)
    • 需要一个数字延迟(随温度、电压等变化)
    • 复位输入 pad 应该是施密特触发 pad 。
image-20230721141328815
  • 一些供应商还提供了可实例化的延迟硬件宏。

多时钟域复位

对于多时钟设计,每个时钟域都应该使用单独的复位同步电路和复位分配树,保证满足复位恢复时间。

无协调复位释放

  • 对于许多多时钟设计,各时钟域的复位时间之间没有联系。
  • 只需各自创建独立的复位同步电路就行。
image-20230721150742013

有序复位释放

  • 对于某些多时钟设计,必须按照正确的顺序释放复位。
  • 将各个复位同步电路进行 d-q 级连,实现顺序释放。
image-20230721150725033

异步复位与 DFT

DFT

image-20230721144747499
  • 扫描链插入:将触发器换成扫描触发器,并将它们拼接成扫描链。
  • ATPG:程序生成扫描向量。
  • 测试:
    • 扫描移位模式,将测试向量扫描到所有触发器中。
    • 从扫描移位模式切换到功能数据输入模式。
    • 经过一个功能时钟。
    • 切换回扫描移位模式,扫描出结果,同时扫描入下一个测试向量。
  • DFT 通常需要两个控制引脚:
    • 模式切换引脚
    • 移位使能引脚

(?)

多 ASIC 复位同步

对于一些设计,多个 ASIC 需要准确地在同一时间进行复位释放。可能受板布局、工艺、温度影响。

image-20230721153533909