(57)【要約】【課題】ハードウェア記述言語で半導体装置を設計する際、問題個所の特定を効率的に行い、設計ミス特定率の向上を図る。【解決手段】設計データと参照データを同時にシミュレートする際、設計データおよび参照データの内部状態を計算し、前記２者の内部状態および内部状態の状態遷移を比較する。あるいは、設計データ内のメモリや参照データ内のメモリに書き込みイベントが発生する毎に、両メモリへの書き込みデータどうしを比較する。前記比較で不一致が生じる場合にその差異について報告を行う。さらに、不一致が生じた場合には、設計データの内部状態を参照データの内部状態と同じに書き換え、あるいは、設計データ内のメモリを参照データ内のメモリへの書き込みデータと同一に書き換えた上で、機能シミュレーションを続行する。【選択図】　図１
2004102702.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェア設計記述により表された半導体装置の設計データとその設計データと同じ動作が期待される参照データとを同時にシミュレートする機能シミュレーションにおいて、前記設計データの内部状態を計算するステップと、前記参照データの内部状態を計算するステップと、前記２者の内部状態および内部状態の状態遷移を比較するステップと、前記比較で不一致が生じる場合にその差異について報告を行うステップとを含むことを特徴とする半導体装置の設計検証方法。
【請求項２】
さらに、前記設計データと前記参照データとの内部状態どうし間に不一致が生じたときは、その不一致発生時刻における前記設計データの内部状態を前記参照データの内部状態と同一に書き換えるステップと、その書き換え状態で前記不一致発生時刻以降の機能シミュレーションを続行するステップとを含むことを特徴とする請求項１に記載の半導体装置の設計検証方法。
【請求項３】
ハードウェア設計記述により表された半導体装置の設計データとその設計データと同じ動作が期待される参照データとを同時にシミュレートする機能シミュレーションにおいて、前記設計データ内のメモリと前記参照データ内のメモリの少なくともいずれか一方に書き込みイベントが発生する毎に、前記両メモリへの書き込みデータどうしを比較するステップと、前記比較で不一致が生じる場合にその差異について報告を行うステップとを含むことを特徴とする半導体装置の設計検証方法。
【請求項４】
さらに、前記両メモリへの書き込みデータどうし間に不一致が生じたときは、前記設計データ内のメモリを前記参照データ内のメモリへの書き込みデータと同一に書き換えるステップと、その書き換え状態で前記不一致発生時刻以降の機能シミュレーションを続行するステップとを含むことを特徴とする請求項３に記載の半導体装置の設計検証方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半導体装置の設計データを機能シミュレーションによって検証する半導体装置の設計検証方法にかかわり、特には、設計データの効率的検証のための技術に関する。
【０００２】
【従来の技術】
従来より、ハードウェア設計記述により表された半導体装置の設計データが仕様通りであるかどうかの検証は、計算機上でそのハードウェア設計記述の動作をシミュレートすることにより行われている。この場合、一般的に、検証対象となる半導体装置の設計データと、この設計データと同じ動作が期待される参照データとを同時にシミュレートし、両者の出力結果を比較することにより、設計データが仕様通りであるかどうかを検証する。出力結果が一致すれば仕様通りであると判断し、一致しなければ仕様通りでないと判断する（例えば、特許文献１参照）。
【０００３】
【特許文献１】
特開平１０−２３１０４号公報（第２−３頁、図１）
【０００４】
【発明が解決しようとする課題】
ある時刻で出力結果に不一致が生じた場合、実際には、その時刻以前の段階ですでに設計データの内部状態に不一致が生じている可能性が高い。また、設計データ内のメモリ上のデータにも不一致が生じている可能性がある。
【０００５】
この場合、実際に設計データ上で問題となるのは、つまり設計ミスが存在する可能性が高いのは、設計データの内部状態に不一致が生じた時刻付近の動作や、メモリ上に間違ったデータを書き込んだ時刻付近の動作である。
【０００６】
ところが、上記従来の半導体装置の設計検証方法では、比較対象が設計データの出力結果と参照データの出力結果とだけである。したがって、問題個所を特定するには、出力結果の不一致が発生した時刻から遡って特定するしかない。
【０００７】
しかしながら、その遡る過程はステップ的に長いものとならざるを得ない。出力結果不一致発生時点または偽データ書き込み時点から内部状態不一致発生時点まで遡り、さらに内部状態不一致発生時点を起点にして問題個所を探索しなければならない。このような処理では、全体の工数が非常に大きなものになってしまう。
【０００８】
その上、設計データの内部状態に一旦問題が発生すると、それ以降のシミュレーションによる出力結果の比較には意味はなく、内部状態不一致または偽データ書き込みの原因となった設計ミス以外の設計ミスを発見することは非常に困難である。このような場合、設計者は一つの設計ミスを修正した後、別の設計ミスがあるかどうかを確かめるために、さらに最初からシミュレーションを実行する必要があり、これを設計ミスの数だけ繰り返す必要があった。
【０００９】
本発明は、このような事情に鑑みて創案されたものであり、問題個所の特定を効率的に行えるようにするとともに、設計ミス特定率の向上を図ることを目的としている。
【００１０】
【課題を解決するための手段】
上記の課題を解決するために、本発明は次のような手段を講じる。すなわち、ハードウェア設計記述により表された半導体装置の設計データとその設計データと同じ動作が期待される参照データとを同時にシミュレートする機能シミュレーションにおいて、前記設計データの内部状態を計算するステップと、前記参照データの内部状態を計算するステップと、前記２者の内部状態及び内部状態の状態遷移を比較するステップと、前記比較で不一致が生じる場合にその差異について報告を行うステップとを含むことを特徴とする。ここで、設計データの内部状態の計算ステップと参照データの内部状態の計算ステップとの前後関係については、いずれを先にしてもよく、また両ステップ同時進行の並行処理でもかまわない。
【００１１】
この構成による作用は次のとおりである。出力結果のみを比較していた従来技術に対して、計算によって刻々の設計データおよび参照データの内部状態を求め、それら両内部状態どうしの比較および内部状態の状態遷移を比較し、不一致があれば、その旨の報告を行うので、不一致発生時刻付近にある問題個所を効率良く特定することができる。
【００１２】
上記において好ましい態様は、さらに、前記設計データと前記参照データとの内部状態どうし間に不一致が生じたときは、その不一致発生時刻における前記設計データの内部状態を前記参照データの内部状態と同一に書き換えるステップと、その書き換え状態で前記不一致発生時刻以降の機能シミュレーションを続行するステップとを含むことである。
【００１３】
これによれば、内部状態どうし間で不一致が生じた場合には、設計データの内部状態を参照データの内部状態と同じに書き換えた上で機能シミュレーションを続行するため、不一致の原因となった設計ミス以外の設計ミスの発見も可能となり、１回のシミュレーションでの設計ミス特定率を向上させることができる。
【００１４】
別の解決手段として、本発明は次のような手段を講じる。すなわち、ハードウェア設計記述により表された半導体装置の設計データとその設計データと同じ動作が期待される参照データとを同時にシミュレートする機能シミュレーションにおいて、前記設計データ内のメモリと前記参照データ内のメモリの少なくともいずれか一方に書き込みイベントが発生する毎に、前記両メモリへの書き込みデータどうしを比較するステップと、前記比較で不一致が生じる場合にその差異について報告を行うステップとを含むことを特徴とする。
【００１５】
この構成による作用は次のとおりである。出力結果のみを比較していた従来技術に対して、書き込みイベントが発生するたびに、両メモリへの書き込みデータどうしを直接に比較し、不一致があれば、その旨の報告を行うので、不一致発生時刻付近にある書き込みイベントにかかわる問題個所を効率良く特定することができる。
【００１６】
上記において好ましい態様は、さらに、前記両メモリへの書き込みデータどうし間に不一致が生じたときは、前記設計データ内のメモリを前記参照データ内のメモリへの書き込みデータと同一に書き換えるステップと、その書き換え状態で前記不一致発生時刻以降の機能シミュレーションを続行するステップとを含むことである。
【００１７】
これによれば、書き込みデータどうし間で不一致が生じた場合には、設計データ内のメモリを参照データ内のメモリと同じに書き換えた上で機能シミュレーションを続行するため、不一致の原因となった設計ミス以外の設計ミスの発見も可能となり、１回のシミュレーションでの設計ミス特定率を向上させることができる。
【００１８】
【発明の実施の形態】
以下、本発明にかかわる半導体装置の設計検証方法の実施の形態について図面に基づいて詳細に説明する。なお、本発明は、以下の実施の形態に何ら限定されるものではなく、要旨を逸脱しない範囲においては様々なる態様で実施し得る。
【００１９】
（実施の形態１）
図１は本発明の実施の形態１における半導体装置の設計検証方法の手順を示すフローチャートである。
【００２０】
機能シミュレーションを開始して、まず、ステップ１０１において、半導体装置の設計データの内部状態を計算する。また、ステップ１０２において、参照データの内部状態を計算する。なお、ステップ１０１とステップ１０２との順序関係は任意であり、図示の通りに並行処理でもよいし、あるいは前後関係があるとして、いずれが先行してもよい。
【００２１】
次に、ステップ１０３において、前記の計算によって求めた設計データの内部状態と参照データの内部状態とを比較し、ステップ１０４において、両内部状態が等しいかどうかの判定を行う。
【００２２】
このとき、差異が生じていれば、ステップ１０５において、その差異を報告し、設計データの内部状態を参照データの内部状態と同じものに書き換える。
【００２３】
そして、ステップ１０６において、機能シミュレーション時刻が終了したか否かの判断を行って、終了するまで、上記のステップ１０１，１０２からステップ１０５までの処理を繰り返す。繰り返しにより、設計データの内部状態の状態遷移と参照データの内部状態の状態遷移との比較も行われる。
【００２４】
以上のように本実施の形態の半導体装置の設計検証方法によれば、機能シミュレーションの実行中に、設計データの内部状態と参照データの内部状態とを比較することにより、設計上で問題となる可能性の高い、設計データの内部状態に不一致が生じた時刻付近の動作を特定しやすくなる。
【００２５】
さらに、設計データの内部状態と参照データの内部状態に不一致が生じた場合、設計データの内部状態を参照データの内部状態に書き換えることにより、１回の機能シミュレーションで、より多くの設計ミスを検出することが可能となる。
【００２６】
図２は、本発明による半導体装置の設計検証方法をハードウェア記述言語の一つであるＶｅｒｉｌｏｇＨＤＬを用いて実施した例である。なお、この例では、ＶｅｒｉｌｏｇＨＤＬコードの説明に必要な部分のみを明示し、必要でない部分は「…」を示して省略している。この例では、設計データのみではなく、参照データもＶｅｒｉｌｏｇＨＤＬで実現されているものとする。
【００２７】
この例において、２０１は半導体装置の設計データである。便宜上、“ｄｕｔ”という名前を付けている。この設計データ２０１の内部状態を表すレジスタとして、“ｄｕｔ＿ｓｔａｔｅ”が定義されている。２０２は参照データである。この参照データ２０２の内部に、レジスタ“ｒｅｆ＿ｓｔａｔｅ”が定義されており、このレジスタが参照データ２０２の内部状態を表す。設計データ２０１におけるレジスタｄｕｔ＿ｓｔａｔｅは、その状態が参照データ２０２におけるｒｅｆ＿ｓｔａｔｅの状態と常に同一であることが要求される。
【００２８】
２０３〜２０６は機能シミュレーション用の記述である。記述２０４の部分で、設計データの内部状態と参照データの内部状態とを比較する。この比較の結果、不一致が発生した場合には、記述２０５の部分で、不一致が発生した旨の報告を行う。さらに、記述２０６の部分で、設計データの内部状態を参照データの内部状態に書き換え、その上で機能シミュレーションを続行する。
【００２９】
（実施の形態２）
図３は本発明の実施の形態２における半導体装置の設計検証方法の手順を示すフローチャートである。
【００３０】
機能シミュレーションを開始して、まず、ステップ３０３において、設計データ内でメモリへの書き込みイベントが発生した場合、ステップ３０５において、参照データ内でも同様の書き込みイベントが発生しているかを調べる。もし、参照データ内で書き込みイベントが発生していなかった場合、ステップ３０８において、その書き込みイベントの発生の有無の差異を報告し、設計データ内への書き込みを中止する。
【００３１】
一方、ステップ３０４において、参照データ内でメモリへの書き込みイベントが発生した場合、ステップ３０６において、設計データ内でも同様の書き込みイベントが発生しているかを調べる。もし、設計データ内に書き込みイベントが発生していなかった場合、ステップ３１０において、その書き込みイベントの発生の有無の差異を報告し、設計データ内へのメモリへ、参照データ内のメモリと同様の書き込みを行う。
【００３２】
設計データ内と参照データ内とで同様のメモリへの書き込みイベントが発生した場合、ステップ３０７において、書き込みデータが同一かどうかを調べる。差異が生じている場合、ステップ３０９において、その差異を報告し、設計データ内の書き込みデータを参照データ内のものと同一にする。
【００３３】
これらの処理の後、ステップ３０１において、さらに機能シミュレーションを続行する。
【００３４】
そして、ステップ３０２において、機能シミュレーション時刻が終了したか否かの判断を行って、終了するまで、上記のステップ３０３，３０４からステップ３０１までの処理を繰り返す。シミュレーション時刻が終了すれば、シミュレーションを終了する。
【００３５】
以上のように本実施の形態の半導体装置の設計検証方法によれば、機能シミュレーションの実行中に、各メモリへの書き込みデータどうしを比較することにより、設計上で問題となる可能性の高い、メモリへの書き込みデータに不一致が生じた時刻付近の動作を特定しやすくなる。
【００３６】
さらに、設計データ内のメモリへの書き込みと参照データ内のメモリへの書き込みに不一致が生じた場合、設計データ内のメモリの値を参照データ内のメモリの値に書き換えることにより、１回の機能シミュレーションで、より多くの設計ミスを検出することが可能となる。
【００３７】
【発明の効果】
以上のように本発明によれば、機能シミュレーションの実行中に、刻々に計算で求めた設計データの内部状態と参照データの内部状態どうし及び状態遷移を比較し、不一致が生じる場合にその差異について報告を行うので、出力結果のみを比較していた従来技術に比べて、不一致発生時刻付近にある問題個所を効率良く特定することができる。
【００３８】
また、設計データ内のメモリや参照データ内のメモリに書き込みイベントが発生するたびに、書き込みデータどうしを比較し、不一致が生じる場合にその差異について報告を行うので、出力結果のみを比較していた従来技術に比べて、不一致発生時刻付近にある書き込みイベントにかかわる問題個所を効率良く特定することができる。
【００３９】
さらに、不一致が生じた場合には、設計データの内部状態を参照データの内部状態と同じに書き換え、あるいは、設計データ内のメモリを参照データ内のメモリへの書き込みデータと同一に書き換えた上で、機能シミュレーションを続行するため、不一致の原因となった設計ミス以外の設計ミスの発見も可能となり、１回のシミュレーションでの設計ミス特定率を向上させることができる。
【図面の簡単な説明】
【図１】本発明の実施の形態１における半導体装置の設計検証方法の手順を示すフローチャート
【図２】本発明による半導体装置の設計検証方法をＶｅｒｉｌｏｇＨＤＬで記述した例の説明図
【図３】本発明の実施の形態２における半導体装置の設計検証方法の手順を示すフローチャート
【符号の説明】
１０１　設計データの内部状態を計算するステップ
１０２　参照データの内部状態を計算するステップ
１０３　設計データの内部状態と参照データの内部状態とを比較するステップ１０５　両内部状態の差異を報告し、設計データの内部状態を参照データの内部状態に書き換えるステップ
２０１　設計データ
２０２　参照データ
３０５　参照データ内でも同様の書き込みイベントが発生しているかを調べるステップ
３０６　設計データ内でも同様の書き込みイベントが発生しているかを調べるステップ
３０７　書き込みデータが同一かどうかを調べるステップ
３０９　両書き込みデータの差異を報告し、設計データ内の書き込みデータを参照データと同一にするステップ
【図１】
2004102702.tif 000003
【図２】
2004102702.tif 000004
【図３】
2004102702.tif 000005