(57)【要約】【課題】本発明は、試験対象回路の可能な動作の全てについて確実に検証可能なランダム検証方法及び装置を提供することを目的とする。【解決手段】論理回路のランダム検証方法は、ランダムな入力パターンを試験対象回路に入力して試験対象回路を所定の期間動作させ、所定の期間の終わりに試験対象回路に関するカバレッジ結果の統計を収集し、カバレッジ結果の統計に基づいて特定の入力パターンを選択し、特定の入力パターンを試験対象回路に入力しないようにしながらランダムな入力パターンを試験対象回路に入力して試験対象回路を次の所定の期間動作させる各段階を含む。【選択図】図１
2009009236.tif 000002
【特許請求の範囲】
【請求項１】
ランダムな入力パターンを試験対象回路に入力して該試験対象回路を所定の期間動作させ、
該所定の期間の終わりに該試験対象回路に関するカバレッジ結果の統計を収集し、
該カバレッジ結果の統計に基づいて特定の入力パターンを選択し、
該特定の入力パターンを該試験対象回路に入力しないようにしながらランダムな入力パターンを該試験対象回路に入力して該試験対象回路を次の所定の期間動作させる
各段階を含むことを特徴とする論理回路のランダム検証方法。
【請求項２】
前記特定の入力パターンは、特定のクロックタイミングで入力する特定のビットパターンであり、前記次の所定の期間において該特定のクロックタイミングで該特定のビットパターンを前記試験対象回路に入力しないようにすることを特徴とする請求項１記載のランダム検証方法。
【請求項３】
第ｎ回目の前記所定の期間の終わりに収集される該カバレッジ結果の統計は、該統計の収集時までに前記試験対象回路が実行された第１回目から第ｎ回目までの全ての所定の期間に渡ってのカバレッジ結果を含むものであることを特徴とする請求項１記載のランダム検証方法。
【請求項４】
入力パターン別に前記全ての所定の期間に渡ってのカバレッジ結果を累積し、全入力パターンのうちでカバレッジの取得回数が最大となる結果を含む入力パターンを前記特定の入力パターンとして選択することを特徴とする請求項３記載のランダム検証方法。
【請求項５】
試験対象回路の記述とランダム検証プログラムとを格納するメモリと、
該メモリに格納された該ランダム検証プログラムを実行することで該メモリに格納された該試験対象回路の記述に基づいて該試験対象回路の動作をシミュレートする演算処理ユニットを含み、該演算処理ユニットは、該ランダム検証プログラムを実行することにより、
ランダムな入力パターンを該試験対象回路に入力して該試験対象回路を所定の期間動作させ、
該所定の期間の終わりに該試験対象回路に関するカバレッジ結果の統計を収集し、
該カバレッジ結果の統計に基づいて特定の入力パターンを選択し、
該特定の入力パターンを該試験対象回路に入力しないようにしながらランダムな入力パターンを該試験対象回路に入力して該試験対象回路を次の所定の期間動作させる
ことを特徴とする論理回路のランダム検証装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に計算機利用設計に関し、詳しくは論理回路のランダム検証方法及びランダム検証装置に関する。
【背景技術】
【０００２】
論理回路の設計作業においては、一般に、まずＲＴＬ（Register Transfer Level：レジスタ転送レベル）の抽象度でハードウェアを記述する。このレベルでは、レジスタとその間の論理機能及び信号伝達として、所望の論理を表現する。ＲＴＬ記述ができると、計算機シミュレーションにより、ＲＴＬ記述された回路の論理的な動作の妥当性を検証する。このような検証方法のひとつにランダム検証がある。
【０００３】
ランダム検証においては、ＲＴＬ記述された回路に、計算機シミュレーションによりランダムなパターンをランダムなタイミングで入力データとして与え、回路から出力されるデータを、所望の論理を示すリファレンスモデルから得た期待値データと比較する。ランダム検証においては、テストパターンの網羅性が高いことにより、信頼性の高い検証結果を得ることができる。
【０００４】
通常は、計算機シミュレーションにおいて、ランダム発生させた入力パターンを指定回数若しくは回数指定することなく連続して試験対象回路に入力し、出力データをリファレンスデータと比較して一致／不一致を検出する。不一致が検出された場合には、回路設計に問題有りとして、計算機シミュレーションによる試験を中止する。不一致が検出されない場合には、何らかの基準に基づいて終了判定を行い、回路設計に問題なしとの判断をすることになる。通常用いられる終了判定条件は、連続実行時間の長さである。即ち、不一致が検出されることなく所定の時間だけ試験が連続実行されると、回路設計に問題なしとして試験を終了する。
【０００５】
しかし連続実行時間の長さをランダム検証の終了判定とした場合、全ての可能な動作を網羅したかどうかについての保証はない。即ち、テストパターンがランダムであるため、検証対象回路のＲＴＬ記述中の全てのパスを通過したという保証がなく、検証内容に偏りが発生してしまう可能性がある。
【特許文献１】特開平１１−５２０３０号公報
【特許文献２】特開平９−２１２３８３号公報
【特許文献３】特開平１１−２２３６６４号公報
【特許文献４】特開２００４−１２５６７０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
以上を鑑みて本発明は、試験対象回路の可能な動作の全てについて確実に検証可能なランダム検証方法及び装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
論理回路のランダム検証方法は、ランダムな入力パターンを試験対象回路に入力して該試験対象回路を所定の期間動作させ、該所定の期間の終わりに該試験対象回路に関するカバレッジ結果の統計を収集し、該カバレッジ結果の統計に基づいて特定の入力パターンを選択し、該特定の入力パターンを該試験対象回路に入力しないようにしながらランダムな入力パターンを該試験対象回路に入力して該試験対象回路を次の所定の期間動作させる各段階を含むことを特徴とする。
【０００８】
論理回路のランダム検証装置は、試験対象回路の記述とランダム検証プログラムとを格納するメモリと、該メモリに格納された該ランダム検証プログラムを実行することで該メモリに格納された該試験対象回路の記述に基づいて該試験対象回路の動作をシミュレートする演算処理ユニットを含み、該演算処理ユニットは、該ランダム検証プログラムを実行することにより、ランダムな入力パターンを該試験対象回路に入力して該試験対象回路を所定の期間動作させ、該所定の期間の終わりに該試験対象回路に関するカバレッジ結果の統計を収集し、該カバレッジ結果の統計に基づいて特定の入力パターンを選択し、該特定の入力パターンを該試験対象回路に入力しないようにしながらランダムな入力パターンを該試験対象回路に入力して該試験対象回路を次の所定の期間動作させることを特徴とする。
【発明の効果】
【０００９】
本発明による少なくとも１つの実施例によれば、所定の期間の終了毎に、カバレッジ結果の統計に基づいて特定の入力パターンを選択し、次回の所定の期間においては選択された特定のパターンを避けるように入力パターンをランダムに生成して試験をするので、統計上実行頻度の高いカバレッジ箇所を実行され難くして、全てのカバレッジ対象行をなるべく均一な頻度で実行することができる。これにより、効率のよいランダム検証を実行して検証時間を短縮することができる。また試験時に特定の入力パターンを完全に削除してしまうわけではないので、試験に用いる入力データのパターンの漏れがなくなる。
【発明を実施するための最良の形態】
【００１０】
以下に、本発明の実施例を添付の図面を用いて詳細に検討する。
【００１１】
図１は、本発明による計算機シミュレーションによるランダム検証方法の概略を説明するための図である。図１において、入力生成部１０がランダムに入力パターンを発生し、発生した入力パターンをリファレンスモデル１１及び検証対象ＲＴＬ記述１２に入力データとして供給する。計算機シミュレーションの計算動作によりリファレンスモデル１１はリファレンスデータ１４（期待値データ）を出力する。また検証対象ＲＴＬ記述１２に基づいて試験回路動作を計算機シミュレーションすることにより、ランダムな入力パターンを試験対象回路に入力しながら試験対象回路を所定の期間動作させる。これにより検証対象ＲＴＬ記述１２に基づいた出力ファイル１５を出力する。
【００１２】
比較部１３は、リファレンスデータ１４と出力ファイル１５とを比較して一致するか否かを判定する。比較判定結果が不一致の場合には、計算機シミュレーションによる検証作業を中止してよい。比較判定結果が一致する場合には、カバレッジ統計部１６が上記所定の期間の終わりに試験対象回路に関するカバレッジ結果の統計を収集する。
【００１３】
図２は、カバレッジについて説明するための図である。図２において、ＲＴＬ記述１８は、ある試験対象回路のＲＴＬ記述の一部を一例として示したものであり、８つのカバレッジ対象行（カバレッジ対象ポイント）２０乃至２７を含む。カバレッジ対象行とは、ＲＴＬ記述１８に基づいて計算機シミュレーションソフトウェアで回路動作を実行させたときに、その行が実行されたか否かを示すデータを記録する対象となる行である。例えばカバレッジ対象行２０は"if (XRESET==1'b0) begin"であるが、このＩＦ文の条件が満たされてｂｅｇｉｎ以降の各行が実行されるときには、このカバレッジ対象行２０は実行されたことになる。またカバレッジ対象行２１は"end else begin"であり、カバレッジ対象行２０が実行されるときにはカバレッジ対象行２１は実行されない。逆に、カバレッジ対象行２０が実行されないならば、カバレッジ対象行２１は実行される。前述のカバレッジ結果とは、例えば図２の例の場合、カバレッジ対象行２０乃至２７について、各行の実行回数を所定の期間について累積したものである。
【００１４】
図１に戻り、カバレッジ統計部１６は、カバレッジ結果の統計に基づいて特定の入力パターンを選択し、選択入力パターンを示す情報（フィードバックファイル）を入力生成部１０に供給する。入力生成部１０及びカバレッジ統計部１６が、フィードバックシステム１７を構成する。入力生成部１０は、フィードバックファイルが示す特定の入力パターンを試験対象回路に入力しないようにしながらランダムな入力パターンを試験対象回路に入力する。これにより検証対象ＲＴＬ記述１２に基づいて試験対象回路を次の所定の期間動作させる。以降、同様の処理を繰り返す。なお比較判定結果が不一致の場合には、カバレッジ結果をカバレッジ統計部１６が収集する統計から削除してよい。
【００１５】
ここで、入力生成部１０が生成するランダムな入力パターンとしては、ランダムなビットパターンがランダムな順番パターンで発生され、各クロックサイクルでこれらのビットパターンがリファレンスモデル１１及び検証対象ＲＴＬ記述１２に入力される。カバレッジ統計部１６が選択する特定の入力パターンは、特定のクロックタイミングで入力する特定のビットパターンである。入力生成部１０は、次の所定の期間において、当該特定のクロックタイミングで当該特定のビットパターンをリファレンスモデル１１及び検証対象ＲＴＬ記述１２に入力しないようにする。
【００１６】
後ほど説明するように、第ｎ回目の所定の期間における試験対象回路動作の終了時には、入力パターン別に第１回から第ｎ回までの全ての所定の期間に渡ってのカバレッジ結果を累積し、カバレッジ統計部１６は、全入力パターンのうちでカバレッジの取得回数（カバレッジ対象行が実行された回数）が最大となる結果を含む入力パターンを前記特定の入力パターンとして選択する。この選択された特定の入力パターンを避けることにより、次回の所定の期間においては、カバレッジの取得回数が多いカバレッジ対象行が発生しにくくなる。その結果、試験対象回路の全ての動作パターンをなるべく均一な頻度で実行するように、即ち全てのカバレッジ対象行をなるべく均一な頻度で実行するように、ランダム検証を実行することができる。
【００１７】
なおランダム検証の計算機シミュレーションの終了条件としては、全てのカバレッジ対象行が各々所定の回数以上実行されたときに、試験を終了するようにしてよい。即ち例えば図２の例では、カバレッジ対象行２０乃至２７が例えば各１００回ずつ実行されたときに、ランダム検証の計算機シミュレーションを終了するようにしてよい。なお例えばカバレッジ対象行２６の"default"については条件が満たされることがないとすると、このカバレッジ対象行２６は永遠に実行されることがない。このようなカバレッジ対象行については、終了判定の対象から外しておく必要がある。
【００１８】
このように、所定の期間の終了毎に、カバレッジ結果の統計に基づいて特定の入力パターンを選択し、次回の所定の期間においては選択された特定のパターンを避けるように入力パターンをランダムに生成して試験をするので、統計上実行頻度の高いカバレッジ箇所を実行され難くして、全てのカバレッジ対象行をなるべく均一な頻度で実行することができる。これにより、効率のよいランダム検証を実行して検証時間を短縮することができる。また試験時に特定の入力パターンを完全に削除してしまうわけではないので、試験に用いる入力データのパターンの漏れがなくなる。
【００１９】
図３は、フィードバックシステム１７の構成の一例を詳細に示す図である。設定ファイル３０は、スパン（試験対象回路を実行してカバレッジ結果の統計を収集する対象となる期間の長さ）を設定する。設定されるスパン（前述の所定の期間）は、クロックサイクル数で指定されてよく、例えば１０万クロックサイクル等と設定される。設定ファイル３０は更に別の情報を指定してもよい。例えば、ランダム検証の計算機シミュレーションにおいて試験対象回路の特定の入出力端子を用いない場合には、その入出力端子を対象外端子として登録してよい。
【００２０】
入力生成部１０は、設定ファイル３０及びフィードバックファイル３３に基づいて入力パターンをランダムに発生する。この際入力生成部１０は、前述のように、フィードバックファイル３３が示す特定の入力パターンについては、そのような入力パターンを発生しない（或いは発生しても検証対象ＲＴＬ記述１２に供給せずに破棄する）ように動作する。入力生成部１０は、発生した入力パターンを検証対象ＲＴＬ記述１２に供給するとともに、発生した入力パターンを示すランダムパターンファイル３１を生成する。このランダムパターンファイル３１は、カバレッジ統計部１６に供給され、フィードバックファイル３３を生成する際に使用される。
【００２１】
検証対象ＲＴＬ記述１２に基づいて、供給された入力パターンに応じた回路動作を実行することにより、出力ファイル１５及びカバレッジ結果ファイル３２を生成する。出力ファイル１５は、比較部１３（図１参照）によりリファレンスデータ１４と比較される。カバレッジ結果ファイル３２は、前述のカバレッジ結果を記録したファイルであり、カバレッジ統計部１６に供給される。
【００２２】
カバレッジ統計部１６は、ランダムパターンファイル３１とカバレッジ結果ファイル３２とに基づいてカバレッジ結果の統計を収集し、カバレッジ結果の統計に基づいて特定の入力パターンを選択する。この特定の入力パターンは、例えば特定のクロックタイミングで入力する特定のビットパターンであり、フィードバックファイル３３にその情報が記録される。このフィードバックファイル３３を参照することにより、入力生成部１０は、次の所定の期間において、当該特定のクロックタイミングで当該特定のビットパターンを発生しない（或いは発生しても破棄する）ように動作する。なおカバレッジ統計部１６がカバレッジ結果ファイル３２の内容をフィードバックファイル３３に反映させるのは、比較部１３による比較が一致を示す場合のみである。比較部１３による比較が不一致を示す場合には、カバレッジ結果ファイル３２を破棄してよい。
【００２３】
カバレッジ統計部１６はまた、設定ファイル３４の内容を参照して、計算機シミュレーションの終了判定を行う。設定ファイル３４には、最低カバレッジ回数及び対象外の行を指定する。カバレッジ統計部１６は、各スパンの終了時にカバレッジ結果の統計を収集する際に、各カバレッジ対象行が設定ファイル３４の示す最低カバレッジ回数だけ実行されたか否かを判定する。各カバレッジ対象行が設定ファイル３４の示す最低カバレッジ回数実行されると、ランダム検証の計算機シミュレーションを終了させる。この際、設定ファイル３４の示す対象外の行については、最低カバレッジ回数だけ実行されたか否かの判定処理の対象外とする。
【００２４】
図４は、カバレッジ結果の統計を記録する統計テーブルの一例を示す図である。図４に示す統計テーブル４０は、カバレッジ統計部１６においてカバレッジ結果の統計を収集して記録しておくために用いられる。
【００２５】
統計テーブル４０は、一回の入力データに対応するビットパターンが各行に対応し、入力データを入力するクロックサイクルが各列に対応する。一回の入力データが例えば８ビット幅であるならば、２５６個（２の８乗個）のビットパターンが存在し、統計テーブル４０の行数は２５６となる。統計テーブル４０の列数は、スパンに対応するクロックサイクル数となる。即ち、例えばスパンが１０万クロックサイクルと設定される場合、統計テーブル４０の列数は１０万となる。統計テーブル４０にカバレッジ結果の統計を記録するやり方については後述する。
【００２６】
図５は、カバレッジ統計部１６によるフィードバックファイルの作成処理を示すフローチャートである。この処理は各スパンの終了時に実行される。
【００２７】
まずステップＳ１において、カバレッジ統計部１６がランダムパターンファイル３１を獲得する。ランダムパターンファイル３１には、各サイクルで入力生成部１０が検証対象ＲＴＬ記述１２に入力した入力パターンが示されている。次にステップＳ２において、カバレッジ統計部１６がカバレッジ結果ファイル３２を獲得する。カバレッジ結果ファイル３２には、現在のスパンにおけるカバレッジ結果が記録されている。
【００２８】
ステップＳ３で、カバレッジ統計部１６は、統計テーブル４０において、ｎ（ｎ＝１〜最大クロックサイクル数）番目のクロックサイクルにおいて入力データとして発生されたビットパターンの欄（当該ビットパターンの行とｎ番目のクロックサイクルの列との交差位置にある欄）に、カバレッジ結果ファイル３２が示すカバレッジ結果を累積的に記録する。ステップＳ４で、スパン設定分の全てのクロックサイクルについてステップＳ３の処理が行われデータ更新されたか否かを判定する。ＮＯの場合はステップＳ３に戻り、ステップＳ３の処理を次のクロックサイクルに対して実行する。
【００２９】
図６乃至図８は、カバレッジ結果の累積的な記録について説明するための図である。図６は、第１回目のスパンの終了時における統計収集の結果得られる統計テーブル４０を示す。この図において、説明の都合上、一回の入力パターンは３ビット、設定されたスパンの長さは５クロックサイクルであるとする。従って統計テーブル４０は、８行５列のテーブルとなる。またカバレッジ対象行は１、３、７、２０、２１、３０行であるとする。
【００３０】
第１回目のスパンでは、第１番目のクロックサイクルでビットパターン"０００"が入力され、第２番目のクロックサイクルでビットパターン"０１０"が入力され、第３番目のクロックサイクルでビットパターン"１０１"が入力され、第４番目のクロックサイクルでビットパターン"０１１"が入力され、第５番目のクロックサイクルでビットパターン"１１１"が入力される。これらの情報、即ち各クロックサイクルで何れのビットパターンが入力されたのかについての情報は、ランダムパターンファイル３１に記録されている。
【００３１】
この例において、カバレッジ結果ファイル３２が示すカバレッジ結果は、検証対象ＲＴＬ記述１２中のカバレッジ対象行である第１行が１回実行、第３行が１回実行、第７行が０回実行、第２０行が１回実行、第２１行が２回実行、第３０行が０回実行であるとする。このカバレッジ結果を例えば"１−>１，３−>１，７−>０，２０−>１，２１−>２，３０−>０"とデータ表現し、このデータがカバレッジ結果ファイル３２に格納されている。
【００３２】
図６の統計テーブル４０において、上記のカバレッジ結果を、各クロックサイクルにおいて発生されたビットパターンの欄（当該ビットパターンの行と対応クロックサイクルの列との交差位置にある欄）に累積的に格納する。図６の例では、第１回目のスパン終了時であるので前回のスパンの結果は存在せず、カバレッジ結果をそのまま該当する欄に記録する。即ち、例えば第１番目のクロックサイクルにおいて発生ビットパターンは"０００"であるので、対応する欄に"１−>１，３−>１，７−>０，２０−>１，２１−>２，３０−>０"を記録する。また第２番目のクロックサイクルにおいて発生ビットパターンは"０１０"であるので、対応する欄に"１−>１，３−>１，７−>０，２０−>１，２１−>２，３０−>０"を記録する。以下同様である。
【００３３】
図７は、第２回目のスパンの終了時における統計収集の結果得られる統計テーブル４０を示す。
【００３４】
第２回目のスパンでは、第１番目のクロックサイクルでビットパターン"０１１"が入力され、第２番目のクロックサイクルでビットパターン"１１０"が入力され、第３番目のクロックサイクルでビットパターン"１０１"が入力され、第４番目のクロックサイクルでビットパターン"１１０"が入力され、第５番目のクロックサイクルでビットパターン"０００"が入力される。またカバレッジ結果は、"１−>１，３−>０，７−>３，２０−>０，２１−>１，３０−>０"である。
【００３５】
第２回目のスパンの終了時に、統計テーブル４０において、各クロックサイクルにおいて発生されたビットパターンの欄（当該ビットパターンの行と対応クロックサイクルの列との交差位置にある欄）に上記のカバレッジ結果を累積的に格納する。図７の例では、第２回目のスパン終了時であるので前回のスパンの結果が存在し、前回のスパンの結果が存在する欄ではカバレッジ結果を累積して記録する。即ち、例えば第３番目のクロックサイクルにおいて発生ビットパターンは"１０１"であり、対応する欄には既に図６に示すように"１−>１，３−>１，７−>０，２０−>１，２１−>２，３０−>０"が記録されているので、このデータの各行毎に回数を足し合わせるように、"１−>１，３−>０，７−>３，２０−>０，２１−>１，３０−>０"のデータを累積的に記録する。この結果、この欄のデータは、図７に示されるように"１−>２，３−>１，７−>３，２０−>１，２１−>３，３０−>０"となる。
【００３６】
図８は、第３回目のスパンの終了時における統計収集の結果得られる統計テーブル４０を示す。
【００３７】
第３回目のスパンでは、第１番目のクロックサイクルでビットパターン"０００"が入力され、第２番目のクロックサイクルでビットパターン"０００"が入力され、第３番目のクロックサイクルでビットパターン"１００"が入力され、第４番目のクロックサイクルでビットパターン"０００"が入力され、第５番目のクロックサイクルでビットパターン"１０１"が入力される。またカバレッジ結果は、"１−>３，３−>１，７−>０，２０−>１，２１−>０，３０−>０"である。
【００３８】
第３回目のスパンの終了時に、統計テーブル４０において、各クロックサイクルにおいて発生されたビットパターンの欄（当該ビットパターンの行と対応クロックサイクルの列との交差位置にある欄）に上記のカバレッジ結果を累積的に格納する。図８の例では、第３回目のスパン終了時であるので前２回分のスパンの結果が存在し、既存のカバレッジ結果が存在する欄ではカバレッジ結果を累積して記録する。即ち、例えば第１番目のクロックサイクルにおいて発生ビットパターンは"０００"であり、対応する欄には既に図６に示すように第１回目のスパンのカバレッジ結果"１−>１，３−>１，７−>０，２０−>１，２１−>２，３０−>０"が記録されているので、このデータの各行毎に回数を足し合わせるように、"１−>３，３−>１，７−>０，２０−>１，２１−>０，３０−>０"のデータを累積的に記録する。この結果、この欄のデータは、図８に示されるように"１−>４，３−>２，７−>０，２０−>２，２１−>２，３０−>０"となる。
【００３９】
図６乃至図８に例として示すように、各スパンの終了時に統計テーブル４０においてカバレッジ結果を累積的に記録する。即ち、図５のステップＳ３及びＳ４に示す処理が実行される。
【００４０】
図５のステップＳ５で、累積結果からカバレッジ数が最大の箇所をサーチする。即ち、現在のスパン終了時の更新により得られた統計テーブル４０において、カバレッジの取得回数（カバレッジ対象行が実行された回数）が最大となる箇所をサーチする。この際、カバレッジ取得回数が最大となる箇所として、同一のカバレッジ対象行について同一のカバレッジ取得回数が複数有る場合には、例えば最後に検出された箇所をサーチ結果として出力する。例えばサーチ順としては、まず第１クロックサイクルの最上行から最下行まで探索し、次に第２クロックサイクルの最上行から最下行まで探索し、次に第３クロックサイクルに移るというように、クロックサイクルの順に各クロックサイクルにおいて最上行から最下行まで順にサーチする等が考えられる。
【００４１】
次にステップＳ６で、フィードバックファイル３３を作成する。このフィードバックファイル３３には、カバレッジの取得回数が最大となる箇所を示すデータが記録されている。即ちステップＳ５のサーチの結果、カバレッジの取得回数が最大となる箇所が例えば第３番目のクロックサイクルのビットパターン"１０１"の欄であることが分かると、第３番目のクロックサイクル及びビットパターン"１０１"を示すデータがフィードバックファイル３３に記録されることになる。以上で、フィードバックファイル作成処理を終了する。このフィードバックファイル３３に基づいて、上記の例では第３番目のクロックサイクルでビットパターン"１０１"を発生しないように（或いは発生しても破棄するように）、入力生成部１０が動作する。
【００４２】
図９は、フィードバックファイルの書式の一例を示す図である。図９（ａ）に示されるように、フィードバックファイル３３は、データ"ｎ，ｍ"を記録したファイルである。この書式の例において、ｎはクロックサイクルを示し、ｍは禁止ビットパターンを示す。即ち、ｍが示すビットパターンを第ｎ番目のクロックサイクルで入力しないことを示している。
【００４３】
図６の例の場合、上記のサーチ順で探索すると、第２１行の２回実行が最大カバレッジ数として検出され、これが最後に出現するのは第５番目のクロックサイクルのビットパターン"１１１"の欄である。従って、フィードバックファイル３３には、第５番目のクロックサイクル及びビットパターン"１１１"（１０進数で７）が記録される。即ち、図９（ｂ）に示されるように、フィードバックファイル３３にはデータ"５，７"が格納される。これにより、第２回目のスパンにおいては、第５番目のクロックサイクルでビットパターン"１１１"を発生しないように（或いは発生しても破棄するように）、入力生成部１０が動作する。
【００４４】
図７の例の場合、上記のサーチ順で探索すると、第７行の３回実行及び第２１行の３回実行が最大カバレッジ数として検出され、この両者が最後に出現するのは第３番目のクロックサイクルのビットパターン"１０１"の欄である。従って、フィードバックファイル３３には、第３番目のクロックサイクル及びビットパターン"１０１"（１０進数で５）が記録される。即ち、図９（ｃ）に示されるように、フィードバックファイル３３にはデータ"３，５"が格納される。これにより、第３回目のスパンにおいては、第３番目のクロックサイクルでビットパターン"１０１"を発生しないように（或いは発生しても破棄するように）、入力生成部１０が動作する。
【００４５】
図８の例の場合、上記のサーチ順で探索すると、第１行の４回実行が最大カバレッジ数として検出され、これが最後に出現するのは第１番目のクロックサイクルのビットパターン"０００"の欄である。従って、フィードバックファイル３３には、第１番目のクロックサイクル及びビットパターン"０００"（１０進数で０）が記録される。即ち、図９（ｄ）に示されるように、フィードバックファイル３３にはデータ"１，０"が格納される。これにより、第４回目のスパンにおいては、第１番目のクロックサイクルでビットパターン"０００"を発生しないように（或いは発生しても破棄するように）、入力生成部１０が動作する。
【００４６】
なお上記の説明では、ｍが示すビットパターンを第ｎ番目のクロックサイクルで入力しないように入力生成部１０が動作する例を示しているが、本発明はこの例に限定されるものではない。例えばあるスパンにおいて、１つ以上のビットパターンを１つ以上のクロックサイクルで入力しないように入力生成部１０が動作してもよい。即ち、例えば最大カバレッジ数だけでなく２番目に大きなカバレッジ数についてもサーチし、検出された２番目に大きなカバレッジ数に対応する欄のクロックサイクル及びビットパターンについても、これを避けるように構成してよい。
【００４７】
図１０は、入力生成部１０による入力パターンの発生処理を示すフローチャートである。ステップＳ１において、フィードバックファイル３３が存在するか否かがチェックされる。フィードバックファイル３３が存在しない場合には、ステップＳ２で、ランダムにデータ生成する。即ちランダムに入力データのビットパターンを生成する。
【００４８】
フィードバックファイル３３が存在する場合には、ステップＳ３で、フィードバックファイル３３の内容である"ｎ，ｍ"を取得する（読み込む）。次にステップＳ４で、ランダムにデータ生成する。即ちランダムに入力データのビットパターンを生成する。ステップＳ５で、ステップＳ４で生成したビットパターンが、第ｎ番目のクロックサイクルにおいて入力生成部１０から出力すべきビットパターンであるか否かを判定する。ＹＥＳならステップＳ６に進み、ＮＯならステップＳ６をスキップする。
【００４９】
ステップＳ６で、ステップＳ４で生成したビットパターンがｍであるか否かを判定する。ｍである場合には、ビットパターンｍを第ｎ番目のクロックサイクルで生成したことになるので、ステップＳ４に戻り、再度データのランダム生成をやり直す。
【００５０】
ビットパターンｍを第ｎ番目のクロックサイクルで生成したのでない場合、及びフィードバックファイル３３が存在しない場合には、ステップＳ７で、生成したビットパターンを入力データとして出力する。その後ステップＳ８で、スパン設定分のビットパターンを全て出力したか否かを判定する。即ち、設定されたスパンの全てのクロックサイクルに対してビットパターンを生成・出力したか否かを判定する。まだビットパターンを生成・出力していないクロックサイクルがあるのであれば、ステップＳ４又はステップＳ２に戻り、次のクロックサイクルに対してデータ生成を実行する。全てのクロックサイクルに対してビットパターンを生成・出力したのであれば、処理を終了する。
【００５１】
図１１は、本発明によるランダム検証を実行する装置の構成を示す図である。
【００５２】
図１１に示されるように、本発明によるランダム検証を実行する装置は、例えばパーソナルコンピュータやエンジニアリングワークステーション等のコンピュータにより実現される。図１１の装置は、コンピュータ５１０と、コンピュータ５１０に接続されるディスプレイ装置５２０、通信装置５２３、及び入力装置よりなる。入力装置は、例えばキーボード５２１及びマウス５２２を含む。コンピュータ５１０は、ＣＰＵ５１１、ＲＡＭ５１２、ＲＯＭ５１３、ハードディスク等の二次記憶装置５１４、可換媒体記憶装置５１５、及びインターフェース５１６を含む。
【００５３】
キーボード５２１及びマウス５２２は、ユーザとのインターフェースを提供するものであり、コンピュータ５１０を操作するための各種コマンドや要求されたデータに対するユーザ応答等が入力される。ディスプレイ装置５２０は、コンピュータ５１０で処理された結果等を表示すると共に、コンピュータ５１０を操作する際にユーザとの対話を可能にするために様々なデータ表示を行う。通信装置５２３は、遠隔地との通信を行なうためのものであり、例えばモデムやネットワークインターフェース等よりなる。
【００５４】
本発明によるランダム検証は、コンピュータ５１０が実行可能なコンピュータプログラムとして提供される。このコンピュータプログラムは、可換媒体記憶装置５１５に装着可能な記憶媒体Ｍに記憶されており、記憶媒体Ｍから可換媒体記憶装置５１５を介して、ＲＡＭ５１２或いは二次記憶装置５１４にロードされる。或いは、このコンピュータプログラムは、遠隔地にある記憶媒体（図示せず）に記憶されており、この記憶媒体から通信装置５２３及びインターフェース５１６を介して、ＲＡＭ５１２或いは二次記憶装置５１４にロードされる。
【００５５】
キーボード５２１及び／又はマウス５２２を介してユーザからプログラム実行指示があると、ＣＰＵ５１１は、記憶媒体Ｍ、遠隔地記憶媒体、或いは二次記憶装置５１４からプログラムをＲＡＭ５１２にロードする。ＣＰＵ５１１は、ＲＡＭ５１２の空き記憶空間をワークエリアとして使用して、ＲＡＭ５１２にロードされたプログラムを実行し、適宜ユーザと対話しながら処理を進める。なおＲＯＭ５１３は、コンピュータ５１０の基本動作を制御するための制御プログラムが格納されている。
【００５６】
上記コンピュータプログラムを実行することにより、コンピュータ５１０が、上記実施例で説明したようにランダム検証を実行する。即ち、ＲＡＭ５１２に格納された検証対象ＲＴＬ記述１２に基づいて、ランダムに発生した入力データを入力しながら試験対象回路の動作をシミュレートする。
【００５７】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【図面の簡単な説明】
【００５８】
【図１】本発明による計算機シミュレーションによるランダム検証方法の概略を説明するための図である。
【図２】カバレッジについて説明するための図である。
【図３】フィードバックシステムの構成の一例を詳細に示す図である。
【図４】カバレッジ結果の統計を記録する統計テーブルの一例を示す図である。
【図５】カバレッジ統計部によるフィードバックファイルの作成処理を示すフローチャートである。
【図６】カバレッジ結果の累積的な記録について説明するための図である。
【図７】カバレッジ結果の累積的な記録について説明するための図である。
【図８】カバレッジ結果の累積的な記録について説明するための図である。
【図９】フィードバックファイルの書式の一例を示す図である。
【図１０】入力生成部による入力パターンの発生処理を示すフローチャートである。
【図１１】本発明によるランダム検証を実行する装置の構成を示す図である。
【符号の説明】
【００５９】
１０  入力生成部
１１  リファレンスモデル
１２  検証対象ＲＴＬ記述
１３  比較部
１４  リファレンスデータ
１５  出力ファイル
１６  カバレッジ統計部
１７  フィードバックシステム
１８  ＲＴＬ記述
２０〜２７  カバレッジ対象行
３０  設定ファイル
３１  ランダムパターンファイル
３２  カバレッジ結果ファイル
３３  フィードバックファイル
３４  設定ファイル
４０  統計テーブル
５１０  コンピュータ
５１１  ＣＰＵ
５１２  ＲＡＭ
５１３  ＲＯＭ
５１４  二次記憶装置
５１５  可換媒体記憶装置
５１６  インターフェース
５２０  ディスプレイ装置
５２１  キーボード
５２２  マウス
５２３  通信装置
【図１】
2009009236.tif 000003
【図２】
2009009236.tif 000004
【図３】
2009009236.tif 000005
【図４】
2009009236.tif 000006
【図５】
2009009236.tif 000007
【図６】
2009009236.tif 000008
【図７】
2009009236.tif 000009
【図８】
2009009236.tif 000010
【図９】
2009009236.tif 000011
【図１０】
2009009236.tif 000012
【図１１】
2009009236.tif 000013