News and Views 2012 autumn / Vol. 3: 上流設計&組込み

仮想化技術を用いたSoCの総合的な検証

今日の多くのデザインには、組込みプロセッサが1つ、ないしは2つ以上含まれています。これらのデザインにおける機能検証の幅の広がりを、従来の検証ツールで扱うのは至難の業となってきました。マルチコアSoCを総合的に検証するということは、ハードウェア上で実行するソフトウェアが欠かせないことを意味します。エミュレーションでは、スピード的にもキャパシティ的にもこれが可能で、しかも高価なプロトタイプやシリコン作成の前に実行できます。

エミュレーション時代の到来と言っても過言ではありません。とは言え、このソリューションに対して、これまでは非常に厄介な実用上の障壁がありました。その1つがエミュレータのコストです。エミュレーションは高嶺の花として、そのツールであるエミュレータにコストをかけられる会社のみが所有できるものでした。幸いにも、最近アナウンスされた仮想化技術により、この実用上の壁を壊すことができます。大企業でなくとも、エミュレータを所有することが当たり前になるのに、それほど時間はかからないでしょう。どうしたらそれが現実のものとなるのか、見てみましょう。

エミュレータの利用

ハードウェアとソフトウェアを含むSoCの完全な検証には、チップをその最終使用環境において検証することが必要になります。それにはUSB、イーサネット、表示装置、ハードドライブ、PCI Expressなどのペリフェラル・デバイスも必要になります。デバイスドライバは、それが通信する相手となるデバイスがない限り、完全にテストすることはできません。そのようなデバイスはSoCの外側にあり、テストする際にはSoCに接続させなくてはなりません。

従来よく使われてきた方法は、実際のハードウェアと、実速度およびエミュレーション実行速度との同期を取るスピード・アダプタを用いる方法です。エミュレーションに対しては、ICE(In Circuit Emulation)モードと呼ばれ、実際のデバイスからスピード・アダプタにケーブル接続し、さらにスピード・アダプタからエミュレータ内部にケーブル接続します。この環境をセットアップするには、非常に高価な実験室の広さと、コンフィギュレーション調整やデバッグするための時間が必要とされます。すべてのケーブルと外部ハードウェアというのは、エミュレーション環境全体の中で、物理的に最も信頼性が低い部分となります。しかも何か誤動作があった場合、非常にデバッグしづらいということも、簡単にご想像いただけるでしょう。このような実ペリフェラルのセットアップは、単に柔軟性に欠けるだけではなく、複数のユーザが同一プロジェクトに臨む際に複数の同一環境を用意する場合のコストが問題となります。外部ハードウェアの接続までを含めたこのエミュレーションを含む検証環境を使えるユーザ数は1人に限られ、ある特定のプロジェクトや特定のSoCに専有されてしまいます。エミュレータのコストを考えると複数ユーザのサポートは必須であるにも関わらず、ICEによって複数ユーザが使用するという柔軟性が損なわれてしまいます。

図1. Veloceが提供する完全なSoCバリデーション
図1. Veloceが提供する完全なSoCバリデーション

エミュレーション環境をグローバルに開放するには

最も重要なことは、ハードウェアを仮想化することです。これはつまり、高精度なペリフェラルのハードウェア・モデルを、Linux®などの標準的なワークステーション上で実行することになります。SoCとソフトウェアであるデバイスドライバはエミュレータ内で動作し、Linux上で動く高精度モデルとやり取りをします。あたかもICEと同じように扱えますが、1点異なるのは、すべてが仮想的に実装されているということです。物理的なハードウェアもケーブルも必要ありません。実デバイスに対するスピード・アダプタも必要ありません。仮想化された実験室は、完全にソフトウェアの世界なので、同じエミュレータの筺体を複数ユーザ間で自由に共有できます。そしてペリフェラルを含む完全なエミュレーション環境も簡単に複製でき、コンフィギュレーションを自由に変更することが可能になります。

実験室でのセットアップを仮想化するということは、エミュレータを世界中で、しかも時間帯を分けて共有できるということです。これにより、エミュレーション環境はデータセンターとしての役割を果たすことになります。特定プロジェクトに専有されてしまう従来の実験室とは大違いです。複製もコンフィギュレーションも簡単に行えるため、世界のどこにいても同じエミュレータを同じ使い勝手で使用できます。

各ユーザは、エミュレータにネットワーク接続するワークステーションを1台持っているだけで、完全なSoC環境を検証できます。ワークステーションは信頼性が高く、低コストであり、実験室にあるケーブルの束やスピード・アダプタ、ICEで使用する多数のボードに比べれば、非常にコンパクトであることは明らかです。

データセンターという形でサポートされるエミュレーション環境である限り、ソフトウェアによりコンフィギュレーション可能でなくてはなりません。ユーザは物理的なアクセスがまったくできないからです。仮想化された実験室では、世界中の設計チームがソフトウェアを介してコンフィギュレーション可能です。複数プロジェクト、複数の地域で正式に共有することが可能になり、他のプロジェクトで使用する場合には必要なペリフェラルを瞬時に設定可能で、それに必要な時間は新規デザインをエミュレータにロードする時間と変わりません。

図2. 外部デバイスの仮想化によりエミュレーション環境を解放
図2. 外部デバイスの仮想化によりエミュレーション環境を解放
図3. USB 3.0を使用した例
図3. USB 3.0を使用した例

実機と同じ精度と速度

仮想モデルはライセンスされたデザインIPに基づいているため、ハードウェアと同じ精度、つまり従来のICE版ペリフェラルと同じ精度を持っています。仮想モデルは実際の合成可能なRTLを使用しており、SoC設計者がライセンス取得して実チップに埋め込むものと同じです。合成可能なRTLなので、ペリフェラルのモデルはエミュレータ内にコンパイルすることも可能であり、DUTから完全な正確なRTLハードウェアとしてのペリフェラルにアクセスすることもできます。例えばUSB 3.0のコントローラなどはエミュレータ内で使用します。

