クイズ

  • 問題1:FPGAのPは何の略?
  • 問題2:FFPGAのAはアルテラのAである。 ○か×か?

※答えはこのページの一番下にあります。

「意外に知られていないFPGA開発ソフトウェアの最新事情」

前回(第5回)でFPGA開発の基本的な流れを紹介したが、そこで疑問を持たれた方もおられるだろう。また過去にFPGAを使った経験から「しょせんFPGAの開発ツールなんて」と考えておられる方もいるかもしれない。そこで今回は「知っていそうで知らないかもしれないFPGA開発ツールの最新事情」を紹介しよう。。

実際の設計ではどうだろうか?

 前回の説明は基本を知っていただくために、エラーのないサンプルデザインを使用した。実際の設計では、VHDLやVerilog-HDLによるRTL記述上の文法エラーを取り除いたり、ファンクショナルシミュレーションで機能的なバグを取り除く作業を行う。このような作業は、FPGAに限らず設計・開発の手順としてごく一般的だ。また、タイミング条件の指定や、FPGA品種やピン配置も適切に指定する作業もあるが、Quartus II ソフトウェアでGUIを使って容易に設定できるので心配にはおよばない。

 前回の最後に紹介した各種のチュートリアルで、さらに知識を増やすことができるだろう。

 設計において重要なことは、設計に携わるエンジニアがタイミング条件やピン配置に対して主体性を持つということだ。ツールは設定する作業は容易にしてくれるが設定値を決めてくれるわけではない。開発ソフトウェアは設定されたとおりに実行する。たとえばタイミング条件の設定が適切でなければそれなりの設計品質しか得られない。それどころか設計が終了できなかったり、現実離れした大規模な回路がつくられてしまったり、あるいはシステム上で問題を起こすことにつながるかもしれない。対策は、現実的な設計条件を適切に開発ソフトウェアで設定することだ。

 もうひとつ、どのようにしてFPGAのデバイスを選択するのか?ということも疑問に思われていることかもしれない。前回の説明のなかでは画面上でひとつのデバイスを選択したが、実際には最初からどのデバイスにするべきか100%確かではないだろう。RTL記述した全体のデザイン、または一部のブロック(モジュール)を、開発ソフトウェアでコンパイル(シンセシス)を行うことにより、ロジック規模、内部メモリ数になるかを知ることができる。なお、デバイスの選定をカタログのデータだけに頼るのは失敗のもとだ。 必ず対象にするデバイスのベンダーの開発ソフトウェアで確認と検討を行うことを強くお勧めする。各社のFPGA内部アーキテクチャの違いと開発ソフトウェアの違いで、デバイスの会社やシリーズによってリソースの使用率が異なるからだ。

 たとえば10万LE(ロジックエレメント)の規模を持つFPGAデバイスがあったとして、開発ツールのフィッティング性能が優れていれば8万、9万LE程 度のリソースを使うことができるかもしれないが、フィッティング性能が劣っていれば6万LE程度しか使えないという場合もあるのだ。さらに、配線を引き回 すようなフィッティング結果になれば、タイミング要件を満足できなくなるおそれもある。この例のようなカタログ・スペックではわからないことは多数あり、 そのようなリスクをなくすためには開発ツールで確かめることが重要なのだ。

過去にFPGA ユーザだったエンジニアやマネージャの誤解を解こう

過去にFPGAを設計したことのあるエンジニアやマネージャにとって FPGAの開発ツールは、
・フィッティングとプログラミングを実行するためのツール
・外部EDAツールと組み合わせて使うもの
・複数のツールの習熟や、ツールの統合や複数ライセンスの管理などユーザにとって面倒

という印象が未だ強いようだ。 しかし現在のFPGA開発ツールは設計の上流から下流まで幅広い範囲をサポートしている。つまり、
・回路情報や回路図の入力(デザインエントリ)〜文法等のチェック(アナリシス)
・論理合成(シンセシス)
・IPの統合、バス設計
・配置配線(フィッティング)
・プログラミング情報の作成(アセンブラ)〜 デバイスへのプログラミング
・タイミング解析
・ファンクショナルシミュレーション
・消費電力の見積もり
・オンチップ・デバッグ

 といった一連の処理をひとつのツールでこなすことができる。 もはやASICの開発ツールと同様の機能を持っていると言っても過言ではないだろう。ASICの開発では、各ステップごとに異なる開発ソフトウェア・ツールを使う必要があるのに比べて、FPGAでは、1つの開発ツールで一連の処理をこなすことができる。

 過去のFPGA開発ツールは、シンセシスの機能は(過去には)搭載されておらず、外部のEDAツールを使わなければならなかった。現在でも複数ベンダーで同一の設計環境と品質にしたいということから外部EDAツールを利用する場合もあるが、内蔵のシンセシス・ツールでも高い設計品質を得られるようになった。

 また、最新のFPGA開発ツールでは、配置配線の実際の情報をもとにシンセシスを行うことができるため設計要求への合わせこみが容易になっている。また、消費電力の見積もりを行うだけでなく、消費電力を低減化するためのシンセシスや配置配線も行うことができる。

 配置配線処理においても、回路ブロックを組み合わせて設計を進める「ブロック・ベース設計」や、個別ブロックのみを変更する「インクリメンタル設計」をサポートするなど、大幅な進化を遂げているのだ。

