JP2004310568A - シミュレータ装置、シミュレーション方法および性能解析方法 - Google Patents
シミュレータ装置、シミュレーション方法および性能解析方法 Download PDFInfo
- Publication number
- JP2004310568A JP2004310568A JP2003104907A JP2003104907A JP2004310568A JP 2004310568 A JP2004310568 A JP 2004310568A JP 2003104907 A JP2003104907 A JP 2003104907A JP 2003104907 A JP2003104907 A JP 2003104907A JP 2004310568 A JP2004310568 A JP 2004310568A
- Authority
- JP
- Japan
- Prior art keywords
- simulator
- model
- verification
- interface
- simulation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
Abstract
【課題】システムLSI開発の、それぞれの用途向けにシステムLSIを構成するブロックのモデルを用意するのが現状であるが、システムLSIの複雑化大規模化を鑑みると、それらのモデルを用意するための工数も同様に増加している。結果、ハードウェア/ソフトウェア協調設計の利点が失われてしまう。
【解決手段】大規模なシステムLSIの1チップシミュレーションで用いるブロックを、異なるシミュレータの制御部から呼び出し可能なインターフェースを実装することで、シミュレータ設計の工数を削減する。また、デバッグ用のインターフェースを実装することで、各用途のための検証解析機能を実現する。
【選択図】 図1
【解決手段】大規模なシステムLSIの1チップシミュレーションで用いるブロックを、異なるシミュレータの制御部から呼び出し可能なインターフェースを実装することで、シミュレータ設計の工数を削減する。また、デバッグ用のインターフェースを実装することで、各用途のための検証解析機能を実現する。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、大規模集積回路(LSI)設計、特にシステムオンチップ化に対応するための設計に関するものであり、設計上流におけるハードウェア/ソフトウェア/システムの検証、開発、評価を行うためのシミュレータ装置、シミュレーション方法および性能解析方法に関するものである。
【0002】
【従来の技術】
従来から、電子機器は、例えばプロセッサ、メモリ、バス等の種類ごとのLSIを、個別に半導体チップ上に形成した後、各チップをプリント配線基板などの母基板上に実装することによって製造されてきた。
【0003】
ところが、近年、これに用いられる集積回路装置に対し、1チップ化、小型化、軽量化、省電力化および低コスト化の要求が高まっている。このような傾向は、特にデジタル情報家電分野において、より顕著にみられる。そして、これに応じて、半導体メーカーはその研究開発の重心をメモリからシステムLSIへと移行してきている。
【0004】
システムはソフトウェアとハードウェアから構成される。ハードウェアとソフトウェアに分けられた後、ハードウェアとソフトウェアを逐次的に開発していた。このようにハードウェアとソフトウェアを逐次的に開発すると、開発期間の増大につながるため、ハードウェアとソフトウェアを同時に並行開発するハードウェア/ソフトウェア協調設計という手法がとられつつある。ハードウェアの検証用にシステムシミュレータ、エミュレータを用い、ソフトウェアの開発/検証用にも別途、システムシミュレータや評価ボードを用いて、それぞれの開発/検証を行うのである。
【0005】
従来のシミュレーション技術は、異なる用途向けの、異なる抽象度で記述されたモデルを想定している(例えば、特許文献1参照)。
【0006】
また、互いに異なる抽象度で書かれたモデルを統一するシミュレーション方法も提案されている(例えば、特許文献2参照)。
【0007】
【特許文献1】
特開2002−157291号公報(第6−7頁、第2図)(半導体集積回路装置の設計方法)
【特許文献2】
特願2002−162048号(シミュレータ装置並びにシミュレーションモデル生成プログラム)
【0008】
【発明が解決しようとする課題】
しかしながら、ハードウェア/ソフトウェア協調設計を行うためには、そのための設計環境が必要となる。すなわち、システムシミュレータが必要となる。ハードウェアとソフトウェアの分割に使用されるシステム検証用シミュレータと、ハードウェアの検証に使用されるハードウェア検証用システムシミュレータと、ソフトウェアの開発検証用に用いられるソフトウェア開発検証用シミュレータと、それぞれの用途向けに、プロセッサ、バス、ハードウェアモデルを用意するのが現状である。
【0009】
しかし、システムLSIの複雑化・大規模化を鑑みると、それらのモデルを用意するための工数も同様に増加の一途をたどっている。結果、ハードウェア/ソフトウェア協調設計を行うことで得られる恩恵と同程度かそれ以上の工数が発生し、ハードウェア/ソフトウェア協調設計の利点が失われてしまう。
【0010】
本発明は上記問題点に鑑み、それぞれのシステムシミュレータで利用できる共通のモデルを用いたシミュレータ装置、シミュレーション方法、性能解析方法を提供することを目的とする。
【0011】
【課題を解決するための手段】
以上の目的を達成するための本発明のシステムシミュレータ装置およびシミュレーション方法は、大規模なシステムLSIの1チップシミュレーションで用いるブロックについて、異なるシミュレータの制御部からブロックを呼び出し可能なインターフェースを備えたものである。また、デバッグ用のインターフェースを実装することで、各用途のための検証解析機能を実現するものである。以下、順次説明する。
【0012】
本発明によるシミュレータ装置は、被シミュレーション対象システムを構成するCPU、前記CPUや周辺のハードウェアのブロックを接続するバスおよび前記ハードウェアをシミュレートするシミュレータ装置であって、前記CPUのモデル、バス、および前記バスに接続される前記ハードウェアのモデルとのインターフェースを実装し、前記インターフェースを用いて、前記被シミュレーション対象システムの性能/機能検証を実行することを特徴とする。
【0013】
上記構成において、前記各モデルのインターフェースとしては、ソフトウェア開発検証用システムシミュレータで使用できるインターフェースや、ハードウェア検証用システムシミュレータで使用できるインターフェースや、システム検証用システムシミュレータで使用できるインターフェースなどがある。
【0014】
この構成によれば、CPUのモデルとハードウェアのモデルを構成するとともに、両モデル間にインタフェースを介在させていて、ソフトウェア検証向け、システム検証向け、ハードウェア検証向けなど各種の検証向けにモデルを共通化することができる。すなわち、大規模なシステムLSIのハードウェア検証用システムシミュレータ、ソフトウェア開発検証用シミュレータ、システム検証用システムシミュレータをはじめとする各種目的用システムシミュレータにおいて、共通のモデルが利用可能になるため、異なるシミュレータ間でモデルの共有化が図られ、統合シミュレーション制御方法によって、適切な精度のシミュレーションを同一のモデルを用いて実行できる。したがって、それぞれの目的ごとにモデルを用意する必要がなくなる。
【0015】
また、上記シミュレータ装置の構成において、前記各モデルのインターフェースとしては、デバッグで使用できるインターフェースもある。これに対応するシミュレーション方法は、そのデバッグ用のインターフェースを用いてデバッグすることである。例えば、ブロックの機能としてデータ転送の開始、終了といった処理が行われた場合にブレークを行うようにするデバッグ用のインターフェースを備えることで、各用途向けモデルで共通して利用でき、デバッグ性が向上する。
【0016】
さらに、上記シミュレータ装置の構成において、前記各モデルのインターフェースとしては、システムの1クロックサイクル数分のシミュレーションを実行するためのインターフェースもある。これに対応するシミュレーション方法は、そのシステムの1クロックサイクル数分のシミュレーションを実行するためのインターフェースを用いて、システムの1クロックサイクル数分のシミュレーションを実行することである。各モデルを駆動するタイミングがクロックレベルであるときに有効である。
【0017】
また、上記シミュレータ装置の構成において、前記各モデルのインターフェースとしては、システムのシミュレーション時間分のシミュレーションを実行するためのインターフェースもある。これに対応するシミュレーション方法は、そのシステムのシミュレーション時間分のシミュレーションを実行するためのインターフェースを用いて、システムのシミュレーション時間分のシミュレーションを実行することである。各モデルで使用するクロックサイクルが異なる場合に有効である。すなわち、異なるクロックソースを用いるモデル混在のシミュレーション環境が実現できる。
【0018】
また、上記シミュレータ装置の構成において、前記各モデルのインターフェースとしては、性能解析で使用できる拡張用インターフェースもある。これに対応するシミュレーション方法または性能解析方法は、その解析で使用できる拡張用インターフェースを用いて解析することである。性能解析の結果を基にシステムをチューニングして、最適なシステムを設計することが可能となる。
【0019】
【発明の実施の形態】
以下、本発明の一実施形態について、図面を参照しながら説明する。
【0020】
図1は本発明のシミュレータ装置の構成を示すブロック図である。図中、検証用シミュレータ装置1は、被シミュレーション対象システムのシミュレータ装置である。被シミュレーション対象システムは、ブロック31、ブロック32、ブロック33から構成された場合の例である。ブロック31のモデルは、ソフトウェア検証シミュレータ用I/F3と、ハードウェア検証用シミュレータ用I/F4と、システム検証シミュレータ用I/F5と、デバッグ用I/F6と、拡張用I/F7とを備え、ブロックの機能モデル8からなるシミュレータモデル9として、検証用シミュレータ装置1を構成する。
【0021】
同様に、ブロック32のモデルは、ソフトウェア検証シミュレータ用I/F10と、ハードウェア検証用シミュレータ用I/F11と、システム検証シミュレータ用I/F12と、デバッグ用I/F13と、拡張用I/F14とを備え、ブロックの機能モデル15からなるシミュレータモデル16として、検証用シミュレータ装置1を構成する。
【0022】
さらに、ブロック33のモデルは、ソフトウェア検証シミュレータ用I/F17と、ハードウェア検証用シミュレータ用I/F18と、システム検証シミュレータ用I/F19と、デバッグ用I/F20と、拡張用I/F21とを備え、ブロックの機能モデル22からなるシミュレータモデル23として、検証用シミュレータ装置1を構成する。
【0023】
検証用シミュレータ装置1がハードウェア検証用であれば、モデル9、モデル16、モデル23のそれぞれのハードウェア検証用シミュレータ用I/F4、ハードウェア検証用シミュレータ用I/F11、ハードウェア検証用シミュレータ用I/F18を用いてハードウェア検証用のシミュレータ制御手段2がシミュレーションの制御を行う。
【0024】
また、検証用シミュレータ装置1がソフトウェア検証用であれば、モデル9、モデル16、モデル23のそれぞれのソフトウェア検証シミュレータ用I/F3、ソフトウェア検証シミュレータ用I/F10、ソフトウェア検証シミュレータ用I/F17を用いてソフトウェア検証用のシミュレータ制御手段2がシミュレーションの制御を行う。
【0025】
さらに、検証用シミュレータ装置1がシステム検証用であれば、モデル9、モデル16、モデル23のそれぞれのシステム検証シミュレータ用I/F5、システム検証シミュレータ用I/F12、システム検証シミュレータ用I/F19を用いてシステム検証用のシミュレータ制御手段2がシミュレーションの制御を行う。
【0026】
それぞれの目的における検証時、内部の状態、例えばブロックのレジスタの値を知る必要がある。そのような場合には、デバッグ用I/F6、デバッグ用I/F13、デバッグ用I/F20を用いて、内部の状態を取り出し、デバッグに利用する。レジスタ以外の信号の値を含め、デバッグ目的で必要となる情報は、すべてこのI/Fにより実装される。
【0027】
また、システムシミュレータにおいては、システムの振る舞いを基に、性能解析する必要が発生する。複数のバスマスタからなるマルチバスマスタシステムにおけるバスの負荷や、マスタがCPUであった際のCPU利用率、メモリの転送レートや利用率が、そのような解析で必要となるデータである。各モデルは、バスの利用率を計算するために必要な、バス要求時やバス利用許可時、バス利用放棄時などを、このインターフェースを通して、シミュレータ制御手段をはじめとする解析系にデータを渡す。
【0028】
簡単な解析系としては、インターフェースがそれらのデータを、電子データとしてファイルに保存し、それを利用して解析するものが挙げられる。
【0029】
ブロック31、ブロック32、ブロック33のレジスタの内容を記憶することをはじめとする機能は、機能モデル8、機能モデル15、機能モデル22でモデル化されるものとし、前述I/Fを用いて、機能を駆動する。レジスタへのアクセスや、デバッグのアクセスは、すべてこの機能モデルで実装される。このようなシミュレータ装置の実装をとることで、それぞれの目的ごとにモデルを用意する必要がなくなる。
【0030】
図2は、被シミュレーション対象システムのLSIであるシステムLSI30の構成図である。システムLSI30は、ブロック31、ブロック32、ブロック33、ブロック34、ブロック35、ブロック36、ブロック37とバスから構成される。
【0031】
図3は、被シミュレーション対象システムのLSIであるシステムLSI30のハードウェア検証用シミュレータ60の1実現例である。ハードウェア検証用シミュレータ60は、システムLSI30の構成要素ブロック31、ブロック32、ブロック33、ブロック34、ブロック35、ブロック36、ブロック37とバスのそれぞれに対応して、検証用のモデル61、モデル62、モデル63、モデル64、モデル65、モデル66、モデル67、およびバスモデル68とバスモデル69から構成されている。
【0032】
検証対象ハードウェアがブロック31であるとし、検証対象ハードウェアのモデルをモデル61とする。ハードウェアのモデルは、ハードウェア記述言語(HDL:Hardware Description Language)と呼ばれる記述言語、もしくは高位合成で設計されたモデルを含む。この目的のためには、検証対象ハードウェアブロックに影響を与える各モデルがクロックサイクルか、もしくはRTL(RegisterTransfer Level:レジスタ転送レベル)と呼ばれるレベルで検証対象ハードウェアブロックにアクセスする必要がある。
【0033】
図6は、クロックレベルで必要とされる精度を示している。システムレベルの場合は、図中、時刻t、時刻t+1、時刻t+2、時刻t+3、時刻t+4での各信号の値がピンレベルで、実際のハードウェア記述モデルと同じであると保証されていることが最低限必要となる。
【0034】
図4(a)は、被シミュレーション対象システムのLSIであるシステムLSI30のソフトウェア検証用シミュレータ90の1実現例である。ブロック31が検証対象ソフトウェアが動作するブロックとし、そのモデルを91とする。一般的には、ブロック31のISSと呼ばれる命令レベルでの精度を保証する命令セットシミュレータと、ブロック32、ブロック33、ブロック34、ブロック35、ブロック36、ブロック37のメモリイメージをはじめとする、検証対象ソフトウェアの動作に必要な機能を実装した仮想モデル92から構成され、検証対象ソフトウェアがアクセスする部分は、仮想モデルとして実装される。ミドルウェアやデバイスドライバと呼ばれるハードウェアモデルの高精度を求めるソフトウェアが検証対象であると、この仮想モデルは、図3のハードウェア検証用シミュレータに近い精度が求められることもある。この目的で作られるシミュレータは、モデル91がシミュレータの制御を行い、モデル91の外部へアクセスが発生したときにのみ仮想モデル92が使用される、といったモデル化がよく行われる。図4(b)のような場合もある。
【0035】
図7は、このレベルで必要とされる精度を示している。各命令が影響を与えるブロックに対する影響が、検証対象ソフトウェアの動作するブロック31のモデル91の内部ではなく、外部に、すなわち図の例では仮想モデル92に及ぶことが最低限必要となる。
【0036】
図5は、被シミュレーション対象システムのLSIであるシステムLSI30のシステム検証用シミュレータ120の1実現例である。ブロック31、ブロック32、ブロック33、ブロック34、ブロック35、ブロック36、ブロック37のメモリイメージをはじめとする、検証対象システムの動作に必要な機能を実装したそれぞれのモデル、すなわち、モデル121、モデル122、モデル123、モデル124、モデル125、モデル126、モデル127とバスモデル128、バスモデル129から構成され、検証対象システム上で動作するソフトウェアがアクセスする部分は、全て実装される。
【0037】
図8は、このレベルで必要とされる精度を示した一例である。図6と図7の間の精度を必要としている。図中にあるように、サイクルC、サイクルC+1、サイクルC+2、サイクルC+3、サイクルC+4の各サイクルで精度を保証する図のモデルは、その一例である。また、より抽象度の高いトランザクションでの精度を保証するシミュレータも、この範疇に含まれる。
【0038】
ソフトウェア検証用シミュレータを、他の検証用シミュレータで利用するためには、まず、システムシミュレータ向けに、制御をシミュレータ制御手段2に行わせる、図9のようなソフトウェア検証シミュレータ用I/F3を用意すればよい。
【0039】
従来のソフトウェア検証用シミュレータは、検証対象ソフトウェアが動作するプロセッサのみをモデル化し、バス、メモリに対するアクセスは抽象化されていた。一例を挙げると、図10のフローチャートのような処理工程である。図10中、初期化工程100を行い、その後、ブロック31のシミュレーション処理工程101を行う。このとき、バス、メモリに対する処理も、この処理工程内で行われる。そのため、図4(b)に示すような複数のプロセッサからなるマルチプロセッサ構成では対応できない。
【0040】
そこで、図9中、シミュレータ制御手段2により呼び出し可能な関数を定義し、その関数の実行時、外部へ影響を与える場合、前記ソフトウェア検証シミュレータ用I/F3を通して外部へアクセスを行う。
【0041】
こうすることで、システムシミュレータとして利用することが可能となる。その処理工程を図11のフローチャートに示す。図11中、初期化工程105を行い、その後、シミュレーションが終わったかを工程106で調べる。シミュレーションが終わっていれば、シミュレーションを終了する。終わっていなければ、ブロック31の機能モデル8の内部の値を更新するブロック31のupdate処理工程107を行う。このとき、バス、メモリに影響を与える処理は行われない。次工程のブロック31のcommunication処理工程108にて、機能モデル8外への処理を行う。このとき、関係するブロックのインターフェースを介してアクセスを行う。
【0042】
以上、この処理工程を実装するものが、シミュレータ制御手段2である。上述ソフトウェア検証シミュレータ用I/F3の実装を行うことで、ソフトウェアシミュレータは、シミュレータ装置の一部として利用可能になる。
【0043】
このモデルをシステム検証用のシステムシミュレータで利用可能にするシステム検証シミュレータ用I/F5について説明する。前述したソフトウェア検証シミュレータ用I/F3は、機能モデル8を呼び出す。ソフトウェア検証用では、命令レベルの実装であったが、サイクルレベルで実装を行っている場合を考える。
【0044】
命令レベルとサイクルレベルとの違いを図12に示す。モデル31が3つのパイプラインステージから構成されているとする。図にあるように、命令レベルでは、それぞれの命令が逐次的に実行される。
【0045】
サイクルレベルでは、それぞれの命令がパイプラインステージを流れていく。サイクルCでは命令1がステージ1で処理され、サイクルC+1では、命令1がステージ2で、命令2がステージ1でそれぞれ処理されている。
【0046】
図13は、命令レベルでの処理工程を示すフローチャートである。命令レベルの処理工程のため、命令1の処理工程109、命令2の処理工程110、命令3の処理工程111の順に処理工程が進む。
【0047】
機能モデル8では、図13の命令1の処理工程109の処理は、図14のフローチャートに図示する工程で処理を行う。すなわち、ステージ1での処理工程1090、ステージ2での処理工程1091、ステージ3での処理工程1092の順に、シミュレータ制御手段2が制御を行う。
【0048】
同様にして、機能モデル8では、図13の命令2の処理工程110の処理は、図15のフローチャートに図示する工程で処理を行う。すなわち、ステージ1での処理工程1100、ステージ2での処理工程1101、ステージ3での処理工程1102の順に、シミュレータ制御手段2が制御を行う。
【0049】
また、同様にして、機能モデル8では、図13の命令3の処理工程111の処理は、図16のフローチャートに図示する工程で処理を行う。すなわち、ステージ1での処理工程1110、ステージ2での処理工程1111、ステージ3での処理工程1112の順に、シミュレータ制御手段2が制御を行う。
【0050】
サイクルレベルの場合は、これら処理工程の制御方法を、図17のフローチャートのように行えばよい。図17は、前記機能モデル8について、図12にあるサイクルC、サイクルC+1、サイクルC+2、サイクルC+3、サイクルC+4の処理に対応し、シミュレータ制御手段2が、システム検証用シミュレータの制御方法を行った処理工程を示すものである。
【0051】
図中、C0がサイクルCでの処理工程(命令1、ステージ1)を表し、C1がサイクルC+1での処理(命令2、ステージ1と命令1、ステージ2)を表す。図中、C2ではサイクルC+2の処理(命令3、ステージ1と命令2、ステージ2と命令1、ステージ3)を表し、C3は、サイクルC+3における処理工程(命令3、ステージ2と命令2、ステージ3)を表し、C4は、サイクルC+4における処理工程(命令3、ステージ3)を表している。
【0052】
例えば処理工程C2にて、前記命令3のステージ1での処理工程1110、命令2のステージ2での処理工程1101、命令1のステージ3での処理工程1092を行っている一例である。ステージ間の依存関係によって、処理工程1110,1101,1092はどの順序で実行してもよく、逐次的にではなく、並列実行した場合にも、本発明の効果が得られることから、本発明の範疇に含まれる。
【0053】
以上のように、シミュレータ制御手段2が、ブロック31の機能モデル8との、システム検証シミュレータ用I/Fを用いた制御を行うことで、本発明で得られる効果が得られる。
【0054】
次に、ブロック31の機能モデル8をハードウェア検証用に用いるためのハードウェア検証用シミュレータ用I/F4について説明する。
【0055】
ハードウェア検証用では、図6にある精度でのインターフェースが必要となる。最低限、クロックの立ち上がりと立ち下がりや、信号の値が変化したというイベントの受け渡しを、正しいタイミングで行うことを、このインターフェースでは実現する。上述したインターフェースの実装方法を用いることで、図8の精度を実現するシミュレータ制御手段2により、図8の精度を実現したシミュレータ装置が実現できる。
【0056】
次に、この図8のレベルと、ハードウェア検証用のシミュレータが必要とするレベルの実装方法を説明する。
【0057】
図17での実装方法では、命令1のステージ1での処理工程1090は、図11にあるupdateとcommunicateの実装を行っている。これら実装されたインターフェースは、シミュレータ制御手段2により、例えば、クロックサイクル毎に各モデルが呼び出され、機能モデル内部の状態を変更する関数updateと、外部への通信を行うフェーズであるcommunicateを実装することで、実現可能である。
【0058】
ここで、ハードウェア検証用のシミュレータが必要とするのは、信号の駆動側がいつその信号をドライブするかといったタイミングである。システム検証用のシミュレータでは、信号の駆動側ではなく、トランザクションの駆動側(以降マスター)のタイミングで、communicateを実装している。
【0059】
そこで、機能モデル8のインターフェースとして、トランザクションのマスターによるcommunicateを、図18のフローチャートにおける信号を駆動するインターフェースを実装したcommunicateMaster処理工程1081と、駆動される信号に関するインターフェースを実装したcommunicateSlave処理工程1082に分ける。
【0060】
図11の処理工程107と処理工程108が、図12のサイクルC、サイクルC+1、サイクルC+2、サイクルC+3、サイクルC+4の各サイクル毎に呼び出される。そして、図18では、処理工程1081、処理工程107、処理工程1082が、シミュレータ制御手段2により呼び出される。処理工程108のcommunicationでは、処理工程1081のcommunication masterと処理工程1082のcommunicationslaveを連続して呼ぶか、処理工程1081と処理工程1082での機能と同様の機能を、機能モデル8が提供すればよい。
【0061】
以上、本発明の方法を用いることで、ソフトウェア検証向け、システム検証向け、ハードウェア検証向けでモデルの共通化が行える。本実施の形態では、ソフトウェア検証向け、システム検証向け、ハードウェア検証向けの抽象度として分かりやすい例を挙げたが、本発明はそれぞれの検証向けの、様々な抽象度を包含するものである。
【0062】
次に、デバッグ用インターフェースに関して述べる。
【0063】
モデルを用いたデバッグの例として、DMAブロックを対象とした場合について述べる。DMAはメモリのデータを転送する機能を実装したブロックである。すなわち、ブロックの機能としてデータ転送の開始、終了といった処理が行われた場合にブレークを行うようにするインターフェースを備えることで、デバッグ性が向上する。
【0064】
このインターフェースは、機能に対してのものである場合、各用途向けモデルで共通して利用できる。さらに、デバッグでは、ブロックの持つメモリマップドIOレジスタを含むメモリの値を参照することがある。このメモリの値の参照、変更等を行うインターフェースも、このデバッグ用インターフェースに含まれる。各検証において、バスの振舞が必要でなく、メモリの値が書き換えられれば良い場合があり、その場合には、このインターフェースを用いて高速にシミュレーションを実施することも可能となる。
【0065】
ソフトウェア開発の場合など、更なる高速化のために、メモリ機能を、メモリを保持するブロックではなく、全てのメモリを管理するブロックに実装し、高速化を行う際には、このメモリブロックとソフトウェアが動作するブロックのみをシミュレータ制御手段から制御し、他のブロックをこの環境から分離することで、さらにシミュレーションを高速化することも可能であり、本発明の範疇に含まれる。
【0066】
また、今までの例では、シミュレータ制御手段2が一つのレベルで実装する例を述べてきたが、実際の例では複数のレベルで実装される場合もある。図19は、その一例である。シミュレータ制御手段2がシミュレータ制御手段S20とシミュレータ制御手段S21とシミュレータ制御手段S22から構成される場合を示している。
【0067】
シミュレータ制御手段S20が、シミュレータ制御手段S21とシミュレータ制御手段S22を制御し、シミュレータ制御手段S21がシミュレータモデル9とシミュレータモデル16を制御する。このとき、シミュレーションモデル9とシミュレーションモデル16を駆動するタイミングがクロックレベルである場合については、既に説明した。
【0068】
シミュレータモデル9と16で使用するクロックサイクルと、シミュレータモデル23で使用するクロックサイクルが異なる場合、制御手段S21とS22では、それぞれのクロックサイクル数ではなく、シミュレーション時間で制御を行う必要があり、その機能を実装することで、異なるクロックソースを用いるモデル混在のシミュレーション環境が実現できる。
【0069】
最後に拡張用インターフェースの例として、性能解析の例を挙げる。システム検証では、どのバスマスタがどの程度バスを利用、占有しているか、いつどのメモリ番地にアクセスがあったか、どの程度バスの利用を待たされたかといった各種情報を利用して、性能解析を行う。このような情報を得るための拡張用インターフェースを用いて情報を得て性能解析を行い、性能解析の結果を基に再度システムをチューニングして、最適なシステムを設計することが可能となる。
【0070】
【発明の効果】
以上のように本発明によれば、大規模なシステムLSIのハードウェア検証用システムシミュレータ、ソフトウェア開発検証用シミュレータ、システム検証用システムシミュレータをはじめとする各種目的用システムシミュレータにおいて、共通のモデルが利用可能になるため、異なるシミュレータ間でモデルの共有化が図られ、統合シミュレーション制御方法によって、適切な精度のシミュレーションを同一のモデルを用いて実行できる。これによって、大規模なシステムLSIのハードウェア/ソフトウェア協調設計環境を構築するための工数を削減でき、ひいてはシステムLSIの設計期間短縮につながり、高性能、低コストのシステムLSIを提供することができる。
【図面の簡単な説明】
【図1】本発明の実施の形態のシミュレータ装置の構成を示すブロック図
【図2】システムLSIを示す概念図
【図3】ハードウェア検証用シミュレータを示す概念図
【図4】ソフトウェア検証用シミュレータを示す概念図
【図5】システム検証用シミュレータを示す概念図
【図6】ハードウェア検証用シミュレータで必要とされる精度を示す概念図
【図7】ソフトウェア検証用シミュレータで必要とされる精度を示す概念図
【図8】システム検証用シミュレータで必要とされる精度を示す概念図
【図9】ソフトウェア検証用シミュレータI/Fを示す概念図
【図10】従来のソフトウェア検証用シミュレータの処理工程を示すフローチャート
【図11】システムシミュレータの処理工程を示すフローチャート
【図12】命令レベルとサイクルレベルとの違いの一部を示す説明図
【図13】命令レベルでの処理工程を示すフローチャート
【図14】命令レベルでの命令1の処理工程を示すフローチャート
【図15】命令レベルでの命令2の処理工程を示すフローチャート
【図16】命令レベルでの命令3の処理工程を示すフローチャート
【図17】サイクルレベルでの処理工程を示すフローチャート
【図18】ハードウェア検証用シミュレータの処理工程を示すフローチャート
【図19】本発明の別の実施の形態のシミュレータ装置の構成を示すブロック図
【符号の説明】
1 検証用シミュレータ装置
2 シミュレータ制御手段
3,10,17 ソフトウェア検証シミュレータ用I/F
4,11,18 ハードウェア検証用シミュレータ用I/F
5,12,19 システム検証シミュレータ用I/F
6,13,20 デバッグ用I/F
7,14,21 拡張用I/F
8,15,22 ブロックの機能モデル
9,16,23 シミュレータモデル
31,32,33,34,35,36,37 ブロック
60 ハードウェア検証用シミュレータ
61,62,63,64,65,66,67 ハードウェア対応の検証用モデル
68,69 バスモデル
90,95 ソフトウェア検証用シミュレータ
91,92 ソフトウェア対応の検証用モデル
92,94 仮想モデル
120 システム検証用シミュレータ
121,122,123,124,125,126,127 システム対応の検証用モデル
128,129 バスモデル
S21,S22,S23 シミュレータ制御手段
【発明の属する技術分野】
本発明は、大規模集積回路(LSI)設計、特にシステムオンチップ化に対応するための設計に関するものであり、設計上流におけるハードウェア/ソフトウェア/システムの検証、開発、評価を行うためのシミュレータ装置、シミュレーション方法および性能解析方法に関するものである。
【0002】
【従来の技術】
従来から、電子機器は、例えばプロセッサ、メモリ、バス等の種類ごとのLSIを、個別に半導体チップ上に形成した後、各チップをプリント配線基板などの母基板上に実装することによって製造されてきた。
【0003】
ところが、近年、これに用いられる集積回路装置に対し、1チップ化、小型化、軽量化、省電力化および低コスト化の要求が高まっている。このような傾向は、特にデジタル情報家電分野において、より顕著にみられる。そして、これに応じて、半導体メーカーはその研究開発の重心をメモリからシステムLSIへと移行してきている。
【0004】
システムはソフトウェアとハードウェアから構成される。ハードウェアとソフトウェアに分けられた後、ハードウェアとソフトウェアを逐次的に開発していた。このようにハードウェアとソフトウェアを逐次的に開発すると、開発期間の増大につながるため、ハードウェアとソフトウェアを同時に並行開発するハードウェア/ソフトウェア協調設計という手法がとられつつある。ハードウェアの検証用にシステムシミュレータ、エミュレータを用い、ソフトウェアの開発/検証用にも別途、システムシミュレータや評価ボードを用いて、それぞれの開発/検証を行うのである。
【0005】
従来のシミュレーション技術は、異なる用途向けの、異なる抽象度で記述されたモデルを想定している(例えば、特許文献1参照)。
【0006】
また、互いに異なる抽象度で書かれたモデルを統一するシミュレーション方法も提案されている(例えば、特許文献2参照)。
【0007】
【特許文献1】
特開2002−157291号公報(第6−7頁、第2図)(半導体集積回路装置の設計方法)
【特許文献2】
特願2002−162048号(シミュレータ装置並びにシミュレーションモデル生成プログラム)
【0008】
【発明が解決しようとする課題】
しかしながら、ハードウェア/ソフトウェア協調設計を行うためには、そのための設計環境が必要となる。すなわち、システムシミュレータが必要となる。ハードウェアとソフトウェアの分割に使用されるシステム検証用シミュレータと、ハードウェアの検証に使用されるハードウェア検証用システムシミュレータと、ソフトウェアの開発検証用に用いられるソフトウェア開発検証用シミュレータと、それぞれの用途向けに、プロセッサ、バス、ハードウェアモデルを用意するのが現状である。
【0009】
しかし、システムLSIの複雑化・大規模化を鑑みると、それらのモデルを用意するための工数も同様に増加の一途をたどっている。結果、ハードウェア/ソフトウェア協調設計を行うことで得られる恩恵と同程度かそれ以上の工数が発生し、ハードウェア/ソフトウェア協調設計の利点が失われてしまう。
【0010】
本発明は上記問題点に鑑み、それぞれのシステムシミュレータで利用できる共通のモデルを用いたシミュレータ装置、シミュレーション方法、性能解析方法を提供することを目的とする。
【0011】
【課題を解決するための手段】
以上の目的を達成するための本発明のシステムシミュレータ装置およびシミュレーション方法は、大規模なシステムLSIの1チップシミュレーションで用いるブロックについて、異なるシミュレータの制御部からブロックを呼び出し可能なインターフェースを備えたものである。また、デバッグ用のインターフェースを実装することで、各用途のための検証解析機能を実現するものである。以下、順次説明する。
【0012】
本発明によるシミュレータ装置は、被シミュレーション対象システムを構成するCPU、前記CPUや周辺のハードウェアのブロックを接続するバスおよび前記ハードウェアをシミュレートするシミュレータ装置であって、前記CPUのモデル、バス、および前記バスに接続される前記ハードウェアのモデルとのインターフェースを実装し、前記インターフェースを用いて、前記被シミュレーション対象システムの性能/機能検証を実行することを特徴とする。
【0013】
上記構成において、前記各モデルのインターフェースとしては、ソフトウェア開発検証用システムシミュレータで使用できるインターフェースや、ハードウェア検証用システムシミュレータで使用できるインターフェースや、システム検証用システムシミュレータで使用できるインターフェースなどがある。
【0014】
この構成によれば、CPUのモデルとハードウェアのモデルを構成するとともに、両モデル間にインタフェースを介在させていて、ソフトウェア検証向け、システム検証向け、ハードウェア検証向けなど各種の検証向けにモデルを共通化することができる。すなわち、大規模なシステムLSIのハードウェア検証用システムシミュレータ、ソフトウェア開発検証用シミュレータ、システム検証用システムシミュレータをはじめとする各種目的用システムシミュレータにおいて、共通のモデルが利用可能になるため、異なるシミュレータ間でモデルの共有化が図られ、統合シミュレーション制御方法によって、適切な精度のシミュレーションを同一のモデルを用いて実行できる。したがって、それぞれの目的ごとにモデルを用意する必要がなくなる。
【0015】
また、上記シミュレータ装置の構成において、前記各モデルのインターフェースとしては、デバッグで使用できるインターフェースもある。これに対応するシミュレーション方法は、そのデバッグ用のインターフェースを用いてデバッグすることである。例えば、ブロックの機能としてデータ転送の開始、終了といった処理が行われた場合にブレークを行うようにするデバッグ用のインターフェースを備えることで、各用途向けモデルで共通して利用でき、デバッグ性が向上する。
【0016】
さらに、上記シミュレータ装置の構成において、前記各モデルのインターフェースとしては、システムの1クロックサイクル数分のシミュレーションを実行するためのインターフェースもある。これに対応するシミュレーション方法は、そのシステムの1クロックサイクル数分のシミュレーションを実行するためのインターフェースを用いて、システムの1クロックサイクル数分のシミュレーションを実行することである。各モデルを駆動するタイミングがクロックレベルであるときに有効である。
【0017】
また、上記シミュレータ装置の構成において、前記各モデルのインターフェースとしては、システムのシミュレーション時間分のシミュレーションを実行するためのインターフェースもある。これに対応するシミュレーション方法は、そのシステムのシミュレーション時間分のシミュレーションを実行するためのインターフェースを用いて、システムのシミュレーション時間分のシミュレーションを実行することである。各モデルで使用するクロックサイクルが異なる場合に有効である。すなわち、異なるクロックソースを用いるモデル混在のシミュレーション環境が実現できる。
【0018】
また、上記シミュレータ装置の構成において、前記各モデルのインターフェースとしては、性能解析で使用できる拡張用インターフェースもある。これに対応するシミュレーション方法または性能解析方法は、その解析で使用できる拡張用インターフェースを用いて解析することである。性能解析の結果を基にシステムをチューニングして、最適なシステムを設計することが可能となる。
【0019】
【発明の実施の形態】
以下、本発明の一実施形態について、図面を参照しながら説明する。
【0020】
図1は本発明のシミュレータ装置の構成を示すブロック図である。図中、検証用シミュレータ装置1は、被シミュレーション対象システムのシミュレータ装置である。被シミュレーション対象システムは、ブロック31、ブロック32、ブロック33から構成された場合の例である。ブロック31のモデルは、ソフトウェア検証シミュレータ用I/F3と、ハードウェア検証用シミュレータ用I/F4と、システム検証シミュレータ用I/F5と、デバッグ用I/F6と、拡張用I/F7とを備え、ブロックの機能モデル8からなるシミュレータモデル9として、検証用シミュレータ装置1を構成する。
【0021】
同様に、ブロック32のモデルは、ソフトウェア検証シミュレータ用I/F10と、ハードウェア検証用シミュレータ用I/F11と、システム検証シミュレータ用I/F12と、デバッグ用I/F13と、拡張用I/F14とを備え、ブロックの機能モデル15からなるシミュレータモデル16として、検証用シミュレータ装置1を構成する。
【0022】
さらに、ブロック33のモデルは、ソフトウェア検証シミュレータ用I/F17と、ハードウェア検証用シミュレータ用I/F18と、システム検証シミュレータ用I/F19と、デバッグ用I/F20と、拡張用I/F21とを備え、ブロックの機能モデル22からなるシミュレータモデル23として、検証用シミュレータ装置1を構成する。
【0023】
検証用シミュレータ装置1がハードウェア検証用であれば、モデル9、モデル16、モデル23のそれぞれのハードウェア検証用シミュレータ用I/F4、ハードウェア検証用シミュレータ用I/F11、ハードウェア検証用シミュレータ用I/F18を用いてハードウェア検証用のシミュレータ制御手段2がシミュレーションの制御を行う。
【0024】
また、検証用シミュレータ装置1がソフトウェア検証用であれば、モデル9、モデル16、モデル23のそれぞれのソフトウェア検証シミュレータ用I/F3、ソフトウェア検証シミュレータ用I/F10、ソフトウェア検証シミュレータ用I/F17を用いてソフトウェア検証用のシミュレータ制御手段2がシミュレーションの制御を行う。
【0025】
さらに、検証用シミュレータ装置1がシステム検証用であれば、モデル9、モデル16、モデル23のそれぞれのシステム検証シミュレータ用I/F5、システム検証シミュレータ用I/F12、システム検証シミュレータ用I/F19を用いてシステム検証用のシミュレータ制御手段2がシミュレーションの制御を行う。
【0026】
それぞれの目的における検証時、内部の状態、例えばブロックのレジスタの値を知る必要がある。そのような場合には、デバッグ用I/F6、デバッグ用I/F13、デバッグ用I/F20を用いて、内部の状態を取り出し、デバッグに利用する。レジスタ以外の信号の値を含め、デバッグ目的で必要となる情報は、すべてこのI/Fにより実装される。
【0027】
また、システムシミュレータにおいては、システムの振る舞いを基に、性能解析する必要が発生する。複数のバスマスタからなるマルチバスマスタシステムにおけるバスの負荷や、マスタがCPUであった際のCPU利用率、メモリの転送レートや利用率が、そのような解析で必要となるデータである。各モデルは、バスの利用率を計算するために必要な、バス要求時やバス利用許可時、バス利用放棄時などを、このインターフェースを通して、シミュレータ制御手段をはじめとする解析系にデータを渡す。
【0028】
簡単な解析系としては、インターフェースがそれらのデータを、電子データとしてファイルに保存し、それを利用して解析するものが挙げられる。
【0029】
ブロック31、ブロック32、ブロック33のレジスタの内容を記憶することをはじめとする機能は、機能モデル8、機能モデル15、機能モデル22でモデル化されるものとし、前述I/Fを用いて、機能を駆動する。レジスタへのアクセスや、デバッグのアクセスは、すべてこの機能モデルで実装される。このようなシミュレータ装置の実装をとることで、それぞれの目的ごとにモデルを用意する必要がなくなる。
【0030】
図2は、被シミュレーション対象システムのLSIであるシステムLSI30の構成図である。システムLSI30は、ブロック31、ブロック32、ブロック33、ブロック34、ブロック35、ブロック36、ブロック37とバスから構成される。
【0031】
図3は、被シミュレーション対象システムのLSIであるシステムLSI30のハードウェア検証用シミュレータ60の1実現例である。ハードウェア検証用シミュレータ60は、システムLSI30の構成要素ブロック31、ブロック32、ブロック33、ブロック34、ブロック35、ブロック36、ブロック37とバスのそれぞれに対応して、検証用のモデル61、モデル62、モデル63、モデル64、モデル65、モデル66、モデル67、およびバスモデル68とバスモデル69から構成されている。
【0032】
検証対象ハードウェアがブロック31であるとし、検証対象ハードウェアのモデルをモデル61とする。ハードウェアのモデルは、ハードウェア記述言語(HDL:Hardware Description Language)と呼ばれる記述言語、もしくは高位合成で設計されたモデルを含む。この目的のためには、検証対象ハードウェアブロックに影響を与える各モデルがクロックサイクルか、もしくはRTL(RegisterTransfer Level:レジスタ転送レベル)と呼ばれるレベルで検証対象ハードウェアブロックにアクセスする必要がある。
【0033】
図6は、クロックレベルで必要とされる精度を示している。システムレベルの場合は、図中、時刻t、時刻t+1、時刻t+2、時刻t+3、時刻t+4での各信号の値がピンレベルで、実際のハードウェア記述モデルと同じであると保証されていることが最低限必要となる。
【0034】
図4(a)は、被シミュレーション対象システムのLSIであるシステムLSI30のソフトウェア検証用シミュレータ90の1実現例である。ブロック31が検証対象ソフトウェアが動作するブロックとし、そのモデルを91とする。一般的には、ブロック31のISSと呼ばれる命令レベルでの精度を保証する命令セットシミュレータと、ブロック32、ブロック33、ブロック34、ブロック35、ブロック36、ブロック37のメモリイメージをはじめとする、検証対象ソフトウェアの動作に必要な機能を実装した仮想モデル92から構成され、検証対象ソフトウェアがアクセスする部分は、仮想モデルとして実装される。ミドルウェアやデバイスドライバと呼ばれるハードウェアモデルの高精度を求めるソフトウェアが検証対象であると、この仮想モデルは、図3のハードウェア検証用シミュレータに近い精度が求められることもある。この目的で作られるシミュレータは、モデル91がシミュレータの制御を行い、モデル91の外部へアクセスが発生したときにのみ仮想モデル92が使用される、といったモデル化がよく行われる。図4(b)のような場合もある。
【0035】
図7は、このレベルで必要とされる精度を示している。各命令が影響を与えるブロックに対する影響が、検証対象ソフトウェアの動作するブロック31のモデル91の内部ではなく、外部に、すなわち図の例では仮想モデル92に及ぶことが最低限必要となる。
【0036】
図5は、被シミュレーション対象システムのLSIであるシステムLSI30のシステム検証用シミュレータ120の1実現例である。ブロック31、ブロック32、ブロック33、ブロック34、ブロック35、ブロック36、ブロック37のメモリイメージをはじめとする、検証対象システムの動作に必要な機能を実装したそれぞれのモデル、すなわち、モデル121、モデル122、モデル123、モデル124、モデル125、モデル126、モデル127とバスモデル128、バスモデル129から構成され、検証対象システム上で動作するソフトウェアがアクセスする部分は、全て実装される。
【0037】
図8は、このレベルで必要とされる精度を示した一例である。図6と図7の間の精度を必要としている。図中にあるように、サイクルC、サイクルC+1、サイクルC+2、サイクルC+3、サイクルC+4の各サイクルで精度を保証する図のモデルは、その一例である。また、より抽象度の高いトランザクションでの精度を保証するシミュレータも、この範疇に含まれる。
【0038】
ソフトウェア検証用シミュレータを、他の検証用シミュレータで利用するためには、まず、システムシミュレータ向けに、制御をシミュレータ制御手段2に行わせる、図9のようなソフトウェア検証シミュレータ用I/F3を用意すればよい。
【0039】
従来のソフトウェア検証用シミュレータは、検証対象ソフトウェアが動作するプロセッサのみをモデル化し、バス、メモリに対するアクセスは抽象化されていた。一例を挙げると、図10のフローチャートのような処理工程である。図10中、初期化工程100を行い、その後、ブロック31のシミュレーション処理工程101を行う。このとき、バス、メモリに対する処理も、この処理工程内で行われる。そのため、図4(b)に示すような複数のプロセッサからなるマルチプロセッサ構成では対応できない。
【0040】
そこで、図9中、シミュレータ制御手段2により呼び出し可能な関数を定義し、その関数の実行時、外部へ影響を与える場合、前記ソフトウェア検証シミュレータ用I/F3を通して外部へアクセスを行う。
【0041】
こうすることで、システムシミュレータとして利用することが可能となる。その処理工程を図11のフローチャートに示す。図11中、初期化工程105を行い、その後、シミュレーションが終わったかを工程106で調べる。シミュレーションが終わっていれば、シミュレーションを終了する。終わっていなければ、ブロック31の機能モデル8の内部の値を更新するブロック31のupdate処理工程107を行う。このとき、バス、メモリに影響を与える処理は行われない。次工程のブロック31のcommunication処理工程108にて、機能モデル8外への処理を行う。このとき、関係するブロックのインターフェースを介してアクセスを行う。
【0042】
以上、この処理工程を実装するものが、シミュレータ制御手段2である。上述ソフトウェア検証シミュレータ用I/F3の実装を行うことで、ソフトウェアシミュレータは、シミュレータ装置の一部として利用可能になる。
【0043】
このモデルをシステム検証用のシステムシミュレータで利用可能にするシステム検証シミュレータ用I/F5について説明する。前述したソフトウェア検証シミュレータ用I/F3は、機能モデル8を呼び出す。ソフトウェア検証用では、命令レベルの実装であったが、サイクルレベルで実装を行っている場合を考える。
【0044】
命令レベルとサイクルレベルとの違いを図12に示す。モデル31が3つのパイプラインステージから構成されているとする。図にあるように、命令レベルでは、それぞれの命令が逐次的に実行される。
【0045】
サイクルレベルでは、それぞれの命令がパイプラインステージを流れていく。サイクルCでは命令1がステージ1で処理され、サイクルC+1では、命令1がステージ2で、命令2がステージ1でそれぞれ処理されている。
【0046】
図13は、命令レベルでの処理工程を示すフローチャートである。命令レベルの処理工程のため、命令1の処理工程109、命令2の処理工程110、命令3の処理工程111の順に処理工程が進む。
【0047】
機能モデル8では、図13の命令1の処理工程109の処理は、図14のフローチャートに図示する工程で処理を行う。すなわち、ステージ1での処理工程1090、ステージ2での処理工程1091、ステージ3での処理工程1092の順に、シミュレータ制御手段2が制御を行う。
【0048】
同様にして、機能モデル8では、図13の命令2の処理工程110の処理は、図15のフローチャートに図示する工程で処理を行う。すなわち、ステージ1での処理工程1100、ステージ2での処理工程1101、ステージ3での処理工程1102の順に、シミュレータ制御手段2が制御を行う。
【0049】
また、同様にして、機能モデル8では、図13の命令3の処理工程111の処理は、図16のフローチャートに図示する工程で処理を行う。すなわち、ステージ1での処理工程1110、ステージ2での処理工程1111、ステージ3での処理工程1112の順に、シミュレータ制御手段2が制御を行う。
【0050】
サイクルレベルの場合は、これら処理工程の制御方法を、図17のフローチャートのように行えばよい。図17は、前記機能モデル8について、図12にあるサイクルC、サイクルC+1、サイクルC+2、サイクルC+3、サイクルC+4の処理に対応し、シミュレータ制御手段2が、システム検証用シミュレータの制御方法を行った処理工程を示すものである。
【0051】
図中、C0がサイクルCでの処理工程(命令1、ステージ1)を表し、C1がサイクルC+1での処理(命令2、ステージ1と命令1、ステージ2)を表す。図中、C2ではサイクルC+2の処理(命令3、ステージ1と命令2、ステージ2と命令1、ステージ3)を表し、C3は、サイクルC+3における処理工程(命令3、ステージ2と命令2、ステージ3)を表し、C4は、サイクルC+4における処理工程(命令3、ステージ3)を表している。
【0052】
例えば処理工程C2にて、前記命令3のステージ1での処理工程1110、命令2のステージ2での処理工程1101、命令1のステージ3での処理工程1092を行っている一例である。ステージ間の依存関係によって、処理工程1110,1101,1092はどの順序で実行してもよく、逐次的にではなく、並列実行した場合にも、本発明の効果が得られることから、本発明の範疇に含まれる。
【0053】
以上のように、シミュレータ制御手段2が、ブロック31の機能モデル8との、システム検証シミュレータ用I/Fを用いた制御を行うことで、本発明で得られる効果が得られる。
【0054】
次に、ブロック31の機能モデル8をハードウェア検証用に用いるためのハードウェア検証用シミュレータ用I/F4について説明する。
【0055】
ハードウェア検証用では、図6にある精度でのインターフェースが必要となる。最低限、クロックの立ち上がりと立ち下がりや、信号の値が変化したというイベントの受け渡しを、正しいタイミングで行うことを、このインターフェースでは実現する。上述したインターフェースの実装方法を用いることで、図8の精度を実現するシミュレータ制御手段2により、図8の精度を実現したシミュレータ装置が実現できる。
【0056】
次に、この図8のレベルと、ハードウェア検証用のシミュレータが必要とするレベルの実装方法を説明する。
【0057】
図17での実装方法では、命令1のステージ1での処理工程1090は、図11にあるupdateとcommunicateの実装を行っている。これら実装されたインターフェースは、シミュレータ制御手段2により、例えば、クロックサイクル毎に各モデルが呼び出され、機能モデル内部の状態を変更する関数updateと、外部への通信を行うフェーズであるcommunicateを実装することで、実現可能である。
【0058】
ここで、ハードウェア検証用のシミュレータが必要とするのは、信号の駆動側がいつその信号をドライブするかといったタイミングである。システム検証用のシミュレータでは、信号の駆動側ではなく、トランザクションの駆動側(以降マスター)のタイミングで、communicateを実装している。
【0059】
そこで、機能モデル8のインターフェースとして、トランザクションのマスターによるcommunicateを、図18のフローチャートにおける信号を駆動するインターフェースを実装したcommunicateMaster処理工程1081と、駆動される信号に関するインターフェースを実装したcommunicateSlave処理工程1082に分ける。
【0060】
図11の処理工程107と処理工程108が、図12のサイクルC、サイクルC+1、サイクルC+2、サイクルC+3、サイクルC+4の各サイクル毎に呼び出される。そして、図18では、処理工程1081、処理工程107、処理工程1082が、シミュレータ制御手段2により呼び出される。処理工程108のcommunicationでは、処理工程1081のcommunication masterと処理工程1082のcommunicationslaveを連続して呼ぶか、処理工程1081と処理工程1082での機能と同様の機能を、機能モデル8が提供すればよい。
【0061】
以上、本発明の方法を用いることで、ソフトウェア検証向け、システム検証向け、ハードウェア検証向けでモデルの共通化が行える。本実施の形態では、ソフトウェア検証向け、システム検証向け、ハードウェア検証向けの抽象度として分かりやすい例を挙げたが、本発明はそれぞれの検証向けの、様々な抽象度を包含するものである。
【0062】
次に、デバッグ用インターフェースに関して述べる。
【0063】
モデルを用いたデバッグの例として、DMAブロックを対象とした場合について述べる。DMAはメモリのデータを転送する機能を実装したブロックである。すなわち、ブロックの機能としてデータ転送の開始、終了といった処理が行われた場合にブレークを行うようにするインターフェースを備えることで、デバッグ性が向上する。
【0064】
このインターフェースは、機能に対してのものである場合、各用途向けモデルで共通して利用できる。さらに、デバッグでは、ブロックの持つメモリマップドIOレジスタを含むメモリの値を参照することがある。このメモリの値の参照、変更等を行うインターフェースも、このデバッグ用インターフェースに含まれる。各検証において、バスの振舞が必要でなく、メモリの値が書き換えられれば良い場合があり、その場合には、このインターフェースを用いて高速にシミュレーションを実施することも可能となる。
【0065】
ソフトウェア開発の場合など、更なる高速化のために、メモリ機能を、メモリを保持するブロックではなく、全てのメモリを管理するブロックに実装し、高速化を行う際には、このメモリブロックとソフトウェアが動作するブロックのみをシミュレータ制御手段から制御し、他のブロックをこの環境から分離することで、さらにシミュレーションを高速化することも可能であり、本発明の範疇に含まれる。
【0066】
また、今までの例では、シミュレータ制御手段2が一つのレベルで実装する例を述べてきたが、実際の例では複数のレベルで実装される場合もある。図19は、その一例である。シミュレータ制御手段2がシミュレータ制御手段S20とシミュレータ制御手段S21とシミュレータ制御手段S22から構成される場合を示している。
【0067】
シミュレータ制御手段S20が、シミュレータ制御手段S21とシミュレータ制御手段S22を制御し、シミュレータ制御手段S21がシミュレータモデル9とシミュレータモデル16を制御する。このとき、シミュレーションモデル9とシミュレーションモデル16を駆動するタイミングがクロックレベルである場合については、既に説明した。
【0068】
シミュレータモデル9と16で使用するクロックサイクルと、シミュレータモデル23で使用するクロックサイクルが異なる場合、制御手段S21とS22では、それぞれのクロックサイクル数ではなく、シミュレーション時間で制御を行う必要があり、その機能を実装することで、異なるクロックソースを用いるモデル混在のシミュレーション環境が実現できる。
【0069】
最後に拡張用インターフェースの例として、性能解析の例を挙げる。システム検証では、どのバスマスタがどの程度バスを利用、占有しているか、いつどのメモリ番地にアクセスがあったか、どの程度バスの利用を待たされたかといった各種情報を利用して、性能解析を行う。このような情報を得るための拡張用インターフェースを用いて情報を得て性能解析を行い、性能解析の結果を基に再度システムをチューニングして、最適なシステムを設計することが可能となる。
【0070】
【発明の効果】
以上のように本発明によれば、大規模なシステムLSIのハードウェア検証用システムシミュレータ、ソフトウェア開発検証用シミュレータ、システム検証用システムシミュレータをはじめとする各種目的用システムシミュレータにおいて、共通のモデルが利用可能になるため、異なるシミュレータ間でモデルの共有化が図られ、統合シミュレーション制御方法によって、適切な精度のシミュレーションを同一のモデルを用いて実行できる。これによって、大規模なシステムLSIのハードウェア/ソフトウェア協調設計環境を構築するための工数を削減でき、ひいてはシステムLSIの設計期間短縮につながり、高性能、低コストのシステムLSIを提供することができる。
【図面の簡単な説明】
【図1】本発明の実施の形態のシミュレータ装置の構成を示すブロック図
【図2】システムLSIを示す概念図
【図3】ハードウェア検証用シミュレータを示す概念図
【図4】ソフトウェア検証用シミュレータを示す概念図
【図5】システム検証用シミュレータを示す概念図
【図6】ハードウェア検証用シミュレータで必要とされる精度を示す概念図
【図7】ソフトウェア検証用シミュレータで必要とされる精度を示す概念図
【図8】システム検証用シミュレータで必要とされる精度を示す概念図
【図9】ソフトウェア検証用シミュレータI/Fを示す概念図
【図10】従来のソフトウェア検証用シミュレータの処理工程を示すフローチャート
【図11】システムシミュレータの処理工程を示すフローチャート
【図12】命令レベルとサイクルレベルとの違いの一部を示す説明図
【図13】命令レベルでの処理工程を示すフローチャート
【図14】命令レベルでの命令1の処理工程を示すフローチャート
【図15】命令レベルでの命令2の処理工程を示すフローチャート
【図16】命令レベルでの命令3の処理工程を示すフローチャート
【図17】サイクルレベルでの処理工程を示すフローチャート
【図18】ハードウェア検証用シミュレータの処理工程を示すフローチャート
【図19】本発明の別の実施の形態のシミュレータ装置の構成を示すブロック図
【符号の説明】
1 検証用シミュレータ装置
2 シミュレータ制御手段
3,10,17 ソフトウェア検証シミュレータ用I/F
4,11,18 ハードウェア検証用シミュレータ用I/F
5,12,19 システム検証シミュレータ用I/F
6,13,20 デバッグ用I/F
7,14,21 拡張用I/F
8,15,22 ブロックの機能モデル
9,16,23 シミュレータモデル
31,32,33,34,35,36,37 ブロック
60 ハードウェア検証用シミュレータ
61,62,63,64,65,66,67 ハードウェア対応の検証用モデル
68,69 バスモデル
90,95 ソフトウェア検証用シミュレータ
91,92 ソフトウェア対応の検証用モデル
92,94 仮想モデル
120 システム検証用シミュレータ
121,122,123,124,125,126,127 システム対応の検証用モデル
128,129 バスモデル
S21,S22,S23 シミュレータ制御手段
Claims (13)
- 被シミュレーション対象システムを構成するCPU、前記CPUや周辺のハードウェアのブロックを接続するバスおよび前記ハードウェアをシミュレートするシミュレータ装置であって、前記CPUのモデル、バス、および前記バスに接続される前記ハードウェアのモデルとのインターフェースを実装し、前記インターフェースを用いて、前記被シミュレーション対象システムの性能/機能検証を実行することを特徴とするシミュレータ装置。
- 前記各モデルのインターフェースが、ソフトウェア開発検証用システムシミュレータで使用できるインターフェースを備えていることを特徴とする請求項1に記載のシミュレータ装置。
- 前記各モデルのインターフェースが、ハードウェア検証用システムシミュレータで使用できるインターフェースを備えていることを特徴とする請求項1に記載のシミュレータ装置。
- 前記各モデルのインターフェースが、システム検証用システムシミュレータで使用できるインターフェースを備えていることを特徴とする請求項1に記載のシミュレータ装置。
- 前記各モデルのインターフェースが、デバッグで使用できるインターフェースを備えていることを特徴とする請求項1に記載のシミュレータ装置。
- 請求項5に記載のインターフェースを用いて、デバッグすることを特徴とするシミュレーション方法。
- システムの1クロックサイクル数分のシミュレーションを実行するためのインターフェースを備えていることを特徴とする請求項1に記載のシミュレータ装置。
- 請求項7に記載の前記シミュレータ装置を用いてシステムの1クロックサイクル数分のシミュレーションを実行することを特徴とするシミュレーション方法。
- システムのシミュレーション時間分のシミュレーションを実行するためのインターフェースを備えていることを特徴とする請求項1に記載のシミュレータ装置。
- 請求項9に記載の前記インターフェースを用いて、システムのシミュレーション時間分のシミュレーションを実行することを特徴とするシミュレーション方法。
- 前記各モデルのインターフェースが、性能解析で使用できる拡張用インターフェースを備えていることを特徴とする請求項1に記載のシミュレータ装置。
- 請求項11に記載の前記ンターフェースを用いて、性能解析することを特徴とするシミュレーション方法。
- 請求項11に記載の前記インターフェースを用いて生成された情報を基に、性能解析することを特徴とする性能解析方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003104907A JP2004310568A (ja) | 2003-04-09 | 2003-04-09 | シミュレータ装置、シミュレーション方法および性能解析方法 |
US10/814,306 US20040204928A1 (en) | 2003-04-09 | 2004-04-01 | Simulator apparatus and related technology |
CNB2004100325724A CN1278237C (zh) | 2003-04-09 | 2004-04-09 | 仿真器设备及相关技术 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003104907A JP2004310568A (ja) | 2003-04-09 | 2003-04-09 | シミュレータ装置、シミュレーション方法および性能解析方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004310568A true JP2004310568A (ja) | 2004-11-04 |
Family
ID=33127847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003104907A Pending JP2004310568A (ja) | 2003-04-09 | 2003-04-09 | シミュレータ装置、シミュレーション方法および性能解析方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20040204928A1 (ja) |
JP (1) | JP2004310568A (ja) |
CN (1) | CN1278237C (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007310449A (ja) * | 2006-05-16 | 2007-11-29 | Fujitsu Ltd | ソフトウェア/ハードウェア協調設計のためのモデル生成プログラム、およびモデル生成方法 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101894067B (zh) * | 2010-06-04 | 2012-02-01 | 四川大学 | 一种基于arm指令集的嵌入式软件能耗统计方法 |
CN104573287B (zh) * | 2015-02-06 | 2017-09-26 | 成都能通科技有限公司 | 基于界面绑定统一模型的数字仿真框架设计方法 |
JP6663801B2 (ja) * | 2016-06-15 | 2020-03-13 | 株式会社日立製作所 | 半導体lsi設計装置および設計方法 |
CN109522212A (zh) * | 2018-09-30 | 2019-03-26 | 广西电网有限责任公司电力科学研究院 | 一种采集终端软件可靠性安全性半实物检测系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5732247A (en) * | 1996-03-22 | 1998-03-24 | Sun Microsystems, Inc | Interface for interfacing simulation tests written in a high-level programming language to a simulation model |
US6199031B1 (en) * | 1998-08-31 | 2001-03-06 | Vlsi Technology, Inc. | HDL simulation interface for testing and verifying an ASIC model |
US7366650B2 (en) * | 2001-04-12 | 2008-04-29 | Arm Limited | Software and hardware simulation |
JP4837844B2 (ja) * | 2001-07-19 | 2011-12-14 | 富士通株式会社 | シミュレーションシステム、方法、プログラム及び記録媒体 |
-
2003
- 2003-04-09 JP JP2003104907A patent/JP2004310568A/ja active Pending
-
2004
- 2004-04-01 US US10/814,306 patent/US20040204928A1/en not_active Abandoned
- 2004-04-09 CN CNB2004100325724A patent/CN1278237C/zh not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007310449A (ja) * | 2006-05-16 | 2007-11-29 | Fujitsu Ltd | ソフトウェア/ハードウェア協調設計のためのモデル生成プログラム、およびモデル生成方法 |
Also Published As
Publication number | Publication date |
---|---|
US20040204928A1 (en) | 2004-10-14 |
CN1278237C (zh) | 2006-10-04 |
CN1536487A (zh) | 2004-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7036114B2 (en) | Method and apparatus for cycle-based computation | |
KR100483636B1 (ko) | 에뮬레이션및시뮬레이션을이용한설계검증방법및장치 | |
US7472361B2 (en) | System and method for generating a plurality of models at different levels of abstraction from a single master model | |
US6993469B1 (en) | Method and apparatus for unified simulation | |
US20180285484A1 (en) | Concurrent Testbench and Software Driven Verification | |
US20110035204A1 (en) | Layered Modeling for High-Level Synthesis of Electronic Designs | |
US7228513B2 (en) | Circuit operation verification device and method | |
Gong et al. | Modeling dynamically reconfigurable systems for simulation-based functional verification | |
Chevalier et al. | A SystemC refinement methodology for embedded software | |
Sayinta et al. | A mixed abstraction level co-simulation case study using systemc for system on chip verification | |
JP2004310568A (ja) | シミュレータ装置、シミュレーション方法および性能解析方法 | |
Panigrahi et al. | Interface based hardware/software validation of a system-on-chip | |
Boukhechem et al. | TLM platform based on systemC for STARSoC design space exploration | |
Samahi et al. | Automated integration and communication synthesis of reconfigurable MPSoC platform | |
Abbes et al. | IP integration methodology for SoC design | |
JP2004013227A (ja) | シミュレーション装置並びにシミュレーションモデル生成プログラム | |
Cesário et al. | Component-based design for multiprocessor systems-on-chips | |
Huang et al. | Multi-project system-on-chip (MP-SoC): A novel test vehicle for SoC silicon prototyping | |
Gong et al. | RTL simulation of high performance dynamic reconfiguration: A video processing case study | |
Abdi et al. | Hardware-dependent software synthesis for many-core embedded systems | |
Tovar et al. | Virtual Cycle-accurate Hardware and Software Co-simulation Platform for Cellular IoT | |
JP2005182359A (ja) | データ処理装置の設計方法及び記録媒体 | |
Tovar Rascon et al. | Virtual Cycle-accurate Hardware and Software Co-simulation Platform for Cellular IoT | |
Ahmad et al. | High level modeling and automated generation of heterogeneous SoC architectures with optimized custom reconfigurable cores and on-chip communication media | |
JP2008020960A (ja) | MP‐SoCプラットフォームおよびその設計方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070417 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070618 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070717 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20071113 |