デバッグサイクル短縮への近道:Indagoプラットフォーム編
昨今、開発されるSoC (System-on-a-chip) の複雑さにより機能検証において、人的な労力と必要な検証反復の両方の点でデバッグが最大のボトルネックの1つになりました。 SoCアプリケーションはデジタル、アナログ、およびソフトウェアIPの統合で通常は数億ゲート以上です。検証エンジニアはバグを特定し解決するために数十から数百本のシミュレーションを実行します。ソフトウェアとハードウェアの相互作用に関連するものを含め、SoC全体のバグを特定するために実行するシミュレーションには数時間から数日かかることがあり、全体のデバッグ作業には数日から数週間かかることがあります。 調査ではデバッグが検証作業の50%を費やしているとの結果もあり、デバッグ作業の改善、期間が大きな課題となっています。
図1:検証における作業工数の割合(出典:Cadenceのお客様へのアンケート結果より)
この課題への取り組みを支援するために、ケイデンスは、RCA(Root Cause Analysis)の概念を活用してデバッグプロセスを自動化する特許取得済みの根本原因分析テクノロジーを備えたIndago™デバッグプラットフォームをお客様にご提供しています。
Indagoは統合されたグラフィカルなデバッグ環境です。
図2:Indago統合グラフィカルデバッグ環境
Indagoには3つのdebug platformアプリが含まれており、様々な検証プラットフォームのデバッグをサポートしております。
図3:Indagoの各種デバッグ機能
Indago Debug Analyzer App
Verilog、SystemVerilog(UVM)、VHDL、SystemC®、eなどの言語の組み合わせで記述されたデジタル、アナログ、電源仕様(CPF、UPF)の混在したデザイン、及び、テストベンチのデバッグ環境を提供します。ブロックレベルからSoCレベルのような大規模なデザインに対応したデバッガであり、driver tracing、SmartLog、Advanced Search、Palladium Debug、Low Power Debug等、プラットフォームや目的に応じた機能を提供します。また、シミュレーション実行後(ポスト)、及び、実行中(インタラクティブ)のデバッグをサポートしており、デバッグシーンに応じた解析を可能にします。
図4:Indago Debug Analyzer AppのMain Window
Indago Embedded Software Debug App
ソフトウェア/ハードウェアの協調検証でのデバッグに関して、従来のデバッグ手法ではソフトウェアとハードウェアのどちらに要因があるのかわからないという課題がありました。それはソフトウェアコード、 CPU実行ログ、ハードウェア波形がバラバラで、それらに対して手動でデバッグする必要があったためです。
Indago Embedded Software Debug Appでデバッグすることで、上記全てを解決できます。その理由はソフトウェアコードの実行箇所とハードウェアが連動して解析可能で、CPUのレジスタ値、ソフトウェアの変数の値、並びにメモリの値を確認することができ、これらが一つのウィンドウで同期してデバッグできるためです。
図5:Indago Embedded Software Debug Appを用いたデバッグフロー
Indago Portable Stimulus Debug App
今話題のportable stimulusによってテストシナリオや検証環境を生成するPerspec™ System Verifierから出力されたテストシナリオに特化したデバッグ環境を提供します。可読性の高いUMLアクティビティ・ダイアグラムを利用して、Portable Stimulusによるモデリングや生成されたテストシナリオソース、波形ビューや実行ログを連動させることで、発見された問題の特定とデバッグを効率化させることが可能です。Perspec System Verifierではそれぞれの検証プラットフォームに応じて異なる言語でテストシナリオやベンチを生成します。例えば、複数のIPやマルチコアを複雑に同期させるシステム検証、IP単体のUVMによるランダム検証などの用途です。Indago Portable Stimulus Debug Appは様々なフェーズで異なる役割を担うエンジニアに一貫した共通のデバッグ環境を提供し、Portable Stimulusの検証課題を解決します。
図6:Indago Portable Stimulus Debug AppのMain Window
今回の掲載ではIndago Debug Analyzer Appで活用できるいくつかの機能についてご紹介いたします。
Root Cause Analyzer機能
トレースアルゴリズムをより強化し、信号値がどのドライバから伝搬してきたのかを容易にデバッグすることができます。画面上に予想される信号のドライバ候補が表示され、直感的に信号を追いかけることができます。ドライバ候補はリスト表示やツリー表示が可能です。また信号波形(Waveform)や回路情報(Schematic Browser)との連携により問題の原因を素早くトレースして特定することができます。
図7:Root Cause Analyzer Window
SmartLog機能
各ツールから出力されたログファイルを解析するのに役立つ機能です。メッセージのフィルタリングや並べ替え、クエリーを実行しメッセージ間の関係を見つけることができます。膨大なログ情報から特定のメッセージのみをフィルターしたり、不要なメッセージを非表示にすることができます。ログ情報の解析がスムーズに行えます。クエリーは保存して公開することもできるので、同じ環境でデバッグしているプロジェクトメンバー間で共有することもできます。また、ツールが発行したメッセージからそれに対応するソースコードや信号波形を表示させることも可能です。
図8:SmartLog Window
UVMデバッグ機能
Indagoに含まれる多くの機能がUVM環境をデバッグするために活用することができますが、UVM環境をデバッグするために特化した機能もご用意しています。
- UVM Sequence Viewer
現在実行中のシーケンスを簡単に特定し、階層化された複雑なシーケンスもツリー構造で簡単にみることができます。またそのシーケンスアイテムの変数値を簡単にリストアップしてみることができます。Sequence Viewerを使用してテスト内の全てのシーケンスのアクティビティを分析することができます。また不正な値を生成しているシーケンスアイテムを特定した場合には、それをSequence Viewerに送信してシーケンス階層をボトムアップでデバッグすることができます。
図9:UVM Sequence Viewer - UVM Configuration Viewer
UVMのConfigurationのset()/get()が意図通りに行われたかを確認するのに便利なビューアーです。configuration databaseはオブジェクトとデータをテストベンチの様々なコンポーネントに渡すことができる非常に用途の広い機能ですが、set()は正規表現でのパターンマッチが可能で、異なる階層からも同じ対象に設定ができるため、UVMとしてデバッグが困難な機能の一つです。Configuration Viewerを活用することにより、現在のconfiguration databaseのコンテンツを表示し、configuration databaseへの様々なアクセスを記録し表示することができます。なぜset()が設定されたのか、set()に対応するget()があるか、set()やget()が発生するソースコードの場所などを分かりやすくデバッグすることができます。
図10:UVM Configuration Viewer
Palladiumデバッグ機能
Palladium®で扱うデザインは大規模であることが多いため、膨大な波形データベースが必要とします。従来はランタイム時にPHYからSHM波形データベースへの変換を行い、その処理に対して多くの時間を要していました。Indago Debug Analyzer Appに含まれる Palladium Debugでは、それとは別にオフラインでPHY2のデータベースを生成しそれを利用してSHMデータベースをオンデマンドで生成することで簡単に指定した信号の生成が可能となりました。従来のxeDebugではトレースとProbeの処理は別に必要でしたが、特定の信号をトレースする際にProbe処理は必要なくなりドライバ処理をキャンセルすることも可能です。また、実際の信号のPlotに対して進行状況を示すバーが追加されているために、進行状況が分かりやすくなりました。更にドライバ情報をすべてDBに蓄えるので、キャッシュのように使われパフォーマンスに寄与しています。
図11:Palladiumにおける波形データベースの生成フロー
図12:Palladiumにおけるデバッグフロー
まとめ
半導体開発において今後もより複雑で大規模な設計が求められていきます。限られたリソースや工数の中で検証をより効率的に明瞭化して作業を進めるためにIndagoを活用して頂けると幸いです。ここではご紹介しきれないほどの多くの機能をご用意しております。ご興味をお持ちの際には是非cdsj_info@cadence.comまでお問い合わせください。
フィールドエンジニアリング&サービス本部
システム&ベリフィケーション
Archive
2023 Issues
2022 Issues
2021 Issues
2020 Issues