Main Content

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

MATLAB Testベンチを使用したフィルター コンポーネントのテストのためのコシミュレーション

この例では、Mentor Graphics® ModelSim® および Questa® または Cadence® Xcelium™ をMATLAB®とともにバッチ モードで実行し、 HDL Verifier™関数matlabtbを使用してMATLABテストベンチを使用して HDL コンポーネントをテストする方法を示します。 $。関数matlabtb は、 MATLABで生成された入力データを HDL コンポーネントに送り、コンポーネントからの出力をMATLABに戻すことにより、このテストを容易にします。HDL で複雑な波形を生成する場合、 matlabtbを使用すると、テスト波形の作成よりもテストの実行に多くの時間を費やすことができます。 matlabtbも結果を読み取るため、テスト プロセスではMATLABを利用して、プロットする前に出力にデータ変換を適用できます。協調シミュレーション用のテストベンチの作成の詳細については、 「 Create a MATLAB Test Bench 」を参照してください。

設計作業

この例では、HDL テスト対象デザイン (DUT) のMATLABテスト ベンチを作成します。HDL シミュレーター内からテストベンチを呼び出します。テストベンチは、HDL シミュレーターおよびMATLABのコマンド ラインから実行します。

MATLAB は調整可能な周波数の正弦波を生成し、それが Verilog® に実装されたローパス フィルターに供給されます。 matlabtb は、プロットのためにフィルター出力をMATLABに渡します。このテスト プロセスは、 MATLABおよびコマンド ライン モードの HDL シミュレーターで実行できます。この図はシミュレーションの概要を示しています。

この例では HDL 開発者の視点を考慮しているため、この例の主な重点は、HDL シミュレーターとコマンド ライン ターミナルを使用してテストを実行することと、入力の提供と出力の解釈の補助としてMATLABを使用することにあります。

デザインファイルとスクリプトファイルの概要

この例では、デザイン ファイルとスクリプト ファイルの 2 種類のファイルを使用します。

「デザインファイル」

  • ファイルcosim_lowpass_filter.vには、サンプル時間 10 ns (サンプル レート 100 MHz)、通過帯域 Fpass = 20 MHz、阻止帯域 Fstop = 25 MHz のローパス フィルターが含まれています。 。

  • ファイルcosim_lowpass_filtertb.m には、このローパス フィルターのMATLABテスト ベンチが含まれています。テストベンチは、変数ticksおよびfrequencyを使用して、出力を解釈してプロットする前にフィルターに渡す正弦波を作成します。

「スクリプトファイル」

  • ファイルqcommands_cosim.tcl には、協調シミュレーションを実行するために ModelSim/QuestaSim に送信される TCL コマンドが含まれています。

  • ファイルtclcmd_cosim_xc.m には、コシミュレーションを実行するために Xcelium に送信される TCL コマンドが含まれています。

この例では、HDL シミュレーターの実行可能ファイルとMATLAB をターミナルから実行するため、この例が機能するには、これらをシステム パスに含める必要があります。

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

コシミュレーションを開始するには、 MATLABを開き、HDL シミュレーターとMATLAB間の通信用のhdldaemonコマンドを実行します。これらのアクションを完了するには、オペレーティング システムに基づいて次のコマンドを使用します。

  • Windows: matlab -nodesktop -r "hdldaemon"

  • Linux: xterm -e "matlab -nodesktop -r "hdldaemon"" &

このコマンドは、HDL Link MATLABサーバーが起動している間に、 MATLAB を別のターミナルでヘッドレス モードで開きます。MATLAB を実行している端末には次のメッセージが表示されます。

"HDLDaemon shared memory server is running with 0 connections"

このメッセージが表示されたら、 MATLABコマンド プロンプトで次のコマンドを入力します。

global frequency;
global ticks;
frequency = 1e6;
ticks = 0;

これらのコマンドは、テストベンチ ファイルcosim_lowpass_filtertb.mを制御する 2 つの変数を定義し、初期化します。変数frequency はテストベンチによって送信された入力波の周波数を表し、変数ticks はシミュレーションが開始されてからシミュレータが使用されたまでの経過時間を示します。出力をプロットします。

次に、協調シミュレーションを開始します。適切なコマンド (シミュレーターとオペレーティング システムに基づく) をMATLABコマンド ウィンドウに入力します。

モデルシム/クエストシム

  • Windows と Linux:

ModelSim/QuestaSim を起動し、次のコマンドを入力してシミュレーターで TCL コマンドを実行します。

vsim('tclstart','do qcommands_cosim.tcl');

「エクセリウム」

  • Linux:

1. MATLABコマンド プロンプトで次のコマンドを入力して、 MATLABスクリプトtclcmd_cosim_xc.mを実行します。

tclcmd_cosim_xc;

2.MATLABコマンド プロンプトで次のコマンドを入力して、Xcelium をバッチ モードで起動します。

nclaunch('tclstart', tclcmds);

協調シミュレーションが完了すると、 MATLAB はこれらの図のように、フィルター処理された結果とフィルター処理されていない結果をプロットする必要があります。

Verilog に実装されたローパス フィルターの出力は、振幅がわずかに低下するだけで、入力信号とほぼ同じであることがわかります。低周波数 (1 MHz) の正弦波が Verilog に実装されたローパス フィルターを通過するため、これは予想されます。

パラメーターを調整してコシミュレーションを再実行する

MATLABテストベンチからの異なる入力を使用してシミュレーションを再度実行する場合、HDL シミュレーターまたはMATLAB自体を再起動する必要はありません。代わりに、前に定義した 2 つの変数ticksfrequencyを調整します。frequency を目的の値に変更し、 ticks0にリセットした後、HDL ターミナル ウィンドウ内からシミュレーションを実行して、新しい結果。

たとえば、 MATLABコマンド プロンプトで次のコマンドを入力して、 frequencyを変更し、 ticksをリセットします。

frequency = 25e6;
ticks = 0;

次に、HDL シミュレーターを実行しているターミナルで次のコマンドを入力します。

run 10000ns

より高い周波数 (25 MHz) の正弦波信号の振幅が、Verilog に実装されたローパス フィルターによって減少していることに注目してください。

概要

この例では、 MATLABで ModelSim/QuestaSim または Xcelium を使用し、入力波の特性を調整してシミュレーションを更新および実行する方法を示します。MATLAB は、ターミナルでMATLABを実行する場合でも、入力の特性を定義および制御し、出力を表示します。MATLAB をHDL シミュレーターと組み合わせて使用​​すると、多くのテストを迅速に実行できます。

この例では、変数frequencyのみが入力を制御します。ただし、 MATLABを使用すると、これらの波形を協調シミュレーション テストで使用する前に、多数の複雑なテスト波形を生成し、結果を表示することができます。MATLABを使用してこれらのテスト波形を作成すると、さまざまなテスト波形の構築と追加に必要な時間が削減され、シミュレーション結果を視覚的なデータに処理するのに必要な時間が削減されるため、設計プロセスが合理化されます。

参考

matlabtb hdldaemon vsim nclaunch

関連するトピック

著作権 2009-2023 The MathWorks, Inc.