(57)【要約】【課題】フォーマル検証時の疑似エラーの発生を抑制する。【解決手段】本発明によるフォーマル検証装置（１００）は、入力制約記憶部（１１２）と、アサーション記憶部（１１４）と、論理回路記憶部（１１６）と、フォーマル検証部（１２２）とを備える。入力制約記憶部（１１２）は入力制約を記憶する。アサーション記憶部（１１４）はアサーションを記憶する。論理回路記憶部（１１６）は論理回路を記憶する。フォーマル検証部（１２０）は、入力制約、アサーションおよび論理回路に基づいてフォーマル検証を行う。入力制約記憶部（１１２）は、入力制約として、動的検証の入力条件または動的検証の出力結果を記憶している。【選択図】図１
2016009232.tif 000002
【特許請求の範囲】
【請求項１】
入力制約を記憶する入力制約記憶部と、
アサーションを記憶するアサーション記憶部と、
論理回路を記憶する論理回路記憶部と、
前記入力制約、前記アサーションおよび前記論理回路に基づいてフォーマル検証を行うフォーマル検証部と
を備え、
前記入力制約記憶部は、前記入力制約として、動的検証の入力条件または動的検証の出力結果を記憶している、フォーマル検証装置。
【請求項２】
前記入力制約記憶部は、前記動的検証の前記入力条件として、前記動的検証のテストベクターを記憶している、請求項１に記載のフォーマル検証装置。
【請求項３】
前記入力制約記憶部は、前記動的検証の前記出力結果として、前記動的検証の出力ダンプファイルを変換した入力制約を記憶している、請求項１に記載のフォーマル検証装置。
【請求項４】
設計回路のフォーマル検証を行うためのプログラムであって、コンピューターに、
入力制約を記憶した入力制約記憶部を用意する工程と、
アサーションを記憶したアサーション記憶部を用意する工程と、
論理回路を記憶した論理回路記憶部を用意する工程と、
前記入力制約、前記アサーションおよび前記論理回路に基づいてフォーマル検証を行う工程と
を実行させ、
前記入力制約記憶部を用意する工程において、前記入力制約記憶部は、動的検証の入力条件または動的検証の出力結果を記憶している、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フォーマル検証装置およびプログラムに関する。
【背景技術】
【０００２】
近年、半導体集積回路の高機能化および多機能化が進んでおり、複数の回路を１つの半導体チップに搭載することが増えている。このため、回路の論理検証に要する工数も増加しており、設計した論理回路を効率的に検証することが求められている。
【０００３】
一般に、論理回路の検証手法として、動的検証（論理シミュレーション検証）およびフォーマル検証が知られている。動的検証では、入力パターンを検証対象の論理回路に与えて動作をシミュレーションし、出力パターンを期待値と比較して論理回路の検証を行う。一方、フォーマル検証では、設計の仕様および検証対象の論理回路を数学的な手法を用いて網羅的に解析することによって論理回路の検証を行う。このようにフォーマル検証は、パターンの漏れなく網羅的に論理回路を検証するため、近年、フォーマル検証を用いることが増加している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−２２１１１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、フォーマル検証装置では、数学的な手法を用いて網羅的に解析するため、異常動作および前提条件の不足に起因したエラーを発生させてしまうことが多い。これらのエラーのうちの多くは、実際の論理回路上ではありえない入力に伴ったほとんど意味のないエラー（以下、「疑似エラー」という）であるにもかかわらず、検証者は全ての疑似エラーを除去しなければ論理回路を検証することができず、疑似エラーの除去に多くの時間を要していた。
【０００６】
本発明は上記課題を鑑みてなされたものであり、その目的は、フォーマル検証時の疑似エラーの発生を抑制可能なフォーマル検証装置およびプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明によるフォーマル検証装置は、入力制約記憶部と、アサーション記憶部と、論理回路記憶部と、フォーマル検証部とを備える。入力制約記憶部は入力制約を記憶する。アサーション記憶部はアサーションを記憶する。論理回路記憶部は論理回路を記憶する。フォーマル検証部は、前記入力制約、前記アサーションおよび前記論理回路に基づいてフォーマル検証を行う。前記入力制約記憶部は、前記入力制約として、動的検証の入力条件または動的検証の出力結果を記憶している。
【０００８】
本発明によるプログラムは、設計回路のフォーマル検証を行うためのプログラムである。プログラムは、コンピューターに、入力制約を記憶した入力制約記憶部を用意する工程と、アサーションを記憶したアサーション記憶部を用意する工程と、論理回路を記憶した論理回路記憶部を用意する工程と、前記入力制約、前記アサーションおよび前記論理回路に基づいてフォーマル検証を行う工程とを実行させる。前記入力制約記憶部を用意する工程において、前記入力制約記憶部は、動的検証の入力条件または動的検証の出力結果を記憶している。
【発明の効果】
【０００９】
本発明によれば、フォーマル検証時の疑似エラーの発生を抑制できる。
【図面の簡単な説明】
【００１０】
【図１】（ａ）は本発明によるフォーマル検証装置の実施形態の模式図であり、（ｂ）は（ａ）に示したフォーマル検証装置における入力制約記憶部に入力制約として記憶される動的検証の入力条件および出力結果を導出する動的検証装置の模式図である。
【図２】動的検証のフローを示すフロー図である。
【図３】本実施形態のフォーマル検証装置の検証方法を示すフロー図である。
【図４】（ａ）は一般的なフォーマル検証における入力制約の一例を示す図であり、（ｂ）は本実施形態のフォーマル検証における入力制約として用いられる動的検証のテストベクターの記述の一例を示す図である。
【図５】（ａ）は動的検証のダンプファイルの一例を示す図であり、（ｂ）は本実施形態のフォーマル検証における入力制約の一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して本発明によるフォーマル検証装置およびプログラムの実施形態を説明する。ただし、本発明は以下の実施形態に限定されない。
【００１２】
まず、図１を参照して、本実施形態のフォーマル検証装置１００を説明する。図１（ａ）に、本実施形態のフォーマル検証装置１００の模式図を示す。フォーマル検証装置１００は、入力制約記憶部１１２と、アサーション記憶部１１４と、論理回路記憶部１１６と、フォーマル検証部１２２とを備える。入力制約記憶部１１２は入力制約を記憶している。アサーション記憶部１１４は検証用のアサーションを記憶している。論理回路記憶部１１６は検証用の論理回路を記憶している。フォーマル検証部１２２は、入力制約記憶部１１２、アサーション記憶部１１４および論理回路記憶部１１６から、入力制約、アサーションおよび論理回路をそれぞれ読み出し、入力制約、アサーションおよび論理回路に基づいてフォーマル検証を行う。
【００１３】
フォーマル検証装置１００は、入力部１３０および表示部１４０をさらに備える。例えば、入力部１３０は、タッチパネル、キーボードおよび／またはマウスを含む。表示部１４０はディスプレーを含む。
【００１４】
フォーマル検証の結果、エラーがあった場合、表示部１４０は、ユーザーにエラーを表示する。ユーザーは、表示部１４０に表示されたエラーに基づき、入力部１３０を用いて、入力制約記憶部１１２の入力制約、アサーション記憶部１１４のアサーション、および、論理回路記憶部１１６の論理回路のいずれかを修正する。
【００１５】
例えば、ユーザーが、エラーが入力制約の不具合または不備に起因していると判定すると、ユーザーは、入力部１３０を用いて、入力制約記憶部１１２に記憶された入力制約を修正する。また、ユーザーが、エラーがアサーションの不具合に起因していると判定すると、ユーザーは、入力部１３０を用いて、アサーション記憶部１１４に記憶されたアサーションを修正する。あるいは、ユーザーが、エラーが論理回路の不具合に起因していると判定すると、ユーザーは、入力部１３０を用いて、論理回路記憶部１１６に記憶された論理回路を修正する。
【００１６】
上述したように、入力制約、アサーションおよび論理回路のいずれかを修正した後、フォーマル検証部１２２は、再び、入力制約記憶部１１２、アサーション記憶部１１４および論理回路記憶部１１６から、入力制約、アサーションおよび論理回路をそれぞれ読み出し、再度、入力制約、アサーションおよび論理回路に基づいてフォーマル検証を行う。フォーマル検証装置１００は、フォーマル検証後のエラーが無くなるまで、入力制約、アサーションおよび論理回路のいずれかの修正およびフォーマル検証を繰り返す。
【００１７】
記憶部１１０は、入力制約記憶部１１２と、アサーション記憶部１１４と、論理回路記憶部１１６とを含む。記憶部１１０は、例えば、ハードディスク、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）またはＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を含む。ＲＯＭは、例えば、フラッシュメモリー等のＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）である。ＲＡＭは、例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）である。典型的には、記憶部１１０を構成する１つの記憶手段が、入力制約記憶部１１２、アサーション記憶部１１４および論理回路記憶部１１６のすべてを含んでいる。ただし、記憶部１１０が複数の記憶手段から構成され、入力制約記憶部１１２、アサーション記憶部１１４および論理回路記憶部１１６は分離されていてもよい。
【００１８】
制御部１２０は、フォーマル検証部１２２を含む。制御部１２０は、フォーマル検証部１２２によってフォーマル検証を行うだけでなく、入力部１３０および表示部１４０を制御する。制御部１２０は、ＣＰＵによって具現化される。制御部１２０は、記憶部１１０に記憶されたデータを用いて、記憶部１１０に記憶されたプログラムを実行することにより、設計回路のフォーマル検証を行う。
【００１９】
例えば、ＲＯＭには、制御部１２０によって実行される各種のコンピュータープログラム（例えば、ソフトウェアまたはファームウェア）が記憶される。制御部１２０は、実行対象のコンピュータープログラムをハードディスクまたはＲＯＭからＲＡＭにロードし、ロードしたプログラムを実行する。
【００２０】
本実施形態のフォーマル検証装置１００において、入力制約記憶部１１２は、動的検証の入力条件または動的検証の出力結果を入力制約として記憶している。動的検証の入力条件は、例えば、動的検証のテストベクターである。動的検証の出力結果は、例えば、動的検証のダンプファイルである。動的検証の入力条件または出力結果は、論理回路の検証の終了した入力条件または出力結果であることが好ましい。以上のように、本実施形態のフォーマル検証装置１００は、動的検証の入力条件または出力結果を入力制約として利用する。動的検証の入力条件または出力結果は動的検証装置から導出される。
【００２１】
図１（ｂ）に、動的検証装置２００の模式図を示す。動的検証装置２００は、テストベンチ記憶部２１２と、ＲＴＬ記憶部２１４と、動的検証部２２２と、ダンプファイル生成部２２４と、入力部２３０と、表示部２４０とを備える。例えば、入力部２３０は、キーボードおよび／またはマウスを含む。表示部２４０はディスプレーを含む。
【００２２】
テストベンチ記憶部２１２は、動的検証のためのテストベクターを記憶している。ＲＴＬ記憶部２１４はレジスター転送レベル（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｆｅｒ  Ｌｅｖｅｌ）で記載された論理回路を記憶している。記憶部２１０は、テストベンチ記憶部２１２およびＲＴＬ記憶部２１４を含む。
【００２３】
動的検証部２２２は、テストベクターおよび論理回路に基づいて動的検証を行う。動的検証部２２２による動的検証の結果、テストベクターの各入力値に対して出力値が得られる。ダンプファイル生成部２２４は、動的検証部２２２の検証結果に基づきダンプファイルを生成する。ダンプファイルには、テストベクターの入力値と、入力値に対応する出力値とが記述されている。制御部２２０は、動的検証部２２２およびダンプファイル生成部２２４を含む。制御部２２０は、ＣＰＵによって具現化される。制御部２２０は、記憶部２１０に記憶されたデータを用いて、記憶部２１０に記憶されたプログラムを実行することにより、動的検証を実行する。
【００２４】
動的検証の結果、エラーがあった場合、表示部２４０は、エラーが発生したことを表示する。例えば、動的検証を行った後、表示部２４０は、動的検証の結果を示すログを表示してもよい。また、表示部２４０は、ダンプファイル生成部２２４によって生成されたダンプファイルに基づく波形を表示してもよい。
【００２５】
動的検証の結果、エラーがあった場合、ユーザーは、入力部２３０を用いて、テストベンチ記憶部２１２のテストベクターおよびＲＴＬ記憶部２１４の論理回路のいずれかを修正する。具体的には、ユーザーが、表示部２４０の表示に基づいて、エラーがテストベクターの不具合に起因していると判定すると、ユーザーは、入力部２３０を用いて、テストベンチ記憶部２１２に記憶されたテストベクターを修正する。あるいは、ユーザーが、エラーが論理回路の不具合に起因していると判定すると、ユーザーは、入力部２３０を用いて、ＲＴＬ記憶部２１４に記憶された論理回路を修正する。なお、動的検証の結果、エラーがない場合、論理回路の検証を終了する。
【００２６】
本実施形態のフォーマル検証装置１００は、動的検証の入力条件または出力結果を利用してフォーマル検証を行う。典型的には、フォーマル検証装置１００は、フォーマル検証の前に行われた動的検証の入力条件または出力結果を利用するため、ユーザーは、フォーマル検証および動的検証の両方のアプローチから論理回路を検証できる。
【００２７】
本実施形態においてフォーマル検証は、動的検証の入力条件または出力結果に基づいて行われる。以下に、図１（ａ）および図３を参照して本実施形態のフォーマル検証装置１００によるフォーマル検証方法を説明するのに先立ち、図１（ｂ）および図２を参照して動的検証装置２００による動的検証を説明する。
【００２８】
ステップＳ１ａにおいて、動的検証部２２２は、テストベンチ記憶部２１２からテストベクターを読み出す。また、ステップＳ１ｂにおいて、動的検証部２２２は、ＲＴＬ記憶部２１４から論理回路を読み出す。
【００２９】
次に、ステップＳ２において、動的検証部２２２は動的検証を行う。動的検証部２２２は、読み出したテストベクターおよび論理回路に基づいて動的検証を行う。動的検証部２２２が動的検証を行うと、テストベクターの入力値に対応する出力値が得られる。ダンプファイル生成部２２４は、動的検証部２２２の検証結果に基づきダンプファイルを生成する。ダンプファイルには、テストベクターの入力値と、入力値に対応する出力値とが記述されている。その後、ステップＳ３において、ユーザーは、動的検証の検証結果を分析する。
【００３０】
ステップＳ４において、ユーザーは、論理回路の検証を終了すべきか否か判定する。ステップＳ４において、ユーザーが、論理回路の検証を終了すべきと判定する場合（ステップＳ４においてＹｅｓの場合）、検証を終了する。ステップＳ４において、ユーザーが、論理回路の検証を終了すべきではないと判定した場合（ステップＳ４においてＮｏの場合）、ステップＳ５においてユーザーは、テストベクターの不具合に起因したエラーがあるか否かを判定する。
【００３１】
ユーザーが、ステップＳ５においてテストベクターの不具合に起因したエラーがあると判定した場合（ステップＳ５においてＹｅｓの場合）、ユーザーは、ステップＳ６において入力部２３０を用いてテストベンチ記憶部２１２に記憶されたテストベクターを修正する。その後、ステップＳ１ａ、Ｓ１ｂにおいて、テストベクターおよび論理回路を読み出し、再び、ステップＳ２において動的検証を実行し、ステップＳ３において検証結果を分析する。
【００３２】
ユーザーが、ステップＳ５においてテストベクターの不具合に起因したエラーはないと判定した場合（ステップＳ５においてＮｏの場合）、ユーザーは、ステップＳ７において、ＲＴＬ記憶部２１４に記憶された論理回路を修正する。その後、ステップＳ１ａ、Ｓ１ｂにおいて、テストベクターおよび論理回路を読み出し、再び、ステップＳ２において動的検証を実行し、ステップＳ３において検証結果を分析する。なお、テストベクターおよび論理回路の修正は、論理回路の検証が終了するまで繰り返される。以上のようにして動的検証が行われる。
【００３３】
次に、図１（ａ）および図３を参照して、本実施形態のフォーマル検証方法を説明する。
【００３４】
ステップＳ１１ａにおいて、フォーマル検証部１２２は、入力制約記憶部１１２から入力制約として、動的検証の入力条件または出力結果を読み出す。ステップＳ１１ｂにおいて、フォーマル検証部１２２は、アサーション記憶部１１４からアサーションを読み出す。ステップＳ１１ｃにおいて、フォーマル検証部１２２は、論理回路記憶部１１６から論理回路を読み出す。
【００３５】
次に、ステップＳ１２において、フォーマル検証部１２２は、フォーマル検証を実行する。フォーマル検証は、入力制約、アサーションおよび論理回路に基づいて行われる。検証結果にエラーがあった場合、表示部１４０は、エラーがあったことを表示する。その後、ステップＳ１３において、ユーザーは、フォーマル検証の検証結果を分析する。
【００３６】
ステップＳ１４において、ユーザーは、論理回路の検証を終了すべきか否か判定する。ステップＳ１４において、ユーザーが、論理回路の検証を終了すべきと判定した場合（ステップＳ１４においてＹｅｓの場合）、検証を終了する。ステップＳ１４において、ユーザーが、論理回路の検証を終了すべきではないと判定した場合（ステップＳ１４においてＮｏの場合）、ステップＳ１５において、ユーザーは、エラーが入力制約の不具合または不備に起因しているか否か（疑似エラーか否か）を判定する。
【００３７】
ユーザーが、ステップＳ１５においてエラーが入力制約の不具合または不備に起因していると判定した場合（ステップＳ１５においてＹｅｓの場合）、ユーザーは、ステップＳ１６において、入力部１３０を介して、入力制約記憶部１１２に記憶された入力制約を修正する。ただし、本実施形態では、入力制約として、動的検証の入力条件または出力結果を用いているため、一般にユーザーが入力制約を作成する場合と比べて、疑似エラーの発生を抑制できる。
【００３８】
その後、ステップＳ１１ａ、ステップＳ１１ｂおよびステップＳ１１ｃにおいて、フォーマル検証部１２２は、入力制約、アサーションおよび論理回路を読み出し、再び、ステップＳ１２においてフォーマル検証を実行し、ステップＳ１３において検証結果を分析する。
【００３９】
ユーザーが、ステップＳ１５においてエラーが入力制約の不具合または不備に起因していないと判定した場合（ステップＳ１５においてＮｏの場合）、ユーザーは、ステップＳ１７において、エラーがアサーションの不具合に起因しているか否かを判定する。ユーザーが、ステップＳ１７においてエラーがアサーションの不具合に起因していると判定した場合（ステップＳ１７においてＹｅｓの場合）、ユーザーは、ステップＳ１８において、入力部１３０を介して、アサーション記憶部１１４に記憶されたアサーションを修正する。その後、ステップＳ１１ａ、ステップＳ１１ｂおよびステップＳ１１ｃにおいて、フォーマル検証部１２２は、入力制約、アサーションおよび論理回路を読み出し、再び、ステップＳ１２においてフォーマル検証を実行し、ステップＳ１３において検証結果を分析する。
【００４０】
ユーザーが、ステップＳ１７においてエラーがアサーションの不具合に起因していないと判定した場合（ステップＳ１７においてＮｏの場合）、エラーは入力制約およびアサーションのいずれにも起因していないため、ユーザーは、ステップＳ１９において、入力部１３０を介して、論理回路記憶部１１６に記憶された論理回路を修正する。その後、フォーマル検証部１２２は、ステップＳ１１ａ、ステップＳ１１ｂおよびステップＳ１１ｃにおいて、入力制約、アサーションおよび論理回路を読み出し、再び、ステップＳ１２においてフォーマル検証を実行し、ステップＳ１３において検証結果を分析する。なお、入力制約、アサーションおよび論理回路の修正は、論理回路の検証が終了するまで繰り返される。以上のようにしてフォーマル検証が行われる。
【００４１】
なお、本実施形態のフォーマル検証装置１００は、少なくとも部分的に動的検証装置２００と構成を共有することが好ましい。例えば、本実施形態のフォーマル検証装置１００の制御部１２０は、動的検証装置２００の制御部２２０と同一のＣＰＵによって具現化されてもよい。また、動的検証装置２００の制御部２２０は、動的検証の動的検証の入力条件または出力結果を、自動的に入力制約記憶部１１２に記憶してもよい。
【００４２】
ここで、図４を参照して、一般的なフォーマル検証における入力制約および動的検証のテストベクターの具体例を説明する。図４（ａ）は一般的なフォーマル検証における入力制約の記述の一例を示す。フォーマル検証において、入力制約は、一般に、特性仕様言語（Ｐｒｏｐｅｒｔｙ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｌａｎｇｕａｇｅ：ＰＳＬ）で記述される。図４（ａ）に示された入力制約は、ｉｎｔｒ信号が立ち上がった後、ｃｌｋ信号が２回立ち上がり、ｉａｃｋ信号がゼロになることを示している。ここでは、ｃｌｋ信号およびｉｎｔｒ信号が入力信号であり、ｉａｃｋ信号が出力信号である。
【００４３】
これに対して、図４（ｂ）は動的検証のテストベクターの一例を示す。図４（ｂ）に示されたテストベクターは、以下のように記述されている。
【００４４】
ｉｎｔｒ信号が立ち上がった場合、ｃｌｋ信号が３回立ち上がるまでサイクルを進める。この場合に、ｉａｃｋ信号が立ち上がっていると、アサーションが正しいことを示す記述「Ａｓｓｅｒｔｉｏｎ  Ｓｕｃｃｅｓｓ」およびそのサイクル（時刻）を表示させ、このブロック内の処理を中止する。
【００４５】
一方、ｉａｃｋ信号が立ち上がっていないと、ｃｌｋ信号がさらに４回立ち上がるまでサイクルを進め、アサーションが誤っていることを示す記述「Ａｓｓｅｒｔｉｏｎ  Ｆａｉｌｕｅｒ」およびそのサイクル（時刻）を表示させ、このブロック内の処理を中止する。
【００４６】
図４（ａ）に示した入力制約は図４（ｂ）に示したテストベクターと等価である。本実施形態では、図４（ｂ）に示された動的検証のテストベクターがフォーマル検証の入力制約として変換することなく用いられる。
【００４７】
なお、図４（ａ）および図４（ｂ）の比較から理解されるように、一般に、動的検証のテストベクターの記述は、対応するフォーマル検証の入力制約の記述と比べると長くなる傾向がある。また、動検証のテストベクターをフォーマル検証の入力制約として用いた場合、ある範囲内において網羅的な検証は行われない。しかしながら、フォーマル検証の入力制約をいきなり適切に作成することは困難であり、本実施形態により、疑似エラーの発生を抑制し、他の箇所でのフォーマル検証による網羅的な検証を効率的に行うことができる。
【００４８】
なお、図４を参照して上述した説明では、フォーマル検証の入力制約として動的検証のテストベクターを用いたが、本発明はこれに限定されない。フォーマル検証の入力制約として動的検証の出力結果を用いてもよい。
【００４９】
ここで、図５（ａ）を参照して動的検証の出力結果（ダンプファイル）の一例を説明する。図５（ａ）は動的検証によって得られたダンプファイルを示す。
【００５０】
ここでも、ｃｌｋ信号およびｉｎｔｒ信号は入力信号であり、ｉａｃｋ信号は出力信号である。図５（ａ）に示したダンプファイルでは、入力信号であるｃｌｋ信号およびｉｎｔｒ信号をｃｌｋ、ｉｎｔｒで示しており、出力信号であるｉａｃｋ信号をｉａｃｋで示している。ｃｌｋ信号、ｉｎｔｒ信号およびｉａｃｋ信号のそれぞれの値は、サイクルに応じて０または１のいずれかに変化する。
【００５１】
図５（ａ）には、サイクル０〜５の場合の入力信号の値（入力値）および出力信号の値（出力値）が記載されている。サイクル０の場合、ｃｌｋ信号は０であり、ｉｎｔｒ信号は０であり、ｉａｃｋ信号は０である。サイクル１の場合、ｃｌｋ信号は１であり、ｉｎｔｒ信号は１であり、ｉａｃｋ信号は０である。サイクル２の場合、ｃｌｋ信号は０であり、ｉｎｔｒ信号は１であり、ｉａｃｋ信号は０である。サイクル３以降、ｃｌｋ信号、ｉｎｔｒ信号、ｉａｃｋ信号はサイクルに応じて変化する。
【００５２】
図５（ｂ）に、図５（ａ）のダンプファイルを変換して生成した入力制約を示す。図５（ｂ）の入力制約は、以下のように記述されている。
【００５３】
ｉｎｔｒ信号が立ち上がった場合、ｃｌｋ信号が３回立ち上がるまでサイクルを進める。この場合、ｉａｃｋ信号が立ち上がっていると、アサーションが正しいことを示す記述「Ａｓｓｅｒｔｉｏｎ  Ｓｕｃｃｅｓｓ」およびそのサイクル（時刻）を表示させ、このブロック内の処理を中止する。
【００５４】
一方、ｉａｃｋ信号が立ち上がっていないと、ｃｌｋ信号が４回立ち上がるまでサイクルを進め、アサーションが誤っていることを示す記述「Ａｓｓｅｒｔｉｏｎ  Ｆａｉｌｕｒｅ」およびそのサイクル（時刻）を表示させ、このブロック内の処理を中止する。
【００５５】
図５（ａ）に示したダンプファイルは図５（ｂ）に示した入力制約と等価である。図５（ｂ）に示したフォーマル検証の入力制約は、図５（ａ）に示したダンプファイルから生成可能である。
【００５６】
なお、図４および図５を参照して上述した動的検証の入力条件および出力結果は一例であり、動的検証の入力条件および出力結果はこれらに限定されないことは言うまでもない。
【００５７】
また、上述した説明では、フォーマル検証を開始する前に、動的検証による論理回路の検証は終了していたが、本発明はこれに限定されない。フォーマル検証の一部を開始した後に、動的検証による論理回路の検証を終了するまで実行し、その後、引き続いてフォーマル検証を行ってもよい。
【産業上の利用可能性】
【００５８】
本発明によれば、疑似エラーの発生を抑制するためのフォーマル検証装置およびプログラムを提供できる。このようなフォーマル検証装置およびプログラムは、特定用途集積回路（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：ＡＳＩＣ）の設計に好適に用いられる。特定用途集積回路は、例えば、画像形成装置または画像読取装置の回路として好適に用いられる。
【符号の説明】
【００５９】
１００    フォーマル検証装置
１１２    入力制約記憶部
１１４    アサーション記憶部
１１６    論理回路記憶部
１２２    フォーマル検証部
１３０    入力部
１４０    表示部
【図１】
2016009232.tif 000003
【図２】
2016009232.tif 000004
【図３】
2016009232.tif 000005
【図４】
2016009232.tif 000006
【図５】
2016009232.tif 000007