Main Content

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

Simulink協調シミュレーション テスト ベンチを作成する

これらの手順では、 Simulink®ソフトウェアをテストベンチとして使用して HDL デザインを協調シミュレーションする方法を説明します。

  1. Simulinkブロック ライブラリからSimulinkブロックを追加して、 Simulinkテスト ベンチ モデルを作成します。ハードウェア モデル コンポーネントをコシミュレーション ブロックとして置き換えたり追加したりする前に、モデルを徹底的に実行してテストします。

  2. HDL モジュールをコード化します。HDL シミュレーターでモジュールをコンパイル、詳細化し、シミュレートします。HDL コンポーネントをコーディングするを参照してください。

  3. MATLAB®およびSimulinkで使用する HDL シミュレーターを起動し、 HDL Verifier™ライブラリをロードします。Simulinkでコシミュレーション用の HDL シミュレーターを開始しますを参照してください。

  4. HDL CosimulationブロックをSimulinkテストベンチ モデルに追加します。HDL コシミュレーション ブロックの挿入を参照してください。

  5. HDL Cosimulationブロック インターフェイスを定義します。HDL コシミュレーション ブロック インターフェイスの構成を参照してください。

  6. (オプション) To VCD Fileブロックを追加して、シミュレーション セッション中の変数値の変更をログに記録します。値変更ダンプ (VCD) ファイルの追加を参照してください。

  7. まず HDL シミュレーターでシミュレーションを開始し、次にSimulinkモデルを実行します。Simulink協調シミュレーション セッションを実行するを参照してください。

Vivado®ユーザー: 上記の手順 3 ~ 7 を次のように置き換えます。

  1. コシミュレーション ウィザードを使用して、 Vivadoコシミュレーション用の HDL Cosimulationブロックを生成します。詳細については、HDL コシミュレーション ブロックの HDL コードのインポートを参照してください。

  2. 生成されたHDL CosimulationブロックをSimulinkテストベンチ モデルに追加します。

  3. Simulinkからシミュレーションを開始します。HDL Cosimulationブロックは共有ライブラリをロードし、 Vivadoとの協調シミュレーションを実行します。

HDL コンポーネントをコーディングする

HDL Verifierインターフェイスは、HDL シミュレーターとSimulinkの間ですべてのデータをポート データとして渡します。HDL Verifierソフトウェアは、既存の HDL モジュールで動作します。ただし、 Simulink検証の対象となる HDL モジュールをコーディングする場合は、2 つの環境間で共有されるデータのタイプと方向モードを考慮する必要があります。

テストベンチで使用するための HDL コンポーネントでのポート方向モードの指定

module ステートメントでは、各ポートを方向モード (入力、出力、または双方向) で指定する必要があります。次の表では、これら 3 つのモードを定義します。

VHDL®モードを使用...Verilog®モードを使用...ポートの場合...
INinputMATLAB関数またはSimulinkテストベンチによって駆動できる信号を表します
OUToutputMATLAB関数またはSimulinkテストベンチに渡される信号値を表します
INOUTinoutMATLAB関数またはSimulinkテスト ベンチによって駆動または値を渡すことができる双方向信号を表します。

テストベンチで使用するために HDL コンポーネントでポート データ型を指定する

このセクションでは、HDL モジュールのポートに対してMATLABと互換性のあるデータ型を指定する方法について説明します。HDL VerifierインターフェースがMATLAB環境のデータ型を変換する方法の詳細については、 サポートされているデータ型を参照してください。

メモ

サポートされていないタイプを使用すると、 HDL Verifierソフトウェアは警告を発行し、実行時にポートを無視します。たとえば、実行時に 5 つのポート (そのうちの 1 つがVHDLアクセス ポート) を持つインターフェイスを定義した場合、インターフェイスには警告が表示され、コードでは 4 つのポートのみが認識されます。

 VHDLエンティティのポート データ タイプ

 Verilogエンティティのポート データ タイプ

テストベンチで使用するための HDL 設計のコンパイルと詳細化

HDL デザインのコンパイルと詳細化の手順については、HDL シミュレータのドキュメントを参照してください。

