クイズ

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

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

FPGAの開発手順と開発ツール

FPGAは回路を書き換えることができて便利そうだが,FPGAの開発経験のない人にとっては何からどう始めていいのかわからない,というのが正直なところではないだろうか。 開発方法が難しいのではないか,新たに多くのことを覚えなければならないのではないか,長年の経験を積まなければ使いこなせないのではないか,という漠然とした不安を持つ人も少なくないだろう。しかし実際の開発は,開発を支援するツールの充実によって容易にスタートすることができるし,高性能で高集積・高機能なロジック設計を,ASICよりも簡単に成し遂げることができると言っても過言ではないのだ。そこで連載の第5回目となる今回は,FPGAの開発手順や開発ツールの概要を説明しよう。

 前回までにFPGAのさまざまなメリットを説明してきたが,ここからは具体的な開発手順(いわゆるデザイン・フロー)について触れてみたい。

 はじめに強調しておきたいのは,未経験の多くの人が考えるほど FPGAの開発は難しくないという点である。なぜか? それは FPGAというデバイスを使う点を除けば,従来のシステム開発やロジック設計でやるべきこととその流れに変わりはないからだ。もうひとつ重要な理由は,FPGAを用いる部分の開発の全工程で,開発ソフトウェア・ツールによる設計自動化・設計容易化が強力に支援されるということだ。 開発ソフトウェア・ツールは,設計のアイデアをFPGA の回路情報と実装へと橋渡ししてくれる役割を担っている(図1)。

図1.アイデアを形にする開発ツールの役割

図1.アイデアを形にする開発ツールの役割

 それでは,FPGAの開発手法を以下の順番で攻略していこう。

1.FPGAの開発フローを3つのステップで考える
2.各ステップで行うことと,関連する用語の意味を知る
3.何を用意すればよいかを理解する

FPGAの開発フローを3つのステップで考える

 FPGAの開発フローも大きく分けると3つのステップで構成される。(図2)

(A) デザイン・エントリ
(B) インプリメンテーション
(C) 機能&タイミング検証

図2. FPGAの基本的なデザイン・フロー

図2. FPGAの基本的なデザイン・フロー

 一般的に製品の開発において構成される3つのステップと重ね合わせると次のように考えることができる。

(A) デザイン・エントリ = 製品の機能や性能を決定し要件として定義する
(B) インプリメンテーション = LSIやディスクリート部品を使って設計し基板に実装する
(C) 機能&タイミング検証 = 機能をテストし検証する

 このように FPGAの開発フローは大きな手順としては一般の製品開発と同様に考えることができるということだ。システムにFPGAを採用したとしても変わるわけではないのだ。

 そしてこれは規模の小さいCPLDの場合でも,逆に規模の大きいASICの開発でも基本は同じだ。

 それぞれのステップを少し説明しておこう。

 まずは一つ目の「デザイン・エントリ」である。機能仕様を基にして論理回路を設計していく。論理設計の手法としては,論理規模が小さい場合には真理値表を用いる方法や,論理回路図(論理ゲートの結線図)を書くことで表現していたが、現在は HDL(ハードウェア記述言語)を用いて論理仕様を表現する手法がごく一般的になっている。

 二つ目は「インプリメンテーション」だ。ここでは「論理合成(シンセシス)」と「配置配線」というふたつの処理を行う。何やら難しそうに感じて,先に進めなくなる不安を持ってしまいがちだが,心配は無用である。これらの処理は,基本的に開発ソフトウェア・ツールが自動で実行してくれるのだ。

 最後に「機能&タイミング検証」である。検証の対象は主に機能とタイミングであるが,そのやりかたは開発ソフトウェアだけで行う方法と実機を利用して行う方法がある。どちらが良い・悪いでなく,目的に適した方法を選択すること,また選択できることが重要だ。検証についても開発ソフトウェアで様々なツールが用意されている。

 以上の開発フローを細かく表すと図3のようになる。基板を使った最後のテスト工程を除いて,基本的にはすべてパソコン上での作業になる。いずれも開発ツールを活用することでスムーズかつ効率的な開発が約束される。 開発ツールはFPGAが普及し始めた当初から比べるとずいぶん機能が豊富になったが、より一層使いやすくもなった。大げさではなく,設計仕様をもとにして回路情報をきちんと入力さえしてあれば,開発ツールの画面に従ってクリックしていくだけで,論理合成やタイミング解析といったさまざまな処理が完了するという具合だ。

