高速シリアルチャネルシミュレーション
理論と物理
チャネルシミュレーションとは
先生、チャネルシミュレーションって何をシミュレーションするんですか?
ざっくり言うと、ICパッケージ→PCB配線→コネクタ→ケーブル→コネクタ→PCB→ICという送受信間の伝送路全体をSパラメータで接続して、等化器込みのアイダイアグラムを予測するシミュレーションだ。
伝送路全体をまとめてシミュレーションするんですか? パーツごとに見るんじゃなく?
そう。例えばPCIe 6.0は64GT/sのPAM4信号で、ナイキスト周波数が16GHz。チャネルの挿入損失が30dB以上になることもある。これをCTLE+DFEで補償する設計は、シミュレーションなしでは不可能なんだ。各パーツのSパラメータを「カスケード接続」して、送信等化器→チャネル→受信等化器の全体を一貫して解く。
30dBって、信号が元の 1/30 くらいまで弱くなるってことですよね。それをソフトウェアで復元するって、すごい世界ですね…。
正確には電圧振幅比で $10^{-30/20} \approx 1/31.6$ だね。ナイキスト周波数での信号がほぼ消えている状態から、等化器で復元する。だからこそ「等化器込みで設計を検証する」チャネルシミュレーションが必須になるわけだ。
チャネルモデルの構成とカスケード接続
伝送路全体を「カスケード接続」するって、具体的にはどうやるんですか?
各構成要素を2ポートネットワーク(Sパラメータ)としてモデル化し、それらを直列に接続する。例えばサーバーのバックプレーンだと、こんな構成になる:
| 要素 | 典型的な挿入損失 @16GHz | Sパラモデル源 |
|---|---|---|
| Tx ICパッケージ | 2〜4 dB | 半導体ベンダ提供(IBIS-AMI) |
| PCBビア+配線(送信側) | 3〜8 dB | 3D EM抽出(HFSS等) |
| バックプレーンコネクタ | 1〜3 dB | コネクタベンダ提供 or 実測 |
| バックプレーン配線 | 8〜15 dB | 2D EM抽出+伝送線路モデル |
| PCBビア+配線(受信側) | 3〜8 dB | 3D EM抽出 |
| Rx ICパッケージ | 2〜4 dB | 半導体ベンダ提供(IBIS-AMI) |
それぞれ別のツールでSパラを抽出して、最後に全部つなげるわけですね。つなげる計算は単純な掛け算ですか?
Sパラメータのままだと掛け算にならない。Tパラメータ(伝送行列)に変換すれば行列の積でカスケードできる。2ポートの場合:
SパラメータからTパラメータへの変換式はこうだ:
なるほど、Tパラに変換→掛け算→Sパラに戻す、という3ステップですね。ツールが自動でやってくれるんですか?
そう、ADSやSigrityではTouchstoneファイル(.s2p/.s4p)を読み込んでカスケード接続を自動計算してくれる。ただし注意点がある——各Sパラメータの周波数点が揃っていないときは補間が必要で、この補間精度が結果に影響することがある。特に高周波端の外挿は要注意だ。
Sパラメータの数理
チャネルシミュレーションで使うSパラメータって、具体的にどの成分を見るんですか? S11とかS21とかいっぱいあって混乱します。
チャネルシミュレーションで最も重要なのは以下の3つだ:
- $S_{21}$(挿入損失, Insertion Loss):信号がどれだけ通過するか。周波数が上がるほど減衰する。チャネルの「難しさ」を直接表す
- $S_{11}$(反射損失, Return Loss):入力ポートでどれだけ反射するか。インピーダンス不整合の指標。$|S_{11}| < -15\text{dB}$ が目安
- $S_{\text{NEXT/FEXT}}$(クロストーク):隣接チャネルからの干渉。多ポートSパラで評価
チャネル全体の伝達関数って、結局どう表現されるんですか?
カスケード接続後のチャネル全体を1つの伝達関数 $H_{\text{ch}}(f)$ として表すと、こうなる:
等化器を含めたエンドツーエンドの伝達関数は:
DFEは周波数領域では表現できない非線形処理なので、ここには入らない。DFEは時間領域で別途計算するんだ。
CTLE・DFE等化器の原理
CTLEとDFEって名前はよく聞くんですけど、何が違うんですか? どっちも「等化器」ですよね?
根本的に違うのは、CTLEは線形フィルタでDFEは非線形フィードバックという点だ。
CTLE(Continuous Time Linear Equalizer)は、チャネルで減衰した高周波成分を「持ち上げる」ハイパスフィルタだ。伝達関数はこんな形:
$f_z$ はゼロ周波数(ブースト開始点)、$f_p$ はポール周波数(ブースト上限)。ゼロとポールの間の周波数帯で高周波ゲインが上がる。実務では複数段のCTLEを使い、10〜15dBのブーストをかけることが多い。
高周波を持ち上げるってことは、ノイズも一緒に増幅しちゃいますよね?
まさにそこがCTLEの弱点。CTLEはノイズ増幅(noise enhancement)を伴う。そこで登場するのがDFE(Decision Feedback Equalizer)だ。DFEは過去に判定済みのビットを使って、ポストカーソルISI(符号間干渉)を打ち消す:
$\hat{d}[n-k]$ は過去に判定したビット値、$c_k$ がDFEタップ係数だ。重要なのは、DFEはノイズを増幅しないこと。判定結果($\pm 1$)を使うので、信号成分だけを正確にキャンセルできる。PCIe 6.0ではDFEタップ数が10〜24にもなる。
え、でも過去の判定が間違ってたらどうなるんですか? エラーが連鎖しそう…。
いい質問だ。それが「エラー伝搬(error propagation)」問題で、DFEの本質的な弱点だ。判定ミスが起きると後続のISIキャンセルも間違え、バースト的にエラーが続くことがある。実際のSerDesではFEC(Forward Error Correction)がDFEのエラー伝搬をカバーしている。チャネルシミュレーションではこのエラー伝搬を正しくモデル化するかどうかで、BER予測の精度が大きく変わるんだ。
実務ではTx-FFE(Feed-Forward Equalizer)も使う。これは送信側で信号を「事前歪み」させる方式で、FIRフィルタとして実装される:
プリカーソルタップ($a_{-1}$等)とポストカーソルタップ($a_1, a_2$等)でISIを予め打ち消す。PCIe 5.0では3タップ、PCIe 6.0では最大10タップのTx-FFEが仕様で規定されている。
統計的アイダイアグラム
「統計的アイ」ってよく聞くんですが、普通のアイダイアグラムと何が違うんですか?
通常のアイダイアグラムは実際のビット列を流して波形を重ね書きしたものだ。これを「ビットバイビット(bit-by-bit)シミュレーション」と呼ぶ。直感的だけど、$10^{-15}$ のBERを検証するには$10^{17}$ビット以上流す必要があり、64GT/sでも約40分以上かかる。
統計的アイ解析は、パルス応答から確率分布を計算して、BER等高線を直接求める方法だ。
パルス応答からどうやってBERを計算するんですか?
ステップ応答 $s(t)$ を微分してパルス応答 $p(t)$ を求め、サンプリング時刻でのパルス応答値を抽出する。メインカーソル $p_0$ と、その前後の値 $p_{-k}$(プリカーソルISI)、$p_k$(ポストカーソルISI)が得られる。
各ISI項がランダムビット($\pm 1$)で重み付けされるので、全ISIの合計は離散確率分布になる。NRZでN個のISI項があるとき、$2^N$ 通りの組み合わせが存在する。この確率分布にノイズのガウス分布を畳み込めば、各電圧・時刻でのBERが直接得られる:
$P_i$ はISI組み合わせ $i$ の出現確率、$V_i(t)$ はその組み合わせでの受信電圧、$\sigma_n$ はノイズの標準偏差。Q関数は正規分布の裾確率だ。この計算は数秒で終わるから、$10^{-15}$ レベルの超低BERも即座に評価できる。
ビットバイビットで40分かかるのが数秒って、すごい差ですね! じゃあ統計的アイだけでいいんですか?
統計的アイは線形チャネル+線形等化器の範囲では非常に正確だ。ただしDFEのエラー伝搬や、PAM4でのスライサーしきい値の非線形効果は近似になる。実務では統計的アイで大量のデザインスペース探索を行い、最終候補をビットバイビットで精密検証するのが一般的だね。
COM(Channel Operating Margin)
COM(Channel Operating Margin)って何ですか? 「COMが3dB以上なら合格」とか聞くんですけど…。
COMはIEEE 802.3で定義されたチャネル品質の統一指標だ。等化後のアイ開口をノイズ・ジッタ・クロストークで規格化した値で、dB単位で表す:
$A_{\text{signal}}$ はDFE+CTLE等化後のアイ開口の半分、$A_{\text{noise}}$ は全ノイズ・ジッタ・残留ISI・クロストークの実効値。COM > 3dBが一般的な合格基準で、これはターゲットBER($10^{-15}$等)を十分なマージンで満たすことを意味する。
COMの計算って、具体的にはどのパラメータを入力するんですか?
COM計算の入力はかなり多い。主要なものだけでもこれだけある:
| カテゴリ | パラメータ | 典型値(100GBASE-KR4) |
|---|---|---|
| チャネル | Thru S-parameter(.s4p) | 周波数範囲: DC〜ナイキスト×2 |
| クロストーク | FEXT/NEXT S-parameter | アグレッサ全チャネル分 |
| Tx-FFE | タップ数、タップ制約 | 3タップ、$c_{-1}+c_0+c_1 = 1$ |
| CTLE | DC gain, ピーク周波数 | 0〜12 dBブースト |
| DFE | タップ数、タップ制約 | 5〜14タップ |
| ノイズ | $\sigma_{\text{Tx}}, \sigma_{\text{Rx}}$ | 規格書で規定(mV rms) |
| ジッタ | DJ, RJ | DJ: 0.01UI, RJ: 0.01UI rms |
パラメータの数がすごいですね…。これを手計算するのは絶対無理そうです。
だからこそ自動化が重要なんだ。IEEE 802.3の委員会が公式のMATLABスクリプト(COM計算コード)を公開していて、これが事実上の業界標準になっている。各ベンダツールもこのアルゴリズムを実装している。ポイントは、COMの計算ではTx-FFEとCTLEのパラメータを自動最適化して最良のCOM値を探すという点だ。
COM計算の内部ステップ(詳細)
- チャネルSパラメータからパルス応答を計算(IFFT)
- Tx-FFEタップ組み合わせを列挙
- 各Tx-FFE設定に対してCTLEブースト値をスイープ
- CTLE後のパルス応答を計算し、DFEタップ係数を最適化
- 残留ISI、クロストーク、ノイズ、ジッタの影響を確率的に合算
- アイ開口を計算し、COM値を算出
- 全組み合わせ中の最大COMを報告
数値解法と実装
パルス応答の算出
統計的アイ解析の出発点となるパルス応答って、具体的にはどうやって計算するんですか?
手順は3段階だ:
- 周波数領域で伝達関数を構築:$H(f) = H_{\text{Tx-FFE}}(f) \cdot S_{21,\text{ch}}(f) \cdot H_{\text{CTLE}}(f)$
- IFFT(逆高速フーリエ変換)でインパルス応答 $h(t)$ を求める
- インパルス応答を1UI(Unit Interval)幅でたたみ込み積分してパルス応答 $p(t)$ を得る
あるいは、ステップ応答 $s(t)$ を直接IFFTで求めて、$p(t) = s(t) - s(t - T_{\text{UI}})$ としてもよい。
IFFTするときに気をつけるポイントってありますか?
3つある:
- 因果性の確保:$H(f)$ をIFFTしたときに $t < 0$ で応答がゼロにならなければ因果性違反。Sパラメータがパッシビティを満たしていないと起きやすい
- 周波数分解能:$\Delta f$ が粗いとリンギングが出る。$\Delta f \leq 1/(4 \cdot N_{\text{UI}} \cdot T_{\text{UI}})$ が目安
- DC成分:Touchstoneファイルの最低周波数が 0Hz でないことが多い。DC外挿の方法(線形、定数)で結果が変わる
ISI計算とカーソル最適化
パルス応答が得られたら、ISIはどうやって計算するんですか?
パルス応答 $p(t)$ をUI間隔でサンプリングして、カーソル位置を基準にISI項を抽出する:
- メインカーソル $h_0$:最大値を取るサンプリング点。これが「信号成分」
- プリカーソル $h_{-1}, h_{-2}, \ldots$:メインカーソルより前のISI。Tx-FFEで補償
- ポストカーソル $h_1, h_2, \ldots$:メインカーソルより後のISI。DFEで補償
DFE補償後の残留ISIは:
DFEタップ数を超えた遠方のポストカーソルISIは補償されずに残る。だからチャネルのインパルス応答が長い(反射が多い)と、DFEタップを増やしても限界がある。
IBIS-AMIモデルの仕組み
IBIS-AMIモデルって、チャネルシミュレーションの中でどういう役割なんですか?
IBIS-AMI(Algorithmic Modeling Interface)は、半導体ベンダがSerDesのTx/Rxアルゴリズムを、IPを開示せずに提供するための業界標準だ。2つの部分から成る:
- IBISモデル:I/Oバッファのアナログ電気特性(V-Iカーブ、C-Vカーブ)を記述。SPICEモデルの代替
- AMIモデル:等化器のアルゴリズムをDLL/SO(共有ライブラリ)として提供。ブラックボックス
AMIモデルには2種類のコールバック関数があるって聞いたんですけど…。
よく勉強してるね。AMIモデルは以下の3つのAPI関数を持つ:
- AMI_Init:初期化。パラメータ設定とインパルス応答の線形処理(CTLE相当)を実行
- AMI_GetWave:ビットバイビット処理。時間領域の波形を入力→等化後の波形を出力(DFE、CDR等の非線形処理)
- AMI_Close:終了処理
統計的アイ解析では AMI_Init だけを呼び、ビットバイビットでは AMI_GetWave も呼ぶ。だからAMIモデルが AMI_GetWave をサポートしていない場合、ビットバイビットシミュレーションはできない。
時間領域 vs 統計的解析
結局、時間領域シミュレーションと統計的アイ解析はどう使い分けるんですか?
| 項目 | 統計的アイ | ビットバイビット(時間領域) |
|---|---|---|
| 計算速度 | 秒〜分 | 分〜時間 |
| BER精度 | $10^{-18}$ まで直接計算可 | 流すビット数に依存 |
| DFEモデル精度 | 近似(エラー伝搬を含まない) | 正確(エラー伝搬を含む) |
| 非線形効果 | 限定的 | 完全にモデル化可能 |
| PAM4対応 | 可能だが近似精度に注意 | 正確 |
| 適用場面 | デザインスペース探索、スクリーニング | 最終検証、相関確認 |
つまり統計的アイで「候補を絞って」、時間領域で「最終確認する」という2段構えですね。
その通り。実務では統計的アイで数百〜数千のチャネル構成をスイープして合格候補を絞り込み、最終的にビットバイビットで数ケースだけ精密検証する。この「漏斗型」のワークフローが業界標準だ。
IBIS-AMIモデルの裏話——半導体ベンダの本音
IBIS-AMIモデルは半導体ベンダにとって「必要悪」だ。設計IPを守りつつ顧客にシミュレーション環境を提供できる一方、AMIモデルのバグはデバッグが極めて困難。DLLはブラックボックスなので、出力が間違っていても内部を見られない。ベンダのサポートチームに「御社のAMIモデルで10dBチャネルのアイが開きません」と問い合わせると、往々にして「弊社のリファレンスチャネルで再現してください」と返ってくる。実務エンジニアは複数ベンダのAMIモデルを組み合わせて使うため、問題発生時に「どっちのモデルが悪いのか」の切り分けが最大の課題になることが多い。
実践ガイド
解析ワークフロー
チャネルシミュレーションの実務的な手順を教えてください。最初の一歩から。
典型的なワークフローは以下の通りだ:
- チャネルモデル収集:各構成要素のTouchstoneファイル(.s2p/.s4p)を収集。IC vendor→パッケージ設計者→PCB設計者→コネクタベンダから入手
- Sパラメータ品質チェック:パッシビティ、因果性、相反性の検証。問題があれば補正ツールで修正
- カスケード接続:全Sパラをチャネルシミュレータに読み込み、ポートマッピングを設定
- IBIS-AMIモデル設定:Tx/RxのAMIモデルを読み込み、等化器パラメータを設定
- 統計的アイ解析:アイダイアグラムとBER等高線を確認。COM値を計算
- パラメータスイープ:プロセスバラツキ、温度、電圧の変動をモンテカルロでスイープ
- 最終検証:ワーストケースでビットバイビットシミュレーション
Sパラメータ品質チェック
Sパラメータの「品質チェック」って、具体的に何を見るんですか?
チャネルシミュレーションの結果は入力Sパラメータの品質に完全に依存する。ゴミを入れたらゴミしか出てこない。チェック項目は4つ:
| チェック項目 | 物理的意味 | 判定基準 | 違反時の影響 |
|---|---|---|---|
| パッシビティ | ネットワークがエネルギーを生成しない | 全固有値 $\leq 1$ | シミュレーション発散・非物理的ゲイン |
| 因果性 | 出力が入力より先に生じない | 群遅延が全周波数で正 | IFFTでのリンギング・非因果応答 |
| 相反性 | $S_{ij} = S_{ji}$(パッシブ要素) | $|S_{12} - S_{21}| < -40\text{dB}$ | カスケード接続時のポートミスマッチ |
| DC連続性 | DC損失が物理的に妥当 | $S_{21}(0) \approx 0\text{dB}$(低損失) | パルス応答のDCオフセット |
違反してたらどうするんですか? 測定し直し?
まずはツールで自動補正を試みる。Keysight ADSの「S-parameter Checker」やAnsys Circuit Designerの「Passivity Enforcement」機能が使える。補正アルゴリズムとしては、Hammerstein-Wiener法やポート固有値クリッピング法がある。ただし、大幅な補正が必要な場合は元のEMシミュレーションか測定をやり直した方がいい。パッシビティ違反が-0.01dB程度なら補正で済むが、-1dBを超えるようなら元データに問題がある。
等化器パラメータの最適化
Tx-FFEのタップ係数やCTLEのブースト値って、どうやって最適値を決めるんですか?
実務では3段階で最適化するのが一般的だ:
- 粗探索(Grid Search):Tx-FFEタップの全組み合わせ × CTLEブースト値(0〜15dB、1dBステップ)を総当たり。各設定でCOMまたはアイ開口を計算
- 精密探索:粗探索で見つけた上位候補の周辺をさらに細かくスイープ
- アダプティブ最適化:実チップと同じアルゴリズム(LMS適応等)でDFEタップを収束させる
COM計算では上記を自動で行い、「最良のCOM値」を報告する。ただし実チップの等化器が全パラメータ空間を探索できるとは限らないので、チップ仕様の制約を正しく反映することが重要だ。
クロストークの扱い
クロストークって、チャネルシミュレーションではどう扱うんですか? 隣のチャネルが全部影響するんですよね?
クロストークは2種類ある:
- NEXT(Near-End Crosstalk):送信側に戻ってくるクロストーク。全二重通信で問題になる
- FEXT(Far-End Crosstalk):受信側に到達するクロストーク。チャネルマージンを直接減らす
多チャネルシミュレーションでは、ビクティム(被害者)チャネルの周囲にあるアグレッサ(加害者)チャネルすべてのSパラメータが必要になる。16ポート以上の大規模Touchstoneファイル(.s16p等)を使うことが多い。
アグレッサのビットパターンって、どうやって決めるんですか? 全組み合わせは不可能ですよね?
統計的アイ解析では、クロストークの影響を「パワー加算」で近似するのが一般的だ。各アグレッサからのクロストーク電力を二乗加算して等価ノイズとして扱う。COM計算でもこの方式を採用している。より正確にやりたい場合は、全アグレッサにランダムビットを流すビットバイビットシミュレーションが必要になるが、計算時間は桁違いに増える。
品質チェックの心得
チャネルシミュレーションは「料理」に似ている。どんなに高級なオーブン(シミュレータ)を使っても、食材(Sパラメータ)が腐っていれば美味しい料理(正確な結果)にはならない。実務でシミュレーション結果が測定と合わない場合、原因の8割はSパラメータの品質問題だ。まず食材をチェックすることを習慣にしよう。
ソフトウェア比較
主要ツール比較
チャネルシミュレーションに使える主要なツールを教えてください。
| ツール | ベンダ | 強み | IBIS-AMI対応 |
|---|---|---|---|
| Keysight ADS (Channel Simulator) | Keysight Technologies | 統計的アイ・IBIS-AMIフルフロー・COM自動計算 | 完全 |
| Cadence Sigrity SystemSI | Cadence Design Systems | Allegro PCB連携・ECADフロー統合・大規模チャネル | 完全 |
| Ansys SIwave + Twin Builder | Ansys Inc. | HFSS連携・3D EM-回路コシミュレーション | 完全 |
| Synopsys HSPICE + VCS | Synopsys | SPICE精度・SerDes IPとの直接連携 | 完全 |
| Zuken SI Verify | Zuken | CR-8000連携・日本企業向けサポート | 対応 |
ADSとSigrityが2大ツールってことですか? どっちがいいんですか?
使い分けの基準は「ワークフロー」だ。Cadence AllegroでPCB設計しているならSigrityがシームレスに連携できる。チップベンダや独立したSI解析チームで多種多様なチャネルを解析するならADSの柔軟性が活きる。Ansysはem抽出から回路解析まで一気通貫できるのが強みで、HFSS→SIwave→Twin Builderの連携が売りだ。
オープンソース・無償ツール
商用ツールは高いので、学生や個人で使える無償ツールってありますか?
いくつかある:
- IEEE 802.3 COM MATLABスクリプト:IEEE公式のCOM計算コード。MATLABが必要だが、これが業界のリファレンス実装
- skrf(Python):Sパラメータの読み込み・操作・カスケード接続ができるオープンソースライブラリ。統計的アイ解析は自分で実装する必要あり
- PyBERT:Pythonベースのオープンソースチャネルシミュレータ。IBIS-AMI非対応だが、基本的な統計的アイ解析が可能
- OpenEMS:オープンソース電磁場ソルバー。Sパラメータ抽出までは可能だが、チャネルシミュレーション機能はない
Keysight ADS vs Cadence Sigrity——2大ツールの棲み分け
チャネルシミュレーションの世界はKeysight ADSとCadence Sigrityが二大巨頭だ。ADSはIBIS-AMI対応・統計的アイ解析・COM計算・AMIモデル作成ツール(SerDes Toolbox)まで一体化しており、シリアルリンク設計のフルフロー環境を提供する。Sigrityは PCBレイアウトから直接Sパラメータを抽出してシミュレーション連携するECADフローが強みで、Cadenceツールチェーン(Allegro/OrCAD)ユーザーに圧倒的に普及している。Ansys SIwave + Twin Builderも近年IBIS-AMI対応を強化し、三つ巴の競争が続いている。
先端技術
PAM4とチャネル要求の激化
PAM4になるとチャネルシミュレーションはどう変わるんですか?
PAM4はNRZ(PAM2)に比べて信号レベルが4値になるから、アイ開口が約 $1/3$ に狭くなる。つまり同じチャネル損失でもSNRが約9.5dB悪化する。これがPCIe 5.0(NRZ 32GT/s)からPCIe 6.0(PAM4 64GT/s)への世代交代で、チャネルシミュレーションの重要性が飛躍的に高まった理由だ。
9.5dBも不利って、かなり厳しいですね。それをどうやって補うんですか?
3つのアプローチの組み合わせだ:
- 等化器の高度化:DFEタップ数の増加(14→24タップ)、Tx-FFEタップ数の増加(3→10タップ)
- FEC(Forward Error Correction):PAM4世代ではRS-FEC(Reed-Solomon)が必須。Raw BER $10^{-4}$ 程度をFECで $10^{-15}$ まで改善
- チャネルの低損失化:低誘電体PCB材料(Megtron6→Megtron7→Megtron8)、より短い配線長、低損失コネクタ
チャネルシミュレーションではFEC後のBERまで含めてマージンを評価するようになっている。
機械学習によるチャネル最適化
最近はAIや機械学習もチャネルシミュレーションに使われるって聞いたんですが…。
2つの方向で研究が進んでいる:
- サロゲートモデル:チャネルの設計パラメータ(配線幅・間隔・ビア形状・スタブ長等)からCOM値を直接予測するニューラルネットを学習させる。1回のCOM計算に数分かかるところを、推論で数ミリ秒に短縮。何万通りものレイアウトバリエーションを瞬時に評価できる
- 等化器の適応最適化:強化学習でCTLE/DFEパラメータを実チャネル条件にリアルタイム適応させる。特にデータセンターのリンクトレーニング高速化が期待されている
Co-simulation — 電磁場と回路の連成
Sパラメータだけでは足りない場面ってあるんですか?
ある。特に以下のケースでは、3D電磁場シミュレーションと回路シミュレーションの連成(co-simulation)が必要になる:
- 非線形チャネル効果:パワーデリバリーネットワーク(PDN)のSSN(同時スイッチングノイズ)がSerDes電源に与える影響
- EMI/放射解析:高速信号の漏洩電磁波がEMC規格を満たすかの検証
- チップ-パッケージ-ボード統合解析:ICダイ内部の配線寄生からPCBコネクタまでを一貫して解析
Ansys HFSS→SIwave→Twin Builder、Cadence Clarity→Sigrity→Virtuosoなどの連成フローが各ベンダから提供されている。
トラブルシューティング
アイが開かない
シミュレーションしたらアイが全く開かないんです。COMもマイナスで…。
パニックにならず、以下の順序でチェックしよう:
| チェック項目 | よくある原因 | 対策 |
|---|---|---|
| Sパラメータのパッシビティ | EM抽出時のメッシュ不足・ポート設定ミス | パッシビティ強制補正 or 再抽出 |
| 周波数範囲 | ナイキスト周波数の2倍以上カバーしていない | EM解析の周波数範囲を拡大 |
| 等化器設定 | CTLE/DFEが無効になっている、タップ数が不足 | 等化器を有効化、タップ数を増加 |
| クロストーク | 異常に大きいクロストークが含まれている | ポートマッピングの確認、クロストーク源の特定 |
| インピーダンス不整合 | コネクタ部やビアでの大きな反射 | TDR確認、ビア設計の見直し |
一番多い原因って何ですか?
実務で最も多いのはSパラメータの品質問題だ。次に多いのがポートマッピングの間違い。差動ペアのP/Nが入れ替わっていたり、マルチポートファイルでビクティムとアグレッサのポート番号を間違えていたり。地味だけど、まずはデータの入り口を疑うのが鉄則だ。
Sパラメータの品質問題
Sパラメータのパッシビティ違反って、何が起きるんですか? 具体的な症状を教えてください。
パッシビティ違反があると:
- 時間領域シミュレーションで波形が発散する(振幅が指数関数的に増大)
- 統計的アイ解析でアイ開口が非物理的に大きくなる(ゲインが生じている)
- 因果性違反があるとパルス応答に$t < 0$の成分が現れる(未来を予測する物理的に不可能な応答)
対策としては、Keysight ADSの「S-Parameter Passivity Check」やAnsys Circuitの「Enforcement」機能を使う。skrf(Python)でもパッシビティチェックが可能だ。
IBIS-AMIモデルの不整合
IBIS-AMIモデルで問題が起きるケースってありますか?
よくあるトラブルを挙げるよ:
| 症状 | 原因 | 対策 |
|---|---|---|
| AMIモデルがロードできない | 32bit/64bit不一致、OS非対応 | ベンダにプラットフォーム対応版を要求 |
| Init結果とGetWave結果が大きく乖離 | AMI_Initが線形近似のみ提供 | ビットバイビットの結果を優先 |
| DFEタップが発散する | AMIモデルのアダプテーションバグ | 外部DFE設定で上書き、ベンダに報告 |
| 異なるシミュレータで結果が合わない | AMIパラメータの解釈差異 | IEEE IBIS-AMI仕様書と照合 |
ベンダのAMIモデルにバグがあるケースって本当にあるんですか?
ある。残念ながら珍しくない。特にリリース初期のAMIモデルは要注意だ。対策としては、(1)シンプルなチャネル(理論値が分かる損失のみ)で結果を検証する、(2)同じAMIモデルを複数のシミュレータで動かして結果を比較する、(3)ベンダにリリースノートやバグフィックス履歴を確認する。「AMIモデルはブラックボックスだが、検証は自分の責任」というのが現場の常識だ。
チャネルシミュレーションでよくある致命的ミス3選
- 「カタログ値」のSパラを使う——コネクタやケーブルのカタログ値は標準条件での代表値。ロット間バラツキ、温度変動、エージング劣化を反映していない。必ず実測Sパラメータか、ワーストケースモデルを使うこと
- 差動ペアのP/N入れ替え——Touchstoneファイルのポート番号が設計者の意図と逆になっていることがある。TDRでインピーダンスプロファイルを確認し、既知の構造と一致するかチェック
- 等化器設定の未確認——シミュレータのデフォルト設定でCTLE=オフ、DFE=0タップになっていることがある。結果として「等化器なしのアイ」を見て「リンクが通らない」と慌てるケース。設定画面の全パラメータを確認する習慣をつけよう
なった
詳しく
報告