ぽきです。
Nios II を含んだデザインを作成していて、ふと思いました。
ハードウェア・デザインに変更があった場合は、Quartus II でフルコンパイルが必要だけど
ソフトウェアのプログラムだけを変更した場合は、ハードウェアの変更はないわけだから、Quartus II で再コンパイルの必要はないのでは…?
それが可能なら、アップデートにかかる時間をもっと短縮することができるんじゃないかな?
調べてみたところ…
はい!できます!
HDL やネットリストの更新を行わずに、オンチップ RAM に持たせる初期値データだけを更新して sof ファイルを生成すればよいのです。
『ソフトウェアの実行ファイルのみを変更した場合』
フルコンパイルを行うよりも断然に早い方法をご紹介いたします!
私が試したところフルコンパイルと比べて約 20 % の時間で終了します!
Nios II SBT でプログラム内容を変更し、オンチップ RAM に持たせる初期値データを更新するため、mem_init_generate を実行します。
QIP が追加されていることを確認したら、ここからが時短術の方法です!
まず Quartus II の Processing メニューより Update Memory Initialization File をクリックします。
この Update Memory Initialization File を実行することで、前回のコンパイル結果のうち、メモリの初期値データ部分のみを更新することが可能です。
配置配線などを行った前回のコンパイル結果のデータが使用され、初期値データだけが更新されたネットリストファイルが生成されます。
その後 Processing メニュー > Start > Start Assembler をクリックします。
これで、ソフトウェアの実行ファイルのみが更新された sof ファイルが生成されます。
フルコンパイル ( Start Compilation ) を行うと
論理合成、配置配線、プログラミング・ファイルの作成、タイミング解析のすべての処理を行います。
Start Assembler はその中で、配置配線されたネットリストを用いて
デバイスへのプログラミング・イメージ ( sof ファイル ) の生成だけを行う処理です。
そのため、論理合成や配置配線、タイミング解析の時間をなくすことができ、結果として時短となるのです!
これで 1 回の書き込みで実行ファイルも動作します!
初期値データの更新だけを sof ファイルに反映できる方法があるなんて私も驚きでした。
みなさんもどれぐらい時短できたか計ってみてください!
きっと驚くほど早いですよ♪