Main Content

トレーサビリティを使用した Simulink モデルと HDL コード間の移動

比較的小規模なモデルでも、生成される HDL コードが何百行にもなることがあります。ソース モデルと生成された HDL コード間のマッピングをより簡単に特定できるようにするには、HDL Coder™ でトレーサビリティ サポートを使用します。

トレーサビリティの仕組み

トレーサビリティ サポートを有効にし、モデルの HDL コードを生成すると、コード ジェネレーターは HTML コード生成レポートを作成して表示します。

既定では、コード ジェネレーターは、ラインレベルのスタイルを使用して、トレーサビリティ レポートを生成します。このスタイルを使用して生成されたレポートには、コードとモデル間を移動するために、HDL コードの各行へのハイパーリンクが含まれています。トレーサビリティ スタイルをカスタマイズして、コメントベースのレポートを生成することができます。このスタイルには、モデル内の特定のブロックの検索可能タグに対応するコードのブロックの上部に、ハイパーリンク コメントが含まれます。2 つのトレーサビリティ スタイルの詳細については、Traceability styleを参照してください。

レポートはルートレベルのモデル、サブシステム、ブロック、Stateflow® チャートまたは MATLAB Function ブロックについて生成できます。既定では、HDL Coder は最上位モデルのレポートを生成します。

レポートを生成後、以下の移動が可能になります。

  • モデルからコードへ: モデル内のブロックを 1 つ選択すると、レポート内の HDL コードの対応する行に移動

  • コードからモデルへ: レポート内のコードを 1 行を選択すると、そのコード行に対応する Simulink® ブロックに移動

HDL Coder は、このような 2 方向の移動、すなわち "双方向" のトレーサビリティを提供しています。トレーサビリティ サポートを使用すると、以下が可能です。

  • 生成されたコードが想定のとおりであることを検証します。あるコード行に対応するモデル要素を特定できるとともに、レビュー済みまたはレビュー前のさまざまなモデル要素からコードを追跡できます。

  • 生成されたコードが設計要件を満たしているか検証します。モデル要素に要件を割り当て、その要件をトレーサビリティ レポートの中にハイパーリンクとして含めることができます。

トレーサビリティ レポートの生成

[コンフィギュレーション パラメーター] ダイアログ ボックスまたはコマンド ラインでレポートを生成できます。

  1. トレーサビリティ レポートの生成を有効にします。

    • [アプリ] タブで、[HDL Coder] を選択します。[HDL コード] タブが表示されます。[設定][レポート オプション] を選択し、[トレーサビリティ レポートの生成] を選択します。

    • コマンド ラインで、hdlset_param を使用して、モデルに Traceability プロパティを設定します。

    このパラメーターの詳細については、Generate traceability reportを参照してください。

  2. トレーサビリティ スタイルを指定します。ラインレベルのトレーサビリティ レポートを生成するには、この設定を既定のままにします。コメントベースのトレーサビリティ レポートを生成するには、以下を行います。

    • [HDL コード生成][レポート] ペインで、[トレーサビリティ スタイル] を指定します。

    • コマンド ラインで、hdlset_param を使用して、モデルに TraceabilityStyle プロパティを指定します。

    このパラメーターの詳細については、Traceability styleを参照してください。

  3. HDL コードとトレーサビリティ レポートを生成します。Simulink ツールストリップで DUT サブシステムを選択して [HDL コードを生成] をクリックするか、コマンド ラインで DUT サブシステムに対して makehdl を実行します。

HDL コードの生成が完了すると、新しいウィンドウに HTML コード生成レポートが表示されます。

レポートの場所

既定では、HDL Coder はコード生成レポート ファイルをビルド フォルダーの hdlsrc\html\ フォルダーにあるフォルダーに書き込みます。レポートを閉じた場合、このフォルダーに移動してレポートを開き直すことができます。

コードを生成する前に、HDL コードとレポート ファイルを保存するターゲット フォルダーをカスタマイズできます。

  • [コンフィギュレーション パラメーター] ダイアログ ボックスの [ターゲット] 設定を使用して、ターゲット フォルダーを指定します。

  • コマンド ラインで TargetDirectory プロパティを使用します。

