(57)【要約】【課題】簡単な回路構成で高精度のテスタを不要とするスキャンパステスト技術を提供する。【解決手段】スキャンパステスト時にテストデータとして使用されるスキャン入力データと、テスト結果に対する期待値データであるスキャン出力期待値データとを、半導体集積回路１が内蔵する、互いに独立して設けられた２つのＲＡＭにそれぞれ記憶させる。そして、スキャンパステスト時に、一方のＲＡＭからスキャン入力データを読み出してスキャンパスに入力する。そして、スキャンパスから出力されるスキャン結果データと、他方のＲＡＭから読み出したスキャン出力期待値データとを半導体集積回路１の内部の比較回路６で比較する。【選択図】        図１
2004271438.tif 000002
【特許請求の範囲】
【請求項１】
内部の第１の回路に対してスキャンパステストを実行するテスト動作モードと、通常動作モードとを有する半導体集積回路であって、
前記テスト動作モード時にスキャン入力データが書き込まれ、前記通常動作モード時にもアクセスされる第１の記憶回路と、
前記第１の記憶回路とは独立して設けられ、前記テスト動作モード時にスキャン出力期待値データが書き込まれ、前記通常動作モード時にもアクセスされる第２の記憶回路と、
前記テスト動作モード時に、前記第１の記憶回路から出力される前記スキャン入力データが入力される少なくとも一つのスキャンパスを構成する第２の回路と、
前記テストモード時に、前記スキャンパステストの結果を示す前記スキャンパスの出力データと、前記第２の記憶回路から出力される前記スキャン出力期待値データとを互いに比較し、その結果を出力する比較回路と
を備える、半導体集積回路。
【請求項２】
前記第１の記憶回路は、互いに独立して設けられた複数の第３の記憶回路を含み、
前記スキャン入力データは、分割されて前記複数の第３の記憶回路のそれぞれに記憶され、
前記複数の第３の記憶回路は一つの記憶装置として動作する、請求項１に記載の半導体集積回路。
【請求項３】
前記第２の記憶回路は、互いに独立して設けられた複数の第４の記憶回路を含み、
前記スキャン出力期待値データは、分割されて前記複数の第４の記憶回路のそれぞれに記憶され、
前記複数の第４の記憶回路は一つの記憶装置として動作する、請求項１及び請求項２のいずれか一つに記載の半導体集積回路。
【請求項４】
前記第１の記憶回路はパラレルデータを出力し、
前記第２の回路は、前記パラレルデータのビット数と同じ数の前記スキャンパスを構成し、
前記スキャンパスには、前記パラレルデータがそれぞれ入力される、請求項１乃至請求項３のいずれか一つに記載の半導体集積回路。
【請求項５】
前記第１の記憶回路はパラレルデータを出力し、
前記第１の記憶回路の前記パラレルデータをシリアルデータに変換して出力する第１のパラレル・シリアル変換回路を更に備え、
前記スキャンパスには、前記パラレル・シリアル変換回路から出力される前記スキャン入力データが入力される、請求項１乃至請求項３のいずれか一つに記載の半導体集積回路。
【請求項６】
前記第２の記憶回路はパラレルデータを出力し、
前記第２の記憶回路の前記パラレルデータをシリアルデータに変換して出力する第２のパラレル・シリアル変換回路を更に備え、
前記比較回路には、前記第２のパラレル・シリアル変換回路から出力される前記スキャン出力期待値データが入力される、請求項５に記載の半導体集積回路。
【請求項７】
前記比較回路から出力される比較結果と、前記第２の記憶回路に入力されるアドレスとに基づいて、前記比較結果が比較エラーを示す際の前記スキャン出力期待値データの前記第２の記憶回路におけるアドレスを出力する第３の回路を更に備える、請求項１乃至請求項４のいずれか一つに記載の半導体集積回路。
【請求項８】
前記比較回路から出力される比較結果と、前記第２の記憶回路に入力されるアドレスとに基づいて、前記比較結果が比較エラーを示す際の前記スキャン出力期待値データの前記第２の記憶回路におけるアドレスを、前記第１の記憶回路に記憶させるエラー情報書き込み回路を更に備える、請求項１乃至請求項４のいずれか一つに記載の半導体集積回路。
【請求項９】
前記比較回路から出力される比較結果と、前記第２の記憶回路に入力されるアドレスとに基づいて、前記比較結果が比較エラーを示す際の前記スキャン出力期待値データの前記第２の記憶回路におけるアドレスを、前記第２の記憶回路に記憶させるエラー情報書き込み回路を更に備える、請求項１乃至請求項４のいずれか一つに記載の半導体集積回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、スキャンパステストに関する。
【０００２】
【従来の技術】
従来より、半導体集積回路のテスト手法としてスキャンパステストが知られている。このスキャンパステストは、半導体集積回路に設けられた複数のフリップフロップ（以後、単に「ＦＦ」と呼ぶ）を直列に接続することによって、スキャンパスと呼ばれるシフトレジスタを形成し、かかるシフトレジスタを用いて被テスト回路、例えばロジック回路内の組み合わせ回路をテストする手法である。
【０００３】
一般的に、スキャンパステストを行うためには、スキャンパスに入力するテストデータを生成したり、スキャンパステストの結果とその期待値との比較を行って、半導体集積回路の製造の良否を判定するテスタが必要である。一般的にテスタは、テスト結果と期待値との比較を行う比較器を備えているが、スキャンパスを高速で動作させて短時間でテストを行う場合には、高精度の比較器が必要となり、高価なテスタを採用する必要がある。
【０００４】
そこで、特許文献１には、高価なテスタを不要とするスキャンパステスト技術が提案されている。特許文献１に記載の技術では、スキャンパスに入力するテストデータと、期待値データとを半導体集積回路の内蔵メモリに記憶し、テスト時には、かかるメモリからテストデータを読み出してスキャンパスに設定し、被テスト回路の出力データとメモリから読み出した期待値データとを、内蔵の比較回路で比較している。これによって、半導体集積回路の外部に高精度の比較器が不要となる。
【０００５】
【特許文献１】
特開昭６３−１５４５６号公報
【０００６】
【発明が解決しようとする課題】
しかしながら、特許文献１に記載の技術では、一つのメモリにテストデータと期待値データとを記憶しているため、メモリの動作制御が複雑になる。具体的には、同一メモリから、テストデータと期待値データとを読み出すため、メモリに入力するアドレスを切り替える必要が生じる。更に、メモリから読み出されたテストデータと期待値データとは互いに異なる回路に出力されるため、データの出力先を切り替える必要がある。その結果、半導体集積回路の回路規模が増大する。
【０００７】
そこで、本発明は上述の問題に鑑みて成されたものであり、簡単な回路構成で高精度のテスタを不要とするスキャンパステスト技術を提供することを目的とする。
【０００８】
【課題を解決するための手段】
この発明に係る半導体集積回路は、内部の第１の回路に対してスキャンパステストを実行するテスト動作モードと、通常動作モードとを有する半導体集積回路であって、前記テスト動作モード時にスキャン入力データが書き込まれ、前記通常動作モード時にもアクセスされる第１の記憶回路と、前記第１の記憶回路とは独立して設けられ、前記テスト動作モード時にスキャン出力期待値データが書き込まれ、前記通常動作モード時にもアクセスされる第２の記憶回路と、前記テスト動作モード時に、前記第１の記憶回路から出力される前記スキャン入力データが入力される少なくとも一つのスキャンパスを構成する第２の回路と、前記テストモード時に、前記スキャンパステストの結果を示す前記スキャンパスの出力データと、前記第２の記憶回路から出力される前記スキャン出力期待値データとを互いに比較し、その結果を出力する比較回路とを備える。
【０００９】
【発明の実施の形態】
実施の形態１．
図１は本発明の実施の形態１に係る半導体集積回路１の構成を示すブロック図である。図１に示されるように、本実施の形態１に係る半導体集積回路１は、被テスト回路２と、スキャンＦＦ群３と、スキャン入力データ出力回路４と、期待値データ出力回路５とを備えており、これらの回路は同一半導体基板上に集積されている。半導体集積回路１の動作モードには、被テスト回路２に対してスキャンパステストを実行するテスト動作モードと、本来の機能を実行して通常動作を行う通常動作モードとがあり、これらの動作モードは後述するテスト信号ＴＥＳＴによって切り替えられる。
【００１０】
図２はスキャン入力データ出力回路４の構成を、図３は期待値データ出力回路５の構成をそれぞれ示すブロック図である。図２に示されるように、スキャン入力データ出力回路４は、ＲＡＭ４０と、テスト用アドレスカウンタ４１と、通常動作用アドレス回路４２と、通常動作用ＲＡＭ書き込み回路４３と、通常動作用ＲＡＭ読み出し回路４４と、セレクタ４５〜４７と、通常動作用Ｗ／Ｒ回路４８とを備えている。また、図３に示されるように、期待値データ出力回路５は、ＲＡＭ４０とは独立して設けられたＲＡＭ５０と、テスト用アドレスカウンタ５１と、通常動作用アドレス回路５２と、通常動作用ＲＡＭ書き込み回路５３と、通常動作用ＲＡＭ読み出し回路５４と、セレクタ５５〜５７と、通常動作用Ｗ／Ｒ回路５８とを備えている。
【００１１】
テスト用アドレスカウンタ４１，５１はそれぞれｍビットのカウンタであって、互いに共通のクロック信号（図示せず）が入力されている。このクロック信号は半導体集積回路１の外部から入力される信号であって、各テスト用アドレスカウンタ４１，５１は、当該クロック信号の立ち上がりでカウント動作を行う。以後、テスト用アドレスカウンタ４１，５１に入力されるクロック信号を「クロック信号ＣＬＫ」と呼ぶ。
【００１２】
テスト用アドレスカウンタ４１，５１におけるカウント動作の開始及び停止は、半導体集積回路１の外部から入力されるカウンタ制御信号ＣＣＮＴ１，ＣＣＮＴ２によってそれぞれ制御される。テスト用アドレスカウンタ４１は、カウンタ制御信号ＣＣＮＴ１が“１”のときカウントを開始し、“０”のときカウントを停止する。また、テスト用アドレスカウンタ５１は、カウンタ制御信号ＣＣＮＴ２が“１”のときカウントを開始し、“０”のときカウントを停止する。
【００１３】
テスト用アドレスカウンタ４１は、そのカウント値をｍビットのアドレスＡＤ１＜ｍ−１：０＞としてセレクタ４５に出力し、テスト用アドレスカウンタ５１は、そのカウント値をｍビットのアドレスＡＤ２＜ｍ−１：０＞としてセレクタ５５に出力する。なお、テスト用アドレスカウンタ４１，５１には図示しないリセット信号も入力され、このリセット信号でそれぞれのカウント値がリセットされる。
【００１４】
通常動作用アドレス回路４２は、通常動作モード時にＲＡＭ４０に入力するアドレスを生成してセレクタ４５に出力し、通常動作用アドレス回路５２は、通常動作モード時にＲＡＭ５０に入力するアドレスを生成してセレクタ５５に出力する。
【００１５】
通常動作用ＲＡＭ書き込み回路４３は、通常動作モード時にＲＡＭ４０に書き込むデータを生成してセレクタ４６に出力し、通常動作用ＲＡＭ書き込み回路５３は、通常動作モード時にＲＡＭ５０に書き込むデータを生成してセレクタ５６に出力する。通常動作用ＲＡＭ書き込み回路４３，５３のそれぞれは、例えば、図示しない演算回路の演算結果を出力したり、半導体集積回路１の外部に設けられたメモリからのデータを出力したりする。
【００１６】
通常動作用ＲＡＭ読み出し回路４４，５４は、それぞれ通常動作モード時に実質的に機能する回路であって、通常動作モード時にＲＡＭ４０，５０から出力されるデータをそれぞれ受け取って、図示しないＣＰＵなどに出力する。
【００１７】
セレクタ４５は、半導体集積回路１の動作モードを制御するテスト信号ＴＥＳＴに基づいて、テスト用アドレスカウンタ４１の出力と通常動作用アドレス回路４２の出力とのどちらか一方を選択してｍビットのアドレスＡＤＲ１＜ｍ−１：０＞としてＲＡＭ４０に出力する。そして、セレクタ５５は、テスト信号ＴＥＳＴに基づいて、テスト用アドレスカウンタ５１の出力と通常動作用アドレス回路５２の出力とのどちらか一方を選択してｍビットのアドレスＡＤＲ２＜ｍ−１：０＞としてＲＡＭ５０に出力する。
【００１８】
セレクタ４５，５５は、テスト信号ＴＥＳＴが“１”のときテスト用アドレスカウンタ４１，５１の出力をそれぞれ選択し、“０”のとき通常動作用アドレス回路４２，５２の出力をそれぞれ選択して出力する。なお、テスト信号ＴＥＳＴは半導体集積回路１の外部から入力される。
【００１９】
セレクタ４６は、テスト信号ＴＥＳＴに基づいて、ｎビットのスキャン入力データＳＩＮ＜ｎ−１：０＞と、通常動作用ＲＡＭ書き込み回路４３の出力とのどちらか一方を選択して、ｎビットのデータＤＩＮ１＜ｎ−１：０＞としてＲＡＭ４０に出力する。ここで、スキャン入力データＳＩＮ＜ｎ−１：０＞は、後述するスキャンパスに設定される、スキャンパテスト時のテストデータであって、半導体集積回路１の外部から入力される。
【００２０】
セレクタ４６は、テスト信号ＴＥＳＴが“１”のときスキャン入力データＳＩＮ＜ｎ−１：０＞を選択し、“０”のとき通常動作用ＲＡＭ書き込み回路４３の出力を選択して出力する。
【００２１】
セレクタ５６は、テスト信号ＴＥＳＴに基づいて、ｎビットのスキャン出力期待値データＳＥＤ＜ｎ−１：０＞と、通常動作用ＲＡＭ書き込み回路５３の出力とのどちらか一方を選択して、ｎビットのデータＤＩＮ２＜ｎ−１：０＞としてＲＡＭ５０に出力する。ここで、スキャン出力期待値データＳＥＤ＜ｎ−１：０＞は、スキャンパステストにおけるテスト結果に対する期待値データであって、半導体集積回路１の外部から入力される。
【００２２】
セレクタ５６は、テスト信号ＴＥＳＴが“１”のときスキャン出力期待値データＳＥＤ＜ｎ−１：０＞を選択し、“０”のとき通常動作用ＲＡＭ書き込み回路５３の出力を選択して出力する。
【００２３】
ＲＡＭ４０，５０のそれぞれは、例えばＳＲＡＭやＤＲＡＭなどの記憶回路である。ＲＡＭ４０，５０のデータ幅はともにｎビットであって、アドレス幅はともにｍビットである。
【００２４】
ＲＡＭ４０，５０のアドレス入力端子ａｄｒには、アドレスＡＤＲ１＜ｍ−１：０＞，ＡＤＲ２＜ｍ−１：０＞がそれぞれ入力される。
【００２５】
ＲＡＭ４０，５０のデータ入力端子ＤＩには、データＤＩＮ１＜ｎ−１：０＞，ＤＩＮ２＜ｎ−１：０＞がそれぞれ入力される。そして、ＲＡＭ４０，５０のデータ出力端子ＤＯからは、記憶されているデータがｎビットのデータＤＯＵＴ１＜ｎ−１：０＞，ＤＯＵ２＜ｎ−１：０＞としてそれぞれ出力される。
【００２６】
ＲＡＭ４０，５０の制御端子Ｗ／Ｒには、セレクタ４７，５７の出力がそれぞれ入力されており、これらの入力信号によってＲＡＭ４０，５０のリードモード及びライトモードが切り替えられる。具体的には、セレクタ４７，５７の出力が“１”のときにはライトモードとなり、“０”のときにはリードモードとなる。なお、各ＲＡＭ４０，５０にも、上述のクロック信号ＣＬＫが入力されており、ＲＡＭ４０，５０は、クロック信号ＣＬＫの立ち上がりでデータを出力したり、あるいはデータが書き込まれる。
【００２７】
通常動作用Ｗ／Ｒ回路４８は、通常動作モード時のＲＡＭ４０のリードモード及びライトモードを切り替える制御信号を生成してセレクタ４７に出力する。そして、通常動作用アドレス回路５８は、通常動作モード時のＲＡＭ５０のリードモード及びライトモードを切り替える制御信号を生成してセレクタ５７に出力する。
【００２８】
セレクタ４７は、テスト信号ＴＥＳＴに基づいて、ＲＡＭロード信号ＲＬＤ１と、通常動作用Ｗ／Ｒ回路４８の出力とのどちらか一方を選択してＲＡＭ４０に出力する。ここで、ＲＡＭロード信号ＲＬＤ１は、テスト動作モード時のＲＡＭ４０のリードモード及びライトモードを切り替える制御信号であって、半導体集積回路１の外部から入力される。
【００２９】
セレクタ４７は、テスト信号ＴＥＳＴが“１”のときＲＡＭロード信号ＲＬＤ１を選択し、“０”のとき通常動作用Ｗ／Ｒ回路４８の出力を選択して出力する。
【００３０】
セレクタ５７は、テスト信号ＴＥＳＴに基づいて、ＲＡＭロード信号ＲＬＤ２と、通常動作用Ｗ／Ｒ回路５８の出力とのどちらか一方を選択してＲＡＭ５０に出力する。ここで、ＲＡＭロード信号ＲＬＤ２は、テスト動作モード時のＲＡＭ５０のリードモード及びライトモードを切り替える制御信号であって、半導体集積回路１の外部から入力される。
【００３１】
セレクタ５７は、テスト信号ＴＥＳＴが“１”のときＲＡＭロード信号ＲＬＤ２を選択し、“０”のとき通常動作用Ｗ／Ｒ回路５８の出力を選択して出力する。
【００３２】
図４はスキャンＦＦ群３と被テスト回路２の構成を示すブロック図である。図４に示されるように、スキャンＦＦ群３は、ｎ個（ｎ≧１）のスキャンＦＦ群３０ｇ１〜３０ｇｎで構成されており、各スキャンＦＦ群３０ｇ１〜３０ｇｎは、例えば６つのスキャンＦＦ３１を有している。
【００３３】
被テスト回路２は、例えばロジック回路中の組み合わせ回路であって、複数の領域２０ａ１〜２０ａｎ，２０ｂ１〜２０ｂｎ，２０ｃ１〜２０ｃｎ（ｎ≧１）に区分されている。以後、スキャンＦＦ群３０ｇ１〜３０ｇｎをまとめて「スキャンＦＦ群３０ｇ」と、領域２０ａ１〜２０ａｎ，２０ｂ１〜２０ｂｎ，２０ｃ１〜２０ｃｎをまとめて「領域２０ａｂｃ」と呼ぶ場合がある。
【００３４】
スキャンＦＦ群３０ｇ１と、領域２０ａ１，２０ｂ１，２０ｃ１とで一つの組を成している。同様にして、スキャンＦＦ群３０ｇ２と領域２０ａ２，２０ｂ２，２０ｃ２、スキャンＦＦ群３０ｇ３と領域２０ａ３，２０ｂ３，２０ｃ３、・・・、スキャンＦＦ群３０ｇｎと領域２０ａｎ，２０ｂｎ，２０ｃｎとで、それぞれ一つの組を成している。以後、これらの組について共通する構成及び動作について説明する場合には、スキャンＦＦ群３０ｇ及び領域２０ａｂｃのうち、任意の一つの組を構成するものを、スキャンＦＦ群３０ｇｘ及び領域２０ａｘ，２０ｂｘ，２０ｃｘ（１≦ｘ≦ｎ）とそれぞれ呼ぶ。
【００３５】
図５はスキャンＦＦ群３０ｇのスキャンＦＦ３１の構成を示すブロック図である。図５に示されるように、スキャンＦＦ３１は、テスト信号ＴＥＳＴに基づいて、２つの入力データのどちらか一方を選択して出力するセレクタ３１ｂと、セレクタ３１ｂの出力を、ＲＡＭ４０等に入力されているクロック信号ＣＬＫ（図示せず）の立ち上がりで保持して出力するＦＦ３１ａとを備えている。
【００３６】
図４に示されるように、スキャンＦＦ群３０ｇｘのスキャンＦＦ３１は互いに直列に接続されている。スキャンＦＦ群３０ｇｘのスキャンＦＦ３１のうち、最初段から３段目のスキャンＦＦ３１のそれぞれには、領域２０ａｘの出力データが入力され、４段目から最終段までのスキャンＦＦ３１のそれぞれには、領域２０ｂｘの出力データが入力される。
【００３７】
また、スキャンＦＦ群３０ｇｘのスキャンＦＦ３１のうち、最初段を除くスキャンＦＦ３１のそれぞれには、前段のスキャンＦＦ３１の出力データも入力される。そして、スキャンＦＦ群３０ｇ１〜３０ｇｎの最初段のスキャンＦＦ３１には、ＲＡＭ４０から出力されるデータＤＯＵＴ１＜０＞〜ＤＯＵＴ１＜ｎ−１＞がそれぞれ入力される。
【００３８】
スキャンＦＦ群ｇｘにおける最初段のスキャンＦＦ３１のセレクタ３１ｂは、テスト信号ＴＥＳＴが“１”のときＲＡＭ４０の出力データを選択し、“０”のとき領域２０ａｘの出力データを選択してＦＦ３１ａに出力する。ＦＦ３１ａは、入力データを保持して次段のスキャンＦＦ３１及び領域２０ｂｘに出力する。
【００３９】
スキャンＦＦ群ｇｘにおける２，３段目のスキャンＦＦ３１の各セレクタ３１ｂは、テスト信号ＴＥＳＴが“１”のとき前段のスキャンＦＦ３１の出力データを選択し、“０”のとき領域２０ａｘの出力データを選択してＦＦ３１ａに出力する。ＦＦ３１ａは、入力データを保持して次段のスキャンＦＦ３１及び領域２０ｂｘに出力する。
【００４０】
スキャンＦＦ群ｇｘにおける４，５段目のスキャンＦＦ３１の各セレクタ３１ｂは、テスト信号ＴＥＳＴが“１”のとき前段のスキャンＦＦ３１の出力データを選択し、“０”のとき領域２０ｂｘの出力データを選択してＦＦ３１ａに出力する。ＦＦ３１ａは、入力データを保持して次段のスキャンＦＦ３１及び領域２０ｃｘに出力する。
【００４１】
スキャンＦＦ群ｇｘにおける最終段のスキャンＦＦ３１のセレクタ３１ｂは、テスト信号ＴＥＳＴが“１”のとき前段のスキャンＦＦ３１の出力データを選択し、“０”のとき領域２０ｂｘの出力データを選択してＦＦ３１ａに出力する。ＦＦ３１ａは、入力データを保持して領域２０ｃｘ及び比較回路６に出力する。ここで、スキャンＦＦ群ｇ１〜ｇｎにおける最終段のスキャンＦＦ３１の出力データを、それぞれスキャン出力データＳＯＵＴ＜０＞〜ＳＯＵＴ＜ｎ−１＞と呼ぶ。
【００４２】
上述のように、テスト信号ＴＥＳＴが“１”を示す場合には、スキャンＦＦ群ｇｘにおける６つのスキャンＦＦ３１は、「スキャンパス」と呼ばれるシフトレジスタを構成する。そして、テスト信号ＴＥＳＴが“０”を示す場合には、それぞれに被テスト回路２の出力データが設定される。以後、スキャンＦＦ群ｇ１〜ｇｎが構成するスキャンパスをそれぞれ「スキャンパスＳＰ１〜ＳＰｎ」と呼ぶ。
【００４３】
図６は比較回路６の構成を示すブロック図である。図６に示されるように、比較回路６は、ＥＸＯＲ回路６０と、ＯＲ回路６１と、ＦＦ６２とを備えており、データＤＯＵＴ２＜ｎ−１：０＞とスキャン出力データＳＯＵＴ＜ｎ−１：０＞との比較を行い、互いに一致すれば“０”を、互いに不一致であれば“１”を出力する。
【００４４】
ＥＸＯＲ回路６０は、データＤＯＵＴ２＜０＞とスキャン出力データＳＯＵＴ＜０＞との排他的論理和を演算して出力する。同様に、データＤＯＵＴ２＜１＞とスキャン出力データＳＯＵＴ＜１＞、データＤＯＵＴ２＜２＞とスキャン出力データＳＯＵＴ＜２＞、・・・、データＤＯＵＴ２＜ｎ−１＞とスキャン出力データＳＯＵＴ＜ｎ−１＞との排他的論理和をそれぞれ演算して出力する。
【００４５】
ＯＲ回路６１はＥＸＯＲ回路６０から出力されるｎビットのデータの論理和を演算して出力する。つまり、ＥＸＯＲ回路６０から出力されるｎビットのデータのうち、少なくとも１ビットのデータが“１”を示す場合、ＯＲ回路６１は“１”を出力し、全てのビットが“０”の場合、“０”を出力する。
【００４６】
ＦＦ６２はＯＲ回路６１の出力を、ＲＡＭ４０等に入力されているクロック信号ＣＬＫ（図示せず）の立ち上がりで保持して比較結果データＣＯＭＰとして出力する。
【００４７】
次に、本実施の形態１に係る半導体集積回路１の動作について説明する。テスト信号ＴＥＳＴを“０”にすると、半導体集積回路１は通常動作モードになり、通常動作を行って本来の機能を実行する。例えば、半導体集積回路１がデジタルカメラに組み込まれている場合には、当該半導体集積回路１は画像情報処理等を実行する。このとき、ＲＡＭ４０のアドレス入力端子ａｄｒ、データ入力端子ＤＩ及び制御端子Ｗ／Ｒに、通常動作用アドレス回路４２、通常動作用ＲＡＭ書き込み回路４３及び通常動作用Ｗ／Ｒ回路４８の出力がそれぞれ接続される。そして、ＲＡＭ４０に対してライトアクセスやリードアクセスが実行される。
【００４８】
また、ＲＡＭ５０のアドレス入力端子ａｄｒ、データ入力端子ＤＩ及び制御端子Ｗ／Ｒには、通常動作用アドレス回路５２、通常動作用ＲＡＭ書き込み回路５３及び通常動作用Ｗ／Ｒ回路５８の出力がそれぞれ接続される。そして、ＲＡＭ５０に対してライトアクセスやリードアクセスが実行される。
【００４９】
被テスト回路２に対してスキャンパステストを実行する際、まずテスト信号ＴＥＳＴを“１”にする。これにより、半導体集積回路１がテスト動作モードとなる。次に、ＲＡＭ４０にスキャン入力データＳＩＮ＜ｎ−１：０＞を、ＲＡＭ５０にスキャン出力期待値データＳＥＤ＜ｎ−１：０＞をそれぞれ書き込む。以下に具体的に説明する。
【００５０】
ＲＡＭロード信号ＲＬＤ１を“１”にして、ＲＡＭ４０をライトモードにする。テスト用アドレスカウンタ４１のカウント値を図示しないリセット信号でリセットし、カウンタ制御信号ＣＣＮＴ１を“１”にして、テスト用アドレスカウンタ４１のカウント値を“０”からカウントアップさせる。同時に、半導体集積回路１の外部のテスタで生成されたｎビットのスキャン入力データＳＩＮ＜ｎ−１：０＞を、クロック信号ＣＬＫの立ち上がりに同期させて、セレクタ４６を介してＲＡＭ４０のデータ入力端子ＤＩに入力する。
【００５１】
これにより、アドレスＡＤＲ１＜ｍ−１：０＞が“０”から１つずつ増加し、当該アドレスＡＤＲ１＜ｍ−１：０＞が示すＲＡＭ４０のメモリ領域に、スキャン入力データＳＩＮ＜ｎ−１：０＞がｎビット単位で書き込まれる。そして、ＲＡＭ４０に所定のデータ量を書き込むと、カウンタ制御信号ＣＣＮＴ１を“０”にしてテスト用アドレスカウンタ４１のカウントを停止し、ＲＡＭロード信号ＲＬＤ１を“０”にしてＲＡＭ４０をリードモードにする。これにより、スキャン入力データＳＩＮ＜ｎ−１：０＞のＲＡＭ４０へのロードが完了する。
【００５２】
次に、ＲＡＭロード信号ＲＬＤ２を“１”にして、ＲＡＭ５０をライトモードにする。テスト用アドレスカウンタ５１のカウント値を図示しないリセット信号でリセットし、カウンタ制御信号ＣＣＮＴ２を“１”にして、テスト用アドレスカウンタ５１のカウント値を“０”からカウントアップさせる。同時に、クロック信号ＣＬＫの立ち上がりに同期させて、テスタで生成されたｎビットのスキャン出力期待値データＳＥＤ＜ｎ−１：０＞をセレクタ５６を介してＲＡＭ５０のデータ入力端子ＤＩに入力する。
【００５３】
これにより、アドレスＡＤＲ２＜ｍ−１：０＞が“０”から１つずつ増加し、当該アドレスＡＤＲ２＜ｍ−１：０＞が示すＲＡＭ５０のメモリ領域にスキャン出力期待値データＳＥＤ＜ｎ−１：０＞がｎビット単位で書き込まれる。そして、ＲＡＭ５０に所定のデータ量を書き込むと、カウンタ制御信号ＣＣＮＴ２を“０”にしてテスト用アドレスカウンタ５１のカウントを停止し、ＲＡＭロード信号ＲＬＤ２を“０”にしてＲＡＭ５０をリードモードにする。これにより、スキャン出力期待値データＳＥＤ＜ｎ−１：０＞のＲＡＭ５０へのロードが完了する。
【００５４】
次に、ＲＡＭ４０からスキャン入力データＳＩＮ＜ｎ−１：０＞を読み出して、スキャンＦＦ群３０ｇのスキャンＦＦ３１に設定する。具体的には、ＲＡＭロード信号ＲＬＤ１を“０”にしてＲＡＭ４０をリードモードにする。そして、テスト用アドレスカウンタ４１のカウント値をリセットし、テスト用アドレスカウンタ４１のカウント値を“０”からカウントアップさせる。これにより、アドレスＡＤＲ１＜ｍ−１：０＞が“０”から１つずつ増加し、当該アドレスＡＤＲ１＜ｍ−１：０＞が示すＲＡＭ４０のメモリ領域に格納されているスキャン入力データＳＩＮ＜ｎ−１：０＞が、クロック信号ＣＬＫの立ち上がりに同期してｎビット単位でデータＤＯＵＴ１＜ｎ−１：０＞として出力される。
【００５５】
このとき、スキャンＦＦ群ｇ１〜ｇｎはそれぞれスキャンパスＳＰ１〜ＳＰｎを構成する。従って、ＲＡＭ４０から読み出されたスキャン入力データＳＩＮ＜０＞〜ＳＩＮ＜ｎ−１＞は、それぞれスキャンパスＳＰ１〜ＳＰｎに入力される。そして、次のクロック信号ＣＬＫが立ち上がると、スキャンパスＳＰ１〜ＳＰｎは入力データをシフトし、同時に新たなスキャン入力データＳＩＮ＜０＞〜ＳＩＮ＜ｎ−１＞がそれぞれ入力される。これにより、被テスト回路２への入力信号となるテストデータが、スキャンＦＦ３１のＦＦ３１ａに設定される。
【００５６】
クロック信号ＣＬＫが順次立ち上がり、スキャンパスＳＰ１〜ＳＰｎのそれぞれにおける６つのＦＦ３１ａ全てにテストデータが設定されると、テスト信号ＴＥＳＴを“０”にして半導体集積回路１を通常動作モードにする。同時に、カウンタ制御信号ＣＣＮＴ１を“０”にしてテスト用アドレスカウンタ４１のカウント動作を停止する。これにより、各スキャンパスＳＰ１〜ＳＰｎに設定されたテストデータ、つまりスキャン入力データＳＩＮ＜ｎ−１：０＞が被テスト回路２に入力されて、被テスト回路２は通常のスキャン動作を行う。
【００５７】
スキャンＦＦ群３０ｇｘにおいて、最初段から３段目のスキャンＦＦ３１のＦＦ３１ａに設定されたテストデータは、被テスト回路２の領域２０ｂｘに入力される。また、４段目から最終段のスキャンＦＦ３１のＦＦ３１ａに設定されたテストデータは領域２０ｃｘに入力される。
【００５８】
そして、次のクロック信号ＣＬＫの立ち上がりで、被テスト回路２の出力データ、つまりスキャンパステストの結果を示すデータ（以後、「スキャン結果データ」と呼ぶ）がスキャンＦＦ３１に設定される。
【００５９】
スキャンＦＦ群３０ｇｘにおいて、最初段から３段目のスキャンＦＦ３１のＦＦ３１ａには、領域２０ａｘの出力データが設定され、４段目から最終段のスキャンＦＦ３１のＦＦ３１ａには、領域２０ｂｘの出力データが設定される。
【００６０】
次に、テスト信号ＴＥＳＴを“１”にして半導体集積回路１をテスト動作モードにし、カウンタ制御信号ＣＣＮＴ１を“１”にしてテスト用アドレスカウンタ４１のカウント動作を再開する。これにより、スキャンＦＦ群ｇ１〜ｇｎは再度それぞれスキャンパスＳＰ１〜ＳＰｎを構成する。
【００６１】
カウンタ制御信号ＣＣＮＴ１を“１”にした後、一つ目のクロック信号ＣＬＫの立ち上がりで、スキャンパスＳＰ１〜ＳＰｎから、スキャン結果データがスキャン出力データＳＯＵＴ＜０＞〜ＳＯＵＴ＜ｎ−１＞としてそれぞれ出力されて、比較回路６に入力される。そして、クロック信号ＣＬＫが立ち上がるたびに、スキャンパスＳＰ１〜ＳＰｎからスキャン結果データが出力されて、最初のテストデータに対するテスト結果が得られる。なお、スキャンパスＳＰ１〜ＳＰｎからスキャン結果データが出力されると同時に、スキャンパスＳＰ１〜ＳＰｎには次のテストデータも設定される。そして、上述の動作を繰り返すことによって、異なるテストデータに対するスキャン結果データが、スキャンパスＳＰ１〜ＳＰｎから順次出力される。
【００６２】
スキャンパスＳＰ１〜ＳＰｎから出力されるスキャン結果データは、比較回路６で、ＲＡＭ５０から読み出されたスキャン出力期待値データＳＥＤ＜ｎ−１：０＞と比較される。以下に具体的に説明する。
【００６３】
上述のように、スキャンＦＦ３１に被テスト回路２の出力データが設定された後に、テスト信号ＴＥＳＴを“１”にして半導体集積回路１をテスト動作モードにしているが、これと同時に、ＲＡＭロード信号ＲＬＤ２を“０”にして、ＲＡＭ５０をリードモードにする。そして、テスト用アドレスカウンタ５１のカウント値をリセットし、カウンタ制御信号ＣＣＮＴ２を“１”にして、テスト用アドレスカウンタ５１のカウント値を“０”からカウントアップさせる。これにより、スキャンパスＳＰ１〜ＳＰｎからのスキャン出力データＳＯＵＴ＜ｎ−１：０＞の出力タイミングに同期して、ＲＡＭ５０からスキャン出力期待値データＳＥＤ＜ｎ−１：０＞が読み出されて、データＤＯＵＴ２＜ｎ−１：０＞として比較回路６に入力される。
【００６４】
比較回路６は、データＤＯＵＴ２＜ｎ−１：０＞と、スキャン結果データを示すスキャン出力データＳＯＵＴ＜ｎ−１：０＞とをｎビット単位で比較し、全ビットが一致すれば“０”を出力し、一ビットでも不一致のデータがあれば“１”を出力する。そして、比較回路６から出力される比較結果データＣＯＭＰは、半導体集積回路１の外部に出力される。この比較結果データＣＯＭＰをモニタすることによって、半導体集積回路１の製造の良否を判定することができる。例えば、比較結果データＣＯＭＰが比較エラーを示す場合、つまり“１”を示す場合、半導体集積回路１に製造不良が発生していることになる。
【００６５】
上述のように、本実施の形態１に係る半導体集積回路１によれば、テストデータであるスキャン入力データＳＩＮ＜ｎ−１：０＞と、スキャン結果データに対する期待値データであるスキャン出力期待値データＳＥＤ＜ｎ−１：０＞とを、半導体集積回路の内部に設けられたＲＡＭ４０，５０にそれぞれ記憶している。そして、スキャン入力データＳＩＮ＜ｎ−１：０＞をＲＡＭ４０から読み出して、スキャンパスＳＰ１〜ＳＰｎに入力している。更に、ＲＡＭ４０，５０とともに同一半導体基板上に集積された比較回路６を用いて、スキャンパスＳＰ１〜ＳＰｎから出力されるスキャン結果データと、ＲＡＭ５０から読み出したスキャン出力期待値データＳＥＤ＜ｎ−１：０＞とを互いに比較している。
【００６６】
このように、本実施の形態１では、スキャンパスＳＰ１〜ＳＰｎへのテストデータの入力から、スキャン結果データと期待値データとの比較結果を得るまでの一連の動作が、半導体集積回路内で行われる。言い換えれば、この一連の動作が、同一半導体基板上に集積された回路を用いて行われる。従って、スキャンパスＳＰ１〜ＳＰｎを高速で動作させてテスト時間を短縮することが可能となり、半導体集積回路１の外部に、タイミング精度の高い比較器は不要となる。その結果、安価なテスタを用いてスキャンパステストを実行することができる。
【００６７】
更に、スキャン入力データＳＩＮ＜ｎ−１：０＞と、スキャン出力期待値データＳＥＤ＜ｎ−１：０＞とが、互いに独立して設けられたＲＡＭ４０，５０にそれぞれ記憶されているため、スキャン入力データＳＩＮ＜ｎ−１：０＞と、スキャン出力期待値データＳＥＤ＜ｎ−１：０＞とを読み出す際に、ＲＡＭ４０，５０の動作を互いに独立して制御することができる。従って、特許文献１に記載の技術とは異なり、アドレスを切り替える必要がなく、データの出力先を切り替える必要もない。従って、特許文献１に記載の技術よりも簡単な回路構成でスキャンパステストを実行することができる。
【００６８】
更に、ＲＡＭ４０，５０は、スキャンパステスト専用に設けられた記憶回路ではなく、半導体集積回路１が通常動作を行う際にもアクセスされて、記憶回路として使用されるため、回路規模を増大させること無く、半導体集積回路１内に、スキャン入力データＳＩＮ＜ｎ−１：０＞及びスキャン出力期待値データＳＥＤ＜ｎ−１：０＞を記憶させることができる。
【００６９】
また、本実施の形態１に係る半導体集積回路１では、ｎビットのパラレルデータを出力するＲＡＭ４０に、スキャン入力データＳＩＮ＜ｎ−１：０＞を記憶させている。このため、本実施の形態１のように、ＲＡＭ４０の出力データのビット数と同じｎ個のスキャンパスＳＰ１〜ＳＰｎを設けることができ、ＲＡＭ４０からのｎビットのパラレルデータをスキャンパスＳＰ１〜ＳＰｎにそれぞれ入力している。従って、本実施の形態１のように、被テスト回路２を複数の領域に区分し、かかる領域に対して同時にスキャンパステストを実行することができる。その結果、テスト時の並列度が高まり、テスト時間を短縮することができる。
【００７０】
実施の形態２．
上述の実施の形態１では、アドレス幅及びデータ幅がそれぞれｍビット及びｎビットのＲＡＭに、スキャン入力データＳＩＮ＜ｎ−１：０＞や、スキャン出力期待値データＳＥＤ＜ｎ−１：０＞を記憶させていた。しかしながら、半導体集積回路１が、ＲＡＭ４０，５０を備えておらず、ＲＡＭ４０，５０よりもアドレス幅が小さいＲＡＭや、ＲＡＭ４０，５０よりもデータ幅が小さいＲＡＭを複数備えている場合もある。このような場合には、スキャン入力データＳＩＮ＜ｎ−１：０＞や、スキャン出力期待値データＳＥＤ＜ｎ−１：０＞を一つのＲＡＭに記憶させることはできず、これらの複数のＲＡＭを有効に使用して、所望のデータ量のテストデータや期待値データを記憶させることが望まれる。
【００７１】
そこで、本実施の形態２では、テストデータや期待値データを一つのＲＡＭに記憶させることができない場合であっても、複数のＲＡＭに分割して記憶させ、かかる複数のＲＡＭを一つの記憶装置として動作させることによって、テスト時間を増大することなく、所望のデータ量のテストデータや期待値データを記憶することができる半導体集積回路を提案する。以下に具体的に説明する。
【００７２】
図７は本発明の実施の形態２に係る半導体集積回路が備えるスキャン入力データ出力回路４ａの構成を示すブロック図である。本実施の形態２に係る半導体集積回路は、上述の実施の形態１に係る半導体集積回路１において、スキャン入力データ出力回路４の替わりに、図７に示すスキャン入力データ出力回路４ａを備えるものである。
【００７３】
図７に示されるように、本実施の形態２に係るスキャン入力データ出力回路４ａは、ＲＡＭ４０ａ，４０ｂと、通常動作用アドレス回路４２ａと、通常動作用ＲＡＭ書き込み回路４３ａと、通常動作用ＲＡＭ読み出し回路４４ａと、セレクタ４５ａ，４５ｂ，４６ａ，４６ｂ，４７ａ，４７ｂ，４９と、通常動作用Ｗ／Ｒ回路４８ａと、ＡＮＤ回路１４０ａ，１４０ｂと、上述のテスト用アドレスカウンタ４１とを備えている。
【００７４】
通常動作用アドレス回路４２ａは、通常動作モード時にＲＡＭ４０ａに入力するアドレスを生成してセレクタ４５ａに出力する。更に、通常動作モード時にＲＡＭ４０ｂに入力するアドレスを生成してセレクタ４５ｂに出力する。
【００７５】
通常動作用ＲＡＭ書き込み回路４３ａは、通常動作モード時にＲＡＭ４０ａに書き込むデータを生成してセレクタ４６ａに出力する。更に、通常動作モード時にＲＡＭ４０ｂに書き込むデータを生成してセレクタ４６ｂに出力する。通常動作ＲＡＭ書き込み回路４３ａは、例えば、図示しない演算回路の演算結果を出力したり、半導体集積回路の外部に設けられたメモリからのデータを出力したりする。
【００７６】
通常動作用ＲＡＭ読み出し回路４４ａは、通常動作モード時に実質的に機能する回路であって、通常動作モード時にＲＡＭ４０ａ，４０ｂから出力されるデータを受け取って、図示しないＣＰＵなどに出力する。
【００７７】
テスト用アドレスカウンタ４１は、アドレスＡＤ１＜ｍ−１：０＞のうち、アドレスＡＤ１＜ｍ−２：０＞をセレクタ４５ａ，４５ｂのそれぞれに出力し、アドレスＡＤ１＜ｍ−１＞をセレクタ４９，ＡＮＤ回路１４０ａ，１４０ｂのそれぞれに出力する。
【００７８】
セレクタ４５ａは、アドレスＡＤ１＜ｍ−２：０＞と、通常動作用アドレス回路４２ａから出力される、通常動作モード時のＲＡＭ４０ａ用のアドレスとのどちらか一方を、上述のテスト信号ＴＥＳＴに基づいて選択してＲＡＭ４０ａに出力する。セレクタ４５ａは、テスト信号ＴＥＳＴが“１”のときアドレスＡＤ１＜ｍ−２：０＞を選択し、“０”のとき通常動作モード時のＲＡＭ４０ａ用のアドレスを選択して出力する。
【００７９】
セレクタ４５ｂは、アドレスＡＤ１＜ｍ−２：０＞と、通常動作用アドレス回路４２ａから出力される、通常動作モード時のＲＡＭ４０ｂ用のアドレスとのどちらか一方を、テスト信号ＴＥＳＴに基づいて選択してＲＡＭ４０ｂに出力する。セレクタ４５ｂは、テスト信号ＴＥＳＴが“１”のときアドレスＡＤ１＜ｍ−２：０＞を選択し、“０”のとき通常動作モード時のＲＡＭ４０ｂ用のアドレスを選択して出力する。
【００８０】
セレクタ４６ａは、テスト信号ＴＥＳＴに基づいて、スキャン入力データＳＩＮ＜ｎ−１：０＞と、通常動作用ＲＡＭ書き込み回路４３ａから出力される、通常動作モード時のＲＡＭ４０ａ用のデータとのどちらか一方を選択してＲＡＭ４０ａに出力する。セレクタ４６ａは、テスト信号ＴＥＳＴが“１”のときスキャン入力データＳＩＮ＜ｎ−１：０＞を選択し、“０”のとき通常動作モード時のＲＡＭ４０ａ用のデータを選択して出力する。
【００８１】
セレクタ４６ｂは、テスト信号ＴＥＳＴに基づいて、スキャン入力データＳＩＮ＜ｎ−１：０＞と、通常動作用ＲＡＭ書き込み回路４３ａから出力される、通常動作モード時のＲＡＭ４０ｂ用のデータとのどちらか一方を選択してＲＡＭ４０ａに出力する。セレクタ４６ｂは、テスト信号ＴＥＳＴが“１”のときスキャン入力データＳＩＮ＜ｎ−１：０＞を選択し、“０”のとき通常動作モード時のＲＡＭ４０ｂ用のデータを選択して出力する。
【００８２】
ＲＡＭ４０ａ，４０ｂのそれぞれは、例えばＳＲＡＭやＤＲＡＭなどの記憶回路であって、ＲＡＭ４０ａとＲＡＭ４０ｂとは互いに独立して設けられている。ＲＡＭ４０ａ，４０ｂのデータ幅はともにｎビットであって、アドレス幅はともに（ｍ−１）ビットである。
【００８３】
ＲＡＭ４０ａ，４０ｂのアドレス入力端子ａｄｒには、セレクタ４５ａ，４５ｂの出力がそれぞれ入力されている。また、ＲＡＭ４０ａ，４０ｂのデータ入力端子ＤＩには、セレクタ４６ａ，４６ｂの出力がそれぞれ入力されている。そして、ＲＡＭ４０ａ，４０ｂのデータ出力端子ＤＯからは、記憶されているデータがともにセレクタ４９に入力される。
【００８４】
ＲＡＭ４０ａ，４０ｂの制御端子Ｗ／Ｒには、セレクタ４７ａ，４７ｂの出力がそれぞれ入力されており、これらの入力信号によってＲＡＭ４０ａ，４０ｂのリードモード及びライトモードが切り替えられる。ＲＡＭ４０ａは、セレクタ４７ａの出力が“１”のときにはライトモードとなり、“０”のときにはリードモードとなる。また、ＲＡＭ４０ｂは、セレクタ４７ｂの出力が“１”のときにはライトモードとなり、“０”のときにはリードモードとなる。
【００８５】
なお、各ＲＡＭ４０ａ，４０ｂには、上述のクロック信号ＣＬＫが入力されており、ＲＡＭ４０ａ，４０ｂは、このクロック信号ＣＬＫの立ち上がりでデータを出力したり、あるいはデータが書き込まれる。
【００８６】
通常動作用Ｗ／Ｒ回路４８ａは、通常動作モード時のＲＡＭ４０ａのリードモード及びライトモードを切り替える制御信号を生成してセレクタ４７ａに出力する。更に、通常動作モード時のＲＡＭ４０ｂのリードモード及びライトモードを切り替える制御信号を生成してセレクタ４７ｂに出力する。
【００８７】
ＡＮＤ回路１４０ａは、上述のＲＡＭロード信号ＲＬＤ１とアドレスＡＤ１＜ｍ−１＞との論理積を演算して出力し、ＡＮＤ回路１４０ｂは、ＲＡＭロード信号ＲＬＤ１とアドレスＡＤ１＜ｍ−１＞の反転信号との論理積を演算して出力する。
【００８８】
セレクタ４７ａは、テスト信号ＴＥＳＴに基づいて、ＡＮＤ回路１４０ａの出力と、通常動作用Ｗ／Ｒ回路４８から出力される、通常動作モード時のＲＡＭ４０ａ用の制御信号とのどちらか一方を選択してＲＡＭ４０ａに出力する。セレクタ４７ａは、テスト信号ＴＥＳＴが“１”のときＡＮＤ回路１４０ａの出力を選択し、“０”のとき通常動作モード時のＲＡＭ４０ａ用の制御信号を選択して出力する。
【００８９】
セレクタ４７ｂは、テスト信号ＴＥＳＴに基づいて、ＡＮＤ回路１４０ｂの出力と、通常動作用Ｗ／Ｒ回路４８から出力される、通常動作モード時のＲＡＭ４０ｂ用の制御信号とのどちらか一方を選択してＲＡＭ４０ｂに出力する。セレクタ４７ｂは、テスト信号ＴＥＳＴが“１”のときＡＮＤ回路１４０ｂの出力を選択し、“０”のとき通常動作モード時のＲＡＭ４０ｂ用の制御信号を選択して出力する。
【００９０】
セレクタ４９は、アドレスＡＤ１＜ｍ−１＞に基づいて、ＲＡＭ４０ａの出力データとＲＡＭ４０ｂの出力データのどちらか一方を選択して、データＤＯＵＴ１＜ｎ−１：０＞として、スキャンＦＦ群３に出力する。セレクタ４９は、アドレスＡＤ１＜ｍ−１＞が“１”のときＲＡＭ４０ａの出力データを選択し、“０”のときＲＡＭ４０ｂの出力データを選択して出力する。その他の構成については、実施の形態１に係る半導体集積回路１と同様であるため、その説明を省略する。
【００９１】
次に、本実施の形態２に係る半導体集積回路の動作について説明する。本実施の形態２に係る半導体集積回路では、スキャン入力データ出力回路４ａの入出力データが、実施の形態１に係るスキャン入力データ出力回路４と同じであり、半導体集積回路全体としての動作は、実施の形態１に係る半導体集積回路１と同様である。従って、ここでは、スキャン入力データ出力回路４ａの動作についてのみ説明する。
【００９２】
テスト信号ＴＥＳＴを“０”にすると、本実施の形態２に係る半導体集積回路は通常動作モードになり、通常動作を行う。このとき、ＲＡＭ４０ａ，４０ｂのアドレス入力端子ａｄｒ、データ入力端子ＤＩ及び制御端子Ｗ／Ｒには、通常動作用アドレス回路４２ａ、通常動作用ＲＡＭ書き込み回路４３ａ及び通常動作用Ｗ／Ｒ回路４８ａの出力がそれぞれ接続される。そして、各ＲＡＭ４０ａ，４０ｂに対してライトアクセスやリードアクセスが実行される。
【００９３】
テスト信号ＴＥＳＴを“１”にすると、本実施の形態２に係る半導体集積回路がテスト動作モードとなる。そして、ＲＡＭ４０ａ，４０ｂにスキャン入力データＳＩＮ＜ｎ−１：０＞を書き込む際には、ＲＡＭロード信号ＲＬＤ１を“１”にする。その結果、各ＡＮＤ回路１４０ａ，１４０ｂの一方の入力には“１”が入力される。
【００９４】
そして、テスト用アドレスカウンタ４１のカウント値をリセットして、その後カウントアップさせる。テスト用アドレスカウンタ４１から出力されるアドレスＡＤ１＜ｍ−１＞が“０”を示す場合、ＡＮＤ回路１４０ａ，１４０ｂの出力はそれぞれ“０”，“１”を示すため、ＲＡＭ４０ａがリードモードとなり、ＲＡＭ４０ｂがライトモードとなる。従って、スキャン入力データＳＩＮ＜ｎ−１：０＞は、ＲＡＭ４０ｂに書き込まれる。
【００９５】
また、アドレスＡＤ１＜ｍ−１＞が“１”を示す場合、ＡＮＤ回路１４０ａ，１４０ｂの出力はそれぞれ“１”，“０”を示すため、ＲＡＭ４０ａがライトモードとなり、ＲＡＭ４０ｂがリードモードとなる。従って、スキャン入力データＳＩＮ＜ｎ−１：０＞は、ＲＡＭ４０ａに書き込まれる。
【００９６】
このように、スキャン入力データＳＩＮ＜ｎ−１：０＞は分割されてＲＡＭ４０ａ，４０ｂのそれぞれに記憶される。
【００９７】
ＲＡＭ４０ａ，４０ｂに書き込まれたスキャン入力データＳＩＮ＜ｎ−１：０＞を読み出す際、ＲＡＭロード信号ＲＬＤ１を“０”にする。その結果、各ＡＮＤ回路１４０ａ，１４０ｂの出力は“０”となり、ＲＡＭ４０ａ，４０ｂはともにリードモードとなる。
【００９８】
そして、テスト用アドレスカウンタ４１のカウント値をリセットして、その後カウントアップさせる。テスト用アドレスカウンタ４１から出力されるアドレスＡＤ１＜ｍ−１＞が“０”を示す場合、セレクタ４９はＲＡＭ４０ｂの出力データを選択するため、ＲＡＭ４０ｂから読み出されたデータが、データＤＯＵＴ１＜ｎ−１：０＞としてスキャンＦＦ群３に入力される。
【００９９】
また、アドレスＡＤ１＜ｍ−１＞が“１”を示す場合、セレクタ４９はＲＡＭ４０ａの出力データを選択するため、ＲＡＭ４０ａから読み出されたデータが、データＤＯＵＴ１＜ｎ−１：０＞としてスキャンＦＦ群３に入力される。
【０１００】
以上のように、実施の形態１に係るＲＡＭ４０を備えていない場合であっても、それよりもアドレス幅が小さいＲＡＭ４０ａ，４０ｂを一つの記憶装置として動作させることによって、ＲＡＭ４０と同じアドレス幅の記憶装置を実現している。
【０１０１】
このように、本実施の形態２では、スキャン入力データＳＩＮ＜ｎ−１：０＞を一つのＲＡＭに記憶することできない場合であっても、スキャン入力データＳＩＮ＜ｎ−１：０＞を、一つの記憶装置として動作するＲＡＭ４０ａ，４０ｂに分割して記憶させることによって、テスト時間が増大することなく、所望のデータ量のスキャン入力データＳＩＮ＜ｎ−１：０＞を半導体集積回路内に記憶させることができる。
【０１０２】
なお、半導体集積回路が、スキャン出力期待値データＳＥＤ＜ｎ−１：０＞を記憶するＲＡＭ５０を備えていない場合であっても、上述のように、それよりもアドレス幅が小さい複数のＲＡＭを一つの記憶装置として動作させることによって、ＲＡＭ５０と同じアドレス幅の記憶装置を実現することができる。そして、スキャン出力期待値データＳＥＤ＜ｎ−１：０＞をそれらのＲＡＭに分割して記憶させることによって、テスト時間が増大することなく、所望のデータ量のスキャン出力期待値データＳＥＤ＜ｎ−１：０＞を半導体集積回路内に記憶させることができる。
【０１０３】
また、本実施の形態２では、半導体集積回路がＲＡＭ４０よりもアドレス幅の小さいＲＡＭを複数備えている場合について述べたが、アドレス幅は同じで、データ幅がＲＡＭ４０よりも小さいＲＡＭを複数備えている場合もある。以下に、この場合において、複数のＲＡＭを一つの記憶装置として動作させる技術について説明する。
【０１０４】
図８は、本実施の形態２に係るスキャン入力データ出力回路４ａの変形例であるスキャン入力データ出力回路４ｂの構成を示すブロック図である。
【０１０５】
図８に示されるように、スキャン入力データ出力回路４ｂは、ＲＡＭ４０ｃ，４０ｄと、通常動作用アドレス回路４２ｃと、通常動作用ＲＡＭ書き込み回路４３ｃと、通常動作用ＲＡＭ読み出し回路４４ｃと、セレクタ４５ｃ，４５ｄ，４６ｃ，４６ｄ，４７ｃ，４７ｄと、通常動作用Ｗ／Ｒ回路４８ｃと、テスト用アドレスカウンタ４１とを備えている。
【０１０６】
通常動作用アドレス回路４２ｃは、通常動作モード時にＲＡＭ４０ｃに入力するアドレスを生成してセレクタ４５ｃに出力する。更に、通常動作モード時にＲＡＭ４０ｄに入力するアドレスを生成してセレクタ４５ｄに出力する。
【０１０７】
通常動作用ＲＡＭ書き込み回路４３ｃは、通常動作モード時にＲＡＭ４０ｃに書き込むデータを生成してセレクタ４６ｃに出力する。更に、通常動作モード時にＲＡＭ４０ｄに書き込むデータを生成してセレクタ４６ｄに出力する。通常動作ＲＡＭ書き込み回路４３ｃは、例えば、図示しない演算回路の演算結果を出力したり、半導体集積回路の外部に設けられたメモリからのデータを出力したりする。
【０１０８】
通常動作用ＲＡＭ読み出し回路４４ｃは、通常動作モード時に実質的に機能する回路であって、通常動作モード時にＲＡＭ４０ｃ，４０ｄから出力されるデータを受け取って、図示しないＣＰＵなどに出力する。
【０１０９】
セレクタ４５ｃは、テスト用アドレスカウンタ４１から出力されるアドレスＡＤ１＜ｍ−１：０＞と、通常動作用アドレス回路４２ｃから出力される、通常動作モード時のＲＡＭ４０ｃ用のアドレスとのどちらか一方を、テスト信号ＴＥＳＴに基づいて選択してＲＡＭ４０ｃに出力する。セレクタ４５ｃは、テスト信号ＴＥＳＴが“１”のときアドレスＡＤ１＜ｍ−１：０＞を選択し、“０”のとき通常動作モード時のＲＡＭ４０ｃ用のアドレスを選択して出力する。
【０１１０】
セレクタ４５ｄは、アドレスＡＤ１＜ｍ−１：０＞と、通常動作用アドレス回路４２ｃから出力される、通常動作モード時のＲＡＭ４０ｄ用のアドレスとのどちらか一方を、テスト信号ＴＥＳＴに基づいて選択してＲＡＭ４０ｄに出力する。セレクタ４５ｄは、テスト信号ＴＥＳＴが“１”のときアドレスＡＤ１＜ｍ−１：０＞を選択し、“０”のとき通常動作モード時のＲＡＭ４０ｄ用のアドレスを選択して出力する。
【０１１１】
セレクタ４６ｃには、ｎビットのスキャン入力データＳＩＮ＜ｎ−１：０＞のうち、ｋビット（１≦ｋ≦ｎ−１）のスキャン入力データＳＩＮ＜ｋ−１：０＞も入力されている。セレクタ４６ｃは、テスト信号ＴＥＳＴに基づいて、スキャン入力データＳＩＮ＜ｋ−１：０＞と、通常動作用ＲＡＭ書き込み回路４３ｃから出力される、通常動作モード時のＲＡＭ４０ｃ用のデータとのどちらか一方を選択してＲＡＭ４０ｃに出力する。セレクタ４６ｃは、テスト信号ＴＥＳＴが“１”のときスキャン入力データＳＩＮ＜ｋ−１：０＞を選択し、“０”のとき通常動作モード時のＲＡＭ４０ｃ用のデータを選択して出力する。
【０１１２】
セレクタ４６ｄには、ｎビットのスキャン入力データＳＩＮ＜ｎ−１：０＞のうち、（ｎ−ｋ）ビットのスキャン入力データＳＩＮ＜ｎ−１：ｋ＞も入力されている。セレクタ４６ｄは、テスト信号ＴＥＳＴに基づいて、スキャン入力データＳＩＮ＜ｎ−１：ｋ＞と、通常動作用ＲＡＭ書き込み回路４３ｃから出力される、通常動作モード時のＲＡＭ４０ｄ用のデータとのどちらか一方を選択してＲＡＭ４０ｄに出力する。セレクタ４６ｄは、テスト信号ＴＥＳＴが“１”のときスキャン入力データＳＩＮ＜ｎ−１：ｋ＞を選択し、“０”のとき通常動作モード時のＲＡＭ４０ｄ用のデータを選択して出力する。
【０１１３】
ＲＡＭ４０ｃ，４０ｄのそれぞれは、例えばＳＲＡＭやＤＲＡＭなどの記憶回路であって、ＲＡＭ４０ｃとＲＡＭ４０ｄとは互いに独立して設けられている。ＲＡＭ４０ｃ，４０ｄのデータ幅はそれぞれｋビット及び（ｎ−ｋ）ビットであって、アドレス幅はともにｍビットである。
【０１１４】
ＲＡＭ４０ｃ，４０ｄのアドレス入力端子ａｄｒには、セレクタ４５ｃ，４５ｄの出力がそれぞれ入力されている。また、ＲＡＭ４０ｃ，４０ｄのデータ入力端子ＤＩには、セレクタ４６ｃ，４６ｄの出力がそれぞれ入力されている。そして、ＲＡＭ４０ｃ，４０ｄは、データＤＯＵＴ１＜ｋ−１：０＞，ＤＯＵＴ１＜ｎ−１：ｋ＞として、記憶しているデータをデータ出力端子ＤＯからそれぞれ出力する。
【０１１５】
ＲＡＭ４０ｃ，４０ｄの制御端子Ｗ／Ｒには、セレクタ４７ｃ，４７ｄの出力がそれぞれ入力されており、これらの入力信号によってＲＡＭ４０ｃ，４０ｄのリードモード及びライトモードが切り替えられる。具体的には、セレクタ４７ｃ，４７ｄの出力が“１”のときにはライトモードとなり、“０”のときにはリードモードとなる。なお、各ＲＡＭ４０ｃ，４０ｄには、クロック信号ＣＬＫが入力されており、ＲＡＭ４０ｃ，４０ｄは、このクロック信号ＣＬＫの立ち上がりでデータを出力したり、あるいはデータが書き込まれる。
【０１１６】
通常動作用Ｗ／Ｒ回路４８ｃは、通常動作モード時のＲＡＭ４０ｃのリードモード及びライトモードを切り替える制御信号を生成してセレクタ４７ｃに出力する。更に、通常動作モード時のＲＡＭ４０ｄのリードモード及びライトモードを切り替える制御信号も生成してセレクタ４７ｄに出力する。
【０１１７】
セレクタ４７ｃは、テスト信号ＴＥＳＴに基づいて、ＲＡＭロード信号ＲＬＤ１と、通常動作用Ｗ／Ｒ回路４８ｃから出力される、通常動作モード時のＲＡＭ４０ｃ用の制御信号とのどちらか一方を選択してＲＡＭ４０ｃに出力する。セレクタ４７ｃは、テスト信号ＴＥＳＴが“１”のときＲＡＭロード信号ＲＬＤ１を選択し、“０”のとき通常動作モード時のＲＡＭ４０ｃ用の制御信号を選択して出力する。
【０１１８】
セレクタ４７ｄは、テスト信号ＴＥＳＴに基づいて、ＲＡＭロード信号ＲＬＤ１と、通常動作用Ｗ／Ｒ回路４８ｃから出力される、通常動作モード時のＲＡＭ４０ｄ用の制御信号とのどちらか一方を選択してＲＡＭ４０ｄに出力する。セレクタ４７ｄは、テスト信号ＴＥＳＴが“１”のときＲＡＭロード信号ＲＬＤ１を選択し、“０”のとき通常動作モード時のＲＡＭ４０ｄ用の制御信号を選択して出力する。
【０１１９】
次に、図８に示すスキャン入力データ出力回路４ｂの動作について説明する。テスト信号ＴＥＳＴを“０”にすると、スキャン入力データ出力回路４ｂを備える半導体集積回路は通常動作モードになり通常動作を行う。このとき、ＲＡＭ４０ｃ，４０ｄのアドレス入力端子ａｄｒ、データ入力端子ＤＩ及び制御端子Ｗ／Ｒには、通常動作用アドレス回路４２ｃ、通常動作用ＲＡＭ書き込み回路４３ｃ及び通常動作用Ｗ／Ｒ回路４８ｃの出力がそれぞれ接続される。そして、各ＲＡＭ４０ｃ，４０ｄに対してライトアクセスやリードアクセスが実行される。
【０１２０】
テスト信号ＴＥＳＴを“１”にすると、スキャン入力データ出力回路４ｂを備える半導体集積回路はテスト動作モードとなる。そして、ＲＡＭ４０ｃ，４０ｄにスキャン入力データＳＩＮ＜ｎ−１：０＞を書き込む際には、ＲＡＭロード信号ＲＬＤ１を“１”にする。その結果、ＲＡＭ４０ｃ，４０ｄがともにライトモードになる。
【０１２１】
そして、テスト用アドレスカウンタ４１を動作させて、スキャン入力データＳＩＮ＜ｎ−１：０＞を、ＲＡＭ４０ｃ，４０ｄに書き込む。このとき、ＲＡＭ４０ｃのデータ入力端子ＤＩには、スキャン入力データＳＩＮ＜ｎ−１：０＞のうちのスキャン入力データＳＩＮ＜ｋ−１：０＞が入力されるため、ＲＡＭ４０ｃにはスキャン入力データＳＩＮ＜ｋ−１：０＞が書き込まれる。
【０１２２】
また、ＲＡＭ４０ｄのデータ入力端子ＤＩには、スキャン入力データＳＩＮ＜ｎ−１：０＞のうちのスキャン入力データＳＩＮ＜ｎ−１：ｋ＞が入力されるため、ＲＡＭ４０ｃにはスキャン入力データＳＩＮ＜ｎ−１：ｋ＞が書き込まれる。
【０１２３】
このように、スキャン入力データＳＩＮ＜ｎ−１：０＞は分割されてＲＡＭ４０ｃ，４０ｄのそれぞれに記憶される。
【０１２４】
ＲＡＭ４０ｃ，４０ｄに書き込まれたスキャン入力データＳＩＮ＜ｎ−１：０＞を読み出す際、ＲＡＭロード信号ＲＬＤ１を“０”にする。その結果、ＲＡＭ４０ｃ，４０ｄはともにリードモードとなる。
【０１２５】
そして、テスト用アドレスカウンタ４１を動作させて、ＲＡＭ４０ｃ，４０ｄからスキャン入力データＳＩＮ＜ｎ−１：０＞を読み出す。このとき、ＲＡＭ４ｃからスキャン入力データＳＩＮ＜ｋ−１：０＞がデータＤＯＵＴ１＜ｋ−１：０＞として読み出され、ＲＡＭ４ｄからスキャン入力データＳＩＮ＜ｎ−１：ｋ＞がデータＤＯＵＴ１＜ｎ−１：ｋ＞として読み出される。
【０１２６】
以上のように、実施の形態１に係るＲＡＭ４０を備えておらず、データ幅がＲＡＭ４０よりも小さいＲＡＭ４０ｃ，４０ｄを備えている場合であっても、ＲＡＭ４０ｃ，４０ｄを一つの記憶装置として動作させることによって、ＲＡＭ４０と同じデータ幅の記憶装置を実現することができる。そして、ＲＡＭ４０ｃ，４０ｄに、スキャン入力データＳＩＮ＜ｎ−１：０＞を分割して記憶させることによって、テスト時間が増大することなく、所望のデータ量のスキャン入力データＳＩＮ＜ｎ−１：０＞を半導体集積回路内に記憶させることができる。
【０１２７】
なお、半導体集積回路が、スキャン出力期待値データＳＥＤ＜ｎ−１：０＞を記憶するＲＡＭ５０を備えていない場合であっても、上述のように、それよりもデータ幅が小さい複数のＲＡＭを一つの記憶装置として動作させることによって、ＲＡＭ５０と同じデータ幅の記憶装置を実現することができる。そして、スキャン出力期待値データＳＥＤ＜ｎ−１：０＞をそれらのＲＡＭに分割して記憶させることによって、テスト時間が増大することなく、所望のデータ量のスキャン出力期待値データＳＥＤ＜ｎ−１：０＞を半導体集積回路内に記憶させることができる。
【０１２８】
実施の形態３．
スキャンパステストにおいては、被テスト回路の論理テストだけではなく、被テスト回路が所望の周波数で動作しているかどうかのテスト、つまりタイミングテストも実施することができる。
【０１２９】
上述のスキャンパステストを例に挙げて説明すると、スキャンパステストはクロック信号ＣＬＫが連続的に与えられた状態で行われるため、スキャンＦＦ３１に設定されたテストデータの被テスト回路２への入力から、被テスト回路２からの出力データのスキャンＦＦ３１への設定までの動作は、クロック信号ＣＬＫの立ち上がりから次のクロック信号ＣＬＫの立ち上がりまでの間、つまりクロック信号ＣＬＫの１クロック分の時間内に行われる。
【０１３０】
従って、スキャン結果データと期待値データとの比較結果を示す比較結果データＣＯＭＰをモニタすることによって、被テスト回路２がクロック信号ＣＬＫの周波数で正常に動作しているかどうかを確認することができる。
【０１３１】
しかしながら、上述の実施の形態１，２に係る半導体集積回路では、ＲＡＭ４０から読み出したテストデータを直接スキャンパスＳＰ１〜ＳＰｎに入力しているため、スキャンパスＳＰ１〜ＳＰｎを、ＲＡＭ４０の動作周波数と同じ周波数でしか動作させることができず、その結果、スキャンＦＦ３１のＦＦ３１ａに、ＲＡＭ４０の動作周波数と同じ周波数のクロック信号しか入力することができない。
【０１３２】
そのため、通常動作モード時において、被テスト回路２に、ＲＡＭ４０の動作周波数以上の周波数で動作する領域がある場合には、かかる領域に対して、ＲＡＭ４０の動作周波数以上の周波数でタイミングテストを行うことができない。
【０１３３】
そこで、本実施の形態３では、スキャンパスをＲＡＭの動作周波数以上の周波数で動作させることが可能な半導体集積回路を提案し、被テスト回路にＲＡＭよりも高速に動作する回路が含まれている場合でも、かかる回路に対して、ＲＡＭの動作周波数以上の周波数でタイミングテストを行うことを可能にする技術を提供する。以下に具体的に説明する。
【０１３４】
図９〜１１は、本発明の実施の形態３に係る半導体集積回路が備えるスキャン入力データ出力回路４ｃ、期待値データ出力回路５ｃ及び比較回路６ｃの構成をそれぞれ示すブロック図である。本実施の形態３に係る半導体集積回路は、上述の実施の形態１に係る半導体集積回路１において、基本的には、スキャン入力データ出力回路４の替わりにスキャン入力データ出力回路４ｃを、期待値データ出力回路５の替わりに期待値データ出力回路５ｃを、比較回路６の替わりに比較回路６ｃをそれぞれ備えるものである。
【０１３５】
本実施の形態３に係る被テスト回路２の領域２０ａ１〜２０ａｋ，２０ｂ１〜２０ｂｋ，２０ｃ１〜２０ｃｋ（１≦ｋ≦ｎ−１）は、通常動作モード時、ＲＡＭ４０の動作周波数、つまりクロック信号ＣＬＫの周波数よりも高い周波数で動作する。また、本実施の形態３に係る半導体集積回路は、上述のテスト信号ＴＥＳＴあるいは後述するテスト信号ｆＴＥＳＴによって、テスト動作モードと通常動作モードとが切り替えられる。
【０１３６】
図９に示されるように、本実施の形態３に係るスキャン入力データ出力回路４ｃは、ＲＡＭ４０ｅ，４０ｆと、通常動作用アドレス回路４２ｅと、通常動作用ＲＡＭ書き込み回路４３ｅと、通常動作用ＲＡＭ読み出し回路４４ｅと、セレクタ４５ｅ，４５ｆ，４６ｅ，４６ｆ，４７ｅ，４７ｆと、通常動作用Ｗ／Ｒ回路４８ｅと、パラレル・シリアル変換回路１４１と、テスト用アドレスカウンタ４１ｆと、上述のテスト用アドレスカウンタ４１とを備えている。
【０１３７】
また、図１０に示されるように、本実施の形態３に係る期待値データ出力回路５ｃは、ＲＡＭ５０ｅ，５０ｆと、通常動作用アドレス回路５２ｅと、通常動作用ＲＡＭ書き込み回路５３ｅと、通常動作用ＲＡＭ読み出し回路５４ｅと、セレクタ５５ｅ，５５ｆ，５６ｅ，５６ｆ，５７ｅ，５７ｆと、通常動作用Ｗ／Ｒ回路５８ｅと、パラレル・シリアル変換回路１５１と、テスト用アドレスカウンタ５１ｆと、上述のテスト用アドレスカウンタ５１とを備えている。
【０１３８】
テスト用アドレスカウンタ４１ｆ，５１ｆはそれぞれｍビットのカウンタであって、図示しないクロック信号ＣＬＫが入力されている。各テスト用アドレスカウンタ４１ｆ，５１ｆは、クロック信号ＣＬＫの立ち上がりでカウント動作を行う。
【０１３９】
テスト用アドレスカウンタ４１ｆ，５１ｆにおけるカウント動作の開始及び停止は、半導体集積回路１の外部から入力されるカウンタ制御信号ｆＣＣＮＴ１，ｆＣＣＮＴ２によってそれぞれ制御される。具体的には、カウンタ制御信号ｆＣＣＮＴ１，ｆＣＣＮＴ２が“１”のとき、テスト用アドレスカウンタ４１ｆ，５１ｆはそれぞれカウントを開始し、“０”のときそれぞれカウントを停止する。
【０１４０】
テスト用アドレスカウンタ４１ｆは、そのカウント値をｍビットのアドレスＡＤ１ｆ＜ｍ−１：０＞として出力し、テスト用アドレスカウンタ５１ｆは、そのカウント値をｍビットのアドレスＡＤ２ｆ＜ｍ−１：０＞として出力する。なお、テスト用アドレスカウンタ４１ｆ，５１ｆには図示しないリセット信号も入力され、このリセット信号でそれぞれのカウント値がリセットされる。
【０１４１】
通常動作用アドレス回路４２ｅは、通常動作モード時にＲＡＭ４０ｅに入力するアドレスを生成してセレクタ４５ｅに出力する。更に、通常動作モード時にＲＡＭ４０ｆに入力するアドレスを生成してセレクタ４５ｆに出力する。また、通常動作用アドレス回路５２ｅは、通常動作モード時にＲＡＭ５０ｅに入力するアドレスを生成してセレクタ５５ｅに出力する。更に、通常動作モード時にＲＡＭ５０ｆに入力するアドレスを生成してセレクタ５５ｆに出力する。
【０１４２】
通常動作用ＲＡＭ書き込み回路４３ｅは、通常動作モード時にＲＡＭ４０ｅに書き込むデータを生成してセレクタ４６ｅに出力する。更に、通常動作モード時にＲＡＭ４０ｆに書き込むデータを生成してセレクタ４６ｆに出力する。また、通常動作用ＲＡＭ書き込み回路５３ｅは、通常動作モード時にＲＡＭ５０ｅに書き込むデータを生成してセレクタ５６ｅに出力する。更に、通常動作モード時にＲＡＭ５０ｆに書き込むデータを生成してセレクタ５６ｆに出力する。通常動作ＲＡＭ書き込み回路４３ｅ，５３ｅのそれぞれは、例えば、図示しない演算回路の演算結果を出力したり、半導体集積回路の外部に設けられたメモリからのデータを出力したりする。
【０１４３】
通常動作用ＲＡＭ読み出し回路４４ｅ，５４ｅは、ともに通常動作モード時に実質的に機能する回路である。通常動作用ＲＡＭ読み出し回路４４ｅは、ＲＡＭ４０ｅ，４０ｆからの出力データを受け取って、図示しないＣＰＵなどに出力し、通常動作用ＲＡＭ読み出し回路５４ｅは、ＲＡＭ５０ｅ，５０ｆからの出力データを受け取ってＣＰＵなどに出力する。
【０１４４】
セレクタ４５ｅは、テスト用アドレスカウンタ４１ｆの出力と、通常動作用アドレス回路４２ｅから出力される、通常動作モード時のＲＡＭ４０ｅ用のアドレスとのどちらか一方を、半導体集積回路の動作モードを制御するテスト信号ｆＴＥＳＴに基づいて選択してＲＡＭ４０ｅに出力する。セレクタ４５ｅは、テスト信号ｆＴＥＳＴが“１”のときテスト用アドレスカウンタ４１ｆの出力を選択し、“０”のとき通常動作モード時のＲＡＭ４０ｅ用のアドレスを選択して出力する。なお、テスト信号ｆＴＥＳＴは、本実施の形態３に係る半導体集積回路の外部から入力される。
【０１４５】
セレクタ５５ｅは、テスト用アドレスカウンタ５１ｆの出力と、通常動作用アドレス回路５２ｅから出力される、通常動作モード時のＲＡＭ５０ｅ用のアドレスとのどちらか一方を、テスト信号ｆＴＥＳＴに基づいて選択してＲＡＭ５０ｅに出力する。セレクタ５５ｅは、テスト信号ｆＴＥＳＴが“１”のときテスト用アドレスカウンタ５１ｆの出力を選択し、“０”のとき通常動作モード時のＲＡＭ５０ｅ用のアドレスを選択して出力する。
【０１４６】
セレクタ４５ｆは、テスト用アドレスカウンタ４１の出力と、通常動作用アドレス回路４２ｅから出力される、通常動作モード時のＲＡＭ４０ｆ用のアドレスとのどちらか一方を、上述のテスト信号ＴＥＳＴに基づいて選択してＲＡＭ４０ｆに出力する。セレクタ４５ｆは、テスト信号ＴＥＳＴが“１”のときテスト用アドレスカウンタ４１の出力を選択し、“０”のとき通常動作モード時のＲＡＭ４０ｆ用のアドレスを選択して出力する。
【０１４７】
セレクタ５５ｆは、テスト用アドレスカウンタ５１の出力と、通常動作用アドレス回路５２ｅから出力される、通常動作モード時のＲＡＭ５０ｆ用のアドレスとのどちらか一方を、テスト信号ＴＥＳＴに基づいて選択してＲＡＭ５０ｆに出力する。セレクタ５５ｆは、テスト信号ＴＥＳＴが“１”のときテスト用アドレスカウンタ５１の出力を選択し、“０”のとき通常動作モード時のＲＡＭ５０ｆ用のアドレスを選択して出力する。
【０１４８】
セレクタ４６ｅ，４６ｆには、ｌビット（２≦ｌ＜ｋ）のスキャン入力データＳＩＮ＜ｌ：０＞及び（ｎ−ｋ）ビットのスキャン入力データＳＩＮ＜ｎ−ｋ−１：０＞もそれぞれ入力されている。スキャン入力データＳＩＮ＜ｌ：０＞，ＳＩＮ＜ｎ−ｋ−１：０＞は、テスト動作モード時に、スキャンＦＦ群３０ｇ１〜３０ｇｋ及びスキャンＦＦ群３０ｇ（ｋ＋１）〜３０ｇｎにそれぞれ入力されるテストデータである。
【０１４９】
セレクタ４６ｅは、テスト信号ｆＴＥＳＴに基づいて、スキャン入力データＳＩＮ＜ｌ：０＞と、通常動作用ＲＡＭ書き込み回路４３ｅから出力される、通常動作モード時のＲＡＭ４０ｅ用のデータとのどちらか一方を選択してＲＡＭ４０ｅに出力する。セレクタ４６ｅは、テスト信号ｆＴＥＳＴが“１”のときスキャン入力データＳＩＮ＜ｌ：０＞を選択し、“０”のとき通常動作モード時のＲＡＭ４０ｅ用のデータを選択して出力する。
【０１５０】
セレクタ４６ｆは、テスト信号ＴＥＳＴに基づいて、スキャン入力データＳＩＮ＜ｎ−ｋ−１：０＞と、通常動作用ＲＡＭ書き込み回路４３ｅから出力される、通常動作モード時のＲＡＭ４０ｆ用のデータとのどちらか一方を選択してＲＡＭ４０ｆに出力する。セレクタ４６ｆは、テスト信号ＴＥＳＴが“１”のときスキャン入力データＳＩＮ＜ｎ−ｋ−１：０＞を選択し、“０”のとき通常動作モード時のＲＡＭ４０ｆ用のデータを選択して出力する。
【０１５１】
セレクタ５６ｅ，５６ｆには、ｌビット（２≦ｌ＜ｋ）のスキャン出力期待値データＳＥＤ＜ｌ：０＞及び（ｎ−ｋ）ビットのスキャン出力期待値データＳＥＤ＜ｎ−ｋ−１：０＞もそれぞれ入力されている。スキャン出力期待値データＳＥＤ＜ｌ：０＞は、テスト動作モード時に、スキャンパスＳＰ１〜ＳＰｋから出力されるスキャン結果データに対する期待値データであって、スキャン出力期待値データＳＥＤ＜ｎ−ｋ−１：０＞は、テスト動作モード時に、スキャンパスＳＰ（ｋ＋１）〜ＳＰｎから出力されるスキャン結果データに対する期待値データである。
【０１５２】
セレクタ５６ｅは、テスト信号ｆＴＥＳＴに基づいて、スキャン出力期待値データＳＥＤ＜ｌ：０＞と、通常動作用ＲＡＭ書き込み回路５３ｅから出力される、通常動作モード時のＲＡＭ５０ｅ用のデータとのどちらか一方を選択してＲＡＭ５０ｅに出力する。セレクタ５６ｅは、テスト信号ｆＴＥＳＴが“１”のときスキャン出力期待値データＳＥＤ＜ｌ：０＞を選択し、“０”のとき通常動作モード時のＲＡＭ５０ｅ用のデータを選択して出力する。
【０１５３】
セレクタ５６ｆは、テスト信号ＴＥＳＴに基づいて、スキャン出力期待値データＳＥＤ＜ｎ−ｋ−１：０＞と、通常動作用ＲＡＭ書き込み回路５３ｅから出力される、通常動作モード時のＲＡＭ５０ｆ用のデータとのどちらか一方を選択してＲＡＭ５０ｆに出力する。セレクタ５６ｆは、テスト信号ＴＥＳＴが“１”のときスキャン出力期待値データＳＥＤ＜ｎ−ｋ−１：０＞を選択し、“０”のとき通常動作モード時のＲＡＭ５０ｆ用のデータを選択して出力する。
【０１５４】
ＲＡＭ４０ｅ，４０ｆ，５０ｅ，５０ｆのそれぞれは、例えばＳＲＡＭやＤＲＡＭなどの記憶回路であって、ＲＡＭ４０ｅ，４０ｆ，５０ｅ，５０ｆは互いに独立して設けられている。ＲＡＭ４０ｅ，４０ｆ，５０ｅ，５０ｆのアドレス幅はともにｍビットである。ＲＡＭ４０ｅ，５０ｅのデータ幅はともにｌビットであって、ＲＡＭ４０ｆ，５０ｆのデータ幅はともに（ｎ−ｋ）ビットである。
【０１５５】
ＲＡＭ４０ｅ，４０ｆ，５０ｅ，５０ｆのアドレス入力端子ａｄｒには、セレクタ４５ｅ，４５ｆ，５５ｅ，５５ｆの出力がそれぞれ入力されている。また、ＲＡＭ４０ｅ，４０ｆ，５０ｅ，５０ｆのデータ入力端子ＤＩには、セレクタ４６ｅ，４６ｆ，５６ｅ，５６ｆの出力がそれぞれ入力されている。
【０１５６】
ＲＡＭ４０ｅ，５０ｅのデータ出力端子ＤＯから出力される出力データは、それぞれパラレル・シリアル変換回路１４１，１５１に入力される。そして、ＲＡＭ４０ｆのデータ出力端子ＤＯから出力される出力データは、データＤＯＵＴ１＜ｎ−１：ｋ＞としてスキャンＦＦ群３に入力され、ＲＡＭ５０ｆのデータ出力端子ＤＯから出力される出力データは、データＤＯＵＴ２＜ｎ−１：ｋ＞として比較回路６ｃに入力される。
【０１５７】
ＲＡＭ４０ｅ，４０ｆ，５０ｅ，５０ｆの制御端子Ｗ／Ｒには、セレクタ４７ｅ，４７ｆ，５７ｅ，５７ｆの出力がそれぞれ入力されており、これらの入力信号によってＲＡＭ４０ｅ，４０ｆ，５０ｅ，５０ｆのリードモード及びライトモードが切り替えられる。具体的には、セレクタ４７ｅ，４７ｆ，５７ｅ，５７ｆの出力が“１”のときにはライトモードとなり、“０”のときにはリードモードとなる。なお、各ＲＡＭ４０ｅ，４０ｆ，５０ｅ，５０ｆには、クロック信号ＣＬＫが入力されており、ＲＡＭ４０ｅ，４０ｆ，５０ｅ，５０ｆは、このクロック信号ＣＬＫの立ち上がりでデータを出力したり、あるいはデータが書き込まれる。
【０１５８】
通常動作用Ｗ／Ｒ回路４８ｅは、通常動作モード時のＲＡＭ４０ｅのリードモード及びライトモードを切り替える制御信号を生成してセレクタ４７ｅに出力する。更に、通常動作モード時のＲＡＭ４０ｆのリードモード及びライトモードを切り替える制御信号も生成してセレクタ４７ｆに出力する。また、通常動作用Ｗ／Ｒ回路５８ｅは、通常動作モード時のＲＡＭ５０ｅのリードモード及びライトモードを切り替える制御信号を生成してセレクタ５７ｅに出力する。更に、通常動作モード時のＲＡＭ５０ｆのリードモード及びライトモードを切り替える制御信号も生成してセレクタ５７ｆに出力する。
【０１５９】
セレクタ４７ｅは、テスト信号ｆＴＥＳＴに基づいて、ＲＡＭロード信号ｆＲＬＤ１と、通常動作用Ｗ／Ｒ回路４８ｅから出力される、通常動作モード時のＲＡＭ４０ｅ用の制御信号とのどちらか一方を選択してＲＡＭ４０ｅに出力する。セレクタ４７ｅは、テスト信号ｆＴＥＳＴが“１”のときＲＡＭロード信号ｆＲＬＤ１を選択し、“０”のとき通常動作モード時のＲＡＭ４０ｅ用の制御信号を選択して出力する。ここで、ＲＡＭロード信号ｆＲＬＤ１は、テスト動作モード時のＲＡＭ４０ｅのリードモード及びライトモードを切り替える制御信号であって、本実施の形態３に係る半導体集積回路の外部から入力される。
【０１６０】
セレクタ４７ｆは、テスト信号ＴＥＳＴに基づいて、ＲＡＭロード信号ＲＬＤ１と、通常動作用Ｗ／Ｒ回路４８ｅから出力される、通常動作モード時のＲＡＭ４０ｆ用の制御信号とのどちらか一方を選択してＲＡＭ４０ｆに出力する。セレクタ４７ｆは、テスト信号ＴＥＳＴが“１”のときＲＡＭロード信号ＲＬＤ１を選択し、“０”のとき通常動作モード時のＲＡＭ４０ｆ用の制御信号を選択して出力する。
【０１６１】
セレクタ５７ｅは、テスト信号ｆＴＥＳＴに基づいて、ＲＡＭロード信号ｆＲＬＤ２と、通常動作用Ｗ／Ｒ回路５８ｅから出力される、通常動作モード時のＲＡＭ５０ｅ用の制御信号とのどちらか一方を選択してＲＡＭ５０ｅに出力する。セレクタ５７ｅは、テスト信号ｆＴＥＳＴが“１”のときＲＡＭロード信号ｆＲＬＤ２を選択し、“０”のとき通常動作モード時のＲＡＭ５０ｅ用の制御信号を選択して出力する。ここで、ＲＡＭロード信号ｆＲＬＤ２は、テスト動作モード時のＲＡＭ５０ｅのリードモード及びライトモードを切り替える制御信号であって、本実施の形態３に係る半導体集積回路の外部から入力される。
【０１６２】
セレクタ５７ｆは、テスト信号ＴＥＳＴに基づいて、ＲＡＭロード信号ＲＬＤ２と、通常動作用Ｗ／Ｒ回路５８ｅから出力される、通常動作モード時のＲＡＭ５０ｆ用の制御信号とのどちらか一方を選択してＲＡＭ５０ｆに出力する。セレクタ５７ｆは、テスト信号ＴＥＳＴが“１”のときＲＡＭロード信号ＲＬＤ２を選択し、“０”のとき通常動作モード時のＲＡＭ５０ｆ用の制御信号を選択して出力する。
【０１６３】
パラレル・シリアル変換回路１４１は、ＲＡＭ４０ｅから出力されるｌビットのデータをｋビットのデータに変換して、データＤＯＵＴ１＜ｋ−１：０＞としてスキャンＦＦ群３に出力する。また、パラレル・シリアル変換回路１５１は、ＲＡＭ５０ｅから出力されるｌビットのデータをｋビットのデータに変換して、データＤＯＵＴ２＜ｋ−１：０＞として比較回路６ｃに出力する。
【０１６４】
パラレル・シリアル変換回路１４１，１５１のそれぞれには、クロック信号ＣＬＫよりも高い周波数のクロック信号ｆＣＬＫ（図示せず）が入力されており、このクロック信号ｆＣＬＫの立ち上がりに同期してデータを出力する。なお、クロック信号ｆＣＬＫは、半導体集積回路１の外部から入力されたり、あるいは、半導体集積回路内部の図示しないクロック生成回路によって、クロック信号ＣＬＫを分周することによって生成される。
【０１６５】
このように、パラレル・シリアル変換回路１４１は、クロック信号ＣＬＫよりも周波数の高いクロック信号ｆＣＬＫの立ち上がりに同期してデータを出力するため、クロック信号ＣＬＫの立ち上がりに同期してデータを出力するＲＡＭ４０ｅの動作速度よりも高速にデータを転送することができる。同様に、パラレル・シリアル変換回路１５１も、クロック信号ＣＬＫよりも周波数の高いクロック信号ｆＣＬＫの立ち上がりに同期してデータを出力するため、クロック信号ＣＬＫの立ち上がりに同期してデータを出力するＲＡＭ５０ｅの動作速度よりも高速にデータを転送することができる。
【０１６６】
各パラレル・シリアル変換回路１４１，１５１は、例えばｌ＝８，ｋ＝４の場合、入力データを２ビット単位でシリアルデータに変換して出力する。これにより、８ビットの入力データが４ビットのデータに変換される。また、例えばｌ＝８，ｋ＝２の場合、入力データを４ビット単位でシリアルデータに変換して出力する。これにより、８ビットの入力データが２ビットのデータに変換される。
【０１６７】
このように、各パラレル・シリアル変換回路１４１，１５１は、入力データのビット数を、出力すべきデータのビット数で乗算した数の単位で、入力データに対してパラレル・シリアル変換を実行する。
【０１６８】
比較回路６ｃは、図１１に示されるように、ＥＸＯＲ回路６０ａ，６０ｂと、ＯＲ回路６１ａ，６１ｂと、ＦＦ６２ａ，６２ｂとを備えている。そして、データＤＯＵＴ２＜ｋ−１：０＞とスキャン出力データＳＯＵＴ＜ｋ−１：０＞との比較を行い、互いに一致すれば“０”を、互いに不一致であれば“１”を出力する。更に、データＤＯＵＴ２＜ｎ−１：ｋ＞とスキャン出力データＳＯＵＴ＜ｎ−１：ｋ＞との比較を行い、互いに一致すれば“０”を、互いに不一致であれば“１”を出力する。
【０１６９】
ＥＸＯＲ回路６０ａは、データＤＯＵＴ２＜０＞とスキャン出力データＳＯＵＴ＜０＞との排他的論理和を演算して出力する。同様に、データＤＯＵＴ２＜１＞とスキャン出力データＳＯＵＴ＜１＞、・・・、データＤＯＵＴ２＜ｋ−１＞とスキャン出力データＳＯＵＴ＜ｋ−１＞との排他的論理和をそれぞれ演算して出力する。
【０１７０】
ＥＸＯＲ回路６０ｂは、データＤＯＵＴ２＜ｋ＞とスキャン出力データＳＯＵＴ＜ｋ＞との排他的論理和を演算して出力する。同様に、データＤＯＵＴ２＜ｋ＋１＞とスキャン出力データＳＯＵＴ＜ｋ＋１＞、・・・、データＤＯＵＴ２＜ｎ−１＞とスキャン出力データＳＯＵＴ＜ｎ−１＞との排他的論理和をそれぞれ演算して出力する。
【０１７１】
ＯＲ回路６１ａはＥＸＯＲ回路６０ａから出力されるｋビットのデータの論理和を演算して出力する。その結果、ＥＸＯＲ回路６０ａから出力されるｎビットのデータのうち、少なくとも１ビットのデータが“１”を示す場合、ＯＲ回路６１ａから“１”が出力され、全てのビットが“０”の場合、“０”が出力される。
【０１７２】
ＯＲ回路６１ｂはＥＸＯＲ回路６０ｂから出力される（ｎ−ｋ）ビットのデータの論理和を演算して出力する。その結果、ＥＸＯＲ回路６０ｂから出力される（ｎ−ｋ）ビットのデータのうち、少なくとも１ビットのデータが“１”を示す場合、ＯＲ回路６１ｂから“１”が出力され、全てのビットが“０”の場合、“０”が出力される。
【０１７３】
ＦＦ６２ａはＯＲ回路６１ａの出力を、パラレル・シリアル変換回路１４１，１５１に入力されているクロック信号ｆＣＬＫ（図示せず）の立ち上がりで保持して比較結果データＣＯＭＰａとして出力する。そして、ＦＦ６２ｂはＯＲ回路６１ｂの出力を、ＲＡＭ４０ｆ，５０ｆ等に入力されているクロック信号ＣＬＫ（図示せず）の立ち上がりで保持して比較結果データＣＯＭＰｂとして出力する。
【０１７４】
なお、本実施の形態３に係るスキャンＦＦ群３では、スキャンＦＦ群３０ｇ１〜３０ｇｋにおける全ＦＦ３１ａには、クロック信号ＣＬＫの代わりにクロック信号ｆＣＬＫが入力されており、スキャンＦＦ群３０ｇ（ｋ＋１）〜３０ｇｎにおける全ＦＦ３１ａには、クロック信号ＣＬＫがそのまま入力されている。
【０１７５】
従って、スキャンＦＦ群３０ｇ１〜３０ｇｋにおけるＦＦ３１ａは、クロック信号ｆＣＬＫの立ち上がりで、セレクタ３１ｂの出力を保持して出力し、スキャンＦＦ群３０ｇ（ｋ＋１）〜３０ｇｎにおけるＦＦ３１ａは、クロック信号ＣＬＫの立ち上がりで、セレクタ３１ｂの出力を保持して出力する。
【０１７６】
更に、本実施の形態３に係るスキャンＦＦ群３では、スキャンＦＦ群３０ｇ１〜３０ｇｋにおける全セレクタ３１ｂには、テスト信号ＴＥＳＴの代わりにテスト信号ｆＴＥＳＴが入力されており、スキャンＦＦ群３０ｇ（ｋ＋１）〜３０ｇｎにおける全セレクタ３１ｂには、テスト信号ＴＥＳＴがそのまま入力されている。その他の構成については、上述の実施の形態１に係る半導体集積回路１と同様のため、その説明は省略する。
【０１７７】
次に、本実施の形態３に係る半導体集積回路の動作について説明する。テスト信号ＴＥＳＴ，ｆＴＥＳＴをともに“０”にすると、本実施の形態３に係る半導体集積回路は通常動作モードになり、通常動作を行う。このとき、ＲＡＭ４０ｅ，４０ｆのアドレス入力端子ａｄｒ、データ入力端子ＤＩ及び制御端子Ｗ／Ｒには、通常動作用アドレス回路４２ｅ、通常動作用ＲＡＭ書き込み回路４３ｅ及び通常動作用Ｗ／Ｒ回路４８ｅの出力がそれぞれ接続される。そして、ＲＡＭ４０ｅ，４０ｆに対してライトアクセスやリードアクセスが実行される。
【０１７８】
また、ＲＡＭ５０ｅ，５０ｆのアドレス入力端子ａｄｒ、データ入力端子ＤＩ及び制御端子Ｗ／Ｒには、通常動作用アドレス回路５２ｅ、通常動作用ＲＡＭ書き込み回路５３ｅ及び通常動作用Ｗ／Ｒ回路５８ｅの出力がそれぞれ接続される。そして、各ＲＡＭ５０ｅ，５０ｆに対してライトアクセスやリードアクセスが実行される。
【０１７９】
被テスト回路２に対してスキャンパステストを実行する際、まずテスト信号ＴＥＳＴ，ｆＴＥＳＴをともに“１”にする。これにより、本実施の形態３に係る半導体集積回路がテスト動作モードとなる。次に、ＲＡＭ４０ｅ，４０ｆにスキャン入力データＳＩＮ＜ｌ−１：０＞，ＳＩＮ＜ｎ−ｋ−１：０＞をそれぞれ書き込む。そして、ＲＡＭ５０ｅ，５０ｆにスキャン出力期待値データＳＥＤ＜ｌ−１：０＞，ＳＥＤ＜ｎ−ｋ−１：０＞をそれぞれ書き込む。以下に具体的に説明する。
【０１８０】
ＲＡＭロード信号ｆＲＬＤ１，ＲＬＤ１を“１”にして、ＲＡＭ４０ｅ，４０ｆをライトモードにする。カウンタ制御信号ＣＣＮＴ１，ｆＣＣＮＴ１をともに“１”にして、各テスト用アドレスカウンタ４１，４１ｆを動作させ、テスト用アドレスカウンタ４１，４１ｆのそれぞれのカウント値を“０”からカウントアップさせる。同時に、半導体集積回路の外部のテスタで生成されたｌビットのスキャン入力データＳＩＮ＜ｌ−１：０＞を、クロック信号ＣＬＫの立ち上がりに同期させて、セレクタ４６ｅを介してＲＡＭ４０ｅのデータ入力端子ＤＩに入力する。更に、外部のテスタで生成された（ｎ−ｋ）ビットのスキャン入力データＳＩＮ＜ｎ−ｋ−１：０＞を、クロック信号ＣＬＫの立ち上がりに同期させて、セレクタ４６ｆを介してＲＡＭ４０ｆのデータ入力端子ＤＩに入力する。
【０１８１】
これにより、ＲＡＭ４０ｅにスキャン入力データＳＩＮ＜ｌ−１：０＞が書き込まれ、ＲＡＭ４０ｆにスキャン入力データＳＩＮ＜ｎ−ｋ−１：０＞が書き込まれる。そして、カウンタ制御信号ＣＣＮＴ１，ｆＣＣＮＴ１をともに“０”にしてテスト用アドレスカウンタ４１，４１ｆのカウントを停止し、ＲＡＭロード信号ＲＬＤ１，ｆＲＬＤ１をともに“０”にしてＲＡＭ４０ｅ，４０ｆをリードモードにする。これにより、スキャン入力データＳＩＮ＜ｌ−１：０＞のＲＡＭ４０ｅへのロードと、スキャン入力データＳＩＮ＜ｎ−ｋ−１：０＞のＲＡＭ４０ｆへのロードとが完了する。
【０１８２】
次に、ＲＡＭロード信号ＲＬＤ２，ｆＲＬＤ２をともに“１”にして、ＲＡＭ５０ｅ，５０ｆをライトモードにする。テスト用アドレスカウンタ５１，５１ｆを動作させて、それぞれのカウント値を“０”からカウントアップさせる。同時に、クロック信号ＣＬＫの立ち上がりに同期させて、外部のテスタで生成されたｌビットのスキャン出力期待値データＳＥＤ＜ｌ−１：０＞をセレクタ５６ｅを介してＲＡＭ５０ｅのデータ入力端子ＤＩに入力する。更に、クロック信号ＣＬＫの立ち上がりに同期させて、外部のテスタで生成された（ｎ−ｋ）ビットのスキャン出力期待値データＳＥＤ＜ｎ−ｋ−１：０＞をセレクタ５６ｆを介してＲＡＭ５０ｆのデータ入力端子ＤＩに入力する。
【０１８３】
これにより、ＲＡＭ５０ｅにスキャン出力期待値データＳＥＤ＜ｌ−１：０＞が書き込まれ、ＲＡＭ５０ｆにスキャン出力期待値データＳＥＤ＜ｎ−ｋ−１：０＞が書き込まれる。そして、カウンタ制御信号ＣＣＮＴ２，ｆＣＣＮＴ２をともに“０”にしてテスト用アドレスカウンタ５１，５１ｆのカウントを停止し、ＲＡＭロード信号ＲＬＤ２，ｆＲＬＤ２をともに“０”にしてＲＡＭ５０ｅ，５０ｆをリードモードにする。これにより、スキャン出力期待値データＳＥＤ＜ｌ−１：０＞のＲＡＭ５０ｅへのロードと、スキャン出力期待値データＳＥＤ＜ｎ−ｋ−１：０＞のＲＡＭ５０ｆへのロードとが完了する。
【０１８４】
次に、被テスト回路２の領域２０ａ１〜２０ａｋ，２０ｂ１〜２０ｂｋ，２０ｃ１〜２０ｃｋに対してスキャンパステストを実行する。
【０１８５】
まず、テスト信号ｆＴＥＳＴを“１に、ＲＡＭ４０ｅをリードモードにして、テスト用アドレスカウンタ４１ｆのカウント値を“０”からカウントアップさせる。これにより、ＲＡＭ４０ｅに格納されているスキャン入力データＳＩＮ＜ｌ−１：０＞が、クロック信号ＣＬＫの立ち上がりに同期してＲＡＭ４０ｅから出力されて、パラレル・シリアル変換回路１４１に入力される。
【０１８６】
パラレル・シリアル変換回路１４１は、入力されたスキャン入力データＳＩＮ＜ｌ−１：０＞をｋビットのデータに変換して、変換後のデータをクロック信号ｆＣＬＫの立ち上がりに同期させて、データＤＯＵＴ１＜ｋ−１：０＞としてスキャンＦＦ群３に出力する。
【０１８７】
このとき、スキャンＦＦ群ｇ１〜ｇｋはそれぞれスキャンパスＳＰ１〜ＳＰｋを構成する。従って、パラレル・シリアル変換回路１４１から出力されるデータＤＯＵＴ１＜０＞〜＜ｋ−１＞は、それぞれスキャンパスＳＰ１〜ＳＰｋに入力される。そして、スキャンパスＳＰ１〜ＳＰｋは、クロック信号ｆＣＬＫが立ち上がるたびにデータをシフトし、同時に新たなテストデータが順次入力される。
【０１８８】
スキャンパスＳＰ１〜ＳＰｋのすべてのＦＦ３１ａにテストデータが設定されると、テスト信号ｆＴＥＳＴを“０”にして半導体集積回路を通常動作モードにし、同時にテスト用アドレスカウンタ４１ｆのカウント動作を停止する。これにより、各スキャンパスＳＰ１〜ＳＰｋに設定されたテストデータが被テスト回路２の領域２０ａ１〜２０ａｋ，２０ｂ１〜２０ｂｋ，２０ｃ１〜２０ｃｋに入力されて、被テスト回路２は通常のスキャン動作を行う。
【０１８９】
そして、次のクロック信号ｆＣＬＫの立ち上がりで、スキャン結果データである被テスト回路２の出力データが、スキャンパスＳＰ１〜ＳＰｋのスキャンＦＦ３１に設定される。
【０１９０】
次に、テスト信号ｆＴＥＳＴを“１”にして半導体集積回路をテスト動作モードにし、同時にテスト用アドレスカウンタ４１ｆのカウント動作を再開する。これにより、スキャンＦＦ群ｇ１〜ｇｋは再度それぞれスキャンパスＳＰ１〜ＳＰｋを構成する。
【０１９１】
次にクロック信号ｆＣＬＫが立ち上がると、スキャンパスＳＰ１〜ＳＰｋから、スキャン結果データがスキャン出力データＳＯＵＴ＜０＞〜ＳＯＵＴ＜ｋ−１＞としてそれぞれ出力されて、比較回路６ｃに入力される。そして、クロック信号ｆＣＬＫが立ち上がるたびに、スキャンパスＳＰ１〜ＳＰｋからスキャン結果データが出力されて、テストデータに対するテスト結果が得られる。
【０１９２】
スキャンパスＳＰ１〜ＳＰｋから出力されるスキャン結果データは、比較回路６ｃで、パラレル・シリアル変換回路１５１の出力と比較される。以下に具体的に説明する。
【０１９３】
ＲＡＭロード信号ｆＲＬＤ２を“０”にしてＲＡＭ５０ｅをリードモードにし、更にテスト用アドレスカウンタ５１ｆのカウント値を“０”からカウントアップさせる。これにより、ＲＡＭ５０ｅに格納されているスキャン出力期待値データＳＥＤ＜ｌ−１：０＞が、クロック信号ＣＬＫの立ち上がりに同期してＲＡＭ５０ｅから出力されて、パラレル・シリアル変換回路１５１に入力される。
【０１９４】
パラレル・シリアル変換回路１５１は、入力されたスキャン出力期待値データＳＥＤ＜ｌ−１：０＞をｋビットのデータに変換して、変換後のデータをクロック信号ｆＣＬＫの立ち上がりに同期させて、データＤＯＵＴ２＜ｋ−１：０＞としてスキャンＦＦ群３に出力する。
【０１９５】
そして、比較回路６ｃは、データＤＯＵＴ２＜ｋ−１：０＞と、スキャン結果データを示すスキャン出力データＳＯＵＴ＜ｋ−１：０＞とをｋビット単位で比較し、その比較結果を比較結果データＣＯＭＰａとして、半導体集積回路の外部に出力する。
【０１９６】
次に、被テスト回路２の領域２０ａ（ｋ＋１）〜２０ａｎ，２０ｂ（ｋ＋１）〜２０ｂｎ，２０ｃ（ｋ＋１）〜２０ｃｎに対してスキャンパステストを実行する。
【０１９７】
まず、テスト信号ＴＥＳＴを“１に、ＲＡＭ４０ｆをリードモードにして、テスト用アドレスカウンタ４１のカウント値を“０”からカウントアップさせる。これにより、ＲＡＭ４０ｆに格納されているスキャン入力データＳＩＮ＜ｎ−ｋ−１：０＞が、クロック信号ＣＬＫの立ち上がりに同期して出力されて、データＤＯＵＴ１＜ｎ−１：ｋ＞としてスキャンＦＦ群３に入力される。
【０１９８】
このとき、スキャンＦＦ群３０ｇ（ｋ＋１）〜３０ｇｎはそれぞれスキャンパスＳＰ（ｋ＋１）〜ＳＰｎを構成する。従って、ＲＡＭ４０ｆから読み出されたスキャン入力データＳＩＮ＜０＞〜＜ｎ−ｋ−１＞は、それぞれスキャンパスＳＰ（ｋ＋１）〜ＳＰｎに入力される。そして、スキャンパスＳＰ（ｋ＋１）〜ＳＰｎは、クロック信号ＣＬＫが立ち上がるたびにデータをシフトし、同時に新たなテストデータが順次入力される。
【０１９９】
スキャンパスＳＰ（ｋ＋１）〜ＳＰｎのすべてのＦＦ３１ａにテストデータが設定されると、テスト信号ＴＥＳＴを“０”にして半導体集積回路を通常動作モードにし、同時にテスト用アドレスカウンタ４１のカウント動作を停止する。これにより、各スキャンパスＳＰ（ｋ＋１）〜ＳＰｎに設定されたテストデータが被テスト回路２の領域２０ａ（ｋ＋１）〜２０ａｎ，２０ｂ（ｋ＋１）〜２０ｂｎ，２０ｃ（ｋ＋１）〜２０ｃｎに入力されて、被テスト回路２は通常のスキャン動作を行う。
【０２００】
そして、次のクロック信号ＣＬＫの立ち上がりで、スキャン結果データである被テスト回路２の出力データが、スキャンパスＳＰ（ｋ＋１）〜ＳＰｎのスキャンＦＦ３１に設定される。
【０２０１】
次に、テスト信号ＴＥＳＴを“１”にして半導体集積回路をテスト動作モードにし、同時にテスト用アドレスカウンタ４１のカウント動作を再開する。これにより、スキャンＦＦ群３０ｇ（ｋ＋１）〜３０ｇｎは再度それぞれスキャンパスＳＰ（ｋ＋１）〜ＳＰｎを構成する。
【０２０２】
次にクロック信号ＣＬＫが立ち上がると、スキャンパスＳＰ（ｋ＋１）〜ＳＰｎから、スキャン結果データがスキャン出力データＳＯＵＴ＜ｋ＞〜ＳＯＵＴ＜ｎ−１＞としてそれぞれ出力されて、比較回路６ｃに入力される。そして、クロック信号ＣＬＫが立ち上がるたびに、スキャンパスＳＰ（ｋ＋１）〜ＳＰｎからスキャン結果データが出力されて、テストデータに対するテスト結果が得られる。
【０２０３】
スキャンパスＳＰ（ｋ＋１）〜ＳＰｎから出力されるスキャン結果データは、比較回路６ｃで、ＲＡＭ５０ｆから読み出されたスキャン出力期待値データＳＥＤ＜ｎ−ｋ−１：０＞と比較される。以下に具体的に説明する。
【０２０４】
ＲＡＭロード信号ＲＬＤ２を“０”にしてＲＡＭ５０ｆをリードモードにし、更にテスト用アドレスカウンタ５１のカウント値を“０”からカウントアップさせる。これにより、ＲＡＭ５０ｆに格納されているスキャン出力期待値データＳＥＤ＜ｎ−ｋ−１：０＞が、クロック信号ＣＬＫの立ち上がりに同期してＲＡＭ５０ｆから出力されて、データＤＯＵＴ２＜ｎ−１：ｋ＞として比較回路６ｃに入力される。
【０２０５】
そして、比較回路６ｃは、データＤＯＵＴ２＜ｎ−１：ｋ＞と、スキャン結果データを示すスキャン出力データＳＯＵＴ＜ｎ−１：ｋ＞とを（ｎ−ｋ）ビット単位で比較し、その比較結果を比較結果データＣＯＭＰｂとして、半導体集積回路の外部に出力する。
【０２０６】
上述のように、本実施の形態３に係る半導体集積回路によれば、パラレル・シリアル変換回路１４１によって、ＲＡＭ４０ｅから読み出された、ｌビットのパラレルデータであるスキャン入力データＳＩＮ＜ｌ−１：０＞を、所定のビット数単位でシリアルデータに変換して、スキャンパスＳＰ１〜ＳＰｋに入力している。本実施の形態３のように、通常、パラレル・シリアル変換回路１４１は、ＲＡＭ４０ｅの動作周波数よりも高い周波数でシリアルデータを転送することができるため、テストデータを、ＲＡＭ４０ｅからの転送速度よりも、高速でスキャンパスＳＰ１〜ＳＰｋに転送することができる。
【０２０７】
従って、本実施の形態３のように、スキャンＦＦ群３０ｇ１〜３０ｇｋにおけるＦＦ３１ａに、クロック信号ＣＬＫよりも周波数の高いクロック信号ｆＣＬＫを入力することが可能となり、スキャンパスＳＰ１〜ＳＰｋをＲＡＭ４０ｅの動作周波数以上の周波数で動作させることができる。その結果、通常動作モード時にＲＡＭ４０ｅの動作周波数以上の周波数で動作する領域２０ａ１〜２０ａｋ，２０ｂ１〜２０ｂｋ，２０ｃ１〜２０ｃｋに対して、ＲＡＭ４０ｅの動作周波数以上の周波数でタイミングテストを行うことができる。
【０２０８】
また、本実施の形態３では、テストデータのシリアルデータ変換に加えて、パラレル・シリアル変換回路１５１によって、ＲＡＭ５０ｅから読み出された、ｌビットのパラレルデータであるスキャン出力期待値データＳＥＤ＜ｌ−１：０＞も、所定のビット数単位でシリアルデータに変換して、比較回路６ｃに入力している。本実施の形態３のように、パラレル・シリアル変換回路１５１は、通常、ＲＡＭ５０ｅの動作周波数よりも高い周波数でシリアルデータを転送することができるため、ＲＡＭ５０ｅから読み出した期待値データを直接比較回路６ｃに入力する場合よりも、比較回路６ｃにおいて、スキャン結果データと期待値データとの比較動作を高速に行える。従って、比較結果を得るまでの時間を短縮することができる。
【０２０９】
実施の形態４．
上述の実施の形態１〜３に係る半導体集積回路では、スキャン結果データと期待値データとの比較結果を得ることはできるが、被テスト回路２のどの部分に不良が発生しているのか特定することができなかった。
【０２１０】
そこで、本実施の形態４では、被テスト回路２における不良発生箇所をある程度特定することができるスキャンパステスト技術を提供する。
【０２１１】
図１２は本発明の実施の形態４に係る半導体集積回路１ａの構成を示すブロック図である。本実施の形態４に係る半導体集積回路１ａは、上述の実施の形態１に係る半導体集積回路１において、基本的には、レジスタ７を更に備えるものである。
【０２１２】
レジスタ７は、ｍビットのレジスタ回路であって、比較回路６から出力される比較結果データＣＯＭＰと、期待値データ出力回路５のセレクタ５５から出力されるアドレスＡＤＲ２＜ｍ−１：０＞、言い換えればＲＡＭ５０に入力されるアドレスＡＤＲ２＜ｍ−１：０＞とが入力されている。そして、比較結果データＣＯＭＰが“０”から“１”に遷移するタイミングで、アドレスＡＤＲ２＜ｍ−１：０＞を保持して、エラーアドレスＥＲＲＡＤ＜ｍ−１：０＞として半導体集積回路１ａの外部へ出力する。
【０２１３】
このように、レジスタ７は、比較結果データＣＯＭＰが“０”から“１”に遷移するタイミングで、そのときにＲＡＭ５０に入力されているアドレスＡＤＲ２＜ｍ−１：０＞を保持して出力する。スキャンパステスト時において、レジスタ７が保持するアドレスＡＤＲ２＜ｍ−１：０＞は、スキャン出力期待値データＳＥＤ＜ｎ−１：０＞とスキャン結果データとが互いに不一致である際の当該スキャン出力期待値データＳＥＤ＜ｎ−１：０＞が格納されていたＲＡＭ５０のアドレスを示している。
【０２１４】
従って、スキャンパステスト時において、レジスタ７は、比較結果データＣＯＭＰとアドレスＡＤＲ２＜ｍ−１：０＞とに基づいて、比較結果データＣＯＭＰが比較エラーを示す際のスキャン出力期待値データＳＥＤ＜ｎ−１：０＞のＲＡＭ５０におけるアドレスを出力している。以後、このアドレスを「エラー情報」と呼ぶ。
【０２１５】
ＲＡＭ５０においては、どのアドレスに、どのようなスキャン出力期待値データＳＥＤ＜ｎ−１：０＞が格納されているかが分かっており、更に、スキャン出力期待値データＳＥＤ＜ｎ−１：０＞とスキャン結果データとは互いに対となっているため、レジスタ７から出力されるエラー情報をモニタすることによって、被テスト回路２での不良発生箇所をある程度特定することができる。
【０２１６】
例えば、スキャンパステストにおいて、レジスタ７から出力されるエラーアドレスＥＲＲＡＤ＜ｍ−１：０＞が十進数表記で“０“を示す場合、そのアドレスに格納されていたスキャン出力期待値データＳＥＤ＜ｎ−１：０＞は、スキャンＦＦ群３０ｇの最終段のスキャンＦＦ３１に書き込まれたスキャン結果データに対する期待値データであるため、被テスト回路２のうち、その最終段のスキャンＦＦ３１にスキャン結果データを出力した回路に不良が発生していることが分かる。
【０２１７】
このように、本実施の形態４に係る半導体集積回路１ａによれば、レジスタ７が出力するエラー情報をモニタすることによって、被テスト回路２における不具合発生箇所を特定することができる。
【０２１８】
実施の形態５．
上述の実施の形態４に係る半導体集積回路１ａでは、スキャンパステスト中に、エラーアドレスＥＲＲＡＤ＜ｍ−１：０＞が順次出力されるため、クロック信号ＣＬＫの周波数でエラー情報をサンプリングする必要がある。そのため、半導体集積回路１ａの外部に高精度のテストが必要となる。
【０２１９】
そこで、本実施の形態５では、エラー情報をモニタする際に、半導体集積回路の外部に高精度のテスタを不要とする半導体集積回路を提案する。
【０２２０】
図１３は、本発明の実施の形態５に係る半導体集積回路が備える期待値データ出力回路５ｄの構成を示すブロック図である。本実施の形態５に係る半導体集積回路は、上述の実施の形態１に係る半導体集積回路１において、基本的には、期待値データ出力回路５の替わりに期待値データ出力回路５ｄを備えるものである。
【０２２１】
図１３に示されるように、期待値データ出力回路５ｄは、実施の形態１に係る期待値データ出力回路５において、基本的には、エラー情報書き込み回路１５５を更に備えるものである。
【０２２２】
エラー情報書き込み回路１５５は、エラー書き込み用アドレスカウンタ１５５ａと、セレクタ１５５ｂ，１５５ｃと、ＯＲ回路１５５ｄとを備えている。エラー書き込み用アドレスカウンタ１５５ａは、ｍビットのカウンタであって、そのカウント値をセレクタ１５５ｂに出力する。エラー書き込み用アドレスカウンタ１５５ａは、比較回路６から出力される比較結果データＣＯＭＰが“０”から“１”に遷移するタイミングでカウント動作を行う。なお、エラー書き込み用アドレスカウンタ１５５ａのカウント値は、スキャンパステスト開始時に、図示しないリセット信号によってリセットされる。
【０２２３】
セレクタ１５５ｂには、比較結果データＣＯＭＰに基づいて、エラー書き込み用アドレスカウンタ１５５ａの出力とテスト用アドレスカウンタ５１の出力とのどちらか一方を選択してセレクタ５５に出力する。セレクタ１５５ｂは、比較結果データＣＯＭＰが“１”のときエラー書き込み用アドレスカウンタ１５５ａの出力を選択し、“０”のときテスト用アドレスカウンタ５１の出力を選択して出力する。
【０２２４】
セレクタ１５５ｃは、比較結果データＣＯＭＰに基づいて、テスト用アドレスカウンタ５１の出力とスキャン出力期待値データＳＥＤ＜ｎ−１：０＞のどちらか一方を選択してセレクタ５６に出力する。セレクタ１５５ｃは、比較結果データＣＯＭＰが“１”のときテスト用アドレスカウンタ５１の出力を選択し、“０”のときスキャン出力期待値データＳＥＤ＜ｎ−１：０＞を選択して出力する。
【０２２５】
ＯＲ回路１５５ｄは、比較結果データＣＯＭＰとＲＡＭロード信号ＲＬＤ２との論理和を演算して出力する。
【０２２６】
実施の形態１では、セレクタ５５にはテスト用アドレスカウンタ５１の出力が入力されていたが、本実施の形態５では、その替わりにセレクタ１５５ｂの出力が入力されている。また、実施の形態１では、セレクタ５６には、スキャン出力期待値データＳＥＤ＜ｎ−１：０＞が入力されていたが、本実施の形態５では、その替わりにセレクタ１５５ｃの出力が入力されている。
【０２２７】
また、実施の形態１では、セレクタ５７にはＲＡＭロード信号ＲＬＤ２が入力されていたが、本実施の形態５では、その替わりにＯＲ回路１５５ｄの出力が入力されている。
【０２２８】
なお、本実施の形態５では、ｍ＝ｎであって、ＲＡＭ５０のアドレス幅とデータ幅とのビット数は互いに同じである。
【０２２９】
次に、エラー情報書き込み回路１５５の動作について説明する。スキャンパステスト時に、比較回路６から出力される比較結果データＣＯＭＰが“０”から“１”に遷移すると、その遷移タイミングでエラー書き込み用アドレスカウンタ１５１ａは、カウント値を１つカウントアップする。そして、そのカウント値がセレクタ１５５ｂ，５５を介してＲＡＭ５０のアドレス入力端子ａｄｒに入力される。
【０２３０】
また、比較結果データＣＯＭＰが“０”から“１”に遷移すると、ＲＡＭ５０はリードモードからライトモードに変化する。そして、テスト用アドレスカウンタ５１の出力がセレクタ１５５ｃ，５６を介して、ＲＡＭ５０のデータ入力端子ＤＩに入力される。
【０２３１】
これにより、比較結果データＣＯＭＰが“１”を示す際に、テスト用アドレスカウンタ５１が出力しているアドレスＡＤ２＜ｍ−１：０＞がＲＡＭ５０に書き込まれる。このとき、ＲＡＭ５０にはスキャン出力期待値データＳＥＤ＜ｎ−１：０＞が書き込まれているが、そのデータはアドレスＡＤ２＜ｍ−１：０＞によって上書きされる。しかしながら、上書きされるスキャン出力期待値データＳＥＤ＜ｎ−１：０＞はスキャンパステストにおいて既に使用されたものなので問題が生じることはない。
【０２３２】
このように、本実施の形態５に係る半導体集積回路では、比較結果データＣＯＭＰが比較エラーを示す際に、テスト用アドレスカウンタ５１が出力しているアドレスＡＤ２＜ｍ−１：０＞をＲＡＭ５０に書き込んでいる。このときのアドレスＡＤ２＜ｍ−１：０＞はエラー情報であるため、ＲＡＭ５０にはエラー情報が書き込まれる。つまり、エラー情報書き込み回路１５５は、比較結果データＣＯＭＰと、ＲＡＭ５０に入力されるアドレスＡＤ２＜ｍ−１：０＞とに基づいて、ＲＡＭ５０にエラー情報を記憶させている。従って、スキャンパステスト終了後、ＲＡＭ５０からエラー情報を読み出すことによって、被テスト回路２での不良発生箇所を特定することができる。
【０２３３】
更に、エラー情報をＲＡＭ５０に記憶するため、任意のタイミングでエラー情報を読み出すことができ、クロック信号ＣＬＫの周波数でエラー情報をサンプリングする必要がない。従って、実施の形態４で必要な高精度のテスタが不要になる。
【０２３４】
なお、本実施の形態５では、エラー情報をＲＡＭ５０に記憶させたが、ＲＡＭ５０の替わりにＲＡＭ４０に記憶させても良い。以下に、この場合の半導体集積回路の構成について説明する。
【０２３５】
図１４は、本発明の実施の形態５に係る半導体集積回路の変形例が備えるスキャン入力データ出力回路４ｄの構成を示すブロック図である。この半導体集積回路は、上述の実施の形態１に係る半導体集積回路１において、基本的には、スキャン入力データ出力回路４の替わりにスキャン入力データ出力回路４ｄを備えるものである。
【０２３６】
図１４に示されるように、スキャン入力データ出力回路４ｄは、実施の形態１に係るスキャン入力データ出力回路４において、基本的には、上述のエラー情報書き込み回路１５５を更に備えるものである。
【０２３７】
図１３に示すエラー情報書き込み回路１５５では、セレクタ１５５ｂの一方の入力には、テスト用アドレスカウンタ５１の出力が入力されていたが、図１４に示すエラー情報書き込み回路１５５では、その替わりにテスト用アドレスカウンタ４１の出力が入力されている。
【０２３８】
また、図１３に示すエラー情報書き込み回路１５５では、セレクタ１５５ｃの一方の入力には、スキャン出力期待値データＳＥＤ＜ｎ−１：０＞が入力されていたが、図１４に示すエラー情報書き込み回路１５５では、その替わりにスキャン入力データＳＩＮ＜ｎ−１：０＞が入力されている。
【０２３９】
また、図１３に示すエラー情報書き込み回路１５５では、ＯＲ回路１５５ｄの一方の入力には、ＲＡＭロード信号ＲＬＤ２が入力されていたが、図１４に示すエラー情報書き込み回路１５５では、その替わりにＲＡＭロード信号ＲＬＤ１が入力されている。
【０２４０】
実施の形態１では、セレクタ４５には、テスト用アドレスカウンタ４１の出力が入力されていたが、ここではその替わりにセレクタ１５５ｂの出力が入力されている。また実施の形態１では、セレクタ４６には、スキャン入力データＳＩＮ＜ｎ−１：０＞が入力されていが、ここではその替わりにセレクタ１５５ｃの出力が入力されている。また実施の形態１では、セレクタ４７には、ＲＡＭロード信号ＲＬＤ１が入力されていたが、ここではその替わりにＯＲ回路１５５ｄの出力が入力されている。
【０２４１】
なお、この変形例でも、ｍ＝ｎであって、ＲＡＭ４０のアドレス幅とデータ幅とのビット数は互いに同じである。
【０２４２】
次に、図１４に示すエラー情報書き込み回路１５５の動作について説明する。スキャンパステスト時に、比較回路６から出力される比較結果データＣＯＭＰが“０”から“１”に遷移すると、その遷移タイミングでエラー書き込み用アドレスカウンタ１５１ａは、カウント値を１つカウントアップする。そして、そのカウント値がセレクタ１５５ｂ，４５を介してＲＡＭ４０のアドレス入力端子ａｄｒに入力される。
【０２４３】
また、比較結果データＣＯＭＰが“０”から“１”に遷移すると、ＲＡＭ４０はリードモードからライトモードに変化する。そして、テスト用アドレスカウンタ５１の出力であるアドレスＡＤ２＜ｍ−１：０＞がセレクタ１５５ｃ，４６を介して、ＲＡＭ４０のデータ入力端子ＤＩに入力される。
【０２４４】
これにより、比較結果データＣＯＭＰが“１”を示す際に、テスト用アドレスカウンタ５１が出力しているアドレスＡＤ２＜ｍ−１：０＞がＲＡＭ４０に書き込まれる。このとき、ＲＡＭ４０にはスキャン入力データＳＩＮ＜ｎ−１：０＞が書き込まれているが、そのデータはアドレスＡＤ２＜ｍ−１：０＞によって上書きされる。しかしながら、上書きされるスキャン入力データＳＩＮ＜ｎ−１：０＞はスキャンパステストにおいて既に使用されたものなので問題が生じることはない。
【０２４５】
以上のように、エラー情報書き込み回路１５５の働きによって、ＲＡＭ４０にエラー情報が書き込まれる。スキャンパステスト終了後、ＲＡＭ４０からエラー情報を読み出すことによって、被テスト回路２での不具合発生箇所をある程度特定することができるし、更に、クロック信号ＣＬＫの周波数でエラー情報をサンプリングする必要がないため、高精度のテスタが不要になる。
【０２４６】
【発明の効果】
この発明に係る半導体集積回路によれば、半導体集積回路の外部にタイミング精度の高い比較器が不要となるため、安価なテスタを用いてスキャンパステストを実行することができる。更に、スキャン入力データとスキャン出力期待値データとが別々の記憶回路に記憶されているため、簡単な回路構成でスキャンパステストを実行することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態１に係る半導体集積回路の構成を示すブロック図である。
【図２】本発明の実施の形態１に係るスキャン入力データ出力回路の構成を示すブロック図である。
【図３】本発明の実施の形態１に係る期待値データ出力回路の構成を示すブロック図である。
【図４】本発明の実施の形態１に係るスキャンＦＦ群及び被テスト回路の構成を示すブロック図である。
【図５】本発明の実施の形態１に係るスキャンＦＦの構成を示すブロック図である。
【図６】本発明の実施の形態１に係る比較回路の構成を示すブロック図である。
【図７】本発明の実施の形態２に係るスキャン入力データ出力回路の構成を示すブロック図である。
【図８】本発明の実施の形態２に係るスキャン入力データ出力回路の変形例の構成を示すブロック図である。
【図９】本発明の実施の形態３に係るスキャン入力データ出力回路の構成を示すブロック図である。
【図１０】本発明の実施の形態３に係る期待値データ出力回路の構成を示すブロック図である。
【図１１】本発明の実施の形態３に係る比較回路の構成を示すブロック図である。
【図１２】本発明の実施の形態４に係る半導体集積回路の構成を示すブロック図である。
【図１３】本発明の実施の形態５に係る期待値データ出力回路の構成を示すブロック図である。
【図１４】本発明の実施の形態５に係るスキャン入力データ出力回路の構成を示すブロック図である。
【符号の説明】
１，１ａ  半導体集積回路、２  被テスト回路、３  スキャンＦＦ群、６，６ｃ  比較回路、７  レジスタ、４０，４０ａ〜４０ｆ，５０，５０ｅ，５０ｆ  ＲＡＭ、１５５  エラー情報書き込み回路、ＳＰ１〜ＳＰｎ  スキャンパス。
【図１】
2004271438.tif 000003
【図２】
2004271438.tif 000004
【図３】
2004271438.tif 000005
【図４】
2004271438.tif 000006
【図５】
2004271438.tif 000007
【図６】
2004271438.tif 000008
【図７】
2004271438.tif 000009
【図８】
2004271438.tif 000010
【図９】
2004271438.tif 000011
【図１０】
2004271438.tif 000012
【図１１】
2004271438.tif 000013
【図１２】
2004271438.tif 000014
【図１３】
2004271438.tif 000015
【図１４】
2004271438.tif 000016