Main Content

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

HDL Cosimulation

Simulink を HDL シミュレータに接続して HDL 設計をコシミュレーションする

  • HDL Cosimulation block

ライブラリ:
HDL Verifier / For Use with Cadence Xcelium
HDL Verifier / For Use with Mentor Graphics ModelSim
HDL Verifier / For Use with Xilinx Vivado Simulator

説明

HDL Cosimulation ブロックは、HDL シミュレータでシミュレーション中の HDL モデルに入力信号を適用し、そこから出力信号を読み取ることで、ハードウェア コンポーネントをコシミュレーションします。Cosimulation Wizard を使用してこのブロックを設定および生成します。Vivado® シミュレータと共同シミュレーションを行う場合は、まず Cosimulation Wizard を使用してこのブロックを生成する必要があります。ModelSim® または Xcelium™ と共同シミュレーションを行う場合、オプションでウィザードをバイパスし、ブロックを直接構成できます。

ブロックでは次のオプションを設定できます。

  • HDL モジュールの信号 (内部信号を含む) に対応するようにブロックの入力ポートと出力ポートをマッピングします。各出力ポートのサンプル時間を指定する必要があります。オプションで、各出力ポートのデータ型を指定できます。Vivado コシミュレーションは、内部信号のマッピングをサポートしていません。

  • シミュレータ間でデータを交換するために使用される通信のタイプと通信設定。

  • Simulink® と HDL シミュレータのシミュレーション時間の単位間のタイミング関係。

  • モデルに適用する立ち上がりエッジまたは立ち下がりエッジ クロック。各クロック信号の周期を指定できます。

  • シミュレーションの前後に実行する Tcl コマンド。

このブロックを使用して、入力ポートまたは出力ポートのみでブロックを構成することにより、ソース デバイスまたはシンク デバイスをモデル化できます。

Simulink コード生成との互換性

  • このブロックは、HDL Coder™ による HDL コード生成に参加します。コーダは、手動で記述されたコードまたはレガシー HDL コードへのインターフェイスを生成します。Simulink Coder™ による C コード生成には参加しません。

端子

ブロックに表示されるポートは、HDL シミュレーターで実行されている HDL 設計からの信号に対応します。Ports タブには、ポートに対応する HDL 信号が表示されます。

Xcelium または ModelSim シミュレータを使用する場合、ブロック パラメータを変更することで、ポートを追加および削除したり、ポートのデータ型やサンプル時間を構成したりできます。Auto Fill ボタンを使用して、HDL シミュレータへのポート情報要求を介してテーブルを入力します。このリクエストは、HDL シミュレーターで実行されている HDL 設計からのポート名と情報を返します (ブロックを生成するために Cosimulation Wizard を使用した場合、この手順は必要ありません)。HDLシミュレータから信号情報を取得するを参照してください。

HDL Cosimulation ブロックを構成するときに指定するすべての信号は、HDL シミュレータで読み取り/書き込みアクセス権を持っている必要があります。詳細については、HDL シミュレータの製品ドキュメントを参照してください。

Input

すべて展開する

ブロック上のポートは HDL 設計上のポートに対応します。Ports タブでポートを追加または削除します。

データ型: int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | Fixed-point

出力

すべて展開する

ブロック上のポートは HDL 設計上のポートに対応します。Ports タブでポートを追加または削除します。

データ型: int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | Fixed-point

パラメーター

すべて展開する

この パラメーター は読み取り専用です。

このセクションには、Cosimulation Wizard を使用してこのブロックを生成した後の情報が表示されます。次の項目が表示されます。

  • HDL シミュレータ – Vivado シミュレータ

  • HDL デザイン ライブラリ – HDL ライブラリ ファイルの場所

  • HDL 言語 – VHDL または Verilog

  • HDL時間精度 – HDL設計の時間精度

  • HDL 波形ファイル – 波形ファイルの名前とパス

Vivado シミュレータ用のコシミュレーション ブロックを生成する場合、ブロック マスクを使用してポート、クロック、リセット、または時間精度の名前と方向を変更することはできません。これらの項目を変更するには、Cosimulation Wizard を開いてブロックを再生成します。

