(57)【特許請求の範囲】
【請求項１】
コンピュータを用いて、設計記述から有限状態機械（ＦＳＭ）を抽出しテスト検証する電子式設計自動化（ＥＤＡ）方法であって、
電子回路がシリコンに製造される前に該電子回路デザインを設計し、シミュレーションし、そしてテストするＥＤＡツールのためのハードウエア記述言語（ＨＤＬ）データファイルの形式で、前記電子回路のデザインが入力機器を介して前記コンピュータに入力され、この場合、前記ＨＤＬデータファイルが、それぞれが構成と呼ばれる複数のＨＤＬコードラインと、多数の前記構成を含む少なくとも１つのブロックとを有しており、
前記コンピュータが、
前記ＨＤＬデータファイルから複数のＨＤＬコードラインを有したブロックを分割する処理と、
前記複数のＨＤＬコードラインのそれぞれの内部に設けられた任意の変数を識別するための処理と、
前記複数のＨＤＬコードライン内のいずれが前記複数の変数の中の特定の一つに変更できるかを確定し、これを第１の構成セットにグループ化する処理と、
前記複数のＨＤＬコードラインのうちのいずれが前記変数の特定の一つの値に依存しているかを見出し、これを第２の構成セットにグループ化する処理と、
前記第２の構成セット内のＨＤＬコードラインの変数を変更した影響が第１の構成セットのいずれのＨＤＬコードラインに及ぶかを記述した関係データベースを検索することにより、有限状態機械を識別する処理と、
前記第１の構成セット及び前記第２の構成セットに基づき、少なくとも２つの前記変数を識別する処理と、
後の変数の発生に先だって、前記変数の１つが前記複数のＨＤＬコードラインに発生するか、またはそれが前記後の変数を制御する場合、前記変数の１つをＦＳＭ状態変数として分類する処理と、
テスト検証するために、前記ＦＳＭ状態変数のそれぞれを各可能状態のそれぞれの変数に設定するテストベクトルセットを生成する処理と、
テスト検証するために、前記生成されたテストベクトルセットをテストベンチに送る処理と、
前記テストベクトルセットに基づいて前記ＦＳＭ状態変数に対する前記各可能状態のセットを識別する処理と、
前記識別された可能状態セットのいずれかから任意の他の状態への遷移をＦＳＭ状態遷移として識別する処理とを実行する、ことを特徴とする方法。
【発明の詳細な説明】
【０００１】
（技術分野）
本発明は、全体として、電子式設計自動化（ＥＤＡ）環境で生成される回路設計記述を自動的にテストすることに関し、より詳細には、有限状態機械を識別して、ＶｅｒｉｌｏｇまたはＶＨＤＬ環境で回路設計を検査することに関する。
【０００２】
（背景技術）
電子式設計自動化（ＥＤＡ）は、シリコン中に電子回路を製作する前に、電子回路を設計、シミュレートおよびテストするためにコンピュータープログラムを使用するプロセスである。ＶｅｒｉｌｏｇおよびＶＨＤＬは、設計、シミュレートおよびテストのステップで回路を規定するために一般に使用される２つの言語である。回路設計は、実際にデバイスが製作される前に、種々のシミュレーション／エミュレーション・ソフトウェアパッケージによってテストされ、設計上の欠陥が検出されて修正される。製作前に回路設計をテストすることにより、設計会社は、何百万ドルもの回復不可能なエンジニアリングコスト（ＮＲＥ）を節約できる。しかし、回路設計が複雑になるにつれて、同様にテストも複雑になる。システム設計者は、常により短い期限で益々複雑化する回路を設計しテストすることが求められるので、設計者は、より多くの時間を使って設計をテストして、結果として製品の出荷が遅れてしまうこと、または回路部分のみをテストして、結果として設計中に多くの未発見のバグが残るというリスクが高くなってしまうことを選択する必要がある。
【０００３】
市場にある種々のシミュレーションおよび試験装置は、回路設計検査の効率を高めようとするものである。１つのアプローチは、設計シミュレーションプログラムをスピードアップするものである。固有コードシミュレータ、シミュレーション・アクセラレーションおよびチップエミュレーションシステムは、設計シミュレートに費やす時間を低減し、設計の中のすぐ隣のバグの識別に費やされる時間を低減できる。しかし、設計プロセスの早い段階では、設計バグが優勢でありシミュレーションのスピードアップはバグを識別するのにほとんど役立たない。
【０００４】
回路設計をランダムにテストする別のアプローチもある。ランダムテストは、関連する特有のテストベクトルをランダムに生成し、このべクトル使って設計をテストする（または「機能試験する」）。このアプローチでは、ランダムテストに割り当てる時間が増えれば増えるほど、より多くの回路設計をテストできる。ランダムテストは、バグの発見が行き当たりばったりなので時間がかかりリスクを伴うものであり、一般的には回路設計を完全にテストする十分な時間はない。１０または１００倍長いランダムシミュレーションを実行しても検査密度を大幅に高めることはできない。
【０００５】
自動テストパターン発生（ＡＴＰＧ）ツールのような、他のＥＤＡテストツールは、すでに製作された回路の製造欠陥のみを識別するテストを行う。テストは、既知の入力値を連続して回路のピンに印加して、実際の出力値と期待される出力値とを比較することによって行われる。しかし、ＡＴＰＧツールは、回路設計が基本的に正しく、発見されるいずれの異常も製造中に発生するワイヤ破損等の物理的な欠陥によるものであることが想定されている。
【０００６】
カルフォルニア州ロスアルトス（ＬｏｓＡｌｔｏｓ）のＩｎｔｅｒＨＤＬ社で開発されたＶｅｒｉｌｉｎｔ、ミネソタ州セントポールのシミュレーション  テクノロジー社で開発されたＶｅｒｉｃｏｖ、カルフォルニア州パロアルトのシステム  サイエンス社で開発されたＶｅｒａ、およびイスラエルのＶｅｒｉｓｉｔｙ  ｏｆ  Ｙｅｈｕｄ社で開発されたＳｐｅｃｍａｎ等の、他のＥＤＡテストツールは、回路設計を検査するテストベンチに利用し販売し統合することは困難である。
【０００７】
多くの回路設計もまた、複雑でバグ源になる場合が多い有限状態機械（ＦＳＭ）を含む。従って、回路設計者は、一般的にテストプロセスのなるべく早い段階でＦＳＭの動きを全領域で機能試験しようとする。現行のテストツールでは、設計者がテストを開始する前に、回路中の各々のＦＳＭにある各々の状態と遷移を手動で識別して規定する必要がある。
有限状態機械を識別して回路設計テストの効率を高める装置および方法が必要である。
【０００８】
（発明の開示）
本発明は、有限状態機械を識別し、回路設計を検査する方法および装置を提供する。本発明は、回路設計記述の入力、出力、内部変数、有限状態機械（ＦＳＭ）、遷移要素、ブロック、アーク、関心パス要素を自動的に識別してテストを行うものである。
【０００９】
要素を識別するプロセスは、最初に設計記述の構成セットを識別する。次に、構成セットの第１の構成サブセットと、構成のオブジェクトが識別される。オブジェクト値を変更し、あるいはオブジェクト値の変更を制御する構成セット中の第１の構成サブセットが識別される。オブジェクトにより値が直接的にまたは間接的に変更される構成セットの第２の構成サブセットも同様に識別される。識別された構成、オブジェクトおよび第１、第２の構成のサブセットが、リレーショナルデータベースに記憶される。識別および記憶のステップは、構成中の全オブジェクトおよび構成セットの全構成に対して反復される。
【００１０】
設計記述の有限状態機械は、第２のオブジェクト値の変更を制御し、その値が第２のオブジェクトによって直接的にまたは間接的に変更される第１のオブジェクトについてのリレーショナルデータベースを検索することによって識別される。第１のオブジェクトの発生が第２のオブジェクトの発生に先行すれば、第１のオブジェクトがＦＳＭ状態変数として識別される。第２のオブジェクトの発生が第１のオブジェクトの発生に先行すれば、第２のオブジェクトがＦＳＭ状態変数として識別される。ＦＳＭ状態遷移要素は、ＦＳＭ状態変数の許容状態セットの第１の許容状態から第２の許容状態までの遷移として識別される。
【００１１】
本発明を使用するシステムは、設計データベースで設計記述を記憶する。テストジェネレータは、設計記述のどんな有限状態機械要素も識別する。設計データベースから検索される設計記述に基づいて、テストベンチは、シミュレートされた設計を生成する。カバレージ解析ツールは、テストベンチで機能試験がなされるシミュレート設計からの出力データをモニターし、設計のどの要素がテストされるべきかを識別する。テストジェネレータは、テストされていない要素の機能試験のためにテストベンチに送出されるテストベクトルを生成する。
【００１２】
従来技術と比較すると、本発明は、時間とリソースの要求により手動および散発的に実行される設計検査の重要な部分を自動化する点で有利である。本発明は、統合されたプロセスで、設計記述の入力、出力、内部変数、有限状態機械、遷移要素、ブロック、アークおよび関心パス要素を迅速、容易かつ包括的にテストすることを可能にする。結果として、設計者は、シミュレート設計が検査済であるという確信を持って製作に移行することができる。如何なる設計上の欠陥もシミュレート設計が製作される前に発見できるので、何ヶ月もの時間の節約につながる。本発明の全ての態様は、当業者であれば添付の図面、詳細説明および請求の範囲を詳細に検討することで理解できる。
【００１３】
（発明を実施するための最良の形態）
図１は、本発明にかかる有限状態機械（ＦＳＭ）を識別して回路設計を検査する第１の例示的なシステム１００のデータ系統線図である。
システム１００は、設計データベース１０２、カバレージデータベース１０４、テストジェネレータ１０６、テストベンチ１０８およびカバレージ解析ツール１１０を有する。テストベンチ１０８は、シミュレート設計１１２および出力ログデータベース１１４を有する。設計データベース１０２は、回路設計をシミュレートし、テストし、製作するために、別の電子式設計自動化（ＥＤＡ）と共に使用されるＶｅｒｉｌｏｇ、ＶＨＤＬまたはＣ＋＋等の設計言語で典型的にコード化された１つまたはそれ以上の回路設計を含んでいる。
【００１４】
テストを開始する前に、回路設計中のＦＳＭはすべて識別される。ＦＳＭは、同期または非同期のいずれかに分類できる。同期ＦＳＭは、クロック信号に応じて状態間を遷移し、非同期ＦＳＭは、割込みイベントに応じて状態間を遷移する。
ＦＳＭはまた、種々の従来のやり方でコード化できる。「構造スタイル」は、フリップフロップまたはラッチ等の制御された記憶素子という形で回路を規定する。構造スタイルの制御論理は、ＡＮＤ、ＯＲ、ＸＯＲおよびＮＯＴ等の相互接続される基本論理ゲート、および／またはＡＮＤ、ＯＲ、ＮＯＴ，ＸＯＲおよびＱＣＡ等の論理演算子を使用する単純な連続割り当てステートメントとして記述される。ＦＳＭの構造表示がより複雑である場合は、このような表示はＦＳＭ中のロジックの正確なシステム設計を詳細に記述する。
【００１５】
「ＲＴＬスタイル」は、より抽象的で高レベルの記述という形で回路設計を規定する。記憶素子は、フリップフロップ、ラッチまたは高レベルプロセス記述を使用して特定される。制御論理は、ｃａｓｅステートメントやｉｆ−ｔｈｅｎ−ｅｌｓｅステートメントを使用して、高レベルプロセス記述によって記述される。ＦＳＭのＲＴＬ表示は、一般にユーザーが理解し易くかつ設計者が変更し易いものである。しかし、ＲＴＬ表示は、実際の回路システム設計の統合ツールに依存する。統合ツールは、ゲート選択においてより自由度が高いので、その結果としての回路設計は最適に実行されない場合がある。図５、６および７のフローチャートは、ＦＳＭが設計においてどのように識別されるかを詳細に説明するものである。
【００１６】
カバレージデータベース１０４は、回路設計のどの領域がすでに検査（つまりカバー）されているかの記録を含んでいる。カバレージデータベース１０４は、設計の中の全てのブロック、アーク、ＦＳＭ状態およびＦＳＭ遷移をマップ化する。
「ブロック」はコードの一区分であり、コード中の第１の構成が実行されると、次に、コード中の次の構成セットも実行される。この実行された構成のすべては統合してブロックを形成する。
【００１７】
「構成」は、オブジェクト値を変更する、あるいは変更を制御する（すなわち、ｎｅｘｔ＿ｓｔａｔｅ＝Ｓｔａｒｔ）、または特定条件（すなわち、Ｉｆ  ｎｅｘｔ＿Ｓｔａｔｅ＝Ｒｅｓｅｔ  ｔｈｅｎ  Ａ＝０）を調べる全てのコードラインである。認識されたコンピュータ命令を含む全ての別のコードラインも「構成」として規定される。
【００１８】
「アーク」は、コードの２つブロックを連結するコードの一区分である。
「ＦＳＭ状態」は、安定ロジックであり、回路設計のコンフィギュレーション・レジスタである。ＦＳＭ状態は、複数のブロックとアークを含んでいる。
「ＦＳＭ遷移」は、２つの「ＦＳＭ状態」を結合するアークである。ＦＳＭ遷移は、１つまたはそれ以上のブロックを通過してＦＳＭの状態を変える、１つまたはそれ以上のアークによって形成されている。
【００１９】
回路設計の種々のブロックまたは状態が入力され、種々のアークまたは遷移がそれに続くと、カバレージデータベース１０４内のマップが更新される。このマップは、機能試験／テストされたブロック、状態、アークおよび遷移を識別する。カバレージデータベース１０４は、カバレージ解析ツール１１０に結合されている。カバレージ解析ツール１１０は、シミュレート設計１１２に結合され、そこからの出力データを使用して、回路設計のどの領域がすでにテストされているかを確定する。この情報に基づいて、カバレージ解析１１０は、カバレージデータベース１０４を更新する。カバレージ解析ツールは従来公知である。
【００２０】
テストジェネレータ１０６は、設計データベース１０２およびカバレージデータベース１０４からデータを受け取り、シミュレート設計１１２に送出されるテストベクトルセットを生成する。シミュレート設計１１２は、カバレージ解析ツール１１０および出力ログデータベース１１４の両者に送出される出力データを生成する。シミュレート設計１１２は、回路設計の演算特性をモデル化するためのコンピュータ（図示せず）によって実行されるソフトウェア（例えば、ＶｅｒｉｌｏｇまたはＶＨＤＬ）を含んでいる。出力ログデータベース１１４は、他のＥＤＡツール（図示せず）によるその後の解析のために、シミュレート設計１１２からの出力データを記憶する。シミュレート設計１１２を実行するテストベンチ１０８は従来公知である。
【００２１】
テストベクトルを生成する前に、テストジェネレータ１０６は、テストされるべき設計データベース１０２の回路設計の構文と統合力を完全に調べる。テストジェネレータ１０６は、回路設計に何らか構文エラーがあるか否か、および全ての設計を統合できるか否かを示す。次に、テストジェネレータ１０６は、設計記述の全てのマクロおよびデータ構造を展開する。次に、テストジェネレータ１０６は、設計記述を解析し、全ての入力および出力を識別する。テストジェネレータ１０６は設計記述を、アークによって結合される複数の基本ブロックと複合ブロックとして、および遷移によって結合される複数のＦＳＭとして解釈する。この解析から決定樹を生成できる。次に、テストジェネレータ１０６は、他の全てのブロックに独立に回路設計の各ブロックのテスト能力を検査する。「基本ブロック」は、設計記述の中で最も小さい構成要素である。基本ブロックは「構成」に相当し、条件が一致するかまたは計算が生じるかのいずれかで規定される。グループ化された基本ブロックは、複合ブロックを形成する。
【００２２】
連続的なアークセットは「パス」を規定する。典型的な設計記述は、多数のパスを有する。しかし、ユーザがごく限られた数のパスにのみ関心をもつ場合がある。これらは、「関心パス」として規定される。
例えば、以下の設計記述は４つの基本ブロックを含む。
If(a<b) then               1st basic-block/construct
c=a-b                      2nd basic-block/construct
else c=b-a end if          3rd basic-block/construct
result=c*3                 4th basic-block/construct
【００２３】
前述の実施例では、アークは、第１の基本ブロックと第２の基本ブロックとの間、第１の基本ブロックと第３の基本ブロックとの間、第２の基本ブロックと第４の基本ブロックとの間および第３の基本ブロックおよび第４の基本ブロックとの間で規定される。パスは、第２の基本ブロックを通って第１の基本ブロックから第４の基本ブロックまで、および第３の基本ブロックを通って第１の基本ブロックから第４の基本ブロックまで規定される。
【００２４】
テストジェネレータ１０６は、種々のレベルの粒度でブロック、アーク、ＦＳＭ状態およびＦＳＭ遷移をテストすることが好ましい。このようにテストベクトルは、最上位の入力と出力、個々のＦＳＭ状態と遷移、種々の関心パス、複合ブロックと基本ブロック、およびアークのいずれかを機能試験するために生成され得る。テストジェネレータ１０６は、入力、出力、ＦＳＭ，パス、ブロックまたはアーク要素のいずれが次にテストされるべきかの最初の決定によって、テストベクトルを生成する。次に、テストジェネレータ１０６は、シミュレート設計１１２が、その時点でアクティブなブロックからテストが行われていない要素まで遷移するよう、どの変数（オブジェクトとも称される）を設定する必要があるか、またはどのような条件を発生する必要があるかを決定する。このプロセスは、「後方解決」と称される。テストジェネレータ１０６はまた、テストされていない要素を活性化するためにどの活動シーケンスを利用するかを決定する「前方解決」手法を使用できる。一般に、テストジェネレータ１０６は、テストされていない多数の要素を機能試験するテストベクトルを生成することが好ましい。
【００２５】
「アクティブブロック」は、ブロックが次のブロックに制御を渡す前に、設定すべき特定の変数または発生すべき特定の条件を待っているブロックである。典型的な条件は、タイミング制約条件であり、異なる状態へ遷移する別の変数の所定数のクロックパルスで、変数が所定の状態に設定される必要がある。所定値に設定されている変数等の他の条件もまた一般的である。
【００２６】
完全なテストベクトルセットは、テストフレームと称される。テストフレームは、シミュレート設計１１２がテストベクトルによってシミュレートできる、テストベンチ１０８への経路が定められている。それに応じて、出力データセットが、シミュレート設計１１２によって生成され、出力ログデータベース１１４とカバレージ解析ツール１１０とに格納される。
【００２７】
次に、テストジェネレータ１０６は、テストベクトルによって機能試験されてない全てのブロック、アーク、ＦＳＭ状態、ＦＳＭ遷移または関心パスについて、カバレージデータベース１０４を走査する。次に、テストジェネレータ１０６は、後方解決または前方解決のいずれかの方法を使用して、まだテストが行われていない要素を機能試験するための追加のテストベクトルを生成する。
【００２８】
この反復プロセスの間、テストジェネレータ１０６は、カバレージデータベース１０４のデータを使用して、シミュレート設計１１２が全ての所定の入力について所定時間にわたり安定しているか否かを判定する。テストジェネレータ１０６はまた、シミュレート設計１１２がアクセス不能なＦＳＭ状態またはブロック、および行使できない遷移またはアークを含んでいるか否かを記録する。
【００２９】
図２は、有限状態機械を識別して回路設計を検査するための、本発明にかかる第２の例示的なシステムのデータ系統線図である。図１で示した要素に加えて、第２のシステム２００は、機能モデル２０２を有し、テストジェネレータ１０６からのテストベクトルや、シミュレート設計１１２からの出力データを受け取り、出力データの確度を検査するようそれらに結合されている。機能モデル２０２は、シミュレート設計１１２からの出力データと機能モデル２０２によって生成された期待値セットとを比較する。これらの期待値は、テストジェネレータ１０６によって生成されるテストベクトルに応じて、どのように設計記述が作動すべきかを反映することが意図されている。機能モデル２０２は、シミュレート設計１１２からの出力データを正しいか正しくないかのいずれかに分類する。機能モデル２０２はまた、シミュレート設計１１２がテストベクトルに応じて出力データを生成しない状況等の不確定な状況にフラグを立てる。
【００３０】
機能モデル２０２は、シミュレート設計１１２の無サイクル精密モデルである。無サイクル精密モデルは、シミュレーションの各サイクルの間に、シミュレート設計１１２を模倣しようとしないモデルである。機能モデル２０２は、いくつかの方法のうちの１つを使って期待値セットを生成する。例えば、機能モデル２０２は、データベース参照テーブルまたはアルゴリズムとして実現できる。例えば、シミュレート設計は、乗算機能を実現するラッチおよびレジスタに接続される一連のＡＮＤおよびＯＲゲートを規定するための、コマンドセットから構成できるが、機能モデル２０２は、従来のプログラム言語で書かれたプログラムを使って論理乗算のみを実行する。
【００３１】
テストジェネレータ１０６は、機能モデル２０２によって生成された結果を受け取るようこれに結合されており、システム２００内に第２のフィードバックループを生成する。テストジェネレータ１０６は、不正確にまたは不確定に作動する、シミュレート設計１１２の最上位入力および出力、個々のＦＳＭ状態と遷移、種々の関心パス、複合ブロックと基本ブロック、およびアークを局所化して識別するために、シミュレート設計１１２に送出されるテストベクトルを機能モデル２０２からの結果と関連づける。テストジェネレータ１０６は、不正確なまたは不確定な設計要素に焦点をあてた更に詳細な一連のテストを自動生成するようプログラムできる。もしくは、テストジェネレータ１０６は、設計者が手動で更に詳細な一連のテストを生成するのに利用するテスト結果をプリントアウトする。
【００３２】
図３は、有限状態機械を識別し、回路設計を検査する、本発明にかかる第３の例示的なシステム３００のデータ系統線図である。図１で示した要素に加えて、第３のシステム３００は、サイクル精密モデル３０２および出力シーケンスコンパレータ３０４を有する。サイクル精密モデル３０２は、テストジェネレータ１０６からのテストべクトルを受け取るようこれに結合され、シミュレート設計１１２からの出力データをサイクルごとに一致させるよう設計されている。出力シーケンスコンパレータ３０４は、シミュレート設計１１２とサイクル精密モデル３０２の両者からの出力データを受け取るようこれに結合されている。出力シーケンスコンパレータ３０４は、すべてのサイクルの出力データを比較し、シミュレート設計１１２からの出力データが、正しいか正しくないか、または不確定であるかを分類する結果セットを生成する。
【００３３】
テストジェネレータ１０６は、出力シーケンスコンパレータ３０４によって生成された結果を受け取るようこれに結合されており、システム３００内に第２のフィードバックループを生成する。次に、テストジェネレータ１０６は、不正確にまたは不確定に作動する、シミュレート設計１１２の最上位の入力と出力、個々のＦＳＭ状態と遷移、種々のの関心パス、複合ブロックと基本ブロック、およびアークを局所化して識別するために、シミュレート設計１１２に送出されるテストベクトルを出力シーケンスコンパレータ３０４からの結果と関連づける。テストジェネレータ１０６は、不正確または不確定な設計要素に集中する更に詳細な一連のテストを自動生成するように、または設計者が詳細に検討するために結果をプリントアウトするようプログラムされている。
【００３４】
テストジェネレータ１０６、カバレージ解析ツール１１０、シミュレート設計１１２、機能モデル２０２、サイクル精密モデル３０２および出力シーケンスコンパレータ３０４は、コンピュータ（図示せず）上で作動するコンピュータプログラム命令を含むソフトウェアモジュールである。コンピュータは、処理ユニットとメモリを含む。メモリは、処理ユニットがどのようにデータをアクセスし、変換し、出力するかを制御するコンピュータプログラム命令を記憶する。当業者であれば、内部メモリはコンピュータに使用可能な別の記憶媒体で補うことができることを理解できるであろう。
【００３５】
図４は、本発明を使用してテストされる例示的な回路設計４００の線図である。以下に、テストジェネレータ１０６が回路設計をテストするためにどのような方法でテストベクトルセットを生成し、テストジェネレータがどのような方法でテスト結果に応答するかを説明する。例示の回路設計の各々の状態は、１つあるいはそれ以上のブロックと、その状態機能を実行して次の状態を計算する内部アークとで形成されている。
【００３６】
まず最初に、テストジェネレータ１０６は、設計の種々の状態および遷移を識別する。サーキット設計４００は３つの状態（４０１、４０２および４０３）と６つの遷移（４１０、４１１、４１２、４１３、４１４、４１５および４１６）とを有する。遷移４１０は、状態４０２から状態４０２に戻る「セルフ」アークである。この遷移は、状態４０２の「ワーク」が全て完了するまで行われる。遷移４１１および４１２の両者とも状態４０２から状態４０１まで進む。この実施例では、「ワーク」が完了した場合に遷移４１１が行われ、リセット信号が出された場合に遷移４１２が行われる。遷移４１３は、エラーが状態４０２から状態４０３へ送られる場合に行われる。遷移４１４は、新しい「ワーク」が状態４０１から状態４０２へ到達する場合に行われる。遷移４１５は、エラーが状態４０１から状態４０３へ送られる場合に行われる。遷移４１６は、エラーが状態４０３から状態４０１へ処理された後に行われる。
【００３７】
例示の回路設計の各々のＦＳＭ状態、ＦＳＭ遷移、ブロック、アークおよび関心パスをテストするために、テストジェネレータ１０６は、変数を設定するテストベクトルを生成する。テストジェネレータ１０６はまた、所定の関心パスをユーザーからの入力として受け入れる。テストジェネレータ１０６は、一定の条件の発生を警告するようテストジェネレータに指示するアサーション（ａｓｓｅｒｔｉｏｎ）で事前にプログラムできる。
【００３８】
図５は、有限状態機械を識別して回路設計を検査するための方法に関するフローチャートである。この方法は、テストジェネレータ１０６が設計データベース１０２からハードウェア設計記述（典型的にＶｅｒｉｌｏｇやＶＨＤＬ等のハードウェア記述言語による）をインポートするステップ５０２から始まる。テストベンチ１０８は、他のデータベース（図示せず）から参照記述をインポートする。参照記述は随意的に、機能モデル２０２またはサイクル精密モデル３０２ベースを形成する。ステップ５０４で、テストジェネレータ１０６は、設計記述の入力、出力、内部変数、ブロック、アークおよび関心パス要素を識別する。ステップ５０６で、テストジェネレータ１０６は、設計記述のＦＳＭおよび遷移要素を識別する。ステップ５０６は、図６で詳細に説明する。ステップ５０８で、テストジェネレータ１０６は、どの要素がテストされており、どの要素がテストされてないかを示す最新のカバレージデータをカバレージデータベース１０４からインポートする。ステップ５１０で、テストジェネレータ１０６は、設計記述の最新の検査状態を記述するための注釈を生成して設計記述に加える。ステップ５１２で、テストジェネレータ１０６は、テストが行われていない要素を機能試験するテストベクトルセットを生成する。ステップ５１２は、図７で詳細に説明する。ステップ５１４で、テストジェネレータ１０６は、テストベンチ１０８上にシミュレート設計１１２とシミュレート参照とを生成する。シミュレート参照は、機能モデル２０２の第１の部分、もしくはサイクル精密モデル３０２に等しい。ステップ５１６で、テストジェネレータ１０６は、シミュレート設計１１２およびシミュレート参照を機能試験するためのテストベクトルをテストベンチ１０８に送る。ステップ５１８で、機能モデル２０２の第２の部分、もしくは出力シーケンスコンパレータ３０４の第２の部分は、シミュレート設計およびシミュレート参照の両者からの出力データを比較する。ステップ５２０で、出力データセットが等しくない場合、機能モデル２０２の第２の部分（または出力シーケンスコンパレータ３０４の第２の部分）は、バグがシミュレート設計１１２に存在することを報告する。ステップ５２２で、テストジェネレータ１０６は、不正確にまたは不確定に作動するシミュレート設計要素を局所化して識別するために、テストベクトルによって機能試験される要素と、報告ステップ５２０での結果とを関連づける。ステップ５２４で、カバレージ解析ツール１１０は、シミュレート設計１１２のどの要素がテストされてないかを示すようカバレージデータを変更する。ステップ５２６で、テストされるべき要素が残っていれば、プロセスはステップ５０８に戻り、そうでなければこのプロセスは終了する。
【００３９】
図６は、有限状態機械および設計記述（図５のステップ５０６）の遷移要素を識別する方法を示すフローチャートである。この方法は、テストジェネレータ１０６が、設計データベース１０２内の設計記述の構成セットを識別するステップ６０２から始まる。ステップ６０４は、構成セット中の構成を識別する。ステップ６０６は、構成中のオブジェクトを識別する。ステップ６０８は、オブジェクト値を変更するかまたは変更を制御する構成セット中の、第１の構成サブセットを識別する。ステップ６１０は、その値がオブジェクトによって直接的にまたは間接的に変更できる構成セット中の第２の構成サブセットを識別する。ステップ６１２は、この構成の残りの全オブジェクトについてステップ６０６からステップ６１０を反復する。ステップ６１４は、構成セット中の残りの全構成についてステップ６０４からステップ６１２を反復し、リレーショナルデータベースに識別子を記憶する。ステップ６１６は、第２のオブジェクト値を変更するかまたは変更を制御し、かつその値が第２のオブジェクトによって直接的にまたは間接的に変更される第１のオブジェクトについてのリレーショナルデータベースを検索することによって、設計記述のＦＳＭを識別する。ステップ６１８で、第１のオブジェクトの発生が、第２のオブジェクトの発生に先行するかまたは、設計記述の第２のオブジェクト値の変更を制御する場合、この第１のオブジェクトは、ＦＳＭ状態変数として識別される。ステップ６２０は、ＦＳＭ状態変数のための可能状態セットを識別する。ステップ６２２で、可能状態セットからの許容状態セットについてのＦＳＭ状態変数に適用可能な第１の構成サブセットが検査される。次に、ステップ６２４で、許容状態セットの第１の許容状態から第２の状態までの遷移は、ＦＳＭ状態遷移として識別される。ステップ６２６は、リレーショナルデータベースで他の全てのオブジェクトついてステップ６１６からステップ６２４を反復する。この後にこの方法は終了する。
【００４０】
図７は、テストベクトルセット（図５のステップ５１２）を生成する方法についてのステップを示すフローチャートである。まず始めに、ステップ７０２で、テストジェネレータ１０６は、シミュレート設計記述中のどのブロックが現在アクティブな状態にあるかを識別する。システムは、アクティブブロックのデータベースを管理するためにシミュレートシステムを通じて制御およびデータの流れを連続して追跡する。ステップ７０４で、テストジェネレータ１０６は、どの要素がまだテストされてないかを識別するために、カバレージデータベース１０４にアクセスする。ステップ７０６で、テストジェネレータ１０６は、テストが行われていない最大数の要素を機能試験するために、テストベクトルセットを使用して、シミュレート設計１１２に関してどのオブジェクトを設定する必要があり、どの条件を発生する必要があるかを識別する。ステップ７０８で、テストジェネレータ１０６は、識別されたオブジェクトまたは識別された条件を発生するテストベクトルセットを生成する。ステップ７０８の後で、テストベクトルセットを生成するこの方法は終了する。
【００４１】
本発明は、好適な実施形態に関して説明されているが、当業者であれば種々のの変更を行うことができ、本発明が請求の範囲によってのみ限定されることが理解できる。
【図面の簡単な説明】
【図１】  有限状態機械を識別して回路設計を検査する本発明の第１の実施形態のデータ系統線図である。
【図２】  有限状態機械を識別して回路設計を検査する本発明の第２の実施形態のデータ系統線図である。
【図３】  有限状態機械を識別して回路設計を検査する本発明の第３の実施形態のデータ系統線図である。
【図４】  本発明を使用してテストされる例示的なサーキット設計４００の線図である。
【図５】  有限状態機械を識別して回路設計を検査する方法におけるステップのフローチャートである。
【図６】  有限状態機械および設計記述の遷移要素を識別する方法におけるステップのフローチャートである。
【図７】  テストベクトルセットを生成する方法におけるステップのフローチャートである。
【図１】
0003872954.tif 000002
【図２】
0003872954.tif 000003
【図３】
0003872954.tif 000004
【図４】
0003872954.tif 000005
【図５】
0003872954.tif 000006
【図６】
0003872954.tif 000007
【図７】
0003872954.tif 000008