logic simulator

 論理シミュレータは,設計した論理回路の論理機能やタイミングを検証するためのツール。対象回路の設計データを入力し,これに検証用のパターン(シミュレーション・パターン)を加えて,その応答を観測する。多くの論理シミュレータには,ユーティリティ・ソフトウエアとして,入力信号や応答信号をグラフィカルに見るための,波形ビューワ(waveform viewer)が用意されている。最近,検証用のパターンは,テストベンチ生成ツールで作ることが増えた。

RTLや動作レベルに広がる

 従来,論理シミュレータで検証するのは,ANDやNAND,ORといった論理ゲートで構成した回路,すなわち,ゲート・レベル論理回路(ネットリスト)が多かった。ゲート・レベル回路は,回路図エディタを使って設計するのが一般的だった。ASICの最終設計確認に使うシミュレータは,サイン・オフ・シミュレータと呼ばれ,通常ゲート・レベルの論理シミュレータである。

 最近,論理合成ツールが普及したことによって,その入力となるRTL(register transfer level)記述を検証するために,論理シミュレータが使われるケースが増えてきた。動作合成ツールが一般的になれば,その入力となる動作記述を検証する用途でも活躍するだろう。

 RTL記述や動作記述は,普通,VHDLやVerilog-HDLといったハードウエア記述言語で表現する。これらのハードウエア記述言語で表現した設計データを入力する論理シミュレータは,HDLシミュレータ(HDL simulator)と呼ばれ,多くのEDAベンダーから発売されている。また,検証対象のHDL記述が論理シミュレータでどれだけ検証されたかをチェックするためのコード・カバレッジ・ツールを使うことが増えている。

 最近,VHDLシミュレータに関しては,VITAL(VHDL Initiative Towards ASIC Libraries)というASICライブラリの記述法が標準化され,半導体メーカーが要求するゲート・レベルでのサインオフ(設計の最終確認)にも使われるようになってきた。

現在の主流はイベント・ドリブン型

 現在,広く普及している論理シミュレータは,イベント・ドリブン型である。これは,信号の変化(イベント)のある素子(論理ゲートなど)に着目する。すなわち,イベントの発生した素子(または端子)の次段の素子のみ演算処理する。その素子の出力が変化していると,それを次段へと次々に伝えていく。

 演算に際しては,論理値(論理機能)だけではなく,あるイベントから次のイベントまでの遅延時間(タイミング)も計算する。レイアウト設計(配置配線設計)前は配線経路が確定しないため,過去の経験に基づいた仮想配線長を頼りに遅延時間を計算する。レイアウト設計後には,実際の配線長(実配線長)が確定し,正確な遅延時間が計算できる。最近は半導体製造技術の微細化が進み,配線(素子間の接続線)の遅延時間が素子の遅延時間と同等か大きくなる場合が増えており,仮想配線長によるタイミング検証の威力が急速に低下してきた。

実行形式は2つに大別できる

 イベント・ドリブン型の論理シミュレータの実行方式は2つある。(1)演算時に中間形式の命令を逐次解釈・実行するインタプリタ方式と,(2)前処理で機械語に展開してから直接実行するコンパイル方式である。インタプリタ方式は前処理は速いが,シミュレーションの実行時間は長い。逆に,コンパイル方式は前処理に少し時間がかかるが実行時は高速に処理できる。

 さらに,コンパイル方式には2種類ある。(1)いったんC言語のソース・コードを生成し,これをCコンパイラで機械語に変換するCコンパイラ方式と,(2)直接機械語に変換するダイレクト・コンパイル方式(ネイティブ・コンパイルド・コード方式)である。

 ダイレクト・コンパイル方式は,Cコンパイラ方式の欠点である前処理時間の長さを改善したもので,前処理,シミュレーションの実行とも速い。ただし,稼動するコンピュータのマイクロプロセサに特化した機械語に展開するため,他のコンピュータへの移植性にはやや難がある。