依存関係

このパラメータは、Vivado コシミュレーションを使用する場合にのみ表示されます。

端子

モデルに純粋な組み合わせパスが含まれている場合に発生する、コシミュレーションと Simulink 間の 1 つの出力サンプル遅延の差を排除します。HDL Cosimulation ブロックがフィードバック ループ内にあり、代数ループの警告またはエラーを生成する場合は、このチェック ボックスをオフにします。データ パス上にレジスタがあるシーケンシャル回路をシミュレートする場合、直接フィードスルーを指定しても、そのデータ パスのタイミングには影響しません。

HDL シミュレータ パス名構文を使用して信号パス名を指定します。たとえば、Xcelium HDL シミュレータの場合は manchester.samp です。信号は、HDL 設計階層の任意のレベルに配置できます。信号に対応する HDL Cosimulation ブロック ポートにはこの名前が付けられます。

Simulink でポートおよびモジュール パス名を指定するルールについては、「コシミュレーション用の HDL 信号/ポートおよびモジュール パスの指定」を参照してください。

HDL シミュレータの wave ウィンドウから信号パス名を直接コピーし、Full HDL Name フィールドに貼り付けることができます。Db::Path.Name ビューではなく Path.Name ビューを使用してください。信号パス名を Full HDL Name に貼り付けた後、Apply をクリックして貼り付け操作を完了し、信号リストを更新します。

依存関係

ブロックが Cosimulation Wizard から生成された場合、この値は変更しないでください。Vivado HDL コシミュレーション ブロックの場合、パラメーターは読み取り専用です。

双方向ポートを追加するには、入力と出力の両方としてポートをリストに 2 回追加します。

Input — Simulink が駆動する HDL 信号。Simulink は、指定されたサンプル レートで指定された HDL シミュレータ信号に値を格納します。

メモ

ブロック入力ポートを定義するときは、その信号への入力を駆動するソースが 1 つだけ設定されていることを確認してください。たとえば、複数のインスタンスを持つ入力ポートを定義しないでください。複数のソースが単一の信号に入力を駆動する場合、シミュレーション モデルは予期しない結果を生成します。

Output — Simulink が読み取る HDL 信号。出力信号の場合、明示的なサンプル時間を指定する必要があります。データ型を指定することもできますが、幅は HDL の信号の幅と一致する必要があります。データ型の指定の詳細については、Data Type および Fraction Length パラメータを参照してください。

Simulink 信号には、'Z' 値がないため、トライステート セマンティクスはありません。双方向信号とインターフェースするには、出力ドライバの入力信号と有効信号、および入力ドライバの出力信号の両方に接続します。このアプローチでは、実際のトライステート バッファは HDL に残り、解決関数が他のトライステート バッファとのインターフェイスを処理できます。

依存関係

ブロックが Cosimulation Wizard から生成された場合、この値は変更しないでください。Vivado HDL コシミュレーション ブロックの場合、パラメーターは読み取り専用です。

この パラメーター は読み取り専用です。

Cosimulation Wizard によって設定された HDL ポート信号のタイプを表示します。

依存関係

このパラメータは、ブロックが Vivado コシミュレーションで使用するために生成された場合にのみ表示されます。

この パラメーター は読み取り専用です。

Cosimulation Wizard によって設定された HDL ポート信号の寸法を表示します。

依存関係

このパラメータは、ブロックが Vivado コシミュレーションで使用するために生成された場合にのみ表示されます。

出力ポートに適用される連続サンプル間の時間間隔。

Simulink は、ここで指定されたサンプル レートで、関連付けられた HDL シミュレータ信号から値を読み取ります。

一般に、Simulink はポートのサンプル期間を次のように処理します。

  • 明示的なサンプル周期を持つ信号に入力ポートを接続すると、順方向伝播に基づいて、Simulink はそのレートをポートに適用します。

  • 明示的なサンプル周期を持たない信号に入力ポートを接続すると、Simulink は、モデル内で識別されたすべての入力ポートのサンプル周期の最小公倍数 (LCM) に等しいサンプル周期を割り当てます。

  • 各出力ポートに明示的なサンプル時間を指定する必要があります。

