2024年度 三菱電機ソフトウエア技術レポート
(コラム)
FPGA(Field-Programmable Gate Array)開発
FPGAのモデルベース開発にFILを導入
検証作業を大幅に高速化
高速で柔軟性が高く、
並列処理が得意なFPGA
FPGA(Field Programmable Gate Array)は、ユーザーがプログラムによって内部の回路構成を自由に変更できるデジタル集積回路です。FPGAに実装する回路は、コンフィグレーションするプログラムによってカスタマイズできるため、特定のタスクに最適化された回路を設計できます。プログラムによって動作を変更できるデバイスとしてはマイコン(CPU)がありますが、マイコンが低コストで逐次処理に適している一方、FPGAは並列処理が可能であるため、高速に処理できるという特徴があります。
MESWでは、衛星通信、宇宙分野での変復調回路、デジタル無線システム、FA分野のシーケンサ、画像・映像分野のコーデック、画像処理、電力分野など幅広い分野に向けたFPGAを開発しています。
「最近ではAI(Artificial Intelligence)、クラウドコンピューティング、自動運転、5Gの通信などにもFPGAの利用領域が拡大しています。用途の拡大に合わせてFPGAのデバイス自体も進化しており、大規模化、高速化、高機能化が進んでいます」(西尾氏)
FPGAの開発に
モデルベース開発を導入して効率化
FPGAの回路構成はハードウェア記述言語(HDL:Hardware Description Language)を使ってプログラムします。HDLは最終的に論理合成というプロセスを経てFPGAにプログラムされます。
MESWでは、FPGAの開発にモデルベース開発(MBD:Model Based Development) を導入し、開発工数または期間の効率化を図ってきました。
モデルベース開発とは、システム開発手法の一つです。コンピューター上でシステムの構成要素を“モデル”として配置し、それぞれの動作や繋がりを視覚的に定義します。モデルベース開発環境は、シミュレーション機能を備えており、モデルの動作をすぐに検証できます。また、ソフトウェア開発においては、モデルに設定した動作に基づいて、プログラムコードを自動的に生成する「自動コード生成」機能が使えるというメリットがあります。
「以前は、すべて手書きでHDLコードを書いていましたが、手書きで書けるコードの量には限界があり、FPGAの大規模化、複雑化に対応するのが難しくなります。そこで2017年に新しい設計手法としてモデルベース開発を導入しました。手書きの場合はコーディング環境とシミュレーション環境が分かれていますが、モデルベース開発ではモデルを編集している時に、いつでもすぐにシミュレーションを実行できます。これが問題の早期発見にとても役立ちます」(西尾氏)
「自動コード生成はとても大きな効果があります。手書きのコーディングでは、ちょっとした記述の誤りでエラーになってしまうことがよくあります。モデルベース開発では、ヒューマンエラーによる間違いがなくなり、効率が上がりました」(三好氏)
開発のさらなる効率化のために
FIL(FPGA-in-the-Loop)を導入
2022年からは、FPGA開発のさらなる効率化を目的にFILを導入しました。
FILはMESWが使用しているMathWorks社のモデルベース開発環境「MATLAB/Simulink」の追加機能です。通常、Simulinkのシミュレーションはすべてソフトウェアで実行されますが、FILではSimulinkのモデルと現実のFPGAデバイスを連携させることができます。つまり、生成したHDLコードをPCに接続したFPGA評価ボードに実装して動作を検証できます。FPGA以外の部分はSimulinkを使い、実物とシミュレーションを組み合わせた検証作業が可能です。
FILの主な導入目的は、検証作業の高速化にありました。
「FPGA開発では、検証作業に非常に多くの時間を費やしていました。時には、高性能なパソコンを使っても2、3日かかるシミュレーションを繰り返し実行することもあります。これを高速化する手法としてFILを導入しました」(西尾氏)
検証に時間がかかるケースとしては、例えばFPGAに特定の動作をさせるために、非常に長い検証パターンを入力する場合があります。FPGA部分を実物のハードウェアで置き換えることで処理を高速化し、検証作業の効率化が期待できます。
データの渡し方と通信の工夫で
100倍の高速化を実現
当初はFILを使っても期待したほどの高速化を実現できませんでした。
「ソフトウェアのみのシミュレーションとほとんど変わらないか、速くなっても少しだけ、場合によってはソフトウェアのみの時より遅くなることさえありました」(西尾氏)
原因を調査してみると、SimulinkとFPGA評価ボード間でのデータのやりとりがボトルネックになっていることが分かりました。
「問題はSimulinkとFPGA評価ボード間のデータ転送にありました。FPGAに検証データを入力する際、当初はデータを一つずつ受け渡していました。FILのデータ転送プロセスに時間がかかるため、FPGA部分の演算が速くなっても全体の処理は速くなりませんでした。そこでデータを一度に大量に送れるようにモデルを改修しました」(西尾氏)
「また、PCと評価ボードを接続するハードウェアインターフェースの種類によっても、検証速度が大きく異なることが分かり、これも最適なものを選ぶようにしました。その他の部分もより速いモデルに置き換える、無駄な処理を減らすなどして高速化を実現しました」(三好氏)
これらの取り組みの結果、検証にかかる時間は最高100倍にまで高速化し、開発効率を大きく向上させることができました。
また、検証を続けるなかでFILに関して独自のノウハウが蓄積されました。
「様々なFPGAで検証した結果、対象となるFPGAの構成によって、FILに適したものと適さないものがあることが分かりました。目的の機能を実現するために、どうしても変えられない回路構造があり、それがFILに適さない場合には高速化できません」(三好氏)
現在では、従来のソフトウェアのみのシミュレーションとFILを適材適所で使い分けるノウハウが整っています。
FILによる検証の高速化はFPGA以外の開発にも応用可能で、今後はソフトウェア開発にもFILを活用することを考えています。
FPGA開発におけるMESWの強みについて西尾氏は次のように語ります。
「FPGA単体の設計にとどまらず、ソフトウェアや基板などの周辺部分と一体で、提案から実装まで行える点が私たちの強みです。また、防衛、宇宙、FA、センサなど幅広い分野のFPGA開発に対応していることに加えて、開発のキーマンを流動的にアサインすることで、技術が属人化しない体制を構築しています」
すべての回路が並列動作することが
FPGAの難しさであり面白さ
FPGA開発の難しさや、やりがいについて両氏は次のように話します。
「FPGA開発の難しさの一つに、すべてが並列で動く点があります。一般的なソフトウェアでは、基本的にプログラムは上から順番に実行されます。一方、FPGAは基本的に回路がすべて並列に動きます。しかも並列に動く回路同士がきちんと同期するように設計する必要があります。また、一つのFPGAに載っている回路の量が決まっているので、その制限に収まるように作る技術も求められます。こうした難しさはありますが、PCの画面内だけでなく、FPGA チップを動かすということは、実物を動かしているという実感があって楽しいです」(三好氏)
「FPGA開発では、不具合が出たときに原因を特定するのが困難です。そのため設計の段階で、できるだけ不具合を入れない、あるいは不具合があっても見つけやすい回路構造にする工夫をしています。やりがいについては、私も同じで、例えば評価ボードに機材を繋いでテストをするなど、実際にものを動かすところにやりがいを感じます」(西尾氏)
今後の展望について両氏は次のように語ります。
「モデルベース開発はどんどん進化している分野なので、常に最新のトレンドを見ながら、開発の効率化に繋がる技術を積極的に採用していきたいと思います」(三好氏)
「今後は社内でモデルベース開発ができる人材を増やしていき、お客様にも“こんなところに適用するとメリットがあります“と具体的にお伝えすることで、モデルベース開発を広めていきたいと考えています」(西尾氏)
商標について
- ・MATLAB、Simulinkは、The MathWorks, Inc.の登録商標です。