(57)【要約】【課題】ｅＦｕｓｅデータ配列検証装置および方法を提供する。【解決手段】配列ラッチが、書き込みスキャン・チェーンの一連のラッチ・ユニット内に提供されるとともに、論理ユニットが、配列ラッチに結合される。書き込みスキャン・チェーンの一連のラッチ・ユニットにスキャンインされるデータ列は、配列データ値を含むことが好ましい。これらの配列データ値は、データ列の中の所定の位置に配設されるが、このデータ列は、データ列が一連のラッチ・ユニットに正確にスキャンインされるとき、データ値が配列ラッチ内に保存されるようにする。論理ユニットは、配列ラッチからデータ信号を受信するとともに、データ値の正確なパターンが配列ラッチ内に保存されているかどうかを判定する。データ値の正確なパターンが配列ラッチ内に存在しているとき、データは正確に配列されており、プログラム・イネーブル信号が、ｅＦｕｓｅのバンクに送出される。【選択図】図２
2007147626.tif 000002
【特許請求の範囲】
【請求項１】
集積回路装置上の、複数の記憶デバイスにデータを書き込む装置であって、
複数の記憶デバイスと、
スキャン・チェーンとして配設され、前記複数の記憶デバイスに結合された一連のラッチ・ユニットと、
前記一連のラッチ・ユニット内に配設された１つ以上の配列ラッチと、
前記１つ以上の配列ラッチに結合された論理ユニットとを含み、
データ列が、前記一連のラッチ・ユニット、および前記一連のラッチ・ユニット内の前記１つ以上の配列ラッチに、スキャンインされ、
前記論理ユニットが、前記１つ以上の配列ラッチ内に保存されたデータ値に基づいて、前記一連のラッチ・ユニットに、前記データ列が正確にスキャンインされているかどうかを判定し、
前記論理ユニットが、前記一連のラッチ・ユニットに、前記データ列が正確にスキャンインされていると判定するとき、前記一連のラッチ・ユニットにスキャンインされた前記データを前記複数の記憶デバイスに書き込む、装置。
【請求項２】
前記複数の記憶デバイスが、１つ以上の電気的プログラム可能ヒューズ（ｅＦｕｓｅ）を有するｅＦｕｓｅユニットである、請求項１に記載の装置。
【請求項３】
前記複数の記憶デバイス内の各記憶デバイスが、入力として、前記論理ユニットからの適格プログラム・イネーブル信号と、前記記憶デバイスに結合された、前記一連のラッチ・ユニット内のラッチからのデータ入力とを受信する、請求項１に記載の装置。
【請求項４】
前記論理ユニットから前記記憶デバイスに対してアサートされる前記適格プログラム・イネーブル信号に呼応して、前記記憶デバイスが、前記記憶デバイスに結合された、前記一連のラッチ・ユニット内の前記ラッチからの前記データ入力を介して受信された前記データでプログラムされる、請求項３に記載の装置。
【請求項５】
前記論理ユニットが、前記１つ以上の配列ラッチ内に保存されたデータ値に基づいて、前記一連のラッチ・ユニットに、前記データ列が正確にスキャンインされていると判定するとき、前記適格プログラム・イネーブル信号を、前記論理ユニットから前記記憶デバイスに対してアサートする、請求項３に記載の装置。
【請求項６】
前記論理ユニットが前記１つ以上の配列ラッチからのデータ値の所定のパターンを認識することに呼応して、前記論理ユニットが、前記適格プログラム・イネーブル信号をアサートする、請求項４に記載の装置。
【請求項７】
前記論理ユニットがＡＮＤゲートであり、前記ＡＮＤゲートが、入力として、前記１つ以上の配列ラッチの各々からの前記データ値と、試験装置からのイネーブル信号とを受信して、前記ＡＮＤゲートへの前記入力に基づいて、前記複数の記憶デバイスに適格イネーブル信号を出力する、請求項１に記載の装置。
【請求項８】
前記ＡＮＤゲートが、さらに、前記試験装置に対する出力として、前記適格イネーブル信号を提供して、前記試験装置に、前記一連のラッチにスキャンインされた前記データ列が、正確にスキャンインされたかどうかについて知らせる、請求項７に記載の装置。
【請求項９】
各ｅＦｕｓｅユニットが、６４個のｅＦｕｓｅを含み、各ｅＦｕｓｅユニットに書き込まれた前記データ列の一部は、前記データ列の６４ビット部である、請求項２に記載の装置。
【請求項１０】
前記装置が、オンチップシステム上のテスト・ユニットの一部である、請求項１に記載の装置。
【請求項１１】
前記オンチップシステムが、マスタ・プロセッサと、少なくとも１つのコプロセッサとを有する異種プロセッサ・オンチップシステムであり、前記マスタ・プロセッサと、少なくとも１つのコプロセッサとが、異なる命令セットを有する、請求項１０に記載の装置。
【請求項１２】
前記データ列が、前記オンチップシステム内のユニットの機能を試験するデータ列である、請求項１０に記載の装置。
【請求項１３】
データ処理装置内において複数の記憶デバイスにデータを書き込む方法であって、
前記複数の記憶デバイスと、一連のラッチ・ユニット内の１つ以上の配列ラッチとに結合された前記一連のラッチ・ユニットに、データ列をスキャンインするステップと、
前記１つ以上の配列ラッチ内に保存されたデータ値に基づいて、前記一連のラッチ・ユニットに、前記データ列が正確にスキャンインされているかどうかを判定するステップと、
前記一連のラッチ・ユニットに、前記データ列が正確にスキャンインされていると判定されるとき、前記一連のラッチ・ユニットにスキャンインされた前記データを、前記複数の記憶デバイスに書き込むステップとを含む、方法。
【請求項１４】
前記複数の記憶デバイスが、１つ以上の電気的プログラム可能ヒューズ（ｅＦｕｓｅ）を有するｅＦｕｓｅユニットである、請求項１３に記載の方法。
【請求項１５】
前記一連のラッチ・ユニットにスキャンインされた前記データを、前記複数の記憶デバイスに書き込むステップが、前記一連のラッチ・ユニットに、前記データ列が正確にスキャンインされているとの判定に呼応して、記憶デバイスに対して、適格プログラム・イネーブル信号と、前記記憶デバイスに結合された前記一連のラッチ・ユニット内のラッチからのデータ入力信号とをアサートするステップを含む、請求項１３に記載の方法。
【請求項１６】
論理ユニットが前記１つ以上の配列ラッチからのデータ値の所定のパターンを認識することに呼応して、前記適格プログラム・イネーブル信号がアサートされる、請求項１５に記載の方法。
【請求項１７】
前記論理ユニットがＡＮＤゲートであり、前記ＡＮＤゲートが、入力として、前記１つ以上の配列ラッチの各々からの前記データ値と、試験装置からのイネーブル信号とを受信して、前記ＡＮＤゲートへの前記入力に基づいて、前記複数の記憶デバイスに適格イネーブル信号を出力する、請求項１６に記載の方法。
【請求項１８】
前記一連のラッチにスキャンインされた前記データ列が、正確にスキャンインされたかどうかを示す、試験装置に対する出力を提供するステップをさらに含む、請求項１３に記載の方法。
【請求項１９】
前記方法が、オンチップシステム上のテスト・ユニットで実行される、請求項１３に記載の方法。
【請求項２０】
前記オンチップシステムが、マスタ・プロセッサと、少なくとも１つのコプロセッサとを有する異種プロセッサ・オンチップシステムであり、前記マスタ・プロセッサと、少なくとも１つのコプロセッサとが、異なる命令セットを有する、請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、一般に、改良されたデータ処理システムおよび方法に関連する。さらに具体的に述べると、本願は、電気的プログラム可能ヒューズ（ｅＦｕｓｅ）のバンクをプログラムするデータの配列を検証する装置および方法に関する。
【背景技術】
【０００２】
電気的プログラム可能ヒューズ（ｅＦｕｓｅ）は、２つの異なった状態、すなわち、飛んだ、または、飛んでいない、のうちの１つを有する簡単な回路素子である。当技術分野で周知のごとく、ｅＦｕｓｅへのデータの書き込みは、「１」を示すためにｅＦｕｓｅが飛んだ状態にすること、および「０」値を示すためにｅＦｕｓｅをデフォルト状態、すなわち、飛んでいない状態のままにすることを含む。飛んでいない状態では、ｅＦｕｓｅは電気的接触を可能にし、他方、飛んだ状態では電気的接触が切断される。しかしながら、例えば、実際に、ｅＦｕｓｅが飛ぶことが電気的接触を可能にして、それにより「０」を示すとともに、他方、デフォルト状態は「１」を示すような逆ｅＦｕｓｅの場合では、反対の方式を取ることができる。
【０００３】
インターナショナル・ビジネス・マシーンズ・インコーポレーテッドから入手できる集積回路チップの多くは、既に、集積回路チップに自己修復能力を提供するために使用されるｅＦｕｓｅの１つ以上のバンクを含んでいる。ｅＦｕｓｅを用いることで、集積回路内に欠陥が検出されるとき、適切なｅＦｕｓｅが作動される、すなわち、飛んだ状態にされる。作動されたヒューズは、チップが個々の回路スピードを制御することを助けて、電力消費量を管理するとともに、不測のかつ潜在的に費用がかかる欠陥を修復する。個々の回路が速く稼働し過ぎている、または遅く稼働し過ぎているために、チップが誤動作していることを技術が検出するとき、技術は、適切な局所電圧を制御することにより、これらの回路を「減速し、」または加速することができる。ｅＦｕｓｅは、集積回路チップに付加的な費用が必要となるとき、集積回路チップ内に提供されることはほとんどない。
【０００４】
図１は、公知の構造のｅＦｕｓｅの図である。図１に示されているように、ｅＦｕｓｅ素子１００は、ポリシリコン・ヒューズ１１０、ヒューズ・ラッチ１２０、プログラム・ラッチ１３０、プログラム電界効果トランジスタ（ＦＥＴ）１４０、および先読みプログラミング・マルチプレクサ１５０を含む数個の構成要素からなる。第１の、主要な構成要素は、ポリシリコン・ヒューズ１１０である。ヒューズ１１０は、２つの可能な論理状態を有する。示された例では、ヒューズ１１０は、元の状態を保持することができ、その値は論理的な「０」と評定される。他の状態は、「プログラムされた」状態であり、論理的な「１」と評定する。振幅が約１０ｍＡで、持続時間２００マイクロ秒のＤＣ電流パルスが、ヒューズ１１０をプログラムするために必要である。この高電流は、ポリシリコン接続路の抵抗を動的に増加させることにより、ヒューズ１１０をプログラムする。
【０００５】
ヒューズ・ラッチ１２０は、各ヒューズ１１０と関連する。ヒューズ・ラッチ１２０は、３つの機能を果たす。すなわち、（１）ヒューズ・プログラミング時に、すべてのヒューズ・ラッチ１２０は、論理的な「０」に初期化され、その後、単一の論理的な「１」が変更されて、各ヒューズ１１０をいつプログラムすればよいかを決定するためのシーケンス・イネーブル機構を提供する。（２）ヒューズ値を読み取るときに、ヒューズ・ラッチ１２０は、ヒューズ値を検知して、かつ保存するために使用される。（３）ヒューズ・ラッチは、すべてのヒューズ間のデイジー・チェーンを作るために使用される付加的なデータ・ポートを有しており、このデイジー・チェーンは、すべてのヒューズに対する順次アクセスを可能にする。単一のヒューズをプログラムするために高ＤＣ電流が必要とされるという要求条件のために、論理的な「１」は、一度に１つのヒューズをプログラムするために、デイジー・チェーンで接続された状態のラッチを用いて、零のフィールドを介して変更される。
【０００６】
ｅＦｕｓｅ１００の残りの構成要素は、ヒューズ１１０をプログラムする場合に限り機能する。ヒューズの所望の状態は、プログラム・ラッチ１３０にシフトインされる。プログラム・ラッチ１３０が、論理的な「１」をロードされるとき、プログラム・ラッチ１３０は、プログラムＦＥＴ１４０を選択して、また、先読みプログラミング・マルチプレクサ１５０を無効にする。先読みプログラミング・マルチプレクサ１５０は、ヒューズ・ラッチのシフトされた「１」に、プログラミングに対して選択されていないヒューズを飛び越えさせて、それにより、ヒューズ・プログラミング時間を節約する。
【０００７】
プログラムを行うためには、ＥＦｕｓｅＰｒｏｇ信号が有効にされて、ＦＳｏｕｒｃｅ入力を用いて、高電圧がヒューズ１１０全体に加えられ、派生電流は、プログラムＦＥＴ１４０を介して流れ出る。この高電流パスが有効にされている場合に限り、ヒューズをプログラムできる。プログラム・ラッチ１３０が設定されて、かつシフトされた「１」がヒューズ・ラッチ１２０に到達するとき、プログラムＦＥＴ１４０は有効にされる。ｅＦｕｓｅ、およびオンチップ修復を実行するためのｅＦｕｓｅの使用に関する詳しい情報については、参照により本明細書の一部となっている、ＩＥＥＥ２００２のＩＴＣ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｔｅｓｔ  Ｃｏｎｆｅｒｅｎｃｅ、１７８〜１８６頁に掲載されているＣｏｗａｎ（コーワン）他著「Ｏｎ−Ｃｈｉｐ  Ｒｅｐａｉｒ  ａｎｄ  ａｎ  ＡＴＥ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｆｕｓｉｎｇ  Ｍｅｔｈｏｄｏｌｏｇｙ（オンチップ修復およびＡＴＥ自立型ヒュージング手法）」を引用する。
【特許文献１】米国特許出願第１１／１４６，９８８号
【特許文献２】米国特許出願第１１／２４５，３０８号
【特許文献３】米国特許出願第１１／２４６，５８６号
【非特許文献１】Ｃｏｗａｎら、「Ｏｎ−Ｃｈｉｐ  Ｒｅｐａｉｒ  ａｎｄ  ａｎ  ＡＴＥ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｆｕｓｉｎｇ  Ｍｅｔｈｏｄｏｌｏｇｙ」、ＩＴＣ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｔｅｓｔ  Ｃｏｎｆｅｒｅｎｃｅ、ＩＥＥＥ２００２、１７８〜１８６頁
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上述のｅＦｕｓｅの説明から理解されうるように、一般に、ｅＦｕｓｅはプログラムされると、プログラムを変更することができない。したがって、ｅＦｕｓｅのバンクをプログラムする前に、ｅＦｕｓｅのバンクをプログラムするために使用されるデータが、正確なデータであることを確保することは、非常に重要である。電流回路を用いることで、データがｅＦｕｓｅのバンクのプログラム・ラッチにシフトインされているとき、１つ以上のデータ値が、回路素子内の時間的差異のために不正確に移されうる可能性がある。その結果、プログラム・ラッチ内のデータに配列の狂いを生じうる。
【０００９】
データに配列の狂いがあるとき、不正確なデータが、ｅＦｕｓｅのバンクにプログラムされるであろう。ｅＦｕｓｅは、プログラムを変更することができないため、このような誤りは、ｅＦｕｓｅのバンクが配置されている集積回路装置が、適正に機能しない原因となりうる。さらに、集積回路装置を修理しようとすると、かなりの費用がかかるかもしれず、または、このような修理を行うことさえできないかもしれず、集積回路装置を破棄しなければならない。
【課題を解決するための手段】
【００１０】
例示的な実施形態は、電気的プログラム可能ヒューズ（ｅＦｕｓｅ）のバンクをプログラムするデータの配列を確保する機構を提供する。例示的な実施形態は、書き込みスキャン・チェーンの一連のラッチ・ユニット内に提供された１つ以上の配列ラッチ、およびその１つ以上の配列ラッチに結合された論理ユニットを含む。一連のラッチ・ユニットへのデータのスキャンインが、整列された方法で実行されることを確保するために、１つ以上の配列ラッチが、一連のラッチ・ユニットのラッチ・ユニット間の適切な位置に配設されることが好ましい。
【００１１】
書き込みスキャン・チェーンの一連のラッチ・ユニットにスキャンインされるデータ列は、配列データ値を含むことが好ましい。これらの配列データ値は、データ列の中の所定の位置に配設されるが、このデータ列は、データ列が一連のラッチ・ユニットに正確にスキャンインされるとき、データ値が１つ以上の配列ラッチ内に保存されるようにする。データ列が正確にスキャンインされず、データの配列の狂いが生ずるとき、１つ以上の配列ラッチ内に保存されたデータ値は、データ列内に配設された元々の配列データ値のパターンと一致しないであろう。
【００１２】
論理ユニットは、１つ以上の配列ラッチからデータ信号を受信して、データ値の正確なパターンが配列ラッチ内に保存されているかどうかを判定する。データ値の正確なパターンが配列ラッチ内に存在していないとき、スキャンインされたデータに配列の狂いがあると判定される。データ値の正確なパターンが配列ラッチ内に存在しているとき、スキャンインされたデータが正確に配列されていると判定される。
【００１３】
判定の結果、およびプログラム・イネーブル信号がテスト・ユニットによりアサートされているかどうかに応じて、論理ユニットは、ｅＦｕｓｅのバンクのｅＦｕｓｅ素子に適格（ｑｕａｌｉｆｉｅｄ）プログラム・イネーブル信号をアサートすることができたり、またはアサートすることができなかったりする。適格プログラム・イネーブル信号がｅＦｕｓｅ素子にアサートされる場合に限り、ｅＦｕｓｅ素子は、ラッチ・ユニット内に保存されたデータ値を用いてプログラムされる。このようにして、正確な配列データ値が配列ラッチ内に保存されており、かつプログラム・イネーブル信号がテスト・ユニットによりアサートされる場合に限り、ｅＦｕｓｅのバンクのｅＦｕｓｅ素子は、プログラムされるであろう。このような方法で、配列の狂いを有するデータでｅＦｕｓｅのバンクをプログラムすることが回避される。
【００１４】
例示的な一実施形態では、集積回路装置上で、複数の記憶デバイスにデータを書き込む装置を提供する。装置は、複数の記憶デバイス、スキャン・チェーンとして配設され、かつ複数の記憶デバイスに結合された一連のラッチ・ユニット、一連のラッチ・ユニット内に配設された１つ以上の配列ラッチ、および１つ以上の配列ラッチに結合された論理ユニットを含むことができる。複数の記憶デバイスは、１つ以上のｅＦｕｓｅを有する電気的プログラム可能ヒューズ（ｅＦｕｓｅ）ユニットであってもよい。
【００１５】
データ列は、一連のラッチ・ユニット、および一連のラッチ・ユニット内の１つ以上の配列ラッチに、スキャンインされうる。論理ユニットは、１つ以上の配列ラッチ内に保存されたデータ値に基づいて、一連のラッチ・ユニットに、データ列が正確にスキャンインされているかどうかを判定できる。論理ユニットが、一連のラッチ・ユニットに、データ列が正確にスキャンインされていると判定するとき、一連のラッチ・ユニットにスキャンインされたデータを、複数の記憶デバイスに書き込むことができる。
【００１６】
複数の記憶デバイス内の各記憶デバイスは、入力として、論理ユニットからの適格プログラム・イネーブル信号、および記憶デバイスに結合された、一連のラッチ・ユニット内のラッチからのデータ入力を受信することができる。記憶デバイスは、論理ユニットから記憶デバイスに対してアサートされる適格プログラム・イネーブル信号に呼応して、記憶デバイスに結合された、一連のラッチ・ユニット内のラッチからのデータ入力を介して受信されたデータで、プログラムされうる。論理ユニットが、１つ以上の配列ラッチ内に保存されたデータ値に基づいて、一連のラッチ・ユニットに、データ列が正確にスキャンインされていると判定するとき、適格プログラム・イネーブル信号を、論理ユニットから記憶デバイスに対してアサートできる。論理ユニットが１つ以上の配列ラッチからのデータ値の所定のパターンを認識することに呼応して、論理ユニットは、適格プログラム・イネーブル信号をアサートすることができる。
【００１７】
論理ユニットは、例えば、ＡＮＤゲートまたは他の論理ゲートでありうる。ＡＮＤゲートは、入力として、１つ以上の配列ラッチの各々からのデータ値、および試験装置からのイネーブル信号を受信することができる。ＡＮＤゲートは、ＡＮＤゲートへの入力に基づいて、複数の記憶デバイスに適格イネーブル信号を出力できる。さらに、ＡＮＤゲートは、試験装置に対する出力として、適格イネーブル信号を提供して、試験装置に、一連のラッチにスキャンインされたデータ列が、正確にスキャンインされたかどうかについて知らせることができる。
【００１８】
記憶デバイスがｅＦｕｓｅユニットである実施形態では、各ｅＦｕｓｅユニットは、例えば、６４個のｅＦｕｓｅを含むことができる。このような実施形態では、各ｅＦｕｓｅユニットに書き込まれたデータ列の一部は、データ列の６４ビット部でありうる。
【００１９】
装置は、オンチップシステム上のテスト・ユニットの一部でありうる。オンチップシステムは、マスタ・プロセッサおよび少なくとも１つのコプロセッサを有する異種プロセッサ・オンチップシステムであってもよく、マスタ・プロセッサおよび少なくとも１つのコプロセッサが、異なる命令セットを有する。データ列は、オンチップシステム内のユニットの機能を試験するデータ列でありうる。
【００２０】
他の例示的な実施形態では、データ処理装置において複数の記憶デバイスにデータを書き込む方法を提供する。方法は、複数の記憶デバイスと、一連のラッチ・ユニット内の１つ以上の配列ラッチとに結合された一連のラッチ・ユニットに、データ列をスキャンインすることを含むことができる。方法は、１つ以上の配列ラッチ内に保存されたデータ値に基づいて、一連のラッチ・ユニットに、データ列が正確にスキャンインされているかどうかを判定することと、一連のラッチ・ユニットに、データ列が正確にスキャンインされていると判定されるとき、一連のラッチ・ユニットにスキャンインされたデータを、複数の記憶デバイスに書き込むこととをさらに含むことができる。複数の記憶デバイスは、１つ以上のｅＦｕｓｅを有する電気的プログラム可能ヒューズ（ｅＦｕｓｅ）ユニットであってもよい。
【００２１】
一連のラッチ・ユニットにスキャンインされたデータを、複数の記憶デバイスに書き込むことは、一連のラッチ・ユニットに、データ列が正確にスキャンインされているとの判定に呼応して、記憶デバイスに対して、適格プログラム・イネーブル信号と、記憶デバイスに結合された一連のラッチ・ユニット内のラッチからのデータ入力信号とをアサートすることを含むことができる。適格プログラム・イネーブル信号は、論理ユニットが１つ以上の配列ラッチからのデータ値の所定のパターンを認識することに呼応して、アサートされうる。
【００２２】
論理ユニットは、例えば、ＡＮＤゲートまたは他の論理ゲートでありうる。ＡＮＤゲートは、入力として、１つ以上の配列ラッチの各々からのデータ値、および試験装置からのイネーブル信号を受信することができる。ＡＮＤゲートは、ＡＮＤゲートへの入力に基づいて、複数の記憶デバイスに適格イネーブル信号を出力できる。
【００２３】
方法は、一連のラッチにスキャンインされたデータ列が、正確にスキャンインされたかどうかを示す、試験装置に対する出力を提供することをさらに含むことができる。
【００２４】
方法は、オンチップシステム上のテスト・ユニット内で実行されうる。オンチップシステムは、マスタ・プロセッサおよび少なくとも１つのコプロセッサを有する異種プロセッサ・オンチップシステムであってもよく、マスタ・プロセッサおよび少なくとも１つのコプロセッサが、異なる命令セットを有する。
【００２５】
これらのおよび他の本発明の特徴、ならびに利点は、好ましい実施形態の下記の詳細な説明において記述され、または、好ましい実施形態の下記の詳細な説明に照らして、当業者に明らかになるであろう。
【発明を実施するための最良の形態】
【００２６】
特有と考えられる本発明の新規な特徴について、特許請求の範囲で説明される。しかしながら、本発明自体、ならびに本発明の好ましい使用形態、さらなる目的、および利点は、添付図面と照らしあわせて、例示的な実施形態についての下記の詳細な説明を参照することにより、最も良く理解されるであろう。
【００２７】
上述したように、例示的な実施形態は、電気的ヒューズ（ｅＦｕｓｅ）のバンクにプログラムされるデータを配列する装置および方法に関する。例示的な実施形態は、データを保存するためにｅＦｕｓｅアレイを使用する任意の装置と共に使用されうる。このような装置は、例えば、集積回路装置、マイクロプロセッサ、オンチップシステム、またはその種の他のものなどの形態を取りうる。本明細書に後で出てくる図２は、例示的な実施形態の典型的な態様を実行できるマイクロプロセッサ・オンチップシステムの一例を提供する。この説明のために、このようなオンチップシステム内にｅＦｕｓｅのバンクを提供するものと想定されているが、示されたオンチップシステムは、あくまで例に過ぎず、本発明は、このような実施形態に限定されないことを理解するべきである。
【００２８】
図２は、本発明の態様を実行できるデータ処理システムの典型的なブロック図である。図２に示された典型的なデータ処理システムは、セル・ブロードバンド・エンジン（ＣＢＥ）データ処理システムの例である。ＣＢＥが、本発明の好ましい実施形態の説明において使用されているが、下記の説明を読めば当業者に容易に明らかとなるであろうように、本発明は、このような実施形態に限定されない。
【００２９】
図２に示したように、ＣＢＥ２００は、プロセッサ（ＰＰＵ）２１６と、そのＬ１キャッシュ２１２およびＬ２キャッシュ２１４とを有するパワー・プロセッサ・エレメント（ＰＰＥ）２１０と、複数のシナジスティック・プロセッサ・エレメント（ＳＰＥ）２２０〜２３４とを含み、これらの各ＳＰＥは、それぞれのシナジスティック・プロセッサ・ユニット（ＳＰＵ）２４０〜２５４と、メモリ・フロー制御２５５〜２６２と、ローカル・メモリまたは記憶デバイス（ＬＳ）２６３〜２７０と、バス・インタフェース・ユニット（ＢＩＵユニット）２８０〜２９４とを有し、このＢＩＵユニットは、例えば、直接メモリ・アクセス（ＤＭＡ）と、メモリ管理装置（ＭＭＵ）と、バス・インタフェース・ユニットとの組み合わせでありうる。また、高帯域幅の内部エレメント相互接続バス（ＥＩＢ）２９６、バス・インタフェース・コントローラ（ＢＩＣ）２９７、およびメモリ・インタフェース・コントローラ（ＭＩＣ）２９８が提供される。
【００３０】
ＣＢＥ２００は、図２に示された各エレメントが、単一のマイクロプロセッサ・チップ上に提供されうるようなオンチップシステムでありうる。さらに、ＣＢＥ２００は、各ＳＰＵが、システム内の他の各ＳＰＵとは異なる命令を受け取ることができる、異種の処理環境である。その上、ＳＰＵに対する命令セットは、ＰＰＵの命令セットと異なってもよく、例えば、ＰＰＵは、縮小命令セット・コンピュータ（ＲＩＳＣ：Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ）に基づく命令を実行処理でき、他方、ＳＰＵは、ベクトル命令を実行処理できる。
【００３１】
ＳＰＥ２２０〜２３４は、ＥＩＢ２９６を介して、相互に結合されるとともに、Ｌ２キャッシュ２１４に結合される。さらに、ＳＰＥ２２０〜２３４は、ＥＩＢ２９６を介して、ＭＩＣ２９８およびＢＩＣ２９７に結合される。ＭＩＣ２９８は、共有メモリ２９９との通信インタフェースを提供する。ＢＩＣ２９７は、ＣＢＥ２００と、他の外部バスおよび外部装置との間の通信インタフェースを提供する。
【００３２】
ＰＰＥ２１０は、デュアルスレッドのＰＰＥ２１０である。このデュアルスレッドのＰＰＥ２１０および８個のＳＰＥ２２０〜２３４の組み合わせは、ＣＢＥ２００に、１０個の同時スレッドおよび１２８個を超える未処理のメモリ要求の処理を可能にする。ＰＰＥ２１０は、コンピュータ作業負荷の大部分を処理する他の８個のＳＰＥ２２０〜２３４のコントローラとして機能する。例えば、ＰＰＥ２１０は、従来のオペレーティング・システムを実行するために使用されうるとともに、ＳＰＥ２２０〜２３４は、ベクトル浮動小数点コードの実行を行う。
【００３３】
ＳＰＥ２２０〜２３４は、シナジスティック処理装置（ＳＰＵ）２４０〜２５４と、メモリ・フロー制御装置２５５〜２６２と、ローカル・メモリまたは記憶デバイス２６３〜２７０と、インタフェース・ユニット２８０〜２９４とを含む。典型的な一実施形態では、ローカル・メモリまたは記憶デバイス２６３〜２７０は、ＰＰＥ２１０からビジブルであり、かつソフトウェアにより直接にアドレス指定できる、２５６ＫＢの命令およびデータメモリを含む。
【００３４】
ＰＰＥ２１０は、ＳＰＥ２２０〜２３４に小さいプログラムまたはスレッドをロードすることができ、複雑な演算の各ステップを処理するために、ＳＰＥを一緒にチェーニングすることができる。例えば、ＣＢＥ２００を組み込んだセット・トップ・ボックスは、ＤＶＤ、ビデオ、およびオーディオ・デコーディングを読み取るプログラムをロードして、表示することができ、データは、最終的に出力ディスプレイに達するまで、ＳＰＥからＳＰＥへと送られるであろう。４ＧＨｚでは、各ＳＰＥ２２０〜２３４は、同様の動作性能レベルを有するＰＰＥ２１０を用いることにより、理論上３２ギガフロップスの動作性能を与える。
【００３５】
メモリ・フロー制御装置（ＭＦＣ）２５５〜２６２は、システムの残部、および他のエレメントとの、ＳＰＵのインタフェースとして機能する。ＭＦＣ２５５〜２６２は、データ転送、保護、および主記憶デバイスと局部記憶デバイス２６３〜２７０の間の同期化に対する主要機構を提供する。論理的にプロセッサ内の各ＳＰＵ用のＭＦＣがある。いくつかの実用化では、複数のＳＰＵ間で単一のＭＦＣの資源を共有できる。このような場合には、ＭＦＣに対して定義されたすべての設備およびコマンドは、各ＳＰＵのソフトウェアに対して、独立して見えなければならない。ＭＦＣを共有することの効果は、実施例に依存する設備およびコマンドに限定されている。
【００３６】
さらに、ＣＢＥ２００は、テスト制御ユニット２０４と、ＣＢＥ２００の機能ユニットのテストを実行する際に使用されるデータを保存するｅＦｕｓｅ２０６の１つ以上のバンクとを有するテスト・ユニット２０２を含む。テスト・プログラム・データは、ｅＦｕｓｅ２０６の１つ以上のバンクと関連するラッチにシフトインされ、その後、テスト・プログラム・データをｅＦｕｓｅ２０６の１つ以上のバンクにバーンインするために使用される。当技術分野で周知のごとく、ｅＦｕｓｅは、２つの異なった状態、すなわち、飛んだ、または、飛んでいない、のうちの１つを有する簡単な回路素子である。当技術分野で周知のごとく、ｅＦｕｓｅへのデータの書き込みは、「１」を示すためにｅＦｕｓｅが飛んだ状態にすること、および「０」値を示すためにｅＦｕｓｅをデフォルト状態、すなわち、飛んでいない状態のままにすることを含む。飛んでいない状態では、ｅＦｕｓｅは電気的接触を可能にし、他方、飛んだ状態では電気的接触が切断される。しかしながら、例えば、実際に、ｅＦｕｓｅが飛ぶことが電気的接触を可能にして、それにより「０」を示すとともに、他方、デフォルト状態は「１」を示すような逆ｅＦｕｓｅの場合では、反対の方式を取ることができる。
【００３７】
図３は、図２のデータ処理システムの一部として提供されうるｅＦｕｓｅのバンクを有するテスト・ユニットの典型的なブロック図である。図３に示したように、ｅＦｕｓｅ３００のバンクは、ｅＦｕｓｅ素子３２０〜３２７にデータを書き込み、ｅＦｕｓｅ素子３２０〜３２７からデータを読み出す、書き込みスキャン・チェーン３１０および読み出しスキャン・チェーン３１５を含む。書き込みスキャン・チェーン３１０は、書き込みラッチ・ユニット３８６〜３９３のラッチ・ユニット３８６からラッチ・ユニット３９３までシフトインされたデータでプログラムされうる。ラッチ・ユニット３８６にスキャンインされたデータは、ラッチ・ユニット３８６〜３９３の次のクロッキングで、ラッチ・ユニット３８７まで移動され、ラッチ・ユニット３８７にシフトインされたデータは、ラッチ・ユニット３８６〜３９３の続くクロッキングで、ラッチ３８８まで移動され、以下同様である。
【００３８】
所要のデータが、書き込みスキャン・チェーン３１０のラッチ・ユニット３８６〜３９３にシフトインされると、このデータが、対応するｅＦｕｓｅ素子３２０〜３２７をプログラムするために使用されうる。例えば、ラッチ・ユニット３８９に保存されたデータ値は、ｅＦｕｓｅ素子３２３内のｅＦｕｓｅのうちの選択された１つを飛ばすこと、または飛ばさないことにより、ｅＦｕｓｅ素子３２３をプログラムするために使用される。ｅＦｕｓｅ素子３２０〜３２７に書き込まれるデータは、後で、オンチップシステム、マイクロプロセッサ、またはその種の他のものの機能ユニットを試験する際に使用されうる。
【００３９】
ｅＦｕｓｅ素子３２０〜３２７は、ラッチ・ユニット３８６〜３９３内に保存されたデータ値に基づいて、個別にプログラムされる複数のｅＦｕｓｅを含むことができる。例示的な一実施形態では、ラッチ・ユニット３８６〜３９３は、それらの対応するｅＦｕｓｅ素子３２０〜３２７に６４ビット値を提供できるとともに、各ｅＦｕｓｅ素子３２０〜３２７は、ラッチ・ユニットから取得されたそれらの対応するビットが、「１」であるか、「０」であるかに応じて、飛ばすこと、または飛ばさないこととなる６４個のｅＦｕｓｅのアレイを含むことができる。
【００４０】
ラッチ・ユニット３８６〜３９３に書き込まれ、引き続いてｅＦｕｓｅ素子３２０〜３２７に書き込まれるデータは、テスト・ユニット３９０の制御論理３９９により提供されうる。このテスト・ユニット３９０は、例えば、オンチップ・テスト・ユニット２０２、またはｅＦｕｓｅ３００のバンクが提供されているオンチップシステムまたはマイクロプロセッサの外部にある、試験計算機器であってもよい。制御論理３９９は、書き込みスキャン・チェーン入力ライン３１６を介してデータを提供する。
【００４１】
さらに、制御論理３９９は、読み出しスキャン・チェーン・ライン３１１を介してｅＦｕｓｅ３００のバンクからデータを読み出すことができる。読み出しスキャン・チェーン３１５のラッチ・ユニット３５０〜３８５は、ｅＦｕｓｅ素子３２０〜３２７の現在プログラムされている状態のデータを読み出して、このデータを制御論理３９９に提供するために使用されうる。例えば、制御論理３９９は、ｅＦｕｓｅ素子３２４に保存されたデータを要求して、かつ適切なイネーブル信号を、読み出しスキャン・チェーン３１５のラッチ・ユニット３７０まで送出でき、ラッチ３７０が、ｅＦｕｓｅ素子３２４の出力を取得して、その出力データを、読み出しスキャン・チェーン３１５のラッチ・ユニット３８５まで送り、このラッチ・ユニット３８５が、読み出しスキャン・チェーン・ライン３１１を介して、データを制御論理３９９に出力するようになされている。
【００４２】
例示的な一実施形態では、ｅＦｕｓｅ３００のバンクに書き込まれ、かつｅＦｕｓｅ３００のバンクから読み出される実際のデータは、例えば、冗長性データ、コンフィギュレーション・データ、またはその種の他のものなどの、オンチップシステムまたはマイクロプロセッサ内のユニットの機能を試験する際に有用な任意の種類のデータを表すことができる。例えば、例示的な実施形態は、２００５年６月６日に出願された「Ａｐｐａｒａｔｕｓ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｕｓｉｎｇ  ａ  Ｓｉｎｇｌｅ  Ｂａｎｋ  ｏｆ  ｅＦｕｓｅｓ  ｔｏ  Ｓｕｃｃｅｓｓｉｖｅｌｙ  Ｓｔｏｒｅ  Ｔｅｓｔｉｎｇ  Ｄａｔａ  ｆｒｏｍ  Ｍｕｌｔｉｐｌｅ  ｓｔａｇｅｓ  ｏｆ  Ｔｅｓｔｉｎｇ（試験の複数の段階からの試験データを連続的に保存するためにｅＦｕｓｅの単一バンクを使用する装置および方法）」と題された、本出願人に係る米国特許出願第１１／１４６，９８８号に説明されているような、機能ユニットを試験するために使用される冗長性データを保存するｅＦｕｓｅと共に使用されうる。
【００４３】
あるいは、例示的な実施形態は、１つ以上の機能ユニットに対するコンフィギュレーション・データのような非試験関連データを保存するｅＦｕｓｅのバンクと共に使用されうる。例えば、例示的な実施形態は、２００５年１０月６日に出願された「Ａｐｐａｒａｔｕｓ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｕｓｉｎｇ  ｅＦｕｓｅｓ  ｔｏ  Ｓｔｏｒｅ  ＰＬＬ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｄａｔａ（ＰＬＬコンフィギュレーション・データを保存するためにｅＦｕｓｅを使用する装置および方法）」と題された、同一出願人による同時係属中の米国特許出願第１１／２４５，３０８号に説明されているような、フェーズド・ロック・ループ（ＰＬＬ）コンフィギュレーション・データを保存するｅＦｕｓｅのバンクと共に使用されうる。さらに、例示的な実施形態は、２００５年１０月７日に出願された「Ａｐｐａｒａｔｕｓ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｐｒｏｖｉｄｉｎｇ  ａ  Ｒｅｐｒｏｇｒａｍｍａｂｌｅ  Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｆｕｓｅ（再プログラム可能な電気的プログラム可能ヒューズを提供する装置および方法）」と題された、同一出願人による同時係属中の米国特許出願第１１／２４６，５８６に説明されているような、再プログラム可能なｅＦｕｓｅと共に使用されうる。同一出願人による同時係属中のこれらの米国特許出願の各々は、参照により全体として本明細書の一部となっている。
【００４４】
図４は、図３のテスト・ユニット内に提供されうるｅＦｕｓｅのバンクをより詳細に示す典型的な図である。図４に示したように、ｅＦｕｓｅ素子４１０〜４１６の各々は、入力として、対応する書き込みスキャン・チェーンのラッチ・ユニット４２０〜４２６からの出力、テスト・ユニットからのプログラム・イネーブル信号（ｐｇｍ＿ｅｎａｂｌｅ）、および対応する読み出しスキャン・チェーンのラッチ・ユニット４３０〜４３６からのプログラム・イネーブル／データ取得信号を受信する。書き込みスキャン・チェーンのラッチ・ユニット、例えば、書き込みスキャン・チェーンのラッチ４２０からのデータ出力を、対応するｅＦｕｓｅ素子、例えば、ｅＦｕｓｅ素子４１０に書き込むために、ｅＦｕｓｅ素子４１０は、テスト・ユニットからのプログラム・イネーブル信号、および読み出しスキャン・チェーンのラッチ・ユニット４３０からのプログラム・イネーブル信号を受信しなければならない。本質的には、テスト・ユニットからのプログラム・イネーブル信号は、ラッチ・ユニット４２０〜４２６へのデータのシフトインが完了したことを示し、読み出しスキャン・チェーンのラッチ・ユニット４３０からのプログラム・イネーブル信号は、ｅＦｕｓｅ素子４１０内のｅＦｕｓｅがプログラムされる準備ができていることを示す。
【００４５】
読み出しスキャン・チェーンのラッチ・ユニット４３０〜４３６からのプログラム・イネーブル信号の各々は、順次にイネーブルにされ、ｅＦｕｓｅ素子４１０〜４１６が順次に書き込まれる。すなわち、読み出しスキャン・チェーンのラッチ・ユニット４３０からのプログラム・イネーブル信号が、最初にイネーブルにされ、次に、読み出しスキャン・チェーンのラッチ・ユニット４３２からのプログラム・イネーブル信号がイネーブルにされ、以下同様に、ｅＦｕｓｅ素子４１０〜４１６のすべてがプログラムされるまで続く。必要とされる電流の量を低減するために、ｅＦｕｓｅは順次にプログラムされる。それらをすべて同時にプログラムすることも可能であるが、ｅＦｕｓｅに対して非常に大きな電力配分を必要とするであろう。回路をできるだけ簡単にするために、通常、このような大きな電力配分は回避される。例えば、２０００個のｅＦｕｓｅがあって、それぞれをプログラムするために１０ミリアンペアが必要であるとき、２０アンペアを提供するチップ上の電力供給インフラストラクチャが必要となり、経費をできるだけ低く保つ必要があるｅＦｕｓｅにとって好ましくない。
【００４６】
これらのプログラム・イネーブル信号は、本質的に、ｅＦｕｓｅ素子４１０〜４１６において論理積演算が行われ、ｅＦｕｓｅ素子４１０〜４１６内の個々のｅＦｕｓｅが、ラッチ・ユニット４２０〜４２６からの対応する入力データ値でプログラムされる必要があるかどうかを決定する。例えば、ｅＦｕｓｅ素子４１０〜４１６内の特定のｅＦｕｓｅに対する両方のプログラム・イネーブル信号が高値のとき、ｅＦｕｓｅは、ラッチ・ユニット４２０〜４２６の出力からの対応するビットでプログラムされる。
【００４７】
ｅＦｕｓｅ素子４１０〜４１６からのデータの読み出しに関しては、読み出し動作は、ｅＦｕｓｅ素子４１０〜４１６から同時に実行されうる。例えば、すべてのｅＦｕｓｅブロックに達する共通のセンス入力信号（図示せず）を用いることにより、読み出しスキャン・チェーンのラッチ・ユニット４３０〜４３６のうちの選択されたラッチ・ユニットが読み出されうる。センス入力信号がアサートされるとき、保存されたｅＦｕｓｅデータは、ｅＦｕｓｅブロック４１０〜４１６の出力上に配設されるであろう。その後、このデータは、読み出しデータ・ラッチ４３０〜４３６にラッチされる。データが、ラッチ４３０〜４３６に取得されると、データは、スキャンされるか、またはラッチの並行出力から転送されうる。
【００４８】
試験目的、コンフィギュレーション目的、または他の目的のいずれにしろ、書き込みスキャン・チェーンのラッチ・ユニット４２０〜４２６にシフトインされるデータの整合は、ｅＦｕｓｅのバンクの正確な動作および使用にとって、非常に重要である。ここで整合とは、移動動作の後に、データ値がそれらの正確な位置にあることを保証することを意味する。
【００４９】
通常は、データは、ラッチ・ユニット４２０〜４２６のクロッキングに基づいて、順次、ラッチ・ユニット４２０〜４２６にスキャンイン、すなわち、シフトインされる。順次スキャンインは、信号の配列の狂いが原因で、１つ以上のビットずつずれる可能性があるという点で問題が起こりうる。例えば、クロッキング信号またはデータ信号のタイミングが狂うとき、意図したものとは異なるデータ値、例えば、「１」の代わりに「０」が、誤ってラッチ・ユニット４２０〜４２６に保存されうる。この単一の誤りビットが、ラッチ・ユニット４２０〜４２６に保存された全体のデータを無効にしうる。ｅＦｕｓｅの典型的バンクが、何百または何千というｅＦｕｓｅ素子およびラッチ素子を含みうるという事実により、この問題を拡大して考慮すれば、わずかな配列の狂いの及ぼす影響の重大さを明確に理解できる。このことに加えて、ｅＦｕｓｅをバーンインする、または飛ばすことによりプログラムすると、ｅＦｕｓｅは、一般に、そのバーンインされたデータで永久にエンコードされるという概念を考慮すると、問題は、さらに根本的になる。先に言及された再プログラム可能なｅＦｕｓｅ（米国特許出願第１１／２４６，５８６）の場合でさえ、このような再プログラム可能性は限定的であり、ｅＦｕｓｅのバンクに対する不正確なデータのスキャンまたはシフトインは、ｅＦｕｓｅのバンクをプログラムする機会を不必要に浪費することにより、ｅＦｕｓｅの再プログラム可能性をさらに制限する。
【００５０】
例示的な実施形態は、ｅＦｕｓｅ素子４１０〜４１６のバンクにスキャンイン、またはシフトインされるデータの配列を確保する機構を提供する。例示的な実施形態は、図４に示された配置に、ラッチ・ユニット４２０〜４２６に保存されたデータが正確に配列されていることを確保するために使用される、書き込みスキャン・チェーン内の複数の配列ラッチを付加する。これらの配列ラッチは、例えば、これらの配列ラッチからの出力で作動するテスト制御論理の論理ユニットに結合され、ラッチ・ユニット４２０〜４２６にスキャンインされた、またはシフトインされたデータが、正確にスキャンされたかどうか、またはシフトインされたかどうかを判定する。この判定に基づいて、適格プログラム・イネーブル信号を、ｅＦｕｓｅ素子４１０〜４１６に、アサートすることができたり、またはアサートすることができなかったりする。また、この適格プログラム・イネーブル信号は、外部の試験計算機器に、テスト制御論理の出力として提供され、テスト制御プログラムに配列が正確かどうかを知らせることができる。
【００５１】
図５は、例示的な一実施形態の、配列ラッチを有するｅＦｕｓｅのバンクを示す典型的な図である。図５に示したように、ｅＦｕｓｅ５００のバンクの配置は、図４に示した配置と本質的に同じであり、書き込みスキャン・チェーン５１０内に配列ラッチ５２０〜５６０を付加し、また、配列ラッチ５２０〜５６０に結合された追加の論理ユニット５７０を有する。データが、書き込みスキャン・チェーン５１０にスキャンイン、またはシフトインされるとき、配列ラッチ５２０〜５６０は、ラッチ・ユニット４２０〜４２６内のラッチと同様にデータ値を取得する。書き込みスキャン・チェーン５１０にスキャンインされるデータは、データ列が完全にスキャンインされると、配列ラッチ５２０〜５６０に対応する位置でスキャンインされる予定のデータ列に配置された配列データ値を有するように、あらかじめ構成されることが好ましい。
【００５２】
したがって、例えば、データ列は、正確な位置でデータ列に挿入される付加的な５ビットの配列データを有する、ラッチ・ユニット４２０〜４２６にスキャンインされる２０００ビットのデータを含むことができ、データ列が、順次、書き込みスキャン・チェーン５１０にスキャンインされるとき、データが、配列の狂いなしに正確にスキャンインされれば、配列データは、配列ラッチ５２０〜５６０内に存在するようになされている。
【００５３】
ラッチ・ユニット４２０〜４２６をプログラムする予定のデータ列に挿入される配列データは、正確に配列されたデータを示すものとして論理ユニット５７０で認識されるデータのパターンを形成する。例えば、データのパターンは、「１１１１１」、「１０１０１」、「１１１０１」、またはその種の他のものでありうる。基本的には、論理ユニット５７０は、書き込みスキャン・チェーンのラッチ・ユニット４２０〜４２６にスキャンインされたデータ列が、正確にスキャンインされたとき、配列ラッチ５２０〜５６０からの出力として論理ユニット５７０が確認することを期待する配列データの特定のパターンを有する。配列ラッチ５２０〜５６０からの出力の組み合わせが、このパターンに一致するとき、適格プログラム・イネーブル信号５８０が、ｅＦｕｓｅ素子４１０〜４１６にアサートされて、これらのｅＦｕｓｅ素子のプログラミングを可能にする。配列ラッチ５２０〜５６０からの出力の組み合わせが、このパターンに一致しないとき、適格プログラム・イネーブル信号５８０はアサートされず、ｅＦｕｓｅ素子４１０〜４１６のプログラミングはできない。このようにして、書き込みスキャン・チェーンのラッチ・ユニット４２０〜４２６内の配列の狂いを有するデータを特定することができ、不正確な、または配列の狂いを有するデータでｅＦｕｓｅ素子４１０〜４１６をプログラムすることが回避される。
【００５４】
示された例では、論理ユニット５７０は、単一の出力、すなわち、適格プログラム・イネーブル信号５８０を作り出すために、配列ラッチ５２０〜５６０からの出力相互と共に、テスト・ユニット５９０からのプログラム・イネーブル信号との論理積演算を行うＡＮＤゲートである。したがって、適格プログラム・イネーブル信号５８０がアサートされるためには、ＡＮＤゲートに対するすべての入力が、高値、すなわち、「１」でなければならない。換言すれば、ＡＮＤゲートが、書き込みスキャン・チェーンのラッチ・ユニット４２０〜４２６にスキャンインされたデータが正確に配列されていると判定するためには、配列ラッチ５４０以外のすべての配列ラッチ５２０〜５６０が、「１」値を保存しなければならない。配列ラッチ５４０に保存された値は、ＡＮＤゲートの入力において反転されるため、「０」値でなければならない。このようにして、書き込みスキャン・チェーン内の正確に配列されたデータと関連すると認識される配列ラッチ値のパターンは、「１１０１１」である。他の任意のパターンが、書き込みスキャン・チェーンにスキャンインされるデータの配列の狂いの結果と判定される。
【００５５】
上述の説明から理解されうるように、データをラッチ・ユニット４２０〜４２６にスキャンインする間に、ラッチ・ユニットのクロッキングが、データ信号の正確な値と合っていないとき、間違ったデータ値が、ラッチ・ユニットに取得されるであろう。例えば、データ値が「１」でなければならないときに、ラッチ・ユニットのクロッキングがデータ信号のアサーションと合っていないと、誤って「０」がラッチ・ユニットに書き込まれうる。この不正確なデータ値は、書き込みスキャン・チェーンの下流に伝搬されて、配列の狂いは、書き込みスキャン・チェーンにスキャンインされる後続のデータ値で発生し続けるであろう。その結果、配列ラッチ５２０〜５６０に保存されたデータ値のパターンは、正確に配列されたデータに対して論理ユニット５７０が期待したパターンではないことになる。
【００５６】
配列ラッチ５２０〜５６０からの出力に加えて、ＡＮＤゲートは、テスト・ユニットからのプログラム・イネーブル入力信号を受信する。プログラム・イネーブル入力信号がアサートされて、かつ上述した出力信号のパターンが、配列ラッチ５２０〜５６０によりＡＮＤゲートに出力される場合に限り、ＡＮＤゲートは、適格プログラム・イネーブル信号５８０をアサートするであろう。この適格プログラム・イネーブル信号５８０は、ｅＦｕｓｅ素子５１０〜５１６内のｅＦｕｓｅのプログラミングを可能にするために、ｅＦｕｓｅ素子５１０〜５１６に出力されうる。さらに、適格プログラム・イネーブル信号５８０は、書き込みスキャン・チェーンへのデータのスキャンインに関連する問題がもしあれば、それを特定するためのフィードバックとしてテスト・ユニットに出力されうる。フィードバック・適格プログラム・イネーブル信号は、オンチップシステム、マイクロプロセッサ、またはその種の他のものの試験に関連する問題について利用者への通知を出力するために、テスト・ユニットにより使用されうる。
【００５７】
示された例は、論理ユニット５７０としてＡＮＤゲートを利用するが、本発明は、このようなものに限定されないことを理解するべきである。むしろ、他の論理ゲート、論理ゲートの組み合わせ、他の種類の論理ユニットの組み合わせ、およびその種の他のものが、配列ラッチ５２０〜５６０から出力されたデータ値が、書き込みスキャン・チェーンのラッチ・ユニット４２０〜４２６内の正確に配列されたデータを表すのか、または配列の狂いを有するデータを表すのかを判定するために使用されうる。
【００５８】
このようにして、例示的な実施形態は、ｅＦｕｓｅ素子にデータを書き込むために使用される書き込みスキャン・チェーン内のデータの正確な配列を確保する機構を提供する。例示的な実施形態は、配列ラッチ、およびｅＦｕｓｅ素子をプログラムする書き込みスキャン・チェーンにスキャンインされたデータが、正確に配列されているかどうかを判定する論理ユニットを提供する。配列ラッチに保存されたデータ値が、書き込みスキャン・チェーン内の正確に配列されたデータを示して、かつプログラム・イネーブル信号が、テスト・ユニットによりアサートされる場合に限り、ｅＦｕｓｅ素子は、実際にプログラムされる。
【００５９】
図６は、例示的な一実施形態の、ｅＦｕｓｅのバンクをプログラムするデータを配列する典型的な動作の概略を示すフローチャートである。図６で説明される動作は、オンチップシステム、マイクロプロセッサ、またはその種の他のもののような集積回路装置で実行されうることを理解するべきである。さらに、特定のステップの手順が、図６に示されているが、例示的な実施形態は、示された特定の手順に限定されない。むしろ、図６のフローチャートのステップは、本発明の要旨および範囲を逸脱することなく、異なる順序で、およびフローチャートの他のステップと並行して実行されうる。
【００６０】
図６に示したように、動作は、データ列でプログラムされる予定のｅＦｕｓｅのバンクと関連する書き込みスキャン・チェーンに、テスト・ユニットが、データ列を、順次、スキャンインすることで開始する（ステップ６１０）。データ列は、列内の適切な位置でデータ列に挿入される配列データ値のパターンを有し、完全なデータ列が、書き込みスキャン・チェーンに正確にスキャンインされるとき、配列データ値のパターンが、書き込みスキャン・チェーン内に提供される配列ラッチに保存されるようになされる。
【００６１】
その後、テスト・ユニットは、適格プログラム・イネーブル信号がｅＦｕｓｅのバンクのｅＦｕｓｅ素子に対して出力されうるかどうかを判定する論理ユニットに、プログラム・イネーブル信号をアサートする（ステップ６２０）。論理ユニットは、入力として、書き込みスキャン・チェーンの配列ラッチに保存されたデータ値に対応する出力信号を受信する（ステップ６３０）。論理ユニットは、配列ラッチに保存されたデータ値に基づいて、書き込みスキャン・チェーンにスキャンインされたデータが、正確に配列されているか、または配列に狂いがあるかどうかを判定する（ステップ６４０）。データが正確に配列されており、かつテスト・ユニットが、プログラム・イネーブル信号をアサートするとき、適格プログラム・イネーブル信号が、ｅＦｕｓｅのバンクのｅＦｕｓｅ素子にアサートされる（ステップ６５０）。ｅＦｕｓｅ素子に対する適格プログラム・イネーブル信号のアサーションにより、ｅＦｕｓｅ素子内のｅＦｕｓｅが、書き込みスキャン・チェーンのラッチ・ユニットに保存されたデータ値を用いてプログラムされる（ステップ６６０）。データに配列の狂いがあるとき、適格プログラム・イネーブル信号はアサートされない（ステップ６７０）。また、適格プログラム・イネーブル信号の現在の状態、すなわち、アサートされているか、またはアサートされていないかは、ｅＦｕｓｅのバンクのコンフィギュレーションに関連する問題について、またはコンフィギュレーションが正確に実行されたかどうかについて利用者に知らせるために、テスト・ユニットに提供されうる（ステップ６８０）。その後、動作は終了する。
【００６２】
このようにして、例示的な実施形態は、このデータが永久に集積回路装置のｅＦｕｓｅに書き込まれる前に、データの配列を確保する機構を提供する。例示的な実施形態の利点は、ｅＦｕｓｅのバンクが破壊されたデータでプログラムされて、ｅＦｕｓｅのバンクを交換しなければならなくなったり、または集積回路装置を破棄しなければならなくなったりする可能性を減少させることである。その結果、例示的な実施形態は、集積回路装置内のｅＦｕｓｅのプログラミングに関連する費用を低減する。
【００６３】
上述したように、上述の回路は、集積回路チップの設計の一部でありうる。チップ設計は、グラフィカル・コンピュータ・プログラミング言語で行われ、コンピュータ記憶媒体（ディスク、テープ、物理ハード・ドライブ、またはストレージ・アクセス・ネットワークにおけるような仮想ハード・ドライブなど）に保存されうる。設計者が、チップを製作しないとき、またはチップを製作するために使用されるフォトリソグラフィック・マスクを製作しないとき、設計者は、結果として得られる設計を、このようなエンティティに、物理的手段で（例えば、設計を保存している記憶媒体のコピーを提供することにより）、または電子的に（例えば、インターネットを介して）、直接的に、または間接的に送信する。その後、保存された設計は、フォトリソグラフィック・マスク製作用の適切なフォーマット（例えば、ＧＤＳＩＩ）に変換され、このフォトリソグラフィック・マスクは、通常、ウェハ上に形成される予定の当該チップ設計の複数のコピーを含む。フォトリソグラフィック・マスクは、エッチングまたは別の方法で処理されるために、ウェハ（またはウェハ上の層、あるいはその両方）の範囲を規定するために利用される。
【００６４】
結果として得られる集積回路チップは、製作業者により、生ウェハ形態で（すなわち、複数のパッケージ化されていないチップを有する単一ウェハとして）、ベア・ダイとして、またはパッケージ化された形態で配付されうる。後者の場合では、チップは、単一チップ・パッケージ（マザーボード、または他の高水準キャリヤに付けられているリード線を有するプラスチック・キャリヤなど）内に、またはマルチチップ・パッケージ（表面相互接続または埋め込み型相互接続のいずれか一方または両方を有するセラミック・キャリヤなど）内に実装される。いずれの場合でも、その後、チップは、（ａ）マザーボードのような中間製品、または（ｂ）最終製品の一部として、他のチップ、ディスクリート回路素子、および他の信号処理デバイス、あるいはそのいずれかと一体化される。最終製品は、おもちゃおよび他のローエンド用途から、表示装置と、キーボードまたは他の入力装置と、中央処理装置とを有する最新式コンピュータ製品まで多岐にわたる、集積回路チップを含む任意の製品でありうる。
【００６５】
本発明の記述は、例示および説明のために提示されたものであり、開示された形態の発明に限定しようとするものではない。多数の変更および変形が、当業者にとって明らかであろう。実施形態は、本発明の原理、実用化について最も良く説明するために、および当業者が、想定された特定の用途に適合するような様々な変更を有する多様な実施形態のために本発明を理解することを可能とするよう選択され、説明された。
【図面の簡単な説明】
【００６６】
【図１】公知の構造のｅＦｕｓｅの図である。
【図２】例示的な実施形態の典型的な態様を実行できるデータ処理システムを示す典型的な図である。
【図３】図２のデータ処理システムの一部として提供されうるテスト・ユニットの典型的なブロック図である。
【図４】図３のテスト・ユニット内に提供されうるｅＦｕｓｅのバンクをより詳細に示す典型的な図である。
【図５】例示的な一実施形態の、配列ラッチを有するｅＦｕｓｅのバンクを示す典型的な図である。
【図６】例示的な一実施形態の、ｅＦｕｓｅのバンクをプログラムするデータを配列する典型的な動作の概略を示すフローチャートである。
【図１】
2007147626.tif 000003
【図２】
2007147626.tif 000004
【図３】
2007147626.tif 000005
【図４】
2007147626.tif 000006
【図５】
2007147626.tif 000007
【図６】
2007147626.tif 000008
【外国語明細書】
2007147626000001.pdf
2007147626000002.pdf
2007147626000003.pdf
2007147626000004.pdf