(57)【要約】【課題】小規模な回路の追加でメモリのテストを実現することができる、半導体装置を提供する。【解決手段】メモリ２と、テストデータとメモリ２に対する読み書き指示データとを含む第一のデータ群を格納するレジスタ１１〜１４と、レジスタ１４から出力されるテストデータの値の反転機能を有する第一の反転部３４と、レジスタ１２から出力される読み書き指示データの値の反転機能を有する第二の反転部３２と、第一、第二の反転部３４、３２に対しデータ反転指示を入力する第一、第二の入力部８、７と、メモリ２への入力データとして、レジスタ１１〜１４から出力される第一のデータ群に対して第一、第二の反転部３４、３２を介して所定の処理を施したテスト用データ群と、システム動作時にメモリ２に保持されたデータの読み書きを行うために用いる第二のデータ群とを切り替えるデータ切り替え部４１〜４４とを備える。【選択図】図１
2015090719.tif 000002
【特許請求の範囲】
【請求項１】
データを保持するメモリと、
前記メモリに書き込むテストデータと、前記メモリに対し読み出し又は書き込みの動作を指示する読み書き指示データと、前記メモリに対する動作指示の有効／無効を設定するチップイネーブル信号とを含む第一のデータ群と、前記メモリからの出力データと比較するための期待値データと、前記出力データと前記期待値データとの比較を行うビットの範囲を特定するマスクデータとを格納する、シフトレジスタとして構成されたレジスタと、
前記レジスタから出力される前記テストデータの値を反転させる機能を有する第一の反転部と、
前記レジスタから出力される前記読み書き指示データの値を反転させる機能を有する第二の反転部と、
前記レジスタから出力される前記期待値データの値を反転させる機能を有する第三の反転部と、
前記第一の反転部に対しデータ反転指示を入力する第一の入力部と、
前記第二の反転部に対しデータ反転指示を入力する第二の入力部と、
前記第三の反転部に対しデータ反転指示を入力する第三の入力部と、
前記メモリへの入力データとして、前記レジスタから出力される前記第一のデータ群に対し前記第一及び第二の反転部を介して所定の処理を施したテスト用データ群と、システム動作時に前記メモリに保持された前記データの読み書きを行うために用いる第二のデータ群とを切り替えるデータ切り替え部と、
を備え、
前記レジスタのシフト動作中は、前記レジスタに格納された前記チップイネーブル信号の値と前記読み書き指示データとの値が変更されないようになされており、前記レジスタから出力される前記期待値データは、前記第三の反転部を介して前記メモリからの出力データとの比較をビットごとに行う比較部に入力され、前記マスクデータによって特定された範囲のビットに含まれないビットについては、前記出力データと前記比較データとの比較結果を強制的に一致しているものとし、同一のタイミングで出力される前記出力データの全てのビットについての前記比較結果の論理和を算出しテスト結果として出力する、半導体装置。
【請求項２】
データを保持するメモリと、
前記メモリに書き込むテストデータと、前記メモリに対し読み出し又は書き込みの動作を指示する読み書き指示データとを含む第一のデータ群を格納するレジスタと、
前記レジスタから出力される前記テストデータの値を反転させる機能を有する第一の反転部と、
前記レジスタから出力される前記読み書き指示データの値を反転させる機能を有する第二の反転部と、
前記第一の反転部に対しデータ反転指示を入力する第一の入力部と、
前記第二の反転部に対しデータ反転指示を入力する第二の入力部と、
前記メモリへの入力データとして、前記レジスタから出力される前記第一のデータ群に対し前記第一及び第二の反転部を介して所定の処理を施したテスト用データ群と、システム動作時に前記メモリに保持された前記データの読み書きを行うために用いる第二のデータ群とを切り替えるデータ切り替え部と、
を備える半導体装置。
【請求項３】
前記レジスタはシフトレジスタであり、前記レジスタのシフト動作中は、前記読み書き指示データの値が変更されないようになされている、請求項２に記載の半導体装置。
【請求項４】
前記第一のデータ群は、前記メモリに対する動作指示の有効／無効を設定するチップイネーブル信号を含み、前記レジスタのシフト動作中は、前記レジスタに格納された前記チップイネーブル信号の値が変更されないようになされている、請求項３に記載の半導体装置。
【請求項５】
前記レジスタには、前記メモリからの出力データと比較するための期待値データも格納され、前記レジスタから出力される前記期待値データは、入力されるデータの値を反転させる機能を有する第三の反転部を介し、前記メモリからの出力データとの比較をビットごとに行う比較部に入力され、同一のタイミングで出力される前記出力データの全てのビットについての前記比較部における比較結果の論理和を、テスト結果として出力する、請求項２乃至請求項４のいずれか一項に記載の半導体装置。
【請求項６】
前記第三の反転部に対しデータ反転指示を入力する第三の入力部を備える、請求項５に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、半導体装置に関する。
【背景技術】
【０００２】
従来、半導体装置に組み込まれたメモリデバイスに対して、組み込み自己テスト回路（Built-In Self Test、以下、ＢＩＳＴ回路と示す）を組み込み、製造・出荷テストにおいてＢＩＳＴ回路を用いて故障を検出する方法が一般的に行われている。ＢＩＳＴ回路には、故障検出の方法によって異なるタイプの回路が存在する。例えば、書き込んだデータと読み出したデータとの比較を行うことで故障の有無を判別する比較器型ＢＩＳＴ回路や、読み出された結果をＢＩＳＴ回路内で圧縮し、圧縮した結果に基づき故障の有無を判別する圧縮器型ＢＩＳＴ回路があげられる。
【０００３】
しかしながら、比較器型ＢＩＳＴ回路や圧縮器型ＢＩＳＴ回路に代表されるメモリＢＩＳＴ回路は、自己テストを実現するための各種機能（例えば、データ生成機能、アドレス生成機能、制御信号生成機能、結果解析機能、など）を論理回路としてデバイス内に構成する必要がある。これらの論理回路を実装するために、回路規模が増大してしまうという問題があった。特に、メモリデバイスの総ビット量が比較的小さい場合や、対象となるメモリ回路が１つ、２つなどと少ない場合や、メモリデバイス以外の論理回路部分の規模が小さい場合などには、ＢＩＳＴ回路の追加に伴う半導体装置全体の規模増加が、無視できないほど大きな比率になってしまう。
【０００４】
ＢＩＳＴ回路の追加による回路規模の増大を削減するためには、テスト内容や解析機能の削減などを行う必要がある。しかし、これらの削減を行うことにより、製造・出荷テストの品質にかかわる重要な機能を損なってしまう可能性があるため、現実的ではない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第５１７３９０６号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本実施形態は、小規模な回路の追加でメモリのテストを実現することができる、半導体装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本実施形態の半導体装置は、データを保持するメモリと、前記メモリに書き込むテストデータと前記メモリに対し読み出し又は書き込みの動作を指示する読み書き指示データとを含む第一のデータ群を格納するレジスタとを備える。また、前記レジスタから出力される前記テストデータの値を反転させる機能を有する第一の反転部と、前記レジスタから出力される前記読み書き指示データの値を反転させる機能を有する第二の反転部と、前記第一の反転部に対しデータ反転指示を入力する第一の入力部と、前記第二の反転部に対しデータ反転指示を入力する第二の入力部とを備える。更に、前記メモリへの入力データとして、前記レジスタから出力される前記第一のデータ群に対し、前記第一及び第二の反転部を介して所定の処理を施したテスト用データ群と、システム動作時に前記メモリに保持された前記データの読み書きを行うために用いる第二のデータ群とを切り替えるデータ切り替え部とを備える。
【図面の簡単な説明】
【０００８】
【図１】本発明の第１の実施形態に係わる半導体装置の構成を説明する概略ブロック図。
【図２】テスト用に入力するシフトデータの構成の一例を説明する概略図。
【図３】本発明の第１の実施形態に係わる半導体装置の別の構成を説明する概略ブロック図。
【図４】複数のメモリ２を備えた半導体装置の構成を説明する概略ブロック図。
【図５】本発明の第２の実施形態に係わる半導体装置の構成を説明する概略ブロック図。
【発明を実施するための形態】
【０００９】
以下、図面を参照して実施形態を説明する。
【００１０】
（第１の実施形態）
図１は、第１の実施形態に係わる半導体装置の構成を説明する概略ブロック図である。図１に示すように、本実施形態の半導体装置は、同一のチップ１上に、メモリ２とテスト回路とが配置されている。チップ１には、メモリ２に対してテストに必要な各種信号を、チップ１外部から入出力するための様々な端子（クロック信号入力端子４、シフトデータ入出力端子５ａ、５ｂ、シフトイネーブル信号入力端子６、読み書き反転信号入力端子７、データ反転信号入力端子８、期待値反転信号入力端子９、不良判定結果出力端子１０）が設けられている。
【００１１】
メモリ２には、動作の同期を行うクロック信号を入力するためのクロック信号入力端子ＣＬＫと、メモリ２への動作指示を有効にするチップイネーブル信号を入力するためのチップイネーブル入力端子ＣＥＮと、書き込み動作又は読み出し動作を指示するライトイネーブル信号を入力するためのライトイネーブル入力端子ＷＥＮが設けられている。また、メモリ２には、書き込みや読み出しの動作を行うアドレス位置を指示するアドレスデータを入力するためのアドレス入力端子Ａｄｄｒと、テストデータが入力されるテストデータ入力端子ＤＩＮとが配置されている。また、メモリ２には、格納されているデータを出力するためのデータ出力端子ＤＯＵＴが設けられている。
【００１２】
なお、アドレス入力端子Ａｄｄｒは、入力されるアドレスデータのビット幅分だけ複数設けられている。例えば、アドレスデータが８ビットで構成されている場合、メモリ２には８個のアドレス入力端子Ａｄｄｒが設けられている。また、テストデータは通常複数のビットから成っているため、テストデータ入力端子ＤＩＮも入力されるテストデータのビット幅分だけ複数設けられている。例えば、テストデータが２０ビットで構成されている場合、メモリ２には２０個のデータ入力端子ＤＩＮが設けられている。更に、テストデータ出力端子ＤＯＵＴも、テストデータのビット幅分だけ複数設けられている。例えば、テストデータが２０ビットで構成されている場合、メモリ２には２０個のデータ出力端子ＤＯＵＴが設けられている。
【００１３】
なお、テストに用いられるテスト用データ群である各種データ（チップイネーブル信号、ライトイネーブル信号、アドレスデータ、テストデータ）は、それぞれデータ切り替え部であるＭＰＸ（マルチプレクサ）４１、４２、４３、４４を介してメモリ２の所定の入力端子に入力される。それぞれのＭＰＸ４１〜４４の入力側には、システム３から通常のシステム動作時におけるメモリ２の読み書きに用いられるデータ（第二のデータ群）も接続されている。すなわち、ＭＰＸ４１〜４４を切り替えることにより、テスト動作時に用いられるデータと通常のシステム動作時に用いられるデータを切り替えて、メモリ２に入力することができる。
【００１４】
クロック信号入力端子４は、メモリ２にテスト動作の同期を行うためのクロック信号を供給するための端子である。クロック信号は、クロック信号入力端子ＣＬＫを介してメモリ２に入力される。シフトデータ入力端子５ａは、メモリ２のテストに必要な各種データを供給するための端子である。シフトデータのデータ構造については、後に詳述する。また、シフトデータ出力端子５ｂは、テストで使用されたシフトデータを外部に出力するための端子である。
【００１５】
シフトイネーブル信号入力端子６は、シフトデータ入力端子５ａから入力されるシフトデータを所定ビット（例えば１ビット）シフトさせる動作を指示する、シフト指示信号を供給するための端子である。第二の入力端子である読み書き反転信号入力端子７は、メモリ２に対するテストデータの書き込み動作と読み出し動作の切り替えを指示する、読み書き反転指示信号を供給するための端子である。第一の入力端子であるデータ反転信号入力端子８は、シフト入力端子５ａからメモリ２に供給されるテストデータを、そのまま入力するか反転して入力するかの切り替えを指示するデータ反転信号を供給するための端子である。
【００１６】
第三の入力端子である期待値反転信号入力端子９は、テスト時においてメモリ２からの出力との比較に用いられる期待値データを、シフトデータとして供給された値をそのまま用いるか反転して用いるかの切り替えを指示する期待値反転信号を供給するための端子である。不良判定結果出力端子１０は、メモリ２からの出力値と期待値とを比較した結果に基づき、当該メモリ２の良不良を判定結果として出力するための端子である。
【００１７】
シフト入力端子５ａから入力される第一のデータ群であるシフトデータは、期待値データ、テストデータ、テストデータの書き込みや読み出しの動作を行うアドレス位置を示すアドレスデータ、読み書き動作指示データ、チップイネーブル信号の各データから構成されている。図２は、テスト用に入力するシフトデータの構成の一例を説明する概略図である。図２に示すように、期待値データ、テストデータ、アドレスデータは、通常複数ビットで構成されている。また、期待値データとテストデータとは、通常、メモリ２のビット幅と同じビット数（例えば２０ｂｉｔ）のデータが設定される。読み書き動作指示データ、チップイネーブル信号は、それぞれ１ビットである。
【００１８】
チップ１には、シフトデータを格納するレジスタ１１〜１５が設けられている。レジスタ１１〜１５は、例えばＤ型のＦ／Ｆ（フリップフロップ）で構成されている。レジスタ１１〜１５は、例えば図１に示すように、シフト入力端子５ａからレジスタ１１、レジスタ１２、レジスタ１３、レジスタ１４、レジスタ１５、シフト出力端子５ｂの順にデータがシフトされるように、１本のシフトレジスタとして構成される。レジスタ１１〜１５には、それぞれに、シフトイネーブル端子６からシフト指示信号が入力される。シフト指示信号としてイネーブル（enable）状態を指示する値（例えば、“０”）が入力されている場合、シフト入力端子５ａに与えられたシフトデータを、シフトクロックに同期して１ビットずつシフトさせる。シフト指示信号として、ディセーブル（disenable）状態を指示する値（例えば“１”）が入力されている場合、シフトデータのシフト動作は行わない。なお、これらのレジスタ１１〜１５は、１本でなく複数本のシフトレジスタとして構成してもよい。
【００１９】
レジスタ１１には、チップイネーブル信号が格納される。レジスタ１１に格納されているチップイネーブル信号は、更新機能付きレジスタ２１、ＭＰＸ（マルチプレクサ）４１を介してメモリ２のチップイネーブル入力端子ＣＥＮに入力される。なお、更新機能付きレジスタ２１については、後に詳述する。
【００２０】
レジスタ１２には、読み書き動作指示データが格納される。レジスタ１２に格納されている読み書き動作指示データは、更新機能付きレジスタ２２を介して、第二の反転部である排他的論理和をとるＥＸＯＲ素子３２に入力される。（更新機能付きレジスタ２２については、後に詳述する。）ＥＸＯＲ素子３２には、読み書き反転信号入力端子７から読み書き反転指示信号も入力される。従って、読み書き指示データと、読み書き反転指示信号との排他的論理和がＥＸＯＲ素子３２から出力され、ライトイネーブル信号としてＭＰＸ４２を介してメモリ２のライトイネーブル入力端子ＷＥＮに入力される。
【００２１】
すなわち、読み書き動作指示データが指示する動作をメモリ２に実行させたい場合、読み書き反転指示信号として“０”が入力される。一方、読み書き指示データが指示する動作と逆の動作をメモリ２に実行させたい場合、（例えば、読み書き指示データが書き込み動作を指示しており、メモリ２には読み込み動作を実行させたい場合、）読み書き反転指示信号として“１”が入力される。
【００２２】
レジスタ１３には、アドレスデータが格納される。レジスタ１３に格納されているアドレスデータは、ＭＰＸ４３を介してメモリ２のアドレス入力端子Ａｄｄｒに入力される。なお、アドレスデータは通常複数のビットから成っており、それぞれのビットに対して個々にアドレス入力端子Ａｄｄｒが配置されている。例えば、アドレスデータが８ビットで構成されている場合、メモリ２には８個のアドレス入力端子Ａｄｄｒが配置されている。
【００２３】
レジスタ１４には、テストデータが格納される。レジスタ１４に格納されているテストデータは、第一の反転部であるＥＸＯＲ素子３４に入力される。ＥＸＯＲ素子３４には、データ反転入力端子８からデータ反転指示信号も入力される。従って、テストデータと、データ反転指示信号との排他的論理和がＥＸＯＲ素子３４から出力され、ＭＰＸ４２を介してメモリ２のデータ入力端子ＤＩＮに入力される。なお、テストデータは通常複数のビットから成っており、それぞれのビットに対して個々にＥＸＯＲ素子３４とデータ入力端子ＤＩＮとが配置され、各々接続されている。例えば、テストデータが２０ビットで構成されている場合、２０個のＥＸＯＲ素子３４と２０個のデータ入力端子ＤＩＮが配置されている。また、個々のＥＸＯＲ素子３４の出力は、それぞれ対応するデータ入力端子ＤＩＮに接続されている。
【００２４】
レジスタ１５には、期待値データが格納される。レジスタ１５に格納されている期待値データは、第三の反転部であるＥＸＯＲ端子３５に入力される。ＥＸＯＲ端子３５には、期待値反転入力端子９から期待値反転指示信号も入力される。
【００２５】
すなわち、テストにおいてメモリ２からの出力が期待されるデータが、レジスタ１５に格納されている期待値データと一致する場合、期待値反転指示信号として“０”が入力される。一方、テストにおいてメモリ２からの出力が期待されるデータが、レジスタ１５に格納されている期待値データと異なる場合、（例えば、メモリ２からの出力が期待されるデータが“０”であり、期待値データが“１”である場合、）期待値反転指示信号として“１”が入力される。なお、期待値データは通常複数のビットから成っており、それぞれのビットに対して個々にＥＸＯＲ素子３５が配置されている。例えば、期待値データが２０ビットで構成されている場合、２０個のＥＸＯＲ素子３５が配置されている。
【００２６】
それぞれのＥＸＯＲ端子２５から出力される期待値データは、テスト結果比較用のＥＸＯＲ素子５４に入力される。なお、テスト結果比較用のＥＸＯＲ素子５４は、ＥＸＯＲ素子３５と同数設けられている。それぞれのテスト結果比較用のＥＸＯＲ素子５４には、ＥＸＯＲ端子３５から出力される期待値データと、メモリ２のデータ出力端子ＤＯＵＴから出力されるテスト結果データとが入力される。すなわち、結果比較用のＥＸＯＲ素子５４によって、テスト結果データと期待値データとがビット毎に比較される。それぞれのＥＸＯＲ素子５４は、テスト結果データと期待値データとが一致する場合には“０”を、不一致の場合には“１”を、比較結果データとして出力する。
【００２７】
全てのＥＸＯＲ素子５４から出力される比較結果データは、不良判定用のＯＲ素子６４に入力される。ＯＲ素子６４は、入力される各ビットの比較結果データが全て“０”である場合、良であることを示す“０”を判定結果とし、不良判定結果出力端子１０を介して外部に出力する。一方、ＯＲ素子６４に入力される各ビットの比較結果データのうち、一つでも“１”が存在する場合、不良であることを示す“１”を不良判定結果とし、不良判定結果出力端子１０を介して外部に出力する。
【００２８】
ここで、更新機能付きレジスタ２１、２２について説明する。更新機能付きレジスタ２１、２２は、ラッチやＦ／Ｆなどで構成されるレジスタである。更新機能付きレジスタ２１、２２は、シフト指示信号がイネーブル（enable）状態を指示する値でありシフトデータのシフト動作が行われている間は、接続されているレジスタ１１、１２のデータがアップデートされていても、アップデート前のデータを出力する。一方、シフト指示信号がディセーブル（disenable）状態を指示する値になされると、その後のクロックパルス入力で出力データを更新する。
【００２９】
シフトデータが格納される各レジスタ１１〜１５のビットの出力は、シフト動作中においては、その時点でシフトされているデータがそのまま出力される。シフト動作中のデータの変化は、メモリ２の動作上はなんら意味を持たず、ランダムなものである。ここでシフト動作中に、チップイネーブル入力端子ＣＥＮからメモリ２に入力されるチップイネーブル信号や、ライトイネーブル入力端子ＷＥＮからメモリ２に入力されるライトイネーブル信号が変化すると、メモリ２において意図しない動作が行われてしまう可能性がある。
【００３０】
例えば、あるアドレスについて、全ビット“０”の書き込み動作を行い、その後同一のアドレスについて読み出し動作を行う場合について考える。まず、書き込み動作用のシフトデータをシフト入力端子５ａから各レジスタ１１〜１５に入力し、クロック信号を与えて各レジスタ１１〜１５に格納されたデータをメモリ２に書き込む。すなわち、レジスタ１３に格納されているアドレスデータの指示するアドレスに対し、レジスタ１４に格納されているテストデータ（例えば“０”）の書き込みを行う。次に、読み出し動作用のシフトデータをシフト入力端子５ａから各レジスタ１１〜１５に入力する。このシフトデータ入力の途中で、ライトイネーブル信号が書き込みを指示する値になっていると、メモリ２に対し、意図しない書き込み動作が行われてしまう。ここで、直前に書き込みを行ったアドレスと、続いて行われる読み出し動作が行われるアドレスとが同一である場合、読み出し動作時に当該アドレスに意図しない書き込みが行われてしまうと、読み出すべきデータが破壊されてしまい、テストができなくなってしまうという問題がある。
【００３１】
そこで、チップイネーブル信号を格納するレジスタ１１には更新機能付きレジスタ２１を、読み書き動作指示データを格納するレジスタ１２には更新機能付きレジスタ２２をそれぞれの出力側に配置する。このような構成にすることで、シフト動作中にメモリ２に意図しないデータの書き込みが行われることを防ぐことができ、テスト動作が正しく行われる。
【００３２】
このように、メモリ２のテストに必要な各種データをシフト入力端子５ａから入力して所定のレジスタ１１〜１５に格納しておき、クロック信号に従ってメモリ２に設けられた所定の入力端子からメモリ２に対して供給するように構成することで、ＢＩＳＴ回路のように自己テストを実現するための各種機能（例えば、データ生成機能、アドレス生成機能、制御信号生成機能、結果解析機能、など）を論理回路としてデバイス内に構成する必要がなく、小規模な回路の追加でメモリのテストを実現することができる。
【００３３】
次に、上述のように構成された半導体装置おけるメモリ２のテスト方法について説明する。まず、メモリ２へのテストデータの書き込み動作と読み出し動作について説明する。例えば、メモリ２の所定のアドレスに所定のテストデータを書き込む動作を行う場合、シフトイネーブルデータを、イネーブル状態を指示する値にしたままで、シフトクロックを入力する。そして、チップイネーブル信号としてメモリ２への動作指示を有効にする値（例えば“０”）がチップイネーブル入力端子ＣＥＮからメモリ２に入力され、ライトイネーブル信号として書き込み動作を指示する値（例えば“０”）がライトイネーブル入力端子WＥＮからメモリ２に入力され、また、アドレスデータとして所定のアドレスがアドレス入力端子Ａｄｄｒからメモリ２に入力され、更に、テストデータとして所定のテストデータがデータ入力端子ＤＩＮからメモリ２に入力されるように、シフトデータをシフトさせる。最後に、クロック信号入力端子ＣＬＫにパルスを与えることにより、メモリ２の所定のアドレスに所定のテストデータを書き込む動作が終了する。
【００３４】
読み出し動作については、上述した書き込み動作において、ライトイネーブル信号として書き込み動作を指示する値（例えば“０”）がライトイネーブル入力端子WＥＮからメモリ２に入力されるようにシフトデータをシフトしていたところを、読み出し動作を指示する値（例えば“１”）がライトイネーブル入力端子WＥＮからメモリ２に入力されるようにシフトデータをシフトさせるように変更する以外は、書き込み動作と同様である。
【００３５】
メモリ２のテストには、マーチングテストと呼ばれる種類のテストアルゴリズムが一般的に使用されている。これは、メモリ２のアドレスのそれぞれに対して、一連の書き込み動作及び読み出し動作を行うものである。例えば、１３Ｎマーチングテストと呼ばれるアルゴリズムでは、一つのアドレスに対して「データ“０”の読み出し」「データ“１”の書き込み」「データ“１”の読み出し」という一連のテスト動作を行い、これらの動作が終了すると次のアドレスのテストへ移行する。
【００３６】
この一連のテスト動作の具体的な手順について説明する。なお、テストに先立ち、メモリ２には“０”がセットされているものとする。まず、「データ“０”の読み出し」のテストを行う。期待値データが全ビット“０”、テストデータが全ビット“０”、アドレスデータがテスト対象のアドレス、読み書き動作指示データが動作を読み出し動作行う値（例えば“１”）、チップイネーブル信号がメモリ２への動作指示を有効にする値（例えば“０”）に設定されたシフトデータを、シフト入力端子５ａからシフト入力し、各レジスタ１１〜１５に格納する。
【００３７】
次に、読み書き反転指示信号として、正転（非反転）状態を指示する“０”を読み書き反転信号入力端子７から入力する。読み出し動作時にはテストデータを用いないため、データ反転指示信号は任意の値を入力する。（正転状態を指示する“０”でも反転状態を指示する“１”でもどちらでもよい。）また、シフトイネーブルデータとして、ディセーブル（disenable）状態を指示する値（例えば“１”）をシフトイネーブル信号入力端子６から入力する。
【００３８】
次に、メモリ２にクロック信号入力端子４からクロック信号を入力し、クロック信号入力端子ＣＬＫにパルスを与える。これにより、レジスタ１１に格納されているチップイネーブル信号がチップイネーブル入力端子ＣＥＮからメモリ２に入力され、メモリ２への動作指示が有効となる。また、レジスタ１２に格納された読み出し動作行う値（例えば“１”）と、読み書き反転指示信号である正転状態を指示する“０”の値の排他的論理和、すなわち、読み出し動作を行う値（例えば“１”）が、ＥＸＯＲ素子３２から出力される。従って、読み出し動作を行う値（例えば“１”）が、ライトイネーブル信号としてライトイネーブル入力端子WＥＮからメモリ２に入力される。これにより、アドレス入力端子Ａｄｄｒからメモリ２に入力されるアドレスデータ（レジスタ１３に格納されているデータ）に従って、当該アドレスにセットされている値が、それぞれのビットに対応するデータ出力端子ＤＯＵＴから読み出される。
【００３９】
次に、期待値反転指示信号として、正転（非反転）状態を指示する“０”を期待値反転信号入力端子９から入力する。これにより、レジスタ１５に格納された期待値データ（“０”）と、期待値反転指示信号である正転状態を指示する“０”の値の排他的論理和がＥＸＯＲ素子３５から出力される。すなわち、レジスタ１５に格納された期待値データ（“０”）がそのままＥＸＯＲ素子３５から出力される。この状態で、メモリ２にクロック信号入力端子４からクロック信号を入力し、クロック信号入力端子ＣＬＫにパルスを与える。これにより、メモリ２から読み出された値と、ＥＸＯＲ素子３５から出力される期待値とが、比較部であるＥＸＯＲ素子５４で比較される。
【００４０】
メモリ２から読み出された値が全て“０”である場合、全てのＥＸＯＲ素子３５から一致を示す“０”の値がＯＲ素子６４に出力される。従って、ＯＲ素子６４から良を示す“０”の値が不良判定結果出力端子１０に出力される。一方、メモリ２から読み出された値の中に１ビットでも“１”がある場合、当該ビットが入力されるＥＸＯＲ素子３５からは不一致を示す“１”の値がＯＲ素子６４に出力される。従って、ＯＲ素子６４から不良を示す“１”の値が不良判定結果出力端子１０に出力される。以上で「データ“０”の読み出し」のテスト動作が完了する。
【００４１】
続いて、「データ“１”の書き込み」のテストを行う。まず、読み書き反転指示信号として、反転状態を指示する“１”を読み書き反転信号入力端子７から入力する。また、データ反転指示信号として、反転状態を指示する“１”をデータ反転信号入力端子８から入力する。メモリ２にクロック信号入力端子４からクロック信号を入力し、クロック信号入力端子ＣＬＫにパルスを与えると、レジスタ１２に格納された読み出し動作行う値（例えば“１”）と、読み書き反転指示信号である反転状態を指示する“１”の値の排他的論理和、すなわち、書き込み動作行う値（例えば“０”）が、ＥＸＯＲ素子３２から出力される。従って、書き込み動作行う値（例えば“０”）が、ライトイネーブル信号としてライトイネーブル入力端子WＥＮからメモリ２に入力される。これにより、アドレス入力端子Ａｄｄｒからメモリ２に入力されるアドレスデータ（レジスタ１３に格納されているデータ）に従って、ＥＸＯＲ素子３４から出力される値がデータ入力端子ＤＩＮに入力され、それぞれ対応するアドレスに書き込まれる。
【００４２】
ここで、ＥＸＯＲ３４素子からは、レジスタ１４に格納されたテストデータ（“０”）と、データ反転指示信号である反転状態を指示する“１”の排他的論理和が出力される。すなわち、レジスタ１４に格納されたテストデータ（“０”）を反転した値がＥＸＯＲ素子３４から出力される。従って、所定のアドレスについて、全ビット“１”の書き込みが行われる。以上で「データ“１”の書き込み」のテスト動作が完了する。
【００４３】
最後に、「データ“１”の読み出し」のテストを行う。まず、読み書き反転指示信号として、正転（非反転）状態を指示する“０”を読み書き反転信号入力端子７から入力する。読み出し動作時にはテストデータを用いないため、「データ“０”の読み出し」テストと同様に、データ反転指示信号は任意の値を入力する。（正転状態を指示する“０”でも反転状態を指示する“１”でもどちらでもよい。）
次に、メモリ２にクロック信号入力端子４からクロック信号を入力し、クロック信号入力端子ＣＬＫにパルスを与える。これにより、レジスタ１２に格納された読み出し動作行う値（例えば“１”）と、読み書き反転指示信号である正転状態を指示する“０”の値の排他的論理和、すなわち、読み出し動作行う値（例えば“１”）が、ＥＸＯＲ素子３２から出力される。従って、読み出し動作行う値（例えば“１”）が、ライトイネーブル信号としてライトイネーブル入力端子WＥＮからメモリ２に入力される。これにより、アドレス入力端子Ａｄｄｒからメモリ２に入力されるアドレスデータ（レジスタ１３に格納されているデータ）に従って、当該アドレスにセットされている値が、それぞれのビットに対応するデータ出力端子ＤＯＵＴから読み出される。
【００４４】
次に、期待値反転指示信号として、正転（非反転）状態を指示する“０”を期待値反転信号入力端子９から入力する。これにより、レジスタ１５に格納された期待値データ（“０”）と、期待値反転指示信号である正転状態を指示する“０”の値の排他的論理和がＥＸＯＲ素子３５から出力される。すなわち、レジスタ１５に格納された期待値データ（“０”）がそのままＥＸＯＲ素子３５から出力される。この状態で、メモリ２にクロック信号入力端子４からクロック信号を入力し、クロック信号入力端子ＣＬＫにパルスを与える。これにより、メモリ２から読み出された値と、ＥＸＯＲ素子３５から出力される期待値とが、ＥＸＯＲ素子５４で比較される。ＥＸＯＲ素子５４におけるビットごとの比較結果はＯＲ素子６４に出力される。ＯＲ素子６４では全ビットの比較結果をまとめ、良不良判定結果を不良判定結果出力端子１０に出力する。以上で「データ“１”の読み出し」のテスト動作が完了し、一つのアドレスに対する１３Ｎマーチングテストの一連のテスト動作を終了する。
【００４５】
従来の構成では、シフトデータを用いて１３Ｎマーチングテストを行う場合、一つのアドレスに対する三つのテスト動作について、それぞれの動作毎に都度シフトデータ入力を行う必要がある。これに対し、本実施形態の半導体装置では、読み書き反転指示信号と、データ反転指示信号と、期待値反転指示信号とを用いてメモリ２に入力するデータの変更を行うことができるため、シフトデータそのものを動作毎に都度入力する必要がなく、一回のシフトデータ入力で三つのテスト動作を行うことができる。従って、従来の半導体装置に比べてテスト時間を約１／３に短縮することができる。
【００４６】
このように、本実施形態によれば、メモリ２のテストに必要な各種データをシフトデータとして外部から入力し、メモリ２に設けられた所定の入力端子からメモリ２に対して供給するように構成することで、ＢＩＳＴ回路のように自己テストを実現するための各種機能を論理回路としてデバイス内に構成する必要がなく、小規模な回路の追加でメモリのテストを実現することができる。
【００４７】
また、本実施形態によれば、読み書き反転指示信号と、データ反転指示信号と、期待値反転指示信号とを外部から入力できるようにしているので、ライトイネーブル信号と、テストデータと、期待値データの変更をこれらの信号で行うことができるため、同一のアドレスに対する一連のテストにおいて、シフトデータをテスト動作毎に入力しなおす必要がなく、テスト時間を短縮することができる。
【００４８】
なお、上述した一例では、テストデータを格納するレジスタ１４と、期待値データを格納するレジスタ１５とは、メモリ２のデータ幅分のレジスタで構成されているが、これよりも小さな幅のレジスタで構成することもできる。例えば、テストデータとして、偶数ビットは常に同じデータを用い、また、奇数ビットも常に同じデータを用い、偶数ビットと奇数ビットとでそれぞれ自由に値が設定できればよい、という条件でメモリ２のテストを行う場合についての構成を説明する。この場合、テストデータを格納するレジスタは、偶数ビット用の２ビット幅のレジスタ１４ａと、奇数ビット用の２ビット幅のレジスタ１４ｂの２つのレジスタで構成することができる。同様に、期待値データを格納するレジスタも、偶数ビット用の２ビット幅のレジスタ１５ａと、奇数ビット用の２ビット幅のレジスタ１５ｂの２つのレジスタで構成することができる。（図３参照。）図３は、本発明の実施形態に係わる半導体装置の別の構成を説明する概略ブロック図である。
【００４９】
シフト入力端子５ａから入力されるシフトデータには、メモリ２の偶数ビットをテストするための値と、奇数ビットをテストするための値として、例えば２ビットのテストデータが設定されている。また、メモリ２の偶数ビットからの出力データと比較するために期待値と、奇数ビットからの出力データと比較するための期待値として、例えば４ビットの期待値データが設定されている。シフト入力を行うと、偶数ビット用のテストデータはレジスタ１４ａに格納され、奇数ビット用のテストデータはレジスタ１４ｂに格納される。また、偶数ビット用の期待値データはレジスタ１５ａに格納され、奇数ビット用の期待値データはレジスタ１５ｂに格納される。
【００５０】
メモリ２にクロック信号が入力され、書き込み動作が開始されると、レジスタ１４ａに格納されているデータはＥＸＯＲ素子３４ａに入力される。また、レジスタ１４ｂに格納されているデータはＥＸＯＲ素子３４ｂに入力される。ＥＸＯＲ素子３４ａは、データ反転信号入力端子８から入力されるデータ反転指示信号との排他的論理和をテストデータとして出力する。ＥＸＯＲ素子３４ａの出力側は、メモリ２のデータ入力端子ＤＩＮのうち偶数ビットの入力端子ＤＩＮ［０］、ＤＩＮ［２］、ＤＩＮ［４］に分岐接続されている。従って、ＥＸＯＲ素子３４ａから出力されたテストデータは、メモリ２の偶数ビットのデータ入力端子ＤＩＮ［０］、ＤＩＮ［２］、ＤＩＮ［４］、…に入力され、対応する偶数ビットに書き込まれる。
【００５１】
一方、ＥＸＯＲ素子３４ｂは、データ反転信号入力端子８から入力されるデータ反転指示信号との排他的論理和をテストデータとして出力する。ＥＸＯＲ素子３４ｂの出力側は、メモリ２のデータ入力端子ＤＩＮのうち奇数ビットの入力端子ＤＩＮ［１］、ＤＩＮ［３］、ＤＩＮ［５］に分岐接続されている。出力されたテストデータは、メモリ２の奇数ビットの入力端子ＤＩＮ［１］、ＤＩＮ［３］、ＤＩＮ［５］、…に入力され、対応する奇数ビットに書き込まれる。
【００５２】
一方、メモリ２にクロック信号が入力され、読み出し動作が開始されると、レジスタ１５ａに格納されているデータはＥＸＯＲ素子３５ａに入力される。また、レジスタ１５ｂに格納されているデータはＥＸＯＲ素子３５ｂに入力される。ＥＸＯＲ素子３５ａは、期待値反転信号入力端子９から入力される期待値反転指示信号との排他的論理和を期待値データとして出力する。ＥＸＯＲ素子３５ａの出力側は、メモリ２のデータ出力端子ＤＯＵＴのうち偶数ビットの出力端子ＤＯＵＴ［０］、ＤＯＵＴ［２］、ＤＯＵＴ［４］と接続されているＥＸＯＲ素子５４の入力側に分岐接続されている。ＥＸＯＲ素子３５ｂも、期待値反転信号入力端子９から入力される期待値反転指示信号との排他的論理和を期待値データとして出力する。ＥＸＯＲ素子３５ｂの出力側は、メモリ２のデータ出力端子ＤＯＵＴのうち偶数ビットの出力端子ＤＯＵＴ［１］、ＤＯＵＴ［３］、ＤＯＵＴ［５］と接続されているＥＸＯＲ素子５４の入力側に分岐接続されている。
【００５３】
このように構成することで、テストデータと期待値データとを格納するレジスタ１４ａ、１４ｂ、１５ａ、１５ｂのビット幅を、それぞれ２ビットずつにすることができ、また、テストデータを反転させるためのＥＸＯＲ素子３４と、期待値データを反転させるためのＥＸＯＲ素子３５とは、それぞれレジスタ１４ａ、１４ｂ、１５ａ、１５ｂの出力側に１個ずつ配置すればよいため、テスト用に追加する回路規模をより小さくすることがでる。
【００５４】
また、チップ１上に複数のメモリ２が設けられている場合にも、本実施形態の半導体装置のテスト回路を用いて複数のメモリを同時にテストすることができる。図４は、複数のメモリ２を備えた半導体装置の構成を説明する概略ブロック図である。
【００５５】
図４に示すように、例えば２つのメモリ２、２ａがチップ１に配置されている場合、メモリ２に入力されるデータ（クロック信号、チップイネーブル信号、ライトイネーブル信号、アドレスデータ、テストデータ）が、チップ２ａにも入力されるように、分岐配線を行う。すなわち、クロック入力端子４から出力されるクロック信号が、チップ２、２ａのクロック信号入力端子ＣＬＫに入力され、更新レジスタ２１から出力されるチップイネーブル信号が、チップ２、２ａのチップイネーブル信号入力端子ＣＥＮに入力されるように分岐配線を行う。また、ＥＸＯＲ素子３２から出力されるライトイネーブル信号が、チップ２、２ａのライトイネーブル入力端子ＷＥＮに入力され、レジスタ１３から出力されるアドレスデータが、チップ２、２ａのアドレス入力端子Ａｄｄｒに入力されるように分岐配線を行う。更に、ＥＸＯＲ素子３４から出力されるテストデータが、チップ２、２ａのデータ入力端子ＤＩＮに入力されるように、分岐配線を行う。
【００５６】
なお、メモリ２ａからの出力データを期待値データと比較するＥＸＯＲ素子５４ａと、不良判定を行うＯＲ素子６４ａとは、メモリ２ａと共有化せずに、別途配置することが望ましい。
【００５７】
このように構成することで、チップ上に配置された複数のメモリでシフトデータを共通化することができ、メモリからのデータ出力側のテスト用の回路を追加するだけで、複数のメモリを同時にテストすることができる。
【００５８】
（第２の実施形態）
上述した第１の実施形態の半導体装置は、メモリの特定のアドレスについて良・不良の判定にとどまり、不良ビットの特定までは検出しない構成になされていた。これに対し、本実施形態においては、特定のアドレスについて不良判定がなされた場合に不良ビットの特定まで行える点が異なっている。本実施形態の半導体装置は、不良ビットの特定を行うためのマスクデータを格納するためのレジスタ１６と、比較結果マスク用のＯＲ素子７４以外の構成要素は第１の実施形態と構成要素が同じであるので、同じ符号を付して説明は省略する。
【００５９】
本実施形態の半導体装置における、不良ビットの特定を行う部位の構成について、図５を用いて説明する。図５は、第２の実施形態に係わる半導体装置の構成を説明する概略ブロック図である
図５に示すように、本実施形態の半導体装置は、期待値データを格納するレジスタ１５とシフト出力端子５ｂとの間に、マスクデータを格納するためのレジスタ１６が設けられている。また、メモリ２からの出力データと期待値データとを比較するＥＸＯＲ素子５４と、全体の不良判定を行うＯＲ素子６４との間に、比較結果をマスクするためのＡＮＤ素子７４が設けられている。ＥＸＯＲ素子５４とＡＮＤ素子７４とは一対一に対応付けられており、それぞれのＡＮＤ素子７４には、対応するＥＸＯＲ素子５４からの出力と、レジスタ１６に格納されたマスクデータの所定のビットの値とが入力される。ＡＮＤ素子７４からの出力は、全てＯＲ素子６４に入力される。
【００６０】
シフトデータには、期待値データの前にメモリ２のビット幅分のマスクデータが追加される。マスクデータの初期設定値は、全ビット“１”である。マスクデータは、シフト入力によってマスクレジスタ１６に格納される。まず、第１の実施形態同様に、メモリ２に格納されているデータの読み出し動作を行い、対象アドレスの全ビットについての不良判定を行う。メモリ２の出力端子ＤＯＵＴから出力される出力データと、レジスタ１５から出力される期待値データは、ＥＸＯＲ素子５４でビットごとに一致・不一致の比較が行われる。比較結果はＡＮＤ素子７４に入力される。ＡＮＤ素子７４には、比較結果とレジスタ１６から出力されるマスクデータとが入力される。マスクデータは全ビット“１”であるので、ＥＸＯＲ素子５４での比較結果がそのままＯＲ素子６４に入力される。ＯＲ素子６４は、入力される全てのビットの比較結果が“０”、すなわち全てのビットにおいて出力データが期待値データと一致している場合、判定結果として良を示す“０”を出力する。
【００６１】
一方、ＯＲ素子６４は、入力される全てのビットの比較結果の中に“１”、すなわち出力データが期待値データと不一致であるという結果が含まれている場合、判定結果として不良を示す“１”を出力する。この場合、引き続き不良ビットの特定を行う。まず、マスクデータにおいて不良判定を行う特定のビット以外のビットについて、値を“０”に設定する。そして、メモリ２に格納されているデータの読み出し動作を行う。メモリ２の出力端子ＤＯＵＴから出力される出力データと、レジスタ１５から出力される期待値データは、ＥＸＯＲ素子５４でビットごとに一致・不一致の比較が行われる。比較結果はＡＮＤ素子７４に入力される。
【００６２】
ＡＮＤ素子７４には、比較結果とレジスタ１６から出力されるマスクデータとが入力される。ここで、マスクデータとして“０”が入力されたＡＮＤ素子７４からは、ＥＸＯＲ素子５４から入力される比較結果の値にかかわらず、“０”が出力される。一方、マスクデータとして“１”が入力されたＡＮＤ素子７４からは、不良判定対象外のＥＸＯＲ素子５４での比較結果がそのままＯＲ素子６４に入力される。従って、ＯＲ素子６４から出力される値は、マスクデータとして“１”が入力された特定のビットの比較結果となる。
【００６３】
ＯＲ素子６４から“０”が出力される場合、判定対象ビットは不良ではないため、マスクデータを変更して他のビットについての不良判定を行う。一方、ＯＲ素子６４から“１”が出力される場合、判定対象ビットは不良であると特定される。
【００６４】
このように、本実施形態においては、マスクデータと、マスクデータを格納するレジスタ１６と、出力データと期待値データとの比較結果をマスクするためのＡＮＤ素子７４を追加することで、不良判定対象のビットを特定の範囲に限定することができる。従って、小規模な回路の追加のみで、メモリのテストを実現することができ、不良ビットの検出まで行うことができる。
【００６５】
本明細書における各「部」は、実施の形態の各機能に対応する概念的なもので、必ずしも特定のハードウェアやソフトウエア・ルーチンに１対１には対応しない。従って、本明細書では、実施の形態の各機能を有する仮想的回路ブロック（部）を想定して実施の形態を説明した。
【００６６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として例示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６７】
１…チップ、２…メモリ、３…システム、４…クロック信号入力端子、５ａ…シフトデータ入力端子、５ｂ…シフトデータ出力端子、６…シフトイネーブル信号入力端子、７…読み書き反転信号入力端子、８…データ反転信号入力端子、９…期待値反転信号入力端子、１０…不良判定結果出力端子、１１、１２、１３、１４、１５…レジスタ、２１、２２…更新機能付きレジスタ、３２、３４、３５、５４…ＥＸＯＲ素子、４１、４２、４３、４４…ＭＰＸ、６４…ＯＲ素子、ＣＬＫ…クロック信号入力端子、ＣＥＮ…チップイネーブル入力端子、ＷＥＮ…ライトイネーブル入力端子、Ａｄｄｒ…アドレス入力端子、ＤＩＮ…データ入力端子、ＤＯＵＴ…データ出力端子、
【図１】
2015090719.tif 000003
【図２】
2015090719.tif 000004
【図３】
2015090719.tif 000005
【図４】
2015090719.tif 000006
【図５】
2015090719.tif 000007