Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

生成されたモデルと検証モデル

HDL Coder™ により、生成されたモデルでの HDL 最適化およびブロック設定の効果が表示されます。

生成されたモデル

コードを生成する前に、HDL Coder は HDL コードの動作モデルを作成します。このモデルを "生成されたモデル" といいます。生成されたモデルは、コード生成中の面積およびタイミングの最適化で生成されたコードのサイクル アキュレートでビットトゥルーな動作を取得する中間モデルです。生成されたモデルは、Simulink® DUT と生成される HDL コードでのレイテンシおよび数値の差を示します。生成されたモデルにコーダー ジェネレーターによって挿入された遅延は、さまざまな色で強調表示されます。コード生成の各種遅延、対応する強調色、および生成されたモデルでの遅延の命名方法について以下の表を参照してください。

遅延強調色命名規則
  • ブロック実装

  • RAM マッピング

シアン

ブロックはシアンで強調表示されます。このブロック内の Delay ブロックは既定の名前 Delay を使用し、強調表示されません。

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

制約付き出力パイプライン: rd_n
オレンジ
  • 分散型パイプライン方式: rd_n

  • 入力パイプライン: in_n_pipe_in_pipe および出力パイプライン: out_n_pipe_in_pipe

  • 遅延の均衡化: delayMatch

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

  • 適応パイプライン: ブロック入力の HwModeRegister およびブロック出力の PipelineRegister

タイミングおよび面積の最適化を使用すると、生成されたモデルは元のモデルとは大幅に異なります。たとえば、アルゴリズムの精度を維持するために必要に応じて最適化および追加の平衡化遅延を要求する場合、ブロックの隣で追加の整数の遅延が見られます。同じ演算が複数の演算全体で時間多重化される状態で、リソース共有またはストリーミング最適化を要求する場合、モデルでは追加のレートが見られます。

生成されたモデルは、RTL テストベンチ生成で使用されます。生成されたモデルには最適化に必要なアルゴリズムのタイミングの変更が反映されるため、入力スティミュラスおよび出力応答が元のモデルではなく生成されたモデルから取得されます。モデル生成を無効にすると、HDL Coder ではテストベンチを生成できません。

コードの生成後、生成されたモデルがターゲット フォルダーに保存されます。生成されたモデルには、既定で gm_ という接頭辞が付加されます。たとえば、モデルの名前が myModel の場合、生成されたモデルの名前は gm_myModel になります。

生成されたモデルのカスタマイズ

生成されたモデル名の接頭辞をカスタマイズするには、GeneratedModelNamePrefix プロパティを makehdl または hdlset_param と共に使用します。生成されたモデル名の接頭辞を参照してください。

生成されたモデルのレイアウトのさまざまなオプションを指定することもできます。レイアウト オプションを参照してください。

検証モデル

生成されたモデルは元のモデルとは大幅に異なることが多いため、本製品で元のモデルと生成されたモデルを比較する "検証モデル" を作成することができます。検証モデルは元のモデルの出力に遅延を挿入してレイテンシの相違を補正し、2 つのモデルの出力を比較します。検証モデルをシミュレートする場合は、出力データに数値的相違があるとアサーションがトリガーされます。

検証モデルを使用して、最適化した DUT の出力が元の DUT で生成される結果に対してビットトゥルーであるかどうかを検証できます。

検証モデルには次のものが含まれます。

  • 生成されたモデル

  • 補正のための遅延を挿入した元のモデル

  • 元のモデルと生成されたモデルに送られる元の入力

  • 元のモデルと生成されたモデルの出力を比較および表示するスコープ

レイテンシの差

ブロックのアーキテクチャや最適化によっては、レイテンシが発生することがあります。たとえば、Reciprocal ブロックに、ニュートン・ラフソン法を実装する HDL ブロック アーキテクチャを指定できます。ニュートン・ラフソン法は反復法なので、この方法を使用するブロック アーキテクチャはマルチサイクルであり、ブロック レートでレイテンシが発生します。

同様に、リソースの共有による面積の最適化では、共有ハードウェア リソースでデータを時間多重化するので、ローカル マルチレートと、アップサンプルレートでレイテンシが発生します。

数値的な差

HDL ブロック アーキテクチャにより数値的な差が導入されることがあります。以下に例を示します。

  • ニュートン・ラフソン法は近似法です。ニュートン・ラフソンのブロック実装を選択した場合、生成されたモデルの数値が変わります。

  • フィルターなどの信号処理用ブロックの HDL 実装で、数値が変化することがあります。

速度を最適化した後の数値的相違の検出も参照してください。

検証モデルの生成

  • [コンフィギュレーション パラメーター] ダイアログ ボックスの [HDL コード生成][グローバル設定][モデルの生成] ペインで、[検証モデル] を選択します。

  • HDL ワークフロー アドバイザーの [HDL コード生成][RTL コードとテスト ベンチを生成] ペインで、[検証モデルを生成] を有効にします。

  • makehdl または hdlset_param と共に GenerateValidationModel プロパティを使用します。

検証モデルのカスタマイズ

生成された検証名の接尾辞をカスタマイズするには、ValidationModelNameSuffix プロパティを makehdl または hdlset_param と共に使用します。検証モデル名の接尾辞を参照してください。

制限

  • 検証モデルを生成するには、DUT サブシステムの HDL コードを生成しなければなりません。DUT サブシステムではなくモデル全体のコードの生成ではモデル生成はサポートされません。

  • DUT サブシステムに未接続の出力端子がないことを確認します。未接続のブロック端子の終端とブロックのコメント化の使用を参照してください。

関連するトピック