(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-21
(45)【発行日】2022-11-30
(54)【発明の名称】ディジタル検証支援装置及びディジタル検証支援用プログラム
(51)【国際特許分類】
G06F 30/3308 20200101AFI20221122BHJP
【FI】
G06F30/3308
(21)【出願番号】P 2018142856
(22)【出願日】2018-07-30
【審査請求日】2021-02-22
(73)【特許権者】
【識別番号】391016358
【氏名又は名称】東芝情報システム株式会社
(74)【代理人】
【識別番号】100090169
【氏名又は名称】松浦 孝
(74)【代理人】
【識別番号】100074147
【氏名又は名称】本田 崇
(74)【代理人】
【識別番号】100124497
【氏名又は名称】小倉 洋樹
(72)【発明者】
【氏名】倪 佳冰
【審査官】松浦 功
(56)【参考文献】
【文献】特表2010-531000(JP,A)
【文献】特開2010-102372(JP,A)
【文献】特開2000-020349(JP,A)
【文献】米国特許出願公開第2006/0155525(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 30/00 -30/398
G01R 31/00 -31/3193
G06F 11/22 -11/277
(57)【特許請求の範囲】
【請求項1】
ディジタル検証を行うシミュレータに与えるベクタにおける割込位置を検出する割込位置検出手段と、
この割込位置検出手段により検出された割込位置に基づきスナップショットを実行すべき所定数の最適スナップショット位置を決定するスナップショット位置決定手段と
を具備するディジタル検証支援装置であって、
前記シミュレータに、
前記最適スナップショット位置において前記シミュレータが現状の復元に用いるスナップショット情報を取得し保持するスナップショット情報取得保持手段と、
ベクタを先頭から実行して未処理の割込位置へ到ると、当該割込位置に対応する割込処理を実行して割込処理が終了となると、この割込位置に対応する最適スナップショット位置のスナップショット情報に基づき復元を行うまでの一連処理を実行し、当該最適スナップショット位置から前記ベクタの実行へと進むベクタ処理手段と
が含まれており、
前記スナップショット情報取得保持手段と前記ベクタ処理手段の処理に要する割込位置情報と最適スナップショット位置情報とを提供することを特徴とするディジタル検証支援装置。
【請求項2】
前記スナップショット位置決定手段は、各割込位置より直前の位置であって他の割込位置に重ならないN点の位置から異なる位置のM点の組合せを選択する選択方法を全通りの数行い、各選択方法において選択されたM点を最適スナップショット位置候補として、前記ベクタ処理手段による一連処理の時間の合計が最短となる組合せを求め、この最短の組合せに係るM点を最適スナップショット位置として決定する全通り法を実行することを特徴とする請求項1に記載のディジタル検証支援装置。
【請求項3】
前記スナップショット位置決定手段は、各割込位置より直前の位置であって他の割込位置に重ならないN点を、全処理時間Mを均等分割した区間内に配置し、前記均等分割位置を最適スナップショット位置として決定するX均等法を実行することを特徴とする請求項1または2に記載のディジタル検証支援装置。
【請求項4】
前記スナップショット位置決定手段は、各割込位置より直前の位置であって他の割込位置に重ならないN点を、1/Mずつの数に分割する位置を最適スナップショット位置として決定するY均等法を実行することを特徴とする請求項1乃至3のいずれか1項に記載のディジタル検証支援装置。
【請求項5】
前記スナップショット位置決定手段は、各割込位置より直前の位置であって他の割込位置に重ならないN点において、隣接する点の間隔が長い方から(M-1)組の隣接点を求め、各(M-1)組の隣接点において後の(M-1)点を最適スナップショット位置として決定する傾き法を実行することを特徴とする請求項1乃至4のいずれか1項に記載のディジタル検証支援装置。
【請求項6】
前記スナップショット位置決定手段は、全ての割込み数に対応する長さをL1とし、ベクタの最初から第1の最適スナップショット位置までの距離をS
0として、面積S
0×L1を求め、ベクタの最初から第2の最適スナップショット位置までの距離をS
1、全ての割込み数から第1の最適スナップショット位置を用いて行われる割込み数を引いた値に対応する長さをL2とし、面積(S
1-S
0)×L2を求め、ベクタの最初から第3の最適スナップショット位置までの距離をS
2、全ての割込み数から第2の最適スナップショット位置を用いて行われる割込み数を引いた値に対応する長さをL3とし、面積(S
2-S
1)×L3を求め、・・・、ベクタの最初から第Mの最適スナップショット位置までの距離をS
M、全ての割込み数から第Mの最適スナップショット位置を用いて行われる割込み数を引いた値に対応する長さをLMとし、面積(S
M-S
M-
1)×LMを求め、上記面積の加算結果が最大となる各最適スナップショット位置を求める面積法を実行することを特徴とする
請求項1乃至5のいずれか1項に記載のディジタル検証支援装置。
【請求項7】
ディジタル検証支援装置のコンピュータを、
ディジタル検証を行うシミュレータに与えるベクタにおける割込位置を検出する割込位置検出手段、
この割込位置検出手段により検出された割込位置に基づきスナップショットを実行すべき所定数の最適スナップショット位置を決定するスナップショット位置決定手段
として機能させるディジタル検証支援用プログラムであって、
前記シミュレータに含まれる、
前記最適スナップショット位置において前記シミュレータが現状の復元に用いるスナップショット情報を取得し保持するスナップショット情報取得保持手段と、
ベクタを先頭から実行して未処理の割込位置へ到ると、当該割込位置に対応する割込処理を実行して割込処理が終了となると、この割込位置に対応する最適スナップショット位置のスナップショット情報に基づき復元を行うまでの一連処理を実行し、当該最適スナップショット位置から前記ベクタの実行へと進むベクタ処理手段と
に対し、処理に要する割込位置情報と最適スナップショット位置情報とを提供することを特徴とするディジタル検証支援用プログラム。
【請求項8】
前記コンピュータを前記スナップショット位置決定手段として、各割込位置より直前の位置であって他の割込位置に重ならないN点の位置から異なる位置のM点の組合せを選択する選択方法を全通りの数行い、各選択方法において選択されたM点を最適スナップショット位置候補として、前記ベクタ処理手段による一連処理の時間の合計が最短となる組合せを求め、この最短の組合せに係るM点を最適スナップショット位置として決定する全通り法を実行するように機能させることを特徴とする請求項7に記載のディジタル検証支援用プログラム。
【請求項9】
前記コンピュータを前記スナップショット位置決定手段として、各割込位置より直前の位置であって他の割込位置に重ならないN点を、全処理時間Mを均等分割した区間内に配置し、前記均等分割位置を最適スナップショット位置として決定するX均等法を実行するように機能させることを特徴とする請求項7または8に記載のディジタル検証支援用プログラム。
【請求項10】
前記コンピュータを前記スナップショット位置決定手段として、各割込位置より直前の位置であって他の割込位置に重ならないN点を、1/Mずつの数に分割する位置を最適スナップショット位置として決定するY均等法を実行するように機能させることを特徴とする請求項7乃至9のいずれか1項に記載のディジタル検証支援用プログラム。
【請求項11】
前記コンピュータを前記スナップショット位置決定手段として、各割込位置より直前の位置であって他の割込位置に重ならないN点において、隣接する点の間隔が長い方から(M-1)組の隣接点を求め、各(M-1)組の隣接点において後の(M-1)点を最適スナップショット位置として決定する傾き法を実行するように機能させることを特徴とする請求項7乃至10のいずれか1項に記載のディジタル検証支援用プログラム。
【請求項12】
前記コンピュータを前記スナップショット位置決定手段として、全ての割込み数に対応する長さをL1とし、ベクタの最初から第1の最適スナップショット位置までの距離をS
0として、面積S
0×L1を求め、ベクタの最初から第2の最適スナップショット位置までの距離をS
1、全ての割込み数から第1の最適スナップショット位置を用いて行われる割込み数を引いた値に対応する長さをL2とし、面積(S
1-S
0)×L2を求め、ベクタの最初から第3の最適スナップショット位置までの距離をS
2、全ての割込み数から第2の最適スナップショット位置を用いて行われる割込み数を引いた値に対応する長さをL3とし、面積(S
2-S
1)×L3を求め、・・・、ベクタの最初から第Mの最適スナップショット位置までの距離をS
M、全ての割込み数から第Mの最適スナップショット位置を用いて行われる割込み数を引いた値に対応する長さをLMとし、面積(S
M-S
M-
1)×LMを求め、上記面積の加算結果が最大となる各最適スナップショット位置を求める面積法を実行するように機能させることを特徴とする請求項7乃至11のいずれか1項に記載のディジタル検証支援用プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、ディジタル検証支援装置及びディジタル検証支援用プログラムに関するものである。
【背景技術】
【0002】
ディジタル検証においては、検証対象となるRTL(Register Tranfer Level)に対してベクタと称される入力ファイルを作成し、RTLが正常に動作しているかの確認を行う。通常、ベクタは人間が考えて手作業で作成を行っている。一度作成されたベクタに対し、検証対象の電子回路やシステムに非同期に発生する割込みイベントに対して適切な処理が行われているかを確認するためには、インタラプト検証と呼ばれる割込みによる手法を採用することができる。
【0003】
例えば、メモリ製品におけるインタラプト検証は、非同期割込みの性質から、異常系と機能系に分けられており、更に割込み種類で分類すると、次の表1に示すように10種類以上となる。
【0004】
【0005】
更に、現行のインタラプト検証は、ノーマルインタラプト(Normal Interrupt)とハイレゾリューションインタラプト(High Resolution Interrupt)という2種の検証方法の組合せによって行われている。この2種類のインタラプトは、次の表2に示す通りの特徴を有しており、この特徴に合わせて使用されている。表2の「sim時間」は、シミュレーション時間である。
【0006】
【0007】
近年、メモリ製品における回路の複雑化や過去に発生した不具合からのフィードバックにより検証すべき割込みの数が爆発的に増え、シミュレーション時間も激増している。この結果、初めてAIPR機能(Asynchronous Independent Plane Read)を搭載したフラッシュメモリとしては、ハイレゾリューションインタラプトによる全割込み種類の合計割込み数(ベクタ数)が数十万となるものがある。また、一番割込み数の多いFFh インタラプト(表1)は、割込み数と検証時間と共に極めて大きな値となり、レギュレーション一回分に要する時間がライセンス50並列の前提で340h(2週間超え)を要する。
【0008】
本来は、LSIの設計図を磁気テープに焼きこみ、データをLSI製造部門に出荷することの意味から、半導体の回路設計の最終段階である「テープアウト」の直前に最新回路を用いて検証したいところであるが、シミュレーション時間が長いのでテープアウトの2週間前の回路で実行した検証結果しか確認できない。フラッシュメモリの検証方針としては、その期間でのハイレゾリューションインタラプトを断念し、テープアウト後の後追い検証を行うことに留まっている。後追い検証で致命不具合が発見された場合には、refine(マスク改良)になってしまうので、品質(割込み数)を維持しながら、検証効率改善もしくは新しい検証手法の立ち上げが必要である。
【0009】
上記の問題を解決するために、ここでは、現状のインタラプト検証手法を検討してみることにする。ある種のフラッシュメモリにおけるインタラプト検証は、2ステップDB型と呼ばれ、
図1のようにサンプリングとインタラプトの2段階で行う手法が用いられている。
【0010】
ステップ1:サンプリング(Sampling)
全ベクタを事前に流し、ユニークなステートの変化点を共通データベースに登録する。その内容はベクタ名と変化点の発生時間(シミュレーション時間(Simulation Time))であり、それらは割込み検証のターゲットでもある。通常、1ベクタに複数の割込みポイントが登録されるケースが多く、最大7000以上の割込みポイントを持つベクタもある。
【0011】
ステップ2:インタラプト(Interrupt)
データベースの登録情報からベクタを流す条件を決める。具体的にはベクタ名と一致したベクタを実行し、割込み時間になると割込みイベントを発生させる。1割込みポイントに1ベクタが生成される。
【0012】
上記の処理を検討したところ、
図1と
図2に示すように、1ベクタから作成された複数のインタラプトベクタ同士に同じ実行内容が含まれており、無駄があることが分かった。割込みポイントが前にあるベクタ(
図1:vectorx_1、
図2:v1)は必ず割込みポイントが後にあるベクタ(
図1:vectorx_2、
図2:v2)に含まれ、それがまたさらに後にあるベクタ(
図1:vectorx_3、
図2:v3)に含まれ、更に、それがまた後にあるベクタ(
図1:vectorx_4、
図2:v4)に含まれる。
【0013】
このように、複数のベクタが無駄に重複するシミュレーションを経過していることがレギュレーション時間を長くしている原因と考えられる。重複するシミュレーションを共通化して1度の通過にすることができれば、大幅な時間削減を見込めるのである。
【0014】
シミュレータには、シミュレーションの途中状態をテンポラリライブラリに保存し、またその状態から復帰するサポート機能であるスナップショット(Snapshot)が備えられている。この機能によれば、複数のインタラプトベクタにおいてそれぞれに最初に戻って処理を実行することがなくなり時間短縮を実現できる。
【0015】
割込みの場合に状態復元を行うことは、特許文献1に開示されている。また、特許文献2では、レジスタメモリのコピーであるスナップショットがエミュレーションデータの一部として転送され、他のエミュレーションデータとCPUクロックとともに、エミュレーションデバイスにおいてターゲットCPUの命令の完全な模倣を可能にすることが開示されている。
【0016】
特許文献3には、スナップショット解決技術を使用して、シミュレーションのための初期条件信号及び入力信号を得ることができることが開示されている。特許文献4には、状態値変化記憶手段2により、信号の状態値が変化すると信号の変化点情報5を作成すること、シミュレーション時刻を戻す要求があった場合、状態値変更手段3で、保持していた信号の変化点情報5を順に遡って信号を変化前の状態値に戻すことが開示されている。これにより、最初の入力パターンから論理検証をやり直すことなく途中から再開することができ、検証時間が短縮できるというものである。
【先行技術文献】
【特許文献】
【0017】
【文献】特開平7-160537号公報
【文献】特表2008-544340号公報
【文献】特許第5432126号公報
【文献】特開平5-151305号公報
【発明の概要】
【発明が解決しようとする課題】
【0018】
上記のように、状態復元を行うこと、或いはスナップショットの状態復元を用いて時間短縮を図ることが知られていたことが分かる。しかしながら、割込みポイントが数多く存在する場合、更に、スナップショットの位置数を多くすると状態情報の収集と保存に時間を要し必ずしも時間短縮にならないことは明らかである。本発明の実施形態は、ディジタル検証を行うシミュレータに、処理に要する割込位置情報と最適スナップショット位置情報とを与えて適切な処理を可能とするディジタル検証支援装置を提供することを目的としている。
【課題を解決するための手段】
【0019】
実施形態に係るディジタル検証支援装置は、ディジタル検証を行うシミュレータに与えるベクタにおける割込位置を検出する割込位置検出手段と、この割込位置検出手段により検出された割込位置に基づきスナップショットを実行すべき所定数の最適スナップショット位置を決定するスナップショット位置決定手段とを具備するディジタル検証支援装置であって、前記シミュレータに、前記最適スナップショット位置において前記シミュレータが現状の復元に用いるスナップショット情報を取得し保持するスナップショット情報取得保持手段と、ベクタを先頭から実行して未処理の割込位置へ到ると、当該割込位置に対応する割込処理を実行して割込処理が終了となると、この割込位置に対応する最適スナップショット位置のスナップショット情報に基づき復元を行うまでの一連処理を実行し、当該最適スナップショット位置から前記ベクタの実行へと進むベクタ処理手段とが含まれており、前記スナップショット情報取得保持手段と前記ベクタ処理手段の処理に要する割込位置情報と最適スナップショット位置情報とを提供することを特徴とする。
【図面の簡単な説明】
【0020】
【
図1】2ステップDB型と呼ばれるインタラプト検証手法の処理を示す説明図。
【
図2】従来のインタラプト検証手法の処理を示す説明図。
【
図3】本発明の第1の実施形態に係るディジタル検証支援装置を用いたディジタル検証システムの構成を示す構成図。
【
図4】複数のベクタが並列処理される構成のディジタル検証システムの構成を示す構成図。
【
図5】本発明の第1の実施形態に係るディジタル検証支援装置を用いたディジタル検証システムによる処理動作を示すフローチャート。
【
図6】本発明の第1の実施形態に係るディジタル検証支援装置を用いたディジタル検証システムによる処理動作によりスナップショットを含む割込み処理の命令が作成される過程を示す図。
【
図7】
図6に示した命令によりベクタを実行したときの処理の流れを示す図。
【
図8】本発明の第1の実施形態に係るディジタル検証支援装置を用いたディジタル検証システムによる処理動作によりスナップショットを含む割込み処理の命令が実行された場合の処理時間を示す図。
【
図9】本発明の第1の実施形態に係るディジタル検証支援装置が全通り法を用いた場合の割込み位置とスナップショット位置との関係を示す図。
【
図10】本発明の実施形態に係るディジタル検証支援装置がX均等法を用いた場合の割込み位置とスナップショット位置との関係を示す図。
【
図13】本発明の実施形態に係るディジタル検証支援装置がY均等法を用いた場合の割込み位置とスナップショット位置との関係を示す図。
【
図15】本発明の実施形態に係るディジタル検証支援装置が傾き法を用いた場合の割込み位置とスナップショット位置との関係を示す図。
【
図17】本発明の実施形態に係るディジタル検証支援装置が面積法を用いた場合の割込み位置と第1番目のスナップショット位置との関係を示す図。
【
図18】本発明の実施形態に係るディジタル検証支援装置が面積法を用いた場合の割込み位置と第2番目のスナップショット位置との関係を示す図。
【
図19】本発明の実施形態に係るディジタル検証支援装置が面積法を用いた場合の割込み位置と第3番目のスナップショット位置との関係を示す図。
【
図20】本発明の実施形態に係るディジタル検証支援装置が面積法を用いた場合の割込み位置と第M番目のスナップショット位置との関係を示す図。
【発明を実施するための形態】
【0021】
以下添付図面を参照して、本発明の実施形態に係るディジタル検証支援装置及びディジタル検証支援用プログラムを説明する。各図において同一の構成要素には、同一の符号を付して重複する説明を省略する。
図3に第1の実施形態に係るディジタル検証支援装置を用いたディジタル検証システムの構成を示す。この実施形態では、ディジタル検証装置であるシミュレータ100と、第1の実施形態に係るディジタル検証支援装置200とを備えている。シミュレータ100には、ベクタファイル130によるベクタが与えられる。ベクタがシミュレータ100により実行されることによりログが作成される。
【0022】
図3では1つのシミュレータ100により1つのベクタが実行されるように描かれているが、実際は
図4のように、シミュレータ100は、複数のディジタル検証装置1-1、1-2、・・・、1-Nにより構成されるものであり、ベクタファイル130から、ベクタ2-1がディジタル検証装置1-1、ベクタ2-2がディジタル検証装置1-2に、・・・、ベクタ2-Nがディジタル検証装置1-Nに与えられて実行される。
【0023】
この結果、ログ3-1、3-2、・・・、3-Nが得られる。このログ3-1、3-2、・・・、3-Nは、ステートマシンのステート変化が記述されている。シミュレータ100により作成されたログ3-1、3-2、・・・、3-Nは、ディジタル検証支援装置200の割込位置検出手段210が受け取る。割込位置検出手段210は、ステート変化の時点であってユニークな内部状態である時を割込位置として検出する。ユニークな内部状態である時を割込位置として検出する理由は、同じ内部状態からの割込が重複することを防止するためである。上記のようにしてベクタ2-1、2-2、・・・、2-Nにおいて検出された割込位置情報は、割込位置データベース230に記憶される。
【0024】
ディジタル検証支援装置200には、スナップショット位置決定手段220が備えられている。スナップショット位置決定手段220は、上記割込位置検出手段210により検出された割込位置に基づきスナップショットを実行すべき所定数の最適スナップショット位置を決定するものである。
【0025】
シミュレータ100には、スナップショット情報取得保持手段110とベクタ処理手段120とが備えられている。スナップショット情報取得保持手段110は、上記スナップショット位置決定手段220により決定された最適スナップショット位置において上記シミュレータ100が現状の復元に用いるスナップショット情報を取得し保持するものである。ベクタ処理手段120は、ベクタを先頭から実行して未処理の割込位置へ到ると、当該割込位置に対応する割込処理を実行して割込処理が終了となると、この割込位置に対応する最適スナップショット位置のスナップショット情報に基づき復元を行うまでの一連処理を実行し、当該最適スナップショット位置から上記ベクタの実行へと進むものである。この処理では、処理が
図7に示されるように進む。
【0026】
以上の構成を有するディジタル検証支援装置200では、
図5に示すフローチャートにより処理が行われる。まず、全ベクタの実行によりログ収集を行い、ログの中からステート変化点を見つけて割込位置を検出する処理を行う(S11)。この結果、
図6の割込情報IPIに示すように、ベクタ1、べクタ2、…、ベクタ841に示すように割込位置(10000、10500、50000、・・・、10000などの割込位置)が得られる。なお、割込位置やスナップショット位置の単位は、特に限定はないが、ここではmsec或いはnsecなどを用いることができる。
【0027】
次の1つのベクタにおける割込位置を取り出し、所定数の最適スナップショット位置を求める(S12)。最適スナップショット位置は、基本的に各割込位置の前であり、先の割込位置に重ならない時点であることが好適である。
図6の例では、割込位置として10000、10500、20000、30000、・・・がベクタ1の割込位置IPI-V1として取り出されたことを示している。
【0028】
そして、最適スナップショット位置の計算では、2つの割込位置10000と割込位置10500の前の9000が決定され、2つの割込位置20000、割込位置30000の前の19000が決定され、・・・、というように、所定数の割込位置の前にスナップショット位置を設ける手法により、ベクタ1の最適スナップショット位置SS-V1として決定されたことを示している。次に、割込位置情報とスナップショット位置情報を用いてスナップショット、割込、割込み処理及割込終了、スナップショット位置へのリターン、スナップショット位置における状態復旧処理、更にベクタ処理の続行が行われるように
図6に示す、tclによる命令SS-INTを作成する(S13)。
図6の命令SS-INTには、ベクタ1に対する割込み処理の場合のスナップショット等の処理の命令が記載されている。
【0029】
ステップS14においては、全てのベクタについて命令が作成されたのかを検出し、NOとなると、ステップS12へ戻って処理が続けられる。全てのベクタについて命令が作成された場合には、処理が終了となる。
【0030】
図6に示す、tclによる命令SS-INTをベクタ1において実行した結果を、
図7に示す。この
図7から明らかな通り、割込みが10000、10500において生じた場合には、戻る位置はスナップショットの位置である9000であり、割込みが20000、30000において生じた場合には、戻る位置はスナップショットの位置である19000である。従って、いずれの割込みにおいてもベクタの最初の位置へ戻っていた従来手法に比べて時間短縮を図ることができる。
【0031】
図6に示したスナップショットを用いた割込処理を採用したベクタの実行によれば、最初から最後まで基本同じところを2回以上通過しないことは明らかである。従って、理論上のシミュレーション最速時間は「割込み処理に要する時間」が全て同じT
intであるとして、(30000+(T
intx4))で済むことが分かる。しかし、ディジタル検証支援装置として用いられている多くのシミュレータには、いくつかの問題や制限がある。
【0032】
その1は、スナップショット数に制限がある場合があることである。シミュレータによっては、1ベクタにおいて取得可能なスナップショット数に、制限がある(例えば14まで)。このため、割込みの前にスナップショットを選択的に14か所において実行するしかない。
【0033】
その2は、割込み数に制限がある場合があることである。シミュレータによっては、1ベクタにおいてスナップショット位置への復帰動作は所定回(例えば500)までという制限(実測値)があるため、所定回以上の割込みポイントを持つベクタについは、分割せざるを得ない。
【0034】
その3は、スナップショット処理に時間を要するということである。スナップショットによる現状の復元に用いるスナップショット情報の作成に75s、1回目の呼出に85s、2回目以降の呼出に1s(実測平均値)要する。むやみにスナップショットを増やすと、時間が増大するという結果になる。
【0035】
その4は、スナップショットを配置できない期間があるということである。ある特定の期間にスナップショットを配置すると保存データが変化する(所謂、「化ける」)現象があるため、割込みポイントからマージンを取って遡ってスナップショットを配置する必要がある。
【0036】
以上の制限に鑑み、スナップショット位置決定手段220がスナップショットを実行すべき所定数の最適スナップショット位置を決定する場合に、最適位置を得るための処理を行う必要がある。即ち、ベクタの長さと割込みポイントの位置、数によって、スナップショットの配置場所を調整する必要がある。
【0037】
ここでは、最大14回のスナップショットを如何に配置すればシミュレーション時間が最速になるかを考察してみることとする。例えば、
図8に示すように、割込み時間(割込み位置)を黒丸により示し、スナップショット位置を下側に尖った三角形マークにより示す位置とした場合には、シミュレーションに要する時間は棒線により示される。従って、このベクタにおけるシミュレーションに要する総合計時間は、棒線の長さを合計したものと考えることができる。
【0038】
図8において、スナップショットの配置とシミュレーションの流れの関係を注視すると、次の2点に気付くことができる。一つは、一回目の割込みポイントの前に必ずスナップショットを配置する必要があるということである。このため、スナップショットの配置に関し、実質的研究対象は残りの13ポイントになるということである。もう一つは、割込み位置が密集した部分の前にスナップショットを配置した方がシミュレーションに要する総合計時間を短くすることが可能になるということである。
【0039】
以上に鑑み、スナップショット位置決定手段220の構成を第1から第5までの5つの実施形態のように構成することができる。先の例ではスナップショットの位置の数を14として説明したが、以下ではMポイントとする。第1の実施形態では、各割込位置より直前の位置であって他の割込位置に重ならないN点の位置から異なる位置のM点の組合せを選択する選択方法を全通りの数行う。
図9においては、黒丸により示した割込み位置が存在する場合に、隣接する黒丸の間の数が(N-1)であり、最前の黒丸の前の位置が1つで、合計N点のスナップショット可能位置が存在する。スナップショット数はMに制限されているから、上記N点からM点を選択することができる。このM点の例示を、
図9においては、下側に尖った三角形マーク1、2、3、4、・・・により示している。
【0040】
更に、スナップショット位置決定手段220は、上記各選択方法において選択された全通りのM点の組合せを最適スナップショット位置候補として、上記ベクタ処理手段120による一連処理の時間の合計が最短となる組合せを求める。つまり、この最短となる組合せに係るM点を、最適スナップショット位置として決定する。この第1の実施形態の手法を「全通り法」と称する。
【0041】
「全通り法」では、時間を与えれば、確実に最短経路の正解を見つけることができる。しかし、割込み位置の数が多くなると、処理時間が指数関数的に増加し、運用が難しくなるという問題点がある。例えば、割込みが500箇所あるベクタにおいては、必ずスナップショットが必要となる最初の割込み位置とスナップショットが不要となる最後の割込み位置を対象外としても、これら2地点を除いた合計498箇所から例えば13ポイントを選択してスナップショットを配置することになる。この場合には、探索回数は49813=1.15×1035と天文学的数字となるから、1日処理しても終わらないことが分かる。このため、第1の実施形態による手法は割込み位置の数が少ない場合に採用することが好適である。
【0042】
第2の実施形態では、スナップショット位置決定手段220は、各割込位置より直前の位置であって他の割込位置に重ならないN点を、全処理時間Mを均等分割した区間内に配置する。即ち、第1の割込み位置から最終の割込み位置までの時間を1/Mに分割した区間を1区間とし、この均等分割位置を最適スナップショット位置として決定するのである。各区間の広さ(時間幅)は等しいが、それぞれの区間に入る割込み位置の数は異なる。この手法をX均等法と称する。
【0043】
上記Mを14として説明すると、割込み発生期間を14等分してスナップショット位置を均等に配置する方法(
図10)である。ここでも、割込み時間(割込み位置)を黒丸により示し、スナップショット位置を下側に尖った三角形マークにより示す。具体的には、最初の割込み時間をt
0とし、最後の割込み時間をt
endとしたときに、スナップショットの時間は、
【数1】
を基準に調整を行った結果となる。調整は次のルールで行う。第1のルールは、次の割込み位置の直前にスナップショット位置をずらす、というものである。また、第2のルールは、次の割込み位置までにスナップショットが2つ以上あったら、1つのみ残す、というものである。
【0044】
一見バランス良く配置されるように思えるが、
図11のような割込みポイントの密集度のバラつきが激しいベクタではうまく対応できないことがある。また、このX均等法により割り出されたスナップショットの配置には、
図12に示すように、次の2つの問題がある。
問題1:密集している割込みの間に入ることがある。
問題2:割込み数が多い期間に入らないことがある。
結局、「全通り法」に比べて、計算量が1回のみで処理時間が短い反面、精度が悪いことが分かる。
【0045】
次の第3の実施形態では、スナップショット位置決定手段220は、各割込位置より直前の位置であって他の割込位置に重ならないN点を、1/Mずつの数に分割する位置を最適スナップショット位置として決定するものである。つまり、N点を1/Mとして、1つの区間に同じ数の割込み位置が含まれるようにする。従って、各区間の幅は異なることが多い。この手法をY均等法と称する。
【0046】
上記Mを14として説明すると、割込み発生回数を14等分して、
図13に示すように、スナップショットを均等に配置する方法である。単純に割込み数を14で割ったところの割込みポイントの直前にスナップショットを置くので、X均等法において説明した問題2は解決するものの、別の問題が浮上する。
図11に示したベクタの如く割込みが発生するパターンに対し、本実施形態のY均等法を用いると、
図14に示す2つの問題が確認された。
【0047】
問題1:割込み数の少ない長い期間に入らないことがある。
問題2:X均等法以上に密集している割込みの間に入りやすくなる。
結局、計算量はX均等法と同じく1回で、正確性を少し改善するものの、まだ精度が悪いという問題がある。
【0048】
次の第4の実施形態では、スナップショット位置決定手段220は、各割込位置より直前の位置であって他の割込位置に重ならないN点において、隣接する点の間隔が長い方から(M-1)組の隣接点を求める。上記のようにして求めた各(M-1)組の隣接点において、後の(M-1)点を最適スナップショット位置として決定する。最初のスナップショットの位置は、最初の割込み位置の直前とする。この手法を「傾き法」と称する。
【0049】
上記Mを14として説明すると、隣接する割込みの間隔が長い割込み位置のペアを求め、長い順に13まで採用する方法である。具体的には、隣接した割込みの間の時間差を大きい順から13ポイント選択する。
図15のように、割込み間隔順がΔt5>Δt9>Δt15>Δt2>・・・となった場合、t5,t9,t15,t2の直前に(各区間の割込み位置のペア中の後ろ側の割込み位置の直前に)スナップショット位置を置くことになる。
【0050】
本実施形態によれば、大きい間隔のみ選択されるため、Y均等法の問題1と問題2は回避できると考えられる。しかし、
図16のようなベクタの如く割込みが発生するパターンでは、やはり問題が1つ残っている。
問題1:個々の間隔がトップ13まで届かないが、比較的に長い期間があった場合に、この期間にスナップショット位置が配置されないことがある。
【0051】
本実施形態は、時間差に注目することで、少ない計算量でX均等法にもY均等法にもあるような割込み位置が密集する領域にスナップショット位置が入ってしまう問題が解決された。しかし、時間差のみをパラメータとするため、全体のバランス感に欠ける場合が生じ、精度が上がらない原因となると考えられた。
【0052】
次の第5の実施形態では、スナップショット位置決定手段220は、全ての割込み数に対応する長さをL1とし、ベクタの最初から第1の最適スナップショット位置までの距離をS0として、面積S0×L1を求め、ベクタの最初から第2の最適スナップショット位置までの距離をS1、全ての割込み数から第1の最適スナップショット位置を用いて行われる割込み数を引いた値に対応する長さをL2とし、面積(S1-S0)×L2を求め、ベクタの最初から第3の最適スナップショット位置までの距離をS2、全ての割込み数から第2の最適スナップショット位置を用いて行われる割込み数を引いた値に対応する長さをL3とし、面積(S2-S1)×L3を求め、・・・、ベクタの最初から第Mの最適スナップショット位置までの距離をSM、全ての割込み数から第Mの最適スナップショット位置を用いて行われる割込み数を引いた値に対応する長さをLMとし、面積(SM-SM-1)×LMを求め、上記面積の加算結果が最大となる各最適スナップショット位置を求める「面積法」を実行する。
【0053】
上記の手法について、図を用いながら説明する。
図17において、ベクタのスタートから処理P1が行われ、第1番目の割込み位置が時刻t
0に存在するものとし、この時刻t
0の直前に第1の最適スナップショット位置S
0が配置される。第1の最適スナップショット位置S
0から右側に示されている線分は割込み発生までのシミュレーション時間を示し、その線分数は割込み処理の数を示すことになる。従って、
図17におけるL1は全ての割込み数に対応する長さであると言える。まず、スナップショット位置決定手段220は、面積S
0×L1を求める。
【0054】
次に、第2の最適スナップショット位置S
1が
図18に示すように決まると、ベクタの最初から第2の最適スナップショット位置までの距離をS
1-S
0とすることができる。また、第2の最適スナップショット位置S
1を用いて行われる割込み数に対応する長さは、
図18のL2となる。そこで、スナップショット位置決定手段220は、面積(S
1-S
0)×L2を求める。
【0055】
次に、第3の最適スナップショット位置S
2が
図19に示すように決まると、ベクタの最初から第3の最適スナップショット位置までの距離をS
2-S
0とすることができる。また、第3の最適スナップショット位置S
2を用いて行われる割込み数に対応する長さは、
図19のL3となる。そこで、スナップショット位置決定手段220は、面積(S
2-S
1)×L3を求める。
【0056】
以下同様にして次々に面積を求めて行く。そして、第Mの最適スナップショット位置S
Mが
図20に示すように決まると、ベクタの最初から第Mの最適スナップショット位置までの距離をS
M-S
0とすることができる。また、第Mの最適スナップショット位置S
Mを用いて行われる割込み数に対応する長さは、
図20のLMとなる。そこで、スナップショット位置決定手段220は、面積(S
M-S
M-1)×LMを求める。
【0057】
スナップショット位置決定手段220は、上記で求めた面積の加算結果が最大となる各最適スナップショット位置を求める。この場合、第1の最適スナップショット位置S0は最初の割込み位置の直前であり、固定であるから面積S0×L1は変動しない。第2の最適スナップショット位置S1は第2番目から第(N-1)番目の割込み位置から選択できるので、面積(S1-S0)×L2が最大となる割込み位置を選択する。
【0058】
次の第2の最適スナップショット位置S2についても、幾つかの割込み位置から選択できるので、面積(S2-S1)×L3が最大となる割込み位置を選択する。以下同様に選択を行うことになる。
【0059】
本実施形態である「面積法」は、以下のような計算によっても実現できる。割込み位置がNポイントあるとして、それぞれの発生時刻をt
0,t
1,t
2,・・・,t
N-1とする。t
0の直前にスナップショット位置を置くので、この位置を
図17に示すようにS0=0とする。
図18に示すように、t
1,t
2,・・・,t
N-2の中から第2番目のスナップショット位置を選択する。この選択に当たっては、(t
n-t
0)×(N-1-n)が最大値となるn(1≦n≦N-2)を選択し、このt
nの位置を第2番目のスナップショット位置S
1とする。
【0060】
次に、
図19に示すように、t
1,・・・,t
S1-1,t
S1+1,・・・,t
N-2の中から第3番目のスナップショット位置を選択する。この選択に当たっては、(t
n-t
0)×(S
1-n)(1≦n≦S
1-1の時)、(t
n-t
S1)×(N-1-n)(S
1+1≦n≦N-2の時)から値が最大値となるnを選択し、このt
nの位置を第3番目のスナップショット位置S
2とする。ここでは更に、S
0<S
1<S
2となるように並べ替えを行う。
【0061】
次に、
図20に示すように、t
1,・・・,t
S1-1,t
S1+1,・・・,t
S2-1,t
S2+1,・・・,t
N-2の中から第4番目のスナップショット位置を選択する。この選択に当たっては、(t
n-t
0)×(S
1-n)(1≦n≦S
1-1の時)、(t
n-t
S1)×(S
2-n)(S
1+1≦n≦S
2-1の時)、(t
n-t
S2)×(N-1-n)(S
2+1≦n≦N-2の時)値が最大値となるnを選択し、このt
nの位置を第4番目のスナップショット位置S
3とする。ここでは更に、S
0<S
1<S
2<S
3となるように並べ替えを行う。
【0062】
上記と同様の処理を第14番目のスナップショット位置まで行う。このようにして14個のスナップショットを一つずつ割り出すことができる。また、先に述べたように、多くのシミュレータに存在するいくつかの問題や制限における「その3」に記載の通り、ある一定の面積以下になればスナップショットの取得と呼出し時間が時間短縮の効果に勝ることになり、逆効果となる事態が生じるので、スナップショットの制限回数の最大値となる前に処理を中止しても良い。即ち、最大値が14回であるときに、必ずしも14回まで計算しなくとも良い。
【0063】
スナップショットの制限回数が14の場合、面積法の利害得失を考察する。計算量は最大約14×(N―2)回で、前述のX均等法やY均等法より少し多いが、無視できるレベルの処理時間と考えられる。全通り法ほど完璧な最速解にならない可能性はあるが、割込み数が多ければ多いほど、限りなく最速ルートに近づけるアルゴリズムと考えられる。前述4つの手法の各問題は面積法によって全て解決でき、さらに、もう一つの大きなメリットは、他の手法で議論の余地すらなかった計算処理の中止をすることができることである。
【0064】
上記の5つの手法について総合的に比較をしてみると、表3に示すように、面積法が時間短縮効果、処理時間、計算処理の中止など全てにおいて有利であることが分かる。スナップショットの効果を一番引き出せると考えられるので、スナップショット位置決定手段220が面積法を採用することが好適である。
【表3】
【0065】
また、スナップショット位置決定手段220に、上記5つの手法の構成を全て採用した構成とし、割込み数やスナップショット位置数の制限値などにより、適宜1つの手法を採用するようにしても良い。この場合、どの手法を選択するかをオペレータが指示するように指示入力手段を設けても良いが、割込み数やスナップショット位置数を入力すると、これらの数値に基づき自動的に手法を決定するテーブルを備えさせディジタル検証支援装置が自動で手法を決定するようにしても良い。
【0066】
面積法によるスナップショットを用いてフラッシュメモりにおけるFFh インタラプト検証で効果確認を行った。その効果は、主に時間と品質の2つの観点から評価する。
時間:割込位置データベース230の内容が同じデータベース、同等なシミュレーションリソース環境という条件で、従来方式と本実施形態のスナップショット方式を別々に実行して、比較した結果を表4に示す。
【表4】
【0067】
各ベクタのシミュレーション時間の合計時間は、従来方式に比べて93.4%削減と、50並列での実測時間は約92.1%削減することができた。なお、スナップショットの位置を確定する面積法の計算処理は瞬時にできたため、無視して良いと考えられた。これにより、2週間連続実行していた検証が、1日弱で完了できるようになった。
【0068】
品質:実行した結果を見ると、従来方式に比べて、発生エラーの種類(IDREAD, SVA, BOOST, MCOND, tRST, Stuckなど)も件数も一致することを確認した。検証品質に差異がないことを示している。
【符号の説明】
【0069】
100 シミュレータ
110 スナップショット情報取得保持手段
120 ベクタ処理手段
130 ベクタファイル
200 ディジタル検証支援装置
210 割込位置検出手段
220 スナップショット位置決定手段
230 割込位置データベース