(57)【要約】      （修正有）【課題】テスタプロセッサの処理負荷およびシステムバスのバンド幅要件を最小限に保つことができるテストアーキテクチャを提供する。【解決手段】自動テスト装置はシステムコントローラを有するコンピュータシステムを備え、システムコントローラはテスタプロセッサおよびＦＰＧＡと通信可能に接続される。テスタプロセッサは、被試験デバイス（ＤＵＴ）のテストをコーディネートする命令から、コマンドおよびデータを生成する動作を行う。ＤＵＴは複数の非標準セクタサイズおよび複数のプロテクションモードをサポートする。ＦＰＧＡは内部でコマンドおよびデータを生成する動作を行うハードウェアアクセラレータ回路を有し、ハードウェアアクセラレータ回路は複数のプロテクションモードに関連付けられたプロテクション情報を計算し、複数の非標準セクタサイズのそれぞれに適合するサイズの繰返し可能なテストパターンを生成する演算処理を実行する。【選択図】図１３
2020101519.tif 000002
【特許請求の範囲】
【請求項１】
システムコントローラを有するコンピュータシステムを備え、前記システムコントローラは、テスタプロセッサおよびＦＰＧＡと通信可能に接続され、前記システムコントローラは、前記テスタプロセッサに命令を送信する動作を行うことができ、前記テスタプロセッサは、被試験デバイス（ＤＵＴ）のテストをコーディネートする前記命令から、コマンドおよびデータを生成する動作を行うことができ、前記ＤＵＴは、複数の非標準セクタサイズおよび複数のプロテクションモードをサポートし、
前記ＦＰＧＡは、前記テスタプロセッサに通信可能に接続され、前記ＦＰＧＡは、前記ＤＵＴをテストするために、前記テスタプロセッサから透過的に内部でコマンドおよびデータを生成する動作を行うことができる少なくとも１つのハードウェアアクセラレータ回路を有し、前記少なくとも１つのハードウェアアクセラレータ回路は、前記複数のプロテクションモードに関連付けられたプロテクション情報を計算し、前記複数の非標準セクタサイズのそれぞれに適合するサイズの繰返し可能なテストパターンを生成する演算処理を実行することができ、
前記テスタプロセッサは、複数の機能モードのうちの１つで動作するように構成され、それぞれの機能モードは、コマンドの生成およびデータの生成の機能を前記テスタプロセッサおよび前記ＦＰＧＡの間で異なる態様で割り当てるように構成される
自動テスト装置（ＡＴＥ装置）。
【請求項２】
前記システムコントローラは、ユーザが前記複数の機能モードのうちの１つを選択することを可能にする動作を行うことができるグラフィカルユーザインタフェース（ＧＵＩ）を提供する動作を行うことができる請求項１に記載の装置。
【請求項３】
前記システムコントローラは、前記複数のプロテクションモードのそれぞれおよび前記複数の非標準セクタサイズのそれぞれについて、前記ＤＵＴをテストするために前記テスタプロセッサおよび前記ＦＰＧＡを構成する動作を行うことができる請求項１または２に記載の装置。
【請求項４】
前記複数の機能モードは、バイパスモード、ハードウェアアクセラレータパターンジェネレータモード、ハードウェアアクセラレータメモリモード、およびハードウェアアクセラレータパケットビルダモードを含む４つの機能モードを含む請求項１から３のいずれか一項に記載の装置。
【請求項５】
前記バイパスモードにおいて、前記テスタプロセッサは、前記ＤＵＴのテストをコーディネートする全てのコマンドおよびデータを生成するように構成され、前記データは、前記複数のプロテクションモードに関連付けられた前記プロテクション情報および前記複数の非標準セクタサイズのそれぞれに適合するセクタデータを含む請求項４に記載の装置。
【請求項６】
前記ハードウェアアクセラレータパターンジェネレータモードにおいて、前記テスタプロセッサは、前記ＤＵＴのテストをコーディネートする全てのコマンドを生成するように構成され、前記ＦＰＧＡの前記少なくとも１つのハードウェアアクセラレータ回路はテストパターンデータを生成し、前記テストパターンデータは、前記複数のプロテクションモードに関連付けられた前記プロテクション情報および前記複数の非標準セクタサイズのそれぞれに適合するセクタデータを含む請求項４または５に記載の装置。
【請求項７】
前記ハードウェアアクセラレータメモリモードにおいて、前記テスタプロセッサは、前記ＤＵＴのテストをコーディネートする全てのコマンドを生成するように構成され、前記ＦＰＧＡの前記少なくとも１つのハードウェアアクセラレータ回路は、メモリデバイスからのテストパターンデータの読み出し、前記ＤＵＴへの前記テストパターンデータの書き込み、および、前記ＤＵＴから読み出した前記データの比較を含むグループから選択した段階を実行し、前記メモリデバイスに格納された前記テストパターンデータは、前記複数のプロテクションモードに関連付けられた前記プロテクション情報および前記複数の非標準セクタサイズのそれぞれに適合するセクタデータを含む請求項４から６のいずれか一項に記載の装置。
【請求項８】
前記ハードウェアアクセラレータパケットビルダモードにおいて、前記ＦＰＧＡの前記少なくとも１つのハードウェアアクセラレータ回路は、前記ＤＵＴのテストをコーディネートするテストパターンデータおよびコマンドデータの両方を生成するように構成され、前記テストパターンデータは、前記複数のプロテクションモードに関連付けられた前記プロテクション情報および前記複数の非標準セクタサイズのそれぞれに適合するセクタデータを含む請求項４から７のいずれか一項に記載の装置。
【請求項９】
前記システムコントローラは、Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムを実行する動作を行うことができる請求項１から８のいずれか一項に記載の装置。
【請求項１０】
前記テスタプロセッサは、Ｌｉｎｕｘ（登録商標）オペレーティングシステムを実行するように構成される請求項１から９のいずれか一項に記載の装置。
【請求項１１】
前記ＦＰＧＡは、ＩＰコアを含み、前記ＩＰコアは、プロトコルをエミュレートするようにプログラムされる動作を行うことができ、前記プロトコルは、ＳＡＴＡおよびＳＡＳからなるグループから選択される請求項１から１０のいずれか一項に記載の装置。
【請求項１２】
前記ＩＰコアは、異なるプロトコルをエミュレートするように再プログラムされる動作を行うことができる請求項１１に記載の装置。
【請求項１３】
前記ＤＵＴは、ソリッドステートデバイス（ＳＳＤ）である請求項１から１２のいずれか一項に記載の装置。
【請求項１４】
前記複数の非標準セクタサイズは、５２０＋０、４１０４＋０、５２８＋０、および４２２４＋０からなるグループから選択されることができる請求項１３に記載の装置。
【請求項１５】
前記複数のプロテクションモードは、５１２＋８および４０９６＋８からなるグループから選択されることができる請求項１３に記載の装置。
【請求項１６】
自動テスト装置（ＡＴＥ装置）を用いてテストを行う方法であって、
コンピュータシステムのシステムコントローラからテスタプロセッサへと命令を送信する段階であって、前記システムコントローラは、前記テスタプロセッサおよびＦＰＧＡに通信可能に接続され、前記テスタプロセッサは、複数のＤＵＴのテストをコーディネートする前記命令から、コマンドおよびデータを生成する動作を行うことができ、前記複数のＤＵＴのそれぞれは、複数の非標準セクタサイズおよび複数のプロテクションモードをサポートする、送信する段階と、
ＦＰＧＡ内にプログラムされたハードウェアアクセラレータ回路を用いて、前記テスタプロセッサから透過的に、複数のＤＵＴをテストするコマンドおよびデータを生成する段階であって、前記ＦＰＧＡは、前記テスタプロセッサに通信可能に接続され、前記ハードウェアアクセラレータ回路は、前記複数のＤＵＴをテストする動作を行うことができ、前記ハードウェアアクセラレータ回路は、前記複数のプロテクションモードに関連付けられたプロテクション情報を計算し、前記複数の非標準セクタサイズのそれぞれに適合するサイズの繰返し可能なテストパターンを生成する演算処理を実行することができる、生成する段階と、
前記テスタプロセッサを、複数の機能モードのうちの１つで動作させる段階であって、それぞれの機能モードは、コマンドの生成およびデータの生成の機能を前記テスタプロセッサおよび前記ＦＰＧＡの間で異なる態様で割り当てるように構成される、動作させる段階と
を備える方法。
【請求項１７】
前記複数の機能モードは、バイパスモード、ハードウェアアクセラレータパターンジェネレータモード、ハードウェアアクセラレータメモリモード、およびハードウェアアクセラレータパケットビルダモードを含む４つの機能モードを含む請求項１６に記載の方法。
【請求項１８】
前記バイパスモードにおいて、前記方法は、前記テスタプロセッサを用いて、前記複数のＤＵＴのテストをコーディネートする全てのコマンドおよびデータを生成する段階をさらに備え、前記バイパスモードにおいて前記テスタプロセッサにより生成される前記データは、前記複数のプロテクションモードに関連付けられた前記プロテクション情報および前記複数の非標準セクタサイズのそれぞれに適合するセクタデータを含む請求項１７に記載の方法。
【請求項１９】
前記ハードウェアアクセラレータパターンジェネレータモードにおいて、前記方法は、
前記テスタプロセッサを用いて、前記複数のＤＵＴのテストをコーディネートする全てのコマンドを生成する段階と、
前記ハードウェアアクセラレータ回路を用いて、全てのテストパターンデータを生成すること、前記テストパターンデータを書き込むこと、および前記複数のＤＵＴから読み出した前記テストパターンデータを比較することを含むグループから選択されたステップを実行する段階であって、前記テストパターンデータは、前記複数のプロテクションモードに関連付けられた前記プロテクション情報および前記複数の非標準セクタサイズのそれぞれに適合するセクタデータを含む、段階と
を有する請求項１７または１８に記載の方法。
【請求項２０】
前記ハードウェアアクセラレータメモリモードにおいて、前記方法は、
前記テスタプロセッサを用いて、前記複数のＤＵＴのテストをコーディネートする全てのコマンドを生成する段階と、
前記ハードウェアアクセラレータ回路を用いて、メモリデバイスからのテストパターンデータの読み出し、前記複数のＤＵＴへの前記テストパターンデータの書き込み、および、前記複数のＤＵＴから読み出した前記データの比較を含むグループから選択した段階を実行する段階であって、前記メモリデバイス内の前記テストパターンデータは、前記複数のプロテクションモードに関連付けられた前記プロテクション情報および前記複数の非標準セクタサイズのそれぞれに適合するセクタデータを含む、段階と
を有する請求項１７から１９のいずれか一項に記載の方法。
【請求項２１】
前記ハードウェアアクセラレータパケットビルダモードにおいて、前記方法は、前記ハードウェアアクセラレータ回路を用いて、前記１または２のＤＵＴのテストをコーディネートする全てのコマンドおよびテストパターンデータを生成する段階を更に備え、前記テストパターンデータは、前記複数のプロテクションモードに関連付けられた前記プロテクション情報および前記複数の非標準セクタサイズのそれぞれに適合するセクタデータを含む請求項１７から２０のいずれか一項に記載の方法。
【請求項２２】
それぞれが複数の非標準セクタサイズおよび複数のプロテクションモードをサポートする複数のＤＵＴをテストするテストプログラムを制御するシステムコントローラと、
複数のテスタスライスを有するプリミティブであって、それぞれのテスタスライスは、
前記システムコントローラと通信するべく接続され、前記テストプログラムにしたがって前記システムコントローラから命令およびデータを受信するテスタプロセッサ、および、前記テスタプロセッサに接続された少なくとも１つのプログラマブルインスタンス化テスタブロックを有し、
前記少なくとも１つのプログラマブルインスタンス化テスタブロックは、前記テスタプロセッサに透過的な方法で前記複数のＤＵＴに適用されるテストデータを生成する動作を行うことができ、さらに前記テスタプロセッサに透過的な方法で前記複数のＤＵＴにより生成されたテストデータを受信して比較する動作を行うことができ、またさらに、前記複数のＤＵＴと互換性がある通信またはストレージプロトコルにより前記複数のＤＵＴと通信するようにプログラムされる動作を行うことができ、
前記少なくとも１つのプログラマブルインスタンス化テスタブロックは、前記複数のプロテクションモードに関連付けられたプロテクション情報を計算し、前記複数の非標準セクタサイズのそれぞれに適合するサイズの繰返し可能なテストパターンを生成する演算処理を実行することができるハードウェアアクセラレータ回路を含む、
プリミティブと、
前記プログラマブルインスタンス化テスタブロックに接続され、その中にテストデータを格納するローカルメモリと、
前記複数のテスタスライスを前記複数のＤＵＴに接続するデバイスインタフェースボードと
を備え、
それぞれのプログラマブルインスタンス化テスタブロックは、複数の機能モードのうちの１つで動作可能であり、それぞれの機能モードは、コマンドの生成およびデータの生成の機能を前記テスタプロセッサおよび前記プログラマブルインスタンス化テスタブロックの間で異なる態様で割り当てるように構成される
テスタ。
【請求項２３】
前記プログラマブルインスタンス化テスタブロックは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）デバイスの中に実装される請求項２２に記載のテスタ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して電子デバイステストシステムの分野、より具体的には被試験デバイス（ＤＵＴ）をテストするための電子デバイステスト装置の分野に関する。
【背景技術】
【０００２】
自動テスト装置（ＡＴＥ）は、半導体デバイスまたは電子アセンブリに対してテストを行う、任意のテストアセンブリであってよい。ＡＴＥアセンブリは、測定を迅速に行う自動テストを実行し、その後解析され得るテスト結果を生成するのに用いられてよい。ＡＴＥアセンブリは、計測器に接続されたコンピュータシステムから、システムオンチップ（ＳＯＣ）のテストまたは集積回路のテストなどの、電子部品および／または半導体ウエハのテストを自動的に行うことが可能である、カスタムの専用コンピュータ制御システムおよび多くの異なるテスト機器を含みうる複雑な自動テストアセンブリまでのいずれであってもよい。ＡＴＥシステムは、デバイスが設計通りに機能することを保証するためにデバイスをテストするのに費やされる時間を低減すると共に、与えられたデバイスが消費者に届く前に、その中に欠陥部品が存在していないかを判定する診断ツールとして機能する。
【０００３】
図１は、例えばＤＲＡＭなどの半導体メモリデバイスのような典型的なＤＵＴを試験するための従来の自動テスト装置本体１００の概略ブロック図である。ＡＴＥは、ハードウェアバスアダプタソケット１１０Ａ−１１０Ｎを有するＡＴＥ本体１００を備える。例えばＰＣＩｅ、ＵＳＢ、ＳＡＴＡ、ＳＡＳなどの特定の通信プロトコルに特化したハードウェアバスアダプタカード１１０Ａ−１１０Ｎは、ＡＴＥ本体に設けられたハードウェアバスアダプタソケットに接続され、それぞれのプロトコルに特化したケーブルを介してＤＵＴとのインタフェースをとる。ＡＴＥ本体１００はまた、ＡＴＥ本体１００内に構築されたハードウェアコンポーネントを制御し、ハードウェアバスアダプタカードを介してテストされるＤＵＴと通信する必要があるコマンドおよびデータを生成するための、関連するメモリ１０８を伴うテスタプロセッサ１０１を備える。テスタプロセッサ１０１は、システムバス１３０上でハードウェアバスアダプタカードと通信する。テスタプロセッサは、パターンジェネレータ１０２およびコンパレータ１０６を含む特定の機能ブロックを含むようにプログラムされてよい。あるいは、パターンジェネレータ１０２およびコンパレータ１０６は、ＡＴＥ本体１００にプラグ接続される拡張またはアダプタカードに取り付けられるハードウェアコンポーネントであってもよい。
【０００４】
ＡＴＥ本体１００は、ＡＴＥ本体１００のハードウェアバスアダプタソケットにプラグ接続されたハードウェアバスアダプタを介してＡＴＥ本体１００に接続されたＤＵＴの１１２Ａ−１１２Ｎの電気的機能をテストする。したがって、テスタプロセッサ１０１は、ＤＵＴに対して実行する必要があるテストプログラムを、ハードウェアバスアダプタ独自のプロトコルを使用して通信するようにプログラムされる。一方、ＡＴＥ本体１００内に構築された他のハードウェアコンポーネントは、テスタプロセッサ１０１内で動作するテストプログラムに従って、互いの間およびＤＵＴとの間で信号を通信する。
【０００５】
テスタプロセッサ１０１によって実行されるテストプログラムは、パターンジェネレータ１０２で生成された入力信号をＤＵＴに書き込むこと、書き込まれた信号をＤＵＴから読み出すこと、および、コンパレータ１０６を使用してその出力を期待パターンと比較することを伴う機能テストを含んでよい。出力が入力とマッチしない場合、テスタプロセッサ１０１は、ＤＵＴを欠陥があるものと特定するであろう。例えば、ＤＵＴがＤＲＡＭなどのメモリデバイスである場合、テストプログラムは、パターンジェネレータ１０２によって生成されたデータを、書き込みオペレーションを用いてＤＵＴに書き込み、読み出しオペレーションを用いてＤＲＡＭからデータを読み出し、コンパレータ１０６を使用して読み出しパターンと期待ビットパターンとを比較する。
【０００６】
従来のシステムでは、テスタプロセッサ１０１は、パターンジェネレータ１０２およびコンパレータ１０６などの、プロセッサ上で直接ソフトウェアによりプログラムされる、ＤＵＴのテストの中で使用するコマンドおよびテストパターンを生成する機能論理ブロックを含む必要がある。しかしながら、いくつか例では、コンパレータ１０６などの特定の機能ブロックは、ユーザの要求にしたがってロジック回路をプログラムできるアプリケーションスペシフィックインテグレーテッドサーキット（ＡＳＩＣ）タイプの半導体デバイスであるフィールドプログラマブルゲートアレイ（ＦＰＧＡ）上に実装されてよい。
【０００７】
従来のシステムで使用されるＦＰＧＡは、テスタプロセッサ１０１が、次にＦＰＧＡがＤＵＴへと中継するコマンドおよびテストパターンをＦＰＧＡに転送することに依存する。ＦＰＧＡではなくテスタプロセッサが、コマンドおよびテストパターンを生成する責任を負うので、与えられたＡＴＥ本体でテストすることができるＤＵＴの数および種類は、テスタプロセッサの処理能力およびプログラミングによって制限される。テスタプロセッサが全てのコマンドおよびテストパターンを生成する場合、テスタプロセッサと、任意のＦＰＧＡデバイスおよびハードウェアバスアダプタソケットを含む様々なハードウェアコンポーネントとを接続するシステムバス１３０のバンド幅制約もまた、同時にテストすることができるＤＵＴの数に上限を設ける。
【０００８】
また、従来のシステムにおいては、ＤＵＴとの通信に用いる通信プロトコルは固定である。なぜなら、ＡＴＥ本体１００にプラグ接続されるハードウェアバスアダプタカードは、１つのプロトコルでのみ通信するように設計された単一目的の装置であり、かつ、異なるプロトコルで通信するように再プログラムできないからである。例えば、ＰＣＩｅデバイスをテストするように構成されたＡＴＥ本体は、ＰＣＩｅプロトコルのみをサポートする、本体にプラグ接続されるハードウェアバスアダプタカードを有するであろう。ＳＡＴＡ等の異なるプロトコルをサポートするＤＵＴをテストするために、ユーザは、通常、ＰＣＩｅハードウェアバスアダプタカードを、ＳＡＴＡプロトコルをサポートするバスアダプタカードに取り換える必要があるであろう。ＰＣＩｅハードウェアバスアダプタカードが、他のプロトコルをサポートするカードに物理的に置換されない限り、かかるシステムは、ＰＣＩｅプロトコルをサポートするＤＵＴのみテストすることができる。したがって、テストフロアでは、既存のアダプタカードがサポートするプロトコルと異なるものを実行するＤＵＴをテストする必要があるときには、重大な時間がハードウェアバスアダプタカードを置換するのに消費される。
【０００９】
現在のテスタシステムの別の欠点は、テストシステムが、プロテクションモードおよび変則セクタサイズをサポートするＤＵＴ（ＳＳＤ等）のテストを現時点でサポートしていないことである。例えば、市場で利用可能なほとんどのソリッドステートドライブ（ＳＳＤ）は、４Ｋネイティブ、５１２ネイティブ等の標準セクタサイズ用にフォーマットされる。４Ｋネイティブは、４０９６（４Ｋ）バイト（セクタごとに４０９６論理バイト）を有するセクタを持つドライブである。５１２ネイティブは、５１２バイト（セクタごとに５１２論理バイト）を有するセクタを持つドライブである。最新のハードドライブは、セクタごとに５１２バイトまたはセクタごとに４０９６バイトの２つのセクタサイズのうちの１つを使用する。しかしながら、特定のベンダはまた、とりわけエンタープライズ級システムで用いられるドライブについて、セクタごとに５２０バイト（５２０ＢＰＳ）、またはセクタごとに５２８バイト（５２８ＢＰＳ）等の非標準セクタサイズをサポートする。さらに特定のベンダは、パリティ検査、チェックサム、および／または、巡回冗長検査（ＣＲＣ）をサポートするためにそれぞれのセクタにメタデータ用の追加のバイト（例えば、５１２バイトがデータ用に予約され、８バイトがメタデータ用に予約された５１２＋８ＢＰＳ）を含める。換言すれば、それぞれのセクタ内に含まれる追加のメタデータは、ＳＳＤのためのプロテクションモードをイネーブルにすることができる。従来のＡＴＥは、非標準セクタサイズをサポートするドライブのテストをサポートしないので、制限されたものである。さらに、従来のＡＴＥはまた、パリティ検査および／またはチェックサムをサポートするためのセクタごとの追加のメタデータを含むＳＳＤ等の、プロテクションモードをイネーブルにするＳＳＤのテストをサポートしない。
【発明の概要】
【００１０】
したがって、上述のシステムにおける問題に対処することができるテスタアーキテクチャへのニーズが存在する。必要なのは、コマンドおよびテストパターンの生成機能がＦＰＧＡに移されることができ、それによりテスタプロセッサの処理負荷およびシステムバスのバンド幅要件を最小限に保つことができるテストアーキテクチャである。これは、テスタプロセッサが全処理負荷を支え、システムバスがＡＴＥ本体に接続される全てのＤＵＴのためのテストデータおよびコマンドを伝達した以前の構成よりもさらに効率的であろう。さらに、必要なのは、通信プロトコルエンジンをＦＰＧＡデバイス上にプログラムでき、それにより、ＤＵＴと通信するのに用いるプロトコルが再構成可能であるテストアーキテクチャである。
【００１１】
加えて、必要なのは、変則セクタサイズの全ての組合せおよびプロテクションモードの全ての組合せについてＤＵＴ（ＳＳＤ等）をテストするための、ソフトウェアおよびファームウェアレベルの両方におけるサポートがあるテスタシステムである。例えば、ＳＳＤは、５２０ＢＰＳ、４１０４ＢＰＳ、５２８ＢＰＳ、および４２２４ＢＰＳの非標準セクタサイズを有してよい。さらに、ＳＳＤは、いくつかのプロテクションモードをイネーブルにするために、セクタごとに追加の８またはより多くのバイトのメタデータを有してもよい。必要なのは、非標準セクタサイズを有し、様々なプロテクションモードがイネーブルにされたＳＳＤを、シームレスにかつ効率的にテストすることが可能なテスタシステムである。
【００１２】
１つの実施形態において自動テスト装置（ＡＴＥ装置）が提供される。装置は、システムコントローラを有するコンピュータシステムを備え、システムコントローラは、テスタプロセッサおよびＦＰＧＡと通信可能に接続され、システムコントローラは、テスタプロセッサに命令を送信する動作を行うことができ、テスタプロセッサは、被試験デバイス（ＤＵＴ）のテストをコーディネートする命令から、コマンドおよびデータを生成する動作を行うことができる。ＤＵＴは、複数の変則セクタサイズおよび複数のプロテクションモードをサポートする。ＦＰＧＡは、テスタプロセッサに通信可能に接続され、ＦＰＧＡは、ＤＵＴをテストするために、テスタプロセッサから透過的に内部でコマンドおよびデータを生成する動作を行うことができる少なくとも１つのハードウェアアクセラレータ回路を有し、少なくとも１つのハードウェアアクセラレータ回路は、複数のプロテクションモードに関連付けられたプロテクション情報を計算し、複数の変則セクタサイズのそれぞれに適合するサイズの繰返し可能なテストパターンを生成する演算処理を実行することができる。  さらに、テスタプロセッサは、複数の機能モードのうちの１つで動作するように構成され、それぞれの機能モードは、コマンドの生成およびデータの生成の機能をテスタプロセッサおよびＦＰＧＡの間で異なる態様で割り当てるように構成される。
【００１３】
別の実施形態において、自動テスト装置（ＡＴＥ）を使用したテストのための方法が開示される。方法は、コンピュータシステムのシステムコントローラからテスタプロセッサへと命令を送信する段階であって、システムコントローラは、テスタプロセッサおよびＦＰＧＡに通信可能に接続され、テスタプロセッサは、複数のＤＵＴのテストをコーディネートする命令から、コマンドおよびデータを生成する動作を行うことができ、複数のＤＵＴのそれぞれは、複数の変則セクタサイズおよび複数のプロテクションモードをサポートする、段階を備える。方法は、さらに、ＦＰＧＡ内にプログラムされたハードウェアアクセラレータ回路を用いて、テスタプロセッサから透過的に、複数のＤＵＴをテストするコマンドおよびデータを生成する段階であって、ＦＰＧＡは、テスタプロセッサに通信可能に接続され、ハードウェアアクセラレータ回路は、複数のＤＵＴをテストする動作を行うことができ、ハードウェアアクセラレータ回路は、複数のプロテクションモードに関連付けられたプロテクション情報を計算し、複数の変則セクタサイズのそれぞれに適合するサイズの繰返し可能なテストパターンを生成する演算処理を実行することができる、段階を備える。方法は、さらに、テスタプロセッサを、複数の機能モードのうちの１つで動作させる段階であって、それぞれの機能モードは、コマンドの生成およびデータの生成の機能をテスタプロセッサおよびＦＰＧＡの間で異なる態様で割り当てるように構成される、段階を備える。
【００１４】
別の実施形態において、テスタが開示される。テスタは、それぞれが複数の変則セクタサイズおよび複数のプロテクションモードをサポートする複数のＤＵＴをテストするテストプログラムを制御するシステムコントローラを備える。さらに、テスタは、複数のテスタスライスを有するプリミティブであって、それぞれのテスタスライスは、システムコントローラと通信するべく接続され、テストプログラムにしたがってそこから命令およびデータを受信するテスタプロセッサ、および、テスタプロセッサに接続された少なくとも１つのプログラマブルインスタンス化テスタブロックを有し、少なくとも１つのプログラマブルインスタンス化テスタブロックは、テストプロセッサに透過的な方法で複数のＤＵＴに適用されるテストデータを生成する動作を行うことができ、さらにテスタプロセッサに透過的な方法で複数のＤＵＴにより生成されたテストデータを受信して比較する動作を行うことができる、プリミティブを備える。インスタンス化テスタブロックは、またさらに、複数のＤＵＴと互換性がある通信プロトコルにより複数のＤＵＴと通信するようにプログラムされる動作を行うことができる。さらに、少なくとも１つのプログラマブルインスタンス化テスタブロックは、複数のプロテクションモードに関連付けられたプロテクション情報を計算し、複数の変則セクタサイズのそれぞれに適合するサイズの繰返し可能なテストパターンを生成する演算処理を実行することができるハードウェアアクセラレータ回路を含む。テスタはまた、プログラマブルインスタンス化テスタブロックに接続され、その中にテストデータを格納するローカルメモリと、複数のテスタスライスを複数のＤＵＴに接続するデバイスインタフェースボードとを備える。さらに、それぞれのプログラマブルインスタンス化テスタブロックは、複数の機能モードのうちの１つで動作可能であり、それぞれの機能モードは、コマンドの生成およびデータの生成の機能をテスタプロセッサおよびプログラマブルインスタンス化テスタブロックの間で異なる態様で割り当てるように構成される。
【００１５】
添付図面と共に以下の詳細な説明が、本発明の本質および利点に関する、さらなる理解を提供するであろう。
【図面の簡単な説明】
【００１６】
本発明の実施形態が、限定するためではなく例として添付図面の各図に示される。これらの図面において、同様の参照番号は同様の要素を指す。
【００１７】
【図１】典型的な被試験デバイス（ＤＵＴ）を試験するための従来の自動テスト装置本体の概略ブロック図である。
【００１８】
【図２】本発明の１つの実施形態に係る、システムコントローラ、サイトモジュール、およびＤＵＴの間の相互接続に関する大まかな概略ブロック図である。
【００１９】
【図３】本発明の１つの実施形態に係る、サイトモジュールと、そのシステムコントローラおよびＤＵＴとの間の相互接続に関する詳細な概略ブロック図である。
【００２０】
【図４】本発明の１つの実施形態に係る、図２のインスタンス化ＦＰＧＡテスタブロックの詳細な概略ブロック図である。
【００２１】
【図５】本発明の１つの実施形態に係る、ＤＵＴをテストする例示的な方法の、大まかなフローチャートである。
【００２２】
【図６】図５の続きであり、本発明の一実施形態において、バイパスモードでＤＵＴをテストする例示的な方法のフローチャートである。
【００２３】
【図７】図５の続きであり、本発明の一実施形態において、ハードウェアアクセラレータパターンジェネレータモードでＤＵＴをテストする例示的な方法のフローチャートである。
【００２４】
【図８】図５の続きであり、本発明の一実施形態において、ハードウェアアクセラレータメモリモードでＤＵＴをテストする例示的な方法のフローチャートである。
【００２５】
【図９】図５の続きであり、本発明の一実施形態において、ハードウェアアクセラレータパケットビルダモードでＤＵＴをテストする例示的な方法のフローチャートである。
【００２６】
【図１０】本発明の一実施形態に係る、デバイスインタフェースボード（ＤＩＢ）とインタフェースで接続されるプリミティブを示す。
【００２７】
【図１１】本発明の一実施形態に係る、ホストコントローラが複数のプリミティブに接続されて複数のプリミティブのためのテストオペレーションを制御する自動テスト装置の例示的な大まかなブロック図である。
【００２８】
【図１２Ａ】本発明の一実施形態に係る、自動テスト装置（ＡＴＥ）プラットフォームにがサポートすることができる様々なプロテクションモードおよび変則セクタサイズを示す。
【００２９】
【図１２Ｂ】様々なＳＳＤによってサポートされるプロテクションモードのためのメタデータ内にエンコードされる情報を示す。
【００３０】
【図１３】本発明の１つの実施形態に係る、非標準セクタサイズおよびプロテクションモードをサポートするＤＵＴをテストする例示的なプロセスのフローチャートを表現する。
【００３１】
図中、同一の記号表示を有する要素は、同一もしくは同様の機能を有する。
【発明を実施するための形態】
【００３２】
ここで、実施形態が詳細に参照されることになり、これらの実施形態の実施例が添付図面に示されている。実施形態が図面と併せて説明されるが、図面は実施形態を限定することを意図していないことが理解されるであろう。反対に、実施形態は、代替例、修正例、および均等物をカバーすることが意図される。さらに、以下の詳細な説明では、深い理解を提供するために、多数の具体的な詳細が記載されている。しかしながら、これらの具体的な詳細がなくても実施形態が実施され得ることは、当業者には認識されるであろう。他の例では、実施形態の態様を不必要に曖昧にしないよう、周知の方法、手順、コンポーネント、および回路は詳細には説明されていない。
【００３３】
［表記および用語のセクション］
以下の詳細な説明のいくつかの部分は、手順、論理ブロック、処理、および、コンピュータメモリ内のデータビットに対する演算の他の記号表現の観点から提示される。これらの説明および表現は、データ処理分野の当業者によって、彼らの研究の本質を他の当業者に最も効果的に伝えるために使用される手段である。本出願において、手順、論理ブロック、プロセス、または同様のものは、所望の結果をもたらす首尾一貫した一連の段階または命令であると考えられる。これらの段階は、物理量の物理的操作を必要とするものである。通常、必ずではないが、これらの量は、コンピュータシステムにおいて格納され、転送され、組み合わせられ、比較され、および、そうでなければ操作されることが可能な電気信号または磁気信号の形をとる。
【００３４】
しかしながら、これらのおよび同様の用語の全ては、適切な物理量と関連付けられるべきであり、これらの量に適用される便宜的なラベルに過ぎないことが留意されるべきである。別途具体的に述べられない限り、以下説明から明らかなように、本発明を通じて、「アクセスする」、「加える」、「調整する」、「解析する」、「適用する」、「組み立てる」、「割り当てる」、「計算する」、「キャプチャする」、「結合する」、「比較する」、「収集する」、「生じる」、「デバッグする」、「画定する」、「示す」、「検出する」、「判断する」、「表示する」、「確立する」、「実行する」、「生成する」、「グループ化する」、「識別する」、「開始する」、「修正する」、「モニタリングする」、「移動する」、「出力する」、「実行する」、「設置する」、「与える」、「処理する」、「プログラミングする」、「照会する」、「除去する」、「繰り返す」、「再開する」、「サンプリングする」、「シミュレートする」、「ソートする」、「格納する」、「差し引く」、「サスペンドする」、「トラッキングする」、「変換する」、「障害を取り除く」、「使用する」、または同様のものなどの用語を利用する説明は、コンピュータシステムのレジスタおよびメモリ内の物理（電子）量で表わされたデータを、コンピュータシステムのメモリ、レジスタまたは他のそのような情報ストレージデバイス、送信デバイス、若しくはディスプレイデバイス内で同様に物理量として表わされた他のデータに操作および変換するコンピュータシステム、または同様の電子コンピューティングデバイスのアクションおよびプロセスを指すことを理解されたい。
【００３５】
下記の説明は、１つまたは複数のモジュールを有してよいコンピュータおよび他のデバイスの説明を提供する。本明細書において用いられるように、「モジュール」または「ブロック」の用語は、ソフトウェア、ファームウェア、ハードウェア、および／またはこれらの様々な組合せを指すと理解されてよい。ブロックおよびモジュールは、例示的なものであることに留意されたい。ブロックまたはモジュールは、様々な応用をサポートするために、組み合わせられ、統合され、分割され、および／または複製されてよい。また、特定のモジュールまたはブロックで実行されると本明細書で説明した機能は、説明された特定のモジュールまたはブロックで実行される機能の代わりにまたはこれに加えて、１若しくは複数の他のモジュールもしくはブロックにおいて、および／または、１もしくは複数の他の装置によって実行されてよい。さらに、モジュールまたはブロックは、互いにローカルまたはリモートにある複数の装置および／またはその他のコンポーネント全域にわたって実装されてもよい。さらに、モジュールまたはブロックは、１つの装置から移動して、別の装置に追加されてよく、および／または両方の装置に含まれてよい。本発明の任意のソフトウェアのインプリメンテーションは、例えばメモリデバイス、フロッピー（登録商標）ディスク、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、またはコンピュータコードを格納してよい他のデバイスなどのような１または複数の記憶媒体に有形で具現化されてよい。
【００３６】
本明細書で用いる用語は、特定の実施形態の説明の目的でのみ用いられ、本発明の範囲を限定することを意図していない。この開示にわたって用いられるように、単数形の"ａ"、"ａｎ"、および"ｔｈｅ"は、文脈上明確にそうでないと述べられていない限り、複数形の言及を含む。したがって、例えば「モジュール（ａ  ｍｏｄｕｌｅ）」の参照は、単一のモジュールも、複数のそのようなモジュールも、この分野の当業者に知られているこれらの均等物も含む。
【００３７】
［ソリッドステートデバイス（ＳＳＤ）の変則セクタサイズおよびプロテクションモードのための自動テスト装置（ＡＴＥ）サポートフレームワーク］ 
【００３８】
本発明の実施形態は、ハードウェアを再構成することなく異なる（変則または非標準）セクタサイズおよびプロテクションモードをサポートするＤＵＴ（例えばＳＳＤ）をテストするテスタ内にオペレーティングシステム（ＯＳ）のサポートを含めることにより、テストスループットを向上することを可能にする。より具体的には、変則セクタサイズ（非標準セクタサイズとしてもまた知られている）および様々なプロテクションモードをサポートするのに必要な計算および演算処理は、ＦＰＧＡデバイスに実装されたハードウェアアクセラレータによって実行されてよい。換言すれば、以前は汎用テスタプロセッサにおいてソフトウェアで実行していた演算機能は、ＦＰＧＡデバイスに実装されたハードウェアアクセラレータへと移される。他の方法は、一般的なハードウェアおよび時間の制約の下でテストすることができる被試験デバイス（ＤＵＴ）の数および種類を増やす、例えば、多くの異なる種類のプロテクションモードおよびセクタサイズをサポートするＤＵＴをいかなるハードウェアコンポーネントも置き換えたり代用したりする必要なく同じハードウェアによってテストすることができるように、ハードウェアを構成（コンフィグレーション）することである。本発明の実施形態は、自動テスト装置のハードウェアにおけるテスト効率を向上することを対象とする。
【００３９】
図２は、本発明の一実施形態に係る、組み込み機能モジュールを有するＦＰＧＡデバイスを介してテスタプロセッサが被試験デバイス（ＤＵＴ）に接続される自動テスト装置（ＡＴＥ）２００の例示的な大まかなブロック図である。１つの実施形態において、ＡＴＥ装置２００は、複数のＤＵＴを同時にテスト可能な任意のテストシステムの中に実装されてよい。例えば、１つの実施形態において、装置２００は、図１０に示すプリミティブの内部に実装されてよい。
【００４０】
図２を参照すると、本発明の一実施形態に係る、半導体デバイスをより効率的にテストするためのＡＴＥ装置２００は、システムコントローラ２０１とシステムコントローラをサイトモジュールボード２３０Ａ−２３０Ｎに接続するネットワークスイッチ２０２と、インスタンス化ＦＰＧＡテスタブロック２１０Ａ−２１０Ｎを有するＦＰＧＡデバイス２１１Ａ−２１１Ｍと、それぞれのメモリブロックがＦＰＧＡデバイスの２１１Ａ−２１１Ｍのいずれかに接続されるメモリブロックモジュール２４０Ａ−２４０Ｍと、被試験デバイス（ＤＵＴ）２２０Ａ−２２０Ｎとを備える。被試験デバイス２２０Ａ−２２０Ｎのそれぞれは、インスタンス化ＦＰＧＡテスタブロックの２１０Ａ−２１０Ｎのうちの１つに接続される。ＤＵＴ２２０Ａ−２２０Ｎは、１つの実施形態において、ソリッドステートドライブ（ＳＳＤ）であることができる点に留意すべきである。さらに、図２に示した単一のインスタンス化ＦＰＧＡテスタブロックが、複数のＤＵＴに接続されることも可能である。
【００４１】
１つの実施形態において、システムコントローラ２０１は、例えば、ＡＴＥのユーザがテストプログラムをロードし、ＡＴＥ２００に接続されたＤＵＴに対してテストを実行するためのユーザインタフェースを提供するパーソナルコンピュータ（ＰＣ）といったコンピュータシステムであってよい。１つの実施形態において、システムコントローラ２０１は、Ｗｉｎｄｏｗｓ（登録商標）オペレーションシステム（ＯＳ）を実行してよい。Ｗｉｎｄｏｗｓ環境内で実行するＶｅｒｉｇｙ  Ｓｔｙｌｕｓソフトウェアは、デバイステストの間通常使用されるテストソフトウェアの一例である。それは、ユーザにグラフィカルユーザインタフェースを提供し、当該グラフィカルユーザインタフェースから、テストは構成され、制御される。それはまた、テストフローを制御し、テストプログラムの状態を制御し、どのテストプログラムが実行中であるかを判断し、テスト結果と、テストフローに関連する他のデータとのログを取る機能を備え得る。１つの実施形態において、システムコントローラは、５１２ 個もの数のＤＵＴに接続され、それらを制御し得る。
【００４２】
１つの実施形態において、システムコントローラ２０１は、イーサネット（登録商標）スイッチなどのネットワークスイッチを介してサイトモジュールボード２３０Ａ−２３０Ｎに接続され得る。他の実施形態において、ネットワークスイッチは、例としてＴＣＰ／ＩＰ、ファイバチャネル、８０２．１１、またはＡＴＭなどの異なるプロトコルと互換性があるものであってよい。
【００４３】
１つの実施形態において、サイトモジュールボード２３０Ａ−２３０Ｎのそれぞれは、ＤＵＴ２２０Ａ−２２０Ｎが搭載されるカスタムビルドのロードボード固定具、およびまたテストプログラムの送信元であるシステムコントローラ２０１に取り付けられる、評価および開発目的で使用される別個のスタンドアロンボードであってよい。他の実施形態において、サイトモジュールボードは、システムコントローラ２０１の筐体に直接プラグ接続されるプラグ拡張カードまたはドータボードとして実装されてよい。あるいは、サイトモジュールボードは、（図１０に示した）プリミティブの筐体の中に収容されてよく、デバイスインタフェースボード（ＤＩＢ）を用いて様々なＤＵＴに接続されてよい。
【００４４】
サイトモジュールボード２３０Ａ−２３０Ｎのそれぞれは、少なくとも１つのテスタプロセッサ２０４および少なくとも１つのＦＰＧＡデバイスを有することができる。１つの実施形態において、テスタプロセッサおよびその関連メモリは、それぞれのサイトモジュールに取り付けられた別個のボード（不図示）に位置してよい。この別個のボードは、コンピュータオンモジュール（つまりＣＯＭ）ボードと呼ばれてよい。換言すれば、ＦＰＧＡは別個のサイトモジュールボードに位置し、（関連メモリを伴う）テスタプロセッサはＣＯＭボードに位置してよい。
【００４５】
サイトモジュールボード上のテスタプロセッサ２０４およびＦＰＧＡデバイス２１１Ａ−２１１Ｍは、各テストケースについて、システムコントローラ２０１から受信されたテストプログラムの命令にしたがってテスト方法を実行する。１つの実施形態において、テスタプロセッサは、市販のインテル（登録商標）ｘ８６ＣＰＵまたは任意の他の周知のプロセッサで有り得る。さらに、テスタプロセッサは、Ｕｂｕｎｔｕ  ＯＳのｘ６４オペレーティングシステム上で動作してコアソフトウェアを実行してよく、これによって、テスト方法を実行するために、テスタプロセッサがシステムコントローラ上で実行されるソフトウェアと通信することを可能にする。１つの実施形態において、テスタプロセッサ２０４は、Ｌｉｎｕｘ（登録商標）  ＯＳまたはＬｉｎｕｘ  ＯＳの修正されたバージョンを実行するｘ８６プロセッサであってよい。１つの実施形態においては、テスタプロセッサ上で実行されるＬｉｎｕｘ  ＯＳは、システムコントローラ上で実行されるＷｉｎｄｏｗｓ  ＯＳからコマンドおよびデータを受信することができる。テスタプロセッサ２０４は、サイトモジュール上のＦＰＧＡデバイス、および、サイトモジュールに接続されたＤＵＴを、システムコントローラから受信されたテストプログラムに基づいて制御する。
【００４６】
テスタプロセッサ２０４は、バス２１２を介してＦＰＧＡデバイスに接続し、および通信することができる。１つの実施形態において、テスタプロセッサ２０４は、別個の専用バスを介してＦＰＧＡデバイスの２１１Ａ−２１１Ｍのそれぞれと通信する。１つの実施形態において、例えば標準またはバイパスモードにおいては、テスタプロセッサ２０４は、ＦＰＧＡデバイスに割り当てられた最小限の処理機能によってＦＰＧＡを介して透過的に、ＤＵＴ２２０Ａ−２２０Ｎのテストを制御することができる。本実施形態においては、バス２１２のデータトラフィック容量は、急速に使い尽くされ得る。なぜなら、テスタプロセッサで生成した全コマンドおよびデータは、バスを介してＦＰＧＡデバイスに通信される必要があるからである。他の実施形態において、テスタプロセッサ２０４は、例えば下記にさらに説明されるであろうプロトコル非依存データアクセラレーション（ＰＩＤＡ）またはフルアクセラレーション（ＦＡ）モードにおいて、ＤＵＴのテストを制御する機能をＦＰＧＡデバイスに割り当てることにより、処理負荷を分配することができる。これらの実施形態において、バス２１２上のトラフィックは、低減される。なぜなら、ＦＰＧＡデバイスは、それら自体のコマンドおよびデータを生成することができるからである。
【００４７】
１つの実施形態において、ＦＰＧＡデバイス２１１Ａ−２１１Ｍのそれぞれは、それ自体の専用メモリブロック２４０Ａ−２４０Ｍに接続される。これらのメモリブロックは、とりわけ、ＤＵＴへと書き出されるテストパターンデータを格納するために利用されることができる。１つの実施形態において、ＦＰＧＡデバイスのそれぞれは、本明細書においてさらに説明するように、通信プロトコルエンジンおよびハードウェアアクセラレータの実装を含む機能を実行するための機能モジュールを有する２つのインスタンス化ＦＰＧＡテスタブロック２１０Ａ−２１０Ｂを含み得る。メモリブロック２４０Ａ−２４０Ｍは、それぞれ１または複数のメモリモジュールを含むことができ、メモリブロック内のそれぞれのメモリモジュールは、インスタンス化ＦＰＧＡテスタブロック２１０Ａ−２１０Ｂの１つまたは複数の専用であることができる。したがって、インスタンス化ＦＰＧＡテスタブロックの２１０Ａ−２１０Ｂのそれぞれは、メモリブロック２４０Ａ内のそれ自体に専用のメモリモジュールに接続されることができる。別の実施形態において、インスタンス化ＦＰＧＡテスタブロック２１０Ａおよび２１０Ｂは、メモリブロック２４０Ａ内の１つのメモリモジュールを共有することができる。異なる実施形態において、ＦＰＧＡデバイスのそれぞれは、複数のインスタンス化ＦＰＧＡテスタブロックを持つことができ、各インスタンス化ＦＰＧＡテスタブロックは、それぞれに対応するメモリブロックを有している。
【００４８】
さらに、システム内のＤＵＴの２２０Ａ−２２０Ｎのそれぞれは、それぞれＤＵＴがそれ自体のテスタブロックを得る「ＤＵＴごとのテスタ」構成において、専用のインスタンス化ＦＰＧＡテスタブロック２１０Ａ−２１０Ｎに接続されることができる。これは、ＤＵＴごとに別個のテストを実行することを可能にする。このような構成におけるハードウェアリソースは、最小限のハードウェア共用によって個々ＤＵＴをサポートする方式に設計される。この構成はまた、多くのＤＵＴが並列にテストされることを可能とし、この場合には、それぞれのＤＵＴがそれ自体に専用のＦＰＧＡテスタブロックに接続され、異なるテストプログラムを実行され得る。異なる実施形態において、インスタンス化ＦＰＧＡテスタブロックのそれぞれは、複数のＤＵＴに接続されてテストを行う構成であってもよい。
【００４９】
図２に示した本発明の実施形態のアーキテクチャは、いくつかの利点を有する。まず、このアーキテクチャは、システム内のプロトコル固有のハードウェアバスアダプタソケットおよびカードの必要性を排除する。なぜなら、通信プロトコルモジュールは、ＦＰＧＡデバイス内のインスタンス化ＦＰＧＡテスタブロックに直接プログラムすることができるからである。インスタンス化テスタブロックは、ＤＵＴがサポートする任意のプロトコルでＤＵＴと通信するように構成することができる。したがって、異なるプロトコルをサポートするＤＵＴをテストする必要がある場合、ＤＵＴを同じシステムに接続することができ、かつ、ＦＰＧＡを、関連するプロトコルをサポートするよう再プログラムすることができる。その結果、１つのＡＴＥ本体を、多くの異なる種類のプロトコルをサポートするＤＵＴをテストするために容易に構成することができる。
【００５０】
１つの実施形態において、いかなる種類のハードウェアインタラクションをすることなく、システムコントローラ２０１上のキャッシュからの単なるビットストリームのダウンロードを介して、新たなプロトコルをダウンロードしてＦＰＧＡに直接インストールすることができる。ＦＰＧＡは、通常、１または複数のプロトコルベースのインタフェースの機能をＤＵＴに提供するためにプログラマブルであり、かつ、ＤＵＴとインタフェースするためにプログラマブルである構成可能なインタフェースコア（またはＩＰコア）を含むであろう。例えば、ＡＴＥ装置２００内のＦＰＧＡ２１１Ａ−２１１Ｍは、最初にＰＣＩｅデバイスをテストするためにＰＣＩｅプロトコルで構成されることができ、その後にＳＡＴＡデバイスをテストするためにソフトウェアダウンロードをを介して再構成されることができるインタフェースコアを含むであろう。また、新たなプロトコルが公開された場合、ＦＰＧＡは、システム内の全てのハードウェアバスアダプタカードを物理的に交換する必要がある代わりに、ビットストリームのダウンロードを介して、そのプロトコルを有するように容易に構成されることができる。最後に、非標準プロトコルが実装される必要がある場合、ＦＰＧＡは、それにもかかわらず、そのようなプロトコルを実装するように構成されることができる。
【００５１】
別の実施形態において、ＦＰＧＡ２１１Ａ−２１１Ｍは、１よりも多くの通信プロトコルを実行するように構成されることができ、これらのプロトコルもまた、システムコントローラ２０１からダウンロードされ、ソフトウェアによって構成されることができる。換言すれば、それぞれのＦＰＧＡは、１若しくは複数のＰＣベースのテスタの機能を単一チップに実装するために、カスタムファームウェアおよびソフトウェアイメージを実装する。必要とされる電気的なシグナリングおよびプロトコルベースのシグナリングは、ＦＰＧＡ内のオンチップＩＰコアにより提供される。上述のように、それぞれＦＰＧＡは、検証済インタフェースまたはＩＰコアによりプログラマブルである。これは、与えられたインタフェース規格にしたがう準拠性および互換性を保証する。ＦＰＧＡのプログラマブルな特質は、ＳＳＤ、ＨＤＤ、および他のプロトコルベースのストレージデバイスからのストレージテストアプリケーションの柔軟性、コスト、並列度、および、移行性を最適化するために利用される。
【００５２】
例として、インスタンス化ＦＰＧＡテスタブロック２１０ＡはＰＣＩｅプロトコルを実行するように構成されることができ、同時にインスタンス化ＦＰＧＡテスタブロック２１０ＢはＳＡＴＡプロトコルを実行するように構成されることができる。これは、テスタハードウェアが、異なるプロトコルをサポートするＤＵＴを同時にテストすることを可能にする。ここで、ＦＰＧＡ２１１Ａは、ＰＣＩｅおよびＳＡＴＡプロトコルの両方をサポートするＤＵＴをテストするために接続されることができる。あるいは、ＦＰＧＡ２１１Ａは、１つのＤＵＴがＰＣＩｅプロトコルをサポートし、その他のＤＵＴがＳＡＴＡプロトコルをサポートする２つの異なるＤＵＴをテストするために接続されることができる。この場合、それぞれのインスタンス化機能モジュール（例えば２１０Ａ、２１０Ｂ）は、接続先のそれぞれのＤＵＴをテストするプロトコルを有するように構成される。
【００５３】
１つの実施形態において、ＦＰＧＡ内のインタフェースまたはＩＰコアは、サードパーティーのベンダから取得されてよいが、本明細書に説明する実施形態と互換性があるように多少カスタマイズする必要があってよい。１つの実施形態において、インタフェースコアは、ａ）ストレージコマンドを、物理チャネル上を伝送するための標準プロトコルに包み込むこと、ならびに、ｂ）電気信号の発生器および受信器となること、の２つの機能を提供する。
【００５４】
図２に示すアーキテクチャのその他の主な利点は、そのアーキテクチャが、それぞれのＤＵＴがそれに特化したテストプログラムを実行する専用のＦＰＧＡモジュールを持つ点で、コマンドおよびテストパターンの生成機能をＦＰＧＡデバイスに分配することにより、テスタプロセッサ２０４の処理負荷を減らすことである。例として、インスタンス化ＦＰＧＡテスタブロック２１０Ａは、ＤＵＴ２２０Ａに接続されて、ＤＵＴ２２０Ａに特化したテストプログラムを実行する。そのような構成におけるハードウェアリソースは、個々のＤＵＴを最小限のハードウェア共用でサポートする方式で設計される。この「ＤＵＴごとのテスタ」構成はまた、より多くのＤＵＴがプロセッサごとにテストされ、かつ、より多くのＤＵＴが並列にテストされることを可能にする。さらに、特定のモードにおいてＦＰＧＡがそれら自体のコマンドおよびテストパターンを生成可能であることで、テスタプロセッサを、ＦＰＧＡデバイス、デバイス電源（ＤＰＳ）、およびＤＵＴを含む他のハードウェアコンポーネントと接続するバス２１２のバンド幅要件もまた低減される。結果として、従来の構成よりもより多くのＤＵＴを同時にテストすることができる。
【００５５】
図３は、本発明の一実施形態に係る、サイトモジュールと、そのシステムコントローラおよびＤＵＴとの間の相互接続に関するより詳細な概略ブロック図を提供する。
【００５６】
図３を参照すると、ＡＴＥ装置のサイトモジュールは、１つの実施形態において、テスタスライス３４０Ａ−３４０Ｎ上に機械的に構成され得る。ここで、各テスタスライスは少なくとも１つのサイトモジュールを備える。特定の典型的な実施形態において、各テスタスライスは、２つのサイトモジュールと２つのデバイス電源ボードとを備え得る。他の実施形態においては、テスタスライスは、より多くのまたはより少ないサイトモジュールおよび／または電源ボードを備えてよい。図３のテスタスライス３４０Ａは、例えば、サイトモジュール３１０Ａおよび３１０Ｂと、デバイス電源ボード３３２Ａおよび３３２Ｂとを備える。しかしながら、テスタスライス上に構成され得るデバイス電源ボードまたはサイトモジュールの数に対する制限はない。テスタスライス３４０は、ネットワークスイッチ３０２を介してシステムコントローラ３０１に接続される。システムコントローラ３０１およびネットワークスイッチ３０２は、それぞれ図２の要素２０１および２０２と同じ機能を実行する。ネットワークスイッチ３０２は、サイトモジュールのそれぞれと、３２ビット幅のバスで接続されることができる。
【００５７】
上述のように、１つの実施形態において、システムコントローラ３０１は、例えば、ＡＴＥのユーザがテストプログラムをロードし、ＡＴＥ３００に接続されたＤＵＴに対してテストを実行するためのユーザインタフェースを提供するパーソナルコンピュータ（ＰＣ）といったコンピュータシステムであってよい。通常、システムコントローラは、Ｗｉｎｄｏｗｓオペレーティングシステムを実行するであろう。Ａｄｖａｎｔｅｓｔ  Ｓｔｙｌｕｓは、デバイステストの間に通常使用されるテストソフトウェアの１つの例である。それは、ユーザにグラフィカルユーザインタフェースを提供し、当該グラフィカルユーザインタフェースから、テストは構成され、制御される。それはまた、テストフローを制御し、テストプログラムの状態を制御し、どのテストプログラムが実行中であるかを判断し、テスト結果と、テストフローに関連する他のデータとのログを取る機能を備え得る。
【００５８】
デバイス電源ボード３３２Ａ−３３２Ｂの各々は、サイトモジュール３１０Ａ−３１０Ｂのうちの１つから制御され得る。テスタプロセッサ３０４上で実行されるソフトウェアは、特定のサイトモジュールにデバイス電源を割り当てるよう構成され得る。１つの実施形態において、サイトモジュール３１０Ａ−３１０Ｂおよびデバイス電源３３２Ａ−３３２Ｂは、例えば、例としてペリフェラルコンポーネントインターコネクトエクスプレス（ＰＣＩｅ）、シリアルＡＴアタッチメント（ＳＡＴＡ）、またはシリアルアタッチドＳＣＳＩ（ＳＡＳ）といった高速シリアルプロトコルを使用して互いに通信し合うよう構成される。
【００５９】
１つの実施形態において、各サイトモジュールは、図３に示されるように２つのＦＰＧＡで構成される。図３の実施形態におけるＦＰＧＡ３１６および３１８のそれぞれは、テスタプロセッサ３０４によって制御され、図２のＦＰＧＡ２１１Ａ−２１１Ｍと同様の機能を実行する。テスタプロセッサ３０４は、図３のシステムバス３３０および３３２で示されるように、ＰＣＩｅなどの８レーン高速シリアルプロトコルインタフェースを用いて各ＦＰＧＡと通信することができる。他の実施形態において、テスタプロセッサ３０４はまた、例えば、シリアルＡＴアタッチメント（ＳＡＴＡ）またはシリアルアタッチドＳＣＳＩ（ＳＡＳ）といった異なる高速シリアルプロトコルを用いてＦＰＧＡと通信し得る。
【００６０】
ＦＰＧＡ３１６および３１８は、メモリモジュール３０８および３０４にそれぞれ接続される。ここで、メモリモジュールは、図２のメモリブロック２４０Ａ−２４０Ｎと同様の機能を実行する。メモリモジュールは、ＦＰＧＡデバイスおよびテスタプロセッサ３０４の両方に接続され、その両方によって制御され得る。
【００６１】
ＦＰＧＡ３１６および３１８は、それぞれバス３５２および３５４を介してロードボード３８０上のＤＵＴ３７２Ａ−３７２Ｍに接続され得る。ロードボード３８０は、ライン３５２および３５４でＤＵＴへ通信するのに用いられるプロトコルに依存しない汎用高速接続を、サイトモジュールエンドで可能にする物理ハーネスである。しかしながら、ＤＵＴエンドにおいてロードボードは、ＤＵＴによって用いられているプロトコルに特化したコネクタを有するように設計される必要がある。
【００６２】
本発明の１つの実施形態において、ＤＵＴ３７２Ａ−３７２Ｍは、テストのために、サーマルチャンバ３９０の内部に配置されたロードボード３８０にロードされる。ＤＵＴ３７２Ａ−３７２Ｍおよびロードボード３８０は、デバイス電源３３２Ａおよび３３２Ｂから電力を得る。
【００６３】
各ＦＰＧＡに接続され得るＤＵＴの数は、ＦＰＧＡ内のトランシーバの数と、各ＤＵＴによって必要とされるＩ／Ｏレーンの数とに依存する。１つの実施形態において、ＦＰＧＡ３１６および３１８はそれぞれ、３２個の高速トランシーバを備えることができ、バス３５２および３５４はそれぞれ、３２ビット幅で有り得る。しかしながら、用途に応じてそれより多い、またはそれより少ないものが実装され得る。例えば、各ＤＵＴが８個のＩ／Ｏレーンを必要とする場合、かかるシステムでは各ＦＰＧＡに４つのＤＵＴのみが接続され得る。
【００６４】
１つの実施形態において、テスタプロセッサ３０４およびＤＵＴ３７２Ａ−Ｍの間の通信に使用される通信プロトコルは、有利には再構成可能で有り得る。そのような実装態様における通信プロトコルエンジンは、テスタスライス上の１つまたは両方のＦＰＧＡに直接プログラムされる。ＦＰＧＡ（例えば３１６または３１８）は、したがって、ＤＵＴがサポートする任意のプロトコルでＤＵＴと通信するように構成することができる。これは、異なるプロトコルを持つＤＵＴをテストする必要がある度に、テスタを取り換える必要性を有利に排除する。１つの実施形態において、プロトコルは、ＳＡＴＡ、ＳＡＳ、またはＰＣＩｅなどを含むがこれらに限定されない高速シリアルプロトコルで有り得る。いかなる種類のハードウェアインタラクションをすることなく、システムコントローラからテスタプロセッサを介した単なるビットストリームのダウンロードを介して、新たなまたは変更されたプロトコルをダウンロードしてＦＰＧＡに直接インストールすることができる。また、新たなプロトコルが公開された場合、ＦＰＧＡは、ソフトウェアダウンロードを介してそのプロトコルによって容易に構成され得る。
【００６５】
本発明の一実施形態において、それぞれのＦＰＧＡは、ＦＰＧＡデバイス内のそれぞれのプロトコルエンジンモジュールが異なる通信プロトコルによって構成され得る複数のプロトコルエンジンモジュールを含む。したがって、ＦＰＧＡデバイスは、それぞれが異なる通信プロトコルを同時にサポートする複数のＤＵＴに接続してテストをすることができる。あるいは、ＦＰＧＡデバイスは、複数のプロトコルをサポートする単一ＤＵＴに接続されて、デバイス上で実行する全てのモジュールを同時にテストすることができる。例えば、ＦＰＧＡが、ＰＣＩｅおよびＳＡＴＡプロトコルの両方を実行するように構成される場合、ＰＣＩｅおよびＳＡＴＡプロトコルの両方をサポートするＤＵＴをテストするために接続されることができる。あるいは、ＦＰＧＡは、１つのＤＵＴがＰＣＩｅプロトコルをサポートし、他のＤＵＴがＳＡＴＡプロトコルをサポートする２つの異なるＤＵＴをテストするために接続されることができる。
【００６６】
図４は、本発明の１つの実施形態に係る、図２のインスタンス化ＦＰＧＡテスタブロックの詳細な概略ブロック図である。
【００６７】
図４を参照すると、インスタンス化ＦＰＧＡテスタブロック４１０は、ＰＣＩｅアップストリームポート２７０を介してテスタプロセッサに、ＰＣＩｅダウンストリームポート４８０を介してＤＵＴに接続される。
【００６８】
インスタンス化ＦＰＧＡブロック４１０は、プロトコルエンジンモジュール４３０、論理ブロックモジュール４５０、およびハードウェアアクセラレータブロック４４０を有し得る。ハードウェアアクセラレータブロック４４０は、メモリ制御モジュール４４４、コンパレータモジュール４４６、パケットビルダモジュール４４５、およびアルゴリズミックパターンジェネレータ（ＡＰＧ）モジュール４４３をさらに含み得る。
【００６９】
１つの実施形態において、論理ブロックモジュール４５０は、テスタプロセッサからのコマンドをデコードするデコードロジック、テスタプロセッサ３０４から受信される全てコマンドおよびデータとＦＰＧＡデバイスにより生成されたデータとを適切なモジュールへとルーティングするルーティングロジック、並びに、インスタンス化ＦＰＧＡテスタブロック４１０内の様々な通信パスの間で調停を行う調停ロジックを含む。
【００７０】
１つの実装において、テスタプロセッサおよびＤＵＴの間の通信に使用される通信プロトコルは、有利には再構成可能で有り得る。そのような実装における通信プロトコルエンジンは、インスタンス化ＦＰＧＡテスタブロック４１０のプロトコルエンジンモジュール４３０に直接プログラムされ得る。インスタンス化ＦＰＧＡテスタブロック４１０は、したがって、ＤＵＴがサポートする任意のプロトコルを用いてＤＵＴと通信するように構成され得る。上述した検証済インタフェースまたはＩＰコアは、例えば、プロトコルエンジンモジュール４３０にプログラムされ得る。これは、与えられたインタフェース規格にしたがう準拠性および互換性を保証する。さらに、ＩＰコアは、ＩＰコアがインタフェースのソフトウェアベースの変更を可能にするという点で、テスタが柔軟性を達成するのを可能とする。実施形態は、ハードウェアバスアダプタソケットに依存せず、複数種類のＤＵＴをテストする能力を提供する。そのようなインタフェースの柔軟性により、新しいインタフェースは、プログラマブルチップのＩＰコア内にロードされてよく、それにより（図１に関連して説明した）ハードウェアバスアダプタソケットの必要性をなくす。
【００７１】
１つの実施形態において、例えばストレージ／ＳＳＤ／ＨＤＤについて、各ＦＰＧＡは、ＳＳＤと接続する構成可能ＩＣを含み、構成可能ＩＣは、ＳＡＴＡまたはＳＡＳなどのストレージ特有のインタフェースを介してストレージベースのパターンを提供するようにプログラム可能である。
【００７２】
１つの実施形態において、ＦＰＧＡは、ＤＵＴまたはモジュールとのインタフェースをとるためにプロトコルベースの通信を使用するＳＳＤモジュールベースのテスタであってよい。１つの実施形態において、構成可能なインタフェースコアは、任意の標準化プロトコルベースの通信インタフェースを提供するようにプログラムされてよい。例えば、１つの実施形態において、ＳＳＤモジュールベースのテストの場合、インタフェースコアは、ＳＡＴＡ、ＳＡＳなどのような標準化プロトコルベースの通信インタフェースを提供するようにプログラムされてよい。
【００７３】
したがって、電気的な観点からは、ＦＰＧＡは、ハードウェアバスアダプタソケットの代わりにＩＰコアを利用する。ＦＰＧＡのプログラマブルチップリソースのソフトウェアプログラミングによって実現されるので、物理的なＦＰＧＡチップまたは他のハードウェアコンポーネントを変更することなく、ＩＰコアを容易に再プログラムして、他のＩＰコアに入れ替えてよいようになる。例えば、現在ＳＡＴＡをサポートする特定のＦＰＧＡベースのテスタの場合、ＳＡＳのＤＵＴに接続可能とするために必要となるであろう全てのことは、ＳＡＴＡ用に構成された既存のＩＰコアの代わりにＳＡＳのＩＰコアを用いるようにＦＰＧＡを再プログラムすることである。
【００７４】
これは、ハードウェアバスアダプタカードの必要性を有利に排除し、異なるプロトコルをサポートするＤＵＴをテストするためにどのプロトコル固有ハードウェアも入れ替える必要がない。１つの実施形態において、プロトコルは、ＳＡＴＡ、ＳＡＳ、またはＰＣＩｅなどを含むがこれらに限定されない高速シリアルプロトコルで有り得る。いかなる種類のハードウェアインタラクションをすることなく、システムコントローラからテスタプロセッサを介した単なるビットストリームのダウンロードを介して、新たなまたは変更されたプロトコルをダウンロードしてＦＰＧＡに直接インストールすることができる。また、新たなプロトコルが公開された場合、ＦＰＧＡは、ソフトウェアダウンロードを介してそのプロトコルによって容易に構成され得る。
【００７５】
図４において、ＰＣＩｅダウンストリームポート４８０に接続されたＤＵＴがＰＣＩｅデバイスの場合、ＰＣＩｅプロトコルのインスタンス化を含むビットファイルは、ＰＣＩｅアップストリームポート４７０を介してダウンロードされて、プロトコルエンジンモジュール４３０のＩＰコアにインストールされることができる。ＦＰＧＡデバイス３１６または３１８のそれぞれは、１または複数のインスタンス化ＦＰＧＡテスタブロックと、結果的に１または複数のプロトコルエンジンモジュールとを含むことができる。任意の１つのＦＰＧＡデバイスがサポートすることができるプロトコルエンジンモジュールの数は、ＦＰＧＡのサイズおよびゲート数のみによって限定される。
【００７６】
本発明の一実施形態において、ＦＰＧＡデバイス内のそれぞれのプロトコルエンジンモジュールは、異なる通信プロトコルによって構成され得る。したがって、ＦＰＧＡデバイスは、それぞれが異なる通信プロトコルを同時にサポートする複数のＤＵＴに接続してテストをすることができる。あるいは、ＦＰＧＡデバイスは、複数のプロトコルをサポートする単一ＤＵＴに接続されて、デバイス上で実行する全てのモジュールを同時にテストすることができる。例えば、ＦＰＧＡが、ＰＣＩｅおよびＳＡＴＡプロトコルの両方を実行するように構成される場合、ＰＣＩｅおよびＳＡＴＡプロトコルの両方をサポートするＤＵＴをテストするために接続されることができる。あるいは、ＦＰＧＡは、１つのＤＵＴがＰＣＩｅプロトコルをサポートし、他のＤＵＴがＳＡＴＡプロトコルをサポートする２つの異なるＤＵＴをテストするために接続されることができる。
【００７７】
図４のハードウェアアクセラレータブロック４４０は、ＦＰＧＡハードウェア上の特定の機能を、テスタプロセッサ上のソフトウェアで行うことができるであろうよりもより迅速に行うために使用され得る。ハードウェアアクセラレータブロック４４０は、ＤＵＴのテストで使用する初期テストパターンデータを供給し得る。それはまた、ＤＵＴのテストを制御するのに使用される特定のコマンドを生成する機能を含み得る。テストパターンデータを生成するために、アクセラレータブロック４４０は、アルゴリズミックパターンジェネレータモジュール４４３を使用する。
【００７８】
ハードウェアアクセラレータブロック４４０は、ＤＵＴから読み出されたデータと、以前のサイクルでＤＵＴに書き込まれたデータとを比較するためにコンパレータモジュール４４６を使用することができる。コンパレータモジュール４４６は、仕様どおりではないデバイスを特定するために、テスタプロセッサ３０４に不一致を知らせる機能を有する。より具体的には、コンパレータモジュール４４６は、不一致を記録するエラーカウンターを含むことができ、それらの不一致をテスタプロセッサ３０４に通信する。
【００７９】
ハードウェアアクセラレータブロック４４０は、ローカルメモリモジュール４２０に接続することができる。メモリモジュール４２０は、メモリブロック２４０Ａ−２４０Ｍのうちいずれかの中にあるメモリモジュールと同様の機能を実行する。メモリモジュール４２０は、ハードウェアアクセラレータブロック４４０およびテスタプロセッサ３０４の両方によって制御されることができる。テスタプロセッサ３０４は、ローカルメモリモジュール４２０を制御し、初期テストパターンデータをそこに書き込むことができる。
【００８０】
メモリモジュール４２０は、ＤＵＴに書き込まれるべきテストパターンデータを格納し、ハードウェアアクセラレータブロック４４０は、それにアクセスして、格納されたデータと書き込みサイクルの後にＤＵＴから読み出されたデータとを比較する。ローカルメモリモジュール４２０はまた、フェイルを記録するために使用され得る。メモリモジュールは、テストの間にＤＵＴが経験した全てのフェイルを記録したログファイルを格納するであろう。１つの実施形態において、アクセラレータブロック４４０は、他のいかなるインスタンス化ＦＰＧＡテスタブロックからもアクセスできない専用のローカルメモリモジュールブロック４２０を持つ。別の実施形態において、ローカルメモリモジュールブロック４２０は、他のインスタンス化ＦＰＧＡテスタブロック内のハードウェアアクセラレータブロックによって共有される。
【００８１】
ハードウェアアクセラレータブロック４４０はまた、メモリ制御モジュール４４４を含み得る。メモリ制御モジュール４４４は、メモリモジュール４２０と情報をやり取りし、読み出しおよび書き込みアクセスを制御する。
【００８２】
最後に、ハードウェアアクセラレータブロック４４０は、パケットビルダモジュール４４５を含む。パケットビルダモジュールは、特定のモードにおいて、ヘッダ／コマンドデータおよびテストパターンデータを含む、ＤＵＴへと書き出されるべきパケットを構成するためにハードウェアアクセラレータブロックによって使用される。
【００８３】
特定の実施形態において、ハードウェアアクセラレータブロック４４０は、ハードウェアアクセラレーションのいくつかのモードのうちの１つで動作するように、テスタプロセッサ３０４によってプログラムされることができる。
【００８４】
バイパスまたは標準モードにおいて、ハードウェアアクセラレータはバイパスされ、コマンドおよびテストデータはテスタプロセッサ３０４からパス４７２を介して直接ＤＵＴへと送信される。
【００８５】
ハードウェアアクセラレータパターンジェネレータモードにおいて、コマンドがテスタプロセッサ３０４によって生成されるのに対し、テストパターンデータは、ＡＰＧモジュール４４３によって生成される。テストパケットは、パス４７４を介してＤＵＴへと送信される。このモードは、プロトコル非依存データアクセラレーション（ＰＩＤＡ）モードとしても知られる。
【００８６】
ハードウェアアクセラレータメモリモードにおいて、コマンドがテスタプロセッサ３０４によって生成されるのに対し、テストパターンデータはローカルメモリモジュール４２０からアクセスされる。テストパターンデータは、パス４７６を介してＤＵＴへと送信される。ルーティングロジック４８２は、ＤＵＴへのデータの流れを制御するためにパス４７２、４７４および４７６の間で調停を行うために必要である。
【００８７】
ハードウェアアクセラレータパケットビルダモードにおいて、テストパターンデータは、ＡＰＧモジュール４４３によって生成されてよく、パケットビルダモジュール４４５は、ＤＵＴへと書き出されるべき、ヘッダ／コマンドデータおよびテストパターンデータを有するパケットを構成するために使用される。テストパケットは、パス４７４を介してＤＵＴへと送信される。このモードは、フルアクセラレーション（ＦＡ）モードとしても知られる。
【００８８】
サイトモジュールは、汎用コネクタ４８１を含むことができる。プロトコルエンジンモジュール４３０が任意の数の様々な通信プロトコルを実行するように構成されることができるので、サイトモジュール上に汎用高速コネクタ４８１が必要となる。したがって、プロトコルエンジンモジュール４３０に実装されたプロトコルを変更する必要がある場合、サイトモジュールに対して付随する物理的な変更は必要ない。サイトモジュールは、サイトモジュール側の端部の汎用コネクタに接続することができるが、ＤＵＴ側の端部に実装されるプロトコルに特化したロードボード３８０を用いてＤＵＴに接続する。種々の通信プロトコルをサポートするＤＵＴは、種々の構成を必要とするであろう。したがって、異なる構成を要求するＤＵＴに適応するようにプロトコルが再プログラムされる場合、ロードボードは、取り外されて入れ替えられる必要がある。
【００８９】
図１０は、本発明の一実施形態に係る、デバイスインタフェースボード（ＤＩＢ）１０００とインタフェースで接続されるプリミティブ１０１０を示す。図３に示すテスタスライス（例えば３４０Ａなど）と同様に、図１０のプリミティブは、テストヘッドに収まるタイプの個別のテストモジュールであり、テストプランにしたがってＤＵＴに対してテストを行うテスト回路を備える。プリミティブは、例えばサイトモジュール、電源などの全ての様々な電子機器がその内に収容される筐体１０５０を備える。ＤＩＢ１０００は、ＤＵＴ１０２０に合わせた寸法の特注のコネクタを使用して複数のＤＵＴ１０２０と接続され得る。ＤＵＴはＤＩＢ１０００へと物理的にインタフェースされ、かつ電子的にインタフェースされる。プリミティブはまた、筐体１０７０を備え得る。ＤＩＢ１０００は、図３に示すロードボード３８０と同様のロードボード（不図示）を介してプリミティブ１０１０のユニバーサルバックプレーン（不図示）にインタフェースで接続する。プリミティブ１０１０は、ＤＵＴ１０２０に対してテストプランを実行するための（図３に示すテスタスライス３４０Ａと同様の）テスト回路を含む。プリミティブ１０１０は、任意の他のプリミティブとは独立して動作でき、（図３に示すシステムコントローラ３０１と同様の）制御サーバに接続される。
【００９０】
任意の特定のテスタスライス（例えば３４０Ａ−３４０Ｎ）または任意の特定のプリミティブに接続するＤＵＴは、同じ対応するテスタスライスまたはプリミティブに接続された１又は複数の他のＤＵＴと異なるプロトコルを実行可能であることに留意すべきである。例えば、プリミティブ１０１０は、複数のＤＵＴ１０２０に接続されて、これらのテストに使用されてよい。複数のＤＵＴ１０２０は、例えばＳＡＴＡ、ＡＴＡ、ＳＣＳＩなどの異なるプロトコルをそれぞれ実行することができる。１つの実施形態において、プリミティブ１０１０は、主にＳＳＤドライブに接続されて、これらのテストに使用されてよい。
【００９１】
図１１は、本発明の一実施形態に係る、ホストコントローラが複数のプリミティブに接続されて複数のプリミティブのためのテストオペレーションを制御する自動テスト装置（ＡＴＥ装置）の例示的な大まかなブロック図である。図１１は、様々な変則セクタサイズ（または非標準セクタサイズ）およびプロテクションモードをサポートするＳＳＤをテストする、全体的な統合システムまたはテストフレームワーク１１０５を示す。
【００９２】
１つの実施形態において、Ｗｉｎｄｏｗｓベースのホストコントローラ１１１０が、１１３０Ａおよび１１３０Ｂ等のいくつかの異なるプリミティブに通信可能に接続されてよい。Ｗｉｎｄｏｗｓベースのホストコントローラ１１１０は、情報を表示し、ユーザ入力を受け付けるためにグラフィカルユーザインタフェースをユーザに対して表示可能である。通信バックプレーン１１２０は、ホストコントローラ１１１０と１または複数のプリミティブ１１３０Ａおよび１１３０Ｂとの間に接続される。それぞれプリミティブは、複数のテスタスライス（例えばテスタスライス３４０Ａ−３４０Ｎ）を含む。１つの実施形態において、それぞれのプリミティブは、ドライバ１１６０を介して複数のＦＰＧＡテスタスライス１１５０に接続された複数のＣＯＭボード１１４０（テスタプロセッサおよび関連するメモリを有する）を有してよい。（すでに言及したように、１つの実施形態においてテスタプロセッサは、ＦＰＧＡを有するテスタスライスとは別個のボードであるＣＯＭボードに位置してよい。）テスタスライスは、１つの実施形態において、デバイスインタフェースボード１１６５を介してＤＵＴ（例えばＳＳＤ）に接続される。異なるＤＩＢが異なるフォームファクタおよび接続タイプのＳＳＤをサポートするために使用され得る。ラック内にいくつかのプリミティブがあり得、それぞれのプリミティブがホストコントローラに接続されて制御される。これは、同時に大量のＤＵＴをテストすることを可能にする。
【００９３】
１つの実施形態において、ＣＯＭボード１１４０は、本発明に係る組み込みＯＳプラットフォームのインスタンスを含んでよい。ＣＯＭボード１１４０は、プリミティブ内のテスタスライス１１５０を制御してよい。組み込みＯＳプラットフォームは、一方の側でホストコントローラ１１１０と通信し、他方の側でプリミティブに実装された様々なＦＰＧＡテスタスライス１１５０と通信するように構成される。１つの実施形態において、組み込みＯＳプラットフォームは、Ｌｉｎｕｘ  ＯＳの大きく修正されたバージョンで有り得る。システム１１０５内には３２インスタンスもの数の組み込みＯＳプラットフォームが存在し得てホストコントローラ１１１０によって制御される。様々なＯＳプラットフォームは、ＦＰＧＡテスタボード１１５０と通信し、またＤＵＴ１１７０と直接通信する機能を提供する。
【００９４】
図１２Ａは、本発明の一実施形態に係る、ＡＴＥプラットフォームによってサポートすることができる様々なプロテクションモードおよび変則セクタサイズを示す。前に言及したように、従来のテスタシステムは、例えば５１２ＢＰＳまたは４０９６ＢＰＳの標準セクタサイズを有するＳＳＤのテストに対するサポートのみを含む。しかしながら、特定のＳＳＤベンダはまた、とりわけエンタープライズ級システムで用いられるドライブについて、セクタごとに５２０バイト（５２０ＢＰＳ）、またはセクタごとに５２８バイト（５２８ＢＰＳ）等の非標準セクタサイズをサポートする。一方、他のＳＳＤベンダは、（より高い復元性、信頼性、およびインテグリティのために）彼らのドライブにおいて、セクタごとのメタデータの追加のバイト（例えば８バイトのプロテクション情報）を必要とする様々なプロテクションモードを可能にする。現在、プロテクションモードおよび非標準セクタサイズを有するＳＳＤのテストを高速でサポートするテスタシステムは市場にない。
【００９５】
本発明の実施形態は、様々なプロテクションモードが可能にされてよいドライブのテストをサポートする。例えば、特定のＳＳＤは、セクタごとに追加の８バイトのメタデータ（例えば５１２＋８、４０９６＋８）を持ってよい。図１２Ａの表中に提供された値は、例示に過ぎないことに留意すべきである。データおよびメタデータフィールドの追加のバリエーションが有り得る。例として、特定のプロテクションモード用に８バイトよりさらに大きいメタデータが有り得る。
【００９６】
図１２Ｂは、様々なＳＳＤによってサポートされるプロテクションモードのためのメタデータ内にエンコードされる情報を示す。上述のように、特定のプロテクションモードは、最大８バイトのメタデータまたはプロテクション情報をサポートするであろう。プロテクション情報は、通常、２バイトのガード巡回冗長検査（ＣＲＣ）１２５４、２バイトのアプリケーションタグ１２５６、および４タイプの参照タグ１２５８を含むであろう。サポートされてよい様々な異なるプロテクションモードは、データインテグリティフィールド（ＤＩＦ）の仕様書に詳述されてよい。
【００９７】
本発明の実施形態はまた、非標準セクタサイズのドライブのテストをサポートする。例えば、図１２Ａの表に示すように、本発明の実施形態においてサポートする変則セクタサイズは、５２０＋０（セクタ当たり５２０バイトで０バイトのメタデータを伴う）、４１０４ＢＰＳ、５２８ＢＰＳ、および４２２４ＢＰＳであってよい。非標準セクタサイズの値は、単なる例示に過ぎないことに留意すべきである。ベンダに応じて様々なドライブによりサポートされた多くの異なる変則セクタがあってよい。
【００９８】
本発明の実施形態は、様々なＤＵＴのプロテクションモードの全ての組合せ、および可変セクタサイズの全ての組合せが、様々なハードウェアアクセラレーションモードの全てによってフレキシブルにサポートされることを有利に可能にする。例えば、ＰＩＤＡモードにおいて、コマンドは、ＣＯＭボード上のテスタプロセッサによって生成されるが、テストパターンデータはＦＰＧＡによって生成される。この例において、組み込みＯＳは、様々なプロテクションモードおよび変則セクタサイズをサポートするテスタプロセッサによってコマンドを生成することを可能にする。さらに、ＦＰＧＡは、プロテクションモードおよび様々な変則セクタサイズのためのデータを従来のテスタシステムよりもかなり高速に生成することができる。同様に、フルアクセラレーションモードにおいて、ＦＰＧＡは、様々なプロテクションモードおよび変則セクタサイズをサポートするコマンドおよびデータの両方を、従来のテスタシステムよりもかなり高速なレートで生成することができる。例えば、（図１２Ｂに示したような）プロテクション情報の様々なフィールドを決定するための計算および演算は、接続された全てのＳＳＤのための演算をテスタプロセッサが実行する場合よりも、かなり高速にＦＰＧＡで実行される。同様に、ＦＰＧＡは、非標準セクタサイズ（例えば５２０、４１０４）のためのデータを、テスタプロセッサよりもかなり高速に生成することができる。
【００９９】
可変セクタサイズのサポートの提供において、組み込みＯＳは、テストされる様々なＳＳＤのセクタサイズを変更することができる"Ｃ"ベースのテスタスクリプト記述言語を使用することを可能ににする。したがって、任意のセクタサイズ（例として５１２から４Ｋ）が、様々なＤＵＴ１１７０にわたるテストに適用することができる。このセクタサイズコンフィグレーションは、ホストコンピュータから発せられて全てのプリミティブに、その後に任意のまたは全てのＤＵＴ１１７０に適用され得る。プロテクションモードサポートに関して、プロテクションモードサポートのあらゆる組み合わせがＤＵＴ１１７０にわたって適用することができ、ホストコンピュータ１１１０から発することができる。プロテクションモードは、上述のように、ソフトウェアまたはファームウェアによるメタデータの生成方式に影響を与える。特に、プロテクションモードコンフィグレーションの適用は、データパケットに続き、あるいは別の方法で関連付けられるメタデータバイトの構成を変更する。セクタサイズの任意の組み合わせに加えて、プロテクションモードの任意の組合せは、ホストコントローラ１１１０からプリミティブ１１３０Ａ、１１３０Ｂの全てにわたって適用することができる。換言すれば、システムのファームウェアは、変則セクタサイズのあらゆる組み合わせと共にプロテクションモードの全ての組合せに対してハードウェアアクセラレーションを適用することを可能にする。ハードウェアアクセラレーションの適用は、ＳＳＤをより高速にテストすることを可能とする。なぜなら、ＦＰＧＡは、データをシリアル化してＤＵＴへと送信することを、テスタプロセッサ自体よりもかなり高い速度で行うところ、例えばＰＩＤＡおよびＦＡモードにおいてＦＰＧＡは全てのデータを生成しそれをＤＵＴへと送信するからである。さらに、ファームウェアはまた、プロテクションモードのためのプロテクション情報を、ＦＰＧＡを用いて高速に計算することを可能にする。さらに、ＦＰＧＡがＤＵＴに近接する位置にあるので、より高速に、データがＤＵＴへと送信され、データがＤＵＴから受信される。
【０１００】
従来のテスタシステムは、比較すると、プロテクションモードおよび変則セクタサイズをサポートするドライブをテストすることができるメカニズムを持たない。さらに、従来のテスタシステムは、プロテクションモードおよび変則セクタサイズをサポートするドライブを、ファームウェアアクセラレーションを用いて高速にテストすることができなかった。従来のテスタシステムは、例えば５１２ＢＰＳといった標準セクタサイズでフォーマットされたドライブをテストする能力のみ有していた。
【０１０１】
１つの実施形態において、テスタフレームワーク１１０５はまた、ＳＳＤを、それらがサポートする様々なセクタサイズおよびプロテクションモードについて、デバイスを交換する必要なく高速でテストすることをサポートする。例えば、図中のＤＵＴ１１７０は、いくつかの異なるセクタサイズおよびプロテクションモードをサポートしてよい。ＤＵＴは、例として、５１２＋０、５１２＋８（８バイトのプロテクション情報メタデータ）、およびまた５２８の変則セクタサイズをサポートしてよい。テスタフレームワーク１１０５は、様々なセクタサイズおよびプロテクションモードを循環して、ハードウェアアクセラレーションモードを用いて全ての可能な構成についてＤＵＴをテストする。例えば、テスタフレームワークは、まず、５１２ＢＰＳについてＤＵＴをテストしてよい。テスタフレームワークは、次にドライブを再フォーマットして、それらを５１２＋８ＢＰＳについてテストするように構成されてよい。プロテクション情報を生成する演算処理およびテスト用のデータの生成する演算処理は、例えばＰＩＤＡまたはＦＡといったハードウェアアクセラレーションモードの１つにあるＦＰＧＡによって実行される。その後、テスタフレームワークは、５２８といった非標準セクタサイズでＳＳＤをテストするべく、再度ドライブを再フォーマットして、（アクセラレーションモードのうちの１つにおける）ＦＰＧＡレベルでのデータを生成してよい。このように、本発明の実施形態においては、サポートされる全てのセクタサイズおよびプロテクションモードについて、接続される全てのＤＵＴを、デバイスを分離または交換する必要なく高速でテストすることができる。
【０１０２】
上述のように、従来のテスタシステムはまた、非標準セクタサイズ用にフォーマットされたドライブをテストするいかなる能力も持たなかった。本発明の実施形態は、ハードウェアアクセラレーションを用いるおよび用いないの両方によって、非標準セクタサイズ（例えば５２０＋０、４１０４＋０など）用にフォーマットされたドライブを許容する。換言すれば、テスタプロセッサ３０４の組み込みＯＳは、例えば、標準（またはバイパス）モードにおいて、変則セクタ用にフォーマットされたドライブをテストするためのコマンドおよびテストパターンを生成することができる。換言すれば、本発明の実施形態は、全てのＦＰＧＡをバイパスして、変則セクタ用にフォーマットされたドライブをテストすることができる。さらに、本発明の実施形態はまた、変則セクタサイズ用にフォーマットされたドライブを、３つのハードウェアアクセラレーションモード（例えばハードウェアアクセラレータパターンジェネレータまたはＰＩＤＡモード、ハードウェアアクセラレータメモリモード、およびフルアクセラレーションモード）のうちの任意のモードでテストすることができる。
【０１０３】
本発明の実施形態は、スタンダードモードおよび３つのハードウェアアクセラレーションモードの両方において、非標準セクタサイズ（２のべき乗でないセクタサイズ）用の繰返し可能なテストデータを生成するための大がかりな演算を実行できる必要がある。テストのために生成されるデータは、それが読み出される順序と異なる順序でセクタに書き込むことができるように、繰返し可能である必要がある。換言すれば、データが書き込まれた順序と同じ順序で読み出されない場合、それにもかかわらず、それが検証可能であることが重要である。したがって、変則セクタサイズに書き込まれるテストパターンは、繰返し可能である必要がある。
【０１０４】
本発明の実施形態は、任意のセクタサイズについて、繰返し可能なランダムまたは擬似ランダムデータを生成する計算を実行するように構成される。テスタプロセッサ（スタンダードモード用）およびＦＰＧＡ（ハードウェアアクセラレーションモード用）の両方は、セクタ番号をシードとして用いて乱数を生成するアルゴリズムを用いてプログラムされるであろう。換言すれば、生成されるランダムデータは、セクタアドレスの関数であるだろう。セクタ番号をシードとして用いることにより、アルゴリズムは、任意長（例えば変則セクタサイズ長）の再現可能シーケンスを生成するであろう。データが読み返される必要がある場合、データは、ＤＵＴのインテグリティを保証するためにＤＵＴから読み返されたデータと比較することができるように、（セクタアドレスをシードとして用いて）さらに再生成され得る。
【０１０５】
図５は、本発明の１つの実施形態に係る、ＤＵＴをテストする例示的なプロセスのフローチャート５００を表現する。しかしながら、本発明は、フローチャート５００によって提供された説明に限定されない。むしろ、本明細書において提供される教示から当業者には明らかなように、他の機能フローが本発明の範囲および主旨内に含まれる。
【０１０６】
フローチャート５００は、図２、図３、および図４を参照して上述した例示的な実施形態を引き続き参照して説明されるが、当該方法はそれらの実施形態に限定されない。
【０１０７】
ここで図５を参照すると、ブロック５０２において、ユーザは、セットアップを起動し、テストプログラムをシステムコントローラへロードする。セットアップの起動は、ＡＴＥ装置２００内のＦＰＧＡデバイス上に構成されるべき利用可能なプロトコルのライブラリから１または複数のプロトコルを選択することを含むことができる。プロトコルは、システムコントローラ３０１上のファイルとしてキャッシュされ、ビットファイルとしてＦＰＧＡ上にダウンロードされることができる。ユーザは、グラフィカルユーザインタフェースを介して、利用可能なリリース一覧の中からプロトコルを選択することができる。プロトコルがオプションとして利用可能にされる前に、それはビルドされ、テストされ、リリースに統合されなければならない。リリースされたＦＰＧＡのコンフィグレーションは、とりわけ、サポートされるプロトコルおよびＤＵＴに接続するために利用可能な送信器の数に関する定義を含む。リリースのライブラリは、次に、システムまたはホストコントローラ上のグラフィカルユーザインタフェースを介して、ユーザに利用可能にされ得る。
【０１０８】
ブロック５０２において、ユーザはまた、グラフィカルユーザインタフェースを介して、テストプログラムをシステムコントローラ３０１にロードする。テストプログラムは、ＤＵＴで実行する必要があるテストの全てのパラメータを定義する。ブロック５０４において、システムコントローラは、サイトモジュール３１０Ａ上のテスタプロセッサへ命令を送信する。この段階は、ＦＰＧＡにプログラムされるべきプロトコルエンジン用のビットファイルを送信することを含む。システムコントローラは、特定のテストプログラム用の命令を、テストプログラムによって制御されるＤＵＴに接続されたテスタプロセッサへとルーティングするルーティングロジックを含み得る。
【０１０９】
ブロック５０６において、システムコントローラから命令を受信した後、テスタプロセッサ３０４は、サイトモジュール３１０Ａに接続されたＤＵＴのテストを実行するハードウェアアクセラレーションモードを決定することができる。
【０１１０】
１つの実施形態において、テスタプロセッサ３０４は、４つの異なるハードウェアアクセラレーションモードのうちの１つで動作することができる。それぞれの機能モードは、コマンドおよびテストデータを生成する機能を、テスタプロセッサ３０４と、ＦＰＧＡ３１６および３１８との間で割り当てるように構成される。１つの実施形態において、テスタプロセッサは、ＤＵＴのテスト用の全コマンドおよびテストデータがテスタプロセッサ３０４により生成され、ＦＰＧＡ３１６および３１８がバイパスされるバイパスまたは標準モードで動作するようにプログラムされ得る。
【０１１１】
別の実施形態において、テスタプロセッサ３０４は、ＤＵＴのテストに使用される擬似ランダムまたはランダムデータがＦＰＧＡ３１６および３１８で生成され、比較もまたＦＰＧＡで行われるが、テスタプロセッサがコマンド生成を処理するハードウェアアクセラレータパターンジェネレータモード（またはＰＩＤＡモード）で動作するようにプログラムされることができる。
【０１１２】
さらに別の実施形態において、テスタプロセッサ３０４は、初期セットアップの間にテスタプロセッサによって、ＦＰＧＡ３１６および３１８のそれぞれに接続されたメモリモジュールにテストパターンが予め書き込まれるハードウェアアクセラレータメモリモードで動作するようにプログラムされることができる。このモードにおいてＦＰＧＡは、ＤＵＴに書き込まれるべきテストデータを引き出すべく専用メモリデバイスをアクセスし、ＤＵＴからテストデータを読み出し、読み出しデータをメモリデバイスに書き込まれたデータと比較する。このモードでは、ＦＰＧＡのそれぞれは、ＤＵＴからの読み出しおよび書き込みオペレーションに応じてメモリデバイスを制御する。しかしながら、テスタプロセッサは、このモードにおいて、依然としてコマンド生成を担う。
【０１１３】
さらに別の実施形態において、テスタプロセッサ３０４は、データおよび基本的な読み出し／書き込み／比較コマンドがＦＰＧＡ３１６および３１８によって生成されるハードウェアアクセラレータパケットビルダモード（またはフルアクセラレーションモード）で動作するようにプログラムされることができる。
【０１１４】
ブロック５０８において、テスタプロセッサは、テストが実行されるであろうモードへと分岐する。
【０１１５】
図１０のＦＰＧＡ１０３５は、上述の４つの機能モード、すなわちバイパスモード、ハードウェアアクセラレータパターンジェネレータモード、ハードウェアアクセラレータメモリモード、およびハードウェアアクセラレータパケットビルダモードのいずれかにプログラムされ得ることに留意すべきである。１つの実施形態において、コネクタ１０１０を介してテスタカード１０００が接続されるコンピュータまたはシステムコントローラは、テスタプロセッサ３０４の機能を実行するであろう。
【０１１６】
図６は、本発明の１つの実施形態に係る、バイパスモードでＤＵＴをテストする例示的なプロセスのフローチャート６００を表現する。しかしながら、本発明は、フローチャート６００によって提供された説明に限定されない。むしろ、本明細書において提供される教示から当業者には明らかなように、他の機能フローが本発明の範囲および主旨内に含まれる。
【０１１７】
フローチャート６００は、図２、図３、および図４を参照して上述した例示的な実施形態を引き続き参照して説明されるが、当該方法はそれらの実施形態に限定されない。
【０１１８】
ここで図６を参照すると、バイパスモードにおいて、ブロック６０２でテスタプロセッサ３０４は、ＤＵＴへとルーティングされるべきテストパケットのコマンドおよびパケットヘッダを生成する。テスタプロセスはまた、ブロック６０４において、ＤＵＴにルーティングされるべきパケットのテストパターンデータを生成する。このモードにおいて、ハードウェアアクセラレーションを行わない。なぜなら、テスタプロセッサが、それ自体のコマンドおよびテストデータを生成するからである。
【０１１９】
ブロック６０６において、テスタプロセッサは、テストパターンデータを含むテストパケットをＤＵＴへとルーティングするために、インスタンス化ＦＰＧＡブロック４１０およびダウンストリームポート４８０と通信する。バイパスモードは、パススルーモードであり、いくつかの限定された例外を除き、コマンドおよびデータは、インスタンス化ＦＰＧＡブロック４１０を透過的に通過して直接ＤＵＴへと渡される。バイパスモードでは、ＤＵＴは、テスタプロセッサ３０４によって直接制御される。インスタンス化ＦＰＧＡブロックがダウンストリームポートへとパケットを通過させるルーティングを行うロジックを有することができるが、インスタンス化ＦＰＧＡブロックは、コマンド生成（シグナリングとも呼ばれる）またはデータ生成のいずれにも関与しない。
【０１２０】
ブロック６０８において、テスタプロセッサ３０４は、ブロック６０６においてＤＵＴに予め書き込まれたデータのＤＵＴからの読み出しオペレーションを開始するためにダウンストリームポート４８０と通信する。ブロック６１０において、テスタプロセッサは、ＤＵＴから読み出されたデータを、ブロック６０６で書き込まれたデータと比較する。ブロック６０６で書き込まれたデータとブロック６１０で読み出されたデータとの間に何らかの不一致がある場合、ブロック６１２において、テスタプロセッサ３０４によってフラグがシステムコントローラ３０１へと送信される。システムコントローラは、次にユーザに不一致を知らせる。
【０１２１】
バイパスモードにおいて、テスタプロセッサ３０４は、それがサポートすることができるＤＵＴの数が制約される。なぜなら、テスタプロセッサ３０４の処理能力は、ＤＵＴへの全コマンドおよびテストデータの生成によって急速に最大になり得るからである。また、サイトモジュール３１０ＡによりサポートすることができるＤＵＴの数は、システムバス３３０および３３２のバンド幅制約によってさらに制限される。バイパスモードでは、バス３３０および３３２のバンド幅は、テスタプロセッサ３０４からＤＵＴへと送信される大量のデータのために、比較的急速に使い尽くされる。したがって、ＦＰＧＡデバイスがテストデータおよびコマンドを生成するより多くの機能を持つ、より多いハードウェアアクセラレーションを伴う他のモードが用意されている。
【０１２２】
図７は、本発明の一実施形態に係る、ハードウェアアクセラレータパターンジェネレータモードでＤＵＴをテストする例示的なプロセスのフローチャート７００を表現する。しかしながら、本発明は、フローチャート７００によって提供された説明に限定されない。むしろ、本明細書において提供される教示から当業者には明らかなように、他の機能フローが本発明の範囲および主旨内に含まれる。
【０１２３】
フローチャート７００は、図２、図３、および図４を参照して上述した例示的な実施形態を引き続き参照して説明されるが、当該方法はそれらの実施形態に限定されない。
【０１２４】
ここで図７を参照すると、テスタプロセッサ３０４の処理負荷およびシステムバス３３０および３３２のデータ負荷を軽減するように、ＦＰＧＡデバイスがデータ生成機能を分担するハードウェアアクセラレーション方法が示される。ハードウェアアクセラレータパターンジェネレータモードのブロック７０２において、テスタプロセッサ３０４は、ＤＵＴへとルーティングされるべきパケットのコマンドおよびパケットヘッダを生成する。テスタプロセスは、このモードにおいてシグナリング機能を保持する。ブロック７０４において、ハードウェアアクセラレータブロック４４０内のアルゴリズミックパターンジェネレータモジュール４４３は、ＤＵＴに書き込まれるべき擬似ランダムテストデータを生成する。論理ブロックモジュール４５０は、生成されて、ＤＵＴに書き出されるべきパケットに追加されたデータをルーティングする機能を有する。
【０１２５】
このモードは、「ハードウェアアクセラレーテッド」とみなされる。なぜなら、データを生成する機能は、ＦＰＧＡデバイスのアルゴリズミックパターンジェネレータによってハードウェアで、テスタプロセッサによってソフトウェアで行うよりも非常に高速に行うことができるからである。また、「ＤＵＴごとのテスタ」アーキテクチャは、図４に示したように、ＤＵＴが、そのＤＵＴ用のテストパターンデータを生成する、それ自体に専用のインスタンス化ＦＰＧＡテスタブロックに直接接続されることを可能にするので、この結果、テスタプロセッサ３０４が全てのコマンドおよびデータをシステムバス３３０および３３２を介してＤＵＴに供給するバイパスモードよりもバンド幅が実質的に増加する。データ生成機能を分担するＦＰＧＡデバイスにより、システムバス３３０および３３２は解放され、これによってコマンドはバイパスモードよりも高速なレートでＦＰＧＡに通信されることができる。さらに、テストのいくつかの繰り返しを必要とするソリッドステートドライブなどのデバイスのために、インスタンス化ＦＰＧＡテスタブロックを通る専用データパスを持つことは、テスタプロセッサのリソースがいくつかのＤＵＴで共有されるものよりも大幅にテストを速度向上する。これはまた、ＤＵＴが最大性能近くで動作することを可能にする。なぜなら、テスタプロセッサがそれに処理リソースを割り当てるのを待機しなくてよいからである。
【０１２６】
１つの実施形態において、アルゴリズミックパターンジェネレータモジュール４４３は、その場でデータを生成するようにプログラムされ得る。ＡＰＧモジュールは、インクリメンタルパターン、擬似ランダムパターン、またはある種の一定パターンを生成することができる。ＡＰＧモジュールはまた、ストライプ、対角ストライプ、または交互のパターンによるテストパターンを生成する、特定のゲーティング能力を備え得る。１つの実施形態において、ＡＰＧモジュールは、テストパターンを生成するために、とりわけ有限状態機械、カウンター、または線形フィードバックシフトレジスタを用い得る。
【０１２７】
いくつか実施例において、ＡＰＧモジュールは、より複雑なランダムパターンを生成するための初期値として開始シードの提供を受けることができる。上述のように、例えばセクタ番号をシードとして用いることにより、ＡＰＧモジュールは、任意長（例えば変則セクタサイズ長）の再現可能シーケンスを生成するであろう。データが読み返される必要がある場合、データは、ＤＵＴのインテグリティを保証するためにＤＵＴから読み返されたデータと比較することができるように、（セクタアドレスをシードとして用いて）さらに再生成され得る。
【０１２８】
段階７０６において、インスタンス化ＦＰＧＡブロック４１０は、テスタプロセッサによって生成されたコマンドおよびパケットヘッダにしたがってテストパターンデータをＤＵＴへとルーティングするために、ダウンストリームポート４８０と通信する。段階７０８において、インスタンス化ＦＰＧＡブロック４１０は、テスタプロセッサによって生成されたコマンドにしたがってＤＵＴからテストパターンデータを読み出すために、ダウンストリームポートと通信する。ブロック７１０において、ハードウェアアクセラレータブロック４４０のコンパレータモジュール４４６は、次に、読み出しデータをＤＵＴに書き込まれたデータと比較するために使用される。ＡＰＧモジュール４４３は、コンパレータモジュールが、擬似ランダムデータを生成するために使用されたものと同じパラメータによって読み出しオペレーションをＡＰＧモジュール４４３自身に対して実行でき、ブロック７０４でＤＵＴに書き込まれたものと同じデータを受信できるような方式に設計される。ＡＰＧモジュール４４３は、ＤＵＴに書き込まれたデータをその場で再生成して、それをコンパレータモジュール４４６へと通信する。ブロック７１２において、あらゆる不一致は、メモリ制御モジュール４４４によりメモリモジュール４２０にログをとられ、またはインスタンス化ＦＰＧＡブロックによりテスタプロセッサに通信される。テスタプロセッサは、その後、ブロック７１４において、エラーログを受信した後に、システムコントローラに不一致のフラグを示す。
【０１２９】
図８は、本発明の一実施形態に係る、ハードウェアアクセラレータメモリモードでＤＵＴをテストする例示的なプロセスのフローチャート８００を表現する。しかしながら、本発明は、フローチャート８００によって提供された説明に限定されない。むしろ、本明細書において提供される教示から当業者には明らかなように、他の機能フローが本発明の範囲および主旨内に含まれる。
【０１３０】
フローチャート８００は、図２、図３、および図４を参照して上述した例示的な実施形態を引き続き参照して説明されるが、当該方法はそれらの実施形態に限定されない。
【０１３１】
ここで図８を参照すると、テスタプロセッサ３０４の処理負荷およびシステムバス３３０および３３２のデータ負荷を軽減するように、ＦＰＧＡデバイスがデータ生成機能を分担するハードウェアアクセラレーション方法が示される。ハードウェアアクセラレータパターンジェネレータモードと比較して、ハードウェアアクセラレータメモリモードでは、インスタンス化ＦＰＧＡテスタブロックは、ＡＰＧモジュール４４３を用いる代わりに、ローカルメモリモジュール４２０の、ＤＵＴへと書き込まれるべきデータをアクセスする。
【０１３２】
ハードウェアアクセラレータパターンメモリモードのブロック８００において、テスタプロセッサ３０４は、ＤＵＴへとルーティングされるべきパケット用のコマンドおよびパケットヘッダを生成する。テスタプロセスは、このモードにおいてシグナリング機能を保持する。ブロック８０２において、テスタプロセッサは、ＤＵＴへと書き出されるべきテストパターンにより、インスタンス化ＦＰＧＡテスタブロックの４１０のローカルメモリモジュール４２０を初期化する。ハードウェアアクセラレータメモリモードの一つの利点は、テスタプロセッサによって生成されるテストパターンが、ハードウェアアクセラレータパターンジェネレータモードにおいてＡＰＧモジュール４４３が生成する擬似ランダムデータとは対照的に、実ランダムデータを構成してよいことである。テスタプロセッサおよびインスタンス化ＦＰＧＡテスタブロックの両方は、ローカルメモリモジュール４２０への読み出しおよび書き込みアクセスを有する。しかしながら、テスタプロセッサのみが、初期セットアップの間にメモリモジュール４２０をアクセスする。アクセラレータモードの間、テスタプロセッサは、メモリモジュールをアクセスしない。なぜなら、テスタプロセッサ３０４の追加の処理負荷、並びにシステムバス３３０および３３２の追加のデータ負荷は、アクセラレーションを大幅に減速するからである。
【０１３３】
ブロック８０４において、インスタンス化ＦＰＧＡテスタブロックは、メモリモジュール４２０からＤＵＴへとルーティングされるべきテストパターンデータを読み出す。メモリモジュール４２０は、ＦＰＧＡテスタブロックに専用またはたった１つの他のＦＰＧＡテスタブロックと共用なので、この２つの間には、結果として高速な読み出しオペレーションとなる高いバンド幅の接続があるからである。論理ブロックモジュール４５０は、生成されたデータをルーティングして、それをＤＵＴへと書き出されるべきパケットに追加する機能を有する。
【０１３４】
データがパケットに追加された後、ブロック８０６において、インスタンス化ＦＰＧＡテスタブロックは、テスタプロセッサによって生成されたコマンドおよびパケットヘッダにしたがってテストパターンデータをＤＵＴへとルーティングするために、ダウンストリームポート４８０と通信する。段階８０８において、インスタンス化ＦＰＧＡブロック４１０は、テスタプロセッサによって生成されたコマンドにしたがってＤＵＴからテストパターンデータを読み出すために、ダウンストリームポートと通信する。ブロック８１０において、ハードウェアアクセラレータブロック４４０のコンパレータモジュール４４６は、次に、読み出しデータをＤＵＴに書き込まれたデータと比較するために使用される。ブロック８１２において、あらゆる不一致は、メモリモジュール４２０上にログをとられるか、またはインスタンス化ＦＰＧＡブロックによってテスタプロセッサへと通信されるかのいずれかである。テスタプロセッサは、その後、エラーログを受信した後に、ブロック８１４においてシステムコントローラに不一致のフラグを示す。
【０１３５】
図９は、本発明の一実施形態に係る、ハードウェアアクセラレータパケットビルダモードでＤＵＴをテストする例示的なプロセスのフローチャート９００を表現する。しかしながら、本発明は、フローチャート９００によって提供された説明に限定されない。むしろ、本明細書において提供される教示から当業者には明らかなように、他の機能フローが本発明の範囲および主旨内に含まれる。
【０１３６】
フローチャート９００は、図２、図３、および図４を参照して上述した例示的な実施形態を引き続き参照して説明されるが、当該方法はそれらの実施形態に限定されない。
【０１３７】
ここで図９を参照すると、テスタプロセッサ３０４の処理負荷、並びにシステムバス３３０および３３２のデータ負荷を軽減するように、ＦＰＧＡデバイスがデータおよびコマンドの両方の生成機能を共有するハードウェアアクセラレーション方法が示される。このモードは、「フルアクセラレーション」（ＦＡ）モードとしても知られる。なぜなら、デバイステストを実行するための大部分の制御はＦＰＧＡデバイスへと移され、テスタプロセッサ３０４は、読み出し、書き込み、および比較以外のコマンドのみに対する制御を保持するからである。
【０１３８】
ハードウェアアクセラレータパケットビルダモードのブロック９０２において、テスタプロセッサ３０４は、インスタンス化ＦＰＧＡブロック４１０自体のパケットを生成するためにインスタンス化ＦＰＧＡブロック４１０に通信されるべきコマンドを生成する。テスタプロセッサは、このモードにおいて、読み出し／書き込み／比較以外のコマンドのみに対する機能を保持する。読み出し、書き込み、および比較オペレーションなどのコマンド用の機能は、インスタンス化ＦＰＧＡブロックに移される。ブロック９０４において、インスタンス化ＦＰＧＡテスタブロックのパケットビルダモジュール４４５は、ＤＵＴへと通信されるべき、ヘッダおよびコマンド情報を有するパケットを組立てる。このパケットは、コマンドタイプ、デバイスのブロックアドレス、およびテストパターンデータを少なくとも含む。
【０１３９】
ブロック９０６において、ハードウェアアクセラレータブロック４４０内のアルゴリズミックパターンジェネレータモジュール４４３は、ＤＵＴに書き込まれるべき擬似ランダムテストデータを生成する。論理ブロックモジュール４５０は、インスタンス化ＦＰＧＡブロックにより生成されたデータおよびコマンドをルーティングし、それらをＤＵＴに書き出されるべきパケットに統合する機能を有する。
【０１４０】
ブロック９０８において、インスタンス化ＦＰＧＡテスタブロックは、テストパターンデータをＤＵＴにルーティングするために、ダウンストリームポート４８０と通信する。段階９１０において、インスタンス化ＦＰＧＡブロック４１０は、ＤＵＴからテストパターンデータを読み出すために、ダウンストリームポートと通信すする。ブロック９１２において、ハードウェアアクセラレータブロック４４０のコンパレータモジュール４４６は、次に、読み出しデータをＤＵＴに書き込まれたデータと比較するために使用される。ブロック９１４において、あらゆる不一致は、メモリモジュール４２０上にログをとられるか、またはインスタンス化ＦＰＧＡブロックによってテスタプロセッサへと通信されるかのいずれかである。テスタプロセッサは、その後、エラーログを受信した後に、ブロック９１６においてシステムコントローラに不一致のフラグを示す。
【０１４１】
図１３は、本発明の１つの実施形態に係る、非標準セクタサイズおよびプロテクションモードをサポートするＤＵＴをテストする例示的なプロセスのフローチャート１３００を表現する。しかしながら、本発明は、フローチャート１３００によって提供された説明に限定されない。むしろ、本明細書において提供される教示から当業者には明らかなように、他の機能フローが本発明の範囲および主旨内に含まれる。
【０１４２】
ブロック１３１０において、ホストコントローラは、テスタプロセッサおよびＦＰＧＡと接続される。上述したように、ホストコントローラは、Ｗｉｎｄｏｗｓベースのオペレーションシステムであってよい。さらに、テスタプロセッサは、ＬｉｎｕｘまたはＬｉｎｕｘ  ＯＳの修正されたバージョンを実行してよい。ＦＰＧＡは、テスタプロセッサに通信可能に接続され、上述した様々なアクセラレーションモードの１つにしたがって、複数のＤＵＴをテストするコマンドおよびデータを生成する動作を行うことができる。
【０１４３】
ブロック１３１２において、複数の接続されたＤＵＴをテストするためのコマンドおよびデータを生成するアクセラレーションモードが選択される。アクセラレーションモードは、テスタプロセスが全コマンドおよびデータを生成し、ＦＰＧＡがバイパスされる標準またはバイパスモードであってよい。あるいは、アクセラレーションモードは、上述のＰＩＤＡ、ＦＡ、またはハードウェアアクセラレータメモリモードであってよい。
【０１４４】
ブロック１３１４において、接続された複数のＤＵＴのそれぞれについて、テストすべきいくつかのセクタサイズおよびプロテクションモードが決定される。例えば、各ＳＳＤは、それがサポートする複数の変則セクタサイズを有してよく、セクタサイズごとにテストされる必要がある。
【０１４５】
ブロック１３１６において、サポートされるセクタサイズおよびプロテクションモードで複数のＤＵＴをテストするためのコマンドおよびデータが、選択されたアクセラレーションモードにしたがって生成される。
【０１４６】
前述の説明は、説明することを目的としており、特定の実施形態を参照して説明されてきた。しかしながら、例示された上記説明は、網羅的であることも、開示されたまさにその形態に本発明を限定することも意図していない。上記教示に照らして、多くの修正および変形が可能である。実施形態は、本発明の原理とその実際の適用を最も良く説明するために選択され、説明された。それにより、他の当業者が、本発明と、予期される特定の用途に適し得る様々な修正を加えた様々な実施形態とを最も良く利用することを可能にする。
【図１】
2020101519.tif 000003
【図２】
2020101519.tif 000004
【図３】
2020101519.tif 000005
【図４】
2020101519.tif 000006
【図５】
2020101519.tif 000007
【図６】
2020101519.tif 000008
【図７】
2020101519.tif 000009
【図８】
2020101519.tif 000010
【図９】
2020101519.tif 000011
【図１０】
2020101519.tif 000012
【図１１】
2020101519.tif 000013
【図１２Ａ】
2020101519.tif 000014
【図１２Ｂ】
2020101519.tif 000015
【図１３】
2020101519.tif 000016
【外国語明細書】
2020101519000001.pdf