本ソリューションは、デザイン内のFSM をデバッグ情報を抽出するために、どのようにコードカバレッジとFSM Graphを使用するかを示します。
Riviera-PRO は、ステートメントカバレッジ、ブランチカバレッジ、パスカバレッジおよびエクスプレッション/コンディションカバレッジなどの様々なタイプのコードカバレッジのサポートを提供しています。
FSM デバッグデータを抽出するためにデザインの、ライン、ブランチおよびエクスプレッションカバレッジからの情報を組み合わせることができます。
どこ
ラインカバレッジ - リセットが実行された場合に表示
ブランチカバレッジ - FSM ステートの全ステートが実行されたか表示
エクスプレッションカバレッジ - (実行可能な)全ステート間のトランジションでFSM トランジションが実行されたかを表示
リセット、ステートおよびFSM トランジションに関して、コードカバレッジデータはデザイン内のFSM の完全なデバッグに必要な詳細のステートトランジション情報を表示します
Riviera-PRO のFSM Graph は、グラフィカルおよび表形式でステート間のトランジッションを表示します。オブジェクトステートとトランジションは、それぞれFSM Graph 上に円と矢印で表示します。矢印の下に表示される数字は指定されたトランジションの発生数を示しています
FSM Graph 上で区別されるステートには4種類あります
決定的(青色で示す) - ただ1つの送信トランジションを持つ
非決定的(黄色で示す) - 複数の送信トランジションを持つ
初期(緑色で示す) - 受信トランジションを持っていない
終了(赤色で示す) - 送信トランジションを持っていない
下記の例コードファイルfsm.v で考えてみてください
下記がテストベンチファイルtestbench.v になります
下記スクリプトをAldec Riviera-PRO で使用し、例デザインのコンパイルとシミュレートを実行します
FSM Graph の下記画像は、ステートヒットとトランジションの詳細を示しています
次の画像は、次ステートへのトランジションされた時間インスタンスを示しています。そして、複雑なFSM 設計のためFSM Graph は以下のように表示されます
以下に示すように、上記の情報に加えカバレッジレポートは、コード·カバレッジビューアを使用して収集することが可能です
下図は、3カバレッジレポートの全てがマージされたレポートを示しています
このアプリケーションノートでは、FSM Graph とコードカバレッジを組み合わせることで、デザイン内のFSM デバッグの手助けになる方法を示しています