Main Content

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

Simulinkテストベンチで HDL モジュールを検証する

チュートリアルの概要

このチュートリアルでは、 HDL Verifier™ブロックとHDL Cosimulationブロックを使用して HDL モデルを検証するSimulink® セッションをセットアップするための基本的な手順を説明します。 。HDL Cosimulationブロックは、ModelSim®またはQuesta®ます。 。HDL Cosimulationブロックは、 VHDL®またはVerilog®モデルのシミュレーションをサポートします。

メモ

このチュートリアルはMentor Graphics®シミュレータ ユーザーに特化しています。ただし、プロセスの多くはXcelium™ユーザーでも同じです。Vivado®シミュレータを使用して協調シミュレーションを行うには、協調シミュレーション ウィザードを使用してHDL Cosimulationブロックを生成する必要があります。このワークフローの例については、 「 HDL コシミュレーション ブロックの HDL コードのインポート 」を参照してください。

VHDLコードの開発

SimulinkおよびModelSim の一般的なシナリオは、後で統合する必要がある特定のハードウェア コンポーネントのモデルをModelSimに作成することです。より大きなSimulinkモデル。最初のステップは、 VHDLでModelSim モデルを設計および開発することです。このチュートリアルでは、 ModelSimとVHDLを使用して、次のインバーターを表すモデルを開発します。

このモデルのVHDLエンティティは、INポートとOUTポートを備えた入出力信号値の 8 ビット ストリームを表します。 STD_LOGIC_VECTORと入力します。STD_LOGICタイプの入力クロック信号が設定されると、ビット反転プロセスがトリガーされます。