HDL コシミュレーション ブロック インターフェイスの構成

このワークフローは、 HDL Cosimulationブロックを構成および生成するためのコシミュレーション ウィザードの使用に代わるものです。Vivado協調シミュレーションの場合は、協調シミュレーション ウィザードを使用する必要があります。HDL コシミュレーション ブロックの HDL コードのインポートを参照してください。

HDL コシミュレーション ブロックの挿入

VHDLまたはVerilogでモデルのコンポーネントの 1 つをコーディングし、HDL シミュレーター環境でシミュレートした後、HDL 表現をSimulinkに統合します。次の手順を実行して、 $$モデルをHDL Cosimulationブロックとして作成します。

  1. まだ開いていない場合は、 Simulinkモデルを開きます。

  2. HDL Cosimulationブロックで置き換えるモデル コンポーネントを削除します。

  3. Simulinkライブラリ ブラウザで、 HDL Verifierブロック ライブラリをクリックします。その後、サポートされている HDL シミュレーターのブロック ライブラリを選択できます。Mentor Graphics® ModelSim® HDL Cosimulationブロック、または Cadence® Xcelium™ のいずれかを選択します以下に示すように、HDL Cosimulationブロック。

  4. HDL Cosimulationブロックをライブラリ ブラウザからモデルにコピーします。

ブロックポートの接続

HDL Cosimulationブロック ポートをSimulinkモデルの該当するブロック ポートに接続します。

  • シンク デバイスをモデル化するには、入力のみを使用してブロックを構成します。

  • ソース デバイスをモデル化するには、出力のみを使用してブロックを構成します。

オープン HDL コシミュレーション ブロックパラメーター

HDL Cosimulationブロックのブロックパラメーターダイアログ ボックスを開くには、ブロック アイコンをダブルクリックします。 Simulink は、次の [ブロックパラメーター]ダイアログ ボックスを表示します (例として、 HDL Cosimulationで使用するModelSim ブロックのダイアログ ボックスが表示されます)下に)。

Block mask for the HDL Cosimulation block.

HDL 信号をブロック ポートにマッピングする

HDL Verifier HDL Cosimulationブロックを設定する最初のステップは、HDL デザインの信号と信号インスタンスをHDL Cosimulationのポート定義にマップすることです。ブロック。入力ポートと出力ポートを識別することに加えて、各出力ポートのサンプル時間を指定できます。各出力ポートに固定小数点データ型を指定することもできます。

マップする信号は、HDL デザイン階層のどのレベルでも構いません。

信号をマッピングするには、次のいずれかのアクションを実行できます。

  • ブロックパラメーターダイアログ ボックスのPortsペインに信号情報を手動で入力します。このアプローチは、HDL モデルから少数の信号をSimulinkに接続する場合により効率的です。

  • Auto Fillボタンを使用すると、 HDL Cosimulationブロックが HDL シミュレーターにクエリを送信して信号情報を取得します。このアプローチにより、Simulinkモデルに接続する信号が多数ある HDL モデルをコシミュレーションする場合に、大幅な労力を節約できます。ただし、場合によっては、クエリによって返された信号データを編集する必要があります。

メモ

コシミュレーションで使用される信号に読み取り/書き込みアクセス権があることを確認します。より高いパフォーマンスを得るには、コシミュレーションで使用される信号へのアクセスのみを提供する必要があります。このルールは、 PortsClocks、およびSimulationペイン上のすべての信号、およびその他の方法で追加されたすべての信号に適用されます。

Simulinkテストベンチ コシミュレーション用の HDL 信号/ポートおよびモジュール パスの指定.  これらのルールは、 Simulinkの信号/ポートおよびモジュール パスの仕様に関するものです。他の仕様も動作する可能性がありますが、今回または将来のリリースでは明示的または暗黙的にサポートされません。

HDL デザインには一般に階層があります。それがこの構文の理由です。この仕様はファイル名の階層を表すものではありません。

 Verilogトップレベルのパス仕様

 VHDLトップレベルのパス仕様

