(57)【要約】【課題】種々のメモリ規格のメモリに対応して論理検証を可能とし、コーナーケースを抜けなく論理検証できる論理検証装置を提供すること。【解決手段】ＣＰＵが発行する第１のコマンドを、第２のコマンドに変換してメモリ１０７に供給するメモリコントローラ１０６の論理を検証する論理検証装置１００であって、メモリ１０７の規格情報を記憶したメモリ規格情報記憶手段１０３と、規格情報が有するアドレス対応情報に従い、第１のコマンドから変換される第２のコマンドの期待値を生成する期待値生成手段１０８と、第１のコマンドをメモリコントローラ１０６に発行するコマンド発行手段１０１と、メモリコントローラ１０６が第１のコマンドから変換した第２のコマンドを監視し、期待値と比較する監視手段１０４と、を有することを特徴とする。【選択図】図１
2011059953.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵが発行する第１のコマンドを、第２のコマンドに変換してメモリに供給するメモリコントローラの論理を検証する論理検証装置であって、
前記メモリの規格情報を記憶したメモリ規格情報記憶手段と、
前記規格情報が有する規格毎のアドレス対応情報に従い、第１のコマンドから変換される第２のコマンドの期待値を生成する期待値生成手段と、
第１のコマンドをメモリコントローラに発行するコマンド発行手段と、
メモリコントローラが第１のコマンドから変換した第２のコマンドを監視し、前記期待値と比較する監視手段と、
を有することを特徴とする論理検証装置。
【請求項２】
前記メモリの特定の第２アドレスを前記規格情報を参照して特定し、前記アドレス対応情報に基づき、該第２アドレスから、第１のコマンドに含まれる第１アドレスを決定するコマンド生成手段、
を有することを特徴とする請求項１記載の論理検証装置。
【請求項３】
前記コマンド発行手段は、前記コマンド生成手段が生成した第１アドレスと、第１のコマンドのその他のパラメータが取り得る値を組み合わせて、第１のコマンドを生成する、
ことを特徴とする請求項２記載の論理検証装置。
【請求項４】
前記第２アドレスは、前記メモリの物理的な構造の境界付近のアドレスである、
ことを特徴とする請求項２又は３記載の論理検証装置。
【請求項５】
ＣＰＵが発行する第１のコマンドを、第２のコマンドに変換してメモリに供給するメモリコントローラの論理を検証する論理検証方法であって、
メモリ規格情報記憶手段に記憶された前記メモリの規格情報が有するアドレス対応情報に従い、期待値生成手段が、第１のコマンドから変換される第２のコマンドの期待値を生成するステップと、
コマンド発行手段が、第１のコマンドをメモリコントローラに発行するステップと、
監視手段が、メモリコントローラが第１のコマンドから変換した第２のコマンドを監視し、前記期待値と比較するステップと、
を有することを特徴とする論理検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＤＲ等のメモリにアクセスするメモリコントローラを検証する論理検証装置及び論理検証方法に関する。
【背景技術】
【０００２】
各種の情報処理装置に搭載されるメモリチップにアクセスするには、ＣＰＵから発生したメモリへのアクセス要求（メモリへの書き込み又は読出し）を、当該メモリ回路に適応したアクセス要求（アドレスの指定、アクセス単位等）に変換する必要がある。この変換を行うのがメモリコントローラである。このメモリコントローラは、アドレス等のアクセス要求を変換する論理演算を行うので、設計時や設計を検証するテスト時においては、論理演算が適切に行われているかを検証する論理検証を行なう必要がある（例えば、特許文献１参照。）。
【０００３】
特許文献１には、ＣＰＵが要求したアクセスによってシステムバス上に発生するトランザクションと、メモリモデルがメモリ制御回路からのアクセスに応答して発生したトランザクションとを用いてメモリ制御回路を論理検証する技術が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ＤＤＲ−ＳＤＲＡＭ（Double Date Rate Synchronous Dynamic Random Access）のような大容量のメモリのメモリコントローラの論理検証は、内部的には大容量のアドレスとコマンドを組み合わせて実行することや、外部的には様々なDDR-SDRAMの種類及びDDR-SDRAMの周波数等との組み合わせにて実行すること、が必要で論理検証項目が膨大となり論理検証の内容も大規模になっている。
【０００５】
また、従来は論理検証環境、論理検証シナリオが検証対象（ＤＵＴ：Design Under Test）の中身（処理内容、ロジックパス等）に依存する傾向が強かった。つまり、ＤＵＴの構造からあるアドレスの境界を検証するというように、論理検証シナリオがＤＵＴの作り方に依存することが多い。このため、例えば、ＤＵＴの中身をそのまま期待値（ＤＵＴが正常である場合に出力されるであろうデータ）の生成に使用することになり（期待値とテスト結果が一致することが当然になる）、本来の不具合が検出できないという問題があった。
【０００６】
論理検証シナリオでは、ユーザ側コマンドを入力（アクセス要求）した際のＤＵＴの出力が正しいか否かを検証するが、ユーザ側コマンドのパラメータの中で、特にアドレスに関しては、膨大なアドレスから単純にランダムに実施していても、十分な検証は困難である。例えば、各メモリの各モード（周波数、バーストモード等）において、メモリの区切り位置（アドレス境界、ＣＳ境界、または、ＢＡＮＫ境界等）に対して、抜けなくユーザ側コマンドを生成することは困難になっている。
【０００７】
また、特許文献１に記載された検証手法では、ユーザ側コマンドとメモリ側コマンドは一対一であることが前提である。しかし、一般的にはバーストアクセスをメモリコントローラが持っていることが主流であること、また、メモリ側コマンド数はユーザ側とメモリコントローラ間のバス幅と、メモリバス幅との関係によって変わる可能性があるため、ユーザ側コマンドと、メモリ側コマンドは一対一であるとは限らない。この場合、メモリコントローラが出力したアドレスだけでは、ユーザ側コマンドが、複数のメモリ側コマンドに正しく変換されたか否かの判断は困難である。
【０００８】
本発明は、種々のメモリ規格のメモリに対応して論理検証を可能とし、コーナーケースを抜けなく論理検証できる論理検証装置及び論理検証方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題に鑑み、本発明は、ＣＰＵが発行する第１のコマンドを、第２のコマンドに変換してメモリ１０７に供給するメモリコントローラ１０６の論理を検証する論理検証装置１００であって、メモリ１０７の規格情報を記憶したメモリ規格情報記憶手段１０３と、規格情報が有するアドレス対応情報に従い、第１のコマンドから変換される第２のコマンドの期待値を生成する期待値生成手段１０８と、第１のコマンドをメモリコントローラ１０６に発行するコマンド発行手段１０１と、メモリコントローラ１０６が第１のコマンドから変換した第２のコマンドを監視し、期待値と比較する監視手段１０４と、を有することを特徴とする。
【発明の効果】
【００１０】
種々のメモリ規格のメモリに対応して論理検証を可能とし、コーナーケースを抜けなく論理検証できる論理検証装置及び論理検証方法を提供すること。
【図面の簡単な説明】
【００１１】
【図１】論理検証装置の全体構成図の一例である。
【図２】期待値の生成を模式的に示す図の一例である。
【図３】アドレステーブルの一例を模式的に説明する図である。
【図４】期待値生成モデルがユーザ側コマンドをメモリ側コマンドに変換して期待値を生成する手順を示すフローチャート図の一例である。
【図５】モニタモデルによる検証を模式的に示す図の一例である。
【図６】シナリオ（ユーザ側コマンド）の生成を模式的に示す図の一例である。
【図７】コマンド生成モデルが境界付近のアドレスを網羅したユーザ側コマンドを生成する手順を示すフローチャート図の一例である。
【図８】論理検証装置が論理検証する手順を示すフローチャート図の一例を示す。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態について説明する。
本実施形態の論理検証装置１００は、ＤＵＴ（Design Under Test）が正常である場合に出力されるであろう期待値を、メモリ規格から自動生成することで、期待値生成の負荷を少なくする。また、メモリ規格から自動生成することで、ＤＵＴの中身に依存して期待値を生成するよりも期待値がカバーできる論理検証の範囲が広くなり、種々のメモリ規格のメモリに対応した論理検証が可能となる。また、膨大なアドレスからランダムに選定したアドレスを入力しても、論理検証が可能となる。すなわち、指定したユーザ側コマンドから期待値を自動生成するだけでなく、ランダムシナリオでの論理検証が可能になる。
【００１３】
また、論理検証シナリオ及びその結果に対する期待値も、メモリの規格を元に作成することで、ＤＵＴの中身に左右されることがなく、検証目標を明確にし、仕様の勘違いによる不具合を減らすことができる。
【００１４】
また、本実施形態の論理検証装置１００は、メモリ規格からメモリの区切り位置（アドレス境界、ＣＳ境界、または、ＢＡＮＫ境界等）を自動的に抽出し、区切り位置に対応するユーザ側コマンドを網羅的に生成する。これにより、論理検証項目のコーナーケース（見落としがちな検証項目）を重点的に論理検証できるので、抜けのない論理検証が可能になる。
【００１５】
そして、自動生成されたコーナーケースに対応したユーザ側コマンドと、ランダムに生成したユーザ側コマンドとを用いて、論理検証を並行して行うことで、短期間でより多くの論理検証シナリオを実施し、ＤＵＴの品質を向上させることができる。
【００１６】
図１は、論理検証装置１００の全体構成図の一例を示す。論理検証装置１００は、シナリオ記憶部１０５、メモリ規格パラメータ記憶部１０３、コマンド送信・制御モデル１０１、コマンド生成モデル１０２、期待値生成モデル１０８、検証対象（ＤＵＴ）１０６、ＤＤＲ−ＳＤＲＡＭ対向モデル１０７、及び、モニタモデル１０４を有する。シナリオ記憶部１０５は、コマンド送信・制御モデル１０１、メモリ規格パラメータ記憶部１０３、期待値生成モデル１０８及びコマンド生成モデル１０２と接続されている。コマンド送信・制御モデル１０１は、検証対象１０６、コマンド生成モデル１０２、期待値生成モデル１０８及び、モニタモデル１０４と接続されている。コマンド生成モデル１０２と期待値生成モデル１０８は、モニタモデル１０４と接続されている。検証対象１０６はモニタモデル１０４及びＤＤＲ−ＳＤＲＡＭ対向モデル１０７と接続されている。
【００１７】
論理検証装置１００はコンピュータを実体とし、不図示のＣＰＵ、ＲＡＭ、ＲＯＭ、ＨＤＤ、ＡＳＩＣ、バス等を有する。また、論理検証装置１００は、マウスやキーボードなどの入力装置、論理検証の結果を表示するディスプレイ、インターネットやＬＡＮなどのネットワークに接続するＮＩＣ（Network Interface Card）を有する。また、ＲＯＭ又はＨＤＤにはＣＰＵが実行するためのプログラムが記憶されている。このプログラムは、メモリカード等の記憶媒体に記憶して配布されたり、ＮＩＣを介して不図示のサーバから配布される。
【００１８】
シナリオ記憶部１０５及びメモリ規格パラメータ記憶部１０３は、コンピュータのＲＡＭやＨＤＤ等に実装されている。また、コマンド送信・制御モデル１０１、コマンド生成モデル１０２、期待値生成モデル１０８、モニタモデル１０４、ＤＤＲ−ＳＤＲＡＭ対向モデル１０７は、例えば、エミュレータにより生成された機能ブロック又はＣＰＵがプログラムを実行して提供される機能ブロックである。検証対象１０６は好ましくは実機であるが、同様にエミュレータ又はＣＰＵがプログラムを実行することで提供されていてもよい。
【００１９】
検証対象１０６は例えばメモリ制御回路やメモリコントローラである。検証対象１０６は、ユーザ側コマンドからメモリ側コマンドを生成してＤＤＲ−ＳＤＲＡＭ対向モデル１０７に供給し、ＤＤＲ−ＳＤＲＡＭ対向モデル１０７からメモリ側コマンドに応じた応答を受け取る。
【００２０】
検証対象１０６の検証について簡単に説明する。コマンド送信・制御モデル１０１はユーザ側コマンドを検証対象１０６に送信する。検証対象１０６は、ユーザ側コマンドによって要求されたＤＤＲ−ＳＤＲＡＭ対向モデル１０７のアドレス空間に対してアクセス（データの書き込み、読み出し）を行うため、ユーザ側コマンドをメモリ側コマンドに変換する。ＤＤＲ−ＳＤＲＡＭ対向モデル１０７はメモリ側コマンドに応じた応答（例えば、読み出したデータ、書き込み結果等）を検証対象１０６に返す。
【００２１】
モニタモデル１０４には、期待値生成モデル１０８から、後述する期待値が送出される。また、モニタモデル１０４は、検証対象１０６がＤＤＲ−ＳＤＲＡＭ対向モデル１０７に出力したメモリ側コマンドをモニタリングしている。モニタモデル１０４は、期待値とメモリ側コマンドを比較して一致するか否かを判定する。一致すれば、検証対象１０６は仕様通りに動作していることになる。本実施形態では、この期待値をメモリ規格から生成することが１つの特徴である。
【００２２】
シナリオ記憶部１０５には少なくとも１つ以上のユーザ側コマンドが記憶されている。また、メモリ規格パラメータ記憶部１０３には、ＤＤＲ−ＳＤＲＡＭ対向モデル１０７のメモリ規格パラメータが記憶されている。なお、メモリ規格は、例えばＤＤＲ１、ＤＤＲ２、ＤＤＲ３等であり、メモリ規格パラメータ記憶部１０３には各メモリ規格のメモリ規格パラメータが記憶されている。
【００２３】
メモリ規格パラメータは、例えば、アドレステーブル１０３１、メモリバス幅１０３２がある。アドレステーブル１０３１は、ＤＤＲ−ＳＤＲＡＭ対向モデル１０７のメモリアドレス空間と、システム側（＝ユーザ側コマンド。アプリケーション側、ＣＰＵ側のアドレス）のアドレス空間を対応づけるテーブルである。また、メモリバス幅１０３２は、８ビット、１６ビット、３２ビット、６４ビット等、メモリバスのビット数である。
【００２４】
〔期待値の生成〕
期待値の生成について説明する。まず、コマンド送信・制御モデル１０１は、シナリオ記憶部１０５からユーザ側コマンドを１つずつ読み出し、検証対象１０６に送出する。このユーザ側コマンドは、コマンド送信・制御モデル１０１が例えばランダムに生成したものである。また、コマンド送信・制御モデル１０１は、同じユーザ側コマンドを期待値生成モデル１０８にも送出する。なお、後述するように、シナリオ記憶部１０５にはアドレステーブル１０３１とメモリバス幅１０３２から生成されたユーザ側コマンドも含まれる。
【００２５】
期待値生成モデル１０８は、コマンド送信・制御モデル１０１からのユーザ側コマンドを受けると、同時または前後してメモリ規格パラメータ記憶部１０３からアドレステーブル１０３１とメモリバス幅１０３２を読みだす。コマンド生成モデル１０２は、アドレステーブル１０３１とメモリバス幅１０３２に基づき、ユーザ側コマンドからメモリ側コマンドを生成する。
【００２６】
図２は、期待値の生成を模式的に示す図の一例である。図２において図１と同一部には同一の符号を付しその説明は省略する。ユーザ側コマンド（シナリオ）には、リード/ライト信号、アドレス、バースト数、バイトイネーブルが含まれる。リード／ライト信号は、ＤＤＲ−ＳＤＲＡＭ対向モデル１０７からデータを読み出すのか書き込むのかを指定する。アドレスはＣＰＵやＯＳなどシステム側のアドレス空間のアドレスである。
【００２７】
バースト数は、１度の読み出し／書き込みで連続して読み出し／書き込まれるデータのバイト数である。例えば、バースト数が８でアドレスバスの幅が１６ビットなら、16bit×8＝16バイトが1回のバーストで読み出し／書き込まれる。バイトイネーブルは、全データバス（例えば１６ビット）のうち有効なデータ（例えば上位８ビット、下位８ビット）を指定する。
【００２８】
まず、期待値生成モデル１０８は、リード／ライト信号に基づきメモリ側コマンドのリード／ライトを決定する。次に、期待値生成モデル１０８は、アドレステーブル１０３１を参照して、ユーザ側コマンドのアドレスからメモリ側コマンドのアドレス（ＲＯＷアドレス、Ｃｏｌｕｍｎアドレス、又は、ＢＡＮＫアドレス）を決定する。
【００２９】
図３は、アドレステーブル１０３１の一例を模式的に説明する図である。図３の行方向はＤＤＲ−ＳＤＲＡＭ対向モデル１０７のメモリアドレス空間を、列方向はメモリデバイス（メモリの種類）を意味する。また、図３において、「Ｒｘｘ」はＲＯＷアドレスを、「Ｃｘｘ」はＣｏｌｕｍｎアドレスを、「Ｂｘｘ」はＢＡＮＫアドレスを、それぞれ意味する。「ｎａ」はＮｏｎＡｖａｉｒａｂｌｅ（使用不可）を意味する。
【００３０】
なお、列方向の「メモリサイズ×８」「メモリサイズ×１６」の「×８」「×１６」はメモリバス幅１０３２を示す。このように、メモリの種類によって同じシステム側のアドレスに対し、ＤＤＲ−ＳＤＲＡＭ対向モデル１０７のアドレスは異なる。アドレステーブル１０３１は規格と言うよりも仕様に近いので、アドレステーブル１０３１が変われば、当然、各ＲＯＷ/Ｃｏｌｕｍｎ/ＢＡＮＫアドレスが変わる。
【００３１】
一方、メモリの種類が決まっていて、ＤＤＲ−ＳＤＲＡＭ対向モデル１０７のアドレスが既知であれば、システム側のアドレスも一意に定まる。
【００３２】
図３に示すように、メモリバス幅１０３２が「×８」と「×１６」ではそれぞれ、システム側のアドレスが同じでもＤＤＲ−ＳＤＲＡＭ対向モデル１０７側に指定するアドレスは変わる。したがって、アドレステーブル１０３１を参照することで、期待値生成モデル１０８は、メモリバス幅１０３２に応じた調整も行ったことになる。
【００３３】
なお、ユーザ側コマンドのバイトイネーブルが変われば、メモリ側コマンドのアドレスのスタートアドレス（始点）が変わる。
【００３４】
このように、ユーザ側コマンドがメモリ側コマンドにどのように変換されるかはメモリ規格に依存するが、換言すれば、メモリ規格に応じて、メモリ側コマンドはユーザ側コマンドから一意に定まる。
【００３５】
また、ＤＤＲ−ＳＤＲＡＭ対向モデル１０７には、アクセス要求が有効か否かを指定するＣＳ（チップセレクト）信号の端子がある。１つの検証装置には複数のＤＤＲ−ＳＤＲＡＭ対向モデル１０７が搭載されることも少なくないためである。ＤＤＲ−ＳＤＲＡＭ対向モデル１０７はＣＳ信号が「Ｌｏｗ」の場合に、読み込み又は書き込みが許可される。
【００３６】
検証対象１０６は複数のＤＤＲ−ＳＤＲＡＭ対向モデル１０７からアクセス対象を特定するため複数のＣＳ端子を備える。このため、メモリ側コマンドにはＣＳ端子を特定するＣＳ情報が必要になる。期待値生成モデル１０８は、アドレステーブル１０３１等に基づき、アクセス対象のチップを選択するＣＳ情報を生成する。
【００３７】
以上の３つのアドレスとＣＳ情報が、１つのメモリ側コマンドである。バースト数に応じて、複数のメモリ側コマンドがＤＤＲ−ＳＤＲＡＭ対向モデル１０７に送信されるので、一つのユーザ側コマンドに対し、コマンド生成モデル１０２はその全て（バースト回数分）を期待値として生成する。この期待値はモニタモデル１０４に送出され、モニタモデル１０４はキュー構造（ＦＩＦＯ方式）の記憶領域（以下、単に「キュー配列」という）に期待値を記憶する。
【００３８】
後述するように、コマンド生成モデル１０２はメモリ規格からユーザ側コマンドを生成するので、期待値生成モデル１０８は、コマンド生成モデル１０２が生成したユーザ側コマンドからも期待値を生成しておく。こうすることで、モニタモデル１０４は、コーナーケースのユーザ側コマンドに対しても、ランダムにアドレスを指定するユーザ側コマンドに対しても検証可能になる。
【００３９】
なお、ユーザ側コマンドがＤＤＲ−ＳＤＲＡＭ対向モデル１０７のメモリ領域外へのアクセスを要求する場合は、検証対象１０６はＤＤＲ−ＳＤＲＡＭ対向モデル１０７からエラー信号を受け取るはずである。したがって、ユーザ側コマンドがＤＤＲ−ＳＤＲＡＭ対向モデル１０７のメモリ領域外へのアクセスを要求する場合、期待値生成モデル１０８は、アドレステーブル１０３１を参照して、エラー信号（例えば割り込みを受けること等）を期待値として生成する。
【００４０】
図４は、期待値生成モデル１０８が、ユーザ側コマンドをメモリ側コマンドに変換して期待値を生成する手順を示すフローチャート図の一例である。
【００４１】
まず、期待値生成モデル１０８は、受け取ったユーザ側コマンドに対し、メモリ領域外へのアクセスか否かを判定する（Ｓ１０）。すなわち、期待値生成モデル１０８は、アドレステーブル１０３１を参照してユーザ側コマンドのアドレスをメモリ側コマンドのアドレスに変換し、変換後のアドレスがＤＤＲ−ＳＤＲＡＭ対向モデル１０７のアドレス空間に含まれるか否かを判定する。メモリ領域外へのアクセスの場合（Ｓ１０のＹｅｓ）、期待値生成モデル１０８は「割り込みの種類」などを期待値として生成する（Ｓ５０）。
【００４２】
メモリ領域外へのアクセスでない場合（Ｓ１０のＮｏ）、期待値生成モデル１０８は、メモリ側コマンドの発行数ｎを決定する（Ｓ２０）。上記のように、メモリ側コマンドの発行数ｎはバースト数の関数である。図２ではｎ＝３個の発行数となっている。
【００４３】
ついで、期待値生成モデル１０８は、ｎ個のメモリ側コマンドを生成する。すなわち、ｎ＝１からｎ＝３になるまで（Ｓ３０）、メモリ側コマンドを生成する（Ｓ４０）。
【００４４】
上記のように期待値生成モデル１０８は、ユーザ側コマンドのアドレスからＣＳ情報、メモリ側コマンドのアドレス、を生成する。ＣＳ情報は、複数のＤＤＲ−ＳＤＲＡＭ対向モデル１０７から１つのＤＤＲ−ＳＤＲＡＭ対向モデル１０７を選択するものなので、ユーザ側コマンドのアドレスとアドレステーブル１０３１から生成できる。メモリ側コマンドのアドレスは、ユーザ側コマンドのアドレスと、図３のアドレステーブル１０３１（及び、これに含まれる及びメモリバス幅１０３２）から生成される。
【００４５】
また、期待値生成モデル１０８はデータマスクを生成する。データマスクは、バイトイネーブルに指定される有効なデータのみを指定する信号を生成するものである。なお、データマスクは、ＤＤＲ−ＳＤＲＡＭ対向モデル１０７から読み出したデータに対し施されるマスクなので、図示した期待値には含まないこととした。
【００４６】
期待値生成モデル１０８は、ｎ個のメモリ側コマンドを生成すると（Ｓ３０のＹｅｓ）、モニタモデル１０４に送出する。モニタモデル１０４は複数のメモリ側コマンドを期待値として、キュー配列に記憶する（Ｓ５０）。
【００４７】
〔モニタモデル１０４による検証〕
図５は、モニタモデル１０４による検証を模式的に示す図の一例である。図５において図１と同一部には同一の符号を付しその説明は省略する。図４の処理により、モニタモデル１０４のキュー配列には、期待値が記憶されている。
【００４８】
検証対象１０６は、コマンド生成モデル１０２と同じメモリ側コマンドを生成することが期待されている。このため、モニタモデル１０４は、検証対象１０６とメモリモデルとのインターフェースをモニタリングし、検証対象１０６により生成されたメモリ側コマンドが、期待値と同じか否かを判定する。
【００４９】
モニタモデル１０４は、コマンド送信・制御モデル１０１から送出されたユーザ側コマンドと、期待値生成モデル１０８から送出された期待値を対応づけながらキュー構造のリストに格納する。したがって、検証対象１０６に入力されたユーザ側コマンドに対応するメモリ側コマンドが、入力順に検証対象１０６から出力されない場合でも、モニタモデル１０４は期待値とメモリ側コマンドとを比較して、正しいか否かを確認することができる。
【００５０】
また、キュー構造で格納していることより、論理検証の（シミュレーション）終了時に、メモリ側コマンドに発行されるべきコマンドが全て発行されたか否かを確認することができる。
【００５１】
〔ユーザ側コマンドのパラメータ組み合わせリストの生成〕
検証対象１０６であるメモリコントローラによる、アドレスの検証に関して重要になってくるのは、メモリの区切り位置（アドレス境界、ＣＳ境界、または、ＢＡＮＫ境界等）のアドレスを検証したか否かである。そこで、コマンド生成モデル１０２が、これらの境界又は境界付近の境界アドレスをアドレステーブル１０３１より生成し、ＤＤＲ−ＳＤＲＡＭ対向モデル１０７の境界アドレスとして取得しておく。これをユーザ側コマンドのアドレスに変換することで、論理検証時のコーナーケースに対応したユーザ側コマンドのアドレスを生成することができる。
【００５２】
また、ユーザ側コマンドのアドレス以外のパラメータ（リード／ライト信号、バースト数、バイトイネーブル）を、境界アドレスに対応したユーザ側コマンドのアドレスと組み合わせることで、コーナーケースを網羅的に検証するユーザパラメータを生成できる。したがって、複数の境界アドレスに対応したユーザ側コマンドのアドレス、リード信号又はライト信号、種々のバースト数、種々のバイトイネーブル、がユーザ側コマンドのパラメータ組み合わせリストである。
【００５３】
図６は、シナリオ（ユーザ側コマンド）の生成を模式的に示す図の一例である。コマンド生成モデル１０２は、メモリ規格パラメータ記憶部１０３からアドレステーブル１０３１を読み出して、メモリの区切り位置に対応する境界アドレスを決定する。
【００５４】
コマンド生成モデル１０２は、まずＤＤＲ−ＳＤＲＡＭ対向モデル１０７のアドレステーブル１０３１とメモリバス幅１０３２より、アドレス（ＲＯＷ/Ｃｏｌｕｍｎ/ＢＡＮＫ）境界付近と、１つのチップ（ＤＤＲ−ＳＤＲＡＭ対向モデル１０７）の境界付近のアドレスを抽出する。
【００５５】
図３の「５１２Ｍ×８」を例にすれば、ｎａとＲ１２の境界、Ｒ１１とＣ８の境界、Ｃ８とＢ２の境界、Ｂ０とＣ７の境界、Ｃ９とｎａの境界、がそれぞれアドレス境界付近の境界アドレスである。また、最上部と最下部のｎａがチップの境界付近の境界アドレスである。
【００５６】
これらアドレス境界付近の境界アドレスと、チップの境界付近の境界アドレスは、ＤＤＲ−ＳＤＲＡＭ対向モデル１０７のアドレスである。一方、生成したいのはユーザ側コマンド（システム側）のアドレスである。このため、コマンド生成モデル１０２は、アドレス境界付近とチップの境界付近の境界アドレスに変換される、ユーザ側コマンドのアドレスを生成する。上記のように、ユーザ側コマンドは、アドレステーブル１０３１とメモリバス幅１０３２に基づきメモリ側コマンドに変換されるので、メモリ側コマンドから、アドレステーブル１０３１とメモリバス幅１０３２に基づきユーザ側コマンドに逆に変換することで、ユーザ側コマンドのアドレスを生成できる。
【００５７】
図３の例では、ｎａとＲ１２の境界のユーザ側コマンドのアドレスは「Ａ２８、Ａ２７」、Ｒ１１とＣ８の境界のユーザ側コマンドのアドレスは「Ａ１５、Ａ１４」、Ｃ８とＢ２２の境界の境界のユーザ側コマンドのアドレスは「Ａ１４、Ａ１３」、Ｂ０とＣ７の境界のユーザ側コマンドのアドレスは「Ａ１１、Ａ１０」、Ｃ９とｎａの境界のユーザ側コマンドのアドレスは「Ａ５、Ａ４」である。同様に、最上部と最下部のｎａの境界のユーザ側コマンドのアドレスは「Ａ３１」「ａ」である。
【００５８】
また、ユーザ側コマンドのパラメータ組み合わせリストのうち、リード／ライト信号はリードとライトの２種類、バースト数は１〜８程度の８種類、バイトイネーブルは４〜８種類程度を、想定すればよい。これらは予めシナリオ記憶部１０５等に記憶しておくことができる。
【００５９】
コマンド生成モデル１０２は、複数のユーザ側コマンドのアドレス、リード信号又はライト信号、種々のバースト数、種々のバイトイネーブルから、それぞれ１つづつ取り出しそれらを組み合わせることで、ユーザ側コマンドを生成する。ユーザ側コマンドのパラメータ組み合わせリストの全ての組み合わせを生成することで、コーナーケースのアドレスを網羅的に検証するユーザ側コマンドを生成できる。
【００６０】
コマンド生成モデル１０２は、生成したユーザ側コマンドのパラメータ組み合わせリストをシナリオ記憶部１０５に記憶する。予め組み合わせてユーザ側コマンドとして記憶してもよい。検証時には、コマンド送信・制御モデル１０１又はコマンド生成モデル１０２が、ユーザ側コマンドのパラメータ組み合わせリストの全ての組み合わせを実行して、ユーザ側コマンドを生成を生成する。
【００６１】
図７は、コマンド生成モデル１０２が境界アドレスを網羅したユーザ側コマンドを生成する手順を示すフローチャート図の一例である。図７のフローチャート図は、例えば、ユーザが論理検証装置１００にユーザ側コマンドの生成を指示することでスタートする。
【００６２】
まず、コマンド生成モデル１０２は、メモリ規格パラメータ記憶部１０３からアドレステーブル１０３１とメモリバス幅１０３２を読み出す（Ｓ１１０）。
【００６３】
次いで、コマンド生成モデル１０２は、ＤＤＲ−ＳＤＲＡＭ対向モデル１０７の境界アドレスを生成する（Ｓ１２０）。コマンド生成モデル１０２は、メモリ規格パラメータに基づき、アドレス（ＲＯＷ/Ｃｏｌｕｍｎ/ＢＡＮＫ）境界付近と、チップの境界付近の境界アドレスを抽出する。
【００６４】
次いで、コマンド生成モデル１０２は、境界アドレスを、アドレステーブル１０３１に基づきユーザ側コマンドのアドレスに逆変換する（Ｓ１３０）。ユーザ側コマンドのアドレスは複数個生成される。
【００６５】
コマンド生成モデル１０２はこのアドレスに、リード／ライト信号、種々のバースト数、種々のバイトイネーブルを添付して、ユーザ側コマンドのパラメータ組み合わせリストを生成する（Ｓ１４０）。
【００６６】
なお、期待値生成モデル１０８は、このパラメータ組み合わせリストを組み合わせて、期待値を生成しておく。
【００６７】
〔ユーザ側コマンドのパラメータ組み合わせリストを組み合わせた論理検証、ランダムに生成したユーザ側コマンドによる論理検証〕
ユーザ側コマンドのパラメータ組み合わせリストを用いてユーザ側コマンドを生成することでコーナーケースを網羅的に論理検証でき、さらに、ランダムにユーザ側コマンドを生成することで膨大なアドレスに対し論理検証できる。
【００６８】
図８は、本実施形態の論理検証装置１００が論理検証する手順を示すフローチャート図の一例を示す。図８のフローチャート図は、例えば、ユーザが論理検証の開始を指示するとスタートする。図７のフローチャート図に続いて自動的にスタートしてもよい。
【００６９】
まず、コマンド送信・制御モデル１０１は、次のいずれかの終了条件を判定する（Ｓ２１０）。
（ａ）指定回数だけユーザ側コマンドを発行したか
（ｂ）ユーザ側コマンドのパラメータ組み合わせリストの全ての組み合わせでユーザ側コマンドを発行し、かつ、十分な数のユーザ側コマンドをランダムに発行したか
（ａ）を終了条件とする場合、ユーザは論理検証装置１００に指定回数を入力装置を介して入力する。論理検証装置１００は、ユーザ側コマンドのパラメータ組み合わせリストの全ての組み合わせに必要な回数に、ユーザ側コマンドのランダムな発行のためのマージンを見込んで、入力可能な最低の回数以上の指定回数を受け付ける。
【００７０】
終了条件が成立しない場合（Ｓ２１０のＮｏ）、コマンド送信・制御モデル１０１は、カウンタｍが要素数になったか否かを判定する（Ｓ２２０）。要素数は、ユーザ側コマンドのパラメータの数であるので「４」である。また、カウンタｍは１，２，３、４の値を取る。
【００７１】
カウンタｍが要素数に到達していない場合（Ｓ２２０のＮｏ）、コマンド送信・制御モデル１０１は、「組み合わせ読み出し」か「ランダム読み出し」かを判定する（Ｓ２３０）。コマンド送信・制御モデル１０１は、「組み合わせ読み出し」と「ランダム読み出し」を自動的に切り替える。例えば、ユーザ側コマンドのパラメータ組み合わせリストの全ての組み合わせによりユーザ側コマンドの発行が終了すると、ランダム読み出しに移行する。
【００７２】
「組み合わせ読み出しの場合」、コマンド送信・制御モデル１０１は、シナリオ記憶部１０５に記憶されたパラメータ組み合わせリストの各要素を１つ読み出す（Ｓ２４０）。したがって、これを４回繰り返す。
【００７３】
「ランダム読み出しの場合」、コマンド送信・制御モデル１０１は、ユーザ側コマンドの各要素の１つから、適当な値を決定する（Ｓ２５０）。コマンド送信・制御モデル１０１は、システム側のアドレスから任意のアドレスを、リード／ライト信号から任意にいずれかを、任意のバースト数を、また、任意のバイトイネーブルをランダムに決定する。取り得る任意の上限と下限は予め定められている。これを４回繰り返すことで、任意のユーザ側コマンドを生成できる。
【００７４】
ステップＳ２２０において、カウンタｍが要素数になった場合（Ｓ２２０のＹｅｓ）、コマンド送信・制御モデル１０１は、ユーザ側コマンドを発行するためのコマンド発行関数を実行する（Ｓ２６０）。
【００７５】
その後、コマンド送信・制御モデル１０１が、コマンド間に間隔を設けるため待機時間だけ待機する（Ｓ２７０）。待機時間はＤＤＲ−ＳＤＲＡＭ対向モデル１０７の応答時間（リード時間／ライト時間）等により定まる。また、ユーザが入力装置から設定してもよい。
【００７６】
論理検証装置１００は、ステップＳ２１０〜Ｓ２７０を繰り返し、上記の終了条件が終了すると論理検証を終了する。
【００７７】
以上説明したように、本実施形態の論理検証装置１００は、メモリ規格パラメータに基づき期待値を生成することで、ＤＵＴの中身に依存して期待値を生成するよりも期待値がカバーできる論理検証の範囲が広くなり、膨大なアドレスからのランダムの入力パラメータに対しても、論理検証が可能となる。
【００７８】
また、本実施形態の論理検証装置１００は、メモリ規格パラメータからユーザ側コマンドのパラメータを生成することで、論理検証項目のコーナーケースを抜けなく論理検証できる。メモリのコーナーケースのパラメータを自動的に発生できるため、抜けが減ることになり、回路品質が向上する。例えば、DDR1、DDR2、DDR3に対して、すべて同じ環境で論理検証を実施することができる。今後の新しい規格のメモリに対しても、メモリ規格パラメータを追加・更新することで、同じ環境で論理検証を実施することができる。
【００７９】
また、アドレス領域外にも対応しているため、どのような組み合わせのユーザコマンドに対しても論理検証を実施することができる。ユーザ側コマンドに何ら入力制約を与えることなくランダムな入力を許容して、様々なパラメータの論理検証を実施することができ、回路品質が向上する。
【００８０】
また、期待値の作成時間が短縮でき、論理検証工程の短縮につながる。また、検証目標を明確にし、個人差や仕様の勘違いによる不具合を減らすことができる。
【符号の説明】
【００８１】
１００      論理検証装置
１０１      コマンド送信・制御モデル
１０２      コマンド生成モデル
１０３      メモリ規格パラメータ記憶部
１０４      モニタモデル
１０５      シナリオ記憶部
１０６      検証対象（ＤＵＴ）
１０７      ＤＤＲ−ＳＤＲＡＭ対向モデル
１０８      期待値生成モデル
【先行技術文献】
【特許文献】
【００８２】
【特許文献１】特開２００２−３１２４１６号公報
【図１】
2011059953.tif 000003
【図２】
2011059953.tif 000004
【図３】
2011059953.tif 000005
【図４】
2011059953.tif 000006
【図５】
2011059953.tif 000007
【図６】
2011059953.tif 000008
【図７】
2011059953.tif 000009
【図８】
2011059953.tif 000010