このパラメーターの指定方法を学ぶには、Code Generation Folderを参照してください。

トレーサビリティ レポートを最新に保つには、ソース モデルを変更したら、HDL コードとレポートを再生成します。

トレーサビリティ レポートの表示

[HTML コード生成レポート] ウィンドウで、[トレーサビリティ レポート] セクションを選択します。レポートの左側ペインで、[生成されるソース ファイル] の名前をクリックし、その内容を MATLAB® Web ブラウザー ウィンドウで表示します。

この図は、標準的なトレーサビリティ レポートを示しています。

トレーサビリティ レポートには、コードの生成元のブロックまたはサブシステムを示すいくつかのサブセクションがあります。

  • [削除された/バーチャル ブロック] セクションは、生成された HDL コード内に含まれていないために追跡不能なブロックを示します。

  • [Traceable Simulink Blocks / Stateflow Objects / MATLAB Functions] セクションは、モデル要素とコード間の完全なマッピングを示します。

ブロック要件を割り当てた場合、要件をトレーサビリティ レポート内のハイパーリンク コメントとして表示できます。詳細については、Include requirements in block commentsを参照してください。

コード ビューを使用したトレーサビリティ

既定では、トレーサビリティ レポートの生成を有効にしてモデルの HDL コードを生成した後、モデルの右のコード ビューに生成されたコードが表示されます。コード ビューを使用して、生成された HDL コードからモデルまでおよびモデルから生成された HDL コードまでトレースできます。

コード ビューを手動で開くには、[HDL Coder] アプリを開きます。Simulink ツールストリップで [コードの表示] ボタンをクリックします。コード ビューの上部にあるドロップダウン リストを使用して、表示するファイルを選択します。コード ビューは、エディターにドッキングすることもドッキング解除することもでき、コード ビューの右上にある下矢印を使用して最小化または展開できます。コードの折りたたみやコメントの非表示などのリッチ テキスト機能も使用できます。

次の図は、[HDL Coder] アプリの Simulink ツールストリップにある [コードの表示] ボタンから開いたコード ビューを示しています。

Code view in HDL Coder

コードからモデルへの移動

HDL コードからモデルに移動するには、以下のいずれかのワークフローに従います。

コード ビューを使用:

  1. 右側の自動生成されたコード ビュー パネルをクリックするか、[HDL Coder] アプリの Simulink ツールストリップで [コードの表示] ボタンをクリックして、コード ビューに移動します。

  2. コード ビューで、行番号のハイパーリンクまたはコード コメントのリンクをクリックすると、そのコード行のトレース先のブロックが強調表示されます。コードが生成されたモデル要素の行までコードをトレースできます。

次の図は、[トレーサビリティ スタイル][Line Level] として指定されている場合に、コード ビューの symmetric_fir.vhd の行 238 で生成された HDL コードがモデルの青色で強調表示されたブロックにどのようにマッピングされるかを示しています。

Code to model traceability in Code view example with the Traceability style specified as Line Level

次の図は、[トレーサビリティ スタイル][Comment Based] として指定されている場合に、コード ビューの symmetric_fir.vhd の行 253 で HDL コードに生成されたコメント <S1>/m3 がモデルの青色で強調表示されたブロックにどのようにマッピングされるかを示しています。

Code to model traceability in Code view example with the Traceability style specified as Comment Based

コード生成レポートを使用:

  1. トレーサビリティ レポートの [コードの場所] 列で、任意のハイパーリンクをクリックします。

    コード ジェネレーターが、生成されたソース ファイル内で HDL コードのその行を強調表示します。

  2. ソース ファイル内のそのコード行に対応するリンクを選択します。

    コード ジェネレーターは別のウィンドウを開き、そのコード行に対応する強調表示された Simulink ブロックを表示します。

この図は、[トレーサビリティ スタイル][Line Level] に指定したときに、トレーサビリティ レポートを使用して HDL コードからモデルに移動する方法を示しています。

