Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

HDL コード生成でのモデル参照

コード生成でのモデル参照の利点

DUT サブシステム内のモデル参照により、以下が可能になります。

  • 再利用、モジュラー開発、およびシミュレーションの高速化のために、大規模な設計を階層化された小規模な設計に分割する。

  • コードを段階的に生成してテストする。

    HDL Coder™ は、[コンフィギュレーション パラメーター] ダイアログ ボックス[モデル参照] ペイン[リビルド] のオプションに従って、参照モデルのコードを段階的に生成します。詳細については、リビルドを参照してください。

    ただし、HDL Coder では、[変更が検出された場合][既知の依存関係で変更が検出された場合] は同じものとして扱われます。たとえば、[リビルド][変更が検出された場合][既知の依存関係で変更が検出された場合] のどちらに設定しても、HDL Coder は参照モデルが変更されたときにのみ参照モデルのコードを再生成します。シミュレーション結果に影響する可能性がある変更が検出されると、参照モデル ターゲットがリビルドされます。構造的チェックサムは、シミュレーション結果に影響する可能性があるモデル内の変更を検出するために使用される計算です。構造的チェックサムに影響する変更の種類の詳細については、Simulink.BlockDiagram.getChecksumを参照してください。

参照モデルのコードの生成方法

既定では、モデル参照用の VHDL または SystemVerilog コードを単一のライブラリに生成が有効になっています。VHDL コードは別個のライブラリではなく 1 つのライブラリで生成されます。この場合、ScalarizePorts プロパティを off に設定してから HDL コードを生成します。

コードを生成するときに、生成された 2 つ以上の VHDL® コード モジュールのインターフェイス時にベクトル端子間で型指定または命名の競合が発生する場合は、競合しない端子定義を生成するために ScalarizePorts プロパティを使用します。詳細については、端子のスカラー化を参照してください。

モデル参照境界でベクトル端子または行列端子を使用するには、生成された VHDL コードで端子をスカラー化するか、型定義またはコードを単一のライブラリに配置する必要があります。VHDL コードを生成するときに、端子のスカラー化on に設定するか、モデル参照用の VHDL または SystemVerilog コードを単一のライブラリに生成オプションを有効にします。

UI またはコマンド ラインを使用して参照モデルの HDL コードを生成できます。

UI の使用

  1. Model ブロックを右クリックして [HDL コード][HDL ブロック プロパティ] を選択します。

  2. [Architecture] については [ModelReference] を選択します。

  3. DUT サブシステムから HDL コードを生成します。

コマンド ラインの使用

  1. Model ブロックの Architecture プロパティを ModelReference に設定します。たとえば、モデル参照 referenced_model を含む DUT サブシステム mydut の場合、次のコマンドを入力します。

    hdlset_param ('mydut/referenced_model', ... 
                  'Architecture', 'ModelReference');

  2. DUT サブシステムの HDL コードを生成します。

    makehdl ('mydut');

モデル アルゴリズムのコードの生成

さまざまなモデル引数の値を使用して参照モデルのインスタンスに 1 つの Verilog® または SystemVerilog module、あるいは VHDL entity を生成するには、参照モデルのパラメーター付きのコードの生成を参照してください。

コメントの生成

[Model Block Properties] ダイアログ ボックスの [説明] フィールドにテキストを入力すると、HDL Coder によって HDL コードにコメントが生成されます。

制限

  • Model ブロックにはブロック パラメーターの既定値がなければならない。

  • 同じモデルを参照する複数のモデル参照は HDL ブロック プロパティが同じでなければならない。

HDL Coder はモデル参照全体でレジスタを移動させることはできません。したがって、参照モデルでは次の最適化が抑制される可能性があります。

  • 分散型パイプライン方式

  • 制約付き出力パイプライン

  • ストリーミング

  • クロックレート パイプライン

これらの最適化を使用するには、モデル参照の代わりにサブシステム参照を使用することを検討してください。詳細については、サブシステム参照を参照してください。

モデル参照を使用して、HDL コードを生成するときに、生成されたモデル、検証モデル、およびコシミュレーション モデルはコンパイルまたはシミュレーションに失敗する可能性があります。コンパイルまたはシミュレーションのエラーを修正するには、参照モデルが読み込まれているか、検索パス上に存在することを確認します。

コーダーはリソース共有の最適化を適用して、参照モデル インスタンスを共有できます。ただし、この最適化は、同じ参照モデルを指すすべてのモデル参照のレートが最適化およびレート伝播後に同じである場合にのみ適用することができます。モデル参照の最終レートは元のレートと異なる場合がありますが、同じ参照モデルを指すモデル参照はすべて、最終レートが同じでなければなりません。