|
SystemCを用いた早期ソフトウェア(SW)デバッグソリューション
日本シノプシス合同会社
従来の開発フローでは図1-1に示すように、HW設計が終了し、FPGAボート、エミュレータ、評価ボートといった実機ができるまでSWのデバッグ作業を開始できません。このような手法ではマルチコア化に伴い爆発的に増加しているSWを短期間で開発およびデバッグすることは大変困難です。また、HWの不具合が設計後期に発見された場合、SWで対処するといった対応が必要となり、SW開発者に膨大な負荷がかかることもあります。
一方先進のユーザは図1-2に示すように、開発当初はCPU、バス、メモリ、タイマ、割り込みコントローラといった最低限の部品から構成される仮想プラットフォームを用いて、RTOSのポーティングやデバイス・ドライバの検証を行い、設計が進むにつれて段階的にペリフェラルを追加した仮想プラットフォームを使用することによって、HWとSWの協調検証を効率よく行っています。また、HW設計者も同じ仮想プラットフォームを用いて新規設計されたHWの検証を実行することが可能になります。このフローを用いることで、HWとSWをコンカレントに開発しながら仕様も段階的に決定できるため、HWのパフォーマンス不足、HWの不具合によるリスピンを防げるだけでなく、仕様変更によるSWの再コーディングも大幅に削減できます。仮想環境を使用することによって、開発期間と開発費用の大幅な削減が可能になります。

図1-1 従来の開発フロー

図1-2 仮想環境を用いた先進の開発フロー
種類のデバッグソリューション
SWは,図2に示すように大きく次の2つに分類できます。

図2 SWの種類
(1) サイクル精度を必要とするデバイス・ドライバやファームウェア(FW)のようなSWのデバッグ
(2) HWのファンクション・モデルを用いたミドルウェア(MW)やアプリケーションのデバッグ
本稿では仮想環境を用いたこれら2種類の早期SWデバッグソリューションを紹介します。
(1) サイクル精度を必要とするデバイス・ドライバのようなSWのデバッグ
従来の設計手法では通信系のSWなどサイクル精度を保障する必要があるFWやデバイス・ドライバのデバッグをHDLシミュレータを用いて行うことは速度が遅すぎるため現実的ではありません。そのため、実機、FPGAボード、エミュレータ等を用いたテストが行われていました。このような実HWを用いたテストでは、不具合があることは分かりますが、HW内部の状態を観測することや、システム全体をある状態で停止させることが難しいため、不具合の原因を特定するために長時間かかることが多くなります。
仮想環境を用いてサイクル精度でのシステム・シミュレーションを実行する際に、HWデバッガ、SWデバッガを同時に立ち上げることで、TLMで接続されている部分はトランザクション・ビューアを用いてグラフィカルに表示し、ピンで接続されている部分は波形を表示しながらデバッグできます。また、共有メモリやレジスタの値を観測することも可能です。これらの仮想環境が提供する機能を用いることにより、実機が完成する前にサイクル精度を必要とするSWのデバッグを開始し、不具合の原因を短期間で特定できます。
(2) HWのファンクション・モデルを用いたファームウェア(FW)やアプリケーションのデバッグ
FWやアプリケーション開発は従来PC上でISSやRTOSシミュレータを用いるケースが多く見受けられました。CPUコアが1個の場合、従来手法であってもある程度のデバッグは可能ですが、マルチコア・システムのように、お互いのコア上で動作するSWが複雑に連携している場合や、共有メモリを介して通信している場合、ISSやRTOSシミュレータを用いて品質の高いSWを開発することは非常に困難です。また、組み込みSWの場合メモリサイズに制限があるため、PC上ではきちんと動作していたSWが実機上では処理が間に合わないという問題が発生することがあります。
シノプシスが提供している仮想プラットフォームは、アプリケーションの早期開発を実行するために最適な環境です。バスをバイパスし、タイミング情報を無視することによって、VPでは実機に匹敵する高速なシステム・シミュレーションを実現します。また、マルチコア対応のデバッグ・サーバによって、特定のプロセッサがブレイク・ポイントで停止した際に、システム上の全てのプロセッサやHWを同時にブレイクさせることができます。Virtual Platform Analyzerと呼ばれるシミュレーション制御ツールを用いることにより、あるポートがアクセスされたときに、あるレジスタに特定の値が書かれている場合にのみブレイクするといった、条件ブレイクも実行できます。更にキャッシュのヒット/ミスや、ガントチャートといったSW開発者向けの解析機能(図3参照)も提供します。これらの解析環境を用いることによって、実機完成前にSWのデバッグと最適化が実現可能になります。

図3 SW解析画面例
|