コンフィギュレーション パラメーターから HDL テスト ベンチを使用した生成されたコードの検証
この例は、HDL テスト ベンチを生成し、設計用に生成されたコードを検証する方法を示します。この例では、モデルの HDL コードが生成されていることを前提とします。HDL コードを生成していない場合、このモデルを開いて、HDL テスト ベンチを生成できます。テスト ベンチを生成する前に、HDL Coder™ はコード生成を実行して、テスト ベンチの生成前に少なくとも 1 つのコード生成の実行が成功していることを確認します。
この例では、生成された FIR フィルター モデルのコードを検証する方法を説明します。このモデルの HDL コードを生成する方法については、コンフィギュレーション パラメーターを使用した Simulink モデルからの HDL コードの生成を参照してください。
FIR フィルター モデル
この例では、HDL コード生成と互換性のある対称 FIR フィルター モデルを使用します。このモデルをコマンド ラインで開くには、次を入力します。
sfir_fixed
モデルは、HDL 設計に適した作業分担を使用します。
フィルターのアルゴリズムを実装する
symmetric_fir
サブシステムがテスト対象デバイス (DUT) です。HDL エンティティはこのサブシステムから生成されます。サブシステムを駆動する最上位のモデル コンポーネントはテスト ベンチとして機能します。
最上位モデルは symmetric_fir
サブシステムに対して 16 ビットの固定小数点入力信号を生成します。Signal From Workspace ブロックは、フィルターに対するテスト入力 (スティミュラス) 信号を生成します。4 つの Constant ブロックがフィルター係数を示しています。Scope ブロックはシミュレーションに使用され、HDL コード生成には使用されません。
symmetric_fir
サブシステムに移動するには、次を入力します。
open_system('sfir_fixed/symmetric_fir')
フォルダーの作成と関連ファイルのコピー
MATLAB® で、以下を実行します。
sl_hdlcoder_work
という名前のフォルダーを作成します。たとえば、次のようにします。mkdir C:\work\sl_hdlcoder_work
sl_hdlcoder_work
は、モデル例とフォルダーのローカル コピーおよび生成された HDL コードを保存します。MATLAB フォルダー ツリー内にないフォルダーの場所を使用します。sl_hdlcoder_work
を作業フォルダーにします。たとえば、次のようにします。cd C:\work\sl_hdlcoder_work
sfir_fixed
モデルのローカル コピーを現在の作業フォルダーに保存します。モデルを開いたままにしておきます。
HDL テスト ベンチとは
DUT に対して生成された HDL コードの機能を検証するには、HDL テスト ベンチを生成します。テスト ベンチには以下が含まれます。
テスト対象のエンティティに接続されている信号のソースによって生成されたスティミュラス データ。
テスト対象のエンティティによって生成された出力データ。テスト ベンチの実行中、このデータは検証のために VHDL® コードの出力と比較されます。
テスト対象のエンティティを駆動するクロック、リセットおよびクロック イネーブルの入力。
テスト対象のエンティティをコンポーネントにインスタンス化したもの。
テスト対象のエンティティを駆動し、エンティティからの出力を予測されているデータと比較するコード。
Mentor Graphics® ModelSim® シミュレーターを使用して、生成されたテスト ベンチおよびスクリプト ファイルのシミュレーションを実行できます。
生成されたコードの検証方法
この例では、HDL テスト ベンチを生成して、設計に合わせて生成された HDL コードのシミュレーションおよび検証を行う方法を説明します。次の方法を使用してモデルから生成された HDL コードを検証することもできます。
検証方法 | 詳細情報 |
---|---|
検証モデル | 生成されたモデルと検証モデル |
HDL コシミュレーション (HDL Verifier™ が必要) | コシミュレーション |
SystemVerilog DPI テスト ベンチ (HDL Verifier が必要) | SystemVerilog DPI テスト ベンチ |
FPGA インザループ (HDL Verifier が必要) | FPGA インザループ |
HDL テスト ベンチの生成
VHDL、Verilog、または SystemVerilog コードのいずれを生成したかに応じて、VHDL、Verilog、または SystemVerilog テスト ベンチ コードを生成します。テスト ベンチ コードは、DUT に対して生成された HDL コードを駆動します。既定では、HDL コードおよびテスト ベンチ コードは、現在のフォルダーに対して相対的に同じターゲット フォルダー hdlsrc
に書き込まれます。
FIR フィルターでは、[symmetric_fir] サブシステムが DUT です。テストベンチを生成するには、このサブシステムを選択します。モデル全体の HDL テストベンチを生成することはできません。
[アプリ] タブで、[HDL Coder] を選択します。[HDL コード] タブが表示されます。
モデルの DUT サブシステムを選択し、その Subsystem 名が [次のコード] オプションに表示されることを確認します。選択内容を記憶しておくために、このオプションは固定できます。[テストベンチの生成] をクリックします。
既定では、HDL Coder はターゲット hdlsrc
フォルダーに VHDL テストベンチ コードを生成します。
Verilog または SystemVerilog テスト ベンチ コードの生成
Verilog または SystemVerilog テスト ベンチ コードを生成する場合、この設定を [コンフィギュレーション パラメーター] ダイアログ ボックスの [HDL コード生成] ペインで指定できます。
カウンター モデル用の Verilog テストベンチ コードを生成するには、次の手順を実行します。
[HDL コード] タブで、[設定] をクリックします。
[HDL コード生成] ペインで、[言語] に対して
Verilog
またはSystemVerilog
を選択します。その他の設定は既定のままにします。[HDL コード生成] 、 [テスト ベンチ] ペインで、[テスト ベンチを生成] をクリックします。
モデルのコードをまだ生成していない場合、HDL Coder はテスト ベンチを作成する前にモデルをコンパイルし、HDL コードを生成します。端子のデータ型などのモデルの表示オプションによっては、コードの生成後にモデルの外観が変わることがあります。
HDL Coder に、テスト ベンチ生成の進行状況を示すメッセージが表示されます。プロセスが終了すると次のメッセージが表示されます。
### HDL TestBench Generation Complete.
テスト ベンチの生成後、生成されたファイルは hdlsrc
フォルダーにあります。
HDL テスト ベンチ ファイルの表示
symmetric_fir_tb.vhd
: VHDL テスト ベンチ コードと、生成されたテストおよび出力データ。Verilog または SystemVerilog テスト ベンチ コードを生成した場合、生成されたファイルはsymmetric_fir_tb.v
またはsymmetric_fir_tb.sv
です。symmetric_fir_tb_pkg.vhd
:VHDL テスト ベンチ コードのパッケージ ファイル。SystemVerilog テスト ベンチ コードを生成した場合、生成されたファイルはsymmetric_fir_tb_pkg.sv
です。ターゲット言語として Verilog を指定した場合は、このファイルは生成されません。symmetric_fir_tb_compile.vhd
:コンパイル スクリプト (vcom コマンド)。このスクリプトはテスト対象のエンティティ (symmetric_fir.vhd) とテスト ベンチ コード (symmetric_fir_tb.vhd) のコンパイルおよび読み込みを行います。symmetric_fir_tb_sim.do
: シミュレーターの初期化、[波形] ウィンドウの信号表示の設定、シミュレーションの実行を行う Mentor Graphics ModelSim スクリプト。
生成されたテスト ベンチ コードを MATLAB エディターで表示するには、現在のフォルダーで symmetric_fir_tb.vhd
または symmetric_fir_tb.v
ファイルをダブルクリックします。
生成された HDL コードのシミュレーションの実行と検証
シミュレーション結果を検証するには、Mentor Graphics ModelSim シミュレーターを使用できます。Mentor Graphics ModelSim が既にインストールされていることを確認してください。
シミュレーターを起動するには、関数 vsim
(HDL Verifier) を使用します。実行可能ファイルへのパスを指定することで、このコマンドはシミュレーターを開く方法を示します。
vsim('vsimdir','C:\Program Files\ModelSim\questasim\10.6b\win64\vsim.exe')
生成されたモデルおよびテスト ベンチ コードをコンパイルし、シミュレーションを実行するには、HDL Coder によって生成されるスクリプトを使用します。次の例は、sfir_fixed/symmetric_fir
サブシステムのために生成されたテスト ベンチをコンパイルし、シミュレーションを実行するコマンドを示します。
Mentor Graphics ModelSim ソフトウェアを開いて、以前に生成されたコード ファイルおよびスクリプトがあるフォルダーに移動します。
QuestaSim>cd C:/work/sl_hdlcoder_work/hdlsrc
生成されたコンパイル スクリプトを使用して、生成されたモデルとテキスト ベンチ コードをコンパイルして読み込みます。次のコマンドを実行して、生成されたコードをコンパイルします。
QuestaSim>do symmetric_fir_tb_compile.do
生成されたシミュレーション スクリプトを使用してシミュレーションを実行します。コマンドと応答を以下に示します。警告メッセージは無視してかまいません。テスト ベンチの終了メッセージは、シミュレーションの実行が比較エラーなしに完了したことを示します。次のコマンドを実行して生成されたコードのシミュレーションを実行します。
QuestaSim>do symmetric_fir_tb_sim.do
シミュレーターによって設計が最適化され、HDL 設計のシミュレーション結果が [波形] ウィンドウに表示されます。シミュレーション結果が表示されない場合は [波形] ウィンドウを開きます。シミュレーション スクリプトによって、クロック、リセット、クロック イネーブル信号を含むモデルの入出力が [波形] ウィンドウに表示されます。
これで、信号を表示して、シミュレーション結果が元の設計の機能と一致していることを検証できます。検証後、Mentor Graphics ModelSim シミュレーターを閉じてから、MATLAB エディターで開いたファイルを閉じます。