English

FPGAのテスト

FPGA (Field Programmable Gate Array) は、ユーザが任意の回路をプログラム(書き換え)可能な集積回路です。 皆さんも、大学の演習や実験等で一度は触れたことがあるのではないでしょうか? ここでは、なぜFPGAに対するテストが重要な技術であるのか、考えるべき課題が何かについて議論したいと思います。

FPGA = やわらかいハードウェア

ある機能の実現手段は、ハードウェアによる手法とソフトウェアによる手法に分類できます。 ハードウェアによって機能を実現する手法では、その機能に特化した「かたい」LSIを作りこみます。 機能を固定しているため柔軟性はありませんが、その分性能・消費電力の点で優れています。 この特定の用途のために設計・製造される集積回路は、Application Specific Integrated Circuitの頭文字をとって ASICと呼ばれます。

ソフトウェアによって機能を実現する手法では、汎用性の高い演算器を持つLSI(マイクロプロセッサやDSP等)を プログラムで動作させます。機能実現のための自由度が高く、開発コスト・開発期間が短いという利点があります。

これに対しFPGAは、Field Programmable Gate Arrayの頭文字をとったもので、製造後に購入者や設計者が現場で(=Field)で 構成を設定できる(=Programmable)論理回路(=Gate)が多数配列(=Array)された集積回路です。 ASICが特定用途に特化した「かたい」ハードウェアであるのに対し、FPGAはユーザが任意の回路をプログラム(書き換え)可能な 「やわらかい」ハードウェアと呼ばれたりもします。 ハードウェア実現による高性能・低電力という利点と、ソフトウェア実現による柔軟性・開発コスト・期間の短さという利点を あわせもつ実現方法であるといえると思います。 この理由より、IT社会・通信インフラを支える機器や、宇宙・航空といったセーフティクリティカル分野等で、 ASICの置き換えを中心に、その採用分野は拡大の一途にあります。

ASIC設計 vs FPGA設計

ここでは、特定用途のためのある機能をASICで実現する場合とFPGAで実現する場合を、製造テストという観点で考えます。

ASICで実現する場合は、その機能を実現する「かたい」LSIを設計し、製造します。 このため、その設計工程には、テスト容易化設計(DFT:Design For Testability)やテスト生成といった 製造されたLSIから良品を判別する「製造テスト」のために必須となる工程が含まれます。 当然、EDAベンダから提供されるASIC設計のためのツールには、これらをサポートするものが含まれていますし、 ファウンドリから提供されるスタンダードセルライブラリにもこれらをサポートするセルが含まれています。

一方、FPGAで実現する場合は、一般にFPGAベンダから「やわらかい」ハードウェアであるFPGAデバイスを購入します。 そして、その機能を実現する回路を設計し、FPGAをプログラムする(書き換える)ことで実現します。 FPGAベンダから購入するFPGAデバイスが良品であると仮定すれば(FPGAベンダは製造テストによりこれを保証する必要があります)、 FPGAをプログラムする設計者は「製造テスト」を意識しないで良いということになります。 実際に、FPGAベンダが提供しているFPGAユーザ向けの設計ツール・フローには、テスト容易化設計や テスト生成に該当するものがありません。

製品の信頼性とフィールドでの自己テスト

先に述べたように、ASICやFPGAは、IT社会・通信インフラを支える機器をはじめ、 宇宙・航空といったセーフティクリティカル分野でも幅広く利用されており、高い信頼性が要求されています。 実際に、電気・電子・プログラマブル電子に関する機能安全はIEC 61508として、 また自動車の電子制御系に関する安全規格はISO 26262で規格されており、安全性・信頼性の確保は必須となっています。

集積回路の信頼性を脅かす現象の1 つに、トランジスタの経年劣化があります。 経年劣化によりトランジスタの動作速度が次第に遅くなり、回路の動作マージンが減少します。 最悪の場合、経年劣化によってクリティカルパスの信号遅延が動作クロック周波数を超過し、 回路が正常に機能しなくなる危険な状態となります。

この問題に対処する高信頼化方法の1つに、フィールド運用環境下において定期的に自己テストを実行する手法があり、 ディペンダブルシステム学研究室でもこの研究に取り組んでいます。 この定期的な自己テストにより、障害発生を事前に予測し、FPGAの再構成(再プログラム)や交換等により 障害発生を回避することが可能となります。

ASIC製品は製造テストが必須ですので、テスト容易化設計やテスト生成が設計フローに組み込まれており、 回路にもこのための機構が埋め込まれています。 この既存の製造テストの枠組みを利用することで、設計フローや回路への大きな影響を与えることなく、 自己テストを実現することが可能です。 しかし、FPGA製品では、この追加される設計フローや組み込まれるテスト機能そのものがオーバヘッドとなり、 開発期間の増加、回路性能の低下、回路規模の増大を招く原因となってしまいます。

ディペンダブルシステム学研究室での取り組みについて

本研究室でも、このFPGAのフィールドでの自己テストに関する研究を行っています。

K. Ito, T. Yoneda, Y. Yamato, K. Hatayama and M. Inoue, “Memory Block Based Scan-BIST Architecture for Application-Dependent FPGA Testing,” 2014 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays (FPGA’14), pp.85-88, Feb. 2014.

上記の研究では、ASIC向けに確立された手法であるスキャン設計、テストポイント挿入、BIST回路設計をFPGAに効率良く適用する方法を提案しています。 既存手法と比較した場合、BIST適用によるプログラマブル・ロジック(FPGAの回路構成資源の一つ)の オーバヘッドを約63%削減することに成功しています。 また、同じテスト品質を約70%少ないテストデータ量で実現することを可能としています。

FPGAのテストでは、現在のアプリケーションで使用されている構成のみをテストするアプリケーション依存テストや、 アプリケーションには依存せずにFPGAデバイスを網羅的にテストするアプリケーション非依存テストがあり、 様々な研究が行われています。 また、自己テストを用いない手法や定期的に再構成し特定の箇所の経年劣化を防ぐ手法等、高信頼化実現のための 様々な研究が行われています。