TT Lab
はじめる
学ぶ 学習パス コース

ケーブルがこだまする

隣の配線のエッジが作るクロストーク・パルスを分析する

TT Labで続きを見る

目標

集中定数の静電容量結合モデルで、エッジ・結合C・ビクティム線の抵抗の影響を分離します。 前提知識は、Pythonの関数・JSON・ファイル処理、RCの時定数です。目安は85分なので、 60分になる前に、+時間で延長してください(最大180分)。セッションが終了すると、作業の成果物は消えます。

なぜ重要なのか

ピークだけを小さくした波形や、設定だけを変えた報告書が、実際の証拠と一致するかを確認する必要があります。 電圧の極性と、しきい値を超えた滞留時間を保ち、観測した尾から減衰を逆算します。 理想的なR·Cモデルの教育用の比較であり、分布定数のNEXT/FEXT・実物のボードの認証ではありません。

ステップ

  1. mkdir -p /root/capacitive-crosstalkで始め、すべての関数を/root/capacitive-crosstalk/analyze.pyに保存してください。parameters(config)は、tau_nsとratioのオブジェクトを返します。configは、ちょうどrise_ns(0.2/1/2)、coupling_pf(0.2/1/2)、victim_ohm(50/200/1000)の3つのキーのdictです。値はboolではないint/floatで、不正な入力はValueErrorです。Cv=2pFで固定、tau_ns=Rv*(Cv+Cc)*0.001、ratio=Cc/(Cv+Cc)です。入力を変えたり、importのときに出力したりしません。
  2. predict(config,t_ns)は、読み物のg(t−2)−g(t−12)の式で、ビクティム線の電圧Vを返します。時間は、boolではない有限のint/floatで、0–60nsであり、範囲外はValueErrorです。立ち上がりの開始は2ns、立ち下がりの開始は12ns、2つのエッジの長さはrise_nsです。立ち下がりで、前の立ち上がりの減衰の尾が残っている場合も含めてください。
  3. extrema(rows)は、有効な時間が増加する(ns,アグレッサー線V,ビクティム線V)のタプルのリストから、positive_v, positive_ns, negative_v, negative_nsのオブジェクトを返します。positiveはビクティム線の最大値、negativeは最小値で、同じ値なら最初の時間を選びます。入力は空ではなく、0Vのサンプルを含みます。絶対値やアグレッサー線の列で、代わりにしません。
  4. dwell(rows,threshold_v=0.15)は、有効な時間が増加する(ns,アグレッサー線V,ビクティム線V)の表から、|ビクティム線V|>threshold_vである合計の時間nsを返します。各区間の元の符号付きの電圧を線形補間して、±しきい値の交差の両方を考慮してください。しきい値と同じ平らな区間は除外します。threshold_vは、boolではない有限の正の数で、それ以外はValueErrorです。均一な間隔だけを仮定しません。
  5. infer_tau(t1,v1,t2,v2)は、(t2−t1)/ln(v1/v2)をnsで返します。すべてboolではない有限のint/floatで、t1
  6. analyze(folder)は、config.jsonと、提供されるsimulator.read_trace(folder/trace.tsv)を読み、下の戻りの契約を実装します。読んだ行はnsの単位です。各時刻のビクティム線のpredictと、アグレッサー線の線形のエッジの予測を、実際の2つの電圧と比べて、最大絶対誤差を求めます。consistentは、誤差≤0.002Vです。観測した尾の2点は、立ち上がりの終わり+0.5nsと+1.5nsで、infer_tauが拒否したらNoneです。元のデータを修正しません。
  7. campaign(values,folder)は、重複のない設定dictの1–8個のlist全体を事前に検証し、新しいフォルダーで、simulator.capture(cfg,folder/case-NN)とanalyzeを呼び出します。NNは順番どおりの00からです。観測したconfigが要求と異なればValueErrorです。results、すべてのpassedの論理積all_pass、model=lumped_capacitive_coupling、measured=Falseを返し、同じ内容をreport.jsonに保存します。既存のフォルダーは、空でも拒否し、入力のエラーでは、フォルダーも作りません。失敗した条件と、元の4つのファイルを保存してください。

参考

合計の静電容量で時定数を求める

