23 / 37 · 概念
波形のサンプリング時点と因果関係
組合せの安定化・クロックでの取込み・イベント順を分けて波形を読みます。
レッスンは無料で読めます。受講登録すると進捗を保存できます。
同じ時刻の中にも順序があります
波形上で信号が同じタイムスタンプに変わって見えても、原因なしに同時変化したわけではありません。イベント駆動 RTL シミュレータでは、アクティブイベントやノンブロッキングノンブロッキング代入 順序 RTL で <= と書く代入です。右辺を評価して更新を予約するので、同じエッジのレジスタが更新前の状態に基づいて計算できます。 詳しく見る更新などの処理後に値が安定します。実素子では clock-to-Q と組合せ伝搬遅延伝搬遅延 入力が変わってから、出力が正しい値に安定するまでの時間です。論理式の等価性と時間特性は別の性質です。 詳しく見るを経て変わります。二つのモデルを区別して解釈します。
この実習では、入力適用 → 組合せ評価 → 立上りエッジ立上りエッジ クロックが 0 から 1 に変わる瞬間です。CLK=1 の区間全体を指すレベルとは区別します。 詳しく見るで取込み → 状態更新を基準に予測表を作ります。ツールの入力適用時点と結果記録時点を合わせて確認してください。
実際のシミュレータのイベントスケジュールと出力記録時点が重要です。下の順序は予測表で区別する四段階であり、四つのクロック周期を意味しません。
- 入力を駆動: a・b・sel を変更
- 組合せ論理を評価: y = sel ? b : a
- 立上りエッジ: エッジ直前の y を取り込む
- 更新後に観測: sampled_y を比較
まず独立した期待値を計算します
各入力組の y を計算し、その値がどのエッジで q に反映されるかを列で分けます。実結果と期待結果が最初に違う行を探すと、原因が入力適用・選択関数・記憶動作のどこにあるか絞れます。
遷移と安定状態を区別する
選択信号が変わる間、両データが同じなら最終出力は同じはずですが、内部経路の遅延差で短いグリッチが生じることがあります。逆に、結果が変わる正常な遷移をすべてグリッチと呼んではいけません。論理波形の比較と物理タイミング解析は、異なる問いに答えます。
一般的なテストベンチで DUT と同じ立上りエッジに刺激を変え、直ちに値を読むと、レースが生じる場合があります。刺激の駆動と観測を分けるか、clocking block など明確な同期方法を使います。提供する DDS 実習は入力 JSON とツールの単一クロック規則を使うため、任意の #delay テストベンチを追加しません。
自分で考えてみましょう
波形の最終 y と sampled_y がともに 1 なら、途中のサイクルも正しいと結論できますか。
解説を見る
できません。選択を逆につないだり、1 サイクル遅く記憶したりしても、最後の入力が a=b=1 なら同じ最終値になります。各エッジの期待値と比べ、a と b が異なる区間の sel 遷移を必ず含めます。