Altifigence Academy

42 / 63 · 概念

シフト回路の検証とデータ・valid の整列

対称パターンに隠れる誤りと、valid 信号の 1 サイクルずれを見つけます。

誤りが現れるビット列を選びます

0000 や 1111 だけでは、移動方向の逆転が隠れます。1000 のような非対称パターンや一つだけ 1 の入力で位置を追います。初期状態も全 0 だけだと、初期化経路や保持の誤りの一部を見逃します。

3 ビットレジスタレジスタ 複数ビットの状態を記憶する回路です。このコースの同期式レジスタは、クロックエッジで定められた入力を記憶します。 詳しく見るを初期 000 とし、1,0,0 を入れると 001→010→100 です。逆方向の実装なら 100→010→001 なので、最初のエッジから区別できます。

参照モデルを二つの表現で確認する

Qnext=(2Q+d) mod 2NQ_{next}=(2Q+d)\bmod2^N

この数値モデルと、実際のスライススライス ベクトルから連続するビット範囲を選ぶ演算です。選択範囲が結果の幅とビット順を定めます。 詳しく見る・連結 RTL を有効エッジごとに比較します。N=3 なら八状態と二入力で 16 遷移を全数検査できます。reset と enable の組合せは別に加えます。

下の各列は立上りエッジ立上りエッジ クロックが 0 から 1 に変わる瞬間です。CLK=1 の区間全体を指すレベルとは区別します。 詳しく見るの記録です。入力はエッジ直前、「更新後」の状態は更新直後です。並びはサンプル順で、物理的な伝搬遅延伝搬遅延 入力が変わってから、出力が正しい値に安定するまでの時間です。論理式の等価性と時間特性は別の性質です。 詳しく見るではありません。初期 q=000 です。二つ目のエッジは enable=0 なので、din が変わっても q=001 を保ちます。エッジ数と受入数を別々に数えてください。

enable がなければ状態全体を保持
波形データを表示
波形データ:各文字は一つの区間、ドットは前の状態の保持、p はクロック 1 周期を表します。
信号波形バスの値
エッジ2345E0 → E1 → E2 → E3
enable101.
din10.1
更新後 q2.34001 → 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 が先着したり別データに付いたりします。データとメタデータに同じ受付条件を適用する参照モデルと比較します。

選択はこのブラウザに適用されます。フッターからいつでも変更できます。