マッピング ファイルを使用したコードのトレース
メモ
このセクションでは、生成された VHDL® エンティティ、Verilog® モジュールまたは SystemVerilog モジュールを総称して "エンティティ" と呼びます。
"マッピング ファイル" は makehdl
で生成されたテキスト レポート ファイルです。マッピング ファイルは、生成された HDL エンティティからモデル内の対応するシステムに遡ってトレースするために生成されます。
マッピング ファイルは、モデル内のシステムと、それらから生成された VHDL エンティティ、Verilog モジュールまたは SystemVerilog モジュールとの関係を示します。マッピング ファイルのエントリは次の形式をもちます。
path --> HDL_name
path
はモデル内のシステムへの絶対パスで、HDL_name
はそのシステムから生成された VHDL エンティティ、Verilog モジュールまたは SystemVerilog モジュールの名前です。マッピング ファイルには行ごとに 1 つのエントリが含まれます。簡単な例の場合、マッピング ファイルには 1 つのエントリだけが含まれます。たとえば、sfir_fixed
モデルの symmetric_fir
サブシステムによって次のマッピング ファイルが生成されます。
sfir_fixed/symmetric_fir --> symmetric_fir
マッピング ファイルは、複数のサブシステムからエンティティが多数生成される複雑なモデルの HDL コードを生成する場合や、同じ名前をもつ複数のサブシステムの競合を HDL Coder™ で解決する場合に便利です。
サブシステムの名前がモデル内で一意である場合、HDL Coder は、単純に生成されたエンティティとしてサブシステムの名前を使用します。同名のサブシステムが見つかった場合、競合するサブシステムに接尾辞 (既定の設定では '_entity'
) を付加して競合の解決を試行します。続けて生成されたエンティティの名前が結果的に前の名前と競合する場合は、インクリメンタルな数値 (1,2,3,...
) が付加されます。n
例として、次の図のモデルを見てみましょう。最上位のモデルには、3 つのレベルに入れ子された A
という名前のサブシステムが含まれています。
最上位のサブシステム A
のコードが生成される場合、makehdl
はモデルの階層構造の最も深いレベルからサブシステムごとに一意のエンティティ名を生成しながら上位レベルに向かって処理します。
makehdl('mapping_file_triple_nested_subsys/A') ### Working on mapping_file_triple_nested_subsys/A/A/A as A_entity1.vhd ### Working on mapping_file_triple_nested_subsys/A/A as A_entity2.vhd ### Working on mapping_file_triple_nested_subsys/A as A.vhd ### HDL Code Generation Complete.
次の例は、結果として生成されたマッピング ファイルの内容のリストです。
mapping_file_triple_nested_subsys/A/A/A --> A_entity1 mapping_file_triple_nested_subsys/A/A --> A_entity2 mapping_file_triple_nested_subsys/A --> A
この情報を元に、たとえば次のように open_system
コマンドを使用して、生成されたエンティティに対応するサブシステムに遡ってトレースできます。
open_system('mapping_file_triple_nested_subsys/A/A')
次のコードの抜粋で示すように、生成された各エンティティ ファイルには、対応するサブシステムへのパスもファイルの先頭のヘッダー コメント内に含まれています。
-- Module: A_entity2 -- Simulink Path: mapping_file_triple_nested_subsys/A -- Hierarchy Level: 0