无闪烁时钟多路复用器?

在半导体带出之后,最令人沮丧的 bug 之一就是这个: 函数仿真完美 ,Silicon Bring-up 大部分时间正常工作,但 "有时 "表现不稳定。 当我尝试在教授面前重现它时,它工作正常....。由于缺乏可重复性,调试日志也很模糊。如果你深入挖掘,往往会得出相同的结论:...

无闪烁时钟多路复用器?
在半导体带出之后,最令人沮丧的 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 是否通过?"
  • 高级设计关注的是 "能否大规模生产?"

글 참여 도구

Share Join discussion
How did this article help? Used only as a private quality signal.

Private note

Spot an error or need clarification?

Send a private correction, question, or topic request directly to the editor.

VLSI Korea

Send a private note

Your message will be delivered to [email protected].

How should we receive it?

Anonymous mode omits your name and email. The delivery provider may still process technical data such as an IP address, so absolute anonymity cannot be guaranteed.

ENGINEER DISCUSSION

What are you seeing in practice?

Add evidence, a counterpoint, or experience from the field. Reply notifications keep the thread moving.

VLSI KOREA BRIEFING

Keep the signal. Lose the noise.

Semiconductor engineering and industry intelligence from a practicing engineer. Free, with no paywall.

FOR BUSINESS

Need this level of technical content?

Technical content, sponsored deep-dives and private team briefings—with clear scope and pricing.

Work with VLSI Korea →
VLSI Korea Free forever · No paywall · Weekly semiconductor insights from practicing engineers
MY VLSI

내 읽기 보관함

저장한 글과 읽던 글을 한곳에서 이어보세요.