以下、図面を参照しながら、好適な実施の形態について説明する。以下の実施の形態に示す具体的な数値などは、実施の形態の理解を容易とするための例示にすぎず、特に断る場合を除き、それに限定されるものではない。また、以下の記載及び図面では、説明の明確化のため、当業者にとって自明な事項などについては、適宜、省略及び簡略化がなされている。
<実施の形態1>
[全体構成]
まず、図1を参照して、本実施の形態1に係る半導体装置(1A)の構成について説明する。図1は、本実施の形態1に係る半導体装置(1A)の構成図である。
図1に示すように、半導体装置(1A)は、テストパターン発生装置(100)と、FIFO(101)と、テスト制御装置(200)と、被テスト回路(201)と、テスト結果圧縮装置(202)とを有する。また、半導体装置(1A)は、それぞれにおける電源配線が異なる第1電源領域(10)と、第2電源領域(20)とを有する。
第1電源領域(10)は、テストパターン発生装置(100)を含む。第2電源領域(20)は、テスト制御装置(200)と、被テスト回路(201)と、テスト結果圧縮装置(202)を含む。FIFO(101)における一部の機能ブロック(101A)は、第1電源領域(10)に含まれ、残りの機能ブロック(101B)は、第2電源領域(20)に含まれる。なお、FIFO(101)が、どのような機能ブロックに分割されているかについては、後述のFIFO(101)の詳細説明において記述する。
第1電源領域(10)と第2電源領域(20)は、それぞれにおける電源配線が異なる。すなわち、第1電源領域(10)と第2電源領域(20)には、それぞれ独立して異なる電源電圧が供給されている。ここでは、例えば、第1電源領域(10)は、CONST領域であり、第2電源領域(20)は、DVFS領域であるものとする。
第1電源領域(10)に配置される装置及び回路は、第1クロック信号(110)によって駆動される。第2電源領域(20)に配置される装置及び回路は、第2クロック信号(210)によって駆動される。FIFO(101)についても、一部の機能ブロック(101A)は、第1クロック信号(110)によって駆動され、残りの機能ブロック(101B)は、第2クロック信号(210)によって駆動される。
第1クロック信号(110)と、第2クロック信号(210)は、第1電源領域(10)と第2電源領域(20)との電圧が異なることにより、同期していないもの(周波数及び位相の少なくとも1つが異なる)とする。なお、第1クロック信号(110)と第2クロック信号(210)は、異なるクロック生成回路によって生成されるクロック信号であることにより、相互に同期していないものであってもよい。
テストパターン発生装置(100)は、FIFO(101)と電気的に接続されている。テストパターン発生装置(100)は、被テスト回路(201)のスキャンテストで使用する複数のスキャンテストデータを、順次、FIFO(101)に格納する回路である。
FIFO(101)は、複数のスキャンテストデータを格納することができる記憶装置(記憶回路)である。FIFO(101)は、テストパターン発生装置(100)から出力されるスキャンテストデータを一時的に保持した後、被テスト回路(201)に出力する。
被テスト回路(201)は、半導体装置(1A)を制御する機能論理(論理回路)である。被テスト回路(201)は、例えばCPUである。被テスト回路(201)は、スキャンテストの手法に則りスキャン化の処理がなされている。すなわち、被テスト回路(201)は、複数のスキャンチェーン(2010)を有する。図1において、スキャンチェーン(2010)のそれぞれは、その機能論理(被テスト回路(201))がスキャン化されていることを模式的に示すブロックである。
FIFO(101)は、被テスト回路(201)に対してスキャンテストデータの供給が出来るように、各スキャンチェーン(2010)の最前段(入力段)と電気的に接続されている。各スキャンチェーン(2010)の最終段(出力段)は、被テスト回路(201)からスキャンテストデータによる動作結果となるデータの取得が出来るように、テスト結果圧縮装置(202)と電気的に接続されている。
これにより、被テスト回路(201)は、FIFO(101)から出力されたスキャンテストデータを、各スキャンチェーン(2010)に格納する。また、被テスト回路(201)は、スキャンテストデータによる動作後に、各スキャンチェーン(2010)に格納された動作結果となるデータを、テスト結果データとしてテスト結果圧縮装置(202)に出力する。
なお、図1では、単純なスキャン化の例を示しているが、図2に示す半導体装置(1B)のように、被テスト回路(201)は、さらに、伸長回路(2011)と圧縮回路(2012)を有していてもよい。言い換えると、被テスト回路(201)は、圧縮スキャンを利用した構成とされていてもよい。この場合、FIFO(101)は、伸長回路(2011)を介して、各スキャンチェーン(2010)の最前段と電気的に接続される。また、各スキャンチェーン(2010)の最終段は、圧縮回路(2012)を介して、テスト結果圧縮装置(202)と電気的に接続される。
伸長回路(2011)は、FIFO(101)から出力されたスキャンテストデータを、スキャンチェーン(2010)の数と同数のビット数に伸長してから、各スキャンチェーン(2010)に格納する。また、圧縮回路(2012)は、各スキャンチェーン(2010)に格納されたテスト結果データを、より少ないビット数に圧縮してから、テスト結果圧縮装置(202)に出力する。
テスト制御装置(200)は、FIFO(101)と、被テスト回路(201)と、テスト結果圧縮装置(202)の制御が出来るように、それらの回路(101,201)及び装置(202)と電気的に接続されている。
テスト結果圧縮装置(202)は、被テスト回路(201)から順次出力される複数のテスト結果データから圧縮符号を生成する。また、テスト結果圧縮装置(202)は、生成した圧縮符号に基づいて、テスト結果を判定する。
[テストパターン発生装置(100)]
図1に示すテストパターン発生装置(100)は、被テスト回路(201)のスキャンテストをするための複数のスキャンテストデータを、シフトサイクル順にFIFO(101)に書き込む装置(回路)である。スキャンテストデータは、半導体装置(1A)の中に予め格納していてもよい。例えば、半導体装置(1A)が有するFLASHメモリに予め格納してもよい。また、スキャンテストデータは、半導体装置(1A)の外部から供給してもよい。より具体的には、半導体装置(1A)にATE(Automated Test Equipment)を接続して、そのATEからスキャンテストデータを供給してもよい。テストパターン発生装置(100)は、ATEから供給されたスキャンテストデータをFIFO(101)に書き込む。この場合、第1クロック信号(110)は、ATEから供給してもよい。また、半導体装置(1A)がテストパターン発生装置(100)を有さない構成とし、ATEから直接FIFO(101)にスキャンテストデータを書き込むようにしてもよい。
[FIFO(101)]
続いて、図3を参照して、本実施の形態1に係るFIFO(101)の構成について説明する。図3は、本実施の形態1に係るFIFO(101)のブロック図である。
図3に示すように、FIFO(101)は、入力回路(30)と、出力回路(40)とを有している。上述したように、FIFO(101)は、大きく2つの機能ブロック(101A、101B)を有している。1つは書き込み用の機能ブロック(101A)であり、入力回路(30)を有する。もう1つは、読み出し用の機能ブロック(101B)であり、出力回路(40)を有する。入力回路(30)は、テストパターン発生装置(100)から入力された書き込みデータ(スキャンテストデータ)をFIFO(101)に書き込む回路である。出力回路(40)は、FIFO(101)のデータを読み出し、読み出しデータとして被テスト回路(201)に出力する回路である。
入力回路(30)と出力回路(40)の間には、境界回路(50)が配置される場合がある。境界回路(50)には、第1電源領域(10)と第2電源領域(20)の電位差を吸収するためのレベルシフタ(図示せず)、及び、境界の電源を遮断するアイソレーション論理(図示せず)が含まれている。
入力回路(30)は、フル判定回路(31)と、グレイコードカウンタ(32)と、選択回路(33)と、レジスタ群(34)とを有する。
フル判定回路(31)は、グレイコードカウンタ(32)及びグレイコードカウンタ(42)のそれぞれから出力されたグレイコードに基づいて、レジスタ群(34)がフルであるか否かを判定する。言い換えると、フル判定回路(31)は、レジスタ群(34)における全てのレジスタにスキャンテストデータが格納されているか否かを判定する。フル判定回路(31)は、レジスタ群(34)がフルであると判定した場合、テストパターン発生装置(100)に出力するフル信号をアサートする。一方、フル判定回路(31)は、レジスタ群(34)がフルでないと判定した場合、テストパターン発生装置(100)に出力するフル信号をネゲートする。
これにより、テストパターン発生装置(100)は、フル判定回路(31)から入力されるフル信号がアサートされている場合、スキャンテストデータのFIFO(101)への入力を停止する。よって、FIFO(101)のオーバーフローを防止することができる。一方、テストパターン発生装置(100)は、フル判定回路(31)から入力されるフル信号がネゲートされている場合、スキャンテストデータをFIFO(101)に入力する。
グレイコードカウンタ(32)は、レジスタ群(34)のうち、書き込みデータの書き込み先となるレジスタのアドレスを示すグレイコードが格納される。グレイコードカウンタ(32)は、自身に格納されるグレイコードを、フル判定回路(31)、選択回路(33)、及び空判定回路(41)に出力する。また、グレイコードカウンタ(32)は、テストパターン発生装置(100)から入力される書き込み信号がアサートされている間、第1クロック信号(110)に同期して、自身に格納されるグレイコードを更新する。すなわち、グレイコードカウンタ(32)は、書き込み信号がアサートされている間、第1クロック信号(110)のエッジが入力される度に、自身に格納されるグレイコードを更新する。
ここで、テストパターン発生装置(100)は、スキャンテストデータをFIFO(101)に入力している間、アサートされた書き込み信号をグレイコードカウンタ(32)に出力し、スキャンテストデータのFIFO(101)への入力を停止している間、ネゲートされた書き込み信号をグレイコードカウンタ(32)に出力する。
選択回路(33)は、レジスタ群(34)のうち、グレイコードカウンタ(32)から出力されたグレイコードで示される1つのレジスタを、書き込みデータの書き込み先のレジスタとして選択する。よって、書き込み信号がアサートされている間、第1クロック信号(110)に同期して、選択回路(33)が選択するレジスタが切り替わる。ここで、図3では、レジスタ群(34)に含まれる複数のレジスタを、「レジスタ1」、・・・、「レジスタN」として示している(Nは、予め定められた任意の正整数)。グレイコードカウンタ(32)は、例えば、レジスタ群(34)における複数のレジスタにおいて選択するレジスタを、サイクリック(例えば「レジスタ1」、・・・、「レジスタN」、「レジスタ1」、・・・の順)に切り替える。
レジスタ群(34)は、書き込みデータ(スキャンテストデータ)が格納される。レジスタ群(34)は、複数のレジスタを有する。レジスタ群(34)における各レジスタは、1シフトサイクル分のスキャンテストデータを保持できるだけのサイズのレジスタである。例えば、スキャンテストデータ(書き込みデータ、読み出しデータ)のサイズが6ビットである場合、レジスタ群(34)における各レジスタのサイズは、6ビットとなる。このように複数のレジスタを用意することにより、レジスタ群(34)における複数のレジスタのうち、あるレジスタのデータが読み出されているときに、他のレジスタにデータを書き込むことを可能としている。
出力回路(40)は、空判定回路(41)と、グレイコードカウンタ(42)と、選択回路(43)と、レジスタ(44)とを有する。
空判定回路(41)は、グレイコードカウンタ(32)及びグレイコードカウンタ(42)のそれぞれから出力されたグレイコードに基づいて、レジスタ群(34)が空であるか否かを判定する。言い換えると、空判定回路(41)は、レジスタ群(34)における全てのレジスタのいずれにもデータが格納されていないか否かを判定する。空判定回路(41)は、レジスタ群(34)が空であると判定した場合、テスト制御装置(200)に出力するエンプティ信号をアサートする。一方、空判定回路(41)は、レジスタ群(34)が空でないと判定した場合、テスト制御装置(200)に出力するエンプティ信号をネゲートする。
グレイコードカウンタ(42)は、レジスタ群(34)のうち、読み出しデータの読み出し元となるレジスタのアドレスを示すグレイコードが格納される。グレイコードカウンタ(42)は、自身に格納されるグレイコードを、フル判定回路(31)、空判定回路(41)、及び選択回路(43)に出力する。また、グレイコードカウンタ(42)は、テスト制御装置(200)から入力される読み出し信号がアサートされている間、第2クロック信号(210)に同期して、自身に格納されるグレイコードを更新する。すなわち、グレイコードカウンタ(42)は、読み出し信号がアサートされている間、第2クロック信号(210)のエッジが入力される度に、自身に格納されるグレイコードを更新する。なお、後述のスキャンイネーブル信号が読み出し信号として機能する。
選択回路(43)は、レジスタ群(34)のうち、グレイコードカウンタ(42)から出力されたグレイコードで示される1つのレジスタを、読み出しデータの読み出し元のレジスタとして選択する。よって、読み出し信号がアサートされている間、第2クロック信号(210)に同期して、選択回路(43)が選択するレジスタが切り替わる。グレイコードカウンタ(42)も、例えば、グレイコードカウンタ(32)と同様に、レジスタ群(34)における複数のレジスタにおいて選択するレジスタを、サイクリックに切り替える。
レジスタ(44)は、第2クロック信号(210)に同期して、レジスタ群(34)のうち、選択回路(43)によって選択されたレジスタに格納されたスキャンテストデータが読み出されて格納される。レジスタ(44)に格納されたスキャンテストデータは、読み出しデータとして、被テスト回路(201)及びテスト結果圧縮装置(202)に出力される。これにより、被テスト回路(201)は、第2クロック信号(210)に同期して、レジスタ(44)に順次格納されるスキャンテストデータを読み出すことが可能となる。
上述したように、入力回路(30)に含まれるレジスタ群(34)は、第1クロック信号(110)によって駆動されており、出力回路(40)に含まれるレジスタ(44)は、第2クロック信号(210)によって駆動されている。すなわち、入力回路(30)と出力回路(40)は、互いに同一のクロックで同期されていなくてよい。
ここで、上述したように、グレイコードカウンタ(32)及びグレイコードカウンタ(42)は、レジスタ群(34)における複数のレジスタを選択する順序を、同一の順序でサイクリックに切り替えていく。よって、フル判定回路(31)は、グレイコードカウンタ(32)から出力されるグレイコードが示すレジスタが、グレイコードカウンタ(42)から出力されるグレイコードが示すレジスタの1つ前のレジスタを示す場合、FIFO(101)がフルであると判定し、そうでない場合、FIFO(101)がフルないと判定する。また、空判定回路(41)は、グレイコードカウンタ(32)から出力されるグレイコードが示すレジスタと、グレイコードカウンタ(42)から出力されるグレイコードが示すレジスタが同一のレジスタを示す場合、FIFO(101)が空であると判定し、同一のレジスタを示さない場合、FIFO(101)が空でないと判定する。
続いて、図4を参照して、スキャンテストデータの被テスト回路(201)及びテスト結果圧縮装置(202)への入力例について説明する。なお、図4では、図2に示す半導体装置(1B)におけるスキャンテストデータの入力例を示している。
図4の左側に示すデータは、図3に示したFIFO(101)に格納されるスキャンテストデータの内容を模式的に表形式として示したものである。この表には、右側から順にFIFO(101)に格納された順でスキャンテストデータが並んでいる。つまり、表の各1列は、レジスタ群(34)のうち、いずれか1つのレジスタと対応する。例えば、図4で、「#n」で示される列のデータは、図3の「レジスタn」に格納されていたデータとなる(nは、1〜Nのいずれの値にも該当)。なお、図4に示すように、FIFO(101)の機能上、一回、スキャンテストデータが読み出しされたレジスタは再利用される。すなわち、上述したように、FIFO(101)のレジスタ群(34)における複数のレジスタはサイクリックに利用される。そのため、スキャンテストデータの書き込み及び読み出しが一巡した後に、再度、同じレジスタから読み出されたスキャンテストデータが出現するようになっている。
スキャンテストデータは、入力データと、マスクデータとから構成される。よって、図4では、スキャンテストデータが6ビットであり、入力データが4ビットであり、マスクデータが2ビットである例について示している。また、図4では、被テスト回路(201)が有するスキャンチェーン(2010)の数は、入力データのビット数(4ビット)よりも多い。
伸長回路(2011)は、FIFO(101)から入力された入力データを、より多いビット数(スキャンチェーン(2010)の数と同じビット数)に伸長して、伸長後の入力データの各ビットを各スキャンチェーン(2010)に出力する。
なお、図1に示す半導体装置(1A)の場合は、入力データのビット数と、複数のスキャンチェーン(2010)の数は同じとなる。よって、FIFO(101)から入力された入力データの各ビットは、そのまま複数のスキャンチェーン(2010)のそれぞれに入力される。そして、被テスト回路(201)を動作させることで、各スキャンチェーン(2010)は、テスト結果データが格納された状態となる。
圧縮回路(2012)は、複数のスキャンチェーン(2010)から出力されたテスト結果データを、より少ないビット数のデータに圧縮して、圧縮後のテスト結果データをテスト結果圧縮装置(202)に出力する。図4の例では、複数のスキャンチェーン(2010)から出力されたデータ(4ビットよりも多いビット数のデータ)が、2ビットに圧縮される。なお、この圧縮回路(2012)による圧縮後のデータのビット数は、マスクデータのビット数と同じとなる。FIFO(101)から出力されたマスクデータも、圧縮後のデータとともにテスト結果圧縮装置(202)に入力される。
上述したように、図4では、複数のスキャンチェーン(2010)のそれぞれのサイズがNビットである例について示している。よって、この例では、N回のスキャンシフト動作を行って各スキャンチェーン(2010)にNビットのスキャンテストデータ(入力データ)をスキャンインした後、被テスト回路(201)においてそのスキャンテストデータを利用したキャプチャ動作(通常動作)が行われる。これにより、各スキャンチェーン(2010)は、テスト結果データが格納された状態となる。その後、N回のスキャンシフト動作を行って各スキャンチェーン(2010)にNビットのテスト結果データをスキャンアウトすることで、テスト結果データがテスト結果圧縮装置(202)に出力される。なお、このスキャンアウトのときに、次のNビットのスキャンテストデータ(入力データ)がスキャンインされることになる。
なお、図4に示す「パターン#1」、・・・、「パターン#N」は、スキャンイン、キャプチャ、スキャンアウトの一連の動作が行われるスキャンテストデータの単位(以下、「テストパターン」とも呼ぶ)を示している。
[テスト結果圧縮装置(202)]
引き続き、図4を参照して、本実施の形態1に係るテスト結果圧縮装置(202)の構成について説明する。図4の右側に示すブロックは、テスト結果圧縮装置(202)を示したブロックである。図4に示すように、テスト結果圧縮装置(202)は、ANDゲート(2021,2022)と、圧縮回路(2023)とを有する。
テスト結果圧縮装置(202)は、被テスト回路(201)から出力されたテスト結果データを圧縮する装置(回路)である。テスト結果圧縮装置(202)は、被テスト回路(201)から出力されたテスト結果データと、FIFO(101)から出力されたスキャンテストデータにおけるマスクデータとが入力される。すなわち、このマスクデータは、このテスト結果データがスキャンアウトされるときに、スキャンインされる入力データとともにスキャンテストデータを構成していたマスクデータとなる。ANDゲート(2021,2022)のそれぞれは、テスト結果データのビットのそれぞれと、マスクデータのビットのそれぞれとをAND演算(論理積演算)して、その結果となるデータを圧縮回路(2023)に出力する。すなわち、マスク後のテスト結果データが圧縮回路(2023)に出力される。
圧縮回路(2023)は、ANDゲート(2021,2022)から順次入力される一連のテスト結果データを圧縮する。これにより、全てのテスト結果データの合計サイズよりも小さいサイズのデータ(圧縮符号)が、最終的なテスト結果として得られる。圧縮回路(2023)の構成については特に言及しないが、例えば、LFSR(Linear FeedBack Shift Register)を含む回路としてもよい。
[テスト制御装置(200)]
続いて、図5を参照して、実施の形態1に係るテスト制御装置(200)の構成について説明する。図5は、実施の形態1に係るテスト制御装置(200)のブロック図である。
図5に示すように、テスト制御装置(200)は、スキャンシフトカウンタ(2000)と、スキャンシフト回数レジスタ(2001)と、比較器(2002)と、セレクタ(2003)と、ANDゲート(2004)と、テストパターンカウンタ(2005)と、テストパターン数レジスタ(2006)と、比較器(2007)と、セレクタ(2008)と、セレクタ(2009)とを有する。
スキャンシフトカウンタ(2000)は、第2クロック信号(210)に同期して、スキャンチェーン(2010)に対してスキャンシフト動作を行った回数(スキャンインしたスキャンテストデータ数)をカウントするカウンタであり、そのカウント値が格納される。スキャンシフトカウンタ(2000)は、自身に格納された値を、比較器(2002)及びセレクタ(2003)に出力する。
スキャンシフト回数レジスタ(2001)は、1つのテストパターンにおいて実行されるスキャンシフト動作の回数(1つのテストパターンにおけるスキャンテストデータ数)の値が格納される。スキャンシフト回数レジスタ(2001)の値は、例えば、スキャンテストを実施する前に、テスト制御装置(200)の外部から設定される。また、スキャンシフト回数レジスタ(2001)の値は、予め固定値として設定されていてもよい。スキャンシフト回数レジスタ(2001)は、自身に格納された値を比較器(2002)に出力する。
比較器(2002)は、スキャンシフトカウンタ(2000)から出力された値と、スキャンシフト回数レジスタ(2001)から出力された値とを比較し、比較結果に応じた値をANDゲート(2004)及びセレクタ(2008)に出力する。例えば、比較器(2002)は、比較した値が一致する場合にはネゲートされた信号を出力し、比較した値が一致しない場合にはアサートされた信号を出力する。ここで、ネゲートされた信号は、“0” の値(Low)の信号であり、アサートされた信号は、“1”の値(High)の信号である。これは、以降も同様である。
すなわち、比較器(2002)は、1つのテストパターンにおけるスキャンテストデータのスキャンインを開始してからのスキャンシフト動作の回数が、そのテストパターンに含まれる全てのスキャンテストデータがスキャンチェーン(2010)に入力される回数(スキャンチェーン(2010)のサイズ)未満である場合には、アサートされた信号(“1”の値)を出力する。一方、比較器(2002)は、1つのテストパターンにおけるスキャンテストを開始してから実行したスキャンシフト動作の回数が、そのテストパターンに含まれる全てのスキャンテストデータがスキャンチェーン(2010)に入力される回数と一致する場合には、ネゲートされた信号(“0”の値)を出力する。例えば、図4に示す例では、比較器(2002)は、1つのテストパターンにおけるスキャンテストデータのスキャンインを開始してからのスキャンシフト動作の回数が、N回未満である場合には “1”を出力し、N回である場合には“0”を出力する。
セレクタ(2003)は、ANDゲート(2004)から出力された値に応じて、スキャンシフトカウンタ(2000)の値を、インクリメントするか初期化するかを選択する回路である。より具体的には、セレクタ(2003)は、ANDゲート(2004)から出力された値が“1”である場合には、スキャンシフトカウンタ(2000)の値に“1”を加算し、ANDゲート(2004)から出力された値が“0”である場合には、スキャンシフトカウンタ(2000)の値を初期化する。すなわち、スキャンシフトカウンタ(2000)の値をインクリメントする場合には、セレクタ(2003)は、スキャンシフトカウンタ(2000)の値に“1”を加算した値を、スキャンシフトカウンタ(2000)に出力して格納する。一方で、スキャンシフトカウンタ(2000)の値を初期化する場合には、セレクタ(2003)は、初期値“0”を、スキャンシフトカウンタ(2000)に出力して格納する。なお、このインクリメント又は初期化は、第2クロック信号(210)に同期したタイミングで行われる。言い換えると、このインクリメント又は初期化は、テスト制御装置(200)に第2クロック信号(210)のエッジが入力されたタイミングで行われる。
ANDゲート(2004)は、入力される開始信号の値と、比較器(2002)から出力された値とをAND演算(論理積演算)して、その結果となる値を、セレクタ(2003)及び外部に出力する。この外部に出力された値は、スキャンイネーブル信号として、FIFO(101)、被テスト回路(201)、及びテスト結果圧縮装置(202)に入力される。ここで、FIFO(101)に入力されるスキャンイネーブル信号は、上述したように読み出し信号として機能する。
ここで、開始信号は、FIFO(101)からテスト制御装置(200)に入力されたエンプティ信号がネゲートされたときに、アサートされる信号である。例えば、テスト制御装置(200)は、FIFO(101)から入力されるエンプティ信号に応じて、開始信号をANDゲート(2004)に出力する回路を有する。この回路は、エンプティ信号がネゲートされたときに、開始信号をアサートして出力する。なお、開始信号は、後述するように、全てのスキャンテストデータがFIFO(101)から出力された後にネゲートされる。
よって、ANDゲート(2004)は、開始信号の値が“1”である場合、比較器(2002)からの出力値を出力することになるとも言える。そして、比較器(2002)における比較結果が不一致であり、セレクタ(2003)に入力される比較器(2002)からの出力値が“1”である場合には、セレクタ(2003)はインクリメントを選択する。一方、比較器(2002)における比較結果が一致であり、セレクタ(2003)に入力される比較器(2002)からの出力値が“0”である場合には、セレクタ(2003)は初期化を選択する。
この動作によれば、FIFO(101)が空でなく、スキャンチェーン(2010)にスキャンテストデータがスキャンインされている場合に、スキャンシフト動作の回数がカウントされる。そして、1つのテストパターンにおけるスキャンシフト動作の回数が、そのテストパターンに含まれる全てのスキャンテストデータがスキャンチェーン(2010)に入力される回数に達した場合、スキャンシフトカウンタ(2000)の値が初期化される。言い換えると、テスト制御装置(200)は、1つのテストパターンにおける全てのスキャンテストデータがスキャンチェーン(2010)に入力される度に、スキャンシフトカウンタ(2000)の値が初期化される。よって、スキャンシフトカウンタ(2000)は、各テストパターンについて、スキャンチェーン(2010)に入力されたスキャンテストデータ数のカウントを繰り返すことができる。
また、この動作によれば、テスト制御装置(200)は、1つのテストパターンにおける全てのスキャンテストデータがスキャンチェーン(2010)に入力される度に、一旦、スキャンイネーブル信号をネゲートする。ここで、被テスト回路(201)は、テスト制御装置(200)からアサートされたスキャンイネーブル信号が入力されている場合、スキャンシフト動作を実行する。一方、テスト制御装置(200)からネゲートされたスキャンイネーブル信号が入力されている場合、キャプチャ動作(通常動作)を実行する。よって、1つのテストパターンにおける全てのスキャンテストデータがスキャンチェーン(2010)に入力される度に、1クロックのキャプチャ動作を実行することが可能となる。すなわち、シングルクロック方式のスキャンテストが実行される。
また、テスト結果圧縮装置(202)は、テスト制御装置(200)からアサートされたスキャンイネーブル信号が入力されている場合、テスト結果データの圧縮動作を実行する。一方、テスト結果圧縮装置(202)は、テスト制御装置(200)からネゲートされたスキャンイネーブル信号が入力されている場合、テスト結果データの圧縮動作は実行しない。よって、テスト結果圧縮装置(202)は、被テスト回路(201)がスキャンシフト動作を行って次のテスト結果データを出力した場合のみ、そのテスト結果データに基づいて圧縮符号を生成するようにすることができる。そのため、被テスト回路(201)がキャプチャ動作中に出力するデータの取り込みを防止して、正しいテスト結果を生成することが可能となる。
テストパターンカウンタ(2005)は、第2クロック信号(210)に同期して、スキャンチェーン(2010)に対してスキャンインしたテストパターン数をカウントするカウンタである。すなわち、テストパターンカウンタ(2005)は、スキャンチェーン(2010)に対してスキャンインしたテストパターン数の値が格納される。テストパターンカウンタ(2005)は、自身に格納された値を、比較器(2007)及びセレクタ(2008)に出力する。
テストパターン数レジスタ(2006)は、テストパターン発生装置(100)によってFIFO(101)に入力されるテストパターン数の値が格納される。テストパターン数レジスタ(2006)の値は、例えば、スキャンテストを実施する前に、テスト制御装置(200)の外部から設定される。また、テストパターン数レジスタ(2006)の値は、予め固定値として設定されていてもよい。テストパターン数レジスタ(2006)は、自身に格納された値を比較器(2007)に出力する。
比較器(2007)は、テストパターンカウンタ(2005)から出力された値と、テストパターン数レジスタ(2006)から出力された値とを比較し、比較結果に応じた値を終了信号としてテスト結果圧縮装置(202)に出力する。例えば、比較器(2007)は、比較した値が一致する場合にはアサートされた信号(“1”の値)を出力し、比較した値が一致しない場合にはネゲートされた信号(“0”の値)を出力する。
セレクタ(2008)は、比較器(2002)から出力された値に応じて、テストパターンカウンタ(2005)の値を、インクリメントするか否かを選択する回路である。より具体的には、セレクタ(2008)は、比較器(2002)から出力された値が“0”である場合には、テストパターンカウンタ(2005)の値に“1”を加算し、比較器(2002)から出力された値が“1”である場合には、テストパターンカウンタ(2005)の値に“1”を加算しない。すなわち、テストパターンカウンタ(2005)の値をインクリメントする場合には、セレクタ(2008)は、テストパターンカウンタ(2005)の値に“1”を加算した値を、セレクタ(2009)に出力する。一方で、テストパターンカウンタ(2005)の値をインクリメントしない場合には、セレクタ(2008)は、テストパターンカウンタ(2005)の値を、そのままセレクタ(2009)に出力する。
セレクタ(2009)は、テスト制御装置(200)の内部で出力される開始信号の値に応じて、テストパターンカウンタ(2005)の値を、インクリメントするか又はそのままの値とするか、初期化するかを選択する回路である。より具体的には、セレクタ(2009)は、開始信号の値が“1”である場合には、テストパターンカウンタ(2005)の値をインクリメント又はそのままの値とし、開始信号の値が“0”である場合には、テストパターンカウンタ(2005)の値を初期化する。すなわち、テストパターンカウンタ(2005)の値をインクリメント又はそのままの値とする場合には、セレクタ(2009)は、セレクタ(2008)から出力された値を、テストパターンカウンタ(2005)に出力して格納する。一方で、テストパターンカウンタ(2005)の値を初期化する場合には、セレクタ(2009)は、初期値“0”を、テストパターンカウンタ(2005)に出力して格納する。
なお、このインクリメント、そのままの値の維持、又は、初期化は、第2クロック信号(210)に同期したタイミングで行われる。言い換えると、このインクリメント、そのままの値の維持、又は、初期化は、テスト制御装置(200)に第2クロック信号(210)のエッジが入力されたタイミングで行われる。
この動作によれば、FIFO(101)が空でなく、スキャンチェーン(2010)にスキャンテストデータがスキャンインされている場合にスキャンシフト動作の回数がカウントされる。そして、1つのテストパターンにおけるスキャンテストを開始してからのスキャンシフト動作の回数が、そのテストパターンに含まれる全てのスキャンテストデータがスキャンチェーン(2010)に入力される回数に達した場合、テストパターンカウンタ(2005)の値に“1”が加算される。言い換えると、1つのテストパターンにおける全てのスキャンテストデータがスキャンチェーン(2010)に入力される度に、テストパターンカウンタ(2005)の値に“1”が加算される。そして、FIFO(101)から全てのテストパターン(全てのスキャンテストデータ)が出力されると、テストパターンカウンタ(2005)の値が初期化される。よって、テストパターンカウンタ(2005)は、スキャンチェーン(2010)に入力されたテストパターン数をカウントすることができる。
また、この動作によれば、テスト制御装置(200)は、スキャンテストを開始してからスキャンチェーン(2010)に入力されたテストパターン数が、全てのテストパターンがスキャンチェーン(2010)に入力される数に達した場合、アサートされた終了信号をテスト結果圧縮装置(202)に出力する。言い換えると、FIFO(101)から全てのテストパターン(全てのスキャンテストデータ)が出力されたときに、その旨を終了信号によってテスト結果圧縮装置(202)に通知することができる。
[動作フロー]
続いて、図6を参照して、本実施の形態1に係る半導体装置(1B)の動作について説明する。図6は、本実施の形態1に係る半導体装置(1B)の動作波形を示す図である。
図6において、上部(線HLより上の波形)は、図1に示す第1電源領域(10)における回路の波形を示し、下部(線HLより下の波形)は、図1に示す第2電源領域(20)における回路の波形を示す。この波形において、第1クロック信号と第2クロック信号は、周波数が同じであるが、それぞれのエッジが揃っていない。つまり、第1クロック信号と第2クロック信号は、同期していない。以下、図2に示す半導体装置(1B)を例として、図3〜図5も参照しながら動作について説明する。
スキャンシフト回数レジスタ(2001)とテストパターン数レジスタ(2006)には、被テスト回路(201)に供給するスキャンテストデータの内容に合わせて任意の値を予め格納しておく。値の格納の方法としては、例えば、スキャンシフト回数レジスタ(2001)とテストパターン数レジスタ(2006)を、データ設定用のシフトレジスタを含む構成とし、外部から順に値を入力することで値を格納するようにしてもよい。なお、この作業は、テスト前のみ実施すればよいため、低速で実施してもテスト時間のオーバヘッドとはならない。
なお、図6は、テストパターン数が“5”であり、1つのテストパターンにおけるスキャンテストデータ数が“3”である例について示している。よって、この例では、スキャンシフト回数レジスタ(2001)に格納される値は、“3”であり、テストパターン数レジスタ(2006)に格納される値は、“5”である。
外部からスキャンテストの開始が指示されると、テストパターン発生装置(100)は、第1クロック信号(110)に同期してのスキャンテストデータのFIFO(101)への書き込みを開始する。図6に示すように、テストパターン発生装置(100)は、スキャンテストデータ“A”〜“O”を、順次、FIFO(101)に格納する。
スキャンテストデータのFIFO(101)への書き込みは、テストパターン発生装置(100)がスキャンテストデータをFIFO(101)に供給できる状態にあるのであれば、FIFO(101)が溢れない限り(フル信号がアサートされていない限り)、全てのスキャンテストデータをFIFO(101)に書き終わるまで連続して実行される。
なお、スキャンテストデータの入力は、半導体装置(1B)の外部からその開始を指示する信号をテストパターン発生装置(100)に入力することで開始されるようにしてもよく、半導体装置(1B)の内部でその開始を指示する信号を生成してテストパターン発生装置(100)に入力することで開始されるようにしてもよい。
スキャンテストデータがFIFO(101)に書き込まれ始めると、FIFO(101)の空判定回路(41)は、空状態であることを示していたエンプティ信号をネゲートし、FIFO(101)が空状態でないことを示すように変更する。エンプティ信号がネゲートされると、テスト制御装置(200)の開始信号がアサートされる。これにより、スキャンイネーブル信号がアサートされて、半導体装置(1B)のスキャンテスト動作が開始される。
スキャンテストデータは、第2クロック信号(210)に同期してFIFO(101)から読み出され、その一部分は入力データとして伸長回路(2011)に入力され、他の部分はマスクデータとしてテスト結果圧縮装置(202)に入力される。テスト結果圧縮装置(202)に入力されたマスクデータは、圧縮回路(2012)の出力値と、ANDゲート(2021,2022)によって論理積演算(AND演算)される。これは、スキャンチェーン(2010)から圧縮回路(2012)を経由して出力されるテスト結果データには、不定値であるものがあり(つまり“0”(Low)であるか“1”(High)であるか定まらない値があり)、そのような不定値を強制的に“0”(Low)の状態に固定するためのものである。
ANDゲート(2021,2022)から出力された論理積演算後のテスト結果データは、圧縮回路(2023)に入力される。圧縮回路(2023)は、テスト制御装置(200)から入力されるスキャンイネーブル信号がアサートされている間(つまり、スキャンシフト動作が実施されている間)、入力されたテスト結果データを、現在保持している値を引き継ぎながら圧縮符号に変換し続ける。
一方で、第2クロック信号(210)に同期してスキャンシフト動作が行われる度に、スキャンシフトカウンタ(2000)の値に“1”が加算されていく。そして、スキャンシフトカウンタ(2000)の値がスキャンシフト回数レジスタ(2001)の値と一致した場合、1つのテストパターンにおけるスキャンテストデータが被テスト回路(201)に全て入力されたことになる。このとき、スキャンイネーブル信号がネゲートされる。
例えば、図6においては、読み出しデータとして、3つのスキャンテストデータ“A”〜“C”が読み出されてスキャンチェーン(2010)に入力され、次の読み出しデータがスキャンテストデータ“D”となっている状態が該当する。
被テスト回路(201)は、テスト制御装置(200)から入力されるスキャンイネーブル信号がネゲートされたとき、スキャンテストにおけるキャプチャ動作を行う。この時、被テスト回路(201)は、FIFO(101)からのスキャンテストデータの読み出しを中断する。すなわち、図6に示すように、読み出しデータがスキャンテストデータ“D”である状態が維持される。
そして、スキャンシフトカウンタ(2000)の値は、初期値に更新される。すなわち、図6に示すように、スキャンシフトカウンタ(2000)の値が“3”であり、スキャンシフト回数レジスタ(2001)の値“3”と一致するため、スキャンシフトカウンタ(2000)の値は“0”に初期化される。また、この時、テストパターンカウンタ(2005)の値は、インクリメントされる。すなわち、図6に示すように、1つ目のテストパターンにおける全てのスキャンテストデータ“A”〜“C”がスキャンチェーン(2010)に入力されたため、テストパターンカウンタ(2005)の値は、“0”から“1”に更新される。
スキャンシフトカウンタ(2000)が初期化されることで、再び、スキャンイネーブル信号がアサートされる。すなわち、スキャンシフトカウンタ(2000)の値が“0”に初期化されて、スキャンシフト回数レジスタ(2001)の値“3”と不一致となるため、図6に示すように、その場合の比較器(2002)の出力値に応じてスキャンイネーブル信号がアサートされる。これにより、被テスト回路(201)によるFIFO(101)からのスキャンテストデータの読み出し及びスキャンシフト動作と、テスト結果圧縮装置(202)による圧縮動作とが再開される。すなわち、図6に示すように、スキャンテストデータ“D”が読み出されて、スキャンチェーン(2010)に入力される。なお、これ以降に、スキャンテストデータ“D”〜“F”がスキャンチェーン(2010)に入力されるのと同時に、スキャンテストデータ“A”〜“C”によるテスト結果データがスキャンチェーン(2010)からテスト結果圧縮装置(202)に出力される。
これらの一連の動作は、テストパターンカウンタ(2005)の値が、テストパターン数レジスタ(2006)に設定された値と一致し、終了信号がアサートされるまで繰り返される。すなわち、図6に示すように、最後となる5つ目のテストパターン(スキャンテストデータは、“M”〜“O”)の入力が完了し、テストパターンカウンタ(2005)の値“5”が、テストパターン数レジスタ(2006)の値“5”と一致するため、比較器(2007)は、テスト結果圧縮装置(202)に出力する終了信号をアサートする。
ここで、全てのスキャンテストデータの入力後も、テストパターンカウンタ(2005)とテストパターンカウンタ(2005)を更新して終了信号を出力することを可能とするため、図6に示すように、開始信号がネゲートされるタイミングは、エンプティ信号がネゲートされるタイミングよりも若干遅くなる。例えば、上述の開始信号を出力する回路は、比較器(2007)から終了信号が出力されたときに、開始信号をネゲートする。また、図6に示すように、スキャンシフトカウンタ(2000)の値が初期化されたとしても、終了信号が出力されているときには、有効でないスキャンシフト動作を防止するために、スキャンイーブル信号をネゲートしたままとする。
終了信号がアサートされると、テスト結果圧縮装置(202)は、圧縮回路(2023)に格納された圧縮符号を取り出して、予め用意された期待値と照合し、テスト結果を判定する。テスト結果圧縮装置(202)は、最終符号と期待値とを照合した結果、最終符号と期待値とが一致している場合、被テスト回路(201)が正常と判定し、最終符号と期待値とが不一致である場合、被テスト回路(201)が異常と判定する。なお、このテスト結果と期待値との比較は、テストの終了後にのみ実施すればよいため、低速で実施してもテスト時間のオーバヘッドとはならない。
なお、図6では、最後(5つ目)のテストパターンにおけるスキャンテストデータ“M”〜“O”はスキャンチェーン(2010)に入力されるが、その後、スキャンイネーブル信号はネゲートされたままとなるため、そのテスト結果データは、テスト結果圧縮装置(202)における圧縮符号の生成に利用されない。すなわち、最後(5つ目)のテストパターンは、その1つ前(4つ目)のテストパターンにおけるスキャンテストデータ“M”〜“O”は、テスト結果データを読み出すためのダミーのスキャンテストデータとして機能する。よって、厳密には、1つ目〜4つ目までのテストパターンに対するテスト結果データによって被テスト回路(201)の状態が判定される。
また、1つ目のテストパターンにおけるスキャンテストデータ“A”〜“C”では、その前にテストパターンが存在しない。そのため、図4にも示すように、1つ目のテストパターンにおけるスキャンテストデータ“A”〜“C”のマスクデータは、全て“0”とされる。これにより、1つ目のテストパターンにおけるスキャンテストデータをスキャンチェーン(2010)に入力した際に、スキャンチェーン(2010)から出力されるデータを“0”に固定して、テスト結果圧縮装置(202)における圧縮符号の生成に影響を与えないようにする。
ここで説明したスキャンテストの動作は、先に説明したテストパターン発生装置(100)からFIFO(101)へのスキャンテストデータの書き込みとは独立して、並列に行われる。そのため、実施の形態1においては、FIFO(101)からのスキャンテストデータの読み出し速度は、スキャンテストデータのFIFO(101)への書き込み速度よりも速くないことが好ましい。
上述したように、被テスト回路と、そのスキャンテストデータを供給する装置とが、それぞれ異なる電源電圧を供給する電圧配線に接続されており、一方の電圧が他方の電圧に比べて相対的に変動する場合がある。この場合、スキャンテストデータの伝送経路において、ホールドタイムが厳しくなるケースと、セットアップタイムが厳しくなるケースの2通りのケースが存在する。
それに対して、以上に説明したように、本実施の形態1においては、スキャンテストデータの伝送経路が、電源を異にする論理境界を跨る場合におけるタイミング違反の対策として、遅延をつけてホールドタイムマージンを大きく確保するのではなく、非同期FIFOを用いている。
すなわち、本実施の形態1に係る半導体装置(1A,1B)では、テストパターン発生装置(100)が、第1のクロック信号(110)に同期して、複数のテストデータ(スキャンテストデータの入力データ)をFIFO(101)に順次書き込む。そして、テスト制御装置(200)が、複数のテストデータのFIFO(101)への書き込みと並行して、第1のクロック信号(110)とは同期していない第2のクロック信号(210)に同期して、FIFO(101)に格納された複数のテストデータを順次読み出しての被テスト回路(201)のスキャンテストを実施する。
非同期FIFOを用いることによって、スキャンテストデータを供給する回路と、そのスキャンテストデータを用いてスキャンテストを実行する回路とが、異なる電位で回路が駆動される別々の領域に配置されていたとしても、スキャンテストデータの伝送経路における伝搬遅延に律速されることなく、それぞれの領域で最適な速度で回路を駆動させることができる。
これによれば、テストデータをFIFO(101)に蓄積することができるため、被テスト回路(201)のスキャンテストを、第1のクロック信号(110)の影響を受けることなく、第2のクロック信号(210)に同期して実施することができる。よって、タイミング違反を発生させることがない。また、全てのスキャンテストデータのロード後に、スキャンテストを実行するといった必要も無い。つまり、スキャンテストデータのロードとスキャンテストとを同時に並行して実施することができるため、スキャンテストにかかる時間を短縮することができる。スキャンテストにかける時間を短縮することで、例えば、ランタイムテストの実行時間(FTTI:フォールト・トレラント・タイム・インターバル)に関する要求事項(例えば、10ミリ秒以内にランタイムテストを完了させること)を満たすことが出来るようになる。
なお、本実施の形態1では、相互にクロック信号が非同期である領域を跨る場合におけるスキャンテストの実行時間の改善を明確にするために、説明の都合上、第1電源領域と第2電源領域(第1クロック信号と第2クロック信号)のように、スキャンテストデータの伝送経路が非同期の領域を跨る構成を例として説明したが、同一の電源領域に配置された回路同士の転送、及び、同一のクロック信号で駆動されている回路同士のスキャンテストデータの伝送にも利用することができる。
本実施の形態1で示した回路図は、本実施の形態1を説明するために各構成要素を模式的に示したものであって、実際に回路を設計する場合には、印加されるクロック及び適用するスキャンテストの仕様に合わせて、スキャンテストデータを供給するクロックサイクルを調整する回路(例えばフリップフロップ)等の付加回路が必要であることは言うまでもない。これは、以降の実施の形態においても同様とする。
<実施の形態2>
続いて、実施の形態2について説明する。以下の実施の形態2の説明では、上述した実施の形態1と同様の内容については、同一の符号を付す等して、適宜、その説明を省略する。
[全体構成]
図7を参照して、実施の形態2に係る半導体装置(1C)の構成について説明する。図7は、実施の形態2に係る半導体装置(1C)の構成図である。
図7に示すように、実施の形態2に係る半導体装置(1C)は、実施の形態1に係る半導体装置(1B)と比較して、さらに、テストクロック制御装置(203)を有する点が異なる。
テストクロック制御装置(203)は、第2電源領域(20)に含まれる。テストクロック制御装置(203)は、第2クロック信号(210)が入力される。すなわち、テストクロック制御装置(203)は、第2クロック信号(210)によって駆動される。また、テストクロック制御装置(203)は、第2クロック信号(210)に基づいて、スキャンテストクロックを生成し、被テスト回路(201)に出力する。すなわち、本実施の形態2における被テスト回路(201)は、実施の形態1と比較して、第2クロック信号(210)に代えて、スキャンテストクロックによって駆動される。また、本実施の形態2では、FIFO(101)は、エンプティ信号をテストクロック制御装置(203)にも出力する。
[テストクロック制御装置(203)]
続いて、図8を参照して、本実施の形態2に係るテストクロック制御装置(203)の構成について説明する。図8は、本実施の形態2に係るテストクロック制御装置(203)のブロック図である。
図8に示すように、テストクロック制御装置(203)は、フリップフロップ(203A)と、ANDゲート(203B)とを有する。
フリップフロップ(203A)は、一時停止信号と第2クロック信号(210)が入力される。フリップフロップ(203A)は、第2クロック信号(210)の立ち下りエッジに応じて、一時停止信号の値を自身に格納する。フリップフロップ(203A)は、自身に保持している一時停止信号の値を、ANDゲート(203B)に出力する。
ここで、一時停止信号は、FIFO(101)からテストクロック制御装置(203)に入力されるエンプティ信号がアサートされると、ネゲートされる信号である。一方、一時停止信号は、FIFO(101)からテストクロック制御装置(203)に入力されるエンプティ信号がネゲートされると、アサートされる。例えば、テストクロック制御装置(203)は、FIFO(101)から入力されるエンプティ信号に応じて、一時停止信号をANDゲート(203B)に出力する回路を有する。この回路は、エンプティ信号がアサートされたときに、一時停止信号をネゲートし、エンプティ信号がネゲートされたときに、一時停止信号をアサートする。
ANDゲート(203B)は、フリップフロップ(203A)から出力された値と、第2クロック信号(210)とが入力される。ANDゲート(203B)は、フリップフロップ(203A)からの値と、第2クロック信号(210)の値とをAND演算(論理積演算)して、その結果となる値をスキャンテストクロックとして被テスト回路(201)に出力する。よって、ANDゲート(203B)は、フリップフロップ(203A)からの値に応じて、第2クロック信号(210)をそのまま出力するか、その出力を停止するかのいずれかの動作をとる。
これにより、図9に示すように、スキャンテストクロックが出力される。図9は、図8に示すテストクロック制御装置(203)における動作波形を示す図である。このように、一時停止信号が“1”(High)の状態である場合、スキャンテストクロックとして、第2クロック信号(210)がそのまま出力される。また、一時停止信号が“0”(Low)の状態である場合、スキャンテストクロックとして、“0”(Low)の状態が継続した信号が出力される。すなわち、FIFO(101)が空でない場合には、第2クロック信号(210)がそのまま被テスト回路(201)に出力され、FIFO(101)が空である場合には、第2クロック信号(210)の被テスト回路(201)への出力が抑止される。
[動作フロー]
続いて、図10を参照して、本実施の形態2に係る半導体装置(1C)の動作について説明する。図10は、実施の形態2に係る半導体装置(1C)の動作波形を示す図である。
図10において、上部(線HLより上の波形)は、図7に示す第1電源領域(10)における回路の波形を示し、下部(線HLより下の波形)は、図7に示す第2電源領域(20)における回路の波形を示す。この波形において、第1クロック信号と第2クロック信号は、周波数が同じであるが、それぞれのエッジが揃っていない。つまり、第1クロック信号と第2クロック信号は、同期していない。以下、図7に示す半導体装置(1C)を例として、図3〜図5も参照しながら動作について説明する。
スキャンテストの開始の指示に応じて、FIFO(101)へのスキャンテストデータデータの書き込みが始まる。なお、スキャンテスト動作が開始するまでの期間の動作については、実施の形態1と同じであるため、その動作の説明は省略する。
実施の形態1と同様に、スキャンテストデータは、第2クロック信号(210)に同期してFIFO(101)から取り出され、その一部分は入力データとして伸長回路(2011)に入力され、他の部分はマスクデータとしてテスト結果圧縮装置(202)に入力される。テスト結果圧縮装置(202)では、マスクデータと、圧縮回路(2012)の出力値とをANDゲート(2021,2022)によって論理積演算し、その結果を圧縮回路(2023)によって前値を引き継ぎながら圧縮符号に変換する。
実施の形態1との違いは、スキャンテストを実行している最中に、FIFO(101)からスキャンテストデータが取り出せない状態(つまり、FIFO(101)が空の状態)になった時の動作である。なお、本実施の形態2では、この以降に説明する動作によって、実施の形態1において、FIFO(101)が空になり、スキャンテストデータが取り出せない状態が発生することで、スキャンチェーン(2010)にスキャンインするデータが正常なもので無くなりスキャンテストそのものが成立しなくなってしまうという問題を解決している。
実施の形態2では、そのような状態を回避するために、半導体装置(1C)にテストクロック制御装置(203)が備えられている。テストクロック制御装置(203)は、FIFO(101)のエンプティ信号を監視しており、FIFO(101)が空になった時、一時停止信号をネゲートしてスキャンテストクロックを停止させる。すなわち、図10に示すように、スキャンテストクロックを停止させる。
図10は、スキャンテストデータ“A”〜“D”をFIFO(101)に書き込んだ時点で、何らかの原因で一時的にFIFO(101)に対してスキャンデータの書き込みができなくなってしまった場合について示している。この場合、FIFO(101)からスキャンテストデータ“C”が読み出されると、グレイコードカウンタ(32)とグレイコードカウンタ(42)のそれぞれが示すレジスタが一致するため、エンプティ信号がアサートされる。すなわち、このレジスタは、スキャンテストデータ“D”が格納されるレジスタとなる。そのため、スキャンテストデータ“D”がレジスタ(44)に読み出され、レジスタ群(34)は空となる。
これに応じて、一時停止信号がネゲートされるため、テストクロック制御装置(203)は、被テスト回路(201)に対する第2クロック信号(210)の出力を抑止する。すなわち、“0”(Low)の状態が維持されたスキャンテストクロックが被テスト回路(201)に出力される。
ここで、テスト制御装置(200)は、FIFO(101)からのエンプティ信号がアサートされている間、FIFO(101)に読み出し信号として出力しているスキャンイネーブル信号をネゲートする。これにより、FIFO(101)は、グレイコードカウンタ(42)におけるグレイコードの更新を中断する。すなわち、図10に示すように、FIFO(101)が出力する読み出しデータとしてスキャンテストデータ“D”が維持される。
また、テスト制御装置(200)は、FIFO(101)からのエンプティ信号がアサートされている間、テスト結果圧縮装置(202)に出力しているスキャンイネーブル信号をネゲートする。これにより、テスト結果データの圧縮動作を中断し、被テスト回路(201)から新たなテスト結果データが出力されていない場合における圧縮動作を回避する。
なお、グレイコードの更新の中断と、テスト結果データの圧縮動作を中断は、上述したようなスキャンイネーブル信号のネゲートに代えて、出力回路(40)とテスト結果圧縮装置(202)を、被テスト回路(201)と同様に、テストクロック制御装置(203)からのスキャンテストクロックに同期して動作させるようにすることで実施してもよい。ただし、エンプティ状態を解除可能とするために(エンプティ信号のネゲートを可能とするために)、空判定回路(41)には、第2クロック信号(210)を供給してその動作を停止させないようにする。
また、テスト制御装置(200)は、FIFO(101)から入力されるエンプティ信号がネゲートされている間、スキャンシフトカウンタ(2000)のカウントを中断する。すなわち、図10に示すように、スキャンシフトカウンタ(2000)の値として“0”が維持される。
被テスト回路(201)は、スキャンテストクロックによって駆動されているため、スキャンテストクロックが“0”(Low)の状態で維持されるとスキャンシフト動作が中断される。つまり、正常でないデータをスキャンチェーン(2010)に入力するスキャンシフト動作は発生しないことになる。
FIFO(101)に対するスキャンテストデータの書き込みが再開されると、FIFO(101)が空の状態で無くなりエンプティ信号がネゲートされる。エンプティ信号がネゲートされると、テストクロック制御装置(203)は、一時停止信号をネゲートする。これにより、テストクロック制御装置(203)は、スキャンテストクロックとして、第2クロック信号(210)の被テスト回路(201)への出力を再開する。すなわち、図10に示すように、被テスト回路(201)は、スキャンテストデータ“D”以降のスキャンテストデータの読み出しを開始する。
また、このとき、テスト制御装置(200)は、FIFO(101)からのエンプティ信号がネゲートに応じて、FIFO(101)に読み出し信号として出力しているスキャンイネーブル信号をアサートする。これにより、FIFO(101)は、グレイコードカウンタ(42)におけるグレイコードの更新を再開する。これにより、FIFO(101)は、グレイコードカウンタ(42)におけるグレイコードの更新を再開する。
その結果、中断が発生したレジスタからスキャンテストデータの取り出しが行われ、スキャンシフト動作が再開される。すなわち、図10に示すように、FIFO(101)が出力する読み出しデータが、被テスト回路(201)からのスキャンテストデータの読み出しに同期して、スキャンテストデータ“E”以降のスキャンテストデータに順次更新される。
ここで、本実施の形態2に係るテスト制御装置(200)の構成は、実施の形態1と殆ど同じであるが、上述したように、スキャンシフトカウンタ(2000)に対して、前値を保持させる機構を設けた点が実施の形態1とは異なる。本実施の形態2に係るテスト制御装置(200)には、スキャンシフトカウンタ(2000)の値の更新を中断するために、エンプティ信号に基づく制御信号をスキャンシフトカウンタ(2000)に出力する回路(図示せず)が追加されている。
この制御信号は、テストクロック制御装置(203)における一時停止信号と同様の働きをする。この回路は、FIFO(101)が空である時に、スキャンシフトカウンタ(2000)のカウンタの値の更新を中断する。より具体的には、この回路は、FIFO(101)からテスト制御装置(200)に入力されるエンプティ信号がアサートされた場合、スキャンシフトカウンタ(2000)に出力する制御信号をアサートする。スキャンシフトカウンタ(2000)は、アサートされた制御信号が入力されている場合、セレクタ(2002)から出力値に関わらず、自身の値の更新を抑止する。一方、この回路は、FIFO(101)からテスト制御装置(200)に入力されるエンプティ信号がネゲートされた場合、スキャンシフトカウンタ(2000)に出力する制御信号をネゲートする。スキャンシフトカウンタ(2000)は、ネゲートされた制御信号が入力されている場合、自身の値を更新する。
なお、それ以外のテストクロック制御装置(203)の動作については、実施の形態1と同様であるため、動作の説明は省略する。また、終了信号がアサートされた後の動作も、実施の形態1と同じであるため、その動作の説明も省略する。
以上に説明したように、本実施の形態2においては、実施の形態1の構成に対してテストクロック制御装置(203)を加えることで、実施の形態1におけるFIFO(101)が空になった場合における問題を排除することができる。
すなわち、本実施の形態2では、空判定回路(41)によってFIFO(101)が空であると判定された場合、FIFO(101)からのテストデータの読み出しを停止させる。より具体的には、テストクロック制御装置(203)が、空判定回路(41)によってFIFO(101)が空であると判定された場合、被テスト回路(201)に対する第2のクロック信号の供給を停止するようにしている。これによれば、被テスト回路(201)に対して、空の状態のFIFO(101)から有効でないテストデータがスキャンインされることを防止することができる。
実施の形態1では、FIFO(101)を空にしないようにするために比較的容量の大きなFIFO(101)を用いたり、FIFO(101)に書き込むスキャンテストデータを取得するリソースを占有する必要があった。しかしながら、実施の形態2では、そのような制約に縛られないため、比較的容量の小さなFIFO(101)の利用や、データを取得するリソースの共有化による割り込みを許容することが出来るようになる。その結果、システムを構築するための、回路オーバヘッドを削減することができる。
なお、以上の説明では、図2に示した半導体装置(1B)に対して、テストクロック制御装置(203)を適用した例について説明したが、これに限られない。当然に、図1に示した半導体装置(1A)に対して、テストクロック制御装置(203)を適用することもできる。
<実施の形態3>
続いて、実施の形態3について説明する。以下の実施の形態3の説明では、上述した実施の形態2と同様の内容については、同一の符号を付す等して、適宜、その説明を省略する。
[全体構成]
まず、図11を参照して、本実施の形態3に係る半導体装置(1D)の構成について説明する。図11は、本実施の形態3に係る半導体装置(1D)の構成図である。本実施の形態3に係る半導体装置(1D)は、スキャンテスト機構を利用したランタイムテストの実行に適した実施の形態である。
図11に示すように、実施の形態3に係る半導体装置(1D)は、実施の形態2に係る半導体装置(1C)と比較して、テストパターン発生装置(100)に代えてテストパターン読み出し装置(102)を有し、さらに、システムコントローラ(103)及びメモリ装置(104)を有する点が異なる。
テストパターン読み出し装置(102)、システムコントローラ(103)及びメモリ装置(104)は、第1電源領域(10)に含まれる。テストパターン読み出し装置(102)は、メモリ装置(104)と電気的に接続されている。テストパターン読み出し装置(102)と、システムコントローラ(103)と、メモリ装置(104)とは、システムバスを介して電気的に接続されている。
テストパターン読み出し装置(102)は、メモリ装置(104)に格納された複数のスキャンテストパターンを順次読み出し、FIFO(101)に書き込む。
システムコントローラ(103)は、半導体装置(1D)を統括的に制御する回路である。システムコントローラ(103)は、半導体装置(1D)におけるスキャンテストの開始の制御と、スキャンテスト結果の判定を実施する。すなわち、本実施の形態3では、実施の形態1、2と異なり、テスト結果圧縮装置(202)に代えて、システムコントローラ(103)がスキャンテスト結果を判定する。
メモリ装置(104)は、複数のスキャンテストデータが格納される記憶装置(記憶回路)である。メモリ装置(104)には、全てのスキャンテストデータが格納される。メモリ装置(104)は、例えばRAM(Random Access Memory)、ROM(Read Only Memory)、又はFLASHメモリ等の不揮発性の記憶装置である。
実施の形態3がランタイムテストの実行に適している理由は、スキャンテストの実行の全てを半導体装置(1D)に内蔵された回路で実行できるからである。より具体的には、ランタイムテスト(スキャンテスト)を開始する前に、システムコントローラ(103)は、テスト制御装置(200)におけるスキャンシフト回数レジスタ(2001)及びテストパターン数レジスタ(2006)の値を設定する。例えば、これらの値は、メモリ装置(104)に予め格納しておく。システムコントローラ(103)は、メモリ装置(104)から値を読み出して、読み出した値を、テスト制御装置(200)に出力する。テスト制御装置(200)は、システムコントローラ(103)から出力された値を、スキャンシフト回数レジスタ(2001)及びテストパターン数レジスタ(2006)に設定する。
スキャンテストを開始する場合、システムコントローラ(103)は、スキャンテストの開始を指示する開始指示信号をテストパターン読み出し装置(102)に出力する。テストパターン読み出し装置(102)は、システムコントローラ(103)からの開始指示信号に応じて、メモリ装置(104)からスキャンテストデータを取得してFIFO(101)に書き込んでいく動作を開始する。
そして、上述したように、FIFO(101)にスキャンテストデータが蓄積され、エンプティ信号がネゲートされるとスキャンテストが開始される。ここで、本実施の形態3では、スキャンテストが完了すると、テスト制御装置(200)は、テスト結果圧縮装置(202)に代えて、システムコントローラ(103)に終了信号を出力する。また、テスト結果圧縮装置(202)は、圧縮回路(2023)が生成する圧縮符号を、常時、システムコントローラ(103)に出力している。システムコントローラ(103)は、テスト制御装置(200)からの終了信号に応じて、テスト結果圧縮装置(202)から出力された最終的な圧縮符号を取得する。そして、システムコントローラ(103)は、取得した圧縮符号と期待値とを比較してテスト結果を判定する。
ここで、例えば、期待値は、スキャンテストデータとともに、メモリ装置(104)に予め格納しておく。そして、システムコントローラ(103)は、テスト制御装置(200)からの終了信号に応じて、メモリ装置(104)に格納された期待値を取得し、圧縮符号と比較する。
以上に説明したように、本実施の形態3では、半導体装置(1D)は、複数のテストデータが格納されるメモリ装置(104)を備えている。そして、テストパターン読み出し装置(102)は、メモリ装置(104)に格納された複数のテストデータを順次、FIFO(101)に書き込むようにしている。これによれば、スキャンテストの実行の全てを半導体装置(1D)に内蔵された回路で実行できる。よって、スキャンテストを実行するために他の装置を必要としないため、ランタイムテストの実行に適している。
なお、以上の説明では、図7に示した半導体装置(1C)に対して、各装置(102,103,104)を適用した例について説明したが、これに限られない。当然に、図1、2に示した半導体装置(1A,1B)に対して、各装置(102,103,104)を適用してもよい。
<実施の形態3の変形例>
続いて、図12を参照して、実施の形態3の変形例に係る半導体装置(1E)について説明する。図12は、実施の形態3の変形例に係る半導体装置(1E)を示すブロック図である。
図12に示すように、実施の形態3の変形例に係る半導体装置(1E)は、実施の形態3に係る半導体装置(1D)と比較して、さらに、DMAコントローラ(109)を有する点が異なる。また、実施の形態3の変形例に係る半導体装置(1E)は、実施の形態3に係る半導体装置(1D)と比較して、半導体装置(1E)が外部記憶装置(2)と接続される点が異なる。また、実施の形態3の変形例に係る半導体装置(1E)は、実施の形態3に係る半導体装置(1D)と比較して、テストパターン読み出し装置(102)と、システムコントローラ(103)と、メモリ装置(104)と、外部記憶装置(2)とがシステムバスを介して接続される点が異なる。ここで、DMAコントローラ(109)は、第1電源領域(10)に含まれる。
外部記憶装置(2)は、全てのスキャンテストデータと、テスト結果データの圧縮符号の期待値とが格納される装置である。外部記憶装置(2)は、例えばROM、FLASHメモリ、又はハードディスク等の不揮発性の記憶装置である。
図11に示した実施の形態3に係る半導体装置(1D)では、スキャンテストデータの読み出しのため、テストパターン読み出し装置(102)は、専用のメモリ装置(104)(例えばFLASHメモリのような書換え可能な記憶素子)に直接アクセスしていた。それに対して、図12に示す本実施の形態3の変形例に係る半導体装置(1E)では、テストパターン読み出し装置(102)がメモリ装置(2)に対して直接アクセスするのではなく、システムコントローラ(103)の制御に従って、システムバスを介してスキャンテストデータの読み出しが行われる。
本実施の形態3の変形例では、スキャンテストの開始前に、システムコントローラ(103)は、外部記憶装置(2)からメモリ装置(104)へのデータの転送を要求する転送要求信号を、システムバスを介してDMAコントローラ(109)に出力する。DMAコントローラ(109)は、この転送要求信号に応じて、外部記憶装置(2)に格納された全てのスキャンテストデータと期待値を、システムバスを介してメモリ装置(104)に転送する。以降は、上述した実施の形態3と同様に、メモリ装置(104)に格納されたスキャンテストデータを利用してスキャンテストが実行されるため、その説明は省略する。
本実施の形態3の変形例の利点は、メモリ装置(104)として汎用のRAMを使用し、スキャンテストデータそのものを、半導体装置(1E)の外部の記憶装置(2)にもたせることが出来る点である。RAMは、例えば、SRAM(Static RAM)又はDRAM(Dynamic RAM)等である。これは、実施の形態2で説明したように、第2電源領域(20)に配置されているスキャンテスト機構が、テストパターン読み出し装置(102)によるスキャンテストデータの読み出しとは、全く独立して動作することができるためである。
以上に説明したように、本実施の形態3の変形例では、システムコントローラ(103)及びDMAコントローラ(109)が、半導体装置(1E)に接続される外部記憶装置(2)から、複数のテストデータを取得し、メモリ装置(104)に格納するようにしている。これによれば、半導体装置(1E)に備えられたメモリ装置(104)ではなく、半導体装置(1E)の外部に接続する外部記憶装置(2)を交換するだけで、スキャンテストデータを容易に変更することができる。そのため、本実施の形態3の変形例によれば、スキャンテストデータ交換における作業コストを低減することができる。また、半導体装置(1E)の内部に、全てのスキャンテストデータが格納された記憶装置(メモリ装置104)を設けなくてよいため、半導体装置における面積オーバヘッドを削減することができる。
なお、以上の説明では、図7に示した半導体装置(1C)に対して、上述の各装置(102,103,104,109,2)を適用した例について説明したが、これに限られない。当然に、図1、2に示した半導体装置(1A,1B)に対して、上述の各装置(102,103,104,109,2)を適用してもよい。
[実施の形態4]
続いて、実施の形態4について説明する。以下の実施の形態4の説明では、上述した実施の形態3の変形例と同様の内容については、同一の符号を付す等して、適宜、その説明を省略する。
[全体構成]
図13を参照して、本実施の形態4に係る半導体装置(1F)の構成について説明する。図13は、本実施の形態4に係る半導体装置(1F)のブロック図である。本実施の形態4に係る半導体装置(1F)は、例えば、複数のCPUコア(被テスト回路(201))で構成される回路において、スキャンテスト機構を利用したランタイムテストの実行に適した実施の形態である。なお、図13では、外部記憶装置(2)の図示は省略している。
図13に示すように、実施の形態4に係る半導体装置(1F)は、実施の形態3の変形例に係る半導体装置(1E)と比較して、被テスト回路(201)及びテストクロック制御装置(203)を複数有する点と、さらに、入力選択回路(204)と、出力選択回路(205)とを有する点が異なる。ここで、入力選択回路(204)と、出力選択回路(205)は、第2電源領域(20)に含まれる。
すなわち、実施の形態4では、1つの被テスト回路(201)と、1つのテストクロック制御装置(203)とが対応するように、複数対存在する。実施の形態4では、図13に示すように、被テスト回路(201)とテストクロック制御装置(203)の対が、4対存在する例について示している。
これまでの実施の形態と同様に、第1電源領域(10)に配置される装置及び回路は、第1クロック信号(110)によって駆動され、第2電源領域(20)に配置される装置及び回路は、第2クロック信号(210)によって駆動される。
本実施の形態4では、FIFO(101)と、複数対の被テスト回路(201)及びテストクロック制御装置(203)のうち、いずれか1対の被テスト回路(201)及びテストクロック制御装置(203)とは、入力選択回路(204)を介して電気的に接続される。すなわち、入力選択回路(204)は、FIFO(101)と、複数対の被テスト回路(201)及びテストクロック制御装置(203)のうち、いずれか1対の被テスト回路(201)及びテストクロック制御装置(203)とを選択的に接続する回路である。
よって、FIFO(101)から出力されたスキャンテストデータは、複数の被テスト回路(201)のうち、入力選択回路(204)によって選択された1つの被テスト回路(201)に入力される。また、FIFO(101)から出力されたエンプティ信号は、複数のテストクロック制御装置(203)のうち、入力選択回路(204)によって選択された1つのテストクロック制御装置(203)に入力される。
また、複数対の被テスト回路(201)及びテストクロック制御装置(203)のうち、いずれか1対における被テスト回路(201)と、テスト結果圧縮装置(202)とは、出力選択回路(205)を介して電気的に接続される。すなわち、出力選択回路(205)は、複数対の被テスト回路(201)及びテストクロック制御装置(203)のうち、いずれか1対における被テスト回路(201)と、テスト結果圧縮装置(202)とを選択的に接続する回路である。
よって、複数の被テスト回路(201)のうち、出力選択回路(205)によって選択された1つの被テスト回路(201)から出力されたテスト結果データが、テスト結果圧縮装置(202)に入力される。
テスト制御装置(200)は、スキャンテスト対象となる1対の被テスト回路(201)及びテストクロック制御装置(203)を選択するように、入力選択回路(204)及び出力選択回路(205)を制御する。
また、テストクロック制御装置(203)は、そのテストクロック制御装置(203)と対となる被テスト回路(201)と電気的に接続されている。すなわち、複数のテストクロック制御装置(203)のそれぞれは、複数の被テスト回路(201)のうち、自身と対となる被テスト回路(201)に対してスキャンテストクロックを供給する。
[動作フロー]
続いて、図14を参照して、本実施の形態4に係る半導体装置(1F)の動作について説明する。図14は、実施の形態4に係る半導体装置(1F)の動作を示す動作フロー図である。図14では、縦線がその上部に記載された名称の回路又は装置の動作を示し、上から下に向かって時間が経過することを示している。横に伸びる矢印は、その起点となる回路又は装置の動作イベントが、その終点となる回路又は装置の動作イベントを発生させることを意味している。
図14における「被テスト回路A」から「被テスト回路D」は、それぞれ、図13における4つの被テスト回路(201)及びテストクロック制御装置(203)の対のうち、いずれかを示す。本実施の形態4に係る半導体装置(1F)の動作について、図13に示す半導体装置(1F)の例と、図14に示す動作フロー図を照らし合わせながら説明する。
まず、システムコントローラ(103)は、DMAコントローラ(109)を制御することで、外部記憶装置(2)から被テスト回路Aに対するスキャンテストデータと期待値を取得して、メモリ装置(104)に格納する。図14に示すように、最初は、システムコントローラ(103)は、テストパターン読み出し装置(102)及びテスト制御装置(200)に対して、被テスト回路Aのスキャンテストの開始を指示する。
すなわち、システムコントローラ(103)は、被テスト回路Aのスキャンテストの開始を指示する開始指示信号を、テストパターン読み出し装置(102)に出力する。被テスト回路Aのスキャンテストの開始を指示する開始指示信号に応じて、テストパターン読み出し装置(102)は、被テスト回路Aに対応する被テスト回路(201)のスキャンテストデータを、システムバスを介してメモリ装置(104)から取得し、FIFO(101)に書き込んでいく。
また、システムコントローラ(103)は、被テスト回路Aのスキャンテストの開始を通知するテスト開始信号を、テスト制御装置(200)に出力する。より具体的には、システムコントローラ(103)とテスト制御装置(200)との間は、被テスト回路A〜被テスト回路Dのそれぞれに対応するテスト開始信号線が4本接続されている。システムコントローラ(103)は、被テスト回路Aに対応するテスト開始信号をアサートする。
被テスト回路Aに対応するテスト開始信号のアサートに応じて、テスト制御装置(200)は、被テスト回路Aと、それと対となるテストクロック制御装置(203)とを選択するように指示する選択指示信号を、入力選択回路(204)及び出力選択回路(205)に出力する。この選択指示信号に応じて、入力選択回路(204)は、被テスト回路A及びそれと対になるテストクロック制御装置(203)と、FIFO(101)とを電気的に接続する。また、この選択指示信号に応じて、出力選択回路(205)は、被テスト回路A及びそれと対になるテストクロック制御装置(203)と、テスト結果圧縮装置(202)とを電気的に接続する。
その後、被テスト回路Aに対して、スキャンテストが実行される。なお、スキャンテストの動作については、実施の形態3及びその変形例と同じであるため、ここでは説明を省略する。
ここで、テスト制御装置(200)は、被テスト回路Aのスキャンテスト中は、エンプティ信号に応じてアサートされたスキャンイネーブル信号を、複数の被テスト回路(201)のうち、テスト対象の被テスト回路Aのみに出力し、他の被テスト回路B〜Dには出力しない。すなわち、テスト対象外の被テスト回路B〜Dには、ネゲートされたスキャンイネーブル信号が出力される。これにより、テスト対象となっていない被テスト回路(201)については、スキャンシフト動作は実施されず、通常動作が実施される。
被テスト回路Aのスキャンテストが終了すると、テスト制御装置(200)は、システムコントローラ(103)に対して、テスト対象の被テスト回路Aのスキャンテストの終了を通知する。すなわち、本実施の形態4では、スキャンテストが終了すると、テスト制御装置(200)は、スキャンテストが終了した被テスト回路Aのスキャンテストの終了を通知する終了信号を出力する。この終了信号に応じて、システムコントローラ(103)は、テスト結果圧縮装置(202)から取得した圧縮符号と、その終了信号で終了が通知された被テスト回路Aに対応する期待値とを比較して、テスト結果を判定する。
以降、図14に示すように、被テスト回路B〜Dに対しても、順番に、上述と同様にして、スキャンテストが実行される。すなわち、次は、外部記憶装置(2)から被テスト回路Bに対するスキャンテストデータと期待値が、メモリ装置(104)に読み出される。なお、被テスト回路Bに対するスキャンテストデータと期待値が、被テスト回路Aのものと同一である場合には、この読み出しは省略してもよい。システムコントローラ(103)は、被テスト回路Bをテスト対象としてテスト開始信号を出力し、入力選択回路(204)及び出力選択回路(205)は、被テスト回路B及びそれと対となるテストクロック制御装置(203)を選択する。これにより、被テスト回路Bのスキャンテストが実行される。
そして、終了信号によって被テスト回路Bのスキャンテストの終了がシステムコントローラ(103)に通知される。システムコントローラ(103)は、被テスト回路Bに対応するテスト結果圧縮装置(202)から取得した圧縮符号と、テスト対象の被テスト回路Bに対する期待値とを比較して、テスト結果を判定する。そして、被テスト回路Cをテスト対象として同様の動作が実行され、被テスト回路Dをテスト対象として同様の動作が実行される。
なお、被テスト回路Dまでのスキャンテストの実行が終了した後、再度、被テスト回路A〜Dに対するスキャンテストが実施されるようにしてもよい。すなわち、被テスト回路A〜Dに対するスキャンテストを繰り返し実行するようにしてもよい。なお、本実施の形態4では、4つの被テスト回路(201)のスキャンテストを実施する例について説明したが、被テスト回路(201)の数は、これに限られない。
以上に説明したように、本実施の形態4では、入力選択回路(204)が、FIFO(101)から読み出したテストデータの入力先として、複数の被テスト回路(201)のうち、テスト制御装置(200)によって指示された被テスト回路(201)を選択するようにしている。また、出力選択回路(205)が、テスト結果データをテスト結果圧縮装置(202)に出力する出力元として、複数の被テスト回路(201)のうち、テスト制御装置(200)によって指示された被テスト回路(201)を選択するようにしている。これによれば、テスト対象として選択した被テスト回路(201)のみのスキャンテストを実施して、テスト対象として選択していない被テスト回路(201)については処理を継続することができる。システムを停止させることなく、被テスト回路(201)のスキャンテストを実施することができる。
なお、以上の説明では、図12に示した半導体装置(1E)において、被テスト回路(201)及びテストクロック制御装置(203)の対を複数有する例について説明したが、これに限られない。当然に、図1、2、7、11に示した半導体装置(1A,1B,1C,1D)において、被テスト回路(201)及びテストクロック制御装置(203)の対を複数有するようにしてもよい。
[実施の形態5]
続いて、実施の形態5について説明する。以下の実施の形態5の説明では、上述した実施の形態3の変形例と同様の内容については、同一の符号を付す等して、適宜、その説明を省略する。
[全体構成]
図15を参照して、本実施の形態5に係る半導体装置(1G)の構成について説明する。図15は、本実施の形態5に係る半導体装置(1G)のブロック図である。本実施の形態5に係る半導体装置(1G)は、例えば、複数のCPUコア(被テスト回路(201))で構成される回路において、スキャンテスト機構を利用したランタイムテストの実行に適した実施の形態である。なお、図15では、外部記憶装置(2)の図示は省略している。
図15に示すように、実施の形態5に係る半導体装置(1G)は、実施の形態3の変形例に係る半導体装置(1E)と比較して、テスト制御装置(200)、被テスト回路(201)、テスト結果圧縮装置(202)及びテストクロック制御装置(203)を複数有する点と、さらに、調停回路(206)を有する点が異なる。ここで、調停回路(206)は、第2電源領域(20)に含まれる。
すなわち、実施の形態5では、1つのテスト制御装置(200)と、1つの被テスト回路(201)と、1つのテスト結果圧縮装置(202)と、1つのテストクロック制御装置(203)とが対応するように、複数組存在する。実施の形態5では、図15に示すように、テスト制御装置(200)と、被テスト回路(201)と、テスト結果圧縮装置(202)と、テストクロック制御装置(203)との組が、4組存在する例について示している。
これまでの実施の形態と同様に、第1電源領域(10)に配置される装置及び回路は、第1クロック信号(110)によって駆動され、第2電源領域(20)に配置される装置及び回路は、第2クロック信号(210)によって駆動される。
本実施の形態5では、FIFO(101)は、複数の被テスト回路(201)及び調停回路(206)と電気的に接続される。これにより、本実施の形態5では、FIFO(101)は、エンプティ信号を、調停回路(206)に出力する。
また、システムコントローラ(103)は、調停回路(206)及び複数のテスト結果圧縮装置(202)と電気的に接続されている。すなわち、システムコントローラ(103)は、テスト開始信号を調停回路(206)に出力する。
複数のテスト制御装置(200)及び複数のテストクロック制御装置(203)は、調停回路(206)と接続される。すなわち、複数のテスト制御装置(200)のそれぞれは、スキャンイネーブル信号を調停回路(206)に出力する。調停回路(206)は、複数のテスト制御装置(200)から出力されたスキャンイネーブル信号のうち、テスト対象の被テスト回路(201)に対応するテスト制御装置(200)から出力されたスキャンイネーブル信号を、読み出し信号としてFIFO(101)に出力する。また、調停回路(206)は、エンプティ信号を、複数のテストクロック制御装置(203)のうち、テスト対象の被テスト回路(201)に対応するテストクロック制御装置(203)に出力する。なお、調停回路(206)は、テスト開始信号でテスト対象として指定された被テスト回路(201)を、テスト対象の被テスト回路(201)として認識する。
調停回路(206)は、調停回路(206)に接続される回路又は装置の間で入出力される信号を調停する回路である。
また、同じ組に含まれる、テスト制御装置(200)、被テスト回路(201)、テスト結果圧縮装置(202)、及びテストクロック制御装置(203)の電気的な接続関係については、実施の形態3の変形例と同様である。
[動作フロー]
続いて、図16を参照して、本実施の形態5に係る半導体装置(1G)の動作について説明する。図16は、実施の形態5に係る半導体装置(1G)の動作を示す動作フロー図である。図16では、縦線がその上部に記載された名称の回路又は装置の動作を示し、上から下に向かって時間が経過することを示している。横に伸びる矢印は、その起点となる回路又は装置の動作イベントが、その終点となる回路又は装置の動作イベントを発生させることを意味している。
図16における「被テスト回路A」から「被テスト回路D」は、それぞれ、図15における4つの被テスト回路(201)のうち、いずれかを示す。本実施の形態5に係る半導体装置(1G)の動作について、図15に示す半導体装置(1G)の例と、図16に示す動作フロー図を照らし合わせながら説明する。
まず、システムコントローラ(103)は、DMAコントローラ(109)を制御することで、外部記憶装置(2)から被テスト回路A及び被テスト回路Bに対するスキャンテストデータと期待値を取得して、メモリ装置(104)に格納する。ここでは、被テスト回路A及び被テスト回路Bのそれぞれに対するスキャンテストデータと期待値が同一であるものとして説明する。すなわち、被テスト回路Aと被テスト回路Bで共通のスキャンテストデータがメモリ装置(104)に格納される。図16に示すように、最初は、システムコントローラ(103)は、テストパターン読み出し装置(102)及びテスト制御装置(200)に対して、被テスト回路A及び被テスト回路Bのスキャンテストの開始を指示する。
すなわち、システムコントローラ(103)は、被テスト回路A及び被テスト回路Bのスキャンテストの開始を指示する開始指示信号を、テストパターン読み出し装置(102)に出力する。被テスト回路A及び被テスト回路Bのスキャンテストの開始を指示する開始指示信号に応じて、テストパターン読み出し装置(102)は、被テスト回路A及び被テスト回路Bに対応するスキャンテストデータを、システムバスを介してメモリ装置(104)から取得し、FIFO(101)に書き込んでいく。
また、システムコントローラ(103)は、被テスト回路A及び被テスト回路Bのスキャンテストの開始を通知するテスト開始信号を、調停回路(206)に出力する。より具体的には、システムコントローラ(103)と調停回路(206)との間は、被テスト回路A〜被テスト回路Dのそれぞれに対応するテスト開始信号線が4本接続されている。システムコントローラ(103)は、被テスト回路A及び被テスト回路Bに対応するテスト開始信号をアサートする。
調停回路(206)は、FIFO(101)から入力されるエンプティ信号がネゲートされた場合、そのネゲートされたエンプティ信号を、複数のテスト制御装置(200)のうち、被テスト回路A及び被テスト回路Bに対応するテスト制御装置(200)のそれぞれに出力する。
ここで、調停回路(206)は、いずれかのテスト開始信号がアサートされてから、所定の時間が経過するのを待った時点で、アサートされているテスト開始信号に対応するテスト制御装置(200)に対して、ネゲートされたエンプティ信号を出力する。4つのテスト開始信号は、非同期に伝送されるため、異なるタイミングでアサートされたテスト開始信号が調停回路(206)に到達する場合がある。このような場合であっても、上述したように所定の時間、テスト開始信号を待ち合わせることで、テスト対象の被テスト回路A、Bに対応するテスト制御装置(200)に対して、ネゲートされたエンプティ信号が到達するタイミングを一致させることができる。
これにより、図16に示すように、被テスト回路Aと被テスト回路Bに対して、同時並列にスキャンテストが実行される。FIFO(101)から出力されたスキャンテストデータは、被テスト回路Aと被テスト回路Bに同時に入力されることになる。なお、スキャンテストの動作については、実施の形態3及びその変形例と同じであるため、ここでは説明を省略する。ここで、被テスト回路Cと被テスト回路Dに対応するテスト制御装置(200)は、被テスト回路Cと被テスト回路Dに対してスキャンテストを実施しないため、被テスト回路Cと被テスト回路Dは、通常動作を実施する。
ここで、上述したように、調停回路(206)は、テスト対象の被テスト回路(201)に対応するテストクロック制御装置(203)のみに対して、FIFO(101)からのエンプティ信号を出力している。よって、FIFO(101)が空になった場合には、テスト対象の被テスト回路(201)に対応するテストクロック制御装置(203)のみで、被テスト回路(201)に対する第2クロック信号(210)の供給が停止される。
また、上述したように、調停回路(206)は、テスト対象の被テスト回路(201)に対応するテスト制御装置(200)のみから出力されたスキャンイネーブル信号を、読み出し信号としてFIFO(101)に出力している。よって、テスト対象の被テスト回路(201)がスキャンシフト動作をしているか否かに応じて、FIFO(101)のレジスタ群(34)における読み出し元とするレジスタの更新が行われる。なお、被テスト回路A及び被テスト回路Bに対応するテスト制御装置(200)のそれぞれは、同様のスキャンイネーブル信号を出力することになるため、それらのテスト制御装置(200)のうち、いずれかのスキャンイネーブル信号をFIFO(101)に出力するようにすればよい。
被テスト回路A及び被テスト回路Bのスキャンテストが終了すると、被テスト回路A及び被テスト回路Bに対応するテスト制御装置(200)のそれぞれは、調停回路(206)に対して、スキャンテストの終了を通知する。すなわち、被テスト回路A及び被テスト回路Bに対応するテスト制御装置(200)のそれぞれは、調停回路(206)に終了信号を出力する。この終了信号に応じて、調停回路(206)は、被テスト回路Aと被テスト回路Bのスキャンテストの終了を通知する終了信号を、システムコントローラ(103)に出力する。なお、調停回路(206)は、システムコントローラ(103)からスキャンテストの開始が指示された被テスト回路A及び被テスト回路Bに対応するテスト制御装置(200)の全てからの終了信号を待ち合わせてから、終了信号をシステムコントローラ(103)に出力する。
この終了信号に応じて、システムコントローラ(103)は、被テスト回路A及び被テスト回路Bに対応するテスト結果圧縮装置(202)から取得した圧縮符号のそれぞれと、被テスト回路A及び被テスト回路Bに対応する期待値のそれぞれとを比較して、テスト結果を判定する。
以降、図16に示すように、被テスト回路C、Dに対しても、同様に、スキャンテストが実行される。すなわち、次は、外部記憶装置(2)から被テスト回路C及び被テスト回路Dに対するスキャンテストデータと期待値が、メモリ装置(104)に読み出される。なお、被テスト回路C、Dに対するスキャンテストデータと期待値が、被テスト回路A、Bのものと同一である場合には、この読み出しは省略してもよい。被テスト回路C及び被テスト回路Dをテスト対象としてテスト開始信号を出力し、調停回路(206)は、被テスト回路C及び被テスト回路Dに対してスキャンテストが実行されるように制御する。そして、終了信号によって被テスト回路C及び被テスト回路Dのスキャンテストの終了が調停回路(206)を介してシステムコントローラ(103)に通知される。システムコントローラ(103)は、被テスト回路C及び被テスト回路Dに対応するテスト結果圧縮装置(202)から取得した圧縮符号のそれぞれと、被テスト回路C及び被テスト回路Dに対応する期待値とを比較して、テスト結果を判定する。
なお、被テスト回路C、Dまでのスキャンテストの実行が終了した後、再度、被テスト回路A〜Dに対するスキャンテストが実施されるようにしてもよい。すなわち、被テスト回路A〜Dに対するスキャンテストを繰り返し実行するようにしてもよい。なお、本実施の形態4では、4つの被テスト回路(201)のスキャンテストを実施する例について説明したが、被テスト回路(201)の数は、これに限られない。
なお、本実施の形態5では、2つずつ被テスト回路(201)のスキャンテストを実施する例について説明したが、同時にスキャンテストを実行する被テスト回路(201)の数は、これに限られない。
また、以上の説明では、全ての被テスト回路A〜Dの構成が同一であり、スキャンテストデータが同一である例について説明したが、被テスト回路A〜D毎にスキャンテストデータが異なっていてもよい。ただし、同時にスキャンテストを実施する被テスト回路毎に異なるスキャンテストデータを使用する場合は、被テスト回路毎に別々のFIFO(101)を半導体装置(1G)に有する必要がある。例えば、同時にスキャンテストを実施する被テスト回路A及び被テスト回路Bの構成が異なり、それらに使用されるスキャンテストデータが異なる場合、被テスト回路A及び被テスト回路Bのそれぞれに対応するFIFO(101)を用意する必要がある。すなわち、被テスト回路Aに対応するFIFO(101)には、被テスト回路Aに対するスキャンテストデータが格納され、被テスト回路Bに対応するFIFO(101)には、被テスト回路Bに対するスキャンテストデータが格納される。
以上に説明したように、本実施の形態5では、システムコントローラ(103)が、複数の被テスト回路(201)のうち、いずれか2つ以上の被テスト回路(201)のスキャンテストの実施を指示する。そして、調停回路(206)が、システムコントローラ(103)から指示された2つ以上の被テスト回路(201)に対応する2つ以上のテスト制御装置(200)に対して、スキャンテストの実施を指示するようにしている。これによれば、複数の被テスト回路(201)に対して同時にスキャンテストを実施することができる。また、実施の形態4と同様に、テスト対象でない被テスト回路(201)については処理を継続することができる。
なお、以上の説明では、図12に示した半導体装置(1E)において、テスト制御装置(200)、被テスト回路(201)、テスト結果圧縮装置(202)、及びテストクロック制御装置(203)の組を複数有する例について説明したが、これに限られない。当然に、図1、2、7、11に示した半導体装置(1A,1B,1C,1D)において、テスト制御装置(200)、被テスト回路(201)、テスト結果圧縮装置(202)、及びテストクロック制御装置(203)の組を複数有するようにしてもよい。
[実施の形態6]
続いて、実施の形態6について説明する。以下の実施の形態6の説明では、上述した実施の形態3の変形例と同様の内容については、同一の符号を付す等して、適宜、その説明を省略する。
[全体構成]
図17を参照して、本実施の形態6に係る半導体装置(1H)の構成について説明する。図17は、本実施の形態6に係る半導体装置(1H)のブロック図である。実施の形態6に係る半導体装置(1H)は、例えば、ランタイムテストの対象が複数ある場合に適した実施の形態である。なお、図17では、外部記憶装置(2)の図示は省略している。
図17に示すように、本実施の形態6に係る半導体装置(1H)は、実施の形態3の変形例に係る半導体装置(1E)と比較して、さらに、選択回路(105)と、FIFOの読み出し用の機能ブロック(101C)と、テスト制御装置(300)と、被テスト回路(301)と、テスト結果圧縮装置(302)と、テストクロック制御装置(303)とを有する点が異なる。また、本実施の形態6に係る半導体装置(1H)は、実施の形態3の変形例に係る半導体装置(1E)と比較して、さらに、第3電源領域(30H)を有する点が異なる。
ここで、選択回路(105)は、第1電源領域(10)に含まれ、FIFOの読み出し用の機能ブロック(101C)と、テスト制御装置(300)と、被テスト回路(301)と、テスト結果圧縮装置(302)と、テストクロック制御装置(303)とは、第3電源領域(30H)に含まれる。
第3電源領域(30H)は、第1電源領域(10)及び第2電源領域(20)とは電源配線が異なる。すなわち、第3電源領域(30H)は、第1電源領域(10)及び第2電源領域(20)とは独立して異なる電力を供給することができる。例えば、第3電源領域(30H)は、DVFS領域である。
これまでの実施の形態と同様に、第1電源領域(10)に配置される装置及び回路は、第1クロック信号(110)によって駆動され、第2電源領域(20)に配置される装置及び回路は、第2クロック信号(210)によって駆動される。ここで、第3電源領域(30H)に配置される装置及び回路は、第3クロック信号(310)によって駆動される。
第1クロック信号(110)及び第2クロック信号(210)のそれぞれと、第3クロック信号(310)は、第1電源領域(10)及び第2電源領域(20)のそれぞれと、第3電源領域(30H)との電圧が異なることにより、同期していない(周波数及び位相の少なくとも1つが異なる)ものとする。なお、第1クロック信号(110)、第2クロック信号(210)、及び第3クロック信号(310)のそれぞれは、異なるクロック生成回路によって生成されるクロック信号であることにより、相互に同期していないものであってもよい。
以下、FIFOの書き込み用の機能ブロック(101A)及びFIFOの読み出し用の機能ブロック(101B,101C)のそれぞれを、機能ブロック(101A)、機能ブロック(101B)、機能ブロック(101C)とも呼ぶ。
本実施の形態6では、機能ブロック(101A)は、選択回路(105)を介して、機能ブロック(101B)及び機能ブロック(101C)のうち、選択回路(105)によって選択された1つの機能ブロックと電気的に接続される。
また、システムコントローラ(103)は、選択回路(105)を介して、テスト制御装置(200)及びテスト結果圧縮装置(202)、もしくは、テスト制御装置(300)及びテスト結果圧縮装置(302)のうち、選択回路(105)によって選択されたテスト制御装置及びテスト結果圧縮回路と電気的に接続される。
第3電源領域(30H)に含まれる各要素(101C,300,301,302,303)の動作及び接続関係は、第2電源領域(20)に含まれる各要素(101B,200,201,202,203)の動作及び接続関係と同様であるため、説明を省略する。ただし、第3電源領域(30H)に含まれる各要素(101C,300,301,302,303)は、第2クロック信号(210)ではなく、第3クロック信号(310)に基づいて動作する。
[動作フロー]
続いて、図18を参照して、本実施の形態6に係る半導体装置(1H)の動作について説明する。図18は、実施の形態6に係る半導体装置(1H)の動作を示す動作フロー図である。図18では、縦線がその上部に記載された名称の回路又は装置の動作を示し、上から下に向かって時間が経過することを示している。横に伸びる矢印は、その起点となる回路又は装置の動作イベントが、その終点となる回路又は装置の動作イベントを発生させることを意味している。
図18における「被テスト回路A」及び「被テスト回路B」は、それぞれ、図17における2つの被テスト回路(201)及び被テスト回路(301)のうち、いずれかを示す。本実施の形態6に係る半導体装置(1H)の動作について、図17に示す半導体装置(1H)の例と、図18に示す動作フロー図を照らし合わせながら説明する。
まず、システムコントローラ(103)は、DMAコントローラ(109)を制御することで、外部記憶装置(2)から被テスト回路Aに対するスキャンテストデータと期待値を取得して、メモリ装置(104)に格納する。図18に示すように、最初に、システムコントローラ(103)は、テストパターン読み出し装置(102)に対して、被テスト回路Aのスキャンテストの開始を指示する。
すなわち、システムコントローラ(103)は、被テスト回路Aのスキャンテストの開始を指示する開始指示信号を、テストパターン読み出し装置(102)に出力する。被テスト回路Aのスキャンテストの開始を指示する開始指示信号に応じて、テストパターン読み出し装置(102)は、被テスト回路Aに対応するスキャンテストデータを、システムバスを介してメモリ装置(104)から取得し、FIFO(101)に書き込んでいく。
また、システムコントローラ(103)は、被テスト回路Aに対応する機能ブロック、テスト制御装置、及びテスト結果圧縮装置が選択されるように選択回路(105)を制御する。すなわち、システムコントローラ(103)は、被テスト回路Aに対応する機能ブロック、テスト制御装置、及びテスト結果圧縮装置を選択する選択信号を、選択回路(105)に出力する。この選択信号に応じて、選択回路(105)は、機能ブロック(101A)と、被テスト回路Aに対応する機能ブロックを接続し、システムコントローラ(103)と、被テスト回路Aに対応するテスト制御装置A及びテスト結果圧縮装置Aとを接続する。
これより、機能ブロック(101A)と、機能ブロック(101B)及び機能ブロック(101C)のうち、被テスト回路Aに対応する機能ブロックとの間で信号(スキャンテストデータ、グレイコード値)が伝送されるようになる。また、テスト制御装置(200)及びテスト制御装置(300)のうち、被テスト回路Aに対応するテスト制御装置Aから出力された終了信号が、システムコントローラ(103)に入力されるようになる。また、テスト結果圧縮装置(202)及びテスト結果圧縮装置(302)のうち、被テスト回路Aに対応するテスト結果圧縮装置Aから出力された圧縮符号が、システムコントローラ(103)に入力されるようになる。
よって、機能ブロック(101B)及び機能ブロック(101C)のうち、被テスト回路Aに対応する機能ブロックによって、機能ブロック(101A)からスキャンテストデータが読み出される。そのため、被テスト回路Aに対応する機能ブロックは、ネゲートしたエンプティ信号をテスト制御装置Aに出力する。これにより、被テスト回路Aに対応するテスト制御装置Aにおける開始信号がアサートされ、被テスト回路Aのスキャンテストが実行される。なお、スキャンテストの動作については、実施の形態3の変形例と同じであるため、説明を省略する。
被テスト回路Aのスキャンテストが終了すると、被テスト回路Aに対応するテスト制御装置Aは、選択回路(105)を介して、システムコントローラ(103)に対して終了信号を出力する。この終了信号に応じて、システムコントローラ(103)は、被テスト回路Aに対応するテスト結果圧縮装置Aから取得した圧縮符号と、その終了信号で終了が通知された被テスト回路Aに対応する期待値とを比較して、テスト結果を判定する。
次に、図18に示すように、被テスト回路Bに対しても、同様にして、スキャンテストが実行される。すなわち、次は、外部記憶装置(2)から被テスト回路Bに対するスキャンテストデータと期待値が、メモリ装置(104)に読み出される。なお、被テスト回路Bに対するスキャンテストデータと期待値が、被テスト回路Aのものと同一である場合には、この読み出しは省略してもよい。テストパターン読み出し装置(102)に対して、被テスト回路Bのスキャンテストの開始を指示するとともに、被テスト回路Bに対応する機能ブロック、テスト制御装置、及びテスト結果圧縮装置を選択するように選択回路(105)を制御する。これにより、上述と同様に、被テスト回路Bに対応するテスト制御装置Bにおける開始信号がアサートされ、被テスト回路Bに対するスキャンテストが実行される。
なお、被テスト回路Bまでのスキャンテストの実行が終了した後、再度、被テスト回路A、Bに対するスキャンテストが実施されるようにしてもよい。すなわち、被テスト回路A、Bに対するスキャンテストを繰り返し実行するようにしてもよい。なお、本実施の形態6では、2つの被テスト回路(201,301)のスキャンテストを実施する例について説明したが、被テスト回路(201,301)の数は、これに限られない。すなわち、第2電源領域(20)及び第3電源領域(30H)と同様の構成であり、電圧が異なる更なる電源領域を有していてもよい。
以上に説明したように、本実施の形態6では、テスト制御装置(200)が、第2のクロック信号(210)に同期して、FIFO(101)に格納された複数のテストデータを順次読み出しての被テスト回路(201)のスキャンテストを実施する。テスト制御装置(300)が、第3のクロック信号(310)に同期して、FIFO(101)に格納された複数のテストデータを順次読み出しての被テスト回路(301)のスキャンテストを実施する。そして、選択回路(105)は、スキャンテストを実施するテスト制御装置として、テスト制御装置(200)及びテスト制御装置(300)のうち、いずれかを選択する。これによれば、それぞれ異なるクロック信号に同期する複数の被テスト回路のスキャンテストを実施することができる。
なお、以上の説明では、図12に示した半導体装置(1E)において、FIFO読み出し用の機能ブロック、テスト制御装置、被テスト回路、テストクロック制御装置、及びテスト結果圧縮装置のそれぞれを複数有する例について説明したが、これに限られない。当然に、図1、2、7、11に示した半導体装置(1A,1B,1C,1D)において、FIFO読み出し用の機能ブロック、テスト制御装置、被テスト回路、テストクロック制御装置、及びテスト結果圧縮装置のそれぞれを複数有するようにしてもよい。
<実施の形態7>
ここで、図19を参照して、上述の実施の形態1乃至6から抽出される一実施の形態について実施の形態7として説明する。図19を参照して、実施の形態7に係る半導体装置(9)について説明する。図19は、実施の形態7に係る半導体装置(9)の構成図である。
図19に示すように、半導体装置(9)は、FIFO(91)と、テストデータ書込回路(92)と、テスト制御回路(93)と、被テスト回路(94)とを有する。
テストデータ書込回路(92)は、第1のクロック信号(910)に同期して、複数のテストデータをFIFO(91)に順次書き込む。テストデータ書込回路(92)は、テストパターン発生装置(100)及びテストパターン読み出し装置(102)に対応する。FIFO(91)は、FIFO(101)に対応する。第1のクロック信号(910)は、第1クロック信号(110)に対応する。
テスト制御回路(93)は、テストデータ書込回路(92)による複数のテストデータのFIFO(91)への書き込みと並行して、第1のクロック信号(910)とは同期していない第2のクロック信号(920)に同期して、FIFO(91)に格納された複数のテストデータを順次読み出しての被テスト回路(94)のスキャンテストを実施する。テスト制御回路(93)は、テスト制御装置(200,300)に対応する。被テスト回路(94)は、被テスト回路(201,301)に対応する。第2のクロック信号(920)は、第2クロック信号(210)に対応する。
<他の実施の形態>
以上に説明した実施の形態では、第1電源領域(10)と第2電源領域(20)が異なり、第1クロック信号(110)と第2クロック信号(210)が同期していないものとして説明したが、それらは、次に説明する構成及び動作によって発生し得る。図20を参照して、その構成及び動作について説明する。図20は、他の実施の形態に係る半導体装置(1I)の構成図である。
図20に示すように、半導体装置(1I)は、実施の形態1に係る半導体装置(1A)と比較して、さらに、設定回路(3)と、電圧供給回路(4)と、クロック供給回路(5)とを有する。
設定回路(3)は、被テスト回路(201)からの指示に応じて、電圧供給回路(4)が第2電源領域(20)に供給する電圧、又は、クロック供給回路(5)が第2電源領域(20)内の回路及び装置に供給する第2クロック信号(210)の周波数を変更する。
ここで、初期状態では、第1電源領域(10)の電圧と、第2電源領域(20)の電圧は、同一であるものとする。以下、この電圧を第1の電圧とする。また、初期状態では、第1クロック信号(110)と第2クロック信号(210)は、同期している(周波数及び位相が同一である)ものとする。以下、この周波数を第1の周波数とする。
被テスト回路(201)は、上述したように、例えばCPUである。よって、被テスト回路(201)は、例えば、プログラムを実行して任意の処理を実行する。被テスト回路(201)は、自身の処理負荷を測定し、処理負荷が所定の閾値以下となったか否かを判定する。
被テスト回路(201)は、処理負荷が所定の閾値以下となった場合、電圧供給回路(4)が第2電源領域(20)に供給する電圧の変更、又は、クロック供給回路(5)が第2電源領域(20)内の回路及び装置に供給する第2クロック信号(210)の周波数の変更を指示する指示信号を設定回路(3)に出力する。
設定回路(3)は、被テスト回路(201)から電圧の変更を指示する指示信号に応じて、電圧供給回路(4)が第2電源領域(20)に供給する電圧が、第1の電圧よりも低い第2の電圧となるように、電圧供給回路(4)を設定する。この設定に応じて、電圧供給回路(4)は、第2電源領域(20)に供給する電圧を、第1の電圧から第2の電圧に変更する。これにより、第2電源領域(20)の電圧は、第1電源領域(10)よりも低くなる。その結果、電圧差の影響により、第2電源領域(20)における第2クロック信号(210)は、第1電源領域(10)における第1クロック信号(110)とは同期しなくなる。
また、設定回路(3)は、被テスト回路(201)から周波数の変更を指示する指示信号に応じて、クロック供給回路(5)が第2電源領域(20)に供給する第2クロック信号(210)が、第1の周波数よりも周波数の低い第2の周波数となるように、クロック供給回路(5)を設定する。この設定に応じて、クロック供給回路(5)は、第2電源領域(20)に供給する第2クロック信号(210)の周波数を、第1の周波数から第2の周波数に変更する。これにより、第2クロック信号(210)の周波数は、第1クロック信号(110)よりも低くなる。
一方、被テスト回路(201)は、処理負荷が所定の閾値以下とならない場合、上述の電圧の変更、及び、周波数の変更は指示しない。
なお、以上の説明では、図1に示した半導体装置(1A)に対して、設定回路(3)、電圧供給回路(4)、及びクロック供給回路(5)を適用した例について説明したが、これに限られない。当然に、図2、7、11、12、13、15、17に示した半導体装置(1B,1C,1D,1E,1F,1G,1H)における第2電源領域20と、図17に示した半導体装置(1H)における第3電源領域30Hに対して、設定回路(3)、電圧供給回路(4)、及びクロック供給回路(5)を適用することもできる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
上述した各実施の形態では、テスト結果圧縮装置(202,302)が、テスト結果圧縮装置(202)が、テスト結果データにおける不定値を、マスクデータによって“0”(Low)に固定する例について説明したが、これに限られない。例えば、テスト結果圧縮装置(202,302)は、テスト結果データにおける不定値を、マスクデータによって“1”(High)に固定するようにしてもよい。この場合、テスト結果圧縮装置(202,302)は、ANDゲート(2021,2022)に代えて、ORゲートを有するようにすればよい。