連載
» 2010年08月09日 00時00分 UPDATE

FPGA Watch(3):意外とよく似ているASICとFPGAの開発フロー (1/2)

「FPGAの設計手法とツール」をテーマに、FPGA開発ソフトウェアと開発環境について、FPGA初心者やASIC経験者を想定しながら詳しく紹介する

[堀内 伸郎 日本アルテラ株式会社,@IT MONOist]

 前回「ASICとFPGAの対比で見る“転換点”」では、特に高機能・高性能という観点から、今日のASICとFPGAの関係について述べました。

 もしかすると、ASICに追い付き追い越すほどの機能・性能を有するFPGAの設計に対して漠然とした不安を抱かれた方、あるいは“FPGA開発ツールではASIC設計のEDAツールのようなことはできない”とお考えの方もいらっしゃるかもしれません。

 そこで、連載第3回では「FPGAの設計手法とツール」をテーマに、現在のFPGA開発ソフトウェアと開発環境について、FPGA初心者の方やASIC設計経験者の方を想定しながら分かりやすく紹介していきたいと思います。

 本稿をきっかけに、FPGAを初めて使用する方でもすぐに設計に取り掛かれること、また、ASICユーザーの方はこれまでの経験をFPGA設計でも発揮できることをご理解いただけると幸いです。

FPGA開発のハードルは高くない!?

 多くの場合、FPGAの開発に必要なソフトウェアツールは、統合されたソフトウェアとしてFPGAベンダから提供されています。

 一般的に開発ソフトウェアには、

  • (1)回路情報・論理仕様の入力
  • (2)論理合成と、リソースへのマッピング
  • (3)リソースの配置とリソース間の配線
  • (4)FPGAコンフィグレーション情報の作成
  • (5)コンフィグレーションの実施

などのFPGA開発の基本ステップが統合されています。

 ここでいう“リソース”というのは、FPGA内部のロジックやメモリ、I/Oなどの“回路部品”と考えていただくとよいでしょう。

 FPGA開発の基本ステップ(1)の“論理仕様”は、今日ではHDL(ハードウェア記述言語)を用いて、RTL(Register Transfer Level)というスタイルによる論理機能の記述を行うのが一般的になっています。HDLとして多く使われているのは、「Verilog HDL」や「VHDL」です。その後、ソフトウェア上でターゲットにするデバイスの指定・選択や、タイミング仕様(条件)の設定を行います。また、必要に応じてピン配置の指定も可能です。

 以降の(2)〜(4)が、実装設計のステップになります。一般的に(最も容易な方法として)、ソフトウェアツールのボタンを1つ押すだけで、このステップ全体を実行することが可能です。

 つまり、“HDLによるRTL記述とタイミング条件・制約を与える”ことさえできれば、――いい換えると、FPGA初心者であっても“ロジック設計・タイミング設計”さえできれば、FPGAの開発フローとソフトウェアは決してハードルの高いものではありません。また、一般的にFPGAの開発ソフトウェアツールは、GUIベースで視覚的・直感的に使用できる統合環境になっているので、初心者でも使用方法とツールフローの習得が容易です。

 ただし、ツールの“統合化の度合い”については、統合環境として完全にシームレスなツールだけではなく、統合環境ではあるが一部シームレスでないツール、統合環境のようではあるが実際にはいくつかのポイントツールをパッケージ化したようなツールなど、FPGAベンダによって違いがあります。より大規模で複雑な設計になればなるほど、設計の効率化と正確性は重要となります。そのため、完全な統合開発環境を選択することが望ましいでしょう。

 以上のように、基本的には使いやすさを考慮したソフトウェアツールが提供されているため、ロジック設計/HDL設計の初心者向け学習教材としてFPGA(CPLDでも構いません)を活用することも有効でしょう(比較的安価で入手できるFPGA開発キットやスターターキットなどを利用するといいでしょう)。


実はよく似ているASICとFPGAの設計フロー

 では、FPGA開発フローやソフトウェアツールは、ASIC開発とどのように違うでしょうか。

 ASIC設計者の皆さんにも分かりやすいよう、いくつか具体的な例を挙げながら確認していきましょう。

設計の基本フロー

 設計の基本フローについて説明する前に、FPGA開発の基本ステップを再掲します。

  • (1)回路情報・論理仕様の入力
  • (2)論理合成と、リソースへのマッピング
  • (3)リソースの配置とリソース間の配線
  • (4)FPGAコンフィグレーション情報の作成
  • (5)コンフィグレーションの実施

 (1)(2)については、基本的にASICと同じといえます。実際のFPGA設計では、(1)(2)の間にRTL記述のシミュレーションを実施して機能検証を行いますが、これもASICと同じです。ASIC設計では、一般的に(2)までがASICユーザーの作業、(3)はASICベンダの作業、と分かれています(配置配線、またはレイアウト設計)。

 (2)(3)の間でユーザー設計者によるタイミング検証・確認が行われ、(3)の終了後もその結果を用いてユーザー設計者がタイミング検証・確認を行い、仕様(期待)どおりであれば、サインオフしてテープアウトします。テープアウトとは、チップ(マスク)の設計データを製造側に渡すことで、FPGAの場合は(4)に相当するといえます。

 実際のASIC設計では(2)→(3)→テープアウトをワンパスで通すのは極めて稀(まれ)で、特にタイミング設計を収束させるために(2)(3)を何度も何度も繰り返しています。一方、FPGA開発においては、(2)(3)を同時にユーザー設計者の手元で行うことができます。

 つまり、フローとしての違いは(3)の作業を誰が行うのかという点だけです。

配置配線の知識・ノウハウ

 前述のとおり、配置配線の工程はユーザー設計者の手元で行います。

 ということは、ユーザー設計者がFPGAの配置配線に必要な知識、例えばデバイス構造の詳細な知識や配置配線そのもののノウハウを持たなければならないのでしょうか。

 答えは「ノー」です。万が一「ノー」といえないFPGA製品や開発ツールであれば、そのようなFPGAは採用するべきではないでしょう。

 実は、FPGAの黎明期からしばらくの間、一部のFPGAは配置配線の工程の自動化が十分ではなく、多くの部分を人手で実施しなければならないという時代がありました。この時代のFPGA設計者は、FPGAの配置配線のスペシャリストであり、「FPGAの構造やツールの癖を知り尽くした者がFPGAを制する」という状況だったともいえます。このため、現在でもそのような間違ったイメージがFPGA開発のハードルを高くしているとも考えられます。

 現在のFPGAの配置配線は、完全に自動化されています。また、ユーザーの設計条件を満たす結果を得るためのツール設定を自動探索し実行する機能があれば、優れた設計を効率的かつ容易に完了させることが可能です(例:アルテラが提供している開発ソフトウェア「Quartus II(クオータス ツー)」の場合)。

FPGA開発ソフトウェアツール 図1 FPGA開発ソフトウェアツール(アルテラの「Quartus II」の例)

       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.