Simulink サンプル時間ヒットに対応する HDL 時間は、Timescales 設定によって異なります。シミュレーションのタイムスケールを参照してください。

依存関係

このパラメータを有効にするには、I/O ModeOutput に設定します。

Inherit を選択すると、データ型が自動的に決定されます。ブロックは、継承されたワード長が HDL シミュレータから照会されたワード長と一致するかどうかをチェックします。一致しない場合は、Simulink はエラー メッセージを生成します。たとえば、Signal Specification ブロックを出力に接続すると、InheritSignal Specification ブロックで指定されたデータ型を出力ポートに強制します。

Simulink は出力ポートに接続された信号のデータ型を判別できない場合、HDL シミュレータにポートのデータ型を照会します。たとえば、HDL シミュレータがサイズ N ビットの信号に対して VHDL® データ型 STD_LOGIC_VECTOR を返す場合、出力ポートにはデータ型 ufixN が強制されます。暗黙の小数部の長さは 0 です。

オプションの Fraction Length を使用して、明示的なデータ型を割り当てることもできます。データ型を明示的に割り当てることで、HDL Cosimulation ブロックの出力ポートに固定小数点データ型を強制することができます。たとえば、8 ビットの出力ポートの場合、SignSigned に設定し、Fraction Length5 に設定すると、データ型は強制的に sfix8_En5 になります。幅を強制することはできません。幅は常に HDL シミュレータから継承されます。

Data Type および Fraction Length プロパティは、次のタイプの HDL 信号にのみ適用されます。

  • VHDL 信号は、STD_LOGICSTD_LOGIC_VECTOR などの任意のロジック タイプです。

  • wire または reg タイプの Verilog® 信号

依存関係

このパラメータを有効にするには、I/O ModeOutput に設定します。

Vivado シミュレータとのコシミュレーション中、このパラメータは Simulink Data Type として表示されます。

明示的な出力ポート データ型の符号指定。

依存関係

このパラメータを有効にするには、I/O ModeOutput に設定し、Data TypeFixedpoint に設定します。

固定小数点出力信号の小数部のサイズ(ビット単位)。たとえば、8 ビットの出力ポートの場合、SignSigned に設定し、Fraction Length5 に設定すると、データ型は強制的に sfix8_En5 になります。幅を強制することはできません。幅は常に HDL シミュレータから継承されます。

依存関係

このパラメータを有効にするには、I/O ModeOutput に設定し、Data Type プロパティを Fixedpoint に設定します。

Data Type および Fraction Length プロパティは、次のタイプの HDL 信号にのみ適用されます。

  • VHDL 信号は、STD_LOGICSTD_LOGIC_VECTOR などの任意のロジック タイプです。

  • wire または reg タイプの Verilog 信号

Simulink ポートのサイズ。129 未満の正の整数として指定します。

入力ポートの場合 — この値は inherit (読み取り専用) に設定されます。

HDL ワード長 パラメータが 128 ビットより大きい場合、Simulink ポートの寸法は、コンパイル時に駆動信号のデータ型によって決定されます。次に例を示します。

  • HDL ワード長 = 150 かつ Simulink ワード長 = 50 の場合、HDL Verifier™ は、データ幅が 50 ビットで、sfix50(3)ufix50(3) などのサイズ 3 の次元を持つ Simulink ポートを許可します。

  • HDL ワード長 = 140 かつ Simulink ワード長 = 50 の場合、HDL Verifier は 150 ビットの Simulink を 140 ビットの HDL にパックします。HDL Verifier は最後のワードの最上位 10 ビット (MSB) を無視します。

    Three Simulink input words of 50 bits each are packed into an HDL input signal of 140 bits. The 10 MSB of the last Simulink word are ignored by the HDL server

