(57)【特許請求の範囲】
【請求項１】
第１のクロックドメインと、前記第１のクロックドメインから非同期で信号を受信する第２のクロックドメインと、を有する検証対象回路の回路情報に、所定入力パターンが与えられた、前記検証対象回路内の観測点におけるシミュレーション結果と期待値との不一致を検出する検出手段と、
前記検出手段により前記不一致が検出された場合、前記信号を受信する前記第２のクロックドメイン内の素子の出力がランダム値である出力値群のうちの一部の出力値を、前記シミュレーション結果時の論理値と異なる論理値に設定する設定手段と、
前記設定手段による設定後での前記観測点におけるシミュレーション結果と前記期待値とを比較する比較手段と、
前記比較手段による比較結果に基づいて、前記比較手段による前記設定後での前記観測点におけるシミュレーション結果と前記期待値とが同一である場合、前記一部の出力値に前記不一致の要因が含まれることを特定する特定手段と、
を備えることを特徴とする検証支援装置。
【請求項２】
第１のクロックドメインと、前記第１のクロックドメインから非同期で信号を受信する第２のクロックドメインと、を有する検証対象回路の回路情報に、所定入力パターンが与えられたシミュレーション結果を取得する取得手段と、
前記信号を受信する前記第２のクロックドメイン内の素子の出力がランダム値である出力値群から１個の出力値を順に選択する選択手段と、
前記選択手段により選択される都度、前記出力値群のすべての出力値が前記シミュレーション結果時の論理値と異なる論理値から、前記出力値群のうちの前記選択手段により選択された出力値のみを異なる論理値に設定する設定手段と、
前記出力値群のすべての出力値が前記シミュレーション結果時の論理値と異なる論理値の場合のシミュレーション結果と、前記設定手段による設定後のシミュレーション結果とを比較する比較手段と、
前記出力値群のすべての出力値が前記シミュレーション結果時の論理値と異なる論理値の場合の観測点におけるシミュレーション結果と、前記比較手段により前記設定後での前記観測点におけるシミュレーション結果と、が一致しないと判断された場合、前記選択された１個の出力値の影響が前記観測点に伝播されていることを特定する特定手段と、
を備えることを特徴とする検証支援装置。
【請求項３】
第１のクロックドメインと、前記第１のクロックドメインから非同期で信号を受信する第２のクロックドメインと、を有する検証対象回路の回路情報に、所定入力パターンが与えられた、前記検証対象回路内の観測点におけるシミュレーション結果と期待値との不一致を検出し、
前記不一致が検出された場合、前記信号を受信する前記第２のクロックドメイン内の素子の出力がランダム値である出力値群のうちの一部の出力値を、前記シミュレーション結果時の論理値と異なる論理値に設定し、
設定後での前記観測点におけるシミュレーション結果と前記期待値とを比較し、
比較結果に基づいて、前記設定後での前記観測点におけるシミュレーション結果と前記期待値とが同一である場合、前記一部の出力値に前記不一致の要因が含まれることを特定する
処理をコンピュータに実行させることを特徴とする検証支援プログラム。
【請求項４】
第１のクロックドメインと、前記第１のクロックドメインから非同期で信号を受信する第２のクロックドメインと、を有する検証対象回路の回路情報に、所定入力パターンが与えられたシミュレーション結果を取得し、
前記信号を受信する前記第２のクロックドメイン内の素子の出力がランダム値である出力値群から１個の出力値を順に選択し、
選択される都度、前記出力値群のすべての出力値が前記シミュレーション結果時の論理値と異なる論理値から、前記出力値群のうちの選択された出力値のみを異なる論理値に設定し、
前記出力値群のすべての出力値が前記シミュレーション結果時の論理値と異なる論理値の場合のシミュレーション結果と、前記設定後のシミュレーション結果とを比較し、
前記出力値群のすべての出力値が前記シミュレーション結果時の論理値と異なる論理値の場合の観測点におけるシミュレーション結果と、前記設定後での前記観測点におけるシミュレーション結果と、が一致しないと判断された場合、前記選択された１個の出力値の影響が前記観測点に伝播されていることを特定する
処理をコンピュータに実行させることを特徴とする検証支援プログラム。
【請求項５】
コンピュータによって実行される検証支援方法であって、
第１のクロックドメインと、前記第１のクロックドメインから非同期で信号を受信する第２のクロックドメインと、を有する検証対象回路の回路情報に、所定入力パターンが与えられた、前記検証対象回路内の観測点におけるシミュレーション結果と期待値との不一致を検出し、
前記不一致が検出された場合、前記信号を受信する前記第２のクロックドメイン内の素子の出力がランダム値である出力値群のうちの一部の出力値を、前記シミュレーション結果時の論理値と異なる論理値に設定し、
設定後での前記観測点におけるシミュレーション結果と前記期待値とを比較し、
比較結果に基づいて、前記設定後での前記観測点におけるシミュレーション結果と前記期待値とが同一である場合、前記一部の出力値に前記不一致の要因が含まれることを特定する
ことを特徴とする検証支援方法。
【請求項６】
コンピュータによって実行される検証支援方法であって、
第１のクロックドメインと、前記第１のクロックドメインから非同期で信号を受信する第２のクロックドメインと、を有する検証対象回路の回路情報に、所定入力パターンが与えられたシミュレーション結果を取得し、
前記信号を受信する前記第２のクロックドメイン内の素子の出力がランダム値である出力値群から１個の出力値を順に選択し、
選択される都度、前記出力値群のすべての出力値が前記シミュレーション結果時の論理値と異なる論理値から、前記出力値群のうちの選択された出力値のみを異なる論理値に設定し、
前記出力値群のすべての出力値が前記シミュレーション結果時の論理値と異なる論理値の場合のシミュレーション結果と、前記設定後のシミュレーション結果とを比較し、
前記出力値群のすべての出力値が前記シミュレーション結果時の論理値と異なる論理値の場合の観測点におけるシミュレーション結果と、前記設定後での前記観測点におけるシミュレーション結果と、が一致しないと判断された場合、前記選択された１個の出力値の影響が前記観測点に伝播されていることを特定する
ことを特徴とする検証支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路の回路情報の検証を支援する検証支援装置、検証支援プログラム、および検証支援方法に関する。さらに、本発明は、半導体集積回路の回路情報を検証する検証装置、検証プログラム、および検証方法に関する。
【背景技術】
【０００２】
従来より、半導体集積回路では機能の複雑化や省電力化のため、１半導体集積回路内で周波数の異なる複数のクロックが用いられている。クロックソースを基準にして半導体集積回路内の回路ブロックが区分けされた場合、各区分けされた回路ブロックの集合をクロックドメインと称する。さらに、クロックドメイン間では信号の受け渡し（クロックドメインクロッシング（Ｃｌｏｃｋ  Ｄｏｍａｉｎ  Ｃｒｏｓｓｉｎｇ：以降「ＣＤＣ」と称する。））が行われる場合がある。
【０００３】
図４７は、ＣＤＣの一例を示す説明図である。図４７では、一のクロックドメイン内のＦＦ（Ｆｌｉｐ  Ｆｌｏｐ）の出力であるＳ１が他のクロックドメイン内のＦＦの入力となっている。一のクロックドメイン内のＦＦはＣＬＫ１に同期して動作し、他のクロックドメイン内のＦＦはＣＬＫ２に同期して動作している。一のクロックドメイン内のＦＦ（Ｆｌｉｐ  Ｆｌｏｐ）から他のクロックドメイン内のＦＦへデータが受け渡されると、他のクロックドメイン内のＦＦのクロックのタイミングに関わらず該データが入力される。
【０００４】
各ＦＦにはセットアップタイムとホールドタイムが定義されており、該セットアップタイムとホールドタイムが違反されると、メタステーブル状態が発生する。メタステーブル状態とは出力が不安定な状態であり、０か１のいずれが出力されるか不明確な状態である。一のクロックドメイン内のＦＦの出力であるＳ１がＣＬＫ２の立ち上がり付近で変化すると、チャートで示すように、他のクロックドメイン内のＦＦのセットアップタイムまたはホールドタイムが違反される場合がある。該違反により、他のクロックドメイン内のＦＦの出力であるＳ２がメタステーブル状態となる場合がある。
【０００５】
メタステーブル状態の影響が論理値の差異として後段のＦＦや組み合わせ回路に伝播し、半導体集積回路が誤動作することがある。そのため、メタステーブル状態が発生しても半導体集積回路が誤動作しないことを検証する必要がある。しかしながら、通常のＦＦのモデルを用いた論理検証では、メタステーブル状態の影響が考慮されない。
【０００６】
図４８は、通常のＦＦのモデルが使用されたシミュレーション結果の一例を示す説明図である。通常のＦＦのモデルが使用された検証では、Ｓ１の変化がＣＬＫ２の立ち上がり付近で発生しても、ＣＬＫ２の立ち上がり時のＳ１の値がＳ２へ出力され、セットアップタイムやホールドタイムの違反があっても、該違反による影響を検証することができない。そのため、一のクロックドメインから受信クロックドメイン内に受け渡されるデータが入力されるＦＦのモデルをメタステーブル状態の影響を模擬するモデル（以下「ＣＤＣモデル」）に変更して検証が行われる。
【０００７】
図４９は、ＣＤＣモデルが使用されたシミュレーション結果の一例を示す説明図である。ＣＤＣモデルが使用された検証では、Ｓ１の変化がＣＬＫ２の立ち上がり付近で発生すると、ＣＬＫ２の立ち上がり時にＳ２には０または１のランダム値が１クロックサイクル期間中に出力される。ここでは、１クロックサイクル期間中のランダムな値をＣＤＣジッタと称する。
【０００８】
図５０は、図４９で示したＣＤＣモデルの一例を示す説明図である。図５０のＣＤＣモデルでは、入力信号の変化を検出し、該変化の検出時から一定時間経過以内にクロックイベントが発生すると、該クロックイベントの期間にランダム値を出力する動作が記述されている。ＣＤＣモデルでは、Ｊｉｔｔｅｒ  Ｄｅｔｅｃｔｏｒと、ＦＦと、ＦＦと、選択回路と、を有している。選択回路は、ＦＦの出力信号が０であれば、ＦＦの出力信号を出力し、ＦＦの出力信号が１であれば、＄ｒａｎｄｏｍが出力される。＄ｒａｎｄｏｍはランダム値が発生することを示している。Ｊｉｔｔｅｒ  Ｄｅｔｅｃｔｏｒは、入力信号の値の変化を検出し、該変化の検出時から一定時間経過するまで１を出力する。Ｊｉｔｔｅｒ  Ｄｅｔｅｃｔｏｒの詳細例は後述する。
【０００９】
図５１は、ＣＤＣ検証の一連の流れを示すフローチャートである。論理シミュレーションが可能なコンピュータが、ＣＤＣシミュレーションを実行し（ステップＳ５１０１）、論理障害（以降、「エラー」と称する。）を検出したか否かを判断する（ステップＳ５１０２）。ＣＤＣシミュレーションによってカバレッジ情報が生成される。カバレッジ情報の詳細については後述する。
【００１０】
コンピュータが、エラーを検出したと判断した場合（ステップＳ５１０２：Ｙｅｓ）、検証者が、手作業でデバッグし（ステップＳ５１０３）、ステップＳ５１０１へ戻ることで、コンピュータが、デバッグ後の回路情報を用いてＣＤＣシミュレーションを実行する。デバッグとは、具体的には、論理障害要因（以降、「エラー要因」と称する。）分析や論理修正を示している。
【００１１】
コンピュータが、エラーを検出していないと判断した場合（ステップＳ５１０２：Ｎｏ）、検証者が、カバレッジ情報を用いてカバレッジ不足であるか否かを判断する（ステップＳ５１０４）。検証者が、カバレッジ不足であると判断した場合（ステップＳ５１０４：Ｙｅｓ）、実行条件を変更し（ステップＳ５１０５）、ステップＳ５１０１へ戻る。ここで、実行条件の変更とは、乱数系列の変更や、入力パターンの変更である。検証者が、カバレッジ不足でないと判断した場合（ステップＳ５１０４：Ｎｏ）、ＣＤＣ検証を終了する。
【００１２】
ＣＤＣモデルを用いるシミュレーション（ＣＤＣシミュレーション）では、メタステーブル状態の影響がシミュレーション結果に含まれているため、障害要因（エラー要因）の分析が難しい。そのため、検証者は、ＣＤＣモデルへの変更前の通常の論理シミュレーションにより通常の機能に問題が無いことを確認後、通常の論理シミュレーションで用いたのと同じ入力パターンを用いてＣＤＣシミュレーションを行い、メタステーブル状態の影響に起因する問題が無いかを検査する。
【００１３】
ＣＤＣのカバレッジ判定基準としては、通常のＣＤＣシミュレーションの実行結果を用いてＣＤＣジッタの影響が出力端子まで現れているか否かによって、カバレッジの不足を判断する技術が知られている。また、ＣＤＣのカバレッジ判定基準としては、ＣＤＣモデルの数段先（ここでは、あるＦＦの出力から次のＦＦまでを１段としている。）に現れているか否かを特定することによって、カバレッジの不足を判断する技術も知られている。
【００１４】
図５２は、従来のカバレッジ情報例を示す説明図である。カバレッジ情報５２０１は発生箇所と発生回数とに関する情報である。具体的には、たとえば、カバレッジ情報５２０１は、発生箇所が出力端子であれば発生箇所として出力端子名が記述され、該出力端子から４回期待値と異なる出力がされれば、発生回数として４回が記述される。カバレッジ情報５２０２は観測信号と観測回数とに関する情報である。観測信号はあるＣＤＣモデルの出力の変化であり、観測回数は観測点において該出力の変化の影響が観測された回数である。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００９−１８７３４４号公報
【特許文献２】特開２０１０−１７６４８６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
ＣＤＣシミュレーションにおいてのエラー要因はＣＤＣ箇所である。ＣＤＣ箇所とは、第１のクロックドメインのＦＦから第２のクロックドメインのＦＦにデータが受け渡されている箇所である。エラー要因箇所からエラー判定箇所までには、複数のＦＦや組み合わせ回路などがあるため、距離が離れており、かつ出力されるまでに時間がかかる。たとえば、すべてのＣＤＣジッタの組み合わせを網羅するためには、２＾ＣＤＣジッタ数（＾は乗数を示す）通りのシミュレーションを実行させなければならず、シミュレーションに時間がかかるという問題点があった。さらに、すべてのＣＤＣジッタの組み合わせをシミュレーションしない場合には、検証者が手作業で出バックしながら任意に選んだＣＤＣジッタの組み合わせのみをシミュレーションするため、エラー要因の分析に時間がかかるという問題点がある。
【００１７】
従来では、出力端子やＣＤＣモデルの後段の観測点にＣＤＣジッタの影響があるか否かが判断されていたが、該観測点を後段に設定すると、上流に多くのＣＤＣ箇所を持つこととなる。すなわち、どのＣＤＣ箇所のテストになっているかを判別することができないという問題点がある。
【００１８】
１つの側面では、本発明は、ＣＤＣジッタによるエラー要因の特定を容易化することができる検証支援装置、検証支援プログラム、および検証支援方法を提供することを目的とする。
【００１９】
また、他の側面では、本発明は、上述した従来技術による問題点を解消するため、シミュレーション回数を減少させることで、検証時間を短縮することができる検証装置、検証プログラム、および検証方法を提供することを目的とする。
【課題を解決するための手段】
【００２０】
本発明の一の観点によれば、第１のクロックドメインと、前記第１のクロックドメインから非同期で信号を受信する第２のクロックドメインと、を有する検証対象回路の回路情報に、所定入力パターンが与えられた、前記検証対象回路内の観測点におけるシミュレーション結果と期待値との不一致を検出し、前記不一致が検出された場合、前記信号を受信する前記第２のクロックドメイン内の素子の出力がランダム値である出力値群のうちの一部の出力値を、前記シミュレーション結果時の論理値と異なる論理値に設定し、設定後での前記観測点におけるシミュレーション結果と前記期待値とを比較し、比較結果に基づいて、前記一部の出力値が前記不一致の要因であるか否かを特定する特定する検証支援装置、検証支援プログラム、および検証支援方法が提供される。
【００２１】
本発明の他の観点によれば、第１のクロックドメインと、第１のクロックドメインから非同期で信号を受信する第２のクロックドメインと、を有する検証対象回路の回路情報に、所定入力パターンが与えられたシミュレーション結果を取得し、前記信号を受信する前記第２のクロックドメイン内の素子の出力がランダム値である出力値群のうちの一部の出力値を、取得されたシミュレーション結果時の論理値と異なる論理値に設定し、設定後での前記検証対象回路内の観測点におけるシミュレーション結果と前記観測点における前記シミュレーション結果とを比較し、比較結果に基づいて前記一部の出力値の影響が前記観測点に伝播されているか否かを特定する検証支援装置、検証支援プログラム、および検証支援方法が提供される。
【００２２】
本発明の他の観点によれば、第１のクロックドメインと、前記第１のクロックドメインから非同期で信号を受信する第２のクロックドメインと、を有する検証対象回路の回路情報に、所定入力パターンが与えられるシミュレーションにおいて、前記信号を受信する前記第２のクロックドメイン内の素子からのランダム値の出力を検出し、前記ランダム値が前記素子から検出された場合、前記検証対象回路内の前記素子の後段の回路に対して、前記素子の出力値と異なる論理値を与えたコンカレントシミュレーションを実行し、実行結果を出力する検証装置、検証プログラム、および検証方法が提供される。
【発明の効果】
【００２３】
本検証支援装置、検証支援プログラム、および検証支援方法によれば、ＣＤＣジッタによるエラー要因の特定を容易化することができる。また、本検証装置、検証プログラム、および検証方法によれば、シミュレーション回数を減少させることで、検証時間を短縮することができる。
【図面の簡単な説明】
【００２４】
【図１】図１は、実施の形態１の一の例を示す説明図である。
【図２】図２は、実施の形態１の他の例を示す説明図である。
【図３】図３は、実施の形態１にかかる検証支援装置のハードウェアを示すブロック図である。
【図４】図４は、検証支援装置３００の機能ブロック図である。
【図５】図５は、テストベンチ５００の一例を示す説明図である。
【図６】図６は、回路情報５０１内の第２のクロックドメイン５１１の一例を示す説明図である。
【図７】図７は、実施の形態１で用いるＣＤＣモデルの一例を示す説明図である。
【図８】図８は、Ｊｉｔｔｅｒ  Ｄｅｔｅｃｔｏｒの一例を示す説明図である。
【図９】図９は、入力パターン１を示す説明図である。
【図１０】図１０は、Ｐ０でのシミュレーション結果例を示す説明図である。
【図１１】図１１は、Ｐ１でのシミュレーション結果例を示す説明図である。
【図１２】図１２は、Ｐ２でのシミュレーション結果例を示す説明図である。
【図１３】図１３は、Ｐ３でのシミュレーション結果例を示す説明図である。
【図１４】図１４は、Ｐ４でのシミュレーション結果例を示す説明図である。
【図１５】図１５は、５つの実行パターン例を示す説明図である。
【図１６】図１６は、検証支援装置３００による検証支援処理手順のフローチャートを示す説明図である。
【図１７】図１７は、実施の形態２の一の例を示す説明図である。
【図１８】図１８は、実施の形態２の他の例を示す説明図である。
【図１９】図１９は、実施の形態２にかかる検証支援装置の機能ブロック図である。
【図２０】図２０は、入力パターン２を示す説明図である。
【図２１】図２１は、Ｑ０でのシミュレーション結果を示す説明図である。
【図２２】図２２は、Ｑ１でのシミュレーション結果を示す説明図である。
【図２３】図２３は、Ｑ２でのシミュレーション結果を示す説明図である。
【図２４】図２４は、Ｑ３でのシミュレーション結果を示す説明図である。
【図２５】図２５は、Ｑ４でのシミュレーション結果を示す説明図である。
【図２６】図２６は、Ｑ０〜Ｑ４を示す説明図である。
【図２７】図２７は、実施の形態２における検証支援装置１９００による検証支援処理手順の一例を示すフローチャートである。
【図２８】図２８は、Ｑ０〜Ｑ４とＱ０’〜Ｑ４’とを示す説明図である。
【図２９】図２９は、３個のＣＤＣジッタの選択例を示す説明図である。
【図３０】図３０は、実施の形態３における検証支援装置による検証支援処理手順の一例を示すフローチャート（その１）である。
【図３１】図３１は、実施の形態３における検証支援装置による検証支援処理手順の一例を示すフローチャート（その２）である。
【図３２】図３２は、実施の形態４の一例を示す説明図である。
【図３３】図３３は、検証装置の機能ブロック図である。
【図３４】図３４は、検証装置３３００による検証処理手順の一の例を示すフローチャートである。
【図３５】図３５は、実施の形態４における１クロック目の処理例を示す説明図である。
【図３６】図３６は、１クロック目においての出力結果の一例である。
【図３７】図３７は、実施の形態４における２クロック目の処理例を示す説明図である。
【図３８】図３８は、実施の形態４における３クロック目の処理例を示す説明図である。
【図３９】図３９は、実施の形態４における４クロック目の処理例を示す説明図である。
【図４０】図４０は、実施の形態４における５クロック目の処理例を示す説明図である。
【図４１】図４１は、実施の形態４における６クロック目と７クロック目の処理例を示す説明図である。
【図４２】図４２は、実施の形態４における８クロック目の処理例を示す説明図である。
【図４３】図４３は、カバレッジ情報例を示す説明図である。
【図４４】図４４は、デバッグ支援情報例を示す説明図である。
【図４５】図４５は、検証装置３３００による検証処理手順の他の例を示すフローチャートである。
【図４６】図４６は、観測点の例を示す説明図である。
【図４７】図４７は、ＣＤＣの一例を示す説明図である。
【図４８】図４８は、通常のＦＦのモデルが使用されたシミュレーション結果の一例を示す説明図である。
【図４９】図４９は、ＣＤＣモデルが使用されたシミュレーション結果の一例を示す説明図である。
【図５０】図５０は、図４９で示したＣＤＣモデルの一例を示す説明図である。
【図５１】図５１は、ＣＤＣ検証の一連の流れを示すフローチャートである。
【図５２】図５２は、従来のカバレッジ情報例を示す説明図である。
【発明を実施するための形態】
【００２５】
つぎに、本発明にかかる検証支援装置、検証支援プログラム、および検証支援方法の好適な実施の形態１〜実施の形態３を詳細に説明する。実施の形態１〜３では、エラー要因分析が自動化される例について示す。さらに、本発明にかかる検証装置、検証プログラム、および検証方法の好適な実施の形態４を詳細に説明する。実施の形態４では、実施の形態１〜３におけるシミュレーションを容易化するシミュレータについて示す。
【００２６】
実施の形態１では、所定の入力パターンを用いたＣＤＣシミュレーションにおいて、期待値と一致しないＣＤＣジッタの論理値の組み合わせを用いて、いずれのＣＤＣジッタでエラーが発生しているのかを特定する例について説明する。
【００２７】
実施の形態２では、あるＣＤＣジッタの出力値を、所定入力パターンでＣＤＣシミュレーションしたシミュレーション結果時のＣＤＣジッタの論理値と異なる論理値に設定する。そして、実施の形態２では、該シミュレーション結果と設定後でのシミュレーション結果とに基づき所定入力パターンにおいて各ＣＤＣジッタの影響が観測点まで伝播されているかを特定する。
【００２８】
実施の形態３では、ＣＤＣジッタがＮ個の場合、２Ｎ＋２回のシミュレーションによって、どの３個のＣＤＣジッタが選択されても、該選択された３個のＣＤＣジッタの論理値の組み合わせが網羅される例について説明する。
【００２９】
実施の形態４では、実施の形態１〜３で示した１ビットだけ異なる複数の実行パターンのシミュレーションにおいて、共通部分を再シミュレーションさせることなく、該複数の実行パターンに関するシミュレーション結果が得られるシミュレーション例を示す。
【００３０】
（実施の形態１）
図１は、実施の形態１の一の例を示す説明図である。図１で示す検証対象回路の回路情報は、第１のクロックドメインと、第１のクロックドメインから非同期で信号を受信する第２のクロックドメインと、を有している。検証支援装置は、回路情報に入力パターンを与えた１回目の観測点のシミュレーション結果と期待値との不一致を検出する。
【００３１】
非同期で信号を受信する第２のクロックドメイン内のＣＤＣモデルに置き換えられたＦＦは入力パターンに応じたタイミングでＣＤＣジッタを出力する。図１中Ｊ１〜Ｊ４がＣＤＣジッタである。
【００３２】
検証支援装置は、ＣＤＣジッタ群（Ｊ１〜Ｊ４）のうちの一部のＣＤＣジッタを１回目のシミュレーション結果時の論理値と異なる論理値に設定する。１回目のシミュレーションでは（Ｊ１，Ｊ２，Ｊ３，Ｊ４）が（０，１，０，１）であるため、２回目のシミュレーションでは、Ｊ１とＪ２を１回目のシミュレーション結果時の論理値と異なる論理値とする。すなわち、２回目のシミュレーションでは、検証支援装置は（Ｊ１，Ｊ２，Ｊ３，Ｊ４）を（１，０，０，１）に設定する。
【００３３】
そして、検証支援装置は、（Ｊ１，Ｊ２，Ｊ３，Ｊ４）を（１，０，０，１）に設定後での観測点のシミュレーション結果（２回目のシミュレーション結果）と期待値とを比較する。２回目のシミュレーション結果と期待値とは同一値である。すなわち、Ｊ１とＪ２が変更されると、シミュレーション結果に変化が生じる。よって、検証支援装置が、Ｊ１とＪ２のうちのいずれか一方のＣＤＣジッタ、またはＪ１とＪ２との２個のＣＤＣジッタがエラー要因であることを特定する。
【００３４】
つぎに、３回目のシミュレーションでは、Ｊ３とＪ４を１回目のシミュレーション結果時の論理値と異なる論理値とする。すなわち、３回目のシミュレーションでは、検証支援装置は（Ｊ１，Ｊ２，Ｊ３，Ｊ４）を（０，１，１，０）に設定する。
【００３５】
そして、検証支援装置は、（Ｊ１，Ｊ２，Ｊ３，Ｊ４）を（０，１，１，０）に設定後での観測点のシミュレーション結果（３回目のシミュレーション結果）と期待値とを比較する。３回目のシミュレーション結果と期待値とは不一致である。そして、検証支援装置は、３回目のシミュレーション結果と１回目のシミュレーション結果とを比較する。３回目のシミュレーション結果と１回目のシミュレーション結果とが一致している。すなわち、Ｊ３とＪ４が変更されても、シミュレーション結果に変化が生じない。よって、検証支援装置が、Ｊ３とＪ４との２個のＣＤＣジッタはエラー要因でないことを特定する。
【００３６】
図２は、実施の形態１の他の例を示す説明図である。図２で示す検証対象回路の回路情報は、第１のクロックドメインと、第１のクロックドメインから非同期で信号を受信する第２のクロックドメインと、を有している。検証支援装置は、回路情報に入力パターンを与えた１回目の観測点のシミュレーション結果と期待値との不一致を検出する。
【００３７】
非同期で信号を受信する第２のクロックドメイン内のＣＤＣモデルに置き換えられたＦＦは入力パターンに応じたタイミングでＣＤＣジッタを出力する。図中Ｊ１〜Ｊ４がＣＤＣジッタである。
【００３８】
検証支援装置は、ＣＤＣジッタ群（Ｊ１〜Ｊ４）のうちの任意の１個のＣＤＣジッタを１回目のシミュレーション結果時の論理値と異なる論理値に設定する。１回目のシミュレーションでは（Ｊ１，Ｊ２，Ｊ３，Ｊ４）が（０，１，０，１）であるため、２回目のシミュレーションでは、Ｊ１を１回目のシミュレーション結果時の論理値と異なる論理値に設定する。すなわち、２回目のシミュレーションでは、検証支援装置は（Ｊ１，Ｊ２，Ｊ３，Ｊ４）を（１，１，０，１）に設定する。
【００３９】
そして、検証支援装置は、（Ｊ１，Ｊ２，Ｊ３，Ｊ４）を（１，１，０，１）に設定後での観測点のシミュレーション結果（２回目のシミュレーション結果）と期待値とを比較する。２回目のシミュレーション結果と期待値とは同一値である。すなわち、２回目のシミュレーション結果と１回目のシミュレーション結果が異なるため、Ｊ１が変更されると、シミュレーション結果に変化が生じる。よって、検証支援装置が、Ｊ１がエラー要因であることを特定する。
【００４０】
つぎに、３回目のシミュレーションでは、Ｊ２を１回目のシミュレーション結果時の論理値と異なる論理値とする。すなわち、３回目のシミュレーションでは、検証支援装置は（Ｊ１，Ｊ２，Ｊ３，Ｊ４）を（０，０，０，１）に設定する。
【００４１】
そして、検証支援装置は、（Ｊ１，Ｊ２，Ｊ３，Ｊ４）を（０，０，０，１）に設定後での観測点のシミュレーション結果（３回目のシミュレーション結果）と期待値とを比較する。３回目のシミュレーション結果と期待値とは不一致である。そして、検証支援装置は、３回目のシミュレーション結果と１回目のシミュレーション結果とを比較する。３回目のシミュレーション結果と１回目のシミュレーション結果とが一致している。すなわち、１回目のシミュレーションと３回目のシミュレーションとでは同一エラーが発生しており、Ｊ２が変更されても、シミュレーションに変化が生じない。よって、検証支援装置が、Ｊ２はエラー要因でないことを特定する。
【００４２】
つぎに、４回目のシミュレーションでは、Ｊ３を１回目のシミュレーション結果時の論理値と異なる論理値とする。すなわち、４回目のシミュレーションでは、検証支援装置は（Ｊ１，Ｊ２，Ｊ３，Ｊ４）を（０，１，１，１）に設定する。
【００４３】
そして、検証支援装置は、（Ｊ１，Ｊ２，Ｊ３，Ｊ４）を（０，１，１，１）に設定後での観測点のシミュレーション結果（４回目のシミュレーション結果）と期待値とを比較する。４回目のシミュレーション結果と期待値とは不一致である。そして、検証支援装置は、４回目のシミュレーション結果と１回目のシミュレーション結果とを比較する。４回目のシミュレーション結果と１回目のシミュレーション結果とは不一致である。すなわち、１回目のシミュレーションと４回目のシミュレーションとでは異なるエラーが発生しており、Ｊ３が変更されると、シミュレーションに変化が生じる。よって、検証支援装置が、Ｊ３はエラー要因であることを特定する。
【００４４】
（検証支援装置のハードウェア）
図３は、実施の形態１にかかる検証支援装置のハードウェアを示すブロック図である。図３において、検証支援装置３００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０３と、磁気ディスクドライブ３０４と、磁気ディスク３０５と、光ディスクドライブ３０６と、光ディスク３０７と、ディスプレイ３０８と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０９と、キーボード３１０と、マウス３１１と、スキャナ３１２と、プリンタ３１３と、を備えている。また、各部はバス３１５によってそれぞれ接続されている。
【００４５】
ここで、ＣＰＵ３０１は、検証支援装置３００の全体の制御を司る。ＲＯＭ３０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ３０３は、ＣＰＵ３０１のワークエリアとして使用される。磁気ディスクドライブ３０４は、ＣＰＵ３０１の制御にしたがって磁気ディスク３０５に対するデータのリード／ライトを制御する。磁気ディスク３０５は、磁気ディスクドライブ３０４の制御で書き込まれたデータを記憶する。
【００４６】
光ディスクドライブ３０６は、ＣＰＵ３０１の制御にしたがって光ディスク３０７に対するデータのリード／ライトを制御する。光ディスク３０７は、光ディスクドライブ３０６の制御で書き込まれたデータを記憶したり、光ディスク３０７に記憶されたデータをコンピュータに読み取らせたりする。
【００４７】
ディスプレイ３０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ３０８は、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００４８】
Ｉ／Ｆ３０９は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク３１４に接続され、このネットワーク３１４を介して他の装置に接続される。そして、Ｉ／Ｆ３０９は、ネットワーク３１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ３０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００４９】
キーボード３１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス３１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００５０】
スキャナ３１２は、画像を光学的に読み取り、検証支援装置３００内に画像データを取り込む。なお、スキャナ３１２は、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  ｒｅａｄｅｒ）機能を持たせてもよい。また、プリンタ３１３は、画像データや文書データを印刷する。プリンタ３１３には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
【００５１】
（検証支援装置３００の機能ブロック図）
図４は、検証支援装置３００の機能ブロック図である。検証支援装置３００は、検出部４０１と、設定部４０２と、比較部４０３と、特定部４０４と、を有している。検出部４０１から特定部４０４は、たとえば、後述のテストベンチ５００内にコーディングされていることとする。
【００５２】
検出部４０１は、第１のクロックドメインと、第１のクロックドメインから非同期で信号（ＣＤＣ信号）を受信する第２のクロックドメインと、を有する回路情報に、所定入力パターンが与えられた第１のシミュレーション結果と期待値との不一致を検出する。
【００５３】
設定部４０２は、検出部４０１により不一致が検出された場合、ＣＤＣ信号を受信する第２のクロックドメイン内のＦＦの出力であるＣＤＣジッタ群のうちの一部のＣＤＣジッタを、第１のシミュレーション結果時の論理値と異なる論理値に設定する。比較部４０３は、設定部４０２による設定後の第２のシミュレーション結果と期待値とを比較する。
【００５４】
特定部４０４は、比較部４０３による比較結果に基づいて、一部のＣＤＣジッタが不一致の要因であるか否かを特定する。具体的には、特定部４０４は、比較部４０３による第２のシミュレーション結果と期待値との比較結果と、第１のシミュレーション結果と期待値との比較結果と、が同一である場合、一部のＣＤＣジッタが不一致の要因でないことを特定する。特定部４０４は、比較部４０３による第２のシミュレーション結果と期待値とが同一である場合、一部のＣＤＣジッタに不一致の要因が含まれることを特定する。
【００５５】
また、設定部４０２は、ＣＤＣジッタ群のうち、任意の１個のＣＤＣジッタをシミュレーション結果時の論理値と異なる論理値に設定する。そして、比較部４０３は、設定部４０２による設定後の第２のシミュレーション結果と期待値とを比較する。そして、特定部４０４は、比較部４０３により第２のシミュレーション結果と期待値とが一致すると判断された場合、任意の１個のＣＤＣジッタが不一致の要因であることを特定する。
【００５６】
図５は、テストベンチ５００の一例を示す説明図である。テストベンチ５００は、検証対象回路の回路情報５０１と、入力パターン発生器５０２と、エラー検出器５０３と、を有している。さらに、回路情報５０１は、第１のクロックドメイン５１０と、第１のクロックドメイン５１０から非同期で信号を受け渡される第２のクロックドメイン５１１とを有している。テストベンチ５００は論理シミュレータによってシミュレーションされる。論理シミュレータによりテストベンチ５００がシミュレーションを開始すると、入力パターン発生器５０２が入力パターンを発生し、回路情報５０１に入力パターンが与えられて、該入力パターンに沿って回路情報５０１がシミュレーションされる。回路情報５０１から検証に必要な信号がシミュレーション結果として出力される。そして、エラー検出器５０３がシミュレーション結果と期待値とを比較することにより、エラーを検出する。
【００５７】
テストベンチ５００の各部は、具体的には、たとえば、ハードウェア記述言語で記述されている。テストベンチ５００は、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶されている。実施の形態１では、検証支援装置３００の検出部４０１〜特定部４０４はテストベンチ５００内の入力パターン発生器５０２やエラー検出器５０３内にコーディングされているとする。具体的には、たとえば、ＣＰＵ３０１が、記憶装置からテストベンチ５００を読み出す。そして、ＣＰＵ３０１が、論理シミュレータを実行し、読み出したテストベンチ５００をシミュレーションすることにより、入力パターン発生器５０２やエラー検出器５０３にコーディングされた検出部４０１〜特定部４０４の処理が実行される。
【００５８】
図６は、回路情報５０１内の第２のクロックドメイン５１１の一例を示す説明図である。第２のクロックドメイン５１１では、ｅｎａｂｌｅの値が１となったときのｄａｔａ＿ｉｎの値を保持する。そして、第２のクロックドメイン５１１では、該保持したｄａｔａ＿ｉｎの値をｒｅａｄの値が１になったときに、ｄａｔａ＿ｏｕｔの値として出力する。ｅｎａｂｌｅとｄａｔａ＿ｉｎとｒｅａｄとのうち、ｅｎａｂｌｅとｄａｔａ＿ｉｎとが第１のクロックドメイン５１０から第２のクロックドメイン５１１へ非同期で受け渡される信号である。
【００５９】
第２のクロックドメイン５１１は、ＣＤＣモデル６０１と、ＣＤＣモデル６０２と、ＦＦ６０３と、ＦＦ６０４と、選択回路６０５と、ＦＦ６０６と、ＡＮＤ回路６０７と、を有している。ＣＤＣモデルの出力がＡである。ＣＤＣモデル６０１は、ｅｎａｂｌｅの入力タイミングとＳＥＬ０の入力値に沿ってＣＤＣジッタが出力される。ＣＤＣモデル６０２の出力がＢであり、ｄａｔａ＿ｉｎの入力タイミングとＳＥＬ０の入力値に沿って、ＣＤＣジッタが出力される。
【００６０】
ＦＦ６０３の入力はＡであり、ＦＦ６０３の出力はＣであり、ＦＦ６０３はＣＬＫ２の立ち上がり時にＡの値を取り込む。ＦＦ６０４の入力はＢであり、ＦＦ６０４の出力はＤであり、ＦＦ６０４はＣＬＫ２の立ち上がり時にＢの値を取り込む。選択回路６０５の入力はＤとＦとＣとであり、選択回路６０５の出力はＥである。選択回路６０５は、Ｃの値に沿ってＤまたはＦの値を出力する。具体的には、選択回路６０５は、Ｃの値が１の場合にＤの値を出力し、Ｃの値が０の場合にＦの値を出力する。
【００６１】
ＦＦ６０６の入力はＥであり、ＦＦ６０６の出力はＦであり、ＦＦ６０６はＣＬＫ２の立ち上がり時にＥの値を取り込む。ＡＮＤ回路６０７の出力がｄａｔａ＿ｏｕｔであり、Ｆの値とｒｅａｄの値に沿ってＡＮＤ回路６０７から０または１が出力される。ｄａｔａ＿ｏｕｔは出力端子である。
【００６２】
実施の形態１では、ｅｎａｂｌｅの値と、ｄａｔａ＿ｉｎの値と、ｒｅａｄの値と、Ａ〜Ｆのそれぞれの値と、ｄａｔａ＿ｏｕｔの値と、がシミュレーション結果として保持される。
【００６３】
図７は、実施の形態１で用いるＣＤＣモデルの一例を示す説明図である。ＣＤＣモデル７００では、入力信号に応じて、１サイクル分のランダムな論理値（ＣＤＣジッタ）を出力することで、メタステーブル状態を再現する。ＣＤＣモデル７００は、Ｊｉｔｔｅｒ  Ｄｅｔｅｃｔｏｒ７０１と、ＦＦ７０２と、ＦＦ７０３と、選択回路７０４と、選択回路７０５と、を有している。
【００６４】
Ｊｉｔｔｅｒ  Ｄｅｔｅｃｔｏｒ７０１は、ＣＤＣモデル７００への入力信号（ＩＮ）の値の変化を検出し、該変化の検出時から一定時間経過するまで１を出力する。ＦＦ７０２はＣＬＫ２の立ち上がり時のＪｉｔｔｅｒ  Ｄｅｔｅｃｔｏｒ７０１の出力値を保持して、該保持した値を選択回路７０４へ出力する。たとえば、ＣＬＫ２の立ち上がり時に、Ｊｉｔｔｅｒ  Ｄｅｔｅｃｔｏｒ７０１が１を出力すれば、ＦＦ７０２が選択回路７０４へ１を出力する。たとえば、ＣＬＫ２の立ち上がり時に、Ｊｉｔｔｅｒ  Ｄｅｔｅｃｔｏｒ７０１が０を出力すれば、選択回路７０４はＦＦ７０３の出力値を出力する。
【００６５】
ＦＦ７０３は、ＣＬＫ２の立ち上がり時にＩＮの値を保持し、該保持した値を選択回路７０４へ出力する。選択回路７０４は、ＦＦ７０２の出力値が０であれば、ＦＦ７０３の出力値を出力し、ＦＦ７０２の出力値が１であれば、選択回路７０５の出力値が出力される。選択回路７０５は、ＳＥＬ［１：０］への入力値が００（２進数）であれば、＄ｒａｎｄｏｍ（ランダム値）を出力する。選択回路７０５は、ＳＥＬ［１：０］への入力値が０１（２進数）であれば、０を出力する。選択回路７０５は、ＳＥＬ［１：０］への入力値が１０（２進数）であれば、１を出力する。
【００６６】
実施の形態１では、たとえば、入力パターン発生器５０２が各ＣＤＣモデル７００からＣＤＣジッタが出力されるタイミングに沿って、ＳＥＬへの入力値を制御することにより、ＣＤＣジッタの論理値を設定することができる。
【００６７】
図７で示すＣＤＣモデル７００は、たとえば、ライブラリとしてＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶されている。回路情報５０１では、該ライブラリ内に記憶された該ＣＤＣモデル７００を指定する。論理シミュレータが該ライブラリからＣＤＣモデル７００を読み出して、ＣＤＣモデル７００に記述された処理を実行する。
【００６８】
図８は、Ｊｉｔｔｅｒ  Ｄｅｔｅｃｔｏｒの一例を示す説明図である。Ｊｉｔｔｅｒ  Ｄｅｔｅｃｔｏｒ８００７０１では、入力であるＴが０から１または１から０に変化すると、出力であるＥはＰＥＲＩＯＤ分の時間が経過するまで１となる。
【００６９】
Ｊｉｔｔｅｒ  Ｄｅｔｅｃｔｏｒ８００７０１は、たとえば、ライブラリとしてＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶されている。回路情報５０１では、該ライブラリ内に記憶されたＪｉｔｔｅｒ  Ｄｅｔｅｃｔｏｒ８００７０１を指定する。論理シミュレータは、該ライブラリからＪｉｔｔｅｒ  Ｄｅｔｅｃｔｏｒ８００７０１に記述された処理を読み出して、Ｊｉｔｔｅｒ  Ｄｅｔｅｃｔｏｒ８００７０１に記述された処理を実行する。
【００７０】
図９は、入力パターン１を示す説明図である。図９では、ＣＬＫ２の立ち上がりから次の立ち上がりの直前までを１周期として、ＣＬＫ２の上に０〜１０まで順に番号を付している。たとえば、１クロック目の立ち上がりとは、図中０と１との番号の間のＣＬＫ２の立ち上がりを示している。１クロック目の立ち上がりと３クロック目の立ち上がりで、ＣＬＫ２に対して、ｅｎａｂｌｅとｄａｔａ＿ｉｎとがデータセットアップを違反している。
【００７１】
入力パターン１においては、１クロック目と３クロック目とのそれぞれの期間で、ＡとＢとの出力がＣＤＣジッタとなる。入力パターン１においては、１クロック目のＡのＣＤＣジッタをＪ１とし、１クロック目のＢのＣＤＣジッタをＪ２とし、３クロック目のＡのＣＤＣジッタをＪ３とし、３クロック目のＢのＣＤＣジッタをＪ４とする。８クロック目で、ｒｅａｄが１となると、ｄａｔａ＿ｏｕｔが１を出力する。テストベンチ５００へ入力パターンを与えると、Ｊ１〜Ｊ４の組み合わせによって、２＾４（「＾」は乗数を示す。）通りの実行パターンが得られる。実行パターンの組み合わせについては、Ｐ＝（Ｊ１，Ｊ２，Ｊ３，Ｊ４）で示す。
【００７２】
ここで、たとえば、論理シミュレータがテストベンチ５００をシミュレーションすると、ＣＤＣジッタはランダム値となり、Ｐ０＝（０，１，１，０）となったとする。また、以下に示す詳細例では、検証支援装置３００がＪ１〜Ｊ４のうちの１個のＣＤＣジッタを順に選択する。そして、検証支援装置３００が該選択したＣＤＣジッタの論理値をＰ０と異なる論理値に設定する例を示す。
【００７３】
図１０は、Ｐ０でのシミュレーション結果例を示す説明図である。たとえば、検証支援装置３００が、検出部４０１により、ｄａｔａ＿ｏｕｔにおける期待値と、Ｐ０＝（０，１，１，０）でのｄａｔａ＿ｏｕｔにおけるシミュレーション結果とを比較する。ｄａｔａ＿ｏｕｔが８クロック目に１でないため、検証支援装置３００が、検出部４０１により、Ｐ０でのシミュレーション結果と、期待値とが一致しないことを検出する。
【００７４】
つぎに、検証支援装置３００が、Ｊ１〜Ｊ４から、順にＣＤＣジッタを選択する。まず、Ｊ１が選択されることとする。検証支援装置３００が、設定部４０２により、あらたな実行パターンのＪ１の論理値をＰ０でのＪ１の論理値と異なる論理値に設定する。ここで、設定されたあらたな実行パターンがＰ１＝（１，１，１，０）である。
【００７５】
具体的には、たとえば、入力パターン発生器５０２が１クロック目のＡの値が１となるように、１クロック目にＳＥＬ０に１０（２進数）を与え、１クロック目のＢの値が１となるように、１クロック目にＳＥＬ１に１０（２進数）を与える。入力パターン発生器５０２が３クロック目のＡの値が１となるように、３クロック目にＳＥＬ０に１０（２進数）を与え、３クロック目のＢの値が０となるように、３クロック目にＳＥＬ１に０１（２進数）を与える。
【００７６】
図１１は、Ｐ１でのシミュレーション結果例を示す説明図である。検証支援装置３００が、比較部４０３により、ｄａｔａ＿ｏｕｔの期待値と、Ｐ１でのｄａｔａ＿ｏｕｔのシミュレーション結果とを比較する。ｄａｔａ＿ｏｕｔが８クロック目に１を出力しないため、検証支援装置３００が、Ｐ０と同様に、Ｐ１でもエラーが発生すると判断する。検証支援装置３００は、特定部４０４により、Ｊ１の論理値の変化によって、シミュレーション結果に変化が発生しないため、Ｊ１がエラー要因でないことを特定する。
【００７７】
つぎに、検証支援装置３００が、Ｊ２〜Ｊ４からＪ２を選択する。検証支援装置３００が、設定部４０２により、あらたな実行パターンのＪ２の論理値をＰ０でのＪ２の論理値と異なる論理値に設定する。ここで、設定されたあらたな実行パターンがＰ２＝（０，０，１，０）である。
【００７８】
具体的には、たとえば、入力パターン発生器５０２が、１クロック目のＡの値が０となるように、１クロック目にＳＥＬ０に０１（２進数）を与え、１クロック目のＢの値が０となるように、１クロック目にＳＥＬ１に０１（２進数）を与える。入力パターン発生器５０２が３クロック目のＡの値が１となるように、３クロック目にＳＥＬ０に１０（２進数）を与え、３クロック目のＢの値が０となるように、３クロック目にＳＥＬ１に０１（２進数）を与える。
【００７９】
図１２は、Ｐ２でのシミュレーション結果例を示す説明図である。検証支援装置３００が、比較部４０３により、ｄａｔａ＿ｏｕｔの期待値と、Ｐ２でのｄａｔａ＿ｏｕｔのシミュレーション結果とを比較する。ｄａｔａ＿ｏｕｔが８クロック目に１を出力しないため、検証支援装置３００が、Ｐ０と同様に、Ｐ２でもエラーが発生すると判断する。検証支援装置３００は、特定部４０４により、Ｊ２の論理値の変化によって、シミュレーション結果に変化が発生しないため、Ｊ２がエラー要因でないことを特定する。
【００８０】
つぎに、検証支援装置３００が、Ｊ３〜Ｊ４からＪ３を選択する。検証支援装置３００が、設定部４０２により、あらたな実行パターンのＪ３の論理値をＰ０でのＪ３の論理値と異なる論理値に設定する。ここで、設定されたあらたな実行パターンがＰ３＝（０，１，０，０）である。
【００８１】
具体的には、入力パターン発生器５０２が１クロック目のＡの値に０が出力されるように、１クロック目にＳＥＬ０に０１（２進数）を与え、１クロック目のＢの値が１となるように、１クロック目にＳＥＬ１に１０（２進数）を与える。入力パターン発生器５０２が３クロック目のＡの値が０となるように、３クロック目にＳＥＬ０に０１（２進数）を与え、３クロック目のＢの値が０となるように、３クロック目にＳＥＬ１に０１（２進数）を与える。
【００８２】
図１３は、Ｐ３でのシミュレーション結果例を示す説明図である。検証支援装置３００が、比較部４０３により、ｄａｔａ＿ｏｕｔの期待値と、Ｐ３でのｄａｔａ＿ｏｕｔのシミュレーション結果と、を比較する。ｄａｔａ＿ｏｕｔが８クロック目に１を出力するため、検証支援装置３００が、Ｐ３でのシミュレーション結果が期待値と一致すると判断する。検証支援装置３００は、特定部４０４により、Ｊ３の論理値の変化によって、シミュレーション結果に変化が発生したため、Ｊ３をエラー要因に特定する。
【００８３】
つぎに、検証支援装置３００が、Ｊ４を選択する。検証支援装置３００が、設定部４０２により、あらたな実行パターンのＪ４の論理値をＰ０でのＪ４の論理値と異なる論理値に設定する。ここで、設定されたあらたな実行パターンがＰ４＝（０，１，１，１）である。
【００８４】
具体的には、入力パターン発生器５０２が１クロック目のＡの値０となるように、１クロック目にＳＥＬ０に０１（２進数）を与え、１クロック目のＢの値が１となるように、１クロック目にＳＥＬ１に１０を与える。入力パターン発生器５０２が３クロック目のＡの値が１となるように、３クロック目にＳＥＬ０に１０（２進数）を与え、３クロック目のＢの値が１となるように、３クロック目にＳＥＬ１に１０を与える。
【００８５】
図１４は、Ｐ４でのシミュレーション結果例を示す説明図である。検証支援装置３００が、比較部４０３により、ｄａｔａ＿ｏｕｔの期待値と、Ｐ４でのｄａｔａ＿ｏｕｔのシミュレーション結果と、を比較する。ｄａｔａ＿ｏｕｔが８クロック目に１を出力するため、検証支援装置３００が、Ｐ４でのシミュレーション結果が期待値と一致すると判断する。検証支援装置３００は、特定部４０４により、Ｊ４の論理値の変化によって、シミュレーション結果に変化が発生したため、Ｊ４をエラー要因に特定する。
【００８６】
図１５は、５つの実行パターン例を示す説明図である。表１５００では、Ｊ１〜Ｊ４の１６通りの組み合わせと、実行パターンとが対応付けられている。
・Ｐ０＝（０，１，１，０）：エラー
・Ｐ１＝（１，１，１，０）：エラー
・Ｐ２＝（０，０，１，０）：エラー
・Ｐ３＝（０，１，０，０）：期待値と一致
・Ｐ４＝（０，１，１，１）：期待値と一致
【００８７】
したがって、複数のＣＤＣジッタからＪ３とＪ４とがエラー要因であることを自動で特定できる。
【００８８】
（検証支援装置３００による検証支援処理手順）
図１６は、検証支援装置３００による検証支援処理手順のフローチャートを示す説明図である。まず、検証支援装置３００が、エラーが検出された実行パターンがあるか否かを判断する（ステップＳ１６０１）。検証支援装置３００が、エラーが検出された実行パターンがないと判断した場合（ステップＳ１６０１：Ｎｏ）、ステップＳ１６０１へ戻る。
【００８９】
検証支援装置３００が、エラーが検出された実行パターンがあると判断した場合（ステップＳ１６０１：Ｙｅｓ）、Ｐ０＝エラーが検出された実行パターンとし（ステップＳ１６０２）、ｎ＝Ｐ０の実行中に発生したＣＤＣジッタの数とし（ステップＳ１６０３）、ｉ＝１とする（ステップＳ１６０４）。検証支援装置３００が、ｉ＞ｎであるか否かを判断する（ステップＳ１６０５）。検証支援装置３００が、ｉ＞ｎでないと判断した場合（ステップＳ１６０５：Ｎｏ）、Ｊｉ（ｉ番目のＣＤＣジッタ）に対する選択値のみがＰ０と異なっているＰｉに関するシミュレーションを実行する（ステップＳ１６０６）。
【００９０】
つぎに、検証支援装置３００が、Ｐｉでのシミュレーション結果にＰ０でのシミュレーション結果と同一のエラーがあるか否かを判断する（ステップＳ１６０７）。検証支援装置３００が、Ｐｉでのシミュレーション結果にＰ０でのシミュレーション結果と同一のエラーがないと判断した場合（ステップＳ１６０７：Ｎｏ）、エラーはＪｉに関連していることを出力する（ステップＳ１６０８）。
【００９１】
そして、検証支援装置３００が、ｉ＝ｉ＋１とし（ステップＳ１６０９）、ステップＳ１６０５へ戻る。検証支援装置３００が、Ｐｉでのシミュレーション結果にＰ０でのシミュレーション結果と同一のエラーがあると判断した場合（ステップＳ１６０７：Ｙｅｓ）、ステップＳ１６０９へ移行する。検証支援装置３００が、ｉ＞ｎであると判断した場合（ステップＳ１６０５：Ｙｅｓ）、一連の処理を終了する。
【００９２】
（実施の形態２）
実施の形態２では、各ＣＤＣジッタの影響が観測点まで伝播しているか否かを検証する例について説明する。
【００９３】
図１７は、実施の形態２の一の例を示す説明図である。図２で示す検証対象回路の回路情報は、第１のクロックドメインと、第１のクロックドメインから非同期で信号を受信する第２のクロックドメインと、を有している。
【００９４】
非同期で信号を受信する第２のクロックドメイン内のＣＤＣモデルに置き換えられたＦＦは入力パターンに応じたタイミングでＣＤＣジッタを出力する。図中Ｊ１〜Ｊ４がＣＤＣジッタである。
【００９５】
回路情報に入力パターンを与えた１回目の観測点のシミュレーションでは（Ｊ１，Ｊ２，Ｊ３，Ｊ４）が（０，１，０，１）である。つぎに、検証支援装置は、ＣＤＣジッタ群（Ｊ１〜Ｊ４）のうちの一部のＣＤＣジッタを１回目のシミュレーション結果時の論理値と異なる論理値に設定する。たとえば、２回目のシミュレーションでは、Ｊ１とＪ２を１回目のシミュレーション結果時の論理値と異なる論理値とする。すなわち、２回目のシミュレーションでは、検証支援装置は（Ｊ１，Ｊ２，Ｊ３，Ｊ４）を（１，０，０，１）に設定する。
【００９６】
そして、検証支援装置は、（Ｊ１，Ｊ２，Ｊ３，Ｊ４）を（１，０，０，１）に設定後での観測点のシミュレーション結果（２回目のシミュレーション結果）と１回目のシミュレーション結果とを比較する。２回目のシミュレーション結果と１回目のシミュレーション結果とは不一致である。すなわち、Ｊ１およびＪ２の論理値が変更されると、シミュレーション結果に変化が生じる。よって、検証支援装置が、Ｊ１とＪ２のうちのいずれか一方のＣＤＣジッタの影響が観測点に伝播されている、またはＪ１とＪ２との２個のＣＤＣジッタの影響が観測点に伝播されていることを特定する。
【００９７】
つぎに、３回目のシミュレーションでは、Ｊ３とＪ４を１回目のシミュレーション結果時の論理値と異なる論理値とする。すなわち、３回目のシミュレーションでは、検証支援装置は（Ｊ１，Ｊ２，Ｊ３，Ｊ４）を（０，１，１，０）に設定する。
【００９８】
そして、検証支援装置は、（Ｊ１，Ｊ２，Ｊ３，Ｊ４）を（０，１，１，０）に設定後での観測点のシミュレーション結果（３回目のシミュレーション結果）と１回目のシミュレーション結果とを比較する。３回目のシミュレーション結果と１回目のシミュレーション結果とは同一値である。すなわち、Ｊ３およびＪ４の論理値が変更されても、シミュレーション結果に変化が生じない。よって、検証支援装置が、Ｊ３とＪ４との２個のＣＤＣジッタの影響が観測点まで伝播しないことを特定する。
【００９９】
図１８は、実施の形態２の他の例を示す説明図である。図１８で示す検証対象回路の回路情報は、第１のクロックドメインと、第１のクロックドメインから非同期で信号を受信する第２のクロックドメインと、を有している。非同期で信号を受信する第２のクロックドメイン内のＣＤＣモデルに置き換えられたＦＦは入力パターンに応じたタイミングでＣＤＣジッタを出力する。図１８中Ｊ１〜Ｊ４がＣＤＣジッタである。
【０１００】
回路情報に入力パターンを与えた１回目の観測点のシミュレーションでは（Ｊ１，Ｊ２，Ｊ３，Ｊ４）が（０，１，０，１）である。検証支援装置は、ＣＤＣジッタ群（Ｊ１〜Ｊ４）のうちの任意の１個のＣＤＣジッタを１回目のシミュレーション結果時の論理値と異なる論理値に設定する。１回目のシミュレーションでは（Ｊ１，Ｊ２，Ｊ３，Ｊ４）が（０，１，０，１）であるため、２回目のシミュレーションでは、Ｊ１を１回目のシミュレーション結果時の論理値と異なる論理値に設定する。すなわち、２回目のシミュレーションでは、検証支援装置は（Ｊ１，Ｊ２，Ｊ３，Ｊ４）を（１，１，０，１）に設定する。
【０１０１】
そして、検証支援装置は、（Ｊ１，Ｊ２，Ｊ３，Ｊ４）を（１，１，０，１）に設定後での観測点のシミュレーション結果（２回目のシミュレーション結果）と観測点の１回目のシミュレーション結果とを比較する。２回目のシミュレーション結果と１回目のシミュレーション結果とは不一致である。すなわち、２回目のシミュレーション結果と１回目のシミュレーション結果が異なるため、Ｊ１が変更されると、シミュレーション結果に変化が生じる。よって、検証支援装置が、Ｊ１の影響が伝播されていると特定する。
【０１０２】
つぎに、３回目のシミュレーションでは、Ｊ２を１回目のシミュレーション結果時の論理値と異なる論理値とする。すなわち、３回目のシミュレーションでは、検証支援装置は（Ｊ１，Ｊ２，Ｊ３，Ｊ４）を（０，０，０，１）に設定する。
【０１０３】
そして、検証支援装置は、（Ｊ１，Ｊ２，Ｊ３，Ｊ４）を（０，０，０，１）に設定後での観測点のシミュレーション結果（３回目のシミュレーション結果）と観測点の１回目のシミュレーション結果とを比較する。３回目のシミュレーション結果と１回目のシミュレーション結果とは同一値である。すなわち、Ｊ２の論理値が変更されても、シミュレーションに変化が生じない。よって、検証支援装置が、Ｊ２の影響は伝播されないと特定する。
【０１０４】
（実施の形態２にかかる検証支援装置の機能ブロック図）
図１９は、実施の形態２にかかる検証支援装置の機能ブロック図である。検証支援装置１９００は、取得部１９０１と、選択部１９０２と、設定部１９０３と、比較部１９０４と、特定部１９０５と、を有している。
【０１０５】
取得部１９０１は、第１のクロックドメインから非同期で信号を受信する第２のクロックドメインと、を有する検証対象回路の回路情報に、所定入力パターンが与えられた第１のシミュレーション結果を取得する。
【０１０６】
設定部１９０３は、信号を受信する第２のクロックドメイン内のＦＦが出力するＣＤＣジッタ群のうちの一部のＣＤＣジッタを、取得部１９０１により取得された第１のシミュレーション結果時の論理値と異なる論理値に設定する。
【０１０７】
比較部１９０４は、設定部１９０３による設定後での検証対象回路内の観測点における第２のシミュレーション結果と観測点における第１のシミュレーション結果とを比較する。
【０１０８】
特定部１９０５は、比較部１９０４による比較結果に基づいて、一部のＣＤＣジッタの影響が観測点に伝播されているか否かを特定する。特定部１９０５は、比較部１９０４によって設定後の第２のシミュレーション結果と第１のシミュレーション結果とが一致すると判断された場合、一部の出力値の影響は伝播されていないと特定する。
【０１０９】
また、特定部１９０５は、比較部１９０４によって設定後の第２のシミュレーション結果と第１のシミュレーション結果とが一致しないと判断された場合、一部のＣＤＣジッタの中に、影響が観測点に伝播されている出力値が含まれていることを特定する。
【０１１０】
また、設定部１９０３は、ＣＤＣジッタ群のうちの任意の１個のＣＤＣジッタをシミュレーション結果時の論理値と異なる論理値に設定する。比較部１９０４は、設定部１９０３による設定後での観測点における第２のシミュレーション結果と観測点における第１のシミュレーション結果とを比較する。特定部１９０５は、比較部１９０４により観測点における第２のシミュレーション結果と観測点における第１のシミュレーション結果とが一致しないと判断された場合、任意の１個のＣＤＣジッタの影響が観測点に伝播されていることを特定する。
【０１１１】
また、選択部１９０２は、ＣＤＣジッタ群から１個のＣＤＣジッタを順に選択する。そして、設定部１９０３は、ＣＤＣジッタ群のうち、選択部１９０２により選択される都度、選択された１個のＣＤＣジッタを第１のシミュレーション結果時の論理値と異なる論理値に設定する。比較部１９０４は、選択された１個のＣＤＣジッタごとに、設定部１９０３による設定後の観測点における第２のシミュレーション結果と観測点における第１のシミュレーション結果とを比較する。特定部１９０５は、比較部１９０４により設定後の観測点における第２のシミュレーション結果と観測点における第１のシミュレーション結果とが一致しないと判断された場合、選択された１個のＣＤＣジッタの影響が観測点に伝播されていることを特定する。
【０１１２】
以上を踏まえて、詳細例を説明する。実施の形態２では、実施の形態１と同一の構成については同一符号を付し、その説明を省略する。
【０１１３】
また、実施の形態２では、検証支援装置１９００の取得部１９０１〜特定部１９０５は上述のテストベンチ５００内の入力パターン発生器５０２やエラー検出器５０３内にコーディングされているとする。具体的には、たとえば、ＣＰＵ３０１が、記憶装置からテストベンチ５００を読み出す。そして、ＣＰＵ３０１が、論理シミュレータを実行し、読み出したテストベンチ５００をシミュレーションすることにより、入力パターン発生器５０２やエラー検出器５０３にコーディングされた取得部１９０１〜特定部１９０５の処理が実行される。
【０１１４】
図２０は、入力パターン２を示す説明図である。図２０では、ＣＬＫ２の立ち上がりから次の立ち上がりの直前までを１周期として、ＣＬＫ２の上に０〜１０まで順に番号を付している。たとえば、１クロック目の立ち上がりとは、図中０と１との番号の間のＣＬＫ２の立ち上がりを示している。１クロック目の立ち上がりと３クロック目の立ち上がりで、ＣＬＫ２に対して、ｅｎａｂｌｅとｄａｔａ＿ｉｎとがデータセットアップを違反している。
【０１１５】
よって、１クロック目と３クロック目とのそれぞれの期間で、ＡとＢとがＣＤＣジッタとなる。ここでは、１クロック目のＡのＣＤＣジッタをＪ１とし、１クロック目のＢのＣＤＣジッタをＪ２とし、３クロック目のＡのＣＤＣジッタをＪ３とし、３クロック目のＢのＣＤＣジッタをＪ４とする。４クロック目で、ｒｅａｄが１となると、ｄａｔａ＿ｏｕｔが１を出力する。テストベンチ５００へ入力パターンを与えると、Ｊ１〜Ｊ４の組み合わせによって、２＾４（「＾」は乗数を示す。）通りの実行パターンが得られる。実行パターンの組み合わせについては、Ｑ＝（Ｊ１，Ｊ２，Ｊ３，Ｊ４）で示す。
【０１１６】
図２１は、Ｑ０でのシミュレーション結果を示す説明図である。ＣＰＵが、任意の実行パターンＱ０を選択する。ここでは、Ｑ０＝（１，０，１，１）が選択される。そして、検証支援装置１９００が、取得部１９０１により、Ｑ０でのシミュレーション結果を取得する。具体的には、たとえば、検証支援装置１９００が、論理シミュレータにＱ０でのシミュレーションを実行させる。検証支援装置１９００が、論理シミュレータによるシミュレーション結果を取得する。
【０１１７】
Ｑ０でのシミュレーション結果では、図２０で示したｄａｔａ＿ｏｕｔと同様に、ｄａｔａ＿ｏｕｔが４クロック目で１となる。検証支援装置１９００が、選択部１９０２により、ＣＤＣジッタ群（Ｊ１〜Ｊ４）から１個のＣＤＣジッタを順に選択する。ここでは、まずＪ１が選択されることとする。検証支援装置１９００が、設定部１９０３により、選択されたＪ１の論理値をＱ０でのＪ１の論理値と異なる論理値に設定する。
【０１１８】
ここで、特定のＣＤＣジッタの論理値の変更方法は、実施の形態１と同様の方法によって変更可能であるため、実施の形態２では詳細な説明を省略する。そして、設定された実行パターンがＱ１＝（０，０，１，１）である。検証支援装置１９００が、ＣＤＣジッタ群の各ＣＤＣジッタの論理値がＱ１となるように論理シミュレータを用いてシミュレーションを実行する。
【０１１９】
図２２は、Ｑ１でのシミュレーション結果を示す説明図である。検証支援装置１９００が、比較部１９０４により、Ｑ１でのシミュレーション結果と、Ｑ０でのシミュレーション結果とを比較する。いずれのシミュレーション結果も４クロック目でｄａｔａ＿ｏｕｔが１となるため、検証支援装置１９００が、Ｑ１でのシミュレーション結果とＱ０でのシミュレーション結果とが同一であると判断する。そして、検証支援装置１９００が、特定部１９０５により、Ｊ１の論理値の変化によって、シミュレーション結果に変化が発生したため、Ｊ１による影響がｄａｔａ＿ｏｕｔまで伝播されていないと特定する。
【０１２０】
つぎに、検証支援装置１９００が、選択部１９０２により、ＣＤＣジッタ群（Ｊ１〜Ｊ４）から、Ｊ２を選択する。検証支援装置１９００が、設定部１９０３により、選択されたＪ２の論理値をＱ０でのＪ２の論理値と異なる論理値に設定する。そして、設定された実行パターンがＱ２＝（１，１，１，１）である。検証支援装置１９００が、ＣＤＣジッタ群の各ＣＤＣジッタの論理値がＱ２となるようにシミュレーションを実行する。
【０１２１】
図２３は、Ｑ２でのシミュレーション結果を示す説明図である。検証支援装置１９００が、比較部１９０４により、Ｑ２でのシミュレーション結果と、Ｑ０でのシミュレーション結果とを比較する。いずれのシミュレーション結果も４クロック目でｄａｔａ＿ｏｕｔが１となるため、検証支援装置１９００が、Ｑ２でのシミュレーション結果とＱ０でのシミュレーション結果とが同一であると判断する。そして、検証支援装置１９００が、特定部１９０５により、Ｊ２の論理値の変化によって、シミュレーション結果に変化が発生したため、Ｊ２による影響がｄａｔａ＿ｏｕｔまで伝播されていないと特定する。
【０１２２】
つぎに、検証支援装置１９００が、選択部１９０２により、ＣＤＣジッタ群（Ｊ１〜Ｊ４）から、Ｊ３を選択する。検証支援装置１９００が、設定部１９０３により、選択されたＪ３の論理値をＱ０でのＪ３の論理値と異なる論理値に設定する。そして、設定された実行パターンがＱ３＝（１，０，０，１）である。検証支援装置１９００が、ＣＤＣジッタ群の各ＣＤＣジッタの論理値がＱ３となるようにシミュレーションを実行する。
【０１２３】
図２４は、Ｑ３でのシミュレーション結果を示す説明図である。検証支援装置１９００が、比較部１９０４により、Ｑ３でのシミュレーション結果と、Ｑ０でのシミュレーション結果とを比較する。いずれのシミュレーション結果も４クロック目でｄａｔａ＿ｏｕｔが１となるため、検証支援装置１９００が、Ｑ３でのシミュレーション結果とＱ０でのシミュレーション結果とが同一であると判断する。そして、検証支援装置１９００が、特定部１９０５により、Ｊ３の論理値の変化によって、シミュレーション結果に変化が発生したため、Ｊ３による影響がｄａｔａ＿ｏｕｔまで伝播されていないと特定する。
【０１２４】
つぎに、検証支援装置１９００が、ＣＤＣジッタ群（Ｊ１〜Ｊ４）からＪ４を選択する。検証支援装置１９００が、選択されたＪ４の論理値をＱ０でのＪ４の論理値と異なる論理値に設定する。そして、設定された実行パターンがＱ４＝（１，０，１，０）である。検証支援装置１９００が、ＣＤＣジッタ群の各ＣＤＣジッタの論理値がＱ４となるようにシミュレーションを実行する。
【０１２５】
図２５は、Ｑ４でのシミュレーション結果を示す説明図である。検証支援装置１９００が、Ｑ４でのシミュレーション結果と、Ｑ０でのシミュレーション結果とを比較する。いずれのシミュレーション結果も４クロック目でｄａｔａ＿ｏｕｔが１となるため、検証支援装置１９００が、Ｑ４でのシミュレーション結果とＱ０でのシミュレーション結果とが同一であると判断する。そして、検証支援装置１９００が、特定部１９０５により、Ｊ４の論理値の変化によって、シミュレーション結果に変化が発生したため、Ｊ４による影響がｄａｔａ＿ｏｕｔまで伝播されていないと特定する。
【０１２６】
図２６は、Ｑ０〜Ｑ４を示す説明図である。表２６００では、Ｊ１〜Ｊ４のすべての論理値の組み合わせが示されている。実施の形態２では、２のＣＤＣジッタ数乗通りの組み合わせがあり、入力パターンにおいて、各ＣＤＣジッタの影響が観測点まで伝播されているか否かを特定するために、少ないシミュレーション回数で容易に特定することができる。
【０１２７】
（実施の形態２における検証支援装置１９００による検証支援処理手順）
図２７は、実施の形態２における検証支援装置１９００による検証支援処理手順の一例を示すフローチャートである。検証支援装置１９００が、ＣＤＣシミュレーションを実行し（ステップＳ２７０１）、Ｑ０＝実行した実行パターンとする（ステップＳ２７０２）。検証支援装置１９００が、ｎ＝Ｑ０の実行中に発生したＣＤＣジッタの数とし（ステップＳ２７０３）、ｉ＝１とする（ステップＳ２７０４）。
【０１２８】
検証支援装置１９００が、ｉ＞ｎであるか否かを判断し（ステップＳ２７０５）、ｉ＞ｎでないと判断した場合（ステップＳ２７０５：Ｎｏ）、Ｊｉの論理値がＱ０と異なるＱｉを設定し（ステップＳ２７０６）、Ｑｉに関するシミュレーションを実行する（ステップＳ２７０７）。検証支援装置１９００が、Ｑ０に関するシミュレーション結果とＱｉに関するシミュレーション結果が一致しているか否かを判断する（ステップＳ２７０８）。
【０１２９】
検証支援装置１９００が、Ｑ０に関するシミュレーション結果とＱｉに関するシミュレーション結果が一致していないと判断した場合（ステップＳ２７０８：Ｎｏ）、Ｊｉの影響が観測点まで伝播したことを出力する（ステップＳ２７０９）。出力形式としては、たとえば、ディスプレイ３０８への表示、プリンタ３１３への印刷出力、Ｉ／Ｆ３０９による外部装置への送信がある。また、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶することとしてもよい。
【０１３０】
そして、検証支援装置１９００が、ｉ＝ｉ＋１とし（ステップＳ２７１０）、ステップＳ２７０５へ戻る。ステップＳ２７０８において、検証支援装置１９００が、Ｑ０に関するシミュレーション結果とＱｉに関するシミュレーション結果が一致していないと判断した場合（ステップＳ２７０８：Ｙｅｓ）、ステップＳ２７０５において、検証支援装置１９００が、ｉ＞ｎであると判断した場合（ステップＳ２７０５：Ｙｅｓ）、一連の処理を終了する。
【０１３１】
（実施の形態３）
実施の形態３では、どの３個のＣＤＣジッタが選択されても、該選択された３個のＣＤＣジッタの論理値の組み合わせが網羅されるシミュレーション例について説明する。ＣＤＣジッタは数千から数万個あるため、数千から数万個のＣＤＣジッタの論理値の組み合わせを網羅するには、検証に時間がかかる。たとえば、ＣＤＣジッタが１０００個あれば、２＾１０００（＾は乗数を示す。）通りのＣＤＣジッタの論理値の組み合わせがある。
【０１３２】
ある入力パターンにおいてＣＤＣシミュレーションが行われた場合、エラー要因となるＣＤＣジッタは２〜３個程度であるが、数千から数万個のＣＤＣジッタのうちのいずれのＣＤＣジッタによる影響でエラーとなるかは不明確である。そこで、実施の形態３では、検証者がどの３個のＣＤＣジッタを選択しても、該３個のＣＤＣジッタの論理値の組み合わせだけを必ず検証することができ、検証時間を短縮化することができる。
【０１３３】
また、実施の形態３では、実施の形態１および実施の形態２と同一構成については同一符号とし、該同一構成に関する詳細な説明は省略する。さらに、実施の形態３における検証支援装置は、実施の形態２で示した検証支援装置１９００と同一とする。ここでは、設定部１９０３から特定部１９０５において、実施の形態２と異なる動作のみ説明する。
【０１３４】
設定部１９０３は、選択部１９０２により選択される都度、さらに、ＣＤＣジッタ群のすべてのＣＤＣジッタがシミュレーション結果時の論理値と異なる論理値から、ＣＤＣジッタ群のうちの選択部により選択された出力値のみが異なる論理値に設定する。
【０１３５】
比較部１９０４は、ＣＤＣジッタ群のすべてのＣＤＣジッタがシミュレーション結果時の論理値と異なる論理値の場合のシミュレーション結果と、設定部１９０３による設定後のシミュレーション結果とを比較する。
【０１３６】
特定部１９０５は、比較部１９０４により設定後のシミュレーション結果とシミュレーション結果とが一致しないと判断された場合、選択された１個のＣＤＣジッタの影響が観測点に伝播されていることを特定する。以上を踏まえて、詳細に説明する。
【０１３７】
図２８は、Ｑ０〜Ｑ４とＱ０’〜Ｑ４’とを示す説明図である。表２８００では、Ｑ０〜Ｑ４とＱ０’〜Ｑ４’とのそれぞれのＪ１〜Ｊ４の値を示している。Ｑ０〜Ｑ４までは、実施の形態２で説明しているため、詳細な説明を省略する。検証支援装置が、設定部１９０３により、Ｊ１〜Ｊ４のすべての論理値がＱ０と異なる実行パターンを設定する。設定された実行パターンはＱ０’＝（０，１，０，０）である。そして、検証支援装置が、Ｑ０’に関するシミュレーションを実行し、実行結果を出力する。
【０１３８】
さらに、検証支援装置が、Ｊ１〜Ｊ４から順に１個のＣＤＣジッタを選択する。そして、検証支援装置が、ＣＤＣジッタを選択する都度、あらたな実行パターンの選択したＣＤＣジッタの論理値をＱ０’で選択したＣＤＣジッタの論理値と異なる論理値に設定する。そして、あらたな実行パターンがＱ１’〜Ｑ４’である。
【０１３９】
そして、検証支援装置が、比較部１９０４により、あらたな各実行パターンでのシミュレーション結果と、Ｑ０’でのシミュレーション結果とを比較し、特定部１９０５により、各ＣＤＣジッタの影響が伝播されているか否かを特定する。Ｑ０〜Ｑ４とＱ０’〜Ｑ４’との１０の実行パターンがシミュレーションされることにより、Ｊ１〜Ｊ４の中で、任意に選ばれた３個のＣＤＣジッタの組み合わせにおいて、２の３乗の実行パターンをすべて網羅することができる。
【０１４０】
図２９は、３個のＣＤＣジッタの選択例を示す説明図である。図２９では、Ｊ１〜Ｊ４のうち、（１）Ｊ１，Ｊ２，Ｊ３が選択された例では、（Ｊ１，Ｊ２，Ｊ３）＝（０，０，０）〜（１，１，１）までのすべてのパターンが網羅されている。図２９では、Ｊ１〜Ｊ４のうち、（２）Ｊ１，Ｊ２，Ｊ４が選択された例では、（Ｊ１，Ｊ２，Ｊ４）＝（０，０，０）〜（１，１，１）までのすべてのパターンが網羅されている。
【０１４１】
図２９では、Ｊ１〜Ｊ４のうち、（３）Ｊ１，Ｊ３，Ｊ４が選択された例では、（Ｊ１，Ｊ３，Ｊ４）＝（０，０，０）〜（１，１，１）までのすべてのパターンが網羅されている。図２９では、Ｊ１〜Ｊ４のうち、（４）Ｊ２、Ｊ３、Ｊ４が選択された例では、（Ｊ２，Ｊ３，Ｊ４）＝（０，０，０）〜（１，１，１）までのすべてのパターンが網羅されている。
【０１４２】
（実施の形態３における検証支援装置による検証支援処理手順）
図３０，３１は、実施の形態３における検証支援装置による検証支援処理手順の一例を示すフローチャートである。検証支援装置が、ＣＤＣシミュレーションを実行し（ステップＳ３００１）、Ｑ０＝実行した実行パターンとする（ステップＳ３００２）。検証支援装置が、ｎ＝Ｑ０の実行中に発生したＣＤＣジッタの数とし（ステップＳ３００３）、ｉ＝１とする（ステップＳ３００４）。
【０１４３】
検証支援装置が、ｉ＞ｎであるか否かを判断し（ステップＳ３００５）、ｉ＞ｎでないと判断した場合（ステップＳ３００５：Ｎｏ）、Ｊｉの論理値がＱ０と異なるＱｉを設定し（ステップＳ３００６）、Ｑｉに関するシミュレーションを実行する（ステップＳ３００７）。検証支援装置が、Ｑ０に関するシミュレーション結果とＱｉに関するシミュレーション結果が一致しているか否かを判断する（ステップＳ３００８）。
【０１４４】
検証支援装置が、Ｑ０に関するシミュレーション結果とＱｉに関するシミュレーション結果が一致していないと判断した場合（ステップＳ３００８：Ｎｏ）、Ｊｉの影響が観測点まで伝播したことを出力する（ステップＳ３００９）。出力形式としては、たとえば、ディスプレイ３０８への表示、プリンタ３１３への印刷出力、Ｉ／Ｆ３０９による外部装置への送信がある。また、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶することとしてもよい。
【０１４５】
そして、検証支援装置が、ｉ＝ｉ＋１とし（ステップＳ３０１０）、ステップＳ３００５へ戻る。ステップＳ３００８において、検証支援装置が、Ｑ０に関するシミュレーション結果とＱｉに関するシミュレーション結果が一致したと判断した場合（ステップＳ３００８：Ｙｅｓ）、ステップＳ３０１０へ戻る。ステップＳ３００５において、検証支援装置が、ｉ＞ｎであると判断した場合（ステップＳ３００５：Ｙｅｓ）、すべてのＣＤＣジッタの論理値がＱ０と異なっているＱ０’を設定する（ステップＳ３０１１）。そして、検証支援装置が、Ｑ０’に関するシミュレーションを実行し（ステップＳ３０１２）、ｉ＝１とし（ステップＳ３０１３）、ｉ＞ｎであるか否かを判断する（ステップＳ３０１４）。
【０１４６】
検証支援装置が、ｉ＞ｎでないと判断した場合（ステップＳ３０１４：Ｎｏ）、ＣＤＣジッタのうち、Ｊｉの論理値がＱ０’と異なっている実行パターン（Ｑｉ’）を設定し（ステップＳ３０１５）、Ｑｉ’に関するシミュレーションを実行する（ステップＳ３０１６）。そして、検証支援装置が、Ｑｉ’に関するシミュレーション結果と、Ｑ０’に関するシミュレーション結果と、が一致するか否かを判断する（ステップＳ３０１７）。
【０１４７】
検証支援装置が、Ｑｉ’に関するシミュレーション結果と、Ｑ０’に関するシミュレーション結果と、が一致しないと判断した場合（ステップＳ３０１７：Ｎｏ）、Ｊｉの影響が観測点まで伝播したことを出力する（ステップＳ３０１８）。そして、検証支援装置が、ｉ＝ｉ＋１とし（ステップＳ３０１９）、ステップＳ３０１４へ戻る。検証支援装置が、Ｑｉ’に関するシミュレーション結果と、Ｑ０’に関するシミュレーション結果と、が一致すると判断した場合（ステップＳ３０１７：Ｙｅｓ）、ステップＳ３０１９へ移行する。検証支援装置が、ｉ＞ｎであると判断した場合（ステップＳ３０１４：Ｙｅｓ）、一連の処理を終了する。
【０１４８】
（実施の形態４）
実施の形態４では、実施の形態１〜３で示した１ビットだけ異なる複数の実行パターンのシミュレーションにおいて、共通部分を再シミュレーションさせることなく、該複数の実行パターンに関するシミュレーション結果が得られるシミュレーション例を示す。実施の形態４では、具体的には、たとえば、１ビットだけ異なる５通りの実行パターンをそれぞれ独立して５回シミュレーションさせるのではなく、１実行パターンによるシミュレーション結果を用いて１実行パターンとの差分のみをシミュレーションさせる。これにより、実施の形態４では、残余の実行パターンのシミュレーション結果が得られる。
【０１４９】
また、似通ったＮ個の回路情報をシミュレーションする場合に、それらを同時に実行して共通部分の再計算を避けるコンカレントシミュレーション例については公知であるため、詳細については省略する。たとえば、「Ｅ．Ｇ．  Ｕｌｒｉｃｈ  ａｎｄ  Ｔ．Ｂａｋｅｒ  “Ｔｈｅ  Ｃｏｎｃｕｒｒｅｎｔ  Ｓｉｍｕｌａｔｉｏｎ  ｏｆ  Ｎｅａｒｌｙ  Ｉｄｅｎｔｉｃａｌ  Ｄｉｇｉｔａｌ  Ｎｅｔｗｏｒｋｓ”  ｉｎ  Ｐｒｏｃ．１０ｔｈ  Ｄｅｓｉｇｎ  Ａｕｔｏｍａｔｉｏｎ  Ｗｏｒｋｓｈｏｐ，ｐｐ．１４５−１５０，１９７３」を参照。
【０１５０】
図３２は、実施の形態４の一例を示す説明図である。検証装置は、所定入力パターンを用いて論理シミュレーションにおいて、ＣＤＣモデルからＣＤＣジッタが出力されるのを検出する。そして、検証装置は、ＣＤＣジッタを検出すると、ＣＤＣモデルの後段と同一回路にＣＤＣジッタの論理値と異なる論理値を与えて、コンカレントシミュレーションを実行する。検証装置は、コンカレントシミュレーションの実行が終了すると、実行結果を出力する。
【０１５１】
（検証装置の機能ブロック図）
図３３は、検証装置の機能ブロック図である。検証装置３３００は、検出部４０１と、実行部３３０２と、出力部３３０３と、を有している。検出部４０１〜出力部３３０３は、具体的には、たとえば、論理シミュレータに含まれているとしてもよい。また、検出部３３０１〜出力部３３０３は、たとえば、コンカレントシミュレーションの処理を有する論理シミュレーション用のプログラムにコーディングされているとする。具体的には、たとえば、ＣＰＵが、図３に示したＲＯＭ３０２、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶された論理シミュレーション用のプログラムを読み出す。そして、ＣＰＵが、該論理シミュレーション用のプログラムにコーディングされている処理を実行することにより、検出部３３０１〜出力部３３０３の処理が実行される。
【０１５２】
検証対象回路の回路情報は第１のクロックドメインと、第１のクロックドメインから非同期で信号を受信する第２のクロックドメインと、を有している。検出部３３０１は、回路情報に所定入力パターンが与えられるシミュレーションにおいて、該信号を受信する第２のクロックドメイン内の素子からのＣＤＣジッタの出力を検出する。
【０１５３】
実行部３３０２は、検出部３３０１によりＣＤＣジッタが検出された場合、検証対象回路内の素子の後段の回路に対して、検出されたＣＤＣジッタの論理値と異なる論理値を与えたコンカレントシミュレーションを実行する。出力部３３０３は、実行部３３０２による実行結果を出力する。
【０１５４】
（検証装置３３００による検証処理手順）
図３４は、検証装置３３００による検証処理手順の一の例を示すフローチャートである。まず、検証装置３３００が、ＣＤＣシミュレーションを実行し（ステップＳ３４０１）、ＣＤＣジッタを検出したか否かを判断する（ステップＳ３４０２）。検証装置３３００が、ＣＤＣジッタを検出していないと判断した場合（ステップＳ３４０２：Ｎｏ）、ステップＳ３４０２へ戻る。検証装置３３００が、ＣＤＣジッタを検出したと判断した場合（ステップＳ３４０２：Ｙｅｓ）、検出したＣＤＣジッタの論理値と異なる論理値を与えたコンカレントシミュレーションを実行する（ステップＳ３４０３）。
【０１５５】
そして、検証装置３３００が、実行終了したか否かを判断し（ステップＳ３４０４）、実行終了していないと判断した場合（ステップＳ３４０４：Ｎｏ）、ステップＳ３４０４へ戻る。検証装置３３００が、実行終了したと判断した場合（ステップＳ３４０４：Ｙｅｓ）、実行結果を出力し（ステップＳ３４０５）、一連の処理を終了する。出力形式としては、たとえば、ディスプレイ３０８への表示、プリンタ３１３への印刷出力、Ｉ／Ｆ３０９による外部装置への送信がある。また、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶することとしてもよい。
【０１５６】
つぎに、コンカレントシミュレーションの詳細も含めた例について、実施の形態１で用いた入力パターン１におけるＰ０〜Ｐ４を用いて説明する。実施の形態４では、実施の形態１〜３の構成と同一構成については同一符号を付し、詳細な説明を省略する。ここでは、Ｐ０に関するシミュレーション結果を基準とし、Ｐ０と結果が異なる箇所だけのモデルが変更され、Ｐ１〜Ｐ４までのシミュレーション結果が同時に算出される。Ｐ０とＰ１との違いはＪ１の論理値が異なっており、Ｊ１は１クロック目のＡの値である。Ｐ０とＰ２との違いはＪ２の論理値が異なっており、Ｊ２は１クロック目のＢの値である。Ｐ０とＰ３との違いはＪ３の論理値が異なっており、Ｊ３は３クロック目のＡの値である。Ｐ０とＰ４との違いはＪ４の論理値が異なっており、Ｊ４は３クロック目のＢの値である。
【０１５７】
まず、検証装置３３００が、回路情報を複製する。複製した各回路情報内の素子群（基準モデルと称する。）をＰ０に関するシミュレーション結果に基づいてクロックの立ち上がりごとに動作させる。さらに、ＣＤＣジッタが発生する都度、基準モデル時のＣＤＣジッタの論理値と異なる論理値が入力される素子群（ＣＤＣｅｆｆｅｃｔモデル）が追加される。そして、基準モデルとＣＤＣｅｆｆｅｃｔモデルとの差異を、任意の１個のＣＤＣジッタの論理値がＰ０と異なる場合のシミュレーション結果とする。
【０１５８】
図３５は、実施の形態４における１クロック目の処理例を示す説明図である。ここで、図中、Ｐ０が付されているモデルが基準モデルである。図の各ＦＦには、クロックとしてＣＬＫ２が入力されているが、省略している。まず、検証装置３３００が、１クロック目の立ち上がりを検出すると、１クロック目の立ち上がりに属するすべてのＦＦの値を更新する。これにより、ＦＦ３５０１の出力であるＣの値が０となり、ＦＦ３５０２の出力であるＤの値が０となり、ＦＦ３５０４の出力であるＦの値が０となる。
【０１５９】
つぎに、検証装置３３００が、ＣＤＣジッタに関するＣＤＣｅｆｆｅｃｔモデルを追加する。具体的には、たとえば、検証装置３３００が、Ｊ１に関するＣＤＣｅｆｆｅｃｔモデルとして、ＣＤＣモデル３５０６から次段のＦＦ３５０１までを回路情報から複製する。ここでは、Ｊ１に関するＣＤＣｅｆｆｅｃｔモデルとして、Ｊ１＝１をデータ入力とするＦＦ３５１１が挿入される。Ｊ１の論理値がＰ０と異なる実行パターンはＰ１であるため、図３５中Ｊ１に関するＣＤＣｅｆｆｅｃｔモデルにはＰ１が付されている。
【０１６０】
検証装置３３００が、Ｊ２に関するＣＤＣｅｆｆｅｃｔモデルとして、ＣＤＣモデル３５０７から次段のＦＦまでを回路情報から複製する。具体的には、たとえば、Ｊ２に関するＣＤＣｅｆｆｅｃｔモデルとして、Ｊ２＝１をデータ入力とするＦＦ３５２１が挿入される。Ｊ２の論理値がＰ０と異なる実行パターンはＰ２であるため、図３５中Ｊ２に関するＣＤＣｅｆｆｅｃｔモデルにはＰ２が付されている。Ｊ３とＪ４については、１クロック目では発生していないため、Ｊ３およびＪ４に関するＣＤＣｅｆｆｅｃｔモデルは追加されない。
【０１６１】
そして、検証装置３３００が、組み合わせ回路部分の信号値を更新する。これにより、選択回路３５０３の出力であるＥが０となり、ＡＮＤ回路３５０５の出力であるｄａｔａ＿ｏｕｔが０となる。
【０１６２】
つぎに、検証装置３３００が、各ＣＤＣｅｆｆｅｃｔモデル（Ｐ１が付された素子群とＰ２が付された素子群）の素子のうち、基準モデル（Ｐ０が付された素子群）の対応する素子と同一値である素子を削除する。ここでは、ＣＤＣｅｆｆｅｃｔモデルと基準モデルとが同一値でないため、いずれのＣＤＣｅｆｆｅｃｔモデルも削除されない。
【０１６３】
そして、検証装置３３００が、ＣＤＣｅｆｆｅｃｔモデルの出力と、基準モデルの出力との差異を出力する。出力形式としては、たとえば、ディスプレイ３０８への表示、プリンタ３１３への印刷出力、Ｉ／Ｆ３０９による外部装置への送信がある。また、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶することとしてもよい。
【０１６４】
図３６は、１クロック目においての出力結果の一例である。０クロック目ではＦＦ３の出力値はＦＦ３５０１の出力であるＡの値と同様に０であり、１クロック目ではＦＦ３の出力値は１となる。０クロック目ではＦＦ３５２１の出力値はＦＦ３５０２の出力であるＢの値と同様に０であり、１クロック目ではＦＦの出力値は０となる。
【０１６５】
図３７は、実施の形態４における２クロック目の処理例を示す説明図である。つぎに、検証装置３３００が、２クロック目の立ち上がりを検出すると、２クロック目の立ち上がりに属するすべてのＦＦの出力値を更新する。これにより、ＦＦ３５０１の出力であるＣの値が０となり、ＦＦ３５０２の出力であるＤの値が１となり、ＦＦ３５０４の出力であるＦの値が０となる。さらに、Ｊ１に関するＣＤＣｅｆｆｅｃｔモデル（Ｐ１が付された素子群）のうちのＦＦ３の出力値が１となる。Ｊ２に関するＣＤＣｅｆｆｅｃｔモデル（Ｐ２が付された素子群）のうちのＦＦ３５２１の出力値が０となる。
【０１６６】
そして、検証装置３３００が、Ｊ１に関するＣＤＣジッタに対するＣＤＣｅｆｆｅｃｔモデルを追加する。具体的には、たとえば、検証装置３３００が、ＦＦ３に対応するＦＦ３５０１から次段のＦＦ３５０４までを複製する。そして、具体的には、たとえば、検証装置３３００が、ＦＦ３の出力を複製した回路へ与える。これにより、選択回路３５１２とＦＦ３５１３が追加されている。
【０１６７】
そして、検証装置３３００が、Ｊ２に関するＣＤＣジッタに対するＣＤＣｅｆｆｅｃｔモデルを追加する。具体的には、たとえば、検証装置３３００が、ＦＦ３５２１に対応するＦＦ３５０２から次段のＦＦ３５０４までを複製する。そして、具体的には、たとえば、検証装置３３００が、ＦＦ３５２１の出力を複製した回路へ与える。これにより、選択回路３５２２とＦＦ３５２３が追加されている。
【０１６８】
そして、たとえば、検証装置３３００が、組み合わせ回路部分の信号値を更新する。これにより、選択回路３５０３の出力であるＥが０となり、ＡＮＤ回路３５０５の出力であるｄａｔａ＿ｏｕｔが０となる。Ｊ１に関するＣＤＣジッタに対するＣＤＣｅｆｆｅｃｔモデルのうち、選択回路３５１２の出力値が１となる。Ｊ２に関するＣＤＣジッタに対するＣＤＣｅｆｆｅｃｔモデルのうち、選択回路３５２２の出力値が０となる。
【０１６９】
つぎに、検証装置３３００が、各ＣＤＣｅｆｆｅｃｔモデル（Ｐ１が付された素子群とＰ２が付された素子群）の素子のうち、基準モデル（Ｐ０が付された素子群）の対応する素子と同一値である素子を削除する。ＣＤＣｅｆｆｅｃｔモデルの素子の入力値と出力値とが、それぞれ基準モデルの対応する素子の入力値と出力値と同一であるか否かに基づいてＣＤＣｅｆｆｅｃｔモデルの素子が削除される。具体的には、たとえば、選択回路３５２２の出力値と、該選択回路３５２２に対応する選択回路３５０３との出力値が同一値であるが、ＦＦ３５２１の入力値と該ＦＦ３５２１に対応するＦＦ３５０２の入力値とが異なるため、削除されない。
【０１７０】
そして、検証装置３３００が、Ｊ１に関するＣＤＣｅｆｆｅｃｔモデルの出力と基準モデルの出力との差異を出力し、Ｊ２に関するＣＤＣｅｆｆｅｃｔモデルの出力と基準モデルの出力との差異を出力する。
【０１７１】
図３８は、実施の形態４における３クロック目の処理例を示す説明図である。つぎに、検証装置３３００が、３クロック目の立ち上がりを検出すると、３クロック目の立ち上がりに属するすべてのＦＦの出力値を更新する。これにより、ＦＦ３５０１の出力であるＣの値が１となり、ＦＦ３５０２の出力であるＤの値が１となり、ＦＦ３５０４の出力であるＦの値が０となる。さらに、Ｊ１に関するＣＤＣｅｆｆｅｃｔモデル（Ｐ１が付された素子群）のうち、ＦＦ３５１１の出力値が１となり、ＦＦ３５１３の出力値が１となる。Ｊ２に関するＣＤＣｅｆｆｅｃｔモデル（Ｐ２が付された素子群）のうち、ＦＦ３５２１の出力値が１となり、ＦＦ３５２３の出力値が１となる。
【０１７２】
つぎに、検証装置３３００が、ＣＤＣジッタに対するＣＤＣｅｆｆｅｃｔモデルを追加する。具体的には、たとえば、検証装置３３００が、Ｊ１に関するＣＤＣｅｆｆｅｃｔモデルとして、ＦＦ３５１３に対応するＦＦ３５０４から次段のＦＦまでを複製する。ここでは、次段のＦＦがないため、出力端子までが複製される。そして、たとえば、検証装置３３００が、ＦＦ３５１３の出力を複製した回路に与える。ＡＮＤ回路３５１４が追加され、ＦＦ３５１３の出力がＡＮＤ回路３５１４に入力されている。
【０１７３】
つぎに、具体的には、たとえば、検証装置３３００が、Ｊ２に関するＣＤＣｅｆｆｅｃｔモデルとして、ＦＦ３５２３に対応するＦＦ３５０４から次段のＦＦまでを複製する。ここでは、次段のＦＦがないため、出力端子までが複製される。そして、たとえば、検証装置３３００が、ＦＦ３５２３の出力を複製した回路に与える。ＡＮＤ回路３５２４が追加され、ＦＦ３５２３の出力がＡＮＤ回路３５２４に入力されている。
【０１７４】
つぎに、具体的には、たとえば、検証装置３３００が、Ｊ３に関するＣＤＣｅｆｆｅｃｔモデルとして、ＣＤＣモデル３５０６から次段のＦＦ３５０１までを複製する。そして、たとえば、検証装置３３００が、ＣＤＣモデル３５０６の出力値と異なる論理値を複製した回路に与える。ＦＦ３５３１が追加され、ＦＦ３５３１に０が入力される。Ｊ３の論理値がＰ０と異なる実行パターンはＰ３であるため、Ｊ３に関するＣＤＣｅｆｆｅｃｔモデルにはＰ３が付されている。
【０１７５】
つぎに、具体的には、たとえば、検証装置３３００が、Ｊ４に関するＣＤＣｅｆｆｅｃｔモデルとして、ＣＤＣモデル３５０７から次段のＦＦ３５０２までを複製する。そして、たとえば、検証装置３３００が、ＣＤＣモデル３５０７の出力値と異なる論理値を複製した回路に与える。ＦＦ３５４１が追加され、ＦＦ３５４１に１が入力される。Ｊ４の論理値がＰ０と異なる実行パターンはＰ４であるため、Ｊ４に関するＣＤＣｅｆｆｅｃｔモデルにはＰ４が付されている。
【０１７６】
つぎに、具体的には、たとえば、検証装置３３００が、組み合わせ回路部の信号値を更新する。これにより、選択回路３５０３の出力であるＥが１となり、ＡＮＤ回路３５０５の出力であるｄａｔａ＿ｏｕｔが０となる。Ｊ１に関するＣＤＣジッタに対するＣＤＣｅｆｆｅｃｔモデルのうち、選択回路３５１２の出力値が１となり、ＡＮＤ回路３５１４の出力値が０となる。Ｊ２に関するＣＤＣジッタに対するＣＤＣｅｆｆｅｃｔモデルのうち、選択回路３５２２の出力値が０となり、ＡＮＤ回路３５２４の出力値が０となる。
【０１７７】
つぎに、検証装置３３００が、各ＣＤＣｅｆｆｅｃｔモデル（Ｐ１が付された素子群〜Ｐ４が付された素子群）の素子のうち、基準モデル（Ｐ０が付された素子群）の対応する素子と同一値である素子を削除する。ここでは、Ｊ２に関するＣＤＣｅｆｆｅｃｔモデルの各素子と標準モデルの各素子とが同一値であるため、Ｊ２に関するＣＤＣｅｆｆｅｃｔモデルがすべて削除される（図中×で示す。）。
【０１７８】
さらに、Ｊ１に関するＣＤＣｅｆｆｅｃｔモデルのうち、ＦＦ３５１１の入力値と出力値とが、ＦＦ３５０１の入力値と出力値とがそれぞれ同一値であるため、ＦＦ３５１１が削除される。そして、選択回路３５１２にはＦＦ３５１１の出力に代わってＦＦ３５０１の出力が入力される。
【０１７９】
そして、検証装置３３００が、Ｊ１，Ｊ３，Ｊ４に関するＣＤＣｅｆｆｅｃｔモデルの出力と基準モデルの出力との差異をそれぞれ出力する。
【０１８０】
図３９は、実施の形態４における４クロック目の処理例を示す説明図である。つぎに、検証装置３３００が、４クロック目の立ち上がりを検出すると、４クロック目の立ち上がりに属するすべてのＦＦの出力値を更新する。これにより、ＦＦ３５０１の出力であるＣの値が１となり、ＦＦ３５０２の出力であるＤの値が０となり、ＦＦ３５０４の出力であるＦの値が１となる。さらに、Ｊ１に関するＣＤＣｅｆｆｅｃｔモデル（Ｐ１が付された素子群）のうちの、ＦＦ３５１３の出力値が１となる。Ｊ３に関するＣＤＣｅｆｆｅｃｔモデル（Ｐ３が付された素子群）のうちのＦＦ３５３１の出力値が１となる。Ｊ４に関するＣＤＣｅｆｆｅｃｔモデル（Ｐ４が付された素子群）のうちのＦＦ３５４１の出力値が１となる。
【０１８１】
つぎに、検証装置３３００が、ＣＤＣジッタに対するＣＤＣｅｆｆｅｃｔモデルを追加する。具体的には、たとえば、検証装置３３００が、Ｊ３に関するＣＤＣｅｆｆｅｃｔモデルとして、ＦＦ３５３１に対応するＦＦ３５０１から次段のＦＦ３５０４までを複製する。そして、検証装置３３００が、ＦＦ３５３１の出力を複製した回路に与える。ここで、選択回路３５３２とＦＦ３５３３が追加され、選択回路３５３２にはＦＦ３５３１の出力が入力されている。
【０１８２】
つぎに、具体的には、たとえば、検証装置３３００が、Ｊ４に関するＣＤＣｅｆｆｅｃｔモデルとして、ＦＦ３５４１に対応するＦＦ３５０２から次段のＦＦ３５０４までを複製する。そして、具体的には、たとえば、検証装置３３００が、ＦＦ３５４１の出力を複製した回路に与える。ここで、選択回路３５４２とＦＦ３５４３が追加され、選択回路３５４２にはＦＦ３５４１の出力が入力されている。
【０１８３】
つぎに、検証装置３３００が、組み合わせ回路部の信号値を更新する。これにより、選択回路３５０３の出力であるＥが０となり、ＡＮＤ回路３５０５の出力であるｄａｔａ＿ｏｕｔが０となる。Ｊ１に関するＣＤＣｅｆｆｅｃｔモデルのうちの選択回路３５１２の出力値が０となり、ＡＮＤ回路３５１４の出力値が０となり、ＡＮＤ回路３５１４の出力値が０となる。Ｊ３に関するＣＤＣｅｆｆｅｃｔモデルのうち、選択回路３５３２の出力値が１となる。Ｊ４に関するＣＤＣｅｆｆｅｃｔモデルのうち、選択回路３５４２の出力値が１となる。
【０１８４】
つぎに、検証装置３３００が、Ｊ１，Ｊ３，Ｊ４に関する各ＣＤＣｅｆｆｅｃｔモデル（Ｐ１，Ｐ３，Ｐ４が付された素子群）のうち、基準モデル（Ｐ０が付された素子群）と同一値であるＣＤＣｅｆｆｅｃｔモデルを削除する。ここでは、Ｊ１に関するＣＤＣｅｆｆｅｃｔモデルが、基準モデルと同一値であるため、Ｊ１に関するＣＤＣｅｆｆｅｃｔモデルが削除される（図中×で示す。）。
【０１８５】
そして、検証装置３３００が、Ｊ３，Ｊ４に関する各ＣＤＣｅｆｆｅｃｔモデルの出力と基準モデルの出力との差異を出力する。
【０１８６】
図４０は、実施の形態４における５クロック目の処理例を示す説明図である。つぎに、検証装置３３００が、５クロック目の立ち上がりを検出すると、５クロック目の立ち上がりに属するすべてのＦＦの出力値を更新する。これにより、ＦＦ３５０１の出力であるＣの値が０となり、ＦＦ３５０２の出力であるＤの値が０となり、ＦＦ３５０４の出力であるＦの値が０となる。さらに、Ｊ３に関するＣＤＣｅｆｆｅｃｔモデル（Ｐ３が付された素子群）のうち、ＦＦ３５３１の出力値が０となり、ＦＦ３５３３の出力値が１となる。Ｊ４に関するＣＤＣｅｆｆｅｃｔモデル（Ｐ４が付された素子群）のうち、ＦＦ３５４１の出力値が０となり、ＦＦ３５４３の出力値が１となる。
【０１８７】
つぎに、具体的には、たとえば、検証装置３３００が、ＣＤＣジッタに対するＣＤＣｅｆｆｅｃｔモデルを追加する。具体的には、たとえば、検証装置３３００が、Ｊ３に関するＣＤＣｅｆｆｅｃｔモデルとして、ＦＦ３５３３に対応するＦＦ３５０４から次段のＦＦまでを複製する。ここでは、次段のＦＦがないため、出力端子までが複製される。そして、具体的には、たとえば、検証装置３３００が、ＦＦ３５３３の出力を複製した回路に与える。ＡＮＤ回路３５３４が追加され、ＦＦ３５３３の出力がＡＮＤ回路３５３４に入力されている。
【０１８８】
具体的には、たとえば、検証装置３３００が、Ｊ４に関するＣＤＣｅｆｆｅｃｔモデルとして、ＦＦ３５４３に対応するＦＦ３５０４から次段のＦＦまでを複製する。ここでは、次段のＦＦがないため、出力端子までが複製される。そして、具体的には、たとえば、検証装置３３００が、ＦＦ３５４３の出力を複製した回路に与える。ＡＮＤ回路３５４４が追加され、ＦＦ３５４３の出力がＡＮＤ回路３５４４に入力されている。
【０１８９】
つぎに、検証装置３３００が、組み合わせ回路部分の信号値を更新する。これにより、選択回路３５０３の出力であるＥが０となり、ＡＮＤ回路３５０５の出力であるｄａｔａ＿ｏｕｔが０となる。Ｊ３に関するＣＤＣｅｆｆｅｃｔモデルのうち、選択回路３５３２の出力値が１となり、ＡＮＤ回路３５３４の出力値が０となる。Ｊ４に関するＣＤＣｅｆｆｅｃｔモデルのうち、選択回路３５４２の出力値が１となり、ＡＮＤ回路３５４４の出力値が０となる。
【０１９０】
つぎに、検証装置３３００が、Ｊ３，Ｊ４に関する各ＣＤＣｅｆｆｅｃｔモデル（Ｐ３，４が付された素子群）のうち、基準モデル（Ｐ０が付された素子群）と同一値であるＣＤＣｅｆｆｅｃｔモデルを削除する。ＦＦ３５３１の入力値と出力値とがＦＦ３５０１の入力値と出力値とそれぞれ同一値であるため、ＦＦ３５３１は削除される。選択回路３５３２にはＦＦ３５３１の出力に代わってＦＦ３５０１の出力が入力される。ＦＦ３５４１の入力値と出力値とがＦＦ３５０２の入力値と出力値とそれぞれ同一値であるため、ＦＦ３５４１は削除される。選択回路３５４２にはＦＦ３５４１の出力に代わってＦＦ３５０２の出力が入力される。
【０１９１】
そして、検証装置３３００が、Ｊ３，Ｊ４に関するＣＤＣｅｆｆｅｃｔモデルの出力と基準モデルの出力との差異を出力する。
【０１９２】
図４１は、実施の形態４における６クロック目と７クロック目の処理例を示す説明図である。図４１では、ＦＦ３５３１とＦＦ３５４１とが削除されている。６クロック目と７クロック目との標準モデルの各素子の出力およびＣＤＣｅｆｆｅｃｔモデルの各素子の出力は、それぞれ５クロック目と同一となるため、詳細な説明を省略する。
【０１９３】
図４２は、実施の形態４における８クロック目の処理例を示す説明図である。つぎに、検証装置３３００が、８クロック目の立ち上がりを検出すると、８クロック目の立ち上がりに属するすべてのＦＦの出力値を更新する。これにより、ＦＦ３５０１の出力であるＣの値が０となり、ＦＦ３５０２の出力であるＤの値が０となり、ＦＦ３５０４の出力であるＦの値が０となる。さらに、Ｊ３に関するＣＤＣｅｆｆｅｃｔモデル（Ｐ３が付された素子群）のうち、ＦＦ３５３３の出力値が１となる。Ｊ４に関するＣＤＣｅｆｆｅｃｔモデル（Ｐ４が付された素子群）のうち、ＦＦ３５４３の出力値が１となる。
【０１９４】
つぎに、具体的には、たとえば、検証装置３３００が、ＣＤＣジッタに対するＣＤＣｅｆｆｅｃｔモデルを追加する。Ｊ３に関するＣＤＣｅｆｆｅｃｔモデルとＪ４に関するＣＤＣｅｆｆｅｃｔモデルとはいずれも出力端子まで追加済であるため、ここでは、いずれの素子も追加されない。
【０１９５】
つぎに、検証装置３３００が、組み合わせ回路部の信号値を更新する。これにより、選択回路３５０３の出力であるＥが０となり、ＡＮＤ回路３５０５の出力であるｄａｔａ＿ｏｕｔが０となる。Ｊ３に関するＣＤＣｅｆｆｅｃｔモデルのうちの選択回路３５３３の出力値が１となり、ＡＮＤ回路３５３４の出力値が１となる。Ｊ４に関するＣＤＣｅｆｆｅｃｔモデルのうちの選択回路３５４３の出力値が１となり、ＡＮＤ回路３５４４の出力値が１となる。
【０１９６】
観測点は出力端子である。Ｊ３に関するＣＤＣｅｆｆｅｃｔモデルの出力端子の出力値およびＪ４に関するＣＤＣｅｆｆｅｃｔモデルの出力端子の出力値は１であるが、標準モデルの出力端子（ｄａｔａ＿ｏｕｔ）の出力値は１である。すなわち、観測点での値が標準モデルと、ＣＤＣｅｆｆｅｃｔモデルとで異なる。検証装置３３００が、Ｊ３の影響とＪ４の影響が出力端子まで伝播したことを出力する。出力形式としては、たとえば、ディスプレイ３０８への表示、プリンタ３１３への印刷出力、Ｉ／Ｆ３０９による外部装置への送信がある。また、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶することとしてもよい。
【０１９７】
そして、検証装置３３００が、Ｊ３，Ｊ４に関するＣＤＣｅｆｆｅｃｔモデルの出力と基準モデルの出力との差異を出力する。そして、シミュレーションが終了するまで処理を繰り返す。
【０１９８】
また、実施の形態４で示した検証装置３３００は、カバレッジ情報と、デバッグ支援情報と、を出力する。
【０１９９】
図４３は、カバレッジ情報例を示す説明図である。カバレッジ情報４３０１は、発生箇所と観測回数とが記述されている。たとえば、発生箇所とはＣＤＣモデルの名称であり、観測回数とは観測点における観測回数である。カバレッジ情報４３０２では、発生箇所と、該発生箇所ごとに複数の観測箇所および観測回数とが記述されている。たとえば、発生箇所とはＣＤＣモデルの名称であり、観測箇所は出力端子などの観測点であり、観測回数は該観測箇所において該ＣＤＣモデルが出力するＣＤＣジッタによる影響が観測された回数である。
【０２００】
図４４は、デバッグ支援情報例を示す説明図である。デバッグ支援情報４４００は、検出箇所と検出時刻とに関連付けて、複数の発生箇所および発生時刻とが記述されている。たとえば、検出箇所は出力端子などの観測点であり、検出時刻はシミュレーションにおける開始からの経過時間や何クロック目であるかなどである。たとえば、発生箇所はＣＤＣジッタの名称であり、発生時刻はＣＤＣジッタが発生したシミュレーションにおける開始からの経過時間や何クロック目かである。たとえば、図３５〜図４２の例では、検出箇所がｄａｔａ＿ｏｕｔであり、検出時刻が８クロック目である。発生箇所はＪ３とＪ４であり、発生時刻はそれぞれ３クロック目である。
【０２０１】
（検証装置３３００による検証処理手順）
図４５は、検証装置３３００による検証処理手順の他の例を示すフローチャートである。まず、検証装置３３００が、各信号の初期値を設定し（ステップＳ４５０１）、クロックイベントが発生したか否かを判断する（ステップＳ４５０２）。クロックイベントの発生とは、具体的には、クロックの立ち上がりで同期をとるＦＦを検証対象回路に用いていれば、クロックの立ち上がりを検出したか否かである。また、クロックイベントの発生とは、具体的には、クロックの立ち下がりで同期をとるＦＦを検証対象回路に用いていれば、クロックの立ち下がりを検出したか否かである。
【０２０２】
検証装置３３００が、クロックイベントが発生していないと判断した場合（ステップＳ４５０２：Ｎｏ）、ステップＳ４５０２へ戻る。検証装置３３００が、クロックイベントが発生したと判断した場合（ステップＳ４５０２：Ｙｅｓ）、発生したクロックイベントに属するすべてのＦＦの出力値を更新する（ステップＳ４５０３）。たとえば、ＦＦへのデータ入力が０となっていれば、ＦＦの出力値が０となり、ＦＦへのデータ入力が０１となっていれば、ＦＦの出力値が１となる。
【０２０３】
そして、検証装置３３００が、ＣＤＣジッタに対するＣＤＣｅｆｆｅｃｔモデルを追加し（ステップＳ４５０４）、組み合わせ回路の信号値を更新する（ステップＳ４５０５）。つぎに、検証装置３３００が、ＣＤＣｅｆｆｅｃｔモデルの素子で基準モデルの対応する素子と同じ値を持つものを削除する（ステップＳ４５０６）。そして、検証装置３３００が、基準モデルとＣＤＣｅｆｆｅｃｔモデルの出力の差異を出力し（ステップＳ４５０７）、シミュレーションが終了であるか否かを判断する（ステップＳ４５０８）。検証装置３３００が、シミュレーションが終了でないと判断した場合（ステップＳ４５０８：Ｎｏ）、ステップＳ４５０２へ戻る。検証装置３３００が、シミュレーションが終了であると判断した場合（ステップＳ４５０８：Ｙｅｓ）、一連の処理を終了する。
【０２０４】
図４６は、観測点の例を示す説明図である。実施の形態１〜４では、観測点Ａのように、観測点をすべて出力端子として説明したが、他の箇所であってもよい。たとえば、観測点Ｂと観測点Ｃは、検証対象回路の状態を表すＦＦの出力（Ｓｔａｔｅ０とＳｔａｔｅ１）である。
【０２０５】
たとえば、観測点はＣＤＣモデルの後段の素子の出力であってもよく、あるＦＦの出力から次段のＦＦまでを１段として、観測点ＤはＣＤＣモデルから２段先のＦＦの出力である。たとえば、観測点が第１のクロックドメインから第２のクロックドメインへ受け渡される複数のＣＤＣ信号が合流する箇所であってもよく、観測点Ｅは、２個のＣＤＣモデルの出力の合流点である。また、観測点はアサーションであってもよい。アサーションとは、検証対象の設計が満たすべき性質が定義された箇所である。
【０２０６】
実施の形態１で説明したように、検証支援装置、検証支援プログラム、および検証支援方法によれば、第１のシミュレーション結果が期待値と一致しない場合、ＣＤＣジッタのうちの一部のＣＤＣジッタを第１のシミュレーション結果時の値と異なる値に設定する。そして、設定後での観測点における第２のシミュレーション結果と前記期待値との比較に基づいて、一部のＣＤＣジッタの影響が観測点までに伝播するか否かを自動で検証することにより、ＣＤＣジッタによるエラー要因の特定を容易化することができる。
【０２０７】
設定後での観測点における第２のシミュレーション結果と期待値との比較結果と、観測点における第１のシミュレーション結果と期待値との比較結果と、が同一である場合、一部の出力値が不一致の要因でないことを特定する。これにより、エラー要因でないＣＤＣジッタを容易に判別することができる。
【０２０８】
設定後での観測点におけるシミュレーション結果と期待値とが同一である場合、一部のＣＤＣジッタに不一致の要因が含まれることを特定する。これにより、ＣＤＣジッタは実際には数千〜数万個あるが、エラー要因となるＣＤＣジッタは数個であるため、数千〜数万個のＣＤＣジッタをいくつかのグループに分割して、各グループに不一致の要因が含まれているか否かを判断することができる。これにより、検証時間の短縮化を図ることができる。
【０２０９】
ＣＤＣジッタのうちの任意の１個のＣＤＣジッタを第１のシミュレーション結果時の値と異なる値に設定する。そして、設定後での観測点における第２のシミュレーション結果と期待値とを比較する。そして、比較結果により一致すると判断された場合、任意の１個のＣＤＣジッタが不一致の要因であることを特定する。これにより、不一致要因の特定が正確となり、検証時間を短縮することができる。
【０２１０】
実施の形態２で説明したように、検証支援装置、検証支援プログラム、および検証支援方法によれば、ＣＤＣジッタのうちの一部のＣＤＣジッタを第１のシミュレーション結果時の値と異なる値に設定する。そして、設定後での観測点における第２のシミュレーション結果と観測点における第１のシミュレーション結果とが一致するか否かに基づいて、各入力パターンにおいて一部のＣＤＣジッタの影響が観測点まで伝播されているか否かを判断する。各入力パターンにおけるＣＤＣジッタの影響を容易に特定でき、該入力パターンにおいて、各ＣＤＣジッタの検証が行われているか否かを容易に判断することができる。
【０２１１】
また、設定後での観測点における第２のシミュレーション結果と第１のシミュレーション結果とが一致すると判断された場合、一部のＣＤＣジッタの影響は伝播されていないと特定する。これにより、所定入力パターンでは一部のＣＤＣジッタの検証が行われていないことを容易に判断することができる。
【０２１２】
また、設定後での観測点における第２のシミュレーション結果と第１のシミュレーション結果とが一致しないと判断された場合、一部のＣＤＣジッタの中に、影響が伝播されているＣＤＣジッタが含まれていることを特定する。これにより、数千〜数万個あるＣＤＣジッタをいくつかのグループに分割して、各グループに影響が伝播しているＣＤＣジッタが含まれているかを判断することで、所定入力パターンがいずれのＣＤＣジッタの検証を行うことができるかを判断することができる。したがって、検証時間の短縮化を図ることができる。
【０２１３】
また、ＣＤＣジッタ群のうちの任意の１個のＣＤＣジッタを第１のシミュレーション結果時の論理値と異なる論理値に設定する。そして、設定後での観測点における第２のシミュレーション結果と第１のシミュレーション結果とが一致しないと判断された場合、任意の１個のＣＤＣジッタの影響が観測点に伝播されていることを特定する。
【０２１４】
また、ＣＤＣジッタ群から任意の１個のＣＤＣジッタを順に選択する。選択された１個のＣＤＣジッタごとに、１個のＣＤＣジッタを第１のシミュレーション結果時の論理値と異なる論理値に設定する。そして、選択された１個のＣＤＣジッタごとに、設定後での観測点における第２のシミュレーション結果と第１のシミュレーション結果とが一致しないと判断された場合、選択された１個のＣＤＣジッタの影響が観測点に伝播されていることを特定する。これにより、すべてのＣＤＣジッタの影響が伝播されるかを網羅することができる。
【０２１５】
実施の形態３で説明したように、検証支援装置、検証支援プログラム、および検証支援方法によれば、ＣＤＣジッタ群から任意の１個のＣＤＣジッタを順に選択する。そして、選択された１個のＣＤＣジッタごとに、ＣＤＣジッタ群のすべてのＣＤＣジッタが第１のシミュレーション結果時の論理値と異なる論理値から、選択されたＣＤＣジッタのみを異なる論理値に設定する。そして、選択されたＣＤＣジッタごとに、設定後での観測点における第２のシミュレーション結果と第１のシミュレーション結果とが一致しないと判断された場合、選択された１個の出力値の影響が前記観測点に伝播されていることを特定する。
【０２１６】
これにより、ある入力パターンにおいてＣＤＣシミュレーションを行うと、エラー要因となるのはＣＤＣジッタ全体のうちの２〜３個程度である。数千から数万個のＣＤＣジッタうちの、どのＣＤＣジッタによる影響でエラーとなっているかは不明確である。実施の形態２で示した実行パターンに加えて、実施の形態３で示した実行パターンをシミュレーションすれば、どの３個のＣＤＣジッタの組み合わせを検証者が選択しても、該３個のＣＤＣジッタの論理値の組み合わせを必ず検証することができる。これにより、検証時間を短縮化することができる。
【０２１７】
実施の形態１〜３で説明したように、観測点が検証対象回路の出力端子であることにより、ＣＤＣ箇所から最も離れた箇所までＣＤＣジッタの影響が伝播するか否かを特定することができる。
【０２１８】
また、観測点が検証対象回路内の状態を表す素子の出力である。すなわち、観測点が状態変数である。状態変数は検証対象回路の状態を示す重要な変数であるため、該状態変数にＣＤＣジッタの影響が伝播された場合、該影響が該状態変数以降の回路に伝播される可能性が高く、出力端子まで伝播される可能性がある。よって、状態変数でＣＤＣジッタの影響が観測された時点で、ＣＤＣジッタがエラー要因であるか否かを特定することにより、計算量を削減することができ、検証時間の短縮化を図ることができる。
【０２１９】
また、観測点が、第１のクロックドメインから第２のクロックドメインへ非同期で渡される複数の信号の合流点である。複数の信号の合流点とはリコンバージェンスポイントである。ＣＤＣ障害の多くが、リコンバージェンスポイントの設計誤りが原因である可能性が高い。よって、ＣＤＣモデルに近い回路で判定することができるため、計算量を削減することができる。
【０２２０】
また、観測点が、素子の後段の素子の出力である。ＣＤＣジッタの影響はＣＤＣモデルに近い回路で消滅することが多いため、ＣＤＣモデルから一定段数以内の回路を観測点とすることにより、ＣＤＣモデルに近い回路で判定でき、計算量を削減することができる。
【０２２１】
また、観測点が、アサーションである。アサーションは、出力端子と同等とみなすことができるため、適切なカバレッジを得ることができる。また、カバー判定する箇所が増えることで、それぞれのＣＤＣ箇所により近い箇所でカバー判定される可能性が高くなる。
カバー判定がされたら、シミュレーションを打ち切っても良いので、計算量を削減することができる。
【０２２２】
実施の形態４で説明したように、検証装置、検証プログラム、および検証方法によれば、ＣＤＣシミュレーション中に、ＣＤＣジッタを検出すると、検出したＣＤＣジッタの論理値と異なる論理値を該ＣＤＣジッタを出力する素子以降に与える。そして、ＣＤＣシミュレーションにおけるシミュレーション結果との差異のみをシミュレーションするコンカレントシミュレーションを実行することにより、計算量を削減することができる。さらに、ＣＤＣジッタの論理値が異なる複数のシミュレーション結果を得ることができるため、検証時間を短縮することができる。
【０２２３】
なお、本実施の形態１〜４で説明した検証支援方法および検証方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本検証支援プログラムおよび検証プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本検証支援プログラムおよび検証プログラムは、インターネット等のネットワークを介して配布してもよい。
【０２２４】
以上の実施の形態１〜４に関し、さらに以下の付記を開示する。
【０２２５】
（付記１）第１のクロックドメインと、前記第１のクロックドメインから非同期で信号を受信する第２のクロックドメインと、を有する検証対象回路の回路情報に、所定入力パターンが与えられた、前記検証対象回路内の観測点におけるシミュレーション結果と期待値との不一致を検出する検出手段と、
前記検出手段により前記不一致が検出された場合、前記信号を受信する前記第２のクロックドメイン内の素子の出力がランダム値である出力値群のうちの一部の出力値を、前記シミュレーション結果時の論理値と異なる論理値に設定する設定手段と、
前記設定手段による設定後での前記観測点におけるシミュレーション結果と前記期待値とを比較する比較手段と、
前記比較手段による比較結果に基づいて、前記一部の出力値が前記不一致の要因であるか否かを特定する特定手段と、
を備えることを特徴とする検証支援装置。
【０２２６】
（付記２）前記特定手段は、
前記比較手段による前記設定後での前記観測点におけるシミュレーション結果と前記期待値との比較結果と、前記観測点におけるシミュレーション結果と前記期待値との比較結果と、が同一である場合、前記一部の出力値が不一致の要因でないことを特定することを特徴とする付記１に記載の検証支援装置。
【０２２７】
（付記３）前記特定手段は、
前記比較手段による前記設定後での前記観測点におけるシミュレーション結果と前記期待値とが同一である場合、前記一部の出力値に前記不一致の要因が含まれることを特定することを特徴とする付記１に記載の検証支援装置。
【０２２８】
（付記４）前記設定手段は、
前記出力値群のうちの任意の１個の出力値を前記シミュレーション結果時の論理値と異なる論理値に設定し、
前記比較手段は、
前記設定手段による設定後での前記観測点におけるシミュレーション結果と前記期待値とを比較し、
前記特定手段は、
前記設定後での前記観測点におけるシミュレーション結果と前記期待値とが前記比較手段により一致すると判断された場合、前記任意の１個の出力値が前記不一致の要因であることを特定することを特徴とする付記１に記載の検証支援装置。
【０２２９】
（付記５）前記観測点が、前記検証対象回路の出力端子であることを特徴とする付記１〜４のいずれか一つに記載の検証支援装置。
【０２３０】
（付記６）前記観測点が、前記検証対象回路内の状態を表す素子の出力であることを特徴とする付記１〜４のいずれか一つに記載の検証支援装置。
【０２３１】
（付記７）前記観測点が、前記第１のクロックドメインから前記第２のクロックドメインへ非同期で渡される複数の信号の合流点であることを特徴とする付記１〜４のいずれか一つに記載の検証支援装置。
【０２３２】
（付記８）前記観測点が、前記素子の後段の素子の出力であることを特徴とする付記１〜４のいずれか一つに記載の検証支援装置。
【０２３３】
（付記９）前記観測点がアサーションであることを特徴とする付記１〜４のいずれか一つに記載の検証支援装置。
【０２３４】
（付記１０）第１のクロックドメインから非同期で信号を受信する第２のクロックドメインと、を有する検証対象回路の回路情報に、所定入力パターンが与えられたシミュレーション結果を取得する取得手段と、
前記信号を受信する前記第２のクロックドメイン内の素子の出力がランダム値である出力値群のうちの一部の出力値を、前記取得手段により取得されたシミュレーション結果時の論理値と異なる論理値に設定する設定手段と、
前記設定手段による設定後での前記検証対象回路内の観測点におけるシミュレーション結果と前記観測点における前記シミュレーション結果とを比較する比較手段と、
前記比較手段による比較結果に基づいて、前記一部の出力値の影響が前記観測点に伝播されているか否かを特定する特定手段と、
を備えることを特徴とする検証支援装置。
【０２３５】
（付記１１）前記特定手段は、
前記比較手段によって前記設定後の前記観測点におけるシミュレーション結果と前記観測点における前記シミュレーション結果とが一致すると判断された場合、前記一部の出力値の影響は伝播されていないと特定することを特徴とする付記１０に記載の検証支援装置。
【０２３６】
（付記１２）前記特定手段は、
前記比較手段によって前記設定後の前記観測点におけるシミュレーション結果と前記観測点における前記シミュレーション結果とが一致しないと判断された場合、前記一部の出力値の中に、影響が前記観測点に伝播されている出力値が含まれていることを特定することを特徴とする付記１０に記載の検証支援装置。
【０２３７】
（付記１３）前記設定手段は、
前記出力値群のうちの任意の１個の出力値を前記シミュレーション結果時の論理値と異なる論理値に設定し、
前記比較手段は、
前記設定手段による設定後のシミュレーション結果と前記シミュレーション結果とを比較し、
前記特定手段は、
前記比較手段により前記設定後での前記観測点におけるシミュレーション結果と前記観測点における前記シミュレーション結果とが一致しないと判断された場合、前記任意の１個の出力値の影響が前記観測点に伝播されていることを特定することを特徴とする付記１０に記載の検証支援装置。
【０２３８】
（付記１４）さらに、前記出力値群から１個の出力値を順に選択する選択手段を備え、
前記設定手段は、
前記出力値群のうち、前記選択手段により選択される都度、前記選択された１個の出力値を前記シミュレーション結果時の論理値と異なる論理値に設定し、
前記比較手段は、
前記選択された１個の出力値ごとに、前記設定手段による設定後での前記観測点におけるシミュレーション結果と前記観測点におけるシミュレーション結果とを比較し、
前記特定手段は、
前記比較手段により前記設定後での前記観測点におけるシミュレーション結果と前記観測点における前記シミュレーション結果とが一致しないと判断された場合、前記選択された１個の出力値の影響が前記観測点に伝播されていることを特定することを特徴とする付記１０に記載の検証支援装置。
【０２３９】
（付記１５）前記設定手段は、
前記選択手段により選択される都度、前記出力値群のすべての出力値が前記シミュレーション結果時の論理値と異なる論理値から、前記出力値群のうちの前記選択手段により選択された出力値のみを異なる論理値に設定し、
前記比較手段は、
前記出力値群のすべての出力値が前記シミュレーション結果時の論理値と異なる論理値の場合のシミュレーション結果と、前記設定手段による設定後のシミュレーション結果とを比較し、
前記特定手段は、
前記すべての出力値が前記シミュレーション結果時の論理値と異なる論理値の場合の前記観測点におけるシミュレーション結果と、前記比較手段により前記設定後での前記観測点におけるシミュレーション結果と、が一致しないと判断された場合、前記選択された１個の出力値の影響が前記観測点に伝播されていることを特定することを特徴とする付記１４に記載の検証支援装置。
【０２４０】
（付記１６）前記観測点が、前記検証対象回路の出力端子であることを特徴とする付記１０〜１５のいずれか一つに記載の検証支援装置。
【０２４１】
（付記１７）前記観測点が、前記検証対象回路内の状態を表す素子の出力であることを特徴とする付記１０〜１５のいずれか一つに記載の検証支援装置。
【０２４２】
（付記１８）前記観測点が、前記第１のクロックドメインから前記第２のクロックドメインへ非同期で渡される複数の信号の合流点であることを特徴とする付記１０〜１５のいずれか一つに記載の検証支援装置。
【０２４３】
（付記１９）前記観測点が、前記素子の後段の素子の出力であることを特徴とする付記１０〜１５のいずれか一つに記載の検証支援装置。
【０２４４】
（付記２０）前記観測点がアサーションであることを特徴とする付記１０〜１５のいずれか一つに記載の検証支援装置。
【０２４５】
（付記２１）第１のクロックドメインと、前記第１のクロックドメインから非同期で信号を受信する第２のクロックドメインと、を有する検証対象回路の回路情報に、所定入力パターンが与えられるシミュレーションにおいて、前記信号を受信する前記第２のクロックドメイン内の素子からのランダム値の出力を検出する検出手段と、
前記検出手段により前記ランダム値が前記素子から検出された場合、前記検証対象回路内の前記素子の後段の回路に対して、前記素子の出力値と異なる論理値を与えたコンカレントシミュレーションを実行する実行手段と、
前記実行手段による実行結果を出力する出力手段と、
を備えることを特徴とする検証装置。
【０２４６】
（付記２２）第１のクロックドメインと、前記第１のクロックドメインから非同期で信号を受信する第２のクロックドメインと、を有する検証対象回路の回路情報に、所定入力パターンが与えられた、前記検証対象回路内の観測点におけるシミュレーション結果と期待値との不一致を検出し、
前記不一致が検出された場合、前記信号を受信する前記第２のクロックドメイン内の素子の出力がランダム値である出力値群のうちの一部の出力値を、前記シミュレーション結果時の論理値と異なる論理値に設定し、
設定後での前記観測点におけるシミュレーション結果と前記期待値とを比較し、
比較結果に基づいて、前記一部の出力値が前記不一致の要因であるか否かを特定する
処理をコンピュータに実行させることを特徴とする検証支援プログラム。
【０２４７】
（付記２３）第１のクロックドメインと、前記第１のクロックドメインから非同期で信号を受信する第２のクロックドメインと、を有する検証対象回路の回路情報に、所定入力パターンが与えられたシミュレーション結果を取得し、
前記信号を受信する前記第２のクロックドメイン内の素子の出力がランダム値である出力値群のうちの一部の出力値を、取得されたシミュレーション結果時の論理値と異なる論理値に設定し、
設定後での前記検証対象回路内の観測点におけるシミュレーション結果と前記観測点における前記シミュレーション結果とを比較し、
比較結果に基づいて、前記一部の出力値の影響が前記観測点に伝播されているか否かを特定する
処理をコンピュータに実行させることを特徴とする検証支援プログラム。
【０２４８】
（付記２４）第１のクロックドメインと、前記第１のクロックドメインから非同期で信号を受信する第２のクロックドメインと、を有する検証対象回路の回路情報に、所定入力パターンが与えられるシミュレーションにおいて、前記信号を受信する前記第２のクロックドメイン内の素子からのランダム値の出力を検出し、
前記ランダム値が前記素子から検出された場合、前記検証対象回路内の前記素子の後段の回路に対して、前記素子の出力値と異なる論理値を与えたコンカレントシミュレーションを実行し、
実行結果を出力する
処理をコンピュータに実行させることを特徴とする検証プログラム。
【０２４９】
（付記２５）コンピュータによって実行される検証支援方法であって、
第１のクロックドメインと、前記第１のクロックドメインから非同期で信号を受信する第２のクロックドメインと、を有する検証対象回路の回路情報に、所定入力パターンが与えられた、前記検証対象回路内の観測点におけるシミュレーション結果と期待値との不一致を検出し、
前記不一致が検出された場合、前記信号を受信する前記第２のクロックドメイン内の素子の出力がランダム値である出力値群のうちの一部の出力値を、前記シミュレーション結果時の論理値と異なる論理値に設定し、
設定後での前記観測点におけるシミュレーション結果と前記期待値とを比較し、
比較結果に基づいて、前記一部の出力値が前記不一致の要因であるか否かを特定する
ことを特徴とする検証支援方法。
【０２５０】
（付記２６）コンピュータによって実行される検証支援方法であって、
第１のクロックドメインと、前記第１のクロックドメインから非同期で信号を受信する第２のクロックドメインと、を有する検証対象回路の回路情報に、所定入力パターンが与えられたシミュレーション結果を取得し、
前記信号を受信する前記第２のクロックドメイン内の素子の出力がランダム値である出力値群のうちの一部の出力値を、取得されたシミュレーション結果時の論理値と異なる論理値に設定し、
設定後での前記検証対象回路内の観測点におけるシミュレーション結果と前記観測点における前記シミュレーション結果とを比較し、
比較結果に基づいて、前記一部の出力値の影響が前記観測点に伝播されているか否かを特定する
ことを特徴とする検証支援方法。
【０２５１】
（付記２７）コンピュータによって実行される検証方法であって、
第１のクロックドメインと、前記第１のクロックドメインから非同期で信号を受信する第２のクロックドメインと、を有する検証対象回路の回路情報に、所定入力パターンが与えられるシミュレーションにおいて、前記信号を受信する前記第２のクロックドメイン内の素子からのランダム値の出力を検出し、
前記ランダム値が前記素子から検出された場合、前記検証対象回路内の前記素子の後段の回路に対して、前記素子の出力値と異なる論理値を与えたコンカレントシミュレーションを実行し、
実行結果を出力する
ことを特徴とする検証方法。
【符号の説明】
【０２５２】
３００，１９００  検証支援装置
４０１  検出部
４０２，１９０３  設定部
４０３，１９０４  比較部
４０４，１９０５  特定部
１９０１  取得部
１９０２  選択部
３３００  検証装置
３３０１  検出部
３３０２  実行部
３３０３  出力部
５０１  回路情報
５１０  第１のクロックドメイン
５１１  第２のクロックドメイン
【図１】
0005672038.tif 000002
【図２】
0005672038.tif 000003
【図３】
0005672038.tif 000004
【図４】
0005672038.tif 000005
【図５】
0005672038.tif 000006
【図６】
0005672038.tif 000007
【図７】
0005672038.tif 000008
【図８】
0005672038.tif 000009
【図９】
0005672038.tif 000010
【図１０】
0005672038.tif 000011
【図１１】
0005672038.tif 000012
【図１２】
0005672038.tif 000013
【図１３】
0005672038.tif 000014
【図１４】
0005672038.tif 000015
【図１５】
0005672038.tif 000016
【図１６】
0005672038.tif 000017
【図１７】
0005672038.tif 000018
【図１８】
0005672038.tif 000019
【図１９】
0005672038.tif 000020
【図２０】
0005672038.tif 000021
【図２１】
0005672038.tif 000022
【図２２】
0005672038.tif 000023
【図２３】
0005672038.tif 000024
【図２４】
0005672038.tif 000025
【図２５】
0005672038.tif 000026
【図２６】
0005672038.tif 000027
【図２７】
0005672038.tif 000028
【図２８】
0005672038.tif 000029
【図２９】
0005672038.tif 000030
【図３０】
0005672038.tif 000031
【図３１】
0005672038.tif 000032
【図３２】
0005672038.tif 000033
【図３３】
0005672038.tif 000034
【図３４】
0005672038.tif 000035
【図３５】
0005672038.tif 000036
【図３６】
0005672038.tif 000037
【図３７】
0005672038.tif 000038
【図３８】
0005672038.tif 000039
【図３９】
0005672038.tif 000040
【図４０】
0005672038.tif 000041
【図４１】
0005672038.tif 000042
【図４２】
0005672038.tif 000043
【図４３】
0005672038.tif 000044
【図４４】
0005672038.tif 000045
【図４５】
0005672038.tif 000046
【図４６】
0005672038.tif 000047
【図４７】
0005672038.tif 000048
【図４８】
0005672038.tif 000049
【図４９】
0005672038.tif 000050
【図５０】
0005672038.tif 000051
【図５１】
0005672038.tif 000052
【図５２】
0005672038.tif 000053