Main Content

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

MATLAB-HDL コシミュレーションを実行します。

MATLABコシミュレーションの実行プロセス

MATLAB®環境でシミュレーションの実行を開始および制御するには、次の手順を実行します。

MATLAB協調シミュレーション サーバーのリンク ステータスを確認する

HDL シミュレーターとMATLABテストベンチまたはコンポーネント関数セッションを開始する最初のステップは、MATLABサーバーのリンク ステータスをチェックすることです。サーバーは稼働していますか?サーバーが実行中の場合、サーバーはリンクにどのような通信モードを使用しているか、また該当する場合はどの TCP/IP ソケット ポートを使用していますか?この情報は、 MATLABオプションを指定してhdldaemon関数'status' を使用することで取得できます。以下に例を示します。

hdldaemon('status')

この関数は、サーバーが実行されているかどうか、およびサーバーが実行されている場合は処理している接続の数を示すメッセージを表示します。以下に例を示します。

HDLDaemon socket server is running on port 4449 with 0 connections

サーバーが実行されていない場合は、次のようなメッセージが表示されます。

HDLDaemon is NOT running

オプションを参照してください。通信モードと使用中の TCP/IP ソケットの決定に関する情報については、 hdldaemonリファレンス ドキュメントの「入力」セクションを参照してください。

協調シミュレーションの実行

MATLABと HDL シミュレーター GUI (通常) の両方を使用して協調シミュレーション セッションを実行できます。また、メモリ需要を軽減するために、コマンド ライン インターフェイス (CLI) またはバッチ モードを使用して協調シミュレーションを実行することもできます。

HDL シミュレータ GUI を使用したMATLABとのコシミュレーション

次の手順では、HDL シミュレータのメイン ウィンドウから対話的にシミュレーションを実行するための一般的なシーケンスを説明します。

  1. HDL およびMATLABコードにブレークポイントを設定して、シミュレーションの進行状況を確認および分析します。

    HDL シミュレーターでブレークポイントを設定する方法は、使用しているシミュレーター アプリケーションによって異なります。

    MATLABでは、ブレークポイントを設定する方法がいくつかあります。たとえば、ツールバーのSet/Clear Breakpointボタンを使用します。

  2. HDL シミュレータ プロンプトでmatlabtbコマンドを発行します。

    特定のテストベンチまたはコンポーネント セッションを開始するときは、次の情報を識別するパラメーターを指定します。

    以下に例を示します。

    hdlsim> matlabtb osc_top -sensitivity /osc_top/sine_out
          -socket 4448 -mfunc hosctb
  3. HDL シミュレータrunコマンドを入力してシミュレーションを開始します。

    runコマンドは、シミュレーションの実行方法を制御するためのさまざまなオプションを提供します (詳細については、HDL シミュレーターのドキュメントを参照してください)。たとえば、シミュレーションを複数のタイム ステップで実行するように指定できます。

    次のコマンドは、ロードされたシミュレーションを 50000 タイム ステップで実行するように HDL シミュレーターに指示します。

    run 50000
    
  4. シミュレーションをステップ実行して値を調べます。

    HDL シミュレーターでシミュレーションを実行する方法は、使用しているシミュレーター アプリケーションによって異なります。

    MATLABでは、コードをステップ実行する方法がいくつかあります。たとえば、 Stepツールバー ボタンをクリックします。

  5. MATLAB関数の実行をブロックすると、HDL シミュレーターもブロックされ、関数のコード内のすべてのブレークポイントをクリアするまでブロックされたままになります。

  6. 必要に応じてシミュレーションを再開します。

    HDL シミュレーターでシミュレーションを再開する方法は、使用しているシミュレーター アプリケーションによって異なります。

    MATLABでは、シミュレーションを再開する方法がいくつかあります。たとえば、 Continueツールバー ボタンをクリックします。

    次の HDL シミュレーター コマンドはシミュレーションを再開します。

    run -continue
    

HDL シミュレータとMATLAB のデバッグ機能の詳細については、HDL シミュレータのドキュメントとMATLAB のオンライン ヘルプまたはドキュメントを参照してください。

コマンド ライン インターフェイス (CLI) を使用したMATLABとの協調シミュレーション

コマンド ライン インターフェイスを使用して協調シミュレーション セッションを実行すると、協調シミュレーション中に HDL シミュレーターと対話できるため、デバッグに役立ちます。

CLI を使用するには、 HDL Verifier™ HDL シミュレーター起動コマンドの実行モードパラメーターのプロパティ値として「CLI」を指定します。

HDL シミュレーターの起動コマンドに渡すために作成する Tcl コマンドには、run コマンドが含まれている必要があります。含まれていないと、協調シミュレーションは行われません。

注意

コマンド プロンプトでquit -fと入力して、ターミナル ウィンドウを閉じます。右上隅の「X」をクリックしてターミナル ウィンドウを閉じないでください。これにより、システムからメモリ系エラーが発行されます。これはHDL Verifierのバグではなく、このコンテキストでの HDL シミュレーターの動作に問題はありません。

CTRL+C を入力すると、HDL シミュレータでシミュレーションを中断して終了できますが、このアクションメモリ タイプ エラーが表示されることもあります。

 nclaunch (Cadence Xcelium) で CLI モードを指定します。

 vsim (Mentor Graphics ModelSim) で CLI モードを指定します。

