改訂版EDA用語辞典とは・著者一覧

 電子設計の世界では,「エミュレーション」や「プロトタイピング」という言葉はさまざまな意味を持つ。ここでは論理機能設計の際に使う,エミュレーションとプロトタイピングについて解説する。

目的は同じで具現方法に差

 エミュレーションの本来の意味は,「何か代わりのもので実現する」ことである。一方,プロトタイピングの本来の意味は,「実現したいことを先行して試行する」ことである。ただし,論理シミュレーションよりも高速にLSIやシステムを動作させて検証する,という意味では論理エミュレーションと論理プロトタイピングの目的はかなり似ている。それらの違いは具現方法や内部の観測性にある,と言える(図1)。

図1 検証手法間のトレード・オフ
出典はJEITA。

 どちらも,LSIやシステムの大規模化に伴い,設計・検証のツールとして役割が大きくなっている。これらのうちの一方,あるいは両方を駆使してシステム・レベル検証を実施することが必須となってきた。

 論理エミュレーションは,論理エミュレータと呼ばれる論理演算・動作を行う専用ハードウェアを使う。論理エミュレータは大型の筐体であることが多く,内部に論理演算・動作を実行する多数のLSIを包含する。このLSIは市販のFPGA(field programmable gate array)だったり,専用のLSIだったりする。

 市販のFPGAを用いた場合には,専用LSIを用いる場合と比較して,回路分割やコンパイル処理に時間がかかるが,実行速度は高速である。FPGAを用いた場合,コンパイル処理時間の短縮のため,インクリメンタル・コンパイル(差分だけを処理する方法)が使われることもある。

 一方,論理プロトタイピングでは,FPGAなどのフィールド・プログラマブルなデバイスや,短期間で出荷可能なLSI(3層以下の配線層だけがプログラマブルなゲートアレイや,ストラクチャードASICと呼ばれるデバイス)に論理回路を実装し,検証対象のLSI内部回路はもとより,LSIの外部のインタフェース回路を含めてほぼ実物と同じような環境で使えるようにする(かつては,TTLのICを並べてブレッド・ボードを作成していたが,現在では回路規模的に無理があるために,廃れている)。

二つの動作モード

 多くの論理エミュレータは,二つの動作モードを備えている。一つは,論理エミュレータを単体で動作させるモード。もう一つは,外部に回路を接続して,実物と似た環境で動作させるモード(インサーキット・モード)である。

 前者は高速なシミュレーション・ツールとして,後者はプロトタイピング・ツールとして使用可能である。ただし,インサーキット・モードにおいても実行可能な速度に制限があるため,LSIの外部回路との接続に速度調整などの工夫が必要な場合が多い。

 論理エミュレータによっては,上位の設計ツールとの連携が可能である。連携のためのインタフェースの規格として,「SCE-MI(Standard Co-Emulation Modeling Interface,スキミー)」を米Accelleraが規定している(関連ページ)。論理シミュレータと論理エミュレータ間をトランザクション・レベルで接続し,協調動作する際の速度低下を防ぐ。

 この検証環境では,C言語モデルやSystemCモデルと,RTLのコードを混在してシミュレーションすることができる。これで,LSIを構成するブロックの設計進度に合わせて,システム・レベルの検証を行うことが可能になる。

ハードウェア処理の制約もある

 論理エミュレーション,論理プロトタイピングは共に,システム・レベルの検証を高速に実行できる魅力的なツールではあるが,「受動的な機械だ」という点は覚えておく必要がある。例えば,入力データを大量に準備しなければならない。また,入力データに応じて出力される結果をチェックする仕組みが必要である。これらを準備するには,ハードウェア・エンジニア,ソフトウェア・エンジニア,システム・アーキテクトが一致協力することが求められる。

 なお,論理エミュレータ,論理プロトタイピングは共に論理シミュレータと異なり,内部の論理値は「0」と「1」の2値に限られるのが一般的である。このため,例えば,論理シミュレータならば不定値の「X」が発生する所で,「0」または「1」の値が採用されて処理が継続してしまう。その結果,誤動作を見過ごしてしまう恐れがある。

 また,LSI内部に非同期のクロックの種類が多い場合,うまく論理エミュレータが稼働しないことがある。稼働しても,処理速度が遅いケースが少なくない。