メインコンテンツ

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

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 シミュレータのドキュメントを参照してください)。たとえば、シミュレーションを複数の時間ステップで実行するように指定できます。

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

    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 コマンドには、実行コマンドが含まれている必要があります。含まれていない場合、コシミュレーションは実行されません。

注意

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

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

 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 つの方法は、リンクされた MATLAB 関数の iport パラメータを使用することです。このパラメータは、デポジットによって信号値を強制します。

刺激を適用する他の方法としては、HDL シミュレータのメイン ウィンドウで force コマンドを発行する方法があります (ModelSim の場合は、ModelSim Signals ウィンドウで EditClock オプションを使用することもできます)。

たとえば、次の 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
  • 現在のシミュレーション時間から 0 ナノ秒後に clk_en 信号を 1 にします。

  • 現在のシミュレーション時間から 0 ナノ秒後に reset 信号を 0 にします。

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

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

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

  • HDLコシミュレーションブロックのクロックペイン経由

  • HDLコシミュレーションブロックのTclコマンドの前後を介して

  • xmsimへのユーザー入力Tclスクリプト経由

これら 3 つのアプローチはすべて、パフォーマンスの低下につながる可能性があります。

シミュレーションを再開

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

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

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

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

メモ

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

Stop Simulation

テストベンチまたはコンポーネント セッションを停止する準備ができたら、ファイルの破損を防ぎ、すべてのアプリケーション タスクが正常にシャットダウンされるように、順序正しく停止することが最善です。セッションを停止するには、次のようにします。

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

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

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

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

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

    hdldaemon('kill')

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