![图片[1]-跨时钟域背景下的亚稳态和 MTBF 是什么-Anlogic-安路社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2025/02/20250221202304130-91740140584.png?v=1740140585)
什么是亚稳态?
亚稳态是触发器或锁存器输出端发生的不可预测行为,其输出在特定时间段内呈现 0 到 1 之间的非特定值。
如果是触发器的话,当其输入变化太接近其建立和保持窗口时,就会出现亚稳态,所以其输入应该保持稳定。
如果还不清楚究竟什么是建立和保持窗口,甚至不明白“为什么存在这些窗口?”那推荐阅读下面的文章或者我们后续再深入讨论:
https://vlsiuniverse.blogspot.com/2013/06/setup-and-hold-basics-of-timing-analysis.html
亚稳态是否意味着故障?
要回答这个问题,我们需要在系统环境中定义故障的确切含义。亚稳态无处不在,当我们在键盘上打字太快,由于没有正确按下按键或按下时间不够长就会导致拼写错误,这就是现实中的“亚稳态”。但这是否意味着我们的系统完全失效并被丢弃?事实是否定的,这只是一个设计不良的系统,因为实际上亚稳态无法 100% “解决”。它只能被隔离并最小化到统计上合理的程度。
任何系统,无论设计得多么好,都会在某个时间点出现亚稳态,即使这个时间是一亿年。
因此,精心设计的系统在外环路(如控制硬件的软件)中也具有冗余和智能,当检测到这些事件发生时,重置系统或者重启系统。
不过,有一种特殊的情况,亚稳态会引起电流过大而“烧毁”芯片。假设你让第一个同步触发器的输出进入一个大的组合云,在某个时刻,这个触发器输出端的亚稳态需要非常长的时间才能稳定下来。组合云中的所有门都将被驱动到短路区域,其中 Vcc 和地之间有很大的电流流动,这就有可能导致芯片烧毁,导致BOOM。
![图片[2]-跨时钟域背景下的亚稳态和 MTBF 是什么-Anlogic-安路社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2025/02/20250221202307921-71740140587.png?v=1740140587)
那么,如何描述上述现象并确认我们的设计对于目标应用来说“足够好”?这就需要“MTBF”的概念。
MTBF 的含义及其重要性
MTBF 代表平均故障时间。这是几乎所有制造产品和设备的行业中非常流行且标准的可靠性指标。
MTBF 只是一个概率测量,告诉你系统连续两次故障之间的平均时间。理想情况下,我们希望它非常大-超级大。就像宇宙的寿命一样,这样我们的系统就不会出现问题。
以下是在CDC环境中 MTBF 的定义:
这个等式是在下面的书中(Digital Systems Engineering)提出的。
![图片[3]-跨时钟域背景下的亚稳态和 MTBF 是什么-Anlogic-安路社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2025/02/20250221202308342-41740140588.png?v=1740140588)
它如下所示:
![图片[4]-跨时钟域背景下的亚稳态和 MTBF 是什么-Anlogic-安路社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2025/02/20250221202310517-11740140590.png?v=1740140591)
许多论文将 T0 称为 K1,将 1/T 称为 K2。
这里,
-
Fd ⇒ 数据频率。需要输入一个等效的数字来捕捉这个信号变化的频率。
-
Fc ⇒ 捕获异步信号的时钟频率,目标时钟。
-
T0 和 1/T ⇒与触发器中主锁存器的增益带宽积(GBW)有关。GBW 是用于描述放大器特性的品质因数。
简单来说,它估算了触发器中模拟电子元件的运行速度。这些参数还可能对温度、电压和工艺节点敏感。如果可以选择,只需使用触发器速度最快的设备即可最大化 MTBF。
-
t`(或 Tau)⇒ 这是另一个参数,它提供了一些有关如何改善电路 MTBF 的想法。这实际上表示我们的设计有多少时间可以让“亚稳态”过度或者自恢复。
由以上可以得到: t` = tclk – (tsu + tckq + tpd)
其中 tclk ⇒ Fc,tsu ⇒ 目标触发器(同步触发器之后的触发器)的建立时间,tckq ⇒ 源触发器(同步触发器)的时钟到 q 延迟,以及 tpd ⇒ 从源到目标的线路传播延迟。
这里推荐Xilinx 的 Peter Alfke 撰写的一篇精彩论文:
https://gab.wallawalla.edu/~larry.aamodt/engr435/xapp094_metastability_2005.pdf
该文章进行了一项实验,对 Virtex-II Pro FPGA 中触发器的 MTBF进行了计算。让我们能对MTBF有更深的理解!
从上面的等式也可以明显看出,由 t‘(tau) 和 1/T 或 (K2) 控制的指数部分对 MTBF 值的影响最大。一旦选择了芯片,K2 就不能再更改了。所以我们的重点应该是尽可能增加 t‘(tau)。
经典多触发同步器如何最大化MTBF
设计师用来解决亚稳态问题的最流行和标准的电路结构是多重触发同步器。
![图片[5]-跨时钟域背景下的亚稳态和 MTBF 是什么-Anlogic-安路社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2025/02/20250221202311416-91740140591.png?v=1740140592)
上图是给亚稳态触发器(A)一个额外的时钟周期,用来稳定其输出并向电路的其余部分提供干净的逻辑电平。
在太空和医疗设备等应用中,标准要求至少使用三个触发器进行同步。这种做法的代价是就是延迟。根据实际的应用,这个延迟可能很大,也可能不大。
多触发同步器系统的 MTBF 可以通过以下公式得出:
![图片[6]-跨时钟域背景下的亚稳态和 MTBF 是什么-Anlogic-安路社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2025/02/20250221202314815-101740140594.png?v=1740140594)
MTBF(design) = 1/(failurerate_design)
最大化 MTBF 设计实践
将同步触发器就近放置,最小化 Tpd,最大化了 t`。
通过将同步触发器 A 和 B 物理上彼此靠近放置,因为 Tpd(传播延迟)已降至几乎为零,所以大部分时钟周期时间可用于亚稳态稳定(上述等式中的 t` 或 tau)。
在 FPGA 中,可以通过使用“async_reg”属性(xilinx)来确保这一点,该属性可确保布局布线时将这些触发器放置得非常接近。
在 ASIC 中,有从 RTL 推断出的同步器的专用库单元。
同步器是否只能防止亚稳态,还是也能保证功能的正确性?
同步器旨在降低亚稳态事件蔓延至整个电路的概率。但是,如果发生亚稳态(在工作很长的时间后,确实会发生),它可能会稳定在任何逻辑电平上,从而将错误的值传输到目标域。
![图片[7]-跨时钟域背景下的亚稳态和 MTBF 是什么-Anlogic-安路社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2025/02/20250221202315596-51740140595.png?v=1740140596)
有几种做法和设计可以确保当此类情况发生时运行不会中断。以下对这些技术进行研究的论文可供参考:
https://www.mpi-inf.mpg.de/fileadmin/inf/d1/teaching/winter20/how_to_clock/book_chapter_metastability.pdf
https://typeset.io/pdf/metastability-and-synchronizers-a-tutorial-5bpigldcse.pdf
通过网盘分享的文件:MTBF参考资料 链接: https://pan.baidu.com/s/1IJawPb0bgEDLipAeuswZfQ?pwd=u2nq 提取码: u2nq
没有回复内容