(57)【要約】  本発明は百万ゲート以上のデジタルシステムに対する検証するためのシミュレーションの性能及び效率性を大きく向上させるシミュレーション基盤の検証装置及びこれを用いた設計検証方法に関する。また、百万ゲート以上のデジタルシステムに対し、正式検証、シミュレーション加速、ハードウェアエミュレーション、プロトタイピングをも用いて検証の性能と效率性を増加させるシミュレーション基盤の検証装置及びこれを用いた検証方法に関する。【選択図】図１
2007528553.tif 000002
【特許請求の範囲】
【請求項１】
検証ソフトウェアと１以上のシミュレータを具備する設計検証装置において、
上記検証ソフトウェアは、設計コードや合成で生成されたゲート水準のネットリストに自動化された方式で付加コードや付加回路を追加し、後段シミュレーションステップである１次シミュレーション以後に行われる１回以上のシミュレーションを、設計コードや合成で生成されたネットリストに存在する１以上の設計客体に対してシミュレーションが行われるようにするのに必要な最小限の情報を、上記前段シミュレーションステップである１次シミュレーションの過程で収集できるようにし、上記１次以後の１回以上のシミュレーションを、可視度を得ながらも速やかに行うことにより、シミュレーションの速度とデバッグのための可視度を同時に確保することを可能とする設計検証装置。
【請求項２】
シミュレーションを複数のテストベンチにより数回行って、設計コードや合成で生成されたゲート水準のネットリストに存在する１以上の設計誤謬の位置を見出し、これを修正する設計検証方法において、
上記シミュレーションの一部を前段シミュレーションステップである１次シミュレーションと後段シミュレーションステップである１次以後の１回以上のシミュレーションに分けて行い、上記後段シミュレーションステップである１次以後の１回以上のシミュレーションを、設計コードや合成で生成されたネットリストに存在する１以上の設計客体に対してシミュレーションが行われるようにするのに必要な最小限の情報を、上記前段シミュレーションステップである１次シミュレーションの過程で収集できるように、設計コードや合成で生成されたゲート水準のネットリストに付加コードや付加回路を、検証ソフトウェアを用いて自動化された方式で追加し、上記１次以後の１回以上のシミュレーションを、可視度を得ながらも速やかに行うことにより、シミュレーションの速度とデバッグのための可視度を同時に確保することを可能とする検証方法。
【請求項３】
最小限の情報収集が前段シミュレーションステップである１次シミュレーションの過程において、一定の間隔であるいは１以上の特定のシミュレーション時点で、シミュレーションの状態を１以上のファイル形態で保存することを含む、請求項１、２、１２、５４または５５に記載の設計検証方法。
【請求項４】
最小限の情報収集が前段シミュレーションステップである１次シミュレーションの過程において、設計コードや合成で生成されたゲート水準のネットリストに存在する１以上の設計ブロックの入力と入出力を、シミュレーションの全過程にわたって持続的に探針して１以上のファイル形態で保存し、これを後段シミュレーションステップである１次以後のシミュレーションの過程において入力スティミュラスとして用いることを含む、請求項１、２、１２、５４または５５に記載の設計検証方法。
【請求項５】
前段シミュレーションステップである１次シミュレーションの施行中に、１以上のシミュレーション時点で保存された１つのシミュレーション状態のうち１つのシミュレーション状態を選定し、１次以後の１回以上のシミュレーションを、上記選定された１以上のシミュレーション状態から開示されるように設計コードや合成で生成されたゲート水準のネットリストに存在するシグナルと変数に対する探針を行う、請求項３に記載の設計検証方法。
【請求項６】
１次以後のシミュレーションを、上記選定された２以上のシミュレーション状態から開示されるように１つのシミュレータを２回以上順次に設定し、順次にシミュレーションを進行する過程において、前段シミュレーションステップである１次シミュレーションの遂行時に、シミュレーションの状態を保存するシミュレーション時点がシミュレーション時間的に最後にあるシミュレーション状態をまず上記１つのシミュレータに設定してこのシミュレーションの状態をもってシミュレーションを進行し、その後のシミュレーションも上記単一のシミュレータで行う過程で状態を保存したシミュレーション時点がシミュレーション時間的に後にあるもの等を優先してシミュレータに設定し、シミュレーションがシミュレーション状態保管時間の逆順に進行しながら、設計コードや合成で生成されたゲート水準のネットリストに存在するシグナルと変数に対する探針を行う、請求項５に記載の設計検証方法。
【請求項７】
１次シミュレーションの施行中に、１以上のシミュレーション時点でシミュレーション状態を保存する方法を、シミュレータのｓａｖｅ命令語あるいはｃｈｅｃｋｐｏｉｎｔ命令語を用い、後段シミュレーションステップである１次以後の１回以上のシミュレーションを、上記選定された１以上のシミュレーション状態から開示されるようにシミュレータを１回以上設定した後、シミュレーションを進行する方法をシミュレータのｒｅｓｔａｒｔ命令語あるいはｒｅｓｔｏｒｅ命令語を用いる、請求項１、２、３、５、６、１２、５４または５５に記載の設計検証方法。
【請求項８】
１次シミュレーションの実行中に、設計コードや合成で生成されたゲート水準のネットリストに存在する１以上の設計ブロックに対する入力と入出力をシミュレーションの全過程で探針して保存した１以上の探針ファイルのうち１以上を選定して、後段シミュレーションステップである１次以後のシミュレーションを、上記選定された１以上の探針ファイルと該当１以上の設計ブロックを用いてシミュレーションコンパイルして生成された１以上のシミュレーション実行ファイルのうち追加的な探針が必要な設計コードや合成で生成されたゲート水準のネットリストに存在するシグナルと変数を有している該当１以上の設計ブロックをコンパイルされた形態で有している１以上のシミュレーション実行ファイルを実行しながら上記追加的な探針を行うことにより、高いシミュレーション速度と設計ブロックに対する可視度を提供する、請求項４に記載の設計検証方法。
【請求項９】
後段シミュレーションステップである１次以後の１回以上のシミュレーションを、前段シミュレーションステップである１次シミュレーションの過程で保存された２以上のシミュレーション状態をそれぞれ用いて２回以上の部分シミュレーションをするものに切り換え、コンピュータネットワークで連結された２以上のコンピュータにインストールされた２以上のシミュレータを用いて、上記２以上のシミュレータ状態のそれぞれを上記２以上のシミュレータそれぞれに設定して、２以上のシミュレーションが互いに独立的に上記２以上のシミュレータで並列的に実行して、高いシミュレーション速度を提供する、請求項１、２、３、５、６、７、１２、５４または５５に記載の設計検証方法。
【請求項１０】
後段シミュレーションステップである１次以後の１回以上のシミュレーションを、前段シミュレーションステップである１次シミュレーションを通じて得られた２以上の設計ブロックと、これらの設計ブロックのそれぞれの入力と入出力を、前段シミュレーションステップである１次シミュレーションの全過程で探針した２以上の探針ファイルをシミュレーションコンパイルして得られた２以上のシミュレーション実行ファイルを、コンピュータネットワークで連結された２以上のコンピュータにインストールされた２以上のシミュレータを用いて独立的かつ並列的に実行して、高いシミュレーション速度を提供する、請求項１、２、１２、５４または５５に記載の設計検証方法。
【請求項１１】
後段シミュレーションステップである１次以後の１回以上のシミュレーションを、前段シミュレーションステップである１次シミュレーションを通じて得られた２以上の設計ブロックと、これらの設計ブロックのそれぞれの入力と入出力を、前段シミュレーションステップである１次シミュレーションの全過程で探針した２以上の探針ファイルを変換した２以上のテストベンチファイルをシミュレーションコンパイルして得られた２以上のシミュレーション実行ファイルを、コンピュータネットワークで連結された２以上のコンピュータにインストールされた２以上のシミュレータを用いて独立的かつ並列的に実行して、高いシミュレーション速度を提供する、請求項１、２、１２、５４または５５に記載の設計検証方法。
【請求項１２】
任意のシミュレーション遂行あるいはシミュレーション加速遂行あるいはハードウェアエミュレーション遂行あるいはプロトタイピング遂行を通じて得られた結果を用いた追加的なシミュレーションの遂行において、
上記追加的なシミュレーションの遂行を、前段シミュレーションステップである１次１回のシミュレーションと後段シミュレーションステップである１次以後の１回以上のシミュレーションに分けて行い、上記１次以後の１回以上のシミュレーションを、設計コードや合成で生成されたゲート水準のネットリストに存在する１以上の設計客体に限定してシミュレーションが行われるようにするのに必要な最小限の情報を１次シミュレーションの過程で収集できるように、設計コードや合成で生成されたゲート水準のネットリストに付加コードや付加回路を検証ソフトウェアを用いて自動化された方式で追加し、上記１次以後の１回以上のシミュレーションを速やかに行うことを可能とする検証方法。
【請求項１３】
前段シミュレーションステップである１次のシミュレーションを並列シミュレーションで行う、請求項１、２、３、４、５、９、１０、１１、１２、２３、２４、２５、２７、５４または５５に記載の検証方法。
【請求項１４】
前段シミュレーションステップである１次のシミュレーションを、ＤＵＶの全体あるいはＤＵＶ内の１以上の設計客体に対してサイクル−基盤シミュレーションで行い、後段シミュレーションステップである１次以後の１回以上のシミュレーションはイベント−駆動シミュレーションで行う、請求項３１または３２に記載の検証方法。
【請求項１５】
前段シミュレーションステップである１次のシミュレーションを、ＤＵＶの全体あるいはＤＵＶ内の１以上の設計客体に対してＳｙｓｔｅｍＣシミュレータを用いて行い、後段シミュレーションステップである１次以後の１回以上のシミュレーションは、ＶｅｒｉｌｏｇシミュレータあるいはＶＨＤＬシミュレータあるいはＳｙｓｔｅｍＶｅｒｉｌｏｇシミュレータを用いて行う、請求項３１または３２に記載の検証方法。
【請求項１６】
前段シミュレーションステップである１次のシミュレーションを、ＤＵＶの全体あるいはＤＵＶ内の１以上の設計客体に対してＲＴＬシミュレーションで行い、後段シミュレーションステップである１次以後の１回以上のシミュレーションはゲート水準シミュレーションで行う、請求項３１または３２に記載の検証方法。
【請求項１７】
上記後段シミュレーションステップである１次以後の１回以上のシミュレーションを、２以上のシミュレータを用いて並列的に進行する、請求項１４、１５または１６に記載の検証方法。
【請求項１８】
シミュレーションを複数のテストベンチにより数回行って、設計コードや合成で生成されたゲート水準のネットリストに存在する１以上の設計誤謬の位置を見出してこれを修正する設計検証方法において、上記シミュレーションの一部を前段シミュレーションステップである１次シミュレーションと後段シミュレーションステップである１次以後の１回以上のシミュレーションに分けて行い、上記後段シミュレーションステップである１次以後の１回以上のシミュレーションを設計コードや合成で生成されたネットリストに存在する１以上の設計客体に対してシミュレーションが行われるようにするのに必要な最小限の情報を上記前段シミュレーションステップである1次シミュレーション過程で収集できるように設計コードや合成で生成されたゲート水準のネットリストに付加コードや付加回路を検証ソフトウェアを用いて自動化された方式で追加し、上記１次以後の１回以上のシミュレーションを可視度を得ながらも速やかに行うことにより、シミュレーション速度とデバッグのための可視度を同時に確保することを可能にする検証方法。
【請求項１９】
上記後段シミュレーションステップである１次以後の１回以上のシミュレーションをゲート水準でイベント−駆動シミュレーションで行う、請求項１４または１６に記載の検証方法。
【請求項２０】
上記後段シミュレーションステップである１次以後の１回以上のシミュレーションを、ゲート水準においてイベント−駆動シミュレーションを配置及び配線結果から抽出されたタイミング情報を活用したタイミングシミュレーションで行う、請求項１９に記載の検証方法。
【請求項２１】
前段シミュレーションステップである１次のシミュレーションの過程において、１以上のシミュレーション時点で可視度が必要なＤＵＶにおける１以上の設計客体に対する状態情報を得て、このように得られた１以上の設計検証の対象の状態情報を用いて、後段シミュレーションステップである１次以後の１回以上のシミュレーションを行う、請求項１４、１５、１９または２０に記載の検証方法。
【請求項２２】
前段シミュレーションステップである１次のシミュレーションの過程において、２以上のシミュレーション時点で可視度が必要なＤＵＶにおける１以上の設計客体に対する状態情報を得て、このように得られた２以上の設計検証の対象の状態情報を用いて、後段シミュレーションステップである１次以後の２回以上のシミュレーションを並列的に行う、請求項１４、１５、１９または２０に記載の検証方法。
【請求項２３】
最小限の情報収集が、前段シミュレーションステップである１次シミュレーションの過程において、一定の間隔であるいは１以上の特定のシミュレーション時点で可視度が必要なＤＵＶにおける１以上の設計客体に対する状態の保存と共に、シミュレーションの全区間にわたって上記可視度が必要なＤＵＶにおける１以上の設計客体のすべての入力値と入力モード時のすべての入出力値を、後段シミュレーションステップである１次以後のシミュレーションの過程において入力スティミュラスとして用いるために、上記入力または入出力において、イベントの発生時毎の、あるいはサイクル毎の、あるいはトランスアクション毎の保存を１以上のファイル形態で保存するか、または、上記一定の間隔であるいは１以上の特定のシミュレーション時点でＴＢの状態の保存を１以上のファイル形態で保存することを含む、請求項１、２、１２、５４または５５に記載の設計検証方法。
【請求項２４】
最小限の情報収集が、前段シミュレーションステップである１次シミュレーションの過程において、一定の間隔であるいは１以上の特定のシミュレーション時点において可視度が必要なＤＵＶにおける１以上の設計客体に対する状態と、上記前段シミュレーションステップである１次シミュレーションの全過程で上記可視度が必要なＤＵＶにおける１以上の設計客体のすべての入力値と入力モード時のすべての入出力値を、後段シミュレーションステップである１次以後のシミュレーションの過程において入力スティミュラスとして用いるために、上記入力または入出力において、イベントの発生時毎の、あるいはサイクル毎の、あるいはトランスアクション毎の保存を１以上のファイル形態で保存することを含む、請求項１、２、１２、５４または５５に記載の設計検証方法。
【請求項２５】
前段シミュレーションステップである１次シミュレーションの施行中に、１以上のシミュレーション時点で保存された１以上の可視度が必要なＤＵＶにおける１以上の設計客体の状態と、場合によっては、ＴＢの状態のうち１以上の状態を選定して、後段シミュレーションステップである１次以後の１回以上のシミュレーションを、上記選定された１以上の可視度が必要なＤＵＶにおける１以上の設計客体の状態と、場合によっては、ＴＢの状態から開示されるようにシミュレータを１回以上設定した後、シミュレーションを１回以上進行しながら、設計コードや合成で生成されたゲート水準のネットリストに存在するシグナルと変数に対する探針を行うことにより、高いシミュレーション速度と設計ブロックに対する可視度を速やかに確保する、請求項２３または２４に記載の設計検証方法。
【請求項２６】
後段シミュレーションステップである１次以後のシミュレーションを、上記選定された２以上の可視度が必要なＤＵＶにおける１以上の設計客体の状態と、場合によっては、ＴＢの状態から開示されるように１つのシミュレータを２回以上順次に設定して２回以上順次にシミュレーションを進行する過程において、前段シミュレーションステップである１次シミュレーションの遂行時に、上記可視度が必要なＤＵＶにおける１以上の設計客体の状態と、場合によっては、ＴＢの状態を保存するシミュレーション時点がシミュレーション時間的に最後にあるＤＵＶにおける１以上の設計客体の状態と、場合によっては、ＴＢの状態をまず上記１つのシミュレータに設定してこの状態をもってシミュレーションを進行し、その後のシミュレーションも上記単一のシミュレータで行う過程で状態を保存したシミュレーション時点がシミュレーション時間的に後にあるものを優先してシミュレータに設定し、シミュレーションがシミュレーション状態保存時間の逆順に進行しながら、設計コードや合成で生成されたゲート水準のネットリストに存在するシグナルと変数に対する探針を行うことにより、高いシミュレーション速度と設計ブロックに対する可視度を速やかに確保する、請求項２５に記載の設計検証方法。
【請求項２７】
後段シミュレーションステップである１次以後の１回以上のシミュレーションを、前段シミュレーションステップである１次シミュレーションの過程で保存された２以上の可視度が必要なＤＵＶにおける１以上の設計客体の状態と、場合によっては、ＴＢの状態をそれぞれ用いて２回以上の部分シミュレーションをするものに切り換え、コンピュータネットワークで連結された２以上のコンピュータにインストールされた２以上のシミュレータを用いて、上記２以上のＤＵＶにおける１以上の設計客体の状態と、場合によっては、ＴＢの状態のそれぞれを、上記２以上のシミュレータのそれぞれに設定して２以上のシミュレーションが互いに独立的に上記２以上のシミュレータで並列的に実行して、高いシミュレーション速度と設計ブロックに対する可視度を速やかに確保する、請求項１、２、２３、２４、２５、２６、５４または５５に記載の設計検証方法。
【請求項２８】
前段シミュレーションステップである１次のシミュレーションを、速やかなシミュレーションが行われるように、元の設計コードの代わりに、元の設計コードと関数的に等価であるが、異なる構文形式に変換された設計コードを用いてシミュレーションする、請求項１、２、３、４、５、９、１０、１１、１２、２３、２４、２５、２７、５４または５５に記載の検証方法。
【請求項２９】
シミュレーションを複数のテストベンチにより数回行って、設計コードや合成で生成されたゲート水準のネットリストに存在する１以上の設計誤謬の位置を見出してこれを修正する設計検証方法において、ＤＵＶにおける１以上の設計客体の状態と場合によっては、ＴＢの状態を保存する設計検証方法。
【請求項３０】
上記可視度が必要なＤＵＶにおける１以上の設計客体の状態情報として、上記１以上の該当設計客体の最小状態情報を用いる、請求項２１、２２、２３、２４、２５、２６、２７または２９に記載の検証方法。
【請求項３１】
前段シミュレーションステップである１次シミュレーションにおいて、最小限１以上の設計客体に対して後段シミュレーションステップである１次以後の１以上のシミュレーションよりさらに抽象化された設計コードを用いることにより、さらに抽象化された水準において上記前段シミュレーションステップである１次シミュレーションを行い、上記後段シミュレーションステップである１次以後の１以上のシミュレーションは、上記前段シミュレーションステップである１次シミュレーションよりさらに抽象化されていない設計コードを用いてシミュレーションを行うことにより、速やかな検証を行う、請求項１、２、３、４、５、９、１０、１１、１２、２３、２４、２５、２７、５４または５５に記載の検証方法。
【請求項３２】
可視度が必要なＤＵＶにおける１以上の設計客体の状態情報は、前段シミュレーションである１次シミュレーションの遂行の途中に獲得され、上記獲得された状態情報を用いて、後段シミュレーションである１つ以上の１次以後のシミュレーションの遂行が２以上のシミュレータで並列にまたは１つのシミュレータで順次に行われる、請求項３１に記載の検証方法。
【請求項３３】
前段シミュレーションステップである１次シミュレーションの施行中に、１以上のシミュレーション時点で保存された１以上の可視度が必要なＤＵＶにおける１以上の設計客体の状態と、上記入力スティミュラスとして用いるために保存された１以上のファイルを選定し、後段シミュレーションステップである１次以後の１回以上のシミュレーションを、上記選定された１以上の可視度が必要なＤＵＶにおける１以上の設計客体の状態から開示されるようにシミュレータを１回以上設定した後、シミュレーションを１回以上進行しながら、設計コードや合成で生成されたゲート水準のネットリストに存在するシグナルと変数に対する探針を行うことにより、高いシミュレーション速度と設計ブロックに対する可視度を速やかに確保する、請求項２３または２４に記載の設計検証方法。
【請求項３４】
後段シミュレーションステップである１次以後のシミュレーションを、上記選定された２以上の可視度が必要なＤＵＶにおける１以上の設計客体の状態から開示されるように、１つのシミュレータを２回以上順次に設定して２回以上順次にシミュレーションを進行する過程において、前段シミュレーションステップである１次シミュレーションの遂行時に、上記可視度が必要なＤＵＶにおける１以上の設計客体の状態を保存するシミュレーション時点がシミュレーション時間的に最後にあるＤＵＶにおける１以上の設計客体の状態を、まず上記１つのシミュレータに設定してこの状態をもってシミュレーションを進行し、その後のシミュレーションも上記単一のシミュレータで行う過程において、状態を保存したシミュレーション時点がシミュレーション時間的に後にあるものを優先してシミュレータに設定し、シミュレーションがシミュレーション状態保存時間の逆順に進行しながら、設計コードや合成で生成されたゲート水準のネットリストに存在するシグナルと変数に対する探針を行うことにより、高いシミュレーション速度と設計ブロックに対する可視度を速やかに確保する、請求項３３に記載の設計検証方法。
【請求項３５】
後段シミュレーションステップである１次以後の１回以上のシミュレーションを、前段シミュレーションステップである１次シミュレーションの過程で保存された２以上の可視度が必要なＤＵＶにおける１以上の設計客体の状態をそれぞれ用いて２回以上の部分シミュレーションをするものに切り換え、コンピュータネットワークで連結された２以上のコンピュータにインストールされた２以上のシミュレータを用いて、上記２以上のＤＵＶにおける１以上の設計客体の状態を、それぞれ上記２以上のシミュレータそれぞれに設定して２以上のシミュレーションが互いに独立的に上記２以上のシミュレータで並列的に実行して、高いシミュレーション速度と設計ブロックに対する可視度を速やかに確保する、請求項１、２、２３、２４、３３、３４、５４または５５に記載の設計検証方法。
【請求項３６】
シミュレーションを複数のテストベンチにより数回行って、設計コードや合成で生成されたゲート水準のネットリストに存在する１以上の設計誤謬の位置を見出してこれを修正する設計検証方法において、
上記シミュレーションの一部を前段シミュレーションステップである１次シミュレーションと後段シミュレーションステップである１次以後の１回以上のシミュレーションに分けて行い、上記後段シミュレーションステップである１次以後の１回以上のシミュレーションを設計コードや合成で生成されたネットリストに存在する１以上の設計客体に対してシミュレーションが行われるようにするのに必要な最小限の情報を上記前段シミュレーションステップである1次シミュレーション過程で収集できるように設計コードや合成で生成されたゲート水準のネットリストに付加コードや付加回路を検証ソフトウェアを用いて自動化された方式で追加し、上記１次以後の１回以上のシミュレーションを可視度を得ながらも速やかに行うことにより、シミュレーション速度とデバッグのための可視度を同時に確保することを可能にする検証方法。
【請求項３７】
上位水準におけるシミュレーションの結果を用いて、下位水準におけるシミュレーションを速やかに行う検証方法。
【請求項３８】
上記上位水準におけるシミュレーションの結果が、１以上の設計客体に対する状態情報を含む、請求項３７、５７または５８に記載の検証方法。
【請求項３９】
上記１以上の設計客体に対する状態情報が完全状態情報である、請求項３８、６４または６５に記載の検証方法。
【請求項４０】
上記１以上の設計客体に対する状態情報が最小状態情報である、請求項３８、６４または６５に記載の検証方法。
【請求項４１】
下位水準におけるシミュレーションを速やかに行う方法が、上記１以上の設計客体に対する上記状態情報を用いて、下位水準において２以上のシミュレーションを並列的に行う、請求項３８、３９、４０、６４または６５に記載の検証方法。
【請求項４２】
並列的遂行が時間的並列遂行である、請求項４１または６７に記載の検証方法。
【請求項４３】
並列的遂行が空間的並列遂行である、請求項４１または６７に記載の検証方法。
【請求項４４】
上位水準におけるシミュレーションの結果と下位水準におけるシミュレーションの結果のうち１つをレファレンスと仮定し、１以上の特定のシミュレーション時点において、下位水準におけるシミュレーションの結果と上位水準におけるシミュレーションの結果を比べて、下位水準におけるシミュレーションの結果と上位水準におけるシミュレーションの結果が異なる状況を見出して設計を修正することにより、上記１以上の特定のシミュレーション時点において、下位水準におけるシミュレーションの結果と上位水準におけるシミュレーションの結果を同一にする、請求項３７に記載の設計検証及び設計修正方法。
【請求項４５】
上記上位水準におけるシミュレーションがサイクル−基盤方式であり、上記下位水準におけるシミュレーションがイベント−駆動方式である、請求項４４または５９に記載の設計検証及び設計修正方法。
【請求項４６】
上記上位水準におけるシミュレーションがＳｙｓｔｅｍＣシミュレーションであり、上記下位水準におけるシミュレーションがＲＴＬシミュレーションである、請求項４４または５９に記載の設計検証及び設計修正方法。
【請求項４７】
上記上位水準におけるシミュレーションがＲＴＬシミュレーションであり、上記下位水準におけるシミュレーションがゲート水準シミュレーションである、請求項４４または５９に記載の設計検証及び設計修正方法。
【請求項４８】
上記下位水準におけるゲート水準シミュレーションが、タイミング情報を用いたタイミングシミュレーションである、請求項４７に記載の設計検証及び設計修正方法。
【請求項４９】
上記下位水準におけるシミュレーションの結果が上位水準におけるシミュレーションの結果と互いに異なる状況を速やかに見出すために、上位水準におけるシミュレーションの結果を用いて下位水準においてシミュレーションを行う、請求項４４または５９に記載の設計検証及び設計修正方法。
【請求項５０】
上記下位水準におけるシミュレーションの結果が上位水準におけるシミュレーションの結果と互いに異なる状況を速やかに見出すために、上位水準におけるシミュレーションの結果を用いて下位水準において並列的にシミュレーションを行う、請求項４４または５９に記載の設計検証及び設計修正方法。
【請求項５１】
上記下位水準におけるシミュレーションの結果が上位水準におけるシミュレーションの結果と互いに異なる状況を速やかに見出すために、上記下位水準において用いる上位水準におけるシミュレーションの結果が、１以上の設計客体に対する状態情報を含む、請求項４９または５０に記載の設計検証及び設計修正方法。
【請求項５２】
上記１以上の設計客体に対する状態情報が上記１以上の設計客体に対する完全状態情報である、請求項５１に記載の設計検証及び設計修正方法。
【請求項５３】
上記１以上の設計客体に対する状態情報が上記１以上の設計客体に対する最小状態情報である、請求項５１に記載の設計検証及び設計修正方法。
【請求項５４】
検証ソフトウェアと１以上のシミュレータを具備する設計検証装置において、
上記検証ソフトウェアは、設計コードや合成で生成されたゲート水準のネットリストに自動化された方式で付加コードや付加回路を追加し、後段シミュレーションステップである１次シミュレーション以後に行われる１回以上のシミュレーションを、設計コードや合成で生成されたネットリストに存在する１以上の設計客体に対してシミュレーションが行われるようにするのに必要な最小限の情報を、上記前段シミュレーションステップである１次シミュレーションの過程で収集できるようにし、１次以後の１回以上のシミュレーションを、可視度を得ながらも速やかに行うことにより、シミュレーションの速度とデバッグのための可視度を同時に確保することを可能とする設計検証装置。
【請求項５５】
シミュレーションを複数のテストベンチにより数回行って、設計コードや合成で生成されたゲート水準のネットリストに存在する１以上の設計誤謬の位置を見出してこれを修正する設計検証方法において、
上記シミュレーションの一部を前段シミュレーションステップである１次シミュレーションと後段シミュレーションステップである１次以後の１回以上のシミュレーションに分けて行い、上記後段シミュレーションステップである１次以後の１回以上のシミュレーションを設計コードや合成で生成されたネットリストに存在する１以上の設計客体に対してシミュレーションが行われるようにするのに必要な最小限の情報を上記前段シミュレーションステップである1次シミュレーション過程で収集できるように設計コードや合成で生成されたゲート水準のネットリストに付加コードや付加回路を検証ソフトウェアを用いて自動化された方式で追加し、上記１次以後の１回以上のシミュレーションを可視度を得ながらも速やかに行うことにより、シミュレーション速度とデバッグのための可視度を同時に確保することを可能にする検証方法。
【請求項５６】
すべての設計客体が変更がない状況において、同じ抽象化ステップで行われる前段シミュレーションにおいては、シミュレーションの過程で最小限のシミュレーション実行結果のみをシミュレーションの結果として保存し、上記保存された前段シミュレーションの結果を用いて、同じ抽象化ステップで行われる後段シミュレーションを、２以上のシミュレータを用いて並列的に、あるいは１つのシミュレータのみを用いて１回以上順次に速やかに行う同時に、必要に応じて後段シミュレーションにおいては、１以上の設計客体に存在する１以上の変数及びシグナルに対するダンプを行って、高い可視度も同時に提供する検証方法。
【請求項５７】
上記上位水準におけるシミュレーションの結果が、シミュレーション波形を保存した１以上のファイルを含み、上記１以上のファイルを下位水準において用いる、請求項３７に記載の検証方法。
【請求項５８】
上記上位水準におけるシミュレーションの結果としてシミュレーション波形を保存した１以上のファイルが存在することにより、上記１以上のファイルを下位水準において用いる、請求項３７に記載の検証方法。
【請求項５９】
シミュレーション波形を保存した１以上のファイルが上記上位水準におけるシミュレーションの結果として存在し、これを下位水準のシミュレーションでレファレンスとして活用して、１以上の特定のシミュレーション時点において、下位水準におけるシミュレーションの結果を上位水準におけるシミュレーションの結果と比べて、下位水準におけるシミュレーションの結果が上位水準におけるシミュレーションの結果と異なる状況を見出して設計を修正することにより、上記１以上の特定のシミュレーション時点において、下位水準におけるシミュレーションの結果と上位水準におけるシミュレーションの結果を同一にする、請求項３７に記載の設計検証及び設計修正方法。
【請求項６０】
上記１以上の特定のシミュレーション時点において、下位水準におけるシミュレーションの結果を上位水準におけるシミュレーションの結果と比べて、下位水準におけるシミュレーションの結果が上位水準におけるシミュレーションの結果と異なる状況を見出して設計を修正することにより、上記１以上の特定のシミュレーション時点において、下位水準におけるシミュレーションの結果と上位水準におけるシミュレーションの結果を同一にすることを、下位水準におけるシミュレーションの結果を上位水準におけるシミュレーションの結果と同一にすることにより達成する、請求項４４または５９に記載の設計検証及び設計修正方法。
【請求項６１】
上記１以上の特定のシミュレーション時点において、下位水準におけるシミュレーションの結果を上位水準におけるシミュレーションの結果と比べて、下位水準におけるシミュレーションの結果が上位水準におけるシミュレーションの結果と異なる状況を見出して設計を修正することにより、上記１以上の特定のシミュレーション時点において、下位水準におけるシミュレーションの結果と上位水準におけるシミュレーションの結果を同一にすることを、上位水準におけるシミュレーションの結果を下位水準におけるシミュレーションの結果と同一にすることにより達成する、請求項４４または５９に記載の設計検証及び設計修正方法。
【請求項６２】
上記上位水準におけるシミュレーションがトランスアクション−基盤シミュレーションであり、上記下位水準におけるシミュレーションがサイクル−基盤シミュレーションである、請求項４４または５９に記載の設計検証及び設計修正方法。
【請求項６３】
上記上位水準におけるシミュレーションが行為水準シミュレーションであり、上記下位水準におけるシミュレーションがレジスタ転送水準シミュレーションである、請求項４４または５９に記載の設計検証及び設計修正方法。
【請求項６４】
上記上位水準におけるシミュレーションの結果が、１以上の設計客体に対する状態情報と、シミュレーションの全区間にわたる上記１以上の設計客体に対するすべての入力と入力モード時の入出力情報を含む、請求項３７、５７または５８に記載の検証方法。
【請求項６５】
上記１以上の設計客体に対する状態情報が、シミュレーションの全区間上でのすべての状態情報ではないシミュレーション区間上での１以上の特定のシミュレーション時点のみにおける状態情報である、請求項３８または６４に記載の検証方法。
【請求項６６】
上記上位水準におけるシミュレーションの結果が、シミュレーションの全区間にわたる上記１以上の設計客体に対するすべての入力と入力モード時の入出力情報を含む、請求項３７、５７または５８に記載の検証方法。
【請求項６７】
下位水準におけるシミュレーションを速やかに行う方法が、上記シミュレーションの全区間にわたる上記１以上の設計客体に対するすべての入力と入力モード時の入出力情報を用いて、下位水準において２以上のシミュレーションを並列的に行う、請求項６６に記載の検証方法。
【請求項６８】
並列的遂行が時間的並列遂行と空間的並列遂行を混用した、請求項４１または６７に記載の検証方法。
【請求項６９】
下位水準におけるシミュレーションを速やかに行う方法が、上位水準におけるシミュレーションの過程で得られた１以上の設計客体に対する状態情報と、１以上の設計客体に対するすべての入力と入力モード時の入出力情報を用いることにより、下位水準において２以上のシミュレーションを用いた並列的遂行が時間的並列遂行と空間的並列遂行を混用して行われる、請求項３７、３８または６４に記載の検証方法。
【請求項７０】
上記上位水準におけるシミュレーションがトランスアクション−基盤方式であり、上記下位水準におけるシミュレーションがイベント−駆動方式である、請求項４４または５９に記載の設計検証及び設計修正方法。
【請求項７１】
上記上位水準におけるシミュレーションがトランスアクション−基盤方式とサイクル−基盤方式を共に用い、上記下位水準におけるシミュレーションがイベント−駆動方式である、請求項４４または５９に記載の設計検証及び設計修正方法。
【請求項７２】
上記元の設計コードと関数的に等価であるが、異なる構文形式に変換された設計コードにおいて、少なくとも一部分が論理変換あるいは論理合成の過程を通じて得られる、請求項２８に記載の検証方法。
【請求項７３】
上記元の設計コードと関数的に等価であるが、異なる構文形式に変換された設計コードが、少なくとも部分的に二進決定ダイヤグラム（ＢＤＤ）あるいは多進決定ダイアグラム（ＭＤＤ）で表現されてシミュレーションされる、請求項２８に記載の検証方法。
【請求項７４】
下位水準におけるシミュレーションの結果を用いて上位水準におけるシミュレーションの結果を部分的にあるいは全体的に修正する、上位水準におけるリシミュレーションを行う検証方法。
【請求項７５】
上位水準におけるシミュレーションの結果と下位水準におけるシミュレーションの結果をもって、１以上の特定のシミュレーション時点において、下位水準におけるシミュレーションの結果と上位水準におけるシミュレーションの結果を比べて、下位水準におけるシミュレーションの結果と上位水準におけるシミュレーションの結果が異なる状況を見出して他の部分での部分的シミュレーションを１回以上行うことにより、上記１以上の特定のシミュレーション時点において、下位水準におけるシミュレーションの結果と上位水準におけるシミュレーションの結果を同一にする、請求項３７または７４に記載の設計検証方法。
【請求項７６】
上記下位水準におけるシミュレーションの結果と上位水準におけるシミュレーションの結果が異なる部分における１回以上の部分的シミュレーションが、上位水準におけるシミュレーションの結果を下位水準におけるシミュレーションで用い、このようにして得られた下位水準におけるシミュレーションの結果を上位水準におけるシミュレーションで再利用し、このような過程を継続的に繰り返して適用することにより、下位水準におけるシミュレーションの結果と上位水準におけるシミュレーションの結果を同一にする、請求項７５に記載の設計検証方法。 
【請求項７７】
上記上位水準におけるシミュレーションがタイミング情報を用いていないゲート水準シミュレーションであり、上記下位水準におけるシミュレーションがタイミング情報を用いたゲート水準におけるタイミングシミュレーションである、請求項３７、４４または５９に記載の設計検証及び設計修正方法。
【請求項７８】
上記ゲート水準シミュレーションがタイミング情報を用いていないゲート水準シミュレーションの場合に、シミュレーションの対象となる設計客体の一部分が部分的に二進決定ダイヤグラム（ＢＤＤ）あるいは多進決定ダイアグラム（ＭＤＤ）で表現されてシミュレーションされる、請求項４７または７７に記載の検証方法。
【請求項７９】
上記上位水準におけるシミュレーションの結果を下位水準におけるシミュレーションで用い、このようにして得られた下位水準におけるシミュレーションの結果を上位水準におけるシミュレーションで再利用する繰り返し過程が、一度繰り返す度にシミュレーションする時間区間を狭めながら適用することにより、下位水準におけるシミュレーションの結果と上位水準におけるシミュレーションの結果を同一にする、請求項７６に記載の設計検証方法。
【請求項８０】
検証ソフトウェアと２以上の異なる検証プラットフォームを具備する設計検証装置において、
上記検証ソフトウェアは、設計コードや合成で生成されたゲート水準のネットリストに自動化された方式で付加コードや付加回路を付加して、上記２以上の異なる検証プラットフォームのうち１以上の特定の検証プラットフォーム上で１次検証実行を行いながら、１次検証実行以後の１次検証実行に用いられた１以上の特定の検証プラットフォームとは最小限１つ以上が異なる１以上の他の検証プラットフォーム上で行われる検証実行を、検証サイクル時間区間や設計コードや合成で生成されたゲート水準のネットリストに存在するブロックに対して検証実行が行われるようにするのに必要な最小限の情報を１次検証実行の過程で収集できるようにし、１次以後の１回以上の検証実行を速やかに行うことを可能とする設計検証装置。
【請求項８１】
上記２以上の異なる検証プラットフォーム中の特定の検証プラットフォーム上で１次検証実行を行いながら、１次検証実行以後の上記１次検証実行に用いられた１以上の特定の検証プラットフォームとは最小限１つ以上が異なる１以上の検証プラットフォーム上で行われる検証実行の検証サイクル時間区間や設計コード合成で生成されたゲート水準のネットリストに存在するブロックに対して検証実行が行われるようにするのに必要な最小限の情報を１次検証実行の過程で自動的に収集できるようにし、上記１次検証実行のための１以上の検証プラットフォームを用いた１次検証実行を行いながら上記最小限の情報を収集し、この収集された情報を用いることにより、上記１次検証実行に用いられた１以上の特定の検証プラットフォームとは最小限１つ以上が異なる１以上の検証プラットフォーム上で１次以後の１回以上の検証実行を０検証サイクル時間から開示されなくてもよいようにすることで、検証を速やかに行うことを可能とする、請求項８０に記載の設計検証装置。
【請求項８２】
２以上の異なる検証プラットフォーム中の特定１以上の検証プラットフォーム上で１次検証実行を行いながら、１次検証実行以後の上記１次検証実行に用いられた１以上の特定の検証プラットフォームとは最小限１つ以上が異なる１以上の検証プラットフォーム上で行われる検証実行の検証サイクル時間区間や設計コードや合成で生成されたゲート水準のネットリストに存在するブロックに対して検証実行が行われるようにするのに必要な最小限の情報を１次検証実行の過程で自動的に収集できるようにし、上記１次検証プラットフォームを用いた１次検証実行を行いながら上記最小限の情報を収集し、この収集された情報を用いることにより、上記１次検証実行のための１以上の検証プラットフォームを用いた１次検証実行に用いられた１以上の特定の検証プラットフォームとは最小限１つ以上が異なる検証プラットフォーム上で１次以後の１回以上の検証実行において、設計コードや合成で生成されたゲート水準のネットリストに存在する１以上の特定のブロックに対してのみ検証実行を可能とすることにより、検証を速やかに行うことを可能とする、請求項８０に記載の設計検証装置。
【請求項８３】
２以上の検証プラットフォームを混合的に用いて設計検証実行を行うことにより、設計コードや合成で生成されたゲート水準のネットリストに存在する設計誤謬の位置を見出してこれを修正する設計検証方法において、
上記検証遂行の一部は、前段検証として行われる1次検証及び後段検証として行われる1次以後検証に分かれ、追加的なコードまたは回路が設計コードまたは合成されたネットリストに自動的に付加され、上記２以上の他の検証プラットフォームの中の１以上の特定検証プラットフォーム上で1次検証実行を行いながら、1次検証実行以後の１次検証実行に用いられた１以上の特定検証プラットフォームとは少なくとも１つ以上で他の１以上の他の検証プラットフォーム上で行われる検証実行を検証サイクル時間区間や設計コードや合成で生成されたゲート水準のネットリストに存在する複数のブロックに対し、検証実行が行われるようにするのに必要な最小限の情報を１次検証実行の過程で収集できるようにし、１つ以上の特定ブロックに対してのみ行われる時、１つ以上の１次以後検証実行を速やかに行うことを可能とする設計検証装置。
【請求項８４】
上記検証遂行の一部は、前段検証として行われる1次検証及び後段として行われる1次以後検証に分かれ、追加的なコードまたは回路が設計コードまたは合成されたネットリストに自動的に付加され、上記２以上の他の検証プラットフォームの中の１以上の特定検証プラットフォーム上で1次検証実行を行いながら、1次検証実行以後の1次検証実行に用いられた１以上の特定検証プラットフォームとは少なくとも１つ以上で他の１以上の他の検証プラットフォーム上で行われる検証実行を検証サイクル時間区間や設計コードや合成で生成されたゲート水準のネットリストに存在する複数のブロックに対して検証実行が行われるようにするのに必要な最小限の情報を１次検証実行の過程で収集できるようにし、この実行の殆どがシミュレーション時間０ではない他のシミュレーション時間から始まる時、１つ以上の１次以後検証実行を速やかに行うことを可能とする設計検証装置。
【請求項８５】
１次以後の１次検証実行に用いられた１以上の特定の検証プラットフォームとは最小限１つ以上が異なる１以上の検証プラットフォーム上での１回以上の検証実行のそれぞれを、２以上の検証プラットフォーム上で並列的に行うことにより、検証を速やかに行うことを可能とする、請求項８３または８４に記載の検証方法。
【請求項８６】
１次以後の１次検証実行に用いられた１以上の特定の検証プラットフォームとは最小限１つ以上が異なる１以上の検証プラットフォーム上での１回以上の検証実行のそれぞれを行うための、上記２以上の検証プラットフォーム構成を２以上の互いに異なる、それぞれ異なる検証プラットフォームで構成してこれらを並列的に行うことにより、検証を速やかに行うことを可能とする、請求項８５に記載の検証方法。
【請求項８７】
１次以後の１次検証実行に用いられた１以上の特定の検証プラットフォームとは異なる検証プラットフォーム上での１回以上の検証実行のそれぞれを、１つの検証プラットフォーム上で順次に行うことにより検証を行うことを可能とする、請求項８３または８４に記載の検証方法。
【請求項８８】
１次以後の１回以上の検証実行において、検証実行のそれぞれにおいて行おうとする検証サイクルの全区間や検証サイクルの特定区間を、１以上の特定の検証プラットフォームを用いた１次検証実行で収集された２以上の状態情報から開示されるように、１次検証実行に用いられた１以上の特定の検証プラットフォームとは異なる１つの検証プラットフォームを２回以上順次に設定し、２回以上順次に上記他の１つの検証プラットフォームを実行する過程において、１次検証実行時に状態情報を保存する時点が検証時間的に最後にある状態情報を、まず上記１つの検証プラットフォームに設定してこの状態情報をもって進行し、その後の実行も上記１つの検証プラットフォームで行う過程において１次検証実行の過程で状態情報を保存した時点が検証時間的に後にあるものを優先して上記１つの検証プラットフォームに設定し、１次以後の検証実行のそれぞれが２以上の状態情報を用いて設計状態保存時間の逆順に進行しながら、設計コードや合成で生成されたゲート水準のネットリストに存在するシグナルと変数に対する探針を行う、請求項８３、８４、８５、８６または８７に記載の設計検証方法。
【請求項８９】
最小限の情報収集が、１次検証実行の過程で一定の間隔であるいは特定の時点でＤＵＶの状態情報と検証サイクル全体でＤＵＶのすべての入力と入出力情報を１以上のファイル形態で保存することを含む、請求項８０、８１、８２、８３または８４に記載の設計検証方法。
【請求項９０】
最小限の情報収集が１次検証実行の過程で一定の間隔であるいは特定の時点でＤＵＶの状態情報とＴＢの状態情報を１以上のファイル形態で保存することを含む、請求項８０、８１、８２、８３または８４に記載の設計検証方法。
【請求項９１】
１次検証実行に用いられた検証プラットフォームが１以上のシミュレータである場合において、最小限の情報収集が１次検証実行の過程で一定の間隔であるいは特定の時点でシミュレーション状態を１以上のファイル形態で保存することを含む、請求項８０、８１、８２、８３または８４に記載の設計検証方法。
【請求項９２】
上記１以上のシミュレータを用いた１次検証実行の施行中に１以上の時点でシミュレーション状態を保存する方法を、シミュレータのｓａｖｅ命令語を用い、１次以後の検証実行を上記選定された１以上のシミュレーション状態から抽出された状態情報から開示されるようにする、請求項９１に記載の設計検証方法。
【請求項９３】
最小限の情報収集が１次検証実行の過程で設計コードや合成で生成されたゲート水準のネットリストに存在する特定のブロックの入力と入出力を、検証サイクル全体で持続的に探針して１以上のファイル形態で保存することを含む、請求項８０、８１、８２、８３または８４に記載の設計検証方法。
【請求項９４】
１次以後の検証実行のそれぞれを１次検証実行の過程で保存された２以上のＤＵＶ状態情報のそれぞれを用いて２回以上の部分検証実行をするものに切り換え、コンピュータネットワークで連結された２以上のコンピュータにインストールされた２以上の検証プラットフォームを用いて上記２以上の状態情報のそれぞれを上記２以上の検証プラットフォームのそれぞれに設定して２回以上の部分検証実行が互いに独立的に上記２以上の検証プラットフォームで並列的に実行し、実行された２以上の結果をコンピュータネットワークを用いて１つのコンピュータに伝送し統合して全体の検証結果として提供する、請求項８５または８６に記載の設計検証方法。
【請求項９５】
１次以後の検証実行のそれぞれを、１次検証実行を通じて得られた２以上のブロックと、これらのブロックそれぞれのすべての入力と入出力を１次検証実行の全過程で探針した２以上の探針ファイルをコンパイルして得られた２以上の実行ファイルを、コンピュータネットワークで連結された２以上のコンピュータにインストールされた２以上の検証プラットフォームを用いて独立的かつ並列的に行い、実行された２以上の結果をコンピュータネットワークを用いて１つのコンピュータに転送して統合し、全体の検証結果として提供する、請求項８５または８６に記載の設計検証方法。
【請求項９６】
１次検証実行の施行中に１以上の時点で保存された１以上の状態情報の中で１以上の状態情報を選定して、１次以後の設計検証を上記選定された１以上の状態情報から開示されるように、１次検証実行で用いられた検証プラットフォームとは異なる検証プラットフォームを１回以上設定した後、検証実行を１回以上進行しながら、設計コードや合成で生成されたゲート水準のネットリストに存在するシグナルと変数に対する探針を行う、請求項８２に記載の設計検証方法。
【請求項９７】
１次検証実行中に設計コードや合成で生成されたゲート水準のネットリストに存在する１以上のブロックに対する入力と入出力を検証実行の検証サイクル全過程で探針して保存した１以上の探針ファイルの中で１以上を選定して、１次以後の検証実行を上記選定された１以上の探針ファイルと該当１以上のブロックを用いて、１次検証実行で用いられた検証プラットフォームとは異なる検証プラットフォームのためにコンパイルして生成された１以上のファイルの中で、追加的な探針が必要な設計コードや合成で生成されたゲート水準のネットリストに存在するシグナルと変数を有している該当１以上のブロックに係るファイルを用いて上記追加的な探針を行う、請求項８３に記載の設計検証方法。
【請求項９８】
任意のシミュレーション遂行、シミュレーション加速遂行、ハードウェアエミュレーション遂行、またはプロトタイピング遂行を通じて得られた結果を用いた追加的な設計検証遂行において、上記追加的な設計検証遂行を前段検証としての１次検証実行と、後段検証としての１次以後検証実行に分けて行い、設計コードや合成で生成されたゲート水準のネットリストに存在する１つ以上の設計客体に対して１つ以上の１次以後検証実行が行われるようにするのに必要な最小限の情報を、１次検証実行の過程で収集できるようにし、検証を速やかに行うことを可能とする検証方法。
【請求項９９】
検証ソフトウェアと１以上の検証プラットフォームを具備する設計検証装置において、
上記検証ソフトウェアは、設計客体で構成される設計コードや設計回路に自動化された方式で付加コードや付加回路を追加して、１回以上の検証実行の途中で動的情報の収集を可能とし、この収集された動的情報を１以上の設計客体が変更された後に実行される検証実行に再活用することにより、検証実行の全体時間を全体的にあるいは部分的に短縮できるようにする設計検証装置。
【請求項１００】
検証ソフトウェアと１以上の検証プラットフォームを用いて、設計客体で構成される設計コードや設計回路に自動化された方式で付加コードや付加回路を追加して、１回以上の検証実行の途中に動的情報の収集を可能とし、この収集された動的情報を１以上の設計客体が変更された後に実行される検証実行に再活用することにより、検証実行の全体時間を全体的にあるいは部分的に短縮できるようにする設計検証方法。
【請求項１０１】
１以上の設計客体の変更後の設計検証実行結果が、設計客体の変更前の設計検証実行結果と検証時間の側面において最初に異なってくる時点を見出す方法を、変更された１以上の設計客体のすべての出力と両方向の入出力値と、変更される前の上記１以上の設計客体のすべての出力と両方向の入出力値と比べて、自動化された方式で見出す、請求項９９または１００に記載の設計検証方法。
【請求項１０２】
１以上の設計客体の変更後の設計検証実行結果が、設計客体の変更前の設計検証実行結果と検証時間の側面において最初に異なってくる時点を見出す方法を、変更された１以上の設計客体のすべての出力値と、変更される前の上記１以上の設計客体のすべての出力値と比べて、自動化された方式で見出す、請求項９９または１００に記載の設計検証方法。
【請求項１０３】
１以上の設計客体の変更後の設計検証実行結果が、設計客体の変更前の設計検証実行結果と検証時間の側面において最初に異なってくる時点を見出す方法を、変更前の１回以上の検証実行の過程で得られる再生用入力情報を、変更された１以上の設計客体のみに印加して、自動化された方式で見出す、請求項９９または１００に記載の設計検証方法。
【請求項１０４】
１以上の設計客体の変更後に行われる検証実行において、上記１以上の設計客体の変更によって、設計検証実行結果が設計客体の変更前の設計検証実行結果と検証時間の側面において最初に異なってくる時点までは、変更された設計客体とこれらの再生用入力情報のみを用いた検証遂行を通じて速やかに検証する、請求項９９、１００、１０１，１０２または１０３に記載の設計検証方法。
【請求項１０５】
１以上の設計客体の変更後に行われる検証実行において、上記１以上の設計客体の変更によって、設計検証実行結果が設計客体の変更前の設計検証実行結果と検証時間の側面において最初に異なってくる時点までは、変更された設計客体とこれらの再生用入力情報を用いた検証遂行とともに、設計変更が行われていない設計客体の一部分のみを用いた検証遂行のみを通じて速やかに検証する、請求項９９、１００、１０１，１０２または１０３に記載の設計検証方法。
【請求項１０６】
１以上の設計客体の変更後に行われる検証実行において、上記１以上の設計客体の変更によって、設計検証実行結果が設計客体の変更前の設計検証実行結果と検証時間の側面において最初に異なってくる時点以後からは、すべての設計客体を含む検証実行に自動的に切り換えて検証実行する、請求項９９、１００、１０１，１０２または１０３に記載の設計検証方法。
【請求項１０７】
１以上の設計客体の変更後に行われる検証実行において、上記１以上の設計客体の変更によって、設計検証実行結果が設計客体の変更前の設計検証実行結果と検証時間の側面において異なってくる１以上の特定の時点から、さらに等しくなる特定の時点までは、すべての設計客体を含む検証実行に自動的に切り換えて検証実行する、請求項９９、１００、１０１，１０２または１０３に記載の設計検証方法。
【請求項１０８】
１以上の設計客体の変更後に行われる検証実行において、上記１以上の設計客体の変更によって、設計検証実行結果が設計客体の変更前の設計検証実行結果と検証時間の側面において最初に異なってくる時点までは、変更された設計客体とこれらの再生用入力情報を用いて速やかに検証し、上記最初に異なってくる時点以後からはすべての設計客体を含む検証実行に自動的に切り換えて検証実行する、請求項９９、１００、１０１，１０２または１０３に記載の設計検証方法。
【請求項１０９】
上記最初に異なってくる時点以後からはすべての設計客体を含む検証実行に自動的に切り換えるために、設計変更されていない設計客体の状態情報の復元を、上記最初に異なってくる時点の付近で設計変更が行われる前に行われた検証実行の過程で収集された設計客体の状態情報を活用して、自動化された方式で行われる、請求項１０６または１０８に記載の設計検証方法。
【請求項１１０】
上記設計客体の状態情報の復元は、シミュレータの再出発機能によるし、設計状態の保存は、シミュレータのスナップショット機能による、請求項１０９に記載の設計検証方法。
【請求項１１１】
シミュレータの再出発機能を用いる場合に、これをシミュレータのｒｅｓｔｏｒｅやｒｅｓｔａｒｔ命令を用い、シミュレータのスナップショット機能を用いる場合に、これをシミュレータのｓａｖｅやｃｈｅｃｋｐｏｉｎｔ命令を用いる、請求項１１０に記載の設計検証方法。
【請求項１１２】
１以上の設計客体の変更によって、設計検証実行結果が設計客体の変更前の設計検証実行結果と検証時間の側面において最初に異なってくる時点を見出す方法を、変更された１以上の設計客体のすべての出力と両方向の入出力値と、変更される前の上記１以上の設計客体のすべての出力と両方向の入出力値と順次に比べて自動化された方式で見出す、請求項９９または１００に記載の設計検証方法。
【請求項１１３】
１以上の設計客体の変更によって、設計検証実行結果が設計客体の変更前の設計検証実行結果と検証時間の側面において最初に異なってくる時点を見出す方法を、変更される前の設計客体に対する１以上の検証時点での動的情報を並列的に用いて自動化された方式で見出す、請求項９９または１００に記載の設計検証方法。
【請求項１１４】
上記検証プラットフォームが、シミュレータ、シミュレーションアクセル、エミュレータ、プロトタイピングシステムまたはこれらの混合からなる、請求項９９に記載の設計検証装置。
【請求項１１５】
上記検証遂行の全体あるいは一部分がシミュレータを通じて行われる場合には、全体の検証遂行のために２以上のプロセスをプロセス間の通信を用いて連動する、請求項９９、１００、１０１、１０２、１０３、１０４、１０５、１１０または１１１に記載の設計検証方法。
【請求項１１６】
検証遂行の途中にプロセス間の通信を用いて連動される上記２個以上のプロセスの中で、最小限１個のプロセスに対してスナップショットを活用して設計コード変更前の検証遂行の過程で１以上の設計客体に対する動的情報を収集し、設計コードの変更後に実行される特定の時間帯からの検証実行を上記動的情報を用いた再出発を通じて行うことにより、上記１以上の設計客体が変更された後の検証実行の全体時間を全体的にあるいは部分的に短縮する、請求項１１５に記載の設計検証方法。
【請求項１１７】
上記スナップショットを、シミュレータのｓａｖｅ機能あるいはｃｈｅｃｋｐｏｉｎｔ機能を用い、上記再出発をシミュレータのｒｅｓｔａｒｔ機能あるいはｒｅｓｔｏｒｅ機能を用いる、請求項１１６に記載の設計検証方法。
【請求項１１８】
検証プラットフォームとしてシミュレーションアクセルを用いる場合、あるいはシミュレーションアクセルが含まれた検証プラットフォームを用いる、請求項９９、１００、１０１、１０２、１０３、１０４、１０５、１０６、１０８、１０９、１１５、１１６または１１７に記載の設計検証方法。 
【請求項１１９】
上記設計変更後に行われる検証実行の過程で、上記自動に切り換わる時点の決定が、上記付加コードが設計客体に追加されて検証実行の過程で行われることにより自動的に行われる、請求項１０６、１０８、１０９、１１０または１１１に記載の設計検証方法。
【請求項１２０】
上記設計変更後に行われる検証実行の過程で、上記自動に切り換わる時点における設計変更された設計客体の動的情報と、設計変更されていない設計客体の動的情報のような検証時間帯に正確に合わせることが、付加コードが設計客体に追加されて検証実行の過程で行われることにより自動的に行われる、請求項１０６、１０８、１０９、１１０または１１１に記載の設計検証方法。
【請求項１２１】
上記設計変更後に行われる検証実行の過程で、上記自動に切り換わる時点からはすべての設計客体を用いた設計検証に切り換わって検証遂行されることが、付加コードが設計客体に追加されて検証実行の過程で行われることにより自動的に行われる、請求項１０６、１０８、１０９、１１０または１１１に記載の設計検証方法。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
（技術分野）
本発明は、デジタル回路やシステムを検証する装置と方法に関し、具体的に、本発明はシステム半導体設計検証装置を用いた設計検証を效果的に行うための検証装置及び検証方法に関する。さらに具体的には、本発明は設計検証の遂行時の検証性能向上と検証時間短縮を可能とする検証装置及び検証方法に関する。
【０００２】
（関連技術の説明）
本発明は、数百万ゲート級以上のデジタルシステムの設計を検証する技術に関し、数百万ゲート級以上のデジタルシステムをシミュレーションを通じて検証しようとする場合に、シミュレーションを用いた検証の性能と效率性を増加させる検証装置及びこれを用いた検証方法に関する。
【０００３】
最近、集積回路の設計及び半導体工程技術が急激に発達するにつれて、デジタル回路設計の規模が、最小数百万ゲート級から数千万ゲート級まで大きくなるのはもちろん、その構成が極めて複雑化している傾向である。近来では１億ゲート級以上の設計も予想されている。しかし、市場での競争はより一層激しくなるため、短時間で優秀な製品を開発しなければならないが、最近のチップ設計における設計検証は、全設計時間の中で最大７０％までの時間を占めるようになる。従って、設計された回路を短時間で自動化された方法により效率的に設計検証するための效果的な方法の必要性が益々大きくなっている。デジタルシステムをチップに設計する場合は、設計する対象が２つある。その１つはＤＵＶ（Ｄｅｓｉｇｎ Ｕｎｄｅｒ Ｖｅｒｉｆｉｃａｔｉｏｎ）であり、もう１つはテストベンチ（ｔｅｓｔｂｅｎｃｈ、以下、ＴＢと称する）である。ＤＵＶは窮極的に半導体製造工程を経てチップに作られる設計対象であり、ＴＢは具現された該当チップが取り付けられて動作する周辺状況をモデリングしたものである。ＴＢはＤＵＶのシミュレーションに用いられる。ＤＵＶをシミュレーションを通じて検証しようとする場合、テストベンチがＤＵＶに入力を印加し、印加された入力から出力を受け入れるのが一般的である。
【０００４】
現在までは、設計されたデジタル回路を設計検証するために、ハードウェア技術言語（Ｈａｒｄｗａｒｅ Ｄｅｓｃｒｉｐｔｉｏｎ Ｌａｎｇｕａｇｅ、以下ＨＤＬと称する）やシステム技術言語（Ｓｙｓｔｅｍ Ｄｅｓｃｒｉｐｔｉｏｎ Ｌａｎｇｕａｇｅ、以下ＳＤＬと称する）やハードウェア検証言語（Ｈａｒｄｗａｒｅ Ｖｅｒｉｆｉｃａｔｉｏｎ Ｌａｎｇｕａｇｅ、以下ＨＶＬと称する）を用いた。設計初期には、ＨＤＬシミュレータ（例えば、Ｖｅｒｉｌｏｇシミュレータ、ＶＨＤＬシミュレータ、ＳｙｓｔｅｍＶｅｒｉｌｏｇシミュレータ等）やＳＤＬシミュレータ（例えば、ＳｙｓｔｅｍＣシミュレータ、ＨＷ／ＳＷ ｃｏ−ｓｉｍｕｌａｔｏｒ等）が主に用いられているが、場合によっては、これらと共にＨＶＬシミュレータ（例えば、Ｖｅｒａシミュレータ、ｅシミュレータ等）も用いられている。これらのすべてはソフトウェア基盤の接近法であり、このようなシミュレータは、設計検証の対象回路とテストベンチをソフトウェア的にモデリングした順次的なインストラクションシーケンスで構成されたソフトウェアコードをコンピュータ上で順次に行われなければならないため、上記数百万ゲート級以上の設計に対しては、シミュレーション性能の低下が設計対象の大きさに比例して発生する。例えば、１０００万ゲート級以上の設計をＨＤＬシミュレータやＳＤＬシミュレータでシミュレーションする場合、最も速いプロセッサを取り付けたコンピュータにおいて該当ＨＤＬシミュレータで設計をシミュレーションする場合、シミュレーション速度はレジスタ転送水準（Ｒｅｇｉｓｔｅｒ Ｔｒａｎｓｆｅｒ Ｌｅｖｅｌ、以下ＲＴＬと称する）にする場合、１０−１００ｃｙｃｌｅｓ／ｓｅｃを超え難く、ゲート水準でシミュレーションを進行すると、１−１０ｃｙｃｌｅｓ／ｓｅｃを超え難いのが非常に一般的である。しかし、該当設計を検証するために必要なシミュレーションサイクルは、最小数百万サイクルから最大数十億サイクルが必要となるので、全体シミュレーション時間は想像を超える長時間がかかってしまう。
【０００５】
このような長時間の検証時間を短縮するために、現在用いられている技術は次のようなものがある。第一、ハードウェア基盤の検証システム（例えば、シミュレーションアクセル、ハードウェアエミュレータ、ＦＰＧＡプロトタイピングシステム等）を用い、第二、１以上のコンピュータ（例えば、１００台のワークステーション）のそれぞれにＨＤＬシミュレータをインストールし、これを高速のネットワークを通じて連結したシミュレーションファーム（ｓｉｍｕｌａｔｉｏｎ ｆａｒｍ）を用いることである。しかし、ハードウェア基盤の検証システムを用いることは、設計初期には適用が不可能であり、合成（ｓｙｎｔｈｅｓｉｓ）やコンパイル過程がＨＤＬシミュレータを用いるよりずっと長いため、その使用がＨＤＬシミュレータに比べて極めて困難であり、システムの購入費用とメンテナンス費用が非常に大きいだけでなく、なによりも設計者や検証エンジニアのＨＤＬシミュレータに対する選好度が、これらのハードウェア基盤の検証システムに比べて非常に高い。また、ＨＤＬシミュレータでは何ら問題なしに行われていた設計コードが、ハードウェア基盤の検証システムでは行われない場合が多いため、これらのハードウェア基盤の検証システムは、制限的な状況及び制限的なユーザにおいてのみ用いられている問題点がある。さらに、シミュレーションファームを用いてシミュレーションの性能を向上させることは、シミュレーションのための設計コードやテストベンチが２以上の場合にのみ可能である。また、テストベンチが複数である場合も、これらの中で遂行時間を最も多く要するテストベンチによって全体シミュレーション時間が決定される問題点（例えば、特定のテストベンチによるシミュレーション時間が一週間を要する場合は、シミュレーションファーム（ｓｉｍｕｌａｔｉｏｎ ｆａｒｍ）を用いても一週間のシミュレーション時間をさらに短縮することはできない）がある。このような状況は、ＳＤＬシミュレータを用いる場合も同様であり、ＨＶＬシミュレータを用いる場合も同様である。特に、最近では、テストベンチの複雑度が非常に増加しており、テストベンチ内に多様なコンポーネント（例えば、ランダム入力スティミュラス発生器、モニタ、検査器、カバリッジ分析器、応答検査器等）が存在することで、上位水準で抽象化されて記述(ｄｅｓｃｒｉｂｅ)されたテストベンチのオーバーヘッドが極めて大きくなるので、これもまたシミュレーションの遂行速度を低減する主な原因の１つとして作用している。
【０００６】
このような多様なテストベンチ、あるいは場合によってはＤＵＶ内のコンポーネントは、検証の定量化と自動化のために用いられるテストベンチ自動化（ｔｅｓｔｂｅｎｃｈ ａｕｔｏｍａｔｉｏｎ）、カバリッジ指向検証（ｃｏｖｅｒａｇｅ−ｄｒｉｖｅｎ ｖｅｒｉｆｉｃａｔｉｏｎ）、主張基盤検証（ａｓｓｅｒｔｉｏｎ−ｂａｓｅｄ ｖｅｒｉｆｉｃａｔｉｏｎ）等の最近の発展された検証で必ず必要なものであるが、前記で指摘したとおりこれらの使用はシミュレーションの速度をさらに低減する結果を招いてしまう。さらに、このような発展した検証技法を通じては、バグの存在有無のみがわかり、または、バグが存在する大枠の位置のみの予測しかできず、バグが正確にどこに存在しているかを見出すことは極めて困難である。バグが正確にどこに存在するかを見出してこれを除去することは、知能を所有した設計者の役割である。そのためには、シミュレーションの過程において、ＤＵＶに、場合によっては、ＴＢに存在するシグナルや変数の値を探針（ｐｒｏｂｉｎｇ）して保存し、これを設計者が確認する過程が必ず必要となる。しかし、このような２つの状況が相まって、シミュレーションの速度低下はさらに大きく現われるようになる。
【０００７】
さらに、ＨＶＬを用いてテストベンチを述べると、一般的にＨＤＬシミュレータのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ Ｐｒｏｇｒａｍ Ｉｎｔｅｒｆａｃｅ）であるＶＰＩ／ＰＬＩ／ＦＬＩ等を必ず用いなければならないが、これの使用もシミュレーションの遂行速度を低減する主な要素のもう１つとして作用している。それだけでなく、設計の殆どはレジスタ転送水準（Ｒｅｇｉｓｔｅｒ Ｔｒａｎｓｆｅｒ Ｌｅｖｅｌ、以下ＲＴＬと称する）から始まり、合成技術を用いてネットリストで合成される。一方では、設計複雑度の増加を解決しようと、ＲＴＬ水準よりも高い段階である行為水準（ｂｅｈａｖｉｏｒａｌ ｌｅｖｅｌ）またはシステムレベル水準でＤＵＶとＴＢを共に記述してＲＴＬ構造を自動生成し、最終的にネットリストも自動生成しようとする試みがある。しかし、このような新しい方法が普遍化できるかどうかは極めて不透明な状況であるが、その理由は、ほとんどのハードウェア設計者はＲＴＬ水準における設計に慣れているからであり、ＲＴＬ水準よりも上位水準で記述された設計の合成結果が、一般的にＲＴＬにおいて記述されて合成された結果に比べて、動作速度／面積等において遅れているからである。最近の数千万ゲート級の設計は、ほとんど内部に１個以上のプロセッサを内蔵しているＳＯＣ（Ｓｙｓｔｅｍ Ｏｎ ａ Ｃｈｉｐ）設計である。このようなＳＯＣは、内蔵されたプロセッサを駆動する大容量のソフトウェアを内蔵している。ＳＯＣ設計ではこのような内臓ソフトウェアの開発がハードウェアの開発と同時的に進行することができるハードウェア／ソフトウェア同時設計（ｃｏ−ｄｅｓｉｇｎ）及び同時検証（ｃｏ−ｖｅｒｉｆｉｃａｔｉｏｎ）が必須である。しかし、ＲＴＬ水準で記術されたＤＵＶの遂行速度は、内臓ソフトウェアを開発するためのプラットフォームとして用いられるには非常に遅いが、ソフトウェア開発者は、開発しようとするソフトウェアを速やかに行えるプラットフォームを、ハードウェアの設計が進行されている時点で既に必要とする。
【０００８】
現在最も多く用いられているシミュレーションは、イベント−駆動（ｅｖｅｎｔ−ｄｒｉｖｅｎ）シミュレーションである。シミュレーションは、他にサイクル−基盤（ｃｙｃｌｅ−ｂａｓｅｄ）シミュレーション、トランスアクション−基盤（ｔｒａｎｓａｃｔｉｏｎ−ｂａｓｅｄ）シミュレーション等がある。抽象化（ａｂｓｔｒａｃｔｉｏｎ）された基準からみれば、イベント−駆動がサイクル−基盤よりは抽象化されていないものであり、サイクル−基盤がトランスアクション−基盤よりは抽象化されていないものである。サイクル−基盤シミュレーションは、イベント−駆動シミュレーションよりも略１０−１００倍速いが、イベント−駆動シミュレーションに比べて制約性が多い。従って、ハードウェア設計者からサイクル−基盤シミュレーションは徹底的に排除され、ほとんどのハードウェア設計者はイベント−駆動シミュレーションを絶対的に好んでいる実情である。また、現在イベント−駆動シミュレーション、サイクル−基盤シミュレーション、トランスアクション−基盤シミュレーション等は、それぞれ独立的にのみ用いられている状況である。結果として、このような状況は全体検証の效率性と性能を制約する要素になっている。
【０００９】
（発明の要旨）
本発明の目的は、超大規模級デジタルシステム設計に対する検証のためのシミュレーションの性能及び效率性を大きく向上させるシミュレーション基盤の設計検証装置及びこれを用いた設計検証方法を提供することにある。具体的には、本発明で言及される技術は、設計された数百万ゲート級以上のデジタルシステムを、シミュレーションと、必要によってはこれと共に、正式検証、シミュレーション加速、ハードウェアエミュレーション、プロトタイピング（これらを検証プラットフォームと総称する）をも用いて検証しようとする場合にも検証の性能と效率性を増加させる検証装置及びこれを用いた検証方法に関する。
【００１０】
シミュレーションを行った後、設計誤謬に対するデバッグを行うために、設計コードに存在するシグナルや変数に対する可視度（ｖｉｓｉｂｉｌｉｔｙ）が要求される。しかし、問題は設計誤謬の正確な位置を見出すために、検証遂行前に具体的にどの特定のシグナルや変数に対する可視性がどの検証区間で必要であるかを予測することが困難であることである。従って、シミュレーションを行う時に、最初から設計コードに存在するすべてのシグナルと変数に対して探針可能であるように、これらのすべてをダンプ（ｄｕｍｐ）対象として選定した後シミュレーションを行うことが一般的である。しかし、設計コードに存在するすべてのシグナルと変数をダンプしながらシミュレーションを行う場合には、全くダンプしないでシミュレーションを行うことと比べてシミュレーションの遂行時間が略２倍から１０倍以上も長くなる。
【００１１】
本発明では、設計コードにおいてバグの位置を正確に把握するために、設計コードに存在するすべてのシグナルと変数に対してシミュレーションの始めからダンプを行う既存の方法とは違って、シミュレーションの遂行時間を大きく増やさずに、または既存の方法と比べてシミュレーションの遂行時間を大きく短縮しながらも設計コードにおいてバグの位置を見出せるようにする自動化された方法と、そのための検証装置を提供することを目的とする。
【００１２】
本発明の他の目的としては、発展した検証技法で用いられるテストベンチ自動化、カバリッジ指向検証、主張基盤検証等を用いながらも、同時にＤＵＶに対する高い可視度を速やかに確保する自動化された方法と、そのための検証装置を提供することである。本発明のまた他の目的は、下向式に進行される設計過程において、抽象化ステップの上位水準で行われたシミュレーションの結果を抽象化ステップの下位水準で行われるシミュレーションに用いることにより、ＤＵＶに対する高い可視度を速やかに確保すると同時に、全体シミュレーション時間を大きく短縮できるようにする自動化された方法と、そのための検証装置を提供することである。これは、ハードウェア検証或いはソフトウェア検証或いはハードウェア／ソフトウェア同時検証を效果的に可能とすることである。
【００１３】
本発明のまた他の目的としては、自動化された方式を通じ、上位ステップの設計抽象化の検証結果を下位ステップの設計抽象化での検証に用いて複数の抽象化ステップにわたって、存在する全体的な検証性能及び効率を増加させることであり、それにより下位ステップの設計抽象化の検証を加速化し、必要な場合には上位ステップの抽象化の検証結果をレファレンスで用いて下位ステップの設計抽象化での検証効率を増加させることである。
本発明のまた他の目的としては、自動化された方式を通じ、上位ステップの設計抽象化の検証結果を下位ステップの設計抽象化での検証に用いて複数の抽象化ステップにわたって存在する全体的な検証性能及び効率を増加させることであり、それにより下位ステップの設計抽象化の検証を加速化し、必要な場合には下位ステップの抽象化の検証結果をレファレンスで用いて上位ステップの設計抽象化での検証効率を増加させることである。
【００１４】
本発明のまた他の目的としては、上位ステップから下位ステップに進行される設計過程に従って、検証も上位ステップから下位ステップに進行される過程で、各ステップに最も好適な方式のシミュレーションをトランスアクション−基盤シミュレーション、サイクル−基盤シミュレーション、イベント−駆動シミュレーションの中で最適であるように選定して用い、特定の抽象化ステップの検証結果を他の抽象化ステップの検証結果に自動化された方式で用いて、上記他の抽象化ステップでの検証が速やかに行えるようにし、全体的な検証の速度向上と效率性向上を可能とすることである。
【００１５】
本発明のまた他の目的は、シミュレーションと共に、正式検証、シミュレーション加速、ハードウェアエミュレーション、プロトタイピングの１以上を用いて設計検証を行うことにより、全体検証の性能と效率性を増加させることを可能とすることである。
【００１６】
（好ましい実施形態の詳細な説明）
上記の目的を達成するために、本発明による設計検証装置は、検証ソフトウェアと１以上の検証プラットフォーム（例えば、シミュレータ）がインストールされた１以上のコンピュータで構成される。検証ソフトウェアはコンピュータで実行され、若し上記設計検証装置に２以上のコンピュータがある場合には、これらの２以上のコンピュータはネットワークで連結されて、コンピュータ間のファイル移動がネットワークを通じて可能とする。上記１以上の検証プラットフォームは、シミュレータ、またはシミュレーションアクセル、またはモデル検査器や特性検査器のような正式検証器、またはハードウェアエミュレータ、またはプロトタイピングシステムであってもよいが、先ずは特に言及がない限り、検証プラットフォームをシミュレータに限定して説明することとする。
【００１７】
上記１以上の検証プラットフォームがシミュレータである場合には、これらのシミュレータはイベント−駆動シミュレータのみで構成されてもよく、イベント−駆動シミュレータとサイクル−基盤シミュレータで構成されてもよく、サイクル−基盤シミュレータのみで構成されてもよく、サイクル−基盤シミュレータとトランスアクション−基盤シミュレータで構成されてもよく、イベント−駆動シミュレータとサイクル−基盤シミュレータとトランスアクション−基盤シミュレータで構成されてもよい。
【００１８】
本発明で提案される検証装置と検証方法は、検証プラットフォームがシミュレータである場合には、ハードウェア設計コード自体を検証する関数的検証（ｆｕｎｃｔｉｏｎａｌ ｖｅｒｉｆｉｃａｔｉｏｎ）に用いることができるだけでなく、設計コードを合成したゲート水準のネットリストを用いたゲート水準の検証でも用いることができ、または、配置（ｐｌａｃｅｍｅｎｔ）及び配線（ｒｏｕｔｉｎｇ）となり、抽出されたタイミング情報をゲート水準のネットリストに添付して（ｂａｃｋ−ａｎｎｏｔａｔｅｄ）行うタイミング検証においても用いることができる。しかし、ゲート水準検証やタイミング検証に対しても同様の方法を適用することができるので、詳細な説明は関数的検証に重点を置く。それだけでなく、関数的検証においても、レジスタ転送水準（Ｒｅｇｉｓｔｅｒ Ｔｒａｎｓｆｅｒ Ｌｅｖｅｌ、ＲＴＬ）だけでなく、これよりも上位水準である行為水準（ｂｅｈａｖｉｏｒａｌ ｌｅｖｅｌ）やトランスアクションスズン（ｔｒａｎｓａｃｔｉｏｎ ｌｅｖｅｌ）においても適用することができる。しかし、詳細な説明は主にＲＴＬにおける関数的検証について説明する。それだけでなく、これらの様々な水準における検証を統合化して進行される混用水準における検証においても適用することができる。
【００１９】
上記検証ソフトウェアは、設計コードを読み込んだ後、これに追加して付加コードや付加回路を自動化された方式で付加する。付加コードや付加回路は、基本的に追加されるＨＤＬコード、あるいはＳＤＬコード、あるいはＨＶＬコード、あるいはＣ／Ｃ＋＋コード、あるいはシミュレーション命令語、あるいはこれらの組合せである。シミュレーションを行う過程におけるシミュレーション時間で一定の間隔あるいは１以上の特定のシミュレーション時点において、シミュレーションの状態や、可視度が必要なＤＵＶにおける１以上の設計客体（以下で説明する）の状態と場合によっては、ＴＢの状態までを保存する役割を果たし、また後でユーザの要求に応じて保存されたシミュレーションの状態や、保存された上記可視度が必要なＤＵＶにおける１以上の設計客体の状態から、あるいは保存された上記可視度が必要なＤＵＶにおける１以上の設計客体の状態と、ＴＢの状態からシミュレーションを再開する。可視度が必要なＤＵＶにおける１以上の設計客体の状態は保存されるが、ＴＢの状態は保存されない場合には、ＴＢの代わりにシミュレーションの全区間にわたってすべての入力値と入力モード時のすべての入出力値が保存される。この保存は、イベントの発生時毎に、またはサイクル毎に、またはトランスアクション毎に保存されることができる。
【００２０】
シミュレーションの状態とは、シミュレータというソフトウェアプログラムが行われる過程における特定のシミュレーション時点にいて、シミュレータのすべての静的情報と動的情報をいう。これは、マルチプログラミング環境で任意のプログラム（あるいはプロセス、あるいはスレッド）がしばらく遂行を止める状態（ｗａｉｔ）になり、後で再開（ｒｅｓｕｍｅ）するために保存されなければならないプログラムの状態情報に類似する。
【００２１】
設計客体の状態（ｓｔａｔｅ）とは、設計客体に存在する変数やシグナルの特定のシミュレーション時点における値をいう。設計客体の状態は完全状態情報と不完全状態情報に分けられ、最小状態情報は不完全状態情報の特別な場合である。設計客体の完全状態とは、該当設計客体に存在するすべての変数やシグナルの特定のシミュレーション時点における値をいい、設計客体の不完全状態とは、該当設計客体に存在する１以上の任意の変数やシグナルの特定のシミュレーション時点における値をいう。また、設計客体の最小状態とは、該当設計客体に存在するすべての変数やシグナルのうち記憶素子（フリップフロップ、あるいはラッチ、あるいはメモリセル）の出力ネームになる変数やシグナルのみの値と、組合フィードバックループ（ｃｏｍｂｉｎａｔｉｏｎａｌ ｆｅｅｄ−ｂａｃｋ）が、上記可視度が必要なＤＵＶにおける１以上の設計客体に存在する場合には、フィードバックループ経路上の変数やシグナルの値をいう。
【００２２】
ＴＢの状態とは、ＴＢに存在する変数やシグナルの特定のシミュレーション時点における値をいう。また、このような保存されたシミュレーションの状態や、保存された可視度が必要なＤＵＶにおける１以上の設計客体の状態と、場合によっては、ＴＢの状態から（可視度が必要なＤＵＶにおける１以上の設計客体の状態は保存するが、ＴＢの状態を保存しない場合には、ＴＢの状態の代わりに、シミュレーションの全区間にわたって上記可視度が必要なＤＵＶにおける１以上の設計客体のすべての入力値と入力モード時のすべての入出力値を、該入力または入出力において、イベントが発生する毎に、あるいはサイクル毎に、あるいはトランスアクション毎に保存されたものと、上記保存された可視度が必要なＤＵＶにおける１以上の設計客体の状態を用いて）シミュレーションを再開する場合には、ユーザの意図とおりに、設計コードに存在するすべてのシグナルと変数に対する探針を行うためのダンプを並行するか、または設計コードに存在する特定のシグナルや変数に対する探針を行うためのダンプを並行する。
【００２３】
シミュレータとして、ＨＤＬシミュレータ（例えば、Ｖｅｒｉｌｏｇシミュレータ、ＶＨＤＬシミュレータ、またはＳｙｓｔｅｍＶｅｒｉｌｏｇシミュレータ等）を用いる場合に、シミュレーションの状態を保存する方法の一例として、ＨＤＬシミュレータのｓａｖｅ（ＮＣ−Ｖｅｒｉｌｏｇ、Ｖｅｒｉｌｏｇ−ＸＬ、ＶＣＳの場合）あるいはｃｈｅｃｋｐｏｉｎｔ（ＭｏｄｅｌＳｉｍの場合）という命令を用い、保存された特定のシミュレーション状態からシミュレーションを特定の時間から再開する方法の一例として、ＨＤＬシミュレータのｒｅｓｔｏｒｅ(ＭｏｄｅｌＳｉｍ)あるいはｒｅｓｔａｒｔ（ＮＣ−Ｖｅｒｉｌｏｇ、Ｖｅｒｉｌｏｇ−ＸＬ、ＶＣＳ）のような命令を用いることができる。
【００２４】
また、１以上の特定の設計客体の保存された状態を、特定のシミュレーションの開示時に該当上記１以上の特定の設計客体の初期状態として用いてシミュレーションを行うためには、上記１以上の特定の設計客体内に存在する該当変数やシグナルが上記保存された状態の値をもってシミュレーションを開示できるようにすればよい。そのためには、シミュレータで提供する多様な制御能力（ｃｏｎｔｒｏｌｌａｂｉｌｉｔｙ）方法を用いることができる。一例を挙げると、シミュレータのＸＭＲ(Ｃｒｏｓｓ Ｍｏｄｕｌｅ Ｒｅｆｅｒｅｎｃｅ)、あるいはｆｏｒｃｅ／ｒｅｌｅａｓｅ ｐｒｏｃｅｄｕｒａｌ ｓｔａｔｅｍｅｎｔ、あるいはＰＬＩ／ＶＰＩ／ＦＬＩのようなシステムタスク等を用いることができる。
【００２５】
従って、本検証装置の検証ソフトウェアを通じて上記付加コードや付加回路が元の設計コードに付加され、このような機能を自動的に行えるようにする。このようなシミュレーション方法が、検証の性能向上及び效率性を増大できる理由は、次のとおりである。前述のように、シミュレーションを通じて検証を行う過程では、設計誤謬を見出してこれを行う過程で必ず設計コードに存在する特定のシグナルや変数の値を特定の時間帯で分かるようにする探針（ｐｒｏｂｉｎｇ）過程が常に必要である。しかし、問題は探針が必要な特定のシグナルや変数がどのようなものであるかを、シミュレーションの遂行前に正確に予測できないだけでなく、これらの探針対象の探針時点がいつ必要であるかも、シミュレーションの遂行前に正確に予測することができない。従って、シミュレーションを１次的に行い、結果を受けてシグナルや変数を探針対象として選定することが可能である。その後、２次シミュレーションをシミュレーション時間０から１次シミュレーションの終了時点まで進行しながら、探針対象となったシグナルや変数を特定の時間帯でダンプを行う。しかし、２次シミュレーションの過程においても設計誤謬の位置が把握されなければ、新しいシグナルや変数を探針対象として選定してシミュレーションをさらにシミュレーション時間０から繰り返すようになる。このような過程を、設計誤謬の位置が見出されるまで数回繰り返す過程が必要である。このような繰り返しシミュレーションを、シミュレーション時間０から繰り返すことにより、全体の検証時間は大きく増えてしまう。若し、このような繰り返しシミュレーションを避けようとする場合には、1次シミュレーションの遂行時に、設計コードに存在するすべてのシグナルと変数を探針対象として設定し、シミュレーションの全過程にわたってこれらをダンプしながら進行しなければならない。しかし、このように設計コードに存在するすべてのシグナルと変数をダンプしながらシミュレーションを進行すると、ダンプを進行しないでシミュレーションを進行することに比べて、シミュレーションの時間が略２倍から最大１０倍以上も増加するため、これもまた全体検証時間を大きく増やしてしまう。それだけでなく、このように設計コードに存在するすべてのシグナルと変数を全体シミュレーション区間にわたってダンプすると、ダンプされるシミュレーション波形（ｓｉｍｕｌａｔｉｏｎ ｗａｖｅｆｏｒｍ）データの大きさが数十ギガバイトから数百ギガバイト以上も増加する。このような大容量のシミュレーション波形データを保存するためには、大容量のハードディスクを必要とするだけでなく、このように特定の形式（例えば、ＶｅｒｉｌｏｇのＶＣＤ/ｅｘｔｅｎｄｅｄ-ＶＣＤ形式、あるいはＮｏｖａｓ社のＦＳＤＢ形式、あるいはＳＨＭ、ＶＣＳ＋のような特定のシミュレータベンダーの圧縮された波形形式）でハードディスクに保存されたシミュレーション波形データを読み込み、波形分析器（ｗａｖｅｆｏｒｍ ｖｉｅｗｅｒ）で分析する過程も非常に長い時間が要るようになる。これもまた全体検証時間を増加してしまう。
【００２６】
本特許で提案するシミュレーション方法は、シミュレーションの構成を前段シミュレーションステップと後段シミュレーションステップの２ステップに分けて行う。前段シミュレーションステップでは、１次シミュレーションの遂行を設計コードに存在するすべてのシグナルと変数をダンプしないようにする。このような１次シミュレーションの過程で行われることは、後段シミュレーションステップである１次以後の追加シミュレーションを、既存の方法のようにシミュレーション時間０で行わずに、ユーザが関心をもっているシミュレーション時間帯の直近くから開示できるようにシミュレーションの一定の間隔毎に（例えば、シミュレーションの開示から１００、０００ナノ秒毎に、あるいは５０、０００シミュレーションサイクル毎に）あるいは所望のシミュレーション時点ｔ０、ｔ１、...、ｔｎ毎に、シミュレーションの状態や、可視度が必要なＤＵＶにおける１以上の設計客体の状態と、場合によっては、ＴＢの状態Ｓ０、Ｓ１、...、Ｓｎを保存（可視度が必要なＤＵＶにおける１以上の設計客体の状態は保存するが、ＴＢの状態を保存しない場合には、ＴＢの状態を保存する代わりに、シミュレーションの全区間にわたって上記可視度が必要なＤＵＶにおける１以上の設計客体のすべての入力値と入力モード時のすべての入出力値を、この入力または入出力において、イベントの発生時毎に、またはサイクル毎に、またはトランスアクション毎に保存）することである。
【００２７】
１以上の特定のシミュレーション時点において設計客体の状態や入力／出力／入出力における値の保存は、ｄｕｍｐ命令（例えば、ＰＬＩシステムタスクである＄ｄｕｍｐｖａｒｓまたは＄ｄｕｍｐｐｏｒｔ等）等を通じて行われる。１以上のシミュレーション時点において、シミュレーションの状態や、可視度が必要なＤＵＶにおける１以上の設計客体の状態と、場合によっては、ＴＢの状態を保存（可視度が必要なＤＵＶにおける１以上の設計客体の状態は保存するが、ＴＢの状態を保存しない場合には、ＴＢの状態を保存する代わりに、シミュレーションの全区間にわたって上記可視度が必要なＤＵＶにおける１以上の設計客体のすべての入力値と入力モード時のすべての入出力値を、この入力または入出力において、イベントの発生時毎に、またはサイクル毎に、またはトランスアクション毎に保存）すると、それ以降はリシミュレーションをシミュレーション時間０においてだけでなく、この各シミュレーション時点ｔ０、ｔ１、...、ｔｎの１つからも可能になる。従って、このような過程を通じて設計に対するデバッグを迅速に行うことができるが、このような過程は、既存のシミュレーション基盤の検証方法等に比べて検証時間を大きく短縮できるため極めて效率的な検証方法になる。このようなシミュレーション方法をＡシミュレーション方法という。
【００２８】
また、他の方法としては、設計コードにおいてＤＵＶやテストベンチに存在する階層構造を用いた分割及び征服（ｄｉｖｉｄｅ ＆ ｃｏｎｑｕｅｒ）方法を用いることができる。この場合には、検証ソフトウェアが設計コードを読み込み、ＤＵＶとテストベンチに対して分割を行って設計コードを２以上の設計ブロックに（Ｍ個の設計ブロックに分割されたと仮定）分け、この設計ブロックのそれぞれに存在するすべての入力と入出力を探針対象として選定した後、これらの探針対象が前段シミュレーションステップである１次シミュレーションの過程でダンプされ得るように設計コードに付加コードや付加回路を付加する。
【００２９】
ここで、設計ブロック（ｄｅｓｉｇｎ ｂｌｏｃｋ）とは、ＤＵＶだけでなくテストベンチのすべてを含む。それだけでなく、これらのＤＵＶとテストベンチは、一般的に階層的な構造であり、内部に多様な１以上の下位モジュールを有するが、これらのそれぞれの下位モジュールも設計ブロックといえる。このような設計ブロックやＤＵＶ、そしてそれぞれのテストベンチやこれらの組合せは、いずれも設計客体（ｄｅｓｉｇｎ ｏｂｊｅｃｔ）と言える。従って、ＤＵＶ全体が１つとして設計客体になり得るだけでなく、ＤＵＶの内部に存在する特定の設計ブロックの１つも設計客体になることができ、２以上の設計ブロックが１つの設計客体になることもできる。
【００３０】
前段シミュレーションステップである１次シミュレーションを行いながら、各設計ブロックのすべての入力と入出力をダンプしてファイル形態で保存した後、これを本発明の検証ソフトウェアを用いて該当設計ブロックに対するＭ個のテストベンチに変換して、該当設計ブロックの設計コードと共に該当テストベンチをシミュレーションコンパイルを行って、Ｍ個の設計ブロックに対応するＭ個のシミュレーション実行ファイルを生成する。このようなシミュレーション方法をＢシミュレーション方法と称する。
【００３１】
また、Ｂシミュレーション方法において、前段シミュレーションステップである１次シミュレーションにおいてＶＰＩ／ＰＬＩ／ＦＬＩ等を用いてシミュレーションを進行しながら、ＶＣＤあるいはＦＳＤＢを生成する代わりに、直接１以上のテストベンチファイルを生成することもできる。このような場合には、１次シミュレーション後にＶＣＤあるいはＦＳＤＢをテストベンチに変換させる過程を省略することができる。
【００３２】
このような２つの方法は、既存のシミュレーション方法に比べて設計客体に対する高い可視度を提供しながらも、シミュレーションの速度を大きく低下させないだけではなく、前段シミュレーションと後段シミュレーションを他の抽象化された水準で行うと、別途の特別なハードウェア基盤の検証プラットフォーム（例えば、ハードウェアエミュレータまたはＦＰＧＡプロトタイピングプラットフォーム等）を用いずに、シミュレーションの速度を大きく向上させることも可能である（詳しい内容は後述する）。
【００３３】
上記２つの方法であるＡシミュレーション方法とＢシミュレーション方法を並行した検証方法も可能である。しかし、上記で言及されたＡシミュレーション方法とＢシミュレーション方法の場合に、次のような問題点があり得る。Ａシミュレーション方法の場合に、後段シミュレーションステップである１次以後のシミュレーションでシミュレーションしようとする時間帯（ｔｓ、ｔｅ）が極めて長い場合に、ｔｉ、ｔｉ−１、ｔｉ−２、...、ｔｉ−ｎ時点での総ｎ＋１回のシミュレーションを順次に行わなければならないので、元のシミュレーション方式よりは検証時間を短縮することができるが、それでもＡシミュレーション方法には多くの検証時間が必要となる。また、Ｂシミュレーション方法の場合にも、１次以後のシミュレーションでシミュレーションしなければならない設計ブロックの数字が大きい場合には、これらを順次に行わなければならないので、元のシミュレーション方式よりは検証時間を短縮することができるが、それでもＢシミュレーション方法においても多くの検証時間が必要となる。
【００３４】
しかし、シミュレータが２以上であり、これらのシミュレータが行われる複数のコンピュータ（例えば、Ｘ個のシミュレータがＸ個のコンピュータにインストールされている）がネットワークで連結されている場合には、このようなＡシミュレーション方法やＢシミュレーション方法で行われる後段シミュレーションステップである１次以後の追加シミュレーションを同時に並列的に行うことができる。このような並列的シミュレーションは、この並列的に行われなければならない各シミュレーションを完全に独立的に行うことができるので、後段シミュレーションステップである１次以後の追加シミュレーションの遂行を画期的に速やかに行うことができる。Ａシミュレーション方法での並列的遂行は時間的に並列性を得るものであるので、時間的並列遂行（ｔｅｍｐｏｒａｌｌｙ ｐａｒａｌｌｅｌ ｅｘｅｃｕｔｉｏｎ）といい、Ｂシミュレーション方法での並列的遂行は空間的に並列性を得るものであるので、空間的並列遂行（ｓｐａｔｉａｌｌｙ ｐａｒａｌｌｅｌ ｅｘｅｃｕｔｉｏｎ）と称する。
【００３５】
前段シミュレーションステップである１次シミュレーションの目的と、後段シミュレーションステップである１次以後のシミュレーションの目的を比べてみると、１次以後のシミュレーションを通じて、ＤＵＶと、場合によっては、ＴＢまでに対する可視度を得ることが必要であるので、後段シミュレーションステップである１次以後のシミュレーションにおいて多くの遂行時間が必要であることがわかるが、本特許の方法は、これを上記の時間並列と空間並列の方法によって大きく減らすことができる。しかし、全体的なシミュレーションの速度向上のためには、前段シミュレーションステップである１次シミュレーションまでもできるだけ最大限速やかに行いながら、１次以後の１回以上のシミュレーションを行うのに必要な情報を収集することも重要である。そのために様々な方法が考えられる。
【００３６】
そのうち、第１の方法は、前段シミュレーションステップである１次シミュレーションも２以上のコンピュータにおける２以上のシミュレータを用いて並列的に行うことである。このような前段シミュレーションステップである１次シミュレーションにおける並列遂行は、各シミュレータが独立的に行われるのではなく、互いに連動して行わなければならないので、多くの通信オーバーヘッドと同期化オーバーヘッドが発生し得る。
【００３７】
第２の方法は、前段シミュレーションステップである１次シミュレーションを、速やかなシミュレーションが行われるように、元の設計コードの代わりに、元の設計コードと関数的に等価であるが異なる構文形式に変換された設計コードを用いてシミュレーションすることである。これは、元の設計コードにシミュレーションの遂行を長くする構文が含まれている場合に、この構文と関数的に等価であり、シミュレーションの遂行を速やかにする異なる構文に変換することである。例を挙げると、元の設計コードのルーフ（ｌｏｏｐ）文を拡げることにより（ｕｎ-ｒｏｌｌｉｎｇ）、ループ文を除去したり、感知リスト（ｓｅｎｓｉｔｉｖｉｔｙ ｌｉｓｔ）から不要なリストを除去したり、場合によっては遅延と関連した構文を除去したり、Ｖｅｒｉｌｏｇにおいてｐｒｏｃｅｄｕｒａｌ ｂｌｏｃｋを合わせて最小限のｐｒｏｃｅｄｕｒａｌ ｂｌｏｃｋを与えたり、ＶＨＤＬではｐｒｏｃｅｓｓを合わせて最小限のｐｒｏｃｅｓｓを与えたり、Ｖｅｒｉｌｏｇではｃｏｎｔｉｎｕｏｕｓ ａｓｓｉｇｎｍｅｎｔをｐｒｏｃｅｄｕｒａｌ ｂｌｏｃｋに変更し、元のコードとは異なる感知リストを用いて、元の設計コードでシミュレーションするより少なく評価（ｅｖａｌｕａｔｉｏｎ）されるようにしたり、ＶＨＤＬでｃｏｎｃｕｒｒｅｎｔ ａｓｓｉｇｎｍｅｎｔをｐｒｏｃｅｓｓに変更し、元のコードとは異なる感知リストを用いて元の設計コードでシミュレーションするより少なく評価されるようにしたり、Ｖｅｒｉｌｏｇでｃｏｎｔｉｎｕｏｕｓ ａｓｓｉｇｎｍｅｎｔをｐｒｏｃｅｄｕｒａｌ ｂｌｏｃｋに変更し、感知リストを用いて元の設計コードでシミュレーションするよりは少なく評価されるようにしたり、Ｖｅｒｉｌｏｇでｃｏｎｔｉｎｕｏｕｓ ａｓｓｉｇｎｍｅｎｔをｐｒｏｃｅｄｕｒａｌ ｂｌｏｃｋに変更し、感知リストを用いて元の設計コードでシミュレーションするより少なく評価されるようにしたり、感知リストを調整して該当ａｌｗａｙｓブロックやｐｒｏｃｅｓｓが元の設計コードでシミュレーションするより少なく評価されるようにしたり、元の設計コードに存在する変数やシグナルのうち、前段シミュレーションステップである１次シミュレーションにおいて必要な変数とシグナルのみを残し、他の変数やシグナルを除去すること、等である。また、このような過程で速やかな論理変換（ｌｏｇｉｃ ｔｒａｎｓｌａｔｉｏｎ）や速やかな論理合成（ｌｏｇｉｃ ｓｙｎｔｈｅｓｉｓ）の過程を通じて、設計コードの全体または部分的に、一時的あるいは永久的に構造的に変換（ｓｔｒｕｃｔｕｒａｌ ｔｒａｎｓｆｏｒｍａｔｉｏｎ）させることも可能である。それだけでなく、変換された設計コードの一部分は、シミュレーションの效率性のために、二進決定ダイヤグラム（ＢＤＤ：Ｂｉｎａｒｙ Ｄｅｃｉｓｉｏｎ Ｄｉａｇｒａｍ、以下ＢＤＤと称する）あるいは多進決定ダイヤグラム（ＭＤＤ：Ｍｕｌｔｉ−ｖａｌｕｅｄ Ｄｅｃｉｓｉｏｎ Ｄｉａｇｒａｍ、以下ＭＤＤと称する）で表現されてシミュレーションされることができる。
【００３８】
第３の方法は、前段シミュレーションステップである１次シミュレーションでは、後段シミュレーションステップで用いるよりも抽象化ステップを高めてシミュレーションを行い、後段シミュレーションステップで上記高い抽象化ステップで行われたシミュレーションの結果を活用して、１次以後のシミュレーションを速やかに行うことである。具体例を挙げると、後段シミュレーションステップである１次以後のシミュレーションでイベント−駆動シミュレータを用いる場合に、前段シミュレーションステップである１次シミュレーションでは、イベント−駆動（ｅｖｅｎｔ−ｄｒｉｖｅｎ）シミュレータを用いる代わりに、遂行速度の面でイベント−駆動シミュレータよりも略１０−１００倍速いサイクル−基盤（ｃｙｃｌｅ−ｂａｓｅｄ）シミュレータを用いることである。第３の方法のために、ＶｅｒｉｌｏｇやＶＨＤＬでコーディングされた設計コードを、自動化された方法（例えば、ＨＤＬ２ＳｙｓｔｅｍＣ変換ツールを用いて自動変換）または受動でＳｙｓｔｅｍＣコードに変換して、ＨＤＬシミュレータの代わりにＳｙｓｔｅｍＣシミュレータを用いることができる。一般的に、ＳｙｓｔｅｍＣシミュレータは、イベントスケジューラーが非常に軽量であるため、ＶｅｒｉｌｏｇシミュレータやＶＨＤＬシミュレータに比べて速やかに行うことができる。
【００３９】
第２及び第３の方法の場合には、前段シミュレーションステップである１次シミュレーションをＳｙｓｔｅｍＣシミュレータやサイクル−基盤（ｃｙｃｌｅ−ｂａｓｅｄ）シミュレータで行いながら、シミュレーションの状態を周期的間隔または１以上の特定のシミュレーション時点において１回以上保存する代わりに、可視度が必要なＤＵＶにおける１以上の設計客体の状態の保存と、場合によっては、ＴＢの状態までを周期的間隔または１回以上の特定のシミュレーション時点において１回以上保存し（可視度が必要なＤＵＶにおける１以上の設計客体の状態は保存するが、ＴＢの状態を保存しない場合には、ＴＢの状態を保存する代わりに、シミュレーションの全区間にわたって上記可視度が必要なＤＵＶにおける１以上の設計客体のすべての入力値と入力モード時のすべての入出力値を、この入力または入出力において、イベントの発生時毎に、またはサイクル毎に、またはトランスアクション毎に保存し）、後段シミュレーションステップである１次以後の１回以上のシミュレーションを２以上のコンピュータ上における２以上のＨＤＬシミュレータを用いて並列的に行う。そのために、上記後段シミュレーションステップである１次以後の１回以上のシミュレーションのそれぞれを、上記前段シミュレーションステップである１次シミュレーションの遂行過程で１回以上のシミュレーション時点で保存された１以上の設計コード状態情報のそれぞれに初期状態が異なるように設定して行う。後段シミュレーションステップにおける１次以後に行われるシミュレータに用いられるテストベンチは、前段シミュレーションステップにおける１次シミュレーションで用いたテストベンチをそのまま用いることができる。
【００４０】
しかし、第２と第３の方法では、１次シミュレーションで用いられるシミュレータと、１次以後のシミュレーションで用いられるシミュレータが互いに異なるため、シミュレーション状態を用いることが不可能であり、１次シミュレーションの過程で保存した可視度が必要なＤＵＶにおける１以上の設計客体の状態情報を用いなければならないとともに、１次シミュレーションの過程でＴＢの状態を保存しない場合には、可視度が必要なＤＵＶにおける１以上の設計客体の入力値と入力モードでの入出力値も、１次シミュレーションの全過程にわたって、イベントの発生時毎に、またはサイクル毎に、またはトランスアクション毎に、持続的に探針して保存し（例えば、ＶＣＤ ｄｕｍｐやＦＳＤＢ ｄｕｍｐをする）、これをテストベンチに変換して後段シミュレーションステップである１次以後のシミュレーションで用いることもできる。このように、元のテストベンチの代わりに新しく生成されたテストベンチを用いると、テストベンチのファイルサイズが大きくなることによりコンパイル時間が増えるが、テストベンチの構成が単純パターン基盤の形態になるので元の複雑なテストベンチがシミュレーションのラーニングタイムに消費するシミュレーション時間でテストベンチが消費する時間を短縮することができる。
【００４１】
それだけでなく、上記で言及した技法は、ＲＴＬ設計コードを用いてＲＴＬにおいてシミュレーションした結果を、ＲＴＬ設計コードを合成してゲート−ネットリストを生成し、必要に応じて配置及び配線結果による遅延時間情報まで用いて行われるゲート水準におけるシミュレーションの結果に用いることにより、ゲート水準におけるシミュレーション時、デバッグを非常に效果的にすることに用いることができる。
【００４２】
すなわち、前段シミュレーションステップである１次シミュレーションを、ＲＴＬ設計コードを用いてＲＴＬにおいてイベント−駆動（ｅｖｅｎｔ−ｄｒｉｖｅｎ）方式あるいはサイクル−基盤（ｃｙｃｌｅ−ｂａｓｅｄ）方式でシミュレーションしながら、設計コードに対する状態情報を１以上の特定のシミュレーション時点で保存し、後段シミュレーションステップである１次以後の１回以上のシミュレーションは、ゲート水準におけるシミュレーションを上記ＲＴＬシミュレーションで上記１以上の特定のシミュレーション時点で保存された１以上の状態情報のそれぞれを用いることにより、１以上のゲート水準におけるシミュレーションを並列的に行うこともできる。上記ゲート水準におけるシミュレーションは、ＳＤＦ（Ｓｔａｎｄａｒｄ Ｄｅｌａｙ Ｆｏｒｍａｔ）等を用いてタイミングシミュレーションも可能であり、タイミング情報を用いないゲート水準の関数的シミュレーションも可能である。
【００４３】
上記で説明したように、前段シミュレーションステップである１次シミュレーションを、後段シミュレーションステップである１次以後のシミュレーションよりもさらに抽象化された水準で行いながら、可視度が必要なＤＵＶにおける１以上の設計客体に対する動的情報（例えば、設計検証対象の最小状態情報と必要に応じて入力情報も含み、あるいは設計検証対象の完全状態情報）を収集し、上記後段シミュレーションステップである１次以後のシミュレーションにおいて上記記収集された動的情報を用いる場合に、前段シミュレーションの結果と後段シミュレーションの結果がすべて一致すれば、結論的にはシミュレーションを２つのステップに分け、さらに抽象化された水準における前段シミュレーション（例えば、ＲＴＬ水準におけるサイクル−基盤シミュレーション）とさらに抽象化されていない水準における後段シミュレーション（例えば、ＲＴＬ水準におけるイベント−駆動シミュレーション）を用いて、単一抽象化水準のみにおける繰り返しシミュレーションを行う既存の方法（例えば、ステップの区別がないＲＴＬ水準におけるイベント−駆動シミュレーションのみを行う方式）を通じたシミュレーションよりも非常に速やかに行う（シミュレーションの速度の大幅な向上）ことになるので、極めて效果的になる。
【００４４】
それだけでなく、前記で言及した後段シミュレーションの結果と前段シミュレーションが結果がすべて一致する場合のシミュレーションの速度の大幅な向上以外に、後段シミュレーションの結果と前段シミュレーションが結果がすべて一致しなくなる場合でも、次のようなまた他の非常に重要な長所がある。現在の設計方法は、下向式設計技法（ｔｏｐ−ｄｏｗｎ ｄｅｓｉｇｎ ｍｅｔｈｏｄｏｌｏｇｙ）を多く用いるが、このような下向式設計において、上位から下位へ（例えば、行為ステップにおいてレジスタ転送水準を経てゲート水準へ）と設計が進行されることに合わせて、検証も上位から下位へ（例えば、行為ステップにおいてレジスタ転送水準を経てゲート水準でへ）と行わなければならない。上記で言及した方法は、上位ステップで得られたシミュレーションの結果を、これよりも下位ステップ（例えば、行為水準におけるシミュレーションの結果を、これよりも下位ステップであるレジスタ転送水準で、またはレジスタ転送水準におけるシミュレーションの結果をこれよりも下位ステップであるゲート水準）で行われるシミュレーションに適用できるようにすることで、下向式設計の全過程で設計の一貫性を、検証過程で体系的かつ效率的に点検できるようにする非常に重要なさらなる長所がある。
【００４５】
従って、このようなシミュレーション方法は、新しい検証方法論（ｖｅｒｉｆｉｃａｔｉｏｎ ｍｅｔｈｏｄｏｌｏｇｙ）と言えるが、さらに抽象化された設計コードを用いた検証結果を、さらに抽象化されていない設計コードを用いた検証に用いることにより、全体検証時間とデバッグ時間を大きく減らせるだけでなく、全体検証時間と全体設計時間までも大きく減らせる新しい方法である。これは、設計具現ステップ（ｉｍｐｌｅｍｅｎｔａｔｉｏｎ ｐｈａｓｅ）でＭａｇｍａ Ｄｅｓｉｇｎ Ａｕｔｏｍａｔｉｏｎ社が物理的合成（ｐｈｙｓｉｃａｌ Ｓｙｎｔｈｅｓｉｓ）で用いて大きな成功を収めた技術である利得−基盤の合成（ＧＢＳ：Ｇａｉｎ−ｂａｓｅｄ Ｓｙｎｔｈｅｓｉｓ）技術で得られる長所と類似する長所を検証過程で得られるようにする。
【００４６】
すなわち、現在の半導体設計過程における最大の問題は、抽象化を通じて大規模の設計を效率的に行えるようになった長所の否定的な付随效果として、設計過程が進行すると共に、前ステップで予測された結果とは違う結果が後ステップで現われるようになり、これは設計過程における過度な設計及び検証反復（ｄｅｓｉｇｎ＆ｖｅｒｉｆｉｃａｔｉｏｎ ｉｔｅｒａｔｉｏｎ）を招来するということである。ところで、本特許での方法とＧＢＳ方法は、共に上位ステップから下位ステップへ進行されるとともに変化する状況に、最大限の一貫性を提供することにより、このような過度な繰り返しを最大限防止できる方法であるという共通点がある。上位水準の検証結果が下位水準検証でのレファレンスの役割（またはゴールデン役割）を行うことにより、全体検証及び設計過程を速やかに行えるようになる。このような２以上の抽象化水準におけるシミュレーションの結果を統合して、上位水準におけるシミュレーションの結果を下位水準におけるシミュレーションに用いることは、多くの長所がある。上位水準におけるシミュレーションになる対象がＤＵＶ全体になることが性能面で最も望ましいが、設計再使用（ｄｅｓｉｇｎ ｒｅｕｓｅ）等の理由により、ＤＵＶの１以上の特定の設計客体だけが上位水準で口述された設計に対しても、上記のような概念はそのまま適用できる。例えば、ＤＵＶ中に５個の設計ブロックＢ０、Ｂ１、Ｂ２、Ｂ３、Ｂ４が存在し、Ｂ０とＢ１はイベント−駆動ＶｅｒｉｌｏｇＲＴＬコードで記述されており、Ｂ２、Ｂ３、Ｂ４はサイクル−基盤ＳｙｓｔｅｍＣコードで記術されている場合を例える。この場合、Ｂ０とＢ１に対するイベント−駆動方式のシミュレーションがＢ２とＢ３とＢ４に対するサイクル−基盤のシミュレーションと連動され、ＤＵＶ部分的には上位水準でシミュレーションが行われることによりシミュレーションの速度を高めることもできる。一般的に、さらに抽象化された上位水準におけるシミュレーションの結果は、さらに抽象化されていない下位水準でＤＵＶがモデリングされて謀議動作する多くの場合の特定の場合であると考えられる。従って、このような特定の場合にも、ＤＵＶは必ず正しい動作を保障しなければならない（すなわち、設計が強靭な設計（ｒｏｂｕｓｔ Ｄｅｓｉｇｎ）であるためには、抽象化水準が異なる後段シミュレーションの結果と前段シミュレーションが結果が一致するように動作しなければならない）。このような事実から、上位水準におけるシミュレーションの結果は、大部分の場合に非常に有用なレファレンスの役割を果たせることが分かる。従って、上記で詳しく説明された本発明で提案する、抽象化水準が異なる２つのステップでの２回以上のシミュレーション方法と、このシミュレーションの結果の一致性の調査を通じた設計に対する設計誤謬デバッグ方法は、非常に效率的な新しい検証遂行方法であることが分かる。上記の説明と類似して、２以上の抽象化水準におけるシミュレーションの結果を統合して、下位水準におけるシミュレーションの結果を上位水準におけるシミュレーションに用いるようにすることも可能である。
【００４７】
上記で説明した検証装置及び検証技法は、検証プラットフォームとして、シミュレータ以外に、１以上のシミュレーションアクセル、ハードウェアエミュレータ、プロトタイピングシステム、モデル検査器や形式検査器のような正式検証器等を用いる場合にも適用することができる。すなわち、前段検証ステップである１次検証実行を、１以上のシミュレータ、シミュレーションアクセル、ハードウェアエミュレータ、プロトタイピングシステム、あるいはモデル検査器や形式検査器のような正式検証器を独立的または複合的に用いて行いながら、後段検証ステップである１次以後の検証実行を、１以上のシミュレータ、シミュレーションアクセル、ハードウェアエミュレータ、プロトタイピングシステム、またはモデル検査器や形式検査器のような正式検証器を並列的または順次に行うことに必要な最小限の情報（例えば、検証対象となるＤＵＶの１以上の設計客体に対する１以上の検証時点での状態情報と、必要に応じて追加的に上記ＤＵＶの１以上の設計客体のすべての入力値と入力モードでの入出力値に対する検証区間にわたる情報）を収集しながら行い、このように収集された情報を用いて後段検証ステップである１次以後の検証実行を、１以上のシミュレータ、シミュレーションアクセル、ハードウェアエミュレータ、プロトタイピングシステムまたはモデル検査器や形式検査器のような正式検証器、を並列的あるいは順次に行うことで、全体的な検証の性能と效率性を高めることも可能である。
【００４８】
それだけでなく、上記で言及した前段検証ステップと後段検証ステップの２ステップ検証実行方法を用いると、検証対象となるＤＵＶの１以上の設計客体に対する検証遂行の過程における動的情報（例えば、シミュレーションの過程でＤＵＶとＴＢでダンプされたＶＣＤやＦＳＤＢ）を非常に速やかに獲得することが可能となる。このような過程を通じて、特定の検証実行の過程Ｖｔで得られた動的情報は、その後に実行される（例えば、コード修正が行われた後にコード修正が所望のとおりに行われたかを確認するために実行される）他の検証実行の過程Ｖｔ＋ｊで、部分的にあるいは全体的に再活用され、Ｖｔ＋ｊの検証実行の過程を速やかに進行することもできるようにする。このようなデバッグ過程で設計誤謬が正しく除去されたか否かを確認する確認検証ステップでの速やかな遂行方式を漸進的検証（ｉｎｃｒｅｍｅｎｔａｌ ｖｅｒｉｆｉｃａｔｉｏｎ）方式というが、具体的に、このように動的情報を再活用（ｒｅｕｓｅ ｏｆ ｄｙｎａｍｉｃ ｉｎｆｏｒｍａｔｉｏｎ）できる場合は２つに分けられる。
【００４９】
第１は、特定の設計客体に設計誤謬が存在し、該当設計客体の内容がデバッグ過程を通して修正された場合に、リグレッションテスト過程が必要となるが、このような場合に再活用することと、設計客体に対する修正の行われた後に修正が意図したとおりに行われかを確認する場合に再活用することである。この場合には、設計客体（ＤＵＶとＴＢを共に含む）の全体を対象として検証を進行しない。その代わりに、全体検証時間の１以上の一定時間領域では（例えば、検証時間０から一定検証時間ｔｍまでは）、ただ設計修正が行われた１以上の設計客体ＤＯ（ｍｏｄ）のみを対象とする検証を進行することにより、高速で検証実行が進行されるようにし、それ以外の時間領域では（例えば、検証時間ｔｍ以後からは）設計客体の全体（ＤＵＶとＴＢを共に）に対して検証を進行するようにする。このような方法のために核心的な事項は、設計修正が行われた１以上の設計客体のみを対象とする検証実行を進行しても構わない１以上の一定時間領域を、全体検証時間領域で区分できなければならない。これは、設計の修正以前に行われる検証実行の過程で、特定の１以上の設計客体に対して動的情報を収集し、これを設計修正以後に行われる検証実行の過程で設計修正が行われた設計客体から生成される動的情報と、検証実行の過程でリアルタイムで比べて処理することにより可能となる。また、ただ設計修正が行われた１以上の設計客体ＤＯ（ｍｏｄ）を適切に選定するのが必要である。設計変更後にシミュレータを用いた検証実行を行う場合には、シミュレーションの速度を大きく高めるためにＤＯ（ｍｏｄ）範囲（すなわちＤＯ（ｍｏｄ）の大きさ）は小さくなければならない。しかし、設計変更後にハードウェア基盤検証プラットフォーム（例えば、シミュレーションアクセル）を用いた検証を実行する場合には、通常ハードウェア基盤検証プラットフォームの実行速度は、ハードウェア基盤検証プラットフォーム上で行われる設計客体の大きさまたは複雑度に関係ないので、ＤＯ（ｍｏｄ）範囲を最小化する必要はない（例えば、シミュレーション加速の場合には、ＤＵＶの内部に存在する下位設計客体の１つを修正した場合には、ＤＯ（ｍｏｄ）をＤＵＶに指定することもできる。しかし、シミュレーションの場合には、ＤＯ（ｍｏｄ）は上記修正された下位設計客体の１つに選ばれなければならない）。
【００５０】
具体的な方法の一例を説明すると、次のようである（これをチェックポイント基盤方法と称する）。リグレッションテスト進行過程の各テストシナリオ実行において、検証時間０から設計修正が行われた設計客体の出力と出力モード時の両方向入出力値Ｖｉ（ｐｏｓｔ_ｏ）を設計修正以前の同一設計客体の出力と出力モード時の両方向入出力値 Ｖｉ（ｐｒｅ_ｏ）と検証実行の過程でリアルタイムで比べて、これらの両値が等しい場合までは、上記設計修正が行われた設計客体のみを設計修正以前の検証実行で求めて特定の形態（例えば、ＴＢ化された形態、ＶＣＤ 形態、あるいは二進ファイル形態）で保存した再生用入力情報または再生用入出力情報の中で再生用入力情報のみを入力スティミュラスとして用いて速やかに検証過程を行い、上記２つの値Ｖｉ（ｐｏｓｔ_ｏ）とＶｉ（ｐｒｅ_ｏ）が異なってくる時点（以下では、これをｔｍと称する）から設計修正が行われた設計客体と、設計修正が行われていない他の設計客体をすべて合わせて検証を進行し続けると、全体の検証時間を減らしながらも、正確な検証を行うことができる。ｔｍ以後にのみ、すべての修正された客体と修正されない客体を含んだ全体の設計客体が共にシミュレーションされることができる。ところが、このように上記２つの値が異なってくる時点ｔｍで設計修正が行われた設計客体と、設計修正が行われていない他の設計客体を合わせる過程で、設計修正が行われていない他の設計客体の動的情報を、設計修正が行われた設計客体の動的情報と等しい検証時間帯に正確に合わせることが必須である。このための１つの效果的な方法は、設計修正の以前に行われた設計検証過程で、設計客体に対して一定の検証時間間隔で動的情報を１回以上保存（例えば、総２０回保存）し、このように保存された動的情報を用いれば可能である。以下では、動的情報保存方法を具体的に説明する。
【００５１】
シミュレータを検証プラットフォームとして用いる場合には、２つの方法がある。第１の方法は、設計客体の修正以前に行われたシミュレーションの状態情報を１回以上保存し、これを後で用いることである。これは、シミュレーションの状態は、設計状態情報を全部含んでいるからである。シミュレーションの状態情報を保存する方法はいくつかある。その中で最も便利な方法としては、シミュレータで提供するシミュレーション状態の保存命令（例えば、ＨＤＬシミュレータでのｓａｖｅ命令あるいはｃｈｅｃｋｐｏｉｎｔ命令）を用いればよく、任意のプログラムの場合には、スナップショット（ｓｎａｐｓｈｏｔ）機能を用いればよい。第２の方法は、設計客体修正以前に行われる検証実行（例えば、シミュレーションあるいはシミュレーション加速遂行）過程で設計客体の状態情報を１回以上保存し、これを後で用いることである。この方法は、特にハードウェア基盤検証プラットフォームを用いる場合に效果的である。その理由は、ハードウェア基盤検証プラットフォームはスナップショット／再出発機能を提供するシミュレータとは異なり、検証プラットフォームの状態情報を保存する方法が提供されないからである。
【００５２】
本発明の好ましい実施の形態は次の図面を参照して説明される。
図１は、本発明に係る設計検証装置の一例を概略的に示した図である。
図２は、本発明に係る設計検証装置の他の一例を概略的に示した図である。
図３は、本発明で提案する方法によりシミュレーションを行う過程を概略的に示した図である。
図４は、本発明で提案する前段シミュレーションステップである１次シミュレーションと、後段シミュレーションステップである１次以後のシミュレーションを通じて、設計誤謬を見出して修正する過程を概略的に示した図である。
図５（ａ）は、図１または図２のような装置を用いた設計検証を行う過程を概略的に示した図である。
図５（ｂ）は、図１または図２のような装置を用いた設計検証を行う他の過程を概略的に示した図である。
図６（ａ）は、図２のような装置を用いた設計検証において、後段シミュレーションステップである１次以後のシミュレーションを並列的に行う過程を概略的に示した図である。
図６（ｂ）は、図２のような装置を用いた設計検証において、後段シミュレーションステップである１次以後のシミュレーションを並列的に行う他の過程を概略的に示した図である。
図６（ｃ）は、図２のような装置を用いた設計検証において、後段シミュレーションステップである１次以後のシミュレーションを並列的に行う他の過程を概略的に示した図である。
図６（ｄ）は、図２のような装置を用いた設計検証において、後段シミュレーションステップである１次以後のシミュレーションを並列的に行う他の過程を概略的に示した図である。
図７は、本発明に係る設計検証装置の他の一例を概略的に示した図である。
図８は、コンピュータで運営される本発明の検証ソフトウェアとシミュレータを有するコンピュータとハードウェア基盤検証プラットフォームで構成された本発明に係る設計検証装置の一例を概略的に示した図である。
図９は、コンピュータで運営される本発明の検証ソフトウェアとシミュレータを有する２以上のコンピュータとハードウェア基盤検証プラットフォームとこれらのコンピュータを連結するコンピュータネットワークで構成された本発明に係る設計検証装置の他の一例を概略的に示した図である。
図１０は、コンピュータで運営される本発明の検証ソフトウェアとこの検証ソフトウェアが運営されるコンピュータとハードウェア基盤検証プラットフォームで構成された本発明に係る設計検証装置の他の一例を概略的に示した図である。
図１１は、図８を用いた検証結果再活用の一実施例を説明するフローチャートである。
図１２は、図１を用いたシミュレーション結果の再活用の一実施例を説明するフローチャートである。
図１３は、任意の検証プラットフォームを用いて設計検証を行う過程において、設計客体の変更前に行われた検証結果を再活用して、設計客体の変更後に行われる検証を速やかに行う過程の一実施例を概略的に示した図である。
図１４は、任意のハードウェア基盤検証プラットフォームを用いて設計検証を行う過程において、設計客体の変更前に行われた検証結果を再活用して、設計客体の変更後に行われる検証を速やかに行う過程の一実施例を概略的に示した図である。
図１５は、シミュレータを用いて設計検証を行う過程において、設計客体の変更前に行われたシミュレーションの結果を再活用して、設計客体の変更後に行われるシミュレーションを速やかに行う過程の一実施例を概略的に示した図である。
【００５３】
本発明は発明の本質や必須的な特性から外れることなく、様々な形態で具現されることができるので、前述した実施の形態は別に特定されない限り、詳細な説明の細部事項により制限されることではなく、かえって添付された請求範囲に説明されたように、その本質及び範囲内で広く考えられるべきであり、従って請求範囲の範囲を満たし、その範囲内に入るすべての変化及び修正、またはそのような充足及び範囲に対する等価物も添付された請求範囲により含まれることとみなすべきである。
【図面の簡単な説明】
【００５４】
添付の図面は、本発明の詳細な理解を助け、本発明における装置と関連した部分がどのように構成されるかを示し、発明の基本概念を説明するために、次のように用いられる。
【図１】本発明に係る設計検証装置の一例を概略的に示した図である。
【図２】本発明に係る設計検証装置の他の一例を概略的に示した図である。
【図３】本発明で提案する方法によりシミュレーションを行う過程を概略的に示した図。
【図４】本発明で提案する前段シミュレーションステップである１次シミュレーションと、後段シミュレーションステップである１次以後のシミュレーションを通じて、設計誤謬を見出して修正する過程を概略的に示した図である。
【図５（ａ）】図１または図２のような装置を用いた設計検証を行う過程を概略的に示した図である。
【図５（ｂ）】図１または図２のような装置を用いた設計検証を行う他の過程を概略的に示した図である。
【図６（ａ）】図２のような装置を用いた設計検証において、後段シミュレーションステップである１次以後のシミュレーションを並列的に行う過程を概略的に示した図である。
【図６（ｂ）】図２のような装置を用いた設計検証において、後段シミュレーションステップである１次以後のシミュレーションを並列的に行う他の過程を概略的に示した図である。
【図６（ｃ）】図２のような装置を用いた設計検証において、後段シミュレーションステップである１次以後のシミュレーションを並列的に行う他の過程を概略的に示した図である。
【図６（ｄ）】図２のような装置を用いた設計検証において、後段シミュレーションステップである１次以後のシミュレーションを並列的に行う他の過程を概略的に示した図である。
【図７】本発明に係る設計検証装置の他の一例を概略的に示した図である。
【図８】コンピュータで運営される本発明の検証ソフトウェアとシミュレータを有するコンピュータとハードウェア基盤検証プラットフォームで構成された本発明に係る設計検証装置の一例を概略的に示した図である。
【図９】コンピュータで運営される本発明の検証ソフトウェアとシミュレータを有する２以上のコンピュータとハードウェア基盤検証プラットフォームとこれらのコンピュータを連結するコンピュータネットワークで構成された本発明に係る設計検証装置の他の一例を概略的に示した図である。
【図１０】コンピュータで運営される本発明の検証ソフトウェアとこの検証ソフトウェアが運営されるコンピュータとハードウェア基盤検証プラットフォームで構成された本発明に係る設計検証装置の他の一例を概略的に示した図である。
【図１１】図８を用いた検証結果再活用の一実施例を説明するフローチャートである。
【図１２】図１を用いたシミュレーション結果の再活用の一実施例を説明するフローチャートである。
【図１３】任意の検証プラットフォームを用いて設計検証を行う過程において、設計客体の変更前に行われた検証結果を再活用して、設計客体の変更後に行われる検証を速やかに行う過程の一実施例を概略的に示した図である。
【図１４】任意のハードウェア基盤検証プラットフォームを用いて設計検証を行う過程において、設計客体の変更前に行われた検証結果を再活用して、設計客体の変更後に行われる検証を速やかに行う過程の一実施例を概略的に示した図である。
【図１５】シミュレータを用いて設計検証を行う過程において、設計客体の変更前に行われたシミュレーションの結果を再活用して、設計客体の変更後に行われるシミュレーションを速やかに行う過程の一実施例を概略的に示した図である。
【符号の説明】
【００５５】
１２：テストベンチ設計客体
１４：ＤＵＶ設計客体
１６：設計ブロック設計客体
１８：再生用入力情報
２０：変更された設計客体
２２：設計変更前に収集された動的情報の一部分
２７：ハードウェア基盤検証プラットフォーム
２８：プロトタイピングシステムのシステムソフトウェアコンポーネント
２９：シミュレーションアクセルのシステムソフトウェアコンポーネント
３０：ハードウェアエミュレータのシステムソフトウェアコンポーネント
３１：検証ソフトウェアで設計コードや合成で生成されたゲート水準のネットリストに追加コードや追加回路を自動的に付加し、検証準備を進行するソフトウェアモジュール
３２：検証ソフトウェア
３４：シミュレータ
３５：コンピュータ
３６：ハードウェアエミュレータプラットフォームのハードウェアコンポーネント
３７：シミュレーションアクセルプラットフォームのハードウェアコンポーネント
３８：プロトタイピングシステムプラットフォームのハードウェアコンポーネント
４２：モデル検査器または特性検査器
４４：検証ソフトウェアで検証を実行する途中に、１以上のコンピュータ間のファイルやデータ送信を可能とし、１次検証実行を進行し、１次以後の検証実行のための準備を進行し、１次以後の検証実行を進行するソフトウェアモジュール
【図１】
2007528553.tif 000003
【図２】
2007528553.tif 000004
【図３】
2007528553.tif 000005
【図４】
2007528553.tif 000006
【図５（ａ）】
2007528553.tif 000007
【図５（ｂ）】
2007528553.tif 000008
【図６（ａ）】
2007528553.tif 000009
【図６（ｂ）】
2007528553.tif 000010
【図６（ｃ）】
2007528553.tif 000011
【図６（ｄ）】
2007528553.tif 000012
【図６（ｅ）】
2007528553.tif 000013
【図７】
2007528553.tif 000014
【図８】
2007528553.tif 000015
【図９】
2007528553.tif 000016
【図１０】
2007528553.tif 000017
【図１１】
2007528553.tif 000018
【図１２】
2007528553.tif 000019
【図１３】
2007528553.tif 000020
【図１４】
2007528553.tif 000021
【図１５】
2007528553.tif 000022
【国際調査報告】
2007528553.tif 000023
2007528553.tif 000024