グリッチフリー・クロックMUX?

半導体のTape-out後、最も苦痛なバグの一つはこのような形である。 Function simulationも完璧 、Silicon Bring-upでもほとんど正常、しかし "たまに"異常動作をする 教授の前で再現しようとすると、またうまく動作する ....再現性が低く、デバッグログも薄暗い。 Clock...

グリッチフリー・クロックMUX?
半導体のTape-out後、最も苦痛なバグの一つはこのような形である。
Function simulationも完璧、Silicon Bring-upでもほとんど正常、しかし"たまに"異常動作をする教授の前で再現しようとすると、またうまく動作する ....再現性が低く、デバッグログも薄暗い。
  • "どこかでタイミングが崩れた。"
  • その"どこか"がClock/Resetのようなglobal controlであることが多い。
  • 特にClockをMUXに変更するポイントで非常に薄いパルス(Glitch)が飛び出す

Clock pathでのGlitchはdata glitchとはレベルが違います。データパスのグリッチは、通常、コンビネーションロジック内で消費されます。

一方、クロックグリッチは、フリップフロップに"追加のクロックエッジ"として認識され、その瞬間から、1回の異常エッジがシステム状態全体を歪めることができます。そこで登場するのが、Glitch-Free Clock MUX(GFCM)です。


1) 一般的なMultiplexer(MUX)でGlitchが発生する理由

最も単純な2:1 MUXの論理式は簡単です。

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

RTL では、sel が 0→1 になると、すぐに A から B に変わるように見えます。

  • (~S & A)経路と(S & B)経路は互いに異なる cell delay / wire delay を持ちます.
  • Sのsignal propagationが2つの経路に同時に到着しません.
  • その短い隙間にOR入力の組み合わせが一瞬変化し、しばらくの間信号のswitchingが発生します。(static hazard / dynamic hazard)

Clock MUXでは、A, Bは通常asynchronous clocksである。AとBの位相関係が固定されていないため、sel遷移が「悪い瞬間」にかかる確率は想像以上に高く、結果として「時々」失敗するシリコンバグになります。


2) Clock Glitchが必要な理由

  1. Pulse widthが短くてもFFがクロックとして認識できる
    クロックツリーのslew/threshold、ライブラリFFの内部パルスフィルタリングにより、"不要なエッジ"が有効に入ることがあります。
  2. Setup/Holdを同時に壊しやすい
    正常なエッジの直前にGlitchが入るとHoldが壊れ、直後に入るとSetupが壊れます。どちらにしても結果はランダムです。
  3. DVFS/Fail-over/Power domain時代には、Clock switchingは日常です

3) Glitch-Free의 핵심 정의:"Glitch 0"ではなく"遷移条件を封印"

Glitch-Free Clock MUXの核心は簡単です。

blockquote>出力クロックを変更している間は、クロックエッジを通過させない
選択信号(Enable)は、クロックの安定した区間でのみ変更されます

GFCMは「シームレスに接続する回路」ではなく、多くの場合、一時停止(pause)を利用する回路です

つまり、グリッチフリーと引き換えに1~2サイクルが失われる可能性があります。 "シームレス"なスイッチングが目標であれば、MUXだけを変えてはいけないし、PLL/clocking architectureレベルでアプローチする必要があります。


4) 가장 널리 쓰이는 구조(정석):"Mutual-Exclusion + Safe-Window Update"

Glitchが前のclockと完全に近い場合、Timing violationが起こります。

なので、このようなGlitchが出ないように、しばらくclock toggleをしばらくしないロジックが必要です。

앞부분과 뒷부분을 보면 MUX랑 같은 구조인데,

  1. 내부에 2단 Synchronizer 있고,
  2. SELECT signal 바뀔 때 반대쪽 clock에 동기화시키는 feedback loop가 있습니다.

最終的に以下のような機能をします。
この"停止"がまさにGlitch-Freeのコストと安定性です




ElectronicspediaチャンネルにGlitchの非常に良い例があり、添付しました。height="113" src="https://www.youtube.com/embed/KBeumQxSyZA?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture;web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" title="グリッチフリークロックマックス|クロックマックス|VLSI|グリッチフリーマックスとは|GFCM|回路">

5) 波形で見る "Glitch vs Glitch-Free" (コアのみ)5) 波形で見る "Glitch vs Glitch-Free"

(1) naive MUX (Glitch発生可能)

図に説明されているように、

Selが0の時はCLK1を出力し、

Selが1の時はCLK2を出力します。

CLK Outの点線のように飛び出している、Designerが望まなかったclock toggleをglitchと呼びます.


6) SDCとCDCの解析では?

Clock MUX出力は「CLK1でもCLK2でもある」。そのため、output pinに対してgenerated clockを2つ重ねて定義するパターンが一般的です。 そして、2つのgenerated clockが同時にアクティブになることができないことをexclusiveで知らせます。

  • GFCM内部のsync FFはCDCの性質です。 そのため、CDC tool(SpyGlass-CDCなど)で機能的な安全性を別に確認します。

7) CTS/PnR 인사이트:GFCMは"論理ブロック"ではなく"Clock Rootデバイス"

GFCMは配置一つで品質が変わります。

  • Clock source(PLL/OSC)の近くに配置する: MUX前後のクロックネットが長くなると、SI/EM/IR-dropの影響が大きくなり、スキュー管理が難しくなります。
  • Select/controlはdataではなくcontrol: fanoutが大きくなると、グリッチフリー構造は「遷移遅延」を増加させます。このようなパスにset_case_analysisを与えた後、Gate level simulationで非常に大きなViolationが見つかる場合があります。
  • CTS との役割分離: GFCM の出力以降が本当の clock tree です。
  • Duty cycle / pulse integrity: 単純な AND/OR gating は duty distortion を作ることができます。RTL で GFCM を作成するよりも、Foundry-qualified cell を使用することをお勧めします。

要約すると、
GFCM はクロックアーキテクチャの一部として扱われ、PnR の「保護対象」です。


8) DFx(Scan/ATPG/Bring-up) 관점:GFCMは"テストの扉"

スキャンでは、通常、シフトクロックキャプチャクロックの要求が異なり、at-speedテストはより厳しいです。ここでGFCMが間違って設計されると、DFxがこのように壊れます。

  • test modeでclock switchingが許可されず、scanが止まる
  • capture区間でpauseが発生し、patternが崩れる
  • reset/test_en切り替え時にglitchが発生し、誤動作する

なので、実務のパターンはだいたいこのような感じです。

  • test_enでtest_clkを直接bypass (上記のRTLのように)
  • または、scan専用のclock muxを別に置いて、function clock muxと分離
    • このようなGlitch Free Clock Muxだけを作る専門家もいます!
    • Glitch-Free Clock MUXを「グリッチフリークロックMUX」とだけ説明すると薄っぺらい。
      現代のSoCでは、GFCMはDVFS/Fail-over/Power domain/DFxを貫通するclocking infrastructureです。
    • この小さなブロックが設計の成熟度を表します。
      • 学生の設計は「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

    내 읽기 보관함

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