以下、本発明の実施の形態を図面に基づいて説明する。
図1は、ユーザー論理回路とメモリマクロ間の遅延故障の検証を可能とする半導体装置の第一実施例の回路構成の概略図である。図1中、本実施の形態を説明するために必要な構成のみが示され、他は省略される。図1において、半導体装置1は、メモリマクロ9と、ユーザー論理回路A、B、C及びDと、テスト用回路100、200、300及び400とを有する。
メモリマクロ9は、複数のデータ入力端子Din[0]〜[n](以下、総称してデータ入力Din端子)と、複数のアドレス入力端子Adr[0]〜[m](以下、総称してアドレス入力Adr端子)と、複数のデータ出力端子Dout[0]〜[n](以下、総称してデータ出力Dout端子)と、データ書き込み用のライトイネーブルWE端子と、クロック供給を受けるCK端子とを有する。
テスト用回路100は各データ入力Din端子に対応して設けられ、テスト用回路200は各アドレス入力Adr端子に対応して設けられ、そして、テスト用回路400は各データ出力Dout端子に対応して設けられる。
ユーザー論理回路Aはデータ入力Din端子へと対応するテスト用回路100を介して接続され、ユーザー論理回路Bはアドレス入力Adr端子へと対応するテスト用回路200を介して接続され、ユーザー論理回路Cはデータ出力Dout端子へと対応するテスト用回路400を介して接続され、ユーザー論理回路DはライトイネーブルWE端子へとそのテスト用回路300を介して接続される。
ここで、説明を簡単にするため、テスト用回路100は、データ入力端子Din[0]に対してのみ構成がしめされるが、データ入力端子Din[1]〜[n]に対しても同様に構成される。テスト用回路200及びテスト用回路400についても同様である。
テスト用回路100は、データ入力Din端子をテストするために構成される回路であり、SFF(スキャンフリップフロップ)11と、mux(マルチプレクサ)11、12及び13と、INV(インバータ)17と、メモリBIST回路19とを有する。メモリマクロ9のデータ入力Din端子は、メモリマクロ9にデータを入力する端子である。
SFF11は、テスト用のスキャンチェーンでシフトレジスタとして使用され、メモリマクロ9のテスト用の値がスキャンシフトによって入力されたり、ユーザー論理回路Aの出力を取り込むために使用される。また、SFF11は、mux13からの信号を入力し、mux12へと出力する。
mux11は、選択信号S11に応じて、SFF11又はメモリBIST19のいずれかによるメモリテスト用の入力又は動作させたユーザー論理回路Aからの入力の一方を選択して、メモリマクロ9のデータ入力Din端子へ出力する。mux12は、選択信号S12に応じて、SFF11からの入力又はメモリBIST回路19からの入力の一方を選択して、mux11へ出力する。mux13は、選択信号S13に応じて、mux11からの入力又はINV17によってmux11からの出力を反転させた入力の一方を選択して、SFF11へ出力する。INV17は、mux11からの出力を反転させてmux13に入力する。
テスト用回路200は、アドレス入力Adr端子をテストするために構成される回路であり、SFF21と、mux21、22及び23と、INV27と、AND28と、メモリBIST回路29とを有する。メモリマクロ9のアドレス入力Adr端子は、メモリマクロ9に入力されたデータを書き込むためのアドレスを入力する端子である。
SFF21は、テスト用のスキャンチェーンでシフトレジスタとして使用され、メモリマクロ9のテスト用の値がスキャンシフトによって入力されたり、ユーザー論理回路Bの出力を取り込むために使用される。また、SFF21は、mux23からの信号を入力し、AND28を介してmux22へと出力する。
mux21は、選択信号S21に応じて、SFF21又はメモリBIST29のいずれかによるメモリテスト用の入力又は動作させたユーザー論理回路Bからの入力の一方を選択して、メモリマクロ9のアドレス入力Adr端子へ出力する。mux22は、選択信号S22に応じて、SFF21からの入力又はメモリBIST回路29からの入力の一方を選択して、mux21へ出力する。mux23は、選択信号S23に応じて、mux21からの入力又はINV27によってからの出力を反転させた入力の一方を選択して、SFF21へ出力する。
INV27は、mux21からの出力を反転させてmux23に入力する。AND28は、アドレスを固定するためのアドレスマスクAM信号とSFF21からの信号との論理積をmux22へ出力する。
テスト用回路300は、ライトイネーブルWE端子をテストするために構成される回路であり、SFF31と、mux31、32及び33と、INV37と、AND38と、メモリBIST回路39とを有する。メモリマクロ9のライトイネーブルWE端子は、メモリマクロ9へのデータの書き込みを制御する端子である。
SFF31は、テスト用のスキャンチェーンでシフトレジスタとして使用され、メモリマクロ9のテスト用の値がスキャンシフトによって入力されたり、ユーザー論理回路Dの出力を取り込むために使用される。また、SFF31は、mux33からの信号を入力し、AND38を介してmux32へと出力する。
mux31は、選択信号S31に応じて、SFF31又はメモリBIST39のいずれかによるメモリテスト用の入力又は動作させたユーザー論理回路Dからの入力の一方を選択して、メモリマクロ9のライトイネーブルWE端子へ出力する。mux32は、選択信号S32に応じて、SFF31からの入力又はメモリBIST回路39からの入力の一方を選択して、mux31へ出力する。mux33は、選択信号S33に応じて、mux31からの入力又はINV37によってmux31からの出力を反転させた入力の一方を選択して、SFF31へ出力する。
INV37は、mux31からの出力を反転させてmux33に入力する。AND38は、アドレスを固定するためのアドレスマスクAM信号とSFF31からの信号との論理積をmux32へ出力する。
テスト用回路400は、データ出力Dout端子をテストするために構成される回路であり、SFF41と、SFF42と、mux41及び42と、INV47とを有する。メモリマクロ9のデータ出力Dout端子は、メモリマクロ9からデータを出力する端子である。
SFF41は、テスト用のスキャンチェーンでシフトレジスタとして使用され、ユーザー論理回Cの出力を取り込むために使用される。SFF42は、テスト用のスキャンチェーンでシフトレジスタとして使用され、ユーザー論理回路Cのテスト用の値がスキャンシフトによって入力されたり、メモリマクロ9からの出力を取り込むために使用される。また、SFF42は、mux42からの信号を入力し、mux41へと出力する。
mux41は、選択信号S41に応じて、SFF42からのユーザー論理回路Cのテスト用の入力又はメモリマクロ9のデータ出力端子からの入力の一方を選択して、ユーザー論理回路Cへと出力する。mux42は、選択信号S42に応じて、mux41からの入力又はINV47によってmux41からの出力を反転させた入力の一方を選択して、SFF42へ出力する。
このような構成を持つ半導体装置1では、SFF11、SFF21、SFF31、SFF41、SFF42が、スキャンチェーンを形成しシフトレジスタとして使用される。テスターがテストパターンをスキャンシフトでシフトインし、半導体装置1を動作させることによって、SFF41で取り込まれた(キャプチャされた)値と期待値、SFF42で取り込まれた(キャプチャされた)値と期待値とを比較することによって、遅延故障の検証を行なう。また、テスターが、選択信号S11からS13、S21からS23、アドレスマスクAM信号、選択信号S31からS33、ライトイネーブルマスクWM信号、及び選択信号S41及びS42を制御する。
このような第一の回路構成における、データ入力Din端子、アドレス入力Adr端子、データ出力Dout端子、ライトイネーブルWE端子の遅延故障の検出方法について説明する。
テスターによって遅延故障を検出するために、半導体装置1は、テストボードに搭載されテスターヘッドと電気的に接続され、テスターと信号線などで接続されるテスターヘッドを介して、テスターからの選択信号によって動作し、印加されたテスト信号に応じた応答信号をテスターへ通知する。テスターは予めテストパターン生成プログラムによって作成されたテストパターンと期待値とを用いて、半導体装置1にテストパターンを印加し、各種選択信号によってテスト動作を制御し、半導体装置1から得られた値と期待値とを比較して遅延故障を検出する。テストパターン生成プログラムは、CPU、メモリ、補助記憶装置、入出力ユニット、表示ユニットなどを有するコンピュータ装置で動作する、半導体装置のテストパターン及び期待値を生成するCPUによって実行可能なプログラムである。
以下の説明において、遅延故障を検出するためのテストパターンによる回路の動作をStepで示し説明する。先ず、ユーザー論理回路Aの遅延による影響を考慮したメモリマクロ9のデータ入力Din端子の遅延故障検出方法及びそのような遅延故障検出を検出するためのテストパターンの動作について図2及び図3で説明する。
図2は、図1に示す半導体装置の回路構成におけるメモリマクロのデータ入力端子の遅延故障検出方法を説明するための図である。図2において、前処理として、テストパターン生成プログラム90によって、ユーザー論理回路Aの遷移故障をSFF11で検出するためのテストパターン及び期待値を生成する。メモリマクロ9のアドレスは任意の値(例えば、「0」番地)に固定される。
テスター95は、テストパターン、選択信号S11からS42、クロック信号などを供給するため、また半導体装置1から出力データを取得するために、テスターヘッドを介して半導体装置1に設けられた所定の端子に接続される。テスター95は、テストパターン生成プログラム90によって生成されたテストパターン及び期待値を読み込んで、データ入力Din端子に掛かる遅延故障検出処理を実行する。
Step1において、テスター95は、ユーザー論理回路Aの遷移故障をSFF11で検出するテストパターンをスキャンシフトでシフトインする。このパターンでは、データを書き込むメモリマクロ9上のアドレスを固定する。このとき、SFF31には1をシフトインする。
Step2において、テスター95は、ユーザー論理回路Aを含むロジック部とメモリマクロ9及びテスト用回路100から400を含むメモリ部とに遅延試験用の高速な、LaunchクロックとCaptureクロックとを印加して半導体装置1を高速動作させ、ユーザー論理回路Aの遷移故障の影響をSFF11及びメモリマクロ9まで伝播させる。このとき、メモリマクロ9ではStep1で設定したアドレスにユーザー論理回路Aの遅延故障の影響を取り込む。
Step3において、テスター95は、Step1で設定したアドレスからデータを読み出す。Step4において、テスター95は、SFF42でメモリマクロ9から出力されたデータをキャプチャする。そして、Step5において、スキャンシフトにより値を読み出してSFF42の値を期待値と比較し遅延故障を検出する。Step3及びStep4では、選択信号S12によってメモリBIST回路19などの回路を使用してもよい。
このように、ユーザー論理回路Aの遅延故障の影響がメモリマクロ9に取り込まれるため、より実動作に基づいた精度の高い遅延故障の検出を行なうことができる。
図3は、図1に示す半導体装置の回路構成におけるメモリマクロのデータ入力端子の遅延故障を検出するテストパターンの動作に応じた各状態を説明するための表を示す図である。テストパターンの動作を説明するための各表は、テストパターンの各ステップに対応させて、データ入力、アドレス入力、ライトイネーブル、データマスク、チップイネーブル、メモリ内部、データ出力、キャプチャFFなどの項目で構成される。
データ入力の項目では、mux11、12及び13の制御端子の状態と、データ入力用のメモリ端子の状態とが示される。mux11、12及び13の制御端子の状態は、対応する選択信号S11、S12及びS13の値で示される。また、データ入力用のメモリ端子の状態は、データ入力Din端子の値で示される。
アドレス入力の項目では、mux21、22、23及びAND28の制御端子の状態と、アドレス入力用のメモリ端子の状態とが示される。mux21、22、23及びAND28の制御端子の状態は、対応する選択信号S21、S22、23及びアドレスマスクAM信号の値で示される。また、アドレス入力用のメモリ端子の状態は、アドレス入力Adr端子の値で示される。
ライトイネーブルの項目では、mux31、32、33及びAND38の制御端子の状態と、ライトイネーブル用のメモリ端子の状態とが示される。mux31、32、33及びAND38の制御端子の状態は、対応する選択信号S31、S32、S33及びライトイネーブルマスクWM信号の値で示される。また、ライトイネーブル用のメモリ端子の状態は、ライトイネーブルWE端子の値で示される。
データマスク及びチップイネーブルの項目については、半導体装置が各端子を持つメモリマクロを備えた構成にて後述されるため、ここではその説明を省略する。
メモリ内部の項目では、特定のアドレスの状態を示す。
データ出力の項目では、mux41及び42の制御端子の状態と、データ出力用のメモリ端子の状態とが示される。mux41及び42の制御端子の状態は、対応する選択信号S41及びS42の値で示される。また、データ出力用のメモリ端子の状態は、データ出力端子Doutの値で示される。
キャプチャFFの項目では、スキャンチェーンのうちメモリマクロ9の出力側の、テスター95によって期待値と比較されるSFF42の状態が示される。
各表は、以下のことを前提とする。
・「X」は「0」でも「1」でもよい信号値(don’t care)を示す。
・特定のアドレスとは、Step2でデータをキャプチャした際の試験対象のメモリのアドレスを示す。
・テストパターンに特に説明がない場合には、表中の値は、クロック印加前の状態を示す。
・表中の()内の値は、各ステップのクロック印加後にその値になることを示す。
・表中で「0/1」は回路が正常な状態では「0」となるが、故障が存在する状態では「1」となることを示す。逆に「1/0」は回路が正常な状態では「1」となるが、故障が存在する状態では「0」となることを示す。
アドレス入力Adr端子以外の他の各端子の遅延故障を検出するテストパターンの動作に応じた各状態を説明するための表も同様である。各表において、メモリマクロ9に備えられていない端子の項目については斜線で示される。
図3(A)に示す表では、メモリマクロ9のデータ入力Din端子の立ち上がり遅延故障を検出するテストパターンの動作を示している。メモリマクロ9のデータ入力Din端子へのデータを「0」から「1」へと変化させた場合において、ユーザー論理回路Aの遅延による影響が考慮されるようにしたテストパターンの動作例を示す。
Step1(シフト後)及びStep2において、データ入力の項目における選択信号S11を「0」に制御し、ライトイネーブルの項目における選択信号S31からS33及びライトイネーブルマスクWMの全て「1」に制御することによって、メモリマクロ9のデータ入力Din端子にデータが取り込まれてユーザー論理回路Aの影響がメモリマクロ9に伝播される。また、選択信号S13を「1」に制御することによって、ユーザー論理回路Aの影響がSFF11に伝播される。従って、Step2において、データ入力の項目におけるメモリマクロ9のデータ入力Din端子の状態が「0」から「1」へと変化し、メモリ内部の項目における特定のアドレスの状態は、ユーザー論理回路Aからメモリマクロ9の経路で遅延がなく正常であれば「1」を示し、遅延があれば「0」を示す。
ここで、アドレス入力の項目における選択信号S21及びS22を「1」に制御し、かつ、アドレスマスクAM信号を「0」に制御して、メモリマクロ9のアドレス入力Adr端子を全て「0」に設定しておくことによって、特定のアドレスを「0」番地としておくことができる。
Step3及びStep4において、特定のアドレスからデータを読み出すために、ライトイネーブルの項目におけるライトイネーブルマスクWMを「0」にする。Step3では、メモリマクロ9内で特定アドレス(この場合、「0」番地)からデータが読み出され、Step4において、データ出力の項目における選択信号S41を「0」に制御し、かつ、選択信号S42を「1」に制御することによって、メモリマクロ9からの出力データがSFF42へと取り込まれる。
Step5では、テスター95がSFF42の値と期待値とを比較して遅延故障を検出する。SFF42は、正常な場合は「1」を示し、遅延故障があった場合は「0」を示す。
図3(B)に示す表では、メモリマクロ9のデータ入力端子の立ち下がり遅延故障を検出するテストパターンの動作を示している。メモリマクロ9のデータ入力Din端子へのデータを「1」から「0」へと変化させた場合において、ユーザー論理回路Aの影響が考慮されるようにしたテストパターンの動作例を示す。
Step1(シフト後)及びStep2において、データ入力の項目における選択信号S11を「0」に制御し、ライトイネーブルの項目における選択信号S31からS33及びライトイネーブルマスクWMの全て「1」に制御することによって、メモリマクロ9のデータ入力Din端子にデータが取り込まれユーザー論理回路Aの影響がメモリマクロ9に伝播される。また、選択信号S13を「1」に制御することによって、ユーザー論理回路Aの影響がSFF11に伝播される。従って、Step2において、データ入力の項目におけるメモリマクロ9のデータ入力Din端子の状態が「1」から「0」へと変化し、メモリ内部の項目における特定のアドレスの状態は、ユーザー論理回路Aからメモリマクロ9の経路で遅延がなく正常であれば「0」を示し、遅延があれば「1」を示す。
ここで、アドレス入力の項目における選択信号S21及びS22を「1」に制御し、かつ、アドレスマスクAM信号を「0」に制御して、メモリマクロ9のアドレス入力Adr端子を全て「0」に設定しておくことによって、特定のアドレスを「0」番地としておくことができる。
Step3及びStep4において、特定のアドレスからデータを読み出すために、ライトイネーブルの項目におけるライトイネーブルマスクWM信号を「0」にする。Step3では、メモリマクロ9内で特定アドレス(この場合、「0」番地)からデータが読み出され、Step4において、データ出力における選択信号S41を「0」に制御し、かつ、選択信号S42を「1」に制御することによって、メモリマクロ9からの出力データがSFF42へと取り込まれる。
Step5では、テスター95がSFF42の値と期待値とを比較して遅延故障を検出する。SFF42は、正常な場合は「0」を示し、遅延故障があった場合は「1」を示す。
次に、ユーザー論理回路Bの遅延による影響を考慮したメモリマクロ9のアドレス入力Adr端子の遅延故障検出方法及びそのような遅延故障検出を検出するためのテストパターンの動作について図4及び図5で説明する。
図4は、図1に示す半導体装置の回路構成におけるメモリマクロのアドレス入力端子の遅延故障検出方法を説明するための図である。図4において、前処理として、テストパターン生成プログラム90によって、ユーザー論理回路Bの遷移故障をSFF21で検出するためのテストパターン及び期待値を生成する。SFF11は自分の値を反転させる構成とする。
テスター95は、テストパターン生成プログラム90によって生成されたテストパターン及び期待値を読み込んで、アドレス入力Adr端子に掛かる遅延故障検出処理を実行する。
Step0において、テスター95は、初期化処理として、メモリBIST回路29を動作させ、すべてのメモリマクロ9上のアドレスに同じ値(例えば、「0」)を書き込む。そして、Step1において、スキャンシフトにより、ユーザー論理回路Bの遷移故障をSFF21で検証するためのテストパターンをセットする。このスキャンシフトの際、SFF11に「0」を入れておく。
Step2において、テスター95は、ユーザー論理回路Bを含むロジック部とメモリマクロ9及びテスト用回路100から400を含むメモリ部とに遅延試験用の高速な、LaunchクロックとCaptureクロックとを印加して半導体装置1を高速動作させ、ユーザー論理回路Bの遷移故障の影響をSFF21及びメモリマクロ9まで伝播させる。このとき、Captureクロックが印加された後のメモリマクロ9には、SFF21が示すメモリマクロ9の特定のアドレスにSFF11の信号遷移の結果が取り込まれた状態となる。SFF11の信号遷移は、テスト用回路100のINV17によって、Step1で設定された入力データ「0」が反転し「1」となることによる。ここで、全ビット1のアドレスが存在しない場合には複数のパターンに分けてもよい。
Step3において、テスター95は、SFF21の値でセットされたメモリアドレスのデータを読み出す。Step4において、テスター95は、SFF42でメモリマクロ9から読み出されたデータの値をキャプチャする。そして、Step5において、スキャンシフトにより値を読み出してSFF42の値を期待値と比較し遅延故障を検出する。ここでの期待値は、全てのデータ信号が「1」を示す。
このように、ユーザー論理回路Bの遅延故障の影響がメモリマクロ9に取り込まれるため、より実動作に基づいた精度の高い遅延故障の検出を行なうことができる。
図5は、図1に示す半導体装置の回路構成におけるメモリマクロのアドレス入力端子の遅延故障を検出するテストパターンの動作に応じた各状態を説明するための表を示す図である。図5中に示されるテストパターンの動作を説明するための各表は、図3に示す表と同様の項目で構成され、また、表中の表現も同様の前提に基づくため、それら説明を省略する。
図5(A)に示す表では、メモリマクロ9のアドレス入力Adr端子の立ち上がり遅延故障を検出するテストパターンの動作を示している。メモリマクロ9のアドレス入力Adr端子へのデータを「0」から「1」へと変化させた場合において、ユーザー論理回路Bの遅延による影響が考慮されるようにしたテストパターンの動作例を示す。
Step0において、アドレス入力の項目における選択信号S21を「1」及び選択信号S22を「0」に制御して、メモリBIST回路29を動作させて、メモリBIST回路29から出力されたアドレスがメモリマクロ9のアドレス入力Adr端子に設定される。一方、データ入力の項目における選択信号S11及びS12を「1」及び選択信号S13を「0」に制御しておくことで、Step1にてSFF11に設定される「0」がStep2でINV19によって「1」に反転させるようにする。また、ライトイネーブルの項目における選択信号S31を「1」及び選択信号S32を「0」に制御して、メモリBIST回路39からの出力を有効にし、「1」のライトイネーブル信号WEをメモリ端子WEに入力させる。
Step1(シフト後)において、アドレス入力の項目における選択信号S21を「0」及び選択信号S23を「1」に制御することによって、Step2にてSFF21でユーザー論理回路Bの影響を取得できるようにする。Step2では、アドレス入力の項目における選択信号S21を「1」に制御することによって、Step1のスキャンシフトによってSFF21に設定された特定のアドレスがメモリマクロ9のアドレス入力Adr端子に入力されることにより、例えば、全ビット「0」から全ビット「1」へと変化させる。
一方、Step1(シフト後)及びStep2において、ライトイネーブルの項目における選択信号S31からS33及びライトイネーブルマスクWMの全て「1」に制御することによって、メモリマクロ9のデータ入力Din端子にデータが、SFF21の示す特定のアドレスに取り込まれる。従って、Step2にて、特定のアドレス(この場合、「0」番地)にデータが遅延故障なく書き込まれている場合には「1」が格納され、遅延故障があった場合には「0」が格納される。
Step3及びStep4において、ライトイネーブルの項目におけるライトイネーブルマスクWM信号を「0」に制御して、特定のアドレスからデータを読み出す。ここで、Step3にて、アドレスマスクAM信号を「1」に制御して、メモリアドレスを固定しておく。このようにして、Step3では、メモリマクロ9内で特定のアドレス(この場合、「0」番地)からデータが読み出され、Step4において、データ出力における選択信号S41を「0」に制御し、かつ、選択信号S42を「1」に制御することによって、メモリマクロ9からの出力データがSFF42へと取り込まれる。
Step5では、テスター95がSFF42の値と期待値とを比較して遅延故障を検出する。SFF42は、正常な場合は「1」を示し、遅延故障があった場合は「0」を示す。
このような制御によって、例えば、アドレス入力Adr端子の全ビットを「0」から「1」へと立ち上げた場合の遅延故障を、ユーザー論理回路Bの影響を考慮して検証することができる。
図5(B)に示す表では、メモリマクロ9のアドレス入力Adr端子の立ち下がり遅延故障を検出するテストパターンの動作を示している。メモリマクロ9のアドレス入力Adr端子へのデータを「1」から「0」へと変化させた場合において、ユーザー論理回路Bの遅延による影響が考慮されるようにしたテストパターンの動作例を示す。図5(A)に示す表との違いのみを説明し、他動作は同様であるので説明を省略する。
Step1(シフト後)及びStep2において、SFF21に設定された特定のアドレスがメモリマクロ9のアドレス入力Adr端子に入力されることにより、例えば、全ビット「0」から全ビット「1」へと変化させる。ここで、Step2にて、特定のアドレス(この場合、全ビット「1」で指定されるメモリアドレス)にデータが遅延故障なく書き込まれている場合には「1」が格納され、遅延故障があった場合には「0」が格納される。従って、Step5では、テスター95がSFF42の値と期待値とを比較して遅延故障を検出する。SFF42は、正常な場合は「1」を示し、遅延故障があった場合は「0」を示す。
このような制御によって、例えば、アドレス入力Adr端子の全ビットを「1」から「0」へと立ち上げた場合の遅延故障を、ユーザー論理回路Bの影響を考慮して検証することができる。
次に、ユーザー論理回路Cの遅延故障の検証の際にメモリマクロ9のデータ出力Dout端子の遅延の影響を考慮した遅延故障検出方法及びそのような遅延故障検出を検出するためのテストパターンの動作について図6及び図7で説明する。
図6は、図1に示す半導体装置の回路構成におけるメモリマクロのデータ出力端子の遅延故障検出方法を説明するための図である。図6において、前処理として、テストパターン生成プログラム90によって、SFF42からSFF41の間の遷移故障を検出するテストパターン及び期待値を生成する。SFF42は自分の値を反転させる構成とする。
テスター95は、テストパターン生成プログラム90によって生成されたテストパターン及び期待値を読み込んで、データ入力Din端子に掛かる遅延故障検出処理を実行する。
Step1において、テスター95は、生成済みのテストパターンのうちSFF42にスキャンシフト動作で設定されるテストパターンをSFF11に設定する。Step2において、テスター95は、アドレス0にSFF11と同じ値を記憶させ、アドレス1にSFF11の反転値を記憶させる。そして、Step3において、SFF42の値と同じ値(アドレス0の値)が出力されるように、メモリマクロ9の値を読み出しておく。また、アドレス0及びアドレス1の夫々の値を記憶させてアドレス0の値を読み出す方法として、例えば、Step1〜3として、メモリBIST回路19を動作させてもよい。
Step4において、ユーザー論理回路Cの検出に設定されるテストパターンをスキャンシフト動作で設定する。
Step5において、テスター95は、ユーザー論理回路Cを含むロジック部とメモリマクロ9及びテスト用回路100から400を含むメモリ部とに遅延試験用の高速な、LaunchクロックとCaptureクロックとを印加して半導体装置1を高速動作させ、メモリマクロ9のデータ出力Dout端子からSFF42を動作させるのと同じ信号(メモリマクロ9のアドレス1の値)を出力させて、SFF41でキャプチャする。
Step6において、テスター95は、スキャンシフトにより値を読み出して、SFF41の期待値と比較し遅延故障を検出する。
このように、ユーザー論理回路Cの遅延故障の検証の際にメモリマクロ9のデータ出力Dout端子の遅延の影響を考慮することができるため、より実動作に基づいた精度の高い遅延故障の検出を行なうことができる。
図7は、図1に示す半導体装置の回路構成におけるメモリマクロのデータ出力端子の遅延故障を検出するテストパターンの動作に応じた各状態を説明するための表を示す図である。テストパターンの動作を説明するための各表は、図3に示す表と同様の項目で構成され、また、表中の表現も同様の前提に基づくため、それら説明を省略する。
図7(A)に示す表では、メモリマクロのデータ出力Dout端子の立ち上がり遅延故障を検出するテストパターンの動作を示している。メモリマクロ9のデータ出力Dout端子から出力されるデータを「0」から「1」へと変化させた場合におけるテストパターンの動作例を示す。
Step1(設定後)及びStep2において、データ入力項目における選択信号S11及びS12を「1」に、かつ選択信号S13を「0」に制御し、ライトイネーブルの項目における選択信号S31からS33及びライトイネーブルマスクWM信号の全てを「1」に制御することによって、スキャンシフト動作後にSFF42と同一の値が設定されたSFF11の値と、選択信号S13を「0」に制御することによるSFF11の反転値とが順次メモリマクロ9のデータ入力Din端子に取り込まれる。この際、アドレス入力項目における選択信号S21、S22及びアドレスマスクAM信号を「1」に、かつ選択信号S23を「0」に制御しておくことによって、例えば、SFF42と同一値がアドレス0に格納され、その反転値がアドレス1に格納される。
よって、Step3において、アドレス0には値「0」及びアドレス1には値「1」が格納された状態から、アドレス0の値「0」を出力されるようにメモリマクロ9の値を読み出しておく。Step4(シフト後)において、スキャンシフト動作によりユーザー論理回路Cの遅延故障の検出パターンを設定する。Step5において、データ出力項目における選択信号S41及びS42を「0」に制御することによって、SFF42を動作させるのと同様の動作をメモリマクロ9のデータ出力Dout端子から行なうようにすると共に、その値をSFF41に取り込む。
Step6では、テスター95がSFF41の値と期待値とを比較して遅延故障を検出する。SFF41は、正常な場合は「1」を示し、遅延故障があった場合は「0」を示す。
このような制御によって、データ出力Dout端子の立ち上がりにおける遅延故障を、SFF42からSFF41の間の遅延故障を検出するテストパターンを用いて、メモリマクロ9のデータ出力端子Dout[n:0]からユーザー論理回路Cまでの経路を含めたSFF41までの遅延を検証することができる。
図7(B)に示す表では、メモリマクロ9のデータ出力端子の立ち下がり遅延故障を検出するテストパターンの動作を示している。メモリマクロ9のデータ出力端子から出力されるデータを「1」から「0」へと変化させた場合におけるテストパターンの動作例を示す。図7(A)は、SFF42にスキャンシフトで設定される値が「0」である場合の動作を示す表であったのに対し、図7(B)は、SFF42にスキャンシフトで設定される値が「1」である場合の動作を示す表であり、動作は同様になされるのでその説明を省略する。ただし、Step5にて、テスター95がSFF41の値と期待値とを比較して遅延故障を検出する際には、SFF41は、正常な場合は「0」を示し、遅延故障があった場合は「1」を示す。
このような制御によって、データ出力端子の立ち下がりにおける遅延故障を、SFF42からSFF41の間の遅延故障を検出するテストパターンを用いて、メモリマクロ9のデータ出力Dout端子からユーザー論理回路Cまでの経路を含めたSFF41までの遅延を検証することができる。
特に、このデータ出力端子の遅延故障の検出では、図8に示すようにテストパターンの作成を少ない工数で実現することができる。図8は、図1に示す半導体装置のテスト動作に要する負荷を説明するための図である。図8において、処理順序を示すStep1からStep6毎に、テスト時の回路動作の概要と、対象とする遅延故障を検証するためのテストパターン作成処理の有無と、テストに要する負荷とを示している。
アドレス0に「0」を書き込むStep1と、アドレス1に「1」を書き込むStep2とで、テストパターンを必要とするがユーザー論理回路Cの遅延故障を検出するパターンのうち、SFF41に設定する信号値を用いればよい。また、アドレス0から「0」を読み出すStep3は、テストパターンの作成を必要としない。Step4およびStep6はシフト動作を行うだけなので、実際は、Step5のテストパターンだけを作成する必要がある。
従来技術では、Step1からStep3およびStep5において、ユーザー論理回路A、B、C及びDの動作を考慮したテストパターンを作成しなければならないのに対して、図1の半導体装置1の動作ロジックをテストする場合には、Step5で必要とされるテストパターンのみでよく、かつ、ユーザー論理回路Cの動作のみを考慮したテストパターンを作成するだけである。Step1〜Step3では、上述したように、選択信号S11〜S13、S21〜S23、S31〜S33、S41〜S44に特定の信号をセットするのみである。図8はデータ出力端子の例であるが、メモリマクロのその他の端子、データ入力端子、アドレス入力端子、ライトイネーブル端子、データマスク端子およびチップイネーブル端子の遅延故障についても、同様に対象とする遅延故障のテストに要する負荷を削減することができる。
次に、ユーザー論理回路Dの遅延による影響を考慮したメモリマクロ9のライトイネーブルWE端子の遅延故障検出方法及びそのような遅延故障検出を検出するためのテストパターンの動作について図9及び図10で説明する。
図9は、図1に示す半導体装置の回路構成におけるメモリマクロのライトイネーブル端子の遅延故障検出方法を説明するための図である。図9において、前処理として、テストパターン生成プログラム90によって、ユーザー論理回路Dの遷移故障をSFF31で検出するためのテストパターン及び期待値を生成する。
テスター95は、テストパターン生成プログラム90によって生成されたテストパターン及び期待値を読み込んで、ライトイネーブルWE端子に掛かる遅延故障検出処理を実行する。
Step1において、テスター95は、スキャンシフトにより前処理で生成済みの“ユーザー論理回路Dの遷移故障をSFF31で検出するためのテストパターン”をセットする。このスキャンシフトの際、SFF11に「0」を入れておく。
Step2において、テスター95は、ユーザー論理回路Dを含むロジック部とメモリマクロ9及びテスト用回路100から400を含むメモリ部とに遅延試験用の高速な、LaunchクロックとCaptureクロックとを印加して半導体装置1を高速動作させ、ユーザー論理回路Dの遷移故障の影響をSFF31及びメモリマクロ9のライトイネーブルWE端子まで伝播させる。このとき同時に、メモリマクロ9にはStep2で書き込んだメモリアドレスにユーザー論理回路Dの遅延故障の影響が書き込まれる。
Step3において、テスター95は、SFF21の値でセットされたメモリアドレスのデータを読み出す。Step4において、テスター95は、SFF42でメモリマクロ9から読み出されたデータの値をキャプチャする。そして、Step5において、スキャンシフトにより値を読み出してSFF42の値を期待値と比較し遅延故障を検出する。
このように、ユーザー論理回路Dの遅延故障の影響がメモリマクロ9に取り込まれるため、より実動作に基づいた精度の高い遅延故障の検出を行なうことができる。
図10は、図1に示す半導体装置の回路構成におけるメモリマクロのライトイネーブルWE端子の遅延故障を検出するテストパターンの動作に応じた各状態を説明するための表を示す図である。図10中に示されるテストパターンの動作を説明するための各表は、図3に示す表と同様の項目で構成され、また、表中の表現も同様の前提に基づくため、それら説明を省略する。
図10(A)に示す表では、メモリマクロ9のライトイネーブルWE端子の立ち上がり遅延故障を検出するテストパターンの動作を示している。メモリマクロ9のライトイネーブルWE端子への信号を「0」から「1」へと変化させた場合において、ユーザー論理回路Dの遅延による影響が考慮されるようにしたテストパターンの動作例を示す。
Step1(シフト後)からStep4において、アドレス入力の項目における選択信号S21〜S23及びアドレスマスクAM信号をすべて「1」に制御することによって、SFF21にシフトインされたアドレスを特定のアドレスとして固定して、そのメモリアドレスにのみデータの書き込み及び読み出しがなされるようにする。ここで、アドレスマスクAM信号を「0」に制御するならば、選択信号S23は「X(don’t care)」でもよい。
また、Step1(シフト後)及びStep2において、データ入力項目における選択信号S11及びS12を「1」、かつ選択信号S13を「0」に制御することによって、SFF11からの信号が、Step2にてINV17によって「0」から「1」へと変化する。一方、ライトイネーブル項目における選択信号S31を「0」及び選択信号S32を「1」、かつライトイネーブル信号WEを「1」に制御することによって、SFF31でユーザー論理回路Dの影響を取得できるようにし、特定のアドレスへの書き込みが許可されることにより、メモリマクロ9のデータ入力Din端子の値が「0」から「1」への変化に応じて、特定のアドレスに変化した値「1」が書き込まれる。
Step3及びStep4において、ライトイネーブルの項目における選択信号S31及びS32を「1」、かつライトイネーブルマスクWM信号を「0」に制御することによって、書き込み不可に制御しておき、また、Step4において、データ出力の項目における選択信号S41を「0」、かつ選択信号S42を「1」に制御する。この制御により、SFF21からの値でセットされた特定のアドレスからデータを読み出し、SFF42でメモリマクロ9から読み出されたデータをキャプチャする。
Step5では、テスター95がSFF42の値と期待値とを比較して遅延故障を検出する。SFF42は、正常な場合は「1」を示し、遅延故障があった場合は「0」を示す。
このような制御によって、ライトイネーブルWE端子を「0」から「1」へと立ち上げた場合の遅延故障を、ユーザー論理回路Dの影響を考慮して検証することができる。
図10(B)に示す表では、メモリマクロ9のライトイネーブルWE端子の立ち下がり遅延故障を検出するテストパターンの動作を示している。メモリマクロ9のライトイネーブルWE端子への信号を「1」から「0」へと変化させた場合において、ユーザー論理回路Dの遅延による影響が考慮されるようにしたテストパターンの動作例を示す。図10(A)に示す表との違いのみを説明し、他動作は同様であるので説明を省略する。
Step1(シフト後)及びStep2において、データ入力項目における選択信号S11及びS12を「1」、かつ選択信号S13を「0」に制御することによって、SFF11からの信号が、Step2にてINV17によって「0」から「1」へと変化する。
一方、Step1(シフト後)及びStep2において、ライトイネーブル項目における選択信号S31を「0」及び選択信号S32を「1」、かつライトイネーブルWE信号を「1」に制御することによって、SFF31でユーザー論理回路Dの影響を取得できるようにし、Step3及びStep4において、ライトイネーブルの項目における選択信号S31及びS32を「1」、かつライトイネーブルマスクWM信号を「0」に制御することによって、書き込み不可に制御することによって、特定のアドレスへの書き込みが許可直後に不可とすることにより、メモリマクロ9のデータ入力Din端子の値が「0」から「1」へと変化しても、ライトイネーブルWE端子の遅延故障がなければ、特定のアドレスに変化した値「1」が書き込まれることなく値「0」を示し、遅延故障があれば値「1」が書き込まれる。
よって、Step5では、テスター95がSFF42の値と期待値とを比較して遅延故障を検出する際には、SFF42は、正常な場合は「0」を示し、遅延故障があった場合は「1」を示す。
このような制御によって、ライトイネーブルWE端子を「1」から「0」へと立ち下げた場合の遅延故障を、ユーザー論理回路Dの影響を考慮して検証することができる。
次に、メモリマクロ9が更にデータマスクDM端子を備えた場合について、図11から図13で説明する。図11は、ユーザー論理回路とメモリマクロ間の遅延故障の検証を可能とする半導体装置の第二実施例の回路構成の概略図である。図11中、本実施の形態を説明するために必要な構成のみが示され、他は省略される。図11において、半導体装置1−2は、メモリマクロ9−2と、ユーザー論理回路A、B、C、D及びEと、テスト用回路100、200、300、400及び500とを有する。
第二実施例における回路構成では、メモリマクロ9−2は、図1に示すメモリマクロ9の種々の端子に加えて、複数のアドレス入力端子Adr[0]〜[m]に対応するデータマスク端子DM[0]〜[m](以下、総称してデータマスクDM端子と言う。)を更に有している。メモリマクロ9−2のデータマスクDM端子は、対応するデータ入力Din端子に対して、ビット毎に書き込み可否を制御する端子である。
よって、半導体装置1−2は、図1に示す半導体装置の第一実施例における回路構成に加えて、データマスクDM端子への遅延故障を検証するための回路を有している。従って、第一実施例における回路構成と同様の構成部分の説明は省略され、データマスクDM端子への遅延故障検証に係るユーザー論理回路E及びテスト用回路500等について説明する。
ユーザー論理回路EはデータマスクDM端子へと対応するテスト用回路500を介して接続される。
テスト用回路500は、データマスクDM端子をテストするために構成される回路であり、SFF51と、mux51、52及び53と、INV57と、AND58と、メモリBIST回路59とを有する。
SFF51は、テスト用のスキャンチェーンでシフトレジスタとして使用され、メモリマクロ9−2のテスト用の値がスキャンシフトによって入力されたり、ユーザー論理回路Eの出力を取り込むために使用される。また、SFF51は、mux53からの信号を入力し、AND58を介してmux52へと出力する。
mux51は、選択信号S51に応じて、SFF51又はメモリBIST59のいずれかによるメモリテスト用の入力又は動作させたユーザー論理回路Eからの入力の一方を選択して、メモリマクロ9−2のデータマスクDM端子へ出力する。mux52は、選択信号S52に応じて、SFF51からの入力又はメモリBIST回路59からの入力の一方を選択して、mux51へ出力する。mux53は、選択信号S53に応じて、mux51からの入力又はINV57によってからの出力を反転させた入力の一方を選択して、SFF51へ出力する。
INV57は、mux51からの出力を反転させてmux53に入力する。AND58は、データマスク(DM)を固定するためのDMマスクDMM信号とSFF51からの信号との論理積をmux52へ出力する。
図1に示す構成と同様に、半導体装置1−2においても、SFF11、SFF21、SFF31、SFF41、SFF42、SFF51が、スキャンチェーンを形成しシフトレジスタとして使用される。テスターがテストパターンをスキャンシフトでシフトインし、半導体装置1−2を動作させることによって、SFF41で取り込まれた(キャプチャされた)値と期待値、SFF42で取り込まれた(キャプチャされた)値と期待値とを比較することによって、遅延故障の検証を行なう。また、テスターが、選択信号S11からS13、S21からS23、アドレスマスクAM信号、選択信号S31からS33、ライトイネーブルマスクWM信号、選択信号S41及びS42、選択信号S51からS53、DMマスクDMM信号を制御する。
このような第二の回路構成における、ユーザー論理回路Eの遅延による影響を考慮したメモリマクロ9−2のデータマスクDM端子の遅延故障検出方法及びそのような遅延故障検出を検出するためのテストパターンの動作について図12及び図13で説明する。
図12は、図11に示す半導体装置の回路構成におけるメモリマクロのデータマスク端子の遅延故障検出方法を説明するための図である。図12において、前処理として、テストパターン生成プログラム90によって、ユーザー論理回路Eの遷移故障をSFF51で検出するためのテストパターン及び期待値を生成する。
テスター95は、テストパターン生成プログラム90によって生成されたテストパターン及び期待値を読み込んで、データマスクDM端子に掛かる遅延故障検出処理を実行する。
Step1において、テスター95は、スキャンシフトにより前処理で生成済みの“ユーザー論理回路Eの遷移故障をSFF51で検出するためのテストパターン”をセットする。このスキャンシフトの際、SFF11に「0」を入れ、かつSFF31に「1」を入れておく。
Step2において、テスター95は、ユーザー論理回路Eを含むロジック部とメモリマクロ9−2及びテスト用回路100から500を含むメモリ部とに遅延試験用の高速な、LaunchクロックとCaptureクロックとを印加して半導体装置1−2を高速動作させ、ユーザー論理回路Eの遷移故障の影響をSFF51及びメモリマクロ9−2のデータマスク端子まで伝播させる。このとき同時に、メモリマクロ9−2にはStep2で書き込んだメモリアドレスにユーザー論理回路Eの遅延故障の影響が書き込まれる。
Step3において、テスター95は、SFF21の値でセットされたメモリアドレスのデータを読み出す。Step4において、テスター95は、SFF42でメモリマクロ9−2から読み出されたデータの値をキャプチャする。そして、Step5において、スキャンシフトにより値を読み出してSFF42の値を期待値と比較し遅延故障を検出する。
このように、ユーザー論理回路Eの遅延故障の影響がメモリマクロ9−2に取り込まれるため、より実動作に基づいた精度の高い遅延故障の検出を行なうことができる。
図13は、図11に示す半導体装置の回路構成におけるメモリマクロのデータマスク端子の遅延故障を検出するテストパターンの動作に応じた各状態を説明するための表を示す図である。図13中の各表におけるチップイネーブルの項目は、メモリマクロ9−2がチップイネーブルCE端子を備えない構成であるため、斜線で示される。
データマスクの項目では、図11に示されるmux51、52、53及びAND58の制御端子の状態と、データマスク用のメモリ端子の状態とが示される。mux51、52、53及びAND58の制御端子の状態は、対応する選択信号S51、S52、S53及びDMマスクDMM信号の値で示される。また、データマスク用のメモリ端子の状態は、データマスクDM端子の値で示される。
図13(A)に示す表では、メモリマクロ9−2のデータマスク端子の立ち上がり遅延故障を検出するテストパターンの動作を示している。メモリマクロ9−2のデータマスクDM端子へのデータを「0」から「1」へと変化させた場合において、ユーザー論理回路Eの遅延による影響が考慮されるようにしたテストパターンの動作例を示す。
Step1(シフト後)からStep4まで、アドレス入力の項目における制御信号S21〜S23及びアドレスマスクAM信号を「1」に制御することによって、特定のアドレスにのみデータの書き込み及び読み出しを行なうようにする。
Step1(シフト後)及びStep2において、データ入力の項目における選択信号S11及びS12を「1」に制御することによって、SFF11に入力されていた値「0」をデータ入力Din端子に入力するようにし、また選択信号S13を「0」に制御しておくことで、Step1にてSFF11に入力された「0」がStep2でINV19によって「1」に反転されるようにする。
また、ライトイネーブルの項目において、選択信号S31、S32及びライトイネーブルマスクWM信号を「1」、及び選択信号S33を「0」に制御し、メモリマクロ9−2のライトイネーブルWE端子を「1」にして書き込み可能の状態に制御する。
更に、データマスクの項目における選択信号S51を「0」、及び選択信号S53を「1」に制御することによって、ユーザー論理回路Eの影響がメモリマクロ9−2のデータマスクDM端子とSFF51とに伝播させる。この場合、Step2にてビットへの書き込み不可から書き込み可へと状態が遷移するため、「0」から「1」へのデータ遷移に対して、正常であれば特定のアドレスにて「1」を示し、遅延がれば「0」を示す。
Step3及びStep4において、データの読み出す中のデータの特定のアドレスへの書き込みを不可にするため、ライトイネーブルの項目におけるライトイネーブルマスクWM信号を「0」に制御する。Step3では、メモリマクロ9−2内で特定アドレスからデータが読み出され、Step4において、データ出力の項目における選択信号S41を「0」に制御し、かつ、選択信号S42を「1」に制御することによって、メモリマクロ9−2からの出力データがSFF42へと取り込まれる。
Step5では、テスター95がSFF42の値と期待値とを比較して遅延故障を検出する。SFF41は、正常な場合は「1」を示し、遅延故障があった場合は「0」を示す。
このような制御によって、データマスクDM端子を「0」から「1」へと立ち上げた場合の遅延故障を、ユーザー論理回路Eの影響を考慮して検証することができる。
図13(B)に示す表では、メモリマクロ9−2のデータマスクDM端子の立ち下がり遅延故障を検出するテストパターンの動作を示している。メモリマクロ9−2のデータマスクDM端子へのデータを「1」から「0」へと変化させた場合において、ユーザー論理回路Eの遅延による影響が考慮されるようにしたテストパターンの動作例を示す。図13(A)に示す表における同様の制御であるため、その説明を省略する。
データマスクの項目における選択信号S51を「0」、及び選択信号S53を「1」に制御することによって、ユーザー論理回路Eの影響がメモリマクロ9−2のデータマスクDM端子とSFF51とに伝播させる。この場合、Step2にてビットへの書き込み可から書き込み不可へと状態が遷移するため、「0」から「1」へのデータ遷移に対して、正常であれば特定のアドレスにて「0」を示し、遅延によってデータが書き込まれてしまった場合は「1」を示す。
従って、Step5にて、テスター95がSFF42の値と期待値とを比較して遅延故障を検出する際には、SFF41は、正常な場合は「0」を示し、遅延故障があった場合は「1」を示す。
このような制御によって、データマスクDM端子を「1」から「0」へと立ち下げた場合の遅延故障を、ユーザー論理回路Eの影響を考慮して検証することができる。
次に、メモリマクロ9が更にチップイネーブルCE端子を備えた場合について、図14から図16で説明する。図14は、ユーザー論理回路とメモリマクロ間の遅延故障の検証を可能とする半導体装置の第三実施例の回路構成の概略図である。図14中、本実施の形態を説明するために必要な構成のみが示され、他は省略される。図14において、半導体装置1−3は、メモリマクロ9−3と、ユーザー論理回路A、B、C、D及びFと、テスト用回路100、200、300、400及び600とを有する。
第三実施例における回路構成では、メモリマクロ9−3は、図1に示すメモリマクロ9の種々の端子に加えて、チップイネーブルCE端子を更に有している。チップイネーブルCE端子は、ライトモードやリードモードなどに関係なくデータが書き換わる可能性がある場合にそれを防ぎ、データを保持するための端子である。
よって、半導体装置1−3は、図1に示す半導体装置の第一実施例における回路構成に加えて、チップイネーブルCE端子への遅延故障を検証するための回路を有している。従って、第一実施例における回路構成と同様の構成部分の説明は省略され、チップイネーブルCE端子への遅延故障検証に係るユーザー論理回路F及びテスト用回路600等について説明する。
ユーザー論理回路FはチップイネーブルCE端子へと対応するテスト用回路600を介して接続される。
テスト用回路600は、チップイネーブルCE端子をテストするために構成される回路であり、SFF61と、mux61、62及び63と、INV67と、AND68と、メモリBIST回路69とを有する。
SFF61は、テスト用のスキャンチェーンでシフトレジスタとして使用され、メモリマクロ9−3のテスト用の値がスキャンシフトによって入力されたり、ユーザー論理回路Fの出力を取り込むために使用される。また、SFF61は、mux63からの信号を入力し、AND68を介してmux62へと出力する。
mux61は、選択信号S61に応じて、SFF61又はメモリBIST69のいずれかによるメモリテスト用の入力又は動作させたユーザー論理回路Fからの入力の一方を選択して、メモリマクロ9−3のチップイネーブルCE端子へ出力する。mux62は、選択信号S62に応じて、SFF61からの入力又はメモリBIST回路69からの入力の一方を選択して、mux61へ出力する。mux63は、選択信号S63に応じて、mux61からの入力又はINV67によってからの出力を反転させた入力の一方を選択して、SFF61へ出力する。
INV67は、mux61からの出力を反転させてmux63に入力する。AND68は、チップイネーブル(CE)を固定するためのCEマスクCM信号とSFF61からの信号との論理積をmux62へ出力する。
図1に示す構成と同様に、半導体装置1−3においても、SFF11、SFF21、SFF31、SFF41、SFF42、SFF51、SFF61が、スキャンチェーンを形成しシフトレジスタとして使用される。テスターがテストパターンをスキャンシフトでシフトインし、半導体装置1−3を動作させることによって、SFF41で取り込まれた(キャプチャされた)値と期待値、SFF42で取り込まれた(キャプチャされた)値と期待値とを比較することによって、遅延故障の検証を行なう。また、テスターが、選択信号S11からS13、S21からS23、アドレスマスクAM信号、選択信号S31からS33、ライトイネーブルマスクWM信号、選択信号S41及びS42、選択信号S51からS53、DMマスクDMM信号、選択信号S61からS63、CEマスクCM信号を制御する。
このような第三の回路構成における、ユーザー論理回路Fの遅延による影響を考慮したメモリマクロ9−3のチップイネーブルCE端子の遅延故障検出方法及びそのような遅延故障検出を検出するためのテストパターンの動作について図15及び図16で説明する。
図15は、図11に示す半導体装置の回路構成におけるメモリマクロのチップイネーブルCE端子の遅延故障検出方法を説明するための図である。図15において、前処理として、テストパターン生成プログラム90によって、ユーザー論理回路Fの遷移故障をSFF61で検出するためのテストパターン及び期待値を生成する。
テスター95は、テストパターン生成プログラム90によって生成されたテストパターン及び期待値を読み込んで、チップイネーブルCE端子に掛かる遅延故障検出処理を実行する。
Step1において、テスター95は、スキャンシフトにより前処理で生成済みの“ユーザー論理回路Fの遷移故障をSFF61で検出するためのテストパターン”をセットする。このスキャンシフトの際、SFF11に「0」を入れ、かつSFF31に「1」を入れておく。
Step2において、テスター95は、ユーザー論理回路Fを含むロジック部とメモリマクロ9及びテスト用回路100から600を含むメモリ部とに遅延試験用の高速な、LaunchクロックとCaptureクロックとを印加して半導体装置1−3を高速動作させ、ユーザー論理回路Eの遷移故障の影響をSFF61及びメモリマクロ9−3のチップイネーブルCE端子まで伝播させる。このとき同時に、メモリマクロ9−3にはStep2で書き込んだメモリアドレスにユーザー論理回路Fの遅延故障の影響が書き込まれる。
Step3において、テスター95は、SFF21の値でセットされたメモリアドレスのデータを読み出す。Step4において、テスター95は、SFF42でメモリマクロ9−3から読み出されたデータの値をキャプチャする。そして、Step5において、スキャンシフトにより値を読み出してSFF42の値を期待値と比較し遅延故障を検出する。
このように、ユーザー論理回路Fの遅延故障の影響がメモリマクロ9−3に取り込まれるため、より実動作に基づいた精度の高い遅延故障の検出を行なうことができる。
図16は、図14に示す半導体装置の回路構成におけるメモリマクロのチップイネーブル端子の遅延故障を検出するテストパターンの動作に応じた各状態を説明するための表を示す図である。図16中の各表におけるデータマスクの項目は、メモリマクロ9−3がデータマスクDM端子を備えない構成であるため、斜線で示される。
チップイネーブルの項目では、図14に示されるmux61、62、63及びAND68の制御端子の状態と、チップイネーブル用のメモリ端子の状態とが示される。mux61、62、63及びAND68の制御端子の状態は、対応する選択信号S61、S62、S63及びCEマスクCM信号の値で示される。また、チップイネーブル用のメモリ端子の状態は、チップイネーブルCE端子の値で示される。
図16(A)に示す表では、メモリマクロ9−3のデータマスク端子の立ち上がり遅延故障を検出するテストパターンの動作を示している。メモリマクロ9−3のチップイネーブルCE端子へのデータを「0」から「1」へと変化させた場合において、ユーザー論理回路Fの遅延による影響が考慮されるようにしたテストパターンの動作例を示す。
Step1(シフト後)からStep4まで、アドレス入力の項目における制御信号S21〜S23及びアドレスマスクAM信号を「1」に制御することによって、特定のアドレスにのみデータの書き込み及び読み出しを行なうようにする。
Step1(シフト後)及びStep2において、データ入力の項目における選択信号S11及びS12を「1」に制御することによって、SFF11に入力されていた値「0」をデータ入力Din端子に入力するようにし、また選択信号S13を「0」に制御しておくことで、Step1にてSFF11に入力された「0」がStep2でINV19によって「1」に反転されるようにする。
また、ライトイネーブルの項目において、選択信号S31、S32及びライトイネーブルマスクWM信号を「1」、及び選択信号S33を「0」に制御し、メモリマクロ9−3のライトイネーブルWE端子を「1」にして書き込み可能の状態に制御する。
更に、チップイネーブルの項目における選択信号S61を「0」、及び選択信号S63を「1」に制御することによって、ユーザー論理回路Fの影響がメモリマクロ9−3のチップイネーブルCE端子とSFF61とに伝播させる。この場合、Step2にてチップのデータ書き換え不可から書き換え可へと状態が遷移するため、「0」から「1」へのデータ遷移に対して、正常であれば特定のアドレスにて「1」を示し、遅延がれば「0」を示す。
Step3及びStep4において、データの読み出す中のデータの特定のアドレスへの書き込みを不可にするため、ライトイネーブルの項目におけるライトイネーブルマスクWM信号を「0」に制御する。Step3では、メモリマクロ9−3内で特定アドレスからデータが読み出され、Step4において、データ出力の項目における選択信号S41を「0」に制御し、かつ、選択信号S42を「1」に制御することによって、メモリマクロ9−3からの出力データがSFF42へと取り込まれる。
Step5では、テスター95がSFF42の値と期待値とを比較して遅延故障を検出する。SFF41は、正常な場合は「1」を示し、遅延故障があった場合は「0」を示す。
このような制御によって、チップイネーブルCE端子を「0」から「1」へと立ち上げた場合の遅延故障を、ユーザー論理回路Fの影響を考慮して検証することができる。
図16(B)に示す表では、メモリマクロ9−3のチップイネーブルCE端子の立ち下がり遅延故障を検出するテストパターンの動作を示している。メモリマクロ9−3のチップイネーブルCE端子へのデータを「1」から「0」へと変化させた場合において、ユーザー論理回路Fの遅延による影響が考慮されるようにしたテストパターンの動作例を示す。図16(A)に示す表における同様の制御であるため、その説明を省略する。
データマスクの項目における選択信号S61を「0」、及び選択信号S63を「1」に制御することによって、ユーザー論理回路Fの影響がメモリマクロ9−3のチップイネーブルCE端子とSFF61とに伝播させる。この場合、Step2にてチップのデータ書き換え可から書き換え不可へと状態が遷移するため、「0」から「1」へのデータ遷移に対して、正常であれば特定のアドレスにて「0」を示し、遅延によってデータが書き換えられてしまった場合は「1」を示す。
従って、Step5にて、テスター95がSFF42の値と期待値とを比較して遅延故障を検出する際には、SFF41は、正常な場合は「0」を示し、遅延故障があった場合は「1」を示す。
このような制御によって、チップイネーブルCE端子を「1」から「0」へと立ち下げた場合の遅延故障を、ユーザー論理回路Fの影響を考慮して検証することができる。
上述した実施例における半導体装置では、メモリマクロの入力側の各端子にユーザー論理回路A、B、D、E、F夫々から直接メモリマクロへと入力させるように選択する仕組み(マルチプレクサmux11、21、31、51、61、及び選択信号S11、S12、S31、S51、S61)を備えることによって、ユーザー論理回路A、B、D、E、F夫々の動作の遅延の影響をメモリマクロへ取り込んで検証することができる。また、メモリマクロへの入力信号を反転させてスキャンフリップフロップへ入力する仕組み(インバータINV17、27、37、57、67)を備えることによって、メモリの入力端子の状態を遷移させたり、出力端子の状態を遷移させたりすることができる。
同様に、メモリマクロの出力側の端子にユーザー論理回路Cへと直接出力させるように選択する仕組み(マルチプレクサmux41、及び選択信号S41)を備えることによって、メモリマクロの出力側の端子の状態遷移の遅延をユーザー論理回路Cの動作に影響させて検証することができる。また、ユーザー論理回路Cへの信号を反転させてスキャンフリップフロップへ入力する仕組み(インバータINV47)を備えることによって、ユーザー論理回路Cへの信号の状態を遷移させてユーザー論理回路Cへ与えることができる。
更に、上述した実施例における半導体装置では、メモリマクロの入力側のユーザー論理回路と出力側のユーザー論理回路とメモリマクロとを動作させて試験することができるため、従来技術では実現できなかったメモリマクロとユーザー論理回路間の実動作における遅延を考慮でき、より精度の高い遅延検証を行なうことができる。また、メモリマクロとユーザー論理回路間の遅延故障を、メモリマクロとユーザー論理回路間の同じ動作パスを用いて個別に試験可能とする。
テストパターン生成プログラム90は、特にデータ出力端子に関しては、遷移遅延試験やパス遅延試験などのFFとFFとの間だけの故障を対象にしたテストパターンを生成すればよい。そのため、テストパターン生成プログラム90で作成すべきパターンのサイクル数を2サイクルとすることができる。従って、テストパターン生成プログラム90による処理時間の増加、故障検出率の低下、パターン数増加などの問題を解決できる。また、テストパターン生成用のメモリマクロのモデルを用意する必要がない。
以上の説明に関し、更に以下の項を開示する。
(付記1)
メモリマクロと、
入力側ユーザー論理回路からの出力とスキャンフリップフロップからの出力のいずれか一方を選択して前記メモリマクロに入力すると共に、該入力側ユーザー論理回路からの出力を該スキャンフリップフロップに取り込む入力側テスト回路と、
前記メモリマクロからの出力とスキャンフリップフロップからの出力のいずれか一方を選択して出力側ユーザー論理回路に入力すると共に、該前記メモリマクロからの出力を該スキャンフリップフロップに取り込む出力側テスト回路とを有する半導体装置。
(付記2)
前記入力側テスト回路は、更に、
前記入力側ユーザー論理回路からの出力と前記スキャンフリップフロップからの出力のいずれか一方を選択して、前記メモリマクロへ入力する第一の入力側マルチプレクサと、
前記第一の入力側マルチプレクサからの出力と反転させた該出力のいずれか一方を選択して、前記スキャンフリップフロップへ出力する第二の入力側マルチプレクサと
を有するようにした付記1記載の半導体装置。
(付記3)
前記入力側テスト回路は、前記メモリマクロのデータ入力用のデータ入力端子とアクセス制御用のアクセス制御端子に対応させて各々備えられ、
前記アクセス制御端子に対応する前記入力側テスト回路は、更に、
前記スキャンフリップフロップからの出力に対して論理積演算を行って前記メモリマクロへの入力をマスクする論理積回路を有し、
前記第一の入力側マルチプレクサは、前記論理積回路からの出力又は前記ユーザー論理回路からの出力のいずれかを選択して出力するようにした付記2記載の半導体装置。
(付記4)
前記アクセス制御端子は、アドレス入力端子、ライトイネーブル端子、データマスク端子、及びチップイネーブル端子のうち1又は複数である付記3記載の半導体装置。
(付記5)
前記出力側テスト回路は、更に、
前記メモリマクロからの出力と前記スキャンフリップフロップからの出力のいずれか一方を選択して、前記出力側ユーザー論理回路へ入力する第一の出力側マルチプレクサと、
前記第一の出力側マルチプレクサからの出力と反転させた該出力のいずれか一方を選択して、前記スキャンフリップフロップへ出力する第二の出力側マルチプレクサと
を有するようにした付記1記載の半導体装置。
(付記6)
付記1乃至5に記載の半導体装置の試験方法であって、
前記入力側ユーザー論理回路の遷移故障を検出するためのテストパターンをスキャンシフトによりシフトインさせ、前記入力側ユーザー論理回路からの出力を選択させるように前記入力側テスト回路を制御するステップと、
遅延試験のクロックを供給するステップと、
前記メモリマクロがデータを読み出すステップと、
前記メモリマクロからの読み出したデータの出力を選択させるように前記出力側テスト回路を制御するステップと、
スキャンシフトにより読み出した前記出力側テスト回路のスキャンフリップフロップの値を期待値と比較するステップとを有する半導体装置の試験方法。
(付記7)
付記1乃至5に記載の半導体装置の試験方法であって、
前記出力側ユーザー論理回路の出力を取り込む第一フリップフロップから前記出力側テスト回路の第二フリップフロップとの間の遷移故障を検出するテストパターンのうち、該第二フリップフロップにスキャンシフト動作で設定されるテストパターンがデータ入力されるように前記入力側テスト回路のスキャンフリップフロップにシフトインさせ、前記メモリマクロからの出力を選択させるように前記出力側テスト回路を制御するステップと、
第一アドレスに前記入力側テスト回路のスキャンフリップフロップの値を記憶させ、第二アドレスに該値の反転値を記憶させるステップと、
前記メモリマクロから前記第一アドレスの値を読み出すステップと、
遅延試験のクロックを供給してメモリマクロのデータ出力端子から第二アドレスの値を出力させ、前記第一フリップフロップで取り込むステップと、
スキャンシフトにより読み出した前記第一のスキャンフリップフロップの値を期待値と比較するステップとを有する半導体装置の試験方法。
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。