(57)【要約】【課題】同期回路のシミュレーション高速化には、サイクルベース方式が有効であるが、大規模なシステムＬＳＩのシミュレーションでは、システムＬＳＩの１チップシミュレーションでは、すべての機能モジュールが均等に動作することは少なく、特定の機能モジュールのみが活発に動作し、他のモジュールはほとんど動作しない場合が多い。【解決手段】ＬＳＩを構成する機能モジュールを複数クロック信号サイクルでシミュレーションするサイクルシミュレーション手段と機能モジュールへの入力を仮定して、実行される前に仮シミュレーションする手段を備え、仮実行された結果を後ほど用いることで、実シミュレーションを高速に行うことで、容易にシミュレーション速度を向上させる。【選択図】　図１
2004070559.tif 000002
【特許請求の範囲】
【請求項１】
ＬＳＩ装置動作をシミュレートするシステムシミュレーション装置であって、ＬＳＩを構成する機能モジュールをクロック信号サイクルでシミュレーションするサイクルシミュレーション手段と、ＬＳＩを構成する機能モジュールが駆動される条件を満たす場合に該当機能モジュールの機能をシミュレーションするシミュレーション手段を備えたシミュレーション装置。
【請求項２】
シミュレーション中に機能モジュールを駆動する条件として、特定の２以上のクロックサイクル数を用いることを特徴とする請求項１記載のシミュレーション装置。
【請求項３】
シミュレーション中に機能モジュールを駆動する条件として、特定のクロックサイクル数を機能モジュールごとに異なるクロックサイクル数を用い、かつ、シミュレーション実行時には、機能モジュールごとに異なるクロックサイクル数を求め、求めたサイクル数ごとにシミュレーション単位となる機能モジュール群を再分割することを特徴とする請求項２記載のシミュレーション装置。
【請求項４】
シミュレーション中に機能モジュールを駆動する条件として、駆動されるモジュールに接続されるモジュール群において、特定の条件を満たすことを用いることを特徴とする請求項１記載のシミュレーション装置。
【請求項５】
駆動される条件を満たさなくとも、入力値を仮定して、仮定した入力に対しシミュレーションを実行し、機能モジュールが駆動される条件を満たしてシミュレーションされる時、入力が仮定したものであれば先に実行した結果を用いることを特徴とする請求項１記載のシミュレーション装置。
【請求項６】
駆動される条件を満たさなくとも、入力値を仮定して、仮定した入力に対しシミュレーションを実行し、機能モジュールが駆動される条件を満たしてシミュレーションされる時、入力が仮定したものであり、かつ、内部状態を保持しない機能のモジュールであれば、入力と出力の組として保持し、次回以降のシミュレーション結果として用いることを特徴とする請求項５記載のシミュレーション装置。
【請求項７】
シミュレーション開始時に、内部状態を保持しない機能モジュールの全入力に対する出力を計算し、計算した値をシミュレーション中に参照することを特徴とする請求項５記載のシミュレーション装置。
【請求項８】
シミュレーション途中に、シミュレーションと並行して、内部状態を保持しない機能モジュールの全入力に対する出力を計算し、計算した値をシミュレーション中に参照することを特徴とする請求項６記載のシミュレーション装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、大規模集積回路（ＬＳＩ）設計、特にシステムオンチップ化に対応するための設計に関するものであり、設計上流におけるシステム／アーキテクチャの性能評価を行うシミュレーション装置に関するものである。
【０００２】
【従来の技術】
従来から、電子機器は、例えばプロセッサ、メモリ、バス等の種類ごとのＬＳＩを、個別に半導体チップ上に形成した後、各チップをプリント配線基板などの母基板上に実装することによって、製造されてきた。
【０００３】
ところが近年、これに用いられる集積回路装置に対し、１チップ化、小型化、軽量化、省電力化および低コスト化の要求が高まっている。このような傾向は、特にデジタル情報家電分野において、より顕著にみられる。そして、これに応じて、半導体メーカーはその研究開発の重心をメモリからシステムＬＳＩへと移行してきている。
【０００４】
かかるシステムＬＳＩは、具体的には、メモリや各種の論理回路を単一のチップ上に設けるいわゆるシステムオンチップ化によって実現されている。このようなシステムＬＳＩの開発では、処理方式設計から、機能、論理、レイアウトまでを、段階的に検証しながらトップダウンに設計し、短期間に製品化を図ることが必要となっている。設計規模の増大に伴い、設計技術、設計自動化技術に対して、設計生産性の向上、特にＬＳＩ、１チップシステムの機能検証を効率良く行う技術が求められている。機能検証は、主にハードウェア記述言語を用いた回路記述とテストベクタを用いて、コンピュータ上でのシミュレーションによって行う。ＬＳＩのシミュレーション時間は、回路規模の増加に対して指数的に増えるため、その高速化が不可欠である。特に１チップの機能検証を行うシミュレーションでは、数千万ゲート規模を扱うため、数週間から月単位の処理時間を要することが予測され、各種高速化が重要な課題となってきている。
【０００５】
従来のシミュレーション方式には、イベントと呼ばれる回路中の信号値変化を回路の入力からその伝播先へ順次トレースして回路状態の変化を計算するイベント駆動方式シミュレーションと、クロック信号を基準として、クロック信号の信号値遷移と同期して回路の全状態変化を計算するサイクルベース方式がある。シミュレーション処理速度の観点からみると、クロック信号を設ける同期回路設計が主流となっているため、サイクルベース方式シミュレーションが一般に高速となる。イベント駆動方式では、イベントをトレースするため付加処理を行うが、回路の一部にのみ信号値変化がおきる回路動作をシミュレートする際は、イベントによって選択した回路の一部の動作のみを計算することとなり、効率的である。また、イベント駆動方式では非同期動作のシミュレーションが可能である。しかし、クロック信号に同期して回路全体に一斉に信号値の変化が起きる同期回路のシミュレーションでは、イベントの処理がオーバヘッドとなるため、サイクルベース方式が高速である。
【０００６】
【発明が解決しようとする課題】
しかしながら、上記に述べたシステムＬＳＩのシミュレーションにおいて次のような問題がある。
【０００７】
同期回路のシミュレーション高速化には、サイクルベース方式が有効であるが、大規模なシステムＬＳＩのシミュレーションでは、システムＬＳＩの１チップシミュレーションでは、すべての機能モジュールが均等に動作することは少なく、特定の機能モジュールのみが活発に動作し、他のモジュールはほとんど動作しない場合が多い。
【０００８】
シミュレーションの高速化を考える場合、活発に動作し、イベントが多く発生する機能モジュールのシミュレーションにはサイクルベース方式を用い、イベントの発生しない機能モジュールにはイベント駆動方式を用いるのが有効である。システムＬＳＩを構成する機能モジュール毎にシミュレーション方式を指定して１チップのシミュレーションを行う装置、方法がある。この主な理由は、システムＬＳＩを構成する機能モジュールが、複数の異なるクロック信号で動作したり、非同期に動作するメモリや入出力回路部を含むためである。
【０００９】
しかしながら、機能モジュール単位に適切なシミュレーション方式を設定する手段がなかった。シミュレーションのセットアップを行う際、設計者は回路方式や回路構成の特徴から判断して、サイクルベース方式、イベント方式を選択することも可能であるが、それぞれの機能モジュールごとに、シミュレーション方式選択の判断が難しく、それぞれの機能モジュールごとに候補となるシミュレーション方式を割り当てて選択を行う場合、非常に時間がかかるという問題がある。このため、適切なシミュレーション方式の組み合わせにより高速なシミュレーションを実行できないという問題があった。
【００１０】
本発明は上記問題点に鑑み、機能モジュール単位で適切な駆動条件を考慮した、高速なＬＳＩシミュレーションを可能とするサイクルベースシミュレーション装置、方法を提供することを目的とする。
【００１１】
【課題を解決するための手段】
以上の目的を達成するための本発明のシミュレーション装置、及びシミュレーション方法は、ＬＳＩを構成する機能モジュールをクロック信号サイクルでシミュレーションするサイクルシミュレーション手段と、ＬＳＩを構成する機能モジュールが駆動される条件を満たす場合に、該当機能モジュールの機能をシミュレーションするものと、駆動される条件を満たさない場合でも、入力値を仮定して先にシミュレーションを行うシミュレーション手段を備えたものである。
【００１２】
【発明の実施の形態】
以下、本発明の一実施形態について、図面を参照しながら説明する。
【００１３】
図１は本発明の実施形態のシミュレーション装置構成を示す図である。シミュレーション手段３は、ハードウェア記述言語で記述された機能モジュールを検証するものであり、サイクルベースで動作する機能モジュール１、機能モジュール２をはじめとする、複数の機能モジュールと、それらのモジュール間のタイミング調整を行う統合シミュレーション制御手段４から構成される。機能モジュール１、２は、統合シミュレーション制御手段４からのクロックに相当する制御によってシミュレーションを実行する。機能モジュールのシミュレーションを実行する際、機能モジュールに必要な入力データは、統合制御シミュレーション手段４から送信され、機能モジュールの出力結果を、統合制御シミュレーション手段４へ送信する。統合シミュレーション制御手段４にて、すべての機能モジュールに対して、クロックサイクルごとに実行するような制御を行うのが、サイクルベースシミュレータである。すべての機能モジュールが、すべてのクロックサイクルごとに駆動される必要があることは稀で、特定の機能モジュールのみが活発に動作し、他のモジュールはほとんど動作しない場合が多い。シミュレーションの高速化を考え、活発に動作し、イベントが多く発生する機能モジュールのシミュレーションは、毎クロックサイクル実行し、それ以外のモジュールは、必ずしも毎クロックサイクル実行する必要がない。そこで、必要な場合にのみ機能モジュールを動作させるのが、統合シミュレーション制御手段４である。
【００１４】
次に、機能モジュールを動作させるための必要な場合として、２以上のクロックサイクルを用いた場合の例を、図２を用いて説明する。
【００１５】
図２は、本発明でのクロックサイクルを用いた際の、シミュレーション装置のシミュレーションの流れを示す図である。機能モジュール１と機能モジュール２を統合してシミュレーションするために、統合シミュレーション制御手段４を備えるシミュレーション装置である。機能モジュール１は、活発に動作するモジュールで、毎クロックサイクルＴ、Ｔ＋１、Ｔ＋２、Ｔ＋３、Ｔ＋４、Ｔ＋５ごとに、統合シミュレーション制御手段より、実行される。それに対して機能モジュール２は、Ｔ＋２、Ｔ＋５と、３クロックサイクルごとに実行される。機能モジュール２は、毎クロックサイクルごとに実行される場合に比べ、シミュレーション時間が短くなる。この例は、機能モジュールに割り当てられた条件が、時間に対して正しく動作する例である。
【００１６】
次に、機能モジュールに割り当てられた条件が、実際と矛盾する例を、図３を用いて説明する。
【００１７】
図３は、クロックサイクルを用いた際の、矛盾が生じるシミュレーション装置のシミュレーションの流れを示す図である。機能モジュール１と機能モジュール２を統合してシミュレーションするために、統合シミュレーション制御手段４を備えるシミュレーション装置である。機能モジュール１は、活発に動作するモジュールで、毎クロックサイクルＴ、Ｔ＋１、Ｔ＋２、Ｔ＋３、Ｔ＋４、Ｔ＋５ごとに、統合シミュレーション制御手段より、実行される。それに対して機能モジュール２は、Ｔ＋４と、５クロックサイクルごとに実行されるものとする。図２の例と異なり、機能モジュール１は、時間Ｔ＋３で機能モジュール２からのデータを必要とするが、機能モジュール２が実行されるのは時間Ｔ＋４であり、実際のデータ、時間との間で矛盾が生じる。そこで、このような矛盾が生じた場合は、統合シミュレーション制御手段が検出し、図４で示すような新たなモジュール分割を行い、矛盾が起こらないようにする。
【００１８】
先ほどの図３においては、機能モジュール１がデータを必要とする１クロックサイクル前に、機能モジュール２を実行すればよい。しかし機能モジュール２全体を実行したのでは、毎クロックサイクルごとにモジュール２を実行した場合に比べ、大幅なシミュレーション時間短縮が見込まれない。そこで、機能モジュール１が必要とするデータに対して、関連するモジュールを、機能モジュール２から抜き出し、高速動作機能モジュール２１として分割し、残りのモジュールを低速動作モジュール２２とし、高速動作機能モジュール２１は、先ほど求めたクロックサイクル数でシミュレーションを実行し、低速動作モジュールは、最初に決定したクロックサイクル以上で動作させる。
【００１９】
以上の手段を用いて、矛盾なく複数クロックサイクル数毎にモジュールを実行することで、シミュレーション時間を短縮することができる。
【００２０】
今までは、統合シミュレーション制御手段４でクロックサイクル数の概念を用いてきた。次はクロックサイクル数以外の概念を用いた場合を説明する。
【００２１】
図５は機能モジュールの入力値を予測してシミュレーションを実行するシミュレーション装置の図である。統合シミュレーション制御手段４で用いるのは、機能モジュールへの入力を予測する、入力予測装置と入力の制御装置である。図５の例では、機能モジュール５に対する例を示す。機能モジュール５へは４つの入力５１、入力５２、入力５３、入力５４が存在する。この入力を、入力予測装置５６が予測し、制御装置５５にて、入力を選択し、機能モジュール５への入力とする。以降、この図における入力予測装置と制御装置を用いたシミュレーション制御手段について述べていく。
【００２２】
図６は、機能モジュールの入力値を予測してシミュレーションを実行するシミュレーション手段の制御の流れを示した図である。６１は仮シミュレーション工程を示している。仮シミュレーション工程６１の結果を用いて、実シミュレーション６２を実行する。仮シミュレーション工程６１での演算は、本シミュレーションとは異なる空間／時間で行われるため、総シミュレーション時間には影響を与えないものとする。仮定した入力が、実シミュレーション時の入力であれば、実シミュレーションの時間を短縮できる。仮シミュレーション工程６１では、機能モジュールへの入力を仮定する工程６１１と、仮定された入力で機能モジュールのシミュレーションを実行する工程６１２を実行する。実シミュレーション工程６２では、対象機能モジュールが実行されるのを待つ工程６２１から始まる。実行されると、モジュールへの入力値が、仮シミュレーション工程６１１で仮定した入力と同じかを比較する工程６２２を実行する。同じであれば、工程６２３にて、工程６１２で実行した仮シミュレーション結果を、実シミュレーションの結果として、対象モジュールのシミュレーションを終了する。もし工程６２２での比較が異なるのであれば、入力された値に対して実シミュレーションを行い、結果を得る工程６２４を実行し、シミュレーションを終了する。
【００２３】
さらに、仮シミュレーションと実シミュレーションで得た結果を、後ほどのシミュレーションで利用する場合について、図７を用いて説明する。
【００２４】
図７は機能モジュールの入力値を予測してシミュレーションを実行し、実行結果を後のシミュレーションで利用するシミュレーション手段の制御の流れを示した図である。
【００２５】
この場合では、仮シミュレーションおよび実シミュレーションで得られた結果を記憶するための記憶装置７１を用いる。また、対象モジュールは、内部状態を保持しない、すなわち出力は入力値のみによって決定できるものと仮定する。先ほどの図６同様、仮シミュレーション工程６１と、実シミュレーション工程６２からなる。図７にあるように、仮シミュレーション工程６１は、記憶装置に未登録の機能モジュールへの入力を仮定する工程７１１、工程７１１で仮定された入力で機能モジュールのシミュレーションを実行する工程７１２、仮定された入力と機能モジュールの出力を組にして記憶装置に登録する工程７１３からなる。実シミュレーション工程６２では、機能モジュールが実行されるまで待つ工程７２１から始まる。機能モジュールが実行されると、工程７２２にて、入力された値が記憶装置７１に登録されているかをチェックする。登録されていれば工程７２３にて記憶装置７１に登録されているデータを機能モジュールの出力とする。もし工程７２２のチェックにて、登録されていなければ、工程７２４にて、入力された値に対してシミュレーションを実行し、その結果を工程７２５にて記憶装置７１に登録する。
【００２６】
次に、記憶装置７１にデータを登録する手段について、図８を用いて説明する。
【００２７】
機能モジュールのすべての入力値に対してシミュレーションを実行し、実行結果を後のシミュレーションで利用するシミュレーション手段の制御の流れを示した図である。
【００２８】
シミュレーション開始時にすべての入力値に対してモジュールのシミュレーションを実行し、データを登録する工程８１と、記憶装置７１に登録されたデータを用いてシミュレーションを行う工程８２からなる。工程８１では、すべての入力に対して、図７の工程６１を実行することで、すべての入力に対してモジュールの出力を得て、記憶装置７１に登録する。すべての入力に対するシミュレーション結果が登録されているため、実シミュレーションは時間が短縮され、シミュレーション時間が削減できる。
【００２９】
図８の例では、すべての入力に対してのシミュレーション結果を得ないと実シミュレーションを実行できず、とりうる入力値が多くなればなるほどシミュレーションする空間が広がり、シミュレーション実行時間の短縮が見込まれない。そこで、仮シミュレーションを実行しながら並行して実シミュレーションを行うシミュレーション手段に関して図９を用いて説明する。
【００３０】
仮シミュレーションと実シミュレーションを並行して行うシミュレーション手段の制御の流れを示した図である。
【００３１】
図９においては、仮シミュレーション工程９１と、実シミュレーション工程９２からなり、それぞれ独立に動作する。仮シミュレーション工程９１の工程７１３と、実シミュレーション工程９２の工程７２５にて、記憶装置７１にシミュレーション結果を記憶させる。仮シミュレーション工程では、すべての入力に対して仮シミュレーションを実行していく。仮シミュレーション工程９１実行中に、並行して実シミュレーション工程９２を実行できるので、シミュレーション時間短縮が見込まれる。以上、図７、図８、図９では、モジュールが内部状態を持たないものとして説明してきたが、内部状態数を入力値として与えれば、本発明の手段が適応可能である。
【００３２】
これによって、大規模なシステムＬＳＩのシミュレーションにおいても、設計者は回路動作を調べる必要なく、適切な機能モジュールの駆動により、より短い時間でシミュレーションを実行できる。
【００３３】
【発明の効果】
以上、本発明により、大規模なシステムＬＳＩのシミュレーションにおいても、設計者は回路動作を調べる必要なく、統合シミュレーション制御手段によって、適切な機能モジュールの駆動により、より短い時間でシミュレーションを実行できる。これによって、大規模なシステムＬＳＩのシミュレーションにおいても、設計者は回路動作やテストベクタの特徴を詳細に調べる必要なく、適切な駆動タイミングでのシミュレーションのみを行うことで、より短い時間でシミュレーションを実行できる。
【００３４】
また、ＬＳＩシミュレーション中にクロック信号の停止など、各機能モジュールの動作状況が変化する場合にも、これに追随して適切な駆動タイミングを制御することが可能でなり、大規模なＬＳＩの複雑な動作のシミュレーションも含めて効率良く処理を実行できる。
【図面の簡単な説明】
【図１】本発明の実施形態のシミュレーション装置構成を示す図
【図２】本発明でのクロックサイクルを用いた際の、シミュレーション装置のシミュレーションの流れを示す図
【図３】クロックサイクルを用いた際の、矛盾が生じるシミュレーション装置のシミュレーションの流れを示す図
【図４】クロックサイクルを用いた際の、矛盾が生じた際の、モジュール再分割した後の、シミュレーションの流れを示す図
【図５】機能モジュールの入力値を予測してシミュレーションを実行するシミュレーション装置の図
【図６】機能モジュールの入力値を予測してシミュレーションを実行するシミュレーション手段の制御の流れを示した図
【図７】機能モジュールの入力値を予測してシミュレーションを実行し、実行結果を後のシミュレーションで利用するシミュレーション手段の制御の流れを示した図
【図８】機能モジュールのすべての入力値に対してシミュレーションを実行し、実行結果を後のシミュレーションで利用するシミュレーション手段の制御の流れを示した図
【図９】仮シミュレーションと実シミュレーションを並行して行うシミュレーション手段の制御の流れを示した図
【符号の説明】
３　シミュレーション手段
４　統合シミュレーション制御手段
【図１】
2004070559.tif 000003
【図２】
2004070559.tif 000004
【図３】
2004070559.tif 000005
【図４】
2004070559.tif 000006
【図５】
2004070559.tif 000007
【図６】
2004070559.tif 000008
【図７】
2004070559.tif 000009
【図８】
2004070559.tif 000010
【図９】
2004070559.tif 000011