(57)【特許請求の範囲】
【請求項１】
メモリ制御回路を論理検証する装置であって、
所定の検証プログラムに沿って、前記メモリ制御回路にメモリへのアクセスを要求する要求手段と、
前記メモリ制御回路が実行するアクセスに従って動作するメモリモデルと、
前記要求手段の要求によって該要求手段と前記メモリ制御回路との間に発生するトランザクションに基づく情報を第１のトランザクション情報として保持する第１の保持手段と、
前記メモリ制御回路の前記アクセスによって該メモリ制御回路と該メモリモデルとの間に発生するトランザクションに基づく情報を第２のトランザクション情報として保持する第２の保持手段と、
前記第１のトランザクション情報と前記第２のトランザクション情報とを比較する比較手段と、
前記比較手段によって、対応する前記第１のトランザクション情報と前記第２のトランザクション情報とが一致すると判定された場合に、一致するトランザクション情報を第１と第２の保持手段から消去する消去手段と、
前記検証プログラムが終了した後に、前記第１と第２の保持手段の少なくともどちらか一方にトランザクション情報が残っている場合にエラーが発生したと判定する検証手段とを備えることを特徴とする論理検証装置。
【請求項２】
更に、前記比較手段によって、対応する前記第１と第２のトランザクション情報が互いに一致しないと判定された場合に、前記検証手段は、エラーが発生したと判定することを特徴とする請求項１に記載の論理検証装置。
【請求項３】
前記第１の保持手段は、前記要求手段と前記メモリ制御回路を結ぶバス上の信号を監視して前記第１のトランザクション情報を逐次的に保持し、
前記検証手段は、前記第２の保持手段に保持している第２のトランザクション情報に対応する第１のトランザクション情報が存在しない場合に、エラーが発生したと判定することを特徴とする請求項１又は２に記載の論理検証装置。
【請求項４】
前記トランザクション情報がアクセス先のメモリアドレス及び／又はデータとを含むことを特徴とする請求項１乃至３のいずれか１項に記載の論理検証装置。
【請求項５】
前記要求手段が前記検証テストプログラムを実行するＣＰＵモデルを有することを特徴とする請求項１乃至４のいずれか１項に記載の論理検証装置。
【請求項６】
論理検証装置のＣＰＵが、メモリ制御回路が実行するアクセスに従って動作するメモリモデルを用いて実行する、前記メモリ制御回路の論理検証方法であって、
所定の検証プログラムに沿って、要求手段が前記メモリ制御回路にメモリへのアクセスを要求する要求工程と、
前記要求手段の要求によって該要求手段と前記メモリ制御回路との間に発生するトランザクションに基づく情報を第１のトランザクション情報として保持する第１の保持工程と、
前記メモリ制御回路の前記アクセスによって該メモリ制御回路と前記メモリモデルとの間に発生するトランザクションに基づく情報を第２のトランザクション情報として保持する第２の保持工程と、
前記第１のトランザクション情報と前記第２のトランザクション情報とを比較する比較工程と、
前記比較工程において、対応する前記第１のトランザクション情報と前記第２のトランザクション情報とが一致すると判定された場合に、一致するトランザクション情報を消去する消去工程と、
前記検証プログラムが終了した後に、前記第１または第２の保持工程で保持されたトランザクション情報が残っている場合にエラーが発生したと判定する検証工程とを有することを特徴とする論理検証方法。
【請求項７】
更に、前記比較工程によって、対応する前記第１と第２のトランザクション情報が互いに一致しないと判定された場合に、前記検証工程において、エラーが発生したと判定することを特徴とする請求項６に記載の論理検証方法。
【請求項８】
前記第１の保持工程では、前記要求手段と前記メモリ制御回路を結ぶバス上の信号を監視して前記第１のトランザクション情報を逐次的に保持し、
前記検証工程では、保持している第２のトランザクション情報に対応する第１のトランザクション情報が存在しない場合に、エラーが発生したと判定することを特徴とする請求項６又は７に記載の論理検証方法。
【請求項９】
前記トランザクション情報がアクセス先のメモリアドレス及び／又はデータとを含むことを特徴とする請求項６乃至８のいずれか１項に記載の論理検証方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、メモリ制御回路の論理検証方法及び装置に関する。
【０００２】
【従来の技術】
一般に、プリンタ等に搭載される複数のメモリチップから構成されたメモリ回路やハードディスク等は、ＣＰＵから発生したメモリへのアクセス（メモリへの書き込み或いは読出し）を、当該メモリ回路に適応したアクセスに変換し、メモリ回路への実際のアクセスを行なうメモリ制御回路を有する。このようなメモリ制御回路は、アドレス等のアクセス情報を変換する論理演算が行なわれるので、設計時においては、その論理検証を行なう必要がある。メモリ制御回路の論理検証方法としては、以下のような方法が知られている。
【０００３】
（１）図８の（ａ）に示すように、ＣＰＵモデル８０１に所定のテストプログラムを実行させ、メモリ制御回路８０２を介したメモリモデル８０３へのデータ書き込みや読み出しを行なう。比較検証部８０４は、ＣＰＵモデル８０１から発行されたアクセス情報に基づいて、メモリ制御回路８０２を介してメモリモデル８０３をアクセスしてデータの読み出しを行ない、ＣＰＵモデル８０１による書き込みデータとの比較検証を行う。
【０００４】
（２）図８の（ｂ）に示すように、ＣＰＵモデル８０１に所定のテストプログラムを実行させ、メモリ制御回路８０２を介したメモリモデル８０３へのデータ書き込みや読み出しを行なう。比較検証部８０５は、ＣＰＵモデル８０１から発行されたアクセス情報に基づいて、メモリモデル８０３の書き込まれるべき領域から直接データを読み出し、ＣＰＵモデル８０１による書き込みデータとの比較検証を行う。
【０００５】
【発明が解決しようとする課題】
しかしながら上記（１）の検証方法においては、ＣＰＵモデル８０１も比較検証部８０４も同じメモリ制御回路８０２を介してメモリモデル８０３へのアクセスを行なう。このため、ＣＰＵモデル８０１からのアクセスによってメモリモデル８０３の不正な領域に対して書き込みや読み出しが行われた場合でも、ＣＰＵモデル８０１による書き込みデータと比較検証部８０４による読み出しデータは一致してしまい、これを検証することはできない。
【０００６】
また、上記（２）の検証方法によれば、メモリモデル８０３の不正な領域だけに書き込みや読み出しが行われた場合には、それを検証することができる。しかしながら、メモリモデル８０３の正しい領域と不正な領域に対してデータが同時に書き込まれた場合には、これを検証することはできない。比較検証部８０５は、あくまでも正しい領域に対するデータを検証するのみだからである。また、正しい領域への多重アクセスも検証できない。なお、多重アクセスとは、メモリへのアクセスが１度で良いのに複数回アクセスしてしまうバグのことである。このような多重アクセスでは、Read/Writeともデータは変わらないため、検証は通ってしまうが、無駄なアクセスによるパフォーマンス低下を招く。
【０００７】
すなわち、従来の検証方法においては、メモリモデル８０３へ書き込まれた結果を読み出して検証するのみであるため、上記のように充分な検証をすることができない。また、上記検証方法（１）及び（２）のいずれにおいても、書き込み・読み出し・比較といった一連の動作が検証に必要であり、検証効率が悪い。
【０００８】
本発明は上記の課題に鑑みてなされたものであり、メモリ制御回路のメモリアクセスに関わる論理検証の精度と効率を高めることを目的とする。
【０００９】
【課題を解決するための手段】
上記の目的を達成するための本発明によるメモリ制御回路の論理検証装置は以下の構成を備える。すなわち、
メモリ制御回路を論理検証する装置であって、
所定の検証プログラムに沿って、前記メモリ制御回路にメモリへのアクセスを要求する要求手段と、
前記メモリ制御回路が実行するアクセスに従って動作するメモリモデルと、
前記要求手段の要求によって該要求手段と前記メモリ制御回路との間に発生するトランザクションに基づく情報を第１のトランザクション情報として保持する第１の保持手段と、
前記メモリ制御回路の前記アクセスによって該メモリ制御回路と該メモリモデルとの間に発生するトランザクションに基づく情報を第２のトランザクション情報として保持する第２の保持手段と、
前記第１のトランザクション情報と前記第２のトランザクション情報とを比較する比較手段と、
前記比較手段によって、対応する前記第１のトランザクション情報と前記第２のトランザクション情報とが一致すると判定された場合に、一致するトランザクション情報を第１と第２の保持手段から消去する消去手段と、
前記検証プログラムが終了した後に、前記第１と第２の保持手段の少なくともどちらか一方にトランザクション情報が残っている場合にエラーが発生したと判定する検証手段とを備える。
【００１０】
また、上記の目的を達成するための本発明によるメモリ制御回路の論理検証方法は、
論理検証装置のＣＰＵが実行するメモリ制御回路の論理検証方法であって、
所定の検証プログラムに沿って、要求手段が前記メモリ制御回路にメモリへのアクセスを要求する要求工程と、
前記要求手段の要求によって該要求手段と前記メモリ制御回路との間に発生するトランザクションに基づく情報を第１のトランザクション情報として保持する第１の保持工程と、
前記メモリ制御回路の前記アクセスによって該メモリ制御回路と該メモリモデルとの間に発生するトランザクションに基づく情報を第２のトランザクション情報として保持する第２の保持工程と、
前記第１のトランザクション情報と前記第２のトランザクション情報とを比較する比較工程と、
前記比較工程において、対応する前記第１のトランザクション情報と前記第２のトランザクション情報とが一致すると判定された場合に、一致するトランザクション情報を消去する消去工程と、
前記検証プログラムが終了した後に、前記第１または第２の保持工程で保持されたトランザクション情報が残っている場合にエラーが発生したと判定する検証工程とを有する。
【００１１】
【発明の実施の形態】
以下、添付の図面を参照して本発明の好適な実施形態を説明する。
【００１２】
図１は本実施形態によるメモリ制御回路検証装置の構成を説明するブロック図である。図１において、１０１は中央制御回路の仮想動作モデル（以下、ＣＰＵモデル）、１０２は検証対象のメモリ制御回路、１０３はＣＰＵモデル１０１とメモリ制御回路１０２を電気的信号で接続するシステムバス、１０４はシステムバス１０３上のトランザクション動作を監視し、トランザクション情報を格納するトランザクションモニタ、１０５はメモリの仮想動作モデル（以下、メモリモデル）、１０６は検証テストプログラムであり、ＣＰＵモデル１０１はこのプログラムを実行してメモリ制御回路１０２への書き込み・読み出し動作を行う。また、１０７はシステムバス上のトランザクション情報とメモリモデルのトランザクション情報とを比較検証するメモリアクセスチェッカーである。
【００１３】
図７は本実施形態によるメモリ制御回路検証装置における検証処理機能を実現する機能構成を示すブロック図である。７００はテストベンチであり、検証テストプログラム１０６とＣＰＵモデル１０１を含み、メモリ制御回路の論理検証環境を提供する。テストベンチ７００において、検証テストプログラム１０６は、ＣＰＵモデル１０１に対してメモリへの書き込み・読み出し要求を行う。ＣＰＵモデル１０１は検証テストプログラム１０６よりメモリへの書き込み・読み出しを行なうための要求を受け取ると、システムバス１０３を介して、メモリ制御回路１０２にメモリへの書き込み・読み出し要求を発行する。
【００１４】
本実施形態では、メモリへの書き込みに際して出力される書き込みアドレスと書き込みデータ、メモリからの読み出しに際して出力される読出アドレスとそのアクセス結果である読み出しデータを総称してトランザクション情報という。システムバス上を監視しているトランザクションモニタ１０４は、メモリ制御回路１０２とＣＰＵモデル１０１との間のトランザクション情報７１０をトランザクション配列７０１に逐次格納していく。
【００１５】
トランザクション情報７１０を受け取ったメモリ制御回路１０２は当該トランザクション情報によって要求されたメモリのアドレス空間に対してデータの書き込み・読み出し動作を行うべく、メモリモデル１０５に対して書き込み・読出要求を発行する。メモリモデル１０５は、この書き込み・読出要求に応じた応答をメモリ制御回路１０２に返す。また、メモリモデル１０５は、この書き込み・読出要求を表わすトランザクション情報をトランザクション配列７０２に格納し、アクセスが発生したことをメモリアクセスチェッカー１０７へ通知する。このときメモリアクセスチェッカー１０７は、メモリモデル１０５内のトランザクション配列７０２に格納されているトランザクション情報について、必要に応じてアドレス変換するなどして、メモリアドレス空間とシステムバス上のアドレス空間の整合をとったうえで、トランザクションモニタ１０４のトランザクション配列７０１内に格納されているトランザクション情報と一致する（或いは等価）かを確認する。
【００１６】
この比較の結果、メモリモデル１０５に対してなされたアクセスとその結果を表わすトランザクション配列７０２に格納されているトランザクション情報が、トランザクションモニタ１０４内のトランザクション配列７０１に格納されているトランザクション情報と一致するとの確認がとれれば、メモリアクセスチェッカー１０７は、当該トランザクション情報をトランザクション配列７０１およびメモリのトランザクション配列７０２の双方より削除する。一方、確認がとれない場合には、ＣＰＵモデル１０１からメモリ制御回路１０２へ発行されたアクセスとは異なるアクセスがメモリモデル１０５に発生したことになるのでエラーとする。また、検証テストプログラム１０６を終了した時点で、トランザクション配列７０１にトランザクション情報が残った場合は、ＣＰＵモデル１０１からメモリ制御回路１０２へ発行されたアクセス要求がメモリモデル１０５に対して発生していないことになるので、やはりエラーとする。同じく検証テストプログラム１０６を終了した時点で、メモリモデル１０５内のトランザクション配列７０２にトランザクション情報が残った場合は、正しい領域と同時に不正な領域に対してもデータが書き込まれていたことになるので、やはりエラーとする。
【００１７】
以上のようにしてメモリ制御回路１０２の論理検証を行う。以下、図２乃至図４のフローチャートを参照して本実施形態による、メモリ制御回路の論理検証処理について更に詳しく説明する。
【００１８】
図２は、シミュレーション時における、検証テストプログラム１０６とＣＰＵモデル１０１による動作アルゴリズム例を示すフローチャートである。シミュレーションが開始されると、ステップＳ２０１で検証プログラム１０６が実行される。検証プログラム１０６はメモリへのアクセス要求を含み、ステップＳ２０２では検証プログラム１０６がＣＰＵモデル１０１に対しメモリへのアクセスを要求する。するとステップＳ２０３において、ＣＰＵモデル１０１は、当該アクセス要求に従ってシステムバス１０３にトランザクションを発行する。
【００１９】
そして、ステップＳ２０４でメモリ制御回路１０２からの応答を待ち、応答があったならばステップＳ２０５へ進む。検証プログラム１０６が終了していなければ、ステップＳ２０１へ戻り、検証プログラム１０６の次の要求を上記と同様の方法で処理する。以上の処理が、ステップＳ２０５で検証プログラムの終了と判断されるまで繰り返される。
【００２０】
図３は、本実施形態によるトランザクションモニタ１０４におけるアルゴリズム例を示すフローチャートである。ステップＳ３０３において検証プログラム１０６の終了と判定されるまで、以下の処理を繰り返す。
【００２１】
ステップＳ３０１でシステムバス１０３上にトランザクションが発生したか否かを監視し、トランザクションが発生したらステップＳ３０２へ進む。ステップＳ３０２では、発生したアクセスに起因するトランザクション情報（アドレス、データ等）をトランザクション配列７０１に格納する。
【００２２】
図４は、本実施形態によるメモリアクセスチェッカー１０７のアルゴリズム例を示すフローチャートである。まず、ステップＳ４０６において検証プログラムが終了するまで、或いはエラーが検出されるまでの間、以下のステップＳ４０１〜Ｓ４０４が繰り返される。
【００２３】
ステップＳ４０１でメモリアクセスチェッカー１０７はメモリモデル１０５からのアクセス発生の通知を待つ。アクセスが発生したならばステップＳ４０２へ進み、メモリモデル１０５に対するアクセス内容（トランザクション配列７０２内のトランザクション情報）をトランザクションモニタ１０４のトランザクション配列７０１に（ステップＳ３０２で）格納されたトランザクション情報と比較する。ステップＳ４０２による比較の結果、アクセス内容が一致した場合は、ステップＳ４０４へ進み、当該トランザクション情報をトランザクションモニタ１０４に格納されたトランザクション配列７０１及びメモリモデル１０５に格納されたトランザクション配列７０２から削除する。
【００２４】
一方、ステップＳ４０２による比較の結果が不一致だった場合は、ステップＳ４０３からステップＳ４０５へ進み、エラー処理を行い本シミュレーションを終了する。
【００２５】
検証プログラムが終了すると、ステップＳ４０６からステップＳ４０７ヘ進み、トランザクションモニタ１０４に格納されたトランザクション配列７０１及びメモリモデル１０５に格納されたトランザクション配列７０２が空になっているかどうかを確認する。トランザクション配列７０１が空になっていない場合は、発行したトランザクションがメモリモデル１０５へのアクセスとして反映されていないのであるから、ステップＳ４０５でエラーとして処理される。また、トランザクション配列７０２が空になっていない場合は、正しい領域と同時に不正な領域に対してもデータが書き込まれていたことになるので、ステップＳ４０５でエラーとして処理される。一方、トランザクションモニタ１０４に格納されたトランザクション配列７０１が空の場合は正常としてシミュレーションを終了する。
【００２６】
図５は、本実施形態のトランザクションモニタ１０４のプログラム例を示した図である。
【００２７】
５０１はトランザクションを格納する構造体、すなわちトランザクション配列７０１を定義する部分である。この構造体は、アドレス・リードもしくはライト・バイトレーン・データで構成されている。この例ではシステムバスを３２ビット幅と想定しており、８ビットのバイトデータごとのマスク情報がバイトレーンで示される。５０２はトランザクションモニタ１０４によるトランザクションの監視（ステップＳ３０１）を行なう部分である。システムバス上のトランザクション発生を検知すると、５０３でそのトランザクションのトランザクション情報をトランザクション情報配列に追加する（ステップＳ３０２）。
【００２８】
５０４は特定のトランザクションと格納されているトランザクションの配列とを比較するプログラムであり、格納されている配列内に見つからなければエラーとする。一致するトランザクションが見つかった場合はその配列を削除する。この処理は、上記図４のステップＳ４０２〜Ｓ４０５に相当するものであり、図６で後述するように、メモリモデル１０５からこの部分（５０４）の処理を実行させることになる。
【００２９】
図６は、メモリアクセスチェッカー１０７のプログラム例を示した図である。６０１はメモリモデルの機能拡張を示している。６０２ではメモリモデルへのアクセスイベントを待ち、アクセスイベントが起きたらアクセスされたメモリのアドレス・リードもしくはライト・バイトレーン・データの情報をもとに、６０３でトランザクションモニタに格納されたトランザクション配列との比較を行う。６０３では、メモリモデルに対するトランザクション情報を引数として、図５の５０４で示した部分を起動する。
【００３０】
以上説明したように、本実施形態において、トランザクションモニタ１０４は、メモリ制御回路１０２が接続するシステムバス１０３上のトランザクションを監視し、発生したトランザクションをトランザクション配列７０１に格納する。そして、実メモリと同じ動作する論理検証用のメモリモデル１０５はトランザクション配列７０２を有する。メモリアクセスチェッカー１０７は、メモリモデル１０５へのアクセスが発生した場合に、メモリモデル１０５内のトランザクション配列７０２に格納されているトランザクションとトランザクションモニタ１０４のトランザクション配列７０１に格納されたトランザクションとを比較、検証し、両トランザクションが一致していたらトランザクション配列７０１及び７０２から削除していく。この比較検証でトランザクションの一致が得られない場合、或いは検証テストプログラムを終了した時点でトランザクション配列７０１及び７０２にトランザクション情報が残った場合には、エラーがあると判定する。
【００３１】
以上のような構成としたことにより、以下の効果が得られる。
１．メモリ制御回路１０２とＣＰＵモデル１０５の間のトランザクションと、メモリ制御回路１０２とメモリモデル１０５の間のトランザクション同士を比較するので、検証精度が向上する。すなわち、
ａ．メモリモデルの不正な領域へのデータの書き込み・読み出しの検証が可能となる。
ｂ．正しい領域と不正な領域に同時にデータの書き込みが発生した場合の検証が可能となる。
ｃ．トランザクションで実際には発生していないアクセスがメモリに発生したことを検出できるため、正しい領域への多重アクセスの検証が可能となる。
【００３２】
２．メモリ領域へのトランザクションについての比較検証はトランザクションモニタとメモリモデルが実行するので、検証テストプログラムはあらゆるメモリ領域への書き込みもしくは読み出しを行うだけでよく、検証テストプログラムの簡素化、検証効率の向上が達成される。
【００３３】
３．メモリトランザクションにメモリモデルが対応すれば、メモリチェッカーはメモリの種類に関わらずこの機能を流用でき、検証効率が向上する。
【００３４】
なお、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【００３５】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００３６】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【００３７】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００３８】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００３９】
【発明の効果】
以上説明したように、本発明によれば、メモリ制御回路のメモリアクセスに関わる論理検証の精度と効率を高めることができる。
【図面の簡単な説明】
【図１】本実施形態によるメモリ制御回路検証装置の構成を説明するブロック図である。
【図２】シミュレーション時における、検証テストプログラムとＣＰＵモデルによる動作アルゴリズム例を示すフローチャートである。
【図３】本実施形態によるトランザクションモニタにおけるアルゴリズム例を示すフローチャートである。
【図４】本実施形態によるメモリアクセスチェッカーのアルゴリズム例を示すフローチャートである。
【図５】本実施形態のトランザクションモニタのプログラム例を示した図である。
【図６】メモリアクセスチェッカーのプログラム例を示した図である。
【図７】本実施形態によるメモリ制御回路検証装置における検証処理機能を実現する機能構成を示すブロック図である。
【図８】メモリ制御回路の一般的な論理検証方法を説明する図である。
【図１】
0004475621.tif 000002
【図２】
0004475621.tif 000003
【図３】
0004475621.tif 000004
【図４】
0004475621.tif 000005
【図５】
0004475621.tif 000006
【図６】
0004475621.tif 000007
【図７】
0004475621.tif 000008
【図８】
0004475621.tif 000009