このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。
hdlverifier.VivadoHDLCosimulation
説明
hdlverifier.VivadoHDLCosimulation
System object™ は、Vivado® シミュレータを使用して MATLAB® とハードウェア コンポーネントを共同シミュレーションします。システム オブジェクトは、HDL シミュレーターでシミュレーション中の HDL モデルに入力信号を書き込み、そこから出力信号を読み取ります。この System object を使用して、System object をそれぞれ出力ポートまたは入力ポートのみで構成することにより、ソース デバイスまたはシンク デバイスをモデル化できます。
MATLAB を使用した HDL 協調シミュレーション用の System object を作成するには:
Cosimulation Wizard を使用してカスタマイズされた hdlverifier.VivadoHDLCosimulation オブジェクトを作成します。
オブジェクトをデザイン内の変数に割り当てます。
関数と同様に、引数を指定してオブジェクトを呼び出します。
System object の動作の詳細については、「システム オブジェクトとは?」を参照してください。
作成
hdlverifier.VivadoHDLCosimulation
System object を作成するには、まず Cosimulation Wizard を使用してカスタマイズされた VivadoHDLCosimulation
System object を生成する必要があります。Cosimulation Wizard の出力は hdlcosim_
というファイルです。ここで、toplevel
.mtoplevel
は最上位 HDL モジュールの名前です。次に、ローカル変数に割り当てることで System object を作成できます。
説明
は hdlverifier.VivadoHDLCosimulation System object を作成します。ここで、hdlc
= hdlcosim_topLevel
は最上位 HDL モジュールの名前です。この System object のプロパティは Cosimulation Wizard によって構成されます。この System object は、MATLAB ワークスペース内の HDL シミュレーションへのインターフェースを提供します。topLevel
hdlcosim_
は Cosimulation Wizard を使用して作成および構成されており、これが使用が推奨される構文です。 toplevel
オブジェクトを変数に割り当てた後、値を割り当てることでプロパティを変更できます。たとえば、分数の長さの値を変更するには、次のようにします。
hdlc = hdlcosim_myTopLevel; hdlc.OutputFractionLengths = 10;
Cosimulation Wizard は、既存の HDL コードと HDL 起動スクリプトを使用して hdlverifier.VivadoHDLCosimulation
System object を作成します。簡単に起動するには、Cosimulation Wizard を使用してください。
プロパティ
特に指定がない限り、プロパティは "調整不可能" です。つまり、オブジェクトを呼び出した後にプロパティ値を変更することはできません。オブジェクトは呼び出し時にロックされ、関数 release
でロック解除されます。
プロパティが "調整可能" な場合は、いつでも値を変更できます。
プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計を参照してください。
変更できるのは次のプロパティのみであることに注意してください: OutputSigned
、OutputDataTypes
、OutputFractionLengths
、ClockResetTypes
、ClockResetTimes
、PreRunTime
、SampleTime
。その他のプロパティは Cosimulation Wizard でのみ設定する必要があります。
InputSignals
— HDLコード内の入力パス
''
(既定値) | string | 文字ベクトル | 文字ベクトルの cell 配列
この プロパティ は読み取り専用です。
HDL コード内の入力パス。文字列、文字ベクトル、または文字ベクトルのセル配列として指定されます。パスは HDL 階層の最上位レベルを基準として指定されます。
例: 'data_in'
例: {'/top/in1','/top/in2'}
データ型: char
| cell
| string
OutputSignals
— HDLコードの出力パス
''
(既定値) | string | 文字ベクトル | 文字ベクトルの cell 配列
この プロパティ は読み取り専用です。
HDL コード内の出力パス。文字列、文字ベクトル、または文字ベクトルのセル配列として指定されます。パスは HDL 階層の最上位レベルを基準として指定されます。
例: 'out1'
例: {'out1','out2'}
データ型: char
| cell
| string
OutputDataTypes
— 出力信号のデータ型
''
(既定値) | 'fixedpoint'
| 'double'
| 'single'
出力信号のデータ型。文字ベクトルのセル配列として指定されます。有効なデータ型は 'fixedpoint'
、'double'
、または 'single'
です。
データ型を 1 つだけ指定した場合、各出力は同じデータ型になります。各出力に異なるデータ型を割り当てるには、出力の数と同じサイズのセル配列を指定します。OutputDataTypes
セル配列の各要素は、System object 出力 (hdloutputs
) 内の対応する要素のデータ型を指定します。
例: {'fixedpoint'}
– すべての出力データ型は fixedpoint
です。
例: {'double','single'}
– 最初の出力のデータ型は double
で、2 番目の出力のデータ型は single
です。
メモ
OutputDataTypes
が {'fixedpoint'}
で、ビット幅が組み込みデータ型のサイズ (8、16、32、または 64) と一致し、OutputFractionLengths
が 0
に設定されている場合、出力信号のデータ型はその組み込みデータ型として返されます。
データ型: cell
OutputSigned
— 出力のサイン
false
(既定値) | true
| 論理ベクトル
出力の符号。false
(符号なし)、true
(符号付き)、または論理ベクトルとして指定されます。
true
または false
のみを指定した場合、各出力には対応する符号が付きます。各出力に異なる符号を適用するには、出力の数と同じサイズの論理ベクトルを指定します。OutputSigned
ベクトルの各要素は、System object 出力 (hdloutputs
) 内の対応する要素の符号を指定します。
例: true
– すべての出力には符号付きの値があります。
例: [true,true,false]
— 最初の出力は符号付き値、2 番目の出力は符号付き値、3 番目 (最終) の出力は符号なし値です。
OutputFractionLengths
— 出力小数部の長さ
0
(既定値) | 整数 | 整数のベクトル
出力小数部の長さ(ビット単位)。整数または整数のベクトルとして指定されます。
スカラーのみを指定した場合、各出力は同じ小数部の長さになります。各出力に異なる小数部の長さを適用するには、出力の数と同じサイズのベクトルを指定します。OutputFractionLengths
ベクトルの各要素は、System object 出力 (hdloutputs
) 内の対応する要素の小数部の長さを指定します。
例: 10
— すべての出力の小数部の長さは 10 ビットです。
例: [16,8]
— 最初の出力の小数部の長さは 16 ビットで、2 番目 (および最終) の出力の小数部の長さは 8 ビットです。
ClockResetSignals
— HDLコードで駆動するクロック信号とリセット信号
''
(既定値) | string | 文字ベクトル | string の cell 配列 | 文字ベクトルの cell 配列
この プロパティ は読み取り専用です。
HDL コードで駆動するクロック信号とリセット信号。文字列または N 文字列のセル配列として指定されます。各文字列には、HDL モジュール内のクロック ポートまたはリセット ポートへのパスが含まれています。
例: /inverter/clk
データ型: char
| cell
| string
ClockResetTypes
— 生成するクロックとリセット波形の種類
''
(既定値) | string | 文字ベクトル | string の cell 配列 | 文字ベクトルの cell 配列
生成するクロックおよびリセット波形のタイプ。文字列または文字列のセル配列として指定します。各文字列には、ClockResetSignals
プロパティで指定されたリストに対応するクロックまたはリセット タイプが含まれます。有効なクロックおよびリセット タイプは次の値です。
'Active Rising Edge Clock'
'Active Falling Edge Clock'
'Step 0 to 1'
'Step 1 to 0'
例: Active Rising Edge Clock
データ型: char
| cell
| string
ClockResetTimes
— クロック周期またはステップ関数の持続時間の HDL 時間
{ } (既定値) | 正の整数と時間単位のセル配列 | cell 配列の cell 配列
クロック周期またはステップ関数の持続時間の HDL 時間。正の整数と時間単位のセル配列として指定されます。時間単位の有効な値は次のとおりです。
'fs'
— フェムト秒'ps'
— ピコ秒'ns'
— ナノ秒'us'
— マイクロ秒'ms'
— ミリ秒's'
— 秒数
複数のクロックまたはステップ関数を指定するには、ClockResetSignals
プロパティで指定されたリストに対応するセル配列のセル配列を使用します。
例: {10,'ps'}
は、10 ピコ秒の持続時間を持つ単一クロックまたはステップ関数を指定します。
例: {{10,'ns'}, {8,'ps'}}
は、10 ナノ秒の持続時間と 8 ピコ秒の持続時間の 2 つのクロックを指定します。
データ型: cell
PreRunTime
— コシミュレーション前の HDL シミュレータの遅延
{0,'ns'}
(既定値) | cell 配列
コシミュレーションが開始する前の HDL シミュレーターの遅延。2 つの要素を持つセル配列として指定されます。
最初の要素は、負でない整数として指定される HDL 事前シミュレーション遅延です。
2 番目の要素は時間単位で、
'fs','ps','ns','us','ms'
または's'
のいずれかの文字ベクトルとして指定されます。
例: {10,'fs'}
データ型: cell
SampleTime
— System object の呼び出し間のシミュレータ経過時間
{10,'ns'}
(既定値) | cell 配列
HDL シミュレーターで System object の各呼び出し間の経過時間。2 つの要素を持つセル配列として指定されます。
最初の要素は、System object への 2 回の呼び出し間の時間であり、正の整数として指定されます。
2 番目の要素は時間単位で、文字ベクトルとして指定されます:
'fs','ps','ns','us','ms','s'
。
例: {10,'ns'}
データ型: cell
XSIData
— vivadosimlib.slx
ライブラリへのコシミュレーションインターフェースに一致するデータ構造
struct
この プロパティ は読み取り専用です。
vivadosimlib.slx
ライブラリへのコシミュレーション インターフェイスに一致するデータ構造。XsiData
構造体として指定されます。Cosimulation Wizard を呼び出してこの構造体を作成し、Vivado 協調シミュレーション用にデザインをカスタマイズします。XSIData
には次のフィールドが含まれます。
ProductName
—'EDA Simulator Link VS'
DesignLib
— ダイナミック リンク ライブラリ (DLL) ファイルへのパス。Language
— HDL 言語。0
は Verilog、1
は VHDL を示します。TimePrecision
— 指数として指定される HDL 時間精度 (秒単位)。たとえば、1ピコ秒の時間精度は10^(-12)
秒に相当し、-12と指定されます。HdlSigInfo
— すべての入力と出力の次元と型を含む構造体ResetInfo
— リセット信号の名前、初期値、および持続時間を含む構造体
メモ
この構造体の情報は読み取り専用です。この構造体のいずれかのフィールドを変更するには、Cosimulation Wizard ツールを再実行します。
例: xsiData = struct with fields: ProductName: 'EDA Simulator Link VS' DesignLib: 'xsim.dir/design/xsimk' Language: 1 TimePrecision: -12 HdlSigInfo: [1×2 struct] ResetInfo: [0×0 struct]
データ型: struct
使用法
説明
は HDL シミュレータに接続し、hdloutputs
= hdlc(hdlinputs
)hdlinputs
を HDL シミュレータに書き込み、hdloutputs
を HDL シミュレータから読み取ります。System object の各呼び出し間の経過シミュレーション時間は、SampleTime プロパティによって定義されます。
入力引数
hdlinputs
— HDLシミュレータへの入力
HDL 入力ポートのカンマ区切りの値リスト
HDL シミュレータへの入力。HDL 入力ポートに駆動される値のコンマ区切りリストとして指定されます。HDL 入力ポートは InputSignals プロパティによって設定されます。このコンマ区切りのペアの要素数は、HDL 入力ポートの数と等しくなければなりません。各入力引数値は、対応する HDL 入力ポートに駆動されます。
たとえば、InputSignals
が {'in1','in2'}
として設定されている場合、out = hdlc(input1,input2)
を指定して値 input1
を in1
に、input2
を in2
にします。
例: [RealFft, ImagFft] = hdlc(3,12);
値 3 と 12 は、2 つの入力ポートを持つ HDL シミュレータへの入力として駆動されます。
出力引数
hdloutputs
— HDLシミュレータからの出力
スカラー | ベクトル
HDL シミュレータからの出力。スカラーまたはベクトルとして返されます。返される各要素は、対応する HDL 出力ポートからの出力です。HDL 出力ポートは OutputSignals プロパティで指定されます。返される要素の数は、指定された HDL 出力ポートの数と同じです。たとえば、OutputSignals
が {'out1','out2'}
として設定されている場合、out1
から o1
に値を割り当て、out2
から o2
に値を割り当てるには、[o1, o2] = hdlc(i1,i2)
を指定します。
例: out1 = hdlc(3,12);
は、1 つの出力ポートを持つ HDL シミュレータからの出力値を割り当てます。
例: [RealFft, ImagFft] = hdlc(3,12);
は、2 つの出力ポートを持つ HDL シミュレータからの出力値を割り当てます。この例では、RealFft
は最初のポートからの出力であり、ImagFft
は 2 番目のポートからの出力です。
オブジェクト関数
オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、obj
という名前の System object のシステム リソースを解放するには、以下の構文を使用します。
release(obj)
例
MATLAB システム オブジェクトのコシミュレーション ウィザード
コシミュレーション ウィザードを使用して HDL Verifier™ アプリケーションをセットアップします。
この例では、MATLAB® System object™ と次の HDL シミュレータを使用して、レジスタ転送レベル (RTL) 設計を検証します。
Xilinx® の Vivado® シミュレータ
Mentor Graphics® の ModelSim® または Questa®
Cadence® の Xcelium®
このサンプル設計は、Verilog で記述されたサイズ 8 の高速フーリエ変換 (FFT) です。FFT は、信号の周波数分布を生成するためにデジタル信号処理アプリケーションでよく使用されます。
この FFT の正確さを検証するために、MATLAB System object テストベンチが提供されています。このテストベンチは、テスト対象の HDL 設計 (DUT) に周期的な正弦波入力を生成し、複素平面にフーリエ係数をプロットします。
コシミュレーション ウィザードは、この FFT の提供された Verilog ファイルを入力として受け取ります。また、各ステップでコシミュレーションを設定するために必要なユーザー入力も収集します。例の最後に、Cosimulation Wizard は、構成された HdlCosimulation System object をインスタンス化する MATLAB スクリプト、HDL 設計をコンパイルする MATLAB スクリプト、および Cosimulation 用に HDL シミュレーターを起動する MATLAB スクリプトを生成します。
1. 協調シミュレーションウィザードを起動
MATLAB でこのコマンドを実行して、Cosimulation Wizard ツールを起動します。
cosimWizard
2. 協調シミュレーションタイプを指定する
「コシミュレーション タイプ」ページで、次の手順を実行します。
a.ModelSim を使用している場合は、HDL Simulator を ModelSim
に設定します。
Xcelium を使用している場合は、HDL Simulator を Xcelium
に設定します。
Vivado シミュレータを使用している場合は、HDL シミュレータ を Vivado Simulator
に設定します。
b.HDL コシミュレーションを MATLAB System Object
に設定します。
c. HDL シミュレータ実行ファイルがシステム パス上に表示される場合は、デフォルトの システム パス上の HDL シミュレータ実行ファイルを使用する オプションを変更しないでください。これらの実行ファイルがパス上に表示されない場合は、HDL シミュレータのパスを指定します。
d. [Next] をクリックします。
3. HDLファイルを選択
HDL ファイル ページで、次の手順を実行します。
a.ファイル リストに HDL ファイルを追加します。
追加 をクリックし、サンプル フォルダー内の Verilog ファイル fft_hdl.v と fft_hdl_tc.v を選択します。
ファイル リスト内のファイルを確認して、ファイルの種類が正しく識別されていることを確認します。
b.[Next] をクリックします。
4. HDLコンパイルコマンドを指定する
コシミュレーション ウィザードは、コンパイル コマンド ウィンドウにデフォルトのコマンドを一覧表示します。この例では、これらのコマンドを変更する必要はありません。
ModelSim のコンパイル コマンドは次のとおりです。
[Next] をクリックします。MATLAB コンソールにコンパイル ログが表示されます。コンパイル中にエラーが発生した場合、そのエラーはステータス領域に表示されます。次の手順に進む前にエラーを修正してください。
5. 協調シミュレーション用のHDLモジュールを選択する
シミュレーション オプション ページで、次の手順を実行します。
a.協調シミュレーションの HDL モジュールまたはエンティティの名前を指定します。
ModelSim または Xcelium の場合
リストからfft_hdl
を選択します。このモジュールは、コシミュレーションに使用する Verilog モジュールです。リストに fft_hdl
が表示されない場合は、ファイル名を手動で入力してください。
ModelSim のシミュレーション オプションは次のとおりです。
Vivado シミュレータの場合
Vivado シミュレータの場合、Verilog モジュールの名前がデフォルトで選択されます。Vivado シミュレータのシミュレーション オプションは次のとおりです。
b.[Next] をクリックします。コシミュレーション ウィザードは、指定された HDL モジュールとシミュレーション オプションを使用して、バックグラウンド コンソールで HDL シミュレーターを起動します。ウィザードが HDL シミュレーターを正常に起動すると、ウィザードは Verilog モデル fft_hdl の入力ポートと出力ポートを設定し、次のステップで表示します。
6. 入力/出力ポートの種類を指定する
このステップでは、コシミュレーション ウィザードに、それぞれ fft_hdl の入力ポートと出力ポートを含む 2 つのテーブルが表示されます。
コシミュレーション ウィザードは、各ポートのポート タイプを正しく識別しようとします。ウィザードがポートを誤って識別した場合は、これらのテーブルを使用してポート タイプを変更できます。
入力ポートには、
Clock
、Reset
、Input
、またはUnused
を選択できます。HDL Verifier は、コシミュレーション中にInput
から MATLAB とマークされた入力ポートのみを接続します。HDL Verifier は、コシミュレーション中に
Output
とマークされた出力ポートを MATLAB に接続します。リンク ソフトウェアと MATLAB は、コシミュレーション中にUnused
とマークされた出力ポートを無視します。Clock
およびReset
として識別される信号のパラメータは、後の手順で変更できます。
この例では、デフォルトのポート タイプを受け入れて、次へ をクリックします。
7. 出力ポートの詳細を指定する
この例では、HDL FFT 出力は符号付きで、長さは 13 ビット、小数部の長さは 9 ビットです。出力ポートの詳細ページで、次の手順を実行します。
a.HdlCosimulation System object を使用する場合、サンプル時間 は変更できず、常に 1 に固定されることに注意してください。
b.両方の出力の データ型 を Fixedpoint
に設定します。
c. 両方の入力の Sign を Signed
に設定します。
d. 両方の出力の Fraction Length を 9 に設定します。
e.[Next] をクリックします。
8.時計の設定と詳細のリセット
クロック周期(ns)を20に設定します。Verilog コードは、リセットが同期しており、アクティブな値が 1 であることを示します。クロックの立ち上がりエッジによってトリガーされ、1 ns の時点で HDL 設計全体をリセットできます。リセット信号には 15 ns の持続時間を使用します。「クロック/リセットの詳細」ページで、次の手順を実行します。
a.クロック周期を20
に設定します。
b.アクティブエッジをRising
に設定します。
c. リセット初期値を1
に設定します。
d. リセット信号の持続時間を15
に設定します。
[Next] をクリックします。
9. 開始時間の調整を確認する
開始時間アライメント ページには、クロック信号とリセット信号の波形のプロットが表示されます。コシミュレーション ウィザードは、コシミュレーションを開始する HDL 時間を赤い線で示します。開始時間は、System object が HDL シミュレータから最初の入力サンプルを取得する時間でもあります。クロックのアクティブ エッジは立ち上がりエッジです。したがって、HDL シミュレータの 20 ns の時点で、FFT の登録された出力は安定します。競合状態は存在せず、コシミュレーションを開始するデフォルトの HDL 時間 (20 ns) は正しいです。
[Next] をクリックします。
10. システムオブジェクトの生成
コシミュレーション ウィザードがスクリプトを生成する前に、HDL シミュレータのサンプリング期間を変更するオプションがあります。サンプリング期間は、HDL シミュレーターでステップ イン MATLAB の各呼び出し間で経過する時間を決定します。サンプリング周期は通常、クロック周期と同じです。入力と出力がサンプルベースではなくフレームベースであるかどうかも指定できます。
コシミュレーション ウィザード セッションを完了するには、[完了] をクリックします。
11. HDL設計を検証するためのテストベンチを作成する
この例では、実際にテストベンチを作成するわけではありません。代わりに、完成したスクリプト fft_tb.m は、Verilog ファイルが存在するディレクトリにあります。
コシミュレーション ウィザードで [完了] をクリックすると、アプリケーションは現在のディレクトリに 3 つの MATLAB スクリプトを生成します。
ModelSimおよびXceliumの場合
compile_hdl_design_fft_hdl.m:HDL 設計を再コンパイルします。
launch_hdl_simulator_fft_hdl.m:MATLAB System object サーバーを再起動し、HDL シミュレーターを起動します。
hdlcosim_fft_hdl.m:HdlCosimulation System object を作成します。
Vivadoシミュレータ用
hdlverifier_compile.m:HDL 設計を再コンパイルします。
hdlverifier_gendll_fft_hdl.m:System object の動作に統合された HDL 設計およびシミュレーション カーネルを含むコンパイル済み共有ライブラリを作成します。
hdlcosim_fft_hdl.m:HdlCosimulation System object を作成します。
Verilog ファイルと同じディレクトリにあるファイル fft_tb.m と hdlcosim_fft_hdl.m を開き、HdlCosimulation System object 呼び出しを確認します。hdlcosim_fft_hdl.m には HdlCosimulation インスタンス化が含まれ、fft_tb.m には MATLAB System object テスト ベンチが含まれます。このテスト ベンチを使用して、対応する HdlCosimulation System object の HDL 設計を検証します。
12.コシミュレーションを実行してHDL設計を検証する
ModelSim および Xcelium の場合
スクリプト launch_hdl_simulator_fft_hdl.m を実行して HDL シミュレーターを起動します。
launch_hdl_simulator_fft_hdl
HDL シミュレータの準備ができたら、MATLAB に戻り、スクリプト fft_tb.m を実行してシミュレーションを開始します。
fft_tb
Vivado シミュレータの場合
スクリプト fft_tb.m を実行してシミュレーションを開始します。
fft_tb
テストベンチのプロットから結果を確認します。プロットは複素平面上のフーリエ係数を表示します。
参考
バージョン履歴
R2022a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)