(57)【要約】  【課題】  より小さいオーバーヘッドでメモリの故障診断に必要な情報を取得すること。  【解決手段】  アドレスを出力するアドレス生成器３と、故障診断開始アドレスを保持する故障診断開始アドレスレジスタ５と、故障診断開始アドレスに基づいて算出される範囲にアドレスが属するかどうかを判別する故障診断イネーブル生成器６と、アドレスに応答してＲＡＭ２から出力される出力データが期待値に一致するかどうかを判別する結果比較器１０とを備えている。このとき、故障アドレスレジスタ５は、その範囲にアドレスが属し、かつ、出力データが期待値に一致しないときに、アドレス生成器の動作を停止させ、アドレスを記録する。このような故障診断回路１を用いて検査することにより、正常異常が未知のアドレスの範囲から正常異常が既知のアドレスの範囲を抽出することができる。このような検査は、複数回実行することにより、ＲＡＭ２の故障しているアドレスをすべて検索することができる。  【選択図】  図１
2005332492.tif 000002
【特許請求の範囲】
【請求項１】
アドレスを出力するアドレス生成器と、
故障診断開始アドレスを保持する故障診断開始アドレスレジスタと、
前記故障診断開始アドレスに基づいて算出される範囲に前記アドレスが属するかどうかを判別する故障診断イネーブル生成器と、
前記アドレスに応答してメモリから出力される出力データが予め前記アドレスに対応付けて前記メモリに記録させた期待値に一致するかどうかを判別する結果比較器とを具備し、
前記アドレス生成器は、前記範囲に前記アドレスが属し、かつ、前記出力データが前記期待値に一致しないときに、前記アドレスの更新を停止し、
前記故障診断開始アドレスレジスタは、前記アドレス生成器が前記更新を停止したときのアドレスを外部から読み出し可能に設定する経路を有する
故障診断回路。
【請求項２】
アドレスを出力するアドレス生成器と、
故障診断開始アドレスを保持する故障診断開始アドレスレジスタと、
アドレス保持レジスタと、
前記故障診断開始アドレスレジスタに基づいて算出される範囲に前記アドレスが属するかどうかを判別する故障診断イネーブル生成器と、
前記アドレスに応答してメモリから出力される出力データが予め前記アドレスに対応付けて前記メモリに記録させた期待値に一致するかどうかを判別する結果比較器とを具備し、
前記故障診断開始アドレスレジスタは、前記アドレス保持レジスタが保持するアドレスを外部から読み出し可能に設定する経路を有し、
前記アドレス保持レジスタは、前記範囲に前記アドレスが属し、かつ、前記出力データが前記期待値に一致しないときに、前記アドレスを保持する
故障診断回路。
【請求項３】
アドレスを出力するアドレス生成器と、
故障診断終了アドレスを保持する故障診断終了アドレスレジスタと、
故障アドレスを保持するアドレス保持レジスタと、
前記故障診断終了アドレスレジスタに基づいて算出される範囲に前記アドレスが属するかどうかを判別する故障診断イネーブル生成器と、
前記アドレスに応答してメモリから出力される出力データが予め前記アドレスに対応付けて前記メモリに記録させた期待値に一致するかどうかを判別する結果比較器とを具備し、
前記故障診断終了アドレスレジスタは、前記アドレス保持レジスタが保持するアドレスを外部から読み出し可能に設定する経路を有し、
前記アドレス保持レジスタは、前記範囲に前記アドレスが属し、かつ、前記出力データが前記期待値に一致しないときに、前記故障診断終了アドレスを前記アドレスに更新する
故障診断回路。
【請求項４】
請求項１〜請求項３のいずれかにおいて、
前記範囲に前記アドレスが属し、かつ、前記出力データが前記期待値に一致しないときに、前記出力データを外部から読み出し可能に記録する出力データ保持レジスタ
を更に具備する故障診断回路。
【請求項５】
請求項１〜請求項４のいずれかにおいて、
前記故障診断イネーブル生成器は、初回または２回目以降のいずれかを示す信号が外部から入力され、
前記範囲は、前記信号が前記初回を示すときに、前記メモリに用いられる全てのアドレスを示す
故障診断回路。
【請求項６】
請求項１〜請求項５のいずれかに記載の故障診断回路と、
前記メモリ
とを搭載する半導体チップ。
【請求項７】
アドレスを生成するアドレス生成器と、
前記アドレスに応答してメモリから出力される出力データが予め前記アドレスに対応付けて前記メモリに記録させた期待値に一致するかどうかを判別する結果比較器と、
故障診断開始アドレスを保持する故障診断開始アドレスレジスタ
とを備える故障診断回路を用いて前記メモリを検査する故障診断方法であり、
前記メモリに用いられるアドレスを順番に前記アドレス生成器に生成させるステップと、
前記アドレスのうちの最初のアドレスから前記故障診断開始アドレスに至るまでの間は、故障診断結果を無効とし、前記故障診断開始アドレスに至った後で最初に検出された故障アドレスを記録するステップと、
前記故障アドレスを前記故障診断開始アドレスレジスタへ記録させるステップ
とを具備する故障診断方法。
【請求項８】
アドレスを生成するアドレス生成器と、
前記アドレスに応答してメモリから出力される出力データが予め前記アドレスに対応付けて前記メモリに記録させた期待値に一致するかどうかを判別する結果比較器と、
前記出力データが前記期待値に一致しないときに、予め記録されたデータを破棄して前記アドレスを外部から読み出し可能に記録する故障アドレスレジスタ
とを備える故障診断回路を用いて前記メモリを検査する故障診断方法であり、
前記メモリに用いられる全てのアドレスを順番に前記アドレス生成器に生成させるステップと、
前記全てのアドレスのうちの最初のアドレスから以前のテストにおいて前記故障アドレスレジスタから読み出された故障アドレスの１つ前のアドレスまで順番に前記アドレス生成器に生成させるステップ
とを具備する故障診断方法。
【請求項９】
請求項７または請求項８のいずれかにおいて、
前記アドレス生成器は、クロック信号により制御される
故障診断方法。
【請求項１０】
メモリに書き込まれた期待値と前記メモリから読み出されたデータとを比較して故障を検出する結果比較器と、
前記結果比較器により前記故障が検出された前記メモリのアドレスを記録する故障診断開始アドレスレジスタと、
故障検出後、次にテストする際に前記故障診断開始アドレスレジスタに記録されたアドレスまでは故障を検出せず、当該アドレスを越えてから故障検出を行うように、前記結果比較器を制御する故障診断イネーブル生成器
とを有することを特徴とする故障診断回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、故障診断回路及び故障診断方法に関し、特に、半導体チップに搭載されるＲＡＭを検査するときに利用される故障診断回路及び故障診断方法に関する。
【背景技術】
【０００２】
ＲＡＭが搭載される半導体チップ内にテスタ機能を取り込み、そのＲＡＭをテストするＢＩＳＴ（Ｂｕｉｌｔ  Ｉｎ  Ｓｅｌｆ  Ｔｅｓｔ）が知られている。ＲＡＭは、故障を起こすアドレスのアドレス情報とデータ情報を解析することにより、たとえば、ある特定のデータビットに故障が多い、あるいは、あるアドレスビットに故障が集中しているというような傾向の情報から、その故障原因を特定することができる。このような集積回路のテストは、ＢＩＳＴを用いて行うことが望まれている。
【０００３】
図１０は、公知の故障診断回路の実施の形態を示している。その故障診断回路１００は、ＲＡＭ１０２とともに１つの半導体チップに搭載されている。ＲＡＭ１０２は、故障診断回路１００を用いて検査される検査対象であり、複数のアドレスにより互いに識別される複数のメモリセルを備えている。ＲＡＭ１０２は、書き込み状態でアドレスとデータとが入力されたときに、そのデータをそのアドレスに割り当てられているメモリセルに格納する。ＲＡＭ１０２は、読み出し状態でアドレスが入力されたときに、そのアドレスに割り当てられているメモリセルに格納されているデータを出力する。
【０００４】
故障診断回路１００は、アドレス生成器１０３と比較値生成器１０４と結果比較器１０５と比較結果レジスタ１０６とを備えている。
【０００５】
アドレス生成器１０３は、カウンタから形成されている。アドレス生成器１０３は、ＲＡＭ１０２のメモリセルに割り当てられている複数のアドレスを順番に１つずつ１クロックサイクル毎に生成する。すなわち、アドレス生成器１０３は、１クロックサイクル前に出力されたアドレスの次のアドレスを出力する。アドレス生成器１０３は、さらに、結果比較器１０５から出力される制御信号１０７によりアドレスの生成の停止が指示されたときに、アドレスの生成を停止する。
【０００６】
比較値生成器１０４は、ＲＡＭ１０２のアドレス生成器１０３から出力されたアドレスに予め記録されたデータを示す期待値を結果比較器１０５に出力する。
【０００７】
結果比較器１０５は、ＲＡＭ１０２から出力された出力データが比較値生成器１０４から出力された期待値に一致しているかどうかを判別する。すなわち、結果比較器１０５は、その出力データがその期待値に一致しないときに、アドレスの生成の停止を指示する制御信号１０７をアドレス生成器１０３に出力する。
【０００８】
比較結果レジスタ１０６は、結果比較器１０５による判別結果を保持する。その判別結果は、その出力データがその期待値に一致しない出力データを示している。比較結果レジスタ１０６は、半導体チップの外部に接続される経路１０８を備えている。比較結果レジスタ１０６は、経路１０８を介して、保持している判別結果を半導体チップの外部に出力する。
【０００９】
故障診断回路１００は、あるアドレスに対しＲＡＭ１０２から読み出された値を比較して、そのアドレスに不良が検出されないときにアドレスを進め、不良が検出されたときにアドレスのカウントを停止する。
【００１０】
この方法では、故障発見時に、テストを中断しているため、後続のテストは中断したアドレスから再開されるので、アドレスのカウントが間延びする部分が生じ、結果的に、非常に遅い周波数でテストされる部分が生じ、速度起因の故障の場合は、後続のテストでは検出できないという欠点がある。さらに、この手法では、外部の試験装置から、１回の故障情報を取り出す際に、長い時間を要する場合がある。テストしているＲＡＭがＤＲＡＭであった場合には、この故障情報取り出しの時間がリフレッシュサイクルを超える場合には、正常なアドレスの記憶データも消失してしまい、正常なアドレスも故障として検出してしまうことがある。
【００１１】
このようなテスト方式では、さらに、高速で連続でアドレスを変化させた場合に現れる故障を検出することはできない。また、故障を示すテストデータを比較結果出力経路から、外部の試験装置で、取り出して、その結果を記録するためには、通常、ある程度の時間を要するため、テストしている対象がＤＲＡＭの場合には、正常なアドレスも記憶データが消失してしまう可能性がある。
【００１２】
回路オーバーヘッドや面積オーバーヘッドがより小さく、なるべく多くの故障情報を検出する故障診断回路が望まれている。さらに、ＢＩＳＴを用いて高速で連続でアドレスを変化させた場合に現れる故障を検出することが望まれている。
【００１３】
特開平１１−１６３９２号公報には、効率のよい不良ビット置換による拡散歩留まりが向上するテスト回路が開示されている。特定用途向け半導体集積回路に大容量の記憶回路が搭載された場合、アドレス信号、データ信号をすべてＩＣの外部へ出力するとＩＣの端子数が増加してしまう。このため、顧客は意図に反してパッケージを端子数の多いものに変えなければならない場合が生じたり、また、組み立て歩留まりが低下するという問題がある。また、微細設計の面積が増大して、拡散歩留まりが低下することが予想され、冗長ビットを持った記憶回路が必要になる。
【００１４】
その半導体集積回路のテスト回路は、テスト時に用いるクロック信号によって、テスト時に使用するアドレスの生成を行うカウンタ回路と、テスト時に用いる入力データを生成する入力データ発生回路と、テスト信号を入力し通常動作時のアドレス信号とそのカウンタ回路の出力との切り替え、および通常動作時のデータ信号とその入力データ発生回路の出力とを切り換えるセレクタと、そのセレクタの出力信号を入力し、データの読み出しあるいは書き込みおよび読み出しを行う記憶回路と、テスト時にその記憶回路の出力信号とその入力データ発生回路の出力とを入力し比較を行う比較回路と、その比較回路のビット単位の比較結果を保持する比較結果レジスタとを有している。その比較回路の比較結果を観測することで良否判定を行い、その比較結果の比較結果が不一致の場合、そのカウンタ回路を停止し、そのクロック信号に同期させてそのビット単位の比較結果を出力した後、そのカウンタ回路の動作を再開する。
【００１５】
特開平１１−１６３９３号公報には、論理回路とメモリを有し自己診断回路を有する半導体装置において、冗長回路への置換えはもちろんフェイルビットマップ情報を容易に出力でき、試験を容易化するテスト回路が開示されている。そのテスト回路は、キャッシュメモリ等の記憶装置と、その記憶装置の不良箇所の有無を判定する自己診断回路と、を備える半導体集積回路であって、その自己診断回路が、自己診断動作において、その記憶装置の不良箇所の位置を検出する不良位置検出手段と、その不良位置検出手段から出力されたその不良箇所の位置データを圧縮する手段と、その圧縮した不良位置データを外部に出力する手段とを備えている。
【００１６】
特開２０００−２７６８９８号公報には、ランダムアクセスメモリ（ＲＡＭ）のメモリテストを行ったときに、解析が容易になるように、異常のメモリセルを示すアドレスを抽出するメモリテスト回路が開示されている。そのメモリテスト回路は、複数のメモリセルを持つランダムアクセスメモリを有する半導体集積回路に設けられ、該各メモリセルが正常か異常かをテストするメモリテスト回路であって、テストモードのときにそのメモリセルを指定する内部アドレスを生成してそのランダムアクセスメモリに与えるアドレス供給部と、そのテストモードのときにテスト用データをそのランダムアクセスメモリに与えると共に該テスト用データに対応する期待値データを出力するデータ供給部と、そのテストモードのときにそのランダムアクセスメモリに対して制御信号を与え、該ランダムアクセスメモリに、その内部アドレスで指定したメモリセルへのそのテスト用データの書込みを実施させ且つ該書込みの後に該メモリセルの記憶データの読出しを実施させる制御部と、その読出された記憶データとその期待値データとの比較により、そのテスト用データの書込みを行ったメモリセルが正常か異常かを判定し、該判定結果を出力信号に示す比較回路とを備えたメモリテスト回路において、その出力信号がその異常を示すとき、そのテスト用データの書込みを行ったメモリセルに対応するその内部アドレスを抽出するアドレス抽出手段が設けられている。
【００１７】
【特許文献１】特開平１１−１６３９２号公報
【特許文献２】特開平１１−１６３９３号公報
【特許文献３】特開２０００−２７６８９８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１８】
本発明の課題は、より小さいオーバーヘッドでメモリの故障診断に必要な情報を取得する故障診断回路及び故障診断方法を提供することにある。特に、高速動作させた場合のみに発生する不良に対する故障診断や、ＤＲＡＭのようにデータ保持時間に制限のある回路に対する故障診断をも含んだ形で、より小さいオーバーヘッドでメモリの故障診断に必要な情報を取得する故障診断回路及び故障診断方法を提供することにある。
本発明の他の課題は、より小さいオーバーヘッドでメモリの速度起因の故障を検出する故障診断回路及び故障診断方法を提供することにある。
【課題を解決するための手段】
【００１９】
以下に、発明を実施するための最良の形態・実施例で使用される符号を括弧付きで用いて、課題を解決するための手段を記載する。この符号は、特許請求の範囲の記載と発明を実施するための最良の形態・実施例の記載との対応を明らかにするために付加されたものであり、特許請求の範囲に記載されている発明の技術的範囲の解釈に用いてはならない。
【００２０】
本発明による故障診断回路（１）（２１）（４１）（６１）は、アドレスを出力するアドレス生成器（３）（２３）（４３）（６３）と、故障診断開始アドレスを記録する故障診断開始アドレスレジスタ（５）（２５）、または故障診断終了アドレスレジスタ（４５）（６５）と、故障診断開始アドレスまたは故障診断終了アドレスに基づいて算出される故障診断範囲にアドレスが属するかどうかを判別する故障診断イネーブル生成器（６）（２６）（４６）（６６）と、アドレスに応答してメモリ（２）（２２）（４２）（６２）から出力される出力データが予めアドレスに対応付けてメモリ（２）（２２）（４２）（６２）に記録させた期待値に一致するかどうかを判別する結果比較器（１０）（３１）（４９）（７１）とを備えている。このとき、アドレス保持レジスタ（２４）（４４）（６４）は、その故障診断範囲にアドレスが属し、かつ出力データが期待値に一致しないときの故障アドレスを保持する。図１の回路では、アドレス生成器（３）内のアドレスレジスタをアドレス保持レジスタとして使用しており、故障診断範囲内で、出力データが期待値に一致しないときに、アドレス更新を停止することで、故障アドレスを保持する。図１、図２、図５、図６では、このアドレス保持レジスタの値は、（５）（２５）（４５）（６５）に値をロードした後に、外部から読み出す構成としている。ただし、勿論、アドレス保持レジスタの値を直接読み出しても良い。
【００２１】
このような故障診断回路（１）（２１）（４１）（６１）を用いて検査することにより、正常異常が未知のアドレスの範囲から正常異常が既知のアドレスの範囲を抽出することができる。このような検査は、複数回実行することにより、メモリ（２）（２２）（４２）（６２）の故障しているアドレスをすべて検索することができる。すなわち、本発明による故障診断回路（１）（２１）（４１）（６１）によれば、１つのアドレスだけを記憶することができるアドレス保持レジスタ（２５）（４５）（６５）を用いて、または、１つのアドレスのみを保持するアドレス生成器（３）の中のアドレスレジスタを用いて、メモリ（２）（２２）（４２）（６２）の故障しているアドレスをすべて検索することができる。
【００２２】
本発明による故障診断回路（２１）（４１）（６１）は、アドレス保持レジスタ（２４）（４４）（６４）を更に備えている。が、アドレス保持レジスタ（２４）（４４）（６４）は、アドレスが生成されてから、その範囲にアドレスが属し、かつ、出力データが期待値に一致しないことが判別されるまでの期間にアドレスを保持するためにも使用される。
【００２３】
故障診断イネーブル生成器（６）（２６）は、アドレスが故障診断開始アドレスレジスタ（５）（２５）が示す故障診断開始アドレスより順番が遅いかどうかを判別する。アドレス生成器（３）（２３）は、アドレスが故障診断開始アドレスよりも順番が遅くなく、または、出力データが期待値に一致するときに、アドレスより順番が遅い次アドレスを出力し、アドレスが故障アドレスより順番が遅く、かつ、出力データが期待値に一致しないときに、次アドレスを出力しない。このような故障診断回路（１）（２１）は、故障アドレスより順番が遅くて異常であるアドレスのうちから順番が最も早い故障のアドレスを検索することができ、異常である複数アドレスを順番が早いものから順にすべて検出することができる。
【００２４】
本発明による故障診断回路（４１）（６１）では、故障診断イネーブル生成器（４６）（６６）は、アドレスが故障アドレスより順番が早いかどうかを判別する。アドレス保持レジスタ（４４）（６４）は、アドレスが故障アドレスより順番が早く、かつ、出力データが期待値に一致しないときに、予め記録される記録アドレスを破棄してアドレスを記録する。故障アドレスレジスタ（４５）（６５）は、アドレス生成器（４３）（６３）がメモリ（４２）（６２）に用いられる全てのアドレスを順番に生成した後に、アドレス保持レジスタ（４４）（６４）に記録されたアドレスを読み込み、外部から読み出し可能に記録する。このような故障診断回路（４１）（６１）は、故障アドレスより順番が早くて異常であるアドレスのうちから順番が最も遅い故障のアドレスを検索することができ、異常である複数アドレスを順番が遅いものから順にすべて検出することができる。
【００２５】
本発明による故障診断回路（１）（２１）（４１）（６１）は、範囲にアドレスが属し、かつ、出力データが期待値に一致しないときに、出力データを外部から読み出し可能に記録する出力データ保持レジスタ（７）（２８）（４７）（６８）を更に備えていることが好ましい。
【００２６】
故障診断イネーブル生成器（２６）は、初回または２回目以降のいずれかを示す信号が外部から入力される。このとき、範囲は、信号が初回を示すときに、メモリ（２２）に用いられる全てのアドレスを示すことが好ましい。
【００２７】
本発明による半導体チップは、本発明による故障診断回路（１）（２１）（４１）（６１）と、メモリ（２）（２２）（４２）（６２）とを搭載することが好ましい。
【００２８】
本発明による第１の故障診断方法は、アドレスを生成するアドレス生成器と、アドレスに応答してメモリから出力される出力データが予めアドレスに対応付けてメモリに記録させた期待値に一致するかどうかを判別する結果比較器と、故障診断開始アドレスを保持する故障診断開始アドレスレジスタとを備えている故障診断回路を用いてメモリを検査する故障診断方法であり、メモリに用いられるアドレスを順番にアドレス生成器に生成させるステップと、生成されるアドレスのうちの最初のアドレスから故障診断開始アドレスに至るまでの間は、故障診断結果を無効とし、故障診断開始アドレスに至った後で最初に検出された故障アドレスを記録するステップと、その故障アドレスを故障診断開始アドレスレジスタへ記録させるステップとを備えている。本発明による第１の故障診断方法は、図１または図２により示されている回路を用いて実行される方法であり、複数の故障アドレスを順番が早いものから順に全てを検出する故障診断方法である。
【００２９】
本発明による第２の故障診断方法は、アドレスを生成するアドレス生成器（８３）と、アドレスに応答してメモリ（８２）から出力される出力データが予めアドレスに対応付けてメモリ（８２）に記録させた期待値に一致するかどうかを判別する結果比較器（８６）と、出力データが期待値に一致しないときに、予め記録されたデータを破棄してそのアドレスを外部から読み出し可能に記録するアドレス保持レジスタ（８４）とを備えている故障診断回路（８１）を用いてメモリ（８２）を検査する故障診断方法である。本発明による故障診断方法は、メモリ（８２）に用いられる全てのアドレスを順番にアドレス生成器（８３）に生成させるステップと、全てのアドレスのうちの最初のアドレスから以前のテストにおいてアドレス保持レジスタ（８４）から読み出された故障アドレスの１つ前のアドレスまで順番にアドレス生成器（８３）に生成させるステップとを備えている。本発明による第２の故障診断方法は、図５、図６または図９により示されている回路を用いて実行される方法であり、複数の故障アドレスを順番が遅いものから順に全てを検出する故障診断方法である。図５または図６の回路を用いる場合は、以前のテストにおける故障を検出したアドレスは、故障診断終了アドレスレジスタに移され、回路内で故障診断の終了アドレスを判定する。図９の回路を用いる場合は、以前のテストにおける故障を検出したアドレスを、アドレス保持レジスタから外部に読み出し、テストの走行範囲を外部で決定する。図９の回路を用いる場合は、通常は、テストの走行範囲を外部で決定し、その範囲を越えた場合には、アドレス生成器のクロックを停止することでテストの走行範囲を限定する。図９の回路を用いる場合は、１つのアドレスだけを記憶することができるアドレス保持レジスタ（８４）を用いて、異常である複数アドレスを順番が遅いものから順にすべて検出することができる。このとき、アドレス生成器（８３）は、クロック信号により制御され、すなわち、テストの走行範囲は外部で決定し、その範囲を越えた場合には、アドレス生成器のクロックを停止することで、テストの走行範囲を限定する。
【００３０】
本発明による故障診断回路は、メモリに書き込まれた期待値とそのメモリから読み出されたデータとを比較して故障を検出する結果比較器と、その結果比較器によりその故障が検出されたそのメモリのアドレスを記録する故障診断開始アドレスレジスタと、故障検出後、次にテストする際にその故障診断開始アドレスレジスタに記録されたアドレスまでは故障を検出せず、その記録されたアドレスを越えてから故障検出を行うように、その結果比較器を制御する故障診断イネーブル生成器とを有することが好ましい。
【発明の効果】
【００３１】
本発明による故障診断回路及び故障診断方法は、より小さいオーバーヘッドでメモリの故障診断に必要な情報を取得することができる。
本発明による故障診断回路及び故障診断方法は、さらに、最初に検出した故障アドレスを越えた後での故障検出においても、途中の故障アドレスで一旦停止することなく後続テストを行うことができる。この結果、後続テストにおいてもテストが途中で間延びすることなく、高速のまま動作テストを行うことができる。
【発明を実施するための最良の形態】
【００３２】
図面を参照して、本発明による故障診断回路の実施の形態を記載する。その故障診断回路１は、図１に示されているように、ＲＡＭ２とともに１つの半導体チップに搭載されている。ＲＡＭ２は、故障診断回路１を用いて検査される検査対象であり、複数のアドレスにより互いに識別される複数のメモリセルを備えている。本実施の形態では、ＲＡＭ２は、アドレスが０から７までの８つのアドレスを保有している。このとき、このアドレスは、４ビットにより表現するものとする。ＲＡＭ２は、書き込み状態でアドレスとデータとが入力されたときに、そのデータをそのアドレスに割り当てられているメモリセルに格納する。ＲＡＭ２は、読み出し状態でアドレスが入力されたときに、そのアドレスに割り当てられているメモリセルに格納されているデータを出力する。
【００３３】
故障診断回路１は、アドレス生成器３と故障診断開始アドレスレジスタ５と故障診断イネーブル生成器６と出力データ保持レジスタ７と比較値生成器８と結果比較器１０とを備えている。
【００３４】
アドレス生成器３は、カウンタから形成されている。アドレス生成器３は、結果比較器１０から出力されるアドレス更新イネーブル信号１１がイネーブルを示しているときに、ＲＡＭ２のメモリセルに割り当てられている複数のアドレスを順番に１つずつ生成する。すなわち、アドレス生成器３は、アドレス更新イネーブル信号１１がイネーブルを示すクロックサイクルの次のクロックサイクルに、１クロックサイクル前に出力されたアドレスの次のアドレスを出力する。アドレス生成器３は、アドレス更新イネーブル信号１１がディスイネーブルを示すクロックサイクルの次のクロックサイクルに、１クロックサイクル前に出力されたアドレスと同じアドレスを出力する。
【００３５】
故障診断開始アドレスレジスタ５は、アドレス生成器３から出力されるアドレスを記録する。故障診断開始アドレスレジスタ５は、半導体チップの外部に接続される経路１２を備えている。故障診断開始アドレスレジスタ５は、経路１２を介して、記録されているアドレスを半導体チップの外部に出力する。経路１２は、さらに、故障診断開始アドレスレジスタ５のシフト出力を故障診断開始アドレスレジスタ５のシフト入力に戻している。このとき、故障診断開始アドレスレジスタ５は、保持されたアドレスがシフトして読み出されたときに、その読み出しが開始される前の状態に戻り、そのアドレスはそのまま保持される。このため、故障診断開始アドレスレジスタ５は、保持した値を集積回路の外部にシフト出力した後にその値をそのまま保持するときに、その値と同じ値を再度外部から与えて保持させ直させる必要がなく、好ましい。
【００３６】
故障診断イネーブル生成器６は、アドレス生成器３から出力されるアドレスが故障診断開始アドレスレジスタ５から出力されるアドレスより順番が早いかどうかを判別する。すなわち、故障診断イネーブル生成器６は、アドレス生成器３から出力されるアドレスが故障診断開始アドレスレジスタ５から出力されるアドレスより順番が早いときに、ディスイネーブルを示す故障診断イネーブル信号１５を結果比較器１０に出力する。故障診断イネーブル生成器６は、アドレス生成器３から出力されるアドレスが故障診断開始アドレスレジスタ５から出力されるアドレスより順番が早くないときに、イネーブルを示す故障診断イネーブル信号１５を結果比較器１０に出力する。
【００３７】
出力データ保持レジスタ７は、半導体チップの外部に接続される経路１４を備えている。出力データ保持レジスタ７は、経路１４を介して、記録されているアドレスを半導体チップの外部に出力することができる。出力データ保持レジスタ７は、ＲＡＭ２から出力される出力データを保持する。
【００３８】
比較値生成器８は、ＲＡＭ２のアドレス生成器３から出力されたアドレスに記録されたデータを示す期待値を結果比較器１０に出力する。
【００３９】
結果比較器１０は、故障診断イネーブル信号１５がイネーブルを示すときに、ＲＡＭ２から出力された出力データが比較値生成器８から出力された期待値に一致しているかどうかを判別する。結果比較器１０は、故障診断イネーブル信号１５がイネーブルを示し、かつ、その出力データがその期待値に一致しないときに、ディスイネーブルを示すアドレス更新イネーブル信号１１を出力する。結果比較器１０は、故障診断イネーブル信号１５がディスイネーブルを示すか、あるいは、その出力データがその期待値に一致するときに、イネーブルを示すアドレス更新イネーブル信号１１を出力する。図１の回路では、アドレス更新イネーブル信号１１の値は、イネーブルが０で、ディスイネーブルが１である。
【００４０】
故障診断回路１を用いてＲＡＭ２を検査する故障診断方法は、ＲＡＭ２にデータを書き込む動作と、初回のテストの動作と、２回目以降のテストの動作とから形成されている。そのＲＡＭ２にデータを書き込む動作では、ＲＡＭ２の偶数アドレスに値０が書き込まれ、奇数アドレスに値Ｆ（１０進法の１５を示す値）が書き込まれる。
【００４１】
その初回のテストの動作は、そのＲＡＭ２にデータを書き込む動作が実行された後に実行される。その初回のテストの動作では、まず、故障診断開始アドレスレジスタ５に保持されているデータを初回を示す値にセットする。このアドレスは故障診断イネーブル生成器６に入力されて、クロック信号が故障診断回路１とＲＡＭ２とに継続して供給される。ＲＡＭ２のすべてのアドレスが検査するのに十分なクロック信号が供給された後に、アドレス生成器３のアドレス値を故障診断開始アドレスレジスタ５に読み込み、故障アドレスが読み出され、出力データ保持レジスタ７に保持されている出力データが読み出される。このように読み出されたアドレスは、ＲＡＭ２の異常なアドレスのうちの順番が最も早いアドレスを示している。このように読み出された出力データは、その読み出されたアドレスから読み出されるデータを示している。
【００４２】
その２回目以降のテストの動作は、その初回のテストの動作が実行された後に実行される。その２回目以降のテストの動作では、まず、初回の故障アドレスが故障診断開始アドレスとして残されており、クロック信号が故障診断回路１とＲＡＭ２とに継続して供給される。ＲＡＭ２のすべてのアドレスが検査するのに十分なクロック信号が供給された後に、アドレス生成器３のアドレス値を故障診断開始アドレスレジスタ５に読み込み、故障アドレスが読み出され、出力データ保持レジスタ７に保持されている出力データが読み出される。このような２回目以降のテストの動作は、故障診断開始アドレスレジスタ５から新規のアドレスが読み出されなくなるまで、繰り返して実行される。このように読み出されたアドレスは、ＲＡＭ２の異常なアドレスのうちの前回に読み出されたアドレスの次に順番が早いアドレスを示している。このように読み出された出力データは、その読み出されたアドレスから読み出されるデータを示している。
【００４３】
１つ目の不良情報取り出し後、再度、テストを最初のアドレスから開始するが、初回のテスト以外では、故障診断開始アドレスレジスタ５が示す値を通過した後でのみ、故障診断イネーブル生成器６で故障診断イネーブル信号をイネーブルにする。これにより、例えば、１回目のテストで、２番アドレスで不良を検出した場合、この２番という値は、外部に読み出された後に、故障診断開始アドレスレジスタ５に残されるため、次回のテストでは、３番アドレス以降で故障診断イネーブル信号１５がイネーブルを示し、結果比較器１０で、結果比較を開始する。３番アドレス以降で、最初に不良が検出された時点で、再度、アドレス更新イネーブル信号はアドレス更新を停止する値に設定され、アドレス生成器３がアドレス生成を停止し、新たな不良アドレスが求められる。これにより、故障アドレス情報を保持するレジスタは１アドレス分のみを回路内に保有すれば、最初のテストで、最初の不良アドレスの情報を得ることができ、２回目のテストでは、２回目に不良となるアドレスの情報を得ることができる。以下、３回目のテスト以降も、同様のことを繰り返せば、３回目以降の不良アドレス情報を得ることが可能となる。
【００４４】
図２は、本発明による故障診断回路の実施の他の形態を示している。その故障診断回路２１は、ＲＡＭ２２とともに１つの半導体チップに搭載されている。ＲＡＭ２２は、故障診断回路２１を用いて検査される検査対象であり、複数のアドレスにより互いに識別される複数のメモリセルを備えている。本実施の形態では、ＲＡＭ２２は、アドレスが０から７までの８つのアドレスを保有し、このとき、そのアドレスは、３ビットにより表現されているものとする。ＲＡＭ２２は、書き込み状態でアドレスとデータとが入力されたときに、そのデータをそのアドレスに割り当てられているメモリセルに格納する。ＲＡＭ２２は、読み出し状態でアドレスが入力されたときに、そのアドレスに割り当てられているメモリセルに格納されているデータを出力する。ＲＡＭ２２は、供給されるクロックの立ち上がりのエッジに同期して動作し、そのアドレスが入力されるクロックサイクルの次のクロックサイクルにそのデータを出力する。
【００４５】
故障診断回路２１は、アドレス生成器２３とアドレス保持レジスタ２４と故障診断開始アドレスレジスタ２５と故障診断イネーブル生成器２６と出力データ保持レジスタ２７と出力データ保持レジスタ２８と比較値生成器２９と結果比較器３１とを備えている。
【００４６】
アドレス生成器２３は、カウンタから形成されている。アドレス生成器２３は、結果比較器３１から出力されるアドレス更新イネーブル信号３２がイネーブルを示しているときに、ＲＡＭ２２のメモリセルに割り当てられている複数のアドレスを順番に１つずつ１クロックサイクル毎に生成する。アドレス生成器２３は、さらに、アドレス更新イネーブル信号３２がイネーブルを示すクロックサイクルの次のクロックサイクルに、１クロックサイクル前に出力されたアドレスの次のアドレスを出力する。アドレス生成器２３は、アドレス更新イネーブル信号３２がディスイネーブルを示すクロックサイクルの次のクロックサイクルに、１クロックサイクル前に出力されたアドレスと同じアドレスを出力する。
【００４７】
アドレス保持レジスタ２４は、各アドレスビット毎に３段のシフトレジスタにより構成されている。アドレス保持レジスタ２４は、アドレス生成器３から出力されるアドレスを３クロックサイクルだけ保持する。アドレス保持レジスタ２４は、さらに、アドレス更新イネーブル信号３２がイネーブルを示すクロックサイクルの次のクロックサイクルに、２クロックサイクル前にアドレス生成器２３から出力されたアドレスを故障診断イネーブル生成器２６に出力する。アドレス保持レジスタ２４は、さらに、アドレス更新イネーブル信号３２がイネーブルを示すクロックサイクルの次のクロックサイクルに、３クロックサイクル前にアドレス生成器２３から出力されたアドレスを出力する。
【００４８】
故障診断開始アドレスレジスタ２５は、さらに、アドレス保持レジスタ２４から出力されるアドレスを記録する。故障診断開始アドレスレジスタ２５は、半導体チップの外部に接続される経路３３を備えている。故障診断開始アドレスレジスタ２５は、経路３３を介して、記録されているアドレスを半導体チップの外部に出力する。経路３３は、さらに、故障診断開始アドレスレジスタ２５のシフト出力を故障診断開始アドレスレジスタ２５のシフト入力に戻している。このとき、故障診断開始アドレスレジスタ２５は、保持されたアドレスがシフトして読み出されたときに、その読み出しが開始される前の状態に戻り、そのアドレスはそのまま保持される。このため、故障診断開始アドレスレジスタ２５は、保持した値を集積回路の外部にシフト出力した後にその値をそのまま保持するときに、その値と同じ値を再度外部から与えて保持させ直させる必要がなく、好ましい。
【００４９】
故障診断イネーブル生成器２６は、外部から供給される初回テスト識別信号３４を収集する。初回テスト識別信号３４は、実行されているテストの順番を示している。故障診断イネーブル生成器２６は、初回テスト識別信号３４が初回を示しているときに、イネーブルを示す故障診断イネーブル信号３６を結果比較器３１に出力する。故障診断イネーブル生成器２６は、さらに、アドレス保持レジスタ２４から出力されるアドレスが故障診断開始アドレスレジスタ２５から出力されるアドレスより順番が早いかどうかを判別する。故障診断イネーブル生成器２６は、初回テスト識別信号３４が２回目以降を示し、かつ、アドレス保持レジスタ２４から出力されるアドレスが故障診断開始アドレスレジスタ２５から出力されるアドレスより順番が早いクロックサイクルの次のクロックサイクルに、ディスイネーブルを示す故障診断イネーブル信号３６を結果比較器３１に出力する。故障診断イネーブル生成器２６は、初回テスト識別信号３４が２回目以降を示し、かつ、アドレス保持レジスタ２４から出力されるアドレスが故障診断開始アドレスレジスタ２５から出力されるアドレスより順番が早くないクロックサイクルの次のクロックサイクルに、イネーブルを示す故障診断イネーブル信号３６を結果比較器３１に出力する。
【００５０】
出力データ保持レジスタ２７は、ＲＡＭ２２から出力される出力データを１クロックサイクルだけ保持して出力データ保持レジスタ２８と結果比較器３１とに出力する。すなわち、出力データ保持レジスタ２７は、１クロックサイクル前にＲＡＭ２２から出力された出力データを出力データ保持レジスタ２８と結果比較器３１とに出力する。
【００５１】
出力データ保持レジスタ２８は、半導体チップの外部に接続される経路３５を備えている。出力データ保持レジスタ２８は、経路３５を介して、記録されているアドレスを半導体チップの外部に出力する。出力データ保持レジスタ２８は、アドレス更新イネーブル信号３２がイネーブルを示すクロックサイクルの次のクロックサイクルに、１クロックサイクル前に出力データ保持レジスタ２７から出力された出力データを保持する。出力データ保持レジスタ２８は、アドレス更新イネーブル信号３２がディスイネーブルを示すクロックサイクルの次のクロックサイクルに、１クロックサイクル前に保持していた出力データをそのまま保持する。
【００５２】
比較値生成器２９は、ＲＡＭ２２のアドレス生成器２３から３クロックサイクル前に出力されたアドレスに記録されたデータを示す期待値を結果比較器３１に出力する。
【００５３】
結果比較器３１は、故障診断イネーブル信号３６がディスイネーブルを示すときに、イネーブルを示すアドレス更新イネーブル信号３２を出力する。結果比較器３１は、さらに、出力データ保持レジスタ２７から出力された出力データが比較値生成器２９から出力された期待値に一致しているかどうかを判別する。結果比較器３１は、故障診断イネーブル信号３６がイネーブルを示し、かつ、その出力データがその期待値に一致しないクロックサイクルの次のクロックサイクルに、ディスイネーブルを示すアドレス更新イネーブル信号３２を出力する。結果比較器３１は、故障診断イネーブル信号３６がイネーブルを示し、かつ、その出力データがその期待値に一致していないクロックサイクルより後のクロックサイクルに、ディスイネーブルを示すアドレス更新イネーブル信号３２を継続して出力する。図２の回路では、アドレス更新イネーブル信号３２の値は、イネーブルが０で、ディスイネーブルが１である。
【００５４】
故障診断回路２１を用いてＲＡＭ２２を検査する故障診断方法は、ＲＡＭ２２にデータを書き込む動作と、初回のテストの動作と、２回目以降のテストの動作とから形成されている。そのＲＡＭ２２にデータを書き込む動作では、ＲＡＭ２２の偶数アドレスに値０が書き込まれ、奇数アドレスに値Ｆ（１０進法の１５を示す値）が書き込まれる。この書き込みは、供給されるクロック信号に同期して連続して実行される。
【００５５】
その初回のテストの動作は、そのＲＡＭ２２にデータを書き込む動作が実行された後に実行される。その初回のテストの動作では、まず、故障診断開始アドレスレジスタ２５に保持されているデータがリセットされた後に、初回を示す初回テスト識別信号３４が故障診断イネーブル生成器２６に継続して入力されて、クロック信号が故障診断回路２１とＲＡＭ２２とに継続して供給される。ＲＡＭ２２のすべてのアドレスが検査するのに十分なクロック信号が供給された後に、故障診断開始アドレスレジスタ２５に保持されているアドレスが読み出され、出力データ保持レジスタ２８に保持されている出力データが読み出される。このように読み出されたアドレスは、ＲＡＭ２２の異常なアドレスのうちの順番が最も早いアドレスを示している。このように読み出された出力データは、その読み出されたアドレスから読み出されるデータを示している。
【００５６】
その２回目以降のテストの動作は、その初回のテストの動作が実行された後に実行される。その２回目以降のテストの動作では、まず、２回目以降を示す初回テスト識別信号３４が故障診断イネーブル生成器２６に継続して入力されて、クロック信号が故障診断回路２１とＲＡＭ２２とに継続して供給される。ＲＡＭ２２のすべてのアドレスが検査するのに十分なクロック信号が供給された後に、故障診断開始アドレスレジスタ２５に保持されているアドレスが読み出され、出力データ保持レジスタ２８に保持されている出力データが読み出される。このような２回目以降のテストの動作は、故障診断開始アドレスレジスタ２５から新規のアドレスが読み出されなくなるまで、繰り返して実行される。このように読み出されたアドレスは、ＲＡＭ２２の異常なアドレスのうちの前回に読み出されたアドレスの次に順番が早いアドレスを示している。このように読み出された出力データは、その読み出されたアドレスから読み出されるデータを示している。
【００５７】
図３は、ＲＡＭ２２がアドレス２で間違った値８が出力され、アドレス４で間違った値３が出力されるときに、初回のテストの動作で各回路により出力される信号の変化を示している。このとき、故障診断イネーブル生成器２６は、初回を示す初回テスト識別信号３４が常に入力され、イネーブルを示す故障診断イネーブル信号３６を常に出力する。アドレス生成器２３は、値０を１クロックサイクル目に出力する。結果比較器３１は、イネーブルを示すアドレス更新イネーブル信号３２を１クロックサイクル目に出力する。
【００５８】
アドレス生成器２３は、アドレス更新イネーブル信号３２が１クロックサイクル目にイネーブルを示すことにより、１クロックサイクル目に出力された値０の次の値１を２クロックサイクル目に出力する。結果比較器３１は、イネーブルを示すアドレス更新イネーブル信号３２を２クロックサイクル目に出力する。ＲＡＭ２２は、アドレス生成器２３から１クロックサイクル目に出力される値０のアドレスに記録される値０を２クロックサイクル目に出力する。
【００５９】
アドレス生成器２３は、アドレス更新イネーブル信号３２が２クロックサイクル目にイネーブルを示すことにより、２クロックサイクル目に出力された値１の次の値２を３クロックサイクル目に出力する。出力データ保持レジスタ２７は、ＲＡＭ２２から２クロックサイクル目に出力される値０を３クロックサイクル目に出力する。比較値生成器２９は、アドレス生成器２３から１クロックサイクル目に出力される値０のアドレスでＲＡＭ２２に書き込まれた値０を３クロックサイクル目に出力する。結果比較器３１は、イネーブルを示すアドレス更新イネーブル信号３２を３クロックサイクル目に出力する。ＲＡＭ２２は、アドレス生成器２３から２クロックサイクル目に出力される値０のアドレスに記録される値０を３クロックサイクル目に出力する。
【００６０】
アドレス生成器２３は、アドレス更新イネーブル信号３２が３クロックサイクル目にイネーブルを示すことにより、３クロックサイクル目に出力された値２の次の値３を４クロックサイクル目に出力する。アドレス保持レジスタ２４は、アドレス生成器２３から１クロックサイクル目に出力された値０を４クロックサイクル目に出力する。出力データ保持レジスタ２７は、ＲＡＭ２２から３クロックサイクル目に出力される値Ｆを４クロックサイクル目に出力する。比較値生成器２９は、アドレス生成器２３から２クロックサイクル目に出力される値１のアドレスでＲＡＭ２２に書き込まれた値Ｆを４クロックサイクル目に出力する。結果比較器３１は、出力データ保持レジスタ２７から３クロックサイクル目に出力される値０が比較生成器２９から３クロックサイクル目に出力される値０に一致していることにより、イネーブルを示すアドレス更新イネーブル信号３２を４クロックサイクル目に出力する。出力データ保持レジスタ２８は、出力データ保持レジスタ２７から３クロックサイクル目に出力される値０を４クロックサイクル目に保持する。ＲＡＭ２２は、アドレス生成器２３から３クロックサイクル目に出力される値２であることにより、間違った値８を４クロックサイクル目に出力する。
【００６１】
アドレス生成器２３は、アドレス更新イネーブル信号３２が４クロックサイクル目にイネーブルを示すことにより、４クロックサイクル目に出力された値３の次の値４を５クロックサイクル目に出力する。アドレス保持レジスタ２４は、アドレス生成器２３から２クロックサイクル目に出力された値１を５クロックサイクル目に出力する。出力データ保持レジスタ２７は、ＲＡＭ２２から４クロックサイクル目に出力される値８を５クロックサイクル目に出力する。比較値生成器２９は、アドレス生成器２３から３クロックサイクル目に出力される値２のアドレスでＲＡＭ２２に書き込まれた値０を５クロックサイクル目に出力する。結果比較器３１は、出力データ保持レジスタ２７から４クロックサイクル目に出力される値Ｆが比較生成器２９から４クロックサイクル目に出力される値Ｆに一致していることにより、イネーブルを示すアドレス更新イネーブル信号３２を５クロックサイクル目に出力する。出力データ保持レジスタ２８は、出力データ保持レジスタ２７から４クロックサイクル目に出力される値Ｆを５クロックサイクル目に保持する。ＲＡＭ２２は、アドレス生成器２３から４クロックサイクル目に出力される値３のアドレスに記録された値Ｆを５クロックサイクル目に出力する。
【００６２】
アドレス生成器２３は、アドレス更新イネーブル信号３２が５クロックサイクル目にイネーブルを示すことにより、５クロックサイクル目に出力された値４の次の値５を６クロックサイクル目に出力する。アドレス保持レジスタ２４は、アドレス生成器２３から３クロックサイクル目に出力された値２を６クロックサイクル目に出力する。出力データ保持レジスタ２７は、ＲＡＭ２２から５クロックサイクル目に出力される値Ｆを６クロックサイクル目に出力する。比較値生成器２９は、アドレス生成器２３から４クロックサイクル目に出力される値３のアドレスでＲＡＭ２２に書き込まれた値Ｆを６クロックサイクル目に出力する。結果比較器３１は、出力データ保持レジスタ２７から５クロックサイクル目に出力される値８が比較生成器２９から５クロックサイクル目に出力される値０に一致していないことにより、ディスイネーブルを示すアドレス更新イネーブル信号３２を６クロックサイクル目以降に継続して出力する。出力データ保持レジスタ２８は、出力データ保持レジスタ２７から５クロックサイクル目に出力される値８を６クロックサイクル目に保持する。ＲＡＭ２２は、アドレス生成器２３から値４が５クロックサイクル目に出力されることにより、間違った値３を６クロックサイクル目に出力する。
【００６３】
アドレス生成器２３は、アドレス更新イネーブル信号３２が６クロックサイクル目にディスイネーブルを示すことにより、６クロックサイクル目に出力された値５を７クロックサイクル目以降に継続して出力する。アドレス保持レジスタ２４は、アドレス更新イネーブル信号３２が６クロックサイクル目にディスイネーブルを示すことにより、５クロックサイクル目に出力した値２を７クロックサイクル目以降に継続して出力する。故障診断開始アドレスレジスタ２５は、アドレス保持レジスタ２４が７クロックサイクル目以降に出力した値２を７クロックサイクル目以降に継続して出力する。出力データ保持レジスタ２８は、アドレス更新イネーブル信号３２が６クロックサイクル目にディスイネーブルを示すことにより、６クロックサイクル目に出力された値８を７クロックサイクル目以降に継続して保持する。
【００６４】
図４は、ＲＡＭ２２がアドレス２で間違った値８が出力され、アドレス４で間違った値３が出力される場合で、初回のテストでアドレス２が検出されたときに、２回目のテストの動作で各回路により出力される信号の変化を示している。
【００６５】
故障診断開始アドレスレジスタ２５は、初回のテストでの不良検出により保持された値２を１クロックサイクル目に保持している。アドレス生成器２３は、値０を１クロックサイクル目に出力する。故障診断イネーブル生成器２６は、２回目以降を示す初回テスト識別信号３４が入力されることにより、ディスイネーブルを示す故障診断イネーブル信号３６を１クロックサイクル目に出力する。結果比較器３１は、比較を行わずに、イネーブルを示すアドレス更新イネーブル信号３２を１クロックサイクル目に出力する。
【００６６】
故障診断開始アドレスレジスタ２５は、１クロックサイクル前と同様に値２を２クロックサイクル目に保持している。アドレス生成器２３は、アドレス更新イネーブル信号３２が１クロックサイクル目にイネーブルを示すことにより、１クロックサイクル目に出力された値０の次の値１を２クロックサイクル目に出力する。故障診断イネーブル生成器２６は、２回目以降を示す初回テスト識別信号３４が入力されることにより、ディスイネーブルを示す故障診断イネーブル信号３６を２クロックサイクル目に出力する。結果比較器３１は、故障診断イネーブル信号３６が１クロックサイクル目にディスイネーブルを示していることにより、イネーブルを示すアドレス更新イネーブル信号３２を２クロックサイクル目に出力する。ＲＡＭ２２は、アドレス生成器２３から１クロックサイクル目に出力される値０のアドレスに記録される値０を２クロックサイクル目に出力する。
【００６７】
故障診断開始アドレスレジスタ２５は、１クロックサイクル前と同様に値２を３クロックサイクル目に保持している。アドレス生成器２３は、アドレス更新イネーブル信号３２が２クロックサイクル目にイネーブルを示すことにより、２クロックサイクル目に出力された値１の次の値２を３クロックサイクル目に出力する。アドレス保持レジスタ２４は、アドレス生成器２３から１クロックサイクル目に出力された値０を故障診断イネーブル生成器２６に３クロックサイクル目に出力する。故障診断イネーブル生成器２６は、２回目以降を示す初回テスト識別信号３４が出力されることにより、ディスイネーブルを示す故障診断イネーブル信号３６を３クロックサイクル目に出力する。出力データ保持レジスタ２７は、ＲＡＭ２２から２クロックサイクル目に出力される値０を３クロックサイクル目に出力する。比較値生成器２９は、アドレス生成器２３から１クロックサイクル目に出力される値０のアドレスでＲＡＭ２２に書き込まれた値０を３クロックサイクル目に出力する。結果比較器３１は、故障診断イネーブル信号３６が２クロックサイクル目にディスイネーブルを示していることにより、イネーブルを示すアドレス更新イネーブル信号３２を３クロックサイクル目に出力する。ＲＡＭ２２は、アドレス生成器２３から２クロックサイクル目に出力される値０のアドレスに記録される値０を３クロックサイクル目に出力する。
【００６８】
故障診断開始アドレスレジスタ２５は、１クロックサイクル前と同様に値２を４クロックサイクル目に保持している。アドレス生成器２３は、アドレス更新イネーブル信号３２が３クロックサイクル目にイネーブルを示すことにより、３クロックサイクル目に出力された値２の次の値３を４クロックサイクル目に出力する。アドレス保持レジスタ２４は、アドレス生成器２３から１クロックサイクル目に出力された値０を４クロックサイクル目に保持し、アドレス生成器２３から２クロックサイクル目に出力された値１を故障診断イネーブル生成器２６に４クロックサイクル目に出力する。故障診断イネーブル生成器２６は、２回目以降を示す初回テスト識別信号３４が入力され、アドレス保持レジスタ２４から３クロックサイクル目に出力される値０が故障診断開始アドレスレジスタ２５から３クロックサイクル目に出力される値２より順番が早いことにより、ディスイネーブルを示す故障診断イネーブル信号３６を４クロックサイクル目に出力する。出力データ保持レジスタ２７は、ＲＡＭ２２から３クロックサイクル目に出力される値Ｆを４クロックサイクル目に出力する。比較値生成器２９は、アドレス生成器２３から２クロックサイクル目に出力される値１のアドレスでＲＡＭ２２に書き込まれた値Ｆを４クロックサイクル目に出力する。結果比較器３１は、故障診断イネーブル信号３６が３クロックサイクル目にディスイネーブルを示していることにより、イネーブルを示すアドレス更新イネーブル信号３２を４クロックサイクル目に出力する。出力データ保持レジスタ２８は、出力データ保持レジスタ２７から３クロックサイクル目に出力される値０を４クロックサイクル目に保持する。ＲＡＭ２２は、アドレス生成器２３から３クロックサイクル目に出力される値２であることにより、間違った値８を４クロックサイクル目に出力する。
【００６９】
故障診断開始アドレスレジスタ２５は、１クロックサイクル前と同様に値２を５クロックサイクル目に保持している。アドレス生成器２３は、アドレス更新イネーブル信号３２が４クロックサイクル目にイネーブルを示すことにより、４クロックサイクル目に出力された値３の次の値４を５クロックサイクル目に出力する。アドレス保持レジスタ２４は、アドレス生成器２３から２クロックサイクル目に出力された値１を５クロックサイクル目に保持し、アドレス生成器２３から３クロックサイクル目に出力された値２を故障診断イネーブル生成器２６に５クロックサイクル目に出力する。故障診断イネーブル生成器２６は、２回目以降を示す初回テスト識別信号３４が入力され、アドレス保持レジスタ２４から４クロックサイクル目に出力される値１が故障診断開始アドレスレジスタ２５から４クロックサイクル目に出力される値２より順番が早いことにより、ディスイネーブルを示す故障診断イネーブル信号３６を５クロックサイクル目に出力する。出力データ保持レジスタ２７は、ＲＡＭ２２から４クロックサイクル目に出力される値８を５クロックサイクル目に出力する。比較値生成器２９は、アドレス生成器２３から３クロックサイクル目に出力される値２のアドレスでＲＡＭ２２に書き込まれた値０を５クロックサイクル目に出力する。結果比較器３１は、故障診断イネーブル信号３６が４クロックサイクル目にディスイネーブルを示していることにより、エラーを検出してはいるが、イネーブルを示すアドレス更新イネーブル信号３２を５クロックサイクル目に出力する。出力データ保持レジスタ２８は、出力データ保持レジスタ２７から４クロックサイクル目に出力される値Ｆを５クロックサイクル目に保持する。ＲＡＭ２２は、アドレス生成器２３から４クロックサイクル目に出力される値３のアドレスに記録された値Ｆを５クロックサイクル目に出力する。
【００７０】
故障診断開始アドレスレジスタ２５は、１クロックサイクル前と同様に値２を６クロックサイクル目に保持している。アドレス生成器２３は、アドレス更新イネーブル信号３２が５クロックサイクル目にイネーブルを示すことにより、５クロックサイクル目に出力された値４の次の値５を６クロックサイクル目に出力する。アドレス保持レジスタ２４は、アドレス生成器２３から３クロックサイクル目に出力された値２を６クロックサイクル目に保持し、アドレス生成器２３から４クロックサイクル目に出力された値３を故障診断イネーブル生成器２６に６クロックサイクル目に出力する。故障診断イネーブル生成器２６は、２回目以降を示す初回テスト識別信号３４が入力され、アドレス保持レジスタ２４から５クロックサイクル目に出力される値２が故障診断開始アドレスレジスタ２５から５クロックサイクル目に出力される値２より順番が早くないことにより、イネーブルを示す故障診断イネーブル信号３６を６クロックサイクル目に出力する。出力データ保持レジスタ２７は、ＲＡＭ２２から５クロックサイクル目に出力される値Ｆを６クロックサイクル目に出力する。比較値生成器２９は、アドレス生成器２３から４クロックサイクル目に出力される値３のアドレスでＲＡＭ２２に書き込まれた値Ｆを６クロックサイクル目に出力する。結果比較器３１は、故障診断イネーブル信号３６が５クロックサイクル目にディスイネーブルを示していることにより、イネーブルを示すアドレス更新イネーブル信号３２を６クロックサイクル目以降に継続して出力する。出力データ保持レジスタ２８は、出力データ保持レジスタ２７から５クロックサイクル目に出力される値８を６クロックサイクル目に保持する。ＲＡＭ２２は、アドレス生成器２３から５クロックサイクル目に出力される値４のアドレスに記録された値０を６クロックサイクル目に出力する。
【００７１】
故障診断開始アドレスレジスタ２５は、１クロックサイクル前と同様に値２を７クロックサイクル目に保持している。アドレス生成器２３は、アドレス更新イネーブル信号３２が６クロックサイクル目にイネーブルを示すことにより、６クロックサイクル目に出力された値５の次の値６を７クロックサイクル目に出力する。アドレス保持レジスタ２４は、アドレス生成器２３から４クロックサイクル目に出力された値３を７クロックサイクル目に保持し、アドレス生成器２３から５クロックサイクル目に出力された値４を故障診断イネーブル生成器２６に７クロックサイクル目に出力する。故障診断イネーブル生成器２６は、２回目以降を示す初回テスト識別信号３４が入力され、アドレス保持レジスタ２４から６クロックサイクル目に出力される値３が故障診断開始アドレスレジスタ２５から６クロックサイクル目に出力される値２より順番が早くないことにより、イネーブルを示す故障診断イネーブル信号３６を７クロックサイクル目に出力する。出力データ保持レジスタ２７は、ＲＡＭ２２から６クロックサイクル目に出力される値３を７クロックサイクル目に出力する。比較値生成器２９は、アドレス生成器２３から５クロックサイクル目に出力される値４のアドレスでＲＡＭ２２に書き込まれた値０を７クロックサイクル目に出力する。結果比較器３１は、出力データ保持レジスタ２７から６クロックサイクル目に出力される値Ｆが比較生成器２９から６クロックサイクル目に出力される値Ｆに一致していることにより、イネーブルを示すアドレス更新イネーブル信号３２を７クロックサイクル目に出力する。出力データ保持レジスタ２８は、出力データ保持レジスタ２７から６クロックサイクル目に出力された値Ｆを７クロックサイクル目に保持する。ＲＡＭ２２は、アドレス生成器２３から６クロックサイクル目に出力される値５のアドレスに記録された値Ｆを７クロックサイクル目に出力する。
【００７２】
故障診断開始アドレスレジスタ２５は、１クロックサイクル前と同様に値２を８クロックサイクル目に保持している。アドレス生成器２３は、アドレス更新イネーブル信号３２が７クロックサイクル目にイネーブルを示すことにより、７クロックサイクル目に出力された値６の次の値７を８クロックサイクル目に出力する。アドレス保持レジスタ２４は、アドレス生成器２３から５クロックサイクル目に出力された値４を８クロックサイクル目に保持し、アドレス生成器２３から６クロックサイクル目に出力された値５を故障診断イネーブル生成器２６に８クロックサイクル目に出力する。故障診断イネーブル生成器２６は、２回目以降を示す初回テスト識別信号３４が入力され、アドレス保持レジスタ２４から７クロックサイクル目に出力される値４が故障診断開始アドレスレジスタ２５から７クロックサイクル目に出力される値２より順番が早くないことにより、イネーブルを示す故障診断イネーブル信号３６を８クロックサイクル目に出力する。出力データ保持レジスタ２７は、ＲＡＭ２２から７クロックサイクル目に出力される値Ｆを８クロックサイクル目に出力する。比較値生成器２９は、アドレス生成器２３から６クロックサイクル目に出力される値５のアドレスでＲＡＭ２２に書き込まれた値Ｆを８クロックサイクル目に出力する。結果比較器３１は、出力データ保持レジスタ２７から７クロックサイクル目に出力される値３が比較生成器２９から７クロックサイクル目に出力される値０に一致していないことにより、ディスイネーブルを示すアドレス更新イネーブル信号３２を８クロックサイクル目以降に継続して出力する。出力データ保持レジスタ２８は、出力データ保持レジスタ２７から７クロックサイクル目に出力された値３を７クロックサイクル目に保持する。
【００７３】
アドレス生成器２３は、アドレス更新イネーブル信号３２が８クロックサイクル目以降にディスイネーブルを継続して示すことにより、７クロックサイクル目に出力された値７を９クロックサイクル目以降に継続して出力する。アドレス保持レジスタ２４は、アドレス更新イネーブル信号３２が８クロックサイクル目にディスイネーブルを示すことにより、８クロックサイクル目に保持された値４を故障診断開始アドレスレジスタ２５に９クロックサイクル目に出力する。故障診断開始アドレスレジスタ２５は、アドレス保持レジスタ２４から９クロックサイクル目に出力された値４を９クロックサイクル目に保持する。故障診断イネーブル生成器２６は、２回目以降を示す初回テスト識別信号３４が入力され、アドレス保持レジスタ２４から８クロックサイクル目以降に出力される値７が故障診断開始アドレスレジスタ２５から８クロックサイクル目に出力される値２より順番が早くないことにより、イネーブルを示す故障診断イネーブル信号３６を９クロックサイクル目に出力する。出力データ保持レジスタ２８は、アドレス更新イネーブル信号３２が８クロックサイクル目以降にディスイネーブルを継続して示すことにより、出力データ保持レジスタ２７から７クロックサイクル目に出力された値３を９クロックサイクル目以降に継続して保持する。
【００７４】
故障診断開始アドレスレジスタ２５は、１クロックサイクル前と同様に値４を１０クロックサイクル目に保持している。
【００７５】
このように、不良アドレスと不良データを保持するレジスタが１アドレス分しかなくとも、テストを繰り返して行なうことにより、全不良データの採取が可能となる。さらに、このような故障診断方法によれば、ＲＡＭのアクセス時間がテストの周波数と同程度の場合であっても、遅延のテストを含めたＲＡＭのテストを行うことができる。
【００７６】
図５は、本発明による故障診断回路の実施のさらに他の形態を示している。その故障診断回路４１は、ＲＡＭ４２とともに１つの半導体チップに搭載されている。ＲＡＭ４２は、故障診断回路４１を用いて検査される検査対象であり、複数のアドレスにより互いに識別される複数のメモリセルを備えている。本実施の形態では、ＲＡＭ４２は、アドレスが０から７までの８つのアドレスを保有し、このアドレスは４ビットにより表現されるものとする。ＲＡＭ４２は、書き込み状態でアドレスとデータとが入力されたときに、そのデータをそのアドレスに割り当てられているメモリセルに格納する。ＲＡＭ４２は、読み出し状態でアドレスが入力されたときに、そのアドレスに割り当てられているメモリセルに格納されているデータを出力する。ＲＡＭ４２は、供給されるクロックの立ち上がりのエッジに同期して動作し、そのアドレスが入力されるクロックサイクルの次のクロックサイクルにそのデータを出力する。
【００７７】
故障診断回路４１は、アドレス生成器４３とアドレス保持レジスタ４４と故障診断終了アドレスレジスタ４５と故障診断イネーブル生成器４６と出力データ保持レジスタ４７と比較値生成器４８と結果比較器４９とを備えている。
【００７８】
アドレス生成器４３は、カウンタから形成されている。アドレス生成器４３は、ＲＡＭ４２のメモリセルに割り当てられている複数のアドレスを順番に１つずつ１クロックサイクル毎に生成する。すなわち、アドレス生成器４３は、１クロックサイクル前に出力されたアドレスの次のアドレスを出力する。
【００７９】
アドレス保持レジスタ４４は、アドレス更新イネーブル信号５１がイネーブルを示すときに、アドレス生成器４３から出力されたアドレスを保持する。アドレス保持レジスタ４４は、アドレス更新イネーブル信号５１がディスイネーブルを示すときに、１クロックサイクル前に保持されたアドレスをそのまま保持する。
【００８０】
故障診断終了アドレスレジスタ４５は、アドレス生成器４３によりすべてのアドレスが一通り生成された後に、アドレス保持レジスタ４４に保持されるアドレスを記録する。故障診断終了アドレスレジスタ４５は、半導体チップの外部に接続される経路５２を備えている。故障診断終了アドレスレジスタ４５は、経路５２を介して、保持しているアドレスを半導体チップの外部に出力する。経路５２は、さらに、故障診断終了アドレスレジスタ４５のシフト出力を故障診断終了アドレスレジスタ４５のシフト入力に戻している。このとき、故障診断終了アドレスレジスタ４５は、保持されたアドレスがシフトして読み出されたときに、その読み出しが開始される前の状態に戻り、そのアドレスはそのまま保持される。このため、故障診断終了アドレスレジスタ４５は、保持した値を集積回路の外部にシフト出力した後にその値をそのまま保持するときに、その値と同じ値を再度外部から与えて保持させ直させる必要がなく、好ましい。
【００８１】
故障診断イネーブル生成器４６は、アドレス生成器４３から出力されるアドレスが故障診断終了アドレスレジスタ４５に保持されるアドレスより順番が早いかどうかを判別する。故障診断イネーブル生成器４６は、故障診断終了アドレスレジスタ４５に保持されるアドレスがアドレス生成器４３から出力されるアドレスより順番が遅いときに、イネーブルを示す故障診断イネーブル信号５４を結果比較器４９に出力する。故障診断イネーブル生成器４６は、故障診断終了アドレスレジスタ４５に保持されるアドレスがアドレス生成器４３から出力されるアドレスより順番が遅くないときに、ディスイネーブルを示す故障診断イネーブル信号５４を結果比較器４９に出力する。
【００８２】
出力データ保持レジスタ４７は、アドレス更新イネーブル信号５１がイネーブルを示すときに、ＲＡＭ４２から出力された出力データを保持する。出力データ保持レジスタ４７は、アドレス更新イネーブル信号５１がディスイネーブルを示すときに、１クロックサイクル前に保持していた出力データをそのまま保持する。出力データ保持レジスタ４７は、半導体チップの外部に接続される経路５３を備えている。出力データ保持レジスタ４７は、経路５３を介して、保持しているアドレスを半導体チップの外部に出力する。
【００８３】
比較値生成器４８は、ＲＡＭ４２のアドレス生成器４３から出力されたアドレスに記録されたデータを示す期待値を結果比較器４９に出力する。
【００８４】
結果比較器４９は、故障診断イネーブル信号５４がディスイネーブルを示すときに、ディスイネーブルを示すアドレス更新イネーブル信号５１を出力する。結果比較器４９は、さらに、ＲＡＭ４２から出力された出力データが比較値生成器４８から出力された期待値に一致しているかどうかを判別する。すなわち、結果比較器４９は、故障診断イネーブル信号５４がディスイネーブルを示すか、または、その出力データがその期待値に一致するときに、ディスイネーブルを示すアドレス更新イネーブル信号５１を出力する。結果比較器４９は、故障診断イネーブル信号５４がイネーブルを示し、かつ、その出力データがその期待値に一致していないときに、イネーブルを示すアドレス更新イネーブル信号５１を出力する。図５の回路では、故障診断イネーブル信号５４がイネーブルで、期待値不一致のときに、アドレス保持レジスタの故障アドレスを更新する方式のため、故障診断イネーブル信号５４がイネーブルで、期待値不一致の時にイネーブルとなる。図５の回路では、アドレス更新イネーブル信号５１の値は、イネーブルが１で、ディスイネーブルが０である。
【００８５】
故障診断回路４１を用いてＲＡＭ４２を検査する故障診断方法は、ＲＡＭ４２にデータを書き込む動作と、初回のテストの動作と、２回目以降のテストの動作とから形成されている。そのＲＡＭ４２にデータを書き込む動作では、ＲＡＭ４２の偶数アドレスに値０が書き込まれ、奇数アドレスに値Ｆ（１０進法の１５を示す値）が書き込まれる。
【００８６】
その初回のテストの動作は、そのＲＡＭ４２にデータを書き込む動作が実行された後に実行される。その初回のテストの動作では、まず、故障診断終了アドレスレジスタ４５に値８を保持させた後に、クロック信号が故障診断回路４１とＲＡＭ４２とに継続して供給される。ＲＡＭ４２のすべてのアドレスが検査するのに十分なクロック信号が供給された後に、故障診断終了アドレスレジスタ４５に保持されているアドレスが読み出され、出力データ保持レジスタ４７に保持されている出力データが読み出される。このように読み出されたアドレスは、ＲＡＭ４２の異常なアドレスのうちの順番が最も遅いアドレスを示している。このように読み出された出力データは、その読み出されたアドレスから読み出されるデータを示している。
【００８７】
その２回目以降のテストの動作は、その初回のテストの動作が実行された後に実行される。その２回目以降のテストの動作では、まず、クロック信号が故障診断回路４１とＲＡＭ４２とに継続して供給される。ＲＡＭ４２のすべてのアドレスが検査するのに十分なクロック信号が供給された後に、故障診断終了アドレスレジスタ４５に保持されているアドレスが読み出され、出力データ保持レジスタ４７に保持されている出力データが読み出される。このように読み出されたアドレスは、ＲＡＭ４２の異常なアドレスのうちの前回に読み出されたアドレスの次に順番が遅いアドレスを示している。このように読み出された出力データは、その読み出されたアドレスから読み出されるデータを示している。このような２回目以降のテストの動作は、故障診断終了アドレスレジスタ４５から新規のアドレスが読み出されなくなるまで、繰り返して実行される。
【００８８】
このような故障診断方法によれば、不良アドレスと不良データを保持するレジスタが１アドレス分しか集積回路内部に存在しなくとも、テストを繰り返して行なうことにより、全不良データの採取が可能となる。
【００８９】
図６は、本発明による故障診断回路の実施のさらに他の形態を示している。その故障診断回路６１は、ＲＡＭ６２とともに１つの半導体チップに搭載されている。ＲＡＭ６２は、故障診断回路６１を用いて検査される検査対象であり、複数のアドレスにより互いに識別される複数のメモリセルを備えている。本実施の形態では、ＲＡＭ６２は、アドレスが０から７までの８つのアドレスを保有し、このとき、そのアドレスは、４ビットにより表現されているものとする。ＲＡＭ６２は、書き込み状態でアドレスとデータとが入力されたときに、そのデータをそのアドレスに割り当てられているメモリセルに格納する。ＲＡＭ６２は、読み出し状態でアドレスが入力されたときに、そのアドレスに割り当てられているメモリセルに格納されているデータを出力する。ＲＡＭ６２は、供給されるクロックの立ち上がりのエッジに同期して動作し、そのアドレスが入力されるクロックサイクルの次のクロックサイクルにそのデータを出力する。
【００９０】
故障診断回路６１は、アドレス生成器６３とアドレス保持レジスタ６４と故障診断終了アドレスレジスタ６５と故障診断イネーブル生成器６６と出力データ保持レジスタ６７と出力データ保持レジスタ６８と比較値生成器６９と結果比較器７１とを備えている。
【００９１】
アドレス生成器６３は、カウンタから形成されている。アドレス生成器６３は、ＲＡＭ６２のメモリセルに割り当てられている複数のアドレスを順番に１つずつ１クロックサイクル毎に生成する。すなわち、アドレス生成器６３は、１クロックサイクル前に出力されたアドレスの次のアドレスを出力する。
【００９２】
アドレス保持レジスタ６４は、各アドレスビット毎に３段のシフトレジスタにより構成されている。アドレス保持レジスタ６４は、アドレス生成器６３から出力されるアドレスを３クロックサイクルだけ保持できる構造となっている。アドレス保持レジスタ６４は、常に２クロックサイクル分の値を保持し、アドレス更新イネーブル信号７２がイネーブルを示すクロックサイクルの次のクロックサイクルにのみ、３クロックサイクル前にアドレス生成器６３から出力されたアドレスを、更新して保持する。
【００９３】
故障診断終了アドレスレジスタ６５は、故障診断終了時に、アドレス保持レジスタ６４から出力されるアドレスを読み込み、記録する。故障診断終了アドレスレジスタ６５は、半導体チップの外部に接続される経路７３を備えている。故障診断終了アドレスレジスタ６５は、経路７３を介して、保持しているアドレスを半導体チップの外部に出力する。経路７３は、さらに、故障診断終了アドレスレジスタ６５のシフト出力を故障診断終了アドレスレジスタ６５のシフト入力に戻している。このとき、故障診断終了アドレスレジスタ６５は、保持されたアドレスがシフトして読み出されたときに、その読み出しが開始される前の状態に戻り、そのアドレスはそのまま保持される。このため、故障診断終了アドレスレジスタ６５は、保持した値を集積回路の外部にシフト出力した後にその値をそのまま保持するときに、その値と同じ値を再度外部から与えて保持させ直させる必要がなく、好ましい。
【００９４】
故障診断イネーブル生成器６６は、アドレス生成器６３から出力されるアドレスが故障診断終了アドレスレジスタ６５に保持されるアドレスより順番が早いかどうかを判別する。故障診断イネーブル生成器６６は、故障診断終了アドレスレジスタ６５に保持されるアドレスがアドレス生成器６３から出力されるアドレスより順番が遅いクロックサイクルの次のクロックサイクルに、イネーブルを示す故障診断イネーブル信号７４を結果比較器７１に出力する。故障診断イネーブル生成器６６は、故障診断終了アドレスレジスタ６５に保持されるアドレスがアドレス生成器６３から出力されるアドレスより順番が遅くないクロックサイクルの次のクロックサイクルに、イネーブルを示す故障診断イネーブル信号７４を結果比較器７１に出力する。
【００９５】
出力データ保持レジスタ６７は、ＲＡＭ６２から出力される出力データを１クロックサイクルだけ保持して出力データ保持レジスタ６８と結果比較器７１とに出力する。すなわち、出力データ保持レジスタ６７は、１クロックサイクル前にＲＡＭ６２から出力された出力データを出力データ保持レジスタ６８と結果比較器７１とに出力する。
【００９６】
出力データ保持レジスタ６８は、半導体チップの外部に接続される経路７５を備えている。出力データ保持レジスタ６８は、経路７５を介して、記録されているアドレスを半導体チップの外部に出力する。出力データ保持レジスタ６８は、アドレス更新イネーブル信号７２がイネーブルを示すクロックサイクルの次のクロックサイクルに、１クロックサイクル前に出力データ保持レジスタ６７から出力された出力データを保持する。出力データ保持レジスタ６８は、アドレス更新イネーブル信号７２がディスイネーブルを示すクロックサイクルの次のクロックサイクルに、１クロックサイクル前に保持していた出力データをそのまま保持する。
【００９７】
比較値生成器６９は、ＲＡＭ６２のアドレス生成器６３から３クロックサイクル前に出力されたアドレスに記録されたデータを示す期待値を結果比較器７１に出力する。
【００９８】
結果比較器７１は、故障診断イネーブル信号７４がディスイネーブルを示すときに、ディスイネーブルを示すアドレス更新イネーブル信号７２を出力する。結果比較器７１は、さらに、出力データ保持レジスタ６７から出力された出力データが比較値生成器６９から出力された期待値に一致しているかどうかを判別する。結果比較器７１は、故障診断イネーブル信号７４がイネーブルを示し、かつ、その出力データがその期待値に一致するクロックサイクルの次のクロックサイクルに、ディスイネーブルを示すアドレス更新イネーブル信号７２を出力する。結果比較器７１は、故障診断イネーブル信号７４がイネーブルを示し、かつ、その出力データがその期待値に一致していないクロックサイクルの次のクロックサイクルに、イネーブルを示すアドレス更新イネーブル信号７２を出力する。図６の回路では、アドレス更新イネーブル信号７１の値は、イネーブルが１で、ディスイネーブルが０である。
【００９９】
故障診断回路６１を用いてＲＡＭ６２を検査する故障診断方法は、ＲＡＭ６２にデータを書き込む動作と、初回のテストの動作と、２回目以降のテストの動作とから形成されている。そのＲＡＭ６２にデータを書き込む動作では、ＲＡＭ６２の偶数アドレスに値０が書き込まれ、奇数アドレスに値Ｆ（１０進法の１５を示す値）が書き込まれる。この書き込みは、供給されるクロック信号に同期して連続して実行される。
【０１００】
その初回のテストの動作は、そのＲＡＭ６２にデータを書き込む動作が実行された後に実行される。その初回のテストの動作では、まず、故障診断終了アドレスレジスタ６５に最高アドレス値よりも大きい値８を保持させた後に、クロック信号が故障診断回路６１とＲＡＭ６２とに継続して供給される。ＲＡＭ６２のすべてのアドレスが検査するのに十分なクロック信号が供給された後に、故障診断終了アドレスレジスタ６５に保持されているアドレスが読み出され、出力データ保持レジスタ６８に保持されている出力データが読み出される。このように読み出されたアドレスは、ＲＡＭ６２の異常なアドレスのうちの順番が最も遅いアドレスを示している。このように読み出された出力データは、その読み出されたアドレスから読み出されるデータを示している。
【０１０１】
その２回目以降のテストの動作は、その初回のテストの動作が実行された後に実行される。その２回目以降のテストの動作では、故障診断終了アドレスレジスタ６５に、前回の最終エラーアドレスが設定されており、クロック信号が故障診断回路６１とＲＡＭ６２とに継続して供給される。ＲＡＭ６２のすべてのアドレスが検査するのに十分なクロック信号が供給された後に、故障診断終了アドレスレジスタ６５に保持されているアドレスが読み出され、出力データ保持レジスタ６８に保持されている出力データが読み出される。このような２回目以降のテストの動作は、故障診断終了アドレスレジスタ６５から新規のアドレスが読み出されなくなるまで、繰り返して実行される。このように読み出されたアドレスは、ＲＡＭ６２の異常なアドレスのうちの前回に読み出されたアドレスの次に順番が遅いアドレスを示している。このように読み出された出力データは、その読み出されたアドレスから読み出されるデータを示している。
【０１０２】
図７は、ＲＡＭ６２がアドレス２で間違った値８が出力され、アドレス４で間違った値３が出力されるときに、初回のテストの動作で各回路により出力される信号の変化を示している。
【０１０３】
故障診断終了アドレスレジスタ６５は、値８を１クロックサイクル目に保持している。このように、初回に故障診断終了アドレスレジスタ６５に値８を設定しておくことによれば、テストが最終アドレスで終了しないで、すべてのアドレスを検査することができる。アドレス生成器６３は、値０を１クロックサイクル目に出力する。故障診断イネーブル生成器６６は、故障診断終了アドレスレジスタ６５から出力される値８がアドレス保持レジスタ６４から出力される値より順番が常に早いことにより、イネーブルを示す故障診断イネーブル信号７４を１クロックサイクル目以降に継続して出力している。結果比較器７１は、ディスイネーブルを示すアドレス更新イネーブル信号７２を１クロックサイクル目に出力する。
【０１０４】
アドレス生成器６３は、１クロックサイクル目に出力された値０の次の値１を２クロックサイクル目に出力する。結果比較器７１は、ディスイネーブルを示すアドレス更新イネーブル信号７２を２クロックサイクル目に出力する。ＲＡＭ６２は、アドレス生成器６３から１クロックサイクル目に出力される値０のアドレスに記録される値０を２クロックサイクル目に出力する。
【０１０５】
アドレス生成器６３は、２クロックサイクル目に出力された値１の次の値２を３クロックサイクル目に出力する。出力データ保持レジスタ６７は、ＲＡＭ６２から２クロックサイクル目に出力される値０を３クロックサイクル目に出力する。比較値生成器６９は、アドレス生成器６３から１クロックサイクル目に出力される値０のアドレスでＲＡＭ６２に書き込まれた値０を３クロックサイクル目に出力する。結果比較器７１は、ディスイネーブルを示すアドレス更新イネーブル信号７２を３クロックサイクル目に出力する。ＲＡＭ６２は、アドレス生成器６３から２クロックサイクル目に出力される値０のアドレスに記録される値０を３クロックサイクル目に出力する。
【０１０６】
アドレス生成器６３は、３クロックサイクル目に出力された値２の次の値３を４クロックサイクル目に出力する。出力データ保持レジスタ６７は、ＲＡＭ６２から３クロックサイクル目に出力される値Ｆを４クロックサイクル目に出力する。比較値生成器６９は、アドレス生成器６３から２クロックサイクル目に出力される値１のアドレスでＲＡＭ６２に書き込まれた値Ｆを４クロックサイクル目に出力する。結果比較器７１は、出力データ保持レジスタ６７から３クロックサイクル目に出力される値０が比較生成器６９から３クロックサイクル目に出力される値０に一致していることにより、ディスイネーブルを示すアドレス更新イネーブル信号７２を４クロックサイクル目に出力する。ＲＡＭ６２は、アドレス生成器６３から３クロックサイクル目に出力される値２であることにより、間違った値８を４クロックサイクル目に出力する。
【０１０７】
アドレス生成器６３は、４クロックサイクル目に出力された値３の次の値４を５クロックサイクル目に出力する。出力データ保持レジスタ６７は、ＲＡＭ６２から４クロックサイクル目に出力される値８を５クロックサイクル目に出力する。比較値生成器６９は、アドレス生成器６３から３クロックサイクル目に出力される値２のアドレスでＲＡＭ６２に書き込まれた値０を５クロックサイクル目に出力する。結果比較器７１は、出力データ保持レジスタ６７から４クロックサイクル目に出力される値Ｆが比較生成器６９から４クロックサイクル目に出力される値Ｆに一致していることにより、ディスイネーブルを示すアドレス更新イネーブル信号７２を５クロックサイクル目に出力する。ＲＡＭ６２は、アドレス生成器６３から４クロックサイクル目に出力される値３のアドレスに記録された値Ｆを５クロックサイクル目に出力する。
【０１０８】
アドレス生成器６３は、５クロックサイクル目に出力された値４の次の値５を６クロックサイクル目に出力する。出力データ保持レジスタ６７は、ＲＡＭ６２から５クロックサイクル目に出力される値Ｆを６クロックサイクル目に出力する。比較値生成器６９は、アドレス生成器６３から４クロックサイクル目に出力される値３のアドレスでＲＡＭ６２に書き込まれた値Ｆを６クロックサイクル目に出力する。結果比較器７１は、出力データ保持レジスタ６７から５クロックサイクル目に出力される値８が比較生成器６９から５クロックサイクル目に出力される値０に一致していないことにより、イネーブルを示すアドレス更新イネーブル信号７２を６クロックサイクル目に出力する。ＲＡＭ６２は、アドレス生成器６３から値４が５クロックサイクル目に出力されることにより、間違った値３を６クロックサイクル目に出力する。
【０１０９】
アドレス生成器６３は、６クロックサイクル目に出力された値５の次の値６を７クロックサイクル目に出力する。アドレス保持レジスタ６４は、アドレス更新イネーブル信号７２が６クロックサイクル目にイネーブルを示すことにより、アドレス生成器６３から３クロックサイクル目に出力された値２を７クロックサイクル目に保持する。出力データ保持レジスタ６７は、ＲＡＭ６２から６クロックサイクル目に出力される値３を７クロックサイクル目に出力する。比較値生成器６９は、アドレス生成器６３から５クロックサイクル目に出力される値４のアドレスでＲＡＭ６２に書き込まれた値０を７クロックサイクル目に出力する。結果比較器７１は、出力データ保持レジスタ６７から６クロックサイクル目に出力される値Ｆが比較生成器６９から６クロックサイクル目に出力される値Ｆに一致していることにより、ディスイネーブルを示すアドレス更新イネーブル信号７２を７クロックサイクル目に出力する。出力データ保持レジスタ６８は、アドレス更新イネーブル信号７２が６クロックサイクル目にイネーブルを示すことにより、出力データ保持レジスタ６７から５クロックサイクル目に出力された値８を７クロックサイクル目に保持する。ＲＡＭ６２は、アドレス生成器６３から６クロックサイクル目に出力される値５のアドレスに記録された値Ｆを７クロックサイクル目に出力する。
【０１１０】
アドレス生成器６３は、７クロックサイクル目に出力された値６の次の値７を８クロックサイクル目に出力し、その値７の次の値がないことにより、値７を８クロックサイクル目以降に継続して出力する。出力データ保持レジスタ６７は、ＲＡＭ６２から７クロックサイクル目に出力される値Ｆを８クロックサイクル目に出力する。比較値生成器６９は、アドレス生成器６３から６クロックサイクル目に出力される値５のアドレスでＲＡＭ６２に書き込まれた値Ｆを８クロックサイクル目に出力する。結果比較器７１は、出力データ保持レジスタ６７から７クロックサイクル目に出力される値３が比較生成器６９から７クロックサイクル目に出力される値０に一致していないことにより、イネーブルを示すアドレス更新イネーブル信号７２を８クロックサイクル目に出力する。ＲＡＭ６２は、アドレス生成器６３から７クロックサイクル目に出力される値６のアドレスに記録された値０を８クロックサイクル目に出力する。
【０１１１】
アドレス保持レジスタ６４は、アドレス更新イネーブル信号７２が８クロックサイクル目にイネーブルを示すことにより、アドレス生成器６３から５クロックサイクル目に出力された値４を９クロックサイクル目に保持する。出力データ保持レジスタ６７は、ＲＡＭ６２から８クロックサイクル目に出力される値０を９クロックサイクル目に出力する。比較値生成器６９は、アドレス生成器６３から７クロックサイクル目に出力される値６のアドレスでＲＡＭ６２に書き込まれた値０を９クロックサイクル目に出力する。結果比較器７１は、出力データ保持レジスタ６７から８クロックサイクル目に出力される値Ｆが比較生成器２９から８クロックサイクル目に出力される値Ｆに一致していることにより、ディスイネーブルを示すアドレス更新イネーブル信号７２を９クロックサイクル目に出力する。出力データ保持レジスタ６８は、アドレス更新イネーブル信号７２が８クロックサイクル目にイネーブルを示すことにより、出力データ保持レジスタ６７から７クロックサイクル目に出力された値３を９クロックサイクル目に保持する。ＲＡＭ６２は、アドレス生成器６３から８クロックサイクル目に出力される値７のアドレスに記録された値Ｆを９クロックサイクル目に出力する。
【０１１２】
出力データ保持レジスタ６７は、ＲＡＭ６２から９クロックサイクル目に出力される値Ｆを１０クロックサイクル目に出力する。比較値生成器６９は、アドレス生成器６３から８クロックサイクル目に出力される値７のアドレスでＲＡＭ６２に書き込まれた値Ｆを１０クロックサイクル目に出力する。結果比較器７１は、出力データ保持レジスタ６７から９クロックサイクル目に出力される値０が比較生成器６９から９クロックサイクル目に出力される値０に一致していることにより、ディスイネーブルを示すアドレス更新イネーブル信号７２を１０クロックサイクル目に出力する。
【０１１３】
結果比較器７１は、出力データ保持レジスタ６７から１０クロックサイクル目に出力される値Ｆが比較生成器６９から１０クロックサイクル目に出力される値Ｆに一致していることにより、ディスイネーブルを示すアドレス更新イネーブル信号７２を１１クロックサイクル目に出力する。
【０１１４】
故障診断終了アドレスレジスタ６５は、ＲＡＭ２２から出力される出力データの比較がすべて完了したクロックサイクル（たとえば、１３クロックサイクル目）にアドレス保持レジスタ６４に保持されている値４を保持する。
【０１１５】
図８は、ＲＡＭ６２がアドレス２で間違った値８が出力され、アドレス４で間違った値３が出力される場合で、初回のテストでアドレス４が検出されたときに、２回目のテストの動作で各回路により出力される信号の変化を示している。
【０１１６】
故障診断終了アドレスレジスタ６５は、値４を１クロックサイクル目に保持している。アドレス生成器６３は、値０を１クロックサイクル目に出力する。故障診断イネーブル生成器６６は、イネーブルを示す故障診断イネーブル信号７４を１クロックサイクル目に出力する。結果比較器７１は、ディスイネーブルを示すアドレス更新イネーブル信号７２を１クロックサイクル目に出力する。
【０１１７】
アドレス生成器６３は、１クロックサイクル目に出力された値０の次の値１を２クロックサイクル目に出力する。故障診断イネーブル生成器６６は、故障診断終了アドレスレジスタ６５に１クロックサイクル目に保持する値４がアドレス生成器６３から１クロックサイクル目に出力される値０より順番が遅いことにより、イネーブルを示す故障診断イネーブル信号７４を２クロックサイクル目に出力する。結果比較器７１は、ディスイネーブルを示すアドレス更新イネーブル信号７２を２クロックサイクル目に出力する。ＲＡＭ６２は、アドレス生成器６３から１クロックサイクル目に出力される値０のアドレスに記録される値０を２クロックサイクル目に出力する。
【０１１８】
アドレス生成器６３は、２クロックサイクル目に出力された値１の次の値２を３クロックサイクル目に出力する。故障診断イネーブル生成器６６は、故障診断終了アドレスレジスタ６５に２クロックサイクル目に保持する値４がアドレス生成器６３から２クロックサイクル目に出力される値１より順番が遅いことにより、イネーブルを示す故障診断イネーブル信号７４を３クロックサイクル目に出力する。イネーブルを示す故障診断イネーブル信号７４を３クロックサイクル目に出力する。出力データ保持レジスタ６７は、ＲＡＭ６２から２クロックサイクル目に出力される値０を３クロックサイクル目に出力する。比較値生成器６９は、アドレス生成器６３から１クロックサイクル目に出力される値０のアドレスでＲＡＭ６２に書き込まれた値０を３クロックサイクル目に出力する。結果比較器７１は、ディスイネーブルを示すアドレス更新イネーブル信号７２を３クロックサイクル目に出力する。ＲＡＭ６２は、アドレス生成器６３から２クロックサイクル目に出力される値０のアドレスに記録される値０を３クロックサイクル目に出力する。
【０１１９】
アドレス生成器６３は、３クロックサイクル目に出力された値２の次の値３を４クロックサイクル目に出力する。故障診断イネーブル生成器６６は、故障診断終了アドレスレジスタ６５に３クロックサイクル目に保持する値４がアドレス生成器６３から３クロックサイクル目に出力される値２より順番が遅いことにより、イネーブルを示す故障診断イネーブル信号７４を４クロックサイクル目に出力する。出力データ保持レジスタ６７は、ＲＡＭ６２から３クロックサイクル目に出力される値Ｆを４クロックサイクル目に出力する。比較値生成器６９は、アドレス生成器６３から２クロックサイクル目に出力される値１のアドレスでＲＡＭ６２に書き込まれた値Ｆを４クロックサイクル目に出力する。結果比較器７１は、出力データ保持レジスタ６７から３クロックサイクル目に出力される値０が比較生成器６９から３クロックサイクル目に出力される値０に一致していることにより、ディスイネーブルを示すアドレス更新イネーブル信号７２を４クロックサイクル目に出力する。ＲＡＭ６２は、アドレス生成器６３から３クロックサイクル目に出力される値２であることにより、間違った値８を４クロックサイクル目に出力する。
【０１２０】
アドレス生成器６３は、４クロックサイクル目に出力された値３の次の値４を５クロックサイクル目に出力する。故障診断イネーブル生成器６６は、故障診断終了アドレスレジスタ６５に４クロックサイクル目に保持する値４がアドレス生成器６３から４クロックサイクル目に出力される値３より順番が遅いことにより、イネーブルを示す故障診断イネーブル信号７４を５クロックサイクル目に出力する。出力データ保持レジスタ６７は、ＲＡＭ６２から４クロックサイクル目に出力される値８を５クロックサイクル目に出力する。比較値生成器６９は、アドレス生成器６３から３クロックサイクル目に出力される値２のアドレスでＲＡＭ６２に書き込まれた値０を５クロックサイクル目に出力する。結果比較器７１は、出力データ保持レジスタ６７から４クロックサイクル目に出力される値Ｆが比較生成器６９から４クロックサイクル目に出力される値Ｆに一致していることにより、ディスイネーブルを示すアドレス更新イネーブル信号７２を５クロックサイクル目に出力する。ＲＡＭ６２は、アドレス生成器６３から４クロックサイクル目に出力される値３のアドレスに記録された値Ｆを５クロックサイクル目に出力する。
【０１２１】
アドレス生成器６３は、５クロックサイクル目に出力された値４の次の値５を６クロックサイクル目に出力する。故障診断イネーブル生成器６６は、故障診断終了アドレスレジスタ６５に５クロックサイクル目に保持する値４がアドレス生成器６３から５クロックサイクル目に出力される値４より順番が遅くないことにより、ディスイネーブルを示す故障診断イネーブル信号７４を６クロックサイクル目に出力する。故障診断イネーブル生成器６６は、さらに、故障診断終了アドレスレジスタ６５に保持する値４がアドレス生成器６３から５クロックサイクル目以降に出力される値より順番が遅くならないことにより、ディスイネーブルを示す故障診断イネーブル信号７４を６クロックサイクル目以降に継続して出力する。出力データ保持レジスタ６７は、ＲＡＭ６２から５クロックサイクル目に出力される値Ｆを６クロックサイクル目に出力する。比較値生成器６９は、アドレス生成器６３から４クロックサイクル目に出力される値３のアドレスでＲＡＭ６２に書き込まれた値Ｆを６クロックサイクル目に出力する。結果比較器７１は、故障診断イネーブル信号７４が４クロックサイクル目にイネーブルを示し、かつ、出力データ保持レジスタ６７から５クロックサイクル目に出力される値８が比較生成器６９から５クロックサイクル目に出力される値０に一致していないことにより、イネーブルを示すアドレス更新イネーブル信号７２を６クロックサイクル目に出力する。ＲＡＭ６２は、アドレス生成器６３から値４が５クロックサイクル目に出力されることにより、間違った値３を６クロックサイクル目に出力する。
【０１２２】
アドレス生成器６３は、６クロックサイクル目に出力された値５の次の値６を７クロックサイクル目に出力する。アドレス保持レジスタ６４は、アドレス更新イネーブル信号７２が６クロックサイクル目にイネーブルを示すことにより、アドレス生成器６３から３クロックサイクル目に出力された値２を７クロックサイクル目に保持する。出力データ保持レジスタ６７は、ＲＡＭ６２から６クロックサイクル目に出力される値３を７クロックサイクル目に出力する。比較値生成器６９は、アドレス生成器６３から５クロックサイクル目に出力される値４のアドレスでＲＡＭ６２に書き込まれた値０を７クロックサイクル目に出力する。結果比較器７１は、出力データ保持レジスタ６７から６クロックサイクル目に出力される値Ｆが比較生成器６９から６クロックサイクル目に出力される値Ｆに一致していることにより、ディスイネーブルを示すアドレス更新イネーブル信号７２を７クロックサイクル目に出力する。出力データ保持レジスタ６８は、アドレス更新イネーブル信号７２が６クロックサイクル目にイネーブルを示すことにより、出力データ保持レジスタ６７から５クロックサイクル目に出力された値８を７クロックサイクル目に保持する。ＲＡＭ６２は、アドレス生成器６３から６クロックサイクル目に出力される値５のアドレスに記録された値Ｆを７クロックサイクル目に出力する。
【０１２３】
アドレス生成器６３は、７クロックサイクル目に出力された値６の次の値７を８クロックサイクル目に出力し、その値７の次の値がないことにより、値７を８クロックサイクル目以降に継続して出力する。出力データ保持レジスタ６７は、ＲＡＭ６２から７クロックサイクル目に出力される値Ｆを８クロックサイクル目に出力する。比較値生成器６９は、アドレス生成器６３から６クロックサイクル目に出力される値５のアドレスでＲＡＭ６２に書き込まれた値Ｆを８クロックサイクル目に出力する。結果比較器７１は、故障診断イネーブル信号７４が６クロックサイクル目以降にディスイネーブルを示していることにより、ディスイネーブルを示すアドレス更新イネーブル信号７２を８クロックサイクル目以降に継続して出力する。ＲＡＭ６２は、アドレス生成器６３から７クロックサイクル目に出力される値６のアドレスに記録された値０を８クロックサイクル目に出力する。
【０１２４】
出力データ保持レジスタ６７は、ＲＡＭ６２から８クロックサイクル目に出力される値０を９クロックサイクル目に出力する。比較値生成器６９は、アドレス生成器６３から７クロックサイクル目に出力される値６のアドレスでＲＡＭ６２に書き込まれた値０を９クロックサイクル目に出力する。ＲＡＭ６２は、アドレス生成器６３から８クロックサイクル目に出力される値７のアドレスに記録された値Ｆを９クロックサイクル目に出力する。
【０１２５】
出力データ保持レジスタ６７は、ＲＡＭ６２から９クロックサイクル目に出力される値Ｆを１０クロックサイクル目に出力する。比較値生成器６９は、アドレス生成器６３から８クロックサイクル目に出力される値７のアドレスでＲＡＭ６２に書き込まれた値Ｆを１０クロックサイクル目に出力する。
【０１２６】
故障診断終了アドレスレジスタ６５は、ＲＡＭ２２から出力される出力データの比較がすべて完了したクロックサイクル（たとえば、１３クロックサイクル目）にアドレス保持レジスタ６４に保持されている値２を保持する。
【０１２７】
このように、不良アドレスと不良データを保持するレジスタが１アドレス分しかなくとも、テストを繰り返して行なうことにより、全不良データの採取が可能となる。さらに、このような故障診断方法によれば、ＲＡＭのアクセス時間がテストの周波数と同程度の場合であっても、遅延のテストを含めたＲＡＭのテストを行うことができる。
【０１２８】
図９は、本発明による故障診断方法を実行する故障診断回路の実施の形態を示している。その故障診断回路８１は、ＲＡＭ８２とともに１つの半導体チップに搭載されている。ＲＡＭ８２は、故障診断回路８１を用いて検査される検査対象であり、複数のアドレスにより互いに識別される複数のメモリセルを備えている。本実施の形態では、ＲＡＭ８２は、アドレスが０から７までの８つのアドレスを保有し、このとき、そのアドレスは、３ビットにより表現されるものとする。ＲＡＭ８２は、書き込み状態でアドレスとデータとが入力されたときに、そのデータをそのアドレスに割り当てられているメモリセルに格納する。ＲＡＭ８２は、読み出し状態でアドレスが入力されたときに、そのアドレスに割り当てられているメモリセルに格納されているデータを出力する。ＲＡＭ８２は、供給されるクロックの立ち上がりのエッジに同期して動作し、そのアドレスが入力されるクロックサイクルの次のクロックサイクルにそのデータを出力する。
【０１２９】
故障診断回路８１は、アドレス生成器８３とアドレス保持レジスタ８４と出力データ保持レジスタ８５と比較値生成器８６と結果比較器８７とを備えている。
【０１３０】
アドレス生成器８３は、カウンタから形成されている。アドレス生成器８３は、ＲＡＭ８２のメモリセルに割り当てられている複数のアドレスを順番に１つずつ１クロックサイクル毎に生成する。すなわち、アドレス生成器８３は、１クロックサイクル前に出力されたアドレスの次のアドレスを出力する。
【０１３１】
アドレス保持レジスタ８４は、結果比較器８７から出力される保持データ更新イネーブル信号８８がイネーブルを示すときに、アドレス生成器８３から出力されたアドレスを保持する。アドレス保持レジスタ８４は、保持データ更新イネーブル信号８８がディスイネーブルを示すときに、１クロックサイクル前に保持していたアドレスをそのまま保持する。アドレス保持レジスタ８４は、半導体チップの外部に接続される経路９１を備えている。アドレス保持レジスタ８４は、経路９１を介して、保持しているアドレスを半導体チップの外部に出力する。
【０１３２】
出力データ保持レジスタ８５は、保持データ更新イネーブル信号８８がイネーブルを示すときに、ＲＡＭ８２から出力された出力データを保持する。出力データ保持レジスタ８５は、保持データ更新イネーブル信号８８がディスイネーブルを示すときに、１クロックサイクル前に保持していた出力データをそのまま保持する。出力データ保持レジスタ８５は、半導体チップの外部に接続される経路９１を備えている。出力データ保持レジスタ８５は、経路９１を介して、記録されているアドレスを半導体チップの外部に出力する。
【０１３３】
比較値生成器８６は、ＲＡＭ８２のアドレス生成器８３から出力されたアドレスに記録されたデータを示す期待値を結果比較器８７に出力する。
【０１３４】
結果比較器８７は、ＲＡＭ８２から出力された出力データが比較値生成器８６から出力された期待値に一致しているかどうかを判別する。すなわち、結果比較器８７は、その出力データがその期待値に一致するときに、ディスイネーブルを示す保持データ更新イネーブル信号８８を出力する。結果比較器８７は、その出力データがその期待値に一致していないときに、イネーブルを示す保持データ更新イネーブル信号８８を出力する。
【０１３５】
故障診断回路８１を用いてＲＡＭ８２を検査する故障診断方法は、ＲＡＭ８２にデータを書き込む動作と、初回のテストの動作と、２回目以降のテストの動作とから形成されている。そのＲＡＭ８２にデータを書き込む動作では、ＲＡＭ８２の偶数アドレスに値０が書き込まれ、奇数アドレスに値Ｆ（１０進法の１５を示す値）が書き込まれる。
【０１３６】
その初回のテストの動作は、そのＲＡＭ８２にデータを書き込む動作が実行された後に実行される。その初回のテストの動作では、まず、アドレス保持レジスタ８４に値８を保持させた後に、クロック信号が故障診断回路８１とＲＡＭ８２とに継続して供給される。ＲＡＭ８２のすべてのアドレスが検査するのに十分なクロック信号が供給された後に、アドレス保持レジスタ８４に保持されているアドレスが読み出され、出力データ保持レジスタ８５に保持されている出力データが読み出される。このように読み出されたアドレスは、ＲＡＭ８２の異常なアドレスのうちの順番が最も遅いアドレスを示している。このように読み出された出力データは、その読み出されたアドレスから読み出されるデータを示している。
【０１３７】
その２回目以降のテストの動作は、その初回のテストの動作が実行された後に実行される。その２回目以降のテストの動作では、まず、ＲＡＭ８２の最初のアドレスから前回に読み出されたアドレスの前までの範囲だけがテストされるクロックサイクル数が算出される。その算出されたクロックサイクル数のクロック信号が故障診断回路８１とＲＡＭ８２とに供給される。そのクロック信号が供給された後に、アドレス保持レジスタ８４に保持されているアドレスが読み出され、出力データ保持レジスタ８５に保持されている出力データが読み出される。このように読み出されたアドレスは、ＲＡＭ８２の異常なアドレスのうちの前回に読み出されたアドレスの次に順番が遅いアドレスを示している。このように読み出された出力データは、その読み出されたアドレスから読み出されるデータを示している。このような２回目以降のテストの動作は、アドレス保持レジスタ８４から新規のアドレスが読み出されなくなるまで、繰り返して実行される。このような繰り返しにより、異常なアドレス全ての故障情報を得ることができる。
【０１３８】
このような故障診断方法によれば、故障診断回路８１は、故障診断結果を有効とする範囲を記録する故障診断開始アドレスレジスタを持つ必要がなく、回路オーバーヘッドを削減することが可能となり、好ましい。
【図面の簡単な説明】
【０１３９】
【図１】図１は、本発明による故障診断回路の実施の形態を示すブロック図である。
【図２】図２は、本発明による故障診断回路の実施の他の形態を示すブロック図である。
【図３】図３は、初回のテストの動作で各回路により出力される信号の変化を示すタイムチャートである。
【図４】図４は、２回目以降のテストの動作で各回路により出力される信号の変化を示すタイムチャートである。
【図５】図５は、本発明による故障診断回路の実施のさらに他の形態を示すブロック図である。
【図６】図６は、本発明による故障診断回路の実施のさらに他の形態を示すブロック図である。
【図７】図７は、初回のテストの動作で各回路により出力される信号の変化を示すタイムチャートである。
【図８】図８は、２回目以降のテストの動作で各回路により出力される信号の変化を示すタイムチャートである。
【図９】図９は、本発明による故障診断方法を実行する故障診断回路の実施の形態を示すブロック図である。
【図１０】図１０は、公知の故障診断回路の実施の形態を示すブロック図である。
【符号の説明】
【０１４０】
１  ：故障診断回路
２  ：ＲＡＭ
３  ：アドレス生成器
５  ：故障診断開始アドレスレジスタ
６  ：故障診断イネーブル生成器
７  ：出力データ保持レジスタ
８  ：比較値生成器
１０：結果比較器
１１：アドレス更新イネーブル信号
１２：経路
１４：経路
１５：故障診断イネーブル信号
２１：故障診断回路
２２：ＲＡＭ
２３：アドレス生成器
２４：アドレス保持レジスタ
２５：故障診断開始アドレスレジスタ
２６：故障診断イネーブル生成器
２７：出力データ保持レジスタ
２８：出力データ保持レジスタ
２９：比較値生成器
３１：結果比較器
３２：アドレス更新イネーブル信号
３３：経路
３４：初回テスト識別信号
３５：経路
３６：故障診断イネーブル信号
４１：故障診断回路
４２：ＲＡＭ
４３：アドレス生成器
４４：アドレス保持レジスタ
４５：故障診断終了アドレスレジスタ
４６：故障診断イネーブル生成器
４７：出力データ保持レジスタ
４８：比較値生成器
４９：結果比較器
５１：アドレス更新イネーブル信号
５２：経路
５３：経路
５４：故障診断イネーブル信号
６１：故障診断回路
６２：ＲＡＭ
６３：アドレス生成器
６４：アドレス保持レジスタ
６５：故障診断終了アドレスレジスタ
６６：故障診断イネーブル生成器
６７：出力データ保持レジスタ
６８：出力データ保持レジスタ
６９：比較値生成器
７１：結果比較器
７２：アドレス更新イネーブル信号
７３：経路
７４：故障診断イネーブル信号
７５：経路
８１：故障診断回路
８２：ＲＡＭ
８３：アドレス生成器
８４：アドレス保持レジスタ
８５：出力データ保持レジスタ
８６：比較値生成器
８７：結果比較器
８８：保持データ更新イネーブル信号
９１：経路
９２：経路
１００：故障診断回路
１０２：ＲＡＭ
１０３：アドレス生成器
１０４：比較値生成器
１０５：結果比較器
１０６：比較結果レジスタ
１０７：アドレス更新イネーブル信号
１０８：経路
【図１】
2005332492.tif 000003
【図２】
2005332492.tif 000004
【図３】
2005332492.tif 000005
【図４】
2005332492.tif 000006
【図５】
2005332492.tif 000007
【図６】
2005332492.tif 000008
【図７】
2005332492.tif 000009
【図８】
2005332492.tif 000010
【図９】
2005332492.tif 000011
【図１０】
2005332492.tif 000012