(57)【特許請求の範囲】
【請求項１】
メモリの動作をシミュレーションするためのシミュレーション装置であって、
前記メモリのメモリアドレス空間に対応するメモリアドレスの第１ビット部で指定可能なメモリアドレス空間を有し、前記メモリアドレスの第１ビット部が入力され、前記入力された第１ビット部内のページセレクトアドレスおよびカラムアドレスで指定された番地に対するリード／ライト動作を実行するメモリ動作シミュレーション手段と、
前記カラムアドレスと同じビット幅を有しエラー発生位置を指定するエラーアドレス指定情報と、エラー発生の内容を指定するエラーモード情報とを含む、前記メモリアドレスの第２ビット部が入力され、前記入力された第２ビット部の値に応じて、前記メモリ動作シミュレーション手段に与えられるライトデータまたは前記メモリ動作シミュレーション手段から読み出されるリードデータに対して変更を施し、前記メモリ動作シミュレーション手段のリード／ライト動作にエラーを発生させるエラー生成手段とを具備し、
前記エラー生成手段は、
前記カラムアドレスの値と前記エラーアドレス指定情報で指定された値とを比較して前記カラムアドレスの値と前記エラーアドレス指定情報で指定された値との一致の有無を検出する比較手段と、
前記カラムアドレスの値と前記エラーアドレス指定情報で指定された値とが一致した場合、前記エラーモード情報に従って、前記メモリ動作シミュレーション手段に与えられるライトデータまたは前記メモリ動作シミュレーション手段から読み出されるリードデータの一部のビットを反転させる手段とを含むことを特徴とするシミュレーション装置。
【請求項２】
前記メモリ動作シミュレーション手段は、前記入力された第１ビット部内のカラムアドレスの値を順次更新することによって、ページライト／ページリードを実行し、
前記比較手段は、前記カラムアドレスの値が更新される度に前記カラムアドレスの値と前記エラーアドレス指定情報で指定された値との一致の有無を検出することを特徴とする請求項１記載のシミュレーション装置。
【請求項３】
前記エラー生成手段は、前記エラーモード情報に従って、前記反転させるビット数を変更することを特徴とする請求項１記載のシミュレーション装置。
【請求項４】
前記第１ビット部は前記メモリアドレスの下位ビット部であり、前記第２ビット部は前記メモリアドレスの上位ビット部であることを特徴とする請求項１記載のシミュレーション装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はメモリ動作をシミュレーションするためのシミュレーション方法およびシミュレーション装置に関する。
【０００２】
【従来の技術】
近年、ＬＳＩなどの設計対象ハードウェアの大規模化等に伴い、その開発にあたっては、設計対象ハードウェアの機能仕様をハードウェア記述言語などのプログラムによって記述して、その動作をシミュレーションするという設計手法が定着しつつある。これにより、開発対象のＬＳＩの動作検証を効率よく行うことができる。
【０００３】
メモリを制御する機能を持つＬＳＩの動作を検証する場合には、そのＬＳＩの機能モデルの他に、制御対象となるメモリの動作を記述した外部メモリモデルを用意することが必要となる。この場合、一般に、外部メモリモデルは、ライトしたデータが正確にリードできるというメモリを前提にして記述される。これは、ＤＲＡＭやＳＲＡＭなどにおいてはライトしたデータを正確にリードすることができるのが通常であるので、ライトしたデータをそのままリードできるような外部メモリモデルさえ用意すれば、ＬＳＩの動作を正しく検証することができるためである。
【０００４】
【発明が解決しようとする課題】
しかし、最近では、例えばフラッシュメモリなどのようにライトしたデータを必ずしも正しくリードすることができないようなメモリ製品が増え始めており、メモリエラーに対する対処機能を持つシステムの開発が必要とされている。例えば、フラッシュメモリを用いたメモリシステムでは、メモリエラーに対処するため、所定のライトデータ単位でＥＣＣを生成してそのＥＣＣをライトデータと一緒にフラッシュメモリに記憶しておき、データ読み出し時には、メモリコントローラがＥＣＣによってリードデータのエラー検出／訂正を行うという構成が用いられている。
【０００５】
この場合、メモリコントローラを正しく動作検証するためには、エラー発生機能を持つ新たな外部メモリモデルを用意することが必要となる。
【０００６】
本発明は上述の事情に鑑みてなされたものであり、メモリのエラー動作についても容易にシミュレーションできるようにし、メモリエラー発生時のＬＳＩの動作を正しく検証することが可能なシミュレーション方法およびシミュレーション装置を提供することを目的とする。
【０００７】
【課題を解決するための手段】
上述の課題を解決するため、本発明は、メモリの動作をシミュレーションするためのシミュレーション方法であって、前記メモリのメモリアドレス空間を指定するメモリアドレスの第１ビット部を、前記メモリの動作を記述したメモリモデルに対して与え、前記メモリアドレスの第１ビット部で指定された番地に対するリード／ライト動作を前記メモリモデルを用いてシミュレーションするメモリ動作シミュレーションステップと、前記メモリアドレスの第２ビット部の値に応じて、前記メモリモデルに与えられるライトデータまたは前記メモリモデルから読み出されるリードデータに対して変更を施し、前記メモリモデルのリード／ライト動作にエラーを発生させるエラー生成ステップとを具備することを特徴とする。
【０００８】
このシミュレーション方法においては、メモリ動作シミュレーションステップに加え、エラー生成ステップが追加されており、メモリアドレスの設定のみによって、容易にメモリモデルのリード／ライト動作にエラーを発生させることができる。エラー発生を指示するためのメモリアドレスとしては、メモリ動作シミュレーションでは使用されていない空きビット部が用いられる。このため、エラー発生を指示するための専用の信号線の記述等を新たに用意する必要はなく、アドレス、データ等の通常の記述のみで、エラーを含むメモリ動作を、シミュレーションすることができる。また、メモリ動作のエラーは、メモリモデルに与えられるライトデータ、またはメモリモデルから読み出されるリードデータに対してビット反転などの変更を施すことによって引き起こされる。このため、ライトデータを正確に読み出すという通常のメモリモデル自体には一切変更を施す必要はなく、そのメモリモデルに、ライトデータ／リードデータのビット反転などの機能記述を追加したものを新たなメモリモデルとして使用するだけで、メモリのエラー動作をシミュレーションすることが可能となる。
【０００９】
また、メモリ動作シミュレーションでは使用されてない空きビット部には、エラー発生位置を指定するためのビット部とエラー発生の内容を指定するためのビット部をと定義することが好ましい。この場合、前記エラー生成ステップは、メモリアドレスの空きビット部の値に応じて、任意のアドレス位置に任意のエラーを発生させることが可能となる。
【００１０】
また、前記メモリモデルとして、所定のデータ単位でライトデータとそのエラー訂正コードが書き込まれる不揮発性メモリの動作を記述したものを使用する場合には、前記不揮発性メモリを制御するためのメモリコントローラの動作を記述したＬＳＩモデルを用いて、前記メモリモデルから読み出されるリードデータとエラー訂正コードとに基づく前記メモリコントローラのエラー訂正動作をシミュレーションするステップをさらに設けることが好ましい。これにより、フラッシュメモリなどの不揮発性メモリを制御するためのメモリコントローラのエラー訂正動作を検証することが可能となる。
【００１１】
また、メモリコントローラのエラー訂正動作をシミュレーションする場合には、エラー訂正コードによってエラー訂正可能なビット数分の変更を加える第１エラーモードと、エラー訂正コードによってエラー訂正不可能なビット数分の変更を加える第２エラーモードとを選択的に利用できるようにする事により、メモリコントローラのエラー訂正動作を多角的に検証することが可能となる。
【００１２】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を説明する。
【００１３】
図１には、本発明の一実施形態に係るシミュレーションシステムの機能構成が示されている。このシミュレーションシステムはメモリ制御機能を有する開発対象ＬＳＩの動作を検証するために用いられるものであり、テストパターンファイル１０から読み込んだテストパターンに従ってＬＳＩ動作をシミュレーションするためのコンピュータプログラム（シミュレーションプログラム）から構成されている。
【００１４】
このシミュレーションプログラムはハードウェア記述言語などによるハードウェアの記述に従って、そのハードウェアの動作をコンピュータ上でシミュレーションする。ハードウェア記述言語としては、ＶｅｒｉｌｏｇＨＤＬやＶＨＤＬなどを使用することができる。
【００１５】
本シミュレーションプログラムには、図示のように、テストマスタモデル１１、ＬＳＩモデル１２、およびメモリモデル１３が設けられている。これらモデルはそれぞれハードウェアの動作を記述したものであり、シミュレーション動作はこれらモデルの記述に従って実行される。
【００１６】
本例では、ＬＳＩモデル１２およびメモリモデル１３が、メモリカード１００に内蔵されたコントローラ１０１およびメモリ１０２それぞれの動作を記述した機能モデルである場合を想定している。メモリカード１００は、ＮＡＮＤ型フラッシュＥＥＰＲＯＭなどの不揮発性半導体メモリから構成されるメモリ１０２を内蔵したメモリカードであり、コンピュータや他の電子機器の可換型記録媒体として使用される。コントローラ１０１は、メモリカード１００が装着して使用されるホスト装置（コンピュータや他の電子機器）からの要求に応じてＮＡＮＤ型フラッシュＥＥＰＲＯＭの制御を行うメモリコントローラである。
【００１７】
テストマスタモデル１１は、開発対象ＬＳＩを制御するホスト装置上のＣＰＵやＰＣＩバスマスタなどの動作を記述したモデルであり、メモリカード１００の制御を行う。このテストマスタモデル１１は、テストパターンファイル１０からテストパターンを読み込み、そのテストパターンに従って、ＬＳＩモデル１２を制御するための制御信号（ＣＯＮＴＲＯＬ）を発行する機能を有している。また、テストマスタモデル１１には、ＬＳＩモデル１２との間でメモリデータ（ＤＡＴＡ）の授受を行う機能も設けられている。
【００１８】
ＬＳＩモデル１２はメモリモデル１３の制御機能を有する開発対象ＬＳＩの動作、つまりメモリカード１００のコントローラ１０１の動作を記述したモデルであり、メモリモデル１３に対してメモリアドレス（ＡＤＤＲＥＳＳ）およびメモリ制御信号（ＣＯＮＴＲＯＬ）を発行する機能、メモリモデル１３との間でメモリデータ（ＤＡＴＡ）を授受する機能を有している。さらに、ＬＳＩモデル１２には、ＥＣＣ生成機能、およびＥＣＣチェック機能なども設けられている。
【００１９】
メモリモデル１３は開発対象ＬＳＩによって制御されるメモリの動作、つまりメモリカード１００のメモリ１０２の動作を記述したモデルである。このメモリモデル１３には、データのリード／ライト動作にエラーを発生させるための機能が含まれている。このエラー発生機能は、メモリモデル１３に与えられるライトデータまたはメモリモデル１３から読み出されるリードデータに対してメモリモデル１３内で変更を施すことによって、リード／ライト動作にエラーを発生させるというものである。エラー発生機能の動作は、メモリアドレス（ＡＤＤＲＥＳＳ）の内、メモリ動作テストで使用されるビット部以外の他のビット部のアドレスによって制御される。
【００２０】
以下、図２を参照して、エラー発生機能付きメモリモデル１３の具体的な構成を説明する。
【００２１】
図２に示されているように、メモリモデル１３には、メモリモジュールモデル１３１、エラー制御モジュール１３２、および比較モジュール１３３が設けられている。
【００２２】
メモリモジュールモデル１３１は、図１のメモリ１０２を構成するＮＡＮＤ型フラッシュＥＥＰＲＯＭの動作を記述したモデルであり、ライトしたデータが正確にリードできるというメモリを前提にして記述されている。メモリモデル１３には、ＮＡＮＤ型フラッシュＥＥＰＲＯＭの全てのアドレス空間分のテストを行う分のメモリ空間は必要ではないので、メモリモジュールモデル１３１には、メモリアドレス（ＡＤＤＲＥＳＳ）の下位ビット部（ＡＤＤＲＥＳＳ＿Ｌ）によって指定可能なメモリ空間のみが定義されている。
【００２３】
図１のＬＳＩモデル１２から発行されるメモリアドレス（ＡＤＤＲＥＳＳ）の内、下位ビット部（ＡＤＤＲＥＳＳ＿Ｌ）だけがメモリモジュールモデル１３１をアクセスするための有効メモリアドレス（ＭＥＭ＿ＡＤＤＲＥＳＳ）としてメモリモジュールモデル１３１に与えられる。
【００２４】
エラー制御モジュール１３２は、図１のＬＳＩモデル１２からメモリモジュールモデル１３１に与えられるライトデータ、またはメモリモジュールモデル１３１からＬＳＩモデル１２に向けて読み出されるリードデータに対して、１ビット反転、２ビット反転、３ビット反転などのデータ変更処理を施すための機能モデルである。このエラー制御モジュール１３２には、ＬＳＩモデル１２からのメモリアドレス（ＡＤＤＲＥＳＳ）の上位ビット部（ＡＤＤＲＥＳＳ＿Ｕ）がテストモード指示情報（ＴＥＳＴ＿ＭＯＤＥ）として与えられ、どのようなデータ変更処理を実行するかはそのテストモード指示情報（ＴＥＳＴ＿ＭＯＤＥ）によって指定される。
【００２５】
比較モジュール１３３には、ＬＳＩモデル１２からのメモリアドレス（ＡＤＤＲＥＳＳ）の中位ビット部（ＡＤＤＲＥＳＳ＿Ｍ）がテストアドレス情報（ＴＥＳＴ＿ＡＤＤＲ）として与えられると共に、前述の有効メモリアドレス（ＭＥＭ＿ＡＤＤＲＥＳＳ）が与えられる。テストアドレス情報（ＴＥＳＴ＿ＡＤＤＲ）はエラーを発生させたいアドレス（メモリモジュール１３１上の番地）を指定するためのものであり、テストアドレス情報（ＴＥＳＴ＿ＡＤＤＲ）で指定されたアドレスと有効メモリアドレス（ＭＥＭ＿ＡＤＤＲＥＳＳ）の値が一致したときに、エラー制御モジュール１３２によるデータ変更処理動作が実行される。
【００２６】
メモリモデル１３を用いたメモリ動作のシミュレーション動作は、通常のメモリ動作シミュレーションステップと、エラー生成ステップとから構成される。メモリ動作シミュレーションステップでは、メモリアドレス（ＡＤＤＲＥＳＳ）の下位ビット部（ＡＤＤＲＥＳＳ＿Ｌ）で指定された番地に対する正常なリード／ライト動作がメモリモジュールモデル１３１によりシミュレーションされる。また、エラー生成ステップでは、比較モジュール１３３とエラー制御モジュール１３２の機能により、メモリモジュールモデル１３１との間で授受されるライトデータ／リードデータにエラーが引き起こされる。
【００２７】
さらに、エラー生成ステップにおいては、メモリアドレス（ＡＤＤＲＥＳＳ）の中位ビット部（ＡＤＤＲＥＳＳ＿Ｍ）によって、下位ビット部（ＡＤＤＲＥＳＳ＿Ｌ）の中でエラーを発生させたいアドレスを指定し、またメモリアドレス（ＡＤＤＲＥＳＳ）の上位ビット部（ＡＤＤＲＥＳＳ＿Ｕ）によって、発生させるエラーの内容を指定することができる。
【００２８】
ＬＳＩモデル１２からのメモリアドレス（ＡＤＤＲＥＳＳ）はテストパターンファイル１０に記述されたメモリアドレスであるので、テストパターンファイル１０に記述する中位ビット部（ＡＤＤＲＥＳＳ＿Ｍ）および上位ビット部（ＡＤＤＲＥＳＳ＿Ｕ）の設定により、下位ビット部（ＡＤＤＲＥＳＳ＿Ｌ）で指定されるメモリモジュールモデル１３１内の任意の記憶位置に対して任意のエラーを発生させることができる。
【００２９】
次に、開発対象ＬＳＩ１２によって実際に制御されるＮＡＮＤ型フラッシュＥＥＰＲＯＭの構成と、メモリモジュールモデル１３１に割り当てられるメモリアドレス空間について説明する。
【００３０】
図３には、ＮＡＮＤ型フラッシュＥＥＰＲＯＭの具体的な構成の一例が示されている。ＮＡＮＤ型フラッシュＥＥＰＲＯＭは、メモリセルアレイ２０１と、データレジスタ２０２を備えている。メモリセルアレイ２０１は、例えば、３２Ｋページ（行）×５２８（＝５１２＋１６）列×８ビットのビット構成を有している。各ページは５１２バイトのデータ記憶領域と１６バイト（またはそれ以上）の冗長領域を備えている。データの書き込みと読み出しは、基本的にはデータレジスタ２０２を介してページ単位で実行される。冗長領域は、データ記憶領域のデータに対応したＥＣＣの格納に利用される。冗長領域のサイズはメモリチップの種類等によって異なる。
【００３１】
ＮＡＮＤ型フラッシュＥＥＰＲＯＭはライトモード、リードモード、消去モードなどを有しており、これら動作モードはコントローラ１０１からの制御信号やコマンドによって指定される。
【００３２】
リードモードにおいてはページ単位でのリードが可能であり、この場合にはメモリセルアレイ２０１からデータレジスタ２０２へのページ単位（５１２＋１６）でのデータ転送が一括して行われる。そして、データレジスタ２０２に転送された１ページ分のデータは、アドレス入力およびデータ入出力のための入出力端子Ｉ／Ｏ＜７：０＞から８ビット単位で順次読み出される。データレジスタ２０２からのデータ読み出しは、カラムアドレスを内部的に順次インクリメントしながら実行される。また、もちろんページ内の任意の位置からのデータ読み出しやページ境界に跨るデータ読み出しも可能である。
【００３３】
ライトモードにおいてもページ単位でのライトが可能であり、この場合には入出力端子Ｉ／Ｏ＜７：０＞から８ビット単位でライトデータが順次データレジスタ２０２に書き込まれる。この書き込みも、カラムアドレスを内部的に順次インクリメントしながら実行される。そして１ページ分のライトデータ（５１２＋１６）が揃うと、データレジスタ２０２からメモリセルアレイ２０１へのデータ転送がページ単位で一括して行われる。もちろん、ライトモードにおいても、ページ内の任意の位置からのデータ書き込みやページ境界に跨るデータ書き込みを行うことが可能である。
【００３４】
図４には、メモリモジュールモデル１３１に割り当てられるメモリアドレス空間の一例が示されている。ここでは、３２Ｋページの内、最初の４ページ分（ページ１〜ページ４）のメモリ空間だけがメモリモジュールモデル１３１に割り当てられている。
【００３５】
メモリモジュールモデル１３１を用いたメモリの動作テスト、つまりメモリ動作シミュレーションは、この４ページ分（ページ１〜ページ４）のメモリアドレス空間の範囲内で行われる。
【００３６】
次に、図５を参照して、本実施形態におけるメモリアドレスの具体的な使用方法について説明する。
【００３７】
ＮＡＮＤ型フラッシュＥＥＰＲＯＭに対するメモリアドレス（ＮＡＮＤ  ＡＤＤＲＥＳＳ）は２４ビット（２３：００）であり、下位の９ビット（０８：００）がメモリモジュールモデル１３１のページ内の格納位置を示すカラムアドレス（ＭＡ）として使用され、その上位２ビット（１０：０９）が、メモリモジュールモデル１３１内の４ページの中の１ページを指定するためのページセレクトアドレス（ＰＡ）として使用される。すなわち、メモリモジュールモデル１３１に与えられるメモリアドレスは、メモリアドレス（ＮＡＮＤ  ＡＤＤＲＥＳＳ）の下位１１ビット（１０：００）となる。
【００３８】
残りのメモリアドレス（ＮＡＮＤ  ＡＤＤＲＥＳＳ）の内、最上位の２ビット（２３：２２）は前述のテストモード指示情報（ＴＥＳＴ＿ＭＯＤＥ）として使用されるテストモード指定アドレス（ＴＭＡ）である。最上位の２ビット（２３：２２）＝“００”は通常動作（ＮＯＲＭＡＬ）を指定するものであり、この場合には、エラー制御モジュール１３２によるデータ変更処理動作は実行されない。最上位の２ビット（２３：２２）の他の３通りの組み合わせは、それぞれエラー動作（ＦＡＩＬ  ＭＯＤＥ）を指示するものである。エラー動作（ＦＡＩＬ  ＭＯＤＥ）の具体的な内容を図６に示す。
【００３９】
エラー制御モジュール１３２の動作モードはライト／リードの各々について４通りずつ定義されている。ライトモードにおいて、最上位の２ビット（２３：２２）＝“００”の場合には、エラー制御モジュール１３２の動作モードはＰＡＳＳモードとなり、ライトデータをそのままメモリモジュールモデル１３１に供給する。最上位の２ビット（２３：２２）＝“０１”の場合には、エラー制御モジュール１３２の動作モードは１ｂｉｔ＿Ｆａｉｌモードとなり、１バイトのライトデータの最上位ビット（０７）をビット反転した後に、メモリモジュールモデル１３１に供給する。最上位の２ビット（２３：２２）＝“１０”の場合には、エラー制御モジュール１３２の動作モードは２ｂｉｔ＿Ｆａｉｌモードとなり、１バイトのライトデータの上位２ビット（０７：０６）をビット反転した後に、メモリモジュールモデル１３１に供給する。さらに、最上位の２ビット（２３：２２）＝“１１”の場合には、エラー制御モジュール１３２の動作モードは３ｂｉｔ＿Ｆａｉｌモードとなり、１バイトのライトデータの上位３ビット（０７：０５）をビット反転した後に、メモリモジュールモデル１３１に供給する。
【００４０】
ＥＣＣによって回復可能なビットエラーは２ビットエラーまでであるので、１ｂｉｔ＿Ｆａｉｌモードまたは２ｂｉｔ＿Ｆａｉｌモードと、３ｂｉｔ＿Ｆａｉｌモードとを選択的に使用することにより、ＬＳＩモデル１２のエラー検出・訂正機能を多角的に検証することが可能となる。
【００４１】
リードモードにおいても、ＰＡＳＳモード、１ｂｉｔ＿Ｆａｉｌモード、２ｂｉｔ＿Ｆａｉｌモード、３ｂｉｔ＿Ｆａｉｌモードが定義されている。
【００４２】
図５において、さらに残りのメモリアドレス（ＮＡＮＤ  ＡＤＤＲＥＳＳ）の内、中位の９ビット（２０：１２）は、前述のテストアドレス情報（ＴＥＳＴ＿ＡＤＤＲ）として使用されるアドレス（ＳＡ）である。この中位９ビット（２０：１２）で指定されたメモリ番地は、前述の比較モジュール１３３によって、下位９ビット（０８：００）のカラムアドレスと比較される。つまり、下位９ビット（０８：００）のカラムアドレス値が中位９ビット（２０：１２）で指定されたメモリ番地に一致したときに、最上位の２ビット（２３：２２）に従ってエラー制御モジュール１３２が動作する。
【００４３】
ページリード／ページライトにおいては、下位９ビット（０８：００）のカラムアドレスの値は、ＬＳＩモデル１２から指定されるアドレス値を先頭として順次＋１ずつ更新されるので、ページ内のデータの内、中位９ビット（２０：１２）で指定されたメモリ番地に一致する１バイト分のデータが変更対象として選択されることになる。したがって、中位９ビット（２０：１２）の値の設定によって、図７のように、ページセレクトアドレスで指定されるページ内の任意のカラム位置のデータにエラーを発生させることができる。そして、そのエラーの内容は、最上位の２ビット（２３：２２）の値によって決定される。
【００４４】
次に、図８および図９のフローチャートを参照して、本実施形態のシミュレーションプログラムによって実行されるシミュレーション方法の手順を説明する。
【００４５】
図８はライトモード時のシミュレーション動作を示している。まず、テストマスタモデル１１によってテストパターンファイル１０の読み込みが行われ（ステップＳ１１）、その読み込んだテストパターンファイル１０の内容に従って、テストパターンが発生される（ステップＳ１２）。このテストパターンには、メモリモデル１３にライト動作を実行させるためのコマンド、メモリアドレス、ライトデータなどが含まれており、それらがＬＳＩモデル１２に与えられる。ＬＳＩモデル１２は、テストマスタモデル１１からの指示の内容を解釈し、それに応じた処理を実行する（ステップＳ１３）。
【００４６】
メモリアドレスが与えられた場合には、ＬＳＩモデル１２はメモリモデル１３をアクセスするために、そのメモリアドレスをメモリモデル１３に発行する。この場合、そのメモリアドレスの下位１１ビット（ページセレクトアドレスＰＡ＋カラムアドレスＭＡ）はＬＳＩモデル１２からメモリモジュールモデル１３１にセットされる（ステップＳ１４）。ページライトの場合には、カラムアドレスＭＡの値は通常はページ内の先頭番地を示す。
【００４７】
次いで、メモリアドレスの中位９ビット（２０：１２）が、エラー発生位置を指定するいるアドレスＳＡとして比較モジュール１３３にセットされ、またメモリアドレスの上位２ビット（２３：２２）が動作モードを指定するアドレスＴＭＡとしてエラー制御モジュール１３２にセットされる（ステップＳ１５）。
【００４８】
ライトデータが与えられた場合には、ＬＳＩモデル１２はライトデータ（１バイト）を受け取るたびにＥＣＣを計算する（ステップＳ１６）。すなわち、ＥＣＣは５１２バイトのデータに対して付加されるものであるので、新たなライトデータ（１バイト）を受け取るたびに、それに応じたＥＣＣの再計算が行われる。そして、そのライトデータがメモリモジュールモデル１３１に与えられる。以降は、メモリモデル１３内の動作となる。
【００４９】
メモリモデル１３では、まず、比較モジュール１３３によってＭＡ＝ＳＡの有無が判定される（ステップＳ１７）。不一致の場合には、ライトデータ（１バイト）がそのままメモリモジュールモデル１３１のデータレジスタ機能部に書き込まれる（ステップＳ１９）。一方、ＭＡ＝ＳＡの場合には、ＴＭＡに従ったビット反転動作がエラー制御モジュール１３２によって実行されることによってエラーデータ（１バイト）が生成され（ステップＳ１８）、そのエラーデータがメモリモジュールモデル１３１のデータレジスタ機能部に書き込まれる（ステップＳ１９）。
【００５０】
この後、カラムアドレスＭＡの値が＋１された後（ステップＳ２０）、１ページ分のデータがデータレジスタに揃ったか否かが判断される（ステップＳ２１）。１ページ分のデータが揃うまで、テキストパターンファイルからのライトデータの読み出し、ＥＣＣ計算、データレジスタへの書き込みが繰り返し行われる。そして、１ページ分のデータとそれに対応するＥＣＣが揃った段階で、ページセレクトアドレスＰＡで指定されたページへの書き込みが実行される（ステップＳ２２）。
【００５１】
ＥＣＣは変更が加えられる前のライトデータを元に作成しているので、エラーデータを書き込んだページからデータとＥＣＣを読み出してＬＳＩモデル１２に与えることにより、メモリエラー発生時におけるＬＳＩモデル１２のエラー検出・訂正機能を検証することができる。
【００５２】
図９はリードモード時のシミュレーション動作を示している。まず、テストマスタモデル１１によってテストパターンファイル１０の読み込みが行われ（ステップＳ３１）、その読み込んだテストパターンファイル１０の内容に従って、テストパターンが発生される（ステップＳ３２）。このテストパターンには、メモリモデル１３にリード動作を実行させるためのコマンド、メモリアドレス、リードするデータの期待値データなどが含まれており、それらがＬＳＩモデル１２に与えられる。ＬＳＩモデル１２は、テストマスタモデル１１からの指示の内容を解釈し、それに応じた処理を実行する（ステップＳ３３）。
【００５３】
メモリアドレスが与えられた場合には、ＬＳＩモデル１２はメモリモデル１３をアクセスするために、そのメモリアドレスをメモリモデル１３に発行する。この場合、そのメモリアドレスの下位１１ビット（ページセレクトアドレスＰＡ＋カラムアドレスＭＡ）はＬＳＩモデル１２からメモリモジュールモデル１３１にセットされる（ステップＳ３４）。ページリードの場合には、カラムアドレスＭＡの値は通常はページ内の先頭番地を示す。
【００５４】
次いで、メモリアドレスの中位９ビット（２０：１２）が、エラー発生位置を指定するアドレスＳＡとして比較モジュール１３３にセットされ、またメモリアドレスの上位２ビット（２３：２２）が動作モードを指定するアドレスＴＭＡとしてエラー制御モジュール１３２にセットされる（ステップＳ３５）。
【００５５】
そして、ＬＳＩモデル１２からの指示により、メモリモデル１３のデータ読み出し処理が開始される。ページリード時には、メモリモジュールモデル１３１は、まず、ページセレクトアドレスＰＡで指定された１ページ分のデータ（データ＋ＥＣＣ）をデータレジスタ２０２に一括して読み出す（ステップＳ３６）。そして、カラムアドレスＭＡを＋１ずつ更新しながら、データレジスタ２０２から１バイト単位でデータの読み出しが行われる。この場合、メモリモデル１３では、まず、比較モジュール１３３によってＭＡ＝ＳＡの有無が判定される（ステップＳ３７）。不一致の場合には、リードデータ（１バイト）がそのままメモリモデル１３からＬＳＩモデル１２に読み出される（ステップＳ３９）。一方、ＭＡ＝ＳＡの場合には、ＴＭＡに従ったビット反転動作がエラー制御モジュール１３２によって実行されることによってエラーデータ（１バイト）が生成され（ステップＳ３８）、そのエラーデータがメモリモデル１３からＬＳＩモデル１２に読み出される（ステップＳ３９）。
【００５６】
ＬＳＩモデル１２では、リードデータを受け取るたびにそのデータからＥＣＣが生成される（ステップＳ４０）。これは、リードデータから新たなＥＣＣを生成し、これを、メモリモデル１３から読み出されるＥＣＣと比較することによってエラー検出・エラー訂正を行うためである。この後、メモリモデル１３では、カラムアドレスＭＡの値が＋１された後（ステップＳ４１）、１ページ分のデータがデータレジスタから読み出されたか否かが判断される（ステップＳ４１）。１ページ分のデータの読み出しが終了するまで、データレジスタからの読み出しが繰り返し実行される。この場合、実際には、ステップＳ３７以降の処理が繰り返されることになる。
【００５７】
１ページ分のデータの読み出しが終了すると、テストパターンファイルからの新たなテストパターンの読み出しが開始される。
【００５８】
以上のように、リードモード時においても、必要に応じて任意の番地からの読み出しデータにエラーを生成させることができ、メモリエラー発生時におけるＬＳＩモデル１２のエラー検出・訂正機能を検証することができる。
【００５９】
なお、本実施形態のシミュレーション方法はコンピュータプログラムによって実現されているので、そのプログラムをコンピュータ読み取り可能な記録媒体に記録しておくことにより、通常のコンピュータ上でシミュレーション動作を実行することができる。また、本実施形態のメモリモデル１３はエラー発生機能付きのメモリモデルとして汎用的に使用することもできる。つまり、ライトしたデータを確実に読み出すだけの通常のメモリモデルに図２のエラー制御モジュール１３２および比較モジュール１３３の記述を追加し、それをメモリモデルとして使用するだけで、メモリアドレスの指定によるエラー発生制御を容易に行うことができる。
【００６０】
さらに、本実施形態では、シミュレーションシステムをコンピュータプログラムにて実現したが、図１および図２の構成を全てハードウエアによって実現することも可能である。この場合、プリント回路基板上に図１および図２で説明したモデルに対応するロジックが実装されることになる。
【００６１】
【発明の効果】
以上説明したように、本発明によれば、メモリアドレスの指定によってメモリエラーを発生させることができるので、メモリのエラー動作についても容易にシミュレーションすることが可能となる。よって、メモリエラー発生時のＬＳＩの動作を正しく検証することができる。また、特に、メモリ動作のシミュレーションに使用するメモリアドレスのビット部以外の他のビット部を用いて、エラーモードとエラー発生位置を指定できるので、メモリアドレスの指定だけで、任意の位置に任意のエラーを発生させることができる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るシミュレーションシステムの構成を示すブロック図。
【図２】同実施形態のシミュレーションシステムで用いられるメモリモデルの機能構成を示すブロック図。
【図３】同実施形態のシミュレーションシステムで動作検証されるメモリカード内のフラッシュＥＥＰＲＯＭの具体的な構成の一例を示す図。
【図４】同実施形態のシミュレーションシステムで用いられるメモリモデルに割り当てられるメモリアドレス空間の一例を示す図。
【図５】同実施形態のシミュレーションシステムにおけるメモリアドレスのマッピング例を示す図。
【図６】同実施形態のシミュレーションシステムにおけるエラーモードを説明するための図。
【図７】同実施形態のシミュレーションシステムにおけるエラー発生位置制御の一例を示す図。
【図８】同実施形態のシミュレーションシステムにおけるデータライト時のシミュレーション動作を示すフローチャート。
【図９】同実施形態のシミュレーションシステムにおけるデータリード時のシミュレーション動作を示すフローチャート。
【符号の説明】
１０…テストパターンファイル
１１…テストマスタモデル
１２…ＬＳＩモデル
１３…メモリモデル
１００…メモリカード
１０１…コントローラ
１０２…メモリ
１３１…メモリモジュールモデル
１３２…エラー制御モジュール
１３３…比較モジュール
【図１】
0004180757.tif 000002
【図２】
0004180757.tif 000003
【図３】
0004180757.tif 000004
【図４】
0004180757.tif 000005
【図５】
0004180757.tif 000006
【図６】
0004180757.tif 000007
【図７】
0004180757.tif 000008
【図８】
0004180757.tif 000009
【図９】
0004180757.tif 000010