FPGAでゆとりを捻出?!

年々忙しさを増す開発現場では,担当のエンジニアもマネージャも「時間がない」とぼやきながら,強いストレスにさらされているのが実状ではないだろうか。ことわざで「時は金なり」といわれるごとく,いまやエンジニアにとって時間は貴重なものだ。実は,FPGA(Field Programmable Gate Array)は,こうした現場の問題を解決する可能性を秘めている。連載の第4回目となる今回は,現場の視点から見たFPGAのメリットを取り上げる。

増えるストレス,減る時間

 最近は,製品が高機能になる一方で,製品ライフサイクルが短くなっている。このため開発の最前線に立つエンジニアはさまざまなストレスにさらされている。人員を削減した企業では,エンジニア一人当たりの仕事量も増えているはずだ。また,製品の機能が複雑化したことで,開発すべきソフトウエアやハードウエアの量も増大し,検証すべき動作の組み合わせも膨大な数にのぼる。さらに,一つの製品が終わるとすぐに次の製品に取り掛からねばならず,仕事を区切りなく続けることになり,気分転換したり,休養を取る余裕が減ったりしている現場も多いのではないだろうか。これでは,エンジニアのストレスは増える一方だ。

 このような状況をひとことで要約するなら,「時間がない」ということに尽きるだろう。もちろん,グローバル化が進んで競争が激化した現在では,エンジニアに限らずすべての人が「時間がない」状況に追い込まれている。だが,製品の上流工程にいる開発エンジニアに十分な時間が与えられなければ,機能や性能も含めた「製品の質」に大きな影響が及ぶ恐れもある。何とか新たな時間を生み出すことはできないものか,と考えるエンジニアは多いはずだ。こうした状況を受けて,すでに市場には設計開発業務を効率化するさまざまなツール類が存在している。実際に導入している企業も多いのではないだろうか。

 実はFPGAにも,時間がないというエンジニアの問題解決に役立つ性質を備えている。ここでは少し視点を変えて,「時(とき)」を生み出すツールのひとつとしてFPGAを捉え,開発現場の視点から見たFPGAのメリットを考えてみたい。

早期の実機検証によってハードとソフトの開発を効率化

 開発現場にとってのFPGAのメリットの一つは,開発期間を短縮できることだ。時間に追われているエンジニアにとって,このメリットは大きい。では,FPGAを使うとなぜ開発期間が短縮できるのだろうか。いくつかの理由が挙げられるが,主なポイントは二つである。

 一つは,ソフトウエアとハードウエアとの組み合わせたテストを早い段階から実施できること。FPGAは基板に実装した状態で回路情報をコンフィギュレーションできる。そのため試作基板(もちろん製品基板でもかまわない)さえ作っておけば,回路やソフトウエアが設計途中の段階であってもテストを実施できる。ハードウエアとソフトウエアが密接に連動しながら動作するシステムや,性能要件が厳しくて期待通りの性能が出ているかどうかを早期に検証しておかなければならないシステムでは,設計の途中でテストが実施できる点は,設計の手戻りを防ぐという意味でも大きなメリットになる。

 また,システムのアーキテクチャ設計では,機能をハードウエアで実現する領域とソフトウエアで実現する領域の切り分けを最適化することが重要だ。いわゆるパーティショニングである。FPGAなら,組み合わせテストを実施することで,パーティショニングが適切かどうかも早期に判断することもできる。FPGAと対比されることの多いASIC(フルカスタムLSI)では,テープアウトをしてからでないとサンプルが手に入らない(図1)。ハードウエアとソフトウエアが連動した状態で検証できるのは,ここからだ。FPGAを使った開発が,いかに効率的かが分かるだろう。

図1 開発期間短縮に貢献するFPGA

図1 開発期間短縮に貢献するFPGA

 もう一つのポイントは,FPGAならば設計した回路や変更した回路を実機ベースで即座に検証できることだ。もちろん,机上で設計仕様を煮詰めるとともにシミュレーションによって検証を行うことは重要だが,たとえば非同期で動作する二つの回路系を組み合わせた場合,シミュレーションで検証するのはなかなか難しい。なかには,実機を使ったトライアンドエラーを繰り返す設計手法を快く思わず,バグを作り込まないように机上で徹底的な洗い出しを行うべきだ,という考え方にこだわるマネージャもいるだろう。だが,「理屈はわかるけど実際はね」,というのがエンジニアの本音ではないだろうか。

