ぽきです。

 

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 ファイルに反映できる方法があるなんて私も驚きでした。

 

みなさんもどれぐらい時短できたか計ってみてください!

きっと驚くほど早いですよ♪