无闪烁时钟多路复用器?

无闪烁时钟多路复用器?
在半导体带出之后,最令人沮丧的 bug 之一就是这个:函数仿真完美,Silicon Bring-up 大部分时间正常工作,但"有时 "表现不稳定。当我尝试在教授面前重现它时,它工作正常....。由于缺乏可重复性,调试日志也很模糊。如果你深入挖掘,往往会得出相同的结论:
  • "定时在某个地方被破坏了。"
  • 这个 "某个地方 "通常是一个全局控件,如 时钟/重置
  • 具体来说,时钟到 MUX点的非常细的脉冲(故障)

时钟路径中的故障与数据故障属于不同类型的故障。

另一方面,时钟故障会被触发器感知为"额外时钟边沿",从那时起,一个异常边沿就会扭曲整个系统状态。这就是为什么经典的解决方案是无故障时钟 MUX (GFCM)


1) 为什么常规多路复用器 (MUX) 中会出现闪烁

最简单的 2:1 MUX 的逻辑是干净的。

out = (~S & A) | (S & B)

在 RTL 中,只要 sel 从 0→1 变为 B,它就会从 A 变为 B。

  • (~S & A)和(S & B)路径具有不同的单元延迟/导线延迟
  • S 的信号传播不会同时到达两个路径。
  • 在这个短暂的间隙中,OR 输入组合会发生短暂变化,从而在短时间内导致信号切换。(静态危险/动态危险)

在时钟 MUX 中,A 和 B 通常是异步时钟。由于 A 和 B 之间的相位关系并不固定,因此在 "坏时刻 "捕捉到 sel 过渡的概率比预期的要高,从而导致 "有时 "出现故障的硅错误。


2) 为何需要时钟缝隙

  1. 即使脉冲宽度很短,FF 也能将其识别为时钟
    时钟树中的回扫/阈值、根据库 FF 的内部脉冲滤波,"不需要的边 "可能有效。
  2. 容易同时中断设置/保持
    如果在正常边沿之前连接突波,则会中断保持;如果紧接着连接突波,则会中断设置。无论如何,结果都是随机的。
  3. 在 DVFS/Fail-over/Power domain 时代,时钟切换已司空见惯

3) Glitch-Free의 핵심 정의:"密封过渡条件",而不是 "无闪烁"

无闪烁时钟多路复用器的关键很简单。

在改变输出时钟时,没有时钟边沿通过

选择信号(Enable)仅在时钟的稳定部分发生改变。

这里有一个重要的见解:

GFCM 通常是启用暂停的电路,而不是无缝电路

这意味着无闪烁的代价可能是丢失一两个周期。如果 "无闪烁 "开关是目标,那么就不应该仅仅是改变 MUX 的问题,而应该在 PLL/时钟架构层面加以解决。


4) 가장 널리 쓰이는 구조(정석):"互斥 + 安全窗口更新"

如果闪变太接近旧时钟,就会导致时序违规。

为了避免这种情况,我们需要一些逻辑来暂停一段时间的时钟切换。

如果从前后两部分来看,它的结构与 MUX 相同,

  1. 内部有一个两级同步器,
  2. 当 SELECT 信号发生变化时,有一个反馈回路与相反的时钟同步。

最终,它将执行以下操作。

  • 使能 1 和使能 2 永远不会同时变为 1(互斥)
  • 在打开另一侧之前先关闭一侧(先断后连)

我们在过渡期间短暂停止时钟,仅在安全的一侧打开另一侧。<这个 "暂停 "就是无故障的成本和可靠性。


Electronicspedia 频道有一个非常好的无故障示例,所以我把它附在后面:

5)波形中的 "Glitch vs Glitch-Free"(仅核心)

(1) naive MUX(可能出现故障)

如图所示,

当 Sel 为 0 时,输出 CLK1;当 Sel 为 1 时,输出 CLK2。

设计人员不希望出现的像 CLK Out 虚线部分一样突出的时钟切换称为突波:


6) 在 SDC 和 CDC 分析中:

时钟 MUX 输出是 "CLK1 和 CLK2"。

  • GFCM 内部的同步 FF 是 CDC,因此请使用 CDC 工具(SpyGlass-CDC 等)单独检查功能安全性。

7) CTS/PnR 인사이트:GFCM 不是 "逻辑块",而是 "时钟根设备"

GFCM 的质量因其位置而异。这在高级节点中尤为明显:

  • 尽可能靠近时钟源(PLL/OSC):MUX 前后较长的时钟网会增加 SI/EM/IR 下降的影响和偏斜管理的难度:
  • 选择/控制是控制,而不是数据:随着扇出的增加,无闪烁结构会增加 "过渡延迟"。如果对该路径进行 set_case_analysis 分析,您可能会在门级仿真中发现巨大的违规现象。这需要进行管理,以便施加约束:
  • 与 CTS 的角色分离:真正的时钟树位于 GFCM 的输出之后:
  • 占空比/脉冲完整性:简单的 AND/OR 选通会造成占空比失真。应优先选择经过代工厂鉴定的单元,而不是仅仅在 RTL 中创建 GFCM。

简而言之:

GFCM 应被视为时钟架构的一部分,并在 PnR 中受到 "保护"。


8) DFx(Scan/ATPG/Bring-up) 관점:GFCM 是 "测试之门"

扫描通常有不同的移位时钟和捕获时钟要求,而高速测试的要求更高。以下是设计不佳的 GFCM 如何破坏 DFx:

  • 扫描停止,因为测试模式下不允许时钟切换
  • 捕获部分暂停,破坏模式
  • 复位/test_en 转换时出现闪烁,导致故障

因此工作模式通常是这样的。

  • 用 test_en 直接旁路 test_clk(如上文的 RTL)
  • 或者为扫描设置一个独立的时钟复用器,与功能时钟复用器分开

有些专家只制作这样的无闪烁时钟复用器!

将无间隙时钟 MUX 描述为 "无间隙多路复用器 "过于单薄。在现代 SoC 中,GFCM 是贯穿DVFS/故障转移/电源域/DFx的时钟基础设施。

这一小块显示了设计的成熟度:

  • 学生设计关注的是 "RTL 是否合理?"
  • 初级设计关注的是 "STA 是否通过?"
  • 高级设计关注的是 "能否大规模生产?"

Enjoyed this article?

Get deep-dive semiconductor analysis and career insights delivered weekly. Free forever — no paywall, no upsell. Funded by sponsorships with a strict editorial firewall (Editorial Standards).

Work with me

Consulting · Collaboration · Support

Paid 1:1 technical consulting, speaker invitations, collaboration proposals, or just want to say thanks — all welcome.

View options →
VLSI Korea Free forever · No paywall · Weekly semiconductor insights from practicing engineers
Support