HDL シミュレーターから信号情報を取得する.  Auto Fillボタンを使用すると、HDL シミュレーター クエリを開始し、HDL シミュレーターでのシミュレーション中の HDL モデル内のコンポーネントまたはモジュールへのパスを指定できます。通常、クエリの完了後にポート情報を変更する必要があります。Auto Fillが動作するには、HDL モジュールをロードして HDL シミュレータを実行する必要があります。

次の例では、必要な手順を説明します。

メモ

この例は、マンチェスター受信機モデルの変更されたコピーに基づいており、最初にすべての信号がPortsClocksペインから削除されています。

  1. HDL Cosimulationブロックのブロックパラメーターダイアログ ボックスを開きます。「Ports 」タブをクリックします。Portsペインが開きます (例として、 Portsで使用するHDL CosimulationブロックのModelSimペインが開きます)以下の図では$$が示されています)。

    Block mask for the HDL Cosimulation block, open on the ports tab.

    ヒント

    Auto Fillを実行する前にすべてのポートを削除して、未使用の信号がポート リストに残らないようにしてください。

  2. Auto Fill」ボタンをクリックします。[ Auto Fill]ダイアログ ボックスが開きます。

    このモーダル ダイアログ ボックスは、HDL モデル内のコンポーネントまたはモジュールへのインスタンス パスを要求。ここでは、編集フィールドに明示的な HDL パスを入力します。入力したパスはファイル パスではなく、ソース ファイルとは関係ありません。

  3. この例では、自動入力機能はVHDLというmanchester コンポーネントのポート データを取得します。HDL パスは/top/manchesterとして指定されます。パスの仕様は HDL シミュレーターによって異なります。 Simulinkコンポーネント協調シミュレーション用の HDL 信号/ポートおよびモジュール パスの指定を参照してください。

  4. Fillをクリックしてダイアログ ボックスを閉じると、クエリが送信されます。

  5. HDL シミュレーターがポート データを返した後、次の図に示すように、オート フィル機能によってそのデータがPortsペインに入力されます ( Cadence TGで使用する例を示しています) Xcelium)。

  6. Apply」をクリックしてポートの追加をコミットします。

  7. [ポート] ペインから未使用の信号を削除し、クロック信号を追加します。

    上の図は、クロック、クロック イネーブル、およびリセット ポート (それぞれclkenable、およびresetというラベルが付いている) にクエリが入力されたことを示しています。ポートリストに追加します。

    clkenablereset信号をPortsペインから削除し、 clk Clocksシグナル。

    これらのアクションにより、次の図に示す信号が生成されます。

  8. Auto Fill は、出力ポートのデフォルト値を返します。

    • Sample time: 1

    • Data type: Inherit

    • Fraction length: Inherit

    モデルの必要に応じて、これらの値を変更する必要がある場合があります。この例では、すべての出力に対してSample time10に設定する必要があります。「信号データ型の指定」を参照してください。

  9. ブロックパラメーターダイアログ ボックスを閉じる前に、 Applyをクリックして、行った編集をコミットします。

Auto Fillが、ターゲット コンポーネントの「すべて」の入力と出力に関する情報を返したことを確認します。多くの場合、これには、HDL シミュレーターでは機能するが、 Simulinkモデルでは接続できない信号が含まれます。不要な場合は、そのようなエントリをPortsペインのリストから削除できます。Simulinkから信号を駆動できます。 Simulinkブロックを配置して値を定義するだけです。

Auto Fill は内部信号の情報を返さないことに注意してください。Simulinkモデルがそのような信号にアクセスする必要がある場合は、それらの信号をPortsペインに手動で入力する必要があります。たとえば、マンチェスター レシーバー モデルの場合、 top/manchester/sync_itop/manchester/isum_i、およびtop/manchester/qsum_iの出力ポート エントリを追加する必要があります。 $、手順 8 に示すとおり。

XceliumおよびModelSimのユーザー: clk、reset、および clk_enable はクロックおよびシミュレーション ペインに「存在する可能性がある」が、「存在する必要がある」わけではないことに注意してください。なれ。これらの信号は、 Simulinkから明示的に駆動することを選択した場合、ポートにすることができます。

メモ

VHDLAuto Fill信号をインポートすると、HDL シミュレーターは信号名をすべて大文字で返します。

