News and Views 2005 Winter
[ Success Story]
Seamless、 SystemCを用いたビデオコーデックアーキテクチャ検討環境 三菱電機株式会社
三菱電機株式会社ではSeamlessの採用により、要求性能のコスト削減とシミュレーションの高速化を実現しました。その過程をMPEG-4デコーダを例に、同社情報技術総合研究所の峯岸孝行様にご紹介いただきます。
ASICの問題点とFPGAへの移行

SystemC環境の構築
今日のSoC設計の課題を解決するため、Seamlessを採用したSystemCによるアーキテクチャ評価環境を構築しましたのでご紹介します。 今日、一つのアプリケーションを実現するSoCは台頭しており、要求性能をギリギリのコストで実現することが重要です。一般的な方法である机上検討によるアーキテクチャ検討では、見積もり間違いによる手戻りが発生するか余裕を見た過剰な仕様になりがちです。そこで我々は、アルゴリズム検討に使われるCモデルをSystemC化しアーキテクチャモデルを構成、プロセッサの処理サイクル数、バスバンド幅などを、シミュレーションを通じて解析できる環境を Seamless上に構築しました。 この環境を用いてMPEG-4デコーダを例としてアーキテクチャ検討を行いました。アーキテクチャモデルの構成を図1に示します。
MPEG-4デコーダの実例
MPEG-4ビデオデコーダは、主にCPUとH/Wで処理されます。アーキテクチャモデルでは、CPUをプロセッサモデルで、外部/内部メモリを Seamless KernelにあるCoherentメモリで、オンチップバスやH/WをC-BridgeでコールされるSystemCで実現しています。プロセッサモデルやバスモデルにプロファイリング機能を作り込むことで、S/W処理サイクル数やバス負荷を解析データとして出力します。
シミュレーションの高速化
解析を試行する中で、シミュレーション速度が非常に遅いという問題が発生しました。原因はSystemCシミュレータの速度にあり、Seamlessの Optimize機能(右ページ追記参照)を適用し、必要な時間だけSystemCシミュレータを稼働させてこの問題を回避しました。結果的に全てRTL で行った場合の300倍以上の速度でシミュレーション実行が可能です。 さらに我々は、SystemCベースの環境をアーキテクチャ検討に留まらずRTLとのCo-simにも適用しました。SoCの全てのブロックのRTL設計が完了する前に、周りのH/WブロックをSystemCモデルで模擬するものです。図1のH/WブロックをRTLに変更し、RTL_SystemC I/Fを作り込むことで実現します。図2にツールやモデルの構造から見た環境の様子を示します。RTLとのCo-simも全てRTLで行った場合と比較して10倍高速に実行できます。
まとめ
以上のように、Seamless上にSystemCベースのアーキテクチャ検討環境を構築することで、手戻りなしに要求性能をギリギリのコストで実現する手法、また、SystemCモデルをRTLとのCo-sim環境を流用することで、早期にSOCレベルのRTL検証を実現する手法を確立しました。今後もこのような開発手法をさらに追求していきたいと考えています。

【追記】SeamlessのOptimize機能による高速化
■メモリ・イメージサーバSeamlessでは単純にソフトとハードのシミュレータを接続せずにSeamless経由としています。そして二つのシミュレータ上にある、MPUのア ドレス空間上の全メモリは、Seamless上に存在しメモリ・イメージサーバにより一元管理されます。
■高抽象度のC/SystemCのモデルの接続
CやSystemCのアン・タイムドやタイムドのモデルは、図左のソフト側にC-BridgeというCのAPI経由で接続されます。この時、Cのモデル中 のメモリやレジスタも、Seamless化してメモリイメージサーバー上で管理する様に設定します。
■HDLモデルの接続
図右のHDL側のデザイン上にはSeamlessのプロセッサモデルのBIM(Bus Interface Model)と、メモリモデル(SeamlessにバンドルされているDenali社のモデル等)が置かれていますが、これらのモデルは図の左のソフト側 に対してはピンのない高抽象度で接続し、HDL側に対してはピンを持つRTL精度で接続されます。
■特許による高速化
上記の接続において、Seamlessはソフトのシミュレータとハードのシミュレータ(CやSystemCとHDLのシミュレータ)の同期を取っており、 顧客は任意の条件で、ハード側のどちらのシミュレータの時間も止めたり再開することが可能です。例えばハード側のモデルのメモリやレジスタの内容をソフト で設定する場合やRTOSの初期化等の間は、ハード側のシミュレータの時間を止めて直接アクセスすることにより、ソフトシミュレータ単独の速度でシミュ レーションを高速に進め、それが終わった後はハード側のシミュレータを同期させて精度よく検証する等です。