増大化する開発ツールの実行時間に対処できるのだろうか?

 FPGAは大規模で複雑な回路を搭載することができるようになり、そのために開発期間、とくに開発ソフトウェアの実行時間が長くなってしまうことが懸念されるのではないだろうか。確かに回路規模がおおきくなればそれに伴い開発ツールの実行時間は増大化するが、FPGAの開発ソフトウェアでは様々な方法で時間の短縮化を図っている。ここでは四つの例を紹介しよう。

 一つ目は配置配線のアルゴリズムの改良だ。FPGAは製品ごとに固有のアーキテクチャを持っている。このアーキテクチャと開発ソフトウェアが一対となるようにつくられて配置配線の処理時間を短縮している。

 二つ目はインクリメンタル設計手法をツールに持たせることだ。この手法をサポートするインクリメンタル・コンパイルは、変更した部分だけをコンパイルする機能で、すべてをコンパイルしなおす場合と比較して大幅な時間短縮を行うことができる。

図1.従来の開発ツールでは回路を一箇所変更しただけで全体を再コンパイルする必要があったが、インクリメンタルコンパイル機能の搭載によって、変更箇所のみのコンパイルで済むようになっている

図1.従来の開発ツールでは回路を一箇所変更しただけで全体を再コンパイルする必要があったが、インクリメンタルコンパイル機能の搭載によって、変更箇所のみのコンパイルで済むようになっている

 三つ目はブロック・ベース設計。 これにより本格的にブロックごとに別々に設計して最後に統合することが可能になる。この手法を発展させて、チームで、あるいは離れた場所で、別々に設計するというチーム・ベース設計を行うことができるので全体の開発期間短縮に貢献する。

 そして四つ目は、開発ソフトウェアの実行環境だ。 64ビットのマルチコア環境に対応していれば、大きなメモリ空間を利用しながらストレスなく設計を進められるだろう。ちなみにアルテラのQuartus IIの場合、「サブスクリプション・エディション」で64ビットOS環境とマルチコアのプロセッサをサポートしている。

ASIC開発エンジニアやマネージャの誤解も解こう

 前のセクションでは、過去にFPGAを開発した経験を持つエンジニアやマネージャが抱いている古い開発環境と今の状況について述べたが、次に、ASICの開発エンジニアを対象に、現在のFPGA開発ツールの状況を説明しておこう。

 ASICの開発経験者からよく指摘されるポイントは以下の3点である。

(1) FPGAの開発ツールには文法に「方言」があるため、ASIC用に開発した回路情報(RTLコード)を書き換えなければならない
(2) 同じ理由で、タイミング解析に用いる言葉が違い、解析の方法も異なるため、慣れ親しんだタイミング解析の手法が使えず、また正確な解析が困難である

図2.タイミング解析も以前のSTA(Static Timing Analyzer)では多くのステップが必要だったのに対して、最新のTimeQuestではより簡単に高精度な検証が行えるように進化している

図2.タイミング解析も以前のSTA(Static Timing Analyzer)では多くのステップが必要だったのに対して、最新のTimeQuestではより簡単に高精度な検証が行えるように進化している

(3) ASICの開発ツールはコマンドベースやスクリプトベースで使うことが一般的なので、FPGA開発ツールのようなGUIベースは却って使いにくい

 これらの問いかけに対して、最新のFPGA開発ツールは以下のようになっていることを紹介しておこう。

(1) ASIC用に記述されたRTLコードは、基本的にはFPGAでもそのまま利用できる。内部のメモリやDSP演算回路に対しても、RTLコードから解釈して自動的に割り付けてくれる。もちろん回路によっては多少の書き換え[*]が必要な場合もあるが、ASICで品種を切り替えた場合と同程度の作業量と考えられる。

[*] たとえば、I/Oか回路やPLLなどのアナログ回路ブロックなどでデバイス特有のリソースについては書き換えが必要になることがある。

(2) 過去にはタイミング解析の手法に互換性がなかったこともあるが、現在は(少なくともアルテラのQuartus IIでは)、ASICの業界標準であるSDC(Synopsys Design Constraint)というタイミング制約ファイルをサポートしているため、ASICの開発ツールと同じ要領でタイミング条件の設定や解析ができる。

(3) アルテラのQuartus II は、GUIベースで手軽に操作できるだけではなく、スクリプティングやコマンド・ラインによる処理にも対応している。

 要は、FPGAの開発ツールとASICの開発ツールとの間にあった垣根は、どんどんと低くなっているというのが実態ということだ。

FPGAは開発ソフトウェアとともに生かされる

 このように現在のFPGA開発ソフトウェアは大幅に進歩している。開発ソフトウェアが FPGAデバイスの高い性能や機能を生かす鍵になる。そして、開発ソフトウェアは設計品質の優劣にも関わってくる。さらに開発にかかる時間にも大きく影響をおよぼす。

 FPGAの使用にあたって、もっとも重要視すべきものは開発ソフトウェアと言っても過言ではないかもしれない。FPGAのメリットは、実は優れた開発ソフトウェアと優れたFPGAデバイスとの両輪によって得られるのだ。

 以上、「知っていそうで知らなかったFPGA開発ツール」を意識してFPGA開発ツールの最新事情をご紹介した。

  • 解答1:FPGAのPはProgrammableの頭文字のPです。その「プログラマブル」の名の通り、FPGAは、「後からでも回路の書き換えが可能」である点が大きな利点になっています。詳しくはアルテラの「FPGA入門」をご覧ください。
  • 解答2:1983 年に世界で初めて書き換え可能なロジック・デバイス (PLD : Programmable Logic Device) を開発して以来、アルテラはプログラマブル・ロジックにおけるイノベーションをリードし続けていますので、FPGA の A はアルテラの A だとお思いの方もいらっしゃるかもしれません。しかし、FPGA は、Field Programmable Gate Array の頭文字をとったものです。よって、A は 「Array」 の略になります。アルテラについて詳しくは「アルテラについて」をご覧ください。