信号情報を手動で入力する.  Portsペインに信号情報を直接入力するには、次の手順を実行します。

  1. HDL シミュレーターで、ブロック内で定義する HDL 信号の信号パス名を決定します。たとえば、 ModelSimシミュレータでは、次の波形ウィンドウは、すべての信号が最上位モジュールmanchesterに従属していることを示しています。

  2. Simulinkで、 HDL Cosimulationブロックのブロックパラメーターダイアログ ボックスを開きます (まだ開いていない場合)。

  3. Ports」ペイン タブを選択します。 Simulinkは次のダイアログ ボックスを表示します (例はXceliumで使用する場合に示されています)。

    このペインでは、 Simulinkブロックに含めるデザインの HDL 信号を定義し、出力ポートのサンプル時間とデータ タイプを設定します。[Ports]ペインで指定する必要があるパラメーターは、ブロックがモデル化しているデバイスのタイプによって次のように異なります。

    • 入力と出力の両方を持つデバイスの場合: ブロック入力端子、ブロック出力端子、出力サンプル時間、および出力データ型を指定します。

      出力ポートの場合は、デフォルトを受け入れるか、明示的なサンプル時間を入力します。データ型は明示的に指定することも、 Inherit (デフォルト) に設定することもできます。デフォルトの場合、出力ポートのデータ型は、ポートに接続された信号から継承されるか、HDL モデルから派生されます。

    • シンクデバイスの場合: ブロック出力ポートを指定します。

    • ソースデバイスの場合: ブロック入力ポートを指定します。

  4. 既存のデフォルト信号をダブルクリックして、 Full HDL name列に信号パス名を入力します。

    クロック信号の編集が完了したら、 Applyをクリックして、変更内容をSimulinkに登録します。

    次のダイアログ ボックスは、 HDL Cosimulationブロックのポート定義を示しています。信号パス名は、HDL シミュレーターのwaveウィンドウに表示されるパス名と一致します (Xceliumの例を示します)。

    メモ

    入力ポートを定義するときは、そのポートへの入力を強制するソースが 1 つだけ設定されていることを確認してください。複数のソースが信号を駆動する場合、 Simulinkモデルは予測できない結果を生成する可能性があります。

  5. 出力ポートのサンプル時間を指定する必要があります。 Simulink は、指定した値とTimescalesペインの現在の設定を使用して、実際のシミュレーション サンプル時間を計算します。

    HDL Verifier協調シミュレーション環境のサンプル時間の詳細については、 シミュレーションのタイムスケールを参照してください。

  6. 必要に応じて、各出力ポートの固定小数点データ型を明示的に構成することも、デフォルト (Inherited) を使用することもできます。デフォルトの場合、 Simulink は出力ポートのデータ型を次のように決定します。

    Simulink が出力ポートに接続された信号のデータ型を決定できる場合、そのデータ型を出力ポートに適用します。たとえば、接続された Signal Specific ブロックのデータ型は逆伝播によってわかります。それ以外の場合、 Simulink はHDL シミュレーターにクエリを実行して、HDL モジュールからの信号のデータ型を決定します。

    明示的な固定小数点データ型を信号に割り当てるには、次の手順を実行します。

    1. Signed Data Type またはUnsigned のいずれかを選択します。

    2. 信号に小数部がある場合は、 Fraction Lengthを入力します。

      たとえば、モデルにSignedデータ型の 8 ビット信号とFraction Length5がある場合、 HDL Cosimulationブロックは、データ型sfix8_En5を割り当てます。モデルに小数部のないUnsigned 16 ビット信号 ( Fraction Length0) がある場合、 HDL Cosimulationブロックは、データ型ufix16を割り当てます。

  7. ダイアログ ボックスを閉じる前に、 Applyをクリックして編集内容を登録します。

入力ポートの値によって出力ポートを直接制御.  ダイレクト フィードスルーを有効にすると、入力ポートの値の変更がゼロ時間で出力ポートに伝播されるため、純粋な組み合わせロジックを使用した HDL デザインでの出力サンプルで発生する可能性のある遅延が排除されます。次の図に示すように、 Portsペインで直接フィードスルーを有効にするオプションを指定します。