次の手順を実行します。

  1. スタートModelSim

  2. 別のチュートリアル用に作成した書き込み可能なフォルダーMyPlayAreaに変更します。フォルダーを作成していない場合は、ここで作成します。フォルダーは書き込み可能である必要があります。

    ModelSim>cd C:/MyPlayArea
    

  3. 新しいVHDLソース編集ウィンドウを開きます。

  4. 次のVHDLコードを追加します。

    ---------------------------------------------------
    --  Simulink and ModelSim Inverter Tutorial
    --
    --  Copyright 2003-2004 The MathWorks, Inc.
    --
    ---------------------------------------------------
    LIBRARY ieee;
    USE ieee.std_logic_1164.ALL;
    ENTITY inverter IS PORT (
      sin : IN  std_logic_vector(7 DOWNTO 0);
      sout: OUT std_logic_vector(7 DOWNTO 0);
      clk : IN  std_logic
    );
    END inverter;
    
    LIBRARY ieee;
    USE ieee.std_logic_1164.ALL;
    ARCHITECTURE behavioral OF inverter IS
    BEGIN
      PROCESS(clk)
      BEGIN
        IF (clk'EVENT AND clk = '1') THEN
          sout <= NOT sin;
        END IF;
      END PROCESS;
    END behavioral;
    
    
  5. ファイルをinverter.vhdに保存します。

VHDLコードをコンパイルします

このセクションでは、デザイン ライブラリをセットアップし、 inverter.vhdをコンパイルする方法を次のように説明します。

  1. inverter.vhdコマンド プロンプトでlsコマンドを入力して、ファイルModelSimが現在のフォルダーにあることを確認します。

  2. コンパイル結果を保持するデザイン ライブラリを作成します。ライブラリと必要な_infoファイルを作成するには、次のようにvlibおよびvmapコマンドを入力します。

    ModelSim> vlib work
    
    ModelSim> vmap work work
    

    デザイン ライブラリの作業が既に存在する場合、 ModelSim は現在のライブラリを「上書きしません」が、次の警告を表示します。

    # ** Warning: (vlib-34) Library already exists at "work".
    

    メモ

    ModelSim Fileメニューまたはvlibコマンドを使用してライブラリ フォルダーを作成し、必要な_infoファイルが作成されます。オペレーティング システム コマンドを使用してライブラリを作成しないでください。

  3. VHDLファイルをコンパイルします。ファイルをコンパイルする 1 つの方法は、プロジェクト ワークスペースでファイル名をクリックし、 CompileCompile Allを選択することです。もう 1 つの方法は、次のように vcomVHDLファイルの名前を指定することです。

    ModelSim> vcom inverter.vhd
    

    コンパイルが成功すると、情報メッセージがコマンド ウィンドウに表示され、コンパイラはコンパイル結果を作業ライブラリに追加します。

Simulinkモデルの作成

次に、 Simulinkモデルを作成します。このチュートリアルでは、 SimulinkでコーディングしたVHDLインバータを表すブロックに入力を駆動し、表示する単純なVHDLコードの開発モデルを作成します。反転出力。

次のようにモデルを作成することから始めます。

  1. まだ実行されていない場合は、 MATLAB®を開始します。新しいモデル ウィンドウを開きます。次に、 Simulink Library Browserを開きます。

  2. 次のブロックをSimulink Library Browserからモデル ウィンドウにドラッグします。

    • Constant SimulinkライブラリのSourcesブロック

    • HDL Cosimulationブロック ライブラリのHDL Verifierブロック

    • Display Simulink ライブラリのSinksブロック

    3 つのブロックを次の図に示す順序で配置します。

次に、次のアクションを実行して、モデルの入力ソースであるConstantブロックを構成します。

  1. Constantブロック アイコンをダブルクリックして、 Constantブロックパラメーターダイアログ ボックスを開きます。「Main 」ペインに次のパラメーター値を入力します。

    • Constant value: 0

    • Sample time: 10

    後でこれらの初期値を変更して、さまざまなサンプル時間がさまざまなシミュレーション実行に与える影響を確認できます。

    ダイアログ ボックスは次のように表示されます。

  2. Signal Attributes 」タブをクリックします。ダイアログ ボックスにOutput data typeメニューが表示されます。

    Output data typeを選択します。このデータ型仕様は、型変換を必要とせずに、HDL Verifierソフトウェアによってサポートされています。これは、 VHDLVHDLポートsinSTD_LOGIC_VECTOR(7 DOWNTO 0)STD_LOGIC_VECTOR(7 DOWNTO 0)タイプに直接マップされます。

    ダイアログ ボックスは次のように表示されます。

  3. [OK]をクリックします。Constantブロックパラメーターダイアログ ボックスが閉じ、 Constantブロック アイコンの値が 0 に変わります。

次に、 HDL Cosimulationブロックを構成します。これは、 VHDLで記述されたインバーター モデルを表します。次のアクションを実行して、 「Ports」ペインから始めます。

  1. HDL Cosimulationブロック アイコンをダブルクリックします。Block ParametersブロックのHDL Cosimulationダイアログ ボックスが表示されます。「Ports 」タブをクリックします。

  2. Portsペインで、ペイン中央の信号リストからサンプル信号/top/sig1をダブルクリックして選択します。

  3. サンプル信号パス名/top/sig1/inverter/sinに置き換えます。次に、 「Apply」をクリックします。HDL Cosimulationブロックの信号名が変更されます。

  4. 同様に、サンプル信号/top/sig2を選択します。Full HDL Name/inverter/soutに変更します。Output I/O Mode を選択します。 Sample Timeパラメーターを10に変更します。次に、 「Apply」をクリックしてリストを更新します。

  5. サンプル信号/top/sig3を選択します。「Delete」ボタンをクリックします。これで、信号がリストから削除されました。

    Portsペインは次のように表示されます。

ここで、次のアクションを実行して、 Connectionペインのパラメーターを構成します。

  1. Connection 」タブをクリックします。

  2. Connection ModeFull Simulationのままにしておきます。

  3. Connection method リストからソケットを選択します。このオプションは、 SimulinkとModelSim が指定された TCP/IP ソケット ポート経由で通信することを指定します。2 つの追加フィールドPort number or serviceHost nameが表示されるようになっていることに注目してください。

    デフォルトではThe HDL simulator is running on this computerが選択されているため、 Host nameフィールドは無効になっていることに注意してください。この構成では、 SimulinkとModelSimの両方が同じコンピュータ上で実行されるため、リモート ホスト システム名を入力する必要はありません。

  4. Port number or serviceテキスト ボックスに、ソケット ポート番号4449を入力するか、このポートがシステムで使用できない場合は、別の有効なポート番号またはサービス名を入力します。このモデルは TCP/IP ソケット通信を使用してModelSimとリンクします。このパラメーターに入力した内容に注意してください。ModelSimとリンクするためにSimulinkを設定するときに、同じソケット ポート情報を指定します。

    Connectionペインは次のように表示されます。

  5. [Apply]をクリックします。

ここで、次のアクションを実行して、 Clocksペインを構成します。

  1. Clocks 」タブをクリックします。

  2. New」ボタンをクリックします。信号名が空の新しいクロック信号が信号リストに追加されます。

  3. 編集する新しい信号名をダブルクリックします。信号パス/inverter/clkを入力します。次に、 Rising Edge を選択します。Periodパラメーターを10に設定します。

  4. Clocksペインは次のように表示されます。

  5. [Apply]をクリックします。

次に、次のように、シミュレーションの前後に実行されるいくつかの簡単な Tcl コマンドを入力します。

  1. Simulation 」タブをクリックします。

  2. Pre-simulation Tcl commandsテキスト ボックスで、デフォルトの Tcl コマンドを編集します。

    puts "Running inverter in Simulink!"
    
  3. Post-simulation Tcl commandsテキスト ボックスで、デフォルトの Tcl コマンドを編集します。

    puts "Inverter Done"
    

    Simulationペインは次のように表示されます。

  4. [Apply]をクリックします。

次に、 Timescalesペインを表示して、次のようにデフォルトパラメーターに設定されていることを確認します。

  1. Timescales 」タブをクリックします。

  2. Timescalesペインのデフォルト設定を次の図に示します。これらの設定は、この例の動作に必要です。詳細は、シミュレーションのタイムスケールを参照してください。

  3. [OK]をクリックして、 [Block Parameters]ダイアログ ボックスを閉じます。

最後のステップでは、ブロックを接続し、モデル全体のパラメーターを構成し、モデルを保存します。次のアクションを実行します。

  1. 次の図に示すようにブロックを接続します。

    この時点で、ブロックの注釈を調整することも検討してください。

  2. 固定ステップの離散シミュレーション用にSimulinkソルバー選択を構成します。これは協調シミュレーション操作に必要です。次のアクションを実行します。

    1. Modeling tabで、 Model Settingsをクリックします。「Model Configuration Parameters」ダイアログ・ボックスが開き、 「Solver selection」ペインが表示されます。

    2. Fixed-step Type を選択します。

    3. discrete (no continuous states)メニューからSolverを選択します。

    4. [Apply]をクリックします。

    5. [OK]をクリックして、 [Model Configuration Parameters]ダイアログ ボックスを閉じます。

      Simulinkモデル コンフィギュレーションパラメーターの設定ソフトウェアでの使用に最適なSimulink設定の詳細については、 HDL Verifierを参照してください。

  3. モデルを保存します。

ModelSimで使用するためにSimulinkをセットアップする

これで、インバータのVHDL表現と、インバータを適用するSimulinkモデルが完成しました。ModelSimを起動してSimulinkで使用できるようにするには、 MATLABコマンド ウィンドウに次のコマンド ラインを入力します。

vsim('socketsimulink', 4449)

メモ

SimulinkHDL Cosimulationブロックを構成したときに別のソケット ポート仕様を入力した場合は、前述のコマンド ラインのポート番号 4449 を、該当するソケット ポート情報に置き換えます。あなたのモデル。vsim関数は、ModelSim Simulink に通知します。

VHDLとの協調シミュレーション用にSimulink エンティティのインスタンスをロードします

このセクションでは、 vsimulinkコマンドを使用して、 VHDLとの協調シミュレーションのためにSimulink エンティティのインスタンスをロードする方法について説明します。vsimulinkコマンドは、 HDL Verifier ModelSimコマンドのvsimバリアントです。これは、ModelSim構成の一部として利用可能です。

inverterエンティティのインスタンスをロードするには、次のアクションを実行します。

  1. 入力フォーカスをModelSimウィンドウに変更します。

  2. VHD ファイルが現在のフォルダーにない場合は、フォルダーをinverter.vhdファイルの場所に変更します。以下に例を示します。

    ModelSim> cd C:/MyPlayArea
    
  3. 次のvsimulinkコマンドを入力します。

    ModelSim> vsimulink work.inverter
    

    ModelSim は、 vsimシミュレーターを開始し、Simulinkのコンテキストでエンティティinverterをシミュレートする準備が整います。 $$モデル。ModelSimコマンド ウィンドウの表示は次のようになります。

シミュレーションの実行

このセクションでは、協調シミュレーション セッションを実行および監視するシナリオについて説明します。

次のアクションを実行します。

  1. 次のwaveコマンドを入力して、 ModelSimウィンドウを開いてインバータ信号を追加します。

    VSIM n> add wave /inverter/*
    

    次のwaveウィンドウが表示されます。

  2. 入力フォーカスをSimulinkモデル ウィンドウに変更します。

  3. Simulinkシミュレーションを開始します。Displayブロックの値が255に変更されます。ModelSim waveウィンドウで発生する変更にも注目してください。信号データをよりよく表示するには、ズームインする必要がある場合があります。

  4. Simulinkモデルで、 Constant value255に変更し、モデルを保存して、別のシミュレーションを開始します。Displayブロックの値が0に変更され、 ModelSim waveウィンドウが次のように更新されます。 。

  5. Simulinkモデルで、 Constant value2に変更し、 Sample timeを 20 に変更して、別のシミュレーションを開始します。今度は、 Displayブロックの値が253に変更され、 ModelSim waveウィンドウが表示されます。次の図に示すように。

    waveウィンドウのサンプル時間の変化に注目してください。

シャットダウンシミュレーション

このセクションでは、次のようにシミュレーションを順序どおりにシャットダウンする方法について説明します。

  1. ModelSimで、 SimulateEnd Simulationを選択してシミュレーションを停止します。

  2. ModelSimを終了します。

  3. Simulinkモデル ウィンドウを閉じます。