(57)【要約】【課題】ディジタル検証を行うシミュレータに、処理に要する割込位置情報と最適スナップショット位置情報とを与えて適切な処理を可能とする。【解決手段】ディジタル検証を行うシミュレータに与えるベクタにおける割込位置を検出する割込位置検出手段２１０と、この割込位置検出手段２１０により検出された割込位置に基づきスナップショット位置決定手段２２０とを具備する。【選択図】図３
2020021173.tif 000002
【特許請求の範囲】
【請求項１】
ディジタル検証を行うシミュレータに与えるベクタにおける割込位置を検出する割込位置検出手段と、
この割込位置検出手段により検出された割込位置に基づきスナップショットを実行すべき所定数の最適スナップショット位置を決定するスナップショット位置決定手段と
を具備するディジタル検証支援装置であって、
前記シミュレータに、
前記最適スナップショット位置において前記シミュレータが現状の復元に用いるスナップショット情報を取得し保持するスナップショット情報取得保持手段と、
ベクタを先頭から実行して未処理の割込位置へ到ると、当該割込位置に対応する割込処理を実行して割込処理が終了となると、この割込位置に対応する最適スナップショット位置のスナップショット情報に基づき復元を行うまでの一連処理を実行し、当該最適スナップショット位置から前記ベクタの実行へと進むベクタ処理手段と
が含まれており、
前記スナップショット情報取得保持手段と前記ベクタ処理手段の処理に要する割込位置情報と最適スナップショット位置情報とを提供することを特徴とするディジタル検証支援装置。
【請求項２】
前記スナップショット位置決定手段は、各割込位置より直前の位置であって他の割込位置に重ならないＮ点の位置から異なる位置のＭ点の組合せを選択する選択方法を全通りの数行い、各選択方法において選択されたＭ点を最適スナップショット位置候補として、前記ベクタ処理手段による一連処理の時間の合計が最短となる組合せを求め、この最短の組合せに係るＭ点を最適スナップショット位置として決定する全通り法を実行することを特徴とする請求項１に記載のディジタル検証支援装置。
【請求項３】
前記スナップショット位置決定手段は、各割込位置より直前の位置であって他の割込位置に重ならないＮ点を、全処理時間Ｍを均等分割した区間内に配置し、前記均等分割位置を最適スナップショット位置として決定するＸ均等法を実行することを特徴とする請求項１または２に記載のディジタル検証支援装置。
【請求項４】
前記スナップショット位置決定手段は、各割込位置より直前の位置であって他の割込位置に重ならないＮ点を、１／Ｍずつの数に分割する位置を最適スナップショット位置として決定するＹ均等法を実行することを特徴とする請求項１乃至３のいずれか１項に記載のディジタル検証支援装置。
【請求項５】
前記スナップショット位置決定手段は、各割込位置より直前の位置であって他の割込位置に重ならないＮ点において、隣接する点の間隔が長い方から（Ｍ−１）組の隣接点を求め、各（Ｍ−１）組の隣接点において後の（Ｍ−１）点を最適スナップショット位置として決定する傾き法を実行することを特徴とする請求項１乃至４のいずれか１項に記載のディジタル検証支援装置。
【請求項６】
前記スナップショット位置決定手段は、全ての割込み数に対応する長さをＬ１とし、ベクタの最初から第１の最適スナップショット位置までの距離をＳ0として、面積Ｓ0×Ｌ１を求め、ベクタの最初から第２の最適スナップショット位置までの距離をＳ1、全ての割込み数から第１の最適スナップショット位置を用いて行われる割込み数を引いた値に対応する長さをＬ２とし、面積（Ｓ1−Ｓ0）×Ｌ２を求め、ベクタの最初から第３の最適スナップショット位置までの距離をＳ2、全ての割込み数から第２の最適スナップショット位置を用いて行われる割込み数を引いた値に対応する長さをＬ３とし、面積（Ｓ2−Ｓ1）×Ｌ３を求め、・・・、ベクタの最初から第Ｍの最適スナップショット位置までの距離をＳM、全ての割込み数から第Ｍの最適スナップショット位置を用いて行われる割込み数を引いた値に対応する長さをＬＭとし、面積（ＳM−ＳM-1）×ＬＭを求め、上記面積の加算結果が最大となる各最適スナップショット位置を求める面積法を実行することを特徴とする請求項１乃至６のいずれか１項に記載のディジタル検証支援装置。
【請求項７】
ディジタル検証支援装置のコンピュータを、
ディジタル検証を行うシミュレータに与えるベクタにおける割込位置を検出する割込位置検出手段、
この割込位置検出手段により検出された割込位置に基づきスナップショットを実行すべき所定数の最適スナップショット位置を決定するスナップショット位置決定手段
として機能させるディジタル検証支援用プログラムであって、
前記シミュレータに含まれる、
前記最適スナップショット位置において前記シミュレータが現状の復元に用いるスナップショット情報を取得し保持するスナップショット情報取得保持手段と、
ベクタを先頭から実行して未処理の割込位置へ到ると、当該割込位置に対応する割込処理を実行して割込処理が終了となると、この割込位置に対応する最適スナップショット位置のスナップショット情報に基づき復元を行うまでの一連処理を実行し、当該最適スナップショット位置から前記ベクタの実行へと進むベクタ処理手段と
に対し、処理に要する割込位置情報と最適スナップショット位置情報とを提供することを特徴とするディジタル検証支援用プログラム。
【請求項８】
前記コンピュータを前記スナップショット位置決定手段として、各割込位置より直前の位置であって他の割込位置に重ならないＮ点の位置から異なる位置のＭ点の組合せを選択する選択方法を全通りの数行い、各選択方法において選択されたＭ点を最適スナップショット位置候補として、前記ベクタ処理手段による一連処理の時間の合計が最短となる組合せを求め、この最短の組合せに係るＭ点を最適スナップショット位置として決定する全通り法を実行するように機能させることを特徴とする請求項７に記載のディジタル検証支援用プログラム。
【請求項９】
前記コンピュータを前記スナップショット位置決定手段として、各割込位置より直前の位置であって他の割込位置に重ならないＮ点を、全処理時間Ｍを均等分割した区間内に配置し、前記均等分割位置を最適スナップショット位置として決定するＸ均等法を実行するように機能させることを特徴とする請求項７または８に記載のディジタル検証支援用プログラム。
【請求項１０】
前記コンピュータを前記スナップショット位置決定手段として、各割込位置より直前の位置であって他の割込位置に重ならないＮ点を、１／Ｍずつの数に分割する位置を最適スナップショット位置として決定するＹ均等法を実行するように機能させることを特徴とする請求項７乃至９のいずれか１項に記載のディジタル検証支援用プログラム。
【請求項１１】
前記コンピュータを前記スナップショット位置決定手段として、各割込位置より直前の位置であって他の割込位置に重ならないＮ点において、隣接する点の間隔が長い方から（Ｍ−１）組の隣接点を求め、各（Ｍ−１）組の隣接点において後の（Ｍ−１）点を最適スナップショット位置として決定する傾き法を実行するように機能させることを特徴とする請求項７乃至１０のいずれか１項に記載のディジタル検証支援用プログラム。
【請求項１２】
前記コンピュータを前記スナップショット位置決定手段として、全ての割込み数に対応する長さをＬ１とし、ベクタの最初から第１の最適スナップショット位置までの距離をＳ0として、面積Ｓ0×Ｌ１を求め、ベクタの最初から第２の最適スナップショット位置までの距離をＳ1、全ての割込み数から第１の最適スナップショット位置を用いて行われる割込み数を引いた値に対応する長さをＬ２とし、面積（Ｓ1−Ｓ0）×Ｌ２を求め、ベクタの最初から第３の最適スナップショット位置までの距離をＳ2、全ての割込み数から第２の最適スナップショット位置を用いて行われる割込み数を引いた値に対応する長さをＬ３とし、面積（Ｓ2−Ｓ1）×Ｌ３を求め、・・・、ベクタの最初から第Ｍの最適スナップショット位置までの距離をＳM、全ての割込み数から第Ｍの最適スナップショット位置を用いて行われる割込み数を引いた値に対応する長さをＬＭとし、面積（ＳM−ＳM-1）×ＬＭを求め、上記面積の加算結果が最大となる各最適スナップショット位置を求める面積法を実行するように機能させることを特徴とする請求項７乃至１１のいずれか１項に記載のディジタル検証支援用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ディジタル検証支援装置及びディジタル検証支援用プログラムに関するものである。
【背景技術】
【０００２】
ディジタル検証においては、検証対象となるＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｆｅｒ  Ｌｅｖｅｌ）に対してベクタと称される入力ファイルを作成し、ＲＴＬが正常に動作しているかの確認を行う。通常、ベクタは人間が考えて手作業で作成を行っている。一度作成されたベクタに対し、検証対象の電子回路やシステムに非同期に発生する割込みイベントに対して適切な処理が行われているかを確認するためには、インタラプト検証と呼ばれる割込みによる手法を採用することができる。
【０００３】
例えば、メモリ製品におけるインタラプト検証は、非同期割込みの性質から、異常系と機能系に分けられており、更に割込み種類で分類すると、次の表１に示すように１０種類以上となる。
【０００４】
【表１】
2020021173.tif 000003
【０００５】
更に、現行のインタラプト検証は、ノーマルインタラプト（Normal Interrupt）とハイレゾリューションインタラプト（High Resolution Interrupt）という２種の検証方法の組合せによって行われている。この２種類のインタラプトは、次の表２に示す通りの特徴を有しており、この特徴に合わせて使用されている。表２の「sim時間」は、シミュレーション時間である。
【０００６】
【表２】
2020021173.tif 000004
【０００７】
近年、メモリ製品における回路の複雑化や過去に発生した不具合からのフィードバックにより検証すべき割込みの数が爆発的に増え、シミュレーション時間も激増している。この結果、初めてAIPR機能（Asynchronous Independent Plane Read）を搭載したフラッシュメモリとしては、ハイレゾリューションインタラプトによる全割込み種類の合計割込み数（ベクタ数）が数十万となるものがある。また、一番割込み数の多いFFh インタラプト（表１）は、割込み数と検証時間と共に極めて大きな値となり、レギュレーション一回分に要する時間がライセンス５０並列の前提で３４０ｈ(２週間超え)を要する。
【０００８】
本来は、ＬＳＩの設計図を磁気テープに焼きこみ、データをＬＳＩ製造部門に出荷することの意味から、半導体の回路設計の最終段階である「テープアウト」の直前に最新回路を用いて検証したいところであるが、シミュレーション時間が長いのでテープアウトの２週間前の回路で実行した検証結果しか確認できない。フラッシュメモリの検証方針としては、その期間でのハイレゾリューションインタラプトを断念し、テープアウト後の後追い検証を行うことに留まっている。後追い検証で致命不具合が発見された場合には、refine（マスク改良）になってしまうので、品質（割込み数）を維持しながら、検証効率改善もしくは新しい検証手法の立ち上げが必要である。
【０００９】
上記の問題を解決するために、ここでは、現状のインタラプト検証手法を検討してみることにする。ある種のフラッシュメモリにおけるインタラプト検証は、２ステップＤＢ型と呼ばれ、図１のようにサンプリングとインタラプトの２段階で行う手法が用いられている。
【００１０】
ステップ１:サンプリング（Sampling）
全ベクタを事前に流し、ユニークなステートの変化点を共通データベースに登録する。その内容はベクタ名と変化点の発生時間（シミュレーション時間（Simulation Time））であり、それらは割込み検証のターゲットでもある。通常、１ベクタに複数の割込みポイントが登録されるケースが多く、最大７０００以上の割込みポイントを持つベクタもある。
【００１１】
ステップ２:インタラプト（Interrupt）
データベースの登録情報からベクタを流す条件を決める。具体的にはベクタ名と一致したベクタを実行し、割込み時間になると割込みイベントを発生させる。１割込みポイントに１ベクタが生成される。
【００１２】
上記の処理を検討したところ、図１と図２に示すように、１ベクタから作成された複数のインタラプトベクタ同士に同じ実行内容が含まれており、無駄があることが分かった。割込みポイントが前にあるベクタ（図１：vectorx＿1、図２：ｖ１）は必ず割込みポイントが後にあるベクタ（図１：vectorx＿2、図２：ｖ２）に含まれ、それがまたさらに後にあるベクタ（図１：vectorx＿3、図２：ｖ３）に含まれ、更に、それがまた後にあるベクタ（図１：vectorx＿4、図２：ｖ４）に含まれる。
【００１３】
このように、複数のベクタが無駄に重複するシミュレーションを経過していることがレギュレーション時間を長くしている原因と考えられる。重複するシミュレーションを共通化して１度の通過にすることができれば、大幅な時間削減を見込めるのである。
【００１４】
シミュレータには、シミュレーションの途中状態をテンポラリライブラリに保存し、またその状態から復帰するサポート機能であるスナップショット（Snapshot）が備えられている。この機能によれば、複数のインタラプトベクタにおいてそれぞれに最初に戻って処理を実行することがなくなり時間短縮を実現できる。
【００１５】
割込みの場合に状態復元を行うことは、特許文献１に開示されている。また、特許文献２では、レジスタメモリのコピーであるスナップショットがエミュレーションデータの一部として転送され、他のエミュレーションデータとＣＰＵクロックとともに、エミュレーションデバイスにおいてターゲットＣＰＵの命令の完全な模倣を可能にすることが開示されている。
【００１６】
特許文献３には、スナップショット解決技術を使用して、シミュレーションのための初期条件信号及び入力信号を得ることができることが開示されている。特許文献４には、状態値変化記憶手段２により、信号の状態値が変化すると信号の変化点情報５を作成すること、シミュレーション時刻を戻す要求があった場合、状態値変更手段３で、保持していた信号の変化点情報５を順に遡って信号を変化前の状態値に戻すことが開示されている。これにより、最初の入力パターンから論理検証をやり直すことなく途中から再開することができ、検証時間が短縮できるというものである。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特開平７−１６０５３７号公報
【特許文献２】特表２００８−５４４３４０号公報
【特許文献３】特許第５４３２１２６号公報
【特許文献４】特開平５−１５１３０５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１８】
上記のように、状態復元を行うこと、或いはスナップショットの状態復元を用いて時間短縮を図ることが知られていたことが分かる。しかしながら、割込みポイントが数多く存在する場合、更に、スナップショットの位置数を多くすると状態情報の収集と保存に時間を要し必ずしも時間短縮にならないことは明らかである。本発明の実施形態は、ディジタル検証を行うシミュレータに、処理に要する割込位置情報と最適スナップショット位置情報とを与えて適切な処理を可能とするディジタル検証支援装置を提供することを目的としている。
【課題を解決するための手段】
【００１９】
実施形態に係るディジタル検証支援装置は、ディジタル検証を行うシミュレータに与えるベクタにおける割込位置を検出する割込位置検出手段と、この割込位置検出手段により検出された割込位置に基づきスナップショットを実行すべき所定数の最適スナップショット位置を決定するスナップショット位置決定手段とを具備するディジタル検証支援装置であって、前記シミュレータに、前記最適スナップショット位置において前記シミュレータが現状の復元に用いるスナップショット情報を取得し保持するスナップショット情報取得保持手段と、ベクタを先頭から実行して未処理の割込位置へ到ると、当該割込位置に対応する割込処理を実行して割込処理が終了となると、この割込位置に対応する最適スナップショット位置のスナップショット情報に基づき復元を行うまでの一連処理を実行し、当該最適スナップショット位置から前記ベクタの実行へと進むベクタ処理手段とが含まれており、前記スナップショット情報取得保持手段と前記ベクタ処理手段の処理に要する割込位置情報と最適スナップショット位置情報とを提供することを特徴とする。
【図面の簡単な説明】
【００２０】
【図１】２ステップＤＢ型と呼ばれるインタラプト検証手法の処理を示す説明図。
【図２】従来のインタラプト検証手法の処理を示す説明図。
【図３】本発明の第１の実施形態に係るディジタル検証支援装置を用いたディジタル検証システムの構成を示す構成図。
【図４】複数のベクタが並列処理される構成のディジタル検証システムの構成を示す構成図。
【図５】本発明の第１の実施形態に係るディジタル検証支援装置を用いたディジタル検証システムによる処理動作を示すフローチャート。
【図６】本発明の第１の実施形態に係るディジタル検証支援装置を用いたディジタル検証システムによる処理動作によりスナップショットを含む割込み処理の命令が作成される過程を示す図。
【図７】図６に示した命令によりベクタを実行したときの処理の流れを示す図。
【図８】本発明の第１の実施形態に係るディジタル検証支援装置を用いたディジタル検証システムによる処理動作によりスナップショットを含む割込み処理の命令が実行された場合の処理時間を示す図。
【図９】本発明の第１の実施形態に係るディジタル検証支援装置が全通り法を用いた場合の割込み位置とスナップショット位置との関係を示す図。
【図１０】本発明の実施形態に係るディジタル検証支援装置がＸ均等法を用いた場合の割込み位置とスナップショット位置との関係を示す図。
【図１１】Ｘ均等法を用いた場合の問題点を示す図。
【図１２】Ｘ均等法を用いた場合の問題点を示す図。
【図１３】本発明の実施形態に係るディジタル検証支援装置がＹ均等法を用いた場合の割込み位置とスナップショット位置との関係を示す図。
【図１４】Ｙ均等法を用いた場合の問題点を示す図。
【図１５】本発明の実施形態に係るディジタル検証支援装置が傾き法を用いた場合の割込み位置とスナップショット位置との関係を示す図。
【図１６】傾き法を用いた場合の問題点を示す図。
【図１７】本発明の実施形態に係るディジタル検証支援装置が面積法を用いた場合の割込み位置と第１番目のスナップショット位置との関係を示す図。
【図１８】本発明の実施形態に係るディジタル検証支援装置が面積法を用いた場合の割込み位置と第２番目のスナップショット位置との関係を示す図。
【図１９】本発明の実施形態に係るディジタル検証支援装置が面積法を用いた場合の割込み位置と第３番目のスナップショット位置との関係を示す図。
【図２０】本発明の実施形態に係るディジタル検証支援装置が面積法を用いた場合の割込み位置と第Ｍ番目のスナップショット位置との関係を示す図。
【発明を実施するための形態】
【００２１】
以下添付図面を参照して、本発明の実施形態に係るディジタル検証支援装置及びディジタル検証支援用プログラムを説明する。各図において同一の構成要素には、同一の符号を付して重複する説明を省略する。図３に第１の実施形態に係るディジタル検証支援装置を用いたディジタル検証システムの構成を示す。この実施形態では、ディジタル検証装置であるシミュレータ１００と、第１の実施形態に係るディジタル検証支援装置２００とを備えている。シミュレータ１００には、ベクタファイル１３０によるベクタが与えられる。ベクタがシミュレータ１００により実行されることによりログが作成される。
【００２２】
図３では１つのシミュレータ１００により１つのベクタが実行されるように描かれているが、実際は図４のように、シミュレータ１００は、複数のディジタル検証装置１−１、１−２、・・・、１−Ｎにより構成されるものであり、ベクタファイル１３０から、ベクタ２−１がディジタル検証装置１−１、ベクタ２−２がディジタル検証装置１−２に、・・・、ベクタ２−Ｎがディジタル検証装置１−Ｎに与えられて実行される。
【００２３】
この結果、ログ３−１、３−２、・・・、３−Ｎが得られる。このログ３−１、３−２、・・・、３−Ｎは、ステートマシンのステート変化が記述されている。シミュレータ１００により作成されたログ３−１、３−２、・・・、３−Ｎは、ディジタル検証支援装置２００の割込位置検出手段２１０が受け取る。割込位置検出手段２１０は、ステート変化の時点であってユニークな内部状態である時を割込位置として検出する。ユニークな内部状態である時を割込位置として検出する理由は、同じ内部状態からの割込が重複することを防止するためである。上記のようにしてベクタ２−１、２−２、・・・、２−Ｎにおいて検出された割込位置情報は、割込位置データベース２３０に記憶される。
【００２４】
ディジタル検証支援装置２００には、スナップショット位置決定手段２２０が備えられている。スナップショット位置決定手段２２０は、上記割込位置検出手段２１０により検出された割込位置に基づきスナップショットを実行すべき所定数の最適スナップショット位置を決定するものである。
【００２５】
シミュレータ１００には、スナップショット情報取得保持手段１１０とベクタ処理手段１２０とが備えられている。スナップショット情報取得保持手段１１０は、上記スナップショット位置決定手段２２０により決定された最適スナップショット位置において上記シミュレータ１００が現状の復元に用いるスナップショット情報を取得し保持するものである。ベクタ処理手段１２０は、ベクタを先頭から実行して未処理の割込位置へ到ると、当該割込位置に対応する割込処理を実行して割込処理が終了となると、この割込位置に対応する最適スナップショット位置のスナップショット情報に基づき復元を行うまでの一連処理を実行し、当該最適スナップショット位置から上記ベクタの実行へと進むものである。この処理では、処理が図７に示されるように進む。
【００２６】
以上の構成を有するディジタル検証支援装置２００では、図５に示すフローチャートにより処理が行われる。まず、全ベクタの実行によりログ収集を行い、ログの中からステート変化点を見つけて割込位置を検出する処理を行う（Ｓ１１）。この結果、図６の割込情報ＩＰＩに示すように、ベクタ１、べクタ２、…、ベクタ８４１に示すように割込位置（１００００、１０５００、５００００、・・・、１００００などの割込位置）が得られる。なお、割込位置やスナップショット位置の単位は、特に限定はないが、ここではｍｓｅｃ或いはｎｓｅｃなどを用いることができる。
【００２７】
次の１つのベクタにおける割込位置を取り出し、所定数の最適スナップショット位置を求める（Ｓ１２）。最適スナップショット位置は、基本的に各割込位置の前であり、先の割込位置に重ならない時点であることが好適である。図６の例では、割込位置として１００００、１０５００、２００００、３００００、・・・がベクタ１の割込位置ＩＰＩ−Ｖ１として取り出されたことを示している。
【００２８】
そして、最適スナップショット位置の計算では、２つの割込位置１００００と割込位置１０５００の前の９０００が決定され、２つの割込位置２００００、割込位置３００００の前の１９０００が決定され、・・・、というように、所定数の割込位置の前にスナップショット位置を設ける手法により、ベクタ１の最適スナップショット位置ＳＳ−Ｖ１として決定されたことを示している。次に、割込位置情報とスナップショット位置情報を用いてスナップショット、割込、割込み処理及割込終了、スナップショット位置へのリターン、スナップショット位置における状態復旧処理、更にベクタ処理の続行が行われるように図６に示す、ｔｃｌによる命令ＳＳ−ＩＮＴを作成する（Ｓ１３）。図６の命令ＳＳ−ＩＮＴには、ベクタ１に対する割込み処理の場合のスナップショット等の処理の命令が記載されている。
【００２９】
ステップＳ１４においては、全てのベクタについて命令が作成されたのかを検出し、ＮＯとなると、ステップＳ１２へ戻って処理が続けられる。全てのベクタについて命令が作成された場合には、処理が終了となる。
【００３０】
図６に示す、ｔｃｌによる命令ＳＳ−ＩＮＴをベクタ１において実行した結果を、図７に示す。この図７から明らかな通り、割込みが１００００、１０５００において生じた場合には、戻る位置はスナップショットの位置である９０００であり、割込みが２００００、３００００において生じた場合には、戻る位置はスナップショットの位置である１９０００である。従って、いずれの割込みにおいてもベクタの最初の位置へ戻っていた従来手法に比べて時間短縮を図ることができる。
【００３１】
図６に示したスナップショットを用いた割込処理を採用したベクタの実行によれば、最初から最後まで基本同じところを２回以上通過しないことは明らかである。従って、理論上のシミュレーション最速時間は「割込み処理に要する時間」が全て同じＴintであるとして、（３００００+（Ｔintｘ４））で済むことが分かる。しかし、ディジタル検証支援装置として用いられている多くのシミュレータには、いくつかの問題や制限がある。
【００３２】
その１は、スナップショット数に制限がある場合があることである。シミュレータによっては、１ベクタにおいて取得可能なスナップショット数に、制限がある（例えば１４まで）。このため、割込みの前にスナップショットを選択的に１４か所において実行するしかない。
【００３３】
その２は、割込み数に制限がある場合があることである。シミュレータによっては、１ベクタにおいてスナップショット位置への復帰動作は所定回（例えば５００）までという制限（実測値）があるため、所定回以上の割込みポイントを持つベクタについは、分割せざるを得ない。
【００３４】
その３は、スナップショット処理に時間を要するということである。スナップショットによる現状の復元に用いるスナップショット情報の作成に７５ｓ、１回目の呼出に８５ｓ、２回目以降の呼出に１ｓ（実測平均値）要する。むやみにスナップショットを増やすと、時間が増大するという結果になる。
【００３５】
その４は、スナップショットを配置できない期間があるということである。ある特定の期間にスナップショットを配置すると保存データが変化する（所謂、「化ける」）現象があるため、割込みポイントからマージンを取って遡ってスナップショットを配置する必要がある。
【００３６】
以上の制限に鑑み、スナップショット位置決定手段２２０がスナップショットを実行すべき所定数の最適スナップショット位置を決定する場合に、最適位置を得るための処理を行う必要がある。即ち、ベクタの長さと割込みポイントの位置、数によって、スナップショットの配置場所を調整する必要がある。
【００３７】
ここでは、最大１４回のスナップショットを如何に配置すればシミュレーション時間が最速になるかを考察してみることとする。例えば、図８に示すように、割込み時間（割込み位置）を黒丸により示し、スナップショット位置を下側に尖った三角形マークにより示す位置とした場合には、シミュレーションに要する時間は棒線により示される。従って、このベクタにおけるシミュレーションに要する総合計時間は、棒線の長さを合計したものと考えることができる。
【００３８】
図８において、スナップショットの配置とシミュレーションの流れの関係を注視すると、次の２点に気付くことができる。一つは、一回目の割込みポイントの前に必ずスナップショットを配置する必要があるということである。このため、スナップショットの配置に関し、実質的研究対象は残りの１３ポイントになるということである。もう一つは、割込み位置が密集した部分の前にスナップショットを配置した方がシミュレーションに要する総合計時間を短くすることが可能になるということである。
【００３９】
以上に鑑み、スナップショット位置決定手段２２０の構成を第１から第５までの５つの実施形態のように構成することができる。先の例ではスナップショットの位置の数を１４として説明したが、以下ではＭポイントとする。第１の実施形態では、各割込位置より直前の位置であって他の割込位置に重ならないＮ点の位置から異なる位置のＭ点の組合せを選択する選択方法を全通りの数行う。図９においては、黒丸により示した割込み位置が存在する場合に、隣接する黒丸の間の数が（Ｎ−１）であり、最前の黒丸の前の位置が１つで、合計Ｎ点のスナップショット可能位置が存在する。スナップショット数はＭに制限されているから、上記Ｎ点からＭ点を選択することができる。このＭ点の例示を、図９においては、下側に尖った三角形マーク１、２、３、４、・・・により示している。
【００４０】
更に、スナップショット位置決定手段２２０は、上記各選択方法において選択された全通りのＭ点の組合せを最適スナップショット位置候補として、上記ベクタ処理手段１２０による一連処理の時間の合計が最短となる組合せを求める。つまり、この最短となる組合せに係るＭ点を、最適スナップショット位置として決定する。この第１の実施形態の手法を「全通り法」と称する。
【００４１】
「全通り法」では、時間を与えれば、確実に最短経路の正解を見つけることができる。しかし、割込み位置の数が多くなると、処理時間が指数関数的に増加し、運用が難しくなるという問題点がある。例えば、割込みが５００箇所あるベクタにおいては、必ずスナップショットが必要となる最初の割込み位置とスナップショットが不要となる最後の割込み位置を対象外としても、これら２地点を除いた合計４９８箇所から例えば１３ポイントを選択してスナップショットを配置することになる。この場合には、探索回数は４９８13＝１．１５×１０35と天文学的数字となるから、１日処理しても終わらないことが分かる。このため、第１の実施形態による手法は割込み位置の数が少ない場合に採用することが好適である。
【００４２】
第２の実施形態では、スナップショット位置決定手段２２０は、各割込位置より直前の位置であって他の割込位置に重ならないＮ点を、全処理時間Ｍを均等分割した区間内に配置する。即ち、第１の割込み位置から最終の割込み位置までの時間を１／Ｍに分割した区間を１区間とし、この均等分割位置を最適スナップショット位置として決定するのである。各区間の広さ（時間幅）は等しいが、それぞれの区間に入る割込み位置の数は異なる。この手法をＸ均等法と称する。
【００４３】
上記Ｍを１４として説明すると、割込み発生期間を１４等分してスナップショット位置を均等に配置する方法（図１０）である。ここでも、割込み時間（割込み位置）を黒丸により示し、スナップショット位置を下側に尖った三角形マークにより示す。具体的には、最初の割込み時間をｔ0とし、最後の割込み時間をｔendとしたときに、スナップショットの時間は、
【数１】
2020021173.tif 000005
を基準に調整を行った結果となる。調整は次のルールで行う。第１のルールは、次の割込み位置の直前にスナップショット位置をずらす、というものである。また、第２のルールは、次の割込み位置までにスナップショットが２つ以上あったら、１つのみ残す、というものである。
【００４４】
一見バランス良く配置されるように思えるが、図１１のような割込みポイントの密集度のバラつきが激しいベクタではうまく対応できないことがある。また、このＸ均等法により割り出されたスナップショットの配置には、図１２に示すように、次の２つの問題がある。
問題１：密集している割込みの間に入ることがある。
問題２：割込み数が多い期間に入らないことがある。
結局、「全通り法」に比べて、計算量が１回のみで処理時間が短い反面、精度が悪いことが分かる。
【００４５】
次の第３の実施形態では、スナップショット位置決定手段２２０は、各割込位置より直前の位置であって他の割込位置に重ならないＮ点を、１／Ｍずつの数に分割する位置を最適スナップショット位置として決定するものである。つまり、Ｎ点を１／Ｍとして、１つの区間に同じ数の割込み位置が含まれるようにする。従って、各区間の幅は異なることが多い。この手法をＹ均等法と称する。
【００４６】
上記Ｍを１４として説明すると、割込み発生回数を１４等分して、図１３に示すように、スナップショットを均等に配置する方法である。単純に割込み数を１４で割ったところの割込みポイントの直前にスナップショットを置くので、Ｘ均等法において説明した問題２は解決するものの、別の問題が浮上する。図１１に示したベクタの如く割込みが発生するパターンに対し、本実施形態のＹ均等法を用いると、図１４に示す２つの問題が確認された。
【００４７】
問題１：割込み数の少ない長い期間に入らないことがある。
問題２：Ｘ均等法以上に密集している割込みの間に入りやすくなる。
結局、計算量はＸ均等法と同じく１回で、正確性を少し改善するものの、まだ精度が悪いという問題がある。
【００４８】
次の第４の実施形態では、スナップショット位置決定手段２２０は、各割込位置より直前の位置であって他の割込位置に重ならないＮ点において、隣接する点の間隔が長い方から（Ｍ−１）組の隣接点を求める。上記のようにして求めた各（Ｍ−１）組の隣接点において、後の（Ｍ−１）点を最適スナップショット位置として決定する。最初のスナップショットの位置は、最初の割込み位置の直前とする。この手法を「傾き法」と称する。
【００４９】
上記Ｍを１４として説明すると、隣接する割込みの間隔が長い割込み位置のペアを求め、長い順に１３まで採用する方法である。具体的には、隣接した割込みの間の時間差を大きい順から１３ポイント選択する。図１５のように、割込み間隔順がΔt5＞Δt9＞Δt15＞Δt2＞・・・となった場合、t5,t9,t15,t2の直前に（各区間の割込み位置のペア中の後ろ側の割込み位置の直前に）スナップショット位置を置くことになる。
【００５０】
本実施形態によれば、大きい間隔のみ選択されるため、Ｙ均等法の問題１と問題２は回避できると考えられる。しかし、図１６のようなベクタの如く割込みが発生するパターンでは、やはり問題が１つ残っている。
問題１：個々の間隔がトップ１３まで届かないが、比較的に長い期間があった場合に、この期間にスナップショット位置が配置されないことがある。
【００５１】
本実施形態は、時間差に注目することで、少ない計算量でＸ均等法にもＹ均等法にもあるような割込み位置が密集する領域にスナップショット位置が入ってしまう問題が解決された。しかし、時間差のみをパラメータとするため、全体のバランス感に欠ける場合が生じ、精度が上がらない原因となると考えられた。
【００５２】
次の第５の実施形態では、スナップショット位置決定手段２２０は、全ての割込み数に対応する長さをＬ１とし、ベクタの最初から第１の最適スナップショット位置までの距離をＳ0として、面積Ｓ0×Ｌ１を求め、ベクタの最初から第２の最適スナップショット位置までの距離をＳ1、全ての割込み数から第１の最適スナップショット位置を用いて行われる割込み数を引いた値に対応する長さをＬ２とし、面積（Ｓ1−Ｓ0）×Ｌ２を求め、ベクタの最初から第３の最適スナップショット位置までの距離をＳ2、全ての割込み数から第２の最適スナップショット位置を用いて行われる割込み数を引いた値に対応する長さをＬ３とし、面積（Ｓ2−Ｓ1）×Ｌ３を求め、・・・、ベクタの最初から第Ｍの最適スナップショット位置までの距離をＳM、全ての割込み数から第Ｍの最適スナップショット位置を用いて行われる割込み数を引いた値に対応する長さをＬＭとし、面積（ＳM−ＳM-1）×ＬＭを求め、上記面積の加算結果が最大となる各最適スナップショット位置を求める「面積法」を実行する。
【００５３】
上記の手法について、図を用いながら説明する。図１７において、ベクタのスタートから処理Ｐ１が行われ、第１番目の割込み位置が時刻ｔ0に存在するものとし、この時刻ｔ0の直前に第１の最適スナップショット位置Ｓ0が配置される。第１の最適スナップショット位置Ｓ0から右側に示されている線分は割込み発生までのシミュレーション時間を示し、その線分数は割込み処理の数を示すことになる。従って、図１７におけるＬ１は全ての割込み数に対応する長さであると言える。まず、スナップショット位置決定手段２２０は、面積Ｓ0×Ｌ１を求める。
【００５４】
次に、第２の最適スナップショット位置Ｓ1が図１８に示すように決まると、ベクタの最初から第２の最適スナップショット位置までの距離をＳ1−Ｓ0とすることができる。また、第２の最適スナップショット位置Ｓ1を用いて行われる割込み数に対応する長さは、図１８のＬ２となる。そこで、スナップショット位置決定手段２２０は、面積（Ｓ1−Ｓ0）×Ｌ２を求める。
【００５５】
次に、第３の最適スナップショット位置Ｓ2が図１９に示すように決まると、ベクタの最初から第３の最適スナップショット位置までの距離をＳ2−Ｓ0とすることができる。また、第３の最適スナップショット位置Ｓ2を用いて行われる割込み数に対応する長さは、図１９のＬ３となる。そこで、スナップショット位置決定手段２２０は、面積（Ｓ2−Ｓ1）×Ｌ３を求める。
【００５６】
以下同様にして次々に面積を求めて行く。そして、第Ｍの最適スナップショット位置ＳMが図２０に示すように決まると、ベクタの最初から第Ｍの最適スナップショット位置までの距離をＳM−Ｓ0とすることができる。また、第Ｍの最適スナップショット位置ＳMを用いて行われる割込み数に対応する長さは、図２０のＬＭとなる。そこで、スナップショット位置決定手段２２０は、面積（ＳM−ＳM-1）×ＬＭを求める。
【００５７】
スナップショット位置決定手段２２０は、上記で求めた面積の加算結果が最大となる各最適スナップショット位置を求める。この場合、第１の最適スナップショット位置Ｓ0は最初の割込み位置の直前であり、固定であるから面積Ｓ0×Ｌ１は変動しない。第２の最適スナップショット位置Ｓ1は第２番目から第（Ｎ−１）番目の割込み位置から選択できるので、面積（Ｓ1−Ｓ0）×Ｌ２が最大となる割込み位置を選択する。
【００５８】
次の第２の最適スナップショット位置Ｓ2についても、幾つかの割込み位置から選択できるので、面積（Ｓ2−Ｓ1）×Ｌ３が最大となる割込み位置を選択する。以下同様に選択を行うことになる。
【００５９】
本実施形態である「面積法」は、以下のような計算によっても実現できる。割込み位置がＮポイントあるとして、それぞれの発生時刻をｔ0，ｔ1，ｔ2，・・・，ｔN-1とする。ｔ0の直前にスナップショット位置を置くので、この位置を図１７に示すようにＳ０＝０とする。図１８に示すように、ｔ1，ｔ2，・・・，ｔN-2の中から第２番目のスナップショット位置を選択する。この選択に当たっては、（ｔn−ｔ0）×（Ｎ−１−ｎ）が最大値となるｎ（１≦ｎ≦Ｎ−２）を選択し、このｔnの位置を第２番目のスナップショット位置Ｓ1とする。
【００６０】
次に、図１９に示すように、ｔ1，・・・，ｔS1-1，ｔS1+1，・・・，ｔN-2の中から第３番目のスナップショット位置を選択する。この選択に当たっては、（ｔn−ｔ0）×（Ｓ1−ｎ）（１≦ｎ≦Ｓ1−１の時）、（ｔn−ｔS1）×（Ｎ−１−ｎ）（Ｓ1＋１≦ｎ≦Ｎ−２の時）から値が最大値となるｎを選択し、このｔnの位置を第３番目のスナップショット位置Ｓ2とする。ここでは更に、Ｓ0＜Ｓ1＜Ｓ2となるように並べ替えを行う。
【００６１】
次に、図２０に示すように、ｔ1，・・・，ｔS1-1，ｔS1+1，・・・，ｔS2-1，ｔS2+1，・・・，ｔN-2の中から第４番目のスナップショット位置を選択する。この選択に当たっては、（ｔn−ｔ0）×（Ｓ1−ｎ）（１≦ｎ≦Ｓ1−１の時）、（ｔn−ｔS1）×（Ｓ2−ｎ）（Ｓ1＋１≦ｎ≦Ｓ2−１の時）、（ｔn−ｔS2）×（Ｎ−１−ｎ）（Ｓ2＋１≦ｎ≦Ｎ−２の時）値が最大値となるｎを選択し、このｔnの位置を第４番目のスナップショット位置Ｓ3とする。ここでは更に、Ｓ0＜Ｓ1＜Ｓ2＜Ｓ3となるように並べ替えを行う。
【００６２】
上記と同様の処理を第１４番目のスナップショット位置まで行う。このようにして１４個のスナップショットを一つずつ割り出すことができる。また、先に述べたように、多くのシミュレータに存在するいくつかの問題や制限における「その３」に記載の通り、ある一定の面積以下になればスナップショットの取得と呼出し時間が時間短縮の効果に勝ることになり、逆効果となる事態が生じるので、スナップショットの制限回数の最大値となる前に処理を中止しても良い。即ち、最大値が１４回であるときに、必ずしも１４回まで計算しなくとも良い。
【００６３】
スナップショットの制限回数が１４の場合、面積法の利害得失を考察する。計算量は最大約１４×（Ｎ―２）回で、前述のＸ均等法やＹ均等法より少し多いが、無視できるレベルの処理時間と考えられる。全通り法ほど完璧な最速解にならない可能性はあるが、割込み数が多ければ多いほど、限りなく最速ルートに近づけるアルゴリズムと考えられる。前述４つの手法の各問題は面積法によって全て解決でき、さらに、もう一つの大きなメリットは、他の手法で議論の余地すらなかった計算処理の中止をすることができることである。
【００６４】
上記の５つの手法について総合的に比較をしてみると、表３に示すように、面積法が時間短縮効果、処理時間、計算処理の中止など全てにおいて有利であることが分かる。スナップショットの効果を一番引き出せると考えられるので、スナップショット位置決定手段２２０が面積法を採用することが好適である。
【表３】
2020021173.tif 000006
【００６５】
また、スナップショット位置決定手段２２０に、上記５つの手法の構成を全て採用した構成とし、割込み数やスナップショット位置数の制限値などにより、適宜１つの手法を採用するようにしても良い。この場合、どの手法を選択するかをオペレータが指示するように指示入力手段を設けても良いが、割込み数やスナップショット位置数を入力すると、これらの数値に基づき自動的に手法を決定するテーブルを備えさせディジタル検証支援装置が自動で手法を決定するようにしても良い。
【００６６】
面積法によるスナップショットを用いてフラッシュメモりにおけるFFh インタラプト検証で効果確認を行った。その効果は、主に時間と品質の２つの観点から評価する。
時間：割込位置データベース２３０の内容が同じデータベース、同等なシミュレーションリソース環境という条件で、従来方式と本実施形態のスナップショット方式を別々に実行して、比較した結果を表４に示す。
【表４】
2020021173.tif 000007
【００６７】
各ベクタのシミュレーション時間の合計時間は、従来方式に比べて９３．４％削減と、５０並列での実測時間は約９２．１％削減することができた。なお、スナップショットの位置を確定する面積法の計算処理は瞬時にできたため、無視して良いと考えられた。これにより、２週間連続実行していた検証が、１日弱で完了できるようになった。
【００６８】
品質：実行した結果を見ると、従来方式に比べて、発生エラーの種類（IDREAD, SVA, BOOST, MCOND, tRST, Stuckなど）も件数も一致することを確認した。検証品質に差異がないことを示している。
【符号の説明】
【００６９】
１００  シミュレータ
１１０  スナップショット情報取得保持手段
１２０  ベクタ処理手段
１３０  ベクタファイル
２００  ディジタル検証支援装置
２１０  割込位置検出手段
２２０  スナップショット位置決定手段
２３０  割込位置データベース
【図１】
2020021173.tif 000008
【図２】
2020021173.tif 000009
【図３】
2020021173.tif 000010
【図４】
2020021173.tif 000011
【図５】
2020021173.tif 000012
【図６】
2020021173.tif 000013
【図７】
2020021173.tif 000014
【図８】
2020021173.tif 000015
【図９】
2020021173.tif 000016
【図１０】
2020021173.tif 000017
【図１１】
2020021173.tif 000018
【図１２】
2020021173.tif 000019
【図１３】
2020021173.tif 000020
【図１４】
2020021173.tif 000021
【図１５】
2020021173.tif 000022
【図１６】
2020021173.tif 000023
【図１７】
2020021173.tif 000024
【図１８】
2020021173.tif 000025
【図１９】
2020021173.tif 000026
【図２０】
2020021173.tif 000027