JP2020198087A - シミュレートされたデバイスをメモリベース通信プロトコルを使用してテストするためのシステムおよび方法 - Google Patents

シミュレートされたデバイスをメモリベース通信プロトコルを使用してテストするためのシステムおよび方法 Download PDF

Info

Publication number
JP2020198087A
JP2020198087A JP2020070666A JP2020070666A JP2020198087A JP 2020198087 A JP2020198087 A JP 2020198087A JP 2020070666 A JP2020070666 A JP 2020070666A JP 2020070666 A JP2020070666 A JP 2020070666A JP 2020198087 A JP2020198087 A JP 2020198087A
Authority
JP
Japan
Prior art keywords
data
program
memory
host
shared memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2020070666A
Other languages
English (en)
Other versions
JP6916340B2 (ja
Inventor
オルガン ドナルド
Organ Donald
オルガン ドナルド
リウ、ジュニア フランク
Liu Frank Jr
リウ、ジュニア フランク
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advantest Corp
Original Assignee
Advantest Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advantest Corp filed Critical Advantest Corp
Publication of JP2020198087A publication Critical patent/JP2020198087A/ja
Application granted granted Critical
Publication of JP6916340B2 publication Critical patent/JP6916340B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2273Test methods
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3183Generation of test inputs, e.g. test vectors, patterns or sequences
    • G01R31/318342Generation of test inputs, e.g. test vectors, patterns or sequences by preliminary fault modelling, e.g. analysis, simulation
    • G01R31/318357Simulation
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/31722Addressing or selecting of test units, e.g. transmission protocols for selecting test units
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3183Generation of test inputs, e.g. test vectors, patterns or sequences
    • G01R31/318314Tools, e.g. program interfaces, test suite, test bench, simulation hardware, test compiler, test program languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/261Functional testing by simulating additional hardware, e.g. fault simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/022Detection or location of defective auxiliary circuits, e.g. defective refresh counters in I/O circuitry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

【課題】シミュレートされたデバイスをテストするためのメモリベース通信プロトコルをシミュレートするための方法を提供する。【解決手段】方法は、共有メモリ空間において実装されるホストデータバッファの既知の位置にデータを格納する段階と、第1のプログラムの命令を実行して、インデックス、ID、およびメモリ位置を含むデータ構造を使用して共有メモリ空間にコマンドを格納する段階と、第2のプログラムの命令を実行して、ホストデータバッファからコマンドを読み出し、共有メモリ空間内のデータにアクセスして、インデックスによって示される位置のデータを使用して、IDによって規定される動作を行い、動作の完了後に完了インジケータを第1のプログラムに送る段階と、を備える。【選択図】図6

Description

本発明の実施形態は、概してデバイステスト分野に関する。より具体的には、本発明の実施形態は、テスト中にテスト対象デバイス(DUT)をシミュレートするための方法およびシステムに関する。
通常、テスト対象デバイスまたはテスト対象機器(DUT)は、販売前に、デバイスの性能および一貫性を判断するためにテストされる。デバイスは、多種多様なテストケースを使用してテストすることができ、テストケースの結果は予期される出力結果と比較される。テストケースの結果が予期される出力値と一致しない場合、デバッグを行って、デバイスに起因するあらゆる不具合の特定および修正が試みられる。
DUTは通常、自動テスト装置または自動化テスト装置(ATE)によってテストされる。ATEは、ソフトウェアおよびオートメーションを使用し複雑なテストを行って、テスト効率を向上させるのに使用できる。DUTは、コンピュータまたは他の電子デバイスなどの最終製品への統合が意図されたメモリデバイスまたはメモリコンポーネントであってよい。NANDフラッシュデバイスの開発過程で使用する既存のシステムレベルのテストソフトウェアは、具体的に、DUT開発が完了間近となった後にテストされデバッグされるソフトウェアを必要とする。緊急の場合であっても、テストプログラムおよびソフトウェア製品は、顧客が提供する記憶デバイスが開発およびデバッグに対して準備が整うのを待つのが一般的であり、そのため、テスト用ソフトウェア開発の生産性は、デバイスがどの程度まで完成しているかによって律則されることになり、その結果、期限を逃し、十分にテストしないうちに製品を市場に出さざるを得ない場合がある。
さらに、DUTテストの既存の手法では、所与の時間にDUTのいくつかの特性を変更することのみが可能であり、いくつかのバリエーションについては単独でテストすることしかできない。デバイス開発の完了に左右されず、実際のDUTが手に入る前にテスト用ソフトウェアをテストおよびデバッグすることによって生産開発の効率を向上させることができ、膨大な数の可変要素をテストするようカスタマイズしてテストの堅牢性および拡張可能性を高めることのできる、DUTテストを行う方法が必要である。
本発明の実施形態は、デバイス開発の完了に依存せず、実際のDUTが手に入る前にソフトウェアでシミュレートされたデバイスをテストおよびデバッグすることによって生産開発の効率を向上させることができ、膨大な数の可変要素をテストするようカスタマイズしてテストの堅牢性および拡張可能性を高めることのできる、DUTテストを行うシステムおよび方法を提供する。当該テストは、DUTの仕様にしたがってAPIレベルで行うことができる。開発過程の早い段階でテストおよびデバッグを行うことによって、実際のデバイスをテストに利用可能となったときにデバッグおよび再設計がより小規模で済み、結果的にデバイスの納品日が早まる。
一実施形態において、シミュレートされたデバイスをテストするためのメモリベース通信プロトコルをシミュレートするための方法が開示される。当該方法は、データをホストデータバッファに格納する段階であって、ホストはテスタシステムであり、ホストデータバッファは共有メモリ空間において実装される、格納する段階と、テスタシステムプログラムの命令を実行して、インデックス、ID、およびメモリ位置を含むデータ構造を使用してコマンドを共有メモリ空間に格納する段階と、DUTシミュレーションプログラムの命令を実行して共有メモリ空間からコマンドを読み出し、共有メモリ空間のブロックにアクセスしてIDによって規定される動作を行い、動作完了後、テスタシステムプログラムに完了インジケータを送る段階であって、共有メモリのブロックの位置はインデックスによって示される、段階とを備える。
いくつかの実施形態によれば、IDは、コマンドがプログラム動作を含むことを示し、アクセスは、ブロックを読み出して、メモリ位置に書き込むデータを取得することであり、動作はプログラム動作を行うことを含み、当該方法は、コマンドに応答してDUTシミュレーションがデータをディスクファイルに書き込む段階をさらに備える。
いくつかの実施形態によれば、IDは、コマンドが読み出し動作を含むことを示し、アクセスは、メモリ位置から読み出したデータを格納することであり、動作は読み出し動作を行うことを含み、当該方法は、DUTシミュレーションの命令を実行して、1または複数のディスクファイルにアクセスして当該メモリ位置のデータを読み出し、共有メモリの当該ブロックのホストデータバッファに格納する段階をさらに備える。
いくつかの実施形態によれば、テスタシステムプログラムの命令およびDUTシミュレーションの命令は、Linux(登録商標)ベースのオペレーティングシステムが管理する別個のプロセスとして実行される。
いくつかの実施形態によれば、当該方法は、当該動作の後にデータを検証して、プログラム動作後、エラーがないかシミュレートされたデバイスをテストする、検証する段階を備える。
いくつかの実施形態によれば、検証する段階は、データを予期される結果と比較する段階を有する。
いくつかの実施形態によれば、コマンドは、シミュレートされたデバイスのベースアドレスレジスタに格納される。
いくつかの実施形態によれば、テスタプログラムの命令およびDUTシミュレーションの命令は、同一のプロセッサによって実行される。
いくつかの実施形態によれば、共有メモリ空間は、物理メモリをエミュレートするメモリマップドファイルを含む。
いくつかの実施形態によれば、メモリマップドファイルは、mmapを使用してマッピングされたファイルを含む。
いくつかの実施形態によれば、共有メモリ空間は、NANDフラッシュメモリをエミュレートするメモリマップドファイルを含む。
いくつかの実施形態によれば、メモリベース通信プロトコルは、PCIe通信バスプロトコルを利用する。
別の実施形態において、シミュレートされたデバイスのプログラム動作をテストするためのメモリベース通信プロトコルをシミュレートするための方法が開示される。当該方法は、データをホストデータバッファに格納する段階であって、ホストデータバッファは共有メモリ空間に実装される、格納する段階と、テスタシステムプログラムの命令を実行して、第1のインデックス、プログラム動作のID、およびメモリ位置を含むデータ構造を使用してプログラム動作を共有メモリ空間に格納する段階と、DUTシミュレーションの命令を実行して、共有メモリ空間のプログラム動作にアクセスし、共有メモリ空間の、第1のインデックスによって規定されるブロックからデータを読み出し、データを当該メモリ位置の1または複数のディスクファイルに書き込み、データを当該メモリ位置に書き込んだ後、第1の完了インジケータをテスタシステムプログラムに送る段階とを備える。当該方法は、テスタシステムプログラムの命令を実行して、第2のインデックス、読み出し動作を示すID、および記憶位置を含むデータ構造を使用して共有メモリ空間に読み出し動作を格納する段階と、DUTシミュレーションの命令を実行して、当該メモリ位置からデータを読み出し、第2のインデックスにしたがってデータをホストデータバッファのブロックに書き込み、第2のインデックスによって規定されるブロックにデータを書き込んだ後、第2の完了インジケータをテスタシステムプログラムに送る段階とをさらに備える。
いくつかの実施形態によれば、当該方法は、読み出し動作後にデータを検証して、エラーがないかシミュレートされたデバイスをテストする、検証する段階を備え、当該検証する段階は、データを予期される結果と比較する段階を有する。
いくつかの実施形態によれば、第1の完了インジケータは、テスタシステムプログラムが管理するキューに格納される。
いくつかの実施形態によれば、メモリ位置はディスクのメモリ位置を参照し、メモリ位置は、フラッシュメモリをシミュレートするためのディスクファイルとして実装される。
異なる実施形態において、テスト対象デバイスをシミュレートするためのシステムが開示される。当該システムは、Linuxベースのオペレーティングシステムを実行するプロセッサと、テスタシステムプログラムおよびDUTシミュレーションプログラムに共有メモリ空間を提供する、プロセッサと通信するメモリとを備える。テスタシステムプログラムおよびDUTシミュレーションプログラムの命令は、プロセッサによって実行され、プロセッサは、テスト対象デバイスのシミュレーションをテストするためのメモリベース通信プロトコルをシミュレートするための方法を行う。当該方法は、データをホストデータバッファに格納する段階であって、ホストはテスタシステムであり、ホストデータバッファは共有メモリ空間において実装される、格納する段階と、テスタシステムプログラムの命令を実行して、インデックス、ID、およびメモリ位置を含むデータ構造を使用してコマンドを共有メモリ空間に格納する段階と、DUTシミュレーションプログラムの命令を実行して共有メモリ空間からコマンドを読み出し、共有メモリ空間のブロックにアクセスしてIDによって規定される動作を行い、動作完了後、テスタシステムプログラムに完了インジケータを送る段階であって、共有メモリのブロックの位置はインデックスによって示される、段階とを備える。
いくつかの実施形態によれば、当該方法は、当該動作の後にデータを検証して、シミュレートされたデバイスをテストする、検証する段階を備え、当該検証する段階は、当該動作の後、データを予期される結果と比較する段階を有する。
いくつかの実施形態によれば、IDは、コマンドがプログラム動作を含むことを示し、当該動作は、プログラム動作の実行を含み、DUTシミュレーションプログラムは、コマンドに応答して、共有メモリの、インデックスによって規定されるブロックのデータをディスクファイルに書き込む。
いくつかの実施形態によれば、IDは、コマンドが読み出し動作を含むことを示し、当該動作は、読み出し動作の実行を含み、当該方法は、DUTシミュレーションプログラムの命令を実行して、1または複数のディスクファイルにアクセスしてデータを読み出し、ディスクファイルのデータをインデックスによって規定される位置のホストデータバッファに書き込む段階をさらに備える。
いくつかの実施形態によれば、テスタシステムプログラムの命令およびDUTシミュレーションプログラムの命令は、別個のプロセスとして実行され、別個のプロセスは、Linuxベースのオペレーティングシステムによって管理される。
いくつかの実施形態によれば、メモリベース通信プロトコルは、PCIe通信バスプロトコルである。
異なる実施形態において、シミュレートされたデバイスとメモリベース通信を行うためのシステムが開示される。当該システムは、プロセッサと、プロセッサに接続されたメモリと、プロセッサによって実行されるテスタシステムプロセスとを備え、テスタシステムプロセスには、ホストデータバッファを含む共有メモリアドレス空間が割り当てられ、テスタシステムプロセスは、ホストデータバッファにデータを格納し、コマンドを共有メモリアドレス空間に格納することによってコマンドをデバイスプロセスに発行する。デバイスプロセスは、デバイスをシミュレートするためにプロセッサによって実行され、デバイスプロセスは、ディスクファイルからデータを読み出し、データをディスクファイルに書き込み、共有メモリアドレス空間からコマンドを読み出し、コマンドにしたがって動作を行うよう動作可能なコントローラを含む。コマンドは、ホストデータバッファからインデックス付きデータを読み出し、インデックス付きデータをディスクファイルに書き込むプログラム動作と、ディスクファイルからデータを読み出し、インデックス値にしたがってホストデータバッファにデータを書き込む読み出し動作と、ディスクファイルの1または複数を消去する消去動作とを含む。
いくつかの実施形態によれば、テスタシステムプロセスは、テスタシステムをシミュレートし、デバイスプロセスは、テスト対象デバイスをシミュレートする。
いくつかの実施形態によれば、共有メモリアドレス空間は、テスタシステムとテスト対象デバイスとの間のPCIeバスをシミュレートする。
添付図面は、本明細書に組み込まれ、本明細書の一部を成すものであり、本発明の実施形態を例示し、本明細書の記載とともに本発明の原理の説明に供する。
本発明の実施形態にしたがって示される、PCIeデータバスを使用してデバイス(例えばDUT)をテストするよう構成される例示的なホストデバイスを含む例示的なデバイステストシステムのブロック図である。
本発明の実施形態に係る、シミュレートされたメモリベース通信プロトコル(例えば、PCIe、またはPCIeを使用して実装された通信プロトコル)を使用してシミュレートされたデバイスをテストするよう構成される例示的なテストプログラムを含む例示的なデバイステストシステムのブロック図である。
本発明の実施形態にしたがって示される、複数のシミュレートされたデバイスを同時にテストするための例示的なテスト環境のブロック図である。
本発明の実施形態に係る、物理DUTをテストするための例示的なソフトウェア階層を示すデータフロー図である。
本発明の実施形態にしたがって示される、メモリベース通信プロトコルをシミュレートして、シミュレートされたデバイスをテストするための例示的なソフトウェア階層を示すデータフロー図である。
本発明の実施形態にしたがって示される、動作を行って、シミュレートされたデバイスをテストするための例示的な一連のコンピュータ実装段階のフローチャートである。
本発明の実施形態にしたがって示される、プログラム動作および読み出し動作を行って、シミュレートされたデバイスをテストするための例示的な一連のコンピュータ実装段階のフローチャートである。
本発明の実施形態にしたがって示される、例示的なメモリベース通信プロトコルをシミュレートして、シミュレートされたデバイスをテストするためのブロック図およびデータフロー図である。
本発明の実施形態を実装してよい例示的なコンピュータプラットフォームを示す。
これより、いくつかの実施形態を詳細に参照する。主題を代替実施形態に関連して説明するが、それらは、請求項に記載の主題をこれらの実施形態に限定することを意図したものではないことが理解されるであろう。むしろ、請求項に記載の主題は、添付の特許請求の範囲によって定義される、請求項に記載の主題の主旨および範囲内に含まれ得る代替形態、変更形態、および均等物を網羅するよう意図される。
さらに、以下の詳細な説明では、多数の具体的な詳細を明らかにし、請求項に記載の主題への十分な理解を提供する。しかしながら、当業者であれば、それらの具体的な詳細またはその均等物がなくとも実施形態を実施し得ることを認識しているであろう。他の例では、主題の態様および特徴を不必要に曖昧にしないよう、周知の方法、手順、コンポーネント、および回路については詳述していない。
以下に続く詳細な説明の諸部分においては、方法に関しての提示および記載がなされる。本方法の動作を説明する本明細書の図(例えば、図6および図7)において、段階および段階の順序付けを開示するが、そのような段階および順序付けは例示的なものである。実施形態は、その他のさまざまな段階または本明細書の図のフローチャートに記載されている段階のバリエーションの実行、および、本明細書において示され説明されるもの以外の順序での実行に良好に適合する。
詳細な説明においては、手順、段階、ロジックブロック、処理、およびその他の、コンピュータメモリに対して実行できるデータビット演算の記号表記に関して提示している部分もある。これらの説明および表記は、データ処理技術分野の当業者が彼らの研究の本質を他の当業者に最も効果的に伝えるために使用する手段である。ここでは概して、手順、コンピュータ実行段階、ロジックブロック、プロセスなどは、所望の結果を導く一連の自己矛盾のない段階または命令であると考えられる。そのような段階は、物理量を物理的に操作することを必要とする段階である。必ずではないが通常は、これらの物理量は、コンピュータシステムにおいて格納し、転送し、組み合わせ、比較し、その他操作することが可能な電気信号または磁気信号の形をとる。これらの信号は、主にはそれが慣例であるという理由から、ビット、値、要素、記号、文字、用語、または番号等で呼ぶことが時には都合がよいと分かっている。
しかしながら、これらのおよび同様の用語の全ては、適切な物理量と関連付けられるべきであり、これらの物理量に付された簡便なラベルに過ぎないことに留意されたい。特段の定めがない限り、以下の記載から明らかなように、本明細書全体を通して、「アクセスする」、「書き込む」、「含む」、「格納する」、「伝送する」、「関連付ける」、「特定する」、または「エンコードする」等といった用語を利用した記載は、コンピュータシステムのレジスタおよびメモリ内の物理的(電子的)な量として表されるデータを操作し、コンピュータシステムのメモリもしくはレジスタ、またはそのような情報を記憶する、伝送する、もしくは表示するその他のデバイス内の物理量として同様に表される他のデータへと変換するコンピュータシステムまたは同様の電子コンピューティングデバイスの動作およびプロセスを指すことが理解されよう。
[メモリベースプロトコルをシミュレートするためのシステムおよび方法]
本発明の実施形態は、テスト対象デバイスの開発の完了に依存せず、実際のDUTが手に入る前にソフトウェアでシミュレートされたデバイスに対するテストソフトウェアをテストしデバッグすることによってテスト開発の効率を向上でき、膨大な数の可変要素をテストするようカスタマイズしてテストの堅牢性および拡張可能性を高めることのできる、DUTテストを実行するためのシステムおよび方法を提供する。当該テストは、DUTの仕様にしたがってAPIレベルで行うことができる。開発過程の早い段階でテストおよびデバッグを行うことによって、実際のデバイスをテストに利用可能となったときに、テストソフトウェアのデバッグおよび再設計がより小規模で済み、結果的にデバイス納品日が早まる。
本発明の実施形態は、PCIe(ペリフェラルコンポーネントインターコネクトエクスプレス)データバスを使用してホストデバイス(テスタ)と通信するテスト対象のNANDメモリデバイスをシミュレートするためのテストプログラムおよびソフトウェアシミュレータを実行する。PCIeは、接続されたデバイスからの読み出しおよび書き込みのトランザクションを行うのに使用する、通常は複数のレーンを含むシリアルバスである。PCIeを使用して行われる動作はパケット化され、パケットは、通常はアドレスを含み、任意選択で書き込むデータを含む。パケットは、順次ターゲットデバイスに転送され、ターゲットデバイスは書き込み命令をパケット解除し、含まれるデータで書き込み動作を実行する。読み出し動作は、DUTに格納されたデータを読み出す。読み出し動作の場合、パケットがターゲットデバイスに転送され、ターゲットデバイスは、データペイロードを含むCplD(データ付き完了(completion with data))パケットと称される特別なトランザクション層のパケットを作成することによって読み出し動作を実行し、要求元IDを使用して、読み出し動作を発行した要求元にデータペイロードを返送する。プログラム動作および消去動作もまた、テスタによって頻繁に発行される。
コマンドを発行し、接続されたデバイス(例えばDUT)間でデータを転送するべく、メモリベース通信プロトコルが当該デバイスにとってアクセス可能な共有メモリ位置をマッピングする。メモリベース通信プロトコルは、PCIeプロトコルなどのパケットベースプロトコルを使用して実装することができる。PCIeプロトコルはメモリベースの機能を含み、既存のPCIeの通信バスを基に構築されたメモリベース通信プロトコルのテストは、DUTの基本動作がテスト中に明らかでないことが多いために特に困難な場合がある。場合によっては、プロトコルは、実行する機能またはメモリ動作のタイプが異なればメモリの異なる部分が使用されるように規定されてよく、DUTは、ホストデバイスが発行するコマンドに基づいて動作を行うことが予期される。本発明の実施形態は、Linuxベースのオペレーティングシステムによって実装されるmmap共有メモリ技術などの共有メモリ技術を使用してメモリデバイス(例えばNANDフラッシュデバイス)をシミュレートすることで、メモリデバイステスト用の、PCIeなどのパケット化通信プロトコル、または既存のPCIeアーキテクチャに基づいて構築されたプロトコルをシミュレートすることができる。この場合、DUTおよびPCIeプロトコルの両方がシミュレートされ、テスタソフトウェア開発を容易にする。
PCIeバスの1つの重要な設計的側面は、通常は、ホストにはPCIeデバイスがメモリマップドデバイスとして見えるという点である。したがって、デバイスはホストからパケット化データを受け取ることができ、ホストは特定のメモリアドレスから、または特定のメモリアドレスに、読み出しおよび書き込みを行うことによってデバイスと相互作用する。したがって、シミュレートされたデバイスが、ホストもアクセス可能なメモリにアクセスできる。本発明の実施形態の一態様は、共有メモリアクセスを使用して、シミュレートされたDUTをテストするためのPCIeベースのプロトコルをシミュレートすることを含む。
本発明の実施形態は、Linuxベースのオペレーティングシステムを使用して実装されてよい。ここで、テストプログラムおよびシミュレートされたデバイスは、オペレーティングシステムによって制御される別個のプロセスとして存在する。両プロセスは、共有メモリアドレス空間にアクセスできる。さらに、複数のデバイスを別個のプロセスとしてシミュレートすることができ、複数のテストプログラムを(例えば、一機のシミュレートされたデバイスにつき1つ)実行して、テスト環境の速度および堅牢性を高めることができる。
本明細書において説明するいくつかの実施形態は、DUTが行う動作を検証して、DUTがデバイスの仕様にしたがって動作を行い、予期される結果を生成したか否かを判断するための方法または段階を含む。例えば、いくつかの実施形態によれば、DUTはデータをメモリ位置に書き込み(プログラム動作)、当該メモリ位置からデータを読み出して(読み出し動作)ホストメモリに返送し、テストプログラムは、データの書き込みおよび/または読み出しに成功したか否かを判断する。これは、DUTが読み出したデータを、デバイスの仕様にしたがって予期される結果と比較することによって実現されてよい。さらに、消去動作は、消去動作によって消去されるべきデータがメモリ内にもはや格納されていないことを確認することによって検証することができる。他の動作をプローブなどのテスト器具を使用して検証して、DUTの動作およびDUTに格納されたデータを検出し定量化してよい。検証は、DUTの不具合を検出および/または修正するためのテストまたはデバッグのプロセスの一部として行うことができる。
図1に関して、例示的なデバイステストシステム100が、本発明の実施形態にしたがって示される。デバイステストシステム100は、PCIeデータバス145を使用して物理デバイス180(例えばDUT)をテストするよう構成される例示的なホストデバイス105(テスタシステム)を備える。ホストデバイス105は、デバイス180の具体的な要件にしたがって当該デバイスをテストするよう設計されたテストプログラムを実行できる。PCIeデータバス145は、ホストデバイス105が発行するコマンドまたは動作にしたがって、ホストデータバッファ120からデータを読み出し、ホストデータバッファ120にデータを書き込むべく、デバイスのコントローラ150によって使用される。例えば、デバイス180は、コントローラ150を使用してホスト105に対してPCIe読み出し要求を発行することによってホストデータバッファ120のデータにアクセスでき(プログラム動作)、デバイス180は、コントローラ150を使用してホスト105に対してPCIe書き込み要求を発行することによってホストデータバッファ120にデータを書き込むこと(読み出し動作)ができる。ホストデバイス105は、コントローラ150内に格納されたメモリの物理位置にマッピングされた共有メモリアドレス空間にコマンドを格納することによって、デバイス180のコントローラ150にコマンドを発行できる。例えば、コントローラ150は、共有アドレス空間115の位置にマッピングされた、コントローラ150の物理メモリに(例えば、PCIeアドレス空間に)格納されたベースアドレスレジスタ(BAR)からコマンドを読み出すことができる。
データは共有メモリ空間115のホストデータバッファ120のブロックに格納され、データのブロックは、インデックス値125にしたがってインデックス付けされる。データは、デバイス180をテストするよう具体的に構成された既知のデータパターンを含むことができる。ホスト105から発せられるコマンドは通常、コマンドで使用するためのメモリブロックを特定するインデックス値を含む。インデックス値はデバイス180のコントローラ150によって読み出されて、ホストメモリバッファ120内のデータ位置が決定される。コントローラがホストコマンドを実行中のとき、コントローラは、(ブロックからデータを取りだすこと、または、ブロックにデータを格納することの何れかを行うために)インデックス値によって特定されるデータブロックを使用する。コントローラ150が、ホストデバイス105が発行したコマンドに対応する動作を完了したとき、コントローラ150は、完了インジケータをホストデバイス105に送り、当該インジケータは完了キュー130に格納される。コマンドはBAR2空間(コマンドキュー)140B内にデータ構造として格納またはキュー追加され、データ構造は、ID値、インデックス値、メモリ位置、および他の引数を含んでよい。プログラムコマンドの場合、ホストデバイス105によって完了インジケータが読み出されたとき、ホストデータバッファ120に格納された対応するインデックスはクリアされ、新たなデータ用に再使用されてよい。読み出しコマンドの場合、完了インジケータは、ホストが処理のためにデータを利用可能であることをホスト105に知らせる。
ホストデータバッファ120、インデックス125、および完了キュー130は、ホストデバイスの物理メモリに格納され、メモリマップドデータ115としてコントローラ150がアクセス可能である。デバイス180はホストからパケット化データを受け取ることができ、ホストは特定のメモリアドレスから、または特定のメモリアドレスに、読み出しおよび書き込みを行うことによってデバイスと相互作用できる。したがって、デバイス180は、ホストもアクセス可能なメモリにアクセスできる。
いくつかの実施形態によれば、コントローラ150は、アドレス変換およびマッピングなどの特定のデータ、ならびにホストデバイス105が発行するコマンドを格納するための1または複数のBARにアクセスする。ベースアドレスレジスタ(例えば、BAR0 135AおよびBAR2 140A)は物理的にはコントローラ150内に格納されており、コントローラ150にとってアクセス可能なPCIeアドレス空間から、ホストデバイス上の共有メモリアドレス空間115にマッピングされる。例えば、BAR0空間135Bは、PCIeアドレス空間の物理メモリアドレスを格納でき、コントローラ150上のBAR0 135Aにマッピングされる。プログラムコマンドをコントローラ150が受け取ったとき、コントローラはBAR0空間135Bから、コマンドのインデックスと関連付けられた物理メモリアドレスを読み出して、PCIeアドレス空間からホストメモリに書き込む。BAR2空間140Bは、ホストデバイス105が発行するコマンドがコントローラ150によって実行される前に当該コマンドを格納するためのコマンドキューとして使用できる。BAR2 140Aのデータは、PCIeアドレス空間においてデバイス180のコントローラ150上に物理的に格納されており、BAR2 140Aにおいて、ホストデバイス上の共有メモリアドレス空間115にマッピングされる。
コマンドは、コントローラ150がホストデバイス105から受け取ることができ、コマンドが実行される前にBAR2空間140Bのコマンドキューに格納(キュー追加)できること、および、コマンドは一般的に任意の順序で実行できることを理解されたい。言い換えると、コマンドは、ホストデバイス105が発行した順序またはコントローラ150が読み出した順序と同一の順序で実行されることは求められず、コントローラ150は、コマンド実行のための効率的な順序を決定できる。したがって、数個のコマンドをコマンドキューに格納でき、コントローラ150は、次にどのコマンドを実行するかを決定できる。
コントローラ150は、NANDダイ175と通信チャネル165を介して、およびNANDダイ195と通信チャネル170を介して通信する。通信チャネル165および170は、それぞれが対応するダイと並行して通信するよう動作可能である。NANDダイは、ダイ175および195のプレーン、ブロック、ページ、およびセクタにデータを格納する。
いくつかの実施形態によれば、NANDダイ175および195はそれぞれ、コントローラ150がデータをダイに書き込む前にデータを格納するための各々のキューと通信する。例えば、通信チャネル165を介してNANDダイ175に書き込まれる対象のデータは、キュー185に格納でき、通信チャネル170を介してNANDダイ195に書き込まれる対象のデータは、キュー190に格納できる。NANDダイ175および195に書き込まれる対象のデータは、PCIeバス145を介してコントローラ150がホストメモリ120から読み出すことができ、NANDダイ175および195から読み出されたデータは、当該データがホストメモリ120に書き込まれる前にキュー185および190に格納することができる。
フラッシュの記憶位置(例えば、ダイ175または195)にデータを書き込むべくプログラムコマンドが発行されるとき、ホスト105は、データをロードし、当該データを空きインデックス位置に書き込む。次に、ホスト105は、インデックス位置および記憶位置を含むプログラムコマンドを発行する。DUT180は当該コマンドを処理し、インデックス(例えばインデックス125)からデータを読み出し、データを記憶位置に格納する。
DUT180に格納されたデータを読み出すべく読み出しコマンドがホスト105によって発行されるとき、読み出しコマンドは、インデックス(例えばインデックス125)および記憶位置を含む。データは記憶位置から読み出され、DUTによってインデックスに書き込まれる。
ホストによって消去動作が発行されるとき、DUT180は、消去コマンドに示された記憶位置のデータ(例えば、1または複数のディスクファイル)を消去する。消去対象のデータ量(例えば、ファイル数)を示すのには、長さフィールドまたはサイズフィールドを使用できる。
図2に関して、例示的なデバイステストシステム200が、本発明の実施形態にしたがって示される。デバイステストシステム200は、シミュレートされたデバイス280(例えば、シミュレートされたDUT)をメモリベース通信プロトコル(例えば、PCIe、またはPCIeを使用して実装される通信プロトコル)を使用してテストするよう構成される例示的なテストプログラム215を備える。当該メモリベース通信プロトコルもまた、シミュレートされる。テストプログラム215は概して、ホストデバイス105と同一の機能を行い、シミュレートされたデバイス280は、デバイス180の機能(図1参照)をエミュレートするよう構成することができる。図2では、テスタシステムおよびシミュレートされたDUT280の両方が、同一のLinuxベースコンピュータシステム205のそれぞれ異なる部分に実装される。
物理データバス(例えばPCIe)を使用してテストプログラム215とシミュレートされたデバイス280との間でデータを転送するのではなく、共有メモリアドレス空間を利用して、テストプログラム215とシミュレートされたデバイス280との間でデータを共有し、PCIeバスを効果的にシミュレートする。さらに、シミュレートされたデバイス280は、ディスクファイル275および295を使用して、コントローラ250が管理する、データ格納用NANDダイをシミュレートすることができる。コントローラ250は、共有メモリ空間からホストコマンドを読み出し、対応する動作を行う。例えば、コントローラは、共有メモリ空間220の(特定されたインデックスを含む)コマンドキュー245から読み出しコマンドにアクセスし、ディスクファイル275および/または295から対応するデータを読み出し、当該データをホストデータバッファ225へ、インデックスによって特定されるブロックに書き込むことができる。プログラムコマンドおよび消去コマンドについてもまた、シミュレートすることができる。このようにして、実際のデバイスが十分に開発され、またはプロトタイプが製造される前に、シミュレートされたデバイス280をテストプログラム215を使用してテストして、DUT(例えば、図1のデバイス180)をテストしデバッグすることができる。いくつかの実施形態によれば、シミュレートされたデバイス280は、PCIe読み出し要求をテストプログラム215に発行することによって、テストプログラム215の共有メモリアドレス空間220から(プログラムコマンドからの)データを読み出し、また、シミュレートされたデバイス295は、PCIe書き込み要求をテストプログラム215に発行することによって、テストプログラム215の共有メモリアドレス空間220に(読み出しコマンドからの)データを書き込む。
テストプログラム215およびシミュレートされたデバイス280は、Linuxベースのオペレーティングシステム210を使用してCPU205によって実行されることが理解される。マッピングされたファイル(例えば、mmapを使用してマッピングされたファイル)を使用した、テストプログラム215とシミュレートされたデバイス280との間でのデータおよびコマンドの転送について、PCIeデータバスがソフトウェアでシミュレートされる。マッピングされたファイルは、共有物理メモリのようにふるまい、テストプログラム215およびシミュレートされたデバイス280の両方のメモリ空間において利用可能である。完了キュー235、インデックス230、ホストデータバッファ225、およびあらゆるBARを、マッピングされたファイルを使用して共有物理メモリとして実装することができる。このようにして、共有メモリ空間220のデータは、テストプログラム215およびシミュレートされたデバイス280の両方にとってアクセス可能である。例えば、コマンドは、共有メモリアドレス空間220のBAR2 245Aにコマンドを書き込むことによってテストプログラム215が発行でき、ここで、BAR2 245Aのメモリ空間は、PCIeアドレス空間にマッピングされ、BAR2空間245Bにおいてコントローラ上に物理的に格納されるものであり、コントローラ250は、BAR2空間245Bからコマンドを読み出して、対応する動作を実行する。
共有メモリアドレス空間220がデバイスのコントローラ250によってアクセスされて、テストプログラム215が発行するコマンドにしたがって、ホストデータバッファ225からデータが読み出され(プログラムコマンド)、ホストデータバッファ225にデータが書き込まれる(読み出しコマンド)。データは共有メモリアドレス空間220のホストデータバッファ225に格納され、当該データは、インデックス値230にしたがってインデックス付けされる。インデックス値は、デバイス280のコントローラ250によって読み出され、直近のコマンドと関連付けられた、ホストメモリバッファ225内のデータの位置が決定される。コントローラ250が、テストプログラム215が発行したコマンドに対応する動作を完了したとき、コントローラ250は、テストプログラム215に完了インジケータを送り、完了インジケータは、完了キュー235に格納される。完了インジケータは、それが関連付けられたコマンドを特定する。テストプログラム215が発行したコマンドは、共有メモリアドレス空間220に(例えば、ベースアドレスレジスタに)データ構造として格納され、データ構造は、ID値、インデックス値、メモリ位置、およびその他の引数(例えば、長さ、サイズなど)を含んでよい。完了インジケータがテストプログラム215によって読み出されたとき、コマンドがプログラムコマンドであるならば、ホストデータバッファ225に格納された対応するインデックスはクリアされ、新たなデータ用に再使用されてよい。コマンドが読み出しコマンドである場合は、ホストは、完了インジケータの受け取りに応じてデータにアクセスすることが可能である。
いくつかの実施形態によれば、コントローラ250は、アドレス変換およびマッピングなどの特定のデータ、ならびにテストプログラム215が発行するコマンドにアクセスするために1または複数のベースアドレスレジスタ(BAR)にアクセスする。ベースアドレスレジスタ(例えば、BAR0空間240BおよびBAR2空間245B)は、テストプログラム215の共有メモリアドレス空間にマッピングされ、読み出しコマンドの結果、PCIeアドレス空間においてコントローラ250内に物理的に格納される。コマンドがプログラムコマンドである場合は、コントローラはインデックス値を使用して、データが読み出されるメモリアドレスを決定する。
BAR0空間240Bは、ホストデータバッファ225のデータにアクセスするために、コントローラ250のPCIeアドレス空間にマッピングされた物理メモリアドレスを格納できる。プログラムコマンドをコントローラ250が受け取ったとき、コントローラは、BAR0空間240Bからコマンドのインデックスと関連付けられた物理メモリアドレスを読み出して、ホストメモリに書き込むための物理メモリアドレスを決定する。
BAR2 245Aは、テストプログラム215が発行したコマンドを、コントローラ250が実行する前に格納するためのコマンドキューとして使用することができる。コマンドは、コントローラ250がテストプログラム215から受け取ることができ、当該コマンドが実行される前にBAR2空間245Bのコマンドキューに格納できること、および、コマンドは任意の順序で実行できることを理解されたい。言い換えると、コマンドは、テストプログラム215が発行した順序、またはコントローラ250が読み出した順序と同一の順序で実行されることは求められず、コントローラ250は、コマンドの実行順序を決定できる。
コントローラ250は、データの格納にディスクファイル275および295を使用して、NANDダイ(例えば、図1のNANDダイ175および195)をシミュレートする。当該ディスクファイルは、NANDフラッシュのブロックをエミュレートするやり方で書き込むことができる。ここで、ファイルはそれぞれ特定のブロックと関連付けられ、データのページおよびセクタを含む。ブロックを表すファイルを、各NANDダイのプレーンと関連付けることもできる。テストプログラム215によってコマンドが発行されるとき、ディスクファイル275または295に格納されたデータのメモリ位置をコマンドの引数に含めて、コマンドに応答してコントローラ250がどのデータにアクセスする(読み出す、または書き込む)べきかを示すことができる。このようにして、DUTそのものが物理的に生産され、従来の手段を使用してテスト可能となる前に、シミュレートされたデバイス280は、NANDフラッシュからの読み出し(およびNANDフラッシュへの書き込み)に関してDUTをエミュレートできる。
いくつかの実施形態によれば、ディスクファイル275に書き込まれる対象のデータはキュー265に格納され、ディスクファイル295に書き込まれる対象のデータはキュー270に格納される。ディスクファイル275および295に書き込まれる対象のデータは、コントローラ250によってホストメモリ225から読み出されてよく、最初にキュー265および270に書き込まれてよい。さらに、コントローラ250がディスクファイル275および295から読み出したデータは、当該データがホストメモリ225に書き込まれる前にキュー265および270に格納することができる。シミュレートされたDUT280を使用し、さらに上述のメモリマッピング技術によってPCIeバスをシミュレートすることによって、本発明は、実際の物理DUTが利用可能となる前にテストプログラム215を開発およびデバッグできる環境を可能にする。
図3に関して、本発明の実施形態にしたがって、複数のシミュレートされたデバイスを同時にテストするための例示的なテスト環境300が示される。テストワークステーション305が、テストスイート310を実行し、テストスイート310は、ユーザインタフェースと、ソフトウェア機能と、システムテストモジュール315とインタフェースをとるための制御APIとを提供する。システムテストモジュール315は複数の組み込みプロセッサを有し、当該プロセッサはそれぞれLinuxベースのオペレーティングシステムを実行して、シミュレートされたデバイスをテストするためのテストサイトを提供する。
各テストサイトには、メモリベース通信プロトコルをシミュレートしてDUTをテストするための独自のメモリマップドエリア(例えば、mmapされたメモリ)が割り当てられる。例えば、テストサイト320は、複数のテストプログラムを実行して、最大8機のシミュレートされたDUT(例えば、Dut1〜Dut8)を同時にテストできる。ここで、各テストプログラムおよび各シミュレートされたDUTは、Linuxベースのオペレーティングシステムによって別個のプロセスとして実行される。テストサイト325も、同時に8機のシミュレートされたDUT(例えば、Dut9〜Dut16)および対応するテストプログラムを実行できる。システムテストモジュール315が有する組み込みプロセッサの数は、本発明の実施形態の範囲内で増減してよい。例えば、システムテストモジュール315は、Linuxベースのオペレーティングシステムを実行する組み込みプロセッサを最大96個含んで、最大768機のDUTを並行してテストできる。テストサイト320および325は、例えば、図2に示すテストプログラム215およびシミュレートされたデバイス280の複数のインスタンスを実行できる。
テストスイート310は、さまざまな動作状態をシミュレートするべく、DUTをテストするためのパラメータおよび構成を変更する機能を有することができる。例えば、ある一組のDUTをある1つの構成を使用してテストでき、別の一組のDUTを異なる構成を使用してテストでき、それらのDUTの結果を比較して、これらの構成によって生じる結果がどのように異なるかを決定することができる。さらに、個々のDUTは、迅速にエラーを検出し、素早いデバッグを行うために、さまざまな動作状態をシミュレートするよう構成することができる。
いくつかの実施形態によれば、テストスイート310は、シミュレートされたデバイスのストレステストを行うために、ランダムまたは擬似ランダムな遅延(例えば、読み出し遅延または書き込み遅延)を導入できる。
図4に関して、図1に示すシステム用のデータフロー図400が示される。データフロー図400は、テスト対象の物理デバイス465をテストするための例示的なソフトウェア階層またはソフトウェアスタックを示す。階層は、ホストシステムによって実行されるテストプログラム405を含み、特定のデバイス(DUT)465に対してデバイステストを行うよう構成される。テストプログラム405は、デバイス465の具体的なテスト要件にしたがって、デバイス465の製造業者によって提供されることが多い。APIライブラリ410は、テストプログラム405に機能を提供するアクセスライブラリを含み、当該機能は、デバイス465のハードウェアの制御に使用される。APIライブラリ410の機能は、テストプログラム405によって呼び出され、ソフトウェアインタフェース415を介して実行される。ソフトウェアインタフェース415は、デバイス465の通信インタフェースと通信するよう動作可能なデバイスプロトコル(例えばPCIe)であり、マシン別デバイスライブラリ420、カーネルインタフェース425、およびLinuxデバイスドライバ(カーネルモジュール)430を含む。ソフトウェアインタフェース415は、デバイスドライバ440を用いてインタフェース435を介して通信を行い、ルートコンプレックスデバイス445が、ホストシステムのプロセッサおよびメモリのサブシステムをデバイス465のPCIeコンポーネント450のPCIeスイッチファブリック455に接続する。メモリ管理ユニット460が、ホストシステムのメインメモリとデバイス465との間のインタフェース435を介したメモリアクセスを容易にする。
図5に関して、データフロー図500は、図2に示すシステム用である、本発明の実施形態に係る、メモリベース通信プロトコルをシミュレートして、シミュレートされたデバイス540をテストするための例示的なソフトウェア階層またはソフトウェアスタックを示す。データフロー図400と同様に、APIライブラリ510の機能がテストプログラム505によって呼び出され、ソフトウェアインタフェース515を介して実行される。ソフトウェアインタフェース515は、シミュレートされたデバイス540とインタフェースをとり、マシン別デバイスライブラリ520およびカーネルインタフェース525を含む。カーネルインタフェース525は、PCIe、またはPCIeに基づいて構築されたメモリベースプロトコルなどのメモリベース通信プロトコルをエミュレートできるシミュレートされた通信プロトコル530と相互作用する。
シミュレートされたプロトコル530とシミュレートされたデバイス540との間の相互作用は、mmapを使用して実装される共有メモリ535などの、Linuxベースのオペレーティングシステムの共有メモリ技術によって容易になる。共有メモリ535を使用して、テストプログラム505を実行するホストデバイスは、特定のメモリアドレスを使用してデータの読み出しおよび書き込みを行うことによって、シミュレートされたデバイス540と相互作用する。したがって、本発明の実施形態において、シミュレートされたデバイスをデバイスの開発が完了する前にテストするためのデータフロー500を提供することにより、テスタソフトウェアを開発およびデバッグすることができる。これにより、物理デバイスが利用可能となる前に、ソフトウェアでシミュレートされたデバイスをテストしデバッグすることによってテスタソフトウェアの生産開発の効率を向上させることができ、膨大な数の可変要素をテストするようテスタソフトウェアをカスタマイズしてテストの堅牢性および拡張可能性を高めることができる。
図6に関して、本発明の実施形態にしたがって、シミュレートされたデバイスをテストするための例示的な一連のコンピュータ実装段階600が示される。コンピュータ実装段階600は、Linuxベースのオペレーティングシステムを使用して行われてよい。ここで、テストプログラムおよびシミュレートされたデバイスのプログラムは、オペレーティングシステムによって制御される別個のプログラムまたはプロセスとして存在する。両プロセスは、共有メモリアドレス空間にアクセスできる。さらに、複数のデバイスを別個のプロセスとしてシミュレートすることができ、複数のテストプログラムを(例えば、一機のシミュレートされたデバイスにつき1つ)実行して、テスト環境の速度および堅牢性を高めることができる。
段階605において、共有メモリ空間のホストメモリ(例えば、ホストデータバッファ)の特定の位置に、既知のデータパターンが格納される。当該共有メモリ空間のホストメモリへは、シミュレートされたデバイスと、シミュレートされたデバイスをテストするべく命令を実行するテストプログラムとがともにアクセス可能である。段階610において、テストプログラムが、共有メモリ空間にコマンドを格納する。コマンドは、インデックス、ID、メモリ位置、および任意選択で、データ長またはデータサイズなどの他の引数のフィールドを含むデータ構造に格納される。いくつかの実施形態によれば、コマンドは、シミュレートされたデバイスのコントローラによる実行のためにコマンドをキューに投入するべく、テストプログラムおよびシミュレートされたデバイスの両方にとってアクセス可能となるよう、メモリにマッピングされたBARに格納され、キューに投入されたコマンドは、任意の順序で実行されてよい。
段階615において、シミュレートされたデバイスが、共有メモリ空間のデータ構造からコマンドにアクセスする。コマンドへのアクセスは、データ構造からインデックス、ID、メモリ位置、および他の引数を読み出すことを含むことができる。
段階620において、シミュレートされたデバイスが、コマンドIDによって規定される動作を、インデックスが示すメモリ位置を使用して行う。段階620は通常、共有メモリアドレス空間のデータにアクセスすることを含む。段階620はさらに、シミュレートされたデバイスが共有メモリ位置(例えば、BAR)にアクセスして、インデックスが示すデータの位置をホストメモリの物理メモリ位置にマッピングする物理アドレスマッピングをルックアップすることを含んでよい。以下でより十分に説明するように、動作には、プログラム動作、読み出し動作、消去動作などが含まれてよい。例えば、動作は、フラッシュメモリ(例えば、NANDフラッシュ)の1または複数のダイに対する読み出しおよび書き込みをシミュレートする方式によるディスクファイルに対するデータの読み出しまたは書き込みを含むことができる。動作はさらに、データをディスクファイルに書き込む前に、データを1または複数のキューに書き込むことを含んでよい。
ホストが発行したプログラム動作の場合、データ構造中のIDは、当該動作が、データ構造のインデックスによって示されるホストメモリ位置に予め格納されたデータを使用して、プログラム動作を実行することを含むことを示し、段階620は、シミュレートされたデバイスのコントローラが、インデックスによって示されるメモリ位置に応じたホストメモリ内のデータの読み出し要求(例えば、PCIe読み出し要求)を行うことをさらに含む。シミュレートされたデバイスのコントローラは、ホストメモリからデータを取得し、当該データを、同様にデータ構造中のメモリ位置によって示される位置の1または複数のディスクファイルに書き込む。データ構造中の長さフィールドまたはサイズフィールドは、ホストメモリから読み出されてディスクファイルに書き込まれる対象のデータ量を示すことができる。いくつかの実施形態によれば、書き込むデータの位置はインデックスによって示され、当該位置は共有メモリ空間(例えば、BAR)において規定されるメモリマッピングにしたがって、PCIeアドレス空間の物理メモリ位置に変換される。いくつかの実施形態によれば、ディスクファイルに書き込まれる対象のデータは、まずキューに書き込まれ、その後ディスクファイルに書き込まれる。プログラムコマンドが完了すると、DUTは完了インジケータを発行し、それによりホストはデータブロックを解放できる。
読み出し動作の場合、データ構造中のIDは、当該動作が、読み出し動作を実行して、デバイスの1または複数のディスクファイルに格納されたデータを取得することを含むことを示し、段階620は、シミュレートされたデバイスのコントローラが、データ構造中のメモリ位置によって示される位置の1または複数のディスクファイルからデータを取得し、さらに、提供されたインデックスにしたがって、ホストメモリ内の位置にデータを書き込むこと(例えば、PCIe書き込み要求を発行すること)をさらに含む。データ構造中の長さフィールドまたはサイズフィールドは、ディスクファイルから読み出されてホストメモリに書き込まれる対象のデータ量を示すことができる。いくつかの実施形態によれば、インデックスによって示されるデータを書き込むためのメモリ位置は、共有メモリ空間において(例えば、BARにおいて)規定されるメモリマッピングにしたがって、PCIeアドレス空間の物理メモリ位置に変換される。読み出し動作が完了すると、データが特定されたブロックにおいて利用可能である旨を、完了インジケータがホストに通知する。
消去動作の場合、データ構造中のIDは、当該動作が、消去動作を行ってデータを消去することを含むことを示し、段階620は、シミュレートされたデバイスのコントローラが、データ構造中のメモリ位置によって示される位置の1または複数のディスクファイルを消去することをさらに含む。データ構造中の長さフィールドまたはサイズフィールドは、消去対象のデータ量(例えば、ファイル量)を示すことができる。いくつかの実施形態によれば、各ディスクファイルはNANDフラッシュメモリのブロックを表し、消去動作はブロック単位(ファイル単位)で行われる。いくつかの実施形態によれば、消去動作は、メモリから1または複数のディスクファイルを削除することを含む。
段階625において、シミュレートされたデバイスが、完了インジケータをテストプログラムに送り、動作が完了したことを示す。完了インジケータは、共有メモリ空間のBARに実装された完了キューに格納できる。さらに、プログラムコマンドの場合、段階625は、コマンド完了後、各インデックス位置を解放することを含むことができる。読み出しコマンドの場合、完了インジケータは、データが読み出し準備完了であることをホストに通知する。
図7に関して、本発明の実施形態にしたがって、シミュレートされたデバイスをテストするための例示的な一連のコンピュータ実装段階700が示される。コンピュータ実装段階700は、Linuxベースのオペレーティングシステムを使用して行われてよい。ここで、テストプログラムおよびシミュレートされたデバイスのプログラムは、オペレーティングシステムによって制御される別個のプログラムまたはプロセスとして存在する。両プロセスは、共有メモリ空間にアクセスできる。さらに、複数のデバイスを別個のプロセスとしてシミュレートすることができ、複数のテストプログラムを(例えば、一機のシミュレートされたデバイスにつき1つ)実行して、テスト環境の速度および堅牢性を高めることができる。
段階705において、共有メモリ空間のホストメモリ(例えば、ホストデータバッファ)の特定の位置に、既知のデータパターンが格納される。当該共有メモリ空間のホストメモリへは、シミュレートされたデバイスと、シミュレートされたデバイスをテストするべく命令を実行するテストプログラムとがともにアクセス可能である。
段階710において、ホストが、DUTにプログラムされる対象のデータをメモリブロックに格納し、テストプログラムが、プログラムコマンドを共有メモリ空間に格納する。コマンドは、インデックス、ID、メモリ位置、および任意選択で、データ長またはデータサイズなどの他の引数のフィールドを含むデータ構造に格納される。いくつかの実施形態によれば、コマンドは、シミュレートされたデバイスのコントローラによる実行の前にコマンドを格納するべく、テストプログラムおよびシミュレートされたデバイスの両方にとってアクセス可能なBARに格納され、格納されたコマンドは、任意の順序で実行されてよい。
段階715において、シミュレートされたデバイスが、共有メモリ空間からプログラムコマンドにアクセスする。コマンドにアクセスすることは、共有メモリ空間のデータ構造から、インデックス、ID、メモリ位置、および他の引数を読み出すことを含むことができる。
段階720において、シミュレートされたデバイスのコントローラが、共有メモリ空間からデータを読み出す。当該データは、段階710において共有メモリ空間に格納されたデータである。シミュレートされたデバイスが読み出したデータの位置は、インデックスによって示される。コントローラは、例えば、PCIe読み出し要求をテストプログラムに対して発行することによって、ホストメモリからデータを取得できる。段階720はさらに、シミュレートされたデバイスが共有メモリ位置(例えば、BAR)にアクセスして、インデックスが示すデータの位置をホストメモリの物理メモリ位置にマッピングする物理アドレスマッピングをルックアップすることを含んでよい。
段階725において、シミュレートされたデバイスが、段階720において読み出したデータを、データ構造に格納されたメモリ位置が示す位置の1または複数のディスクファイルに書き込む。いくつかの実施形態によれば、ディスクファイルに書き込まれる対象のデータは、当該ディスクファイルに書き込まれる前に、まずキューに書き込まれる。
段階730において、シミュレートされたデバイスが、完了インジケータをテストプログラムに送り、プログラム動作が完了したことを示す。完了インジケータは、共有メモリ空間のBARに実装された完了キューに格納することができる。さらに、段階730は、プログラムコマンドが完了した後に、各インデックス位置を解放することを含んでよい。
任意選択的に、段階735〜750を行って、シミュレートされたデバイスに書き込んだデータを読み戻して、プログラム動作がエラーなく行われたことを検証することができる。
段階735において、インデックスと、当該コマンドが読み出し動作を含むことを示すIDと、段階725においてデータが書き込まれたメモリ位置とを有するデータ構造を使用して、テストプログラムが読み出しコマンドを共有メモリ空間に格納する。
段階740において、シミュレートされたデバイスが、共有メモリ空間から読み出しコマンドにアクセスする。当該コマンドにアクセスすることは、共有メモリ空間内のデータ構造から、インデックス、ID、メモリ位置、および他の引数を読み出すことを含むことができる。
段階745において、シミュレートされたデバイスが、読み出しコマンドに応答してメモリ位置からデータを読み出す。
段階750において、シミュレートされたデバイスが、インデックスにしたがって、ホストデータバッファ内の第2の位置にデータを書き込む。例えば、シミュレートされたデバイスはPCIe書き込み要求を発行して、データをホストデータバッファに書き込むことができる。いくつかの実施形態によれば、書き込み位置はインデックスによって示され、当該位置は、共有メモリ空間に格納されたBARにおいて規定されたメモリマッピングにしたがって、PCIeアドレス空間内の物理メモリ位置に変換される。
段階755において、シミュレートされたデバイスが、完了インジケータをテストプログラムに送り、書き込み動作が完了したことを示す。完了インジケータは、共有メモリ空間のBARに実装された完了キューに格納されてよい。さらに、段階755は、読み出しコマンドが完了した後に、各インデックス位置を解放することを含んでよい。
図8に関して、本発明の実施形態にしたがって、例示的なメモリベース通信プロトコルをシミュレートして、シミュレートされたデバイス840をテストするためのブロック図およびデータフロー図800が示される。テストプログラム810およびデバイスシミュレーション840は、Linuxベースのオペレーティングシステム内のCPU805によって実行される。テストプログラム810およびデバイスシミュレーション840は、CPU805によって別個のプロセスまたはプログラムとして実行されてよく、両プロセスまたはプログラムは、ホストデータバッファ815を含む共有メモリアドレス空間820にアクセスしてよい。デバイスシミュレーション840は、読み出しコマンドに応答してデータ855をテストプログラム810に送ることができ、デバイスシミュレーション840は、プログラムコマンドに応答して、ホストデータバッファ815から取得したデータ855を1または複数のディスクファイル850に書き込むことができる。動作完了後、デバイスシミュレーション840は完了インジケータ865を送り、完了インジケータは、完了キュー825に格納されてよい。
デバイスシミュレーション840は、テストプログラム810が発行したコマンド860に応答して動作(例えば、プログラム、読み出し、消去)を行う。それらのコマンドは、テストプログラム810およびデバイスシミュレーション840がともにアクセス可能な、ベースアドレスレジスタ830などの共有メモリ空間またはマッピングされたメモリ空間に格納できる。ベースアドレスレジスタ855が、PCIeアドレス空間においてデバイスシミュレーション840のメモリに実装され、テストプログラム810のメモリ空間(ベースアドレスレジスタ830)にマッピングされる。コマンドは、ID、インデックス、メモリ位置、および他の引数のフィールドを含むデータ構造として格納されてよい。テストプログラム810によって発行されたコマンドは、コマンドキュー845に格納でき、デバイスシミュレーション840は、任意の順序でコマンドを実行できる。
[例示的なコンピュータシステム]
本発明の実施形態は、デバイス開発の完了に依存せず、実際のDUTが手に入る前にソフトウェアをテストしデバッグして開発の効率を向上させることができ、膨大な数の可変要素をテストするようカスタマイズしてテストの堅牢性および拡張可能性を高めることのできる、シミュレートされたDUTのテストを行うための電子システムに関する。いくつかの実施形態は、テストプログラムと、PCIe(ペリフェラルコンポーネントインターコネクトエクスプレス)データバスを使用してホストデバイスと通信するNANDメモリデバイスをシミュレートするためのソフトウェアシミュレータとを実行する。以下の記載では、本発明の実施形態を実装するためのプラットフォームとして使用可能な、電子システムまたはコンピュータシステムの一例について説明する。
図9の例では、例示的なコンピュータシステム912(例えば、エージェントシステムまたは監視システム)は、ソフトウェアアプリケーションを実行するための中央演算処理装置(CPU)901と、任意選択で、オペレーティングシステム(例えば、Linux、またはLinuxベースのオペレーティングシステム)とを備える。ランダムアクセスメモリ902およびリードオンリメモリ903が、CPU901が使用するアプリケーションおよびデータを格納する。さらに、コンピュータシステム912のメモリ空間(例えば、ランダムアクセスメモリ902のメモリ空間)は、コマンドの発行およびデバイス間でのデータの転送のために、接続されたデバイス(例えば、DUT)にとってアクセス可能な共有メモリ位置をマッピングするのに使用されてよく、PCIeなどのパケットベースプロトコルを使用して実装されてよい。場合によっては、プロトコルは、実行する機能またはメモリ動作のタイプが異なればメモリの異なる部分が使用されるように規定されてよく、DUTは、ホストデバイスが発行するコマンドに基づいて動作を行うことが予期される。このようにして、本発明の実施形態は、共有メモリ技術を使用して、メモリデバイス(例えば、NANDフラッシュデバイス)をシミュレートして、メモリデバイステスト用のパケット化通信プロトコルをシミュレートすることができる。
データ記憶デバイス904は、アプリケーションおよびデータ用に不揮発性ストレージを提供し、固定ディスクドライブ、リムーバブルディスクドライブ、フラッシュメモリデバイス、および、CD−ROM、DVD−ROM、または他の光記憶デバイスを含んでよい。任意選択的なユーザ入力906および907は、1または複数のユーザからの入力をコンピュータシステム912に伝えるデバイス(例えば、マウス、ジョイスティック、カメラ、タッチスクリーン、および/またはマイク)を含む。
USBまたはBluetooth(登録商標)などの有線通信および/または無線通信を含み、かつ、イントラネットまたはインターネット(例えば、802.11無線規格)を含む電子通信ネットワークを介して、通信またはネットワークインタフェース908は、コンピュータシステム912が他のコンピュータシステム、ネットワーク、またはデバイスと通信することを可能にする。任意選択的な表示デバイス910は、コンピュータシステム912からの信号に応答して視覚情報を表示可能な任意のデバイスであってよく、例えばフラットパネルタッチセンサ式ディスプレイを含んでよい。コンピュータシステム912のコンポーネントは、1または複数のデータバス900を介して接続されてよい。当該コンポーネントは、CPU901、メモリ902/903、データストレージ904、ユーザ入力デバイス906、およびグラフィックスサブシステム905を含む。
図9の実施形態において、任意選択的なグラフィックスサブシステム905が、データバスおよびコンピュータシステム912のコンポーネントと接続されてよい。グラフィックスシステムは、物理グラフィックス処理ユニット(GPU)905およびグラフィックス/ビデオメモリを含んでよい。グラフィックスサブシステム905は、表示データを任意選択的な表示デバイス910に出力する。表示デバイス910は、HDMI(登録商標)、DVI、DisplayPort、VGAなどを使用してグラフィックスサブシステム905に通信可能に接続されてよい。
いくつかの実施形態が、1または複数のコンピュータまたは他のデバイスによって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的状況で説明されてよい。通常、プログラムモジュールは、特定のタスクを行い、または特定の抽出データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。通常、プログラムモジュールの機能は、さまざまな実施形態においては必要に応じて組み合わされてよく、または分散されてもよい。
本発明の実施形態の説明は、以上の通りである。本発明が特定の実施形態において説明されてきたが、本発明は、これらの実施形態によって限定されるものと解釈されるのではなく、むしろ、以下の特許請求の範囲にしたがって解釈されるべきであることを理解されたい。

Claims (25)

  1. シミュレートされたデバイスをテストするためのメモリベース通信プロトコルをシミュレートするための方法であって、
    ホストのデータバッファにデータを格納する段階であって、前記ホストはテスタシステムであり、前記ホストのデータバッファは、共有メモリ空間に実装される、段階と、
    テスタシステムプログラムの命令を実行して、インデックス、ID、およびメモリ位置を含むデータ構造を使用して、前記共有メモリ空間にコマンドを格納する段階と、
    DUTシミュレーションの命令を実行して、
    前記共有メモリ空間から前記コマンドを読み出し、
    前記共有メモリ空間のブロックにアクセスして、前記IDによって規定される動作を行い、
    前記動作の完了後、完了インジケータを前記テスタシステムプログラムに送る、
    実行する段階であって、前記共有メモリ空間のブロックの位置は、前記インデックスによって示される、段階と
    を備える方法。
  2. 前記IDは、前記コマンドがプログラム動作を含むことを示し、前記アクセスは、前記ブロックを読み出して、前記メモリ位置に書き込むデータを取得することであり、前記動作は、前記プログラム動作を行うことを含み、前記方法は、前記DUTシミュレーションの命令を実行して、前記コマンドに応答して前記データをディスクファイルに書き込む段階をさらに備える、
    請求項1に記載の方法。
  3. 前記IDは、前記コマンドが読み出し動作を含むことを示し、前記アクセスは、前記メモリ位置から読み出したデータを格納することであり、前記動作は、前記読み出し動作を行うことを含み、前記方法は、前記DUTシミュレーションの命令を実行して、1または複数のディスクファイルにアクセスして前記メモリ位置のデータを読み出し、前記共有メモリ空間のブロックの前記ホストのデータバッファに格納する段階をさらに備える、
    請求項1または2に記載の方法。
  4. 前記テスタシステムプログラムの命令および前記DUTシミュレーションの命令は、Linuxベースのオペレーティングシステムによって管理される別個のプロセスとして実行される、
    請求項1から3の何れか一項に記載の方法。
  5. 前記動作の後に前記データを検証して、前記プログラム動作の後、エラーがないか前記シミュレートされたデバイスをテストする、検証する段階をさらに備える
    請求項2に記載の方法。
  6. 前記検証する段階は、前記データを予期される結果と比較する段階を有する、
    請求項5に記載の方法。
  7. 前記コマンドは、前記シミュレートされたデバイスのベースアドレスレジスタに格納される、
    請求項1から6の何れか一項に記載の方法。
  8. 前記テスタシステムプログラムの命令および前記DUTシミュレーションの命令は、同一のプロセッサによって実行される、
    請求項4から7の何れか一項に記載の方法。
  9. 前記共有メモリ空間は、物理メモリをエミュレートするメモリマップドファイルを有する、
    請求項1から8の何れか一項に記載の方法。
  10. 前記メモリマップドファイルは、mmapを使用してマッピングされたファイルを含む、
    請求項9に記載の方法。
  11. 前記共有メモリ空間は、NANDフラッシュメモリをエミュレートするメモリマップドファイルを有する、
    請求項1から10の何れか一項に記載の方法。
  12. 前記メモリベース通信プロトコルは、PCIe通信バスプロトコルを利用する、
    請求項1から11の何れか一項に記載の方法。
  13. シミュレートされたデバイスのプログラム動作をテストするためのメモリベース通信プロトコルをシミュレートするための方法であって、
    ホストデータバッファにデータを格納する段階であって、前記ホストデータバッファは、共有メモリ空間に実装される、段階と、
    テスタシステムプログラムの命令を実行して、第1のインデックス、プログラム動作のID、およびメモリ位置を含むデータ構造を使用して前記共有メモリ空間に前記プログラム動作を格納する段階と、
    DUTシミュレーションの命令を実行して、
    前記共有メモリ空間の前記プログラム動作にアクセスし、
    前記第1のインデックスによって規定される、前記共有メモリ空間のブロックからデータを読み出し、
    前記データを前記メモリ位置の1または複数のディスクファイルに書き込み、
    前記データを前記メモリ位置に書き込んだ後に第1の完了インジケータを前記テスタシステムプログラムに送る、
    実行する段階と、
    前記テスタシステムプログラムの命令を実行して、第2のインデックス、読み出し動作を示すID、および前記メモリ位置を含むデータ構造を使用して前記共有メモリ空間に前記読み出し動作を格納する段階と、
    前記DUTシミュレーションの命令を実行して、
    前記メモリ位置から前記データを読み出し、
    前記第2のインデックスにしたがって前記データを前記ホストデータバッファのブロックに書き込み、
    前記データを前記第2のインデックスによって規定される前記ブロックに書き込んだ後、第2の完了インジケータを前記テスタシステムプログラムに送る、
    実行する段階と
    を備える方法。
  14. 前記読み出し動作の後に前記データを検証して、エラーがないか前記シミュレートされたデバイスをテストする、検証する段階をさらに備え、前記検証する段階は、前記データを予期される結果と比較する段階を有する、
    請求項13に記載の方法。
  15. 前記第1の完了インジケータは、前記テスタシステムプログラムが管理するキューに格納される、
    請求項13または14に記載の方法。
  16. 前記メモリ位置は、ディスクのメモリ位置を参照し、前記メモリ位置は、フラッシュメモリをシミュレートするためのディスクファイルとして実装される、
    請求項13から15の何れか一項に記載の方法。
  17. テスト対象デバイスをシミュレートするためのシステムであって、
    Linuxベースのオペレーティングシステムを実行するプロセッサと、
    テスタシステムプログラムおよびDUTシミュレーションプログラム用の共有メモリ空間を提供する、前記プロセッサと通信するメモリと
    を備え、
    前記テスタシステムプログラムおよび前記DUTシミュレーションプログラムの命令は、前記プロセッサによって実行され、前記プロセッサは、前記テスト対象デバイスのシミュレーションをテストするためのメモリベース通信プロトコルをシミュレートするための方法を行い、前記方法は、
    データをホストのデータバッファに格納する段階であって、前記ホストはテスタシステムであり、前記ホストのデータバッファは共有メモリ空間において実装される、段階と、
    前記テスタシステムプログラムの命令を実行して、インデックス、ID、およびメモリ位置を含むデータ構造を使用してコマンドを前記共有メモリ空間に格納する段階と、
    前記DUTシミュレーションプログラムの命令を実行して、
    前記共有メモリ空間から前記コマンドを読み出し、
    前記共有メモリ空間のブロックにアクセスして、前記IDによって規定される動作を行い、
    前記動作の完了後、完了インジケータを前記テスタシステムプログラムに送る、
    実行する段階であって、前記共有メモリ空間のブロックの位置は前記インデックスによって示される、段階とを備える、
    システム。
  18. 前記方法は、前記動作の後に前記データを検証して、前記シミュレートされたデバイスをテストする、検証する段階をさらに備え、前記検証する段階は、前記動作の後に前記データを予期される結果と比較する段階を有する、
    請求項17に記載のシステム。
  19. 前記IDは、前記コマンドがプログラム動作を含むことを示し、前記動作は、前記プログラム動作を行うことを含み、前記方法は、前記DUTシミュレーションプログラムの命令を実行して、前記コマンドに応答して、前記インデックスによって規定される、前記共有メモリ空間のブロックの前記データをディスクファイルに書き込む段階をさらに備える、
    請求項17または18に記載のシステム。
  20. 前記IDは、前記コマンドが読み出し動作を含むことを示し、前記動作は、前記読み出し動作を行うことを含み、前記方法は、前記DUTシミュレーションプログラムの命令を実行して、1または複数のディスクファイルにアクセスしてデータを読み出し、前記1または複数のディスクファイルの前記データを前記ホストのデータバッファの前記インデックスによって規定される位置に書き込む段階をさらに備える、
    請求項17から19の何れか一項に記載のシステム。
  21. 前記テスタシステムプログラムの命令および前記DUTシミュレーションプログラムの命令は、別個のプロセスとして実行され、前記別個のプロセスは、前記Linuxベースのオペレーティングシステムによって管理される、
    請求項17から20の何れか一項に記載のシステム。
  22. 前記メモリベース通信プロトコルは、PCIe通信バスプロトコルである、請求項17から21の何れか一項に記載のシステム。
  23. シミュレートされたデバイスとメモリベース通信を行うためのシステムであって、
    プロセッサと、
    前記プロセッサに接続されたメモリと、
    前記プロセッサによって実行されるテスタシステムプロセスと
    を備え、
    前記テスタシステムプロセスには、ホストデータバッファを含む共有メモリアドレス空間が割り当てられ、前記テスタシステムプロセスは、前記ホストデータバッファにデータを格納し、前記共有メモリアドレス空間にコマンドを格納することによってコマンドをデバイスプロセスに発行し、
    前記デバイスプロセスは、デバイスをシミュレートするために前記プロセッサによって実行され、前記デバイスプロセスはコントローラを有し、前記コントローラは、
    ディスクファイルからデータを読み出し、
    データを前記ディスクファイルに書き込み、
    前記共有メモリアドレス空間から前記コマンドを読み出し、
    前記コマンドにしたがって動作を行うよう動作可能であり、前記コマンドは、
    前記ホストデータバッファからインデックス付きデータを読み出し、前記インデックス付きデータを前記ディスクファイルに書き込むプログラム動作と、
    前記ディスクファイルからデータを読み出し、インデックス値にしたがって前記データを前記ホストデータバッファに書き込む読み出し動作と、
    前記ディスクファイルの1または複数を消去する消去動作とを含む、
    システム。
  24. 前記テスタシステムプロセスはテスタシステムをシミュレートし、前記デバイスプロセスはテスト対象デバイスをシミュレートする、請求項23に記載のシステム。
  25. 前記共有メモリアドレス空間は、前記テスタシステムと前記テスト対象デバイスとの間のPCIeバスをシミュレートする、請求項24に記載のシステム。
JP2020070666A 2019-06-03 2020-04-09 シミュレートされたデバイスをメモリベース通信プロトコルを使用してテストするためのシステムおよび方法 Active JP6916340B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/430,284 2019-06-03
US16/430,284 US11302412B2 (en) 2019-06-03 2019-06-03 Systems and methods for simulated device testing using a memory-based communication protocol

Publications (2)

Publication Number Publication Date
JP2020198087A true JP2020198087A (ja) 2020-12-10
JP6916340B2 JP6916340B2 (ja) 2021-08-11

Family

ID=73550359

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020070666A Active JP6916340B2 (ja) 2019-06-03 2020-04-09 シミュレートされたデバイスをメモリベース通信プロトコルを使用してテストするためのシステムおよび方法

Country Status (5)

Country Link
US (1) US11302412B2 (ja)
JP (1) JP6916340B2 (ja)
KR (1) KR102243791B1 (ja)
CN (1) CN112035299B (ja)
TW (1) TWI743703B (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11069420B2 (en) * 2019-07-25 2021-07-20 Micron Technology, Inc. In-system test of a memory device
CN112711442A (zh) * 2020-12-29 2021-04-27 北京浪潮数据技术有限公司 一种主机命令写入方法、设备、***及可读存储介质
CN113191114B (zh) * 2021-04-30 2023-11-10 北京百度网讯科技有限公司 用于验证***的方法和装置
US20220382668A1 (en) * 2021-05-28 2022-12-01 Advantest Corporation Systems and methods for concurrent and automated testing of zoned namespace solid state drives
TWI772189B (zh) * 2021-09-24 2022-07-21 英業達股份有限公司 硬碟模擬裝置及應用該裝置的測試系統及其測試方法
CN117806892B (zh) * 2024-02-29 2024-06-14 山东云海国创云计算装备产业创新中心有限公司 存储芯片模型测试方法、装置、通信设备及存储介质

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0561935A (ja) * 1991-08-30 1993-03-12 Hitachi Ltd 論理シミユレーシヨン方式
JPH06194415A (ja) * 1992-09-30 1994-07-15 American Teleph & Telegr Co <Att> 論理回路の試験方法とその装置
US5920490A (en) * 1996-12-26 1999-07-06 Adaptec, Inc. Integrated circuit test stimulus verification and vector extraction system
US6076179A (en) * 1997-01-29 2000-06-13 Altera Corporation Method and apparatus of increasing the vector rate of a digital test system
US6493811B1 (en) * 1998-01-26 2002-12-10 Computer Associated Think, Inc. Intelligent controller accessed through addressable virtual space
US6185707B1 (en) * 1998-11-13 2001-02-06 Knights Technology, Inc. IC test software system for mapping logical functional test data of logic integrated circuits to physical representation
JP2001134469A (ja) * 1999-08-16 2001-05-18 Advantest Corp 半導体試験用プログラムデバッグ装置
US7184917B2 (en) * 2003-02-14 2007-02-27 Advantest America R&D Center, Inc. Method and system for controlling interchangeable components in a modular test system
US7155379B2 (en) * 2003-02-25 2006-12-26 Microsoft Corporation Simulation of a PCI device's memory-mapped I/O registers
EP1767955B1 (en) * 2003-03-31 2008-10-01 Advantest Corporation Test apparatus
JP2005032191A (ja) * 2003-07-11 2005-02-03 Sharp Corp 仮想テスタ、テスト装置、半導体集積回路用テストシステム、及び半導体集積回路用テストプログラムの検証方法
JP3774848B2 (ja) * 2003-07-15 2006-05-17 忠義 須藤 ドアガードのロック機構と掛かり防止機構
US20050251766A1 (en) 2004-05-07 2005-11-10 Shah Gaurav R Circuit design interface
US7210087B2 (en) * 2004-05-22 2007-04-24 Advantest America R&D Center, Inc. Method and system for simulating a modular test system
US7737715B2 (en) * 2006-07-31 2010-06-15 Marvell Israel (M.I.S.L) Ltd. Compensation for voltage drop in automatic test equipment
KR20080015691A (ko) * 2006-08-16 2008-02-20 삼성전자주식회사 시스템 온 칩 모델 검증 방법 및 장치
US8229727B2 (en) * 2007-01-09 2012-07-24 International Business Machines Corporation System and method for incorporating design behavior and external stimulus in microprocessor emulation model feedback using a shared memory
US20090119542A1 (en) * 2007-11-05 2009-05-07 Advantest Corporation System, method, and program product for simulating test equipment
US8719649B2 (en) * 2009-03-04 2014-05-06 Alcatel Lucent Method and apparatus for deferred scheduling for JTAG systems
US8386867B2 (en) * 2009-07-02 2013-02-26 Silicon Image, Inc. Computer memory test structure
JP2012027688A (ja) * 2010-07-23 2012-02-09 Panasonic Corp シミュレーション装置
US9043665B2 (en) * 2011-03-09 2015-05-26 Intel Corporation Functional fabric based test wrapper for circuit testing of IP blocks
US20140236527A1 (en) * 2013-02-21 2014-08-21 Advantest Corporation Cloud based infrastructure for supporting protocol reconfigurations in protocol independent device testing systems
US9310427B2 (en) * 2013-07-24 2016-04-12 Advantest Corporation High speed tester communication interface between test slice and trays
US9910689B2 (en) 2013-11-26 2018-03-06 Dynavisor, Inc. Dynamic single root I/O virtualization (SR-IOV) processes system calls request to devices attached to host
US9316689B2 (en) * 2014-04-18 2016-04-19 Breker Verification Systems Scheduling of scenario models for execution within different computer threads and scheduling of memory regions for use with the scenario models
US9454636B1 (en) 2015-04-02 2016-09-27 Esilicon Corporation Integrated circuit design optimization
US9678150B2 (en) * 2015-10-27 2017-06-13 Xilinx, Inc. Methods and circuits for debugging circuit designs
US10073932B2 (en) * 2016-03-04 2018-09-11 Synopsys, Inc. Capturing time-slice of emulation data for offline embedded software debug
US10719644B2 (en) * 2017-06-30 2020-07-21 Synopsys, Inc. Method and framework to dynamically split a testbench into concurrent simulatable multi-processes and attachment to parallel processes of an accelerated platform
US10295596B1 (en) * 2017-08-09 2019-05-21 Cadence Design Systems, Inc. Method and system for generating validation tests
GB2576493B (en) * 2018-07-23 2022-01-05 Advanced Risc Mach Ltd Data Processing

Also Published As

Publication number Publication date
TWI743703B (zh) 2021-10-21
KR20200139083A (ko) 2020-12-11
TW202105376A (zh) 2021-02-01
US11302412B2 (en) 2022-04-12
US20200381071A1 (en) 2020-12-03
CN112035299B (zh) 2024-03-19
KR102243791B1 (ko) 2021-04-22
CN112035299A (zh) 2020-12-04
JP6916340B2 (ja) 2021-08-11

Similar Documents

Publication Publication Date Title
JP6916340B2 (ja) シミュレートされたデバイスをメモリベース通信プロトコルを使用してテストするためのシステムおよび方法
US8180620B2 (en) Apparatus and method for performing hardware and software co-verification testing
CN102567166B (zh) 一种显卡测试方法及测试***
US9262305B1 (en) Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system
WO2014035463A1 (en) System and methods for generating and managing a virtual device
US20060130029A1 (en) Programming language model generating apparatus for hardware verification, programming language model generating method for hardware verification, computer system, hardware simulation method, control program and computer-readable storage medium
CN105893234A (zh) 用于软件测试的方法和计算设备
US9792402B1 (en) Method and system for debugging a system on chip under test
US20110289373A1 (en) Electornic Design Emulation Display Tool
US11347531B2 (en) Generalized virtualization platform for systems using hardware abstraction software layers
US20080184150A1 (en) Electronic circuit design analysis tool for multi-processor environments
CN114168200B (zh) 多核处理器访存一致性的验证***及方法
KR20220161200A (ko) 구역화된 네임스페이스 솔리드 스테이트 드라이브의 동시 및 자동 테스트 시스템 및 방법
CN107515803A (zh) 一种存储性能测试方法和装置
US9658849B2 (en) Processor simulation environment
CN116306392A (zh) 芯片仿真装置、方法、电子设备和存储介质
US20120191444A1 (en) Simulation device, simulation method, and computer program therefor
US10339229B1 (en) Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system
EP3734491A1 (en) Method, apparatus, device, and medium for implementing simulator
JP2013020425A (ja) オープンソースソフトウェアを利用したハードウェア・ソフトウェア協調検証方法
US11004532B2 (en) Method and system for analyzing traffic data
JP2007052783A (ja) データ処理装置のシミュレーション
Liu et al. VST: A virtual stress testing framework for discovering bugs in SSD flash-translation layers
US9721048B1 (en) Multiprocessing subsystem with FIFO/buffer modes for flexible input/output processing in an emulation system
US20240054258A1 (en) Unpack trigger for testing electronic control units

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200807

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210623

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210706

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210715

R150 Certificate of patent or registration of utility model

Ref document number: 6916340

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150