(57)【要約】【課題】入力したテストパターンにおけるカバレッジを算出し、不足しているテストパターンを自動生成しシミュレーションを行い所定のカバレッジを達成する論理シミュレーション装置を得ること。【解決手段】論理シミュレーション装置１０はテストパターン３０に基づいてシミュレーションを実行し、その時のカバレッジをモジュール毎に算出する。モジュール毎に算出したカバレッジが制御ファイル４０で指定された期待のカバレッジに達していない場合には、機能記述ファイル２０の接続情報に基づいて未実行部分の結線からバックトレースし、未実行部分を変化させるプライマリピンを抽出し、そのプライマリピンに対してランダムパターンを生成する。そして、生成したランダムパターンを入力パターンとしてシミュレーションを実行する。このような動作を全てのモジュールが期待のカバレッジに達するまで繰り返す。【選択図】　　　図１
2004054549.tif 000002
【特許請求の範囲】
【請求項１】
テストパターンを用いて半導体集積回路が実現する機能を記述した機能記述ファイルのシミュレーションを行い、前記機能記述ファイルのモジュール毎に対応して前記テストパターンの検証能力を評価するカバレッジを算出する論理シミュレーション装置において、
前記算出したそれぞれのカバレッジが所定の値に達しているか否かを確認し、前記カバレッジが所定の値に達していないモジュール内のシミュレーション値が変化していない箇所につながるポートを抽出し、該抽出したポートを始点として前記機能記述ファイルの接続情報をバックトレースして最上位階層のプライマリピンを抽出し、該プライマリピンに入力するパターンを生成し、該生成したパターンを用いるシミュレーションを実行して再度算出したカバレッジが所定の値に達するまでシミュレーションとパターン生成を繰り返すことを特徴とする論理シミュレーション装置。
【請求項２】
前記パターンを生成する際に、前記カバレッジが所定の値に達していないモジュール内のシミュレーション値が変化していない箇所につながるポートを始点として前記機能記述ファイルの接続情報をバックトレースした時に経由したモジュールのカバレッジに基づいて、前記経由したモジュールに対して重み付けをしてパターンを生成することを特徴とする請求項１に記載の論理シミュレーション装置。
【請求項３】
パターンを生成する際に、前記カバレッジが所定の値に達していないモジュール内のシミュレーション値が変化していない箇所につながるポートを始点として前記機能記述ファイルの接続情報をバックトレースする時に、前記モジュール内の機能動作を解析して前記始点となるポートを変化させる入力の組み合せを決定してパターンを生成することを特徴とする請求項１または２に記載の論理シミュレーション装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半導体集積回路のシミュレーションに関するものであり、特に、入力したパターンのカバレッジを算出し、所定のカバレッジになるようにパターンを生成する論理シミュレーション装置に関するものである。
【０００２】
【従来の技術】
近年、半導体製造の多層配線技術や微細化技術の向上により、半導体集積回路の１チップの搭載ゲート規模も大きくなり、高性能・高機能の半導体集積回路が１チップで実現可能となっている。一方、１チップの搭載ゲート規模が大きくなったことにより、半導体集積回路のテストパターンの作成が大きな問題となっている。たとえば、縮退故障を検出するためには、半導体集積回路内の素子を“Ｌ”と“Ｈ”に変化させ、回路内の配線を全て活性化する必要がある。
【０００３】
しかし、半導体集積回路の規模が大きくなったことにより、使用したテストパターンで半導体集積回路内に存在する不良をどれだけ検出しているのかの判断が困難になってきた。すなわち、設計者が目視で回路内の全ての配線を活性化しているか否かの判断や、活性化されていない配線を見つけ出すことが困難になってきた。
【０００４】
このような問題を改善するための技術として、シミュレーションを実行する時に、論理検証を行うとともにシミュレーションに用いたテストパターンのカバレッジを算出し、テストパターンが半導体集積回路内の配線をどの程度活性化しているかを評価する技術が考えられている。このような従来技術として、特開平１１−８５８２８号公報がある。
【０００５】
特開平１１−８５８２８号公報では、ハードウエア記述言語で記述された半導体集積回路をシミュレータでシミュレーションを行い、その実行過程をトレースデータとして取得し、順序回路の状態遷移を考慮してカバレッジを算出し出力するようにしている。
【０００６】
【発明が解決しようとする課題】
しかしながら、上記従来技術では、算出されたカバレッジが低い場合、すなわち、設計者が希望するカバレッジに達しない場合には、カバレッジを上げるためのテストパターンを再度作成しなければならないという問題がある。
【０００７】
また、希望のカバレッジを実現するためには、テストパターンを設計者が手作業で作成するか、テストパターンを自動生成するＡＴＰＧ（Ａｕｔｏｍａｔｉｃ　Ｔｅｓｔ　Ｐａｔｔｅｒｎ　Ｇｅｎｅｒａｔｏｒ）ツールなどで作成する。そして、そのテストパターンを用いて、シミュレーションを実行しカバレッジを確認する作業を、希望のカバレッジになるまで繰り返さなければならない。そのため、設計時間が長くなるという問題がある。
【０００８】
この発明は上記に鑑みてなされたもので、入力したテストパターンにおけるカバレッジを算出し、不足しているテストパターンを自動生成しシミュレーションを行い所定のカバレッジを達成する論理シミュレーション装置を得ることを目的としている。
【０００９】
【課題を解決するための手段】
上記目的を達成するために、この発明にかかる論理シミュレーション装置は、テストパターンを用いて半導体集積回路が実現する機能を記述した機能記述ファイルのシミュレーションを行い、前記機能記述ファイルのモジュール毎に対応して前記テストパターンの検証能力を評価するカバレッジを算出する論理シミュレーション装置において、前記算出したそれぞれのカバレッジが所定の値に達しているか否かを確認し、前記カバレッジが所定の値に達していないモジュール内のシミュレーション値が変化していない箇所につながるポートを抽出し、該抽出したポートを始点として前記機能記述ファイルの接続情報をバックトレースして最上位階層のプライマリピンを抽出し、該プライマリピンに入力するパターンを生成し、該生成したパターンを用いるシミュレーションを実行して再度算出したカバレッジが所定の値に達するまでシミュレーションとパターン生成を繰り返すことを特徴とする。
【００１０】
この発明によれば、論理シミュレーション装置は、論理シミュレーションを実行してモジュール毎に算出されたカバレッジが所定の値に達していない場合、そのモジュール内のシミュレーション値が変化していない箇所につながるポートを抽出し、抽出したポートを始点として機能記述ファイルの接続情報をバックトレースして最上位階層のプライマリピンを抽出し、抽出したプライマリピンに入力するパターンを生成し、生成したパターンを用いてシミュレーションを実行して再度算出したカバレッジが所定の値に達するまでシミュレーションとパターン生成を繰り返すようにしている。
【００１１】
つぎの発明にかかる論理シミュレーション装置は、上記の発明において、前記パターンを生成する際に、前記カバレッジが所定の値に達していないモジュール内のシミュレーション値が変化していない箇所につながるポートを始点として前記機能記述ファイルの接続情報をバックトレースした時に経由したモジュールのカバレッジに基づいて、前記経由したモジュールに対して重み付けをしてパターンを生成することを特徴とする。
【００１２】
この発明によれば、パターンを生成する際に、カバレッジが所定の値に達していないモジュール内のシミュレーション値が変化していない箇所につながるポートを始点として機能記述ファイルの接続情報をバックトレースした時に経由したモジュールのカバレッジに基づいて、経由したモジュールに対して重み付けをしてパターンを生成するようにしている。
【００１３】
つぎの発明にかかる論理シミュレーション装置は、上記の発明において、パターンを生成する際に、前記カバレッジが所定の値に達していないモジュール内のシミュレーション値が変化していない箇所につながるポートを始点として前記機能記述ファイルの接続情報をバックトレースする時に、前記モジュール内の機能動作を解析して前記始点となるポートを変化させる入力の組み合せを決定してパターンを生成することを特徴とする。
【００１４】
この発明によれば、パターンを生成する際に、カバレッジが所定の値に達していないモジュール内のポートを始点としてバックトレースする時に、前記モジュール内の機能動作を解析して前記始点となるポートを変化させる入力の組み合せを決定してパターンを生成するようにしている。
【００１５】
【発明の実施の形態】
以下に添付図面を参照して、この発明にかかる論理シミュレーション装置の好適な実施の形態を詳細に説明する。
【００１６】
実施の形態１．
図１〜図４を用いて本発明の実施の形態１を説明する。図１は、実施の形態１の論理シミュレーション装置の入出力関連図である。図１において、１０は論理シミュレーション装置、２０は機能記述ファイル、３０はテストパターン、４０は制御ファイル、５０はカバレッジ結果、６０はシミュレーション結果である。
【００１７】
機能記述ファイル２０は、例えば、ＶＨＤＬ（Ｖｈｓｉｃ　Ｈａｒｄｗａｒｅ　Ｄｅｓｃｒｉｐｔｉｏｎ　Ｌａｎｇｕａｇｅ）やＶｅｒｉｌｏｇ−ＨＤＬ（Ｖｅｒｉｌｏｇ　Ｈａｒｄｗａｒｅ　Ｄｅｓｃｒｉｐｔｉｏｎ　Ｌａｎｇｕａｇｅ）などの機能記述言語のＲＴＬ（ｒｅｇｉｓｔｅｒ　ｔｒａｎｓｆｅｒ　ｌｅｖｅｌ）で記述された半導体集積回路の機能記述ファイルである。
【００１８】
テストパターン３０には、機能記述ファイル２０に定義されている回路を検証するための入力信号や観測する出力信号などが記述される。
【００１９】
制御ファイル４０には、テストパターン３０を用いて機能記述ファイル２０のシミュレーションを実行した場合に期待するカバレッジを指定する。具体的には、たとえば、カバレッジをＴｈ％（０＜Ｔｈ≦１００）というように記述し、機能記述ファイル２０で定義されているモジュール毎にＴｈ以上のカバレッジを指定する。また、機能記述ファイル２０で定義されているモジュール名とカバレッジを指定して、モジュール毎にカバレッジを指定するようにしてもよい。
【００２０】
カバレッジ結果５０には、論理シミュレーション装置１０がテストパターン３０を用いて機能記述ファイル２０のシミュレーションを実行した時のカバレッジと論理シミュレーション装置１０が生成したテストパターンを含めたカバレッジが出力される。
【００２１】
シミュレーション結果６０には、テストパターン３０および論理シミュレーション装置１０が生成したテストパターンを用いて機能記述ファイル２０のシミュレーションを実行した結果、すなわち、シミュレーションを実行したときの機能記述ファイル２０に入力したパターンと、そのパターンでシミュレーションを実行した時の制御ファイル４０に記述された観測する出力信号が出力される。
【００２２】
図２のフローチャートを参照して、実施の形態１の論理シミュレーション装置の動作を説明する。論理シミュレーション装置１０は、テストパターン３０の入力パターンに基づいて、シミュレーションを実行する（ステップＳ１００）。具体的には、テストパターン３０に記述されている入力パターンにより機能記述ファイル２０のプライマリピンの値を検出する。検出した値が変化すると、論理シミュレーション装置１０は、機能記述ファイル２０の接続情報に基づいてその信号を伝達する。入力パターンの変化が構造記述されたモジュールに到達すると、その構造記述で定義された論理に基づいてモジュールの論理出力を決定する。論理シミュレーション装置１０は、機能記述ファイル２０に定義されている接続情報に基づいて決定した論理出力を伝達する。論理シミュレーション装置１０は、決定した論理出力を伝達する際に、その接続情報の結線に対応させてその論理出力の値を記憶する。そして、論理出力が伝達され入力ポートが変化するモジュールについて同様の動作を行い、外部出力ポートにその変化が到達するまでその動作を繰り返す。そして、シミュレーション結果６０にその結果を出力する。
【００２３】
このようにしてテストパターン３０に定義されている入力パターンのシミュレーションが全て終了すると、論理シミュレーション装置１０は、カバレッジを算出する（ステップＳ１１０）。算出方法の一例として、具体的には、機能記述ファイル２０で定義されたモジュール毎に、シミュレーション時に機能記述ファイル２０の接続情報の結線に対応して記憶した論理出力が“Ｌ”と“Ｈ”の両方の値に変化したか否かを判定する。対象とするモジュール内の結線の数を分母に“Ｌ”と“Ｈ”に変化した結線の数の割合を算出する。算出した値が、そのモジュールのカバレッジとなる。論理シミュレーション装置１０は、カバレッジ結果５０に算出したモジュール毎のカバレッジを出力する。
【００２４】
論理シミュレーション装置１０は、モジュール毎に算出したカバレッジと制御ファイル４０に指定された期待するカバレッジとを比較する（ステップＳ１２０）。その結果、算出したカバレッジが期待するカバレッジに達していない場合、論理シミュレーション装置１０は、そのモジュールの未実行部分の結線に接続されているポートを抽出する（ステップＳ１３０）。すなわち、シミュレーション時に機能記述ファイル２０の接続情報の結線に対応して記憶した論理出力が“Ｌ”と“Ｈ”のどちらか一方の値しかなかった結線から機能記述ファイル２０の接続情報をバックトレースしてモジュールの入力ポートを抽出する。図３の出力ポートｏｕｔが抽出された場合を例に挙げてバックトレースの動作を説明する。論理シミュレーション装置１０は、機能記述ファイル２０の接続情報から、出力ポートｏｕｔが接続されているフリップフロップ７２の出力ポートＱを検索する。
つぎに、検索したフリップフロップ７２の入力ポートＤが接続されているフリップフロップ７１を検索する。そして、その接続情報の結線ｗ４を記憶する。このように論理シミュレーション装置１０はモジュールの入力ポートに到達するまで、機能記述ファイル２０の接続情報をバックトレースする。図３の場合には、「出力ポートｏｕｔ、結線ｗ４、結線ｗ３、結線ｗ１、入力ポートｉｎ１」、「出力ポートｏｕｔ、結線ｗ４、結線ｗ３、結線ｗ１、入力ポートｉｎ２」、「出力ポートｏｕｔ、結線ｗ４、結線ｗ３、結線ｗ２、入力ポートｉｎ３」、「出力ポートｏｕｔ、結線ｗ４、結線ｗ３、結線ｗ３、入力ポートｉｎ４」の４通りがバックトレースされる。
【００２５】
論理シミュレーション装置１０は、抽出したモジュールの入力ポートからプライマリピンへバックトレースを行う（ステップＳ１４０）。たとえば、図４に示すように、最上位の階層であるモジュールＴＯＰ内にモジュールＵ１〜Ｕ４の４つのモジュールが存在する場合を例に挙げてプライマリピンへのバックトレースの動作を説明する。最上位の階層であるモジュールＴＯＰ内のモジュールＵ２には入力ポートａ，ｂ，ｃがある。このうち入力ポートａがモジュールの未実行部分の結線に接続されているポートとして抽出されたとする。論理シミュレーション装置１０は、機能記述ファイル２０のモジュールＴＯＰの接続情報を検索して、モジュールＵ２の入力ポートａの接続情報の結線ｗ５を抽出する。そして、その結線ｗ５に接続されているモジュールＵ１の出力ポートｅを抽出する。さらに、論理シミュレーション装置１０は、モジュールＵ１の出力ポートｅの変化に影響を与えるモジュールＵ１の入力ポートｄを抽出し、その入力ポートｄの接続情報の結線ｗ６からプライマリピンＩ１を抽出する。すなわち、図４の場合、論理シミュレーション装置１０は、モジュールＵ２の入力ポートａを始点として、モジュールＵ２の入力ポートａ、結線ｗ５、モジュールＵ１の出力ポートｅ、モジュールＵ１の入力ポートｄ、結線ｗ６の順に機能記述ファイル２０の接続情報をバックトレースしプライマリピンＩ１を抽出する。なお、バックトレースして抽出するプライマリピンは１本に限るものではなく、複数本でもかまわない。
【００２６】
論理シミュレーション装置１０は、抽出したプライマリピンに対して、所定のパターン数のランダムパターンを生成する（ステップＳ１５０）。そして、生成したランダムパターンを入力パターンとして、シミュレーションを実行する（ステップＳ１００）。論理シミュレーション装置１０は、生成したランダムパターンを入力として実行したシミュレーション後のカバレッジを再度算出し、全てのモジュールが期待のカバレッジになるまで上述した動作を繰り返す（ステップＳ１００〜Ｓ１６０）。
【００２７】
このようにこの実施の形態１では、論理シミュレーション装置１０はテストパターン３０に基づいてシミュレーションを実行し、その時のカバレッジをモジュール毎に算出する。モジュール毎に算出したカバレッジが制御ファイル４０で指定された期待のカバレッジに達していない場合には、機能記述ファイル２０の接続情報に基づいて未実行部分の結線からバックトレースし、未実行部分を変化させるプライマリピンを抽出し、そのプライマリピンに対してランダムパターンを生成する。そして、生成したランダムパターンを入力パターンとしてシミュレーションを実行する。このような動作を全てのモジュールが期待のカバレッジに達するまで繰り返すようにしているため、設計者が作成したテストパターン３０が機能記述ファイル２０の検証を行うために不十分な場合でも、自動的に不足分のパターンを生成し、カバレッジを上げることができる。これにより、設計者が不足分のパターンを生成する時間が短縮され、設計効率を向上させることができる。
【００２８】
実施の形態２．
図５および図６を用いて本発明の実施の形態２を説明する。実施の形態２の論理シミュレーション装置の構成および入出力関連図は図１に示すものと同様となるので、ここではその説明を省略する。
【００２９】
図５のフローチャートを参照して、実施の形態２の論理シミュレーション装置の動作を説明する。論理シミュレーション装置１０がテストパターン３０に基づいてシミュレーションを実行してカバレッジを算出し、そのカバレッジの結果と制御ファイル４０に指定された期待のカバレッジを比較し、機能記述ファイル２０に基づき未実行部分に接続するポートからプライマリピンを抽出するＳ１００〜Ｓ１４０については、実施の形態１と同じ動作であるので、詳細な説明を省略する。
【００３０】
論理シミュレーション装置１０は、テストパターン３０に基づいてシミュレーションを実行してカバレッジを算出し、そのカバレッジの結果と制御ファイル４０に指定された期待のカバレッジを比較し、機能記述ファイル２０に基づき未実行部分に接続するポートからプライマリピンを抽出する（ステップＳ１００〜Ｓ１４０）。
【００３１】
ここで、図６に示すように、最上位の階層であるモジュールＴＯＰ内にモジュールＵ１〜Ｕ４の４つのモジュールが存在する場合を例に挙げて説明する。最上位の階層であるモジュールＴＯＰ内のモジュールＵ２には入力ポートａ，ｂがある。このうち入力ポートａがモジュールの未実行部分の結線に接続されているポートとして抽出されたとする。論理シミュレーション装置１０は、機能記述ファイル２０のモジュールＴＯＰの接続情報を検索して、モジュールＵ２の入力ポートａの接続情報の結線ｗ７を抽出する。結線ｗ７で接続されているポートはモジュールＵ１の出力ポートｆ，モジュールＵ３の出力ポートｊ，モジュールＵ２の入力ポートａ，モジュールＵ４の入力ポートｋの４ポートである。これらのポートのうちモジュールＵ２の入力ポートａを変化させるのは出力ポートであるので、論理シミュレーション装置１０は、モジュールＵ１の出力ポートｆとモジュールＵ３の出力ポートｊを抽出する。そして、モジュールＵ１の出力ポートｆの変化に影響を与えるモジュールＵ１の入力ポートｃ，ｄから結線ｗ８，ｗ９とバックトレースしてプライマリピンＩ１，Ｉ２を抽出する。同様にして、モジュールＵ３の出力ポートｊの変化に影響を与えるモジュールＵ３の入力ポートｇ，ｈ、結線ｗ１０，ｗ１１とバックトレースしてプライマリピンＩ３，Ｉ４を抽出する。すなわち、未実行部分に接続したモジュールＵ２の入力ポートａを始点に「モジュールＵ２の入力ポートａ，結線ｗ７，モジュールＵ１の出力ポートｆ，モジュールＵ１の入力ポートｃ，結線ｗ８，プライマリピンＩ１」、「モジュールＵ２の入力ポートａ，結線ｗ７，モジュールＵ１の出力ポートｆ，モジュールＵ１の入力ポートｄ，結線ｗ９，プライマリピンＩ２」、「モジュールＵ２の入力ポートａ，結線ｗ７，モジュールＵ３の出力ポートｊ，モジュールＵ３の入力ポートｇ，結線ｗ１０，プライマリピンＩ３」、「モジュールＵ２の入力ポートａ，結線ｗ７，モジュールＵ３の出力ポートｊ，モジュールＵ３の入力ポートｈ，結線ｗ１１，プライマリピンＩ４」がバックトレースされ、プライマリピンＩ１〜Ｉ４が抽出される。論理シミュレーション装置１０は、機能記述ファイル２０の接続情報をバックトレースする際に、経由したモジュール（この場合モジュールＵ１，Ｕ３）のカバレッジを記憶する（ステップＳ２００）。
【００３２】
論理シミュレーション装置１０は、抽出したプライマリピンに対して、接続情報をバックトレースする際に経由したモジュールのカバレッジに基づき重み付けを行い、所定のパターン数のランダムパターンを生成する（ステップＳ２１０）。具体的には、たとえば、図６に示したプライマリピンＩ１〜Ｉ４に対してランダムパターンを生成する際に、モジュールＵ１のカバレッジが８０％、モジュールＵ３のカバレッジが４０％であったとする。この場合、モジュールＵ３に接続されているプライマリピンＩ３，Ｉ４に対するパターンをモジュールＵ１に接続されているプライマリピンＩ１，Ｉ２に対するパターンの２倍にするという重み付けをする。そして、生成したランダムパターンを入力パターンとして、シミュレーションを実行する（ステップＳ１００）。論理シミュレーション装置１０は、生成したランダムパターンを入力として実行したシミュレーション後のカバレッジを再度算出し、全てのモジュールが期待のカバレッジになるまで上述した動作を繰り返す（ステップＳ１００〜Ｓ１４０，Ｓ２００，Ｓ２１０，Ｓ１６０）。
【００３３】
このようにこの実施の形態２では、論理シミュレーション装置１０が未実行部分に接続するポートから機能記述ファイル２０の接続情報をバックトレースしてプライマリピンを抽出する際に経由したモジュールのカバレッジを記憶しておき、それらのカバレッジに基づきランダムパターンを生成する重み付けを決定するようにしている。これにより、未実行部分に接続するポートのモジュールのカバレッジを上げるパターンを作成するとともに、そのパターンを用いる途中のモジュールのカバレッジも上げることができ、効率よいパターンを生成することができる。さらに、カバレッジを上げるためのパターン数が減少することにより、シミュレーション時間が短縮され、設計効率を高めることができる。
【００３４】
実施の形態３．
図７〜図８を用いて本発明の実施の形態３を説明する。実施の形態３の論理シミュレーション装置の構成および入出力関連図は図１に示すものと同様となるので、ここではその説明を省略する。
【００３５】
図７のフローチャートを参照して、実施の形態３の論理シミュレーション装置の動作を説明する。論理シミュレーション装置１０がテストパターン３０に基づいてシミュレーションを実行してカバレッジを算出し、そのカバレッジの結果と制御ファイル４０に指定された期待のカバレッジを比較し、機能記述ファイル２０に基づき未実行部分に接続するポートを抽出するＳ１００〜Ｓ１３０については、実施の形態１と同じ動作であるので、詳細な説明を省略する。
【００３６】
論理シミュレーション装置１０は、テストパターン３０に基づいてシミュレーションを実行してカバレッジを算出し、そのカバレッジの結果と制御ファイル４０に指定された期待のカバレッジを比較し、機能記述ファイル２０に基づき未実行部分に接続するポートを抽出する（ステップＳ１００〜Ｓ１３０）。
【００３７】
論理シミュレーション装置１０は、構造解析を行い抽出したポートに影響を与えるモジュールの入力ポートを抽出し、抽出した入力ポートを組み合せて未実行部分に接続するポートを変化させるパターンを抽出する（ステップＳ３００）。
具体的には、たとえば、図８に示す回路の出力ポートｏｕｔが未実行部分であった場合、「出力ポートｏｕｔ，結線ｗ２，結線ｗ１，入力ポートｉｎ１」、「出力ポートｏｕｔ，結線ｗ２，結線ｗ１，入力ポートｉｎ２」、「出力ポートｏｕｔ，結線ｗ２，結線ｗ１，入力ポートｉｎ３」、「出力ポートｏｕｔ，結線ｗ２，結線ｗ１，２ビットの入力ポートｓｅｌ１」の４通りがバックトレースされる。これにより、入力ポートｉｎ１〜３と入力ポートｓｅｌ１を抽出する。さらに、論理シミュレーション装置１０は、機能記述ファイル２０に記述されている対象のモジュールの構造記述を解析し、出力ポートｏｕｔの信号に影響を与えるモジュールの入力ポートを検索する（ステップＳ３１０）。出力ポートｏｕｔはフリップフロップ７３の出力ポートＱの信号が伝達されている。したがって、フリップフロップ７３の構造解析を行い、フリップフロップ７３の出力ポートＱが、フリップフロップ７３のクロックＣＫとリセットＲとに影響されることを検出する。そして、フリップフロップ７３のクロックＣＫと接続されているモジュールの入力ポートｃｌｋと、フリップフロップ７３のリセットＲに接続されているモジュールの入力ポートｒｓｔを抽出する。そして、抽出した入力ポートｉｎ１〜ｉｎ３，ｓｅｌ１，ｃｌｋ，ｒｓｔを組み合せて、機能記述ファイル２０に記述された対象モジュールの動作にしたがって出力ポートｏｕｔが“Ｌ”と“Ｈ”に変化するパターンを抽出する。
【００３８】
論理シミュレーション装置１０は、機能記述ファイル２０の接続情報に基づき、構造解析を行い抽出したポートに影響を与えるモジュールの入力ポートが接続されている１つ上位のモジュールのポートを抽出する（ステップＳ３２０）。そして、構造解析を行い抽出したポートに影響を与えるモジュールの入力ポート（図８の場合、入力ポートｉｎ１〜３，ｓｅｌ１，ｃｌｋ，ｒｓｔ）が抽出した信号の組み合わせになるようなパターンを抽出する（ステップＳ３３０）。
【００３９】
論理シミュレーション装置１０は、最上位の階層のプライマリピンに到達するまで、１階層下位の階層で抽出されたパターンを実現するパターンを抽出する動作を繰り返す（ステップＳ３１０〜Ｓ３４０）。
【００４０】
論理シミュレーション装置１０は、最上位の階層まで到達しプライマリピンのパターンを抽出すると、そのパターンを入力としてシミュレーションを実行し、シミュレーション後のカバレッジを再度算出し、全てのモジュールが期待のカバレッジになるまで上述した動作を繰り返す（ステップＳ１００〜Ｓ１３０，Ｓ３００〜Ｓ３４０，Ｓ１６０）。
【００４１】
このようにこの実施の形態３では、論理シミュレーション装置１０が未実行部分に接続するポートから機能記述ファイル２０の接続情報をバックトレースしてプライマリピンを抽出する際に、それぞれのモジュールの構造解析を行い、未実行部分に接続するポートを確実に“Ｌ”と“Ｈ”に変化させるパターンを上位階層に向かって順に求めていくようにしているため、確実にカバレッジを上げるパターンを生成することができる。
【００４２】
なお、機能記述ファイル２０はＲＴレベルに限るものではなく、たとえば、論理合成を行った後のネットリストや、レイアウト後のネットリストでもかまわない。
【００４３】
また、実施の形態１〜３では、全てのモジュールに対してカバレッジを算出し、未実行部分に接続されるポートを抽出するようにしたが、制御ファイル４０にモジュール名を指定することで、特定のモジュールだけを対象にして動作させるようにしてもよい。
【００４４】
さらに、実施の形態１〜３で説明した論理シミュレーション装置１０の動作は独立しているものではなく、組み合せて動作させることも可能である。たとえば、制御ファイル４０にモジュール名またはプライマリピンに対応させて論理シミュレーション装置１０の動作モードを指定するようにして、モジュールまたはプライマリピン毎にパターンの生成の動作を指定できるようにする。
【００４５】
【発明の効果】
以上説明したように、この発明によれば、論理シミュレーション装置は、論理シミュレーションを実行してモジュール毎に算出されたカバレッジが所定の値に達していない場合、そのモジュール内のシミュレーション値が変化していない箇所につながるポートを抽出し、抽出したポートを始点として機能記述ファイルの接続情報をバックトレースして最上位階層のプライマリピンを抽出し、抽出したプライマリピンに入力するパターンを生成し、生成したパターンを用いるシミュレーションを実行して再度算出したカバレッジが所定の値に達するまでシミュレーションとパターン生成を繰り返すようにしているため、設計者が作成したテストパターンが機能記述ファイルの検証を行うために不十分な場合でも、自動的に不足分のパターンを生成し、カバレッジを上げることができる。
【００４６】
つぎの発明によれば、パターンを生成する際に、カバレッジが所定の値に達していないモジュール内のシミュレーション値が変化していない箇所につながるポートを始点として機能記述ファイルの接続情報をバックトレースした時に経由したモジュールのカバレッジに基づいて、経由したモジュールに対して重み付けをしてパターンを生成するようにしているため、シミュレーション値が変化していないポートのモジュールのカバレッジを上げると同時に途中のモジュールのカバレッジも上げることができ、効率よいパターンを生成することができる。
【００４７】
つぎの発明によれば、パターンを生成する際に、カバレッジが所定の値に達していないモジュール内のポートを始点としてバックトレースする時に、前記モジュール内の機能動作を解析して前記始点となるポートを変化させる入力の組み合せを決定してパターンを生成するようにしているため、無駄なく最低限のパターンで確実にカバレッジを上げるパターンを生成することができる。
【図面の簡単な説明】
【図１】本発明にかかる論理シミュレーション装置の入出力関連図である。
【図２】実施の形態１の論理シミュレーション装置の動作を説明するためのフローチャートである。
【図３】実施の形態１のバックトレース動作を説明するための図である。
【図４】実施の形態１のバックトレース動作を説明するための図である。
【図５】実施の形態２の論理シミュレーション装置の動作を説明するためのフローチャートである。
【図６】実施の形態２のバックトレース動作を説明するための図である。
【図７】実施の形態３の論理シミュレーション装置の動作を説明するためのフローチャートである。
【図８】実施の形態３のバックトレース動作を説明するための図である。
【符号の説明】
１０　論理シミュレーション装置、２０　機能記述ファイル、３０　制御ファイル、５０　カバレッジ結果、６０　シミュレーション結果、７１，７２，７３，７４　フリップフロップ。
【図１】
2004054549.tif 000003
【図２】
2004054549.tif 000004
【図３】
2004054549.tif 000005
【図４】
2004054549.tif 000006
【図５】
2004054549.tif 000007
【図６】
2004054549.tif 000008
【図７】
2004054549.tif 000009
【図８】
2004054549.tif 000010