(57)【要約】      （修正有）【課題】半導体記憶装置の模擬方法および模擬装置を提供する。【解決手段】コントローラ２２０ａに通信路２４０ａを介して接続された半導体記憶装置２３０ａを模擬する模擬装置１００による模擬方法である。模擬装置は、コントローラから半導体記憶装置に転送され、コントローラによって書き込みが命令された第１データと、半導体記憶装置に記憶され、半導体記憶装置からコントローラに転送され、コントローラから読み出しが命令されたデータである第２データを第１通信路に設けられた分岐部２５０から取得し、第１データと第２データとの比較に基づいて得られる半導体記憶装置の特性に基づいて、半導体記憶装置の応答を模擬する。【選択図】図１
2020154477.tif 000002
【特許請求の範囲】
【請求項１】
第１コントローラに第１通信路を介して接続された半導体記憶装置を模擬する模擬装置による模擬方法であって、
前記第１コントローラから前記半導体記憶装置に転送され、前記第１コントローラによって書き込みが命令された第１データを、前記第１通信路に設けられた分岐部から取得することと、
前記半導体記憶装置に記憶され、前記半導体記憶装置から前記第１コントローラに転送され、前記第１コントローラから読み出しが命令された第２データを、前記分岐部から取得することと、
前記第１データと前記第２データとの比較に基づいて得られる前記半導体記憶装置の特性を示す第１情報に基づいて、前記半導体記憶装置の応答を模擬すること、
を備える模擬方法。
【請求項２】
前記第１情報は前記第２データの誤りに関する情報を含む、
請求項１に記載の模擬方法。
【請求項３】
前記模擬することは、
第２コントローラによって書き込みが命令された第３データを前記第２コントローラと前記模擬装置とを接続する第２通信路を介して受信することと、
受信した前記第３データを前記模擬装置が有する記憶装置に格納することと、
前記第２コントローラからの前記第３データを読み出す命令に応じて、格納した前記第３データを前記記憶装置から読み出して前記第１情報に基づいて加工して、加工された前記第３データである第４データを前記第２コントローラに前記第２通信路を介して送信することと、
を含む請求項１に記載の模擬方法。
【請求項４】
前記第１コントローラは、ホストに接続され、前記ホストからの要求に基づいて前記半導体記憶装置に命令を送信し、
前記模擬装置と前記ホストとを接続する第３通信路を介して前記ホストから第１指示を受信することと、
受信した前記第１指示に応じて、前記第１コントローラの内部状態を示す第２情報を取得し、前記第１情報と取得した前記第２情報とを含むスナップショット情報を前記記憶装置に格納することと、
前記模擬することを開始する前に、前記スナップショット情報に含まれる前記第２情報を前記第２コントローラにセットし、前記スナップショット情報に含まれる前記第１情報をロードすることと、
を更に備える請求項３に記載の模擬方法。
【請求項５】
前記スナップショット情報を格納することはそれぞれ異なるタイミングで複数回実行され、
前記第２情報をセットし前記第１情報をロードすることは、前記記憶装置に格納された複数のスナップショット情報のうちの１つを指定する第２指示を前記ホストから受信すること、
を含む請求項４に記載の模擬方法。
【請求項６】
前記第１情報は前記第２データの誤りに関する情報を含み、
前記第４データを送信することは、前記誤りに関する情報に基づいて前記第３データに誤りを発生させること、
を含む請求項３に記載の模擬方法。
【請求項７】
前記半導体記憶装置は、複数の記憶領域を備え、
前記複数の記憶領域のうちの前記第１データが格納された記憶領域と対応付けて、前記模擬装置が備える記憶装置に前記第１情報を格納すること、
を更に備える請求項１に記載の模擬方法。
【請求項８】
第１コントローラと半導体記憶装置とを接続する第１通信路に接続可能なインタフェースと、
前記第１コントローラから前記半導体記憶装置に転送され、前記第１コントローラによって書き込みが命令された第１データを、前記インタフェースを介して取得し、
前記半導体記憶装置に記憶され、前記半導体記憶装置から前記第１コントローラに転送され、前記第１コントローラから読み出しが命令された第２データを、前記インタフェースを介して取得し、
前記第１データと前記第２データとの比較に基づいて得られる前記半導体記憶装置の特性を示す第１情報に基づいて、前記半導体記憶装置の応答を模擬する、処理装置と、
を備える模擬装置。
【請求項９】
前記第１情報は前記第２データの誤りに関する情報を含む、
請求項８に記載の模擬装置。
【請求項１０】
記憶装置をさらに備え、
前記処理装置は、
第２コントローラによって書き込みが命令された第３データを前記第２コントローラと前記模擬装置とを接続する第２通信路を介して受信し、
受信した前記第３データを前記記憶装置に格納し、
前記第２コントローラからの前記第３データを読み出す命令に応じて、格納した前記第３データを前記記憶装置から読み出して前記第１情報に基づいて加工して、加工された前記第３データである第４データを前記第２コントローラに前記第２通信路を介して送信する、
請求項８に記載の模擬装置。
【請求項１１】
前記第１コントローラは、ホストに接続され、前記ホストからの要求に基づいて前記半導体記憶装置に命令を送信し、
前記処理装置は、
前記模擬装置と前記ホストとを接続する第３通信路を介して前記ホストから第１指示を受信し、
受信した前記第１指示に応じて、前記第１コントローラの内部状態を示す第２情報を取得し、前記第１情報と取得した前記第２情報とを含むスナップショット情報を前記記憶装置に格納し、
前記模擬を開始する前に、前記スナップショット情報に含まれる前記第２情報を前記第２コントローラにセットし、前記スナップショット情報に含まれる前記第１情報をロードする、
請求項１０に記載の模擬装置。
【請求項１２】
前記処理装置は、
前記第１指示をそれぞれ異なるタイミングで複数受信し、
前記複数の第１指示のそれぞれを受信する毎に前記スナップショット情報を生成して前記記憶装置に格納し、
前記記憶装置に格納された複数の前記スナップショット情報のうちの１つを指定する第２指示を前記ホストから受信する、
請求項１１に記載の模擬装置。
【請求項１３】
前記第１情報は前記第２データの誤りに関する情報を含み、
前記処理装置は、前記誤りに関する情報に基づいて前記第３データに誤りを発生させる、
請求項１０に記載の模擬装置。
【請求項１４】
前記半導体記憶装置は、複数の記憶領域を備え、
前記模擬装置は、記憶装置をさらに備え、
前記処理装置は、前記第１情報を、前記複数の記憶領域のうちの前記第１データが格納された記憶領域と対応付けて前記記憶装置に格納する、
請求項８に記載の模擬装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、半導体記憶装置の模擬方法および模擬装置に関する。
【背景技術】
【０００２】
従来、半導体記憶装置を制御するコントローラの設計または製造の段階においては、コントローラに対し、実際の使用条件で仕様通りに動作するか否かを評価する試験が実施される。そのような試験においてコントローラに不具合が発生した場合、コントローラが改良され、その後、不具合の解消の確認などが実施される。不具合の解消の確認の際には、その不具合が生じたときの挙動を半導体記憶装置に再現させることが求められる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−１５１９０１号公報
【特許文献２】特開２００９−２５２３１５号公報
【特許文献３】特開２００６−１４６４８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一つの実施形態は、半導体記憶装置の挙動を模擬する模擬方法および模擬装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
一つの実施形態によれば、模擬方法は、第１コントローラに第１通信路を介して接続された半導体記憶装置を模擬する模擬装置による模擬方法である。模擬方法は、第１データを前記第１通信路に設けられた分岐部から取得することと、第２データを分岐部から取得することと、第１情報に基づいて半導体記憶装置の応答を模擬することと、を備える。第１データは、第１コントローラから半導体記憶装置に転送され、第１コントローラによって書き込みが命令されたデータである。第２データは、半導体記憶装置に記憶され、半導体記憶装置から第１コントローラに転送され、第１コントローラから読み出しが命令されたデータである。第１情報は、第１データと第２データとの比較に基づいて得られる半導体記憶装置の特性を示す。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１の実施形態の模擬装置が学習モードで使用される場合の一例を説明するための図である。
【図２】図２は、第１の実施形態のメモリチップの構成の一例を示す図である。
【図３】図３は、第１の実施形態のメモリセルアレイに含まれる１個のブロックの構成例を示す回路図である。
【図４】図４は、第１の実施形態の模擬装置が模擬モードで使用される場合の一例を説明するための図である。
【図５】図５は、第１の実施形態の模擬装置の具体的な構成を示す例示的かつ模式的な図である。
【図６】図６は、第１の実施形態の記憶装置に格納される情報の一例を説明するための例示的かつ模式的な図である。
【図７】図７は、学習モードの模擬装置を用いた第１の実施形態の試験方法の一例を説明するフローチャートである。
【図８】図８は、模擬モードの模擬装置を用いた第１の実施形態の試験方法の一例を説明するフローチャートである。
【図９】図９は、第２の実施形態の模擬装置が学習モードで使用される場合の一例を説明するための図である。
【図１０】図１０は、第２の実施形態の模擬装置が備える記憶装置に格納される情報の例示的かつ模式的な図である。
【図１１】図１１は、第２の実施形態の模擬装置が模擬モードで使用される場合の一例を説明するための図である。
【図１２】図１２は、第２の実施形態の模擬装置の具体的な構成を示す例示的かつ模式的な図である。
【図１３】図１３は、学習モードの模擬装置を用いた第２の実施形態の試験方法の一例を説明するフローチャートである。
【図１４】図１４は、模擬モードの模擬装置を用いた第２の実施形態の試験方法の一例を説明するフローチャートである。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態にかかる半導体記憶装置の模擬方法および模擬装置を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００８】
（第１の実施形態）
第１の実施形態の模擬装置は、半導体記憶装置の特性を学習する学習モードと、学習した特性に基づいて半導体記憶装置の挙動を模擬する模擬モードと、の２つのモードで動作することができる。
【０００９】
図１は、第１の実施形態の模擬装置が学習モードで使用される場合の一例を説明するための図である。本図に示されるように、ホスト２１０ａ、コントローラ２２０ａ、およびメモリチップ２３０ａは、コントローラ２２０ａが実際の使用条件でも仕様通りに動作するか否かを評価するための試験装置２００ａを構成している。
【００１０】
メモリチップ２３０ａは、ここでは一例として、ＮＡＮＤ型フラッシュメモリのメモリチップであることとする。なお、メモリチップ２３０ａは、半導体記憶装置の一例である。
【００１１】
コントローラ２２０ａとメモリチップ２３０ａとは、通信路２４０ａによって接続されている。通信路２４０ａは、第１通信路の一例である。
【００１２】
通信路２４０ａは、例えば、ＩＯ信号線および制御信号線を含む、配線群によって構成される。ＩＯ信号線は、データ、アドレス、およびコマンドを送受信するための信号線である。制御信号線は、例えば、ＣＥ（チップイネーブル）信号、ＷＥ（ライトイネーブル）信号、ＲＥ（リードイネーブル）信号、ＣＬＥ（コマンドラッチイネーブル）信号、ＡＬＥ（アドレスラッチイネーブル）信号、ＷＰ（ライトプロテクト）信号、ＤＱＳ（データストローブ）信号、Ｒｙ／Ｂｙ（レディ／ビジー）信号等を送受信するための信号線である。
【００１３】
コントローラ２２０ａは、メモリチップ２３０ａとともにメモリシステムを構成し得る電子部品である。コントローラ２２０ａは、ハードウェア回路によって構成されてもよいし、ファームウェアなどのプログラムを実行するプロセッサを備えていてもよい。また、コントローラ２２０ａは、レジスタ、フリップフロップ、またはメモリなど、の記憶装置を備えていてもよい。コントローラ２２０ａは、メモリシステムにおいて、メモリシステムの外部の装置からの要求に基づいてメモリチップ２３０ａに対するアクセスを実行することができる。外部の装置は、例えば、サーバコンピュータ、パーソナルコンピュータ、ＣＰＵ（Central  Processing  Unit）、携帯用情報端末、などである。要求は、例えば、データを格納する要求、データを読み出す要求、データを消去する要求、を含む。なお、コントローラ２２０ａは、第１コントローラの一例である。
【００１４】
ホスト２１０ａは、外部の装置としての動作を行う。つまり、ホスト２１０ａは、コントローラ２２０ａに対し、各種の要求を送信することができる。ホスト２１０ａは、ここでは、コントローラ２２０ａの動作を試験するための予め作成された手順に従って、コントローラ２２０ａに対して要求を逐次送信する。手順は、例えばプログラムに記述されている。ホスト２１０ａは、例えばプロセッサであり、プログラムに記述された手順にしたがって、コントローラ２２０ａに対して要求を送信する。なお、ホスト２１０ａは、プログラムを要さないハードウェア回路によって構成されてもよい。
【００１５】
コントローラ２２０ａは、ホスト２１０ａからの要求などに基づいて、メモリチップ２３０ａに対するアクセスを実行する。アクセスは、具体的には、コントローラ２２０ａが、メモリチップ２３０ａに対してデータを書き込むためのライトコマンドをデータとともに送信したり、メモリチップ２３０ａからデータを読み出すためのリードコマンドを送信したり、メモリチップ２３０ａからリードコマンドに応じて出力されたデータを受信したりすることを含む。ライトコマンドおよびリードコマンドは、アクセス先を示すアドレス（物理アドレス）を伴う。
【００１６】
以降、コントローラ２２０ａからメモリチップ２３０ａに転送されたデータを、ライトデータと表記することがある。また、メモリチップ２３０ａからコントローラ２２０ａに転送されたデータを、リードデータと表記することがある。
【００１７】
図２は、第１の実施形態のメモリチップ２３０ａの構成の一例を示す図である。メモリチップ２３０ａは、制御回路２３１と、メモリセルアレイ２３２と、を備える。制御回路２３１は、コントローラ２２０ａからのコマンドに基づいてメモリセルアレイ２３２に対するアクセスを実行する。メモリセルアレイ２３２に対するアクセスは、データをメモリセルＭＴにプログラムするプログラム処理、メモリセルＭＴにプログラムされたデータをリードするリード処理、およびメモリセルＭＴにプログラムされたデータをイレースするイレース処理を含む。
【００１８】
メモリセルアレイ２３２は、複数のブロックを備える。各ブロックに格納されたデータは、一括してイレースされる。各ブロックは、複数のページを備える。各ページは、プログラム処理またはリード処理が実行される最小の単位である。
【００１９】
図３は、第１の実施形態のメモリセルアレイ２３２に含まれる１個のブロックの構成例を示す回路図である。本図に示されるように、各ブロックは、Ｘ方向に沿って順に配列された（ｐ＋１）個のＮＡＮＤストリングを備えている（ｐ≧０）。（ｐ＋１）個のＮＡＮＤストリングにそれぞれ含まれる選択トランジスタＳＴ１は、ドレインがビット線ＢＬ０〜ＢＬｐに接続され、ゲートが選択ゲート線ＳＧＤに共通接続されている。また、選択トランジスタＳＴ２は、ソースがソース線ＳＬに共通接続され、ゲートが選択ゲート線ＳＧＳに共通接続されている。
【００２０】
各メモリセルＭＴは、半導体基板上に形成された積層ゲート構造を備えたＭＯＳＦＥＴ（Metal  Oxide  Semiconductor  Field  Effect  Transistor）から構成される。積層ゲート構造は、半導体基板上にトンネル酸化膜を介在して形成されたフローティングゲート、及びフローティングゲートの上方にゲート間絶縁膜を介在して形成された制御ゲート電極を含んでいる。フローティングゲートに蓄えられる電子の数に応じてしきい値電圧が変化する。メモリセルＭＴは、しきい値電圧の違いに応じてデータを記憶する。即ち、メモリセルＭＴは、フローティングゲートに、データに応じた量の電荷を保持する。
【００２１】
各ＮＡＮＤストリングにおいて、（ｑ＋１）個のメモリセルＭＴは、選択トランジスタＳＴ１のソースと選択トランジスタＳＴ２のドレインとの間に、それぞれの電流経路が直列接続されるように配置されている。そして、最もドレイン側に位置するメモリセルＭＴから順に、制御ゲート電極がワード線ＷＬ０〜ＷＬｑにそれぞれ接続されている。従って、ワード線ＷＬ０に接続されたメモリセルＭＴのドレインは選択トランジスタＳＴ１のソースに接続され、ワード線ＷＬｑに接続されたメモリセルＭＴのソースは選択トランジスタＳＴ２のドレインに接続されている。
【００２２】
ワード線ＷＬ０〜ＷＬｑは、ブロック内のＮＡＮＤストリング間で、メモリセルＭＴの制御ゲート電極を共通に接続している。つまり、ブロック内において同一行にあるメモリセルＭＴの制御ゲート電極は、同一のワード線ＷＬに接続される。各メモリセルＭＴに１ビットの値を保持可能に構成される場合には、同一のワード線ＷＬに接続される（ｐ＋１）個のメモリセルＭＴは１ページとして取り扱われ、このページごとにプログラム処理及びリード処理が行われる。
【００２３】
なお、各メモリセルＭＴには、複数ビットのデータが格納され得る。例えば、各メモリセルＭＴがｎ（ｎ≧２）ビットのデータを格納可能な場合、ワード線当たりの記憶容量はｎページ分のサイズに等しくなる。
【００２４】
制御回路２３１は、プログラム処理において、プログラム対象のページのメモリセルＭＴのしきい値電圧を、データに対応したレベルに設定する。また、制御回路２３１は、リード処理において、リード対象のページのメモリセルＭＴのしきい値電圧を所定の判定電圧と比較することによって、当該しきい値電圧のレベルをデータにデコードする。また、制御回路２３１は、イレース処理において、イレース対象のブロックに含まれる全てのメモリセルＭＴのしきい値電圧を、イレースされた状態に対応した所定のレベルに設定する。
【００２５】
図１に説明を戻す。
各メモリセルＭＴのしきい値電圧は、種々の要因で変動し得る。従って、メモリセルＭＴにプログラムされたデータ値と異なるデータ値がそのメモリセルＭＴから読み出される、誤りが発生し得る。誤りによって化けたデータ値は、コントローラ２２０ａにおいて検出され、正しいデータ値に訂正される。
【００２６】
つまり、コントローラ２２０ａは、リードデータに含まれる誤りを検出して訂正する、誤り検出・訂正機能を有している。コントローラ２２０ａは、データに対し、誤り訂正のための符号化を施して、符号化されたデータをライトデータとしてメモリチップ２３０ａに送信する。また、コントローラ２２０ａは、リードデータを受信した際に、リードデータを復号化することによって、リードデータに含まれる誤りの検出と訂正とを実行する。誤りの訂正が成功した場合、コントローラ２２０ａは、符号化前のデータと同じ状態のデータを取得することができる。
【００２７】
なお、コントローラ２２０ａは、ここでは詳細な説明は省略するが、ホスト２１０ａからの要求に応じた動作の他に、リフレッシュ処理、ウェアレベリング処理、またはガベージコレクション処理などを実行することができる。コントローラ２２０ａは、これらの処理を、ホスト２１０ａからの要求に基づかないで、自律的に実行する。これらの処理の際にも、コントローラ２２０ａは、メモリチップ２３０ａに対してアクセスを実行することができる。
【００２８】
第１の実施形態では、通信路２４０ａには、通信路２４０ａを分岐させる分岐部２５０が設けられている。分岐部２５０によって生成された分岐先は、模擬装置１００に接続されている。これによって、模擬装置１００は、コントローラ２２０ａとメモリチップ２３０ａとの間を転送される各種の信号を、分岐部２５０を介して受信することができる。模擬装置１００は、学習モードにおいては、コントローラ２２０ａとメモリチップ２３０ａとの間を転送される各種の信号に基づいて、メモリチップ２３０ａの特性を学習することができる。
【００２９】
特性は、誤りに関する特性を含む。第１の実施形態では、一例として、誤り率および誤りパターンを特性として見なす。
【００３０】
誤り率は、正常なビットデータの数または単位データを構成するビットデータの数と、誤りによって化けたビットデータの数と、の比である。単位データは、例えばページサイズのデータである。なお、誤り率の定義はこれに限定されない。所定サイズのデータに含まれる誤りによって化けたビットデータの比または量に対応する限り、任意の数量が誤り率として定義され得る。
【００３１】
誤りパターンは、誤りが出現する傾向を示した情報である。一例では、誤りパターンは、ワード線における誤りが出現しやすい部位を示す。
【００３２】
学習された特性は、特性情報（図６参照）として記録される。特性情報が得られた後、模擬装置１００は、模擬モードで使用され得る。
【００３３】
図４は、第１の実施形態の模擬装置１００が模擬モードで使用される場合の一例を説明するための図である。本図に示されるように、ホスト２１０ｂ、コントローラ２２０ｂ、模擬装置１００は、コントローラ２２０ｂが実際の使用条件でも仕様通りに動作するか否かを評価するための試験装置２００ｂを構成している。
【００３４】
ホスト２１０ｂは、ホスト２１０ａと同一の動作を実行する。コントローラ２２０ｂは、コントローラ２２０ａと同じであってもよいし、コントローラ２２０ａと異なるコントローラであってもよい。コントローラ２２０ｂは、発生した不具合に対応して改良されたコントローラであってもよい。コントローラ２２０ｂは、第２コントローラの一例である。
【００３５】
コントローラ２２０ｂと模擬装置１００とは、通信路２４０ｂによって接続されている。通信路２４０ｂは、第２通信路の一例である。
【００３６】
通信路２４０ｂは、通信路２４０ａと同じ配線群によって構成される。つまり、例えば、通信路２４０ｂは、ＩＯ信号線および制御信号線を含む。制御信号線は、例えば、ＣＥ信号、ＷＥ信号、ＲＥ信号、ＣＬＥ信号、ＡＬＥ信号、ＷＰ信号、ＤＱＳ信号、Ｒｙ／Ｂｙ信号等を送受信するための信号線である。
【００３７】
模擬装置１００は、模擬モードにおいては、特性情報に従って、メモリチップ２３０ａの挙動を模擬した動作を行う。例えば、模擬装置１００は、コントローラ２２０ｂからライトコマンドを受信すると、ライトコマンドとともに送られてきたライトデータを、内部に備える記憶装置１０６に格納する。その後、模擬装置１００は、すでに記憶装置１０６に格納されたライトデータの読み出しを命令するリードコマンドをコントローラ２２０ｂから受信すると、記憶装置１０６からライトデータを読み出して、読み出されたライトデータを特性情報に基づいて加工して、加工されたライトデータをリードデータとしてコントローラ２２０ｂに送信する。
【００３８】
ここで、加工とは、一例では、データ内に誤りを生成することである。つまり、模擬装置１００は、コントローラ２２０ｂからライトデータとして受信したデータに誤りを生成し、誤りを含んだデータをリードデータとして出力する。誤りは、学習したメモリチップ２３０ａの特性に従って生成される。これによって、模擬装置１００は、メモリチップ２３０ａと同じ特性を有する擬似的なメモリチップとして動作することが可能である。
【００３９】
なお、加工の方法は上記の方法に限定されない。模擬装置１００は、ライトデータに対して種々の加工を施して、加工後のライトデータをリードデータとして送信することができる。
【００４０】
実施形態と比較される技術によれば、試験においてコントローラに不具合が発生した場合、不具合を解明したり、改良後のコントローラが不具合を解消していることを確認したりするために、再試験が実行される。ここで、複数のメモリチップが同じ製造工程で製造された場合であっても、製造ばらつきなどに起因して、これらの複数のメモリチップ間で特性がばらつく。メモリチップの特性に関する条件を、不具合が発生した試験時と再試験時とで等しくするため、再試験では、不具合が発生した試験において用いられたメモリチップが用いられる。したがって、再試験を複数回実行したい場合には、再試験に要する合計の時間が、再試験の実行回数に応じて長くなる。以降では、実施形態と比較される技術を、比較例にかかる技術と表記する。
【００４１】
第１の実施形態では、模擬装置１００は、学習モードにおいて、メモリチップ２３０ａの特性を学習し、模擬モードにおいて、メモリチップ２３０ａと同じ特性を有する擬似的なメモリチップとして動作する。よって、初回の試験において、模擬装置１００を学習モードで使用し、コントローラ２２０ａに不具合が発生した場合、模擬装置１００を模擬モードで使用すれば、再試験においてメモリチップ２３０ａを不要とすることが可能となる。
【００４２】
また、例えば、複数台の模擬装置１００を用意して、複数台の模擬装置１００のそれぞれに同一の特性情報を設定すれば、当該複数台の模擬装置１００の全ては、メモリチップ２３０ａと同じ特性を有する擬似的なメモリチップとして動作する。つまり、当該複数台の模擬装置１００のそれぞれを、複数台の試験装置１００ｂのそれぞれに接続して使用すれば、複数回分の再試験を並列に実行することが可能となる。その結果、比較例にかかる技術に比べて、再試験に要する合計の時間を大幅に短縮することが可能となる。
【００４３】
続いて、第１の実施形態の模擬装置１００の具体的な構成について説明する。図５は、第１の実施形態の模擬装置１００の具体的な構成を示す例示的かつ模式的な図である。
【００４４】
模擬装置１００は、インタフェース１０１、コマンド解析装置１０２、応答解析装置１０３、応答装置１０４、誤り解析装置１０５、および記憶装置１０６を備える。応答装置１０４は、誤り生成装置１０７を備える。インタフェース１０１、コマンド解析装置１０２、応答解析装置１０３、応答装置１０４、および誤り解析装置１０５は、処理装置の一例である。
【００４５】
コマンド解析装置１０２、応答解析装置１０３、応答装置１０４、および誤り解析装置１０５のうちの一部または全部は、プログラムを要しないハードウェア回路によって構成されてもよいし、プログラムに基づいて動作するプロセッサによって構成されてもよい。また、模擬装置１００が備える各装置（インタフェース１０１、コマンド解析装置１０２、応答解析装置１０３、応答装置１０４、誤り解析装置１０５、および記憶装置１０６）のうちの一部または全部は、ＦＰＧＡ（field-programmable  gate  array）またはＡＳＩＣ（application  specific  integrated  circuit）によって構成されてもよい。
【００４６】
インタフェース１０１は、通信路２４０ａおよび通信路２４０ｂに接続するためのハードウェアである。インタフェース１０１は、物理的な端子および信号を受けるバッファを含み得る。
【００４７】
コマンド解析装置１０２は、コントローラ２２０ａおよびコントローラ２２０ｂが出力する信号を解析する装置である。コマンド解析装置１０２は、コントローラ２２０ａおよびコントローラ２２０ｂが出力する信号から、少なくとも、ライトコマンド、リードコマンド、物理アドレス、およびライトデータ、を取り出すことができる。
【００４８】
応答解析装置１０３は、学習モードにおいて、メモリチップ２３０ａから出力された信号を解析する装置である。応答解析装置１０３は、メモリチップ２３０ａから出力された信号から、少なくとも、リードデータを取り出すことができる。
【００４９】
応答装置１０４は、模擬モードにおいて、コントローラ２２０ｂからのコマンドに対する応答を生成して、生成した応答をコントローラ２２０ｂに送信することができる。
【００５０】
誤り生成装置１０７は、応答装置１０４がリードデータに相当するデータをコントローラ２２０ｂに送信する際に、当該データに誤りを生成する。これによって、応答装置１０４は、生成された誤りを含むデータを、リードデータとしてコントローラ２２０ｂに送信することができる。
【００５１】
誤り解析装置１０５は、学習モードにおいて、ライトデータとリードデータとの比較に基づいて、特性情報を取得する。つまり、誤り解析装置１０５は、ライトデータとリードデータとで異なっているデータビットを誤りとして特定し、特定された誤りの数および位置に基づいて、誤り率および誤りパターンを算出する。そして、誤り解析装置１０５は、算出した誤り率および誤りパターンを、特性情報として記録する。
【００５２】
記憶装置１０６は、レジスタ、ＳＲＡＭ（Static  Random  Access  Memory）、ＤＲＡＭ（Dynamic  Access  Memory）、フラッシュメモリ、ハードディスクドライブ、またはこれらの組み合わせによって構成される。記憶装置１０６には、ライトデータや特性情報などが格納される。
【００５３】
図６は、第１の実施形態の記憶装置１０６に格納される情報の一例を説明するための例示的かつ模式的な図である。記憶装置１０６には、メモリセルアレイ２３２が備える全てのページのそれぞれに対応したページ情報１０が格納される。
【００５４】
１つのページ情報１０は、対応するページに書き込まれたライトデータと、対応するページにかかる特性情報とを含む。つまり、この例によれば、特性情報はページ毎に算出されて記録される。特性情報は、前述したように、誤り率および誤りパターンを含む。
【００５５】
なお、特性情報は、誤り率および誤りパターンの他に、任意の情報を含み得る。例えば、特性情報は、電圧情報、温度情報、記憶モード、時刻情報、などを含んでいてもよい。電圧情報は、例えば、メモリセルＭＴのしきい値電圧を判定するための判定電圧など、対応するページに対するアクセス（プログラム処理またはリード処理）において制御回路２３１が使用した電圧値である。また、温度情報は、対応するページに対するアクセス（プログラム処理またはリード処理）におけるメモリチップ２３０ａまたはメモリチップ２３０ａの周辺環境の温度である。記憶モードは、１つのメモリセルＭＴに格納されるデータの量を示す情報である。時刻情報は、対応するページに対するアクセス（プログラム処理またはリード処理）が実行された時刻を示す情報である。
【００５６】
また、ページ情報１０の群のデータ構成は、特定の構成に限定されない。例えば、ページ情報１０の群は、１つのテーブルを構成してもよいし、１つのリストを構成していてもよい。また、必ずしも全てのページにかかるページ情報１０が記憶装置１０６に格納されていなくてもよい。例えば、学習モードにおいては、ライトデータが書き込まれていないページにかかるページ情報１０は、記憶装置１０６に格納されていなくてもよい。また、学習モードにおいては、リードが行われなかったことで特性情報が取得出来なかったページにかかるページ情報１０は、記憶装置１０６に格納されていなくてもよい。
【００５７】
また、各ページ情報１０には、対応するページに対してプログラム処理が実行される毎にライトデータが上書き形式で記録されてもよいし、ライトデータがログ形式で書き加えられてもよい。同様に、特性情報は、対応するページに対してアクセスが実行される毎に上書き形式で記録されてもよいし、ログ形式で書き加えられてもよい。
【００５８】
続いて、第１の実施形態の模擬装置１００を用いた一連の動作について説明する。
図７は、学習モードの模擬装置１００を用いた第１の実施形態の試験方法の一例を説明するフローチャートである。
【００５９】
模擬装置１００が学習モードで使用される場合には、図１に示されるように、模擬装置１００はコントローラ２２０ａとメモリチップ２３０ａとを接続する通信路２４０ａに設けられた分岐部２５０に接続される。
【００６０】
そして、試験が開始されると（Ｓ１０１）、ホスト２１０ａは、所定の手順でコントローラ２２０ａに各種の要求を送り、コントローラ２２０ａは、要求に基づいてメモリチップ２３０ａに対するアクセスを行う。また、コントローラ２２０ａは、リフレッシュ処理、ウェアレベリング処理、ガベージコレクション処理などを実行し、これらの処理の際に自律的にメモリチップ２３０ａに対するアクセスを実行する。
【００６１】
模擬装置１００では、インタフェース１０１は、コントローラ２２０ａとメモリチップ２３０ａとの間で転送される信号を、分岐部２５０を介して取得する。そして、コマンド解析装置１０２および応答解析装置１０３は、インタフェース１０１が取得した信号を解析する。
【００６２】
例えば、ライトコマンドが転送された場合（Ｓ１０２：Ｙｅｓ）、コマンド解析装置１０２は、当該ライトコマンドを検知して、ライトコマンドとともに通信路２４０ａを転送される物理アドレスおよびライトデータを取得する（Ｓ１０３）。そして、コマンド解析装置１０２は、取得したライトデータを、取得したアドレスが示すページに対応するページ情報１０に記録する（Ｓ１０４）。
【００６３】
なお、コマンド解析装置１０２は、ライトデータを記録する際に任意の情報を記録してもよい。例えば、コマンド解析装置１０２は、不図示の温度センサを用いて温度情報を取得して、取得した温度情報を特性情報のうちの一部として記録してもよい。また、コマンド解析装置１０２は、ライトデータを記録する際に、不図示のタイマから時刻情報を取得して、取得した時刻情報を特性情報のうちの一部として記録してもよい。
【００６４】
また、ライトコマンドではなくリードコマンドが転送された場合（Ｓ１０２：Ｎｏ、Ｓ１０５：Ｙｅｓ）、コマンド解析装置１０２は、当該リードコマンドを検知して、リードコマンドとともに転送される物理アドレスを取得する（Ｓ１０６）。また、応答解析装置１０３は、転送されたリードコマンドに応じてメモリチップ２３０ａからコントローラ２２０ａに転送されるリードデータを取得する（Ｓ１０７）。
【００６５】
続いて、誤り解析装置１０５は、Ｓ１０６の処理によって取得されたアドレスが示すページにかかるページ情報１０から、ライトデータを取得する（Ｓ１０８）。そして、誤り解析装置１０５は、Ｓ１０７の処理によって取得されたリードデータと、Ｓ１０８の処理によって取得されたライトデータと、の比較に基づいて特性情報を取得する（Ｓ１０９）。つまり、誤り解析装置１０５は、Ｓ１０９において、誤り率と誤りパターンとを計算する。誤り解析装置１０５は、計算によって取得した特性情報を、Ｓ１０６の処理によって取得されたアドレスが示すページにかかるページ情報１０に記録する（Ｓ１１０）。
【００６６】
なお、誤り解析装置１０５は、リードデータが取得された際の任意の情報を記録してもよい。例えば、誤り解析装置１０５は、不図示の温度センサを用いて温度情報を取得して、取得した温度情報を特性情報のうちの一部として記録してもよい。また、誤り解析装置１０５は、リードデータが取得された際に、不図示のタイマから時刻情報を取得して、取得した時刻情報を特性情報のうちの一部として記録してもよい。
【００６７】
このように、試験中においては、学習モードで動作している模擬装置１００は、ライトコマンドが転送された場合には、ライトデータを取得して記憶装置１０６に格納する。そして、模擬装置１００は、リードコマンドが転送された場合には、リードデータを取得して、記憶装置１０６に格納されているライトデータとリードデータとの比較に基づいて特性情報を取得し、取得した特性情報を記録する。これらの動作が繰り返し実行されることによって、ライトデータが書き込まれ、その後そのデータが読み出された全てのページにかかる特性情報が、記憶装置１０６に蓄積される。つまり、メモリチップ２３０ａの特性が学習される。
【００６８】
ライトコマンドでもリードコマンドでもなく特性設定（set  feature）コマンドが転送された場合（Ｓ１０２：Ｎｏ、Ｓ１０５：Ｎｏ、Ｓ１１１：Ｙｅｓ）、コマンド解析装置１０２は、当該特性設定コマンドを検知して、当該特性設定コマンドによって設定された特性を取得する（Ｓ１１２）。そして、コマンド解析装置１０２は、取得した特性を記憶装置１０６に記録する（Ｓ１１３）。
【００６９】
特性設定コマンドは、メモリチップに対して種々の特性を設定するためのコマンドである。特性設定コマンドによって、例えば、判定電圧を設定することができる。
【００７０】
リードコマンドは、標準の判定電圧を使うリードを行うためのリードコマンドと、特性設定コマンドによって設定された判定電圧を使うリードを行うためのリードコマンドと、を含む。通常は、標準の判定電圧を使うリードが実行されるが、ブロックＢＬＫ内のデータのエラーレートが低くなってくると、当該データを正しくリードするための判定電圧の探索が実行される。探索によって得られた判定電圧の電圧値は、特性設定コマンドによって設定され、該当のブロック内のデータのリードは、特性設定コマンドによって設定され判定電圧を用いて実行されるようになる。
【００７１】
判定電圧の設定値が特性設定コマンドによって転送されてきた場合には、コマンド解析装置１０２は、当該設定値を記憶装置１０６に記録する。判定電圧の設定値は、例えばブロックＢＬＫと対応付けて記録される。
【００７２】
試験中において、コントローラ２２０ａに不具合が発生する場合がある。例えば、Ｓ１１３の後やＳ１１１の判定処理においてＮｏと判定された後などにおいて、コントローラ２２０ａに不具合が発生しているか否かが判定される（Ｓ１１４）。コントローラ２２０ａに不具合が発生した場合（Ｓ１１４：Ｙｅｓ）、試験が停止される（Ｓ１１５）。そして、学習モードの模擬装置１００を用いた試験が終了する。例えばホスト２１０ａは、コントローラ２２０ａが意図した動作を実行しないことなどを検出した場合には、不具合が発生したと判定し、試験を停止することができる。なお、不具合の発生の検出方法および試験の停止方法はこれに限定されない。任意の装置が任意の方法で不具合の発生を検出し、試験を停止することができる。
【００７３】
また、コントローラ２２０ａに不具合が発生することなくホスト２１０ａが試験のための一連の手順を終えると（Ｓ１１４：Ｎｏ、Ｓ１１６：Ｙｅｓ）、学習モードの模擬装置１００を用いた試験が終了する。まだ手順が残っている場合には（Ｓ１１６：Ｎｏ）、Ｓ１０２に制御が移行する。
【００７４】
図８は、模擬モードの模擬装置１００を用いた第１の実施形態の試験方法の一例を説明するフローチャートである。
【００７５】
模擬装置１００が模擬モードで使用される場合には、図４に示されるように、模擬装置１００はコントローラ２２０ｂと通信路２４０ｂを介して接続される。試験が開始されると（Ｓ２０１）、ホスト２１０ｂは、学習モードにおけるホスト２１０ａと同様に、所定の手順でコントローラ２２０ｂに各種の要求を送る。コントローラ２２０ｂは、模擬装置１００をメモリチップとして見なして、模擬装置１００に対するアクセスを実行する。つまり、コントローラ２２０ｂは、模擬装置１００に対して各種コマンドを送信したり、模擬装置１００から各種応答を受信したりする。また、コントローラ２２０ｂは、リフレッシュ処理、ウェアレベリング処理、ガベージコレクション処理などを実行し、これらの処理の際においても自律的に模擬装置１００に対するアクセスを行う。
【００７６】
模擬装置１００では、インタフェース１０１は、コントローラ２２０ｂから送信された信号を受信する。そして、コマンド解析装置１０２および応答解析装置１０３は、インタフェース１０１が受信した信号を解析する。
【００７７】
例えば、ライトコマンドが受信された場合（Ｓ２０２：Ｙｅｓ）、コマンド解析装置１０２は、当該ライトコマンドを検知して、ライトコマンドとともに通信路２４０ｂを転送される物理アドレスおよびライトデータを取得する（Ｓ２０３）。そして、コマンド解析装置１０２は、取得したライトデータを、取得したアドレスが示すページに対応するページ情報１０に記録する（Ｓ２０４）。
【００７８】
また、ライトコマンドではなくリードコマンドが受信された場合（Ｓ２０２：Ｎｏ、Ｓ２０５：Ｙｅｓ）、コマンド解析装置１０２は、当該リードコマンドを検知して、リードコマンドとともに転送される物理アドレスを取得する（Ｓ２０６）。そして、応答装置１０４は、Ｓ２０６の処理によって取得されたアドレスが示すページにかかるページ情報１０から、ライトデータと特性情報とを取得する（Ｓ２０７）。
【００７９】
誤り生成装置１０７は、特性情報に基づいて、ライトデータに誤りを生成する（Ｓ２０８）。例えば誤り生成装置１０７は、ライトデータのビットデータの列のうちの誤り率に対応した数のビットデータを、ビット反転させる。ビット反転させるビットデータの位置は、誤りパターンに基づく位置とする。これによって、学習モードにおいてメモリチップ２３０ａが出力したリードデータと誤りに関する特性が類似したデータが生成される。
【００８０】
応答装置１０４は、誤りを含むライトデータを、リードデータとしてコントローラ２２０ｂに送信する（Ｓ２０９）。これによって、メモリチップ２３０ａの挙動を模擬した応答が実行される。なお、リードデータの送信は、インタフェース１０１を介して実行される。
【００８１】
また、ライトコマンドでもリードコマンドでもなく特性設定コマンドが受信された場合（Ｓ２０２：Ｎｏ、Ｓ２０５：Ｎｏ、Ｓ２１０：Ｙｅｓ）、コマンド解析装置１０２は、当該特性設定コマンドを検知して、当該特性設定コマンドによって設定された特性、即ち判定電圧の設定値を取得する（Ｓ２１１）。そして、コマンド解析装置１０２は、取得した特性、即ち判定電圧の設定値を記憶装置１０６に記録する（Ｓ２１２）。以降に受信するリードコマンドに対する応答時には、特性設定コマンドによって設定された判定電圧に対応したリードデータが出力される。
【００８２】
例えば、Ｓ２１２の後やＳ２１０の判定処理においてＮｏと判定された後などにおいて、コントローラ２２０ｂに不具合が発生しているか否かが判定される（Ｓ２１３）。コントローラ２２０ｂに不具合が発生した場合（Ｓ２１３：Ｙｅｓ）、試験が停止される（Ｓ２１４）。そして、模擬モードの模擬装置１００を用いた試験が終了する。例えばホスト２１０ｂは、コントローラ２２０ｂが意図した動作を実行しないことなどを検出した場合には、不具合が発生したと判定し、試験を停止することができる。なお、不具合の発生の検出方法および試験の停止方法はこれに限定されない。任意の装置が任意の方法で不具合の発生を検出し、試験を停止することができる。
【００８３】
また、コントローラ２２０ｂに不具合が発生することなくホスト２１０ｂが試験のための一連の手順を終えると（Ｓ２１３：Ｎｏ、Ｓ２１５：Ｙｅｓ）、模擬モードの模擬装置１００を用いた試験が終了する。まだ手順が残っている場合には（Ｓ２１５：Ｎｏ）、例えばＳ２０２に制御が移行する。
【００８４】
なお、図７および図８の説明においては、模擬装置１００は、学習モードで動作することによって、特性情報を取得して記憶装置１０６に格納し、その後、模擬モードで動作する際には、記憶装置１０６に格納された特性情報を利用してメモリチップ２３０ａの挙動を模擬する例について説明した。模擬モードで動作する模擬装置１００は、学習モードで動作する模擬装置１００とは異なる装置であってもよい。例えば、模擬モードで動作する模擬装置１００の記憶装置１０６に、学習モードで動作する模擬装置１００が取得した特性情報の複製を格納することによって、模擬モードで動作する模擬装置１００は、メモリチップ２３０ａの挙動を模擬することが可能となる。
【００８５】
また、模擬モードで動作する模擬装置１００は、複数設けられ得る。模擬モードで動作する複数の模擬装置１００は、それぞれ、メモリチップ２３０ａの挙動を模擬することができるので、複数の試験を並列に実行することが可能となる。
【００８６】
また、第１の実施形態の模擬装置１００は、学習モードでのみ動作する第１装置と、模擬モードでのみ動作する第２装置と、によって構成されてもよい。その場合、第１装置は、図５に示した模擬装置１００の構成から応答装置１０４を廃した構成とすることが可能である。また、第２装置は、図５に示した模擬装置１００の構成から応答解析装置１０３を廃した構成とすることが可能である。
【００８７】
また、以上の説明においては、特性情報は、ページ毎に記録されるとして説明した。特性情報は、ページと異なる単位毎に記録されてもよい。例えば、特性情報は、ブロック毎に記録されてもよい。
【００８８】
なお、例えばブロック毎に特性情報が記録される場合、特性情報は、任意の方法で取得され得る。一例では、ブロック毎に代表ページが予め設定されており、代表ページにかかる特性情報がその代表ページを含むブロックの特性情報として見なされる。別の例では、各ブロックに対し、最後にリードが実行されたページの特性情報が、そのページを含むブロックの特性情報として見なされる。 
【００８９】
このように、第１の実施形態によれば、コントローラ２２０ａからメモリチップ２３０ａに転送される、コントローラ２２０ａによって書き込みが命令されたライトデータを、模擬装置１００が、コントローラ２２０ａとメモリチップ２３０ａとを接続する通信路２４０ａに設けられた分岐部２５０から取得する。その後、メモリチップ２３０ａからコントローラ２２０ａに転送される、コントローラ２２０ａから読み出しが命令されたライトデータであるリードデータを、模擬装置１００が、分岐部２５０から取得する。そして、模擬装置１００は、ライトデータとリードデータとの比較に基づいて、メモリチップ２３０ａの特性を示す特性情報を取得する。模擬装置１００は、メモリチップ２３０ａの応答を、特性情報に基づいて模擬する。この構成により、メモリチップ２３０ａの挙動を模擬することが可能となる。
【００９０】
また、第１の実施形態によれば、特性情報は、誤りに関する情報を含む。この構成により、模擬装置１００は、誤りの点でメモリチップ２３０ａが出力するリードデータと同様の特性を有するリードデータを応答することが可能となる。
【００９１】
また、第１の実施形態によれば、模擬装置１００は、コントローラ２２０ｂによって書き込みが命令されたライトデータを、コントローラ２２０ｂと模擬装置１００と接続する通信路２４０ｂを介して受信する。模擬装置１００は、受信したライトデータを記憶装置１０６に格納する。そして、模擬装置１００は、当該ライトデータを読み出す命令、つまりリードコマンドに応じて、当該ライトデータを記憶装置１０６から読み出して特性情報に基づいて加工する。そして、模擬装置１００は、加工されたライトデータをリードデータとしてコントローラ２２０ｂに通信路２４０ｂを介して送信する。この構成により、メモリチップ２３０ａの挙動を模擬することが可能となる。
【００９２】
また、第１の実施形態によれば、特性情報は誤りに関する情報を含む。模擬装置１００は、特性情報として記録された誤りに関する情報に基づいてライトデータに誤りを発生させる。この構成により、模擬装置１００は、メモリチップ２３０ａが出力するリードデータと誤りの点で特性が同じデータを、リードコマンドに応じて出力することが可能となる。
【００９３】
また、第１の実施形態によれば、メモリチップ２３０ａは、複数のページを備え、模擬装置１００は、特性情報をページ毎に取得する。
【００９４】
なお、模擬装置１００は、ページと異なる単位毎に特性情報を取得するように構成されてもよい。例えば、模擬装置１００は、ブロック毎に特性情報を取得してもよい。
【００９５】
（第２の実施形態）
ホストが実行する試験の手順が複数のプロセスを含む場合、オペレータは、複数のプロセスのうちの任意のタイミングから試験を再実行したい場合がある。第２の実施形態では、任意のタイミングから試験を再実行することを可能とする模擬装置１００について説明する。
【００９６】
以降、第２の実施形態の模擬装置１００を、模擬装置１００ａと表記する。模擬装置１００ａが備える構成要素のうちの第１の実施形態と同じ構成要素には、第１の実施形態と同じ名称および符号を付す。そして、第１の実施形態と同じ構成要素については、説明を省略するか、または簡略的に説明する。
【００９７】
図９は、第２の実施形態の模擬装置１００ａが学習モードで使用される場合の一例を説明するための図である。ホスト２１０ｃ、コントローラ２２０ｃ、およびメモリチップ２３０ａは、コントローラ２２０ｃが実際の使用条件でも仕様通りに動作するか否かを評価するための試験装置２００ｃを構成している。
【００９８】
コントローラ２２０ｃは、メモリチップ２３０ａとともにメモリシステムを構成し得る電子部品である。コントローラ２２０ｃは、例えばコントローラ２２０ａと同様の動作を実行することができる。なお、コントローラ２２０ｃは、第１コントローラの別の一例である。
【００９９】
コントローラ２２０ｃは、メモリチップ２３０ａと通信路２４０ａを介して接続されている。通信路２４０ａを分岐させる分岐部２５０が設けられている。分岐部２５０によって生成された分岐先は、模擬装置１００ａに接続されている。これによって、模擬装置１００ａは、コントローラ２２０ｃとメモリチップ２３０ａとの間を転送される各種の信号を、分岐部２５０を介して受信することができる。模擬装置１００ａは、学習モードにおいては、コントローラ２２０ｃとメモリチップ２３０ａとの間を転送される各種の信号に基づいて、メモリチップ２３０ａの特性を学習することができる。
【０１００】
模擬装置１００ａは、さらに、ホスト２１０ｃと通信路３００を介して接続される。また、模擬装置１００ａは、さらに、コントローラ２２０ｃと通信路３１０を介して接続される。通信路３００は、第３通信路の一例である。
【０１０１】
ホスト２１０ｃは、メモリシステムに対する外部の装置としての動作を行う。つまり、ホスト２１０ｃは、ホスト２１０ａと同様に、コントローラ２２０ｃに対し、各種の要求を送信することができる。ホスト２１０ｃは、ここでは、コントローラ２２０ｃの動作を試験するための予め決められた手順に従って、コントローラ２２０ｃに対して要求を逐次送信する。手順は、例えばプログラムによって記述されている。ホスト２１０ｃは、例えばプロセッサであり、プログラムによって記述された手順にしたがって、コントローラ２２０ｃに対して要求を送信する。なお、ホスト２１０ｃは、プログラムを要さないハードウェア回路によって構成されてもよい。
【０１０２】
ホスト２１０ｃは、さらに、それぞれ異なるタイミングで、１回以上、スナップショット指示を通信路３００を介して模擬装置１００ａに送信することができる。例えば、試験の手順が、連続して実行される複数のプロセスを含む場合、ホスト２１０ｃは、各プロセスが完了する毎にスナップショット指示を模擬装置１００ａに送信することができる。なお、スナップショット指示を送信するタイミングはこれに限定されない。スナップショット指示は、第１指示の一例である。
【０１０３】
模擬装置１００ａは、スナップショット指示を受信すると、特性情報およびコントローラ２２０ｃの内部状態情報を、内部に備える記憶装置１０６に格納する。
【０１０４】
ここで、コントローラ２２０ｃの内部状態情報とは、コントローラ２２０ｃが備える記憶装置２２１の状態を示す情報である。コントローラ２２０ｃが備える記憶装置は、レジスタ、フリップフロップ、およびメモリを含む。コントローラ２２０ｃがプロセッサを含む場合、コントローラ２２０ｃが備える記憶装置は、当該プロセッサ内のレジスタを含む。模擬装置１００ａは、記憶装置２２１の内容を、内部状態情報として通信路３１０を介して取得し、取得した内部状態情報を全ページの特性情報（特性情報群）と対応づけて記憶装置１０６に格納する。この内部状態情報と特性情報群との対を、スナップショット情報と表記する。
【０１０５】
図１０は、第２の実施形態の模擬装置１００ａが備える記憶装置１０６に格納される情報の例示的かつ模式的な図である。記憶装置１０６には、メモリセルアレイ２３２が備える全てのページのそれぞれに対応したページ情報１０と、１以上のスナップショット情報２０とが格納される。
【０１０６】
１以上のスナップショット情報２０のそれぞれは、スナップショット指示に応じて格納されたものであり、内部状態情報と特性情報群との対によって構成されている。スナップショット情報２０に含まれる内部状態情報は、スナップショット指示の受信に応じて取得された内部状態情報である。特性情報群は、スナップショット指示の受信に応じて全てのページ情報１０から収集された全ページ分の特性情報である。
【０１０７】
なお、各スナップショット情報２０は、生成または格納された時刻を示す時刻情報など、各スナップショット情報２０を特定するための情報を含み得る。各スナップショット情報２０は、各スナップショット情報２０を特定するための情報として、ＩＤを含んでいてもよい。ＩＤは、スナップショット指示によってホスト２１０ｃから指定されてもよいし、模擬装置１００ａが生成してもよい。ＩＤは、ホスト２１０ｃから指定されたプロセス番号であってもよい。プロセス番号は、例えば、試験の手順に含まれる複数のプロセスのそれぞれに付されたユニークな番号である。
【０１０８】
図１１は、第２の実施形態の模擬装置１００ａが模擬モードで使用される場合の一例を説明するための図である。本図に示されるように、ホスト２１０ｄ、コントローラ２２０ｄ、模擬装置１００ａは、コントローラ２２０ｄが実際の使用条件でも仕様通りに動作するか否かを評価するための試験装置２００ｄを構成している。
【０１０９】
ホスト２１０ｄは、ホスト２１０ｃと同一の動作を実行する。コントローラ２２０ｄは、コントローラ２２０ｃと同じであってもよいし、コントローラ２２０ｃと異なるコントローラであってもよい。コントローラ２２０ｄは、発生した不具合に対応して改良されたコントローラであってもよい。コントローラ２２０ｄは、第２コントローラの一例である。
【０１１０】
コントローラ２２０ｄと模擬装置１００ａとは、通信路２４０ｂを介して接続されている。模擬装置１００ａは、ホスト２１０ｄと通信路３００を介して接続されている。また、模擬装置１００ａは、コントローラ２２０ｄと通信路３１０を介して接続されている。
【０１１１】
模擬装置１００ａは、模擬モードで動作する際に、ホスト２１０ｄから、１つのスナップショット情報２０を指定する指示を受信することができる。この指示を、指定指示と表記する。指定指示は、第２指示の一例である。模擬装置１００ａは、指定指示を通信路３００を介して受信する。
【０１１２】
なお、指定指示のデータ構造は、任意に構成され得る。指定指示は、例えば、ＩＤ、時刻情報、プロセス番号などを含み得る。
【０１１３】
模擬装置１００ａは、記憶装置１０６に格納されている１以上のスナップショット情報２０のうちの指定されたスナップショット情報２０に含まれる特性情報群をロードする。つまり、模擬装置１００ａは、特性情報群に含まれる全ページ分の特性情報のそれぞれを、対応するページ情報１０に記録する。これによって、模擬装置１００ａは、指定されたスナップショット情報２０が生成された時点におけるメモリチップ２３０ａの特性を模擬した動作を開始することが可能となる。
【０１１４】
さらに、模擬装置１００ａは、指定されたスナップショット情報２０に含まれる内部状態情報を、コントローラ２２０ｄにセットする。つまり、模擬装置１００ａは、コントローラ２２０ｄが備える、レジスタ、フリップフロップ、およびメモリなどの、記憶装置２２２１を、内容状態情報で上書きする。これによって、コントローラ２２０ｄは、指定されたスナップショット情報２０が生成された時点におけるコントローラ２２０ｃと同じ動作を開始することが可能となる。
【０１１５】
特性情報群がロードされ、内部状態情報がセットされることで、コントローラ２２０ｄおよび模擬装置１００ａは、指定されたスナップショット情報２０が生成された時点からの試験を開始することが可能な状態となる。ホスト２１０ｄは、試験の手順のうち、指定したスナップショット情報２０が生成された時点から、試験を開始する。
【０１１６】
試験が開始されると、模擬装置１００ａは、ページ情報１０に含まれる特性情報に従って、メモリチップ２３０ａの挙動を模擬した動作を行う。例えば、模擬装置１００ａは、コントローラ２２０ｄからライトコマンドを受信すると、ライトコマンドとともに送られてきたライトデータを内部に備える記憶装置１０６に格納する。その後、模擬装置１００ａは、コントローラ２２０ｄからリードコマンドを受信すると、記憶装置１０６に格納されているライトデータを読み出して、読み出されたライトデータをページ情報１０に含まれる特性情報に基づいて加工して、加工されたライトデータをリードデータとしてコントローラ２２０ｄに送信する。
【０１１７】
このように、模擬装置１００ａは、学習モードにおいては、指示されたタイミングでスナップショット情報２０を生成する。スナップショット情報２０は、全ページ分の特性情報を集めた特性情報群と、コントローラ２２０ｃの内部状態情報と、を含む。そして、模擬装置１００ａは、模擬モードにおいては、それぞれ異なるタイミングで生成された１以上のスナップショット情報２０のうちの任意の１つを指定することが可能に構成される。これによって、ホスト２１０ｃが後に試験を再実行したいポイントでスナップショット指示を送信すれば、模擬装置１００ａは、そのポイントから試験を開始することが可能となる。つまり、任意のタイミングから試験を再実行することを可能となる。
【０１１８】
続いて、第２の実施形態の模擬装置１００ａの具体的な構成について説明する。図１２は、第２の実施形態の模擬装置１００ａの具体的な構成を示す例示的かつ模式的な図である。
【０１１９】
模擬装置１００ａは、インタフェース１０１、コマンド解析装置１０２、応答解析装置１０３、応答装置１０４、誤り解析装置１０５、および記憶装置１０６を備える。応答装置１０４は、誤り生成装置１０７を備える。
【０１２０】
模擬装置１００ａは、さらに、第２インタフェース１０８、第３インタフェース１０９、およびスナップショット制御装置１１０を備える。
【０１２１】
インタフェース１０１、コマンド解析装置１０２、応答解析装置１０３、応答装置１０４、誤り解析装置１０５、第２インタフェース１０８、第３インタフェース１０９、およびスナップショット制御装置１１０は、処理装置の他の例を構成する。
【０１２２】
第２インタフェース１０８は、通信路３００に接続するためのハードウェアである。第２インタフェース１０８は、物理的な単位および信号を受けるバッファを含み得る。
【０１２３】
第３インタフェース１０９は、通信路３１０に接続するためのハードウェアである。第３インタフェース１０９は、物理的な単位および信号を受けるバッファを含み得る。
【０１２４】
スナップショット制御装置１１０は、スナップショット指示に応じてスナップショット情報２０を生成して記憶装置１０６に格納することができる。また、スナップショット制御装置１１０は、指定指示によって指定されたスナップショット情報２０から内部状態情報および特性情報群を取得して、内部状態情報をコントローラ２２０ｄにセットしたり、特性情報群をロードしたりすることができる。
【０１２５】
なお、スナップショット制御装置１１０は、コマンド解析装置１０２、応答解析装置１０３、応答装置１０４、および誤り解析装置１０５などと同様に、プログラムを要しないハードウェア回路によって構成されてもよいし、プログラムに基づいて動作するプロセッサによって構成されてもよい。また、スナップショット制御装置１１０は、ＦＰＧＡまたはＡＳＩＣによって構成されてもよい。
【０１２６】
続いて、第２の実施形態の模擬装置１００ａを用いた一連の動作について説明する。
図１３は、学習モードの模擬装置１００ａを用いた第２の実施形態の試験方法の一例を説明するフローチャートである。
【０１２７】
模擬装置１００ａが学習モードで使用される場合には、図９に示されるように、模擬装置１００ａはコントローラ２２０ｃとメモリチップ２３０ａとを接続する通信路２４０ａに設けられた分岐部２５０に接続される。また、模擬装置１００ａは、ホスト２１０ｃと通信路３００を介して接続される。また、模擬装置１００ａは、コントローラ２２０ｃと通信路３１０を介して接続される。
【０１２８】
そして、試験が開始されると（Ｓ３０１）、Ｓ３０２〜Ｓ３１３において、図７のＳ１０２〜Ｓ１１３と同様の処理が実施される。
【０１２９】
試験中、模擬装置１００ａがスナップショット指示を受信すると（Ｓ３１４：Ｙｅｓ）、スナップショット制御装置１１０は、通信路３１０を介してコントローラ２２０ｃの内部状態情報を取得する（Ｓ３１５）。また、スナップショット制御装置１１０は、全てのページ情報１０から特性情報を取得する（Ｓ３１６）。つまり、スナップショット制御装置１１０は、全ページ分の特性情報を取得する。
【０１３０】
そして、スナップショット制御装置１１０は、Ｓ３１５の処理によって取得された内部状態情報と、Ｓ３１６の処理によって取得された全ページ分の特性情報と、をスナップショット情報２０として記録する（Ｓ３１７）。
【０１３１】
なお、スナップショット指示を受信していない場合（Ｓ３１４：Ｎｏ）、Ｓ３１５〜Ｓ３１７の処理はスキップされる。
【０１３２】
その後、Ｓ３１８〜Ｓ３２０において、図７のＳ１１４〜Ｓ１１６と同様の処理が実施される。
【０１３３】
図１４は、模擬モードの模擬装置１００ａを用いた第２の実施形態の試験方法の一例を説明するフローチャートである。
【０１３４】
模擬装置１００ａが模擬モードで使用される場合には、図１１に示されるように、模擬装置１００ａはコントローラ２２０ｄと通信路２４０ｂで直接に接続される。また、模擬装置１００ａは、ホスト２１０ｄと通信路３００を介して接続される。また、模擬装置１００ａは、コントローラ２２０ｄと通信路３１０を介して接続される。
【０１３５】
そして、試験が開始される前に、模擬装置１００ａは、ホスト２１０ｄから通信路３００を介して指定指示を受信する（Ｓ４０１）。すると、スナップショット制御装置１１０は、指定指示によって指定されたスナップショット情報２０に含まれている内部状態情報を、コントローラ２２０ｄにセットする（Ｓ４０２）。また、スナップショット制御装置１１０は、指定指示によって指定されたスナップショット情報２０に含まれている特性情報群をページ情報１０に記録する（Ｓ４０３）。つまり、スナップショット制御装置１１０は、特性情報群に含まれる全ページ分の特性情報のそれぞれを、対応するページ情報１０に記録する。
【０１３６】
その後、試験が開始されると（Ｓ４０４）、Ｓ４０５〜Ｓ４１８において、図８のＳ２０２〜Ｓ２１５と同様の処理が実施される。なお、試験においては、ホスト２１０ｄは、試験の手順のうちの、指定されたスナップショット情報２０が生成されたポイントから試験を開始することができる。
【０１３７】
このように、第２の実施形態によれば、コントローラ２２０ｃは、ホスト２１０ｃに接続され、ホスト２１０ｃからの要求に基づいてメモリチップ２３０ａにコマンドを送信する。模擬装置１００ａは、模擬装置１００ａとホスト２１０ｃとを接続する通信路３００を介して、ホスト２１０ｃからスナップショット指示を受信する。模擬装置１００ａは、スナップショット指示に応じて、コントローラ２２０ｃの内部状態情報を取得して、内部状態情報と特性情報群とを含むスナップショット情報２０を記憶装置１０６に格納する。また、模擬装置１００ａは、模擬モードでの試験を開始する前に、スナップショット情報２０に含まれる内部状態情報をコントローラ２２０ｄにセットし、スナップショット情報２０に含まれる特性情報群をロードする。
【０１３８】
この構成により、試験の一連の手順のうちの任意のポイントから試験を再実行することが可能となる。
【０１３９】
また、第２の実施形態によれば、スナップショット情報２０を生成して記憶装置１０６に格納する処理は、複数回実行され得る。そして、模擬装置１００ａは、記憶装置１０６に格納された複数のスナップショット情報２０のうちの１つを指定する指定指示をホスト２１０ｄから受信することができる。
【０１４０】
この構成により、試験の一連の手順のうちの複数のポイントのうちの任意の１つから試験を再実行することが可能となる。
【０１４１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１４２】
１０  ページ情報、２０  スナップショット情報、１００，１００ａ  模擬装置、１０１  インタフェース、１０２  コマンド解析装置、１０３  応答解析装置、１０４  応答装置、１０５  誤り解析装置、１０６，２２１  記憶装置、１０７  誤り生成装置、１０８  第２インタフェース、１０９  第３インタフェース、１１０  スナップショット制御装置、２００ａ，２００ｂ，２００ｃ，２００ｄ  試験装置、２１０ａ，２１０ｂ，２１０ｃ，２１０ｄ  ホスト、２２０ａ，２２０ｂ，２２０ｃ，２２０ｄ  コントローラ、２３０ａ  メモリチップ、２３１  制御回路、２３２  メモリセルアレイ、２４０ａ，２４０ｂ，３００，３１０  通信路、２５０  分岐部。
【図１】
2020154477.tif 000003
【図２】
2020154477.tif 000004
【図３】
2020154477.tif 000005
【図４】
2020154477.tif 000006
【図５】
2020154477.tif 000007
【図６】
2020154477.tif 000008
【図７】
2020154477.tif 000009
【図８】
2020154477.tif 000010
【図９】
2020154477.tif 000011
【図１０】
2020154477.tif 000012
【図１１】
2020154477.tif 000013
【図１２】
2020154477.tif 000014
【図１３】
2020154477.tif 000015
【図１４】
2020154477.tif 000016