信号データ型の指定

Data TypeおよびFraction Lengthパラメーターは、出力信号にのみ適用されます。Data Typeブロックの [ポート] ペインの説明にあるFraction LengthおよびHDL Cosimulation を参照してください。

Simulinkと HDL シミュレーターのタイミング関係の構成

Simulinkと HDL シミュレーターの間のタイミング関係を構成するには、ブロックパラメーターダイアログ ボックスのTimescalesペインを使用します。Timescalesパラメーターを設定する前に、 シミュレーションのタイムスケールを読んで、サポートされているタイミング モードと、タイミング モードの選択を決定する問題を理解してください。

HDL Cosimulationで説明されているように、 Simulinkと HDL シミュレータの間の相対的または絶対的なタイミング関係をTimescalesペインで指定できます。 $ブロック参照。

Simulinkと HDL シミュレーターのタイミング関係.  シミュレーション時間の表現の違いは、HDL Verifierインターフェイスを使用する 2 つの方法のいずれかで調整できます。

  • タイミング関係を手動で定義する ( Timescalesペインを使用)

    関係を手動で定義する場合は、 HDL シミュレーターでSimulinkの 1 秒を何フェムト秒、ピコ秒、ナノ秒、マイクロ秒、ミリ秒、秒、またはティックで表すかを決定します。

    この HDL シミュレータ時間は、次のいずれかの方法で表現できます。

    • 「相対的」な条件で (つまり、HDL シミュレータのティック数として)。この場合、協調シミュレーションは「相対タイミング モード」で動作すると言われます。HDL Cosimulationブロックのデフォルトは、協調シミュレーションの相対タイミング モードです。相対タイミング モードの詳細については、 相対タイミングモードを参照してください。

    • 「絶対」単位(ミリ秒やナノ秒など)。この場合、協調シミュレーションは「絶対タイミング モード」で動作すると言われます。絶対タイミング モードの詳細については、 「絶対タイミングモード」を参照してください。

    相対時間と絶対時間の詳細については、 シミュレーションのタイムスケールを参照してください。

  • HDL Verifierでタイムスケールを定義できるようにする ( Timescalesペインを使用)

    リンク ソフトウェアにタイミング関係の定義を許可すると、HDL シミュレータとSimulinkの間のタイムスケール係数を HDL シミュレータの 1 秒 = 1 秒にできるだけ近づけるように設定しようとします。 Simulink。この設定が不可能な場合、リンク製品はSimulinkモデル ポートの信号レートを可能な限り低い HDL シミュレータ ティック数に設定しようとします。

    始める前に、HDL シミュレーターが実行されていることを確認してください。 HDL Verifierソフトウェアは、HDL シミュレーターが実行されている場合にのみ、HDL シミュレーターの解像度制限を取得できます。

    ブロック ダイアログでパラメータを設定しているときに、 HDL VerifierTimescaleオプションをクリックしてからDetermine Timescale Now でタイムスケールを計算するように選択パラメーター。 $または、 HDL Verifierを選択して、シミュレーション開始時のタイムスケールをAutomatically determine timescale at start of simulationに計算させることもできます。

    Determine Timescale Nowをクリックすると、 HDL Verifier はSimulinkを HDL シミュレーターに接続し、HDL シミュレーターの解像度を使用して最適なタイムスケールを計算できるようにします。 。HDL Verifierが提案するタイムスケールを受け入れることも、ポート リストを直接変更することもできます。最初に計算された設定に戻す場合は、 Use Suggested Timescaleをクリックします。HDL デザインのすべてのポートのサンプル時間を表示する場合は、 Show all ports and clocksを選択します。

    Automatically determine timescale at start of simulationを選択すると、 Simulinkでシミュレーションが開始されるときに同じダイアログが表示されます。必要に応じて、その時点で、ブロックの設定時にDetermine Timescale Nowをクリックした場合と同じ調整を行います。

HDL コシミュレーション ブロックでの通信リンクの構成

共有メモリまたはソケット通信を選択する必要があります。MATLABまたはSimulinkによる HDL コシミュレーションを参照してください。

