FPGA および ASIC シミュレーションに Modelsim を使用するための初心者ガイド
チュートリアル – 初心者向け、シミュレーションに Modelsim を使用する。
Modelsim は、Mentor Graphics によって作成されたプログラムで、VHDL および Verilog デザインのシミュレーションに使用されます。ビジネスや教育で最も広く使用されているシミュレーション プログラムです。このチュートリアルでは、最初にシミュレーションが重要である理由を説明し、次に個人使用のために Modelsim Student Edition を無料で入手する方法を示します。
シミュレーションは、FPGA および ASIC を設計する重要なステップです。シミュレーションにより、設計者は自分の設計を刺激し、作成したコードがその刺激にどのように反応するかを確認できます。優れたシミュレーションでは、設計の考えられるすべての状態を実行して、すべての入力シナリオが適切に処理されることを確認します。どこかに if 文を忘れていませんか?考えられるすべての case ステートメントの割り当てを忘れずに行いましたか?これらは、設計をシミュレーションしない場合に非常に起こりやすいタイプのエラーです。始めましょう。
Modelsim をコンピュータにダウンロードしてインストールしていますか?ここで入手してください。デフォルトのパラメータを使用してインストールを実行します。 Mentor Graphics からライセンスをリクエストする必要があることに注意してください 。インストールの最後に [完了] を選択する必要があります。ブラウザ ウィンドウが開き、ライセンス リクエスト フォームが表示されます。ブラウザのブックマークまたは Web に投稿されたリンクから既存のライセンス リクエスト リンクをクリックしても機能しません。
シミュレートするコードは、以下の VHDL デザインです。実際のコードは重要ではないので、Verilog を学習している場合は問題ありません。このチュートリアルでは VHDL を理解する必要はありません。 VHDL コードは単純な And ゲートを作成し、テストベンチ経由でそれにいくつかの入力を提供します。以下のコードを and_gate.vhd にコピーし、テストベンチを and_gate_tb.vhd にコピーします。
and_gate.vhd:
library ieee; use ieee.std_logic_1164.all; entity and_gate is port ( input_1 : in std_logic; input_2 : in std_logic; and_result : out std_logic ); end and_gate; architecture rtl of and_gate is signal and_gate : std_logic; begin and_gate <= input_1 and input_2; and_result <= and_gate; end rtl;
and_gate_tb.vhd:
library ieee; use ieee.std_logic_1164.all; entity and_gate_tb is end and_gate_tb; architecture behave of and_gate_tb is signal r_SIG1 : std_logic := '0'; signal r_SIG2 : std_logic := '0'; signal w_RESULT : std_logic; component and_gate is port ( input_1 : in std_logic; input_2 : in std_logic; and_result : out std_logic); end component and_gate; begin and_gate_INST : and_gate port map ( input_1 => r_SIG1, input_2 => r_SIG2, and_result => w_RESULT ); process is begin r_SIG1 <= '0'; r_SIG2 <= '0'; wait for 10 ns; r_SIG1 <= '0'; r_SIG2 <= '1'; wait for 10 ns; r_SIG1 <= '1'; r_SIG2 <= '0'; wait for 10 ns; r_SIG1 <= '1'; r_SIG2 <= '1'; wait for 10 ns; end process; end behave;
Modelsimを開いてみましょう。次のようなウィンドウが表示されます。
Modelsim メイン ウィンドウ
シミュレーションを実行するには、プロジェクトを作成する必要があります。 「ファイル」→「新規」→「プロジェクト」をクリックします。左側にウィンドウが表示されます。新しいプロジェクトの場所を選択し、and_gate という名前を付けます。 Modelsim のプロジェクトのファイル拡張子は .prj です。他の設定はデフォルトのままにしておきます。これは、すべてのコードがライブラリ「work」にコンパイルされることを示しているだけです。
右の図に示すように、「既存のファイルを追加」をクリックします。 and_gate.vhd と and_gate_tb.vhd をダウンロードした場所に移動し、両方をプロジェクトに追加します。他の設定はデフォルトのままにしておきます。完了したら、「OK」をクリックします。
Modelsim プロジェクト ウィンドウ – プロジェクトに追加されたファイル
ファイルがプロジェクトに正常に追加されたことに注目してください。上の Modelsim プロジェクト ウィンドウの図にある 2 つの青い疑問符が見えますか?これは、Modelsim がまだファイルをコンパイルしていないことを意味します。ソース ファイルをコンパイルする必要があります。これを行うには、and_gate.vhd を右クリックし、[コンパイル] をクリックしてから、[すべてコンパイル] をクリックします。以下のスクリーンショットに示すように、コンソール ウィンドウにコンパイルが成功したことを示すメッセージが緑色で表示されるはずです。
成功したコンパイルの結果
シミュレーションを開始するには、メニュー バーの [シミュレーション] をクリックし、[シミュレーションの開始] をクリックします。これにより、「シミュレーションの開始」ウィンドウが開きます。 work の横にあるプラス記号をクリックし、次に and_gate_tb の横にあるプラス記号をクリックします。テストベンチ レベルでデザインをシミュレートしたいため、and_gate ではなく、and_gate_tb を選択していることを確認してください。 and_gate_tb が強調表示されたら、「OK」をクリックします。
Modelsim シミュレーション ウィンドウ – シミュレーションの準備完了
もうすぐそこです!シミュレーションの準備が完了し、待機中です。さて、Modelsim の使用時間の大部分は、波形ビューの確認に費やされます。波形ビューには、デザイン内のすべての信号の波形 (2 進数の 0 と 1、16 進数、2 進数、列挙型など) が含まれています。モジュールがさまざまな刺激にどのように反応するかを示します。次の図は波形ビューがどのように見えるかを示していますが、最初に監視する信号をいくつか追加する必要があります。この例では、テストベンチ内のすべての信号を監視します。これを行うには、右クリックします。 SIM ウィンドウの and_gate_tb で [Add Wave] をクリックします。 。 Modelsim の他のウィンドウから信号をクリックして波形ウィンドウにドラッグすることもできます。
これが波形ウィンドウです。すべてのテストベンチ信号が、監視できる信号として追加されました。シミュレーションを実行するには、小さな紙と 100 ns 時間の横にある下矢印が付いたアイコンをクリックします。これにより、シミュレーションが 100 ナノ秒間実行されます。信号がどのように変化するかに注目してください。おめでとう!最初の Modelsim シミュレーションが作成されました!
このチュートリアルでは、Modelsim で独自のプロジェクトを作成し、プロジェクトにファイルを追加し、ソース ファイルをコンパイルし、シミュレーションを開始し、波形を表示する方法を説明しました。この Web ページにあるすべての例を調べて、自分でシミュレーションを実行する準備が整いました。ナビゲーションにはページ上部のサイドバーを使用してください。
VHDL
- VHDLとは?
- VHDL でポート マップのインスタンス化を使用する方法
- VHDL コード ロック モジュール用の Tcl 駆動型テストベンチを作成する方法
- 基本的な VHDL クイズ – パート 2
- セルフチェック テストベンチの作成方法
- マスター VHDL:FPGA および ASIC 設計の包括的な入門
- Ready/Valid ハンドシェイクを使用してブロック RAM に AXI FIFO を作成する方法
- レコード - VHDL の例
- TEXTIO を使用して読み取った BMP ファイルのビットマップ イメージ
- VHDL で PWM コントローラーを作成する方法
- VHDL で Wait On と Wait until を使用する方法