(57)【特許請求の範囲】
【請求項１】
ＬＳＩの論理検証用テストプログラム生成装置において，
設計の対象となるＬＳＩのシステムを構成する各モジュールの内部動作及び入出力をハードウェア記述言語で表した記述に基づいてシステム全体とモジュール間の連結状況を定義したブロック図を作成するブロック図作成手段と，
前記ブロック図作成手段で作成されたブロック図に示す各モジュール間についてそれぞれで受渡しする一連のメッセージを表現するシーケンス図を作成するシーケンス図作成手段と，
前記シーケンス図作成手段で作成された各モジュール間に対応する複数のシーケンス図を重ね合わせて複数のシーケンスを連結した新たなシーケンスを生成して検証を行うシーケンス図重ね合わせ検証手段と，
前記シーケンス図重ね合わせ検証手段により検証したモジュールを対象にしたテストプログラムを生成するテストプログラム生成手段と，
を備えることを特徴とする論理検証用テストプログラム生成装置。
【請求項２】
請求項１において，
前記シーケンス図重ね合わせ検証手段による前記シーケンス図を重ね合わせたシーケンスについて，検証したいモジュールを入出力に対応して分割してサブモジュールを生成するモジュール分割手段を設け，
前記テストプログラム生成手段は前記モジュール分割手段により分割した各モジュールを対象としてテストプログラムを生成することを特徴とする論理検証用テストプログラム生成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はハードウェア設計における論理検証用テストプログラム生成装置に関する。
【０００２】
情報処理システムを構成する複数のモジュールで構成するＬＳＩのハードウェアとして競争力の高いものを市場に提供するには，信頼性が高く，コスト／パフォーマンスを低く，早期に要求されたものを設計する等の要求を満たす必要がある。そのため，設計規模の大規模化，設計期間の短縮化が要求されている。
【０００３】
これを実現するため，信頼性の高い論理検証を短期間で行なう必要があり，現在ハードウェア設計の論理検証手法として論理シミュレーションが一般的に用いられている。
【０００４】
従って，ハードウェア設計において信頼性の高い論理検証用テストプログラムを短期間で作成することが望まれている。
【０００５】
【従来の技術】
図１４は従来技術の説明図である。
【０００６】
サーバ系マシーン等のような複数のＣＰＵと，メモリ，データ転送のコントローラ，外部との高速のインタフェース等を含む大規模のＬＳＩチップを作成する場合，先ずＬＳＩの設計者８１は，仕様書８０に規定されたＬＳＩに対する要求機能や性能を満たすように，ＬＳＩの論理設計を行なう。この場合の要求機能としては，例えば，メッセージを入力してこれに応答してどのような出力メッセージを発生させたいか，というものが含まれる。大規模または複雑な機能が要求されるＬＳＩの場合，複数の設計者がそれぞれが担当する範囲を決めて個別に設計を行うのが一般的である。複数の設計者により設計されたＬＳＩの設計回路を集めて設計データ８２が得られると，検証者８３に渡される。
【０００７】
検証者８３は設計データ８２が仕様書により要求された機能や性能を満たすか否かを検証するための複数の検証項目８３０を作成する。次に各検証項目８３０に対応する回路機能を模擬するシミュレータ８３１を作成し，更にシミュレータ８３１により実行されるテストプログラム８３２を作成する。この時，シミュレータ８３１でのテストプログラム８３２によるテストの結果得られる期待値８３３を作成する。このようにして作成された，シミュレータにより，設計されたＬＳＩの回路について，テストプログラム８３２を用いたシミュレータ８３１によるテストを行って，得られた結果が期待値８３３と一致するか比較して，一致すれば正しいものと判定され，一致しないと設計した回路に論理的な誤りがあると判定する。このシミュレータ８３１による判定の動作により，どの部分に誤りがあるかを検出することも可能であり，誤りの判定が発生しない場合には設計が正しいことが確認できる。なお，設計者による設計作業と検証者による検証は，実際には並行して行うことが多い。
【０００８】
このように，従来の技術では，仕様書にはシステム全体の仕様は記述されていても，モジュール間のインタフェース仕様が不明瞭な場合がある。従って，インタフェース仕様を十分に意識したテストプログラムを作成するには，仕様書からインタフェースを推測し，また設計者にインタフェース仕様をインタビューにより問いただして明確にする作業が必要であった。
【０００９】
また，検証者は過去のノウハウに基づいて，仕様書から設計誤りが起こりそうな部分（検証項目）を抽出して，テストプログラムを人手で作成しており，テストプログラムを作成する系統的な手順が確立されていない。
【００１０】
【発明が解決しようとする課題】
上記したように従来の技術ではモジュール間のインタフェース仕様が不明確な仕様書では，インタフェース仕様を十分に意識したテストプログラムを作成することが困難である。
【００１１】
また，システムの大規模化に伴い，システム検証用テストプログラムの生成工数が，システム設計工数全体に対して占める割り合いが大きくなりつつあるという問題があった。
【００１２】
更に，最近システム全体で満たすべき仕様をモジュール毎に分割したモジュール検証が提案されているが，その際にもインタフェース仕様が不明確な仕様書ではモジュール検証を行なうための高品質なテストプログラムを作成することが困難である。
【００１３】
本発明はインタフェース仕様を明確にしてモジュール検証を行うためのテストプログラムを系統的に生成することができる論理検証用テストプログラム生成装置を提供することを目的とする。
【００１４】
【課題を解決するための手段】
図１は本発明の原理構成を示す。図中，１０は設計されるＬＳＩチップのシステムを構成する各モジュールの記述作成手段，１１はブロック図作成手段，１２はシーケンス図作成手段，１３はシーケンス図重ね合わせ検証手段，１４はテストプログラム生成手段，２０〜２３は記憶部であり，２０はモジュールの記述を格納する記憶部，２１はブロック図を格納する記憶部，２２は各シーケンス図を格納する記憶部，２３はテストプログラムを格納する記憶部である。
【００１５】
本発明はＬＳＩチップのシステム全体で発生する複数のシーケンスをフォーマル（図解を用いた表現形式）に記述して，設計者以外の人が見てもその意味を直ちに理解できるように記述し，検証対象であるモジュールの入出力を系統的に抽出して，ＬＳＩチップを検証するテストパターンの作成を可能とするものである。
【００１６】
各モジュールの記述作成手段１０では，従来は自然言語で記述されていた各モジュールの内部動作やモジュールの入出力の記述を，ハードウェア記述言語を用いたモジュールの記述が作成されて記憶部２０に格納される。このモジュールの記述について次にブロック図作成手段１１によりシステム全体とモジュールとモジュール間の連結状況を定義したブロック図が作成されて記憶部２１に格納される。続いて，シーケンス図作成手段１２によりブロック図で示すハードウェア内部の各モジュール間で受渡しする一連のメッセージ（シーケンス）を表現するシーケンス図を各モジュール間について複数個作成して記憶部２２に格納する。こうして得られた複数のモジュール間の各シーケンス図についてシーケンス図重ね合わせ検証手段１３の動作により重ね合わせる処理を行う。この重ね合わせにおいて矛盾が生じると，シーケンスが間違っていることが分かり，設計誤りを発見することができる。このシーケンス図重ね合わせ検証手段１３によるチェックと修正を経て，テストプログラム生成手段１４により注目するモジュールについてテストプログラムを生成して記憶部２３に格納する。このようにして，テストプログラムを生成する工数を削減し，検証したいモジュールに注目した検証が可能となる。
【００１７】
図２は本発明の第２の原理構成を示す。図中，１０〜１４は上記図１と同じものであり，説明を省略する。図１と異なる点はモジュール分割手段１５と，分割されたサブモジュールを格納する記憶部２４を設けた点である。
【００１８】
図２において，１０〜１３までの動作は上記図１と同じであり，複数のモジュール間の各シーケンス図についてシーケンス図重ね合わせ検証手段１３の動作により重ね合わせる処理が行われるが，この第２の原理によるモジュール分割手段１５によりシーケンスの中で特に検証したいモジュールをサブモジュールに分割して記憶部２４に格納する。次いでこの分割されたサブモジュールへの入出力を抽出し，テストプログラム生成手段１４により分割したサブモジュール検証用のテストプログラム生成して記憶部２３に格納する。
【００１９】
この第２の原理構成により分割した検証したいモジュールに注目したテストプログラムを系統的に生成することができる。
【００２０】
【発明の実施の形態】
本発明は情報処理装置のソフトウェアにより実現することができ，図３は実施例１の処理フローである。
【００２１】
最初に，設計の対象となるＬＳＩの設計仕様に基づいて，ハードウェア記述言語（ＨＤＬ：Hardware Discription Language)を用いて各モジュールの内部動作や各モジュールの入出力を記述した入力を行う（図３のＳ１）。次に前記の記述からシステム全体とシステム内部のモジュール間の連結状況を表すブロック図の作成を行う（図３のＳ２）。
【００２２】
次に図３の処理では，モジュール間で受渡しするメッセージを用いてシステム全体で流れるシーケンスを作成する（図３のＳ３）。この処理の詳細は，次の３つのステップＳ３０〜Ｓ３２により構成される。すなわち，シーケンス長さは乱数で指定し（図３のＳ３０），シーケンスが始まるモジュールは乱数で指定し（同Ｓ３１），出力メッセージとモジュールの次状態は入力メッセージとモジュールの現状態で一意に決まる（同Ｓ３２）。
【００２３】
この後，シーケンス図の重ね合わせを行う（図３のＳ４）。この処理の詳細は３つのステップＳ４０〜Ｓ４２により構成される。すなわち，あるシーケンスにおいて，入力メッセージに依存しないでモジュール状態が変化する部分に注目する（図３のＳ４０）。続いて，他のシーケンスにおいて前記の注目した状態変化が起こるシーケンスを見つけ（同Ｓ４１），先の２つのシーケンスを連結して，複数のシーケンスが並行して流れる新しいシーケンスを生成する（同Ｓ４２）。
【００２４】
次いで，シーケンスを重ね合わせた場合における検証したいモジュールに注目したテストプログラムを生成する（図３のＳ５）。
【００２５】
図４は実施例１による対象となるＬＳＩのブロック図の例を示す。このブロック図は上記図３のＳ２により作成され，この例では，モジュールＡ，モジュールＢ，モジュールＣ及びモジュールＤとで構成され，各モジュールの入出力の関係がモジュール相互間を結ぶ矢印を付した線により表されており，モジュールの内部動作については省略されている。
【００２６】
図５はモジュール間で受渡しする一連のメッセージ（シーケンス）を表現した例であり，上記図４のブロック図の例について，上記図３のＳ３（Ｓ３０〜Ｓ３２）により生成される。まず，シーケンスの長さは８（乱数で指定），シーケンスで始まるモジュールはモジュールＢとし（乱数で指定），出力メッセージとモジュールの次状態は，入力メッセージとモジュールの現状態に応じて一意に決まる。例えば，モジュールＢにおいて，入力メッセージｑ１とモジュールの現状態ｓ１によって，出力メッセージｑ２とモジュールの次状態ｓ１が一意に決まる。
【００２７】
図６乃至図８は注目する部分が状態変化する他のシーケンス図（その１）〜（その３）であり，図９乃至図１１は重ね合わせたシーケンス図（その１）〜（その３）である。
【００２８】
図５乃至図１１を用いてシーケンス図の重ね合わせ（図３のＳ４に対応）の例を説明する。上記図５に示すシーケンス図において，入力メッセージによらずに状態が変化している部分に注目する（図３のＳ４０に対応）。この図５の例では，Ａ１，Ｂ１，Ｃ１として表す部分を注目する。
【００２９】
Ａ１：モジュールＢの状態がｓ０からｓ１に変化する部分
Ｂ１：モジュールＢの状態がｓ１からｓ２に変化する部分
Ｃ１：モジュールＣの状態がｓ２からＳ０に変化する部分
次にＡ１，Ｂ１，Ｃ１における状態遷移が記載されているシーケンス図を見つける（図３のＳ４１に対応）と，この例では，次のように図６〜図８を見つけることができる。
【００３０】
Ａ１：図６のＡ２，図７のＡ３でｓ０からｓ１への状態遷移が記載されている。
【００３１】
Ｂ１：図６のＢ２，図７のＢ３，図８のＢ４でｓ０からｓ２への状態遷移が記載されている。
【００３２】
Ｃ１：図８のＣ４でｓ２からｓ０への状態遷移が記載されている。
【００３３】
上記複数のシーケンス図（図６〜図８）を重ね合わせて新たなシーケンス図を作成する（図３のＳ４２に対応）。すなわち，
注目点Ａ１とＡ２，Ｂ１とＢ２を対応付けて，図５と図６を重ね合わせることにより，図９のシーケンス図が得られる。
【００３４】
注目点Ａ１とＡ３，Ｂ１とＢ３を対応付けて，図５と図７を重ね合わせることにより，図１０のシーケンス図が得られる。
【００３５】
注目点Ｂ１とＢ４，Ｃ１とＣ４を対応付けて，図５と図８を重ね合わせることにより，図１１のシーケンス図が得られる。但し，図８では点線で囲まれた部分しか重ねることができない。
【００３６】
次に図１２は実施例２の処理フローである。
【００３７】
この実施例２の処理フローは，上記実施例１の処理フローのステップＳ１〜Ｓ４までは同じ処理であり，説明を省略する。シーケンス図の重ね合わせの処理（図１２のＳ４）に続いて，検証したいサブモジュールに注目して，このサブモジュールの入出力のみを抽出する（図１２のＳ５）。この後，抽出したサブモジュール検証用のテストプログラムを生成する（図１２のＳ６）。
【００３８】
図１３は実施例２によるシーケンス図の例である。
【００３９】
上記図１３のＳ４までの処理により実施例１と同様に上記図９乃至図１１に例として示すような複数のシーケンス図を重ねたシーケンス図が生成される。この中の図９に示すシーケンス図において，検証したいモジュールがモジュールＢである場合，モジュールＢにおける入出力のみを抽出し，その他のモジュールに入出力するシーケンスを除くと図１３のシーケンス図が得られる。このモジュールＢに注目したテストプログラムを作成することになる。
【００４０】
【発明の効果】
本発明によれば，システム構成をブロック図で，システム内部に発生するシーケンスをシーケンス図で表現して，複数のシーケンスを系統的に重ね合わせることで，これを検証するテストプログラムを生成することができる。また，検証したいモジュールに注目した論理シミュレーション用テストプログラムを系統的に生成することができる。
【００４１】
更に，論理シミュレーション用テストプログラムの生成コストが削減でき，設計誤りを早期に発見することができる。
【図面の簡単な説明】
【図１】本発明の第１の原理構成を示す図である。
【図２】本発明の第２の原理構成を示す図である。
【図３】実施例１の処理フローを示す図である。
【図４】実施例１による対象となるＬＳＩのブロック図の例を示す図である。
【図５】モジュール間で受渡しする一連のメッセージを表現した例を示す図である。
【図６】注目する部分が状態変化する他のシーケンス図（その１）である。
【図７】注目する部分が状態変化する他のシーケンス図（その２）である。
【図８】注目する部分が状態変化する他のシーケンス図（その３）である。
【図９】重ね合わせたシーケンス図（その１）である。
【図１０】重ね合わせたシーケンス図（その２）である。
【図１１】重ね合わせたシーケンス図（その３）である。
【図１２】実施例２の処理フローを示す図である。
【図１３】実施例２によるシーケンス図の例を示す図である。
【図１４】従来技術の説明図である。
【符号の説明】
１０      各モジュールの記述作成手段
１１      ブロック図作成手段
１２      シーケンス図作成手段
１３      シーケンス図重ね合わせ検証手段
１４      テストプログラム生成手段
２０      モジュールの記述を格納する記憶部
２１      ブロック図を格納する記憶部
２２      各シーケンス図を格納する記憶部
２３      テストプログラムを格納する記憶部
【図１】
0003917342.tif 000002
【図２】
0003917342.tif 000003
【図３】
0003917342.tif 000004
【図４】
0003917342.tif 000005
【図５】
0003917342.tif 000006
【図６】
0003917342.tif 000007
【図７】
0003917342.tif 000008
【図８】
0003917342.tif 000009
【図９】
0003917342.tif 000010
【図１０】
0003917342.tif 000011
【図１１】
0003917342.tif 000012
【図１２】
0003917342.tif 000013
【図１３】
0003917342.tif 000014
【図１４】
0003917342.tif 000015