Modelsim入門:FPGA・ASICシミュレーションのための初心者ガイド
チュートリアル - 初心者向けModelsimシミュレーション活用法
ModelsimはMentor Graphicsが開発した、VHDLおよびVerilog設計のシミュレーション用プログラムです。ビジネスと教育の両現場で最も広く使用されているシミュレーションツールです。このチュートリアルでは、まずシミュレーションの重要性を説明し、その後、Modelsim Student Editionを個人利用目的で無料入手する方法を紹介します。
シミュレーションはFPGAおよびASIC設計において極めて重要なステップです。設計者は自分の設計を刺激(スタミュレート)し、記述したコードがその刺激にどう反応するかを観察できます。優れたシミュレーションは設計のあり得るすべての状態を検証し、あらゆる入力シナリオが適切に処理されることを保証します。if文の書き漏らしはないか?case文のすべての分岐に割り当てを行ったか?こうしたエラーは、シミュレーションを行わなければ非常に見落としやすいものです。始めましょう。
Modelsimをダウンロードしてインストール済みですか?こちらから入手できます。デフォルトパラメータでインストールを実行してください。Mentor Graphicsからライセンスを要求する必要があります。インストール終了時に「Finish」を選択すると、ブラウザでライセンス申請フォームが開きます。ブラウザのブックマークやウェブ上のリンクから既存のライセンス申請リンクをクリックしても機能しません。
シミュレーション対象のコードは以下のVHDL設計です。実際のコード内容は重要ではないため、Verilogを学習中の方でも問題ありません。この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メインウィンドウ
シミュレーションを実行するには、まずプロジェクトを作成します。「File」→「New」→「Project」をクリックします。左図のようなウィンドウが表示されます。新しいプロジェクトの保存場所を選び、名前を「and_gate」としてください。Modelsimのプロジェクトファイル拡張子は.prjです。その他の設定はデフォルトのままで構いません。これはすべてのコードが「work」ライブラリにコンパイルされることを意味します。
右図のように「Add Existing File」をクリックします。and_gate.vhdとand_gate_tb.vhdをダウンロードした場所に移動し、両方をプロジェクトに追加します。他の設定はデフォルトのまま、完了したらOKをクリック。
Modelsimプロジェクトウィンドウ - ファイル追加後
ファイルが正常に追加されたことがわかります。上図のModelsimプロジェクトウィンドウにある2つの青いクエスチョンマークは、Modelsimがまだファイルをコンパイルしていないことを示しています。ソースファイルをコンパイルする必要があります。and_gate.vhdを右クリックし、「Compile」→「Compile All」を選択します。コンソールウィンドウに緑色のメッセージでコンパイル成功が表示されるはずです(下図参照)。
コンパイル成功の結果
シミュレーションを開始するには、メニューバーの「Simulate」→「Start Simulation」をクリックします。Start Simulationウィンドウが開きます。「work」の横のプラス記号をクリックし、さらに「and_gate_tb」の横のプラス記号をクリックします。and_gateではなくand_gate_tbを選択してください。テストベンチレベルで設計をシミュレートするためです。and_gate_tbがハイライトされたらOKをクリック。
Modelsimシミュレーションウィンドウ - シミュレーション準備完了
あと少しです!シミュレーションは準備完了して待機しています。Modelsimを使用する時間の大半は波形ビューを見ることに費やされます。波形ビューには、設計内のすべてのシグナルの波形(バイナリ0/1、16進数、バイナリ数字、列挙型など)が表示され、モジュールがさまざまな刺激にどう反応するかを示します。次の図は波形ビューの様子ですが、まず監視するシグナルを追加する必要があります。この例では、テストベンチのすべてのシグナルを監視します。シムウィンドウでand_gate_tbを右クリックし、「Add Wave」をクリックします。他のウィンドウから波形ウィンドウへシグナルをドラッグ&ドロップすることも可能です。
これがあなたの波形ウィンドウです。テストベンチのすべてのシグナルが監視対象として追加されました。シミュレーションを実行するには、100nsの時間表示横にある、紙アイコンと下矢印のアイコンをクリックします。これにより100ナノ秒分のシミュレーションが実行されます。シグナルの変化を観察してください!おめでとうございます!最初のModelsimシミュレーションが完了しました!
このチュートリアルでは、Modelsimでプロジェクトを作成し、ファイルを追加し、ソースファイルをコンパイルし、シミュレーションを開始し、波形を表示する手順を学びました。このウェブページのすべての例を探索し、自分でシミュレーションを実行する準備が整いました。ページ上部のサイドバーでナビゲーションできます。
VHDL
- FPGAでLED点滅を作る:ステップバイステップチュートリアル
- 初めてのFPGA:LED点滅チュートリアル(VHDL&Verilog)
- Tclベースのインタラクティブテストベンチでハードウェア検証を強化
- ブロックRAMからの正弦波でブリージングLED効果を実現する
- VHDLでPWMコントローラを実装: 設計、シミュレーション、FPGAデモ
- VHDLにおける信号と変数の違いを理解する
- FPGA & VHDLコース: ドット・マトリックスLEDコントローラをゼロから構築
- VHDL型変換完全ガイド:Numeric_StdとStd_Logic_Arithパッケージ活用
- Quartus Prime IPライブラリをVUnitに統合する:ステップバイステップガイド
- VHDLのstd_logicマスター:状態、解決関数、波形分析
- VHDL基礎クイズ パート4:理解度をチェック