各ステップで行うことと,関連する用語の意味を知る

 それでは,各ステップで何を行うのかを,図3 の開発フローをもとにもう少し探ってみよう。

 デザイン・エントリでは,前述のように現在では HDLを使用することが一般的である。業界標準として知られている HDLには、米国国防総省の納入仕様書を原点とする VHDL(VHSIC(Very High Speed Integrated Circuits) Hardware Description Language)と,民間企業の商用シミュレーション・ツール用の言語として誕生したVerilog HDL という2つがある。両言語ともシステム機能の表現力は幅広いが,ASICやFPGAのロジック設計に向けて,RTL(Register Transfer Logic)という設計スタイルが取られている。これは後のインプリメンテーションで出てくる論理合成を利用するためのスタイルと考えておけば良い。 RTLスタイルで記述することを,プログラムを書くことになぞらえて RTLコーディングと呼んでいる。RTLという言葉は難しそうであるが,「組み合わせ回路+フリップフロップ」を単位とする記述だ。ここで,この連載の第2回を復習してみれば、実はFPGA自体が RTLのスタイルにぴったりな内部アーキテクチャになっていることがわかるだろう。

 RTLコーディングを行った後,その内容が意図した記述になっているか,つまり設計仕様に一致しているかを確かめるためにシミュレーションによる検証を行う。RTLの記述で行うのでRTLシミュレーションとも呼ぶことで,別のステップで行うシミュレーションと区別することもある。シミュレーションは,回路の入力としての信号(原因)を与え、その出力としての信号(結果)が期待通りのものかどうかを確認することだ。前述の3ステップの「デザイン・エントリ」では述べていないが,実際の開発フローではこの最初のフェーズでも検証が重要な鍵になる。

 次は「インプリメンテーション」のなかの最初の処理が「論理合成(シンセシス)」だ。これは,前のステップで作成したHDL(RTL)記述の内容を判断して,デバイスが持つリソース(部品の概念)に当てはめる作業だ。そのつぎの処理が「配置配線」である。前の処理で当てはめた「部品」のそれぞれをFPGAのどの場所に配置し,それらをどのように配線するかを決定する作業だ。論理合成や配置配線の処理を実施するときに、回路を小さくつくるか,あるいは性能を高くするか等の条件を指定することで,より最適な設計結果を得ることができる。条件指定は設計者が行うが,論理合成と配置配線の処理は基本的に開発ソフトウェア・ツールが自動実行する。

 なお「配置配線」は ASICでは Place & Rout とか、略してP&Rと呼ばれているところであるが,FPGAの世界ではこの処理を「フィッティング(Fitting)」と呼ぶ場合があるので覚えておくと良いだろう。また「論理合成」と「配置配線」をまとめて実行できる場合は,それらをまとめてフィッティングと呼ぶこともある。また,それらの前後の処理もまとめて「コンパイル(Compile)」と称することもあるので,これも業界や経験者が使っている用語として覚えておくと良い。

 次は「検証」のステップになる。図3では,「タイミング解析」,「ゲートレベル・シミュレーション」,「実機上でのシミュレーションとテスト」の3段階に分けて記載していが,このなかの「タイミング解析」は必須の作業と言えよう。実際には「スタティック(静的)・タイミング解析」という方法で解析・検証を行う。前述のRTLシミュレーション(機能シミュレーション)と異なり,配置配線後の回路情報にもどつき信号が伝播する時間(遅延時間)を計算して,その合計が期待する時間内に収まっているかどうかを確認するという作業だ。これも,計算と確認結果は開発ソフトウェアが実施し問題がある箇所をレポートしてくれる。 前述の「コンパイル」ではここまでをまとめて実施させることも可能だ。つまり開発ソフトウェアでコンパイル実行ボタンを一回クリックするだけで,あとは全自動というわけだ。設計者は最後のタイミング・レポートの内容を確認して,問題がある場合に必要な対策をとることが仕事というわけだ。

 「ゲートレベル・シミュレーション」は,回路規模が小さい昔の時代には機能検証とタイミング検証の両方の目的を担っていたが,回路規模が大きくなりタイミング条件が複雑になるとシミュレーションの処理時間が膨大になってしまうのが問題だ。現在のようにHDL記述で設計をし,RTLシミュレーションで機能検証し,スタティック・タイミング解析でタイミング検証をすることがほとんどである。「ゲートレベル・シミュレーション」の賢い使い方は,入力信号のタイミングが非同期である場合などの詳細検証のために,一部だけをオプション的に使うという方法だ。

 基板に実装してシミュレーションとテストを行うところは別の機会で紹介する予定なので,今回は割愛する。

図3. FPGAの詳細デザイン・フロー

図3. FPGAの詳細デザイン・フロー

