連載
» 2007年10月31日 00時00分 公開

メモリ容量やDSPブロックを減らすには?FPGA開発テクニック、チューニングの心得(3)(2/2 ページ)

[島田順二(アルティマ),@IT MONOist]
前のページへ 1|2       

メモリ容量やDSPブロックは減らせるのか?

 続いて、ロジック・エレメントと同様に“メモリ・ブロックやDSPブロックの使用量を減らせるのか”を「Resource Optimization Advisor」で確認してみます。

メモリ・ブロックの設定

 それでは、メモリ・ブロックから確認していきましょう。

 Resource Optimization Advisorの「Memory Block Usage」を開きます。

 「Remove automatic inferencing of memory blocks to better utilize device resources」という項目に(アラートマーク)が付いています(図9)



図9 「Remove automatic inferencing of memory blocks to better utilize device resources」の設定内容
(画像をクリックすると拡大します)

 ここでの設定内容は以下のとおりです。

  • Auto RAM Replacement
  • Auto Shift Register Replacement

 通常、デザイン上でRAMや大きめのシフト・レジスタを宣言していた場合、Quartus IIは自動的にメモリ・ブロックを使用します。ここでの推奨設定がどちらも「OFF」ということは、極力メモリ・ブロックを使用しないコンパイルの設定になります。

 ここで[Correct the Settings]ボタンをクリックして推奨設定である「OFF」に変更します。

 すると、「Remove automatic inferencing of memory blocks to better utilize device resources」の(アラートマーク)が(チェックマーク)になり設定が完了します。

 では、この設定による結果はどのようになるのでしょうか?

 現在までのコンパイル結果では、図5のようにメモリ・ブロックは512bits使用されています。しかし、メモリ・ブロックを使用するようになったのは図3で紹介した「Turn on allow any size for ROM/RAM/Shift Register Recognition」の設定結果です。つまり、当初のデザインではメモリ・ブロックを使用していなかったけれども、設定を施すことによってメモリ・ブロックを使用するように設定しました。しかし、今回は「メモリ・ブロックを使用しない」設定を施すことになります。

 図3の設定と図5の設定は相反する設定になりますが、結果がどのようになるのかをコンパイルして確認してみましょう。

 コンパイル結果は図10のようになります。

図10 「Remove automatic inferencing of memory blocks to better utilize device resources」の設定後のコンパイル結果

 メモリ・ブロックの使用結果を見てみると「512bits」と結果には変更がありませんでした。なぜこのような結果になったのでしょうか?

 それは、ロジック・エレメントの使用率(76%)に比べて、メモリ・ブロックの使用率がかなり低く(1%以下)、メモリ・ブロックを使用した方が全体の使用効率が高いとQuartus IIが判断したためです。

 このように相反する設定を施した場合は、全体の使用効率として“何が最適なのか?”を考慮してコンパイルが行われます。

DSPブロックの設定

 次に、DSPブロックの設定を見てみましょう。「Resource Optimization AdvisorのDSP Block Usage」を開きます。

 「Remove automatic inferencing of DSP blocks to better utilize device resources」という項目に(アラートマーク)が付いています(図11)

図11 「Remove automatic inferencing of DSP blocks to better utilize device resources」の設定内容
(画像をクリックすると拡大します)

 この設定もメモリ・ブロックの設定と同じ考えです。

 通常は、デザイン上で乗算器を使用するような記述をしていれば、自動的にDSPブロックを使用します。しかし、DSPブロックの使用率が高い場合、これを推奨設定である「OFF」にすることによって乗算器の構成をロジック・エレメントで構成するようにします。

 しかし、乗算器の回路は非常に多くのロジック・エレメントを消費します。例えば、9×9の乗算器はCyclone IIIのDSPブロックを1個消費するだけですが、ロジック・エレメントで構成すると約110個使用してしまいます。このため、多くのロジック・エレメントが残っている場合以外は、この設定をしない方が全体的にバランスの取れたコンパイル結果が得られます。

 今回は「Resource Optimization Advisor」の続きということで“Logic Element Usage”の「Stage2」以降と“Memory Block Usage”“DSP Block Usage”の内容を紹介しました。

 さて、次回は「回路の動作スピードを改善するポイントは?」をテーマにAdvisor機能の「Timing Optimization Advisor」の内容を紹介します。

前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.