(57)【要約】【課題】共通のメモリーにアクセスする複数のＤＭＡＣ（ＤｉｒｅｃｔＭｅｍｏｒｙＡｃｃｅｓｓＣｏｎｔｒｏｌｌｅｒ）回路の論理検証手法において、書き込んだデータの値が正しい事と共に、余計な書き込みを行っていない事を、より小さなテストベンチで、より短時間に、ヒューマンエラーが介在する事無く検証できる事。【解決手段】複数のＤＭＡＣを含む検証対象回路と、メモリーモデルと、ＤＭＡＣ回路がメモリーに書き込んだデータをメモリーから読み出す手段と、この読み出されたデータと期待値とを比較する手段と、複数のＤＭＡＣ回路のそれぞれの出力バスに接続される、Ｂｕｓを監視してＤＭＡＣ回路が書き込みを行ったデータ数を数える手段を持つ複数のＢｕｓモニターと、これにより数えたデータ数と期待するデータ数とを比較する手段からなる。【選択図】        図１
2004355431.tif 000002
【特許請求の範囲】
【請求項１】
共通のメモリーにアクセスする、複数のＤＭＡＣ回路を論理検証するための手法において、メモリーモデルを使用し、そのメモリーモデルから、複数のＤＭＡＣ回路が書き込んだ値を読み出す手段を持ち、この読み出された値と期待値とを比較する手段によって書き込んだ値が正しい事を確認すると共に、複数のＤＭＡＣ回路の出力Ｂｕｓを監視するＢｕｓモニターをそれぞれに持ち、このＢｕｓモニターに、ＤＭＡＣ回路が書き込みを行ったデータ数を数える手段を持ち、これにより数えたデータ数が期待するデータ数と等しい事を合わせて確認する事を特徴とした検証手法。
【請求項２】
前記メモリーモデルから複数のＤＭＡＣ回路が書き込んだ値を読み出す手段において、メモリーバスからのアクセスによらずにソフト的に読み出し、読み出しにかかるシミュレーション時間を０とする手法を用いる事を特徴とした、請求項１に記載した検証手法。
【請求項３】
前記複数のＤＭＡＣ回路の出力Ｂｕｓを監視するそれぞれのバスモニターがそれぞれ独立に動作する事を特徴とした、請求項１に記載した検証手法。
【請求項４】
前記複数のＤＭＡＣ回路の入力Ｂｕｓを監視するＢｕｓモニターをそれぞれに接続し、これにより前記期待値、及び期待するデータ数を作成する事を特徴とした、請求項１に記載した検証手法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）回路を論理検証する検証手法に関するものである。
【０００２】
【従来の技術】
近年、半導体の集積度が飛躍的に向上し、１チップに搭載できる論理回路が膨大になっている。これに伴い、この論理回路の検証に要する期間が非常に長期化し、開発期間の短縮の観点から、検証期間の短縮に対する要求が高まっている。
【０００３】
また、検証項目が膨大になる事によるヒューマンエラーが起こりやすくなっており、検証の自動化への要求が高まっている。
【０００４】
図２に、共通のメモリーにアクセスする複数のＤＭＡＣ回路を検証する手法について、従来の実施例を示す。この例ではＤＭＡＣ回路が２つある場合について説明する。
【０００５】
図２において、１０、１１は検証対象のＤＭＡＣ回路である。４０はＤＭＡＣ回路１０、１１を含むＣｈｉｐのイメージであるが、ＤＭＡＣ回路１０、１１に関連するブロック以外は省略している。メモリーに書くべきデータはそれぞれＬｏｇｉｃ  Ｂｌｏｃｋ３０、３１から出力され、Ｂｕｓ５０、５１を介してＤＭＡＣ回路１０、１１に入力される。ＤＭＡＣ回路１０、１１はそれぞれＡｒｂｉｔｏｒ８０に対してデータ転送要求を出す。Ａｒｂｉｔｏｒ８０はこれらの要求の調停を行い、どちらか一方に対してデータ転送許可信号を発行する。例えばＤＭＡＣ回路１０がこの許可信号を受けた場合、Ｂｕｓ７０を通してアドレス、データ等をＡｒｂｉｔｏｒ８０に対して転送する。Ａｒｂｉｔｏｒ８０はＢｕｓ６０を介してＭｅｍｏｒｙ  Ｍｏｄｅｌ２０にアクセスし、データの書き込みを行う。
【０００６】
ＤＭＡＣ回路１０、１１がそれぞれＢｕｓ７０、７１を介して、Ａｒｂｉｔｏｒ８０にデータを転送する間、Ｅｘｐｅｃｔ  Ｄａｔａ  Ｅｘｔｒａｃｔｏｒ１００、１０１は、それぞれＢｕｓ５０、５１を監視し、Ｍａｉｎ  Ｍｅｍｏｒｙに書き込むべき期待値データ（Ｅｘｐｅｃｔｅｄ  Ｄａｔａ）２００、２０１を作成する。
【０００７】
ＤＭＡＣ回路１０、１１が全てのデータを書き終わるとＢａｃｋ  Ｄｏｏｒ  Ｍｅｍｏｒｙ  Ｒｅａｄｅｒ１１０、１１１が起動される。
【０００８】
Ｂａｃｋ  Ｄｏｏｒ  Ｍｅｍｏｒｙ  Ｒｅａｄｅｒ１１０、１１１はそれぞれＭｅｍｏｒｙ  Ｍｏｄｅｌ２０より書かれたデータを読み出し、実際に書かれたデータ（Ａｃｔｕａｌ  Ｄａｔａ）２１０、２１１を作成する。
【０００９】
Ｃｏｍｐａｒｅｔｅｒ  Ｍｏｄｅｌ２１０、２１１は、それぞれＡｃｔｕａｌ  Ｄａｔａ２１０とＥｘｐｅｃｔｅｄ  Ｄａｔａ１１０、Ａｃｕｔｕａｌ  Ｄａｔａ２１１とＥｘｐｅｃｔｅｄ  Ｄａｔａ１１１を比較し、ＤＭＡＣ回路１０、１１がＭｅｍｏｒｙ  Ｍｏｄｅｌ２０に書いたデータの値が正しい事を確認する。
【００１０】
また、ＤＭＡＣ回路の競合の検証を行なうものも考案されている（例えば、特許文献１を参照）。
【００１１】
【特許文献１】
特開平６−１８０６５８号公報
【００１２】
【発明が解決しようとする課題】
しかしこのような方法では、期待するメモリーアドレスの範囲に正しい値が書かれている事は確認できるが、それ以外のところに誤って書かれていないかどうかを確認する事が出来ないという問題があった。
【００１３】
これを確認する為には、予めメモリーの全ての領域に任意の値を書き込んでおき、書き込みが行われるべきでない所が、書き換わっていない事をあわせて確認しなければならない。
【００１４】
ある一つのＤＭＡＣ回路がメモリーへの書き込みを終了した時点で、誤ったアドレスに書き込んでいない事を確認するためには、他のＤＭＡＣ回路がどこまで書き込みを行っているかを把握し、それ以外のところが書き換わっていない事を確認しなければならないという複雑な仕組みを必要とする。すなわち、ある一つのＤＭＡＣ回路を検証するためのモデルやモニター（テストベンチ）は、他のＤＭＡＣ回路を検証するためのテストベンチと同期をとりながら動作しなければならない。複雑な仕組みは、テストベンチを作成、デバックする時間をより多く必要とし、また、より大きなテストベンチを必要とするため、シミュレーションの実行時間が長くなり、検証期間を長期化させるという問題があった。
【００１５】
この各テストベンチが同期をとる複雑な仕組みを回避しようとした場合には、複数のＤＭＡＣ回路全てが転送を終了した後に、各ＤＭＡＣ回路が書き込んだデータが正しい事、及び書き込みがされるべきでないアドレスのデータが書き換わっていない事を確認すれば良い。しかし、このような方法では、ある１つのＤＭＡＣ回路にバグがある場合でも、全てのＤＭＡＣ回路のＭｅｍｏｒｙ転送終了を待たねばならず、バグを発見、修正するＴＡＴ（Ｔｕｒｎａｒｏｕｎｄ  Ｔｉｍｅ）が長くなるという問題があった。また、あるＤＭＡＣ回路はそのメモリー転送終了後、他のＤＭＡＣ回路のメモリー転送終了を待たずに次のメモリー転送を開始するような回路仕様の場合、この方法では対応できないという問題があった。
【００１６】
また、これら全てを解決する方法として波形ツールなどを用いて、目視によりメモリーに書かれた全てのデータ、アドレスを確認する方法も考えられるが、回路の規模から考えると非常に多くの時間がかかり、また、ヒューマンエラーが介在する可能性が多くなるという問題があった。
【００１７】
【課題を解決するための手段】
上記問題点を解決するための本発明の検証手法は、従来の様にメモリーに書き込んだ値と期待値とを比較する方法とともに、検証対象となる複数のＤＭＡＣ回路の出力Ｂｕｓを監視するＢｕｓモニターを設け、このＢｕｓモニターにメモリー書き込んだデータ数をカウントさせ、このデータ数と期待値とを比較する事を合わせて行う特徴とするものである。
【００１８】
また、これら複数のＢｕｓモニターは独立に動作し、一方はもう一方の動作に影響されないことを特徴とする。
【００１９】
（作用）
本発明の検証手法による作用は、同一のメモリーにアクセスする複数のＤＭＡＣ回路の機能検証において、書き込んだデータの値が正しい事、及び余計な書き込みを行っていない事を、より小さなテストベンチで、より短時間に、ヒューマンエラーが介在することなく検証出来ることである。
【００２０】
また、１つのＤＭＡＣ回路の検証は他のＤＭＡＣ回路の動作に影響を受ける事なく、独立して行えるため、より早くバグを見つける事ができ、ＴＡＴを短縮する事ができる。
【００２１】
【発明の実施の形態】
（実施例１）
図１は本発明に関わる検証手法の一実施形態を示すものである。図１において、図２（従来の実施例）を同一の構成要素には同一符号を付した。
【００２２】
本実施例では１つのチップ４０上に２つのＤＭＡＣ回路１０、１１がある場合について、その検証手法を示す。チップ４０上では、ＤＭＡＣ回路１０，１１に関連するブロック以外は省略してある。
【００２３】
チップ４０上にはＤＭＡＣ回路１０、１１があり、それぞれにはＬｏｇｉｃ  Ｂｌｏｃｋ３０、３１よりＢｕｓ５０、５１を介してデータが入力される。Ｂｕｓ５０、５１にはそれぞれＥｘｐｅｃｔｅｄ  Ｄａｔａ  Ｅｘｔｒａｃｔｏｒ１００、１０１が接続され、Ｌｏｇｉｃ  Ｂｌｏｃｋ３０、３１がデーを転送中、ＤＭＡＣ回路１０、１１がメモリーに書くべきデータの期待値（Ｅｘｐｅｃｔｅｄ  Ｄａｔａ）２００、２０１を作成する。
【００２４】
ＤＭＡＣ回路１０、１１はそれぞれＡｒｂｉｔｏｒ８０に対してデータ転送要求を出す。Ａｒｂｉｔｏｒ８０はこれらの要求の調停を行いどちらか一方に対してデータ転送許可信号を発行する。
【００２５】
Ｂｕｓ７０、７１のデータ転送の様子を図３に示す。サイクルａにおいてＤＭＡＣ回路１０はｔｒｑ０＝１とし、データ転送要求をしている。このバス転送プロトコルでは、ｔｒｑ０と共に書き込み読み出し判別信号ｗｒ＿ｎｏｔ＿ｒｄ０、及びアドレス信号ａｄｄｒ０を発行している。サイクルｂではＤＭＡＣ回路１１がｔｒｑ１＝１とし、データ転送要求をしているのが分かる。Ａｒｂｉｔｏｒ８０はこれら２つの転送要求を調停し、ＤＭＡＣ回路１０に対し、サイクルｃにおいてｔａｃｋ０＝１とし、転送許可を与えている。サイクルｄでは、ＤＭＡＣ回路１０が転送を許可されたのを受け、ｔｒｑ０＝０として転送要求を取り下げ、転送を開始している。このＢｕｓ転送プロトコルではｄａｔａ０［６３：０］の２ビートアクセスをしている。ここでｂｙｔｅｅｎ０［７：０］信号は、ｄａｔａ０［６３：０］の書き込み許可信号であり、ｂｙｔｅｅｎ０［７：０］の１ビットがｄａｔａ０［６３：０］の１バイトを制御する。サイクルｅではｂｙｔｅｅｎ０［７：０］＝＝ｈ’ＦＦであり、ｄａｔａ０［６３：０］の全てのバイト、８バイトが書き込み許可されている。サイクルｆではｂｙｔｅｅｎ０［７：０］＝ｈ’Ｆ８であり、ｄａｔａ０［６３：０］の上位５バイトが書き込み許可されている。よってこの１回の転送で、８＋５＝１３バイトの転送が行われている事が分かる。このＢｕｓ７０にはＢｕｓ  Ｍｏｎｉｔｏｒ１３０が接続されている。Ｂｕｓ  Ｍｏｎｉｔｏｒ１３０はＢｕｓ７０を監視し、転送データ数をカウントする。同様にＢｕｓ７１にはＢｕｓ  Ｍｏｎｉｔｏｒ１３１が接続され、転送データ数をカウントする。
【００２６】
Ａｒｂｉｔｏｒ８０はＢｕｓ７０から受け取ったデータをＢｕｓ６０を介してＭｅｍｏｒｙ  Ｍｏｄｅｌ２０にデータを転送する。
【００２７】
どちらかのＤＭＡＣ回路、例えばＤＭＡＣ回路１０が全てのデータを書き終わるとＢａｃｋ  Ｄｏｏｒ  Ｍｅｍｏｒｙ  Ｒｅａｄｅｒ１１０が起動される。
【００２８】
Ｂａｃｋ  Ｄｏｏｒ  Ｍｅｍｏｒｙ  Ｒｅａｄｅｒ１１０は、例えば通常のＢｕｓ６０からのアクセスではなく、ソフト的にＭａｉｎ  Ｍｅｍｏｒｙ  Ｍｏｄｅｌ２０から直接データを読み出せるようなものである。これはシミュレーション時間「０」で読み出す事ができ、シミュレーション時間を短縮する手法として知られている。
【００２９】
Ｂａｃｋ  Ｄｏｏｒ  Ｍｅｍｏｒｙ  Ｒｅａｄｅｒ１１０はＭａｉｎ  Ｍｅｍｏｒｙ  Ｍｏｄｅｌ２０から、ＤＭＡＣ回路１０によって書かれたデータを読み出し、実際に書かれたデータ（Ａｃｔｕａｌ  Ｄａｔａ）２１０を作成する。
【００３０】
Ｃｏｍｐａｒｅｔｅｒ  Ｍｏｄｅｌ１２０はこのＡｃｔｕａｌ  Ｄａｔａ２１０と前述のＥｘｐｅｃｔｅｄ  Ｄａｔａ２００を比較し、ＤＭＡＣ回路１０がＭｅｍｏｒｙ  Ｍｏｄｅｌ２０に書いたデータの値が正しい事を確認する。
【００３１】
同時に、Ｂｕｓ  Ｍｏｎｉｔｏｒ１３０によってカウントされたデータ数をＥｘｐｅｃｔｅｄ  Ｄａｔａ１１０のデータ数と比較し、これらが一致する事を確認する。Ｂｕｓ  Ｍｏｎｉｔｏｒ１３０によってカウントされたデータ数の方が多い場合は、必要以上の書き込みが起きており、書き込むべきでないところにアクセスしてメモリー上のデータを壊してしまっている、もしくは冗長な書き込みを行っている事が検出できる。少ない場合は上記Ｃｏｍｐａｒｅｔｅｒ  Ｍｏｄｅｌ１２０による期待値比較においてもエラーとなるため、従来の方法のみで検出できる。
【００３２】
この様に、データの値が正しい事を確認する事、及びデータの数が正しい事を確認する事を合わせて行う事により、予めメモリー上に任意の値を書き込んでおくような動作を必要とせずに、ＤＭＡＣ回路の動作を保証する事が出きる。また、全てのモニター、モデルが独立に動作するため、片方のＤＭＡＣ回路の検証は、他方のＤＭＡＣ回路の転送終了を待たずに行う事ができ、Ｂｕｇの早期発見、修正をを可能とし、ＴＡＴを短縮する事ができる。
【００３３】
ここで、Ｂａｃｋ  Ｄｏｏｒ  Ｍｅｍｏｒｙ  Ｒｅａｄｅｒ１１０、及びＣｏｍｐａｒｅｔｅｒ  Ｍｏｄｅｌ１２０を１組のみ使用しているが、Ｂａｃｋ  ＤｏｏｒＭｅｍｏｒｙ  Ｒｅａｄｅｒ１１０は前述の用にシミュレーション時間０で、直接Ｍｅｍｏｒｙ  Ｍｏｄｅｌ２０から読み出す事ができるため、ＤＭＡＣ回路１０、１１が同時に転送を終了した場合にも、Ｃｈｉｐ４０の動作を止める等の制御する事なく、検証を行う事が出きる。
【００３４】
また、片方のＤＭＡＣ回路がメモリー転送終了後、もう一方のＤＭＡＣ回路のメモリー転送終了を待たずに次のメモリー転送を開始するような仕様の場合にも対応できる。
【００３５】
本実施例においては１つのチップ上に２つのＤＭＡＣ回路がある場合について示したが、２つ以上のＤＭＡＣ回路がある場合でも問題ない。
【００３６】
また検証対象の複数のＤＭＡＣ回路が１つのチップ上にある場合について示したが、複数のチップに別れていても問題ない。
【００３７】
【発明の効果】
以上のように本発明によれば、ＤＭＡＣ回路が、正しい値が正しい数だけＭｅｍｏｒｙに書き込めたかどうかを、人手を介することなく、自動的により短時間で検証する事が出来る。
【００３８】
また、複数のＤＭＡＣ回路が１つのメモリーにデータを書き込む場合においても、ある１つのＤＭＡＣ回路の検証は、他のＤＭＡＣ回路の検証に影響されることなく、独立に検証を行なう事が出来ため、バグの発見修正のＴＡＴをより短縮する事ができる。また、テストベンチを単純化できるため、テストベンチの作成、デバック期間の短縮、及びシミュレーション実行時間の短縮を実現でき、検証期間の短縮を図る事ができる。
【図面の簡単な説明】
【図１】本発明の検証手法の一実施例の構成図
【図２】従来の検証手法の構成図
【図３】本発明の検証対象であるＤＭＡＣ回路とＭｅｍｏｒｙをつなぐＢｕｓのＢｕｓプロトコルを示す図である
【符号の説明】
１０，１１  ＤＭＡＣ回路
２０  Ｍｅｍｏｒｙ  Ｍｏｄｅｌ
３０，３１  Ｌｏｇｉｃ  Ｂｌｏｃｋ
４０  Ｃｈｉｐ
５０，５１，７０，７１  内部Ｂｕｓ
６０  Ｍｅｍｏｒｙ  Ｂｕｓ
８０  Ａｒｂｉｔｏｒ
１００，１０１  Ｅｘｐｅｃｔ  Ｄａｔａ  Ｅｘｔｒａｃｔｏｒ
１１０，１１１  Ｂａｃｋ  Ｄｏｏｒ  Ｍｅｍｏｒｙ  Ｒｅａｄｅｒ
１２０，１２１  Ｃｏｍｐａｒｅｔｏｒ  Ｍｏｄｅｌ
１３０，１３１  Ｂｕｓ  Ｍｏｎｉｔｏｒ
２００，２０１  Ｅｘｐｅｃｔｅｄ  Ｄａｔａ
２１０，２１１  Ａｃｔｕａｌ  Ｄａｔａ
【図１】
2004355431.tif 000003
【図２】
2004355431.tif 000004
【図３】
2004355431.tif 000005