バッチ モードを使用したMATLABとの協調シミュレーション

バッチ モードで協調シミュレーション セッションを実行すると、プロセスをバックグラウンドで維持できるため、GUI が切断されてメモリの需要が軽減されます。

バッチモードを使用するには、 HDL Verifier HDL シミュレータ起動コマンドの実行モードパラメーターのプロパティ値として「Batch」を指定します。バッチ モードを指定してHDL Verifier HDL シミュレータ起動コマンドを発行した後、 Simulink®でシミュレーションを開始します。シミュレーションが完了する前に HDL シミュレーターを停止するには、 breakHdlSimコマンドを発行します。

 nclaunch (Cadence Xcelium) でバッチ モードを指定します。

 vsim (Mentor Graphics ModelSim) でバッチ モードを指定します。

Force コマンドを使用して刺激を協調シミュレーション セッションに適用する

HDL シミュレーターとMATLABの間の接続を確立した後、テストベンチまたはコンポーネントの協調シミュレーション環境にスティミュラスを適用できます。刺激を適用する 1 つの方法は、リンクされた iport関数のMATLABパラメーターを使用することです。このパラメーターは、デポジットによって信号値を強制します。

スティミュラスを適用するその他の方法には、HDL シミュレーターのメイン ウィンドウでforceコマンドを発行することが含まれます ( ModelSimの場合は、 EditClockオプションを使用することもできます) ModelSim Signalsウィンドウ内)。

たとえば、次のforceコマンドのシーケンスを考えてみましょう。

  • Xcelium™

    force osc_top.clk_enable 1 -after 0ns
    force osc_top.reset 0 -after 0ns 1 -after 40ns 0 -after 120ns
    force osc_top.clk 1 -after 0ns 0 -after 40ns -repeat 80ns
    
  • ModelSim

    VSIM n> force clk 0 0 ns, 1 5 ns -repeat 10 ns
    VSIM n> force clk_en 1 0
    VSIM n> force reset 0 0
    

これらのコマンドは次の信号を駆動します。

  • clk信号は、現在のシミュレーション時間の 0 ナノ秒後に 0 になり、現在の HDL シミュレーション時間の 5 ナノ秒後に 1 になります。このサイクルは、現在のシミュレーション時間の 10 ナノ秒後に開始して繰り返され、次の図に示すように、5 ナノ秒ごとに 1 から 0、および 0 から 1 への遷移が発生します。

    以下に例を示します。

    force /foobar/clk   0 0, 1 5 -repeat 10
  • clk_en信号は、現在のシミュレーション時間の 0 ナノ秒後に 1 になります。

  • reset信号は、現在のシミュレーション時間の 0 ナノ秒後に 0 になります。

Xceliumユーザー:force コマンドの代わりに HDL を使用してクロック信号をコーディングする

forceは、 Cadence® Xceliumシミュレータの現在のバージョンではパフォーマンスが低いソリューションであるため、HDL を使用してクロック信号をコーディングすることを検討する必要があります。

周期的な力が導入される可能性のある方法は次のとおりです。

  • HDL Cosimulation ブロックの Clock ペイン経由

  • HDL コシミュレーション ブロックの pre/post Tcl コマンド経由

  • ユーザー入力の Tcl スクリプト経由でxmsimに送信

3 つのアプローチはいずれもパフォーマンスの低下につながる可能性があります。

シミュレーションを再開する

HDL シミュレーターはMATLAB協調シミュレーション セッション中にサービス要求を発行するため、HDL シミュレーターからセッションを再開する必要があります。セッションを再開するには、次の手順を実行します。

  1. HDL シミュレーターをアクティブ ウィンドウにします (入力フォーカスがそのアプリケーションにまだ設定されていない場合)。

  2. HDL デザイン要素をリロードし、シミュレーション時間をゼロにリセットします。

  3. matlabtbまたはmatlabcpコマンドを再発行します。

メモ

進行中のシミュレーションを再開するには、新しいセッションを再開する前に、break コマンドを発行して現在のシミュレーション セッションを終了します。

シミュレーションの中止

テストベンチまたはコンポーネント セッションを停止する準備ができたら、ファイルの破損の可能性を回避し、すべてのアプリケーション タスクが正常にシャットダウンされることを確認するために、秩序ある方法で停止することが最善です。次のようにセッションを停止する必要があります。

  1. HDL シミュレーターをアクティブ ウィンドウにします (入力フォーカスがそのアプリケーションにまだ設定されていない場合)。

  2. シミュレーションを停止します。HDL シミュレータ側でシミュレーションを終了する必要があります。そうしないと、シミュレータが終了するまでMATLABがハングする可能性があります。

  3. プロジェクトを閉じます。

  4. アプリケーションの使用が終了したら、HDL シミュレーターを終了します。

  5. アプリケーションを終了したら、 MATLABを終了します。サーバーを手動でシャットダウンする場合は、 'kill'hdldaemonを呼び出してサーバーを停止します。

    hdldaemon('kill')

HDL シミュレーター セッションの終了の詳細については、HDL シミュレーターのドキュメントを参照してください。