このコラムでは「意外と知られていないけど、知っていると差がつく FPGA の技術情報」をご紹介します。
FPGA初心者の方からベテランの方まで、幅広くご活用いただける内容ですので、ぜひ最後までお付き合いください。
【第 4 回】 ASICと比べてFPGAで多い不具合 - 非同期クロック
ASICと比べてFPGAで多い不具合の1つが、非同期クロックです。
デバイスとしてFPGA がASICと比べて非同期に弱いことはなく、FPGA開発で非同期検証をしている人が少ないのが原因です。
実機検証しているので関係ない!と思っている方、安心しないでください!実機検証で非同期検証はできません!
ちなみに、ASIC開発では非同期クロック検証は常識となっています。
非同期クロックエラーとは
非同期クロックエラーとは、異なるクロック間でデータのやり取りを行う際に起こるレーシングやメタステーブルによる不具合です。
実機にて数時間、数日、数週間、あるいは数十年に1回誤動作し、タイミングシミュレーションや実機検証でも再現性はありません。


図1のように、周波数の異なるクロック間でデータのやり取りを行うと、クロックとデータのタイミング差によって、ある時は前サイクルのデータを取り込み、別の時は次サイクルのデータを取り込むことがあります。
これがバスなら、あるビットだけが前サイクルのデータ、他ビットが次サイクルのデータになります。ちなみに、同じクロックならセットアップとホールドタイミングを検証するので問題ありません。
そして、後段レジスタのセットアップやホールドタイム中にクロックが入ると、メタステーブルになることがあります。メタステーブルは数サイクルの間で不定状態(“L”でも“H”でもない中間電位)になるので非常に問題です。実機でも再現性がありません。
クロックとデータを前後にずらして検証(Clock:Min条件、Data:Max条件/Clock:Max条件、Data:Min条件)する方法がありますが、この方法でもメタステーブルは検証できないので厄介です。
メタステーブルの詳細は下記を参照
https://www.macnica.co.jp/business/semiconductor/articles/intel/2129/
非同期クロックエラーが厄介な理由
・「論理シミュレーション」で検証できません!
・「タイミング検証」で検証できません!
・「実機検証」で見つかる場合があります。ですが、再現できません!
非同期クロックエラーを解析するには、回路図を追っていくか、専用ツール(CDC: Clock Domain Crossing)ツールを使う必要があります。
非同期クロックエラーと間違えやすい「ソフトエラー」
非同期クロックエラーが起きているのに原因を把握できないので、ソフトエラーと勘違いされる方がいらっしゃいます。
もしソフトエラーだった時は、FPGAをリコンフィギュレーション(再度コンフィギュレーション)しなければ「エラーの再現が可能」です。
ソフトエラーは回路の論理を変えますが、メタステーブルは論理を変えません。ソフトエラーが疑わしい時は、同じテストベンチを実行して再現できるかを確認してください。
CDC(Clock Domain Crossing)ツールの選定
非同期クロックを検証するにはCDCツールを使うのがお勧めです。
CDCツール自体の使い方は簡単ですが、「疑似エラーの確認」と「対策方法の検討」はとても大変ですので、
CDCツールを選ぶには以下の点にご注意ください。
・設計上流のRTLで検証できる事!
論理合成後からの検証は工数がかかるので、RTLで検証できる必要があります。
・レポートが分かりやすいこと!(疑似エラーがたくさん出るので)
数万か所も疑似エラーが出ると、重要なエラーを見落とします。
疑似エラーはマニュアルで回路を確認する必要があるので、分かりやすいレポートは必須です。
・対策が必要な回路かどうかを判断する機能があること!
エラーが起きても論理に影響しなければ問題はありません。
問題が無いことをフォーマル検証や論理シミュレーションで検証できる機能があれば便利です。
CDC(Clock Domain Crossing)CDC 無償評価キャンペーン
アルティマでは、CDCを使ってお客様のデザインを “無償” で評価するキャンペーンを実施中です。
しつこい売り込みは致しませんので、CDCに興味がある方はお気軽にご依頼ください。