通信のタイプを決定したら、ブロックパラメーターダイアログ ボックスのConnectionペインを使用してブロックの通信リンクを構成します ( ModelSimで使用する例を示しています)。

次の手順では、通信構成を説明します。

  1. Simulinkと HDL シミュレーターが同じコンピューター上で実行されているかどうかを確認します。該当する場合は、手順 4 に進みます。

  2. The HDL simulator is running on this computerをクリアします。(このチェックボックスはデフォルトでオンになっています。)Simulinkと HDL シミュレーターは別のコンピューターで実行されているため、 HDL Verifier はConnection method Socketに設定します。 。

  3. HDL シミュレーション (HDL シミュレータ内) を実行しているコンピュータのホスト名をHost nameテキスト フィールドに入力します。Port number or serviceテキスト フィールドに、コンピュータ システムの有効なポート番号またはサービスを指定します。TCP/IP ソケット ポートの選択については、 TCP/IPソケットポートを参照してください。ステップ 5 に進みます。

  4. HDL シミュレータとSimulink が同じコンピュータ上で実行されている場合は、通信チャネルに共有メモリを使用するか TCP/IP ソケットを使用するかを決定します。さまざまな通信モードについては、 MATLABまたはSimulinkによる HDL コシミュレーションを参照してください。

    TCP/IP ソケット通信を選択した場合は、コンピュータ システムの有効なポート番号またはサービスをPort number or serviceテキスト フィールドに指定します。TCP/IP ソケット ポートの選択については、 TCP/IPソケットポートを参照してください。

    共有メモリ通信を選択する場合は、 Shared memoryチェック ボックスをオンにします。

  5. Simulinkシミュレーションの実行時に HDL シミュレータをバイパスしたい場合は、 Connection Modeオプションを使用して、必要なシミュレーション接続のタイプを指定します。次のいずれかのオプションを選択します。

    • Full Simulation:インターフェイスを確認し、HDL シミュレーションを実行します (デフォルト)。

    • Confirm Interface Only:HDL シミュレーターで予想される信号名、次元、データ型を確認しますが、HDL シミュレーションは実行しないでください。

    • No Connection:HDL シミュレータと通信しないでください。HDL シミュレータを起動する必要はありません。

    2 番目と 3 番目のオプションでは、 HDL Verifierソフトウェアは、Simulinkシミュレーション中に HDL シミュレータと通信しません。

  6. [Apply]をクリックします。

次のダイアログ ボックスの例は、 HDL Cosimulationブロックの通信定義を示しています。このブロックは、 Simulinkと、同じコンピューター上で実行される HDL シミュレーター用に構成されており、TCP/IP ポート 4449 経由で TCP/IP ソケット モードで通信します。

[HDL コシミュレーション ブロックパラメーターを使用したシミュレーション前およびシミュレーション後の Tcl コマンドの指定] ダイアログ ボックス

HDL シミュレータがSimulinkモデルの HDL コンポーネントをシミュレートする前後に実行する Tcl コマンドを指定するオプションがあります。Tcl は、ほとんどの HDL シミュレーション環境でサポートされるプログラム可能なスクリプト言語です。Tcl の使用方法は、シミュレーションが実行中であることを確認するための 1 行のputsコマンドのような単純なものから、広範なシミュレーションの初期化と起動シーケンスを実行する範囲なスクリプトのような完全なものまで多岐にわたります。たとえば、シミュレーション ペインのPost- simulation commandフィールドを使用して、シミュレーション実行の終了時に HDL シミュレーターを再起動するように指示できます。

ModelSimユーザー向けのメモ

各シミュレーションの後、カバレッジ結果を更新するのにModelSim時間がかかります。このプロセスと次の協調シミュレーション セッション間の潜在的な競合を防ぐために、連続する各シミュレーションの間に短い一時停止を追加します。

シミュレーション前およびシミュレーション後の Tcl コマンドを指定するには、 Pre-simulation コマンドに Tcl コマンドを入力するか、 にTG Post-simulationコマンドのテキスト フィールドを入力します。 HDL Cosimulationブロックパラメーターダイアログ ボックスの$$ペイン。

