(57)【特許請求の範囲】
【請求項１】
複数の被検証分割回路に分割され、当該複数の被検証分割回路間でバスを介して相互通信を行うような被検証回路の動作検証を実行する回路動作検証方法であって、
前記被検証回路が周波数の異なる複数のクロックを使用する場合、回路動作検証装置内のシミュレーション手段が、前記被検証回路内の、クロックで同期する同期素子がどの周波数のクロックで同期するのかの情報をメモリに記憶する記憶ステップと、
前記シミュレーション手段が、前記メモリに記憶された情報に基づいて、前記被検証分割回路間をまたぐパスの通信先の全ての同期素子が、当該パスの通信元の全ての同期素子に比べて周波数の小さいクロックで同期するように、前記被検証回路を複数の被検証分割回路に分割する分割ステップと、
前記回路動作検証装置内のバスコントローラが、前記複数の被検証分割回路間でバスを介して相互通信を行わせて前記被検証回路の動作検証を実行する検証ステップとを有する回路動作検証方法。
【請求項２】
複数の被検証分割回路に分割され、当該複数の被検証分割回路間でバスを介して相互通信を行うような被検証回路の動作検証を実行する回路動作検証方法であって、
回路動作検証装置内のシミュレーション手段が、前記被検証回路内の、クロックで同期する同期素子がクロックの立ち上がりまたは立ち下がりのどちらで同期するのかの情報をメモリに記憶する記憶ステップと、
前記シミュレーション手段が、前記メモリに記憶された情報に基づいて、前記被検証分割回路間をまたぐパスの通信元の全ての同期素子がクロックの立ち上がりもしくは立ち下がりでのみ同期するか、または、当該パスの通信先の全ての同期素子がクロックの立ち上がりもしくは立ち下がりでのみ同期するように、前記被検証回路を複数の被検証分割回路に分割する分割ステップと、
前記回路動作検証装置内のバスコントローラが、前記複数の被検証分割回路間でバスを介して相互通信を行わせて前記被検証回路の動作検証を実行する検証ステップとを有する回路動作検証方法。
【請求項３】
複数の被検証分割回路に分割され、当該複数の被検証分割回路間でバスを介して相互通信を行うような被検証回路の動作検証を実行する回路動作検証方法であって、
回路動作検証装置内のシミュレーション手段が、前記被検証回路内の、クロックで同期する同期素子がクロックの立ち上がりまたは立ち下がりのどちらで同期するのかの情報をメモリに記憶する記憶ステップと、
前記シミュレーション手段が、前記メモリに記憶された情報に基づいて、前記被検証分割回路間をまたぐパスの通信元の全ての同期素子がクロックの立ち下がりでのみ同期するか、または、当該パスの通信先の全ての同期素子がクロックの立ち上がりでのみ同期するように、前記被検証回路を複数の被検証分割回路に分割する分割ステップと、
前記回路動作検証装置内のバスコントローラが、前記複数の被検証分割回路間でバスを介して相互通信を行わせて前記被検証回路の動作検証を実行する検証ステップとを有する回路動作検証方法。
【請求項４】
前記検証ステップでは、クロックの立ち上がり後に、前記被検証分割回路でクロックを自動的に立ち下げる、請求項３に記載の回路動作検証方法。
【請求項５】
前記記憶ステップでは、前記被検証分割回路間をまたぐパスの通信元および通信先の同期素子の情報のみを前記メモリに記憶する、請求項１から４のいずれか１項に記載の回路動作検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の被検証分割回路に分割され、複数の被検証分割回路間で相互通信を行うことで動作するような被検証回路の動作検証を実行する回路動作検証方法に関し、特に、大規模な被検証回路の動作検証を実行する回路動作検証方法に関する。
【背景技術】
【０００２】
ディジタルＬＳＩ（Large Scale Integration）に実装できる回路規模が年々大きくなっていることに伴って、ディジタルＬＳＩの動作検証の高速化を図ることが重要な課題となっている。
【０００３】
近年、ディジタルＬＳＩのような大規模回路を被検証回路とし、その動作検証の高速化を図るための回路動作検証方法として、回路を実装できるＦＰＧＡ（Field Programmable Gate Array），ＣＰＬＤ（Complex Programmable Logic Device）などの検証用デバイスを用いる構成が研究されている。
【０００４】
例えば、特許文献１には、被検証回路を分割して得られた複数の被検証分割回路をそれぞれ実装した複数の検証用デバイスと、被検証分割回路のそれぞれの機能的動作をシミュレーションにより実現するための複数のシミュレーション手段と、複数のシミュレーション手段を接続して複数のシミュレーション手段間の相互通信を可能にするバスと、バスを制御するバス制御手段と、バス制御手段を制御して複数のシミュレーション手段間で相互通信を行わせることにより被検証回路の機能的動作の検証を実行する上位制御手段とを有する回路動作検証装置を使用した回路動作検証方法が提案されている。
【０００５】
この回路動作検証方法によれば、被検証回路を分割して得られた複数の被検証分割回路のそれぞれを複数の検証用デバイスに実装しているため、大規模な被検証回路の動作検証を実行することが可能である。また、この回路動作検証方法によれば、その検証の際には、バスを介して被検証分割回路間で相互通信を行わせ、上位制御手段からクロック信号等の制御信号を入力することによって動作検証を実行する。
【０００６】
特許文献１には、被検証回路の動作検証の高速化を図るために、次のような回路分割方法が提案されている。
・被検証分割回路間で貫通パス（被検証分割回路の入力信号と出力信号との間に、クロックで同期するメモリ等の同期素子が１つもないパス）の本数が最も少なくなるように被検証回路を分割する回路分割方法。貫通パスが少ないと通信回数は少なくなる。
・被検証分割回路間をまたぐパスの信号変化率を基に通信発生回数が最も少なくなるように被検証回路を分割する回路分割方法。
【０００７】
上記の２つの回路分割方法はいずれも、検証用デバイス間で必要な通信回数が減るように被検証回路を分割することによって、被検証回路の動作検証を高速化する方法である。
【特許文献１】特開２００５−８４９５７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところで、被検証分割回路間をまたぐパスを介した通信が必要となるタイミングは、以下の２つの条件を満たしている時である。
【０００９】
条件１）被検証分割回路間をまたぐパスの信号値が変化した後
条件２）被検証分割回路間をまたぐパスの通信先の同期素子がパスの信号値をラッチする前
例えば、パスの信号値が変化していないのなら、通信を行う必要はない。また、パスの信号値が変化したとても通信先の同期素子がその信号値をラッチしないのなら、通信を行う必要はない。
【００１０】
条件１は、通信元の同期素子による条件であり、条件２は、通信先の同期素子による条件である。
【００１１】
特許文献１で提案されている回路分割方法のうち、被検証分割回路間をまたぐパスの信号変化率を基に通信発生回数が最も少なくなるような回路分割方法は、条件１の方に注目した手法である。
【００１２】
しかし、特許文献１では、条件２については注目していないため、十分に通信回数を減らせるような回路分割ができてはいない。また、クロック入力とデバイス間通信のスケジュールを決定する時にも、不必要な通信を行っている。
【００１３】
本発明の目的は、被検証回路の動作検証時に被検証分割回路の通信回数をさらに減らし、動作検証の高速化を図ることができる回路動作検証方法を提供することにある。
【課題を解決するための手段】
【００１４】
上記目的を達成するために本発明は、
複数の被検証分割回路に分割され、当該複数の被検証分割回路間でバスを介して相互通信を行うような被検証回路の動作検証を実行する回路動作検証方法であって、
前記被検証回路内の、クロックで同期する同期素子の同期方法を調査する調査ステップと、
前記調査ステップによる調査結果に基づいて、前記被検証分割回路間をまたぐパスの通信先の同期素子が当該パスの信号値をラッチする回数が最小となるように、前記被検証回路を複数の被検証分割回路に分割する分割ステップと、
前記複数の被検証分割回路間でバスを介して相互通信を行わせて前記被検証回路の動作検証を実行する検証ステップとを有する。
【００１５】
この構成によれば、特許文献１では注目されていないパスの通信先の同期素子に注目し、通信先の同期素子がパスの信号値をラッチする回数が最小となるように回路分割を行うため、特許文献１に開示された発明よりも、被検証回路の動作検証時の被検証分割回路の通信回数を効果的に減らし、動作検証の高速化を図ることができる。
【００１６】
具体的には、本発明の第１の実施態様は、前記調査ステップでは、前記同期素子の同期方法として、前記被検証回路が周波数の異なる複数のクロックを使用する場合に前記同期素子がどの周波数のクロックで同期するかを調査し、
前記分割ステップでは、前記調査ステップによる調査結果に基づいて、前記被検証分割回路間をまたぐパスの通信先の全ての同期素子が、当該パスの通信元の全ての同期素子に比べて周波数の小さいクロックで同期するように、前記被検証回路を複数の被検証分割回路に分割する。
【００１７】
この構成によれば、被検証分割回路間をまたぐパスの通信先の同期素子が、周波数の小さいクロックで同期しているため、通信先の同期素子が同期する周波数の小さいクロックのタイミングのみ通信を行えばよいので、動作検証時の被検証分割回路の通信回数を減らすことができる。
【００１８】
また、本発明の第２の実施態様は、前記調査ステップでは、前記同期素子の同期方法として、前記同期素子がクロックの立ち上がりまたは立ち下がりのどちらで同期するのかを調査し、
前記分割ステップでは、前記調査ステップによる調査結果に基づいて、前記被検証分割回路間をまたぐパスの通信元の全ての同期素子がクロックの立ち上がりもしくは立ち下がりでのみ同期するか、または、当該パスの通信先の全ての同期素子がクロックの立ち上がりもしくは立ち下がりでのみ同期するように、前記被検証回路を複数の被検証分割回路に分割する。
【００１９】
この構成によれば、クロックの立ち上がり後と立ち下り後の両方で通信を行うことを回避することができるため、動作検証時の被検証分割回路の通信回数を減らすことができる。
【００２０】
また、本発明の第３の実施態様は、前記調査ステップでは、前記同期素子の同期方法として、前記同期素子がクロックの立ち上がりまたは立ち下がりのどちらで同期するのかを調査し、
前記分割ステップでは、前記調査ステップによる調査結果に基づいて、前記被検証分割回路間をまたぐパスの通信元の全ての同期素子がクロックの立ち下がりでのみ同期するか、または、当該パスの通信先の全ての同期素子がクロックの立ち上がりでのみ同期するように、前記被検証回路を複数の被検証分割回路に分割する。
【００２１】
また、前記検証ステップでは、クロックの立ち上がり後に、前記被検証分割回路でクロックを自動的に立ち下げる。
【００２２】
この構成によれば、クロックの立ち上がり後と立ち下り後の両方で通信を行うことを回避することができるため、動作検証時の被検証分割回路の通信回数を減らすことができる。さらに、クロックの立ち上がり後に、被検証分割回路間をまたぐパスの通信を行っていないため、被検証分割回路でクロックを自動的に立ち下げることができる。よって、上位コンピュータから被検証分割回路に対するクロックの入力回数を減らすことができるため、動作検証時の被検証分割回路の通信回数をさらに減らすことができる。
【発明の効果】
【００２３】
上記のように構成された本発明によれば、特許文献１では注目されていないパスの通信先の同期素子に注目し、通信先の同期素子がパスの信号値をラッチする回数が最小となるように回路分割を行うため、特許文献１に開示された発明よりも、被検証回路の動作検証時の被検証分割回路の通信回数をさらに減らし、動作検証の高速化を図ることができるという効果が得られる。
【発明を実施するための最良の形態】
【００２４】
以下に、本発明を実施するための最良の形態について図面を参照して説明する。このうち、第１から第３実施形態は、基本的なシステム構成は特許文献１の構成と等しいが、後述する回路分割工程、被検証分割回路間のパスの通信とクロック入力の順序を決定するスケジューリング工程、アドレス配置工程において特許文献１とは相違点がある。
（第１実施形態）
１．１）システム構成
図１は、本発明の第１実施形態による回路動作検証方法に使用する回路動作検証装置の概略構成を示すブロック図である。
【００２５】
図１を参照すると、本実施形態においては、複数の回路素子あるいは複数の回路モジュールからなる被検証回路を、複数の被検証分割回路１０３．１，１０３．２に分割し、分割した複数の被検証分割回路１０３．１，１０３．２を複数の検証用デバイス（以下、デバイスと称す）１，２にそれぞれ実装している。
【００２６】
デバイス１，２は、バス１０に接続され、バス１０はさらにバスコントローラ１１に接続されている。バスコントローラ１１は常にバスマスタとして動作し、デバイス１，２は常にバスのスレーブデバイスとして動作する。
【００２７】
上位コンピュータシステム１２は、バスコントローラ１１、ユーザインタフェース１３および表示装置１４に接続されている。ユーザは、ユーザインタフェース１３を用いてバスコントローラ１１の動作を制御することができる。また、バスコントローラ１１を通して得た情報は表示装置１４によりユーザに提示される。バスコントローラ１１は、上位コンピュータシステム１２からの命令によって動作が規定され、各デバイス１，２に対して信号の入力および出力を行う。
【００２８】
また、バスコントローラ１１は、被検証回路内部の指定された信号の値を順次保存するためのメモリ１５に接続されている。被検証回路内部のどの信号を指定するかは、ユーザがユーザインタフェース１３を通してバスコントローラ１１に予め指示しておく。例えば、ブレーク条件を設定した信号を指定しておく。
【００２９】
各デバイス１，２は、バス１０に接続して信号の入出力を可能にするバスインタフェース１０１、被検証回路を分割して得られた被検証分割回路１０３、および、被検証分割回路１０３をバスインタフェース１０１と接続して他デバイスの被検証分割回路１０３との相互通信を可能にする通信回路１０２を有する。
【００３０】
以下、デバイス１，２の構成をさらに詳細に説明する。
【００３１】
図２は、図１に示したデバイス１，２の詳細な構成を示すブロック図である。
【００３２】
各デバイス１，２の基本構成はいずれも、上述したように、バスインタフェース１０１、通信回路１０２、および被検証分割回路１０３を有する構成となっている。
【００３３】
通信回路１０２は、バスインタフェース１０１からの書き込みデータＷＤＡＴＡなどを入力信号ｉｎｐｕｔとして被検証分割回路１０３へ与え、また、被検証分割回路１０３からの出力信号ｏｕｔｐｕｔをバスインタフェース１０１からのアドレス信号ＡＤに従って選択し、バスインタフェース１０１に転送する。
【００３４】
より詳しくは、通信回路１０２は、クロック制御回路２０１、レジスタ２０２、アドレスデコーダ２０３、およびセレクタ２０４を有する。
【００３５】
クロック制御回路２０１は、書き込みデータＷＤＡＴＡを書き込み、書き込みイネーブル信号ＷＥおよびセレクタ信号ＳＥＬを入力してクロック信号を生成し、被検証分割回路１０３およびセレクタ２０４へ供給する。図２の例では、２つのクロック信号ＣＬＫ，２ｆ＿ＣＬＫを生成している。なお、図２では、セレクタ２０４へ供給されるクロック信号の図示は、簡略化のために省略されている。
【００３６】
レジスタ２０２は、書き込みデータＷＤＡＴＡ、書き込みイネーブル信号ＷＥおよびセレクタ信号ＳＥＬを入力し、入力信号ｉｎｐｕｔ、入出力信号ＩＮ／ＯＵＴ、およびリセット信号ＲＳＴを生成して被検証分割回路１０３へ出力する。
【００３７】
アドレスデコーダ２０３は、バスインタフェース１０１から入力したアドレス信号ＡＤをデコードしてセレクタ信号ＳＥＬ，ＳＥＬＴｘを生成し、セレクタ信号ＳＥＬをクロック制御回路２０１およびレジスタ２０２に供給し、セレクタ信号ＳＥＬＴｘをセレクタ２０４に供給する。
【００３８】
セレクタ２０４は、セレクタ信号ＳＥＬＴｘに従って、被検証分割回路１０３の出力信号ｏｕｔｐｕｔおよび入出力信号ＩＮ／ＯＵＴのいずれかを送信データＴｘＤとして選択してバスインタフェース１０１へ出力する。
【００３９】
なお、被検証分割回路１０３の入力信号ｉｎｐｕｔおよび入出力信号ＩＮ／ＯＵＴの入力信号、出力信号ｏｕｔｐｕｔおよび入出力信号ＩＮ／ＯＵＴの出力信号には、それぞれ１つずつアドレスが割り振られている。１アドレスで特定されるデータの最大ビット数は、書き込みデータＷＤＡＴＡおよび送信データＴｘＤのビット幅に等しい。アドレス信号ＡＤによるアドレスは、バス１０のアドレス空間の一部でもよいし、また別空間のアドレスでもよい。このアドレスは、バス１０から被検証分割回路１０３のデータの位置が一意に決定できればよい。このアドレスがバス１０のアドレス空間の一部でない時はバスインタフェース１０１が必要なアドレス変換を行う。ただし、各データのアドレスの割り振りにおいて、１アドレスに接続先の異なるデバイスのデータを割り振ることはできない。
【００４０】
図３は、図２に示したクロック制御回路２０１の詳細な構成を示すブロック図である。
【００４１】
図３を参照すると、クロック制御回路２０１は、同期素子３０１，３０２およびＡＮＤ回路３０３，３０４を有する。なお、図３において、書き込みＷＤＡＴＡ［０］〜ＷＤＡＴＡ［１］およびセレクタ信号ＳＥＬ［０］〜ＳＥＬ［１］における［Ｘ］は、その信号のビット番号を表している。
【００４２】
同期素子３０１は、セレクタ信号ＳＥＬ［０］と書き込みイネーブル信号ＷＥとが共にアクティブになった時に、書き込みデータＷＤＡＴＡ［０］の値をラッチし、その値をクロック信号ＣＬＫとして被検証分割回路１０３に入力する。
【００４３】
同様に、同期素子３０２は、セレクタ信号ＳＥＬ［１］と書き込みイネーブル信号ＷＥとが共にアクティブになった時に、書き込みデータＷＤＡＴＡ［１］の値をラッチし、その値をクロック信号２ｆ＿ＣＬＫとして被検証分割回路１０３に入力する。
【００４４】
上位コンピュータシステム１２は、クロック信号ＣＬＫを立ち上げる時は、バスコントローラ１１からアドレス信号ＡＤとしてクロック信号ＣＬＫに割り当てたアドレス値を入力し、ＷＤＡＴＡ［０］に１を入力する。立ち下げる時には、アドレス信号ＡＤとしてクロック信号ＣＬＫに割り当てたアドレス値を入力し、ＷＤＡＴＡ［０］に０を入力する。また、図３では、ＷＤＡＴＡ［０］とＷＤＡＴＡ［１］を、それぞれＣＬＫ、２ｆ＿ＣＬＫの入力に割り当てているが、この割り当てはＷＤＡＴのビット幅内で自由に変更可能である。なお、同期素子３０１，３０２は、バスインタフェース１０１からのクロック信号で動作するが、簡略化のためにクロック信号の図示は省略されている。
【００４５】
図４は、図２に示したレジスタ２０２の詳細な構成を示すブロック図である。
【００４６】
図４を参照すると、レジスタ２０２は、被検証分割回路１０３の入力信号ｉｎｐｕｔおよび入出力信号ＩＮ／ＯＵＴの入力信号の和の合計と同じ個数の同期素子４０１〜４０７を有する。図４では、書き込みデータＷＤＡＴＡのビット幅が３、被検証分割回路１０３の入力信号ｉｎｐｕｔおよび入出力信号ＩＮ／ＯＵＴの入力信号の数の合計が７の場合を一例として示している。また、図４のＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ，Ｇは７個の入力信号ｉｎｐｕｔおよび入出力信号ＩＮ／ＯＵＴの入力信号をそれぞれに示す。
【００４７】
同期素子４０１は、セレクタ信号ＳＥＬ［０］と書き込みイネーブル信号ＷＥとが共にアクティブになった時に、書き込みデータＷＤＡＴＡ［０］の値をラッチする。他の同期素子４０２〜４０７も、同期素子４０１と略同様の動作を行う。
【００４８】
図４のようにレジスタ２０２を構成することで、バス１０から各同期素子４０１〜４０７を一意に特定することができ、被検証分割回路１０３の入力信号ｉｎｐｕｔおよび入出力信号ＩＮ／ＯＵＴの入力信号Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ，Ｇの全ての値をバス１０に接続されたデバイスすべてから変更可能である。
【００４９】
例えば、書き込みデータＷＤＡＴＡ［０］〜ＷＤＡＴＡ［２］＝（１，０，０）、アドレス信号ＡＤをデコードしたセレクタ信号ＳＥＬ［０］〜ＳＥＬ［２］＝（１，０，０）とすれば、書き込みイネーブル信号ＷＥがアクティブなり、図示されていないクロックが立ち上がった時点で、同期素子４０１〜４０３には、それぞれデータ“１”、“０”、“０”が保持される。
【００５０】
図５は、図２に示したセレクタ２０４の詳細な構成を示すブロック図である。図５では、送信データＴｘＤのビット幅が３、被検証分割回路１０３の出力信号ｏｕｔｐｕｔおよび入出力信号ＩＮ／ＯＵＴの出力信号の数の合計が８の場合を一例として示している。また、図５のＯＡ，ＯＢ，ＯＣ，ＯＤ，ＯＥ，ＯＦ，ＯＧ，ＯＨは、被検証分割回路１０３の出力信号ｏｕｔｐｕｔを表す。
【００５１】
セレクタ２０４は、３個のセレクタ回路５０１〜５０３を有する。なお、セレクタ回路５０１〜５０３は、クロック制御回路２０１からのクロック信号で動作するが、簡略化のためにクロック信号の図示は省略されている。
【００５２】
セレクタ回路５０１は、被検証分割回路１０３からの出力信号ＯＡ，ＯＤ，ＯＧを入力とし、セレクタ信号ＳＥＬＴｘによって出力信号ＯＡ，ＯＤ，ＯＧのいずれかを選択し送信データＴｘＤ［０］として出力する。
【００５３】
セレクタ回路５０２は、被検証分割回路１０３からの出力信号ＯＢ，ＯＥ，ＯＨを入力とし、セレクタ信号ＳＥＬＴｘによって出力信号ＯＢ，ＯＥ，ＯＨのいずれかを選択し送信データＴｘＤ［１］として出力する。
【００５４】
セレクタ回路５０３は、被検証分割回路１０３からの出力信号ＯＣ，ＯＦ，“０”を入力とし、セレクタ信号ＳＥＬＴｘによって出力信号ＯＣ，ＯＦ，“０”のいずれかを選択し送信データＴｘＤ［２］として出力する。
【００５５】
図６は、被検証回路を２つの被検証分割回路１０３．１，１０３．２に分割して、２つのデバイス１，２にそれぞれ実装するまでの概略的な流れを説明するフローチャートである。
【００５６】
図６を参照すると、被検証回路を２つのデバイス１，２に実装するため、最初に、被検証回路を２つの被検証分割回路１０３．１，１０３．２に分割する回路分割を行う。まず、分割候補解のそれぞれについて、回路分割面をまたぐパスの通信元・通信先の同期素子の調査を行う（ステップＳ１０１）。この調査結果に基づいて、被検証分割回路間をまたぐパスの通信先の同期素子が当該パスの信号値をラッチする回数が最小となるように、被検証回路を被検証分割回路１０３．１，１０３．２に分割する（ステップＳ１０２）。
【００５７】
続いて、被検証分割回路１０３．１，１０３．２間をまたぐ各パスについて、通信を行う順番やクロックを与えるタイミングを決定するスケジューリングを行う（ステップＳ１０３）。このスケジューリングに基づいてデバイス１，２に実装する被検証分割回路１０３．１，１０３．２の入力信号ｉｎｐｕｔ、入出力信号ＩＮ／ＯＵＴ、および出力信号ｏｕｔｐｕｔのバスアドレス空間におけるアドレス配置を決定する（ステップＳ１０４）。なお、ステップＳ１０１〜Ｓ１０４についての詳細は後述する。この決定されたアドレス配置から通信回路１０２を生成する（ステップＳ１０５）。
【００５８】
このとき、ステップＳ１０１，Ｓ１０２では、デバイス１，２ごとに被検証分割回路１０３を生成し、また、ステップＳ１０５では、デバイス１，２ごとに通信回路１０２を生成する。その後、各デバイス１，２に被検証分割回路１０３および通信回路１０２を実装する（ステップＳ１０６）。実装する手法は、デバイス１，２の構成によって異なる。例えば、デバイス１，２の１つがプログラマブル素子から構成される場合、あらかじめバスインタフェース１０１および通信回路１０２を用意するほかに、被検証分割回路１０３、通信回路１０２およびバスインタフェース１０１をインスタンスした最上位回路を合成ツールを用いて合成し、その結果を配置配線しプログラマブル素子をコンフィグレーションしてもよい。
【００５９】
なお、ステップＳ１０１〜Ｓ１０４の工程は、図１には図示していないシミュレーション手段により実行することができる。
【００６０】
１．２）回路分割
次に、図６に示したステップＳ１０１，Ｓ１０２における被検証回路の回路分割工程についてさらに詳細に説明する。
【００６１】
被検証回路の回路分割に際しては、上述したように、被検証分割回路間をまたぐパスの通信先の同期素子が当該パスの信号値をラッチする回数が最小となるように回路分割を行う。ここでは、被検証回路は複数の回路ユニットからなるものとし、各回路ユニットは１個または複数個の回路素子からなるものとする。回路分割方法の基本的な手順を次に示す。
【００６２】
Ａ１）複数の回路ユニットから構成される被検証回路のハードウェア記述言語を読み込み、各回路ユニットの入力および出力の各々がどこの回路ユニットに接続しているかを解析する。
【００６３】
Ａ２）デバイスの数、各デバイスの回路規模、および各回路ユニットの回路規模を算出する。デバイスの数および各デバイスの回路規模はユーザが手動で与え、各回路ユニットの回路規模は当該回路ユニットに対するハードウェア記述言語を読み込んで推定する。
【００６４】
Ａ３）被検証回路全体のハードウェア記述言語を読み込み、各回路ユニット間をまたぐパスの通信元・通信先の同期素子の情報を記憶する。この同期素子の情報とは具体的には次の２つである。
（１）被検証回路が異なる周波数を持つ複数のクロックを使用している場合、通信元・通信先の同期素子がどの周波数のクロックで同期するのかの情報。
（２）通信元・通信先の同期素子がクロックの立ち上がりで同期しているのか、立ち下がりで同期しているかの情報。
【００６５】
Ａ４）上記ステップＡ１〜Ａ３により得られた情報に基づき、被検証分割回路間をまたぐパスの信号値に対して通信先の同期素子が同期する回数が可能な限り少なくなるように被検証回路の回路分割を行う。これにより、動作検証時の必要な通信回数を減少させる。さらにクロックの入力回数を減らすように回路分割を行う。具体的には以下のように回路分割を行う。
（ａ）被検証分割回路間をまたぐパスの数が少なくなるように回路分割を行う。
（ｂ）被検証回路が周波数の異なる複数のクロックを使用している場合、被検証分割回路間をまたぐパスの通信先の全ての同期素子が、通信元の全ての同期素子に比べて周波数の小さいクロックで同期するように回路分割を行う。
（ｃ）被検証分割回路間をまたぐ全てのパスについて、パスの通信元の被検証分割回路の同期素子と通信先の被検証分割回路の同期素子が以下の条件ｉまたは条件ｉｉを満たすように回路分割を行う。以下では、クロックの立ち上がりによって同期する同期素子をＰＭ、クロックの立ち下がりによって同期する同期素子をＮＭと呼ぶ。
（条件ｉ）通信元の同期素子の集合がＰＭかＮＭのどちらかである。あるいは、通信先の同期素子の集合がＰＭかＮＭのどちらかである。
（条件ｉｉ）通信元の同期素子の集合がＮＭのみである。あるいは、通信先の同期素子の集合がＰＭのみである。
【００６６】
条件ｉｉの方が条件ｉよりも厳しい条件である。
【００６７】
この回路分割方法のうち、（ｂ）と（ｃ）の回路分割方法は特許文献１にない本発明独自のものである。
【００６８】
この回路分割方法の理解を助けるために、簡単な例を用いて説明する。
【００６９】
被検証回路の検証は、詳しくは後述するが、大まかには、各デバイス１，２に実装された被検証分割回路１０３．１，１０３．２同士で通信を行うデバイス間通信と、上位コンピュータシステム１２から各被検証分割回路１０３．１，１０３．２へのクロック信号入力とを交互に繰り返すことによって実行される。
【００７０】
デバイス間通信は、被検証回路内のある同期素子を通信元とし、回路分割面をまたいで別の被検証回路内の同期素子を通信先とするような全てのパスに対して行う。
【００７１】
例えば、図７の場合、被検証分割回路１０３．１内の同期素子Ｘを通信元とし、被検証分割回路１０３．２内の同期素子Ｚを通信先とするようなパスＰと、被検証分割回路１０３．１内の同期素子Ｘを通信元とし、被検証分割回路１０３．２内を貫通して被検証分割回路１０３．１内の同期素子Ｙを通信先とするようなパスＱのデバイス間通信を行う。なお、被検証分割回路１０３．１，１０３．２内の同期素子は、ＦＦ（flip-flop）やレジスタ、メモリ等により実現される。
【００７２】
図７の場合、（ａ）の回路分割方法を用いて回路分割を行うと、デバイス間通信の通信回数が減少することは自明である。
【００７３】
また、（ｂ）の回路分割方法を用いて回路分割を行っても、デバイス間通信の通信回数が減少する。その理由を図８および図９の回路分割例を用いて説明する。
【００７４】
図８および図９において、（Ａ）は、３つの同期素子Ｘ，Ｙ，Ｚを２つの被検証分割回路に分割した回路分割例を示す図、（Ｂ）は、デバイスへのクロック入力およびデバイス間通信のタイミングを説明するフローチャート、（Ｃ）は、クロック、パスの信号値、および通信先の同期素子の信号値の波形を示す図である。
【００７５】
ここで、（Ａ）において、同期素子Ｚは、クロック信号ｆ＿Ｃｌｏｃｋで同期され、同期素子Ｘ，Ｙは、ｆ＿Ｃｌｏｃｋの２倍の周波数を持つ２ｆ＿Ｃｌｏｃｋで同期されている。なお、クロック信号ｆ＿Ｃｌｏｃｋ，２ｆ＿Ｃｌｏｃｋの波形は、図８および図９で同じとしている。また、（Ｂ）において、クロック入力とは、クロック信号の立ち上げおよび立ち下げの両方を入力することである。また、（Ｃ）において、図中の縦の太い点線はデバイス間通信のタイミングを示している。また、パスの信号値［Ｘ］に対応する通信先の同期素子の信号値を（［Ｘ］）としている。
【００７６】
例えば、図８（Ａ）に示す回路分割例では、被検証分割回路間をまたぐパスの通信先に同期素子Ｚが配置されるように回路分割を行っている。この場合、図８（Ｂ）および（Ｃ）に示すように、デバイス間通信はクロック信号ｆ＿Ｃｌｏｃｋ入力の直前だけ行えば、回路は正常動作する。これは、被検証分割回路間のパスの信号はクロック信号２ｆ＿Ｃｌｏｃｋに同期して変化するが、このパスの信号はクロック信号ｆ＿Ｃｌｏｃｋでのみ同期してラッチされるからである。
【００７７】
これに対して、図９（Ａ）に示す回路分割例では、同期素子Ｙが被検証分割回路間をまたぐパスの通信先に配置されるように回路分割を行っている。すなわち、（ｂ）の回路分割方法を用いている。この場合、図９（Ｂ）に示すように、クロック信号２ｆ＿Ｃｌｏｃｋの入力ごとにデバイス間通信を行う必要がある。これは、図９（Ｃ）に示すように、被検証分割回路間のパスの信号はクロック信号２ｆ＿Ｃｌｏｃｋに同期して変化し、その変化はクロック信号２ｆ＿Ｃｌｏｃｋに同期してラッチされるからである。
【００７８】
よって、図９に示す回路分割例は、図８に示す回路分割例に比べて、必要な通信回数が２倍になる。
【００７９】
このように（ｂ）の回路分割方法を用いて回路分割を行った場合、周波数の異なる複数のクロックを使用する被検証回路に対して、動作検証時の被検証分割回路の通信回数を減少させて動作検証速度を向上させる効果がある。
【００８０】
また、（ｃ）の回路分割方法を用いて回路分割を行っても、デバイス間の通信回数が減少する。その理由を図１０〜図１３の回路分割例を用いて説明する。なお、（ｃ）の回路分割方法では、条件ｉまたは条件ｉｉを満たすように回路分割を行う。
【００８１】
図１０〜図１３において、（Ａ）は、４つの同期素子を２つの被検証分割回路に分割した回路分割例を示す図、（Ｂ）は、デバイスへのクロック入力およびデバイス間通信のタイミングを説明するフローチャート、（Ｃ）は、クロック、パスの信号値、および通信先の同期素子の信号値の波形を示す図である。
【００８２】
ここで、（Ａ）において、４つの同期素子は同じクロック信号で同期されている。また、図中のＰと記された同期素子はＰＭであり、Ｎと記された同期素子はＮＭである。なお、クロック信号の波形は、図１０〜図１３で同じとしている。また、（Ｃ）において、図中の縦の太い点線はデバイス間通信のタイミングを示している。また、パスの信号値［Ｘ］に対応する通信先の同期素子の信号値を（［Ｘ］）としている。
【００８３】
図１０（Ａ）に示す回路分割例では、被検証分割回路間をまたぐパスの通信元にはＰＭとＮＭの両方の同期素子があり、通信先にもＰＭとＮＭの両方の同期素子があるため、条件ｉを満たしていない。この場合、図１０（Ｂ）に示すように、クロック信号の立ち上げ後と立ち下げ後の両方でデバイス間通信を行っている。これは、図１０（Ｃ）に示すように、パスの通信元にＰＭとＮＭの両方の同期素子があることから、クロック信号の立ち上げと立ち下げの両方で同期してパスの信号値が変化するためと、通信先にもＰＭとＮＭの両方の同期素子があることから、クロック信号の立ち上げと立ち下げの両方で同期してパスの信号値をラッチするからである。
【００８４】
図１１（Ａ）に示す回路分割例では、被検証分割回路間をまたぐパスの通信先にはＰＭとＮＭの両方の同期素子があるが、通信元にはＰＭしかない。このため、条件ｉを満たしている。この場合、図１１（Ｂ）に示すように、クロック信号の立ち上げ後にしかデバイス間通信を行う必要がない。これは、図１１（Ｃ）に示すように、被検証分割回路間をまたぐパスの通信元にはＰＭしかないことから、クロック立ち上げでしかパスの信号値が変化しないためである。
【００８５】
同様に、図１２（Ａ）に示す回路分割例では、被検証分割回路間をまたぐパスの通信元にはＮＭしかない。このため、条件ｉを満たしている。この場合、図１２（Ｂ）および（Ｃ）に示すように、クロック信号の立ち下げ後でしかデバイス間通信を行う必要がない。
【００８６】
また、図１３（Ａ）に示す回路分割例では、被検証分割回路間をまたぐパスの通信元にはＰＭとＮＭの両方の同期素子があるが、通信先にはＰＭしかない。このため、条件ｉを満たしている。この場合、図１３（Ｂ）に示すように、クロック信号の立ち下げ後でしかデバイス通信は必要ない。これは、図１３（Ｃ）に示すように、通信先にはＰＭしかないことから、クロック信号の立ち上げでのみ同期してパスの信号値をラッチするためである。このため、クロック信号の立ち上げ前にのみデバイス通信を行えば、回路は正常動作する。
【００８７】
また、図１２および図１３に示す回路分割例は条件ｉｉも満たしている。これらの場合は、クロック信号の立ち上げ後にデバイス間通信を行っていないために、クロック信号の回路内での自動立ち下りの手法を使用できる。自動立ち下りとは、上位コンピュータシステム１２からクロック信号の立ち上がり入力を行った後、被検証回路内でクロック信号を自動的に立ち下がらせることで、上位コンピュータシステム１２からの入力回数を減らす手法である。この詳細については後述する。
【００８８】
１．３）デバイス間通信のスケジューリング
次に、図６に示したステップＳ１０３におけるスケジューリング工程について詳細に説明する。
【００８９】
スケジューリング工程では、被検証分割回路間をまたぐパスの通信とクロック入力を行う順番を、もっとも周波数の小さいクロックの１周期分だけ決定する。また、スケジューリング工程では、被検証分割回路内の貫通パスの探索を行う。貫通パスとは、被検証分割回路の入力信号と出力信号との間に同期素子が１つもないパスのことを言う。
【００９０】
図１４は、デバイス間での貫通パスの一例を示す模式図である。
【００９１】
図１４に示す例では、被検証分割回路１０３．１の入力信号Ｓ２と出力信号Ｓ３との間に同期素子を含まない貫通パスが存在し、被検証分割回路１０３．２の入力信号Ｓ４と出力信号Ｓ５との間に同期素子を含まない貫通パスが存在する。同期素子６０１と同期素子６０２との間には、被検証分割回路間をまたぐパスと貫通パスとを含むパスがある。このような場合は、クロック１周期のデバイス間通信において、被検証分割回路１０３．１，１０３．２間をまたぐパスのうち貫通パスに接続されているパスの優先順序が必然的に定まる。この例では、パスＰはパスＱよりも先に通信しなくてはならず、パスＱはパスＲよりも先に通信しなくてはならない。
【００９２】
デバイス間通信のスケジューリング工程は、貫通パスの優先順位を守るように行う必要がある。スケジューリング工程の理解を助けるために、図１５の回路分割例を用いて説明する。
【００９３】
図１５に示す回路分割例では、クロック信号ＣＬＫと、この２倍の周波数を持つクロック信号２ｆ＿ＣＬＫを被検証分割回路内の同期素子に与えている。被検証分割回路間をまたぐパスはパスＡ，Ｂ，Ｃ，Ｄ，Ｅの５本ある。また、分割回路１０３．２内には、パスＡとパスＢ間の貫通パスと、パスＤとパスＥ間の貫通パスとがある。このため、パスＡはパスＢよりも先に通信する必要があり、パスＤはパスＥよりも先に通信する必要がある。また、被検証分割回路間をまたぐ各パスの通信元の同期素子と、通信先の同期素子の集合は、表１のようになる。
【００９４】
【表１】
0004743427.tif 000002
【００９５】
例えば、パスＡの場合は、分割回路１０３．１内のＰＭが通信元の同期素子であり、分割回路内の１０３．２内のＮＭとパスＢを通過した分割回路１０３．１内のＮＭとが通信先の同期素子になる。また、パスＢの場合は、パスＡの通信元である分割回路１０３．１内のＰＭと分割回路１０３．２内のＮＭとが通信元の同期素子であり、分割回路１０３．１内のＮＭが通信先の同期素子になる。
【００９６】
このとき、パスＡは、ＣＬＫの立ち上げに同期して信号値が変化するため、ＣＬＫの立ち上げ後にのみ通信を行う。
【００９７】
パスＢは、ＣＬＫの立ち下げに同期してパスＢの信号値をラッチするため、やはりＣＬＫの立ち下げ前にのみ通信を行う。
【００９８】
パスＣは、ＣＬＫの立ち上げにのみ同期してパスの信号値をラッチするため、ＣＬＫの立ち上げ前にのみ通信を行う。
【００９９】
パスＤは、クロック信号２ｆ＿ＣＬＫに同期してパスＤの信号値をラッチする通信先の同期素子があるため、クロック信号２ｆ＿ＣＬＫの立ち上げ後に通信を行うが、パスＥは、ＣＬＫで同期してパスＥの信号値をラッチする同期素子しかないために、ＣＬＫの立ち上げ後のみ通信を行う。
【０１００】
これらの結果と貫通パスの優先順位に基づく、ＣＬＫ１周期内のデバイス間通信とクロック入力のスケジュール結果は、図１６のようになる。
【０１０１】
１．４）アドレス配置
次に、図６のステップＳ１０４におけるアドレス配置工程について詳細に説明する。
【０１０２】
アドレス配置工程では、ステップＳ１０３のスケジューリング結果に基づいて、各デバイス１，２に実装する被検証分割回路１０３．１，１０３．２の入力信号ｉｎｐｕｔ、入出力信号ＩＮ／ＯＵＴ、および出力信号ｏｕｔｐｕｔのアドレス配置を決定する。
【０１０３】
アドレス配置を決定する際には、ステップＳ１０３のスケジューリング結果に基づき同じタイミングで通信できるパスを判定し、これらのパスを構成する、ｉｎｐｕｔ同士やＩＮ／ＯＵＴ同士、ｏｕｔｐｕｔ同士は同じアドレスに配置する。このように同じアドレスを配置することで、通信回数を減少し通信速度の高速化が可能になる。
【０１０４】
例えば、図１６に示すようなスケジュールで図１７の分割回路１０３．１のアドレス配置を行う場合、出力信号ｏｕｔｐｕｔＡとｏｕｔｐｕｔＤ同士や、入力信号ｉｎｐｕｔＢとｉｎｐｕｔＥ同士を同じアドレスに配置すれば、同時に通信を行うことによって、通信回数を減少できる。
【０１０５】
１．５）クロックの自動立ち下り
上述したように、被検証分割回路間をまたぐ全てのパスに対して、通信元の同期素子がＮＭのみである場合、もしくは通信先の同期素子がＰＭのみである場合は、クロックの自動立ち下がりの手法を使用できる。
【０１０６】
クロックの自動立ち下りは、バスコントローラ１１からクロックを立ち上げた後、クロック制御回路２０１内でクロックを自動的に立ち下げることによって、クロックの立ち下げのためにバスコントローラ１１から信号入力することを避ける手法である。この手法によって、信号の入力回数が減少するため、動作検証の高速化が可能になる。
【０１０７】
クロックの自動立ち下げは、クロック制御回路２０１を図１８に示すように構成することで可能になる。
【０１０８】
図１８に示すクロック制御回路２０１は、図３に示すクロック制御回路２０１に比べて、ＡＮＤ回路３０３の代わりに、ＷＤＡＴＡも入力されるＡＮＤ回路７０１が設けられており、また、ＡＮＤ回路７０１と同期素子３０１との間に、同期素子７０２、インバータ回路７０３、およびＯＲ回路７０４が追加されている。
【０１０９】
１．６）動作検証
図１９は、本発明の第１の実施形態による被検証回路の動作検証の概略的な流れを説明するフローチャートである。被検証回路は、異なる周波数を持つクロック信号として、クロック信号ＣＬＫと、ＣＬＫの２倍の周波数を持つクロック信号２ｆ＿ＣＬＫとを使用している。上述したように、第１実施形態ではバスコントローラ１１だけがバスマスタになるために、各デバイス１，２の入力信号の設定や信号の読み取りなどはすべてバスコントローラ１１が行う。また、ユーザによって予め指定された信号の履歴は、メモリ１５に順次格納される。
【０１１０】
最初に、各デバイス１，２に対して電源が投入される（ステップＳ２０１）。
【０１１１】
続いて、バスコントローラ１１は、上位コンピュータシステム１２の指令により、各デバイス１，２の通信回路１０２．１、１０２．２を通して、被検証分割回路１０３．１，１０３．２のリセット信号ＲＳＴをアクティブにすることで、リセット処理を行う（ステップＳ２０２）。さらに、初期処理としてクロックを入力する前に全てのデバイス１，２間の通信を行う（ステップＳ２０３）。
【０１１２】
その後、図６に示したステップＳ１０３のスケジューリング結果に従って、クロック入力とデバイス間通信を行う（ステップＳ２０４）。クロックＣＬＫの立ち上げは、上位コンピュータシステム１２の指令により、各デバイス１，２の通信回路１０２．１，１０２．２を通して、被検証分割回路１０３．１，１０３．２のＣＬＫをアクティブにすることで行う。クロックＣＬＫの立ち下げは、上位コンピュータシステム１２の指令により、各デバイス１，２の通信回路１０２．１，１０２．２を通して、被検証分割回路１０３．１，１０３．２のクロック信号ＣＬＫをローにすることで行う。クロック信号２ｆ＿ＣＬＫの立ち上げ、立ち下げも同様である。このクロック入力の合間にスケジュールに従ってデバイス間通信を行う。デバイス間通信は、バスコントローラ１１が通信元のデバイスの出力信号を読み取り、通信先のデバイスの入力信号を設定することで行う。
【０１１３】
ＣＬＫ１周期分のクロック入力およびデバイス間通信を終えた後は、バスコントローラ１１は、メモリ１５に格納したブレーク条件に一致したか否かを判定し（ステップＳ２０５）、一致している場合は（ステップＳ２０５のＹｅｓ）、状態を停止し、ユーザに次にどのような操作を行うかユーザインタフェース１３を通じて指定されるまで待機する（ステップＳ２０６）。ブレーク条件に一致しない場合は（ステップＳ２０５のＮｏ）、ステップＳ２０４へ進み、クロック入力とデバイス間通信を繰り返す。
【０１１４】
ステップＳ２０６において、ユーザは、ブレークの設定、ステップ命令、何サイクルまでユーザに意見を求めず動作させるか等を設定することができる。その際、メモリ１５には、指定された信号の履歴が格納されているから、ユーザは表示装置１４を通して指定した信号の過去の値を参照することができ、回路のデバッグ等に役立つ。
【０１１５】
（第２実施形態）
第１実施形態では、２つの被検証分割回路１０３．１，１０３．２をそれぞれデバイス１，２に実装したが、本発明は２分割構成に限定されるものではない。すなわち、被検証回路は、被検証分割回路間で通信回数が最も少なくなるように、所望の数に分割することが可能である。どのような数に分割しても、各デバイスは上述した基本構成を有し、バス１０により相互に接続され、全体として被検証回路の動作検証が実行される。
【０１１６】
また、第１実施形態では、２つの被検証分割回路１０３．１，１０３．２をそれぞれデバイス１，２に分割したが、本発明はこれに限定されるものではない。すなわち、複数の被検証分割回路１０３．１，１０３．２をデバイスおよび／またはシミュレータに分割し、それらをバス１０によって相互接続することも可能である。以下、本発明の第２実施形態として、２つのデバイスと１つのシミュレータとをバス１０で接続した回路動作検証装置について説明する。
【０１１７】
図２０は、本発明の第２実施形態による回路動作検証方法に使用する回路動作検証装置の概略構成を示すブロック図である。
【０１１８】
図２０を参照すると、本実施形態においては、第１実施形態と同様に、被検証分割回路１０３．１，１０３．２がそれぞれデバイス１，２に実装され、さらに被検証回路のロジック部を実際に動作させるシミュレータ３がバス１０に追加で接続されている。
【０１１９】
シミュレータ３は、バス１０と通信をするためのバスインタフェース８０１、メモリ８０２、および、被検証回路のロジック部分を実際に動作させるシミュレーションエンジン８０３を有する。
【０１２０】
メモリ８０２は、シミュレーションエンジン８０３でシミュレーションされる被検証分割回路の入力信号および出力信号を一時的に保持する。
【０１２１】
シミュレーションエンジン８０３は、イベントドリブン形式であるため、入力信号が変動することによって計算が実行され、その計算結果である出力信号がメモリ８０２に書き込まれる。なお、本実施形態でも、バスコントローラ１１が常にバスマスタとなる。
【０１２２】
本実施形態でも、第１実施形態のように被検証分割回路間をまたぐパスの通信元と通信先の同期素子と貫通パスの調査を行い、この調査結果からクロック入力とデバイス間通信のスケジュールを決定する。
【０１２３】
また、被検証回路が複数の異なる周波数を持つクロックを使用している場合は、シミュレータ３がどのクロックに同期して動作しているかに応じて回路動作検証装置の動作が異なる。
【０１２４】
図２１は、本発明の第２の実施形態による被検証回路の動作検証の概略的な流れを説明するフローチャートである。なお、図２１では、シミュレータ３がもっとも周波数の低いクロックで同期して動作しているものとする。
【０１２５】
図２１を参照すると、最初に、各デバイス１，２に電源が投入され（ステップＳ３０１）、図１９で説明したように、被検証分割回路１０３．１，１０３．２のリセット処理を行い（ステップＳ３０２）、初期処理として全てのデバイス１，２間で通信を行う（ステップＳ３０３）。
【０１２６】
次に、各デバイス１，２へクロックを入力する前に、シミュレータ３からデバイス１，２への通信を行う（ステップＳ３０４）。次いで、デバイス１，２からシミュレータ３への通信を行う（ステップＳ３０５）。その後、スケジューリングしたクロック入力とデバイス間通信を、最も小さい周波数を持つクロックの１周期分行う（ステップＳ３０６）。
【０１２７】
次いで、上位コンピュータシステム１２が起動時に設定したブレーク条件に一致しているか否かを判定する（ステップＳ３０７）。一致している場合は（ステップＳ３０７のＹｅｓ）、状態を停止して、すでに説明したようにユーザ設定を行い（ステップＳ３０８）ステップＳ３０９へ進み、一致しない場合は（ステップＳ３０７のＮｏ）、そのままステップＳ３０９へ進む。
【０１２８】
次に、バスコントローラ１１は、シミュレータ３のバスインタフェース８０１に対して１サイクル進む要求を送信し、これによって、シミュレータエンジン８０３におけるクロック信号を変更する（ステップＳ３０９）。シミュレータエンジン８０３で動作させている被検証回路のロジック部分の入力信号が変更された場合、バスインタフェース８０１はメモリ８０２に値を書き込むだけでなく、どの信号がどのように変更されたのかシミュレータエンジン８０３に知らせる。この入力信号変更通知に応じて、シミュレータエンジン８０３はその変更を反映するように計算し、回路シミュレーションを実行する。このシミュレーションの結果はメモリ８０２に書き込まれる。こうして、制御はステップＳ３０４へ戻り、以下、上記ステップＳ３０４〜Ｓ３０９を繰り返す。
【０１２９】
（第３実施形態）
図２２は、本発明の第３実施形態による回路動作検証方法に使用する回路動作検証装置の概略構成を示すブロック図である。
【０１３０】
図２２を参照すると、本実施形態においては、バス１０にプログラム制御プロセッサ９０１を接続し、プログラム制御プロセッサ９０１がＲＯＭに格納された動作検証プログラム９０２を実行することで、上述したバスコントローラ１１および上位コンピュータシステム１２の機能を実現している。プログラム制御プロセッサ９０１には入力部１３および出力部１４が接続されている。プログラム制御プロセッサ９０１により実行される動作は第１および第２実施形態で説明した動作と同じであるため説明は省略する。
【０１３１】
（第４実施形態）
本実施形態においては、上述した第３実施形態において、検証用デバイスの代わりに、ＡＳＩＣ（Application Specific Integrated Circuit）等の回路を実装できるデバイスを使用し、動作検証プログラム９０２の代わりにファームウェアを使用する。
【０１３２】
（第５実施形態）
本実施形態においては、１枚の基板内で複数の回路モジュールがバスによって相互に接続され、また同基板内でバスに接続された制御プロセッサがモジュール間の通信を実行し、また各モジュールに同期クロック信号等の制御信号を入力する。
【産業上の利用可能性】
【０１３３】
本発明によれば、大規模なＬＳＩの動作検証の高速化を図ることが可能である。また、ＬＳＩを動作させるファームウェアの動作検証の高速化にも有用である。さらに、ＳｏＣ（System On a Chip）のように１枚の基板やチップ内で、回路を複数のモジュールに分割して相互通信を行う場合でも、本発明による検証の高速化は有用である。
【図面の簡単な説明】
【０１３４】
【図１】本発明の第１実施形態による回路動作検証方法に使用する回路動作検証装置の概略構成を示すブロック図である。
【図２】図１に示した検証用デバイスの構成を示すブロック図である。
【図３】図２に示したクロック制御回路の構成を示すブロック図である。
【図４】図２に示したレジスタの構成を示すブロック図である。
【図５】図２に示したセレクタの構成を示すブロック図である。
【図６】本発明の第１実施形態において、被検証回路を分割して各検証用デバイスに実装するまでの概略的な流れを説明するフローチャートである。
【図７】本発明の第１実施形態に係る、被検証分割回路間をまたぐパスの通信元・通信先の同期素子を説明する図である。
【図８】本発明の第１実施形態による回路分割方法（ｂ）の一例を示す図であり、（Ａ）は回路分割後の構成を示すブロック図、（Ｂ）は（Ａ）の分割を行った場合の動作検証時の流れを説明するフローチャート、（Ｃ）は（Ａ）の分割を行った場合の動作検証時の各部の波形を示す図である。
【図９】従来の回路分割方法の一例を示す図であり、（Ａ）は回路分割後の構成を示すブロック図、（Ｂ）は（Ａ）の分割を行った場合の動作検証時の流れを説明するフローチャート、（Ｃ）は（Ａ）の分割を行った場合の動作検証時の各部の波形を示す図である。
【図１０】従来の回路分割方法の他の例を示す図であり、（Ａ）は回路分割後の構成を示すブロック図、（Ｂ）は（Ａ）の分割を行った場合の動作検証時の流れを説明するフローチャート、（Ｃ）は（Ａ）の分割を行った場合の動作検証時の各部の波形を示す図である。
【図１１】本発明の第１実施形態による回路分割方法（ｃ）の一例を示す図であり、（Ａ）は回路分割後の構成を示すブロック図、（Ｂ）は（Ａ）の分割を行った場合の動作検証時の流れを説明するフローチャート、（Ｃ）は（Ａ）の分割を行った場合の動作検証時の各部の波形を示す図である。
【図１２】本発明の第１実施形態による回路分割方法（ｃ）の他の例を示す図であり、（Ａ）は回路分割後の構成を示すブロック図、（Ｂ）は（Ａ）の分割を行った場合の動作検証時の流れを説明するフローチャート、（Ｃ）は（Ａ）の分割を行った場合の動作検証時の各部の波形を示す図である。
【図１３】本発明の第１実施形態による回路分割方法（ｃ）のさらに他の例を示す図であり、（Ａ）は回路分割後の構成を示すブロック図、（Ｂ）は（Ａ）の分割を行った場合の動作検証時の流れを説明するフローチャート、（Ｃ）は（Ａ）の分割を行った場合の動作検証時の各部の波形を示す図である。
【図１４】本発明の第１実施形態に係る貫通パスを説明する図である。
【図１５】本発明の第１実施形態による回路分割後の回路動作検証装置の構成を示すブロック図である。
【図１６】図１５に示した回路分割後の回路動作検証装置に対して生成された、クロック入力とデバイス間通信のタイミングのスケジュールを示す図である。
【図１７】図１５に示した回路分割後の回路動作検証装置の左側の被検証分割回路の入力信号ｉｎｐｕｔと出力信号ｏｕｔｐｕｔを示す図である。
【図１８】図３に示したクロック制御回路にクロックの自動立ち下がり機能を付加した構成を示すブロック図である。
【図１９】本発明の第１の実施形態による被検証回路の動作検証の概略的な流れを説明するフローチャートである。
【図２０】本発明の第２実施形態による回路動作検証方法に使用する回路動作検証装置の概略構成を示すブロック図である。
【図２１】本発明の第２の実施形態による被検証回路の動作検証の概略的な流れを説明するフローチャートである。
【図２２】本発明の第３実施形態による回路動作検証方法に使用する回路動作検証装置の概略構成を示すブロック図である。
【符号の説明】
【０１３５】
１，２    検証用デバイス
３    シミュレータ
１０    バス
１１    バスコントローラ
１２    上位コンピュータシステム
１３    ユーザインタフェース
１４    表示装置
１５    メモリ
１０１    バスインタフェース
１０２    通信回路
１０３    被検証分割回路
２０１    クロック制御回路
２０２    レジスタ
２０３    アドレスデコーダ
２０４    セレクタ
３０１，３０２    同期素子
３０３，３０４    ＡＮＤ回路
４０１〜４０７    同期素子
５０１〜５０３    セレクタ回路
６０１，６０２    同期素子
７０１    ＡＮＤ回路
７０２    同期素子
７０３    インバータ回路
７０４    ＯＲ回路
８０１    バスインタフェース
８０２    メモリ
８０３    シミュレーションエンジン
９０１    プログラム制御プロセッサ
９０２    動作検証プログラム
【図１】
0004743427.tif 000003
【図２】
0004743427.tif 000004
【図３】
0004743427.tif 000005
【図４】
0004743427.tif 000006
【図５】
0004743427.tif 000007
【図６】
0004743427.tif 000008
【図７】
0004743427.tif 000009
【図８】
0004743427.tif 000010
【図９】
0004743427.tif 000011
【図１０】
0004743427.tif 000012
【図１１】
0004743427.tif 000013
【図１２】
0004743427.tif 000014
【図１３】
0004743427.tif 000015
【図１４】
0004743427.tif 000016
【図１５】
0004743427.tif 000017
【図１６】
0004743427.tif 000018
【図１７】
0004743427.tif 000019
【図１８】
0004743427.tif 000020
【図１９】
0004743427.tif 000021
【図２０】
0004743427.tif 000022
【図２１】
0004743427.tif 000023
【図２２】
0004743427.tif 000024