USB 3.0の例でいうと、ワークステーション側では、USBソフトウェアのスタックおよびUSBメモリなどの大容量ストレージ機能のクライアントをターゲットとしたソフトウェアを使用します。この結果として、USBメモリの正確な機能が得られます。RTLをエミュレータに合成し、ワークステーション上で実行されるソフトウェア・スタックと機能クライアントに対してコ・モデルのチャネルを介してリンクするところまで、すべて仮想的に行われます。これが、ユーザが仮想的な手法に移行してもまったく精度を失うことのない理由です。

仮想デバイスは速度としても充分です。ICEより高速という訳にはいきませんが、同程度の速度は出ます。エミュレーション速度は、通常はエミュレータ内のデザインがどれだけ高速に実行可能かで決まります。仮想デバイスやワークステーションによる通信が律速となることはありません。USBメモリのエミュレータおよび仮想デバイスの接続について、コ・モデルのチャネルを含めて解説した技術文献がありますので、是非、ご一読ください。

次に、仮想デバイスを使った環境の精度と速度について、Veloce®のお客様がメンター・グラフィックスのVirtuaLAB Ethernetを使用した経験に照らし合わせて説明しましょう。ここで取り上げるのは、VirtuaLAB Ethernetがイーサネット・トラフィックを生成し、エッジルータのチップをドライブする例になります。

このケースでは、チップ上にある12個の10Gポートに対して、各ポートにつき100万、合計1,200万にも及ぶパケットを与えています。この処理におけるVeloceのエミュレーション時間は、たったの45秒でした。元々の試算では、1つのポートに100万パケットを与えてシミュレーションする場合には30日要すると出ていました。12個のポートに対してシミュレーションを実行するというのは現実離れしています。

このお客様のエッジルータ用チップは、ワークステーション上のLinuxで実行されるルータ制御用アプリケーションによってコンフィギュレーションされます。実際のルータも同じアプリケーションを用いてコンフィギュレーションする仕様になっています。実際のところ、コ・モデルのホストを経由し、Linuxワークステーションからエミュレータ内のルータのチップのデザインに対してリンクさせることができました。あたかも実験室でチップを用いて実行しているのと同じです。違う点は、すべてが仮想的に行われていることと、実際にシリコンが入手可能になるタイミングより、かなり前から実行できた、ということです。RTL記述され、エミュレータにコンパイルされたVeloce側のイーサネットのトランザクタと、コ・モデルとしてのホスト上で動作するトラフィック・ジェネレータ側の両方で、このVirtuLAB Ethernetの機能が使われています。このセットアップは非常に簡単で、必要となるすべての解析とデバッグ、修正、性能解析、ボトルネック解析を、シリコン入手の数ヶ月前に終えることができました。

上述の例と同じことを従来のICEアプローチで行なっていたら、まず非常に高価なイーサネット・テスタを購入しなくてはならなかったでしょう。次に、イーサネット・テスタとエミュレータの間でスピード・アダプタとして同期させるブリッジがポートごとに必要となります。しかも複数ユーザをサポートするとなったら、この高価なイーサネット・テスタやスピード・アダプタ、ケーブルのすべてをユーザの数だけ用意することになります。ポート数が24、48、96、128と増えていくことを考えると、物理的にICEを利用するというのは、現実解ではありません。このことからも、仮想環境は、はるかに優れたアプローチと言えます。

仮想的なアプローチのもう1つの利点は、シミュレータやエミュレータに付き物である「セーブ&リストア」、または「チェックポイントからのリスタート」機能です。チェックポイントからのリスタートの利点は、ユーザが記述したデバイスドライバやアプリケーションのデバッグに到達するまでのRTOS最エミュレーションを行う必要がないという点です。RTOSのブートをエミュレーションするには、規模によって異なりますが、1時間から10時間ほど要します。RTOSの次に実行されるデバイスドライバのデバッグ・ポイントに達するだけのためにRTOSを再エミュレーションする必要はありません。従来のICEのアプローチで、物理ペリフェラルをエミュレータに接続する場合、あるポイントでのチェックポイントをセーブ、リストアすることができません。物理ペリフェラルでは、すべてのレジスタ値をステートとしてセーブしたりリストアすることは不可能なのです。

仮想化されたペリフェラルでは完全な環境のセーブとリストアをサポートします。ここにはエミュレータ内にコンパイルされたSoCに接続するペリフェラルの情報も含まれます。セーブやリストアの機能がフルチップ、ペリフェラルを含んだ形で、エミュレーション・レベルで行えるのです。

まとめ

エミュレーションに仮想的なアプローチを組み合わせる手法は、対費用効果の高い手法です。まず、1つのエミュレータに対して、複数のソフトウェア設計者が同時にアクセスすることができます。そしてVeloceとVirtuaLABの技術を用いることにより、ハードウェア、ソフトウェア、そしてペリフェラルのインタフェースを含む完全な検証環境を、高い信頼性、柔軟性、再コンフィギュレーションの容易性、そして複製の容易性という面を付加価値として享受できます。また、実際のハードウェアと同じ精度、速度を、制約なしで得られます。複数ユーザのサポートやデータセンターとしての使い方は非常に効率良く、さらに仮想のペリフェラルによって、企業規模に依存することなく、世界中のどこでも、どの時間帯でも、エミュレータを使いこなすことが可能になります。

エミュレーションには欠かせない特定プロトコル用ホストや
ペリフェラル・インタフェースのための仮想デバイスに関する資料はこちら

今すぐダウンロード