Tcl コマンドを指定するには、次の手順を実行します。

  1. ブロックパラメーターダイアログ ボックスの[Simulation]タブを選択します。ダイアログ ボックスは次のように表示されます (例はModelSimでの使用を示しています)。

    Pre-simulation commandsテキスト ボックスには、参照用のputsコマンドが含まれています。

  2. Pre-simulation commandおよびPost-simulation commandテキスト ボックスに 1 つ以上のコマンドを入力します。テキスト ボックスで 1 行に 1 つの Tcl コマンドを指定することも、標準の Tcl 連結演算子であるセミコロン (;) を各コマンドに追加して 1 行に複数のコマンドを入力することもできます。

     ModelSim DO ファイル

  3. [Apply]をクリックします。

プログラムによるブロックパラメーターの制御

ブロックパラメーターを制御する 1 つの方法は、 HDL Cosimulationブロックのグラフィカル ダイアログ ボックスを使用することです。ただし、マスクパラメーター値とシミュレーションの実行をプログラムで制御することによって、ブロックを制御することもできます。パラメーター値は、Simulink get_param関数を使用して読み取ることができ、 Simulink set_param関数を使用して書き込むことができます。すべてのブロックパラメーターには、次のいずれかを示す属性があります。

  • 調整可能 — シミュレーションの実行中に属性を変更できます。

  • 評価済み —パラメーター値は評価を受け、S-Function で使用される実際の値が決定されます。

HDL Cosimulationブロックには調整可能なパラメーターがありません。したがって、シミュレーションの実行中に値を変更しようとすると、エラーが発生します。ただし、評価されるパラメーターがいくつかあります。

パラメーターとその属性のリストを表示するには、ブロックを右クリックしてView Maskを選択し、次にParametersタブを選択します。Variable列には、プログラムのパラメーター名が表示されます。あるいは、 HDL Cosimulationブロックを選択し、 MATLABプロンプトで次のコマンドを入力することで、プログラムで名前を取得することもできます。

>> get_param(gcb, 'DialogParameters')

MATLABを使用してシミュレーションとマスクパラメーター値を制御する例をいくつか示します。通常、コマンドはスクリプトまたは関数ファイルに入れられ、モデル開発者が利用できるいくつかのコールバック フックによって呼び出されます。コードは、次の推奨されるSimulinkの場所のいずれかに配置できます。

  • モデルワークスペース内。[Modeling]タブの[Design]セクションで、 [Model Explorer]をクリックします。[モデル エクスプローラー] ダイアログ ボックスの[Model Hierarchy]ペインで、 Simulink Rootmodel_nameModel Workspaceを選択します。Model WorkspaceペインのData sourceリストから。Model File を選択します。

  • モデルのコールバック内。[Modeling]タブの[Setup]セクションで、 [Model SettingsModel Properties]をクリックします。[モデル プロパティ]ダイアログ ボックスの[Callbacks]タブでコールバック関数を指定します。

  • サブシステムのコールバック内。空のサブシステムを右クリックし、 PropertiesCallbacksを選択します。HDL Verifierデモの多くは、この手法を使用して、 MATLABコードをOpenFcnコールバックに配置することで HDL シミュレーターを起動します。

  • HDL Cosimulationブロック コールバック内。HDL Cosimulationブロックをマウスで右クリックし、 PropertiesCallbacksを選択します。

例: HDL シミュレータ通信用のソケット番号の値のスクリプト作成.  回帰環境では、他のシミュレーション実行との衝突を避けるために、シミュレーション中にSimulink/HDL シミュレータ接続のソケット番号を決定する必要がある場合があります。この例は、そのタスクを処理できるコードを示しています。このスクリプトは、32 ビットLinux®プラットフォーム用です。

ttcp_exec = [matlabroot '/toolbox/shared/hdllink/scripts/ttcp_glnx'];
 [status, results] = system([ttcp_exec ' -a']);
 if ~s
   parsed_result = textscan(results,'%s');
   avail_port = parsed_result{1}{2};
 else
   error(results);
 end
set_param('MyModel/HDL Cosimulation', 'CommPortNumber', avail_port);

参考