(57)【要約】【課題】  データパスの検証において、各処理ブロック毎の個別検証のためのテスト記述を、複数の処理ブロックを組み合わせたデータパスにおけるシステム検証に流用した場合、テストベンチの構成を動的に変える仕組みを設けることでデータパスの検証を効率よく行うことを可能にする。【解決手段】  入出力の動作を行うバスモデルを配置する関数を含む共通シーケンス基本クラスを定義し、これを継承した各処理ブロック毎のシーケンスクラスを定義、テスト記述においては、前記バスモデル配置関数を実行する機能を含むデータパス共通検証関数を用いて前記各処理ブロック毎のモデル配置関数を実行しテストベンチの構成を行う集積回路検証方法とする。【選択図】  図７
2007087175.tif 000002
【特許請求の範囲】
【請求項１】
集積回路に対しての論理検証を行う装置であって、前記集積回路に含まれるデータパスの各処理ブロック毎の検証において、データパス共通検証関数を用いることにより、テストベンチの構成を変更することを特徴とする集積回路用論理検証装置。
【請求項２】
前記、データパスの各処理ブロックの為の、入出力モデルの配置を行う共通モデル配置関数名を定義した処理ブロックの為の共通シーケンス基本クラスをもち、前記各処理ブロック固有のテストベンチ構成の生成処理は、前記処理ブロックの共通シーケンス基本クラスを継承し、対応する前記共通モデル配置関数名の関数を拡張、これを実装することにより、前記各処理ブロック毎に固有シーケンスクラスを定義し、前記データパス共通検証関数は、前記固有シーケンスクラスをインスタンスして生成された固有シーケンスオブジェクトへのポインタをもち、該ポインタをとおして前記固有シーケンスクラス内のモデル配置関数を実行することによりテストベンチの構成を変更することを特徴とする請求項１に記載の集積回路検証装置。
【請求項３】
前記共通シーケンス関数は、他の共通シーケンス関数へのポインタを保持し、前記データパス共通検証関数は、該ポインタを参照することにより、複数の処理ブロックからなるシステム検証のテストベンチを構成することを特徴とする請求項２に記載の集積回路検証装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は集積回路の論理検証装置および方法に関するものである。
【背景技術】
【０００２】
一般に、システムLSI等の集積回路の為の論理検証テストにおいては、集積回路に含まれる複数の周辺回路のそれぞれを個別に検証するテスト（以下、個別検証という）と、複数の周辺回路を同時に動作させて検証を行うテスト（以下、システム検証という）とは、別々に記述されていたが、これを改善し個別検証のためのテストをシステム検証で流用可能とし、精度の高いシステム検証を効率よく行う発明が特開２００２−５５８４３号公報に記載されている。同公報では、複数の個別検証テストをシステム検証テストとして同時に起動させる仕組み、およびシステム検証テストにおいて、各個別検証テストに記載された、CPUコマンドおよび、メモリへのアクセス要求が衝突して誤動作を発生させないための仕組みが記載されている。
【特許文献１】特開２００２−５５８４３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
図１に示す一般的なシステムLSI１０１の集積回路に含まれる複数の周辺回路においては、データの転送を主として行うI/Oデバイス１０５、１０６以外に、データの加工処理を行う、画像処理や信号処理などのデータパス１０７が存在している。このデータパスの構成の１例を図２に示す、ここでは３つのデータ処理ブロックで構成されるデータパスを表しており、その個別検証においては各データ処理ブロック単位で行われる。
【０００４】
図３にデータ処理１ブロックの個別検証の検証環境を示す。図３において検証に用いられる入力データファイル３０１は、入力バスモデル３０２を通して、検証対象であるデータ処理１ブロック３０６にデータが送られる、この時の動作モード等を設定するためのパラメータデータファイル３０３はCPU  I/Fモデル３０５を通して設定されデータ処理が実行される。この実行結果は出力バスモデル３０７を通して出力データファイル３１０が生成される。
【０００５】
一方、検証対象の実行結果の正解データである期待値データファイル３０８は、あらかじめ、正解データを生成するデータ処理１プログラム３０４を用いて、入力データファイル３０１、パラメータデータファイル３０３より生成させ、検証対象であるデータ処理１ブロック３０６の処理終了時に比較を行い、期待した動作であるか検証される。
【０００６】
このデータ処理１ブロックの検証において、図４に模したテスト記述を定義し実行する。図において、ブロック１用シーケンスクラスは、共通シーケンス基本クラスを継承して作成した、データ処理１ブロック用のシーケンスクラスである。このシーケンスクラスが持つシーケンス関数には、ブロック１の検証シーケンスである、初期化、パラメータ設定、期待値作成、テスト開始、処理終了待ち、期待値比較、おのおのの処理が定義されている。このブロック１用シーケンスクラスを、データパスの為の共通検証関数を用いる事により、データ処理ブロック１の個別検証が行われる。
【０００７】
また、データ処理１ブロック、データ処理２ブロック、データ処理３ブロックを含むシステム検証においては、図５に模したテスト記述を定義し実行する。図においてブロック１用シーケンスクラスは、図４のものがそのまま使用可能であり、これと同様に、ブロック２用シーケンスクラス、およびブロック３用シーケンスクラスを定義し、これらを、図４と同様に、データパスの為の共通検証関数を用いる。共通検証関数は、各シーケンスクラスのシーケンス関数を逐次呼び出す事によりシステム検証を行うことが出来、かつ個別検証でのテスト記述をシステム検証に流用可能となる。
【０００８】
しかしながら、以上示した個別検証とシステム検証においては、図６に示すようにテストベンチの構成を変える必要があった。図において（Ａ）は、データ処理１ブロック用のテストベンチの構成を示しており、検証対象となる、データ処理１ブロックの入力バスに対して、入力１バスモデルが接続され、出力バスには出力１バスモデルが接続される構成となっている。ここでのバスモデルはバスの通信プロトコルを模擬し検証対象となるブロックとデータの受け渡しを行う機能を持つものである。この入力１バスモデルを通して検証対象となるデータ処理１ブロックに対して検証用データが入力され、出力データは出力１バスモデルを通して収拾され、その出力データの値が期待された値であるか否かを判定する事により機能の検証を行う。同様に、（Ｂ）はデータ処理２ブロック、（Ｃ）はデータ処理３ブロックのテストベンチの構成を示している。また、（Ｄ）は、前記３つのデータ処理ブロックを含むシステム検証におけるテストベンチの構成を示しており、データ処理１ブロックの入力バスに対して入力１バスモデル、出力バスに対しては出力３バスモデルが接続される構成となる。
【０００９】
したがって、従来のデータパスの個別検証用テストは、システム検証用テストに流用可能であったが、その実行環境であるテストベンチは、各テストが想定する構成と異なる場合はテストが実行できないため、テスト実行者はその必要とするテストベンチ構成を把握し、予め正しく構成した上で実行する必要があり検証作業の低下を招いていた。
【００１０】
本発明は、上記の課題に鑑みてなされたものであり、その目的とするところは、データパスにおける各処理ブロック毎の個別検証のためのテスト記述を、複数の処理ブロックを組み合わせたデータパスにおけるシステム検証で流用した場合、テストベンチの構成を動的に変える仕組みを設けることでデータパスの検証を効率よく行うことを可能にすることにある。
【課題を解決するための手段】
【００１１】
入出力の動作を行うバスモデルを配置する関数を含む共通シーケンス基本クラスを定義し、これを継承した各処理ブロック毎のシーケンスクラスを定義、テスト記述においては、前記バスモデル配置関数を実行する機能を含むデータパス共通検証関数を用いて前記各処理ブロック毎のモデル配置関数を実行しテストベンチの構成を行う集積回路検証方法をとる。
【発明の効果】
【００１２】
以上説明したように、本発明によれば、データパスの検証における個別のブロック処理のための記述を、データパスのシステム検証記述に流用した際、テストベンチの構成を動的に変える事により、テスト対象に応じたテストベンチが自動的に構成される為、個別ブロック検証および、システム検証を効率よく行うことが可能となる。
【発明を実施するための最良の形態】
【００１３】
以下，添付の図面を参照して本発明の好適な実施形態を説明する。
【００１４】
本実施形態では、前記従来例と同様に、図１に示したシステムLSI１０１に含まれる周辺回路であるデータパス１０７の１例である図２に示した３つの処理ブロックからなるデータパスを検証対象とする。
【００１５】
図７の（A）は、従来例の共通シーケンス基本クラスに対して、本発明の請求項２に記載されたモデル配置関数を含む１例を示したものであり、さらに本発明の請求項３に記載された、他のシーケンス関数へのポインタも含む構成となっている。図において本基本クラスでは、前記他のシーケンスへのポインタである次のブロック処理オブジェクトへのポインタ変数７０１と、共通モデル配置関数である、入力バスモデル配置関数７０２、出力バスモデル配置関数７０３に加え、従来例の共通シーケンス関数名である、ブロック初期化関数７０４、ブロックのパラメータ設定関数７０５、ブロックの期待値生成関数７０６、ブロックのテスト開始関数７０７、ブロックのテスト終了確認関数７０８、ブロックの期待値比較関数７０９が定義されている。
【００１６】
図７の（B）は、データ処理ブロック１固有のシーケンスクラスを示しており、前期共通シーケンス基本クラスを継承している。本データ処理ブロック１固有のシーケンスクラスにおいては、共通シーケンス基本クラスに定義された、各共通シーケンス関数を拡張し、データ処理１ブロックの入力バスモデルの配置命令を実装した入力バスモデル配置関数７１０、データ処理１ブロックの出力バスモデルの配置命令を実装した出力バスモデル配置関数７１１、データ処理ブロック１の初期化を実装したブロック初期化関数７０８、データ処理ブロック１のパラメータ設定処理を実装した、ブロックのパラメータ設定関数７０９、データ処理ブロック１の期待値生成処理を実装した、ブロックの期待値生成関数７１０、データ処理ブロック１のテスト開始処理を実装した、ブロックのテスト開始関数７１１、データ処理ブロック１の実行状態を返す処理を実装した、ブロックのテスト終了確認関数７１２、データ処理ブロック１の期待値比較処理を実装した、ブロックの期待値比較関数７１３が定義されている。
【００１７】
同様に図７の（C）はデータ処理ブロック２、図７の（D）はデータ処理ブロック３の固有シーケンスクラス定義を示している。
【００１８】
図８の（A）は、本発明の請求項１に記載されたデータパス共通検証関数の処理フローを示した図である。本処理フローは、すべてのブロックすなわち前記各ブロック毎の固有シーケンスクラスをインスタンスして生成されたブロック処理オブジェクトの群中で先頭に位置するブロック処理オブジェクトの入力バスモデル配置関数を実行する８０１、最後尾に位置するブロック処理オブジェクトの出力バスモデル配置関数を実行する８０２、すべての初期化関数を実行する８０３、次にすべてのブロックのパラメータ設定関数の実行８０４、すべてのブロックの期待値生成関数の実行８０５を行ったのち、すべてのブロックのテスト開始関数８０６により処理が開始され、すべてのブロックのテスト終了を待つ８０７により、テストが終了を検知すると、すべてのブロックの期待値比較関数を実行８０８するフローとなっている。
【００１９】
図８の（B）は、前記、先頭ブロック処理オブジェクトの入力バスモデル配置関数の実行８０１の具体的なフローを示した図である。図において、まずブロック処理オブジェクト、つまり本発明の請求項２に記載された、固有シーケンスオブジェクトへのポインタの値を内部変数Pに代入する８０９、次に変数Pの値を調べ判断する８１０、値がNULLであれば本処理フローは終了し、値がNULLでなければ、変数Pが指し示すブロック処理オブジェクトの入力バスモデル配置関数を実行する８１１し本処理フローを終了する。
【００２０】
図８の（C）は、前記図８の（A）に示された、最後尾に位置するブロック処理オブジェクトの出力バスモデル配置関数８０２の具体的なフローを示した図である。図において、ブロック処理オブジェクト、つまり本発明の請求項２に記載された、固有シーケンスオブジェクトへのポインタの値を内部変数Pに代入する８１２、次に変数Pの値を調べ判断する８１３、値がNULLであれば本処理フローは終了し、値がNULLでなければ、変数Pが指し示すブロック処理オブジェクトが指し示す次のブロック処理オブジェクトへのポインタを変数PNに代入し８１４、変数PNの値を調べる８１５、PNの値がNULLであれば現在のP値が指すブロック処理オブジェクトが最後尾であると判断し、このブロック処理オブジェクトの出力バスモデル配置関数を実行し８１７終了する。PNの値がNULLでなければPNの値をPに代入し８１６、ステップ８１３に戻り、最後尾のブロック処理オブジェクトが見つかるまで処理を繰り返す。
【００２１】
図８のステップ８０３以降は従来例と同様である。
【００２２】
図９の（A）は、前記データパス１０７のデータ処理ブロック１の個別検証用テスト記述におけるフローを示した図である。まず、データ処理ブロック１のブロック処理クラス、つまり、前期図７の（B）に示した、データ処理ブロック１固有のシーケンスクラスをインスタンスし、ブロック処理オブジェクトO1を作成する９０１、次にデータパス実行関数、つまり、前記図８の（A）に示した、データパス共通検証関数が持つ、ブロック処理オブジェクトへのポインタに、前記ブロック処理オブジェクトO1へのポインタ値を代入する９０２。さらに、前記ブロック処理オブジェクトO1が持つ、次のブロック処理オブジェクトへのポインタの値としてNULLを代入する９０３。そしてデータパス実行関数である前記データパス共通検証関数を実行する。図10の（A）に、この時の動作を模した図を示す。図において、ブロック処理オブジェクトは、ブロック処理オブジェクトO1が１つのみであるため、本データパス共通検証関数ではブロック処理オブジェクトO1に定義された入力バスモデルの配置、及び出力バスモデルの配置が行われたのち、検証シーケンスが実行される。つまり、前記データ処理ブロック１のみのテストベンチによる個別検証テストが実行される。
【００２３】
図９の（B）は、前記データパス１０７のデータ処理ブロック１、２，３のすべてをとおして検証を行うシステム検証のテスト記述におけるフローを示した図である。まず、データ処理ブロック１のブロック処理クラスをインスタンスし、ブロック処理オブジェクトO1を作成する９０５、同様に、データ処理ブロック２のブロック処理オブジェクトO2、データ処理ブロック処理オブジェクトO3を作成する９０６、９０７、次にデータパス実行関数が持つ、ブロック処理オブジェクトへのポインタに、前記ブロック処理オブジェクトO1へのポインタ値を代入する９０８。さらに、前記ブロック処理オブジェクトO1が持つ、次のブロック処理オブジェクトへのポインタの値として前記ブロック処理オブジェクトO2へのポインタの値を代入する９０９。同様に、前記ブロック処理オブジェクトO2が持つ、次のブロック処理オブジェクトへのポインタの値として前記ブロック処理オブジェクトO3へのポインタの値を代入する９１０。前記ブロック処理オブジェクトO3が持つ、次のブロック処理オブジェクトへのポインタの値としてはNULLを代入する９１１。そしてデータパス実行関数である前記データパス共通検証関数を実行する。図10の（B）に、この時の動作を模した図を示す。図において、ブロック処理オブジェクトは、ポインタを通してブロック処理オブジェクトO1、ブロック処理オブジェクトO2、ブロック処理オブジェクトO3を連続して参照することが可能となる。本データパス共通検証関数ではまず、先頭に位置するブロック処理オブジェクト01の入力バスモデル配置関数を実行し、次に最後尾に位置するブロック処理オブジェクト03の出力バスモデル配置関数を実行する事によりシステム検証の為のテストベンチを構成する。その後、各ブロック処理オブジェクトに定義された固有シーケンスが逐次実行しテストを行う。
【図面の簡単な説明】
【００２４】
【図１】一般的なシステムLSIの構成を示す図である。
【図２】一般的なデータパスの構成を示す図である。
【図３】データ処理ブロックの検証環境を示す図である。
【図４】従来例における個別ブロックの検証動作を模した図である。
【図５】従来例におけるシステム検証の動作を模した図である。
【図６】データ処理ブロックの個別検証とシステム検証のテストベンチを示す図である。
【図７】本発明における共通シーケンス基本クラス、およびこれを継承して作成した固有シーケンスクラスを示す図である。
【図８】本発明における、データパス共通検証関数のフローを示す図である。
【図９】本発明における、データ処理ブロックの個別検証のテスト記述、およびデータパスのシステム検証のテスト記述におけるフローを示す図である。
【図１０】本発明における、データ処理ブロックの個別検証、およびデータパスのシステム検証の動作を模した図である。
【図１】
2007087175.tif 000003
【図２】
2007087175.tif 000004
【図３】
2007087175.tif 000005
【図４】
2007087175.tif 000006
【図５】
2007087175.tif 000007
【図６】
2007087175.tif 000008
【図７】
2007087175.tif 000009
【図８】
2007087175.tif 000010
【図９】
2007087175.tif 000011
【図１０】
2007087175.tif 000012