(57)【要約】【課題】シミュレーションによる半導体集積回路の検証の高速化を図る。【解決手段】対象となる半導体集積回路の回路記述１０２，１０３を受け取り、回路データベース１０６を作成するコンパイラ１０５と、回路データベース１０６を受け取り、この回路データベース１０６に基づいて、半導体集積回路内の回路を解析し、回路の抽象度のレベル切り替え時点の決定し、シミュレーションオブジェクト１０８を生成する回路解析部１０７と、シミュレーションオブジェクト１０８を入力して、シミュレーションオブジェクト１０８に基づいて半導体集積回路のシミュレーションを行うシミュレーション処理部１０９と、を有することを特徴とする半導体集積回路の検証システムが提供される。【選択図】      図１
2005037995.tif 000002
【特許請求の範囲】
【請求項１】
半導体集積回路の検証システムにおいて、
対象となる半導体集積回路の回路記述を受け取り、回路データベースを作成するコンパイラと、
前記回路データベースを受け取り、この回路データベースに基づいて、前記半導体集積回路内の回路を解析し、前記回路の抽象度のレベル切り替え時点の決定し、シミュレーションオブジェクトを生成する回路解析部と、
前記シミュレーションオブジェクトを入力して、前記シミュレーションオブジェクトに基づいて前記半導体集積回路のシミュレーションを行うシミュレーション実行部と、
を有することを特徴とする半導体集積回路の検証システム。
【請求項２】
前記回路解析部は、前記半導体集積回路内の各回路の論理、あるいは、故障シミュレーション実行時の抽象度を、回路の内部の状態に対応させて決定し、シミュレーション実行中にそれぞれの回路のレベルをその時点の状態に合わせて切り替えることを特徴とする請求項１記載の半導体集積回路の検証システム。
【請求項３】
前記回路解析部は、シミュレーションが必要な回路部分を抽出することにより、不要部分のレベルをシミュレーション時間が最小になるように決定することを特徴とする請求項１記載の半導体集積回路の検証システム。
【請求項４】
前記回路解析部はシミュレーション時に回路記述の抽象度が切り替えられるブロックに対し、回路の等価性検証を行うことを特徴とする請求項１記載の半導体集積回路の検証システム。
【請求項５】
前記回路解析部は、シミュレーション実行時に前記各ブロックのレベル切り替えのオーバヘッドを計測し、切り替えない方がシミュレーション時間が短縮される部分を抽出し、当該切り替えを行わないようにすることを特徴とする請求項１記載の半導体集積回路の検証システム。
【請求項６】
半導体集積回路の検証システムにおいて、
ＤＦＴ情報を入力するＤＦＴ情報入力部と、
前記半導体集積回路内の回路を解析し、検証に係る回路を抽出する回路抽出部と、
抽出された回路の抽象度を切り替えてシミュレーションを行うシミュレーションシミュレーションオブジェクトを生成するシミュレーション制御部と、
を有することを特徴とする半導体集積回路の検証システム。
【請求項７】
前記回路抽出部は、前記ＤＦＴ情報に基づいて、シミュレーションに不要な回路部分を抽出して、その部分のシミュレーションを行わないレベルであるブラックボックスレベルに設定することを特徴とする請求項６記載の半導体集積回路の検証システム。
【請求項８】
前記シミュレーション制御部は、切り替え対象の各回路の機能が異なっているか否かの検証である等価性検証処理を行うことを特徴とする請求項６記載の半導体集積回路の検証システム。
【請求項９】
前記シミュレーション制御部は、前記半導体集積回路がスキャン設計された場合、スキャンパスのシフトの期間はスキャンパス動作のみをフル遅延でのシミュレーションに設定し、組み合わせ回路部はブラックボックスに設定することを特徴とする請求項６記載の半導体集積回路の検証システム。
【請求項１０】
前記シミュレーション制御部は、スキャンシフトサイクルから取り込みサイクルに動作状態が変化した際における、１サイクル以上前の時点から実遅延への切り替えを行うことを特徴とする請求項６記載の半導体集積回路の検証システム。
【請求項１１】
前記回路抽出部は、前記半導体集積回路内に設定されたスキャンアウト端子毎に、そのスキャンアウト端子から入力側への回路追跡を行い、スキャンレジスタのスキャンアウト端子に到達したら、そのレジスタを登録し、そのスキャン入力端子から、更に追跡を行うようにし、回路のスキャン入力へ到達するようして回路を抽出することを特徴とする請求項６記載の半導体集積回路の検証システム。
【請求項１２】
前記回路抽出部は、前記スキャンレジスタのクロック入力から入力方向へ追跡を行い、クロック信号入力までのクロックツリー構造をあらかじめ抽出しておき、スキャン回路抽出処理においては、前記スキャンレジスタ以外の素子に到達した場合は、その種類と状態により、追跡可能であるかどうかを判定し、バッファやインバータの出力に到達した場合は、透過的な素子として扱い、バッファやインバータ以外の機能的な素子の出力に到達した場合は、その素子の入力状態を見て、その出力がある一つの入力により直接あるいは反転状態で制御できる場合は、その入力端子からスキャンチェインの追跡を行い、
前記スキャンチェインの追跡が成功した場合は、抽出途中で通過したレジスタ、バッファ、インバータを含む素子と、スキャンイン端子、スキャンアウト端子、スキャンイネーブル端子を含む端子をまとめて、スキャンシフト動作に必要な回路として登録するようにして回路を抽出することを特徴とする請求項１１記載の半導体集積回路の検証システム。
【請求項１３】
前記シミュレーション制御部は、スキャンディセーブル状態のサイクルおよび、ディセーブル状態になった最初のサイクルの、一つ以上前のサイクルを、全回路シミュレーションが必要な期間とみなすことを特徴とする請求項１２記載の半導体集積回路の検証システム。
【請求項１４】
前記シミュレーション制御部は、メモリＢＩＳＴ回路の検証を行う際、前記メモリＢＩＳＴ回路に含まれるＢＩＳＴ回路及びメモリはフル遅延のシミュレーションに設定し、それ以外の検証に関与しない回路はブラックボックスに設定することを特徴とする請求項６記載の半導体集積回路の検証システム。
【請求項１５】
前記シミュレーション制御部は、タイミング上厳しくない回路状態では、より抽象度の高い回路情報を用いたシミュレーションに切り替えることを特徴とする請求項１４記載の半導体集積回路の検証システム。
【請求項１６】
前記回路抽出部は、外部出力からＢＩＳＴ回路への回路を抽出し、ＢＩＳＴブロックの入力端子から、入力方向に回路の追跡を行い、抽出された部分をメモリＢＩＳＴ対象部分とみなすことを特徴とする請求項１４記載の半導体集積回路の検証システム。
【請求項１７】
前記回路抽出部は、ロジックＢＩＳＴ設計における検証の際に、ＢＩＳＴ実行中固定となるテストモード信号を設定し、値が固定になる信号を確定し、外部出力からＢＩＳＴ回路への回路を抽出し、前記ＢＩＳＴ回路の各スキャンチェイン入力を起点、スキャンチェイン出力を終点として、スキャンチェインの抽出を行い、他のＢＩＳＴ回路入力端子から入力側への追跡を行い、追跡途中で素子に出会った場合、ひとつの入力に対し透過的な状態と判断されたら、その入力端子から更に追跡を行い、追跡はもとのＢＩＳＴ回路へ到達した場合、あるいは外部端子へ到達した場合には追跡を終了し、
前記シミュレーション制御部は、テストパタン記述を解析し、前記ＢＩＳＴ回路のスキャンイネーブル出力が、ディセーブル状態になる時点を抽出し、スキャンディセーブル状態のサイクルおよび、ディセーブル状態になった最初のサイクルの一つ以上前のサイクルを全回路シミュレーションが必要な期間とみなして、この期間は回路の全ての部分で必要なレベルのシミュレーションを行い、それ以外のサイクルはスキャンシフトサイクルとみなし、前記抽出されたロジックＢＩＳＴブロックを含むスキャンシフト動作に必要な回路のみで必要なレベルのシミュレーションに設定し、それ以外の部分はブラックボックスに設定することを特徴とする請求項６記載の半導体集積回路の検証システム。
【請求項１８】
前記シミュレーション制御部は、ＩＰコアベースのシステムＬＳＩ設計おけるコアテストの検証の際に、検証の対象コアはシフトと取り込みでレベルを切り替えて検証し、前記対象コアのバウンダリのスキャンパスは、シフト動作のみはフル遅延でのシミュレーションし、検証の対象とならないコアはブラックボックスに設定することを特徴とする請求項６記載の半導体集積回路の検証システム。
【請求項１９】
前記回路抽出部は、テストモードごとに、スキャンチェインの抽出を行い、そのテストモードでテストされる機能ブロック内を通るスキャンチェイン、若しくは、その機能ブロックの入出力端子に接続されたレジスタを持つスキャンチェインを抽出することを特徴とする請求項１８記載の半導体集積回路の検証システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半導体集積回路の検証システムに関し、特に、半導体集積回路のシミュレーションを含む検証システムに関する。
【０００２】
【従来の技術】
大規模かつ複雑なＬＳＩ回路をテストするためのテストパタンの作成作業は、ＬＳＩの設計期間の大きな部分を占める。設計機能検証のために作成したテストパタンから、故障検出率の高くなる組み合わせを選んで、製造試験に用いることもあるが、この場合問題になるのは選択したテストパタンの品質が、製造試験に充分と考えられる故障検出率に達しないことが多いということである。機能検証用のテストパタンは、設計内の各機能が正しく実行されていることを基準として作成されるが、これは回路内の故障が検出されるかという基準とは異なるものである。また、大規模回路では、故障検出率を求めるための故障シミュレーションの実行に膨大な時間がかかるため、故障をサンプリングしての故障シミュレーションを行ったり、論理シミュレーションで求められる各信号の活性化率をもとにパタンを選択したりする。これらの場合には故障検出率が正確に求められないことになる。
【０００３】
テスト容易化設計（ＤＦＴ：Ｄｅｓｉｇｎ  ｆｏｒ  Ｔｅｓｔａｂｉｌｉｔｙ）は、ＬＳＩ回路にできるだけ小規模のテスト回路を付加する事によりそのテスト容易性を高め、テストパタンの作成期間やテストパタンサイズ、テスト時間、最終的な故障検出率を最適化するための技術である。テスト容易化設計の代表的な技術には、スキャン設計、メモリＢＩＳＴ、ロジックＢＩＳＴなどがある。
【０００４】
スキャン設計は、従来広く用いられているテスト容易化設計技術である。図９のように順序回路内のすべてのレジスタ３３４（フリップフロップあるいはラッチ）は、スキャンレジスタと呼ばれる特殊なレジスタに置き換えられ、一つ以上のシフトレジスタ（スキャンパス）としてシリアルに接続される。この構造を用いて、通常は難しい回路内部のレジスタの制御・観測を、外部の入出力端子を用いて直接行えるようになる。これにより、テストパタンの作成作業が大幅に単純化される。特にプログラムによるテストパタン自動生成（ＡＴＰＧ：Ａｕｔｏｍａｔｉｃ  Ｔｅｓｔ  Ｐａｔｔｅｒｎ  Ｇｅｎｅｒａｔｉｏｎ）を用いて、高い故障検出率を持つテストパタンを短期間で作成することが可能になる。
【０００５】
ＡＴＰＧでスキャン回路のテストパタンを自動生成する場合には、いくつかの設計ルールに従わなければならない。このルールに従わない部分が回路中に残っていると、生成されたテストパタンが正当でない可能性が出てくる。また、多くの場合ＡＴＰＧツールは回路を完全同期回路として扱い、クロックが全てのレジスタに同時に与えられると仮定してパタン生成を行う。このため、実際の回路でクロックスキューが起こった場合に、正しく動作しないことも考えられる。このようなことから、生成されたテストパタンをシミュレーションして正当性の検証を行う必要が、ときに生じる。
【０００６】
スキャンテストパタンは、主にスキャンパスにテストデータを入出力するシフトサイクルと、論理回路にシステム動作をさせるサイクルからなる。後者は外部入力の設定、システムクロックの入力、外部出力の観測からなり、１サイクルで行うこともできる。論理シミュレーションでは当然これら全ての動作をシミュレートすることになる。
【０００７】
ここで問題なのは、シフトサイクルのシミュレーションにかかる時間である。シフト動作中はスキャンレジスタの出力がランダムに変化し、そのイベントが内部の論理回路に伝播する。これらの動作のシミュレーションは実際には不要である場合が多い。たとえばフルスキャン回路では、シフトが完了した時点でレジスタに設定されている信号値が重要なのであり、シフト途中の動作はテストにはまったく関係がない。しかし実際にシミュレーション最も時間がかかるのはこのシフト動作部分なのである。
【０００８】
このような不要なシミュレーション時間を削減するのに用いられるのが、パラレルロードシミュレーションと呼ばれる技法である。パラレルロードシミュレーションではシフトサイクルのシミュレーションを行う代わりに、スキャンインパタンを直接レジスタに割り当て、また直接レジスタの値を観測する。値の割り付けはレジスタの出力信号に行う方法や、スキャン入力に割り当ててスキャンクロックを一度だけ入力する方法など、各種ある。
【０００９】
図１０はパラレルロードシミュレーションによるシミュレーションを説明するための回路例である。このシミュレーションは以下のようになる。（１）組み合わせ回路３４１に接続されるレジスタ３４２にテストパタンを直接割り付ける。
（２）外部入力３４３に入力パタンを設定する。（３）一定時間後に外部出力３４４をチェックし、その後通常モードでレジスタにシステムクロックを与えてテスト結果を取り込む。（４）レジスタ３４２の値を直接観測し、期待値と比較する。以上の操作をすべてのパタンに対して行う。レジスタへの値の設定・観測の際、必要ならばテストモードを選択する。
【００１０】
パラレルロードシミュレーション技術により、スキャンテストパタンの検証シミュレーション時間は劇的に削減される。しかし、シフト動作部分がシミュレーションされないことや、スキャンテストパタンからＰＬＳ用のテストパタンを作成しなければならないなど、単純なシミュレーションに比べ問題は残る。
【００１１】
大規模かつ複雑な半導体集積回路の、テストの困難性を解決するテスト容易化手法のひとつとして、ＢＩＳＴ（Ｂｕｉｌｔ−Ｉｎ  Ｓｅｌｆ  Ｔｅｓｔ：組み込み自己テスト）も広く用いられている。ＢＩＳＴは、テスト対象ブロックへ与えるテストパタンの生成と、テスト対象ブロックからのテスト結果出力の解析を、テスト対象ブロックの周辺に構成された論理回路により全て自動的に行うものである。
【００１２】
図１１は、ＢＩＳＴの一般的な構成図である。テストモード設定用の外部入力信号３５２でテスト対象ブロック３５６を含む半導体集積回路を、テストモードに設定する。これによりテスト対象ブロックの入出力は通常動作時とは異なる、テスト用の入出力信号と接続される。ＢＩＳＴ回路を初期化した後、ＢＩＳＴクロック３５３を定められた数入力することにより、自己テストが実行される。テストモード信号やＢＩＳＴクロックの供給は、外部入力信号から直接行われたり、ＢＩＳＴ制御回路３５１を介して供給されたりする。自己テストの実行中は、テスト対象ブロック３５６への入力３５５は、テストパタン生成器３５４により自動的に生成され、テストパタンは、テストパタン出力３５５を経由してテスト対象ブロック３５６に入力される。また、テスト対象ブロックからのテスト結果出力３５７は、テスト結果解析器３５８に入力され、逐一期待値と比較されたり、圧縮されてある特定のビット長のデータ（シグネチャ）に変換されたりする。最終的にテスト対象ブロック３５６のテスト解析結果３５９が出力され、テストによる良否の判定が行われる。
【００１３】
ＢＩＳＴによるテストでは、テストパタンを外部のテスタメモリ上に用意する必要がなくなり、テスタのコストが削減される。また全ての動作をＢＩＳＴクロックに同期してデバイス内で行うために、ＢＩＳＴクロックを高速で動作させられれば、テスタによるテスト動作周波数よりも、速い動作速度でのテストが可能になる。これにより、実動作に近い速度での製品テストを行うことができる。またＢＩＳＴによるテストでは、少数のテスト用外部入出力信号しか必要ないので、複数のブロックを並列的にテストすることも可能となる。これにより、全体のテスト時間が大幅に削減できる。
【００１４】
ＢＩＳＴはテスト対象ブロックの種類により、メモリデバイスに対するメモリＢＩＳＴと、論理ブロックに対するロジックＢＩＳＴに大別される。メモリデバイスに対してはその構造及び動作の規則性から、入力パタン生成器はアルゴリズム的な規則正しいパタンを生成する。これに対して論理ブロックは一般的にその動作がランダムであるため、擬似乱数的なパタン生成器（ＰＲＰＧ：  Ｐｓｅｕｄｏ−Ｒａｎｄｏｍ  Ｐａｔｔｅｒｎ  Ｇｅｎｅｒａｔｏｒ）が用いられる。この乱数的なパタン生成器としては、その構造の単純さからＬＦＳＲ（Ｌｉｎｅａｒ  Ｆｅｅｄｂａｃｋ  Ｓｈｉｆｔ  Ｒｅｇｉｓｔｅｒ）が多く用いられている。
【００１５】
メモリに対するＢＩＳＴ技術は、現在広く用いられている。ＢＩＳＴ回路はメモリに読み書き動作を行わせるためのデータ入力、アドレス入力および制御信号を順次自動的に発生し、メモリ入力に与える。メモリの読み出し動作時のメモリ出力は、ＢＩＳＴ回路内で正しい出力であるかどうかの解析を行う。解析方法には、読み出したデータを順次ＢＩＳＴ回路内で生成した期待値と比較する比較器方式や、データを順次圧縮して行き、最終的な圧縮結果をあらかじめ計算された期待値と比較する圧縮器方式などがある。
【００１６】
図１２は、一般的なメモリＢＩＳＴ回路の構成図である。ＢＩＳＴ回路３６１内のＢＩＳＴ制御回路３６２が、データ生成器３６３、アドレス生成器３６４、制御信号生成器３６５を制御して必要な信号を順次生成させる。生成された信号はメモリ３６６の入力に与えられる。メモリ出力は結果解析器３６７に入力され、テスト結果の判定信号３６８を出力することにより、メモリの良否を判定する。
【００１７】
ＢＩＳＴ回路によるテストの実行は、ＢＩＳＴ回路の初期化、ＢＩＳＴの実行、ＢＩＳＴ結果の判定の順で行われる。ＢＩＳＴの実行中は、外部からクロック信号を与えるのみでテストが進行するので、複雑な制御を行うことなくテストを行うことができる。この特徴により、ＢＩＳＴ回路は他のテスト回路との並列テストを実現し易いという利点を持つ。
【００１８】
設計にメモリＢＩＳＴ回路を挿入した場合、このＢＩＳＴ回路の検証用のシミュレーションを行うが、シミュレーション実行時間はメモリのサイズに依存し、ＤＲＡＭなどの大規模メモリに対しては、長大になることも多い。また、メモリＢＩＳＴで検証が必要なのはＢＩＳＴ回路、ＢＩＳＴ対象メモリおよびテストを制御する周辺回路が主であるが、ＢＩＳＴあるいはメモリのクロック入力がその他のユーザ論理へ伝播していると、ＢＩＳＴ実行中にその回路部分が動作してしまい、余分なシミュレーション時間がかかることになってしまう。論理部分の大きい大規模ＬＳＩでは、この時間増加がかなりの割合になる場合もある。これを回避するには、クロック信号にＢＩＳＴ実行中はそれ以外の論理へのクロック伝播を抑制する回路を追加する方法があるが、これは実際には不要な回路を付加することにより、クロック設計を複雑にするおそれがある。もう一つの方法として、シミュレーション不要な論理部分を回路記述から削除した、ＢＩＳＴシミュレーション用のネットリストを作成することである。これにより不要回路部分のシミュレーションは行われないが、シミュレーション用に別のネットリストを作成しなければならない。また、遅延付きシミュレーションを行う場合に、遅延情報ファイルから削除された回路部分への遅延割り付けを行おうとしたときに、エラーとなってしまい、大量のメッセージが出力される場合がある。
【００１９】
ロジックＢＩＳＴにはいくつかの手法が存在するが、近年主に用いられているのは、ＳＴＵＭＰＳ（Ｓｅｌｆ−Ｔｅｓｔｉｎｇ  Ｕｓｉｎｇ  ＭＩＳＲ  ａｎｄ  Ｐａｒａｌｌｅｌ  ＳＲＳＧｓ）である。ここでＳＲＳＧはＳｈｉｆｔ  Ｒｅｇｉｓｔｅｒ  Ｓｅｑｕｅｎｃｅ  Ｇｅｎｅｒａｔｏｒの略であり、上記ＰＲＰＧ（擬似乱数的なパタン生成器）と同義である。ＳＴＵＭＰＳはシリアルＢＩＳＴと呼ばれるロジックＢＩＳＴ手法のひとつである。シリアルＢＩＳＴではパタン生成器からのテストパタンの適用と、パタン圧縮器内へのテスト結果の取り込みを、シリアルなアクセスにより行う。シリアルＢＩＳＴの利点のひとつは論理回路内のスキャン設計をそのまま利用できるということである。つまり回路がもともとスキャン設計されているならば、ＢＩＳＴによる回路サイズの増大は比較的少なくてすむし、性能の低下が新たに起こることもない。
【００２０】
図１３はＳＴＵＭＰＳの構造の概略である。テスト対象論理回路３７１内のレジスタは、一部あるいは全てスキャンレジスタに置き換えられ、スキャンパス３７３で構成されている。テスト対象論理回路３７１の入出力は、テストの間制御・観測できなければならないので、スキャンレジスタを挿入してシフトレジスタを構成することにより、これを実現する。このシフトレジスタは通常、ＩＥＥＥ１１４９．１で規定されたバウンダリスキャン回路を共有して構成される。ロジックＢＩＳＴ回路は他に、パタン生成器３７４と、テスト結果圧縮器３７５などからなる。これら全てのテスト回路の制御や、スキャンシフト用のクロックの供給は、ロジックＢＩＳＴ制御回路３７９を通じて行われる。
【００２１】
図１３のＳＴＵＭＰＳの構造を用いたテストは、以下の手順で行われる。まず、パタン生成器３７４に擬似乱数を生成するためのシード値となる、全て０ではない初期値が設定される。次のクロックからテストパタン生成器３７４は擬似乱数パタンを生成し始める。生成されたパタンはテスト対象論理回路３７１内のスキャンパス３７３に順次与えられる。テスト対象論理回路３７１内のスキャンパス３７３に一通りパタンを設定し終わったら、テスト対象論理回路３７１の制御可能な入力（外部入力及びスキャンレジスタ）の値は定まったことになるので、ここでシステムクロックを一回入力して、出力側のレジスタに値を取り込む。次に、テスト対象論理回路３７１内のスキャンパス３７３をシフトし、テスト結果圧縮器３７５に順次値を取り込みながら、テスト結果を圧縮して行く。これでテスト対象論理回路３７１へのテストパタンが一回与えられたことになるので、この動作をテストパタン数繰り返し、最終的な圧縮器の値をシグネチャとして期待値と比較し、回路の良否を判定する。テスト結果の圧縮器へのシフトと、次のパタンの入力は、通常同時に行われる。スキャンパスの本数は任意であるが、本数が大きいほどシフト時間が短縮され、テストパタンの適用時間を削減できる。このときパタンをシフトインする時間は最長のスキャンパス長に依存するので、パス長は均等であるほうが効果的である。
【００２２】
ロジックＢＩＳＴ回路も設計内に実装した後に検証用のシミュレーションを行う必要がある。ＳＴＵＭＰＳ方式の回路ではフルスキャン設計が基本となっているので、スキャン設計と同様にスキャンシフト中の論理回路部分の動作に関するシミュレーションが無駄である。ロジックＢＩＳＴ回路で、スキャン設計と同様にパラレルロードシミュレーションを行おうとすると、以下のような問題がある。まず、スキャンシフトすべき入力パタンはＬＳＩ内部の疑似乱数パタン生成器で自動生成するので、外部から与えるパタンからではわからない。また、シフトクロックを入力して組み合わせ回路部分の出力をスキャンレジスタに取り込んだ状態が、シフトアウトされるパタンになるが、これらはＳＴＵＭＰＳでは圧縮器に入力され、外部パタン上では圧縮結果しか知ることができない。
【００２３】
このような状態でパラレルロードシミュレーションを行おうとすると、以下のような手順が必要となる。（１）疑似乱数パタン生成器の構造から、スキャンパスに割り当てるパタンを計算する。（２）パタンをスキャンレジスタに直接割り当て、クロックを入力した後、スキャンレジスタの出力を直接観測する。（３）観測されたレジスタ出力から、シフト出力されたときの圧縮結果を計算する。（４）最終的な圧縮結果を、ツールが出力する圧縮期待値と比較する。この際、スキャン設計のパラレルロードシミュレーションと同じなのは（２）の部分のみである。ここで問題なのは、上記のように単純にシミュレーションを行うのに比べ、追加の処理が入るということと、パタン生成器、圧縮器およびスキャンシフトの部分は、シミュレーションが行われないということである。後者に関しては、別の方法で動作検証を行わなければならない。
【００２４】
【発明が解決しようとする課題】
以上のように、従来の半導体集積回路の検証システムにおいては、上述のように、シミュレーションによる検証の際に様々な不都合が生じ、そのため、検証の高速化を図ることが困難であった。
【００２５】
本発明は上記事情に鑑みて成されたものであり、その目的とするところは、シミュレーションによる半導体集積回路の検証の高速化を図る半導体集積回路の検証システムを提供することにある。
【００２６】
【課題を解決するための手段】
本願発明の一態様によれば、対象となる半導体集積回路の回路記述を受け取り、回路データベースを作成するコンパイラと、前記回路データベースを受け取り、この回路データベースに基づいて、前記半導体集積回路内の回路を解析し、前記回路の抽象度のレベル切り替え時点の決定し、シミュレーションオブジェクトを生成する回路解析部と、前記シミュレーションオブジェクトを入力して、前記シミュレーションオブジェクトに基づいて前記半導体集積回路のシミュレーションを行うシミュレーション実行部と、を有することを特徴とする半導体集積回路の検証システムが提供される。
【００２７】
また、本願発明の一態様によれば、ＤＦＴ情報を入力するＤＦＴ情報入力部と、前記半導体集積回路内の回路を解析し、検証に係る回路を抽出する回路抽出部と、抽出された回路の抽象度を切り替えてシミュレーションを行うシミュレーションシミュレーションオブジェクトを生成するシミュレーション制御部と、を有することを特徴とする半導体集積回路の検証システムが提供される。
【００２８】
【発明の実施の形態】
本発明に係る半導体集積回路の検証システムの実施形態について、図面を参照しながら詳細に説明する。本実施形態における半導体集積回路の検証システムが具備するハードウエア構成は、各種処理を行うためのＣＰＵと、キーボード、マウス、ライトペン、又はフレキシブルディスク装置等の入力装置と、メモリ装置やディスク装置等の外部記憶装置と、ディスプレイ装置、プリンタ装置等の出力装置等とを備えた通常のコンピュータシステムを用いることができる。このコンピュータシステムには、いわゆる汎用機、ワークステーション、及びパーソナルコンピュータが含まれる。このコンピュータシステムに以下で説明する各部をプログラムにしたソフトウエアをインストールし、そのソフトウエアを実行することで実施することが出来る。
【００２９】
図１は、本実施形態の半導体集積回路の検証システムを実現するための半導体集積回路シミュレーションシステムの構成例である。この半導体集積回路シミュレーションシステムは、設計の各ブロックの回路記述を読み込み、回路データベース１０６を作成するコンパイラ１０５と、回路データベース１０６を読み込み、回路の解析とレベル切り替え時点の決定を行い、シミュレーションオブジェクト１０８を出力する回路解析部１０７と、シミュレーションオブジェクト１０８を入力し、このシミュレーションオブジェクトに基づいてシミュレーションを行うシミュレーション処理部１０９と、を有する。
【００３０】
コンパイラ１０５は、複数の回路レベルを切り替えてシミュレーションする部分については、レベルごとの記述を読み込む。この場合はゲートレベル記述１０２と、ＲＴＬ記述１０３を読み込んでいる。遅延付きシミュレーションが必要な場合は、遅延情報１０１も読み込む。これに加え、ＤＦＴ回路抽出のための切り替え設定ＤＦＴ情報１０４を入力することができる。この情報には外部端子、内部信号、ブロック名などが含まれる。また、シミュレーションを通じてレベルを固定するブロックや、シミュレーションレベルを切り替えるための条件設定を、入力することができる。本実施形態では、さらにテストパターン記述１１０も読み込む。これら入力に基づいて、コンパイラ１０５は回路データベース１０６を作成する。
【００３１】
次に、回路解析部１０７は、対象となる回路の解析を行い、シミュレーションを行うシミュレーションオブジェクトの生成を行う。回路の解析によって、半導体集積回路の各ブロックの論理あるいは故障シミュレーション実行時の抽象度を、回路の内部の状態に対応させて指定し、シミュレーション実行中にそれぞれのブロックのレベルをその時点の状態に合わせて切り替えるようにする。本実施形態の回路解析部１０７は、ＤＦＴ情報を入力するＤＦＴ情報入力部１２１と、シミュレーションに係る回路を抽出する回路抽出部１２２と、抽出された回路の回路記述を切り替えてシミュレーションを行うようなシミュレーションオブジェクトを生成するシミュレーション制御部１２３と、を有する。
【００３２】
また、回路解析部１０７は、コンパイラ１０５で入力された情報をもとに、回路の解析とレベル切り替え時点の決定を行う。ＤＦＴ入力部１２１は、対象となるＤＦＴ情報を入力する。ここで、ＤＦＴ情報は、検証を行うための各種情報が含まれる。続いて、回路抽出部１２２は、ＤＦＴ回路や信号情報から、シミュレーションに不要な回路部分を抽出して、その部分をブラックボックスレベルに設定するなどして、シミュレーション時間が最小となるように処理を行う。続いて、シミュレーション制御部１２３は、途中で回路レベルを切り替えてシミュレーションを行うようにシミュレーションオブジェクトを生成する。この場合に、切り替え対象の各ブロックの機能が異なってしまっていることのないよう、等価性検証処理を行うようにするようにしてもよい。また、シミュレーション実行時に各ブロックのレベル切り替えのオーバヘッドを計測し、切り替えない方がシミュレーション時間が短縮される部分を自動的に抽出して、その切り替えを行わないようにしてもよい。
【００３３】
以上のように、回路解析処理部１０７において解析した結果をもとに、レベルの切り替えタイミングを行うシミュレーション用のシミュレーションオブジェクト１０８が出力される。このシミュレーションオブジェクト１０８を入力とし、シミュレーション処理部１０９が、シミュレーションを実行する。シミュレーション処理部１０９は、シミュレーションオブジェクトに保存されている情報をもとに、決められた時刻に各回路部分のシミュレーションレベルを切り替えることにより、シミュレーションを実行する。レベルの切り替えは時間的なオーバヘッドを伴うため、シミュレーション実行中に切り替えに伴うオーバヘッドを計測し、切り替えない方がシミュレーション時間が短くなる場合は、以降同じ程度のオーバヘッドを伴うような切り替えは行わないよう、動的に切り替えるようにしてもよい。
【００３４】
第１の実施形態
図２は、スキャン設計された回路の、スキャンパタンのシミュレーションにおけるレベル切り替えの方式を示した図である。このスキャン設計された回路２０１は、スキャンパス２０２及び２０３を有し、これらスキャンパスからデータの入出力を行う組み合わせロジック２０４を有する。この場合、スキャンパス２０２及び２０３のシフトの期間はスキャンパス動作のみをシミュレートすればよく、組み合わせロジック２０４の動作は知る必要がないので、スキャンパス部分はフル遅延でのシミュレーション、組み合わせ回路部はブラックボックスに切り替えてシミュレーションする。組み合わせ回路２０４の出力をスキャンレジスタに取り込むためには、シフトの最終状態から組み合わせ回路を通って伝播した信号の、出力での状態を知らなければならない。このため、キャプチャ動作時ではスキャンテスト対象回路部分全てを、フル遅延でシミュレーションする。
【００３５】
図３は、シフトクロックと取り込みクロックが共通な、一相型と呼ばれるスキャンレジスタのシフトおよび取り込み動作の波形図である。この図面を用いて切り替えの時刻の認識方法について説明する。スキャンシフトイネーブル信号３０１によりスキャンレジスタは動作状態を変え、信号値に応じてスキャン／取込みクロック３０２の立ち上がりエッジに同期してシフト動作あるいは取込み動作を行う。ここではスキャンシフトイネーブル信号３０１が信号値１のときシフト動作、信号値０のとき取り込み動作を行う。このため、スキャンシフトイネーブル信号３０１を回路レベル切り替えの条件とすべきであるが、単純にこれが０の間スキャンテスト対象部分をフル遅延に切り替えたのでは、問題がある。スキャンシフトイネーブル信号３０１の１から０への切り替わりで論理回路のレベルをフル遅延に切り替えると、遅延は３０６部分とみなされてしまう。しかし、実際の回路では、組み合わせ論理回路の入力の変化は、１サイクル前のクロックによって引き起こされるため、実遅延は３０７になる。そこで、回路解析部１０７は、これを反映させるために、１サイクル前の時点から実遅延への切り替えを行う。これによりシミュレーション上と実回路で、遅延検証に齟齬が生じることはなくなる。
【００３６】
次に、スキャン設計に対する回路解析処理について説明する。スキャン設計では、ＲＴＬ記述は入力されない。また、ＤＦＴ情報としては、スキャンイン、スキャンアウト、スキャンイネーブルの各端子情報が入力される。回路内のスキャンチェインが複数であれば、それぞれの端子は複数指定される。回路をスキャンテストモードに設定する端子がある場合は、その端子とスキャンテスト中のその信号値が指定される。
【００３７】
回路解析部１０７は、スキャン回路部の抽出を行う。最初に、テストモードの指定がある場合は、それらを回路に入力した状態を解析し、値が固定になる信号を確定しておく。設定されたスキャンアウト端子ごとに、入力側への回路追跡を行い、スキャンレジスタのスキャンアウト端子に到達したら、そのレジスタを登録し、そのスキャン入力端子から、更に追跡を行うようにする。最終的に回路のスキャン入力へ到達したら、回路解析は終了する。また、スキャンレジスタのクロック入力からも入力方向に追跡を行い、クロック信号入力までのクロックツリー構造を抽出しておく。スキャンレジスタ以外の素子に到達した場合は、その種類と状態により、追跡可能であるかどうかを判定する。バッファやインバータの出力に到達した場合は、透過的な素子として扱い、その入力から追跡を再開する。但しインバータの場合は、その地点で信号の値が反転することを記録しておく。バッファやインバータ以外の機能的な素子の出力に到達した場合は、その素子の入力状態を見て、その出力がある一つの入力により直接あるいは反転状態で制御できる場合は、その入力端子から追跡を再開する。このとき反転状態であるならば、インバータと同様、その地点で信号の値が反転することを記録しておく。追跡途中にこれら以外の素子に到達した場合は、スキャンチェインの抽出に失敗したものとしてエラーとなる。
【００３８】
スキャンチェインの追跡が成功した場合は、抽出途中で通過したレジスタ、バッファ、インバータ、その他の素子と、スキャンイン、スキャンアウト、スキャンイネーブル端子をまとめて、スキャンシフト動作に必要な回路として登録する。また、それ以外の回路部分を、スキャンシフト時に不要な回路とする。
【００３９】
回路解析部１０７はさらに、テストパタン記述を解析し、スキャンイネーブル端子にディセーブル（ｄｉｓａｂｌｅ）状態の信号が入力される時点を抽出する。スキャンディセーブル状態のサイクルおよび、ディセーブル状態になった最初のサイクルの、一つ前のサイクルを、全回路シミュレーションが必要な期間とみなし、この期間は回路の全ての部分で、必要なレベルのシミュレーションを行う。それ以外のサイクルはスキャンシフトサイクルとみなし、前述の処理において抽出されたスキャンシフト動作に必要な回路のみで必要なレベルのシミュレーションを行い、それ以外の部分はブラックボックス扱いで、動作させないようにする。
【００４０】
図４は、スキャン設計に対する回路解析処理を示すフローチャートである。最初に、テストモードの指定がある場合は、それらを回路に入力した状態を解析し、値が固定になる信号を確定しておく（ステップＳ４０１）。そして、まだ処理していないスキャンチェインがあるか否かを判定し（ステップＳ４０２）、まだ処理していないスキャンチェインがある場合には、次のチェインのスキャンアウトを追跡ポイントに設定する（ステップＳ４０２）。続いて、設定された追跡ポイントから入力側に回路を追跡する（ステップＳ４０３）。
【００４１】
続いて、追跡して辿った素子または端子がスキャンレジスタのスキャン出力端子か否かを判定する（ステップＳ４０４）、スキャンレジスタのスキャン出力端子の場合には、スキャンクロック端子から入力側へ追跡を行う（ステップＳ４０５）。続いて、クロック端子抽出に成功したか否かを判定し（ステップＳ４０６）、成功した場合にはスキャンレジスタを登録し（ステップＳ４０７）、レジスタのスキャンイン端子を追跡ポイントに設定して（ステップＳ４０８）、ステップＳ４０３に進む。
【００４２】
一方、ステップＳ４０４にてスキャンレジスタのスキャン出力端子でないと判定された場合には、追跡して辿った素子または端子が、チェインのスキャンイン端子か否かを判定し（ステップＳ４０９）、チェインのスキャンイン端子である場合には、スキャンレジスタは一つ以上登録されているか否かを判定し（ステップＳ４１０）、登録されている場合にはステップＳ４０２に進む。ここで、総てのスキャンチェインを処理したと判定された場合には、回路抽出成功として（ステップＳ４１１）、処理を終了する。一方、ステップＳ４１０にてスキャンレジスタは一つ以上登録されていないと判定された場合には回路抽出失敗として（ステップＳ４１２）処理を終了する。
【００４３】
ステップ４０９の処理にてチェインのスキャンイン端子ではないと判定された場合には、次に、追跡して辿った素子または端子が、バッファあるいはインバータか否かを判定する（ステップＳ４１３）。これらバッファあるいはインバータの場合には、入力端子を追跡ポイントに設定し（ステップＳ４１４）、インバータの場合には、反転情報を登録し（ステップＳ４１６）、ステップＳ４０３へ進む。一方バッファの場合には、そのままステップ４０３へ進む。
【００４４】
ここで、ステップＳ４１３にて、バッファあるいはインバータではないと判定された場合には、一つの入力から制御されているか否かを判定し（ステップＳ４１７）、追跡して辿った素子または端子が一つの入力から制御されていない場合には、回路抽出失敗（ステップＳ４１８）として処理を終了する。一方、一つの入力から制御されている場合には、入力端子を追跡ポイントに設定する（ステップＳ４１９）。続いて、信号は反転しているか否かを判定し（ステップＳ４２０）、反転している場合には反転情報を登録し（ステップＳ４２１）、ステップＳ４０２に進む。また、反転していない場合には、そのままステップＳ４０３に進む。
【００４５】
このように、スキャン設計に対する回路解析を行うことで、スキャン動作に必要な回路を抽出することができる。従って、それ以外の部分はブラックボックスに設定することでシミュレーションによる半導体集積回路の検証の高速化を図ることが出来る。
【００４６】
第２の実施の形態
図５は、メモリＢＩＳＴ回路の検証を行う際のレベル切り替えを説明するための図である。対象とする回路３１１は、ＢＩＳＴ回路３１２、メモリ３１３、ロジック回路３１４、及びロジック回路３１５を有するとする。ここで、検証の必要があるのはＢＩＳＴ回路３１２およびメモリ３１３で、それ以外のロジック回路３１４、３１５などは、検証に関与しない場合、これらロジック回路３１４及び３１５は、シミュレーション中ブラックボックスにしておけばよい。不要な論理回路の抽出は、ＢＩＳＴ用外部端子からバックトレースで抽出できないものを不要としたり、ブロックを直接指定したりすることにより、行うことができる。
【００４７】
ＢＩＳＴ回路３１２およびメモリ３１３は、シミュレーション実行中は全てフル遅延にしてもよいが、タイミング上厳しくないとわかっている動作については、より実行時間の短いＲＴＬでの遅延無しシミュレーションに切り替えることもできるようにする。これには例えば、図１の回路解析部１０７において、フル遅延シミュレーションを行うメモリのアドレス範囲を指定するなどして、切り替えることができる。
【００４８】
次に、メモリＢＩＳＴ設計に対する回路解析処理について説明する。メモリＢＩＳＴ設計ではＤＦＴ情報として、メモリＢＩＳＴ用の外部出力端子、メモリおよびＢＩＳＴのブロックと、入力端子の設定情報などが含まれる。またテスト対象となっているメモリブロックに対して、ＢＩＳＴ実行時に使用される入力端子の情報が入力となる。
【００４９】
回路解析部１０７は、メモリＢＩＳＴ回路及びメモリブロックの抽出を行う。まずＢＩＳＴ実行中固定となるテストモード信号を設定し、値が固定になる信号を確定しておく。外部出力からＢＩＳＴ回路への途中回路をまず抽出する。それからＢＩＳＴブロックの入力端子から、入力方向に回路の追跡を行い、抽出された部分をメモリＢＩＳＴ対象部分とみなす。追跡途中でメモリブロック以外の素子に出会っても、スキャン回路の追跡の場合と同様に、ひとつの入力に対し透過的な状態と判断されたら、その入力端子から更に追跡を行う。メモリブロックの出力端子に到達した場合は、その入力端子それぞれに対して追跡を行うが、ＢＩＳＴ実行時に使用する端子として登録されていない端子は、追跡の対象とはならない。追跡はもとのＢＩＳＴ回路へ到達した場合、あるいは外部端子へ到達した場合に終了する。
【００５０】
抽出処理において抽出された回路部分が、メモリＢＩＳＴシミュレーションの対象とみなされる。それ以外の回路部分は、ブラックボックス扱いで、シミュレーション中は動作させないようにする。またＢＩＳＴブロックは、シミュレーション中の条件により、シミュレーションのレベルを変えるように設定されることがある。
【００５１】
図６は、メモリＢＩＳＴ設計に対する回路解析処理例を示すフローチャートである。まず、回路をテストモード信号が入力された状態に設定する（ステップＳ６０１）。続いて、まだ処理していないＢＩＳＴ用外部出力があるか否かを判定し（ステップＳ６０１）、まだ処理していないＢＩＳＴ用外部出力がある場合には、外部出力からＢＩＳＴ回路までの回路を抽出する（ステップＳ６０３）。続いて、まだ処理していないＢＩＳＴ回路の入力端子があるか否かを判定し（ステップＳ６０４）、まだ処理していないＢＩＳＴ回路の入力端子がある場合には、ＢＩＳＴ回路の入力端子を追跡ポイントに設定する（ステップＳ６０５）。続いて、その設定された追跡ポイントから入力側に回路を追跡し（ステップＳ６０６）、辿った素子がメモリブロックか否かを判定する（ステップＳ６０７）。メモリブロックの場合には、次に、まだ処理していないメモリのＢＩＳＴ回路用の入力端子があるか否かを判定する（ステップＳ６０８）。まだ処理していないメモリのＢＩＳＴ回路用の入力端子がある場合には、メモリのＢＩＳＴ回路用の入力端子を追跡ポイントに設定し（ステップＳ６０９）、ステップＳ６０６に進む。ステップＳ６０８において、処理していないメモリのＢＩＳＴ用の入力端子がない場合には、ステップＳ６０４に進む。
【００５２】
一方、ステップＳ６０７にて辿った素子がメモリブロックではないと判定された場合には、続いて、その素子は透過的な端子か否かを判定する（ステップＳ６１０）。その素子が透過的な端子と判定された場合には、続いて、素子出力を制御する入力端子の追跡ポイントに設定し（ステップＳ６１１）、ステップＳ６０６に進む。ステップＳ６１０にて透過的な素子ではないと判定された場合には、続いて、辿った素子がＢＩＳＴ回路出力あるいはＢＩＳＴ回路用の外部入力端子か否かを判定する（ステップＳ６１２）。この判定において、いずれの端子の場合には、ステップＳ６０４に進む。一方、ステップＳ６１２において、いずれかの端子の場合でもないと判定された場合には、回路抽出失敗として（ステップＳ６１３）、処理を終了する。このようにして、総ての外部出力からＢＩＳＴ回路まで回路を抽出して、総てのＢＩＳＴ用外部出力について処理を行った場合には回路抽出成功（ステップＳ６１４）として、処理を終了する。
【００５３】
このように、メモリＢＩＳＴ設計に対する回路解析を行うことで、検証に関与する回路を抽出することができる。従って、それ以外の部分はブラックボックスに設定することでシミュレーションによる半導体集積回路の検証の高速化を図ることが出来る。
【００５４】
第３の実施の形態
ロジックＢＩＳＴ回路に対する検証シミュレーションは前述のとおり、スキャン設計に対するパラレルロードシミュレーションと基本的には似ているが、余分な作業が入る上、重要な回路部分のシミュレーションが行われないという難点がある。本実施形態のロジックＢＩＳＴ回路に対する検証シミュレーションでは、シフト動作時はパタン生成器とパタン圧縮器もスキャンパスと同じくフル遅延でシミュレーションを行い、論理回路の出力取り込み時のみ、フル遅延シミュレーションをする。これにより、必要な回路部分は充分な検証を行った上で、シミュレーション時間を劇的に短縮させることができる。切り替えは、やはりスキャンシフトイネーブル信号で行われるが、スキャン設計と同じように、論理回路部分に関しては信号の切り替わりよりも１サイクルはやい時点で、フル遅延モデルへの切り替えが必要である。
【００５５】
図１３に示すようなロジックＢＩＳＴ設計に対する回路解析処理について説明する。ロジックＢＩＳＴ設計ではＤＦＴ情報として、ロジックＢＩＳＴ用の外部出力端子、ロジックＢＩＳＴブロックとその入出力ピンの機能の情報が入力される。機能には、スキャンチェイン入力、スキャンチェイン出力、スキャンイネーブル出力、ＢＩＳＴ出力、ＢＩＳＴクロック、ＢＩＳＴイネーブル信号と、入力端子の設定情報などが含まれる。
【００５６】
回路解析部１０７は、ロジックＢＩＳＴ回路及びスキャンチェインの抽出を行う。まずＢＩＳＴ実行中固定となるテストモード信号を設定し、値が固定になる信号を確定しておく。外部出力からＢＩＳＴ回路への途中回路をまず抽出する。その後ＢＩＳＴ回路の各スキャンチェイン入力を起点、スキャンチェイン出力を終点として、スキャン回路抽出処理と同様に、スキャンチェインの抽出を行う。また、その他のＢＩＳＴ回路入力端子から入力側への追跡を行う。追跡途中で素子に出会っても、スキャン回路の追跡の場合と同様に、ひとつの入力に対し透過的な状態と判断されたら、その入力端子から更に追跡を行う。追跡はもとのＢＩＳＴ回路へ到達した場合、あるいは外部端子へ到達した場合に終了する。
【００５７】
回路解析部１０７はさらにテストパタン記述を解析し、ＢＩＳＴ回路のスキャンイネーブル出力が、ディセーブル状態になる時点を抽出する。スキャンディセーブル状態のサイクルおよび、ディセーブル状態になった最初のサイクルの、一つ前のサイクルを、全回路シミュレーションが必要な期間とみなし、この期間は回路の全ての部分で、必要なレベルのシミュレーションを行う。それ以外のサイクルはスキャンシフトサイクルとみなし、前述の処理において抽出された、ロジックＢＩＳＴブロックを含むスキャンシフト動作に必要な回路のみで必要なレベルのシミュレーションを行い、それ以外の部分はブラックボックス扱いで、動作させないようにする。
【００５８】
図１４は、ロジックＢＩＳＴ設計に対する回路解析処理のフローチャートである。まず、回路をテストモード信号が入力された状態に設定する（ステップＳ８０１）。続いて、まだ処理していないＢＩＳＴ用外部出力があるか否かを判定し（ステップＳ８０２）、処理していないＢＩＳＴ用外部出力がある場合には、外部出力からＢＩＳＴ回路までの回路を抽出する（ステップＳ８０３）。続いて、ＢＩＳＴ回路からスキャンチェインを抽出する（ステップＳ８０４）。次に、まだ処理していないＢＩＳＴ回路の入力端子があるか否かを判定し、（ステップＳ８０５）、まだ処理していないＢＩＳＴ回路の入力端子がない場合には、ステップＳ８０２に進む、ある場合には、続いて、ＢＩＳＴ回路の入力端子を追跡ポイントに設定し（ステップＳ８０６）、追跡ポイントから入力側に回路を追跡する（ステップＳ８０７）。追跡の結果、辿った素子が透過的な場合には（ステップＳ８０８）、素子出力を制御する入力端子を追跡ポイントに設定する（ステップＳ８０９）。一方、辿った素子が透過的でない場合には、続いて、辿った素子がＢＩＳＴ回路出力あるいはＢＩＳＴ用外部入力端子か否かを判定し（ステップＳ８１０）、これら素子の場合には、ステップＳ８０５に進み、いずれの素子でもない場合には、回路抽出失敗として（ステップＳ８１１）、処理を終了する。このようにして、総てのＢＩＳＴ用外部出力について回路解析を行った場合には回路抽出成功として（ステップＳ８１２）、処理を終了する。
【００５９】
このように、ロジックＢＩＳＴ設計に対する回路解析を行うことで、検証に関与する回路を抽出することができる。従って、それ以外の部分はブラックボックスに設定することでシミュレーションによる半導体集積回路の検証の高速化を図ることが出来る。
【００６０】
第４の実施の形態
図７は、ＩＰコアベースのシステムＬＳＩ設計おける、コアテストの検証シミュレーション説明するための図である。各コアのテストは、コアの周りに接続されたスキャンパスと、内部のスキャンパスを用いて行われる場合がある。この時、テスト対象コア内部はスキャン設計の場合と同じように、シフトと取り込みでレベルを切替えて検証することができる。また、コアのバウンダリのスキャンパスは、テスト対象コアの入出力を設定するために必要なので、シフト動作のみはフル遅延でのシミュレーションが必要である。図７において、コアベースシステムＬＳＩ５０１内部にはテスト対象コア５０２と、コアのバウンダリ５０３と、テスト非対象だがスキャンパスが通るコア５０４と、テスト非対象コア５０５と、を有する。ここで、コア５０４のように、テスト非対象ではあるが、テスト対象コア５０２にデータをシリアルに入出力するためのシフト動作が必要となる場合、シフト時のみはフル遅延でこれらのパスのシミュレーションを行う。コア５０４の内部論理はシミュレーションの必要がないので、ずっとブラックボックスでよい。テスト非対象コア５０５はこのシミュレーションに関連がないので、内部全てをずっとブラックボックスにしておくことができる。
【００６１】
このように、各ブロックの抽象度をシミュレーション実行時に切り替えることにより、不要なシミュレーション時間を短縮し、全体シミュレーション時間を大幅に短縮することができる。またこの際、回路記述やテストパタンを別に用意する必要がないという効果もある。
【００６２】
次に、コアテスト設計に対する回路解析処理について説明する。コアテスト設計ではＤＦＴ情報として、同時にテストされる機能ブロックのグループと、そのときのテストモード信号の設定や、スキャンイン、スキャンアウト、スキャンイネーブル端子などを入力とする。
【００６３】
回路解析部１０７は、テストモードごとに、スキャン設計の場合と同じようにスキャンチェインの抽出を行う。そして、そのテストモードでテストされる機能ブロック内を通るか、その機能ブロックの入出力端子に接続されたレジスタを持つスキャンチェインを抽出する。これらのスキャンチェインは、このテストモード時にシフト動作を行うので、スキャン設計の場合のスキャンチェインと同じく、このテストモードの間は常に必要なレベルのシミュレーションを行う。また、そのテストモードでテストされる機能ブロックも、スキャン設計の場合の論理回路部分と同じく、シフト動作時はスキャンチェインとその関連部分以外はブラックボックス扱いとする。
【００６４】
それ以外の機能ブロックのうち、これらのスキャンチェインが通るものは、シフトのみシミュレーションする必要があるため、スキャンチェインとその関連回路のみを持ち、その他はこのテストモードを通じてブラックボックス扱いとする。上記いずれにも該当しない機能ブロックは、このテストモードではテストに関係しないブロックであるので、テストモードを通じて内部は総てブラックボックスとみなされる。
【００６５】
図８は、コアテスト設計に対する回路解析処理を示すフローチャートである。まず、まだ処理していないテストモードがあるか否かを判定し（ステップＳ７０１）、まだ処理していないテストモードがある場合には、回路をテストモード信号が入力された状態に設定する（ステップＳ７０２）。続いて、スキャンチェインを抽出し（ステップＳ７０３）、このモードでテストされるブロックを通るか、又は入出力に繋がるスキャンチェインを抽出する（ステップＳ７０４）。続いて、まだ処理していない機能ブロックがあるか否かを判定し（ステップＳ７０５）、まだ処理していない機能ブロックがある場合には、このモードでテストされるブロックか否かを判定する（ステップＳ７０６）。このモードでテストされるブロックの場合には、取り込み時に論理をシミュレーションするように設定して（ステップＳ７０７）、ステップＳ７０５に進む。一方、このモードでテストされないブロックの場合には、必要チェインがブロックを通るか否かを判定する（ステップＳ７０８）。必要チェインがブロックを通る場合には、シフト動作のみシミュレーションするように設定して（ステップＳ７０９）、ステップＳ７０５に進む。一方、必要チェインがブロックを通らない場合には、当該ブロックをブラックボックスとして扱うように設定して、ステップＳ７０５に進む（ステップＳ７１０）。
【００６６】
このように、ＩＰコアベースのシステムＬＳＩ設計におけるコアテストの検証シミュレーションに対する回路解析を行うことで、コアテストに必要な回路を抽出することができる。従って、それ以外の部分はブラックボックスに設定することでシミュレーションによる半導体集積回路の検証の高速化を図ることが出来る。
【００６７】
以上のように、本実施形態の半導体集積回路の検証システムによれば、各ブロックの抽象度をシミュレーション実行時に切り替えることにより、不要なシミュレーション時間を短縮し、全体シミュレーション時間を大幅に短縮することができる。また、シミュレーションの際には回路記述やテストパタンを別に用意する必要がないため、より簡易にシミュレーションを行う事が出来る。
【００６８】
【発明の効果】
以上説明したように、本発明によれば、シミュレーションによる半導体集積回路の検証の高速化を図る半導体集積回路の検証システムを提供することができる。
【図面の簡単な説明】
【図１】本実施形態のシミュレーションシステムを示すブロック図である。
【図２】スキャン設計のシミュレーションに対するレベル切り替えを説明する図面である。
【図３】一相スキャン設計におけるシフト動作と取り込み動作を示す波形図である。
【図４】図２におけるスキャン設計に対する回路解析処理フローを示す図である。
【図５】メモリＢＩＳＴ回路のシミュレーションに対するレベル切り替えを説明するための図面である。
【図６】図４におけるメモリＢＩＳＴ設計に対する回路解析処理フローを示す図である。
【図７】システムＬＳＩのコアテストシミュレーションに対するレベル切り替えを説明するための図面である。
【図８】図７におけるコアテスト設計に対する回路解析処理フローを示す図である。
【図９】スキャン設計の概念図である。
【図１０】パラレルロードシミュレーションの概念図である。
【図１１】組み込み自己テストの一般的な構成図である。
【図１２】メモリＢＩＳＴ回路の一般的な構成図である。
【図１３】ＳＴＵＭＰＳ方式のロジックＢＩＳＴ回路の構成図である。
【図１４】図１０におけるロジックＢＩＳＴ設計に対する回路解析処理フローを示す図である。
【符号の説明】
１０１  遅延情報
１０２  ゲートレベル回路記述
１０３  ＲＴＬ回路記述
１０４  切り替え設定ＤＦＴ情報
１０５  コンパイラ
１０６  回路データベース
１０７  回路解析処理部
１０８  シミュレーションオブジェクト
１０９  シミュレーション処理部
１１０  テストパタン記述
１２１  ＤＦＴ情報入力部
１２２  回路抽出部
１２３  シミュレーション制御部
２０１  半導体集積回路
２０２，２０３  スキャンパス
２０４  組み合わせロジック
３０１  スキャンシフトイネーブル信号
３０２  スキャンシフト・取り込みクロック
３０６  正しくない遅延
３０７  正しい遅延
３２１  コアベースシステムＬＳＩ
３２２  テスト対象コア
３２３  コアのバウンダリおよび内部スキャンパス
３２４  テスト非対象だがスキャンパスが通るコア
３２５  テスト非対象コア
３３１  組み合わせ論理回路
３３２  外部入力端子
３３３  外部出力端子
３３４  スキャンレジスタ
３３５  スキャン入力端子
３３６  スキャン出力端子
３３７  クロック
３４１  組み合わせ回路
３４２  レジスタ
３４３  外部入力
３４４  外部出力
３５１  ＢＩＳＴ制御回路
３５２  外部入力信号
３５３  ＢＩＳＴクロック
３５４  テストパタン生成器
３５５  テストパタン出力
３５６  テスト対象ブロック
３５７  テスト結果出力
３５８  テスト結果解析器
３５９  テスト解析結果
３６１  ＢＩＳＴ回路
３６２  ＢＩＳＴ制御回路
３６３  データ生成器
３６４  アドレス生成器
３６５  制御信号生成器
３６６  メモリ
３６７  制御信号生成器
３６８  制御信号出力
３７１  半導体集積回路
３７３  スキャンパス
３７４  テストパタン発生器
３７５  テスト結果圧縮器
３７６  テスタ
３７９  制御回路
【図１】
2005037995.tif 000003
【図２】
2005037995.tif 000004
【図３】
2005037995.tif 000005
【図４】
2005037995.tif 000006
【図５】
2005037995.tif 000007
【図６】
2005037995.tif 000008
【図７】
2005037995.tif 000009
【図８】
2005037995.tif 000010
【図９】
2005037995.tif 000011
【図１０】
2005037995.tif 000012
【図１１】
2005037995.tif 000013
【図１２】
2005037995.tif 000014
【図１３】
2005037995.tif 000015
【図１４】
2005037995.tif 000016
【手続補正書】
【提出日】平成16年9月21日(2004.9.21)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
半導体集積回路の検証システムにおいて、
対象となる半導体集積回路の回路記述を受け取り、回路データベースを作成するコンパイラと、
前記回路データベースを受け取り、この回路データベースに基づいて、前記半導体集積回路内の回路を解析し、前記回路の抽象度のレベル切り替え時点の決定し、シミュレーションオブジェクトを生成する回路解析部と、
前記シミュレーションオブジェクトを入力して、前記シミュレーションオブジェクトに基づいて前記半導体集積回路のシミュレーションを行うシミュレーション実行部と、
を有することを特徴とする半導体集積回路の検証システム。
【請求項２】
前記回路解析部は、前記半導体集積回路内の各回路の論理、あるいは、故障シミュレーション実行時の抽象度を、回路の内部の状態に対応させて決定し、シミュレーション実行中にそれぞれの回路のレベルをその時点の状態に合わせて切り替えることを特徴とする請求項１記載の半導体集積回路の検証システム。
【請求項３】
前記回路解析部は、シミュレーションが必要な回路部分を抽出することにより、不要部分のレベルをシミュレーション時間が最小になるように決定することを特徴とする請求項１記載の半導体集積回路の検証システム。
【請求項４】
前記回路解析部はシミュレーション時に回路記述の抽象度が切り替えられるブロックに対し、回路の等価性検証を行うことを特徴とする請求項１記載の半導体集積回路の検証システム。
【請求項５】
前記回路解析部は、シミュレーション実行時に前記各ブロックのレベル切り替えのオーバヘッドを計測し、切り替えない方がシミュレーション時間が短縮される部分を抽出し、当該切り替えを行わないようにすることを特徴とする請求項１記載の半導体集積回路の検証システム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２６
【補正方法】変更
【補正の内容】
【００２６】
【課題を解決するための手段】
本願発明の一態様によれば、対象となる半導体集積回路の回路記述を受け取り、回路データベースを作成するコンパイラと、前記回路データベースを受け取り、この回路データベースに基づいて、前記半導体集積回路内の回路を解析し、前記回路の抽象度のレベル切り替え時点の決定し、シミュレーションオブジェクトを生成する回路解析部と、前記シミュレーションオブジェクトを入力して、前記シミュレーションオブジェクトに基づいて前記半導体集積回路のシミュレーションを行うシミュレーション実行部と、を有することを特徴とする半導体集積回路の検証システムが提供される。