(57)【要約】【課題】回路検証を行ってエラーが発生した際に回路修正と再検証の効率化を図ることができる半導体集積回路の回路検証プログラムおよび半導体集積回路の回路検証方法を提供する。【解決手段】検証プログラム１１が、ＤＵＴ１３に対してシミュレーションを行い、構成するブロック間Ｉ／Ｆにアサーション違反があった場合は、シミュレーションを停止してアサーションを満たすようにＩ／Ｆ  ＭＯＤＥＬ１３４の回路記述を修正し、再度シミュレーションする。【選択図】図２
2012128471.tif 000002
【特許請求の範囲】
【請求項１】
複数のモジュールを含む検証対象論理回路の機能記述が格納されている機能記述格納手段として、前記検証対象論理回路のアサーションが格納されているアサーション格納手段として、並びに前記検証対象論理回路の機能記述および前記アサーションに基づいて前記検証対象論理回路の検証を行う検証手段として、コンピュータを機能させる前記コンピュータ読み取り可能な半導体集積回路の回路検証プログラムにおいて、
前記検証手段による検証結果からアサーション違反があるか否か検出する検出手段として、
前記検出手段によって前記アサーション違反があったと検出された場合は、前記アサーションを満たすように前記検証対象論理回路の機能記述を修正する回路修正手段として、
前記コンピュータを機能させることを特徴とする半導体集積回路の回路検証プログラム。
【請求項２】
アサーション格納手段には、前記検証対象論理回路を構成するモジュール間インターフェースのアサーションが格納されており、
前記検証対象論理回路の機能記述には、前記検証対象論理回路を構成するモジュール間に初期状態として入力された信号がスルーするように機能記述されたインターフェース回路が挿入され、
前記検出手段によって前記検証対象論理回路を構成するモジュール間に前記アサーション違反があったと検出された場合は、前記回路修正手段が、前記アサーションを満たす回路となるように前記インターフェース回路の機能記述を修正する
ことを特徴とする請求項１に記載の半導体集積回路の回路検証プログラム。
【請求項３】
前記回路修正手段が、前記アサーションに優先順位をつけて、前記優先順位の高い順に前記アサーションを満たす機能記述に修正することを特徴とする請求項１または２に記載の半導体集積回路の回路検証プログラム。
【請求項４】
前記検出手段が前記アサーション違反を検出した際に、違反起因となるモジュールを表示する表示手段を備えていることを特徴とする請求項１乃至３のうちいずれか一項に記載の半導体集積回路の回路検証プログラム。
【請求項５】
前記回路修正手段が生成した回路の生成履歴を記録する履歴記録手段を備えていることを特徴とする請求項１乃至４のうちいずれか一項に記載の半導体集積回路の回路検証プログラム。
【請求項６】
複数のモジュールを含む検証対象論理回路の機能記述と、前記検証対象論理回路のアサーションと、に基づいて前記検証対象論理回路の検証を行う半導体集積回路の回路検証方法において、
前記検証対象論理回路の機能記述と、前記検証対象論理回路のアサーションと、に基づく検証結果からアサーション違反があるか否かコンピュータが検出する第１の工程と、
第１の工程によって前記アサーション違反があったと検出された場合は、前記コンピュータが前記アサーションを満たすように前記検証対象論理回路の機能記述を修正する第２の工程と、
を備えたことを特徴とする半導体集積回路の回路検証方法。
【請求項７】
前記アサーションは、前記検証対象論理回路を構成するモジュール間インターフェースのアサーションが規定されており、
前記検証対象論理回路の機能記述には、前記検証対象論理回路を構成するモジュール間に初期状態として入力された信号がスルーするように機能記述されたインターフェース回路が挿入され、
前記第１の工程によって前記検証対象論理回路を構成するモジュール間に前記アサーション違反があったと検出された場合は、前記第２の工程において前記アサーションを満たす回路となるように前記インターフェース回路の機能記述を修正する
ことを特徴とする請求項６に記載の半導体集積回路の回路検証方法。
【請求項８】
前記第２の工程は、前記アサーションに優先順位をつけて、前記優先順位の高い順に前記アサーションを満たす機能記述に修正することを特徴とする請求項６または７に記載の半導体集積回路の回路検証方法。
【請求項９】
前記第１の工程で前記アサーション違反を検出した際に、違反起因となるモジュールを表示する第３の工程を備えていることを特徴とする請求項６乃至８のうちいずれか一項に記載の半導体集積回路の回路検証方法。
【請求項１０】
前記第２の工程で生成した回路の生成履歴を記録する第４の工程を備えていることを特徴とする請求項６乃至９のうちいずれか一項に記載の半導体集積回路の回路検証方法。
【請求項１１】
請求項６乃至１０のうちいずれか一項に記載の半導体集積回路の回路検証方法によって検証された前記検証対象論理回路の回路情報に基づいて回路配線パターンを作成し、当該回路配線パターンに応じた半導体集積回路を製造する半導体集積回路の製造方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路の設計時に回路検証を行う回路検証プログラムおよび半導体集積回路の回路検証方法並びに半導体集積回路の製造方法に関する。
【背景技術】
【０００２】
昨今、半導体集積回路の開発においては、複数の設計者（回路設計者や検証者）が一つの開発に関わる傾向にある。そして、各設計者が個別に設計したモジュールを接続し、チップ全体でシミュレーションを初めて行う時、往々にして、モジュール間のインタフェース（Ｉ／Ｆ）でエラーが発生しやすい。このようなエラーは、ケアレスミスによるものが多いために、どのモジュールがエラーの原因か特定して修正するのに時間がかかる。特に検証者が回路設計者と異なる場合は、特定は容易ではない。
【０００３】
このようなシミュレーション時のエラーの原因特定を行う方法として、当該検証対象論理回路の仕様に合っているかどうかをシミュレータによってモニタリングするアサーションベース検証が近年行われることが多い。アサーションベース検証は、設計仕様をアサーション言語と呼ばれる言語で記述し、検証対象論理回路の仕様が設計仕様（アサーション）と一致しているかを確認するものである。アサーションの記述とシミュレーションによる結果を比較し、仕様と異なる動作を行った場合にアサーション違反を検出する（例えば、特許文献１を参照）。
【０００４】
このようなアサーションベース検証を利用した方法では、１つのアサーション違反の影響により連鎖的に他のアサーション違反が見つかるために膨大な数のアサーション違反が報告される。また致命的なエラーを含むために、正常に回路が動作しなくなりテストシナリオが正常に終了しないことが常である。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載されたＬＳＩ設計検証方法では、単にアサーションを利用して、その結果で回路の妥当性を判断することが主眼であり、例えばモジュール間のＩ／Ｆにアサーション違反があることは分かるものの、そのアサーション違反を起こしたモジュールのどの部分にバグがあるのかまでは分からないことが多い。つまり、単にアサーションを利用するだけでは、原因の特定をするには不十分であり、修正にも時間がかかるという問題がある。
【０００６】
また、複数人で設計と検証を行う際は、エラーのあるモジュールを特定し、修正するまで、全員の作業が滞ることが大きな問題となる。更に、即座に修正方法がわかった場合でも手動で回路修正をしなくてはならないので、その作業が終わるまで全員の作業が滞ることになる。
【０００７】
本発明はかかる問題を解決することを目的としている。
【０００８】
すなわち、本発明は、回路検証を行ってエラーが発生した際に回路修正と再検証の効率化を図ることができる半導体集積回路の回路検証プログラムおよび半導体集積回路の回路検証方法並びに半導体集積回路の製造方法を提供することを目的としている。
【課題を解決するための手段】
【０００９】
上記課題を解決するためになされた請求項１に記載された発明は、複数のモジュールを含む検証対象論理回路の機能記述が格納されている機能記述格納手段として、前記検証対象論理回路のアサーションが格納されているアサーション格納手段として、並びに前記検証対象論理回路の機能記述および前記アサーションに基づいて前記検証対象論理回路の検証を行う検証手段として、コンピュータを機能させる前記コンピュータ読み取り可能な半導体集積回路の回路検証プログラムにおいて、前記検証手段による検証結果からアサーション違反があるか否か検出する検出手段として、前記検出手段によって前記アサーション違反があったと検出された場合は、前記アサーションを満たすように前記検証対象論理回路の機能記述を修正する回路修正手段として、前記コンピュータを機能させることを特徴とする半導体集積回路の回路検証プログラムである。
【００１０】
請求項２に記載された発明は、請求項１に記載された発明において、アサーション格納手段には、前記検証対象論理回路を構成するモジュール間インターフェースのアサーションが格納されており、前記検証対象論理回路の機能記述には、前記検証対象論理回路を構成するモジュール間に初期状態として入力された信号がスルーするように機能記述されたインターフェース回路が挿入され、前記検出手段によって前記検証対象論理回路を構成するモジュール間に前記アサーション違反があったと検出された場合は、前記回路修正手段が、前記アサーションを満たす回路となるように前記インターフェース回路の機能記述を修正することを特徴とするものである。
【００１１】
請求項３に記載された発明は、請求項１または２に記載された発明において、前記回路修正手段が、前記アサーションに優先順位をつけて、前記優先順位の高い順に前記アサーションを満たす機能記述に修正することを特徴とするものである。
【００１２】
請求項４に記載された発明は、請求項１乃至３のうちいずれか一項に記載された発明において、前記検出手段が前記アサーション違反を検出した際に、違反起因となるモジュールを表示する表示手段を備えていることを特徴とするものである。
【００１３】
請求項５に記載された発明は、請求項１乃至４のうちいずれか一項に記載された発明において、前記回路修正手段が生成した回路の生成履歴を記録する履歴記録手段を備えていることを特徴とするものである。
【００１４】
請求項６に記載された発明は、複数のモジュールを含む検証対象論理回路の機能記述と、前記検証対象論理回路のアサーションと、に基づいて前記検証対象論理回路の検証を行う半導体集積回路の回路検証方法において、前記検証対象論理回路の機能記述と、前記検証対象論理回路のアサーションと、に基づく検証結果からアサーション違反があるか否かコンピュータが検出する第１の工程と、第１の工程によって前記アサーション違反があったと検出された場合は、前記コンピュータが前記アサーションを満たすように前記検証対象論理回路の機能記述を修正する第２の工程と、を備えたことを特徴とする半導体集積回路の回路検証方法である。
【００１５】
請求項７に記載された発明は、請求項６に記載された発明において、前記アサーションは、前記検証対象論理回路を構成するモジュール間インターフェースのアサーションが規定されており、前記検証対象論理回路の機能記述には、前記検証対象論理回路を構成するモジュール間に初期状態として入力された信号がスルーするように機能記述されたインターフェース回路が挿入され、前記第１の工程によって前記検証対象論理回路を構成するモジュール間に前記アサーション違反があったと検出された場合は、前記第２の工程において前記アサーションを満たす回路となるように前記インターフェース回路の機能記述を修正することを特徴とするものである。
【００１６】
請求項８に記載された発明は、請求項６または７に記載された発明において、前記第２の工程は、前記アサーションに優先順位をつけて、前記優先順位の高い順に前記アサーションを満たす機能記述に修正することを特徴とするものである。
【００１７】
請求項９に記載された発明は、請求項６乃至８のうちいずれか一項に記載された発明において、前記第１の工程で前記アサーション違反を検出した際に、違反起因となるモジュールを表示する第３の工程を備えていることを特徴とするものである。
【００１８】
請求項１０に記載された発明は、請求項６乃至９のうちいずれか一項に記載された発明において、前記第２の工程で生成した回路の生成履歴を記録する第４の工程を備えていることを特徴とするものである。
【００１９】
請求項１１に記載された発明は、請求項６乃至１０のうちいずれか一項に記載の半導体集積回路の回路検証方法によって検証された前記検証対象論理回路の回路情報に基づいて回路配線パターンを作成し、当該回路配線パターンに応じた半導体集積回路を製造する半導体集積回路の製造方法である。
【発明の効果】
【００２０】
請求項１に記載の発明によれば、検出手段によってアサーション違反があったと検出された場合は、回路修正手段がアサーションを満たすように検証対象論理回路の機能記述を修正するので、アサーション違反発生時には自動で回路の記述を修正することができるために、回路修正と再検証の効率を上げることができる。
【００２１】
請求項２に記載の発明によれば、検出手段によって検証対象論理回路を構成するモジュール間にアサーション違反があったと検出された場合は、回路修正手段が、アサーションを満たす回路となるようにインターフェース回路の機能記述を修正するので、モジュール間のＩ／Ｆにアサーション違反があった場合に、予め挿入されているインターフェース回路を自動修正することで効率的に回路検証を進めることができる。
【００２２】
請求項３に記載の発明によれば、回路修正手段が、アサーションに優先順位をつけて、優先順位の高い順にアサーションを満たす機能記述に修正するので、必要条件なのか十分条件なのか各アサーションの対応を明確にして回路修正ができ、より妥当性の高い回路修正を行うことができる。
【００２３】
請求項４に記載の発明によれば、検出手段が前記アサーション違反を検出した際に、違反起因となるモジュールを表示する表示手段を備えているので、アサーション違反の起因となったモジュールを特定して設計者等に通知することができ、検証の効率を上げることができる。
【００２４】
請求項５に記載の発明によれば、回路修正手段が生成した回路の生成履歴を記録する履歴記録手段を備えているので、回路の生成履歴を残すことで、当該回路の修正履歴となり、修正の経緯が明らかになり回路記述の管理が容易になる。
【００２５】
請求項６に記載の発明によれば、第１の工程によってアサーション違反があったと検出された場合は、第２の工程でアサーションを満たすように検証対象論理回路の機能記述を修正するので、アサーション違反発生時には自動で回路の記述を修正することができるために、回路修正と再検証の効率を上げることができる。
【００２６】
請求項７に記載の発明によれば、第１の工程によって検証対象論理回路を構成するモジュール間にアサーション違反があったと検出された場合は、第２の工程で、アサーションを満たす回路となるようにインターフェース回路の機能記述を修正するので、モジュール間のＩ／Ｆにアサーション違反があった場合に、予め挿入されているインターフェース回路を自動修正することで効率的に回路検証を進めることができる。
【００２７】
請求項８に記載の発明によれば、第２の工程では、アサーションに優先順位をつけて、優先順位の高い順にアサーションを満たす機能記述に修正するので、必要条件なのか十分条件なのか各アサーションの対応を明確にして回路修正ができ、より妥当性の高い回路修正を行うことができる。
【００２８】
請求項９に記載の発明によれば、第１の工程で前記アサーション違反を検出した際に、違反起因となるモジュールを表示する第３の手段を備えているので、アサーション違反の起因となったモジュールを特定して設計者等に通知することができ、検証の効率を上げることができる。
【００２９】
請求項１０に記載の発明によれば、第２の工程で生成した回路の生成履歴を記録する第四の工程を備えているので、回路の生成履歴を残すことで、当該回路の修正履歴となり、修正の経緯が明らかになり回路記述の管理が容易になる。
【００３０】
請求項１１に記載の発明によれば、上述した半導体集積回路の回路検証方法によって検証された回路情報に基づいては移動体集積回路を製造するので、回路修正と再検証の効率を上げ、半導体集積回路を短期間で製造することができる。
【図面の簡単な説明】
【００３１】
【図１】本発明の一実施形態にかかる半導体集積回路の回路検証プログラムが動作するコンピュータのハードウェア構成を示すブロック図である。
【図２】本発明の一実施形態にかかる半導体集積回路の回路検証プログラムの検証時の構成を示した説明図である。
【図３】図２に示されたＩ／Ｆ  ＭＯＤＥＬのアサーション記述例を示した説明図である。
【図４】図２に示された半導体集積回路の回路検証プログラムで図３に示されたアサーションを適用した際の自動回路修正前と自動回路修正後の波形図である。
【図５】図３に示されたＩ／Ｆ  ＭＯＤＥＬの内部回路例を示した回路図である。
【図６】図２に示された半導体集積回路の回路検証プログラムでの検証動作のフローチャートである。
【発明を実施するための形態】
【００３２】
以下、本発明の一実施形態を、図１ないし図６を参照して説明する。図１は、本発明の一実施形態にかかる半導体集積回路の回路検証プログラムが動作するコンピュータのハードウェア構成を示すブロック図である。図２は、本発明の一実施形態にかかる半導体集積回路の回路検証プログラムの検証時の構成を示した説明図である。図３は、図２に示されたＩ／Ｆ  ＭＯＤＥＬのアサーション記述例を示した説明図である。図４は、図２に示された半導体集積回路の回路検証プログラムで図３に示されたアサーションを適用した際の自動回路修正前と自動回路修正後の波形図である。図５は、図３に示されたＩ／Ｆ  ＭＯＤＥＬの内部回路例を示した回路図である。図６は、図２に示された半導体集積回路の回路検証プログラムでの検証動作のフローチャートである。
【００３３】
図１に本発明の一実施形態にかかる半導体集積回路の回路検証プログラムが動作するコンピュータ１を示す。図１に示したコンピュータ１は、本体２と、ハードディスク装置５と、入力操作装置６と、表示装置７と、を備えている。
【００３４】
検証手段、検出手段、回路修正手段としての本体２は、ＣＰＵ３とメモリ４とを備え、ハードディスク装置５から読み出された半導体集積回路の回路検証プログラムがメモリ４に格納され、それをＣＰＵ２が実行する。
【００３５】
回路記述格納手段、アサーション格納手段としてのハードディスク装置５は、上述したように半導体集積回路の回路検証プログラムと、検証対象の機能記述と、アサーション記述と、が格納されている。
【００３６】
入力操作装置６は、キーボードやマウス等から構成され、設計者等が半導体集積回路の回路検証プログラムを動作させたり、回路記述やアサーション記述の修正などを行ったりする。
【００３７】
表示手段としての表示装置７は、例えば液晶ディスプレイなどで構成され、半導体集積回路の回路検証プログラムの実行結果などが表示される。
【００３８】
次に、図２に本発明の一実施形態にかかる半導体集積回路の回路検証プログラムの検証時の構成を示す。図２のように、検証対象論理回路（ＤＵＴ）１３は、モジュールとしてのブロックＡ１３１、ブロックＢ１３２、ブロックＣ１３３と、インターフェース回路としてのＩ／Ｆ  ＭＯＤＥＬ１３４を備え、ブロックＡ１３１とブロックＢ１３２間、およびブロックＢ１３２とブロックＣ１３３間にＩ／Ｆ  ＭＯＤＥＬ１３４が挿入されている。なお、この例はブロックＡ１３１とブロックＣ１３３には直接の接続がない回路であるが接続がある場合はその間にもＩ／Ｆ  ＭＯＤＥＬ１３４が挿入される。また、図２に示したＤＵＴ１３は、ＶｅｒｉｌｏｇＨＤＬなどのハードウェア記述言語でレジスタ転送レベル（ＲＴＬ）の機能記述がなされてハードディスク装置５に格納されている。
【００３９】
検証手段、検出手段、回路修正手段としての検証プログラム１１はハードディスク装置５に格納されているアサーション記述１２と図示しないテストベクタを読み込むとともに、テストベクタを入力側ＭＯＤＥＬ１４から入力し、ＤＵＴ１３における動作シミュレーションおよびアサーションチェックを行って出力側ＭＯＤＥＬ１５からＤＵＴ１３における動作出力を取得する。
【００４０】
図３に、図２に示されたＩ／Ｆ  ＭＯＤＥＬ１３４と、このＩ／Ｆ  ＭＯＤＥＬ１３４が挿入されているブロック間Ｉ／Ｆのアサーション記述例を示す。図３に示したＩ／Ｆ  ＭＯＤＥＬ１３４は、信号ａ〜ｃおよびクロック信号ｃｌｋが入力され、信号Ａ〜Ｃが出力される。また、Ｉ／Ｆ  ＭＯＤＥＬ１３４はセレクタや各入力信号ａ〜ｃを遅延させて出力させたり、出力を“０”固定、“１”固定するための機能記述などが予め含まれており、初期状態では信号ａが信号Ａへ、信号ｂが信号Ｂへ、信号ｃが信号Ｃへ、それぞれ直結（スルー）される動作が有効となるように記述されている。
【００４１】
ここで、アサーションを図３の例のようにルール１〜３まで定義したとする。このアサーションはブロックＡとブロックＢとの間のアサーションでもブロックＢとブロックＣとの間のアサーションのいずれでもよいが、例えばブロックＡとブロックＢとの間のアサーションとする。なお、図３では理解を容易にするためルール１〜３を自然言語で記述しているが、実際はアサーション言語等の検証プログラム１１が解読可能な言語により記述されている。
【００４２】
図３のように定義したアサーションに基づいて検証プログラム１１がアサーションチェックした際に、信号ａ、信号ｂ、信号ｃにアサーション違反があった時は、Ｉ／Ｆ  ＭＯＤＥＬ１３４が違反のない信号Ａ、信号Ｂ、信号Ｃを出力する回路となるように検証プログラム１１によって修正される。つまり、アサーション違反が合った場合に、アサーション違反の無い信号を出力するようにＩ／Ｆ  ＭＯＤＥＬ１３４の記述を修正してアサーションを満たすようにする。
【００４３】
また、回路修正する際は、その修正方法と修正するアサーションの優先順位を決定する。例えば、ルール１は信号ａが不定であってはならないというだけのアサーションであるので、信号Ａは“０”でも“１”でも（各クロックで変化していたとしても）、確定していれば良いということになる。この場合の修正方法としては、多くの場合信号Ａを“０”に固定する方が、回路修正が成功する可能性が高いといえる。しかし、それだけでは、信号Ａが“１”になるべき時も“０”に固定にされてしまう。
【００４４】
それに対して、ルール３のアサーションは本来信号ａが変化すれば信号ｃが次クロックで“１”であり、それ以外では信号ｃは“０”とある。つまり、逆にいえば、信号ｃが“１”の前クロックで信号ａが変化していると言い換えることができる。信号ａやｃを出力するブロック内部の記述次第では、信号ａが不定であっても、信号ｃは正しく出力されている可能性がある。そこで、ルール３の順位をルール１より上位に持ってくることで、信号ａの出力を信号Ａとして正しく再現できる可能性が上がる。
【００４５】
以上の説明を図４の波形図に示す。図４（ａ）はルール１を優先させた場合である。この場合は、信号Ａは、信号ａが不定（ｘ）になるサイクルで“０”に固定されている。また、信号Ｃは信号Ａの変化に応じて２サイクル分“１”となっている。
【００４６】
一方、図４（ｂ）はルール３を優先させた場合である。この場合は、信号Ａは、信号ａが不定になるサイクルで一旦“０”に変化するが、信号ｃが“１”になっているサイクルの１つ前のサイクルでルール３により“１”に変化させている。そして、信号Ａの変化に伴い、信号Ｃも３サイクル分“１”となっている。
【００４７】
図５に図３に示されたＩ／Ｆ  ＭＯＤＥＬ１３４の回路例を示す。Ｉ／Ｆ  ＭＯＤＥＬ１３４には、遅延ブロック１３４ａ、１３４ｄと、セレクタ１３４ｂ、１３４ｅと、遅延ブロック１３４ｃ、１３４ｆと、タイマ１３４ｇと、を備えている。このうち、遅延ブロック１３４ａ、セレクタ１３４ｂ、遅延ブロック１３４ｃは、信号ａ修正ＭＯＤＥＬ１３４１、遅延ブロック１３４ｄ、セレクタ１３４ｅ、遅延ブロック１３４ｆは、信号ｃ修正ＭＯＤＥＬ１３４２をそれぞれ構成している。なお、図５では信号ｂ修正ＭＯＤＥＬは省略している。また、これらの図５に示した回路は検証プログラムによる検証時に自動修正を可能とするためにＲＴＬによる機能記述がなされている。
【００４８】
遅延ブロック１３４ａは、信号ａを所定クロック分遅延させる回路であり、出力ａ＿ｄｌｙ１〜ａ＿ｄｌｙｎとｎ段（ｎクロック）遅延が可能に構成されている。このｎは変数であり、ＲＴＬ記述に挿入されるプログラム言語等で実現され、検出プログラム１１の自動修正によって任意の数に設定される。遅延ブロック１３４ｄも、遅延ブロック１３４ａと同様に信号ｃを所定クロック分遅延させる回路であり、出力ｃ＿ｄｌｙ１〜ｃ＿ｄｌｙｎとｎ段（ｎクロック）遅延が可能に構成されている。
【００４９】
セレクタ１３４ｂは、信号ａと、遅延ブロック１３４ａの出力と、検証プログラム１１による設定値ｐ＿ａ（以降、設定値ｐ＿ａとする）と、固定値“０”および固定値“１”が入力され、検証プログラム１１による当該信号ａのアサーション違反検出の有無と、他のアサーション違反検出状況や後述するタイマ１３４ｇの値との組み合わせにより切り替えられる。なお、上述したようにセレクタ１３４ｂは、初期状態では信号ａが選択されている。セレクタ１３４ｅも、セレクタ１３４ａと同様に信号ｃと、遅延ブロック１３４ｄの出力と、検証プログラム１１による設定値ｐ＿ｃ（以降、設定値ｐ＿ａとする）と、固定値“０”および固定値“１”が入力され、検証プログラム１１による当該信号ｃのアサーション違反検出の有無と、他のアサーション違反検出状況や後述するタイマ１３４ｇの値との組み合わせにより切り替えられる。この設定値ｐ＿ａ、ｐ＿ｃは、固定値以外に、遅延ブロック１３４ａ、１３４ｃ、１３４ｄ、１３４ｆの出力信号（信号ａや信号ｃを任意の段数遅延した信号）およびタイマ１３４ｇの値などを用いて所定の論理演算を行った値を設定してもよい。
【００５０】
遅延ブロック１３４ｃは、信号Ａを所定クロック分遅延させる回路であり、出力Ａ＿ｄｌｙ１〜Ａ＿ｄｌｙｎとｎ段（ｎクロック）遅延が可能に構成されている。このｎは変数であり、遅延ブロック１３４ａと同様に検出プログラム１１の自動修正によって任意の数に設定される。遅延ブロック１３４ｆも、信号Ｃを所定クロック分遅延させる回路であり、遅延ブロック１３４ｃと同様に出力Ｃ＿ｄｌｙ１〜Ｃ＿ｄｌｙｎとｎ段（ｎクロック）遅延が可能に構成されている。
【００５１】
タイマ１３４ｇは、検証時にアサーション違反が発生した時間（クロック数等）を計測し、記録する。
【００５２】
このような回路構成のＩ／Ｆ  ＭＯＤＥＬ１３４において、例えば上述したルール１優先時の場合（信号ａが不定であってはならないというアサーションに基づく場合）は、信号ａ修正ＭＯＤＥＬ１３４１は、ルール１のアサーション違反が検出された場合は、タイマ１３４ｇが当該違反時間を示した場合にセレクタ１３４ｂの入力 “０”が選択されるように記述を変更する。
【００５３】
また、ルール３優先時の場合は、信号ａ修正ＭＯＤＥＬ１３４１は、ルール３のアサーション違反が検出されたタイマ１３４ｇの時間に基づいて、信号Ｃが変化する１クロック前で信号“０”または“１”が選択されるように記述を変更する。
【００５４】
信号ｃ修正ＭＯＤＥＬ１３４２は、セレクタ１３４ｅが設定値ｐ＿ｃを選択するように設定し、ｐ＿ｃの値は、信号Ａが変化した次のクロック期間のみ“１”になるように設定する。
【００５５】
このような検証および回路修正は、シミュレーションを行い、アサーション違反が検出されるとシミュレーションを停止して回路修正を行って再度シミュレーションを行うという工程を繰り返す。
【００５６】
上述した説明の検証動作を図６のフローチャートにまとめる。まず、ステップＳ１において、テストシナリオを開始してステップＳ２に進む。つまり、予めハードディスク装置５に格納されているテストベクタに基づいてＤＵＴ１３をシミュレーションするとともにアサーションチェックも行う。
【００５７】
次に、ステップＳ２において、アサーション違反が起こったか否かを判断し、アサーション違反が起こった場合（Ｙｅｓの場合）は、ステップＳ３に進み、アサーション違反が無い場合（Ｎｏの場合）はステップＳ４に進む。本ステップではステップＳ１におけるシミュレーション中にアサーションチェックも行い、アサーション違反が発生した場合はシミュレーションを停止してステップＳ３に遷移させる。即ち、検証結果からアサーション違反があるか否か検出している。
【００５８】
なお、本ステップにおいて、アサーション違反が起こった場合シミュレーションを停止させるタイミングは、アサーションのルールが複数あった場合に優先させるルールによって、直ちに停止させる場合と、ある程度続けて実行する場合と、がある。例えば、図４（ａ）のルール１優先の場合は信号ａの不定が検出された時点でシミュレーションを停止し、回路修正を行うが、図４（ｂ）のルール３優先の場合は、信号ａの不定が検出されても、ルール３を満たすような信号ｃの変化が検出されるまでシミュレーションを継続してから停止し、回路修正を行う。そのため、図４（ｂ）では信号ａが不定の際に信号Ａを“１”とすることができ、信号Ａを正しく再現できる可能性を上げている。
【００５９】
次に、ステップＳ３において、Ｉ／Ｆ  ＭＯＤＥＬ１３４の出力信号の修正を行い、再度テストシナリオを実行してステップＳ２に戻る。本ステップでは、上述したように、アサーション違反を起こしている信号に対してアサーションを満たすような回路となるようにＩ／Ｆ  ＭＯＤＥＬ１３４の機能記述を修正し、テストシナリオの最初からシミュレーションを行っている。即ち、モジュール間にアサーション違反があったと検出された場合は、アサーションを満たす回路となるようにシミュレーション回路の機能記述を修正している。
【００６０】
ステップＳ４においては、テストシナリオが終了したか否かを判断し、終了した場合はステップＳ５（ＹＥＳの場合）に進み、終了していない場合（ＮＯの場合）はステップＳ２に戻る。
【００６１】
ステップＳ５においては、テストシナリオを終了し、修正したＩ／Ｆ  ＭＯＤＥＬ１３４がある場合はその修正をＲＴＬの機能記述として出力する（ハードディスク装置５に格納したり表示装置７に表示装置７に表示したりする）。本ステップではアサーション違反が無かったので、テストシナリオが正常終了する。また、ステップＳ２、Ｓ３のループを実行した場合はＩ／Ｆ  ＭＯＤＥＬ１３４の最終版のＲＴＬの機能記述を出力する。
【００６２】
本実施形態によれば、検証プログラム１１が、ＤＵＴ１３に対してシミュレーションを行い、構成するブロック間Ｉ／Ｆにアサーション違反があった場合は、シミュレーションを停止してアサーションを満たすようにＩ／Ｆ  ＭＯＤＥＬ１３４の回路記述を修正するので、アサーション違反発生時には自動で回路修正を行うことができるために、ブロック間のＩ／Ｆにアサーション違反があった場合に、予め挿入されているＩ／Ｆ  ＭＯＤＥＬ１３４を自動修正することで回路修正と再検証の効率を上げることができる。
【００６３】
例えば、ＵＳＢ３．０の通信制御を行う回路の回路設計において、ＰＨＹ層、ＬＩＮＫ層、ＰＲＯＴＯＣＯＬ層をそれぞれブロックに分けて設計を行い、リンクコマンドの送受信のテストシナリオを実行し、ＰＲＯＴＯＣＯＬ層からＬＩＮＫ層に出力される信号が不定であったとする。従来ではアサーション違反が通知されテストシナリオは正常終了しない。アサーション違反通知に基づいてＰＲＯＴＯＣＯＬ層を手動で修正して、再度シミュレーションを実行するのを待つ必要がある。この場合、ＰＨＹ層とＬＩＮＫ層にエラーがある可能性を残したままであるが、検証者はその確認を素早くとることができない。そこで、上述した本実施形態の検証プログラムを用いて、ＰＲＯＴＯＣＯＬ層とのＩ／Ｆ部分にＩ／Ｆ  ＭＯＤＥＬ１３４を設けることで、不定となる出力信号を固定して、リンクコマンドの送受信が正常に完了することを確認することができる。そのため、検証者はＰＨＹ層とＬＩＮＫ層の確認を素早くとることができる。即ち、全員の作業が滞ることなく、検証の効率をあげることができる。
【００６４】
また、アサーションに優先順位をつけて、優先順位の高い順にアサーションを満たす回路記述を生成するので、必要条件なのか十分条件なのか各アサーションの対応を明確にして回路修正ができ、アサーション対象の信号を正しく再現できる可能性が上がる、つまり、より妥当性の高い回路修正を行うことができる。
【００６５】
なお、上述した実施形態において、アサーション違反を検出した際に、違反起因となるブロック（アサーション違反の信号を出力したブロック）を表示装置７に表示してもよい。このようにすることで、アサーション違反の起因となったモジュールを特定して設計者等に通知することができ、検証の効率を上げることができる。
【００６６】
また、アサーションを満たすために生成した回路の生成履歴をハードディスク装置５に記録してもよい。このようにすることで、回路の生成履歴を残すことができるため、何度か自動修正を行った場合に当該回路の修正履歴が残り、修正の経緯が明らかになって回路記述の管理が容易になる。
【００６７】
また、上述した実施形態ではブロック間に予めＩ／Ｆ  ＭＯＤＥＬ１３４を挿入するようにＤＵＴ１３が構成されていたが、それに限らず、アサーションチェックを行うポイントでアサーション違反が検出された際に、自動的にＩ／Ｆ  ＭＯＤＥＬ１３４を挿入してアサーションを満たす記述に修正するようにしてもよい。
【００６８】
また、機能検証工程において上述した検証プログラム１１で検証と自動修正がなされたＤＵＴ１３は、その後周知の論理合成プログラムによって論理合成されＩ／Ｆ  ＭＯＤＥＬ１３４を含む論理回路（回路情報）が生成される。その論理回路は論理検証が行われた後、回路配線パターンへ配置配線するレイアウト工程、レイアウトされた回路配線パターンに応じた金属配線等を形成する製造工程を経て、半導体集積回路として製造される。
【００６９】
なお、本発明は上記実施形態に限定されるものではない。即ち、本発明の骨子を逸脱しない範囲で種々変形して実施することができる。
【符号の説明】
【００７０】
１          コンピュータ
３          ＣＰＵ（検証手段、検出手段、回路修正手段）
４          メモリ
５          ハードディスク装置（回路記述格納手段、アサーション格納手段）
７          表示装置（表示手段）
１１        検証プログラム（検証手段、検出手段、回路修正手段）
１２        アサーション記述
１３        ＤＵＴ（検証対象論理回路）
１３４      Ｉ／Ｆ  ＭＯＤＥＬ（モデル回路）
Ｓ２        アサーション違反検出（第１の工程）
Ｓ３        Ｉ／Ｆ  ＭＯＤＥＬ修正（第２の工程）
【先行技術文献】
【特許文献】
【００７１】
【特許文献１】特開２００５−１０８００７号公報
【図１】
2012128471.tif 000003
【図２】
2012128471.tif 000004
【図３】
2012128471.tif 000005
【図４】
2012128471.tif 000006
【図５】
2012128471.tif 000007
【図６】
2012128471.tif 000008