ET2010で見かけたEDAソリューション-MentorのVistaと0-In CDC
2010年12月1-3日、パシフィコ横浜で開催されたEmbedded Technology 2010で見かけた、Mentor GraphicsのEDAソリューション。
Mentorのブースでは、EDAベンダとしては唯一のソリューションとなっている組み込みRTOS「Mentor Embedded Linux」やAndroid向けソリューションの一つ「Inflexion UI for Android」など同社の組み込みソリューションを全面に展示。合わせてUMLモデリングツール「BridgePoint」やSystemCモデリングおよびシミュレーション環境「Vista」、高位合成ツール「Catapult C Synthesis」といったESLソリューションも展示していた。
展示で目を引いたのは「Vista」。何気なく最新のアップデートを訊ねたところ、バーチャル・プロトタイプ用の独自マイコンモデルをMentorが提供との情報をキャッチ。まずはARMモデルを中心に、TLM LT(Loosely-timed)/AT(Approximately-timed)に対応したモデルを提供するという話で、ARM9、ARM11MPCore、Cortex-M3/A9/R4のモデルが既にリリースされているようだ。
ARMのTLMモデルはARMからも「FastModels」として提供されているが、こちらはTLM LTのみのサポートでARM11MPCoreはラインナップに無い。つまり独自モデルといえどMentorのARMモデルはその利用価値が担保されており、業界の中でCortexのモデルを全て揃えているのはMentorだけとなる。また「Vista」は近い将来、UMLモデリングツール「BridgePoint」と接続される予定という話も耳にした。
それから展示ではなく、テクニカル・セッションとして非常に興味深かったのが、メンター・ジャパンの三橋 明城男氏がFPGAトラックで講演したセッション「FPGAデザインが、たまに動かなくなることはありませんか?」。
このセッションは、FPGAにおける「クロックドメイン間の非同期転送に関わるバグ」にフォーカスしたもので、そのバグを見つけるための「CDC検証」の重要性を説いた内容。
三橋氏によると、複数クロックドメインを扱うデザインが増加する中で、複雑なFPGAデザインでは数千から数万のCDC信号も珍しくなく、同期エラーやCDC転送プロトコル・エラー、CDCリコンバージェンス・エラーなど、CDC関連の問題が発生する危険が高まっている。しかし、「クロックドメイン間の非同期転送に関わる問題」については、「ASICでは発生してもFPGAでは発生しない」、「FPGAベンダ提供のSTAで解決できる」、「実機で発見&デバッグ可能」といった「誤った都市伝説」が横行しており、CDCに対する十分なケアがなされていない。
※画像はメンター・グラフィックス提供のデータ
そんなFPGA検証の現状に三橋氏は警鐘を鳴らし、FPGAにおけるCDCバグの根絶に向けて、下記大きく4つの「やるべき事」を提唱。その具体的なソリューションとして、同社の「0-In CDC」を紹介した。
1.徹底的な静的解析→CDC信号の正しい同期化を確認
2.必要なCDC転送プロトコルが守られていることを検証
3.FPGA内でメタスタビリティが発生した際の振る舞いを観測
4.総合的なカバレッジ指標を利用
三橋氏によると、「0-In CDC」の利用メリットは以下の通り。
1.FPGA検証を支援するキットが付属されている
?Xilinx/Altera用の合成可能なライブラリ
?Xilinx/AlteraフローをターゲットとしたMakefileのサンプル
?FPGAに特化したCDC活用のアプリケーションノート
2.CDC転送プロトコル検証用のアサーションを自動生成
?アサーションを用いた完全なCDCプロトコル検証が可能
3.シミュレーション用のメタスタビリティ・モデルを生成可能
?メタスタビリティ効果をシミュレーション可能
4.CDCプロトコル用アサーションとメタスタビリティ・モデルのカバレッジを確認可能
※画像はメンター・グラフィックス提供のデータ
尚、三橋氏によると、FPGA設計ではマクロのインスタンス化が当たり前であったり、生成されるマクロが合成可能ではなかったり(シミュレーション出来ればOK)、RTLと幾つかの動作モデルを混在設計したりと、「実はCDC解析はASICよりもFPGAの方が難しい」との事。昨今、FPGA設計における検証の重要性が叫ばれてきているが、シミュレーションのみでは安心出来ない現実が分かり易く理解できた。200名近い満席の会場内では、三橋氏の講演にうなずきメモを取る姿が多く見られた。