第5回:アサーション(その①)
こんにちは。第5回は「アサーション」についてご紹介します。
LSI・FPGA設計の大規模化と短納期化が進む中、従来のシミュレーションだけでは想定外の挙動を見逃すリスクが高まっています。 設計者自身が思い描く正しい振る舞いを、仕様書だけでなく検証環境に確実に反映させる手段として、アサーションが注目されています。 アサーションについては内容が多いため、4回に分けてお届けします。(4回に分けたひとり言です) 今回はその第1回です。
◆アサーションとは
アサーションとは、動作条件と動作結果を定義し、条件に対して期待している結果が得られることを確認するための記述です。
アサーションを記述する言語にはいくつかありますが、現在主流となっているのはSystemVerilogに含まれるアサーション記述です。
ここでは、主流であるSystemVerilog Assertions(以後、SVA)について説明します。
SVAには大きく2種類の記述方法があり、それぞれ「即時アサーション」「並列アサーション」と呼ばれます。
即時アサーションはテストシナリオ(テストパターンともいいます)やタスクなどに記述し、シミュレーションが即時アサーションの記述箇所まで到達したときに一度実行されます。 一方、並列アサーションはテストシナリオやタスクとは別の場所に記述し、発火条件(アサーションが動作することを発火といいます)を満たすごとに繰り返し検証を実行するため、定常的にDUT(検証対象)を監視する形になります。

メモ:アサーションにおける「発火」とは?
発火とは、アサーションが検証動作を行うことを指します。
結果がPASS/FAILのいずれであっても発火です。
※発火という言葉からFAILを連想しがちですが、アサーションが動作すること自体を指します。