トレーサビリティ レポートでは、HDL Coder が [Code Location] 列に HDL コードへのラインレベルのハイパーリンクを生成していることが分かります。リンクをクリックすると、コードのその行が HDL ソース ファイル内で強調表示されます。次に、ソース ファイル内のそのコード行のハイパーリンクをクリックすると、モデル内で対応するブロックが強調表示されます。

この図は、[トレーサビリティ スタイル][Comment Based] に指定したときに、トレーサビリティ レポートを使用して HDL コードからモデルに移動する方法を示しています。

トレーサビリティ レポートで [コードの場所] 列のハイパーリンクを選択すると、HDL Coder が HDL コード内のハイパーリンク コメント <S2>/a1 を強調表示することが分かります。HDL ソース ファイル内のハイパーリンク コメントをクリックすると、コード ジェネレーターはモデル内の対応するブロック a1 を強調表示します。

モデルからコードへの移動

モデルからコードへのトレーサビリティを使用することで、モデルの任意のレベルのコンポーネントを選択して、そのコンポーネントへのコード参照をトレーサビリティ レポート内で表示できます。追跡の対象として選択できるオブジェクトは次のとおりです。

  • Subsystem

  • Simulink ブロック

  • MATLAB Function ブロック

  • Stateflow チャート、または Stateflow チャート内の以下の要素

    • ステート

    • 遷移

    • 真理値表

    • チャート内の MATLAB 関数

次のいずれかのアプローチを使用して、モデル内の特定のブロックからそのブロック用に生成された HDL コードに移動できます。

  • モデル内のそのブロックをクリックします。コード ビューで、そのブロックのコードが強調表示され、強調表示されたコード行までスクロールされます。

    次の図は、[トレーサビリティ スタイル][Line Level] として指定されている場合に、モデル内で強調表示されているブロックがスクリプト symmetric_fir.vhd の対応する強調表示された HDL コードにマッピングされる例を示しています。

    Model to code traceability in Code View with the Traceability style specified as Line Level

    次の図は、[トレーサビリティ スタイル][Comment Based] として指定されている場合に、モデル内で強調表示されているブロックがスクリプト symmetric_fir.vhd の HDL コードの対応する強調表示されたコメントにマッピングされる例を示しています。

    Model to code traceability in Code View with the Traceability style specified as Comment Based

  • ブロックを選択して、[HDL コード] タブの [コードに移動] をクリックする。

  • Simulink モデルでブロックを右クリックして、[HDL コード][コードに移動] を選択する。

この図は、ラインレベルとコメントベース両方のトレーサビリティ スタイルを使用したモデルからコードへの移動を示しています。

[トレーサビリティ スタイル][Line Level] を使用して、モデルから HDL コードに移動した場合、トレーサビリティ レポートでは、そのブロックに対応する HDL コード行がすべて強調表示されます。

[トレーサビリティ スタイル][Comment Based] を使用して、モデルから HDL コードに移動した場合、トレーサビリティ レポートの HDL コードの中で追跡可能なブロック コメントが強調表示されます。

トレーサビリティ レポートの制限

  • モデル内のブロック名に一重引用符 (') が含まれている場合、そのブロックのコードからモデルへおよびモデルからコードへのトレーサビリティは無効になります。

  • モデル内のブロック名に含まれるアスタリスク (*) がモデル内の他の名前に対して名前マングリングのあいまいさを引き起こす場合、そのブロックのコードからモデルへの強調表示およびモデルからコードへの強調表示は無効になります。これは多くの場合、ブロック名でアスタリスクがスラッシュ (/) の直前または直後にあるか、ブロック名の最後にある場合に発生します。

  • モデル内のブロック名に文字 ÿ (char(255)) が含まれている場合、そのブロックのコードからモデルへの強調表示およびモデルからコードへの強調表示は無効になります。

  • 特定のサブシステム タイプを使用している場合、サブシステム レベルではモデルから HDL コードに Subsystem ブロックを追跡することができません。Subsystem ブロック内で、個々のブロックを追跡できる可能性はあります。以下のサブシステム タイプについては、モデルからコードへの追跡を行えません。

    • バーチャル

    • マスク

    • コードが最適化された非バーチャル

  • トレーサビリティは、最上位の Subsystem ブロックとしてモデル参照をサポートしていません。

関連するトピック