出力ポートの場合 — 2 つのケースがあります。

  • HDL ワード長 パラメータが 129 ビット未満の場合、このパラメータは HDL ポートの幅と一致し、読み取り専用になります。

  • HDL ワード長 パラメータが 128 ビットより大きい場合、HDL Verifier はこのポートを表すポートのベクトルを作成します。次に例を示します。

    • HDL ワード長 = 150 かつ Simulink ワード長 = 50 の場合、HDL Verifier はデータ幅が 50 ビットの Simulink ポートを作成します。たとえば、sfix50(3) または ufix50(3) です。

    • HDL ワード長 = 150 かつ Simulink ワード長 = 60 の場合、HDL Verifier は sfix60(3)ufix60(3) など、データ幅が 60 の Simulink ポートを作成します。HDL ワードには 150 ビットしかなく、Simulink ポートには 180 ビットが必要なので、30 ビットがパディングまたは符号拡張されます。

    • HDL ワード長 = 140 かつ Simulink ワード長 = 50 の場合、HDL 出力の 50 ビットごとに Simulink ワードとして表されます。最後の Simulink ワードの上位 10 ビットは未使用で、Sign パラメータに従って拡張されます。

      HDL output signal of 140 bits is packed into three Simulink words of 50 bits each. The last word uses only 40 bits, and 10 bits are extended

依存関係

HDL ワード長が 129 より小さい場合、このパラメータは読み取り専用になります。

この パラメーター は読み取り専用です。

HDL ポートのサイズ (ビット単位)。

Verilog または SystemVerilog の例:以下のコードでは、入力 In1 の HDL ワード長は 140 ビット、出力 Out1 の HDL ワード長は 160 ビットです。

input [1:0][69:0] In1;
output [159:0] Out1;

VHDL の例:以下のコードでは、In1 の HDL ワード長は 120 ビット、In2 の HDL ワード長は 1200 ビットです。

TYPE matrix_of_std_logic_vector120 IS ARRAY (NATURAL RANGE <>, NATURAL RANGE <>) OF std_logic_vector(119 DOWNTO 0);
In1: IN matrix_of_std_logic_vector120(0 TO 4, 0 TO 1);
In2: IN std_logic_vector(1199 DOWNTO 0);

クロック

メモ

Vivado シミュレータとの共同シミュレーション中、このタブの名前は Clocks, Resets, Enables になります。

共同シミュレーション モデルに刺激を適用するオプションの立ち上がりエッジ クロックと立ち下がりエッジ クロックを作成します。スクロール リストには、deposit メソッドを使用してモデル化している HDL 信号に値を駆動する HDL クロックが表示されます。クロック信号はシングルビット信号である必要があります。ベクトル信号はサポートされていません。クロック信号の追加と編集の手順については、HDL コシミュレーション ブロックのクロック ペインでオプションのクロックを作成する を参照してください。

コシミュレーションを開始する前に、HDL シミュレーションの実行に必要な時間を指定します。負でない整数を指定し、メニューから時間単位を選択します。

  • fs – フェムト秒

  • ps – ピコ秒

  • ns – ナノ秒

  • us – マイクロ秒

  • ms – ミリ秒

  • s – 秒

依存関係

このパラメータを有効にするには、Vivado コシミュレーション用にこのブロックを生成します。

HDL シミュレータ パス名構文を使用して、各クロックを信号パス名として指定します。たとえば、/manchester/clk または manchester.clk です。

Simulink のパス仕様の詳細と要件については、Simulink テストベンチコシミュレーション用の HDL 信号/ポートとモジュールパスを指定する を参照してください。

HDL シミュレータの wave ウィンドウから信号パス名を直接コピーし、Full HDL Name フィールドに貼り付けることができます。Db::Path.Name ビューではなく Path.Name ビューを使用してください。信号パス名を Full HDL Name に貼り付けた後、Apply をクリックして貼り付け操作を完了し、信号リストを更新します。

依存関係

ブロックが Cosimulation Wizard から生成された場合、この値は変更しないでください。Vivado HDL コシミュレーション ブロックの場合、パラメーターは読み取り専用です。

次のいずれかのオプションを選択します。

  • Rising – 立ち上がりエッジクロックを指定します。

  • Falling – 立ち下がりエッジクロックを指定します。

期間と継続時間は Simulink 回です。Simulink 時間を HDL 時間に関連付けるには、[Timescales] タブに移動して [Determine Timescale Now] をクリックします。

