42 / 63 · 概念
シフト回路の検証とデータ・valid の整列
対称パターンに隠れる誤りと、valid 信号の 1 サイクルずれを見つけます。
レッスンは無料で読めます。受講登録すると進捗を保存できます。
誤りが現れるビット列を選びます
0000 や 1111 だけでは、移動方向の逆転が隠れます。1000 のような非対称パターンや一つだけ 1 の入力で位置を追います。初期状態も全 0 だけだと、初期化経路や保持の誤りの一部を見逃します。
3 ビットレジスタレジスタ 複数ビットの状態を記憶する回路です。このコースの同期式レジスタは、クロックエッジで定められた入力を記憶します。 詳しく見るを初期 000 とし、1,0,0 を入れると 001→010→100 です。逆方向の実装なら 100→010→001 なので、最初のエッジから区別できます。
参照モデルを二つの表現で確認する
この数値モデルと、実際のスライススライス ベクトルから連続するビット範囲を選ぶ演算です。選択範囲が結果の幅とビット順を定めます。 詳しく見る・連結 RTL を有効エッジごとに比較します。N=3 なら八状態と二入力で 16 遷移を全数検査できます。reset と enable の組合せは別に加えます。
下の各列は立上りエッジ立上りエッジ クロックが 0 から 1 に変わる瞬間です。CLK=1 の区間全体を指すレベルとは区別します。 詳しく見るの記録です。入力はエッジ直前、「更新後」の状態は更新直後です。並びはサンプル順で、物理的な伝搬遅延伝搬遅延 入力が変わってから、出力が正しい値に安定するまでの時間です。論理式の等価性と時間特性は別の性質です。 詳しく見るではありません。初期 q=000 です。二つ目のエッジは enable=0 なので、din が変わっても q=001 を保ちます。エッジ数と受入数を別々に数えてください。
波形データを表示
| 信号 | 波形 | バスの値 |
|---|---|---|
| エッジ | 2345 | E0 → E1 → E2 → E3 |
| enable | 101. | |
| din | 10.1 | |
| 更新後 q | 2.34 | 001 → 010 → 101 |
波形を再現します。din=1 で一エッジ進めて 001 にします。enable=0、din=0 でさらに一エッジ進めると 001 を保持します。enable を戻して din=0,1 を順に与えると 010,101 です。このモデルはデータレジスタだけを扱うので、valid も同じ enable で止める必要がある点は、次節で別に確認します。
同期 reset は enable より優先されます。enable=0 なら保持中の値を維持します。 q=000; q_next = (2q + din) mod 8
valid もデータパスの一部です
データだけ止まり valid が進んだり、データが進むのに valid が止まったりすると、出力側は誤ったサンプルを消費します。「出力ビットが正しい」という検証だけでは、インターフェース全体が正しいとは言えません。
| テスト | 期待動作 |
|---|---|
| 正常入力が連続 | ビット順と固定の有効遅延が一致 |
| 途中で enable=0 | データと valid を一緒に保持 |
| 途中で reset | 以前のフレームの有効状態を消去 |
| 新フレームが連続 | 前フレームの終端と次フレームの先頭を区別 |
失敗解析では入力の受入番号も記録すると、実クロック番号と混同しません。フレーム境界を含む最小反例を残す方が、長い波形全体を繰り返し見るより有効です。
自分で考えてみましょう
データレジスタは enable=1 のときだけ移動しますが、valid 遅延線は毎クロック移動します。どの入力で最も簡単に誤りを示せますか。
解説を見る
異なる二データの間に enable=0 の停止エッジを入れます。valid が先着したり別データに付いたりします。データとメタデータに同じ受付条件を適用する参照モデルと比較します。