技術者のこだわりを製品に反映

 開発期間を短縮すると,エンジニアにとってさらに大きなメリットが生まれることを見逃してはならない。このメリットとは,技術者が抱えている「こだわり」を設計に反映するために必要な時間の余裕が生まれることだ(図2)。ハードウエアの分野でも,ソフトウエアの分野でも,独自のこだわりを持っているエンジニアは少なくない。製品の表側には直接現れなくても,自分なりの工夫を盛り込んでいいものを作りたい,という想いを持つエンジニアが多いのではないだろうか。

図2 開発期間が短いことで仕様検討に多くの時間を使える=エンジニアの「こだわり」を設計に反映することができる

図2 開発期間が短いことで仕様検討に多くの時間を使える=エンジニアの「こだわり」を設計に反映することができる

 たとえばソフトウエア・エンジニアなら,プログラムを洗練された形でコーディングしたり,ダイナミック・ステップの数ができるだけ少なくなるようにループ構造や呼び出し方法を工夫したりする。ハードウエア・エンジニアなら,ロジック・ゲートをできるだけ少なくして高速化を図ったり,ノイズマージンやタイミングマージンをできるだけ確保したりするために知恵を絞る。

 だが,実際の開発現場では,なかなか「時間がない」。本当はもう少しチューニングをしたいと思っていても,そこまで頭が回らなくなってしまう。だが,技術者ならではこだわりを盛り込むことなく開発が終了してしまえば,達成感も薄れてしまうだろう。

リスピンのプレッシャーからエンジニアを解放

 FPGAが開発現場にもたらすもう一つの大きなメリットが,心理的なストレスを緩和できることだ。回路を変更できるというFPGAの特性は,ハードウエアのエンジニアに何物にも代えがたい安心感を与えるのではないだろうか。

 好んでバグを作り込もうというエンジニアはもちろんいないが,機能が増えてシステムが複雑化してくると,想定していない部分で不具合が出ることも少なくない(図3)。また,製品開発の終盤になって,市場の急激な変化に対応したり,競合製品に対抗するために,咄嗟の仕様変更を余儀なくされたりすることもあるだろう(図4)。

図3 2002 年度に北米で設計された 251 の IC / ASIC デザイン・サンプルの集計結果 (テープアウトしたもの + 量産に移ったもの)

図3 2002 年度に北米で設計された 251 の IC / ASIC デザイン・サンプルの集計結果 (テープアウトしたもの + 量産に移ったもの)

図4 ASIC リスピンの原因分析

図4 ASIC リスピンの原因分析

 ASICはハードウエアを完全に固定化してしまうため,設計完了後に半導体ファブにデータを送る「テープアウト」後は一切の回路変更ができない。そのため,ASICの設計エンジニアはテープアウトのポイントに向けてかなりのプレッシャーを抱えることになってしまう。万が一不良があって再製(リスピン)が必要となった場合,多額の開発費用が必要になる。製品スケジュールにも影響を与えてしまうからだ。ASICの規模が大きく重要度も高い場合はなおさらだ。

 回路の変更ができるFPGAの場合でも,要件を満たす回路をきちんと設計しなければならないというエンジニアの責任は変わらない。だが,ASICの開発エンジニアがリスピンの恐怖から受けるプレッシャーに比べれば,FPGAを使うエンジニアが感じるプレッシャーは,かなり小さいのではないだろうか。回路を変更できるというFPGAの特徴は,ともすると「設計者に逃げ道を与える」といったネガティブな受け止め方をされることもある。だが,それでなくてもストレスの多い開発の最前線で,エンジニアのストレスを少しでも軽減する働きがあるのなら前向きに評価すべきではないだろうか。

 FPGAは,いまや貴重となった時間をエンジニアにもたらす。しかも,それによって開発の現場の能力が一段と向上すれば,市場における製品の競争力強化につながる。こうしたFPGAの可能性に開発現場のエンジニアはもとより,現場のマネージャにも是非目を向けてもらいたい。

 後編では開発期間を短縮できるというFPGAの大きなメリットについてもう少し詳しく説明しよう。