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

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

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

設計のポイント

VHDL記述のポイント:after句・wait文は合成対象外と心得る

設計内容分類FPGA
解決できる課題CPU負荷低減

実現したい仕様・課題

VHDLには y <= a after 10 ns; のような遅延指定や、wait for・wait until といった時間制御の構文があり、シミュレーションでは記述どおりに動作します。これらを実回路の遅延やタイミング調整の手段だと誤解して合成対象のRTLに書いてしまうと、合成では無視され、シミュレーションと実機の動作が乖離します。合成できる記述とシミュレーション専用の記述を正しく区別したいというのが課題です。

設計のポイント

after句による遅延指定、wait for(時間待ち)、wait until(条件待ち)などの時間制御は、シミュレーションのための記述であり、論理合成では遅延として実現されません(afterは単に無視され、waitを含むプロセスは多くのツールで合成不可です)。実回路の時間は、クロックとフリップフロップの段数によってのみ設計します。「10ns待つ」はafterではなく、クロック周期から換算したカウンタで実現し、「信号が立つまで待つ」はwait untilではなく、ステートマシンの遷移条件として記述します。この区別を明確にするため、合成対象のRTLファイルには時間制御構文を一切書かない、を規約とすることを推奨します。一方、テストベンチでは時間制御こそが主役です。クロック生成(wait for 半周期)、リセットシーケンス(wait for 数周期)、応答待ち(wait until done = ‘1’;)など、wait文を積極的に使ってシナリオを記述します。つまり「RTLはクロック同期の世界、テストベンチは時間の世界」という住み分けです。なお、テストベンチのwait untilにはタイムアウトを併設し(wait until done = ‘1’ for 1 ms; など)、DUTの不具合でシミュレーションが永久に止まらないようにしておくと、自動検証での運用が安定します。ドキュメントやレビューでも、時間制御構文の有無で「このファイルは合成対象か検証用か」を判別できるようになり、資産管理の面でも有効な規約となります。

【コード例】
— × RTLでの誤用:afterは合成で無視される
— y <= a after 10 ns;

— ○ 実回路の時間待ちはカウンタで(クロックから換算)
if cnt = WAIT_CYCLES-1 then state <= NEXT_S; end if;

— ○ テストベンチでは時間制御を積極活用
clk <= not clk after 5 ns; — クロック生成
wait until done = ‘1’ for 1 ms; — タイムアウト付き応答待ち

VHDL記述のポイント:after句・wait文は合成対象外と心得る | 組み込み機器・ハードウェア設計製作.com

補足情報

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

FPGA設計のポイント

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

設計のポイント 一覧

FPGA設計のポイント

お問い合わせ

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

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