何を用意すればよいかを理解する

 FPGAのデザイン・フローをおおまかに知ることができたので、これを実際に導入するために何を用意すればよいかを理解したい。おおまかに分けると開発ツール(開発ソフトウェアとハードウェア)と、必要な人材(スキル)と教育(学習)という面で考えることが必要になるだろう。まず開発ツールについて考えてみよう。

 開発ソフトウェアは、おもにFPGAベンダーが直接提供している。論理合成(シンセシス)や、配置配線との連携機能など一部のツールは,サードパーティが提供しているものもある。たとえばアルテラの場合は「Quartus II」(クオータス・ツー)というソフトウェアがFPGAの統合開発環境で、上述のデザイン・フローの全てを実施することができる。Quartus IIはユーザー登録さえすればアルテラのウェブサイト【http://www.altera.com/support/software/sof-quartus.html】からダウンロードすることにより入手できる。FPGAの上位ファミリを使わない場合は無償で使用できる Web Editionで開発できる。

 上位ファミリの設計を行う場合や高レベルの機能を使う必要がある場合はSubscription(サブスクリプション) Edition を購入して開発する。1年ごとの費用は1本(1ユーザー)あたり約2,500米国ドルだ。他のFPGAベンダーも自社開発かサードパーティ製との組み合わせかの違いはあるが、FPGAベンダーから開発環境を入手するという形態がほとんどであろう。

 Quartus IIは通常のWindowsパソコン上で動作する。エンジニアのストレスにならないよう,最低でも数ギガバイトの十分なメモリを積んだ性能の高いパソコン(あるいはワークステーションと呼ばれるハイエンドパソコン)と,作業を快適にする大画面モニタを,担当者に一台ずつ割り当てればよい。最近では価格もこなれているのでプロジェクトとして大きな負担にはならないはずだ。なお,Quartus IIの場合はWindows の64ビット版やLinux 32ビット/64ビットでも動作するので,エンジニアや開発現場の好みと事情によってマシン環境を増強できる。

 ハードウェアとしては,実機での評価や検証のための開発ボードというものも市販されている。FPGAベンダーから販売されているもの以外にも,様々なサードパーティ製品も市販されているので,目的に応じて選択することができる。このような開発ボードを利用すれば,より早く効率的に,実機検証やFPGAデバイス選択のための評価を行うことができる。

必要な人材(スキル)と教育・学習はどうすれば良いか

 開発環境のほかに,もうひとつ重要なのが人材だ。人材の質はプロジェクトの成否を決める場合が多いため,マネージャや経営幹部にとって優れた人材の確保は大きな命題のひとつだ。

 FPGAの開発で必要な人材とスキルは当然ながら論理設計だ。HDL(ハードウェア記述言語)を扱ったASICの開発経験者であれば申し分ないが,そうでなくても実は大きな問題ではない。デジタル回路の設計の基本を理解していることが最も重要で、その基礎があれば社内でのOJT(オン・ザ・ジョブ・トレーニング)や FPGAベンダーが提供するトレーニング・コースを受講することでスキルを習得することができる。逆にASIC開発の経験者であっても、FPGAベンダーのトレーニング・コースを受講することにより、効率よく開発が進められるだろう。

 ソフトウェア技術者をFPGA開発に振り分けられないかと考えるマネージャもいる。たしかにHDLにはプログラミング言語と似たところもあるから,自然な発想かもしれない。(VHDLは PascalやAda,Verilog HDLは CやPascal に似せて作られていると言われている。)また,ソフトウェアで組んでいた処理をFPGA上にハードウェア化して性能を上げたい場合に,元々のソフトウェアエンジニアにFPGA設計を担当させたほうがスムーズに進むと考えるかもしれない。しかし,ソフトウェアは1ステップずつ実行されていく逐次処理であるのに対して,ハードウェア回路は,複数の回路が同時に動作する並列処理ができるのが特徴である。そしてハードウェア設計にはクロックという時間の概念が存在する点がソフトウェア設計との大きな違いだ。このような違いを考慮した上で人材の再配置や育成を考えることも必要だろう。

 いずれにしろ、FPGAの開発ができる人材はこれからのシステム開発には必要不可欠になる。またFPGAの開発に必要なスキルを身につけておくことは,本人にとっても,企業にとっても将来の強みにはなるだろう。デジタル回路の基礎やハードウェア処理の基本を理解したあとは、FPGAベンダーのトレーニング・コースを活用することで実践的なFPGA開発スキルを習得できるはずだ。

 さて,後編では さらに開発環境の理解を深めるために、Quartus IIの実際の画面を通してたデザイン・フローを視覚的にみることにしよう。また、かつてのFPGAユーザー向けに「FPGA開発ツールの今」を、そしてASICユーザー向けには「ASICと比較した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」 の略になります。アルテラについて詳しくは「アルテラについて」をご覧ください。