組み込み機器・ハードウェアの設計開発から装置製作まで社内一貫対応!

組み込み機器・ハードウェア設計製作.com
組み込み機器・ハードウェア設計製作.com

produced by株式会社アイディアイ

設計のポイント

verilog記述のポイント:casex・casezの多用を避ける

設計内容分類FPGA

実現したい仕様・課題

casex・casezはワイルドカード付きのcase比較を可能にしますが、比較対象の不定値(x)やハイインピーダンス(z)まで「一致」と判定してしまうため、シミュレーションでバグが隠蔽され、合成結果との不一致を生むことがあります。安全な条件分岐の書き方を確立したいというのが課題です。

設計のポイント

casexは比較においてxとzの両方をドントケア(無視)として扱うため、信号に混入した不定値xが「どの項目にも一致してしまう」危険があります。本来エラーとして検出されるべき不定値伝播が、シミュレーション上は正常な分岐として処理され、バグの発見が遅れる原因になります。casezはzのみをドントケアとするためcasexより安全ですが、それでも比較値の?(z)指定と実信号のzを区別できない点は同様です。原則として通常のcase文を使用し、ドントケア比較が本当に必要な場面(プライオリティエンコーダやアドレスデコードでの上位ビット一致判定など)に限ってcasezを?表記とともに用いる、という方針を推奨します。優先順位付きの判定であれば、if-else連鎖やcasezの項目順で優先度を表現し、その意図をコメントで明示します。いずれの場合もdefault句で全条件の出力を確定させることは変わりません。SystemVerilogが使える環境であれば、case inside やunique/priority修飾子により、意図をより安全に表現できます。

【コード例】
// casezの限定的な使用例(プライオリティエンコーダ)
always @(*) begin
casez (req)
4’b1???: grant = 4’b1000; // 最上位を優先
4’b01??: grant = 4’b0100;
4’b001?: grant = 4’b0010;
4’b0001: grant = 4’b0001;
default: grant = 4’b0000;
endcase
end

verilog記述のポイント:casex・casezの多用を避ける | 組み込み機器・ハードウェア設計製作.com

補足情報

当事例のような、FPGA設計に関するポイントをまとめた冊子の無料DLが可能です。
是非以下よりご確認ください。

FPGA設計のポイント

>>ダウンロードはこちら!

設計のポイント 一覧

FPGA設計のポイント

お問い合わせ

組み込み機器・ハードウェア 設計製作.comを運営する株式会社アイディアイは、組み込み機器・ハードウェアの設計開発代行サービスを提供しています。
試験装置や制御機器、組み込みボードなど、設計・開発委託先をお探しの皆様、お気軽に当社に御相談ください。

技術資料のダウンロードはこちらから 技術資料ダウンロ―ド メールフォームでのお問い合わせはこちらから ご相談お問合せ