依存関係

このパラメータは、ModelSim または Xcelium コシミュレーションの場合にのみ表示されます。

Vivado コシミュレーションの場合は、次のいずれかのオプションを選択します。

  • Active Rising Edge Clock – Simulink が入力を駆動するときの立ち上がりエッジがオフセットされる、50% デューティ サイクルの周期信号を作成します。

  • Active Falling Edge Clock – Simulink が入力を駆動するときの下降エッジがオフセットされる、50% デューティ サイクルの周期信号を作成します。

  • Step 0 to 1 – 指定された期間 0 を駆動して開始し、その後 1 に遷移するステップ関数を作成します。

  • Step 1 to 0 – 指定された期間 1 を駆動して開始し、その後 0 に遷移するステップ関数を作成します。

期間と継続時間は Simulink 回です。Simulink 時間を HDL 時間に関連付けるには、[Timescales] タブに移動して [Show Times and Suggest Timescale] をクリックします。

依存関係

このパラメータは、Vivado コシミュレーションでのみ表示されます。

明示的なクロック周期を指定するには、2 つの解像度単位 (ティック) 以上のサンプル時間を入力します。

クロック周期が偶数でない場合、Simulink は 50% のデューティ サイクルを作成できません。代わりに、HDL Verifier ソフトウェアは clockperiod/2 で立ち下がりエッジを作成します (最も近い整数に切り捨てられます)。

ModelSim または Xcelium の場合、期間と期間は Simulink 時間として指定され、Vivado の場合、HDL 時間として指定されます。

タイムスケール

Simulink と HDL シミュレータ間のタイミング関係を手動または自動で選択します。これらのパラメータは、1 秒の Simulink 時間と HDL シミュレータ時間の量との間の対応を指定します。この HDL シミュレータ時間の量は、次のいずれかの方法で表現できます。

  • 相対的タイミング関係 (Simulink 秒は HDL シミュレータの精度、つまり「ティック」に相当します)。

  • 絶対 タイミング関係 (Simulink 秒は HDL シミュレータ時間の絶対単位に対応します)

相対タイミング モードと絶対タイミング モードの計算の詳細については、Simulink と HDL シミュレータのタイミング関係の定義 を参照してください。

協調シミュレーション中の Simulink と HDL シミュレータの関係、および相対タイミング モードと絶対タイミング モードの動作の詳細については、シミュレーションのタイムスケール を参照してください。

すべてのポート、クロック、リセット、およびイネーブルの Simulink 時間と HDL 時間の関係を表示するには、Show Times and Suggest Timescale をクリックします。このアクションは、必要に応じて使用可能なタイムスケールも自動的に決定します。

このオプションを選択すると、HDL Verifier は Simulink シミュレーションを開始するときにタイムスケールを計算します。このオプションが選択されていない場合は、Determine Timescale Now をクリックすると、シミュレーションを開始せずにすぐにタイムスケールが計算されます。Vivado コシミュレーションの場合、このボタンは Show Times and Suggest Timescale として表示されます。あるいは、タイムスケールを手動で選択することもできます。自動タイムスケール計算のガイダンスについては、「タイミング関係を自動的に指定する」を参照してください。

このパラメータは、Time 値と TimeUnit 値で構成されます。

コシミュレーションの相対タイミング モードを構成するには:

  1. TimeUnit のデフォルト設定である Tick が選択されていることを確認します。そうでない場合は、右側のリストから選択してください。

  2. 左側の Time テキスト ボックスにスケール係数を入力します。デフォルトのスケール係数は 1 です。

コシミュレーションの絶対タイミング モードを構成するには:

  1. TimeUnit を絶対時間の単位に設定します: fs (フェムト秒)、ps (ピコ秒)、ns (ナノ秒)、us (マイクロ秒)、ms (ミリ秒)、または s (秒)。

  2. 左側の Time テキスト ボックスにスケール係数を入力します。デフォルトのスケール係数は 1 です。

接続

このタブは、Vivado シミュレータとの共同シミュレーション中は表示されません。

