(57)【特許請求の範囲】
【請求項１】
メモリ回路と、論理回路と、所定のアルゴリズムに従って前記メモリ回路の検査のための信号を生成するとともに書き込んだデータの読出しを行なうための制御信号を形成する制御回路と該制御回路からの制御信号に従ってテストデータを形成する演算手段と上記メモリ回路から読み出されたデータを判定して判定結果を出力するデータ判定手段とからなるデータ処理回路とが、同一半導体チップ上に形成され、
上記データ処理回路は、制御信号を形成するための複数のマイクロ命令コードが格納された命令メモリと、該命令メモリから所望のマイクロ命令コードを読み出すカウンタ回路と、上記命令メモリから読み出されたマイクロ命令コードを解読して制御信号を形成する命令解読制御回路を備え、
さらに、上記データ処理回路は上記メモリ回路の検査のための信号および上記論理回路の検査のための信号を発生する機能を有するように構成されていることを特徴とする半導体集積回路。
【請求項２】
上記データ処理回路は、複数の仕様のメモリ回路に対する検査用信号を発生可能に構成されていることを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
上記データ処理回路は、自分自身の論理検査を行う自己検査機能を有するように構成されていることを特徴とする請求項１または２に記載の半導体集積回路。
【請求項４】
上記メモリ回路は、ダイナミック型ランダム・アクセス・メモリ、スタティック型ランダム・アクセス・メモリ、リード・オンリ・メモリ、電気的に書き込み可能な不揮発性記憶装置、あるいは、電気的に書き込みおよび消去可能な不揮発性記憶装置の内の１である請求項１に従う半導体集積回路。
【請求項５】
上記命令メモリは、電気的に書き込み可能な不揮発性メモリ、電気的に書き込み及び消去可能な不揮発性メモリ、リード・オンリ・メモリ、ダイナミック型ＲＡＭ、スタティック型ＲＡＭの中の１つである請求項１に従う半導体集積回路。
【請求項６】
上記命令メモリの最小加工寸法は、上記半導体メモリのそれより、大きくされる請求項１に従う半導体集積回路。
【請求項７】
上記カウンタ回路の動作は、上記半導体集積回路への電源の投入に応答して起動状態とされる請求項１に従う半導体集積回路。
【請求項８】
上記複数のマイクロ命令コードは、
次に読み出されるべき命令のアドレスを規定するアドレスフィールド（ＭＦａ）と、
上記シーケンス制御コードが規定されるオペコードフィールド（ＭＦｂ）と、
命令の繰り返し数が規定されるオペランドフィールド（ＭＦｃ）と、
アドレス信号及びデータの出力、および、リード／ライトを指示する制御コードが規定される制御フィールド（ＭＦｄ）と、
アドレス演算命令コードが規定されるアドレス演算コードフィールド（ＭＦｅ）と、
データ生成命令コードが規定されるデータ生成コードフィールド（ＭＦｆ）とを含む、請求項１に従う半導体集積回路。
【請求項９】
一つの半導体チップ上に形成された半導体集積回路におけるメモリ回路の検査方法であって、
上記メモリ回路は、複数のマットから構成され、
オール「０」判定試験、オール「１」判定試験、Ｎ２乗パターン試験、およびマーチング試験のためのアルゴリズムを含む所定のアルゴリズムを格納したマイクロプログラムメモリを有し、前記所定のアルゴリズムに従って前記メモリ回路の検査のための制御信号を生成するとともに書き込んだデータの読み出しを行うマイクロプログラム制御方式の制御回路と、該制御回路からの制御信号に従ってテストデータを形成する演算回路と、上記メモリ回路より読み出されたデータを判定して判定結果を出力するデータ判定手段と、からなるデータ処理回路を備えたテスト回路を、上記メモリ回路と同一半導体チップ上に形成し、
上記テスト回路を用いて所定のアルゴリズムに従って上記マットを検査し、
異常なしと判定されたマットを他のマットの判定結果を格納するメモリ部として用いることを特徴とする検査方法。
【請求項１０】
上記マイクロプログラムメモリを電気的に書き込み可能な不揮発性メモリで形成し、
オール「０」判定試験、オール「１」判定試験、Ｎ２乗パターン試験、およびマーチング試験のためのアルゴリズムの中から選択された一つのアルゴリズムを上記マイクロプログラムメモリに格納することを特徴とする請求項９に記載の検査方法。
【請求項１１】
上記所定のアルゴリズムはテスタ言語またはテスト言語で記述されていることを特徴とする請求項９に記載の検査方法。
【発明の詳細な説明】
技術分野
本発明は、半導体集積回路（ＩＣ）の診断技術さらには半導体メモリの欠陥ビットの検出技術に適用して有効な技術に関し、例えば、半導体メモリとその半導体メモリのテスト回路すなわちテストパターンを発生するテストパターン発生回路を内蔵した半導体集積回路に利用して有効な技術に関する。
背景技術
半導体記憶装置などの半導体メモリの診断方式は、メモリテスタと呼ばれるテスト装置により実施される。メモリテスタはテストパターンデータを発生し、テストされるべき半導体メモリに上記テストパターンデータを供給して、半導体メモリのメモリセルに書き込みをおこなう。その後、メモリセルに書き込まれたデータがメモリテスタに読み出され、読み出されたデータとメモリテスタ内の期待値とが比較され、半導体メモリの診断が行われる。
半導体メモリの開発手順は、図１１に示されているようにされる。開発しようとする半導体メモリの仕様に基づいてシステム設計が行われる。さらに、システム設計に基づいて、具体的な回路設計が行なわれる。そして、半導体メモリの制作に必要な各種ホトマスクの作成が行われる。その後、上記ホトマスクを利用して、半導体製造プロセスの前工程を経て、複数の半導体メモリ回路の形成されたウェハが製造され、そのウェハが複数のメモリチップに切断される。そして、各メモリチップが樹脂などの封止材によって封止されてパッケージに組立てられる。パッケージとして組み立てられた半導体メモリから適当にサンプル（サンプルチップとも言う）を抽出し、抽出されたサンプルがメモリテスタを用いて検査される。それによって、サンプル内の不良品の有無が検出される。
そして、不良品が発見された場合には、不良品とされたサンプルのテスト結果が解析されて、故障原因が見つけ出される。そして、その故障を回避すべく、半導体メモリのシステム設計、回路設計あるいはレイアウト設計などの再設計が行われ、再設計されたデータで、半導体製造プロセスの前工程を経て、複数の半導体メモリ回路の形成されたウェハが再び製造される。そして、メモリテスタによる再テストの実行が繰り返し行われ、テストにおいて不良が検出されなくなった段階で半導体メモリの開発が完了する事としていた。
しかしながら、上述のように、メモリテスタにより発生されたテストパターンデータを半導体メモリに供給する診断方式にあっては、上記テスタを構成する各種の半導体集積回路装置（ＩＣとも言う）は検査対象となる半導体メモリよりも１世代ないしは数世代前の製造加工技術で製造されたものである。すなわち、上記テスタを構成する各半導体集積回路装置の製造加工寸法の最小値は、検査対象となる半導体メモリの製造加工寸法のそれより太くされる。したがって、旧世代の半導体集積回路装置より構成されたメモリテスタで次世代あるいは新世代の半導体メモリの検査を行なうことになる。そのため、新世代の半導体メモリの検査を行なうメモリテスタに要求される動作速度などの仕様は非常に厳しいものとなる。所望のテストスピードを達成するため、メモリテスタ内には複数の同一機能を有する半導体集積回路が用意される。そして、それらが並列処理を行ないえるようにシステムを構成するなどして、テストスピードの高速化のための工夫がなされる。その結果、メモリテスタは、そのシステム構成が複雑となり、かつ、そのサイズが大規模なものにならざるを得ないという問題点があった。
ところで、論理半導体集積回路装置などでは、半導体製造工程の前工程およびウェハ製造前の回路設計乃至システム設計段階において、ワークステーションを用いた論理シュミレーションが行なわれ、事前に不良を検出する技術が確立されている。そのため、論理半導体集積回路装置のテスト手順は、実際の製品に対応する半導体チップ（実チップとも言う）を製造してテストする前述のような半導体メモリのテスト手順に比べて、そのトータルの開発期間は短くなるという利点がある。
しかしながら、論理シュミレーションに必要なテストパターンは論理半導体集積回路装置ごとに異なるため、そのテストパターンの作成には多くの時間が必要とされる。さらに、テストパターンのステップ数が長いので、テスタによる実チップでのテストに比べて、そのテスト所要時間は長くなってしまい、実質的にテストの実行が不可能になってしまうという不具合もある。
一方、半導体メモリにおいては、新製品を開発する場合においてもアドレスやデータのビット数が異なるだけでテストパターンの生成プログラムの大部分は変更を要しない場合が多い。また、今までに蓄積されている不良解析のノウハウを利用できることが多い。そのため、前述したようにサンプルチップを製造してからメモリテスタによるテストが行なわれていた。
しかしながら、上記開発手順は、設計負担は少ないものの、一旦不良が発生した場合におけるメモリ回路の再設計からチップ製造までの時間が大幅に増加し、半導体メモリの開発期間が長くなってしまうという問題点があった。
また、近年の半導体メモリは、高速化の要求、および、同期型ダイナミック・ランダム・アクセスメモリ（以下、ＳＤＲＡＭとも言う）のようにパイプライン動作等高機能化の要求から、そのタイミング条件が複雑化しているため、上述されるような開発方式では設計仕損が増加し、その開発期間もますます長くなるという課題があった。
これに対し、ＥＤＡ（エンジニアリング・デザイン・オートメーション）ベンダから、動作レベルで製品の動作に合わせたテストパターンを生成できるようにした検証用ツールが発表されている。その一例が、ＴＳＳＩ社製の“ＶｉｓｕａｌＴｅｓｔ”と呼ばれる検証ツールである。この検証ツールにおいては、フローチャートの形式でテストパターンの発生手順をワークステーションなどを用いて入力することにより、回路設計データで表現された半導体メモリの検査を行なうことができる。この検証ツールを使用した場合のメモリ開発手順を示したのが、図１２である。なお、図１２は、本発明者が考察したものであり、公知ではない。
図１２に示されるように、この検証ツールを使用することにより、ウェハを製造することなく検証を行なって不良を検出することができ、これによって大幅に開発期間を短縮することが可能となるという利点がある。
しかしながら、上記手法にあっては、“ＶｉｓｕａｌＴｅｓｔ”上で動作レベルの記述ができたとしても、検証ツールは“Ｖｅｒｉｌｏｇ”と呼ばれる論理検証ツール（論理シュミレータ）であるため、テストパターンをパターンデータファイルとして作成する必要がある。半導体メモリ用のテストパターンは膨大（数ギガ〜数メガステップ）であるため、網羅的な検証は実行が極めて困難であり、実際には、部分シュミレーションで留まる可能性が極めて高い。
一方、本発明者らは、半導体メモリや論理半導体集積回路装置などのテスト方法の改善のため、仮想テスタと呼ばれる技術について検討した。この仮想テスタ技術は、公知ではない。
本発明者の考察した仮想テスタは、パターンジェネレータと、シュミレータとを含む。上記パターンジェネレータは、コンピュータ上で実行可能なプログラムの形式で記述され、所定のアルゴリズムに従って半導体メモリのテストパターンを発生する。上記シュミレータは、半導体メモリの論理設計データが与えられると、上記パターンジェネレータにより形成されたテストパターンによって、上記半導体メモリの検査をコンピュータ上で行なう。
しかしながら、上記仮想テスタによる診断方式にあっても、パターンジェネレータにより形成されたテストパターンを記憶装置に保持しておかなくてはならないため、通常のコンピュータシステムでは記憶容量が不足してしまうともに、検査時間が長大化してしまうという事が考えられる。
ところで、論理検証を高速化する手法として、ＦＰＧＡ（Field Programmable Gate Array）を用いたハードウェア・エミュレータが知られている。ハードウェア・エミュレータは、ＨＤＬ（Hardware Description Language）で記述した論理回路をＦＰＧＡを使用して電気的に論理構成し、その電気的動作により論理動作を検証するツールである。ハードウェア・エミュレータは、Ｖｅｒｉｌｏｇ等の論理シュミレータと異なり、テストパターンを実際に１ステップずつ生成しつつ検証するため、テストパターンをファイルとして用意しておく必要がない。そのため、大容量の記憶装置が不用である。ハードウェア・エミュレータは、実際の電気回路で構成されるハードウェアであるため、論理シュミレータに比べて、数百〜数千倍も速く検証を行なうことができる。そのため、半導体メモリのＨＤＬ記述と組み合わせることで、網羅的な検証が可能となると考えられる。
本発明者は、テスタにおいて、所定のアルゴリズムに従ってメモリのテストパターンを生成するＡＬＰＧ（Algorithmic Memory Pattern Generator）と呼ばれるテストパターン生成器が比較的小規模の論理回路で構成されていること、および、ＡＬＰＧはＨＤＬによって記述することができ、かつ、ＨＤＬ記述からＩＣへの展開技術は確立されていることに着目した。上記テスタで使用されているＡＬＰＧのハードウェア規模ないし論理回路規模を、更に、スケールダウンすることによって、メモリチップに搭載可能になるのではないかとの着想を得て鋭意研究した。その結果、後述のように、スケールダウン可能なＡＬＰＧのアーキテクチャを採用することによって、テスト回路を搭載した半導体メモリを実現することができると確信し、本発明を出願するに至った。
なお、半導体メモリのテスト技術としては、特開昭５６−１６９２９２号がある。特開昭５６−１６９２９２号は、メモリチップ上に設けられたアドレスカウンタによって自動的にアドレスを更新しながら、テストデータをメモリセルに書き込み、その後、書き込まれたテストデータを読み出して検証することで、全メモリセルの検査を行う技術を開示する。
しかしながら、メモリチップ上にテスト用のアドレスカウンタを設ける方式にあっては、すべてのメモリセルにデータ“１”または“０”を書き込み、その後、その書き込まれたデータを読み出してチェックするような、オール「１」判定あるいはオール「０」判定については、を効率良く行なうことはできる。しかしながら、メモリのテストには、オール「１」判定やオール「０」判定の他に、マーチング試験やＮ2乗パターン試験と呼ばれる判定があり、これらを行わないと精度の高い診断結果が得られない。上記アドレスカウンタ内蔵方式では限られた種類の判定しか行なえず、検査が不完全に留まってしまうという問題点があると考えられる。
また、メモリ（メモリ部）と共に周辺ロジック（論理回路）が一つの半導体チップ上に形成された半導体集積回路（メモリ内蔵論理集積回路）において、メモリ部のテストを上記テスタで行なえるようにするため、メモリの入出力部にシリアル／パラレル変換回路を設ける。この場合、テスト期間において、上記シリアル／パラレル変換回路と上記テスタとがシリアル通信で接続され、上記テスタから出力されたシリアル形式のテストパターンは上記シリアル／パラレル変換回路を介して上記メモリ部へ入力される。上記シリアル／パラレル変換回路では、入力されたシリアル形式のテストパターンをパラレルデータに変換し、変換されたパラレルデータがメモリ部にテストデータとして書き込まれる。その後、メモリ部に書き込まれたデータが読み出だされ、そのデータがシリアルデータに変換されて、チップ外部へ出力する。この方式に従うと、テスタが利用でき、かつ、半導体集積回路にとっては、テストパターンを入力するための外部信号端子（ピン）数を節約できるという利点がある。しかし、シリアル／パラレル変換に要する時間だけテスト時間が長くなってしまうという問題点がある。
この発明の目的は、実チップを製造することなく診断を行なうことが可能な半導体メモリの診断技術を提供することにある。
この発明の目的は、新たな半導体メモリの開発期間を短縮することが可能なメモリの診断技術を提供することにある。
この発明の目的は、外部テスタを用いることなく内部メモリのいろいろな判定方式による診断を行なうことが可能な半導体メモリの診断技術を提供することにある。
この発明の他の目的は、短時間に半導体メモリの診断を実行可能なメモリ検査方式を提供することにある。
この発明のさらに他の目的は、テストパターンを入力するための外部端子（ピン）を設けることなくしかも短時間に診断可能な半導体メモリを提供することにある。
この発明の前記ならびにそのほかの目的と新規な特徴については、本明細書の記述および添附図面から明らかになるであろう。
発明の開示
本願において開示される発明のうち代表的なものの概要を説明すれば、下記のとおりである。
すなわち、メモリ回路が搭載される半導体チップ上に、命令によって所定のテストパターンを発生可能なテスト回路としてのデータ処理部が設けられる。
データ処理部（１０）は、
所定のアルゴリズムに従ってメモリ回路のテストパターン（アドレスとデータ）を生成し、かつ、書き込まれたデータの読出しを行なうための制御を実行可能なマイクロプログラム制御方式の制御部（１１，１２，１３）と、上記制御部によってその動作が制御され、メモリのデコーダに供給されるべきアドレスを発生するアドレス演算部（１４）
上記制御部によってその動作が制御され、被検査対象とされるメモリセルに書き込まれるべきデータを発生するデータ演算部（１５）、および、
読み出されたデータを判定し、判定結果を出力するデータ判定回路（１６）を含む。上記データ処理部（１０）は、専用テスト回路とされる必要はなく、他の用途にも利用可能である。
上記制御部は、既存のテスタ言語乃至はテスト言語を用いた複数の命令を格納する命令メモリを有し、上記複数の命令によって定義される上記所定のアルゴリズムに従って、テストパターン（アドレスとデータ）を生成する。上記テスタ言語は、アドレスとデータとを含むテストパターンを効率的に発生するための有効な命令言語と見なすことができる。上記テスタ言語は、テスタ業界で一般的に用いられているような言語とされ、たとえば、アドバンテスト社のテスタ言語と互換性のある言語とされるのがよい。上記所定のアルゴリズムを記述する言語は、テスタ言語に限定されるものではなく、アドレスとデータとを含むテストパターンを発生することが可能な命令言語で有ればよい。
上記命令メモリは、ダイナミック型ランダム・アクセスメモリ、スタティック型ランダム・アクセス・メモリ、リード・オンリ・メモリ、電気的に書き込み可能な不揮発性記憶装置、あるいは、電気的に書き込みおよび消去可能な不揮発性記憶装置はどの既存のメモリから選択することができる。
上記命令メモリを電気的に書き込み及び電気的な消去が可能な不揮発性のメモリセルを含む不揮発性記憶回路、たとえば、フラッシュメモリによって構成するのがよい。それによって、上記所定のアルゴリズムを定義する上記複数の命令は、回路の電源電位が供給されていない状態においても保持される。また、必要に応じて、不揮発性メモリセル内のデータを書き換えることにより、所望のアルゴリズムを定義する複数の命令が不揮発性メモリセルに保持させることができる。
従って、テストパターンを意図的にメモリ製品毎乃至製品ロット毎に変更させたりするような事ができる。このことは、製品毎乃至は製品ロット毎に特定の不良発生パターンが類推できるような場合において、メモリ検査の効率化に関与する。
被検査対象とされるメモリ回路は、ダイナミック型ランダム・アクセスメモリ、スタティック型ランダム・アクセス・メモリ、リード・オンリ・メモリ、電気的に書き込み可能な不揮発性記憶装置、あるいは、電気的に書き込みおよび消去可能な不揮発性記憶装置などの既存のメモリとされる。
上記テスト回路には、自分自身の論理検査を行なう自己検査機能を持たせるようにするのが望ましい。
また、メモリ回路を含む半導体集積回路は、メモリ回路の周辺に、欠陥ビットと置き換え可能な予備メモリ行もしくは予備メモリ列を有する冗長回路を備える。この場合、上記制御部に、自己救済回路が設けられる。上記自己救済回路は、上記データ判定手段からの判定結果に基づいて最も適切な予備メモリ行または予備メモリ列を選択して欠陥ビットと置き換えるアルゴリズムを有し、そのアルゴリズムに従って、欠陥ビットの置き換えのためのアドレス変換を行なう。
さらに、メモリ回路と共に周辺ロジック回路（論理回路）が一つの半導体チップ上に形成された半導体集積回路においては、上記テスト回路にメモリ部のテストパターンのみでなく周辺ロジックのテストパターンを発生可能な機能を持たせるようにする。
上記した手段によれば、外部テスタを用いることなく種々の判定方式による診断を行なうことができるとともに、テストパターンを入力するための外部端子（ピン）を設ける必要がない。しかも、半導体メモリと同一の半導体チップ上に形成されるテスト回路は、半導体メモリと同一の製造技術、つまり、同一世代の半導体プロセス技術によって形成された論理回路で形成されるため、テスト対象となる半導体メモリとほぼ同一の動作速度を容易に実現できる。したがって、本発明に従えば、短時間にメモリの診断を行なう事ができる。前述のような複数の同一回路による並列処理が不要になるため、テスト回路自体の論理規模乃至回路規模は、メモリテスタと比べて小さくできる。テスト回路自体の論理規模乃至回路規模が小さいので、オンチップ化が比較的容易に実現できる。
上記テスト回路部分の製造歩留まりを向上させるには、上記テスト回路の部分の配線加工寸法を、メモリ部分のメモリセルの配線加工寸法より大きくするのがよい。それによって、テスト回路部分が不良となる確率を低減する事が可能となる。
【図面の簡単な説明】
図１は、本発明を適用した半導体メモリの第１の実施例を示すブロック図である。
図２は、本発明を適用した半導体メモリの第２の実施例を示すブロック図である。
図３は、本発明を適用した半導体メモリの第３の実施例を示すブロック図である。
図４は、命令メモリに格納されるマイクロ命令のフォーマット構成例を示す説明図である。
図５は、シーケンス制御部の構成例を示すブロック図である。
図６は、アドレス演算部の構成例を示すブロック図である。
図７は、テストデータ生成演算部の構成例を示すブロック図である。
図８は、メモリアレイの検査を行なう場合のテスト回路のマイクロ命令のオペコードおよびオペランドによるシーケンス制御手順の一例を示すフローチャートである。
図９は、メモリアレイの検査を行なう場合のテスト回路のマイクロ命令の演算コードおよびデータ生成コードによるテストアドレスおよびデータの生成、出力手順の一例を示すフローチャートである。
図１０は、本発明をメモリ内蔵の論理ＬＳＩに適用した場合の実施例を示すブロック図である。
図１１は、従来の一般的な半導体メモリの開発手順を示すフローチャートである。
図１２は、従来の論理シュミレータを用いた半導体メモリの開発手順を示すフローチャートである。
発明を実施するための最良の形態
以下、本発明の好適な実施例が図面に基づいて説明される。
図１は、本発明を適用した半導体メモリ（メモリ回路）の一実施例のブロック図である。
図１において、１点鎖線で囲まれた部分は、単結晶シリコンのような１個の半導体チップ上に構成される半導体メモリＭＣを示す。図１において、符号１はワード線とデータ線が格子状に配設され各交点にメモリセルがそれぞれ配置されたメモリアレイ、２はＸ系のアドレス信号に基づいてメモリアレイ１内の１本のワード線を選択レベルにするＸデコーダ乃至ローデコーダ、３はＹ系のアドレス信号に基づいてメモリアレイ１内の対応するデータ線を選択するＹデコーダ乃至カラムデコーダ、４はデータ線のレベルを増幅するセンスアンプ、５は丸印で示される外部端子から供給されるアドレス信号ＡＤを受けて内部アドレス信号を形成して上記Ｘ、Ｙデコーダ２，３に供給するアドレスバッファ、６はライトデータおよびリードデータのチップ外部へ外部端子を介して入出力を行なうデータ入出力バッファ、７は、丸印で示される外部端子から入力されるチップ選択信号ＣＳやアドレスストローブ信号ＡＳ、ライトイネーブル信号ＷＥ、アウトイネーブル信号ＯＥなどの外部制御信号を受けて上記デコーダ２，３、センスアンプ４、アドレスバッファ５等の回路に対する内部制御信号を形成して供給する内部制御回路である。上記制御信号は、メモリアレイを構成するメモリセルの種類に従って適便に変更されることは、当業者にとって容易に理解されるであろう。
本実施例のメモリチップＭＣ上には、所定のアルゴリズムに従ってメモリのテストパターン（アドレスとデータ）を生成するとともに書き込んだデータの読出しを行なうマイクロプログラム制御方式の制御部と、演算部、および、読み出されたデータを判定して判定結果を出力するデータ判定手段を含むテスト回路（データ処理回路）１０が設けられる。なお、本明細書においては、上記テスト回路１０は、ＡＬＰＧ（Algorithmic Memory Pattern Generator）と記述する場合もある。
そして、上記テスト回路１０で生成されたアドレスとデータは、それぞれセレクタ２１，２２，２３を介して上記Ｘデコーダ２，Ｙデコーダ３およびセンスアンプ４に供給可能にされている。上記セレクタ２１，２２，２３は、上記テスト回路１０から出力されるアドレスとデータまたは外部から入力されるアドレスとデータのいずれか一方を選択して、上記Ｘデコーダ２，Ｙデコーダ３およびセンスアンプ４に供給する。
上記テスト回路１０は、所定のテストパターン生成アルゴリズムに従って記述された複数のマイクロ命令群からなるマイクロプログラムが格納されたＥＰＲＯＭ（電気的に書き込み可能な不揮発性メモリ）、フラッシュメモリ（電気的に書き込み及び消去可能な不揮発性メモリ）、ＲＯＭ（リード・オンリ・メモリ），ＲＡＭ（ランダム・アクセス・メモリ、ダイナミック型ＲＡＭ、スタティック型ＲＡＭ）などからなる命令メモリ１１と、該命令メモリ１１から読み出されるべきマイクロ命令の命令アドレスを指定するプログラムカウンタ１２と、上記命令メモリ１１から読み出されたマイクロ命令内の命令コードを解読してメモリ回路部に対する制御信号やプログラムカウンタ１２等テスト回路１０内の内部回路に対する制御信号を形成するシーケンス制御回路１３と、命令メモリ１１より読み出されたマイクロ命令に従ってテストアドレスを生成するアドレス演算回路１４と、読み出されたマイクロ命令に従ってテストデータおよび期待値データを生成するテストデータ生成回路１５と、上記テストアドレスによってメモリアレイ１から読み出されたデータと上記テストデータ生成回路１５により生成された期待値データとを比較し、正常な書込みがなされた否か判定する比較判定回路１６等により構成されている。
上記命令メモリ１１に格納される複数のマイクロ命令は、既知のテスタ言語乃至はテスト言語を用いて記述される。上記複数の命令によって定義される上記所定のアルゴリズムに従って、テストパターン（アドレスとデータ）が生成する。上記テスタ言語は、アドレスとデータとを含むテストパターンを効率的に発生するための有効な命令言語と見なされる。上記テスタ言語は、テスタ業界で一般的に用いられているような言語とされ、たとえば、アドバンテスト社のテスタ言語と互換性のある言語とするのがよい。既存のテストパターンのプログラムデータが利用できるからである。上記所定のアルゴリズムを記述する言語は、テスタ言語に限定されるものではなく、アドレスとデータとを含むテストパターンを発生することが可能な命令言語で有ればよい。
命令メモリ１１がＥＰＲＯＭ（電気的に書き込み可能な不揮発性メモリ）やフラッシュメモリ（電気的に書き込み及び消去可能な不揮発性メモリ）などによって構成される場合、命令メモリ１１へのプログラムの書き込みは、公知のＲＯＭライタなどの外部書き込み装置によって行われる。
命令メモリ１１がＲＯＭ（リード・オンリ・メモリ）によって構成される場合、命令メモリ１１へのプログラムの書き込みは、本発明の適用され半導体メモリ回路乃至半導体集積回路の製造工程において公知の方法により行われる。
また、命令メモリ１１がＲＡＭ（ランダム・アクセス・メモリ、ダイナミック型ＲＡＭ、スタティック型ＲＡＭ）などの揮発性メモリによって構成される場合には、テストの実施に先立って、上記命令メモリにプログラムをロードする必要がある。
本発明にかかる半導体メモリ回路が不揮発性メモリである場合、あるいは、本発明にかかる半導体集積回路が不揮発性メモリを含む場合、上記不揮発性メモリの一部のアドレス領域に上記プログラムを格納しておき、電源投入乃至テストモードへの移行に応答して、上記プログラムを格納するアドレス領域から上記命令メモリ１１へ上記プログラムのロードするのがよい。
図１において、テスト回路１０は、テスト回路の起動信号ＳＴによって起動される。この起動信号ＳＴは、半導体メモリ回路乃至半導体集積回路への電源電位の投入に応答して発生される信号、あるいは、半導体メモリ回路乃至半導体集積回路の外部から意図的に供給される信号とする事ができる。半導体メモリ回路乃至半導体集積回路への電源電位の投入に応答して発生される信号とすれば、半導体メモリ回路乃至半導体集積回路への電源投入時に、自立的に内部メモリの検査を行いような用途に利用可能である。一方、半導体メモリ回路乃至半導体集積回路の外部から意図的に供給される信号とすれば、半導体メーカ乃至システムメーカが半導体メモリ回路乃至半導体集積回路の検査を独自に行いたい場合などの用途に利用できる。
上記比較判定回路１６における判定結果は、データの一致／不一致を示す判定信号Ｆとして外部端子Ｔ１から半導体チップの外部へ出力されるように構成されている。テストパターン生成アルゴリズム自体は公知であり、それらを適用することで、特に本実施例のために新規なアルゴリズムを必要としない。
なお、本実施例が適用される半導体集積回路（ＬＳＩ）がメモリの他に演算回路やロジック回路を備えている場合には、図１０に示すように、メモリ回路１００と演算回路及ぶロジック回路２００およびテスト回路１０との間にバス１７０および切替えスイッチＳＷ１〜ＳＷｎからなる信号切替え回路１６０を設けた可変バス構成とするのが望ましい。
これは、最近の画像処理用メモリ等において、データを処理する演算回路や論理回路に対してデータバスを可変にして制御しなければならない場合があることを考慮したものである。可変バス構成を採用する場合、そのスイッチ構造に汎用性を持たせる必要があり、複数の可変バスのデータ構造を設計データとして設計ツールに持たせておき、必要なバス構造のみ製品に付加する手法が考えられる。このバス構造データに本実施例のＡＬＰＧ構造データを合わせ持たせることにより、設計者およびユーザーは敢えてテスト回路に関わる設計に関与せずに容易にテスト機能を有するメモリ内蔵半導体集積回路ＬＳＩを設計することができる。
上記信号切替え回路１６０内の切替えスイッチＳＷ１〜ＳＷｎを制御する信号ＣＳは、メモリ回路のテストの際には、テスト回路１０において命令によって発生させ、それをスイッチＳＷ１〜ＳＷｎへ与えるようにしてもよい。また、外部から供給されるテストモード指定信号に基づいてテストモードを判定するテストモード判定回路を半導体チップ上に設けて、テストモード判定回路によってテストモード指示信号を判定することで、切替え制御信号ＣＳを形成するように構成してもよい。あるいは、電源電圧レベルを検出する電源電位検出回路を半導体チップ上に設けて、電源投入時に電源電圧Ｖｃｃが立ち上がりを検出して、切替え制御信号ＣＳを形成するように構成してもよい。
また、上記切替えスイッチＳＷ１〜ＳＷｎは、メモリ回路１００と演算回路及びロジック回路２００との間、または、メモリ回路１００とテスト回路１０との間の接続切り替えのみならず、演算回路及びロジック回路２００とテスト回路１０との間を接続できるように構成してよい。さらに、制御信号ＣＳを数種類用意しておいて、半導体集積回路ＬＳＩの通常動作時に、切替えスイッチＳＷ１〜ＳＷｎを制御してメモリ回路１００と演算回路及びロジック回路２００との間を接続する信号線数を変化させてデータ幅等を変えるようにすることも可能である。
なお、この実施例において、マイクロプログラムが格納された命令メモリとしての上記ＥＰＲＯＭ，ＲＯＭ及びＲＡＭについては、その部分における配線加工寸法などの半導体設計基準は緩和されたデバイス構造とされ、命令メモリ自体に不良が発生しにくいように配慮するのがよい。命令メモリだけでなく、テスト回路１０全体が、その部分における配線加工寸法などの半導体設計基準は緩和されたデバイス構造とするのがもっとも良い。すなわち、不良発生率が低減できるような半導体製造プロセスが適用される。
図２には、本発明の第２の実施例を適用した半導体メモリＭＣのブロック図が示されている。
この実施例の半導体メモリＭＣは、前記第１の実施例の構成に加えて、メモリアレイ１の近傍に設けられたところの予備メモリ列または予備メモリ行およびアドレス変換回路などを有する冗長回路８と、比較判定回路１６における判定結果を記憶する記憶回路としてのメモリ（以下、フェール・メモリと称する）１７と、救済回路１８を含む。救済回路１８は、該フェール・メモリ１７に記憶された判定結果及び所定の置換アルゴリズムに従って、上記冗長回路８内のアドレス変換回路に置換アドレスを設定し、不良メモリセルを含むメモリ列またはメモリ行を最適な予備メモリ列もしくはメモリ行に置き換える。
上記救済回路１８は、図１に示される上記テスト回路１０と同じように構成される。すなわち、救済回路１８は、冗長置換アルゴリズムに従って記述された複数のマイクロ命令群からなるマイクロプログラムが格納された命令メモリと、当該命令メモリから読み出すべきマイクロ命令を指定するプログラムカウンタと、命令メモリから読み出されたマイクロ命令内の命令コードを解読して制御信号を形成する制御回路と、演算回路などから構成することができる。
上記比較判定回路１６による判定結果に基づいて、最も適切な予備メモリ行または予備メモリ列が選択されて、欠陥ビットと置き換える冗長置換アルゴリズムそれ自身は公知であり、それを使用することで、本実施例のために新規な置換アルゴリズムを必要としない。
なお、図２において符号ＭＡＬＹで示されるメモリアレイ部は、図１におけるメモリアレイ１、Ｘ，Ｙデコーダ２，３、センスアンプ４、アドレスバッファ５、データ入出力バッファ６および内部制御回路７を含んだ回路部分である。また、ＡＬＰＧは、図１における命令メモリ１１とプログラムカウンタ１２とシーケンス制御回路１３とアドレス演算回路１４およびテストデータ生成回路１５を含んだ回路部分を示している。ＳＥＬは、図１におけるセレクタ２１，２２，２３を統括的に示している。
この第２の実施例では、判定結果を記憶するフェール・メモリ１７を設けているが、メモリアレイ部が複数のメモリマットもしくはメモリブロックで構成されるような場合には、各メモリマット乃至メモリブロックごとに順番に検査を行なうので、先ず、ある特定の１つのメモリマット乃至メモリブロックを検査してその特定のメモリマット乃至メモリブロック内のすべてのメモリセルに異常がなかったときは、以後、その特定のメモリマット乃至メモリブロックを他のメモリマット乃至メモリブロックの検査のためのフェール・メモリとして使用し、欠陥ビットの救済を行なうように構成することも可能である。
図３には、本発明の第３の実施例を適用した半導体メモリＭＣのブロック図が示されている。この実施例は、同一チップ上にメモリ回路部１００と共に周辺ロジック回路部２００が搭載された半導体集積回路、いわゆる、システムメモリに本発明を適用した実施例である。
この実施例においては、周辺ロジック回路部２００から出力されるアドレス信号とテストパターン生成回路ＡＬＰＧから出力されるアドレス信号のいずれかを選択してメモリ回路部１００へ供給するためのセレクタ２４と、周辺ロジック回路部２００から入出力されるデータ信号とテストパターン生成回路ＡＬＧＰから出力されるデータ信号のいずれかを選択するためのセレクタ２５とが半導体チップ上に設けられている。
この実施例においても、第２の実施例と同様に、テスト回路１０の他に判定結果を記憶するフェール・メモリ１７とそれに基づいて欠陥ビットの救済を行なう救済回路１８を設けるようにしても良い。さらに、この実施例のテスト回路１０には、周辺ロジック回路部２００に対するテストパターンと期待値を生成する機能を持たせ、周辺ロジック回路部の診断もチップ自身で実行できるように構成することが可能である。
図４には、上記命令メモリ１１に格納されるマイクロ命令の命令フォーマットの構成例が示されている。前述のように、このマイクロ命令のフォーマットは、テスタ言語に基づいている。
この実施例のマイクロ命令は、ジャンプ命令で使用する命令の飛び先番地を示すＰＣアドレスが格納されるアドレスフィールドＭＦａと、シーケンス制御コードが格納されるオペコードフィールドＭＦｂと、命令の繰り返し数などが格納されるオペランドフィールドＭＦｃと、アドレスやデータの出力およびリード／ライトを指示する制御コードが格納される制御フィールドＭＦｄと、アドレス演算命令コードが格納されるアドレス演算コードフィールドＭＦｅと、データ生成命令コードが格納されるデータ生成コードフィールドＭＦｆ等からなる。アドレスフィールドＭＦａは、次に実行されるべき命令のアドレスを規定するフィールドと見なされる。
この実施例に使用されるテスタ言語としてのマイクロ命令の特徴は、１つの命令でテスト用のアドレス演算とデータ演算とを指定して２つの演算を並列に実行する点にある。
図５には、シーケンス制御回路１３の構成例が示されている。この実施例のシーケンス制御回路１３は、オペコードフィールドＭＦｂの制御コードを解読して制御信号を形成するデコーダなどからなる命令解読制御部３０と、プログラムカウンタ１２の値を「＋１」するためのインクリメンタ３１と、上記インクリメンタ３１またはアドレスフィールドＭＦａ内の飛び先番地のいずれかを選択してプログラムカウンタ１２へ供給するマルチプレクサ３２と、オペランドフィールドＭＦｃ内の繰り返し数を保持する複数のインデックスレジスタ３３と、該インデックスレジスタ３３の値を「−１」するためのデクリメンタ３４と、「−１」された値を保持する複数のプレーンあるいはウェイから構成されるワーキングレジスタ３５と、後述のｊｘｄ命令（表１参照）で用いるデータ反転の有無を示すフラグ３６と、jindex命令で用いるオペランドのプログラムカウンタ１２への転送の有無を示す複数のフラグ３７と、レジスタ３３，３５の値を選択的に上記デクリメンタ３４に供給する複数のマルチプレクサ３８と、デクリメンタ３４の値をワーキングレジスタ３５のいずれかのプレーンに分配するデマルチプレクサ３９から構成される。
表１には、上記マイクロ命令内のオペコードフィールドＭＦｂに定期乃至記述格納されるところの上記シーケンス制御に用いられるオペコードの種類とその内容が示されている。
【表１】
0003867862.tif 000002
表１において、「ｎｏｐ」で示される命令は、プログラムカウンタ１２の値をインクリメンタ３１で「＋１」してプログラムカウンタ１２へ戻すことを指示するノーオペレーション命令つまりプログラムカウンタの更新以外に何の操作を行なわずに次の命令に移ることを指令する命令である。
また、「jindex１」〜「jindex４」は、ジャンプによる命令のループを回すために用意された命令である。メモリのパターンテストにおいては、ジャンプ命令を用いて同じ命令を何回も繰り返して実行することで命令数、すなわち、プログラム長を減らすことができる場合（例えば、アドレスを最終番地までインクリメントすることで、全メモリセルに「１」を書き込んで読み出すような場合）がある。このループ（ジャンプ）の回数を設定できるようにするために、本実施例では、インデックスレジスタ３３を設けている。しかも、複数種類の判定方式を実行できるようにするため、ジャンプ命令とインデックスレジスタ３３およびワーキングレジスタ３５をそれぞれ４つずつ設けている。
各ジャンプ命令は同じ制御内容であるので、以下「jindex１」による制御動作を説明し、他のジャンプ命令「jindex２」〜「jindex４」の説明は省略される。オペコードフィールドＭＦｂからjindex１命令が読み出されると、それが最初のjindex１命令であるか判定されて、その判定結果がフラグ３７に反映される。具体的には、最初のjindex１のときはフラグｊｆ１＝０とされ、２回目以降はｊｆ１＝１とされる。
フラグｊｆ１＝０のときにjindex１命令が読み出されると、そのマイクロ命令のアドレスフィールドＭＦａ内のジャンプ先アドレスとしてのＰＣアドレスがプログラムカウンタ１２へ設定されるように、マルチプレクサ３２が制御される。それによって、マイクロ命令の実行シーケンスはその番地にジャンプされるとともに、フラグｊｆ１は「１」にセットされる。これと同時に、オペランドフィールドＭＦｃ内で定義されるループ回数がインデックスレジスタ３３のｉｄｘに読み込まれる。
フラグｊｆ１＝１のときにjindex１命令が読み出されると、そのマイクロ命令のアドレスフィールドＭＦａ内のＰＣアドレスがプログラムカウンタ１２へ設定される。そして、インデックスレジスタ３３のｉｄｘ１内のループ回数がマルチプレクサ３８を介してデクリメンタ３４に供給されデクリメント「−１」される。デクリメントされた値は、デマルチプレクサ３９を介してワーキングレジスタ３５のｉｄｘｗ１に格納される。そして、ワーキングレジスタ３５のｉｄｘｗ１が「０」になると、マイクロ命令のアドレスフィールドＭＦａ内のＰＣアドレスをプログラムカウンタ１２へ設定しないで代わりに、プログラムカウンタ１２のアドレスをインクリメンタ３１で「＋１」してプログラムカウンタ１２へ戻すようにマルチプレクサ３２が制御される。
従って、マイクロ命令のオペコードフィールドＭＦｂにjindex命令が定義乃至記述され、そのアドレスフィールドＭＦａ内に当該マイクロ命令のジャンプ先アドレスとしてのＰＣアドレスが定義乃至定義されていると、オペランドフィールドＭＦｃ内で指定されたループ回数だけ同一のjindex命令が繰り返し実行され、最後にプログラムカウンタ１２がインクリメントされて、次のマイクロ命令へ進んでループから抜け出すような制御が行なわれる。
また、表１内の「ｊｘｄ」命令は、フラグ３６内のｄｆｌｇを参照し、そのｄｆｌｇフラグの値によってプログラムカウンタの値を操作する命令とされる。「ｊｘｄ」命令は、フラグ３６内のｄｆｌｇフラグが「０」のような第１の値のときは、オペランドをプログラムカウンタへ転送し、プログラムをオペランドの示す飛び先番地の命令へジャンプさせ、かつ、ｄｆｌｇフラグを「１」のような第２の値にセットする。一方、「ｊｘｄ」命令は、ｄｆｌｇフラグが「１」のような第２の値のときは、プログラムカウンタの値をインクリメントし、プログラムカウンタへ戻し、かつ、ｄｆｌｇフラグを「０」のような第１の値にリセットする。
「ｊｍｐ」命令は、オペランドをプログラムカウンタへ転送して、プログラムをオペランドの示す飛び先番地の命令へジャンプさせることを指令する命令である。
「ｓｔｏｐ」命令は、シーケンス制御を終了させる事を指示する停止命令である。
図６には、上記アドレス演算回路１４の構成例が示されている。
この実施例のアドレス演算回路１４は、大きく分けてＸアドレスの生成を行なうＸアドレス演算部４１と、Ｙアドレスの生成を行なうＹアドレス演算部４２とにより構成されている。Ｘアドレス演算部４１とＹアドレス演算部４２は、ほぼ同一の構成であるので、以下、Ｘアドレス演算部４１の構成を説明し、Ｙアドレス演算部４２の構成の説明を省略する。また、必要に応じて不可的なＺアドレス演算部を設けることにより、部分的なパターンの生成（パーシャルパターン）を行なわせるようにできる。
Ｘアドレス演算部４１は、Ｘアドレスの初期値を格納する初期値レジスタＸholdと、「０」を保持するゼロ設定手段４３と、Ｘアドレスの初期値または「０」のいずれかを選択するマルチプレクサＭＵＸ１と、選択された初期値または「０」を保持するベースレジスタＸbaseと、レジスタＸbaseの値を加算する第１の演算器ＡＬＵ１と、演算器ＡＬＵ１の演算結果または「０」または帰還値のいずれかを選択する第２のマルチプレクサＭＵＸ２と、選択された値を保持するカレントレジスタＸcurrentと、レジスタＸcurrentの値を加算もしくは減算する第２の演算器ＡＬＵ２と、この第２演算器ＡＬＵ２または上記第１演算器ＡＬＵ１の出力のいずれかを選択する第３のマルチプレクサＭＵＸ３と、選択された出力を反転可能なインバータＩＮＶとから構成されている。
このインバータＩＮＶは、メモリのパターンテストにおいて、アドレス信号の切り換えノイズによる誤動作を試験する場合があり、その際にアドレス信号の反転信号を出力する必要があるため設けられる。このインバータＩＮＶを使用することで、上記試験におけるアドレス信号の反転信号を容易に形成することができる。
特に制限されないが、この実施例では、上記Ｘアドレス演算部４１の演算器ＡＬＵ１，ＡＬＵ２で生成されたＸアドレスをＹアドレス側へ、また、Ｙアドレス演算部４２で生成されたＹアドレスをＸアドレス側へ出力できるように、それぞれの第３マルチプレクサＭＵＸ３が構成されている。
これにより、複数の数種のメモリ、例えば、アドレスマルチプレックス方式のメモリおよびアドレスノンマルチプレックス方式のメモリのいずれのテスト回路としても使用できるように構成されている。つまり、命令メモリ１１に格納されるマイクロ命令を書き換えるだけで、すべてのメモリに対してそれに必要なテストパターンの発生乃至検査を行なうことができる。
なお、上記Ｘアドレス演算部４１とＹアドレス演算部４２の異なる点は、Ｘアドレス演算部４１の第１演算器ＡＬＵ１がオーバーフローしたときにＹアドレス演算部４２の第１演算器ＡＬＵ１に対してはボロー信号ＢＲが供給されるようにされている点である。
表２には、上記マイクロ命令内の演算コードフィールドＭＦｅに記述乃至定義格納されるところの上記Ｙアドレス演算部４２の第１演算器ＡＬＵ１でのＹアドレス演算（ベース演算）に用いられる演算コードの種類とその内容が示されている。
【表２】
0003867862.tif 000003
表２において、Ｙbase←０は、ベースレジスタＹbaseの値を「０」にすることを指令する命令である。Ｙbase←Ｙholdは、初期値レジスタＹholdの内容をベースレジスタＹbaseに入れることを指令する命令である。Ｙbase←Ｙbase＋１は、ベースレジスタＹbaseの値をインクリメント（＋１）してレジスタＹbaseに戻すことを指令する命令である。Ｙbase←Ｙbase＋１（ＢＲ）は、ベースレジスタＸbaseの値が最大値でなければＹbaseの値をそのままにし、かつ、Ｘbaseの値が最大値であればＹbaseの値をインクリメントしてレジスタＹbaseに戻すことを指令する命令である。このとき、第１演算器ＡＬＵ１から第２演算器ＡＬＵ２へボロー信号ＢＲが供給される。
表３には、上記Ｘアドレス演算部４１の第１演算器ＡＬＵ１でのアドレス演算に用いられる演算コードの種類とその内容が示されている。
表４には、上記Ｙアドレス演算部４２の第２演算器ＡＬＵ２でのＹアドレス演算（カレント演算）に用いられる演算コードの種類とその内容が示されている。
表５には、上記Ｘアドレス演算部４１の第２演算器ＡＬＵ２でのアドレス演算に用いられる演算コードの種類とその内容が示されている。
表４において、左側の欄はテスタ言語を用いて記述されたＡＬＰＧ記述で、右側の欄はそれに対応した機能動作レベル記述（ＨＤＬ記述）である。
【表３】
0003867862.tif 000004
【表４】
0003867862.tif 000005
【表５】
0003867862.tif 000006
図７には上記テストデータ生成回路１５の構成例が示されている。
この実施例のテストデータ生成回路１５は、ライトデータまたは期待値の初期値を格納する初期値レジスタＴpholdと、当該初期値レジスタＴpholdの値を反転可能なインバータINVERT１と、出力すべきテストデータまたは期待値の基準データを保持するベースデータレジスタＴｐと、ビットシフト機能を有する演算器ＡＬＵと、演算器ＡＬＵの出力を反転可能なインバータINVERT２とから構成されている。なお、上記実施例では、ビット幅を１８ビットとしているが、必要に応じてテストデータ回路を拡大して、所望のビット幅に構成できる。
表６には、上記マイクロ命令内のデータ生成コードフィールドＭＦｆに定義乃至は記述されるところの上記テストデータ生成回路１５での動作制御に用いられる制御コードの種類とその内容が示されている。表６において、表３〜表５の命令と同一規則で表されている命令は、ほぼ同様の命令である。
Ｔｐ←Ｔｐ＊２は、レジスタＴｐと演算器ＡＬＵを制御してレジスタＴｐ内の１８ビットのデータを演算器ＡＬＵで処理してビット列をＭＳＢ側もしくはＬＳＢ側へ１ビットシフトさせてレジスタＴｐに戻す命令である。この命令によって、メモリ部が１ワードあるいは１バイトのような単位でデータのリード・ライトが行なわれるタイプのメモリであっても、メモリセルに対して１ビットずつデータ「１」を書き込むためのテストデータを比較的容易に生成することができる。
【表６】
0003867862.tif 000007
表７には、メモリの試験方法の１つであるところのマーチング試験に関するマイクロ命令のリストの一例が示される。
マーチング試験は、次のように行われる。メモリアレイ１内のメモリセルの全ビットにおいて、その中の１ビットが順番に選択される。選択されたメモリセルには、「０」のデータが書き込まれる。その後、書き込まれた「０」のデータの読み出しが行なわれる。続いて、全ビットにおいて、その中の１ビットが順番に選択される。選択されたメモリセルには「１」のデータが書き込まれる。その後、書き込まれた「１」のデータが読み出されて、それぞれ期待値と比較して欠陥の有無が判定される。
一例として、Ｘアドレスが４ビット、Ｙアドレスが４ビットで、２５６ビットの記憶容量を有するメモリアレイを想定したマーチング試験が説明される。
【表７】
0003867862.tif 000008
表７において、記号ＷおよびＲは、制御フィールドＭＦｄに記述乃至定義されるところのメモリに対するリード／ライトを指示する制御コードである。この制御コードは、Ｗに対応したビットとＲに対応したビット、つまり、２ビットで表すようにされている。「ＰＣアドレス」の欄に記載されている数字は、飛び先番地を示すもので、当該マイクロ命令実行後にＰＣの欄に記述されている番号のマイクロ命令に移行してループもしくはジャンプすることを意味している。また、「制御命令等」の欄に記載されている記号Ｘ←Ｘbase，Ｙ←Ｙbaseは、それぞれベースレジスタＸbase，Ｙbaseの値をＸアドレス，Ｙアドレスとして出力することを意味している。
図８および図９には、前記マイクロプログラム制御方式の制御部と演算部とからなるテスト回路１０によりメモリアレイ１の上記マーチング試験を行なう場合の表７のマイクロ命令リストに従った処理フローの一例を示す。このうち図８はマイクロ命令内のオペコードとオペランドとによるシーケンス制御のフローを示しす。また、図９は、図８に示されるシーケンス制御のフローと並行して実行されるところのアドレス演算コードとデータ生成コードによるテストアドレスおよびテストデータ（ライトデータ、期待値データ）の生成フローを示す。これらの処理は、前述の表１〜表６に記述されている命令コードを用いてシーケンス制御回路１３およびアドレス演算回路１４、データ生成回路１５を動作させることにより実行することができる。
以下、図８と図９の各ステップを対応させながら、マーチング試験の手順を説明する。
外部からプログラムカウンタ１２にスタートアドレスとして、表７のリストに示される最初の命令の番地がセットされると、図８および図９のフローが開始される。先ず、命令メモリ１１から表７の最初のマイクロ命令が読み出されると、オペコードは「ｎｏｐ」であるため、シーケンス制御回路１３は何もせずただプログラムカウンタ１２を１つだけ進める（ステップＳ１）。一方、アドレス演算回路１４およびデータ生成回路１５は、初期値レジスタＸhold，Ｙhold，Ｔholdに入っている初期値「０」をベースレジスタＸbase，Ｙbase，Ｔｐにそれぞれ設定する（ステップＳ２１）。
次に、上記ステップＳ１でプログラムカウンタ１２がインクリメントされているため、表７の２番目のマイクロ命令が読み出される。第２のマイクロ命令のオペコードは「jindex１」であるため、シーケンス制御回路１３ではオペランドの繰り返し回数がインデックスレジスタｉｄｘ１にセットされる（ステップＳ２）。
インデックスレジスタｉｄｘ１の最初の設定値はメモリアレイ１の容量（バイト数もしくはワード数）に対応される。一方、アドレス演算回路１４では、演算コードＸ←Ｘbase，Ｙ←ＹbaseによってベースレジスタＸbase，Ｙbaseの値をＸアドレス，Ｙアドレスとしてそれぞれ出力する。データ生成回路１５からはレジスタＴｐの値「０」が出力される。そして、このとき、制御信号Ｗ（書き込み）が出力される。これによって、メモリアレイ１ではアドレス演算回路１４から出力されたＸ，Ｙアドレスに対応したメモリセルが選択されてデータ「０」が書き込まれる（ステップＳ２２）。
シーケンス制御回路１３はオペコード「jindex１」によってインデックスレジスタｉｄｘ１の値をデクリメントしてワーキングレジスタｉｄｘｗに入れ、それが「０」になるまで同一命令を繰り返す（ステップＳ３，Ｓ４）。
また、アドレス演算回路１４では演算コードＸbase←Ｘbase＋１によってベースレジスタＸbaseの値すなわちＸアドレスをインクリメントし、Ｙbase←Ｙbase＋１（ＢＲ）によってベースレジスタＸbaseが最大値になるとＹアドレスをインクリメントする。上記インデックスレジスタｉｄｘ１の最初の設定値はメモリアレイ１の容量と同じであるので、上記動作の繰り返しによって、メモリアレイ１内のすべてのメモリセルに順番にデータ「０」が書き込まれる（ステップＳ２３，Ｓ２４）。
ワーキングレジスタｉｄｘｗの値が「０」になると、シーケンス制御回路１３はプログラムカウンタ１２の値をインクリメントして、表７の３番目のマイクロ命令を読み出す。そのオペコードは「ｎｏｐ」であるため、シーケンス制御回路１３は何もせずプログラムカウンタ１２を１つだけ進める（ステップＳ５）。
一方、アドレス演算回路１４は、３番目のマイクロ命令の演算コードに従って、Ｘ，ＹアドレスをインクリメントしてからベースレジスタＸbase，Ｙbaseに入っている値をＸアドレス，Ｙアドレスとしてそれぞれ出力する。このときベースレジスタＸbase，Ｙbaseの値は「０」に戻っている。データ生成回路１５はこのとき「０」を出力する。また、制御フィールドＭＦｄの制御コードに従って、制御信号Ｒ（読み出し）が出力される。これによって、当該アドレスのデータが読み出され、期待値データ「０」と比較される（ステップＳ２５，Ｓ２６）。
次に、上記ステップＳ５でプログラムカウンタ１２がインクリメントされているため、表７の４番目のマイクロ命令が読み出される。第４のマイクロ命令のオペコードは「jindex１」であるため、シーケンス制御回路１３ではオペランドの繰り返し回数がインデックスレジスタｉｄｘ１にセットされる（ステップＳ６）。インデックスレジスタｉｄｘ１の最初の設定値はメモリアレイ１の容量（バイト数もしくはワード数）に対応される。ただし、第４命令のjindex１命令コードは第２命令のjindex１命令コードと異なるＰＣアドレス（飛び先番地）を有するため、実行後に第３の命令（オペコードが「ｎｏｐ」）に戻る。
一方、アドレス演算回路１４では、演算コードＸ←Ｘbase，Ｙ←ＹbaseによってベースレジスタＸbase，Ｙbaseの値をＸアドレス，Ｙアドレスとしてそれぞれ出力する。また、データ生成コードＤinvertによって、データ生成回路１５からはレジスタＴｐの値「０」を反転したデータ「１」が出力される。そして、このとき、制御信号Ｗ（書き込み）が出力される。これによって、メモリアレイ１では出力されたＸ，Ｙアドレスのメモリセルにデータ「１」が書き込まれる（ステップＳ２７）。
シーケンス制御回路１３はオペコード「jindex１」によってインデックスレジスタｉｄｘ１の値をデクリメントしてワーキングレジスタｉｄｘｗに入れ、それが「０」になるまで「ｎｏｐ」命令に戻って繰り返す（ステップＳ７，Ｓ８）。また、アドレス演算回路１４では演算コードＸbase←Ｘbase＋１によってベースレジスタＸbaseの値すなわちＸアドレスをインクリメントし、Ｙbase←Ｙbase＋１（ＢＸ）によってベースレジスタＸbaseが最大値になるとＹアドレスをインクリメントする。上記インデックスレジスタｉｄｘ１の最初の設定値はメモリアレイ１の容量と同じであるので、上記手順によって、メモリアレイ１内のすべてのメモリセルに対して順番に読み出しが行なわれ期待値と比較されてから当該アドレスに「１」が書き込まれる動作を繰り返す（ステップＳ２７，Ｓ２８）。
次に、表７の５番目のマイクロ命令が読み出される。第５のマイクロ命令のオペコードは「jindex１」であるため、シーケンス制御回路１３ではオペランドの繰り返し回数がインデックスレジスタｉｄｘ１にセットされる（ステップＳ９）。インデックスレジスタｉｄｘ１の最初の設置値はメモリアレイ１の容量（バイト数もしくはワード数）に対応される。この第５のjindex１命令コードは第２のjindex１命令コードと同じＰＣアドレスを有し、同一命令を繰り返す命令とされる。一方、アドレス演算回路１４では、演算コードＸ←Ｘbase，ＹbaseによってベースレジスタＸbase，Ｙbaseの値をＸアドレス，Ｙアドレスとしてそれぞれ出力する。また、データ生成コードＤinvertによって、データ生成回路１５からはレジスタＴｐの値「０」を反転したデータ「１」が出力される。そして、このとき、制御信号Ｒ（書き込み）が出力される。これによって、メモリアレイ１では出力されたＸ，Ｙアドレスによって指定されたメモリセルからデータの読み出しが行われる（ステップＳ２９）。
シーケンス制御回路１３はオペコード「jindex１」によってインデックスレジスタｉｄｘ１の値をデクリメントしてワーキングレジスタｉｄｘｗに入れ、それが「０」になるまで「jindex１」命令を繰り返す（ステップＳ１０，Ｓ１１）。また、アドレス演算回路１４では演算コードＸbase←Ｘbase＋１によってベースレジスタＸbaseの値すなわちＸアドレスをインクリメントし、Ｙbase←Ｙbase＋１（ＢＲ）によってベースレジスタＸbaseが最大値になるとＹアドレスをインクリメントする。上記インデックスレジスタｉｄｘ１の最初の設定値はメモリアレイ１の容量と同じであるので、上記動作の繰り返しによって、メモリアレイ１内のすべてのメモリセルが順番に読み出しが行なわれて期待値「１」と比較される（ステップＳ３０，Ｓ３１）。
次に、表７の６番目のマイクロ命令が読み出される。第６のマイクロ命令のオペコードは「ｊｘｄ」であるため、シーケンス制御回路１３ではアドレスフィールドＭＦｃ内のＰＣアドレスの示す飛び先番地へジャンプする。この実施例では、表７の第２の命令「jindex１」へ戻るようにされている。そして、再びjindex１命令が読み出されたときにフラグｄｆｌｇが「１」にセットされる。これにより、２巡目のシーケン処理においては、図８のステップＳ１２で「ＹＥＳ」と判定して、マーチング試験を終了する。
一方、２巡目のマイクロ命令リストの実行に際しては、図９のステップＳ２２〜Ｓ３１において、データ生成回路１４によりライトデータと期待値データを「１」として全ビットへ連続して書き込みを行なってから、書き込んだデータを１ビットずつ読み出してそこへ反転データ「０」を書き込み、その後、全ビットの連続した読み出しが行なわれるようにされている。図９のフローでは、ステップＳ３２で、ステップＳ２２〜Ｓ３１による上記のような１巡目とは逆のデータの書き込み読み出しが終了したか否かの判定（裏データ終了判定）が行なわれるようにされている。なお、上記裏データによる検査を行なうための裏データ生成は図７のＴholdのINVERTとｄｆｌｇでコントロールして生成するようにされている。
上述したように、図８および図９のフローに従った制御は、表１〜表６に記述されている命令コードを用いて命令メモリ１１内のマイクロ命令を次の表７の命令リストに記述することで、僅か６つのマイクロ命令によりマーチング試験を実行することができる。
さらに、前記実施例のテスト回路１０においては、表１〜表６に記述されている命令コードを用いることにより上記マーチング試験の他に、すべてのメモリセルに「０」または「１」が書き込めるか検査するオール「０」判定試験またはオール「１」判定試験や、あるビットに「１」を書き込んでそれによって他のビットが誤書込みされていないかすべてのビットについて検査するいわゆるＮ2乗パターン試験（もしくはギャロッピング試験）等も実行することができる。
表８に、Ｎ2乗パターン試験のためのマイクロ命令リストを示す。なお、ｉｘｄは、初期値レジスタＴpholdの下にあるフラグｄｆｌｇでコントロールされるインバータＩＮＶＥＲＴをコントロールして裏テストパターンを生成する命令である。フラグｄｆｌｇが０のときは初期値レジスタＴpholdの値をそのままレジスタＴｐに格納し、フラグｄｆｌｇが１のときはその逆のパターンがレジスタＴｐに設定される。
【表８】
0003867862.tif 000009
上記実施例においては、プログラムカウンタ１２に最初に設定する値を、表７や表８に示される最初のマイクロ命令の命令番地に変更することで、マーチング試験やＮ2乗パターン試験を開始させることができる。
なお、前記テスト回路１０には、テスト回路自身の論理検査を行なう自己検査機能を持たせるようにするのが望ましい。また、メモリと共に論理回路が一つの半導体チップ上に形成された半導体集積回路においては、上記テスト回路にメモリ部のテストパターンのみでなく論理回路のテストパターンを発生可能な機能を持たせるようにすると良い。
以上説明したように、上記実施例においては、半導体メモリ回路のようなメモリが搭載ないし形成される半導体チップ上に、所定のアルゴリズムに従って上記メモリのテストパターン（アドレスとデータ）を生成するとともに、メモリに書き込んだデータの読出しを行なうマイクロプログラム制御方式の制御部と演算部および読み出されたデータを判定して判定結果を出力するデータ判定手段からなるテスト回路を設けるようにした。それによって、外部テスタを用いることなく内部の上記メモリのすべての判定方式によるテストを行なうことができる。したがって、テストパターンを入力するための外部端子（ピン）を半導体チップ上に設ける必要がない。しかも、上記メモリと同一の半導体チップ上に形成される上記テスト回路は上記メモリと同一の製造技術、つまり、同一世代の回路で形成されるため、テスト対象となる上記メモリと同一の動作速度を容易に実現できるので、実動作で短時間に上記メモリのテストを実行できる。複数の同一回路による並列処理も不要になるため、テスト回路の規模もテスタによる場合に比べて小さくできるため、半導体チップ上へのオンチップ化が比較的容易に実現できる。
さらに、実施例のテストパターン発生回路（ＡＬＰＧ）は、これをコンピュータが認識可能なＨＤＬ（ハードウェア・ディスクリビューション・ラングイッジ）記述できる。つまり、ソフトウェアでテストパターン発生回路（ＡＬＰＧ）を構成することができるため、半導体メモリもしくはそれを内蔵した半導体集積回路を新たに開発する場合、システム設計後チップ製造前に、コンピュータ上で上記メモリが正常に動作するか検証することができるので、半導体メモリの開発期間を大幅に短縮することができるという効果がある。
また、メモリの周辺に欠陥ビットと置き換え可能な予備メモリ行もしくは予備メモリ列を有する冗長回路を備えた半導体集積回路において、上記制御部に上記データ判定手段からの判定結果に基づいて最も適切な予備メモリ行または予備メモリ列を選択して欠陥ビットと置き換えるアルゴリズムを持たせる。そして、そのアルゴリズムに従って、欠陥ビットの置き換えのためのアドレス変換を行なう自己救済回路が設けられる。そのため、欠陥ビットの検出から欠陥ビットと予備メモリセルの置き換えまでをすべて半導体チップの内部で行なうことができるため、外部のテスタが不要になり、製造ラインの小規模化が可能になるという効果がある。
以上本発明者によってなされた発明を実施例に基づき具体的に説明したが、本発明は上記実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
例えば、実施例におけるテスト回路および比較判定回路の部分をメモリとは別個の半導体チップに独立した半導体集積回路として構成するようにしても良い。そして、そのようなテスト用ＩＣとの構成により複数のメモリＩＣを基板に搭載して製造されるメモリ・モジュールと呼ばれる装置などのテストの簡易化が図れる。
なお、近年フラッシュメモリ等では外部からコマンドを与えると内部制御でデータの書込みを行なうように構成されたメモリが提案されており一見本発明に類似するようにも見えるが、フラッシュメモリにおける書込み制御は、１回の書込み動作ではメモリセルを所定のしきい値レベル以上にすることができないことがあるので繰り返し書込み動作を行なうようにした機能であり、書込みを行なうメモリセルを選択するアドレス信号および書込みデータはいずれも外部から与えられるものである。従って、この点において、内部に演算回路を備えメモリセルを選択するためのアドレスや書き込むべきデータを演算する機能を有する本発明を適用したメモリとは明確に区別されるものである。
産業上の利用可能性
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるメモリもしくはメモリを内蔵した半導体集積回路におけるテスト回路を例にとって説明したが、この発明はそれに限定されない。たとえば、ＰＬＡ（プログラマブル・ロジック・アレイ）その他の規則性を有する回路であって組合せ数の非常に多いテストパターンを必要とする半導体集積回路に利用することができる。
【図１】
0003867862.tif 000010
【図２】
0003867862.tif 000011
【図３】
0003867862.tif 000012
【図４】
0003867862.tif 000013
【図５】
0003867862.tif 000014
【図６】
0003867862.tif 000015
【図７】
0003867862.tif 000016
【図８】
0003867862.tif 000017
【図９】
0003867862.tif 000018
【図１０】
0003867862.tif 000019
【図１１】
0003867862.tif 000020
【図１２】
0003867862.tif 000021