(57)【要約】【課題】プロセッサコアと複数のメモリバンクを持つシステムＬＳＩにおいて、メモリテストを実施するための回路増加を抑え、かつテストステップ数の増加を抑える。【解決手段】プロセッサコア部１０１により各々のメモリバンク１０２〜１０５内における同一のアドレスに対し同時にデータを書き込む全ライト命令を実行した後、全てのメモリバンク１０２〜１０５に書き込まれたデータを同時に読み出す全リード命令を実行し、データ判定部１０６において、全てのメモリバンク１０２〜１０５から読み出したデータを対応する期待値と比較し全ての読み出しデータが期待値と一致したときに正常と判定し、それ以外のときに異常と判定する。これにより、プロセッサコア部１０１の既存の機能を使用して複数のメモリバンク１０２〜１０５を同時にテストできる。【選択図】　　　　図１
2004079032.tif 000002
【特許請求の範囲】
【請求項１】
それぞれアクセスアドレスの上位ビットに対応して選択され内部にそれぞれアクセスアドレスの下位ビットに対応する共通のアドレスを有する複数のメモリバンクを備えるとともに、
命令コードをデコードする命令デコーダと、前記命令デコーダでデコードした命令が所定のアクセスアドレスに対しデータを読み出すリード命令または書き込むライト命令であるときに、前記所定のアクセスアドレスの上位ビットに対応する前記メモリバンクを選択するメモリバンク選択手段と、前記所定のアドレスの下位ビットに対応するアドレスを前記複数のメモリバンクに対し指定するアドレス指定手段とを有し、前記メモリバンク選択手段で選択されたメモリバンクの前記アドレス指定手段で指定されたアドレスに対しデータの読み出しまたは書き込みを行うプロセッサコアとを備えた半導体装置のテスト方法であって、
前記命令デコーダでデコードした命令が所定のアクセスアドレスの下位ビットに対応する各々の前記メモリバンク内における同一のアドレスに対し同時にデータを読み出す全リード命令または書き込む全ライト命令であるときに、前記メモリバンク選択手段は全ての前記メモリバンクを選択するようにし、
前記命令デコーダでデコードした命令が前記全リード命令であるときに、全ての前記メモリバンクから読み出したデータを対応する期待値と比較し全ての読み出しデータが前記期待値と一致したときに正常と判定し、それ以外のときに異常と判定するメモリテスト判定部を設け、
前記全ライト命令により全ての前記メモリバンク内の所定のアドレスにデータを書き込み、この書き込まれたデータを前記全リード命令により読み出して前記メモリテスト判定部で判定する処理を、前記メモリバンク内の異なるアドレスに対して順次実施することを特徴とする半導体装置のテスト方法。
【請求項２】
前記メモリテスト判定部で異常と判定したときのアクセスアドレスの下位ビットに対応する前記メモリバンク内におけるアドレスを格納保持する記憶手段を設け、前記全ライト命令および全リード命令と前記メモリテスト判定部での判定を前記メモリバンク内の異なるアドレスに対して順次実施した後、前記記憶手段に記憶されたアドレスを参照する請求項１記載の半導体装置のテスト方法。
【請求項３】
それぞれアクセスアドレスの上位ビットに対応して選択され内部にそれぞれアクセスアドレスの下位ビットに対応する共通のアドレスを有する複数のメモリバンクを備えるとともに、
命令コードをデコードする命令デコーダと、前記命令デコーダでデコードした命令が所定のアクセスアドレスに対しデータを読み出すリード命令または書き込むライト命令であるときに、前記所定のアクセスアドレスの上位ビットに対応する前記メモリバンクを選択するメモリバンク選択手段と、前記所定のアドレスの下位ビットに対応するアドレスを前記複数のメモリバンクに対し指定するアドレス指定手段とを有し、前記メモリバンク選択手段で選択されたメモリバンクの前記アドレス指定手段で指定されたアドレスに対しデータの読み出しまたは書き込みを行うプロセッサコアとを備えた半導体装置であって、
前記命令デコーダでデコードした命令が所定のアクセスアドレスの下位ビットに対応する各々の前記メモリバンク内における同一のアドレスに対し同時にデータを読み出す全リード命令または書き込む全ライト命令であるときに、前記メモリバンク選択手段は全ての前記メモリバンクを選択するようにし、
前記命令デコーダでデコードした命令が前記全リード命令であるときに、全ての前記メモリバンクから読み出したデータを対応する期待値と比較し全ての読み出しデータが前記期待値と一致したときに正常と判定し、それ以外のときに異常と判定するメモリテスト判定部を設けたことを特徴とする半導体装置。
【請求項４】
前記メモリテスト判定部で異常と判定したときのアクセスアドレスの下位ビットに対応する前記メモリバンク内におけるアドレスを格納保持する記憶手段を設けた請求項３記載の半導体装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プロセッサコアと内蔵メモリとして複数のメモリバンクを持つＬＳＩである半導体装置のテスト方法および半導体装置に関する。
【０００２】
【従来の技術】
近年のＬＳＩ開発は、特定の機能を持った複数のチップを組み合わせてシステムを構築するチップセット思考から、必要な機能ブロックをまとめて１つのチップに組み込みシステムを構築するシステムオンチップ思考に移行してきている。
【０００３】
このようなシステムオンチップ思考によるＬＳＩ（以下、システムＬＳＩ）では、個々のブロックの高機能化・複雑化が進み、機能ブロック間の扱うデータ量およびデータ授受が増大する傾向にある。それに伴い記憶手段としてのメモリは同様に増大する方向に進んでいる。この場合メモリがシステムＬＳＩ外部にあるとすると、転送のための時間ロスや、実装面積の観点からシステムＬＳＩの性能を十分に活かせないことになる。従ってシステムＬＳＩでは内部に大量のメモリを搭載する。
【０００４】
一般にメモリは占有する面積が大きいため、内蔵メモリ不良はシステムＬＳＩの歩留まりを落とす主要因の１つとなっている。このためメモリに対し、それを確実にテストすることが求められている。また、システムＬＳＩの動作の高速化に伴い、メモリの動作も高速化が要求されている。そのため、メモリの動作を論理的にテストするだけでなく、メモリの動作速度を保証するテスト方法も重要となる。
【０００５】
メモリテストは次のステップで実施される。テスト対象メモリのあるアドレスに所望のデータを書き込む。次に書き込んだデータを読み出す。最後に読み出したデータが正しいどうかを読み出されることが期待される値（期待値）と比較することで判断する。
【０００６】
メモリテストはアドレス選択の仕方、書き込むデータ、書き込み・読み出しの順序などの要因により様々なアルゴリズムが存在する。
【０００７】
例えば、チェッカーボードテストはメモリセル上でデータが市松模様に並ぶように書き込んだパターンを読み出してテストする。このテストではセルスタック障害、センスアンプ障害といった論理的な障害が検出可能である。メモリへの書き込みに１ステップ、読み出しに１ステップ、アドレス指定のステップ数を無視すると、チェッカーボードテストはＮワードのメモリに対し４Ｎステップを要する。ほかにはギャロッピングテストがあり、チェッカーボードテストでは検出できない速度故障を検出できる点で重要であり、現時点ではもっとも検出能力の高いメモリテスト手法である。しかしその分ステップ数を要し、先例と同様の考え方で、６Ｎ＊Ｎ＋６Ｎステップを必要とし、一般に膨大なテストステップ数が必要となる。
【０００８】
これらメモリテストを実現する従来のメモリのテスト方法としては、次の３つに大別される。
【０００９】
第１にアイソレーションテストである。これはＬＳＩの外部端子から直接メモリにアクセスできる回路を設け、テスタなどを用いてテストパターンをテスト対象メモリに与えること及びそのメモリの出力信号を得る方法である。
【００１０】
第２にビルトインセルフテスト（ＢＩＳＴ）である。これはテストを行うための回路（ＢＩＳＴ回路）をＬＳＩの内部に組み込んでテストを行う方法である。ＢＩＳＴ回路はテストパターン発生部とデータ比較部及び制御部を持ち、ＢＩＳＴ回路が生成したパターンをメモリに入力し、そのときのメモリからの出力結果を比較部で別に保持していた期待値と比較し、比較結果でメモリに故障がないかどうかを判断する。
【００１１】
第３にプロセッサのマイクロコードを用いたテストである。これはメモリテストを行うためのテストパターン発生、供給とそのテスト対象メモリの出力データを期待値と比較するための比較をプロセッサのマイクロコードを用いたプログラムにより実施する方法である。前記プログラムは例えばアセンブラプログラムなどにより作成される。
【００１２】
【発明が解決しようとする課題】
しかしながら従来のテスト方法では、現時点で最も強力なギャロッピングテストを実行するにあたり以下の問題がある。
【００１３】
アイソレーションテストにおいては、メモリをテストするための端子を必要とすること及び低速動作のＩ／Ｏ部により動作速度の保証が困難であるという問題がある。
【００１４】
またＢＩＳＴにおいては、ＢＩＳＴ専用回路を追加する必要があり、ギャロッピングテストのような複雑なメモリテストアルゴリズムに対応させようとすると、制御部の回路増加が非常に大きくなるという問題がある。
【００１５】
プロセッサのマイクロコードを用いたテストにおいては、回路増加がない反面、プロセッサの演算資源に依存したテスト方法しか取れないため効率が悪く、大容量メモリに対してテストステップ数が膨大になるという問題がある。
【００１６】
以上の問題に鑑みて、本発明は、プロセッサコアと複数のメモリバンクを持つシステムＬＳＩにおいて、上記アイソレーションテストにおける問題がなく、メモリテストを実施するための回路増加を抑え、かつテストステップ数の増加を抑えることのできる半導体装置のテスト方法および半導体装置を提供することである。
【００１７】
【課題を解決するための手段】
本発明の請求項１記載の半導体装置のテスト方法は、それぞれアクセスアドレスの上位ビットに対応して選択され内部にそれぞれアクセスアドレスの下位ビットに対応する共通のアドレスを有する複数のメモリバンクを備えるとともに、命令コードをデコードする命令デコーダと、命令デコーダでデコードした命令が所定のアクセスアドレスに対しデータを読み出すリード命令または書き込むライト命令であるときに、所定のアクセスアドレスの上位ビットに対応するメモリバンクを選択するメモリバンク選択手段と、所定のアドレスの下位ビットに対応するアドレスを複数のメモリバンクに対し指定するアドレス指定手段とを有し、メモリバンク選択手段で選択されたメモリバンクのアドレス指定手段で指定されたアドレスに対しデータの読み出しまたは書き込みを行うプロセッサコアとを備えた半導体装置のテスト方法であって、命令デコーダでデコードした命令が所定のアクセスアドレスの下位ビットに対応する各々のメモリバンク内における同一のアドレスに対し同時にデータを読み出す全リード命令または書き込む全ライト命令であるときに、メモリバンク選択手段は全てのメモリバンクを選択するようにし、命令デコーダでデコードした命令が全リード命令であるときに、全てのメモリバンクから読み出したデータを対応する期待値と比較し全ての読み出しデータが期待値と一致したときに正常と判定し、それ以外のときに異常と判定するメモリテスト判定部を設け、全ライト命令により全てのメモリバンク内の所定のアドレスにデータを書き込み、この書き込まれたデータを全リード命令により読み出してメモリテスト判定部で判定する処理を、メモリバンク内の異なるアドレスに対して順次実施することを特徴とする。
【００１８】
また、請求項２記載の半導体装置のテスト方法は、請求項１記載の半導体装置のテスト方法において、メモリテスト判定部で異常と判定したときのアクセスアドレスの下位ビットに対応するメモリバンク内におけるアドレスを格納保持する記憶手段を設け、全ライト命令および全リード命令とメモリテスト判定部での判定をメモリバンク内の異なるアドレスに対して順次実施した後、記憶手段に記憶されたアドレスを参照する。
【００１９】
本発明の請求項３記載の半導体装置は、それぞれアクセスアドレスの上位ビットに対応して選択され内部にそれぞれアクセスアドレスの下位ビットに対応する共通のアドレスを有する複数のメモリバンクを備えるとともに、命令コードをデコードする命令デコーダと、命令デコーダでデコードした命令が所定のアクセスアドレスに対しデータを読み出すリード命令または書き込むライト命令であるときに、所定のアクセスアドレスの上位ビットに対応するメモリバンクを選択するメモリバンク選択手段と、所定のアドレスの下位ビットに対応するアドレスを複数のメモリバンクに対し指定するアドレス指定手段とを有し、メモリバンク選択手段で選択されたメモリバンクのアドレス指定手段で指定されたアドレスに対しデータの読み出しまたは書き込みを行うプロセッサコアとを備えた半導体装置であって、命令デコーダでデコードした命令が所定のアクセスアドレスの下位ビットに対応する各々のメモリバンク内における同一のアドレスに対し同時にデータを読み出す全リード命令または書き込む全ライト命令であるときに、メモリバンク選択手段は全てのメモリバンクを選択するようにし、命令デコーダでデコードした命令が全リード命令であるときに、全てのメモリバンクから読み出したデータを対応する期待値と比較し全ての読み出しデータが期待値と一致したときに正常と判定し、それ以外のときに異常と判定するメモリテスト判定部を設けたことを特徴とする。
【００２０】
また、本発明の請求項４記載の半導体装置は、請求項３記載の半導体装置において、メモリテスト判定部で異常と判定したときのアクセスアドレスの下位ビットに対応するメモリバンク内におけるアドレスを格納保持する記憶手段を設けている。
【００２１】
以上、本発明によれば、命令デコーダでデコードした命令が所定のアクセスアドレスの下位ビットに対応する各々のメモリバンク内における同一のアドレスに対し同時にデータを読み出す全リード命令または書き込む全ライト命令であるときに、メモリバンク選択手段は全てのメモリバンクを選択するようにし、命令デコーダでデコードした命令が全リード命令であるときに、全てのメモリバンクから読み出したデータを対応する期待値と比較し全ての読み出しデータが期待値と一致したときに正常と判定し、それ以外のときに異常と判定するメモリテスト判定部を設け、全ライト命令により全てのメモリバンク内の所定のアドレスにデータを書き込み、この書き込まれたデータを全リード命令により読み出してメモリテスト判定部で判定する処理を、メモリバンク内の異なるアドレスに対して順次実施することにより、複数のメモリバンクを同時にテストすることができ、テストステップ数を低減し、メモリテスト時間を短縮することができる。また、メモリバンク選択手段に全リード命令および全ライト命令で全てのメモリバンクを選択する機能を付加したことと、メモリテスト判定部を設けたこと以外はプロセッサコアの既存の機能を使用して実施するため、回路増加を抑えることができる。また、プロセッサコアの既存の機能を使用することで、高速にメモリテストを実施でき、アイソレーションテストにおけるメモリをテストするための端子を不要とし、また動作速度の問題もない。
【００２２】
さらに、メモリテスト判定部で異常と判定したときのアクセスアドレスの下位ビットに対応するメモリバンク内におけるアドレスを格納保持する記憶手段を設け、全ライト命令および全リード命令とメモリテスト判定部での判定をメモリバンク内の異なるアドレスに対して順次実施した後、記憶手段に記憶されたアドレスを参照することにより、メモリ不良が生じているアドレスを知ることができる。
【００２３】
【発明の実施の形態】
以下、図面を参照しながら、本発明にかかるＬＳＩの内蔵メモリのテスト方法及びその装置の実施形態について説明する。
【００２４】
図１は、本発明のＬＳＩの内蔵メモリをテストするための装置の全体構成を示すものである。ＬＳＩ（１００）は、プロセッサコア部（１０１）と４Ｋワードのメモリバンク４個［メモリバンク０（１０２）、メモリバンク１（１０３）、メモリバンク２（１０４）、メモリバンク３（１０５）］とデータ判定部（１０６）を備える。
【００２５】
プロセッサコア部（１０１）と各メモリバンク（１０２，１０３，１０４，１０５）は、クロック（１４０）、アドレス１２ビット（１１０）、バンクセレクト信号４ビット（１２０）、リード・ライト制御信号１ビット（１３０）、転送バス１６ビット（１６０）、メモリリードデータバス１６ビット（１８１）で接続される。バンクセレクト信号４ビット（１２０）は各メモリバンク（１０２，１０３，１０４，１０５）に１ビットずつ接続される。各メモリバンク（１０２，１０３，１０４，１０５）とデータ判定部（１０６）はバンク０出力データ１６ビット（１５０）、バンク１出力データ１６ビット（１５１）、バンク２出力データ１６ビット（１５２）、バンク３出力データ１６ビット（１５３）で接続される。データ判定部（１０６）とプロセッサコア部（１０１）はデータ判定信号（１７０）、転送バス１６ビット（１６０）、期待値レジスタ選択信号（１６１）で接続される。
【００２６】
まず初めにプロセッサコア部（１０１）と各メモリバンク（１０２，１０３，１０４，１０５）の接続と動作について説明する。クロック（１４０）は、プロセッサコア部（１０１）から各メモリバンク（１０２，１０３，１０４，１０５）へ供給される。アドレス１２ビット（１１０）はアドレス１６ビット（１０９：図３参照）の下位１２ビットのアドレスであり、プロセッサコア部（１０１）から各メモリバンク（１０２，１０３，１０４，１０５）へ供給され、バンク内のアドレス指定に使用する。バンクセレクト信号（１２０）はアドレス１６ビット（１０９：図３参照）の上位４ビットをデコードして生成した信号であり、プロセッサコア部（１０１）から各メモリバンク（１０２，１０３，１０４，１０５）へ供給される。４ビットのバンクセレクト信号（１２０）は各メモリバンクに１ビットずつ接続されていて、１のときバンクが選択される。リード・ライト制御信号（１３０）は各メモリバンク（１０２，１０３，１０４，１０５）にデータを書き込むか、各メモリバンク（１０２，１０３，１０４，１０５）のデータを読み出すかを決定する信号であり、データライトする場合は０、リードする場合は１とする。リード・ライト制御信号（１３０）はまたプロセッサコア部（１０１）から各メモリバンク（１０２，１０３，１０４，１０５）へ供給され、各バンク共通の信号である。メモリライトデータはメモリライト時にプロセッサコア部（１０１）から各メモリバンク（１０２，１０３，１０４，１０５）へ転送バス（１６０）を介し供給する。メモリリードデータ（１８１）はメモリリード時に各メモリバンク（１０２，１０３，１０４，１０５）からプロセッサコア部（１０１）へ、トライステートバッファ（１９０，１９１，１９２，１９３）を通して出力される。トライステートバッファ（１９０，１９１，１９２，１９３）は選択されたメモリバンクのみの出力が有効となるよう制御される。図２にメモリ動作タイミングチャートを示す。
【００２７】
次に各メモリバンク（１０２，１０３，１０４，１０５）とデータ判定部（１０６）の接続と動作について説明する。各メモリバンク（１０２，１０３，１０４，１０５）から読み出されたデータ（１５０，１５１，１５２，１５３）はそれぞれ直接データ判定部（１０６）に入力される。また、読み出されたデータ（１５０，１５１，１５２，１５３）と比較をするための期待値はプロセッサコア部（１０１）から予め供給され、データ判定部（１０６）で保持しておく。入力された前記データと前記期待値が比較され、一致不一致を示すデータ判定信号（１７０）がプロセッサコア部（１０１）へ出力される。期待値が複数ある場合にはプロセッサコア部（１０１）から出力される期待値レジスタ選択信号（１６１）により所望の期待値が選択される。
【００２８】
具体的な構成について説明する。
【００２９】
図３はプロセッサコア部（１０１）およびデータ判定部（１０６）の構成を示すものである。プロセッサコア部（１０１）はクロック発生部（２００）、命令メモリ（２０１）、命令デコード部（２０２）、データメモリポインタ部（２０３）、バンクセレクト信号生成部（２０４）、割り込み制御部（２１３）、不良アドレス保持部（２１４）、汎用レジスタ０（２０６）、汎用レジスタ１（２０７）、転送バス（１６０）を備える。クロック発生部（２００）はプロセッサコア部（１０１）内の各部および、各メモリバンク（１０２，１０３，１０４，１０５）、データ判定部（１０６）へのクロック供給を行う。
【００３０】
次に本構成の動作を説明する。まず、命令メモリ（２０１）から命令コード（２３０）が命令デコード部（２０２）へ供給される。ここで供給される命令は、既存の命令と、本発明の実施の形態で提案する各メモリバンクに同時に書き込む命令および各メモリバンクから同時に読み出す命令であり、各メモリバンクに同時に書き込む命令を全ライト命令、各メモリバンクから同時に読み出す命令を全リード命令とする。
【００３１】
命令デコード部（２０２）では、命令コード（２３０）をデコードし、ポインタ選択信号（２３１）、ポインタ更新信号（２３２）、全バンクセレクト信号（２３４）、リード・ライト制御信号（１３０）、期待値レジスタ選択信号（１６１）を出力する。なお、全バンクセレクト信号（２３４）は、全ライト命令および全リード命令をデコードしたときに１となる信号が生成される。
【００３２】
ポインタ選択信号（２３１）およびポインタ更新信号（２３２）はデータメモリポインタ部（２０３）に入力される。このデータメモリポインタ部（２０３）の動作について説明する。図４にデータメモリポインタ部の構成を示す。このデータメモリポインタ部（２０３）は、ポインタレジスタが４セットｐ０（４１０）、ｐｌ（４１１）、ｐ２（４１２）、ｐ３（４１３）と、演算器（４１５）と、増分レジスタ（４１４）と、使用ポインタセレクタ（４１７）と，更新ポインタセレクタ（４１６）と、ポインタ更新値セレクタ（４１８）とから構成される。
【００３３】
増分レジスタ（４１４）は転送バス（１６０）に接続され、任意の値を設定できる。
【００３４】
更新ポインタセレクタ（４１６）は演算器（４１５）の出力をどのポインタレジスタに出力するのかを選択するための回路である。選択はポインタ選択信号（２３１）の値により実行される。
【００３５】
使用ポインタセレクタ（４１７）はどのポインタレジスタの出力をアドレス（１０９）として使用するかを選択するための回路である。選択はポインタ選択信号（２３１）の値により実行される。
【００３６】
ポインタ更新値セレクタ（４１８）はポインタレジスタの値を更新する際に、どの更新値を演算器（４１５）に出力するのかを選択するための回路である。選択はポインタ更新信号（２３２）の値により実行される。
【００３７】
命令デコード部（２０２）よりポインタ選択信号（２３１）、ポインタ更新信号（２３２）が入力され、それらの値により各ポインタの値が命令実行後に図５に示すように更新される。
【００３８】
また、命令実行時のポインタ選択信号（２３１）により選択されたポインタレジスタからアドレス（１０９）が出力される。
【００３９】
データメモリポインタ部（２０３）から出力されたアドレス１６ビット（１０９）の下位１２ビットはそのまま各メモリバンク（１０２，１０３，１０４，１０５）へ供給される。アドレス１６ビット（１０９）の上位４ビットはバンクセレクト信号生成部（２０４）へ出力される。
【００４０】
バンクセレクト信号生成部（２０４）へはまた、全バンクセレクト信号（２３４）が入力される。全バンクセレクト信号（２３４）は全ライト命令および全リード命令時に１となる信号である。
【００４１】
バンクセレクト信号生成部（２０４）は２つの入力に対し、図６に示されるバンクセレクト信号真理値表に従って各バンクのバンクセレクト信号（１２１，１２２，１２３，１２４）を生成する。生成されたバンクセレクト信号は各メモリバンク（１０２，１０３，１０４，１０５）に供給される。全バンクセレクト信号（２３４）が１の場合、全てのメモリバンクを選択するため、各バンクのバンクセレクト信号（１２１，１２２，１２３，１２４）が全て１となる。
【００４２】
汎用レジスタ０（２０６）および汎用レジスタ１（２０７）は各メモリバンク（１０２，１０３，１０４，１０５）に書き込むデータを保持しておくためのレジスタである。この２つのレジスタには予め命令により書き込んでおく。各メモリバンク（１０２，１０３，１０４，１０５）にライトする際、汎用レジスタ選択信号（２４０）により選択されるレジスタの値を出力し、転送バス（１６０）を経由して各メモリバンク（１０２，１０３，１０４，１０５）に供給される。
【００４３】
期待値レジスタ選択信号（１６１）はデータ判定部（１０６）に入力される。データ判定部（１０６）は期待値レジスタ０（２０９）、期待値レジスタ１（２１０）、データ判定回路（２１１）、セレクタ（２１２）、転送バス（１６０）を備える。
【００４４】
期待値レジスタ選択信号（１６１）は、期待値レジスタ０（２０９）および期待値レジスタ１（２１０）のどちらの値を期待値として使用するかを選択する信号である。２つの期待値レジスタ（２０９，２１０）には予め命令により期待値を保持しておく。
【００４５】
データ判定回路（２１１）には、期待値レジスタ選択信号（１６１）に応じてセレクタ（２１２）で選択された期待値レジスタ０（２０９）の出力または期待値レジスタ１（２１０）の出力と、各メモリバンクからの出力データ（１５０，１５１，１５２，１５３）とが入力される。データ判定回路（２１１）では各メモリバンクから出力されたデータ（１５０，１５１，１５２，１５３）とセレクタ（２１２）で選択された期待値とを比較する。データの比較はデータのビット毎に実施する。
【００４６】
例えば、メモリにｘ’５５５５’、ｘ’ａａａａ’の２つを書き込むテストを実施する場合、正しく読みされるデータはｘ’５５５５’、ｘ’ａａａａ’であるため、期待値レジスタ０（２０９）にｘ’５５５５’、期待値レジスタ１（２１０）にｘ’ａａａａ’を予め書き込む。
【００４７】
命令デコード部（２０２）では、全リード命令の命令コード（２３０）に基づいて期待値レジスタ選択信号（１６１）を生成する。本実施の形態のように、例えば２つの期待値レジスタが存在する場合、全リード命令時に期待値レジスタを選択できるように１ビットの命令コード領域を確保しておき、その命令コードが０ならば期待値レジスタ０（２０９）を選択する、１ならば期待値レジスタ１（２１０）を選択するとすると、その命令コードに従って期待値レジスタ選択信号（１６１）を生成する。なお、期待値レジスタの個数に従って、前記命令コード中に確保するビット長を変えてもよい。
【００４８】
図７にデータ判定回路（２１１）の真理値表を示す。図７では各メモリバンクの出力データ（１５０，１５１，１５２，１５３）のビット０（最下位ビット）における真理値表が示されている。全ライト命令では各バンクに同時に書かれる値は全て等しいため、正常動作の場合ビット０期待値と各バンクのビット０データ全ての値が一致する。このときのビット０データ判定信号を０とする。それ以外は全て異常動作とし、このときのビット０データ判定信号を１とする。
【００４９】
図８はデータ判定回路（２１１）におけるデータ判定信号の出力回路図である。図中は最下位ビットのビット０の判定回路（３６０）および最上位ビットのビット１５の判定回路（３７０）のみを記載しているが、実際には点線部分に同様のビット１からビット１４の判定回路が存在する。各ビットの判定回路はそれぞれＮＡＮＤゲートとＯＲゲートとセレクタで構成され、例えばビット０の判定回路（３６０）では、ビット０の期待値が１のとき、セレクタ（３６３）はＮＡＮＤゲート（３６１）の出力を選択してＯＲゲート（３５０）へ出力し、期待値が０のときＯＲゲート（３６２）の出力を選択してＯＲゲート（３５０）へ出力する。同様にしてビット毎に判定した結果全てをＯＲゲート（３５０）に入力することにより判定結果を１ビット出力とする。正常動作の場合、各ビットの判定信号は０となるのでデータ判定信号（１７０）は０となる。異常動作の場合、ある任意のビットの判定信号が１となるためデータ判定信号（１７０）は１となる。
【００５０】
割り込み制御部（２１３）では、データ判定信号（１７０）が入力される。割り込み制御部（２１３）では、データ判定信号（１７０）を終了割り込み要求信号として扱う。この終了割り込み要求信号を受けて終了割り込み処理を実行するかどうかは、メモリテストを実施する前に予め要求を受けつける設定をしておくかどうかに依る。もし、終了割り込み処理を実施するように設定したとすると、入力されたデータ判定信号（１７０）が０の揚合、正常動作のため、そのままメモリテストを続行する。入力されたデータ判定信号（１７０）が１の場合、終了割り込み処理を実行し、テストを終了させる。
【００５１】
メモリテストでは不良メモリを選別するというスクリーニングの他に故障モード（故障箇所、原因）を明確にするという目的がある。
【００５２】
故障モードの調査では、どのアドレスにアクセスした時に、どのようにデータが誤っているのかが非常に重要になる。そのため、データ判定部（１０６）より、読み出されたデータが誤っているという情報（データ判定信号（１７０）が１）が出力された場合、アクセスに使用したアドレスを順次保持する機構を設け、全テストが終了した後にそれらを読み出し解析に使用するとする。この場合、割り込み制御部（２１３）は終了割り込み要求を受けつけないように設定され、割り込み制御部（２１３）によるテスト終了の終了割り込み処理は行われない。
【００５３】
不良アドレス保持部（２１４）にはＦＩＦＯ形式の記憶手段を採用する。不良アドレス保持部（２１４）はメモリアクセスに使用するアドレスに接続され、データ判定信号（１７０）が１になる度にアクセスアドレスを遅延させたデータを格納する。
【００５４】
図９にその場合の動作を示す。クロックに同期してデータメモリポインタ部（２０３）よりアドレス１２ビット（１１０）が供給される。図中破線矢印で示した様にメモリからデータが実際に出力されるまでには遅延がある。各バンクからは図に示したようなデータが読まれるとすると、データ判定部データは図中のようになる。各バンクからのデータはビット毎で見ると全て同じであるはずなので、データ判定部データがｘ’００００’でない場合は、データ判定信号（１７０）が１として出力される。データ判定信号（１７０）をもとに１サイクル遅延させた不良アドレスがＦＩＦＯ記憶手段（アドレス保持レジスタ）に積まれていく。以上により、正しくないデータが読み出された場合は、対応するアドレスが順次記憶されていく。
【００５５】
次に本実施の形態の構成における実際の動作を説明する。
【００５６】
まず、通常のライト命令および通常のリード命令の動作を説明する。通常のライト命令の命令コード（２３０）が命令メモリ（２０１）より命令デコード部（２０２）に供給されると、命令がデコードされ、データメモリポインタ部（２３０）へポインタ選択信号（２３１）、ポインタ更新信号（２３２）が供給される。また、バンクセレクト信号生成部（２０４）へ全バンクセレクト信号（２３４）として０が供給される。また、リード・ライト制御信号（１３０）が０となり各メモリバンク（１０２〜１０５）へ供給される。データメモリポインタ部（２０３）では選択されたポインタからアドレスが出力され、ポインタを更新する。バンクセレクト信号生成部（２０４）ではアドレスをデコードしてある１つのメモリバンクを選択する。ライトデータは汎用レジスタ選択信号（２４０）により選択された汎用レジスタ（２０６または２０７）からメモリバンクへ供給される。ここで、命令デコード部（２０２）では、ライト命令の命令コード（２３０）に基づいて汎用レジスタ選択信号（２４０）を生成している。本実施の形態のように、例えば２つの汎用レジスタが存在する場合、ライト命令時に汎用レジスタを選択できるように１ビットの命令コード領域を確保しておき、その命令コードが０ならば汎用レジスタ０（２０６）を選択する、１ならば汎用レジスタ１（２０７）を選択するとすると、その命令コードに従って汎用レジスタ選択信号（２４０）を生成する。なお、汎用レジスタの個数に従って、前記命令コード中に確保するビット長を変えてもよい。アドレス（１１０）、リード・ライト制御信号（１３０）、ライトデータは全てのメモリバンク（１０２〜１０５）に共通であり、異なるのはバンクセレクト信号（１２１〜１２４）のみである。これら４つの信号を用いてメモリにデータをライトする。
【００５７】
通常のリード命令の命令コード（２３０）が命令メモリ（２０１）より命令デコード部（２０２）に供給されると、命令がデコードされ、データメモリポインタ部（２３０）へポインタ選択信号（２３１）、ポインタ更新信号（２３２）が供給される。また、バンクセレクト信号生成部（２０４）へ全バンクセレクト信号（２３４）として０が供給される。また、リード・ライト制御信号（１３０）が１となり各メモリバンク（１０２〜１０５）へ供給される。データメモリポインタ部（２０３）では選択されたポインタからアドレスが出力され、ポインタを更新する。バンクセレクト信号生成部（２０４）ではアドレスをデコードしてある１つのメモリバンクを選択する。アドレス（１１０）、リード・ライト制御信号（１３０）は全てのメモリバンク（１０２〜１０５）に共通であり、異なるのはバンクセレクト信号（１２１〜１２４）のみである。これら３つの信号を用いてメモリからデータをリードする。各メモリバンクからリードされるデータはトライステートバッファ（１９０〜１９３）により選択され、選択されたメモリバンクの値のみをメモリリードデータバス（１８１）に出力するよう制御される。
【００５８】
次に全ライト命令および全リード命令について説明する。全ライト命令と通常のライト命令の違いは、全ライト命令の場合はバンクセレクト信号（１２０すなわち１２１〜１２４）が全て１となるのに対し、通常のライト命令の場合はある１つのメモリバンクのバンクセレクト信号のみが１となることである（全バンクセレクト信号（２３４）が１か０かの相違は当然ある）。全リード命令と通常のリード命令の違いは、ライト命令の場合同様、全リード命令の場合はバンクセレクト信号が全て１となるのに対し、通常のリード命令の場合はある１つのメモリバンクのバンクセレクト信号のみが１となること（全バンクセレクト信号（２３４）が１か０かの相違は当然ある）と、通常のリード命令の場合はメモリバンクから読み出されたデータがトライステートバッファ（１９０〜１９３）を介しメモリリードデータバス１８１に出力されるが、全リード命令の場合はメモリリードデータバス１８１に出力されない（データ判定部１０６に出力される）ことである。
【００５９】
全ライト命令と全リード命令を使用するギャロッピングテストの手順ついて説明する。まず初めにギャロッピングテストのアルゴリズムについて説明する。図１０にギャロッピングテストの手順図を示す。ここで図中のメモリは列方向８ワード、行方向２ワードとし、左下のセルを０番地とし、その列の右方向に１番地、２番地、…、７番地とし、左上のセルを８番地とし、その列の右方向に１０番地、１１番地、…、１５番地とする。また、図中のセル内の０，１はライトしたデータ、またはライトされているデータ、Ｈは１をリードする、Ｌは０をリードするという意味である。以下、図中の番号に従い説明を進める。（１）メモリマクロの全領域に０を書く。（２）最初の基点の０番地に１を書く。（３）テストセルである１番地をリードする。（４）基点の０番地をリードする。（５）テストセルである１番地をリードする。（６）２番地をリードする。（７）０番地をリードする。（８）２番地をリードする。アドレスをインクリメントしながら前述のように３つのリードを繰り返す。（９）１５番地をリードする。（１０）０番地をリードする。（１１）１５番地をリードする。（１２）全アドレスに対しリードを終了したら、０番地に０をライトし、元に戻す。（１３）基点を次の番地にするため１番地に１をライトする。（１４）０番地をリードする。（１５）基点の１番地をリードする。（１６）０番地をリードする。この手順を繰り返して、全領域に対して基点を選択し、テストを実施していく。もし全領域で正しく動作した場合はテストを終了する。途中で誤った動作が生じた場合には、テストストップの割り込み動作によりテストを終了するか、または誤ったデータに対応するアドレスを記憶させ、最終アドレスまでテストを行ってテストを終了する。
【００６０】
また、このテスト手順ではテストステップ数が膨大となるため、簡易版として、ダイアゴナルギャロッピングテストがある。これは基点の選択の仕方とテストセルの選択方法を一部省略して実施するテスト法である。図１１にダイアゴナルギャロッピングテストの動作手順図を示す。まず基点の選択方法はメモリバンクの物理セル配置に対し、斜線方法に選択する。アドレス指定にはｐ０を使用する。次にテストセルの選択方向は、基点を含む行および列方向のセルについて選択する。列方向のセルのアドレス選択にｐ１、行方向のセル選択にｐ２を使用する。ｐ０、ｐ１、ｐ２を命令によりデータポインタ部で制御してテストを実施する。
【００６１】
以上のメモリテスト実施時におけるメモリへのリード・ライト命令は全て全ライト命令および全リード命令を使用して実施する。
【００６２】
以上、説明してきたメモリテストの流れをメモリテストフローチャートとして図１２に示す。以下、図１２に基づいて本実施の形態の一連の動作を説明する。
【００６３】
まず、全ライト命令、全リード命令及び既存命令を使用して、所望のメモリテストプログラムを作成する（ステップＳ１）。
【００６４】
次に、プログラムとメモリテストにおける設定をプロセッサに供給する（ステップＳ２）。ここで、設定とは、異常動作時に前述の終了割り込み要求を受理してテストを終了させるのか、もしくは故障アドレスを保持させる故障調査モードにするのかを選択し、プロセッサにその設定をすることである。
【００６５】
プロセッサを動作させ、プログラムに従ってメモリテストを実施する。まずテスト対象メモリへデータを書き込む（ステップＳ３）。この書き込みに全ライト命令を使用して複数バンクへの同時書き込みを実施する。
【００６６】
データの書き込みが終了したら次のステップに進み、そうでない場合は書き込みを続ける（ステップＳ４）。
【００６７】
データの書き込みが終了したら、テスト対象メモリの読み出しを実施する（ステップＳ５）。この読み出しに全リード命令を使用して複数バンクからの同時読み出しを実施し、かつ予め期待値レジスタに用意しておいた期待値のうち、どの期待値と比較するのかを選択する。
【００６８】
読み出したデータと予め用意しておいた期待値とを比較し（ステップＳ６）、一致していたら、全てのヂータを読み出し比較したかどうかを判定する（ステップＳ７）。
【００６９】
全てのデータを読み出し比較したならば、全てのテストが終了したかどうかを判定し（ステップＳ９）、全てのテストが終了していれば、メモリテスト動作が終了する。全てのテストが終了していなければ、新たにテスト対象メモリへの書き込みを実施し（ステップＳ３）、以下同様にテストを繰り返す。
【００７０】
また読み出したデータと予め用意しておいた期待値とを比較したとき（ステップＳ６）、不一致である場合には、ステップＳ２で予めプロセッサに設定しておいた動作を開始する（ステップＳ８）。テスト終了割り込み要求を受理する設定にした場合には終了割り込み処理が動作し（ステップＳ１１）、直ちにメモリテストが終了する。故障調査モードを設定した場合には、故障アドレス保持動作を実施し（ステップＳ１０）、実施後はステップＳ６で一致した場合と同様に全てのデータを読み出し比較したかどうかを判定して、以下同様にテストを繰り返す。
【００７１】
本実施の形態では、図中のテスト対象メモリへの書き込み実施（ステップＳ３）のための全ライト命令を実施できる構成と、テスト対象メモリからの読み出し実施（ステップＳ５）のための全リード命令を実施できる構成および全リード命令で読み出したデータを同時に判定できる構成を設けることにより、４つのバンクを同時にテストすることで、テストステップ数を１バンク分と同等にできる。
【００７２】
以上のように本実施の形態によれば、複数のメモリバンクを同時にテストするため、テストステップ数を低減し、ＬＳＩのメモリテスト時間を短縮することができる。これによりＬＳＩ全体のテスト時間が短縮され、検査コストが低減される。また、テストパターン発生、すなわちメモリへのアドレス出力、データ出力、リード・ライト制御信号出力をプロセッサの既存の機能を使用して実施するため回路増加を抑えることができる。これによりＬＳＩテスト用回路を挿入することにより発生する面積増加、消費電力増加、動作速度低下が低減される。
【００７３】
【発明の効果】
本発明によれば、複数のメモリバンクを同時にテストすることができ、テストステップ数を低減し、メモリテスト時間を短縮することができる。また、メモリバンク選択手段に全リード命令および全ライト命令で全てのメモリバンクを選択する機能を付加したことと、メモリテスト判定部を設けたこと以外はプロセッサコアの既存の機能を使用して実施するため、回路増加を抑えることができる。また、プロセッサコアの既存の機能を使用することで、高速にメモリテストを実施でき、アイソレーションテストにおけるメモリをテストするための端子を不要とし、また動作速度の問題もない。
【図面の簡単な説明】
【図１】本発明の実施の形態の半導体装置の全体構成図
【図２】本発明の実施の形態におけるメモリ動作のタイミングチャート
【図３】本発明の実施の形態におけるプロセッサコア部およびデータ判定部の構成図
【図４】本発明の実施の形態におけるデータメモリポインタ部の構成図
【図５】本発明の実施の形態におけるデータメモリポインタ部の動作表を示す図
【図６】本発明の実施の形態におけるバンクセレクト信号真理値表を示す図
【図７】本発明の実施の形態におけるデータ判定回路の真理値表を示す図
【図８】本発明の実施の形態におけるデータ判定回路におけるデータ判定信号の出力回路図
【図９】本発明の実施の形態における不良アドレス保持部のアドレス保持動作のタイミングチャート
【図１０】本発明の実施の形態におけるギャロッピングテストの手順図
【図１１】本発明の実施の形態におけるダイアゴナルギャロッピングテストの動作手順図
【図１２】本発明の実施の形態におけるメモリテストのフローチャート
【符号の説明】
１００　ＬＳＩ
１０１　プロセッサコア部
１０２　メモリバンク０
１０３　メモリバンク１
１０４　メモリバンク２
１０５　メモリバンク３
１０６　データ判定部
１１０　アドレス
１２０　バンクセレクト信号
１２１　メモリバンク０セレクト信号
１２２　メモリバンク１セレクト信号
１２３　メモリバンク２セレクト信号
１２４　メモリバンク３セレクト信号
１３０　リード・ライト信号
１４０　クロック
１５０　メモリバンク０リードデータ
１５１　メモリバンク１リードデータ
１５２　メモリバンク２リードデータ
１５３　メモリバンク３リードデータ
１６０　転送バス
１６１　期待値レジスタ選択信号
１７０　データ判定信号
１８１　メモリリードデータ
１９０　メモリバンク０リードデータ用トライステートバッファ
１９１　メモリバンク１リードデータ用トライステートバッファ
１９２　メモリバンク２リードデータ用トライステートバッファ
１９３　メモリバンク３リードデータ用トライステートバッファ
２００　クロック発生部
２０１　命令メモリ
２０２　命令でコード部
２０３　データメモリポインタ部
２０４　バンクセレクト信号部
２０６　汎用レジスタ０
２０７　汎用レジスタ１
２０９　期待値レジスタ０
２１０　期待値レジスタ１
２１１　データ判定回路
２１２　セレクタ
２１３　割り込み制御部
２１４　不良アドレス保持部
２３０　命令コード
２３１　ポインタ選択信号
２３２　ポインタ更新信号
２３４　全バンクセレクト信号
２４０　汎用レジスタ選択信号
３１０　ビット０データ判定信号
３１１　ビット１６データ判定信号
３５０　ＯＲゲート
３６０　ビット０データ判定回路
３７０　ビット１６データ判定回路
４１０　ポインタ０
４１１　ポインタ１
４１２　ポインタ２
４１３　ポインタ３
４１４　増分レジスタ
４１５　加算器
４１６　更新ポインタセレクタ
４１７　使用ポインタセレクタ
４１８　ポインタ更新値セレクタ
【図１】
2004079032.tif 000003
【図２】
2004079032.tif 000004
【図３】
2004079032.tif 000005
【図４】
2004079032.tif 000006
【図５】
2004079032.tif 000007
【図６】
2004079032.tif 000008
【図７】
2004079032.tif 000009
【図８】
2004079032.tif 000010
【図９】
2004079032.tif 000011
【図１０】
2004079032.tif 000012
【図１１】
2004079032.tif 000013
【図１２】
2004079032.tif 000014