Simulink と HDL シミュレータ間の接続のタイプ。

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

  • Confirm Interface Only:HDL シミュレータに接続し、信号名、次元、データ型を確認しますが、HDL シミュレーションは実行しません。Simulink シミュレーション中は、HDL シミュレータとの接続はありません。

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

両方のアプリケーションが同じコンピューター上で実行される場合、アプリケーション間の通信チャネルとして共有メモリまたは TCP ソケットを選択できます。このオプションを選択しない場合、TCP/IP ソケット モードのみが使用可能になり、Connection method リストは使用できなくなります。

  • Socket: Simulink と HDL シミュレーターは、指定された TCP/IP ソケットを介して通信します。TCP/IP ソケット モードはより汎用性があります。単一システムおよびネットワーク構成に使用できます。このオプションは最大のスケーラビリティを提供します。TCP/IP ソケット通信の詳細については、TCP/IP ソケット ポート を参照してください。

  • Shared memory: Simulink と HDL シミュレータは共有メモリを介して通信します。共有メモリ通信は最適なパフォーマンスを提供し、通信のデフォルト モードです。

依存関係

このパラメータは、HDL Simulator is running on this computer を選択した場合に表示されます。

このパラメータは、Simulink と HDL シミュレータを別のコンピュータで実行する場合に適用されます。

共有メモリを使用していない場合は、コンピュータ システムの有効な TCP ソケット ポート番号またはサービスを指定します。TCP ソケット ポートの選択については、TCP/IP ソケット ポート を参照してください。

このオプションを選択すると、HDL Cosimulation ブロック アイコンに現在の通信パラメータ設定が表示されます。共有メモリを選択した場合、アイコンには SharedMem が表示されます。TCP ソケット通信を選択した場合、アイコンには Socket と表示され、ホスト名とポート番号が hostname:port の形式で表示されます。

この情報は、各ブロックが HDL シミュレータの異なるインスタンスと通信している複数の HDL Cosimulation ブロックを区別するのに役立ちます。

シミュレーション

このタブは、Vivado シミュレータとの共同シミュレーション中は表示されません。

Simulink でシミュレーションを開始する前に HDL シミュレーターを実行する時間を指定します。この時間を指定すると、Simulink ブロックの信号と HDL 信号が適切に整列され、追加の遅延なしで直接比較および検証できるようになります。

この設定は、PreRunTime 値と PreRunTimeUnit 値で構成されます。

  • PreRunTime:任意の有効な時間値。既定の設定は 0 です。

  • PreRunTimeUnit:PreRunTime の時間単位を指定します。

    • Tick

    • s

    • ms

    • us

    • ns

    • ps

    • fs

コシミュレーション ツールは、Simulink モデルの HDL コンポーネントをシミュレートする前に、HDL シミュレータでこれらのコマンドを実行します。1 行に複数のコマンドを入力する場合は、各コマンドの後に標準の Tcl 連結演算子であるセミコロン (;) を追加します。

たとえば、このパラメータを使用して、シミュレーションが実行中であることを確認するための 1 行の echo コマンドを生成したり、広範なシミュレーションの初期化と起動シーケンスを実行する複雑なスクリプトを生成したりできます。これらのコマンドを使用してシミュレーションの状態を変更することはできません。

有効な Tcl コマンドを任意に指定できます。指定する Tcl コマンドには、HDL シミュレータ プロジェクトをロードしたり、シミュレータの状態を変更したりするコマンドを含めることはできません。たとえば、文字ベクトルには、startstoprestart (ModelSim の場合)、または runstopreset (Xcelium の場合) などのコマンドを含めることはできません。

コシミュレーション ツールは、Simulink モデルの HDL コンポーネントをシミュレートした後、HDL シミュレータでこれらのコマンドを実行します。

有効な Tcl コマンドを任意に指定できます。指定する Tcl コマンドには、HDL シミュレータ プロジェクトをロードしたり、シミュレータの状態を変更したりするコマンドを含めることはできません。たとえば、文字列には、startstoprestart (ModelSim の場合)、または runstopreset (Xcelium の場合) などのコマンドを含めることはできません。

メモ

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

拡張機能

バージョン履歴

R2008a で導入