mkdir -p /root/capacitive-crosstalkで始め、すべての関数を/root/capacitive-crosstalk/analyze.pyに保存してください。parameters(config)は、tau_nsとratioのオブジェクトを返します。configは、ちょうどrise_ns(0.2/1/2)、coupling_pf(0.2/1/2)、victim_ohm(50/200/1000)の3つのキーのdictです。値はboolではないint/floatで、不正な入力はValueErrorです。Cv=2pFで固定、tau_ns=Rv*(Cv+Cc)*0.001、ratio=Cc/(Cv+Cc)です。入力を変えたり、importのときに出力したりしません。

ビクティム線の時定数にも、結合Cが入ります。pF×Ωをnsに換算する係数を確認してください。

立ち上がりと立ち下がりのパルスの符号を保つ

predict(config,t_ns)は、読み物のg(t−2)−g(t−12)の式で、ビクティム線の電圧Vを返します。時間は、boolではない有限のint/floatで、0–60nsであり、範囲外はValueErrorです。立ち上がりの開始は2ns、立ち下がりの開始は12ns、2つのエッジの長さはrise_nsです。立ち下がりで、前の立ち上がりの減衰の尾が残っている場合も含めてください。

1つのエッジの応答を関数にしてから、時間のシフト・符号の反転で重ね合わせます。立ち下がりのときに、状態を0に初期化してはいけません。

正と負の極値を別々に読む

extrema(rows)は、有効な時間が増加する(ns,アグレッサー線V,ビクティム線V)のタプルのリストから、positive_v, positive_ns, negative_v, negative_nsのオブジェクトを返します。positiveはビクティム線の最大値、negativeは最小値で、同じ値なら最初の時間を選びます。入力は空ではなく、0Vのサンプルを含みます。絶対値やアグレッサー線の列で、代わりにしません。

立ち下がりの負の値を、正に変えてはいけません。時定数が大きいと、2つのピークの大きさが異なることがあります。

2つのしきい値の間の時間を除外する

dwell(rows,threshold_v=0.15)は、有効な時間が増加する(ns,アグレッサー線V,ビクティム線V)の表から、|ビクティム線V|>threshold_vである合計の時間nsを返します。各区間の元の符号付きの電圧を線形補間して、±しきい値の交差の両方を考慮してください。しきい値と同じ平らな区間は除外します。threshold_vは、boolではない有限の正の数で、それ以外はValueErrorです。均一な間隔だけを仮定しません。

負から正に変わる区間の真ん中は、しきい値より下にあることがあります。補間の前にabsを適用すると、その部分が消えます。

観測した尾から時定数を逆算する

infer_tau(t1,v1,t2,v2)は、(t2−t1)/ln(v1/v2)をnsで返します。すべてboolではない有限のint/floatで、t1

自然対数を使い、時間の差を使います。電圧の倍率や時間の原点を変えても、同じ値でなければなりません。

実際の波形とモデルを照合する

analyze(folder)は、config.jsonと、提供されるsimulator.read_trace(folder/trace.tsv)を読み、下の戻りの契約を実装します。読んだ行はnsの単位です。各時刻のビクティム線のpredictと、アグレッサー線の線形のエッジの予測を、実際の2つの電圧と比べて、最大絶対誤差を求めます。consistentは、誤差≤0.002Vです。観測した尾の2点は、立ち上がりの終わり+0.5nsと+1.5nsで、infer_tauが拒否したらNoneです。元のデータを修正しません。

観測したピーク・滞留は表から、予想する波形は設定から求めます。規格に合う偽の0V波形も、証拠の検査では失敗する必要があります。

緩和方法ごとの証拠の報告書を残す

campaign(values,folder)は、重複のない設定dictの1–8個のlist全体を事前に検証し、新しいフォルダーで、simulator.capture(cfg,folder/case-NN)とanalyzeを呼び出します。NNは順番どおりの00からです。観測したconfigが要求と異なればValueErrorです。results、すべてのpassedの論理積all_pass、model=lumped_capacitive_coupling、measured=Falseを返し、同じ内容をreport.jsonに保存します。既存のフォルダーは、空でも拒否し、入力のエラーでは、フォルダーも作りません。失敗した条件と、元の4つのファイルを保存してください。

基準の条件から、エッジ・結合C・抵抗を1つずつ変えて、原因を比べます。失敗した結果も削除せずに保存します。