Main Content

生成されたコードのコマンド ラインで 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')

Symmetric FIR filter algorithm.

フォルダーの作成と関連ファイルのコピー

MATLAB® で、以下を実行します。

  1. sl_hdlcoder_work という名前のフォルダーを作成します。たとえば、次のようにします。

    mkdir C:\work\sl_hdlcoder_work
    

    sl_hdlcoder_work は、モデル例とフォルダーのローカル コピーおよび生成された HDL コードを保存します。MATLAB フォルダー ツリー内にないフォルダーの場所を使用します。

  2. sl_hdlcoder_work を作業フォルダーにします。たとえば、次のようにします。

    cd C:\work\sl_hdlcoder_work
  3. 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 コードのどちらを生成したかに応じて、VHDL テスト ベンチ コードまたは Verilog テスト ベンチ コードを生成します。テスト ベンチ コードは、DUT に対して生成された HDL コードを駆動します。既定では、HDL コードおよびテスト ベンチ コードは、現在のフォルダーに対して相対的に同じターゲット フォルダー hdlsrc に書き込まれます。

コンパイルとシミュレーションのためにテスト ベンチ コードとスクリプトを生成するには、関数 makehdltb を使用します。コマンド ラインに次のように入力します。

makehdltb('sfir_fixed/symmetric_fir')

カスタマイズを指定してからテストベンチ コードを生成するには、関数 hdlset_param を使用します。関数 makehdltb でさまざまな名前と値のペアの引数を使用して、HDL コードの生成中に HDL コード生成オプションをカスタマイズすることもできます。たとえば、Verilog テスト ベンチ コードを生成するには、TargetLanguage プロパティを使用します。

makehdltb('sfir_fixed/symmetric_fir', 'TargetLanguage', 'Verilog')
あるいは、hdlset_param を使用している場合、モデルのこのパラメーターを設定してから、関数 makehdltb を実行します。
hdlset_param('sfir_fixed', 'TargetLanguage', 'Verilog')
makehdltb('sfir_fixed/symmetric_fir')

モデルのコードをまだ生成していない場合、HDL Coder はテスト ベンチを作成する前にモデルをコンパイルし、HDL コードを生成します。端子のデータ型などのモデルの表示オプションによっては、コードの生成後にモデルの外観が変わることがあります。

HDL Coder に、テスト ベンチ生成の進行状況を示すメッセージが表示されます。プロセスが終了すると次のメッセージが表示されます。

### HDL TestBench Generation Complete.

テスト ベンチの生成後、生成されたファイルは hdlsrc フォルダーにあります。

HDL テスト ベンチ ファイルの表示

  • symmetric_fir_tb.vhd: VHDL テスト ベンチ コードと、生成されたテストおよび出力データ。Verilog テスト ベンチ コードを生成した場合、生成されたファイルは symmetric_fir_tb.v です。

  • symmetric_fir_tb_pkg.vhd: VHDL テスト ベンチ コードのパッケージ ファイル。ターゲット言語として 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 サブシステムのために生成されたテスト ベンチをコンパイルし、シミュレーションを実行するコマンドを示します。

  1. Mentor Graphics ModelSim ソフトウェアを開いて、以前に生成されたコード ファイルおよびスクリプトがあるフォルダーに移動します。

    QuestaSim>cd C:/work/sl_hdlcoder_work/hdlsrc
    
    
  2. 生成されたコンパイル スクリプトを使用して、生成されたモデルとテキスト ベンチ コードをコンパイルして読み込みます。次のコマンドを実行して、生成されたコードをコンパイルします。

    QuestaSim>do symmetric_fir_tb_compile.do
    
    
  3. 生成されたシミュレーション スクリプトを使用してシミュレーションを実行します。コマンドと応答を以下に示します。警告メッセージは無視してかまいません。テスト ベンチの終了メッセージは、シミュレーションの実行が比較エラーなしに完了したことを示します。次のコマンドを実行して生成されたコードのシミュレーションを実行します。

    QuestaSim>do symmetric_fir_tb_sim.do
    
    

    シミュレーターによって設計が最適化され、HDL 設計のシミュレーション結果が [波形] ウィンドウに表示されます。シミュレーション結果が表示されない場合は [波形] ウィンドウを開きます。シミュレーション スクリプトによって、クロック、リセット、クロック イネーブル信号を含むモデルの入出力が [波形] ウィンドウに表示されます。

    set of input stimulus and output response from test bench.

これで、信号を表示して、シミュレーション結果が元の設計の機能と一致していることを検証できます。検証後、Mentor Graphics ModelSim シミュレーターを閉じてから、MATLAB エディターで開いたファイルを閉じます。

参考

|

関連するトピック