チュートリアル: テストベンチを作成する
- 更新日2025-03-06
- 12分で読める
このトピックのチュートリアルには、値を反転する簡単なFPGA VIのテストベンチの作成の手順が記載されています。テストベンチの論理は、テストするFPGA VIの論理により異なりますが、このチュートリアルには一般的な手順が記載されています。チュートリアルには、VIの作成についての知識が必要です。
テスト用のFPGA VIを作成する
このチュートリアルでテストするFPGA VIを作成するには、以下の手順に従ってください。
- LabVIEWプロジェクトを作成し、プロジェクトをinverter.lvprojという名前で保存します。
- プロジェクトにFPGAターゲットを追加します。
- FPGAターゲットを右クリックし、ショートカットメニューから新規→VIを選択して、新規FPGA VIを追加します。
- FPGA VIをInverter.viという名前で保存します。
- 2つのデジタルFPGA I/O項目、入力および出力を作成します。
- プロジェクトエクスプローラウィンドウからFPGA I/O項目をInverter VIのブロックダイアグラムにドラッグして、対応するFPGA I/Oノードを作成します。
- FPGA I/Oノードで出力を右クリックし、ショートカットメニューから書き込みに変更を選択します。
- 以下のブロックダイアグラムに示すように、FPGA I/OノードをWhileループの内側に配置して、ノードを配線します。
Inverter VIの目的は、デジタルラインの読み取り、値の反転、そして反転した値を別のデジタルラインに書き込むことです。ブロックダイアグラムにエラーが含まれていることに注意してください。ブロックダイアグラムのFPGA I/Oノードの間に、「Not」関数がありません。
乱数データを使用して、開発用コンピュータでFPGA VIをテストする
入力に乱数データを使用してFPGA VIの論理をテストするには、以下の手順に従ってください。
- FPGAターゲットを右クリックして、ショートカットメニューからプロパティを選択します。
- FPGAターゲットプロパティダイアログボックスで、カテゴリリストから実行モードを選択し、実行モードページを表示します。
- シミュレーションプルダウンメニューで、シミュレーションI/Oを使用を選択します。
- OKボタンをクリックします。
- FPGA VIのブロックダイアグラムで、2つのFPGA I/Oノードを接続するワイヤを右クリックし、ショートカットメニューからプローブを選択して、プローブを作成します。
- FPGA VIを実行します。プローブは、TRUEおよびFALSEの値をランダムに示します。
- FPGA VIを停止します。
カスタムVIを使用して、開発用コンピュータでFPGA VIをテストする
カスタムVIテストベンチを使用してFPGA VIをテストするには、以下の手順に従ってください。
- FPGAターゲットプロパティダイアログボックスの実行モードページで、シミュレーションプルダウンメニューからFPGA I/Oの代わりにカスタムVIを使用を選択します。
- テンプレートから新規VIを作成ボタンをクリックして、カスタムVIをSimulated IO for Inverter.viという名前で保存します。
- VIを現在のプロジェクトに追加するかどうかを訊ねるダイアログで追加ボタンをクリックします。LabVIEWがプロジェクトのマイ コンピュータの下にカスタムVIを追加します。
- Simulated IO for Inverter VIのブロックダイアグラムを開き、VIのコメントを読んで、ブロックダイアグラムの混雑を減らすためにコメントを削除します。Simulated IO for Inverter VIのブロックダイアグラムは、以下の図のように表示されます。
- I/O項目名 (I/O Item Name) ケースストラクチャを右クリックして、ショートカットメニューからケースを複製を選択してください。
- セレクタラベルに入力と入力します。FPGA VIが入力という名前のI/O項目のFPGA I/Oノードを呼び出すと、入力ケースが実行されます。 メモ FPGA VIにCLIPを使用してデータを渡す場合、CLIP I/O名に対して追加の¥コードをセレクタラベルに配置する必要があります。たとえば、CLIP I/O項目がCLIP¥Port Aの場合、セレクタラベルにCLIP¥¥Port Aを入力する必要があります。最初の¥コードは、2番目の¥コードのエスケープ文字の役割を果たします。
- ノードまたは要素タイプケースストラクチャを右クリックして、ショートカットメニューからケースを複製を選択します。Read I/Oケースが選択されます。このケースは、入力という名前のI/O項目を読み取るために構成されたFPGA I/Oノードに対して実行されます。
- Read Support Error VIをケースから削除して、ケースストラクチャを介してシミュレーションI/O情報入力およびエラー出力を配線します。
- 以下のブロックダイアグラムに示すように、空の配列をTRUE定数、「バリアントへ変換」関数、および「配列連結追加」関数に置換します。
- Inverter VIを実行します。TRUE定数をSimulated IO for Inverter VIに含めたため、2つのFPGA I/Oノード間のワイヤ上のプローブにTRUEの値が示されています。LabVIEWはまた、出力という名前のI/O項目用に構成されたFPGA I/Oノードの動作が指定されていないことを示すエラーメッセージを返します。
出力I/O項目をテストする
- プロジェクトエクスプローラウィンドウで、マイ コンピュータを選択してからファイル→新規を選択し、新規ダイアログボックスを表示します。
- 他のファイルフォルダからグローバル変数を選択して、新規グローバルVIを作成します。
- グローバルVIをTest Bookkeepingという名前で保存します。
- 失敗という名前のブール表示器を、Test Bookkeeping VIのフロントパネルに追加します。失敗表示器は、グローバル変数です。
- Simulated IO for Inverter VIのブロックダイアグラムで、I/O項目名ケースストラクチャの入力ケースをクリックし、ショートカットメニューからケースを複製を選択します。ケースに出力という名前を付けます。
- ノードまたは要素タイプケースストラクチャで、Read I/Oケースを選択し、セレクタをダブルクリックして、Write I/Oを入力します。このケースは、出力という名前のI/O項目でFPGA I/Oノードに対して実行されます。
- バリアントトンネルの配列に送信されるコードを削除し、以下のブロックダイアグラムに示すように、「指標配列」関数、「バリアントからデータに変換」関数、そして失敗グローバル変数を含むケースストラクチャを追加します。TRUE値を入力I/O項目に指定したため、Inverter VIのコードが正しい場合は、Inverter VIが出力I/O項目に書き込む値はFALSEである必要があります。そのため、Inverter VIが出力I/O項目にTRUEを書き込むと、テストは失敗します。
- Inverter VIを実行して、Test Bookkeeping VIを監視します。失敗表示器がTRUEで、テストに失敗したことを示しています。
- Inverter VIを停止します。
- Inverter VIの問題を修正するには、以下のブロックダイアグラムに示すように、「Not」関数を追加します。
- Test Bookkeeping VIで、失敗表示器を右クリックし、ショートカットメニューからデータ操作→デフォルト設定に戻すを選択します。ここでInterter VIを実行すると、失敗表示器はFALSEのままで、テストが失敗していないことを示します。
より複雑なカスタムVIでFPGA VIをテストする
順次指定した10個の入力値に対してInterter VIが正しく動作するかをテストするには、以下の手順に従ってください。
- プロジェクトエクスプローラウィンドウでマイ コンピュータを右クリックし、ショートカットメニューから新規→VIを選択します。
- VIをTest Stimulus.viという名前で保存します。
- 以下のブロックダイアグラムに示すように、Test Stimulus VIを更新します。
- このチュートリアルで後にVIをサブVIとして使用するために、Test Stimulus VIのコネクタペーンを作成します。
- Test Bookkeeping VI内で、32ビット符号付き整数の刺激指標制御器を追加します。また、以下のフロントパネルに示すように、テスト完了ブール表示器も追加します。
- Simulated IO for Inverter VIで、実行ステージ (Execution Stage) ケースストラクチャのInitializingケースを更新して、以下のブロックダイアグラムに示すように、Test Bookkeeping VIからのグローバル変数を初期化します。実行ステージ (Execution Stage) ケースストラクチャの各ケースのために、LabVIEWはカスタムVIのクローンを作成します。異なるケース間でデータを共有する場合、以下のブロックダイアグラムで示すようにグローバル変数を使用するか、または非再入可能サブVI (複製された場合にも対応したメカニズム) を使用することができます。
- 実行ステージケースストラクチャからRunningケース、I/O項目名 (I/O Item Name) ケースストラクチャから入力ケース、ノードまたは要素タイプ (Node or Element Type) ケースストラクチャからRead I/Oを選択します。
- 以下のブロックダイアグラムに示すように、ノードまたは要素タイプのRead I/Oケースのコードを更新します。
- I/O項目名ケースストラクチャから出力ケース、ノードまたは要素タイプケースストラクチャからWrite I/Oケースを選択します。
- 以下のブロックダイアグラムに示すように、ノードまたは要素タイプのRead I/Oケースのコードを更新します。下記のブロックダイアグラムは、入力の読み取りと同じ刺激を取得し、刺激を反転し、値をFPGA I/Oノードが受信する値と比較し、そして値が異なる場合にテストが失敗したことを表すように構成されています。ブロックダイアグラムはまた、ブロックダイアグラムがテスト完了グローバル変数をTRUEにするポイントの9に指標が到達するまで、刺激指標を増分します。
- Inverter VIを実行して、Test Bookkeeping VIでグローバル変数を監視します。刺激指標が9に向かって増分している間は、失敗はFALSEのままで、テスト完了はFALSEのままです。
- Inverter VIを停止します。
ホストVIを使用して、テストベンチの実行を自動化する
上記で作成したテストベンチでは、実行および結果の解釈をすべて自動で行うことができません。テストの繰り返しを簡易化するためにテストベンチの実行を自動化するホストVIを作成するには、以下の手順に従ってください。
- プロジェクトエクスプローラウィンドウでマイ コンピュータを右クリックし、ショートカットメニューから新規→VIを選択します。
- VIをTest Controller.viという名前で保存し、以下のブロックダイアグラムに示すようにVIを更新します。
Test Controller VIは、Inverter VIへのリファレンスを開き、グローバル変数を介してInverter VIの実行を監視します。テストが完了またはエラーが発生した後に、停止制御器にTRUEを書き込むと、Test Controller VIが停止します。「FPGA VI実行モードを取得」メソッドで構成された「メソッドをインボーク」関数は、FPGA VIの実行には影響を与えませんが、開発用コンピュータでFPGA VIの実行中に発生するエラーへのアクセスを提供します。