(57)【要約】【課題】スキャンチェインからの情報を使用する、および／または情報をスキャンチェインに渡す動作を、ＣＰＵを使用しないで高速に実行できる装置を提供することと、スキャンチェインからのデータを使用しての不揮発性メモリのプログラミングを、ＣＰＵを使用しないで高速に実行できる装置を提供すること。【解決手段】バウンダリスキャンテスト回路が、連続するテストクロックサイクルにおいてそれぞれのテスト状態を連続的にとることができるテストステートマシンによって制御される。通常は、テストステートマシンがとる連続する状態の選択を制御するために、テスト信号の単一の入力が使用される。テストステートマシンは、とることのできる状態の標準の状態図を有する。さらに、テスト回路には、テストデータを転送するためのシフトレジスタが含まれる。さらに、テストクロックの連続するサイクルにおいてそれぞれのコプロセッサ状態を連続的にとることのできるコプロセッサステートマシンが、設けられる。コプロセッサステートマシンは、イネーブルされているとき、テストステートマシンがテスト状態の所定の状態をとることに応答して、開始状態からの遷移を開始する。コプロセッサが開始状態の次にとるコプロセッサ状態は、所定の状態の後にテストステートマシンの制御下においてスキャンチェインから出力されるデータを使用する、および／または、テストステートマシンの制御下においてスキャンチェインに読み込まれる結果を生成する、動作の連続するステップを制御する。１つの実施例においては、コプロセッサは、コプロセッサ状態のそれぞれの状態において不揮発性メモリをプログラムするための、連続する制御信号を供給する。プログラムされるデータは、コプロセッサステートマシンによって決まるテストクロックサイクルにおいてスキャンチェインから読み取られる。【選択図】図１
2004521363.tif 000002
【特許請求の範囲】
【請求項１】
− バウンダリスキャンユニットであって、
クロック信号を受信するためのクロック入力と、
シフトレジスタと、
前記クロック信号の連続するサイクルにおいてそれぞれのテスト状態を連続的にとることができるテストステートマシンであって、当該テストステートマシンが、当該テストステートマシンがとる前記テスト状態に応じて、シフトレジスタによるデータの転送と、前記シフトレジスタとテスト対象の回路の間でのデータの転送とを制御する出力を有する、テストステートマシンと
を有するバウンダリスキャンユニットと、
− 前記クロック信号の連続するサイクルにおいてそれぞれのコプロセッサ状態を連続的にとることができるコプロセッサステートマシンであって、当該コプロセッサステートマシンが、イネーブルされているときに、前記テストステートマシンが前記テスト状態のうちの所定の状態をとることに応答して、開始状態からの遷移を開始し、前記コプロセッサステートマシンが前記開始状態以降にとる前記コプロセッサ状態が、前記所定の状態の後に前記テストステートマシンの制御下において前記スキャンチェインから出力されるデータを使用する、および／または、前記テストステートマシンの制御下において前記スキャンチェインに読み込まれる結果を生成する、動作の連続するステップを制御する、コプロセッサステートマシンと、
を有する、装置。
【請求項２】
前記スキャンチェインから書き込み可能なコプロセッサ制御レジスタを有する請求項１による装置であって、前記制御レジスタが、遷移を開始するために前記コプロセッサステートマシンのイネーブルとディセーブルの間で選択するために、前記コプロセッサステートマシンに結合されている、装置。
【請求項３】
不揮発性メモリを有する請求項１による装置であって、前記コプロセッサステートマシンが、前記コプロセッサステートマシンが開始後に連続的にとる前記コプロセッサ状態のそれぞれの状態において前記不揮発性メモリをプログラムするための、連続する制御信号を供給するように構成されていて、前記スキャンチェインから読み取られたデータが、当該データを前記制御信号の制御下において前記不揮発性メモリにプログラムするために、前記不揮発性メモリに流される、装置。
【請求項４】
スキャンチェインから書き込み可能なコプロセッサ制御レジスタを有する請求項１による装置であって、前記制御レジスタが、前記コプロセッサステートマシンに結合され、前記制御レジスタが、プログラミング制御信号の異なるシーケンスを必要とする異なるタイプの不揮発性メモリを区別するコードを格納することができ、前記制御レジスタが、前記コプロセッサステートマシンがたどるコプロセッサ状態の多数の可能な異なるシーケンスのうち、前記異なるタイプの不揮発性メモリをプログラムするのに適した１つのシーケンスを選択的にイネーブルする、装置。
【請求項５】
前記コプロセッサの状態が、前記データをプログラムした後に前記不揮発性メモリから情報を再び読み取るための信号と、当該再読み取りから導かれる結果を前記スキャンチェインに読み込むために前記シフトレジスタに供給するための信号とを供給するための、再読み取り状態を有する、請求項３に記載の装置。
【請求項６】
前記装置が、エラーチェック値を計算するための回路を有し、前記コプロセッサ状態が、前記エラーチェック値を計算するための前記回路に、前記不揮発性メモリから再び読み取られた前記情報を使用して前記エラーチェック値を更新させる状態、を有し、前記エラーチェック値を計算するための前記回路が、前記エラーチェック値を前記スキャンチェインに読み込むことができるように、前記スキャンチェインに結合されている、請求項５に記載の装置。
【請求項７】
前記コプロセッサ状態が、ポーリング状態を有し、前記コプロセシングステートマシンが、前記不揮発性メモリへのデータ項目のプログラミングが完了したことを検出し、かつ、前記テストステートマシンによる状態遷移に関係なく、プログラムミングが完了したことをコプロセシングステートマシンが検出するまで、前記ポーリング状態にループするように構成されていて、前記コプロセシングステートマシンが、プログラミングが完了したときに前記ポーリング状態からさらなる状態をとる、請求項３に記載の装置。
【請求項８】
前記コプロセシングステートマシンが、前記コプロセシングステートマシンが所定の回数より多く前記ポーリング状態にループしたことを前記コプロセッサステートマシンが検出したときに、前記ポーリング状態を終了して終端状態に遷移するように構成されている、請求項７に記載の装置。
【請求項９】
− バウンダリスキャンユニットであって、
クロック信号を受信するためのクロック入力と、
シフトレジスタと、
前記クロック信号の連続するサイクルにおいてそれぞれのテスト状態を連続的にとることができるテストステートマシンであって、当該テストステートマシンが、当該テストステートマシンがとる前記テスト状態に応じて、シフトレジスタによるデータの転送と、前記シフトレジスタとテスト対象の回路の間でのテストデータの転送とを制御する出力を有する、テストステートマシンと
を有するバウンダリスキャンユニットと、
− 不揮発性メモリを接続するのに適した接続ピンと、
− それぞれのコプロセッサ状態をとることができるコプロセッサステートマシンであって、当該コプロセッサステートマシンが、イネーブルされているときに、前記テストステートマシンが前記テスト状態のうちの所定の状態をとることに応答して、開始状態からの遷移を開始し、前記コプロセッサステートマシンが前記開始状態以降にとる前記コプロセッサ状態が、前記所定の状態に続く前記クロック信号の連続するサイクルにおいて前記不揮発性メモリをプログラムするために、前記テストステートマシンの制御下において前記スキャンチェインから転送されるデータをプログラムするための連続する制御信号を、前記接続ピンに供給する、コプロセッサステートマシンと、
を有する、集積回路。
【請求項１０】
不揮発性メモリをプログラムする方法であって、当該方法が、
− 前記不揮発性メモリにプログラムする必要のある情報項目をバウンダリスキャンチェインに入力するステップと、
− 標準テストステートマシンを使用して、前記バウンダリスキャンチェインによる前記情報項目の転送と、前記バウンダリスキャンチェインのパラレル出力からの前記情報項目の出力とを制御するステップであって、前記情報項目が、連続的に、すなわち前記テストマシンが同じ所定の状態をとるたびに出力される、ステップと、
− コプロセッサステートマシンを使用して、前記情報のプログラミングを制御するステップであって、前記コプロセッサステートマシンが、前記テストステートマシンを前記所定の状態に導くことによって開始状態から繰り返し開始され、前記コプロセッサステートマシンが、当該所定の状態から前記テストステートマシンに合わせて動作し、前記開始状態以降の状態が、これに起因して前記不揮発性メモリが、前記所定のステップの後に前記バウンダリスキャンチェインから出力される前記情報項目をプログラムする、ように構成されている、ステップと、
を有する、方法。
【発明の詳細な説明】
【０００１】
【発明が属する技術分野】
本発明は、テストインタフェースを有する装置に関し、特に、そのような装置を使用して不揮発性メモリのプログラミングなどの動作を実行する方法に関する。
【０００２】
【従来の技術】
ヨーロッパ特許出願番号ＥＰ ０９８１１３４には、スキャンチェインによる不揮発性メモリへの情報の書き込みを制御するＣＰＵ（中央処理装置、すなわちプログラムされた命令を実行できるユニット）を有する信号処理装置が開示されている。この情報は、例えば、装置をその通常の使用時に制御するためのコンピュータプログラムである。このようなプログラムは、めったにロードする必要がなく、例えば、装置の製造時や修理時にしか、ロードする必要がない。
【０００３】
この公報に説明されているように、情報を書き込むためのプログラムと情報自体は、通常はテスト目的に使用されるスキャンチェインによりＣＰＵに送られる。このようなスキャンチェインの例は、ＩＥＥＥの１１４９．１標準（ＪＴＡＧ標準）に指定されている。ＪＴＡＧ標準には、最小数の外部ピンと、ピンから装置にテストデータを転送するためのシフトレジスタと、いわゆるＴＡＰコントローラとを有するテストユニットが規定されている。ＴＡＰコントローラは、テスト回路の動作のモードを制御するためのテストステートマシンとして機能する。ピンの１つが、このテストステートマシンが連続するテスト状態のうちのどの状態をとるかを選択する。各状態において、テストステートマシンは、状態に固有な信号を出力することによって、シフトレジスタを通じてデータを転送するか、データを出力してテストを実行するか、データを入力してテストの結果を確認するかを制御する。
【０００４】
ＤＲＡＭメモリをテストするための装置構成は、米国特許番号５，９７８，９４５から公知である。この装置構成においては、データとアドレスは、スキャンチェインにより供給される。論理回路は、テストステートマシンの所定の状態によって引き起こされるＲＡＳ／ＣＡＳ遷移を生成する。フラッシュメモリなどの不揮発性メモリをプログラムすることは、ＤＲＡＭにデータを書き込むことよりも、かなり複雑である。一般には、フラッシュメモリに一連の制御パターンを適用する手順が必要となる。標準のスキャンチェインからフラッシュメモリにデータをプログラムする方法が公知である。この目的のため、不揮発性メモリをプログラムするための必要な制御信号パターンすべてが、メモリに格納する必要のある情報と一緒に、スキャンチェインにロードされる。
【０００５】
不揮発性メモリに情報をプログラムするのに標準のスキャンチェインを使用することにより、不揮発性メモリが装置の基板上にすでに取り付けられ、かつ装置の他の部品と相互接続されている状態で、情報をプログラムすることができる。さらに、標準のテストインタフェースが使用されるため、専用のインタフェースがプログラムを行う必要がない。しかしながら、不揮発性メモリをプログラムするために多数の信号が必要であり、これらの信号すべてをスキャンチェインにより転送する必要があるため、この手法は非常に時間がかかる。
【０００６】
ＥＰ ０９８１１３４による装置は、これらの信号のほとんどをＣＰＵを使用して生成して、不揮発性メモリをプログラムする。不揮発性メモリをプログラムするためのプログラムと、プログラムする必要がある情報とが、スキャンチェインから一時メモリにロードされる。このプログラムの制御下で、ＣＰＵが、一時メモリから不揮発性メモリに情報を書き込む。プログラムの制御により、ＣＰＵが、多数のクロックサイクルにおいて信号をメモリに供給してプログラミングを制御する。フラッシュメモリの例においては、プログラムするために、データとアドレスの所定の組合せがメモリに流されるサイクルが繰り返された後、プログラムする位置のアドレスとプログラムするデータとが送られる１サイクルが続く。この後、ポーリングサイクルが続き、プログラミングが完了するまで待つ。
【０００７】
より一般的には、スキャンチェインからの情報を使用して不揮発性メモリをプログラムする以外の動作も、ＣＰＵを使用して実行できる。このようにＣＰＵを使用するためのコストは、このＣＰＵが装置内で利用可能であり、かつ動作を実行できる位置にある、例えば、不揮発性メモリとの必要な接続が確立されている場合には、かからない。しかしながら、通常は装置内にＣＰＵが使用されないか、または例えば不揮発性メモリの配置に起因して装置内のメモリをプログラムするために必要なアクセスを通常はＣＰＵが実行できないなどの理由で、必要な接続が確立されていない場合には、ＣＰＵを使用するこの手法を使用すると、このような動作を実行するために装置をかなり変更する必要があり、それに対応するコストがかかる。
【０００８】
【課題を解決するための手段】
本発明の目的は、特に、スキャンチェインからの情報を使用する、および／または情報をスキャンチェインに渡す動作を、ＣＰＵを使用しないで高速に実行できる装置を提供することである。
【０００９】
本発明のさらなる目的は、特に、スキャンチェインからのデータを使用しての不揮発性メモリのプログラミングを、ＣＰＵを使用しないで高速に実行できる装置を提供することである。
【００１０】
本発明による装置は、集積回路か、多数の集積回路を含むセットでよく、請求項１に記載されている。本発明によると、コプロセッサステートマシンとして機能する追加のステートマシンが、装置に含まれている。このコプロセッサステートマシンは、開始されるたびに、テストステートマシンと協力して、１つの動作を一連のステップにおいて実行する。コプロセシングステートマシンは、起動された後、テストステートマシンが所定のテスト状態をとると開始され、次いで、テストステートマシンと共に一連のステップをたどる。すなわち、多数のクロックサイクルを開始し、スキャンチェインを通じての転送と、スキャンチェインから／への入力／出力とを利用する。これらの動作は、テストステートマシンがコプロセッサステートマシンと共に一連のステップをたどるときにテストステートマシンによって制御される。
【００１１】
従って、所定の一連の信号のみを供給すればよい、非常に簡単なコプロセッサステートマシンを使用できる。このコプロセッサステートマシンは、情報を処理または転送する必要はなく、テストステートマシンの制御下で情報が処理されたときに、制御信号を供給するのみでよい。情報の連続的なワードを処理するのにループを実行する必要はなく、なぜなら、ループは、テストステートマシンの状態の流れの副産物として毎回開始されるためである。テストクロックを使用してステートマシンを制御することによって、スキャンチェインからのデータを転送するために複雑なクロックインタフェースは必要ない。
【００１２】
実施例においては、コプロセッサステートマシンは、開始されるたびに、スキャンチェインからの情報項目を不揮発性メモリにプログラムするように構成されている。コプロセッサステートマシンを使用することによって、コプロセッサステートマシンから所定のプログラミング信号を不揮発性メモリに流すことができ、従って、これらのプログラミング信号の一部またはすべてをスキャンチェインにより転送する必要がない。通常は、メモリをプログラムするために、３つ以上の異なる連続的な状態が使用される。プログラムされる情報の供給と、異なる情報項目をプログラムするためのループ処理とが、テストステートマシンがとる状態によって制御されるため、ＣＰＵは必要ない。コプロセッサステートマシンは、装置内のＣＰＵとその他の機能の存在とは独立している。コプロセッサステートマシンは、プログラミング中に（テストクロック信号以外の）通常のクロック信号が利用できるか否か、または装置が複数のクロックドメインを使用する場合にはクロックドメインインタフェースが利用できるか否かには依存しない。この結果、コプロセッサステートマシンは、多数の異なる装置を対象に一度のみ設計すればよい。コプロセッサステートマシンは、ブートストラップする必要なくプログラミングを開始できる専用のハードウェアに実装できる。
【００１３】
コプロセッサステートマシンは、異なるモードの間で切り替えることができることが望ましい。この場合の異なるモードは、それぞれプログラミングをイネーブルまたはディセーブルするモードと、例えば異なるタイプの不揮発性メモリに必要とされる信号によってプログラミングをイネーブルする別のモードである。これらのモードの別のモードへの切り替えは、スキャンチェインを通じて渡される命令によって制御されるのが望ましい。
【００１４】
上記およびその他の目的と有利な観点について、図面を使用して以下にさらに詳しく説明する。
【００１５】
【発明を実施するための形態】
図１は、多数の集積回路１１、１２、１４を含む装置１０を示す。第一集積回路１２は、テストコントローラ１２２と、スキャンチェイン１２４と、出力セレクタ１２６とを有するテストインタフェースを有する。スキャンチェイン１２４は、シリアル入力と、シリアル出力と、パラレル入力／出力とを有する。他の集積回路１１、１４は、スキャンチェイン１２４のパラレル入力／出力を介して第一集積回路１２に結合されている。これらの他の集積回路の一方の集積回路１４は、フラッシュメモリである。
【００１６】
スキャンチェイン１２４は、従来のバウンダリスキャンチェインである。このスキャンチェイン１２４には、シフトレジスタ（示されてない）とアップデートレジスタ（示されてない）が含まれる。スキャンチェインは、テストコントローラ１２２の制御下において、シリアル入力からシフトレジスタを通じてシリアル出力にデータをシフトする、またはパラレル入力／出力からシフトレジスタにデータをロードする、またはシフトレジスタからアップデートレジスタまでと、アップデートレジスタからパラレル入力／出力までデータを出力する、または集積回路１２の内部回路と外部ピンの間でデータを渡す。
【００１７】
テストインタフェースを有する集積回路１２は、スキャンチェイン１２４の入力と出力に結合されている機能回路１２８と、マルチプレクサ１７と、プログラミング制御レジスタ１８と、フラッシュコントローラ１６とを含む。スキャンチェイン１２４とフラッシュコントローラ１６のパラレル出力は、マルチプレクサ１７を介してフラッシュメモリ１４に結合されている。フラッシュコントローラ１６は、その制御出力がマルチプレクサ１７とフラッシュメモリ１４の制御入力に結合されている。スキャンチェインのシリアル入力は、テストインタフェースのテストデータ入力（ＴＤＩ）に結合され、シリアル出力は、出力セレクタ１２６を介してテストインタフェースのテストデータ出力（ＴＤＯ）に結合されている。出力セレクタ１２６は、フラッシュコントローラ１６の出力とスキャンチェイン１２４の中間出力に結合されたさらなる入力を有する。テストコントローラ１２２は、テストインタフェースに結合されている制御入力ＴＣＫ、ＴＭＳ、およびＴＲＳＴと、スキャンチェイン１２４、出力セレクタ１２６、プログラミング制御レジスタ１８、およびフラッシュコントローラ１６に結合されている各出力とを有する。プログラミング制御レジスタ１８は、フラッシュコントローラ１６の制御入力に結合されている。
【００１８】
動作時、装置１０は、通常モードとテストモードとにおいて使用できる。通常モードにおいては、スキャンチェイン１２４は透過的であり、機能回路１２８と、フラッシュメモリ１４と、集積回路１１は、互いに直接的に通信する。テストモードにおいては、スキャンチェインは透過的でなく、データはスキャンチェイン１２４を通じてこれらの回路１２８、１１、１４に供給され、かつこれらの回路からスキャンチェイン１２４を通じて受信される。この装置は、通常のテスト動作に関し、例えばＪＴＡＧテスト標準（ＩＥＥＥ標準１１４９）に従って動作する。
【００１９】
図２は、標準のテスト動作におけるテストコントローラ１２２のテスト動作を説明する状態図を示す。この状態図は、テストコントローラがとることのできる多数の状態を示す。状態は、矢印によって接続されている。各矢印には、テストインタフェースの信号ＴＭＳの値０または１が記されている。テストコントローラ１２２が特定の状態にあり、テストクロック信号ＴＣＫが立ち上がりエッジを有するとき、テストコントローラ１２２は、図２に示されているようにＴＭＳ信号の値に応じて次の状態への遷移を行う。従って、テストコントローラは、選択可能な一連の状態をたどる。
【００２０】
ステートマシンは、例えば、状態レジスタ（図示されていない）と、メモリ（図示されていない）と、それぞれの状態に対応する位置とを使用して実施できる。しかしながら、本発明は、この実施に限定されない。異なる状態をとることができる専用のハードワイヤード回路など、他の実施も使用できる。ステートマシンとは、一般に、異なる状態を連続的にとることができる回路であって、かつ各状態に続く状態を少なくとも部分的に定義する回路である。
【００２１】
状態レジスタとメモリとを有する実施においては、状態レジスタは、現在の状態に対応する位置のアドレスを格納する。各位置には、ステートマシンがその位置に対応する状態にあるときに各回路に流される信号値が格納される。また、この位置には、現在の状態から到達できる状態に対応する位置のアドレスを示す情報も含まれる。ＴＭＳ信号の制御下において、これらのアドレスの１つが選択され、ＴＣＫ信号の立ち上がりエッジにおいて状態レジスタにロードされる。
【００２２】
図２において、状態の第一列２０には、データの読み取りと書き込みに関連する状態が含まれる。状態の第二列２１には、命令の読み取り命令に関連する状態が含まれる。例えば、データを読み取るかまたは書き込むため、テストコントローラが「Ｔｅｓｔ−Ｌｏｇｉｃ−Ｒｅｓｅｔ」状態から「Ｒｕｎ−Ｔｅｓｔ−Ｉｄｌｅ」状態に遷移を行うように、最初に信号値０がＴＭＳ入力に流されるされる、次いで、論理値１がＴＭＳに流されて「Ｓｅｌｅｃｔ−ＤＲ−Ｓｃａｎ」状態に達し、次いで、論理値０がＴＭＳに流されて「Ｃａｐｔｕｒｅ−ＤＲ」状態に達する。この状態において、テストコントローラは、スキャンチェイン１２４がそのパラレル入力からのデータをシフトレジスタに取り込むように、制御信号をスキャンチェイン１２４に流す。この状態から、テストコントローラ１２２は、ＴＭＳの値に応じて「Ｓｈｉｆｔ−ＤＲ」状態または「Ｅｘｉｔ１−ＤＲ」状態への遷移を行う。「Ｓｈｉｆｔ−ＤＲ」状態においては、テストコントローラ１２２は、シフトレジスタを通じてデータをシフトするための信号を、スキャンチェイン１２４に供給する。テストコントローラ１２２は、「Ｓｈｉｆｔ−ＤＲ」状態のままである間は、ＴＣＫの各クロックサイクルについてこれを繰り返す。ＴＭＳの制御下において、テストコントローラ１２２は、「Ｓｈｉｆｔ−ＤＲ」状態から「Ｅｘｉｔ１−ＤＲ」状態に遷移する。この「Ｅｘｉｔ１−ＤＲ」状態からは、ＴＭＳの値に応じて「Ｐａｕｓｅ−ＤＲ」状態または「Ｕｐｄａｔｅ−ＤＲ」状態に遷移する。
【００２３】
テストコントローラ１２２が「Ｕｐｄａｔｅ−ＤＲ」状態をとると、スキャンチェイン１２４は、集積回路１２のピンに出力するためにデータをシフトレジスタからアップデートレジスタに伝送する。この「Ｕｐｄａｔｅ−ＤＲ」状態からは、テストコントローラ１２２は、「Ｒｕｎ−Ｔｅｓｔ／Ｉｄｌｅ」状態または「Ｓｅｌｅｃｔ−ＤＲ−ｓｃａｎ」状態に遷移する。テストコントローラは、何サイクルかの間「Ｐａｕｓｅ−ＤＲ」にとどまるか、または「Ｅｘｉｔ２−ＤＲ」状態に遷移し、そこから「Ｕｐｄａｔｅ−ＤＲ」状態に遷移し、または「Ｓｈｉｆｔ−ＤＲ」状態に戻ることができる。
【００２４】
従って、ＴＭＳ信号値の固有のシーケンスをテストインタフェースのＴＭＳ入力に流すことによって、テストコントローラ１２２の状態に起因して、スキャンチェイン１２４が、シフトレジスタにデータをロードする、シフトレジスタからデータを出力する、何サイクルかの間シフトレジスタを通じてデータをシフトする、一時停止する、データをシリアル出力に出力する、などを行うようにできる。同様に、テストコントローラ１２２を図２の状態図の右列２１の各状態に遷移させるＴＭＳ値を流すことによって、テストコントローラ１２２の状態に起因して、スキャンチェイン１２４が、シフトレジスタを通じて命令を転送したり流すようにできる。このような命令として、例えば、ＴＤＩ入力からのデータがスキャンチェイン全体によりＴＤＯ出力に送られるように、スキャンチェインからのデータを出力セレクタ１２６の入力からＴＤＯ出力に送るための命令があげられる。別の例として、ＴＤＩ入力からのデータをスキャンチェインをバイパスしてＴＤＯ出力に送るための命令や、テスト信号がスキャンチェイン１２４と集積回路１２の内部の機能回路１６または外部ピンとの間で交換されるように選択する命令があげられる。
【００２５】
本発明の実施例においては、ステートマシンの状態の流れも、不揮発性メモリ１４をプログラムするために使用される。例えば、フラッシュメモリのプログラミングには、テストコントローラ１２２のステートマシンの制御下で実行される一連のステップが関与する。
【００２６】
図３は、不揮発性メモリのプログラミングに関与する状態の状態図の例を示す。この状態図は、多数の異なるタイプの不揮発性メモリを対象に一般的に示されている。最初に、１つのタイプの不揮発性メモリの場合の状態図を説明する。このタイプの不揮発性メモリの場合には使用されないが他のタイプの不揮発性メモリの場合に使用される多数の状態遷移は、破線として示されている。この場合に置き換わる状態遷移には、「＊」が記されている。
【００２７】
この状態図には、開始状態３０が含まれる。この開始状態３０からは、第一主コマンド状態３１ａへの遷移がある。第一主コマンド状態３１ａにおいて、フラッシュコントローラは、第一コマンドをスキャンチェイン１２４によりフラッシュメモリ１４に出力する。この第一コマンドは、例えば、フラッシュコントローラ１６によって生成される所定のアドレスとデータと組み合わされた書き込みイネーブル信号を有する（一例においては、データとアドレスは互いの論理上のインバース（逆）である）。この場合、フラッシュコントローラ１６は、フラッシュコントローラ１６からのこのアドレスとデータを出力するようにマルチプレクサ１７を制御する。第一主コマンド状態３１ａからは、第一副コマンド状態３２ａへの遷移があり、ここから、第二主コマンド状態３１ｂへの遷移がある。第二主コマンド状態３１ｂにおいて、フラッシュコントローラは、第二コマンドをスキャンチェイン１２４によりフラッシュメモリ１４に出力する。この第二コマンドは、例えば、フラッシュコントローラ１６によって生成される所定のアドレスとデータと組み合わされた書き込みイネーブル信号を有する（典型的なフラッシュメモリの場合、第二コマンドの中のアドレスとデータは、それぞれ第一コマンドの中のアドレスとデータのインバース（逆）である）。第一副コマンド状態３２ａは、フラッシュメモリ１４への第一コマンドと第二コマンドの出力を分ける役割を果たす。第二主コマンド状態３１ｂからは、第二副コマンド状態３２ｂへの遷移があり、ここから、第三主コマンド状態３１ｃへの遷移があり、ここから、第三副コマンド状態３２ｃへの遷移がある。この第三副コマンド状態３２ｃからは、主プログラミング状態３３への遷移がある。主コマンド状態３１ａ−ｃは、類似する機能を有し、副コマンド状態３２ａ−ｃは、類似する機能を有する。
【００２８】
主プログラミング状態においては、フラッシュコントローラ１６によって、スキャンチェイン１２４内のシフトレジスタからのアドレスとデータビットが、フラッシュメモリ１４に流される。この目的のため、フラッシュコントローラ１６は、スキャンチェイン１２４からのアドレスとデータビットを渡すようにマルチプレクサ１７を制御する。データビットには、フラッシュメモリ１４にプログラムする情報が含まれ、アドレスビットは、フラッシュメモリ１４内におけるその情報の格納先のアドレスを指定する（代替実施例においては、アドレスビットはフラッシュコントローラ１６内のカウンタ（示されてない）から供給される。このカウンタは、アドレスが流されるたびにインクリメントされる）。主プログラミング状態３３から、副プログラミング状態３４への遷移がある。この状態３４は、主プログラミング状態においてメモリに流される信号とその後の信号とを分ける役割を果たす。副プログラミング状態３４からは、主ポーリング状態３５への遷移がある。
【００２９】
ポーリング状態３５においては、フラッシュコントローラ１６は、主プログラムステップ３３において受信された情報のプログラミングが完了したか否かを示すための情報を、フラッシュメモリ１４から逆に受信する。完了していない場合、主ポーリング状態３５のままとなる遷移が起こる。プログラミングが完了すると、副ポーリング状態３６への遷移が起こる。ここから、主クリア状態３６ａへの遷移が起こり、この状態においては、フラッシュコントローラ１６は、フラッシュメモリ１４のステータスをクリアするための信号を出力する。主クリア状態３６ａから、副クリア状態３６ａへの遷移があり、そこから主リセット状態３７への遷移がある。リセット状態３７においては、フラッシュコントローラ１６は、リセット信号をフラッシュメモリ１４に流す。主リセット状態３７からは、副静止状態３８への遷移があり、そこから終端状態３９への遷移がある。
【００３０】
次に、再び図１を参照し、フラッシュコントローラ１６は、図３に示されている状態と遷移を実装するためのフラッシュプログラミングステートマシンとして構成されている。命令がスキャンチェイン１２４から従来の方法で受信されると、スキャンチェインから制御レジスタ１８にコードがロードされる。このコードは、第一値を有するときにはフラッシュコントローラ１６をディセーブルし、第二値を有するときにはフラッシュコントローラ１６をイネーブルする。テストコントローラ１２２のステートマシンが、事前に定義された状態をとり、このときフラッシュコントローラ１６がイネーブルされていると、フラッシュコントローラは、開始状態３０をとり、遷移を開始する。フラッシュコントローラのステートマシンは、図３の状態図の遷移を、図２の状態図におけるテストコントローラ１２２の遷移に合わせて行う。フラッシュコントローラのステートマシンは、ＴＣＫの各立ち上がりエッジにおいて遷移を行う。従って、フラッシュコントローラのステートマシンは、結果的に状態が変化しない遷移をテストコントローラが行うときにも、異なる状態に遷移できる。
【００３１】
フラッシュプログラミングのステートマシンは、例えば、テストコントローラが「Ｕｐｄａｔｅ−ＤＲ」状態をとり、このときフラッシュプログラミングのステートマシンが命令によってイネーブルされていると開始される。この時点において、フラッシュメモリに書き込むためのデータと（オプションとしての）アドレスは、スキャンチェイン１２４のアップデートレジスタにロードされる。フラッシュコントローラ１６によって所定のコマンドデータがフラッシュメモリ１４に流される状態３１ａ−ｃ、３２ａ−ｃの間の多数の遷移の後、フラッシュコントローラ１６は、主プログラム状態３３に達し、この状態において、このデータとアドレスがフラッシュメモリ１４に流される。このときテストコントローラのステートマシンがとる状態は、テストインタフェースに流されるＴＭＳ値に依存する。通常、テストコントローラ１２２は、この時点までに「Ｓｈｉｆｔ−ＤＲ」状態になる。
【００３２】
フラッシュコントローラ１６は、この時間中の多数のサイクルの間、主ポーリング状態３５をとる。最終的に、フラッシュコントローラ１６が終端状態３９に達したとき、テストコントローラ１２２は、データ分岐２０内の次の「Ｕｐｄａｔｅ−ＤＲ」状態より前のいずれかの状態にまだある。テストコントローラ１２２が「Ｕｐｄａｔｅ−ＤＲ」状態に達するたびに、フラッシュコントローラは新たに開始される。
【００３３】
図３は、主ポーリング状態３６から終端状態３９への「エラー」遷移を示している。フラッシュコントローラ１６は、ポーリング状態が「タイムアウト」する（指定される数より多い連続するクロックサイクル、例えば少なくとも３クロックサイクルの間、ポーリング状態をとる）と、この遷移を行う。この場合、フラッシュメモリ１４においてエラーが発生したと想定される。従って、フラッシュコントローラ１６は終端状態以外の状態にいつまでも「とどまる」ことはなく、従って、テストコントローラ１２２が再び「Ｕｐｄａｔｅ−ＤＲ」状態に達したときに、矛盾なく定義されたプログラミングの開始が起こる。
【００３４】
当然ながら、図２の状態図の他の状態を使用して、開始状態３０を開始することができる。しかしながら、「Ｕｐｄａｔｅ−ＤＲ」状態を使用することは、新しいデータとアドレス情報の出力にこの状態が厳密に同期するという利点を有する。これにより、フラッシュコントローラ１６の設計が簡素化される。
【００３５】
図４は、フラッシュメモリ１４の出力がスキャンチェイン１２４に結合されている装置の実施例を示す。この実施例においては、フラッシュコントローラ１６の１つ以上の状態において、フラッシュメモリ１４から導かれるステータス情報をスキャンチェインに流すための信号が生成される。この情報は、テストコントローラ１２２の状態の制御下において、スキャンチェインのシフトレジスタにロードされ、ここから外にシフトされる。別の実施例においては、フラッシュコントローラ１６の１つ以上の状態において、フラッシュメモリ１４に書き込まれたデータが再び読み取られ、再び読み取られたデータが書き込まれたデータと比較され、その比較の結果がスキャンチェイン１２４に流される。従って、スキャンチェインの出力ＴＤＯを使用して、フラッシュメモリ１４のプログラミング動作の成功を確認できる。これに代えて、メモリ１４から再び読み取られたデータからエラーチェック情報を計算するためのハードウェア、例えばリニアフィードバックシフトレジスタ（示されてない）を、回路のメモリ１４とスキャンチェイン１２４の間に含めることができる。データを再び読み取るための制御信号が送信された後の状態において、フラッシュコントローラは、エラーチェックレジスタの中のエラーチェック情報（シンドローム、ＣＲＣなどでよい）を更新するための制御信号をこのハードウェアに送る。エラーチェックレジスタの内容は、集積回路から読み取ることができるように、従来のバウンダリスキャン手法を使用してスキャンチェインにロードされる。
【００３６】
図３は、特定のタイプの不揮発性メモリをプログラムするための遷移を示す。また、他のタイプの不揮発性メモリをプログラムするための遷移も示されている。当然ながら、図に示されている以外のさらなる遷移と状態も、可能である。１つの実施例においては、制御レジスタは、アクティブにする遷移を選択する異なるコードを格納できる。制御レジスタは、スキャンチェイン１２４から従来の方法で設定できる。従って、フラッシュコントローラ１６の状態の順序付けは、装置１０の集積回路１２に接続される特定のタイプのフラッシュメモリ１４に適合化される。
【００３７】
図に示されているように、テストコントローラ１２２のステートマシンとフラッシュコントローラ１６のステートマシンは、それぞれ独立して遷移を選択する。すなわち、一方のステートマシンは、他方が状態の変化しない遷移を行うときにも異なる状態への遷移を行うことができ、この逆も同様である。これに代えて、２つのステートマシンは、完全に同期して動作し、すなわち、それぞれのステートマシンは、他方が遷移を行うときにのみ遷移を行う。この場合には、修正された状態図、例えば、図２の状態図（状態はスキャンチェインとフラッシュプログラミングの両方に影響する）が適用される。この場合、フラッシュプログラミング中にスキャンチェインと生じうる遅延とを組み合わせて制御できるように、この状態図に追加される状態が必要となる。例えば、連続する「Ｒｕｎ ｔｅｓｔ ｉｄｌｅ」状態を含めることができ、このことは、テストに対する影響は同じであるが、フラッシュプログラミングに対する影響が異なる。これらの状態になるのは、メモリをプログラムするために集積回路１２がイネーブルされるときのみである。集積回路１２がテスト標準と標準状態図を満たす必要がある場合には、このような追加の状態は、これにより標準との互換性が損なわれることがあるため、望ましくない。
【００３８】
上記の説明により、フラッシュ制御ユニット１６は、テストコントローラ１２２用のコプロセッサとして機能し、テストコントローラ１２２における状態の遷移と平行して一連の状態をたどることが理解されるであろう。フラッシュコントローラ１６は、これらの状態をたどることによって、コプロセシング動作、具体的には、フラッシュメモリ１４に情報をプログラムする動作を実行し、この動作は、標準化されたテストコントローラ１２２では実行できない。フラッシュ制御ユニット１６は、テストコントローラが特定の状態をとるときにテストコントローラ１２２によって開始され、従ってその動作はテストコントローラ１２２に同期される。従って、テストコントローラの制御下においてスキャンチェイン１２４からのデータが供給されるときに、フラッシュ制御ユニット１６はこれを使用できる。このようにして、フラッシュコントローラには、自身のデータロード命令が必要ない。
【００３９】
この原理は、不揮発性メモリ１４のプログラミング以外の動作にも、スキャンチェイン１２４からのデータを使用する動作、またはスキャンチェイン１２４によって転送するために結果を生成する動作を実行するために多数の連続するステップを実行する必要があるときに、より一般的に適用できることが理解されるであろう。
【００４０】
テストステートマシンに追加のステートマシンを含めることによって、コプロセッサステートマシンの機能が実現される。テストステートマシンとこのコプロセッサステートマシンは、調和して動作し、同じテストクロック信号の制御下において状態遷移を行う。コプロセッサステートマシン１６は、開始されるたびに一連の状態を連続的にとる。コプロセッサステートマシンは、事前に定義された状態をテストステートマシンがとり、そのときコプロセシングステートマシンが例えばスキャンチェインからの命令によってイネーブルされているときに、一連の状態の開始状態３０において開始される。
【００４１】
コプロセッサの連続する状態の中で、コプロセシングステートマシンは、スキャンチェインから出力された情報を使用する、および／またはスキャンチェインに読み込まれる結果を生成する、動作の実行を制御する信号を、連続的に出力する。この情報の出力および／または結果の読み取りと、情報および／または結果の転送は、連続するテスト状態においてテストステートマシンによって出力される信号の制御下にある。テストステートマシンがこれらのテスト状態をとるＴＣＫのクロックサイクルは、情報または結果を使用するまたは生成するコプロセシング状態をコプロセッサステートマシンがとるクロックサイクルと合う。なぜなら、コプロセッサステートマシンは、テストステートマシンが所定の状態をとるときに開始されるためである。
【図面の簡単な説明】
【図１】装置を示す。
【図２】テストインタフェースの状態図を示す。
【図３】プログラミングインタフェースの状態図を示す。
【図４】さらなる装置を示す。
【符号の説明】
１０  装置
１１、１２、１４  集積回路
１６  フラッシュコントローラ
１７  マルチプレクサ
１８  プログラミング制御レジスタ
２０、２１  状態の列
３０  開始状態
３１ａ−ｃ  主コマンド状態
３２ａ−ｃ  副コマンド状態
３３  主プログラミング状態
３４  副プログラミング状態
３５  主ポーリング状態
３６ａ  主クリア状態
３６ａ  副クリア状態
３７  主リセット状態
３８  副静止状態
３９  終端状態
１２２  テストコントローラ
１２４  スキャンチェイン
１２６  出力セレクタ
１２８  機能回路
【図１】
2004521363.tif 000003
【図２】
2004521363.tif 000004
【図３】
2004521363.tif 000005
【図４】
2004521363.tif 000006
【国際公開パンフレット】
2004521363.tif 000007
2004521363.tif 000008
2004521363.tif 000009
2004521363.tif 000010
2004521363.tif 000011
2004521363.tif 000012
2004521363.tif 000013
2004521363.tif 000014
2004521363.tif 000015
2004521363.tif 000016
2004521363.tif 000017
2004521363.tif 000018
2004521363.tif 000019
2004521363.tif 000020
2004521363.tif 000021
2004521363.tif 000022
2004521363.tif 000023
2004521363.tif 000024
2004521363.tif 000025
【国際公開パンフレット（コレクトバージョン）】
2004521363.tif 000026
2004521363.tif 000027
【国際調査報告】
2004521363.tif 000028
2004521363.tif 000029