Active-HDL における ALTERA NIOS II 組み込みプロセッサデザインの
シミュレーション方法 

本アプリケーションノートでは、Active-HDL における ALTERA NIOS II 組み込みプロセッサデザインのシミュレーション方法を説明します。 ここでは Eclipse IDE for C/C++ Developers software のサンプルデザイン “Board Diagnostics” をベースにしていますが、基本フローは他のデザインでも同じです。

必要となるツール

本アプリケーションノートでは、次のツールをインストールしており、操作経験があることを前提としています。 

  1. Altera Quartus II 10.1 以降

  2. NIOS II EDS 9.0 以降

  3. Active-HDL 8.3 以降

デザインの設定

  1. “C:\” ルートデイレクトリに空の “TEMP” フォルダを作成します。コンピュータのコンテキストメニューからプロパティ | システムの詳細設定を選択し、詳細設定タブにて環境変数ボタンをクリックします。下記のようにシステム環境変数 TEMPTMP を設定します。

    図 1: 環境変数の設定

  2. 定義済みのシステム環境変数から Path を選択し、その変数値の設定欄にダブルセミコロン “;;” があるか確認し、ある場合には全ての “;;” をシングルセミコロン “;” に変更します。コンピュータを再起動します。

    図 2: Path 整合性の確認

  3. Quartus II を開きます。

  4. File メニューから Open project を選択します。

  5. プロジェクトディレクトリから任意の “.qpf” ファイルを選択して開くをクリックします。デザインが下記のように表示されます。

    図 3: Quartus II Configuration Controller プロジェクト

    SOPC Builder シミュレーション設定

  6. Quartus II にてプロジェクトを読み込んだ後、Tools メニューから SOPC Builder をクリックし、下記のようにデザインの全ての接続をチェックします。

    図4: clk_0 clk_reset 接続例

  7. 下記のようにエラーがないことを確認します。全てのワーニングやインフォメーションメッセージを読み、デザインへの影響を検討してください。

    図 5: Design Status Window

    シミュレーションファイルの生成

  8. Next をクリックしてシミュレーションファイルを生成します。

  9. System Generation タブにて Simulation にチェックを入れ、プロジェクトシミュレータファイルを作成します。

    図 6: System generation 設定

  10. Generate ボタンをクリックします。変更箇所の保存を要求される場合には Save をクリックします。

    図 7: Generate ボタン

    図 8: ファイル生成の完了

    ツールの構築とメモリ初期化ファイルの生成

    Eclipse にてプロジェクトを作成し構築するには、次の手順で行います。

  11. Tools メニューから NIOS II Software Build Tools for Eclipse を選択します。

  12. File | New| Project を選択します。

  13. NIOS II Application and BSP from Template を選択して Next をクリックします。

    図 9: NIOS II IDE にて新しいプロジェクトを作成

  14. 次のウィンドウで、SOPC 情報ファイルを探して Open をクリックします。

    図 10: SOPC 情報ファイルの選択

  15. Board Diagnostics プロジェクトテンプレートを選択して、プロジェクトに “BD_big_stack” と名前を付けます。“Next” をクリックします。
    注意: HAL BSP はメモリ管理ユニット (MMU) をサポートしていなため、Eclipse NIOS II サンプルを使用するには、MMU をデザインから除外する必要があります。

    図 11: 新プロジェクトの設定

  16. Create a new BSP project based ......を選択し、次のように設定します。“Finish” をクリックして、status ウィンドウが完了するのを待ちます。

    図 12: BSP の生成

  17. プロジェクトの生成をチェックし、status ウィンドウの出力が下記のようであることを確認します。

  18. *** Clean-only build of configuration Nios II for project BD_big_stack ****

    make clean

    [BD_big_stack clean complete]

  19. プロジェクトを選択し、マウス右ボタンメニューの Properties | Project References をクリックして、下記のような設定であることを確認します。OK をクリックします。

    図 13: Project References

  20. “BD_big_stack” プロジェクトを選択し、マウス右ボタンメニューの Build Project をクリックして実行します。出力ウィンドウをチェックします。プロジェクトによっては処理に時間がかかります。コンパイル処理が完了すると、プロジェクトディレクトリの .dat ファイルが更新されます。

    --quartus_project_dir "C:/Users/TerryT/workspace/niosII_stratixII_2s60"

    Info: (BD_big_stack.elf) 89 KBytes program size (code + initialized data).

    Info: 31 KBytes free for stack + heap.

    Info: Creating BD_big_stack.objdump

    nios2-elf-objdump --disassemble --syms --all-header --source BD_big_stack.elf >BD_big_stack.objdump

    [BD_big_stack build complete]

    ソフトウェアプロジェクトの作成と構築が完了したら、シミュレーションを実行するために Active-HDL で下記の操作をします。

    Active-HDL でのシミュレーションの実行

    SOPC と Eclipse でのシミュレーションファイルの生成が完了したら、下記を実行します。

  21. Active-HDL を起動します。Active-HDL がすでに立ち上がっている場合には、開いているワークスペースを閉じます。

  22. メニューの File | Import | Altera SOPC Simulation Script を選択します。

  23. setup_sim.do ファイルを選択し、Open をクリックします。[setup_sim.do ファイルはプロジェクトディレクトリに存在します。このファイルは SOPC builder により生成されています。]

    図 14: setup_sim.do ファイル

  24. Altera SOPC Simulation Script importing ウィザードにより、ワークスペースが作成され、必要な do ファイルが作成されて、ワークスペースに付加されます。下記は setup_sim.do ファイルインポート時の典型的なコンソール出力です。シミュレーションスクリプトを Active-HDL にインポートすると、ワークスペースは下記のようになります。

    # ELBREAD: Elaboration time 2.5 [s].

    # Reading "setup_sim.do" ...

    # Creating "setup_sim_altera.do" ...

    # Creating "comp_altera.do" ...

    # Creating "comp_mem_altera.do" ...

    # Creating "init_sim_altera.do" ...

    # Creating "wave_presets_altera.do" ...

    # Creating "list_presets_altera.do" ...

    # Creating "help_altera.do" ...

    # Creating "aliases_altera.do" ...

    # Creating "jtag_uart_0_log_altera.do" ...

    # Import process successfully finished, etc.

    図15: setup_sim.do ファイルインポート後のワークスペース

  25. comp_altera.do ファイルを実行して、必要なライブラリのマッピングとコンパイルを行います。 マクロファイルを実行するには、comp_altera.do を選択し、マウス右ボタンメニューの execute をクリックします。

    # Compile Architecture "europa" of Entity "onchip_memory2_0_s1_arbitrator"

    # Compile Entity "sysid_control_slave_arbitrator"

    # Compile Architecture "europa" of Entity "sysid_control_slave_arbitrator"

    # Compile Entity "timer_0_s1_arbitrator"

    # Compile Architecture "europa" of Entity "timer_0_s1_arbitrator"

    # Compile Entity "VME_HW_SOPC_BUILD_reset_clk_0_domain_synch_module"

    # Compile Architecture "europa" of Entity "VME_HW_SOPC_BUILD_reset_clk_0_domain_synch_module"

    # Compile Entity "VME_HW_SOPC_BUILD_reset_altpll_0_c0_out_domain_synch_module"

    # Compile Architecture "europa" of Entity "VME_HW_SOPC_BUILD_reset_altpll_0_c0_out_domain_synch_module"

    # Compile Entity "VME_HW_SOPC_BUILD"

    # Compile Architecture "europa" of Entity "VME_HW_SOPC_BUILD"

    # Compile Entity "test_bench"

    # Compile Architecture "europa" of Entity "test_bench"

    # Compile success 0 Errors 0 Warnings Analysis time : 0.8 [s]

  26. init_sim_altera.do ファイルを実行し、イニシャライズシミュレーション処理を行います。次のメッセージがコンソールに表示されます。

    # ELAB2: Elaboration final pass...

    # ELAB2: Create instances ...

    # ELAB2: Create instances complete.

    # SLP: Started

    # SLP: Elaboration phase ...

    # SLP: Elaboration phase ... skipped, nothing to simulate in SLP mode : 0.0 [s]

    # SLP: Finished : 0.0 [s]

    # ELAB2: Elaboration final pass complete - time: 1.2 [s].

    # KERNEL: Kernel process initialization done.

    # Allocation: Simulator allocated 25170 kB (elbread=6156 elab2=16989 kernel=2025 sdf=0)

    # KERNEL: ASDB file was created in location C:\Users\TerryT\workspace\niosII_stratixII_2s60\VME_HW_SOPC_BUILD_sim\src\wave.asdb

    # 11:36 AM, Wednesday, February 02, 2011

    # Simulation has been initialized

    # Selected Top-Level: test_bench (europa)

  27. wave_presets_altera.do ファイルを実行し、信号を波形に追加します。

  28. simulation メニューからシミュレーションを実行するか、コンソールに run 1000 us とタイプして enter キーを押します。コンソールには次のメッセージが表示されます。

    # # Displays virtual signals

    # 6 signal(s) traced.

    run 1000 us

    # EXECUTION:: NOTE : Stratix II GX PLL is enabled

    # EXECUTION:: Time: 0 ps, Iteration: 2, Instance: /DUT/the_altpll_0/altpll_0_altpll_sd1_183/STRATIXII_ALTPLL/M1, Process: SCHEDULE.

    # EXECUTION:: NOTE : Stratix II GX PLL locked to incoming clock

    # EXECUTION:: Time: 110 ns, Iteration: 4, Instance: /DUT/the_altpll_0/altpll_0_altpll_sd1_183/STRATIXII_ALTPLL/M1, Process: SCHEDULE.

    # KERNEL: stopped at time: 1 ms

  29. 下記は 1msec のシミュレーション実行結果の例です。

図16: Active-HDL シミュレーション実行

Ask Us a Question
x

Ask Us a Question

x
Captcha ImageReload Captcha
Incorrect data entered.
Thank you! Your question has been submitted. Please allow 1-3 business days for someone to respond to your question.
Internal error occurred. Your question was not submitted. Please contact us using Feedback form.