機能検証に特化し高速化

 最近注目されつつある論理シミュレータとして,サイクル・ベース・シミュレータ(cycle based simulator)がある。素子の遅延時間を無視して前処理で静的に演算順序を決定しておき,実行時にはクロック・サイクルごとに一度だけ演算を行なう。タイミング検証はできないが,その代わりイベント・ドリブン手法と比べてはるかに演算量が少なくなるので,数倍~100倍高速に論理機能検証が可能となる。サイクル・ベース・シミュレータの実行形式は,コンパイル方式,またはダイレクト・コンパイル方式である。

 サイクル・ベース・シミュレータは,基本的には同期回路を対象としており,適用できる回路構成にも制約が多い。特に,非同期部を多く含む回路に適用すると,処理性能が著しく低下することも珍しくない。しかし,論理合成ツールを用いた,いわゆるトップダウン設計のスタイルでは,同期設計が基本であり,サイクル・ベース・シミュレータの普及要因になっている。

 サイクル・ベース・シミュレータは,論理合成に入力するRTL記述の検証によく使われる。また,スタチック・タイミング・アナライザと組み合わせて,ゲート・レベルの検証にも用いられる。

 最近,サイクル・ベース・シミュレータの技術とイベント・ドリブン型のシミュレータの技術を混在させたシミュレータも登場した。サイクル・ベース・シミュレータで対応不可能な回路部分はイベント・ドリブン型シミュレータの方式で処理し,それ以外の部分をサイクル・ベース・シミュレータ技術を利用して高速化するという手法を採用している。これにより,高速性と汎用性を実現する。

専用ハードウエアで処理

 ソフトウエアの工夫だけでは高速化に限界があるとして,シミュレーション専用のハードウエアを開発したEDAベンダーもある。このようなハードウエアは,ハードウエア・アクセラレータ(hardware accelerator)と呼ばれる。現在,市販されているハードウエア・アクセラレータは,上述のイベント・ドリブン型の論理シミュレータを専用ハードウエア化したものである。可能な限り処理の並列性を上げるような工夫がなされている。

 検証対象は,基本的にはゲート・レベルの論理回路(ネットリスト)である。簡易な論理合成機能を備え,RTL記述を扱える製品も発売されている。検証対象の回路中にRTL記述があると,ゲート・レベルの回路に展開して,シミュレーションを実行する。ハードウエア・アクセラレータの処理速度は,ワークステーション上のソフトウエアのイベント・ドリブン型シミュレータに比べて10倍~数百倍も速い。サイクル・ベース・シミュレータと異なり,扱える回路に制約は比較的少なく,タイミング検証も可能である。

 最近では,さらなる高速処理を求めて,論理エミュレータも使われている。論理エミュレータは,検証対象回路を,FPGA(field programmable gate array)などを使い,実際の回路に展開して,検証を行なう。ハードウエア・アクセラレータよりもさらに高速だが,タイミング検証はできない。

大規模回路のモデルが重要に

 半導体製造技術が微細化し,システム全体が1チップに収まるシステム・オン・シリコンが現実のものなってきた。システム・オン・シリコンの設計では,マイクロプロセサやDSPなどのコアと呼ばれる大規模なマクロセルを使う。

 このようなコアが入ったチップの論理検証では,コアの動作や機能または構造を記述した設計データが必要になる。このデータは,シミュレーション・モデル(simulation model)と呼ばれ,ASICを提供する半導体メーカーやEDAベンダーから提供される。シミュレーション・モデルの提供を専門にするベンダーも米国には複数ある。コアには知的財産権が付いて回るため,シミュレーション・モデルのことをIP(intellectual property)モデルと呼ぶこともある。

 このモデルが,Verilog-HDLあるいはVHDLのソース・コードの形で供給されれば,どの論理シミュレータでも使える。しかし,ソース・コードを公開すると,モデル開発者の知的財産権が侵害される恐れが出てくる。このため,重要なモデルに関しては,オブジェクト・コードで供給せざるを得なくなる。ただし,こうすると,論理シミュレータごとにバイナリ・コード・モデルを用意せねばならないという問題が新たに発生する。シミュレータのカーネルとリンクするためである。

 こうしたモデル供給にまつわる問題点の解消を狙い,モデルのインタフェースの仕様を定め,その仕様とモデル作成ツールを提供するEDAベンダーが現れた。このインタフェースは,IPモデル供給の1つの解として,比較的広く受け入れられてきた。また,特定のEDAベンダーではなく,第三者機関を核にした業界標準インタフェースを策定しようという動きもある。具体的には,OMF(Open Model Forum)という団体が,シミュレーション・モデルのインタフェースをOMI(Open Model Interface)としてまとめた(関連する用語説明)。現在,OMIは,IEEE1499として標準化されている。今後,OMIを,サポートするシミュレータが増えると予想される。


(99. 9. 6更新)

このEDA用語辞典は,日経エレクトロニクス,1996年10月14日号,no.673に掲載した「EDAツール辞典(NEC著)」を改訂・増補したものです。