(57)【特許請求の範囲】
【請求項１】
複数のフリップフロップを含み、制御信号に応じてシフトレジスタを形成してスキャン入力端子から入力されるパタンをスキャン出力端子に向かってシフトするスキャンパスに、前記スキャン入力端子からテストパタンを入力してメモリの書き込み及び読み出しを行うテスト手法であって、
前記スキャン入力端子から前記スキャンパスに入力されシフトされる前記テストパタンが含む書き込み設定値により前記メモリに対してデータの書き込みを行い、
前記スキャン入力端子から前記スキャンパスに入力されシフトされる前記テストパタンが含むリフレッシュ設定値により前記メモリに書き込まれたデータのリフレッシュを行い、
前記スキャン入力端子から前記スキャンパスに入力されシフトされる前記テストパタンが含む読み出し設定値により前記メモリからデータを読み出すテスト方法。
【請求項２】
前記リフレッシュ設定値は、前記書き込み設定値より後であって、前記読み出し設定値より先に前記スキャン入力端子から前記スキャンパスに入力される
ことを特徴とする請求項１記載のテスト方法。
【請求項３】
前記メモリのリフレッシュ設定値の入力は、
前記メモリのデータ書き込みから前記メモリのデータ読み出しまでの時間を予め計測し、前記計測により計測された時間が前記メモリのデータ保持可能時間を上回る場合にのみ行われることを特徴とする請求項１または２記載のテスト方法。
【請求項４】
前記リフレッシュ設定値は、前記読み出し設定値と同じ値であり、
前記メモリのリフレッシュは、前記メモリからのデータ読み出しにより行われることを特徴とする請求項１、２または３記載のテスト方法。
【請求項５】
前記リフレッシュ設定値は、前記メモリの書き込み設定値及び読み出し設定値の入力により行われる前記メモリのテストに対しては、影響を与えない値であることを特徴とする請求項１乃至４いずれかに記載のテスト方法。
【請求項６】
前記メモリはＤＲＡＭ（Dynamic Random Access Memory）であることを特徴とする請求項１乃至５いずれかに記載のテスト方法。
【請求項７】
記憶したデータを保持するためにリフレッシュを必要とするメモリと、
前記メモリに対してデータの書き込みを行うための書き込み設定値、前記メモリに書き込まれたデータの読み出しを行うための読み出し設定値、及び前記リフレッシュを行うためのリフレッシュ設定値を含むテストパタンが入力される第１のスキャンパスと、
前記第１のスキャンパスとは別のスキャンパスであって、前記メモリ以外の回路のテストに関する第２のスキャンパスと、
を有し、
前記第１のスキャンパスに含まれるフリップフロップの数は、前記第２のスキャンパスに含まれるフリップフロップの半分以下であり、
第２のスキャンパスに含まれるフリップフロップに値が設定されているときに、前記第１のスキャンパスに含まれるフリップフロップにも並行して値が設定されていることを特徴とする回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テスト回路及びテスト方法に関するものであり、より詳細には、メモリを有する集積回路のテストを行うテスト回路及びテスト方法に関する。
【背景技術】
【０００２】
メモリを含む集積回路に対し、メモリ自体あるいはメモリを通過する経路上の回路を、スキャンパスを用いて行うテスト手法は、今日では、コンピュータ上のテストパタン自動生成プログラムにも取り込まれ、定着してきている。しかしながら、このテスト手法は、リフレッシュが不要なＳＲＡＭ（Static Random Access Memory）を仮定しており、一度書き込みを行ったあと、読み出しの設定を行えば、いつでも読み出しが行えることを仮定している。
【０００３】
図１２を用いて、スキャンパスを使用した従来のメモリのテスト手法を説明する。図１２は、従来技術におけるメモリのテストの設定波形である。図１２に示すＳＭＣはスキャンパスをシフト動作にするかシフトしない通常動作にするかの選択を行う信号ＳＭＣの値を示し、図１２に示すＳＣＡＮＩＮはスキャン入力の値を示し、ＳＣＡＮＯＵＴはスキャン出力の値を示している。
【０００４】
ここでは、ＳＭＣの値は１がシフトモード、０がシフトしない通常モードとする。また、ここではシフトモード以外の状態をキャプチャーモードとする。時刻ｔ１はシフトモードからキャプチャーモードに変化する時刻を示しており、ｔ２は、その後キャプチャーモードからシフトモードに変化する時刻を示しており、ｔ３は、時刻ｔ２のあとに再度シフトモードからキャプチャーモードになる時刻を示しており、時刻ｔ４は、時刻ｔ３のあとに再度キャプチャーモードからシフトモードになる時刻を示している。
【０００５】
図中Ｘはドントケアを表しており、入力に対しては何を設定しても良いことを示し、出力に対しては、観測対象でないことを表している。図中に示すＷｒｉｔｅ設定は、テスト対象回路内に含まれるメモリに対する書き込み設定を行うためのスキャン入力値を示している。つまり、Ｗｒｉｔｅ設定で入力されたスキャン入力の値は、時刻ｔ１に、メモリの設定を行うフリップフロップに到達し、メモリの書き込み設定が行われる。
【０００６】
Ｒｅａｄ設定は、テスト対象回路内に含まれるメモリに対する読み出し設定を行うためのスキャン入力値を示している。つまり、このＲｅａｄ設定で入力されたスキャン入力の値は、時刻ｔ３に、メモリの設定を行うフリップフロップに到達し、メモリの読み出し設定が行われる。Ｒｅａｄ値出力は、Ｒｅａｄ設定で行われたメモリの読み出し設定に対する読み出し値を示している。これにより、一連のテストが行なわれる。
【０００７】
図１２では、書き込み設定後、１回のスキャンシフトの後に読み出しが行われる場合を示しているが、３回以上のスキャンシフトで１つのテスト対象をテストする場合もあり、この場合は、ＤＲＡＭ（Dynamic Random Access Memory）が値を保持する時間が更に長くなり、従来手法で行う場合の条件は悪化するため、図１２は、従来手法で、複数回のスキャンシフトで１つのテスト対象をテストする場合の最良のケースとして代表して図示している。
【０００８】
また、スキャンパスを利用して、メモリ及びメモリを通過する経路上の回路の遅延をテストする場合には、書き込みに対する遅延テストにおいては、時刻ｔ１の直前のサイクル、通常は時刻ｔ１の1サイクル前に、書き込み直前の設定を行い、時刻ｔ１の時点で書き込みの設定を行う場合があり、読み出しに対する遅延テストにおいては、時刻ｔ３の直前のサイクル、通常は時刻ｔ３の1サイクル前に、読み出し直前の設定を行い、時刻ｔ３の時点で読み出しの設定を行う場合があるが、このＷｒｉｔｅ設定とＲｅａｄ設定は、それぞれ、これらの書き込みに対する一連の設定及び、読み出しに対する一連の設定を表している。
【０００９】
また、ＤＲＡＭに対しスキャンパスを用いたテスト手法に基づいた回路を示したものとてして、特許文献１及び特許文献２がある。
【００１０】
前記の図１２を用いて説明した、コンピュータ上のテストパタン自動生成プログラムにも取り込まれ定着してきたメモリのテスト手法を、ＤＲＡＭに応用した場合は、書き込み設定から読み出し設定までの間がＤＲＡＭの記録保持時間を越える場合、つまりリフレッシュ時間を越える場合は、テストが行なえないという欠点を有していた。
【００１１】
更に、テストパタン自動生成の負荷を増大させるという欠点をも有していた。一般に、テストパタン自動生成は、ＤＲＡＭに一連の動作で書き込むための値と、一連の読み出し動作により値を読み出すための値を求める。ＤＲＡＭのリフレッシュ時間が、スキャンパスの１回のシフト動作の時間より長い場合には、１回の書き込み動作と１回の読み出し動作によりテストが可能であれば、特に、問題は生じないが、１回のテストに対し、複数の書き込み動作を必要とする場合がある。
【００１２】
例えば、アドレスに関する回路の故障を検出するためのテストパタンを生成する場合には、回路に故障が存在しない場合に選択される書き込み及び読み出し対象アドレスと、アドレスに関する回路上に想定される故障が存在する場合の書き込み及び読み出し対象アドレスに対し、異なる値を書き込み、故障が存在しない場合に読み出される値が読み出されることをテストするため、書き込み動作の設定は複数回行われる。
【００１３】
この場合、複数回の書き込み設定のうち、最初の書き込み設定に対しては、その値の読み出しまでの間に、複数回のスキャンシフトが行われる。このため、当初、テストパタン自動生成により求められた２回目以降の書き込み設定を一部リフレッシュ設定に置き換え、再度テストパタンの設定値を求め直す必要が生じる場合があり、リフレッシュ動作を考慮する場合には、テストパタン自動生成の負荷を増大させる。
【００１４】
また、ＤＲＡＭに対しスキャンパスを用いたテスト手法に基づいた回路を示したものとてして、特許文献１及び特許文献２があるが、この特許文献１及び特許文献２は、ＤＲＡＭに対する書き込み設定あるいは読み出し設定を行う手法あるいは回路を示したのみに留まっており、ＤＲＡＭの記録保持時間の制約を考慮したテスト手法あるいはテスト回路を示してはいない。
【特許文献１】特開平１１−１５３６５０号公報
【特許文献２】特開２０００−１６３９９５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
このように、従来におけるテスト方法は、書き込み設定から読み出し設定までの間がＤＲＡＭの記録保持時間を越える場合、つまりリフレッシュ時間を越える場合は、テストが行なえないという欠点を有していた。
【課題を解決するための手段】
【００１６】
本発明におけるテスト方法は、テスト対象であるメモリに対して書き込み及び読み出しをスキャンパスフリップフロップを介して行うテスト手法であって、前記スキャンパスフリップフロップに書き込み設定値を入力することにより外部から前記メモリに対してデータの書き込みを行い、前記スキャンパスフリップフロップにリフレッシュ設定値を入力することにより前記メモリに書き込まれたデータのリフレッシュを行い、前記スキャンパスフリップフロップに読み出し設定値を入力することにより前記メモリからデータを外部へ読み出して外部へ出力するテスト方法である。このようにすることにより、メモリのリフレッシュを効率よく行いながらメモリのテストを行うことが可能となる。
【００１７】
本発明におけるテスト回路は、メモリのテストのためのメモリテスト用スキャンパスを含む複数のスキャンパスのシフト動作によりテストを行うテスト回路であって、前記スキャンパスはそれぞれ複数のフリップフロップを有し、前記メモリテスト用スキャンパスの有するフリップフロップの数は、前記スキャンパスの有するフリップフロップの最大数の半分以下であるテスト回路である。このような構成により、メモリテスト用スキャンパス以外のスキャンパスのシフト動作を１回行う間にメモリテスト用スキャンパスのシフト動作を複数回行うことができ、メモリのリフレッシュを効率よく行いながらテストを行うことが可能となる。
【００１８】
本発明におけるテスト方法は、メモリのテストのためのメモリテスト用スキャンパスを含む複数のスキャンパスのシフト動作によりテストを行うテスト方法であって、前記メモリテスト用スキャンパス以外のスキャンパスのシフト動作を１回行う間に、前記メモリテスト用スキャンパスのシフト動作を複数回行い、前記複数回のシフト動作のうち少なくとも１回のシフト動作で前記メモリのリフレッシュを行うテスト方法である。このようにすることにより、メモリのリフレッシュを効率よく行いながらメモリのテストを行うことが可能となる。
【発明の効果】
【００１９】
本発明によれば、メモリのリフレッシュを効率よく行いながらメモリのテストを行うことが可能となる。
【発明を実施するための最良の形態】
【００２０】
発明の実施の形態１．
本発明におけるテスト回路について図１を用いて説明する。図１に示すＳＭＣは、スキャンパスをシフト動作にするかシフトしない通常動作にするかの選択を行う信号ＳＭＣの値を示す。また、ＳＣＡＮＩＮは、スキャン入力の値を示し、ＳＣＡＮＯＵＴはスキャン出力の値を示している。ここでは、ＳＭＣの値は１のときはシフトモード、０のときはシフトしない通常モードとしている。ここでは、シフトモード以外をキャプチャーモードと呼ぶ。
【００２１】
時刻ｔ１はシフトモードからキャプチャーモードに変化する時刻を示しており、時刻ｔ２は、時刻ｔ１の後、最初にキャプチャーモードからシフトモードに変化する時刻を示している。時刻ｔ３は、時刻ｔ２のあとに再度シフトモードからキャプチャーモードになる時刻を示しており、時刻ｔ４は、時刻ｔ３のあとに再度キャプチャーモードからシフトモードになる時刻を示している。
【００２２】
図中Ｘはドントケアを表しており、入力に対しては何を設定しても良いことを示し、出力に対しては、観測対象でないことを表している。図中のＷｒｉｔｅ設定１０８は、テスト対象回路内に含まれるメモリに対する書き込み設定を行うためのスキャン入力値の設定を示している。つまり、Ｗｒｉｔｅ設定１０８で入力されたスキャン入力値は、時刻ｔ１のときに、メモリの設定を行うフリップフロップに到達し、メモリの書き込み設定が行われる。
【００２３】
図中のＲｅａｄ設定１１０は、テスト対象回路内に含まれるメモリに対する読み出し設定を行うためのスキャン入力値の設定を示している。つまり、Ｒｅａｄ設定１１０で入力されたスキャン入力の値は、時刻ｔ３のときに、メモリの設定を行うフリップフロップに到達し、メモリの読み出し設定が行われる。図中のＲｅａｄ値出力１１１は、Ｒｅａｄ設定１１０でのメモリの読み出し設定に対する読み出し値の出力を示している。図１２に示した従来手法に対し、追加された設定はＲｅｆｒｅｓｈ設定１０９である。
【００２４】
Ｒｅａｄ設定１１０での読み出し値の入力が、時刻ｔ３の時点で、ＤＲＡＭの設定を行うレジスタに設定されるのに対し、Ｒｅｆｒｅｓｈ設定１０９は、時刻ｔ３の時点ではなく、それ以前にＤＲＡＭの設定を行うレジスタを通過する値に対してＲｅｆｒｅｓｈ設定１０９のタイミングで行われる。ＤＲＡＭに書き込んだ値を一連の読み出し動作により読み出すまでの間のスキャンパスのシフト動作中に、Ｒｅｆｒｅｓｈ設定を行う処理を追加した手法が、本発明の第一のテスト手法である。
【００２５】
次に、本発明におけるテスト回路の構成について説明する。図４は、本発明におけるテスト回路の構成を示す図である。テスト回路４は、スキャン入力端子４０１、外部制御端子４０２、フリップフロップ４０３−４０８、バッファ４０９−４１４、ＡＮＤゲート４１５、ＤＲＡＭ４１６、バッファ４１７−４１８、フリップフロップ４１９−４２０、回路４２１、フリップフロップ４２２−４２６、スキャン出力端子４２７、回路４２８を備える。スキャンパスのシフト経路あるいはＤＲＡＭへの値の設定経路及びＤＲＡＭからの値の観測経路に関係のない信号は、記載を省略している。
【００２６】
スキャン入力端子４０１は、フリップフロップ４０３がデータ入力を行うための端子である。外部制御端子４０２は、ＤＲＡＭ４１６がＡＮＤゲート４１５を介して外部からデータを入力するための端子であり、ＤＲＡＭ４１６のライトイネーブルを制御している。
【００２７】
フリップフロップ４０３、４０４は、データ入力を設定する。フリップフロップ４０５、４０６は、アドレスを設定する。フリップフロップ４０７は、読み出しを指定するリードイネーブルを設定する。フリップフロップ４０８は、書き込みを指定するライトイネーブルを設定する。４１６のＤＲＡＭのリードイネーブルのイネーブル値は１、ライトイネーブルのイネーブル値も１とする。
【００２８】
ＡＮＤゲート４１５は、外部制御端子４０２から入力されたデータと、バッファ４１４から入力されたデータのＡＮＤ演算を行い、結果をＤＲＡＭ４１６に出力する。
【００２９】
ＤＲＡＭ４１６はテスト対象のＤＲＡＭである。ＤＲＡＭ４１６の入力端子について説明する。ＤＡＴ［０］と表記された端子はデータ入力の０ビット目を示し、ＤＡＴ［１］と表記された端子はデータ入力の１ビット目を示す。また、ＡＤＲ［０］と表記された端子はアドレス入力の０ビット目を示し、ＡＤＲ［１］と表記された端子はアドレス入力の１ビット目を示し、ＲＥと表記された端子はリードイネーブルを示し、ＷＥと表記された端子はライトイネーブルを示し、ＯＵＴ［０］と表記された端子は出力データの０ビット目を示し、ＯＵＴ［１］と表記された端子は出力データの１ビット目を示す。Ｃはクロック入力を示す。ただし、フリップフロップのクロックと同じクロックが接続されているものとして、接続の記載を省略している。
【００３０】
フリップフロップ４１９、４２０は、ＤＲＡＭ４１６から出力されるデータの格納を行う。回路４２１は、ＤＲＡＭの設定には直接関係しない回路である。
【００３１】
出力端子４２７は、ＤＲＡＭ４１６からの出力データを出力するための端子である。回路４２８は、ＤＲＡＭの設定には直接関係しない回路である。
【００３２】
ここでは、説明の簡単化のために、スキャンパスのフリップフロップ以外の、ＤＲＡＭ４１６の設定あるいは観測に関する回路は、ＡＮＤゲート４１５を除きバッファ４０９−４１４、バッファ４１７、４１８等のバッファとしているが、その他の回路でＤＲＡＭの設定あるいは観測に関する回路が構成されていたとしても、ＤＲＡＭの１つの端子に対し、複数のフリップフロップの値の設定が必要になる場合はあるが、以下に説明する処理のフローは、同様である。
【００３３】
この回路において、ＤＲＡＭ４１６の保持時間と、スキャンシフトの動作周波数の関係として、ＤＲＡＭ４１６の保持時間はスキャンシフトの１０サイクルに相当するものとする。ＤＲＡＭ４１６の保持時間に制約がない場合には、書き込み設定を行ったあと、ＤＲＡＭ４１６の値が書き換えられなければ、図１２のように、１スキャンシフト後に、読み出し設定を行えばよい。
【００３４】
図４の回路では、書き込み後に外部制御端子４０２から入力する値を０とすることにより、ＡＮＤゲート４１５の出力値はフリップフロップ４０８から出力される値にかかわらず０となり、値が書き換えられることはない。読み出し設定をする場合、キャプチャーサイクルに、フリップフロップ４０７に値１が設定され、フリップフロップ４０５とフリップフロップ４０６に、所望の読み出しアドレスが設定されるように、スキャンイン時にスキャン入力端子４０１に入力する値を決めれば良い。
【００３５】
更に、具体的に、値の設定を示して説明を行う。ここで、ＤＡＴ［０］の０縮退故障を検出するテストパタンを生成する場合を仮定し、ＤＡＴ［０］の０縮退故障、つまり値を０に固定する故障を検出するために、アドレス０つまり、ＡＤＲ［１］＝０かつＡＤＲ［０］＝０に対してＤＡＴ［０］＝１を書き込み、その後、アドレス０、つまりＡＤＲ［１］＝０かつＡＤＲ［０］＝０を読み出すことで試験を行う場合を想定する。
【００３６】
ここで、シフト動作中に、書き込み値が変化しないように、外部制御端子４０２から入力する値は、シフト動作中は０で、キャプチャーモード時は１であることを仮定している。ＤＲＡＭ４１６の保持時間に制限がないとした場合のフリップフロップの設定を、図５に示す。図５では、設定１が書き込み設定、設定２が読み出し設定を示しており、キャプチャーモード時の最初の時刻におけるフリップフロップの値として示している。つまり、図２の時刻に対応させた場合、設定１に対しては時刻ｔ１での各フリップフロップの値、設定２に対しては時刻ｔ３での各フリップフロップの値を示している。
【００３７】
図５で、Ｘはドントケアを示しており、何を設定しても良いことを示している。このように、書き込み時には、ＤＡＴ［０］の入力に１を設定し、アドレス０を指定し、ライトイネーブルを１とし、リードイネーブルを０とする。また、読み出し時には、アドレス０を指定して、ライトイネーブルを０とし、リードイネーブルを１としている。
【００３８】
ＤＲＡＭ４１６がフリップフロップのクロックと同期する同期型の場合には、設定２の後に１回クロックが印加されれば、ＯＵＴ［０］とＯＵＴ［１］に、アドレス０に対する出力値が出力され、更に1回クロックが印加されれば、ＤＲＡＭ４１６の出力値はフリップフロップ４１９とフリップフロップ４２０に取り込まれ、スキャンパスをシフトモードにして、シフトすることで、スキャン出力端子４２７から、ＤＲＡＭの出力値を観測することが可能となる。ここでは、一度、フリップフロップに取り込まれた値はＤＲＡＭ４１６の保持時間には関係なく観測可能なため、出力値の観測のための設定に関する説明は省略をする。
【００３９】
図５は、設定値を、キャプチャーモード時の最初の時刻におけるフリップフロップの値として示しているが、ここで、図１２のようにスキャン入力端子４０１に与える値に置き直して考える。スキャンパス上のフリップフロップの接続は、図４のフリップフロップ名で表記すると、スキャン出力端子４２７に近い側から順に、Ｆ３５、Ｆ３４、Ｆ３３、Ｆ３２、Ｆ３１、Ｆ２２、Ｆ２１、Ｆ１６、Ｆ１５、Ｆ１４、Ｆ１３、Ｆ１２、Ｆ１１となっており、この順序に従って、図５では、右側から順に表記されている。このうち、Ｆ１１〜Ｆ１６がメモリ設定用フリップフロップである第１のフリップフロップであり、Ｆ２１〜Ｆ３５が他の回路設定用フリップフロップである第２のフリップフロップである。
【００４０】
スキャン入力端子４０１からの設定値としては、スキャン出力端子４２７に近い側のフリップフロップに設定する値を、時間的に、先に入力することになるため、書き込み設定は、スキャンパスのシフト動作が開始されてから、設定１の値を右から順に、１サイクルごとに、Ｘ、Ｘ、Ｘ、Ｘ、Ｘ、Ｘ、Ｘ、１、０、０、０、Ｘ、１を入力してゆくことになる。ここで、Ｘは０でも１でも良いものとする。
【００４１】
この書き込み設定が行われたあとの、読み出し設定は、スキャンパスのシフト動作が開始されてから、設定２の右から順に、１サイクル毎に、Ｘ、Ｘ、Ｘ、Ｘ、Ｘ、Ｘ、Ｘ、０、１、０、０、Ｘ、Ｘを入力することになる。図１２と図５を対比させれば、図１２のＷｒｉｔｅ設定に対する書き込みの設定は、図５の設定１における、Ｆ１６、Ｆ１５、Ｆ１４、Ｆ１３、Ｆ１２、Ｆ１１の書き込み設定値の設定に対応し、図１２のＲｅａｄ設定に対する読み出しの設定は、図５の設定２における、Ｆ１６、Ｆ１５、Ｆ１４、Ｆ１３の読み出し設定値の設定に対応する。ＳＲＡＭのように、データの保持時間が問題にならない場合は、図５の設定でテストを行なうことが可能である。
【００４２】
しかしながら、図４でテストをしている対象は、ＤＲＡＭであり、データ保持時間は、シフト時のクロックサイクルで、１０クロックサイクルの間と仮定されているため、書き込み設定から、読み出し設定までの間に、１３クロックサイクルを必要とする図５の設定では、書き込まれたデータが消失する可能性があるため、正常にテストを行うことができない。このため、図１に示すように、読み出し設定１１０の前に、リフレッシュ設定１０９を行い、書き込まれたデータ値の消失を防ぎ、正常にテストを行う。この設定の一例を、図７に示す。
【００４３】
リフレッシュ動作は、リフレッシュモードを持っているＤＲＡＭでは、リフレッシュモードに設定することでも、リフレッシュが行われるが、リフレッシュモードを持たないＤＲＡＭの場合でも、値を保持しているアドレスに対し読み出し設定を行うことで、リフレッシュが可能となる。リフレッシュのためだけに行う読み出し設定の場合は、その値をフリップフロップに取り込む必要はないため、１サイクルだけ、読み出し状態をつくれば良い。この状態が図８に示す入力中の状態である。
【００４４】
図７の設定２では、読み出し設定における、キャプチャ時の最初、つまり、図１では時刻ｔ３におけるフリップフロップに対する値を示しているが、ここでは、Ｆ３４、Ｆ３３、Ｆ３２、Ｆ３１に設定している値が、リフレッシュを行うための読み出し設定を行うリフレッシュ設定値を示している。読み出し設定を行うフリップフロップは、Ｆ１６、Ｆ１５、Ｆ１４、Ｆ１３であるが、図７の設定２でＦ３４、Ｆ３３、Ｆ３２、Ｆ３１に示されたリフレッシュ設定値は、時刻ｔ３に対し６サイクル前に、Ｆ１６、Ｆ１５、Ｆ１４、Ｆ１３に設定され、通過して時刻ｔ３に、Ｆ３４、Ｆ３３、Ｆ３２、Ｆ３１に到達する値となる。時刻ｔ３に対し６サイクル前は、時刻ｔ２に対し７サイクル後にあたり、図７の設定２は、時刻ｔ２から１０サイクル以内にリフレッシュを行う必要があるという条件を満たした設定となる。
【００４５】
次に、図１に示したＤＲＡＭに対するスキャンパステスト手法を実現するための、処理の流れについて、図３に示すフローチャートを用いて説明する。
【００４６】
まず、通常のＳＲＡＭに対するテストパタン生成と同様に、リフレッシュを考慮しない通常のテストパタン生成手法に基づいたテストパタンを生成する（Ｓ３０１）。このテストパタン生成により求められた設定値のうちリフレッシュが必要な設定に対しては、リフレッシュが必要な時間の範囲を求める（Ｓ３０２）。最初にリフレッシュが必要な時間の範囲を求める場合は、テストパタン生成により設定された書き込み値の設定時刻に対してリフレッシュ時間を加算して、リフレッシュが必要な時間範囲を求める。
【００４７】
次に、書き込み後リフレッシュ時間内に読み出しが行われるか否かを判定する（Ｓ３０３）。もしもリフレッシュ時間内に読み出しが行われる場合には、特にリフレッシュの設定を行う必要はなく、求められた設定をテストパタンとして登録し、テストパタンの生成を完了する（Ｓ３０４）。リフレッシュ時間内に読み出しが行われない場合は、リフレッシュ時間内のシフト値に、リフレッシュ値を求める（Ｓ３０５）。
【００４８】
その後、求めたリフレッシュ値の設定が、読み出し設定等の、既に設定されている値に対し矛盾せず設定可能か否かを判定し（Ｓ３０６）、判定の結果、リフレッシュ値の設定が不可能であれば、テストパタン作成不可能として、テストパタンを破棄し終了する（Ｓ３０７）。判定の結果、リフレッシュ値設定が可能であれば、設定したリフレッシュの時刻を起点として次にリフレッシュが必要な時間の範囲を求める。このとき、最初の書き込み設定からではなく、その後に行われたリフレッシュ設定から読み出しまでがリフレッシュ時間内か否かを求める。その後の処理は、前述の処理を繰り返す。
【００４９】
次に、図４の回路に対し、図３のフローを適用した場合のテストパタンの生成方法を、図５から図９を用いて説明する。ここでは、上述した内容と同様に、図４のＤＲＡＭ４１６のＤＡＴ［０］の０縮退故障を検出するテストパタンを生成する場合を想定する。
【００５０】
図５から図９は、図４の回路中のフリップフロップに対する設定値を示している。この設定値は、設定１が書き込み設定時の入力値で、設定２が読み出し設定時の入力値を表しており、設定１として示された入力値は、図１の時刻ｔ１でのフリップフロップの設定値であり、設定２として示された入力値は、図１の時刻ｔ３のフリップフロップの設定値を示している。つまり、シフト動作が終了した時点では、Ｆ１１からＦ１６までの列に示された書き込み設定値がＤＲＡＭ４１６の入力に対する設定値となるが、シフトが終了する６サイクル前にＦ１１からＦ１６に設定される値は、図５から図９では、Ｆ２１からＦ３４の列に示される値となる。
【００５１】
逆に言えば、Ｆ２１からＦ３４の列に示された値は、シフトが終了する６サイクル前にＦ１１からＦ１６に設定され、その後６サイクルの間シフトし、シフト終了時点では、Ｆ２１からＦ３４のフリップフロップに設定されることになる。
【００５２】
まず、ＤＲＡＭ４１６をリフレッシュの不要なＳＲＡＭとして、通常のテストパタン生成の結果として求められた設定値を図５に示す。この設定は、上述した設定である。今、シフト時のクロックサイクルで、１０クロックがデータ保持時間つまりリフレッシュ時間とする。設定２の値は、シフト開始後第１サイクルでの設定値は、Ｆ３５に示される値で、シフト開始後第２サイクルでの設定値は、Ｆ３４に示される値となるという前提であるので、図６のＦ１４〜Ｆ３５の範囲内に、読み出し設定あるいはリフレッシュ設定が終了していなければならない。
【００５３】
リフレッシュが必要な時間の範囲を求めるという処理は、この図６のＦ１４〜Ｆ３５の範囲を求める処理と同等である。ただし、この図６のＦ１４〜Ｆ３５の範囲には、読み出しの設定には関係のないＦ１１、Ｆ１２のシフト分を考慮して、全設定が図６のＦ１４〜Ｆ３５におさまらねばならない。つまり、Ｆ１３、Ｆ１４、Ｆ１５、Ｆ１６の設定に限れば、８サイクル以内つまり表記上は、Ｆ３５、Ｆ３４、Ｆ３３、Ｆ３２、Ｆ３１、Ｆ２２、Ｆ２１、Ｆ１６の範囲に、設定が終了せねばならない。
【００５４】
その後、この範囲内に読み出し設定あるいはリフレッシュ設定が終了しているか否かの判定を行う。しかしながら、この場合読み出し設定は、図６のＦ１４〜Ｆ３５の範囲では終了していないため、シフト中の値に対しリフレッシュ設定を行う。上述したように、リフレッシュ設定は、対象アドレスに対し読み出し設定を行えばよいことから、ここでは、Ｆ１３、Ｆ１４、Ｆ１５、Ｆ１６のそれぞれに、０、０、１、０がシフト中に設定されるように入力する。
【００５５】
図７の表記上、設定２のシフト開始から７サイクル後に、Ｆ１３、Ｆ１４、Ｆ１５、Ｆ１６に設定される値は、それぞれ、Ｆ３１、Ｆ３２、Ｆ３３、Ｆ３４に表記されるため、図７の設定は、設定２のシフト開始から７サイクル後にリフレッシュを行い、その後、読み出しを行う設定となる。
【００５６】
このリフレッシュ値の設定は、図５の設定２の読み出し設定では、Ｘつまりドントケアの部分に対して設定されているため、読み出し設定に対し矛盾することはなく、リフレッシュ値が設定可能か否かの判定では設定可能という判定結果となり、リフレッシュが必要な範囲を求める処理に進む。
【００５７】
リフレッシュが必要な範囲を求める処理では、図７で設定されたリフレッシュ設定に対して、更にリフレッシュが必要な範囲を求めるために、図７のリフレッシュ設定に対し、その後データが保持される時間を求める。この範囲は図７のＦ１１〜Ｆ１６となる。
【００５８】
その後、読み出し設定が行われるのがリフレッシュ時間内であるか否かの判定を行う処理に進むが、今回は、読み出し設定が行われるのがリフレッシュ時間内であるため、テストパタン設定は完了となり、ここで求められた設定、つまり図８あるいは図７の設定が、図４のＤＲＡＭ４１６のＤＡＴ［０］の０縮退故障を検出するテストパタンとして登録され、生成を完了する。
【００５９】
ただし、ＤＲＡＭ４１６のＤＡＴ［０］の０縮退故障を検出するテストパタンは、図７の設定の１通りのみではない。例えば、図９のような設定でも、故障検出可能となる。この場合のリフレッシュ設定は、設定２のＦ１６、Ｆ２１、Ｆ２２、Ｆ３１に示される値で、行われる。この値は、シフト開始から１０サイクル後に、それぞれ、Ｆ１３、Ｆ１４、Ｆ１５、Ｆ１６に到達する値となる。
【００６０】
図５のリフレッシュを考慮しない設定での読み出し設定は、Ｆ１３、Ｆ１４、Ｆ１５、Ｆ１６に設定する値を使用して行われており、図９に示すリフレッシュに対する設定でも、Ｆ１６に設定するリフレッシュ設定値が必要となるが、Ｆ１６に対し、読み出し設定で必要な設定は０であり、リフレッシュ設定で必要な設定も０であるため、矛盾せず、テストパタンとして使用可能となる。
【００６１】
このようにして、メモリ書き込み時とメモリ読み出し時の間にリフレッシュ処理を行うことが可能となる。
【００６２】
上述の例では、メモリ読み出し時の設定２の入力値にリフレッシュ設定値を入力するようにしたが、フリップフロップの構成によっては、これをメモリ書き込み時の設定１の入力値にリフレッシュ設定値を入力する場合もある。また、設定１と設定２の入力値が連続して入力される場合は、双方の入力値にまたがるようにしてリフレッシュ設定値が入力されるように入力値を設定してもよい。
【００６３】
発明の実施の形態２． 
次に、本発明の第２の発明を実施するための形態について、図２を用いて説明する。図２は、本発明の実施の形態２におけるテスト回路の構成を示す図である。テスト回路１００は、スキャン入力端子１００２、１００３、１００４、フリップフロップ群１００５、１００６、１００７、ＤＲＡＭ１００８、スキャン出力端子１００９、１０１０、１０１１、を備える。
【００６４】
テスト回路１００は、３本のスキャンパスで構成されているが、ＤＲＡＭ１００８の設定にかかわるフリップフロップは、ＳＣＡＮ＿Ｄのみ、つまりスキャン入力端子１００３からの入力をスキャン入力とし、フリップフロップ群１００６を、スキャンパスを構成するフリップフロップ群とし、スキャン出力端子１０１０からの出力をスキャン出力とする、スキャンパスのみに含まれているものとする。
【００６５】
その他のスキャンパスは、スキャン入力１００２、フリップフロップ群１００５、スキャン出力１００９で構成されるＳＣＡＮ＿１と、スキャン入力１００４、フリップフロップ群１００７、スキャン出力１０１１で構成されるＳＣＡＮ＿２があるが、ＳＣＡＮ＿１とＳＣＡＮ＿２はＤＲＡＭ１００８の設定には直接関係しないものとする。
【００６６】
この時、ＤＲＡＭ１００８の設定を行うスキャンパスに含まれるフリップフロップの数を、他のスキャンパスのうち最大のフリップフロップをもつスキャンパスのフリップフロップ数の半分以下として構成する。図２では、ＳＣＡＮ＿Ｄに含まれるフリップフロップを、ＳＣＡＮ＿１やＳＣＡＮ＿２に含まれるフリップフロップの半分として構成している。
【００６７】
一般に、スキャンパステストにおける、スキャンパスのシフトのサイクル数は、最大のフリップフロップをもつスキャンパスのフリップフロップ数となる。このため、最大のフリップフロップをもつスキャンパスに含まれるフリップフロップ数の半分以下のフリップフロップで、スキャンパスを構成しておけば、他のスキャンパスに対するシフト動作が１回行われる間に、ＤＲＡＭ１００８の設定に関するスキャンパスのシフト動作は、最低２回行うことが可能となる。このスキャンパスの構成により、通常のＳＲＡＭを想定したテストパタンを２回目のシフト動作で設定し、１回目のシフト動作では、リフレッシュ動作を設定することにより、ＤＲＡＭに１００８対するスキャンパステストが可能となる。
【００６８】
次に、図２に基づくテスト回路によるテスト方法について、図１０と図１１をもとに説明する。図１０は、図２の回路に対し、通常のテストパタン生成手法に基づきテストパタン生成を行なった場合の設定の例であり、図１１は、図２の回路を利用した、本発明に基づくテストパタン生成手法を示した図である。
【００６９】
図１０、図１１に示すＳＭＣはスキャンパスのシフトモードとキャプチャーモードを切り替える信号であるＳＭＣの波形を示しており、ＳＭＣの波形は１がシフトモードで、０がキャプチャーモードを示している。また、図１０、図１１に示すＳＣＡＮＩＮ＿１、ＳＣＡＮＩＮ＿Ｄ、ＳＣＡＮＩＮ＿２は、それぞれ、図２におけるＳＣＡＮＩＮ＿１の波形、ＳＣＡＮＩＮ＿Ｄの波形、ＳＣＡＮＩＮ＿２の波形を示している。
【００７０】
図１０で、ＳＣＡＮ＿１設定１、ＳＣＡＮ＿１設定２、ＳＣＡＮ＿１設定３は、ＳＣＡＮＩＮ＿１の設定であり、それぞれ１回目、２回目、３回目のシフトモードの設定値を示している。ＳＣＡＮ＿２設定１、ＳＣＡＮ＿２設定２、ＳＣＡＮ＿２設定３は、ＳＣＡＮＩＮ＿２の設定であり、それぞれ１回目、２回目、３回目のシフトモードの設定値を示している。
【００７１】
ＤＲＡＭ設定用のスキャンパスのスキャン入力値は、ＳＣＡＮＩＮ＿Ｄで示されているが、他のスキャンパスに対し、フリップフロップ数が半分以下であるため、値を設定するのは、ＳＣＡＮ＿Ｄ設定１、ＳＣＡＮ＿Ｄ設定２、ＳＣＡＮ＿Ｄ設定３となり、それぞれ、１回目、２回目、３回目のシフトモードの設定値を示している。
【００７２】
未設定１、未設定２、未設定３は、他のスキャンパスの設定には必要な期間での設定を示しているが、ＤＲＡＭ設定用のスキャンパスでは、設定が不要となる。Ｃａｐ１、Ｃａｐ２はキャプチャーモードでの設定である。
【００７３】
同様に、図１１では、ＳＣＡＮ＿１設定１、ＳＣＡＮ＿１設定２、ＳＣＡＮ＿１設定３は、ＳＣＡＮＩＮ＿１の設定であり、それぞれ１回目、２回目、３回目のシフトモードの設定値を示している。ＳＣＡＮ＿２設定１、ＳＣＡＮ＿２設定２、ＳＣＡＮ＿２設定３は、ＳＣＡＮＩＮ＿２の設定であり、それぞれ１回目、２回目、３回目のシフトモードの設定値を示している。
【００７４】
ＤＲＡＭ設定用のスキャンパスのスキャン入力値は、ＳＣＡＮＩＮ＿Ｄで示されているが、他のスキャンパスに対し、フリップフロップ数が半分以下であるため、ＤＲＡＭのリフレッシュ時間を考慮しない場合に値を設定するのは、ＳＣＡＮ＿Ｄ設定１、ＳＣＡＮ＿Ｄ設定２、ＳＣＡＮ＿Ｄ設定３となり、それぞれ、１回目、２回目、３回目のシフトモードの設定値を示している。
【００７５】
未設定１、Ｒｅｆｒｅｓｈ設定１やＲｅｆｒｅｓｈ設定２は、書き込みや読み出し設定には必要のない設定であるが、本発明では、リフレッシュのための設定として利用することが可能である。Ｃａｐ１、Ｃａｐ２はキャプチャーモードでの設定である。
【００７６】
ここで、図１０と図１１のＳＣＡＮＩＮ＿Ｄの波形に注目をする。まずテストパタン生成では、ＤＲＡＭのリフレッシュ時間を考慮せずに、テストパタンを生成するため、図１０のような設定がもとめられる。次にリフレッシュ設定が必要な場合には、書き込み設定から読み出し設定の間に、リフレッシュ設定を挿入するが、ＳＣＡＮＩＮ＿Ｄの値としては、未設定１、未設定２、未設定３は、書き込み設定や読み出し設定には使用されないため、図１１のＲｅｆｒｅｓｈ設定１やＲｅｆｒｅｓｈ設定２に示すように、リフレッシュ設定を挿入することが可能である。Ｒｅｆｒｅｓｈ設定１やＲｅｆｒｅｓｈ設定２は、書き込み設定や読み出し設定には使用されないため、リフレッシュ設定は、書き込み設定や読み出し設定と矛盾することはなく、テストパタン生成が容易となる。
【図面の簡単な説明】
【００７７】
【図１】本発明の第１の実施例を示すＤＲＡＭのテストのための設定波形である。
【図２】本発明の第２の実施例を示した回路図である。
【図３】本発明の第１の実施例で用いられるテストパタン設定手法を示したフローチャートである。
【図４】本発明の第１の実施例の適用を説明するための回路図である。
【図５】図４に対し、本発明のテストパタン設定を段階的求めた第１の図である。
【図６】図４に対し、本発明のテストパタン設定を段階的求めた第２の図である。
【図７】図４に対し、本発明のテストパタン設定を段階的求めた第３の図である。
【図８】図４に対し、本発明のテストパタン設定を段階的求めた第４の図である。
【図９】図４に対し、本発明のテストパタン設定を段階的求めた第５の図である。
【図１０】図２に対する、従来のテストパタン設定を示した図である。
【図１１】図２に対する、本発明のテストパタン設定を示した図である。
【図１２】従来のメモリに対するテストの設定波形である。
【符号の説明】
【００７８】
１０８    Ｗｒｉｔｅ設定 
１０９    Ｒｅｆｒｅｓｈ設定 
１１０    Ｒｅａｄ設定 
１１１    Ｒｅａｄ値出力
４０１    スキャン入力端子
４０２    外部制御端子
４０３    フリップフロップ
４０５    フリップフロップ
４０６    フリップフロップ
４０７    フリップフロップ
４０８    フリップフロップ
４０９    バッファ
４１０    バッファ
４１１    バッファ
４１２    バッファ
４１３    バッファ
４１４    バッファ
４１５    ＡＮＤゲート
４１６    ＤＲＡＭ
４１７    バッファ
４１８    バッファ
４１９    フリップフロップ
４２０    フリップフロップ
４２１    回路
４２２    フリップフロップ
４２３    フリップフロップ
４２４    フリップフロップ
４２５    フリップフロップ
４２６    フリップフロップ
４２７    スキャン出力端子
４２８    回路
１００    テスト回路
１００２  スキャン入力端子
１００３  スキャン入力端子
１００４  スキャン入力端子
１００５  フリップフロップ群
１００６  フリップフロップ群
１００７  フリップフロップ群
１００８  ＤＲＡＭ
１００９  スキャン出力端子
１０１０  スキャン出力端子
１０１１  スキャン出力端子
【図１】
0004773148.tif 000002
【図２】
0004773148.tif 000003
【図３】
0004773148.tif 000004
【図４】
0004773148.tif 000005
【図５】
0004773148.tif 000006
【図６】
0004773148.tif 000007
【図７】
0004773148.tif 000008
【図８】
0004773148.tif 000009
【図９】
0004773148.tif 000010
【図１０】
0004773148.tif 000011
【図１１】
0004773148.tif 000012
【図１２】
0004773148.tif 000013