(57)【要約】【課題】  論理回路の設計における、データパス各処理ブロックを組み合わせたシステム検証の一手法としての、コーナーケースバグをつぶす為の任意の設定、動作条件を用いて行うランダム検証において、各処理ブロックを組み合わせた際に実現し得る任意の設定、動作条件を各処理ブロックの検証ユーティリティを再利用して、自動的に作り出す。【解決手段】  任意の設定、動作条件などのパラメータを決定および設定する関数を含む共通シーケンス基本クラスを定義し、これを継承した各処理ブロック毎のシーケンスクラスを定義、テスト記述においては、前記パラメータ設定関数を順番に呼び出し、実現しうる任意の設定、動作条件の組み合わせを見つけだす。その際、各シーケンスは前後に処理が接続されることを考慮し、入出力パラメータを定義し、その入出力パラメータに沿って、その処理全体のパラメータを決定するように記述しておく。【選択図】  図１
2007094527.tif 000002
【特許請求の範囲】
【請求項１】
集積回路に対しての論理検証を行う装置であって、前記集積回路に含まれるデータパスの各処理ブロック毎の検証は、データパス共通検証関数を用いて、前期各処理ブロック毎のシーケンス関数を実行する集積回路検証方法において、前期各処理ブロック毎のシーケンス関数のひとつとして、各処理ブロックの動作条件の設定を無作為に決定することができるものを有し、前段からの入力要求に応じて、条件を決定したり、後段からの出力要求に応じて、条件を決定したりすることができることを特徴とする集積回路検証装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は集積回路の論理検証装置および方法に関するものである。
【背景技術】
【０００２】
一般に、システムLSI等の集積回路の為の論理検証テストにおいては、集積回路に含まれる複数の周辺回路のそれぞれを個別に検証するテスト（以下、個別検証という）と、複数の周辺回路を同時に動作させて検証を行うテスト（以下、システム検証という）とは、別々に記述されていたが、これを改善し個別検証のためのテストをシステム検証で流用可能とし、精度の高いシステム検証を効率よく行う発明が特開２００２−５５８４３号公報に記載されている。同公報では、複数の個別検証テストをシステム検証テストとして同時に起動させる仕組み、およびシステム検証テストにおいて、各個別検証テストに記載された、CPUコマンドおよび、メモリへのアクセス要求が衝突して誤動作を発生させないための仕組みが記載されている。
【特許文献１】特開２００２−５５８４３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
図１に示す一般的なシステムLSI１０１の集積回路に含まれる複数の周辺回路においては、データの転送を主として行うI/Oデバイス１０５、１０６以外に、データの加工処理を行う、画像処理や信号処理などのデータパス１０７が存在している。このデータパスの構成の１例を図２に示す、ここでは３つのデータ処理ブロックで構成されるデータパスを表しており、その個別検証においては各データ処理ブロック単位で行われる。
【０００４】
図３にデータ処理１ブロックの個別検証の検証環境を示す。図３において検証に用いられる入力データファイル３０１は、入力バスモデル３０２を通して、検証対象であるデータ処理１ブロック３０６にデータが送られる、この時の動作モード等を設定するためのパラメータデータファイル３０３はCPU  I/Fモデル３０５を通して設定されデータ処理が実行される。この実行結果は出力バスモデル３０７を通して出力データファイル３１０が生成される。
【０００５】
一方、検証対象の実行結果の正解データである期待値データファイル３０８は、あらかじめ、正解データを生成するデータ処理１プログラム３０４を用いて、入力データファイル３０１、パラメータデータファイル３０３より生成させ、検証対象であるデータ処理１ブロック３０６の処理終了時に比較を行い、期待した動作であるか検証される。
【０００６】
このデータ処理１ブロックの検証において、図４に模したテスト記述を定義し実行する。図において、ブロック１用シーケンスクラスは、共通シーケンス基本クラスを継承して作成した、データ処理１ブロック用のシーケンスクラスである。このシーケンスクラスが持つシーケンス関数には、ブロック１の検証シーケンスである、初期化、パラメータ設定、期待値作成、テスト開始、処理終了待ち、期待値比較、おのおのの処理が定義されている。このブロック１用シーケンスクラスを、データパスの為の共通検証関数を用いる事により、データ処理ブロック１の個別検証が行われる。
【０００７】
また、データ処理１ブロック、データ処理２ブロック、データ処理３ブロックを含むシステム検証においては、図５に模したテスト記述を定義し実行する。図においてブロック１用シーケンスクラスは、図４のものがそのまま使用可能であり、これと同様に、ブロック２用シーケンスクラス、およびブロック３用シーケンスクラスを定義し、これらを、図４と同様に、データパスの為の共通検証関数を用いる。共通検証関数は、各シーケンスクラスのシーケンス関数を逐次呼び出す事によりシステム検証を行うことが出来、かつ個別検証でのテスト記述をシステム検証に流用可能となる。
【０００８】
しかしながら各データ処理ブロックが処理モード等の幾つかの設定パラメータを持つような汎用性を持った構成である場合、個別の論理検証テストを行う際は、それらの設定パラメータ全ての正しい組み合わせで正しく動作するかを確かめる。それを行う検証者は、そのデータ処理を熟知して検証に臨むので、設定パラメータの組み合わせにおける検証抜けが発生することは少ない。しかし各処理がデータパスとして接続されたシステム検証において、検証者はその各処理ブロックが接続されたシステムにおいての設定パラメータの組み合わせを熟知することは難しく、また主に使われる設定の組み合わせによりテストを行うことが多くなってしまう。また、考え得る組み合わせを全て行ったつもりでも、組み合わせの抜けが生じることもある。その結果、実現可能な設定パラメータの組み合わせにおいて、検証されない設定が残り、実際のシステムにて使用した場合に、うまく動作しないことが確認されることがある。また逆に、接続されることによって、実現可能なモードはすべてのモードの組み合わせでなく、限定された組み合わせになる場合が多くなる。そのような間違った設定でシステム検証を行うことは、無駄なことであり、シミュレーション時間の浪費につながっていた。今までは、これらのモード設定をシステム検証者が一意に指定していた。
【０００９】
つまり、従来のデータパスの個別検証用テストは、システム検証用テストに流用可能であったが、データパスとして組み合わされた時における動作モード等の設定パラメータの選択は人為的に行われていた為、想定が難しい動作モードの組み合わせなどの検証漏れなど、検証作業の低下を招いていた。
【００１０】
本発明は、上記の課題に鑑みてなされたものであり、その目的とするところは、データパスにおける各処理ブロックを組み合わせた際に実現し得る任意の設定、動作条件を、各処理ブロックの個別検証のためのテスト記述を再利用して自動的に作り出すことにある。
【課題を解決するための手段】
【００１１】
任意の設定、動作条件などの設定パラメータを決定する関数を含む共通シーケンス基本クラスを定義し、これを継承した各処理ブロック毎のシーケンスクラスを定義、テスト記述においては、前記設定パラメータ決定関数を順番に呼び出し、実現し得る任意の設定、動作条件の組み合わせを矛盾が生じないように見つけ出す。その際、各処理ブロック毎のシーケンスは前後に処理が接続されることを考慮し、入出力設定パラメータを定義し、その入出力設定パラメータに基づき、その処理ブロックの設定パラメータを決定するように記述しておく。
【発明の効果】
【００１２】
以上説明したように、本発明によれば、データパスの検証における個別のブロック処理のための記述を、データパスのシステム検証記述に流用した際、接続に応じて実現し得る各処理モードの設定が自動的にまた任意に決定される為、システム検証を効率良く、また検証漏れ無く行うことが可能となる。また、あらかじめ入出力設定パラメータの調停を各処理ブロック間で行うことにより、全体の設定パラメータを決定する処理が繰り返しルーチンを無くし、より高速に行えるようになる。
【発明を実施するための最良の形態】
【００１３】
以下、添付の図面を参照して本発明の好適な実施形態を説明する。
【００１４】
本実施形態では、前記従来例と同様に、図１に示したシステムLSI１０１に含まれる周辺回路であるデータパス１０７の１例である図２に示した３つの処理ブロックからなるデータパスを検証対象とする。
【００１５】
図６は、各処理ブロックのパラメータ設定関数を接続して使用した場合の、従来の処理の流れを、また図７は、従来の各処理ブロックのパラメータ設定関数の詳細を示したものである。図８は、本発明を用いた場合の処理の流れ、図９は、本発明によるパラメータ設定の実施例を示したものである。
【００１６】
データ処理１ブロック、データ処理２ブロック、データ処理３ブロックを含むシステム検証においては、図５に模したテスト記述を定義し実行する。システム全体のパラメータを設定するためには、共通検証関数のパラメータ設定シーケンスより、各処理ブロック用シーケンスクラスのパラメータ設定関数を逐次呼び出すことにより行う。
【００１７】
その際、データパス全体を通して設定すべきパラメータまたは各処理の入出力インターフェイスに関わるパラメータを共通検証関数より渡す。ブロック１のパラメータ設定関数においては、受け取った入力パラメータに応じて、次のブロックに渡すパラメータを決定する。もし、その入力パラメータがブロック１にとって受け入れられない実現不可能な設定の場合、その旨を呼び出し側、この場合共通検証関数に通知し終了する。もし、その設定が受け入れ可能な場合、次の処理に対しての入出力インターフェイスパラメータを設定し、次の処理のパラメータ設定関数を、ポインタを介して呼び出す。以下、同様に順々に次の処理のパラメータ設定関数を呼び出していく。この時、次の処理のパラメータ設定関数を呼び出した際にその設定が受け入れられない旨の通知を受けた場合、もしそれ以外の設定が可能である場合、その設定を再度行い、再び次の処理のパラメータ設定関数を呼び出す。こうして、設定の候補がある限り受け入れられるまで繰り返し行う。図６においては、以下の流れをあらわす。
【００１８】
本発明においては、図８に示すように、各ブロックの入出力インターフェイスに関わるパラメータを、全パラメータを決定する前に調整することとする。それにより、各処理ブロック間をまたがったパラメータ設定関数の呼出しを繰り返すことを行うこと無く一度呼ぶだけで、決定することが可能となる。
【００１９】
図９にて、実施例を示す。ここでは、入出力パラメータとして、入出力データタイプを定義している。入出力データタイプには、Type A、Type B、Type C、Type Dがあり、各処理ブロックは、そのどれかのデータタイプを入出力のデータタイプとして採ることとする。この例においては、ブロック１の出力データタイプは{Type B; Type C; Type D}を、ブロック２の入力データタイプは{Type A; Type B; Type C}を、ブロック２の出力データタイプは{Type A; Type D}を、ブロック３の入力データタイプは{Type C; Type D}を採る。まず、共通検証関数パラメータ設定ルーチンより、ブロック１のパラメータ設定関数が呼ばれると、ブロック１の出力パラメータとブロック２の入力パラメータの調整を行う。この例の場合、ブロック１の出力データタイプは{Type B; Type C; Type D}、ブロック２の入力データタイプは{Type A; Type B; Type C}であるので、接続可能なデータタイプとして、{Type B; Type C}を選択し、ブロック１の出力データタイプ、およびブロック２の入力データタイプに設定する（Ｂ）。そして、設定された出力パラメータに基づきブロック１のパラメータの設定を行う。ブロック１の設定が正しく行えなかった場合は、設定失敗にて終了する。ブロック１の設定が正しく行えた場合は、ブロック２のパラメータ設定関数を呼び出す。ブロック２のパラメータ設定関数が呼ばれると、ブロック１の場合と同様に、まずブロック２の出力パラメータとブロック３の入力パラメータの調整を行う。この場合、ブロック２の出力データタイプは{Type A; Type D}、ブロック３の入力データタイプは{Type C; Type D}であるので、接続可能なデータタイプとして{Type D}を選択し、ブロック２の出力データタイプ、およびブロック３の入力データタイプに設定する（Ｃ）。それから、設定された入出力パラメータに基づき、ブロック２のパラメータの設定を行う。ブロック２の設定が正しく行えなかった場合は、設定失敗にて終了する。ブロック２の設定が正しく行えた場合は、ブロック３のパラメータ設定関数を呼び出す。ブロック３のパラメータ設定関数が呼ばれると、設定された入力パラメータに基づき、ブロック３のパラメータ設定が行われ、正しく行えなかった場合は、設定失敗にて、正しく行えた場合には、設定成功にて終了する。
【００２０】
各処理ブロックのパラメータ設定関数にて行う手続きをまとめると、図１０のようになる。処理の第一段階として、当処理の出力設定変数と次処理の入力設定変数の調整を行う。まず次処理が存在するかどうかを判断する（１００１）。次処理が存在する場合には、当処理の出力設定変数と次処理の入力設定変数の調整を行い（１００２）、調整が成功した場合には、当処理の設定変数生成（１００４）へ、失敗した場合には、設定失敗（１０１０）で終了する（１００３）。次処理が存在しない場合は、処理の第二段階である当処理の設定変数生成（１００４）へ進む。当処理の設定変数生成を行い（１００４）、生成が失敗した場合には、設定失敗（１０１０）で終了する。当処理の設定変数生成が成功し、かつ次処理が存在しない場合、設定成功（１００９）で終了する。当処理の設定変数生成が成功し、かつ次処理が存在する場合、次処理のパラメータ設定関数を呼び出す（１００７）。次処理から設定結果を受け判断し（１００８）、設定成功の通知を受けた場合、設定成功（１００９）で終了する。設定失敗の通知を受けた場合は、設定失敗（１０１０）で終了する。
【図面の簡単な説明】
【００２１】
【図１】一般的なシステムLSIの構成を示す図である。
【図２】一般的なデータパスの構成を示す図である。
【図３】データ処理ブロックの検証環境を示す図である。
【図４】従来例における個別ブロックの検証動作を模した図である。
【図５】従来例におけるシステム検証の動作を模した図である。
【図６】従来例における設定パラメータ決定の流れを示した図である。
【図７】従来例における各データ処理ブロックパラメータ設定関数における処理を示した図である。
【図８】本発明における設定パラメータ決定の流れを示した図である。
【図９】本発明におけるパラメータ設定の実施例を示した図である。
【図１０】本発明における各データ処理ブロックパラメータ設定関数における処理を示した図である。
【図１】
2007094527.tif 000003
【図２】
2007094527.tif 000004
【図３】
2007094527.tif 000005
【図４】
2007094527.tif 000006
【図５】
2007094527.tif 000007
【図６】
2007094527.tif 000008
【図７】
2007094527.tif 000009
【図８】
2007094527.tif 000010
【図９】
2007094527.tif 000011
【図１０】
2007094527.tif 000012