このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
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 シミュレーター ウィンドウからインタラクティブにシミュレーションを実行するための一般的なシーケンスについて説明します。
シミュレーションの進行状況を確認および分析するには、HDL および MATLAB コードにブレークポイントを設定します。
HDL シミュレータでブレークポイントを設定する方法は、使用しているシミュレータ アプリケーションによって異なります。
MATLAB では、ブレークポイントを設定する方法はいくつかあります。たとえば、ツールバーの Set/Clear Breakpoint ボタンを使用する方法があります。
HDL シミュレータ プロンプトで
matlabtb
コマンドを発行します。特定のテストベンチまたはコンポーネント セッションを開始するときに、次の情報を識別するパラメータを指定します。
MATLAB サーバーに接続するためのモードと、該当する場合は TCP/IP データ (
matlabtb
リファレンスを参照)HDL インスタンスに関連付けられ、HDL インスタンスに代わって実行される MATLAB 関数。HDL モジュール コンポーネントを MATLAB テスト ベンチ関数にバインドするを参照してください。
モジュールの MATLAB 関数がいつ呼び出されるかを指定するタイミング仕様およびその他の制御データ。テストベンチセッションのスケジュールオプションを参照してください。
次に例を示します。
hdlsim> matlabtb osc_top -sensitivity /osc_top/sine_out -socket 4448 -mfunc hosctb
HDL シミュレータ
run
コマンドを入力してシミュレーションを開始します。run
コマンドは、シミュレーションの実行方法を制御するためのさまざまなオプションを提供します (詳細については、HDL シミュレータのドキュメントを参照してください)。たとえば、シミュレーションを複数の時間ステップで実行するように指定できます。次のコマンドは、HDL シミュレータに、ロードされたシミュレーションを 50000 タイム ステップ実行するように指示します。
run 50000
シミュレーションをステップ実行して値を調べます。
HDL シミュレーターでシミュレーションを実行する方法は、使用しているシミュレーター アプリケーションによって異なります。
MATLAB では、コードをステップ実行する方法がいくつか用意されています。たとえば、Step ツールバー ボタンをクリックする方法があります。
MATLAB 関数の実行をブロックすると、HDL シミュレーターもブロックされ、関数のコード内のすべてのブレークポイントをクリアするまでブロックされたままになります。
必要に応じてシミュレーションを再開します。
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 と入力してシミュレーションを中断して終了できますが、この操作によってもメモリ タイプ エラーが表示されます。
バッチモードを使用したMATLABとのコシミュレーション
コシミュレーション セッションをバッチ モードで実行すると、プロセスをバックグラウンドで維持でき、GUI を解除することでメモリの需要が軽減されます。
バッチ モードを使用するには、HDL Verifier HDL シミュレータ起動コマンドの実行モード パラメータのプロパティ値として "Batch" を指定します。バッチ モードを指定して HDL Verifier HDL シミュレータ起動コマンドを発行した後、Simulink® でシミュレーションを開始します。シミュレーションが完了する前に HDL シミュレータを停止するには、breakHdlSim
コマンドを発行します。
force コマンドを使用してコシミュレーションセッションに刺激を適用する
HDL シミュレータと MATLAB 間の接続を確立したら、テスト ベンチまたはコンポーネント コシミュレーション環境に刺激を適用できます。刺激を適用する 1 つの方法は、リンクされた MATLAB 関数の iport
パラメータを使用することです。このパラメータは、デポジットによって信号値を強制します。
刺激を適用する他の方法としては、HDL シミュレータのメイン ウィンドウで force
コマンドを発行する方法があります (ModelSim の場合は、ModelSim Signals ウィンドウで Edit 、 Clock オプションを使用することもできます)。
たとえば、次の 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 シミュレータからセッションを再開する必要があります。セッションを再開するには、次の手順を実行します。
入力フォーカスがまだそのアプリケーションに設定されていない場合は、HDL シミュレータをアクティブ ウィンドウにします。
HDL 設計要素を再ロードし、シミュレーション時間をゼロにリセットします。
matlabtb
またはmatlabcp
コマンドを再発行します。
メモ
進行中のシミュレーションを再開するには、break コマンドを発行して現在のシミュレーション セッションを終了してから、新しいセッションを再開します。
Stop Simulation
テストベンチまたはコンポーネント セッションを停止する準備ができたら、ファイルの破損を防ぎ、すべてのアプリケーション タスクが正常にシャットダウンされるように、順序正しく停止することが最善です。セッションを停止するには、次のようにします。
入力フォーカスがまだそのアプリケーションに設定されていない場合は、HDL シミュレータをアクティブ ウィンドウにします。
シミュレーションを停止します。HDL シミュレータ側でシミュレーションを終了する必要があります。そうしないと、シミュレータが終了するまで MATLAB がハングする可能性があります。
プロジェクトを閉じます。
アプリケーションが終了したら、HDL シミュレーターを終了します。
アプリケーションの使用が終了したら、MATLAB を終了します。サーバーを手動でシャットダウンする場合は、
'kill'
オプションを指定してhdldaemon
を呼び出してサーバーを停止します。hdldaemon('kill')
HDL シミュレータ セッションを閉じる方法の詳細については、HDL シミュレータのドキュメントを参照してください。