ver. 8.1 2009 年 3 月 1. はじめに この資料は 別資料である Nios II 簡易チュートリアル を終えた後 Nios II システムのデザインを ModelSim で RTL シミュレーションを行う場合の操作マニュアルです この資料では ModelSim-Altera を使用していますが ModelSim PE ModelSim SE でも同様にシミュレーションが可能です この資料においてのシミュレーション環境は Quartus II, Nios II 8.1, ModelSim-Altera 6.3g です 2. 操作方法 以下に Nios II のシステムを ModelSim-Altera にてシミュレーションを行う手順を示します 1. Nios II 簡易チュートリアル を終えた後のハードウェア デザインを SOPC Builder で再度 ジェネレートします 2. Nios II 簡易チュートリアル で作成した Nios II IDE のソフトウェア プロジェクトを開き 再度 ビルドを実行します 3. Nios II IDE 上から ModelSim-Altera を起動します ここからは ModelSim-Altera での操作になります 4. 各コンポーネント (HDL ファイル ) のコンパイルとロードを行うためのスクリプトを実行します 5. Wave ウィンドウを立ち上げるスクリプトを実行します 6. シミュレーション実行のコマンドを入力し シミュレーションを実行します 7. シミュレーション結果を確認します 2-1. SOPC Builder の設定 1 2 Nios II 簡易チュートリアル では E: simple_work フォルダに simple_tutorial というプロジェクトを用意しました この資料でも 同じフォルダ構成を例として進めていきます simple_work フォルダ内の simple_tutorial.qpf ファイルをダブルクリックして Quartus II のプロジェクトを開きます simple_tutorial のプロジェクトで SOPC Builder を起動します Tools メニュー SOPC Builder をクリックします Page 1 of 13 Altima Corporation
3 jtag_uart のコンポーネントを開きます jtag_uart_0 のコンポーネントをダブルクリックし Simulation タブを選択します シミュレーションを実行中に コンソール画面に表示される printf のキャラクタ出力や ユーザのキャラクタ入力を仮想的に行えるインタラクティブ ウィンドウを使用するために Create ModelSim alias to open an interactive stimulus/response window にチェックを入れます Finish をクリックします 4 5 使用する ModelSim-Altera のパスを確認します SOPC Builder の Tools Option を選択します Options ウィンドウの HDL Simulator Options 欄では ModelSim-Altera を選択します Application Path 欄には 使用する ModelSim-Altera の実行ファイル (.exe) があるフォルダまでのパスを正しく設定します Finish をクリックします ver. 8.1 2009 年 3 月 Page 2 of 13 Altima Corporation
6 SOPC Builder で再度ジェネレートを実行します System Generation タブを選択し Simulation. Create project simulator files. にチェックを入れます File Save で SOPC Builder の設定を保存し Generate をクリックします 7 SOPC Builder のジェネレートが終了すると <SOPC Builder で生成したシステム名 >_sim フォルダに拡張子が.mpf.do.dat のファイルが生成されます ここで 生成されたファイルについては 以下の表 1 をご覧ください 表 1 _sim フォルダのファイル 拡張子 説明.mpf ModelSim-Altera のプロジェクトファイル 但し ModelSim-Altera までのパスを正しく設定しなければ生成されない ModelSim のマクロ実行スクリプト ファイル.do setup_sim.do : 表 2 で紹介されているマクロ実行のためのスクリプト ファイル wave_presets.do : ModelSim-Altera の wave ウィンドウへ追加するノードリストを生成する ためのスクリプト ファイル ヘキサデシマル フォーマットのメモリ初期値ファイル.dat UART 等の初期値ファイルは SOPC Builder のジェネレートを実行した時に生成される メモリの初期値ファイルは Nios II IDE でソフトウェアをビルドした時に完成する ver. 8.1 2009 年 3 月 Page 3 of 13 Altima Corporation
8 生成されたトップのファイル (sopc_system.vhd) をテキスト エディタなどで開くと そのファイルの最も下の方にテストベンチの記述があります このチュートリアルでは行いませんが 任意の入力波形を与えたい場合 メモリ モデルのコンポーネントを宣言する場合 ライブラリ記述をする場合は 編集を行ってください SOPC Builder で生成言語を VHDL にした場合 以下のような記述になります ここで <ALTERA_NOTE> の間に任意の記述をしておけば SOPC Builder で Generate を実行しても そのままの記述内容が保存されます < 例 > -- <ALTERA_NOTE> CODE INSERTED BETWEEN HERE --add your libraries here --AND HERE WILL BE PRESERVED </ALTERA_NOTE> また 生成言語を Verilog にした場合でも テストベンチ内の <ALTERA_NOTE> の間に記述をすることで SOPC Builder で Generate を実行しても そのまま記述が保存されます 2-2. Nios II IDE の設定 1 Nios II 簡易チュートリアル を行った際に作成した Nios II IDE のソフトウェア プロジェクト内の hello_nios.c を開きます 遅延を発生させている部分をシミュレーションの対象から省き PIO のアクセスを中心にシミュレーションがきるように hello_nios.c 内の usleep() 関数をコメントアウトし保存します 2 Nios II 簡易チュートリアル を行った際に作成した Nios II IDE のソフトウェア プロジェクトのシステム ライブラリ の設定を変更します プロジェクトの中から soft_test を選択後 右クリック System Library Properties を選択し Properties for soft_test_syslib ウィンドウの左枠から System Library を選択し 次ページの画面を表示させます プログラムメモリを選択し ModelSim only, no hardware support にチェックを入れます ModelSim only, no hardware support にチェックを入れることで シミュレーション上では キャッシュメモリ BSS 領域のなどの初期化動作を省きます したがって シミュレーションを高速化できます OK をクリックします ver. 8.1 2009 年 3 月 Page 4 of 13 Altima Corporation
3 ソフトウェアをビルドします soft_test を選択後 右クリック Build Project をクリックします ビルドが終了後 メモリの初期値ファイルの (.dat ファイル ) が完成します 2-3. ModelSim-Altera の設定 1 ModelSim-Altera を Nios II IDE から立ち上げます sopc_test を選択した状態で Run メニュー Run をクリックします ver. 8.1 2009 年 3 月 Page 5 of 13 Altima Corporation
2 Run ウィンドウで Nios II ModelSim-Altera を選択後 右クリック New をクリックします ver. 8.1 2009 年 3 月 Page 6 of 13 Altima Corporation
3 Project 欄で soft_test が選択されていていることを確認します また ModelSim path をブラウズボタンより 設定します 使用する ModelSim-Altera の実行ファイル (.exe ファイル ) が存在しているフォルダまでを指定し シミュレータ ツールのパスを確認し Run ボタンをクリックします ModelSim-Altera が起動します 4 ModelSim-Altera が起動すると 自動的に setup_sim.do が実行されるため 表 2( 次ページ ) のマクロが使用できるようになります ver. 8.1 2009 年 3 月 Page 7 of 13 Altima Corporation
表 2 マクロの説明 マクロ名 s 説明 Nios II プロセッサやペリフェラルのコンパイル ロードを行う このマクロを実行すると 実行中のシミュレーションは リセットされる Nios II 用ではなく Nios 用の古いマクロで ソースをリコンパイルし 再びメモリの初期 c 値ファイルを生成させるマクロ 但し Nios II の開発環境では Nios II IDE でソフトウェアをビルドする際に メモリ初 期値ファイルを生成するので Nios II 開発環境においては使用しない w UART 名 _drive run <time> <unit> wave_presets.do ファイルを実行することで ModelSim の wave ウィンドウにシステム内のプロセッサやペリフェラルの主要なノードをセットする UART のインタラクティブ ウィンドウの起動 UART からの TXD が確認できる シミュレーションを実行する ex. run 300 us h マクロの説明を表示 ( ヘルプ ) 2-4. シミュレーションの実行 1 各コンポーネントの HDL ファイルのコンパイルとロードを行うため s コマンドを実行してください ver. 8.1 2009 年 3 月 Page 8 of 13 Altima Corporation
2 jtag_uart コンポーネントのインタラクティブ ウィンドウを表示させるため jtag_uart_0_drive () と入力し コマンドを実行します hello_world.c 内の printf で記述されたキャラクタがこのウィンドウで確認できます 3 wave ウィンドウへノードを追加するために w と入力しコマンドを実行してください ver. 8.1 2009 年 3 月 Page 9 of 13 Altima Corporation
4 cpu オンチップ メモリ jtag_uart のノードは w マクロを実行することで wave ウィンドウへ追加されますが それ 以外のノードを追加したい場合には 以下の方法で追加可能です < 例 > PIO コンポーネントの信号を wave ウィンドウへ追加する場合 1. Workspace ウィンドウで sim タブを選択し test_bench dut the_pio を選択 2. Objects ウィンドウに pio のコンポーネントのノードが表示されるので 必要なノードを選択 3. wave ウィンドウへマウスで ドラッグ & ドロップ することで追加 ドラッグ & ドロップ 補足 wave ウィンドウ上で信号間に境界線を追加する方法 1. 境界線を入れたい信号を選択 ( 境界線が入るのは選択した信号の上になります ) 2. マウスで右クリック Insert Divider を選択 3. Wave Divider ウィンドウが開くので Divider Name に境界線の名前 ( 任意 ) を入力し OK をクリック ver. 8.1 2009 年 3 月 Page 10 of 13 Altima Corporation
⑤ シミュレーションを実行します run 300 us とタイプし シミュレーションを実行します シミュレーションの実行後 wave ウィンドウで波形を確認することができます 270 us 以降の pio コンポーネントの信号に着目してください hello_nios.c のソース内での pio コンポーネントへのデータアクセスが実際の LED の点滅に反映されていることが確認できま す インタラクティブ ウィンドウを確認すると printf の出力キャラクタも確認できます wave ウィンドウ ver. 8.1 2009 年 3 月 Page 11 of 13 Altima Corporation
インタラクティブ ウィンドウ ver. 8.1 2009 年 3 月 Page 12 of 13 Altima Corporation
弊社より資料を入手されましたお客様におかれましては 下記の使用上の注意を一読いただいた上でご使用ください 1. 本資料は非売品です 許可無く転売することや無断複製することを禁じます 2. 本資料は予告なく変更することがあります 3. 本資料の作成には万全を期していますが 万一ご不明な点や誤り 記載漏れなどお気づきの点がありましたら 弊社までご一報いただければ幸いです 4. 本資料で取り扱っている回路 技術 プログラムに関して運用した結果の影響については 責任を負いかねますのであらかじめご了承ください 5. 本資料は製品を利用する際の補助的な資料です 製品をご使用になる場合は 英語版の資料もあわせてご利用ください 横浜本社 222-8563 横浜市港区新横浜 1-5-5 マクニカ第二ビル TEL 045-476-2155 FAX 045-476-2156 大阪営業所 532-0011 大阪市淀川区西中島 6-1-3 アストロ新大阪第二ビル 7 階 TEL 06-6307-7670 FAX 06-6307-7671 名古屋営業所 460-0003 名古屋市中区錦 1-6-5 名古屋錦シティビル 7 階 TEL 052-202-1024 FAX 052-202-1025 宇都宮営業所 321-0953 宇都宮市東宿郷 4-2-24 センターズビル 7 階 TEL 028-637-4488 FAX 028-637-4489 ver. 8.1 2009 年 3 月 Page 13 of 13 Altima Corporation