このコラムでは「意外と知られていないけど、知っていると差がつく FPGA の技術情報」をご紹介します。
FPGA初心者の方からベテランの方まで、幅広くご活用いただける内容ですので、ぜひ最後までお付き合いください。

【第 4 回】 ASICと比べてFPGAで多い不具合 - 非同期クロック

ASICと比べてFPGAで多い不具合の1つが、非同期クロックです。
デバイスとしてFPGA がASICと比べて非同期に弱いことはなく、FPGA開発で非同期検証をしている人が少ないのが原因です。
実機検証しているので関係ない!と思っている方、安心しないでください!実機検証で非同期検証はできません!
ちなみに、ASIC開発では非同期クロック検証は常識となっています。

非同期クロックエラーとは

非同期クロックエラーとは、異なるクロック間でデータのやり取りを行う際に起こるレーシングやメタステーブルによる不具合です。

実機にて数時間、数日、数週間、あるいは数十年に1回誤動作し、タイミングシミュレーションや実機検証でも再現性はありません。

 

図 1.非同期クロックの回路例
図 2.後段レジスタのメタステーブル

図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に興味がある方はお気軽にご依頼ください。