(57)【特許請求の範囲】
【請求項１】
第１のマクロブロックとの間での送受信処理を第１のクロック周波数で行う第２のマクロブロックのためのテスト回路であって、
テスト入力端子からの送信データ信号を、第１のクロック周波数よりも遅い第２のクロック周波数で蓄積するテスト用送信バッファと、
第２のマクロブロックからの受信データ信号を、第１のクロック周波数よりも遅い第３のクロック周波数でテスト出力端子に出力するテスト用受信バッファとを含み、
前記テスト用送信バッファが、
テスト入力端子からの送信データ信号を第２のクロック周波数で蓄積した後に、蓄積した送信データ信号をデータ通信用の物理層回路を含む第２のマクロブロックに対して第１のクロック周波数で出力し、
前記テスト用受信バッファが、
第２のマクロブロックからの受信データ信号を第１のクロック周波数で蓄積した後に、蓄積した受信データ信号を第３のクロック周波数でテスト出力端子に出力することを特徴とするテスト回路。
【請求項２】
請求項１において、
送信データ信号を受けた第２のマクロブロックが、第１、第２のマクロブロック間のバスとは異なる第１のバスにおいてループバックモードで送受信処理を行い、ループバックモードで受信した受信データ信号を第１のクロック周波数で第１のマクロブロック側に出力した場合に、
前記テスト用受信バッファが、
第２のマクロブロックからの受信データ信号を第１のクロック周波数で蓄積し、蓄積した受信データ信号を第３のクロック周波数でテスト出力端子に出力することを特徴とするテスト回路。
【請求項３】
請求項１又は２において、
第２のマクロブロックとの間で所定の通信手順で送受信処理を行うための通信シーケンサを含み、
前記通信シーケンサが、
テスト用送信バッファに蓄積された送信データ信号を第１のクロック周波数で第２のマクロブロックに送信する処理を行い、第２のマクロブロックからの受信データ信号を第１のクロック周波数でテスト用受信バッファに受信する処理を行うことを特徴とするテスト回路。
【請求項４】
請求項１乃至３のいずれかにおいて、
その第１の入力に、第１のマクロブロックからの出力信号が入力され、その第２の入力に、テスト用送信バッファからの送信データ信号が入力される第１のセレクタと、
その第１の入力に、第１のセレクタからの出力信号が入力され、その第２の入力に、第２のマクロブロックからの受信データ信号が入力される第２のセレクタとを含み、
第２のマクロブロックをテストする第２のテストモード時には、
前記第１のセレクタが、その第２の入力に入力された送信データ信号を第２のマクロブロックに出力し、前記第２のセレクタが、その第２の入力に入力された第２のマクロブロックからの受信データ信号をテスト用受信バッファに出力することを特徴とするテスト回路。
【請求項５】
請求項４において、
第１のマクロブロックをテストする第１のテストモード時には、
前記第１のセレクタが、その第１の入力に入力された第１のマクロブロックからの出力信号を第２のセレクタの第１の入力に出力し、前記第２のセレクタが、その第１の入力に入力された第１のセレクタからの出力信号を第１のマクロブロックに出力することを特徴とするテスト回路。
【請求項６】
請求項５において、
テスト回路に対して第１のマクロブロックと共にスキャンパスが設定され、
前記第１のテストモードが、
前記スキャンパスを用いてスキャン手法でテストを行うスキャンモードであることを特徴とするテスト回路。
【請求項７】
請求項６において、
第１のマクロブロックからテスト回路への出力信号の本数がＩ本であり、テスト回路から第１のマクロブロックへの入力信号の本数がＪ本（Ｉ＞Ｊ）である場合に、第１のセレクタからのＩ本の出力信号のうちの（Ｉ−Ｊ）本の出力信号を保持する（Ｉ−Ｊ）個のダミーのスキャン用フリップフロップを含み、
前記スキャンモード時において、前記ダミーのスキャン用フリップフロップが、保持された出力信号をスキャンパスを介して出力することを特徴とするテスト回路。
【請求項８】
請求項１乃至７のいずれかのテスト回路と、
前記第１のマクロブロックと、
前記第２のマクロブロックと、
を含むことを特徴とする集積回路。
【請求項９】
第１のマクロブロックとの間での送受信処理を第１のクロック周波数で行う第２のマクロブロックを、テスト用送信バッファとテスト用受信バッファを含むテスト回路を用いてテストするテスト方法であって、
テスト入力端子からの送信データ信号を、第１のクロック周波数よりも遅い第２のクロック周波数でテスト用送信バッファに蓄積し、送信データ信号を蓄積した後に、蓄積した送信データ信号を、データ通信用の物理層回路を含む第２のマクロブロックに対して第１のクロック周波数で出力し、
第２のマクロブロックからの受信データ信号を、第１のクロック周波数でテスト用受信バッファに蓄積し、受信データ信号を蓄積した後に、蓄積した受信データ信号を、第１のクロック周波数よりも遅い第３のクロック周波数でテスト出力端子に出力することを特徴とするテスト方法。
【請求項１０】
請求項９において、
送信データ信号を受けた第２のマクロブロックが、ループバックモードで送受信処理を行い、ループバックモードで受信した受信データ信号を第１のクロック周波数で出力した場合に、出力された受信データ信号を第１のクロック周波数でテスト用受信バッファに蓄積し、蓄積した受信データ信号を第３のクロック周波数でテスト出力端子に出力することを特徴とするテスト方法。
【請求項１１】
請求項９又は１０において、
前記テスト回路が、第２のマクロブロックとの間で所定の通信手順で送受信処理を行うための通信シーケンサを含み、
前記通信シーケンサを用いて、テスト用送信バッファに蓄積された送信データ信号を第１のクロック周波数で第２のマクロブロックに送信し、
前記通信シーケンサを用いて、第２のマクロブロックからの受信データ信号を第１のクロック周波数でテスト用受信バッファに受信することを特徴とするテスト方法。
【請求項１２】
請求項９乃至１１のいずれかにおいて、
前記テスト回路が、
その第１の入力に、第１のマクロブロックからの出力信号が入力され、その第２の入力に、テスト用送信バッファからの送信データ信号が入力される第１のセレクタと、
その第１の入力に、第１のセレクタからの出力信号が入力され、その第２の入力に、第２のマクロブロックからの受信データ信号が入力される第２のセレクタとを含み、
第２のマクロブロックをテストする第２のテストモード時には、
前記第１のセレクタの第２の入力に入力された送信データ信号を、第２のマクロブロックに出力し、
前記第２のセレクタの第２の入力に入力された第２のマクロブロックからの受信データ信号を、テスト用受信バッファに出力することを特徴とするテスト方法。
【請求項１３】
請求項１２において、
第１のマクロブロックをテストする第１のテストモード時には、
前記第１のセレクタの第１の入力に入力された第１のマクロブロックからの出力信号を、第２のセレクタの第１の入力に出力し、
前記第２のセレクタの第１の入力に入力された第１のセレクタからの出力信号を、第１のマクロブロックに出力することを特徴とするテスト方法。
【請求項１４】
請求項１３において、
テスト回路に対して第１のマクロブロックと共にスキャンパスを設定し、
前記第１のテストモード時において、スキャンパスを用いてスキャン手法でテストを行うことを特徴とするテスト方法。
【請求項１５】
請求項１４において、
第１のマクロブロックからテスト回路への出力信号の本数がＩ本であり、テスト回路から第１のマクロブロックへの入力信号の本数がＪ本（Ｉ＞Ｊ）である場合に、第１のセレクタからのＩ本の出力信号のうちの（Ｉ−Ｊ）本の出力信号をダミーのスキャン用フリップフロップに保持し、
前記スキャンモード時において、保持された出力信号をスキャンパスを介して出力することを特徴とするテスト方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、テスト回路、集積回路及びテスト方法に関する。
【０００２】
【背景技術】
近年、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）１．１規格に対する下位互換性を持ちながら、ＵＳＢ１．１に比べて格段に高速なデータ転送速度を実現できるＵＳＢ２．０規格が策定され、注目を浴びている。また、ＵＳＢ２．０の物理層回路や、論理層回路の一部についてのインターフェース仕様を定義したＵＴＭＩ（ＵＳＢ２．０  Ｔｒａｎｓｃｅｉｖｅｒ  Ｍａｃｒｏｃｅｌｌ  Ｉｎｔｅｒｆａｃｅ）も策定されている。このようなＵＴＭＩ準拠のマクロブロック（マクロセル）を用いた集積回路の従来技術としては以下のようなものがある。
【０００３】
【特許文献１】
特開２００２−３４３８６４号公報
【０００４】
【発明が解決しようとする課題】
さて、このＵＳＢ２．０では、従来のＵＳＢ１．１で定義されていたＦＳ（Ｆｕｌｌ  Ｓｐｅｅｄ）モードに加えて、ＨＳ（Ｈｉｇｈ  Ｓｐｅｅｄ）モードと呼ばれる転送モードが用意されている。このＨＳモードでは４８０Ｍｂｐｓでデータ転送が行われるため、１２Ｍｂｐｓでデータ転送が行われるＦＳモードに比べて高速なデータ転送を実現できる。
【０００５】
しかしながらこのような高速なデータ転送が可能なＵＴＭＩのマクロブロックでは、故障検出のためのテストが難しいという課題がある。即ちＵＴＭＩのマクロブロックとその前段のＳＩＥ（Ｓｅｒｉａｌ  Ｉｎｔｅｒｆａｃｅ  Ｅｎｇｉｎｅ）との間では、例えば８ビットバスで６０ＭＨｚのクロック周波数（第１のクロック周波数）で送受信処理が行われる。従って、ＵＴＭＩのマクロブロックの故障検出（結線不良、素子不良）を行う場合には、外部のテスタが、集積回路のテスト端子から６０ＭＨｚのクロック周波数で送信データ信号を書き込んだり、６０ＭＨｚのクロック周波数で受信データ信号を読み出す必要がある。ところが、テスト端子には大きな寄生容量が寄生しているため、テスト端子のＩ／Ｏセルでの信号遅延が大きい。従って、６０ＭＨｚという高速なクロック周波数でテストしようとすると、テスト結果と期待値との間のミスマッチが大きくなってしまい、安定したテストを実現できなくなるおそれがある。
【０００６】
特にＵＴＭＩのマクロブロックでは、内蔵するアナログ回路や高速デジタル回路が、クロック周波数を４８０ＭＨｚ（６０ＭＨｚ）に設定しないとＨＳモードで動作しないという特殊事情がある。また４８０ＭＨｚ（６０ＭＨｚ）でテストを行わなければ、ＨＳモードでの高速動作を保証できず、信頼性が低下するおそれもある。
【０００７】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、高速なデータ通信用の物理層回路を含むマクロブロックのテストに最適なテスト回路、これを含む集積回路、及びこれを用いたテスト方法を提供することにある。
【０００８】
【課題を解決するための手段】
本発明は、第１のマクロブロックとの間での送受信処理を第１のクロック周波数で行う第２のマクロブロックのためのテスト回路であって、テスト入力端子からの送信データ信号を、第１のクロック周波数よりも遅い第２のクロック周波数で蓄積するテスト用送信バッファと、第２のマクロブロックからの受信データ信号を、第１のクロック周波数よりも遅い第３のクロック周波数でテスト出力端子に出力するテスト用受信バッファとを含み、前記テスト用送信バッファが、テスト入力端子からの送信データ信号を第２のクロック周波数で蓄積した後に、蓄積した送信データ信号をデータ通信用の物理層回路を含む第２のマクロブロックに対して第１のクロック周波数で出力し、前記テスト用受信バッファが、第２のマクロブロックからの受信データ信号を第１のクロック周波数で蓄積した後に、蓄積した受信データ信号を第３のクロック周波数でテスト出力端子に出力するテスト回路に関係する。
【０００９】
本発明によれば、テスト入力端子からの送信データ信号は、遅い第２のクロック周波数（第２の速度）でテスト用送信バッファに蓄積される。そして蓄積後に、テスト用送信バッファの送信データ信号が、速い第１のクロック周波数（第１の速度）で読み出されて、第２のマクロブロックに出力される。また本発明によれば、第２のマクロブロックからの受信データ信号は、速い第１のクロック周波数でテスト用受信バッファに蓄積される。そして蓄積後に、テスト用受信バッファの受信データ信号が、遅い第３のクロック周波数（第３の速度）で読み出されて、テスト出力端子に出力される。なお、第３のクロック周波数は、第２のクロック周波数と同じであってもよいし、異なっていてもよい。
【００１０】
このように本発明によれば、テスト入力端子からテスト用送信バッファへの送信データ信号の蓄積（書き込み）や、テスト用受信バッファからテスト出力端子への受信データ信号の出力（読み出し）が、遅い第２、第３のクロック周波数で行われる。従って、テスト入力端子やテスト出力端子において信号遅延が生じても、時間的な余裕を持ってテストを行うことができ、安定したテスト結果を得ることができる。
【００１１】
また本発明によれば、テスト用送信バッファから第２のマクロブロックへの出力処理や、第２のマクロブロックからテスト用受信バッファへの蓄積処理は、速い第１のクロック周波数で行われる。従って、第２のマクロブロックが、第１のマクロブロックとの間の送受信処理を、速い第１のクロック周波数で行う場合にも、この第２のマクロブロックに最適なテスト手法を提供できる。
【００１２】
また本発明では、送信データ信号を受けた第２のマクロブロックが、第１、第２のマクロブロック間のバスとは異なる第１のバスにおいてループバックモードで送受信処理を行い、ループバックモードで受信した受信データ信号を第１のクロック周波数で第１のマクロブロック側に出力した場合に、前記テスト用受信バッファが、第２のマクロブロックからの受信データ信号を第１のクロック周波数で蓄積し、蓄積した受信データ信号を第３のクロック周波数でテスト出力端子に出力するようにしてもよい。
【００１３】
なお第２のマクロブロックの第１のバス（例えばＵＳＢ、ＩＥＥＥ１３９４）での送受信処理は、ループバックモードで行うことが望ましいが、ループバックモードで行わないようにしてもよい。
【００１４】
また本発明では、第２のマクロブロックとの間で所定の通信手順で送受信処理を行うための通信シーケンサを含み、前記通信シーケンサが、テスト用送信バッファに蓄積された送信データ信号を第１のクロック周波数で第２のマクロブロックに送信する処理を行い、第２のマクロブロックからの受信データ信号を第１のクロック周波数でテスト用受信バッファに受信する処理を行うようにしてもよい。
【００１５】
このようにすれば、第２のマクロブロックとの間の送受信処理が通信シーケンサにより自動的に行われるようになるため、テスト効率を向上できる。なお、通信シーケンサが、送信処理機能と受信処理機能のいずれか一方のみを持つようにしてもよい。
【００１６】
また本発明では、その第１の入力に、第１のマクロブロックからの出力信号が入力され、その第２の入力に、テスト用送信バッファからの送信データ信号が入力される第１のセレクタと、その第１の入力に、第１のセレクタからの出力信号が入力され、その第２の入力に、第２のマクロブロックからの受信データ信号が入力される第２のセレクタとを含み、第２のマクロブロックをテストする第２のテストモード時には、前記第１のセレクタが、その第２の入力に入力された送信データ信号を第２のマクロブロックに出力し、前記第２のセレクタが、その第２の入力に入力された第２のマクロブロックからの受信データ信号をテスト用受信バッファに出力するようにしてもよい。
【００１７】
また本発明では、第１のマクロブロックをテストする第１のテストモード時には、前記第１のセレクタが、その第１の入力に入力された第１のマクロブロックからの出力信号を第２のセレクタの第１の入力に出力し、前記第２のセレクタが、その第１の入力に入力された第１のセレクタからの出力信号を第１のマクロブロックに出力するようにしてもよい。
【００１８】
このようにすれば、例えば、第１のテストモードを用いることで、第１のマクロブロックとテスト回路との接続部分の故障検出が可能になる。また、第２のテストモードを用いることで、テスト回路と第２のマクロブロックとの接続部分の故障検出が可能になる。これにより、第１、第２のマクロブロック間の接続部分の故障検出が可能になる。
【００１９】
なお通常動作モード（第１、第２のテストモードではないモード）においては、第１のセレクタが、その第１の入力に入力された第１のマクロブロックからの出力信号を第２のマクロブロックに出力し、第２のセレクタが、その第２の入力に入力された第２のマクロブロックからの出力信号を第１のマクロブロックに出力してもよい。また第１、第２のセレクタが備える入力は、第１、第２の入力に限定されず、３以上の入力を備えていてもよい。
【００２０】
また本発明では、テスト回路に対して第１のマクロブロックと共にスキャンパスが設定され、前記第１のテストモードが、前記スキャンパスを用いてスキャン手法でテストを行うスキャンモードであってもよい。
【００２１】
ここでスキャンパスが設定されるとは、例えば、スキャンイン端子（１又は複数本）からスキャン用フリップフロップ（スキャン回路）を介してスキャンアウト端子（１又は複数本）に至るパスが設定されることをいう。
【００２２】
また本発明は、第１のマクロブロックからテスト回路への出力信号の本数がＩ本であり、テスト回路から第１のマクロブロックへの入力信号の本数がＪ本（Ｉ＞Ｊ）である場合に、第１のセレクタからのＩ本の出力信号のうちの（Ｉ−Ｊ）本の出力信号を保持する（Ｉ−Ｊ）個のダミーのスキャン用フリップフロップを含み、前記スキャンモード時において、前記ダミーのスキャン用フリップフロップが、保持された出力信号をスキャンパスを介して出力するようにしてもよい。
【００２３】
このようにすれば、第１のマクロブロックからのＩ本の出力信号（第１〜第Ｉの出力信号）のうち、（Ｉ−Ｊ）本の出力信号（第Ｊ〜第Ｉの出力信号）の結線不良等も効率良く調べることが可能になる。
【００２４】
また本発明は上記のいずれかのテスト回路と、前記第１のマクロブロックと、
前記第２のマクロブロックとを含む集積回路に関係する。
【００２５】
また本発明は、第１のマクロブロックとの間での送受信処理を第１のクロック周波数で行う第２のマクロブロックを、テスト用送信バッファとテスト用受信バッファを含むテスト回路を用いてテストするテスト方法であって、テスト入力端子からの送信データ信号を、第１のクロック周波数よりも遅い第２のクロック周波数でテスト用送信バッファに蓄積し、送信データ信号を蓄積した後に、蓄積した送信データ信号を、データ通信用の物理層回路を含む第２のマクロブロックに対して第１のクロック周波数で出力し、第２のマクロブロックからの受信データ信号を、第１のクロック周波数でテスト用受信バッファに蓄積し、受信データ信号を蓄積した後に、蓄積した受信データ信号を、第１のクロック周波数よりも遅い第３のクロック周波数でテスト出力端子に出力するテスト方法に関係する。
【００２６】
また本発明では、送信データ信号を受けた第２のマクロブロックが、ループバックモードで送受信処理を行い、ループバックモードで受信した受信データ信号を第１のクロック周波数で出力した場合に、出力された受信データ信号を第１のクロック周波数でテスト用受信バッファに蓄積し、蓄積した受信データ信号を第３のクロック周波数でテスト出力端子に出力するようにしてもよい。
【００２７】
また本発明では、前記テスト回路が、第２のマクロブロックとの間で所定の通信手順で送受信処理を行うための通信シーケンサを含み、前記通信シーケンサを用いて、テスト用送信バッファに蓄積された送信データ信号を第１のクロック周波数で第２のマクロブロックに送信し、前記通信シーケンサを用いて、第２のマクロブロックからの受信データ信号を第１のクロック周波数でテスト用受信バッファに受信するようにしてもよい。
【００２８】
また本発明では、前記テスト回路が、その第１の入力に、第１のマクロブロックからの出力信号が入力され、その第２の入力に、テスト用送信バッファからの送信データ信号が入力される第１のセレクタと、その第１の入力に、第１のセレクタからの出力信号が入力され、その第２の入力に、第２のマクロブロックからの受信データ信号が入力される第２のセレクタとを含み、第２のマクロブロックをテストする第２のテストモード時には、前記第１のセレクタの第２の入力に入力された送信データ信号を、第２のマクロブロックに出力し、前記第２のセレクタの第２の入力に入力された第２のマクロブロックからの受信データ信号を、テスト用受信バッファに出力するようにしてもよい。
【００２９】
また本発明では、第１のマクロブロックをテストする第１のテストモード時には、前記第１のセレクタの第１の入力に入力された第１のマクロブロックからの出力信号を、第２のセレクタの第１の入力に出力し、前記第２のセレクタの第１の入力に入力された第１のセレクタからの出力信号を、第１のマクロブロックに出力するようにしてもよい。
【００３０】
また本発明では、テスト回路に対して第１のマクロブロックと共にスキャンパスを設定し、前記第１のテストモード時において、スキャンパスを用いてスキャン手法でテストを行うようにしてもよい。
【００３１】
また本発明では、第１のマクロブロックからテスト回路への出力信号の本数がＩ本であり、テスト回路から第１のマクロブロックへの入力信号の本数がＪ本（Ｉ＞Ｊ）である場合に、第１のセレクタからのＩ本の出力信号のうちの（Ｉ−Ｊ）本の出力信号をダミーのスキャン用フリップフロップに保持し、前記スキャンモード時において、保持された出力信号をスキャンパスを介して出力するようにしてもよい。
【００３２】
【発明の実施の形態】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
【００３３】
１．マクロブロックの送受信テスト
図１（Ａ）に、複数のマクロブロックＭＢ１、ＭＢ２（マクロセル、回路ブロック）を接続することで構成される集積回路の例を示す。ここでＭＢ２はデータ通信用の物理層回路ＰＨＹを含むマクロブロックであり、例えばＵＴＭＩ（ＵＳＢ２．０  Ｔｒａｎｓｃｅｉｖｅｒ  Ｍａｃｒｏｃｅｌｌ  Ｉｎｔｅｒｆａｃｅ）に準拠したマクロブロックである。またＭＢ１は、ＭＢ２を制御する回路であるＳＩＥ（Ｓｅｒｉａｌ  Ｉｎｔｅｒｆａｃｅ  Ｅｎｇｉｎｅ）などを含むマクロブロックである。
【００３４】
図１（Ａ）に示すような集積回路の故障検出を行う場合に、例えば図１（Ｂ）に示すようにマクロブロックＭＢ１内部の故障検出については、ＭＢ１にスキャンパスを設定して行う公知のスキャン手法により実現できる。
【００３５】
一方、マクロブロックＭＢ２内部の故障検出についても、例えばテスト入力端子ＴＰＩからテスト入力信号ＴＩＮを入力し、その結果であるテスト出力信号ＴＯＵＴをテスト出力端子ＴＰＯから出力することで実現できる。より具体的には、マクロブロックＭＢ２のＵＳＢ（広義には第１のバス）上での送受信処理をループバックモードに設定し、ＵＳＢ上で送信した送信データ信号をＭＢ２自身が受信データ信号として受信できるようにする。そして外部のテスタがテスト入力端子ＴＰＩから送信データ信号ＴＩＮを入力すると、マクロブロックＭＢ２が入力された送信データ信号をＵＳＢ上で送信する。そしてループバックモードに設定されたＭＢ１が、その送信データ信号を受信データ信号としてＵＳＢ上で受信すると、その受信データ信号がマクロブロックＭＢ１側に出力され、テスト出力端子ＴＰＯを介して外部のテスタにより読み出される。そしてテスタは、読み出された受信データ信号が期待値と一致するか否かを判定する。
【００３６】
さて、マクロブロックＭＢ２は、ＵＳＢ上で例えば４８０ＭＨｚのクロック周波数でデータの送受信処理を行う。このため、マクロブロックＭＢ２と、ＳＩＥを含むマクロブロックＭＢ１との間の送受信処理は例えば６０ＭＨｚのクロック周波数（第１のクロック周波数ＣＦ１）で行われることになる。従って、テスト入力端子ＴＰＩから送信データ信号ＴＩＮを入力する場合には、６０ＭＨｚのクロック周波数（ＣＦ１）で入力する必要がある。またテスト出力端子ＴＰＯから受信データ信号ＴＯＵＴを出力する場合にも、６０ＭＨｚのクロック周波数で出力する必要がある。
【００３７】
ところが、テスト端子ＴＰＩ、ＴＰＯには一般的に大きな寄生容量が寄生している。従って、テスト端子のＩ／Ｏセルでの信号遅延値が大きく、集積回路の製造プロセスの変動や温度変動によって信号遅延値が大きくばらつく。従って、６０ＭＨｚという高速なクロック周波数で、端子ＴＰＩを介して信号ＴＩＮを入力したり、端子ＴＰＯを介して信号ＴＯＵＴを読み出すと、信号遅延が原因となってテスト結果と期待値との間にミスマッチが生じる。従って、安定したテスト結果を得ることができないという課題がある。
【００３８】
更に図１（Ｂ）に示すような手法でテストした場合に、接続部分１０（Ｉ本の信号ＳＣ１２の結線及びＪ本の信号ＳＣ２１の結線）の故障検出が難しいという課題もある。即ち、マクロブロックＭＢ１にスキャンパスを設定してテストしたとしても、接続部分１０（信号ＳＣ１２、ＳＣ２１）の故障検出率を例えば９０パーセント以上にできるテストパターンの作成は困難である。このためテストパターン開発の長期化や高コスト化を招く。
【００３９】
また図１（Ｂ）の手法では、（Ｉ＋Ｊ）本のテスト端子ＴＰＩ、ＴＰＯを設ける必要があるため、端子数が増加してしまい、集積回路の高コスト化を招くという課題もある。そこで、以上のような課題を解決できるテスト回路の実現が望まれる。
【００４０】
２．テスト回路
図２に本実施形態のテスト回路ＴＣ及びこれを含む集積回路の例を示す。なお図２ではマクロブロックの数を２個としているが、本実施形態の集積回路は３個以上のマクロブロックを含んでもよい。
【００４１】
図２においてマクロブロック（回路ブロック）ＭＢ１、ＭＢ２は、１又は複数の特定機能を有する回路（例えば通信用回路、通信用回路を制御する回路、バスとのインターフェース回路、ＲＡＭ、ＣＰＵ、ＤＳＰ、液晶ドライバ、ＣＣＤコントローラ、或いはユーザのカスタム回路等）を有する回路ブロックである。
【００４２】
より具体的にはＭＢ２は、通信用の物理層回路ＰＨＹを含む通信用のマクロブロックであり、更に具体的にはＵＴＭＩ仕様（特定のインターフェース規格）に準拠したマクロブロックである。またＭＢ１は、例えばＭＢ２を制御する回路（ＳＩＥ）、バッファ、インターフェース回路、或いはユーザのカスタム回路などを含むマクロブロックである。別の言い方をすればＭＢ１は、ロジック回路により構成されるマクロブロックであり、ＭＢ２は、通信用物理層回路ＰＨＹなどのアナログ回路を含むマクロブロックである。そしてＭＢ２は、送信データ信号、受信データ信号の送受信処理を、マクロブロックＭＢ１との間で、クロック周波数ＣＦ１（ＣＦ１のクロック信号）で行うマクロブロックである。
【００４３】
テスト回路ＴＣはテスト用送信バッファＴＸＢを含む。このＴＸＢは、テスト入力端子ＴＰＩからの送信データ信号ＴＩ（テスト入力信号）を、ＣＦ１（第１のクロック周波数）よりも遅いＣＦ２（第２のクロック周波数）で蓄積（ｓｔｏｒｅ）するバッファである。より具体的にはＴＸＢは、周波数ＣＦ２のクロック信号に同期してＴＰＩからの信号ＴＩを蓄積するバッファである。
【００４４】
テスト回路ＴＣはテスト用受信バッファＲＸＢを含む。このＲＸＢは、受信データ信号ＴＯ（テスト出力信号）を周波数ＣＦ１よりも遅い周波数ＣＦ３（第３のクロック周波数）でテスト出力端子ＴＰＯに出力するバッファである。より具体的にはＲＸＢは、周波数ＣＦ３のクロック信号に同期して信号ＴＯをＴＰＯに出力するバッファである。
【００４５】
図３（Ａ）を用いて説明すれば、本実施形態では、テスト用送信バッファＴＸＢが、テスト入力端子ＴＰＩからの送信データ信号ＴＩを、遅いクロック周波数ＣＦ２で蓄積する（ＣＦ２のクロック信号に同期して蓄積する）。即ち外部のテスタが、端子ＴＰＩを介して送信データ信号を周波数ＣＦ２でＴＸＢに書き込む。そしてＴＸＢは、蓄積が終了した後に（所定バイト数のデータの蓄積後に）、図３（Ｂ）に示すように、蓄積した送信データ信号ＴＩＮを、マクロブロックＭＢ２に対して、ＣＦ２よりも速い周波数ＣＦ１で出力する（ＣＦ１のクロック信号に同期して出力する）。すると、マクロブロックＭＢ２は、周波数ＣＦ１で送信データ信号ＴＩＮを受け取る。
【００４６】
その後、マクロブロックＭＢ２は、受信データ信号ＴＯＵＴを、速い周波数ＣＦ１でテスト回路ＴＣに出力する。より具体的には、送信データ信号ＴＩＮを受けたマクロブロックＭＢ２が、ＵＳＢ（広義には第１のバス）上においてループバックモードで送受信処理を行い、ループバックモードで受信した受信データ信号を、周波数ＣＦ１でマクロブロックＭＢ１側（テスト回路ＴＣ側）に出力する。
【００４７】
すると図３（Ｃ）に示すように、テスト用受信バッファＲＸＢが、マクロブロックＭＢ２からの受信データ信号ＴＯＵＴを、速いクロック周波数ＣＦ１で蓄積する（ＣＦ１のクロック信号に同期して蓄積する）。そしてＲＸＢは、蓄積が終了した後に、蓄積した受信データ信号ＴＩを、遅いクロック周波数ＣＦ３でテスト出力端子ＴＰＯに出力する（ＣＦ３のクロック信号に同期して出力する）。即ち、外部のテスタが、端子ＴＰＯを介して受信データ信号を周波数ＣＦ３でＲＸＢから読み出す。そして、読み出された受信データ信号と期待値とを比較して、テストの合否を判定する。なおＣＦ２とＣＦ３は同一の周波数であってもよいし、異なる周波数であってもよい。
【００４８】
以上のように本実施形態では、遅い周波数ＣＦ２で送信バッファＴＸＢに受信データを溜めた後、溜めた受信データを速い周波数ＣＦ１でＴＸＢから読み出ししている。またＭＢ２からの受信データを、速い周波数ＣＦ１で受信バッファＲＸＢに溜めた後、溜めた受信データを遅い周波数ＣＦ３でＲＸＢから読み出している。
【００４９】
従って、端子ＴＰＩを介した送信バッファＴＸＢへの書き込み処理や、ＴＰＯを介した受信バッファＲＸＢからの読み出し処理を、遅い周波数ＣＦ２、ＣＦ３で行うことができる。従って、テスタは、信号の書き込み処理や読み出し処理を余裕を持って行うことができるようになる。この結果、これらの端子ＴＰＩ、ＴＰＯのＩ／Ｏセルで信号遅延が生じたとしても、テスト結果と期待値との比較処理を問題なく行うことが可能になり、安定したテスト動作を実現できる。
【００５０】
またＵＴＭＩ準拠のマクロブロックＭＢ２では、それが含むアナログ回路や光速ロジック回路が、ＨＳモード時に４８０ＭＨｚ（６０ＭＨｚ）の周波数でしか動作しないという問題がある。また４８０ＭＨｚでマクロブロックＭＢ２を動作させてテストしないと、ＵＳＢ２．０のＨＳモードでの高速動作を確実に保証できないおそれもある。
【００５１】
本実施形態によれば、送信バッファＴＸＢからの送信データ信号の出力や、受信バッファＲＸＢへの受信データ信号の蓄積は、速い周波数ＣＦ１（６０ＭＨｚ）で行うことができる。従って、マクロブロックＭＢ２を速い周波数（アナログ回路や高速ロジック回路については４８０ＭＨｚ、インターフェース回路については６０ＭＨｚ）で動作させることが可能になる。この結果、マクロブロックＭＢ２を適正に動作させながらテストができると共に、テストの信頼性も向上できるようになる。
【００５２】
図４に、図２のテスト回路の動作を説明するための波形図を示す。ＴＣＫはテスト用のクロック信号であり、ＴＡＤは、送信バッファＴＸＢ、受信バッファＲＸＢのアドレスを指定するためのアドレス信号である。またＴＷＲはＴＸＢのライト信号であり、ＴＲＤはＲＸＢのリード信号である。またＷＣＫは、ＴＸＢに対して送信データ信号を書き込むためのクロック信号であり、このＷＣＫは例えばＴＣＫとＴＷＲにより生成できる。またＲＣＫは、ＲＸＢから受信データ信号を読み出すためのクロック信号であり、このＲＣＫは例えばＴＣＫとＴＲＤにより生成できる。
【００５３】
図４のＢ１に示すように、図３（Ａ）で説明した送信バッファＴＸＢへの書き込み処理は、遅い周波数ＣＦ２のクロック信号ＷＣＫにより行われる。
【００５４】
また図４のＢ２に示すように、図３（Ｂ）で説明した送信バッファＴＸＢからの送信データ信号の読み出し処理や受信バッファＲＸＢへの受信データ信号の書き込み処理（ＭＢ２の送受信処理）は、速い周波数ＣＦ１のクロック信号ＴＣＫにより行われる。
【００５５】
また図４のＢ３に示すように、図３（Ｃ）で説明した受信バッファＲＸＢからの受信データ信号の読み出し処理は、遅い周波数ＣＦ３のクロック信号ＲＣＫにより行われることになる。
【００５６】
３．通信シーケンサ
本実施形態では、図５に示すようにテスト回路ＴＣに通信シーケンサＣＳＱを含ませることができる。
【００５７】
ここで通信シーケンサＣＳＱはマクロブロックＭＢ２との間で所定の通信手順（ＵＴＭＩなどの通信マクロブロック仕様に準拠した通信手順）で送受信処理を行う。そして、送信バッファＴＸＢに、端子ＴＰＩから周波数ＣＦ２で送信データ信号が蓄積されると、その蓄積が完了した後に、通信シーケンサＣＳＱは、送信バッファＴＸＢに蓄積された送信データ信号を周波数ＣＦ１でマクロブロックＭＢ２に自動送信する。
【００５８】
その後、ＣＳＱは、ＭＢ２からの受信データ信号を周波数ＣＦ１で自動受信して受信バッファＲＸＢに蓄積する。そして受信バッファＲＸＢへの受信データ信号の蓄積が完了した後に、蓄積された受信データ信号は周波数ＣＦ３で読み出されて、端子ＴＰＯに出力される。
【００５９】
このような通信シーケンサＣＳＱを用いれば、送信バッファＴＸＢから送信データ信号を読み出して送信する処理や、マクロブロックＭＢ２から受信データ信号を受信して受信バッファＲＸＢに書き込む処理などを、自動的に行えるようになり、テストの効率化を図れる。
【００６０】
４．接続部分の故障検出
図１のＭＢ１、ＭＢ２間の接続部分１０での故障検出を向上できるテスト回路ＴＣの構成例を図６に示す。
【００６１】
このテスト回路ＴＣはセレクタＳＥＬ１（第１のセレクタ）を含む。ここでＳＥＬ１は、その第１の入力に、ＭＢ１（第１のマクロブロック）からの出力信号Ｍ１ＯＵＴが入力される。またその第２の入力に、ＭＢ２（第２のマクロブロック）用のテスト入力信号ＴＩＮが入力される。このＳＥＬ１の選択動作は選択信号ＳＳ１により制御される。
【００６２】
テスト回路ＴＣはセレクタＳＥＬ２（第２のセレクタ）を含む。ここでＳＥＬ２は、その第１の入力に、ＳＥＬ１からの出力信号ＳＱが入力される。また、その第２の入力に、ＭＢ２からの出力信号Ｍ２ＯＵＴが入力される。このＳＥＬ２の選択動作は選択信号ＳＳ２により制御される。
【００６３】
そして図７（Ａ）に示すようにＭＢ１をテストする第１のテストモード（例えばスキャンモード）では、セレクタＳＥＬ１が、その第１の入力に入力されたＭＢ１からの出力信号Ｍ１ＯＵＴ（例えばＩ本）を選択して、その出力信号ＳＱをＳＥＬ２の第１の入力に出力する。またセレクタＳＥＬ２が、その第１の入力に入力された第１のセレクタからの出力信号ＳＱを、入力信号Ｍ１ＩＮ（例えばＪ本）としてＭＢ１に出力する。図７（Ａ）に示すように、この第１のテストモードでは、端子ＤＴＩＮ（データ入力端子又はスキャンイン端子ＳＣＩＮ等）からテストパターン信号（論理テストパターン）を入力する。そして、端子ＤＴＯＵＴ（データ出力端子又はスキャンアウト端子ＳＣＯＵＴ等）から出力される結果と期待値とを比較して検証を行う。
【００６４】
一方、図７（Ｂ）に示すように、ＭＢ２をテストする第２のテストモードでは、ＳＥＬ１が、その第２の入力に入力されたＭＢ２用のテスト入力信号ＴＩＮ（例えばＩ本）を、入力信号Ｍ２ＩＮ（例えばＩ本）としてＭＢ２に出力する。またＳＥＬ２が、その第２の入力に入力されたＭＢ２からの出力信号Ｍ２ＯＵＴ（例えばＪ本）を、ＭＢ２用のテスト出力信号ＴＯＵＴ（例えばＪ本）として出力する。この第２のテストモードでは、端子ＴＰＩからテスト入力信号（論理テストパターン、送信データ信号）を入力する。そして端子ＴＰＯから出力されたテスト出力信号（論理テストパターンの結果、受信データ信号）と期待値とを比較して検証を行うことになる。
【００６５】
なお、第１、第２のテストモードではない通常動作モード（集積回路が通常に動作するモード）では、マクロブロックＭＢ１からの出力信号Ｍ１ＯＵＴは、セレクタＳＥＬ１を介してマクロブロックＭＢ２への入力信号Ｍ２ＩＮとしてＭＢ２に入力される。またマクロブロックＭＢ２からの出力信号Ｍ２ＯＵＴは、セレクタＳＥＬ２を介してマクロブロックＭＢ１への入力信号Ｍ１ＩＮとしてＭＢ１に入力される。
【００６６】
また、テスト入力信号ＴＩＮは、テスト入力端子ＴＰＩから、図２で説明したテスト用送信バッファＴＸＢを介してセレクタＳＥＬ１に入力される。またテスト出力信号ＴＯＵＴは、セレクタＳＥＬ２から、図２で説明したテスト用受信バッファＲＸＢを介してテスト出力端子ＴＰＯに出力される。
【００６７】
図６の本実施形態のテスト回路ＴＣによれば、図７（Ａ）の第１のテストモードにより、マクロブロックＭＢ１とテスト回路ＴＣの接続部分１２の故障検出（結線不良）が可能になる。また図７（Ｂ）の第２のテストモードにより、テスト回路ＴＣとマクロブロックＭＢ２の接続部分１４の故障検出も可能になる。これにより、結局、図１で説明したマクロブロックＭＢ１、ＭＢ２間の接続部分１０の故障検出が可能になる。
【００６８】
しかも図７（Ａ）の第１のテストモードにより接続部分１２の故障を検出するテストパターンは比較的容易に作成（自動生成）できる。また図７（Ｂ）の第２のテストモードでの接続部分１４の故障検出も容易である。更にテスト入力信号ＴＩＮやテスト出力信号ＴＯＵＴを用いれば、マクロブロックＭＢ２が通信用物理層回路などのアナログ回路を含む場合にも、そのテストを容易化できる。従って本実施形態によれば、テストパターン開発期間の短縮化、低コスト化を図れるとと共に、故障検出率を高めて集積回路の信頼性を向上できる。
【００６９】
５．スキャン手法
図７（Ａ）の第１のテストモードはスキャン手法でテストを行うスキャンモードであることが望ましい。例えば図８に示すように、マクロブロックＭＢ１のみならずテスト回路ＴＣに対してもスキャンパスを設定する。即ち、マクロブロックＭＢ１内のフリップフロップのみならず、テスト回路ＴＣ内のフリップフロップもスキャン用ＦＦ（スキャン回路）に置き換えて、これらのスキャン用ＦＦをネットで結んでスキャンパス（スキャンチェーン）を構成する。別の言い方をすれば、マクロブロックＭＢ１及びテスト回路ＴＣを１つのマクロブロックＭＢ１２と見なして、ＭＢ１２のネットリストに対して、公知のスキャンテスト用ツールを用いてスキャン用ＦＦを挿入する（スキャンパスを設定する）。
【００７０】
例えば図９（Ａ）にフリップフロップＦＦ１、ＦＦ２、ＦＦ３と、組み合わせ論理回路ＣＭ１、ＣＭ２を含む回路を示す。この回路をスキャン手法でテストする場合には、図９（Ｂ）に示すように、フリップフロップＦＦ１、ＦＦ２、ＦＦ３を、セレクタＳＬ１、ＳＬ２、ＳＬ３を有するスキャン用フリップフロップＳＦＦ１、ＳＦＦ２、ＳＦＦ３に置き換える。また組み合わせ論理回路ＣＭ１、ＣＭ２を通る通常パスをバイパスするスキャンパスＳＣＰ１、ＳＣＰ２を設ける。
【００７１】
そして、まず、スキャンイネーブル信号ＳＣＥＮを第１のレベル（例えばＨレベル）に設定して、セレクタＳＬ１、ＳＬ２、ＳＬ３にスキャンパス側（ＳＣＩＮ側）を選択させる。そしてスキャンイン端子ＳＣＩＮからテストパターン信号をシリアルに順次入力して、フリップフロップＦＦ１、ＦＦ２、ＦＦ３に対してテストパターン信号を設定する。
【００７２】
次に、スキャンイネーブル信号ＳＣＥＮを第２のレベル（例えばＬレベル）に設定し、セレクタＳＬ１、ＳＬ２、ＳＬ３に通常パス側（ＤＩＮ側）を選択させる。そしてクロック信号ＣＫを例えば１クロックパルス分だけアクティブにして、フリップフロップＦＦ１、ＦＦ２の出力信号を組み合わせ回路ＣＭ１、ＣＭ２に入力すると共に、ＣＭ１、ＣＭ２の出力信号をＦＦ２、ＦＦ３に保持する。
【００７３】
次に、スキャンイネーブル信号ＳＣＥＮを第１のレベルに設定して、セレクタＳＬ１、ＳＬ２、ＳＬ３にスキャンパス側（ＳＣＩＮ側）を選択させる。そして、フリップフロップＦＦ１、ＦＦ２、ＦＦ３に保持されているテスト結果信号を、スキャンパスＳＣＰ１、ＳＣＰ２を介して、スキャンアウト端子ＳＣＯＵＴからシリアルに出力し、期待値と比較する。このようにすることで、フリップフロップＦＦ１、ＦＦ２、ＦＦ３及び組み合わせ論理回路ＣＭ１、ＣＭ２の素子不良や、これらの回路間の結線不良をテストできる。
【００７４】
図１０にスキャン手法を用いるテスト方法のフローチャートを示す。まず回路設計を行い、設計した回路のネットリストを生成する（ステップＳ１、Ｓ２）。次に、公知のスキャンテスト用ツールを用いて、設計した回路にスキャンＦＦを挿入し、スキャンＦＦを含むネットリストを生成する（ステップＳ３、Ｓ４）。次に、スキャンＦＦを含むネットリストを用いて論理シミュレーションを行い、テストパターンを作成（自動生成）する（ステップＳ５、Ｓ６）。その後、回路のレイアウトを行い、マスクデータを生成する（ステップＳ７、Ｓ８）。そして、ステップＳ６で作成（自動生成）されたテストパターンを用いて、試作品又は量産品のテストを行う（ステップＳ９）。
【００７５】
以上のようなスキャン手法を用いると、マクロブロックの規模は若干大きくなるが、スキャンＦＦの間にある組み合わせ論理回路を切り出して部分的にテストできるようになるため、テストパターンの作成を容易化できると共に、故障検出率を向上できる。
【００７６】
そして本実施形態では図８に示すように、マクロブロックＭＢ１とテスト回路ＴＣを１つのマクロブロックＭＢ１２と見なして、マクロブロックＭＢ１及びテスト回路ＴＣに対して、スキャンイン端子ＳＣＩＮからスキャンアウト端子ＳＣＯＵＴに至るスキャンパスを設定している（スキャン用ＦＦを挿入している）。従って、マクロブロックＭＢ１とテスト回路ＴＣの間の接続部分１２の故障（結線不良）を高い故障検出率で検出できるテストパターンを容易に作成できるようになる。これによりテストパターン開発の期間短縮化、低コスト化を実現できる。
【００７７】
６．ダミーのスキャン用フリップフロップ
本実施形態では、図１１に示すようにテスト回路ＴＣに１又は複数個のダミーのスキャン用フリップフロップＤＳＦＦを含ませることができる。
【００７８】
例えば図１１では、マクロブロックＭＢ１からの出力信号Ｍ１ＯＵＴの本数がＩ本であり、テスト回路ＴＣからＭＢ１への入力信号の本数がＪ本（Ｉ＞Ｊ。Ｉ、Ｊは自然数又は２以上の整数）となっている。即ち出力信号Ｍ１ＯＵＴの本数の方が入力信号Ｍ１ＩＮの本数よりも多い。このように信号本数に違いがある場合において、テスト回路ＴＣ及びマクロブロックＭＢ１に一体的にスキャンパスを設定する図８の手法を実現するために、図１１ではダミーのスキャン用フリップフロップＤＳＦＦをテスト回路ＴＣに含ませている。
【００７９】
より具体的には、セレクタＳＥＬ１からのＩ本の出力信号（第１〜第Ｉの出力信号）のうち、（Ｉ−Ｊ）本の出力信号（第Ｊ〜第Ｉの出力信号）を保持する（Ｉ−Ｊ）個のダミーのスキャン用フリップフロップＤＳＦＦをテスト回路ＴＣ内に設ける。そして、図８で説明したスキャンモード（第１のテストモード）時において、ダミーのスキャン用フリップフロップＤＳＦＦが、保持した出力信号をスキャンパス（スキャンイン端子からスキャン用フリップフロップを介してスキャンアウト端子に至るパス）を介して出力するようにする。即ち、ＤＳＦＦは、前段のスキャン用フリップフロップから入力された信号を保持し、保持した信号を後段のスキャン用フリップに出力する。
【００８０】
例えば図１０のステップＳ２で生成されるネットリストに対して、図１２（Ａ）に示すような３個（広義には（Ｉ−Ｊ）個）のダミーのフリップフロップＤＦＦ１、ＤＦＦ２、ＤＦＦ３を含ませておく。これらのＤＦＦ１、ＤＦＦ２、ＤＦＦ３のデータ端子Ｄには、セレクタＳＥＬ１からのＩ本の出力信号のうちの（Ｉ−Ｊ）本の出力信号ＤＩＮ１、ＤＩＮ２、ＤＩＮ３（第Ｊ〜第Ｉの出力信号）が接続される。
【００８１】
そして図１０のステップＳ４、Ｓ５で説明したスキャン手法により、ネットリスト中のＤＦＦ１、ＤＦＦ２、ＤＦＦ３を図１２（Ｂ）に示すようにダミーのスキャン用フリップフロップＤＳＦＦ１、ＤＳＦＦ２、ＤＳＦＦ３（通常動作モードにおいては意味をなさない無効なダミーのフリップフロップ）に置き換える。
【００８２】
そしてスキャンモード時に、ＳＬ１、ＳＬ２、ＳＬ３にＤＩＮ側を選択させて、信号ＤＩＮ１、ＤＩＮ２、ＤＩＮ３（セレクタＳＥＬ１或いはＳＥＬ１の後段のスキャン用フリップフロップからの（Ｉ−Ｊ）本の出力信号）を、ＤＦＦ１、ＤＦＦ２、ＤＦＦ３に保持させる。その後、ＳＬ１、ＳＬ２、ＳＬ３にＳＣＩＮ側を選択させて、ＳＣＩＮからＳＣＯＵＴに至るスキャンパスを介して、ＤＦＦ１、ＤＦＦ２、ＤＦＦ３（ＤＳＦＦ１〜ＤＳＦＦ３）に保持された信号ＤＩＮ１、ＤＩＮ２、ＤＩＮ３をシリアルに出力させる。
【００８３】
図１２（Ｃ）には、マクロブロックＭＢ１及びテスト回路ＴＣに設定されるスキャンパスの様子が概念的に示されている。例えば図１２（Ｃ）では、ＭＢ１からＴＣへの出力信号Ｍ１ＯＵＴ−１、Ｍ１ＯＵＴ−２が２本（Ｉ本）であり、ＴＣからＭＢ１への入力信号Ｍ１ＩＮが１本であるため、１個（Ｉ−Ｊ個）のダミーのスキャン用フリップフロップＤＳＦＦ１が設けられる。
【００８４】
そしてＳＥＬ１−１（第１のセレクタ）の第１の入力には、ＭＢ１内のフリップフロップＦＦ６からの出力信号Ｍ１ＯＵＴ−１が入力され、第２の入力には、テスト入力端子ＴＰＩ−１（ＴＸＢ）からのテスト入力信号ＴＩＮ−１が入力される。そしてＳＥＬ１−１の出力信号ＳＱ−１は、ＴＣ内に設けられたダミーのスキャン用フリップフロップＤＳＦＦ１のデータ端子に入力される。
【００８５】
またＳＥＬ１−２（第１のセレクタ）の第１の入力には、ＭＢ１内のフリップフロップＦＦ５からの出力信号Ｍ１ＯＵＴ−２が入力され、第２の入力には、テスト入力端子ＴＰＩ−２（ＴＸＢ）からのテスト入力信号ＴＩＮ−２が入力される。そしてＳＥＬ１−２の出力信号ＳＱ−２は、ＴＣ内に設けられたフリップフロップＦＦ２のデータ端子に入力される。
【００８６】
またＳＥＬ２（第２のセレクタ）の第１の入力には、ＳＥＬ１−２からの出力信号ＳＱ−２が入力され、第２の入力には、ＭＢ２からの出力信号Ｍ２ＯＵＴが入力される。そしてＳＥＬ２の出力信号ＴＯＵＴは、テスト出力端子ＴＰＯ（ＲＸＢ）、或いはＭＢ１内のフリップフロップＦＦ４に出力される。
【００８７】
そしてスキャンモード時には、ＳＣＩＮからＳＣＯＵＴに至るスキャンパスを介して、ＤＳＦＦ１、ＦＦ２、ＦＦ３、ＦＦ４、ＦＦ５、ＦＦ６に保持された信号（値）がＳＣＯＵＴからシリアルに出力され、これによりスキャン手法によるテストを実現できる。
【００８８】
以上のようにすることで、図１１のように信号Ｍ１ＯＵＴの本数Ｉの方がＭ１ＩＮの本数Ｊよりも多い場合においても、余った（Ｉ−Ｊ）本の信号Ｍ１ＯＵＴについての結線不良を、図８で説明したスキャン手法により検出できる。即ちこれらの（Ｉ−Ｊ）本の信号をスキャンモード時に、ＳＣＩＮからＭＢ１、ＴＣを介してＳＣＯＵＴに至るスキャンパスを介して出力できるようになる。この結果、より信頼性のある故障検出が可能になる。
【００８９】
なお、図１２（Ａ）では、スキャン用フリップフロップに置き換える前のダミーのフリップフロップＤＦＦ１、ＤＦＦ２、ＤＦＦ３は、そのＱ端子に何も接続されていないフリップフロップとなっている。このようにＱ端子に何も接続されていないフリップフロップＤＦＦ１、ＤＦＦ２、ＤＦＦ３は、ネットリスト生成ツールの仕様によっては、無効なフリップフロップであると認識されて削除されてしまう可能性がある。従って、このような事態を防止するために、ＤＦＦ１、ＤＦＦ２、ＤＦＦ３のＱ端子に対して、通常動作に対して悪影響を及ぼさないノード（例えば後述するテスト用バッファのノード）を接続するようにしてもよい。
【００９０】
７．詳細例
７．１  全体構成
図１３にテスト回路ＴＣの詳細な構成例を示す。なお本実施形態のテスト回路は図１３に示す全て構成要素を含む必要はなく、その一部を省略してもよい。
【００９１】
図１３においてＴＰＩはテスト入力端子であり、ＴＰＯはテスト出力端子である。またＴＰＣＫはテストクロック端子であり、ＴＰＲＳはリセット端子である。またＴＰＡＤ、ＴＰＷＲ、ＴＰＲＤはバッファ（レジスタ）のアドレス端子、ライト端子、リード端子である。またＴＰＭＤ１、ＴＰＭＤ２はテストモード端子である。またＰＤＰ、ＰＤＭは、ＵＳＢにおいて定義される差動信号ＤＰ、ＤＭ（データプラス、データマイナス）の端子である。
【００９２】
図１３においてＭＢ２は、データ通信用の物理層回路ＰＨＹを含むマクロブロックである。このＭＢ２としてはＵＴＭＩ仕様（広義には通信マクロブロック仕様）に準拠したマクロブロックなどがある。なおこのマクロブロックＭＢ２は、ＤＰ、ＤＭを用いてＵＳＢ（第１のバス）上で送信した送信データ信号を、ループバックモードで受信データ信号として受信する機能も有している。
【００９３】
テスト回路ＴＣは通信シーケンサＣＳＱを含む。この通信シーケンサＣＳＱはマクロブロックＭＢ２との間で所定の通信手順（通信マクロブロック仕様に準拠した通信手順）で信号の送受信処理（ハンドシェーク処理）を行うためのシーケンサである。この通信シーケンサＣＳＱ（テスト用送信バッファＴＸＢ）からの送信データ信号は、ＭＢ２へのテスト入力信号ＴＩＮ１としてセレクタＳＥＬ１に入力される。またセレクタＳＥＬ２からのテスト出力信号ＴＯＵＴ１（ＴＯＵＴ）は、受信データ信号として通信シーケンサＣＳＱ（テスト用受信バッファＲＸＢ）に入力される。
【００９４】
より具体的には通信シーケンサＣＳＱは、図７（Ｂ）で説明した第２のテストモード時において、マクロブロックＭＢ２への送信データ信号を、セレクタＳＥＬ１を介してＭＢ２に送信する処理を行う。またＭＢ２からの受信データ信号を、ＳＥＬ２を介してＭＢ２から受信する処理を行う。
【００９５】
通信シーケンサＣＳＱはテスト用送信バッファＴＸＢ、テスト用受信バッファＲＸＢを含む。ＴＸＢはＭＢ２への送信データ信号（ＴＩＮ１）を蓄積（ｓｔｏｒｅ）するバッファ（レジスタ）である。ＲＸＢはＭＢ２からの受信データ信号（ＴＯＵＴ１）を蓄積するバッファ（レジスタ）である。即ち、ＴＸＢは、テスト入力端子ＴＰＩから入力された信号ＴＩを送信データ信号として蓄積する。またＲＸＢは、ＭＢ２からの受信データ信号を蓄積し、蓄積した受信データ信号を信号ＴＯとしてテスト出力端子ＴＰＯに出力する。
【００９６】
更に具体的にはテスト用送信バッファＴＸＢは、テスト入力端子ＴＰＩから入力された送信データ信号ＴＩを蓄積する。そして通信シーケンサＣＳＱは、ＴＸＢによる送信データ信号ＴＩの蓄積が完了した後（所定のバイト数の送信データ信号を蓄積した後）に、蓄積された送信データ信号を、セレクタＳＥＬ１を介してマクロブロックＭＢ２に送信する処理を行う。また通信シーケンサＣＳＱは、ループバックモードに設定されたＭＢ２からの受信データ信号ＴＯＵＴ１を受信する処理を行う。そしてテスト用受信バッファＲＸＢは、受信された受信データ信号ＴＯＵＴ１を蓄積し、蓄積した受信データ信号をテスト出力端子ＴＰＯに出力する
なお、送信バッファＴＸＢ、受信バッファＲＸＢのいずれか一方のみをテスト回路ＴＣに設けるようにしてもよい。またＴＸＢ、ＲＸＢは通信シーケンサＣＳＱの内部に設けてもよいし外部に設けてもよい。
【００９７】
テスト回路ＴＣはテスト用バッファＴＳＢを含む。このＴＳＢはテスト入力信号やテスト出力信号を蓄積（ｓｔｏｒｅ）するバッファ（レジスタ）である。より具体的にはＴＳＢは、テスト入力端子ＴＰＩからの信号ＴＩを蓄積して、テスト入力信号ＴＩＮ２としてセレクタＳＥＬ１に出力する。またＴＳＢは、セレクタＳＥＬ２からのテスト出力信号ＴＯＵＴ２（ＴＯＵＴ）を蓄積して、信号ＴＯとしてテスト出力端子ＴＰＯに出力する。
【００９８】
テスト回路ＴＣはデコーダＤＥＣを含む。このＤＥＣは集積回路のテスト端子からの信号に基づいて、テスト回路の各回路に制御信号を出力する。より具体的にはデコーダＤＥＣには、バッファＴＸＢ、ＲＸＢ、ＴＳＢのアドレス（レジスタアドレス）を指定するためのアドレス信号ＴＡＤや、これらのバッファへのライト信号ＴＷＲ、リード信号ＴＲＤが入力される。またテストモード信号ＴＭＤ１、ＴＭＤ２（第１、第２のテストモードを切り替えたり、テストモードと通常動作モードを切り替える信号）や、テスト用のクロック信号ＴＣＫや、テスト用のリセット信号ＴＲＳが入力される。デコーダＤＥＣは、テスト端子から入力されるこれらの信号に基づいてデコード処理を行い、通信シーケンサＣＳＱ（ＴＸＢ、ＲＸＢ）、テスト用バッファＴＳＢへの制御信号ＤＣＴＬ１、ＤＣＴＬ２や、セレクタＳＥＬ１、ＳＥＬ２への選択信号ＳＳ１、ＳＳ２を生成する。
【００９９】
例えば通信シーケンサＣＳＱ（ＴＸＢ、ＲＸＢ）はデコーダＤＥＣからの制御信号ＤＣＴＬ１やテスト用クロック信号ＴＣＫなどに基づいて、ＴＸＢ、ＲＸＢに送信データ信号、受信データ信号を蓄積する処理や、ＴＸＢ、ＲＸＢから送信データ信号、受信データ信号を出力する処理や、送受信（ハンドシェーク）処理を行う。またテスト用バッファＴＳＢは、デコーダＤＥＣからの制御信号ＤＣＴＬ２やテスト用クロック信号ＴＣＫなどに基づいて、ＴＳＢにテスト入力信号やテスト出力信号を蓄積する処理や、ＴＳＢからテスト入力信号やテスト出力信号を出力する処理などを行う。
【０１００】
またデコーダＤＥＣは、信号ＴＭＤ１、ＴＭＤ２が共にＬ（ロー）レベル（第１のレベル）の場合には、選択信号ＳＳ１をＨ（ハイ）レベルに設定して、セレクタＳＥＬ１に信号Ｍ１ＯＵＴを選択させると共に、信号ＳＳ１をＬレベルに設定して、セレクタＳＥＬ２にＭ２ＯＵＴを選択させる。これにより動作モードが通常動作モード（テストモードではないモード）になる。
【０１０１】
また信号ＴＭＤ１がＨレベル（第２のレベル）の場合には、信号ＳＳ１、ＳＳ２を共にＨレベルに設定して、ＳＥＬ１に信号Ｍ１ＯＵＴを選択させると共にＳＥＬ２に信号ＳＱを選択させる。これにより動作モードが、マクロブロックＭＢ１をテストする第１のテストモードになる。
【０１０２】
また信号ＴＭＤ２がＨレベルの場合には、信号ＳＳ１、ＳＳ２を共にＬレベルに設定して、ＳＥＬ１に信号ＴＩＮ１及びＴＩＮ２を選択させると共に、ＳＥＬ２に信号Ｍ２ＯＵＴを選択させる。これにより動作モードが、マクロブロックＭＢ２をテストする第２のテストモードになる。
【０１０３】
７．２  バッファ構成
図１４に、テスト用送信バッファＴＸＢ、テスト用受信バッファＲＸＢ、テスト用バッファＴＳＢのアドレスマップを示す。
【０１０４】
本実施形態では送信バッファＴＸＢ、受信バッファＲＸＢは、各々、４段（広義には複数段）のバッファ構成（ＦＩＦＯ構成）となっている。即ち図１４において、ＴｘＢｕｆ０、ＴｘＢｕｆ１、ＴｘＢｕｆ２、ＴｘＢｕｆ３は、送信バッファＴＸＢの４段のバッファに相当し、ＲｘＢｕｆ０、ＲｘＢｕｆ１、ＲｘＢｕｆ２、ＲｘＢｕｆ３は、受信バッファＲＸＢの４段のバッファに相当する。また、これらの４段の各バッファは８ビット構成になっている。即ち図１４において、ＴｘＢｕｆ０［７］〜［０］はＴｘＢｕｆ０の各ビットを表す。ＴｘＢｕｆ１、ＴｘＢｕｆ２、ＴｘＢｕｆ３も同様である。またＲｘＢｕｆ０［７］〜［０］はＲｘＢｕｆ０の各ビットを表す。ＲｘＢｕｆ１、ＲｘＢｕｆ２、ＲｘＢｕｆ３も同様である。
【０１０５】
図１４に示すように本実施形態では、端子ＴＰＡＤからの信号ＴＡＤで指定されるアドレスが０ｘ０〜０ｘ７（１６進数表現）の範囲である場合には、送信バッファＴＸＢ、受信バッファＲＸＢのいずれかがアドレス指定される。そして端子ＴＰＷＲからのライト信号ＴＷＲがアクティブになると送信バッファＴＸＢが指定され、端子ＴＰＲＤからのリード信号ＴＲＤがアクティブになると受信バッファＲＸＢが指定される。
【０１０６】
一方、信号ＴＡＤで指定されるアドレスが０ｘ８〜０ｘＦの範囲である場合には、テスト用バッファＴＳＢがアドレス指定される。また、リード、ライトの指定はリード信号ＴＲＤ、ライト信号ＴＷＲにより行われる。そしてテスト用バッファＴＳＢの各ビットには図１４に示すように、ＴＸＭＯＤＥ、ＸＣＶＲＳＥＬＥＣＴ、ＴＥＲＭＳＥＬＥＣＴ・・・・・ＴＸＳＴＡＲＴなどが割り当てられている。
【０１０７】
例えばＴＸＭＯＤＥは通信シーケンサＣＳＱの送信モードを設定するビットである。ＴＸＭＯＤＥが「０」に設定されると、通信シーケンサＣＳＱは４バイト（広義には複数バイト）の送信データを送信して停止する。一方、ＴＸＭＯＤＥが「１」に設定されると、ＣＳＱはＴｘＢｕｆ０に蓄積された１バイトの送信データを送信し続ける。
【０１０８】
またＸＣＶＲＳＥＬＥＣＴ、ＴＥＲＭＳＥＬＥＣＴ、ＯＰＭＯＤＥ１・・・・ＳＵＳＰＥＮＤ等は、マクロブロックＭＢ２の入力端子（Ｍ２ＩＮ）に所望の信号レベル（Ｈレベル、Ｌレベル）を設定するためのビットである。またＭｏｎＲＸＡＣＴＩＶＥ、ＭｏｎＲＸＥＲＲＯＲ、ＭｏｎＬＩＮＥＳＴＡＴＥ１、ＭｏｎＬＩＮＥＳＴＡＴＥ０等は、マクロブロックＭＢ２の出力端子（Ｍ２ＯＵＴ）の信号レベルをモニタするためのビットである。
【０１０９】
またＴＸＳＴＡＲＴは通信シーケンサＣＳＱに対して送信（テスト用送信）の開始を指示するためのビットであり、ＴＸＳＴＡＲＴを「１」に設定すると送信が開始される。そして送信が完了するとＴＸＳＴＡＲＴは「０」にクリアされる。またＴＸＭＯＤＥが「１」の時にＴＸＳＴＡＲＴに「０」を書き込むと送信が停止する。
【０１１０】
さて集積回路においては端子数が増加すると製造コストの増加を招く。このためテスト端子についてもその本数をなるべく少なくできることが望ましい。そこで本実施形態では、図１３のテスト端子ＴＰＩ、ＴＰＯの本数を以下に述べるような手法で減少させている。
【０１１１】
例えばマクロブロックＭＢ２のテストに必要な入力信号がＭビットであったとする。この場合に本実施形態では図１５（Ａ）（Ｂ）に示すように、テスト用バッファＴＳＢが、このＭビットのテスト入力信号を、Ｋ本（Ｍ＞Ｋ。Ｍ、Ｋは自然数又は２以上の整数）のテスト入力端子ＴＰＩからＫビット毎に入力して蓄積する。そして、蓄積した信号をテスト入力信号ＴＩＮ２としてセレクタＳＥＬ１に出力する。このようにすることで、本来はＭ本のテスト入力端子ＴＰＩが必要であるのに、これをＫ本に減らすことができる。
【０１１２】
例えば図１４において、ＸＣＶＲＳＥＬＥＣＴ〜ＳＵＳＰＥＮＤの全てのビットをＴＰＩとして外部端子に設定すると、１２本（Ｍ本）の端子が必要になってしまう。これに対して図１５（Ａ）（Ｂ）では、テスト用バッファＴＳＢが、１２ビット（Ｍビット）のテスト入力信号（ＸＣＶＲＳＥＬＥＣＴ〜ＳＵＳＰＥＮＤ）をＴＰＩから４ビット（Ｋビット）毎に取り込んで蓄積している。これによりＴＰＩの本数を４本にすることができ、集積回路の端子数を減らすことができる。
【０１１３】
また送信データ信号や受信データ信号のビット数がＮビットであったとする。この場合に本実施形態では図１５（Ｃ）（Ｄ）に示すように、テスト用送信バッファＴＸＢが、このＮビットの送信データ信号（テスト入力信号）を、Ｋ本（Ｎ＞Ｋ。Ｎ、Ｋは自然数又は２以上の整数）のテスト入力端子ＴＰＩからＫビット毎に入力して蓄積する。そして蓄積した信号を、テスト入力信号ＴＩＮ１としてセレクタＳＥＬ１に出力する。このようにすることで、本来はＮ本のテスト入力端子ＴＰＩが必要であるのに、これをＫ本に減らすことができる。また図１５（Ｃ）（Ｄ）では、テスト用受信バッファＲＸＢが、マクロブロックＭＢ２からのＮビットの受信データ信号（テスト出力信号）を蓄積し、蓄積した受信データ信号をＫビット毎にＫ本のテスト出力端子ＴＰＯに出力する。このようにすることで、本来はＮ本のテスト出力端子ＴＰＯが必要であるのに、これをＫ本に減らすことができる。
【０１１４】
例えば図１４において、ＴｘＢｕｆ０［７］〜ＴｘＢｕｆ０［０］の全てのビットをＴＰＩとして外部端子に設定し、ＲｘＢｕｆ０［７］〜ＲｘＢｕｆ０［０］の全てのビットをＴＰＯとして外部端子に設定すると、ＴＰＩ、ＴＰＯの本数がそれぞれ８本（Ｎ本）になり、合計で１６本の端子が必要になってしまう。これに対して図１５（Ｃ）（Ｄ）では、送信バッファＴＸＢが、８ビット（Ｎビット）の送信データ信号を４ビット（Ｋビット）毎にＴＰＩから入力して蓄積している。また、受信バッファＲＸＢが、８ビットの受信データ信号を４ビット毎にＴＰＯに出力している。これによりＴＰＩ、ＴＰＯの本数をそれぞれ４本（Ｋ本）にすることができ、集積回路の端子数を減らすことができる。
【０１１５】
更に本実施形態では図１３、図１４に示すように、４本（Ｋ本）の端子ＴＰＩ、ＴＰＯをバッファＴＸＢ、ＲＸＢ、ＴＳＢに共通接続し、アドレス信号ＴＡＤを用いてこれらのバッファＴＸＢ、ＲＸＢ、ＴＳＢの各ビットのアドレス指定を行っている。これにより集積回路の端子数を更に減らすことに成功している。
【０１１６】
７．３  通信シーケンサ
図１６に通信シーケンサＣＳＱの構成例を示す。但し通信シーケンサＣＳＱの構成は図１６に示すものに限定されない。
【０１１７】
通信シーケンサＣＳＱは送信シーケンサＴＳＱを含む。このＴＳＱはマクロブロックＭＢ２との間でハンドシェークによる送信処理を行うためのシーケンサである。具体的には送信シーケンサＴＳＱは、送信データ信号ＤＡＴＡＩＮが有効であることを示す信号ＴＸＶＡＬＩＤ（送信開始信号）をマクロブロックＭＢ２に出力する。そしてＭＢ２は、ＴＸＶＡＬＩＤのアクティブ期間に存在するＤＡＴＡＩＮを１つのパケットと見なす。この信号ＴＸＶＡＬＩＤは図１３において、信号ＴＩＮ１としてＳＥＬ１を介してＭＢ２に出力される。
【０１１８】
また送信シーケンサＴＳＱは、ＤＡＴＡＩＮのバッファリングが完了したことを示す信号ＴＸＲＥＡＤＹを、ＭＢ２から受ける。この信号ＴＸＲＥＡＤＹは図１３において、ＭＢ２からＳＥＬ２を介して信号ＴＯＵＴ１として送信シーケンサＴＳＱに入力される。
【０１１９】
そして送信シーケンサＴＳＱは制御信号ＴＣＴＬ（送信開始信号等）を用いてテスト用送信バッファＴＸＢを制御する。具体的には、送信バッファＴＸＢによるテスト入力端子ＴＰＩからの信号ＴＩの蓄積処理を制御する。また送信バッファＴＸＢによるマクロブロックＭＢ２への信号ＤＡＴＡＩＮの出力処理を制御する。この場合に本実施形態では、信号ＤＡＴＡＩＮの出力処理の際のクロック周波数ＣＦ１（例えば６０ＭＨｚ）よりも遅いクロック周波数ＣＦ２で、送信バッファＴＸＢに信号ＴＩを蓄積するようにしている。このようにすれば、信号ＴＩの蓄積処理を、遅いクロック周波数ＣＦ２を用いて余裕を持ってできるようになる。従って、テスト入力端子ＴＰＩに大きな寄生容量が寄生している場合にも、バラツキの少ない安定したテスト結果を得ることができる。
【０１２０】
通信シーケンサＣＳＱは受信シーケンサＲＳＱを含む。このＲＳＱはマクロブロックＭＢ２との間でハンドシェークによる受信処理を行うためのシーケンサである。具体的には受信シーケンサＲＳＱは、バスにアクティビティがあることを示す信号ＲＸＡＣＴＩＶＥや、受信データ信号ＤＡＴＡＯＵＴが有効であることを示す信号ＲＸＶＡＬＩＤや、パケット受信中にエラーがあったことを示す信号ＲＸＥＲＲＯＲを、マクロブロックＭＢ２から受ける。これらの信号ＲＸＡＣＴＩＶＥ、ＲＸＶＡＬＩＤ、ＲＸＥＲＲＯＲは、図１３においてＭＢ２からＳＥＬ２を介して信号ＴＯＵＴ１として受信シーケンサＲＳＱに入力される。
【０１２１】
そして受信シーケンサＲＳＱは制御信号ＲＣＴＬを用いてテスト用受信バッファＲＸＢを制御する。具体的には、受信バッファＲＸＢによるマクロブロックＭＢ２からの信号ＤＡＴＡＯＵＴの蓄積処理を制御する。また受信バッファＲＸＢによるテスト出力端子ＴＰＯへの信号ＴＯの出力処理を制御する。この場合に本実施形態では、信号ＤＡＴＡＯＵＴの蓄積処理の際のクロック周波数ＣＦ１（例えば６０ＭＨｚ）よりも遅いクロック周波数ＣＦ３で（ＣＦ３はＣＦ２と同じでもよい）、信号ＴＯを出力するようにしている。このようにすれば、信号ＴＯの出力処理を、遅いクロック周波数ＣＦ３を用いて余裕を持ってできるようになる。従って、テスト出力端子ＴＰＯに大きな寄生容量が寄生している場合にも、バラツキの少ない安定したテスト結果を得ることができる
次に図１７、図１８の波形図を用いて、テスト回路ＴＣ及び通信シーケンサＣＳＱの詳細な動作について説明する。
【０１２２】
まずＣ１に示すように外部のテスタがテスト端子を用いて、アドレス信号ＴＡＤを０ｘＢに設定し、ライト信号ＴＷＲをアクティブ（Ｌレベル）にすると共に信号ＴＩを０ｘ０に設定することで、図１４のＰＬＬＳＥＬＥＣＴ、ＯＳＣＥＮＢ、ＣＬＫＳＥＬＥＣＴ１、ＣＬＫＳＥＬＥＣＴ０が全て「０」に設定される。そしてＣ２に示すようにテスタが、ＴＡＤを０ｘ８に設定し、ＴＷＲをアクティブにすると共にＴＩを０ｘ０に設定することで、図１４のＴＸＭＯＤＥが「０」に設定される。これにより、４バイト（複数バイト）の送信データ信号を連続して送信するモードに通信シーケンサＣＳＱが設定される。
【０１２３】
次にＣ３に示すようにテスタが、アドレス信号ＴＡＤを０ｘ０〜０ｘ７に設定し、ライト信号ＴＷＲをアクティブにすると共にＴＩを０ｘＦに設定することで、図１４の送信バッファＴＸＢの４段のバッファＴｘＢｕｆ０〜ＴｘＢｕｆ３の全てのビットに「１」が書き込まれる。この場合にこの書き込み処理は遅いクロック周波数ＣＦ２で行われる。そしてＣ４に示すようにテスタが、アドレス信号ＴＡＤを０ｘＦに設定し、ライト信号ＴＷＲをアクティブにすると共に信号ＴＩを０ｘ１に設定することで、図１４のＴＸＳＴＡＲＴに「１」が設定される。これにより通信シーケンサＣＳＱによる自動送信処理が開始する。
【０１２４】
図１８は、図１７のＣ５に示す部分を拡大した波形図である。通信シーケンサＣＳＱ（送信シーケンサＴＳＱ）は、送信処理が開始すると図１８のＤ１に示すように信号ＴＸＶＡＬＩＤをアクティブにし、Ｄ２に示すようにマクロブロックＭＢ２が信号ＴＸＲＥＡＤＹをアクティブにする。そしてＤ３に示す送信データ信号ＤＡＴＡＩＮ（ＦＦ）がＭＢ２に送信される。
【０１２５】
マクロブロックＭＢ２は、送信データ信号ＤＡＴＡＩＮを受けると、Ｄ４に示すように、差動信号ＤＰ、ＤＭを用いてＵＳＢバス上での送信処理を開始する。そしてループバックモードに設定されたマクロブロックＭＢ２は、自身が送信した送信データ信号を、ループバックモードで受信データ信号として受信する。そしてＤ５に示すようにマクロブロックＭＢ２は信号ＲＸＡＣＴＩＶＥをアクティブにする。その後、ＭＢ２はＤ６、Ｄ７に示すように信号ＲＸＶＡＬＩＤをアクティブにする。すると、これを受けた通信シーケンサＣＳＱ（受信シーケンサＲＳＱ）は、Ｄ８、Ｄ９に示すＭＢ２からの受信データ信号ＤＡＴＡＯＵＴ（ＦＦ）をテスト用受信バッファＲＸＢに蓄積する。この場合にこの蓄積処理は速いクロック周波数ＣＦ１で行われる。
【０１２６】
その後、図１７のＣ６に示すようにテスタが、アドレス信号ＴＡＤを０ｘ０〜０ｘ７に設定し、リード信号ＴＲＤをアクティブにすることで、Ｃ７に示すように受信バッファＲＸＢに蓄積された受信データ信号ＴＯがテスト出力端子ＴＰＯを介してテスタにより読み出される。この場合にこの読み出し処理は遅いクロック周波数ＣＦ３により行われる。そして、テスタが、読み出された値と期待値との比較処理を行い、期待値と一致していればテストを合格とし、一致していなければ不合格とする。このようにすることテストが完了する。
【０１２７】
８．マクロブロック
図１９にマクロブロックＭＢ１の一例を示す。なお本実施形態のマクロブロックＭＢ１は図１９に示す構成に限定されるものではない。図１９のマクロブロックＭＢ１は、ＳＩＥ（Ｓｅｒｉａｌ  Ｉｎｔｅｒｆａｃｅ  Ｅｎｇｉｎｅ）３０、エンドポイント管理回路４０、バッファ管理回路５０、バッファ６０、バルク転送管理回路７０、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）８０を含む。
【０１２８】
ＳＩＥ３０は、ＵＳＢのパケット転送処理などの種々の処理を行う回路である。このＳＩＥ３０（広義には第１のインターフェース回路）はパケットハンドラ回路３２、サスペンド＆レジューム制御回路３４、トランザクション管理回路３６を含む。ここでパケットハンドラ回路３２は、ヘッダ及びデータからなるパケットの組み立て（生成）や分解などを行ったり、ＣＲＣの生成や解読を行う。またサスペンド＆レジューム制御回路３４は、サスペンドやレジューム時のシーケンス制御を行う。またトランザクション管理回路３６は、トークン、データ、ハンドシェークなどのパケットにより構成されるトランザクションを管理する。そしてトランザクション管理回路３６は、トークンパケットを受信した場合には、自分宛か否かを確認し、自分宛の場合には、データパケットの転送処理を行い、その後に、ハンドシェークパケットの転送処理を行う。
【０１２９】
エンドポイント管理回路４０は、バッファ６０の各記憶領域の入り口となるエンドポイントを管理する回路であり、エンドポイントの属性情報を記憶するレジスタ（レジスタセット）などを含む。
【０１３０】
バッファ管理回路５０は、例えばＲＡＭなどで構成されるバッファ６０を管理する回路である。より具体的には、書き込みアドレスや読み出しアドレスを生成し、バッファ６０へのデータの書き込み処理やバッファ６０からのデータの読み出し処理を行う。
【０１３１】
バッファ６０（パケットバッファ、パケット記憶手段）は、ＵＳＢを介して転送されるデータ（パケット）を一時的に記憶するものであり、ＵＳＢ（第１のバス）でのデータ転送速度と、ＥＢＵＳ（第２のバス）でのデータ転送速度との速度差を補償する機能などを有する。なお、ＥＢＵＳは、ハードディスクドライブ、光ディスクドライブ、ＭＰＥＧエンコーダ、ＭＰＥＧデコーダなどの外部デバイスに接続される外部バスである。
【０１３２】
バルク転送管理回路７０は、ＵＳＢにおけるバルク転送を管理するための回路である。またＤＭＡＣ８０（広義には第２のインターフェース回路）は、ＥＢＵＳを介して外部デバイスとの間でＤＭＡ転送を行うためのＤＭＡコントローラである。
【０１３３】
図２０にマクロブロックＭＢ２の一例を示す。なお本実施形態のマクロブロックＭＢ２は図２０に示す構成に限定されるものではない。
【０１３４】
マクロブロックＭＢ２は、データハンドラ回路９０、クロック生成回路９２、ＨＳ（Ｈｉｇｈ  Ｓｐｅｅｄ）回路９４、ＦＳ（Ｆｕｌｌ  Ｓｐｅｅｄ）回路９６を含む。これらの回路は論理層回路である。またＭＢ２は、物理層回路（ＰＨＹ）であるアナログフロントエンド回路９８（送受信回路）を含む。
【０１３５】
データハンドラ回路９０は、ＵＳＢ２．０等に準拠したデータ転送のための種々の処理を行う。より具体的には、送信時には、送信データにＳＹＮＣ（ＳＹＮＣｈｒｏｎｉｚａｔｉｏｎ）、ＳＯＰ（Ｓｔａｒｔ  Ｏｆ  Ｐａｃｋｅｔ）、ＥＯＰ（Ｅｎｄ  Ｏｆ  Ｐａｃｋｅｔ）を付加する処理や、ビットスタッフィング処理等を行う。一方、受信時には、受信データのＳＹＮＣ、ＳＯＰ、ＥＯＰを検出し、削除する処理や、ビットアンスタッフィング処理などを行う。更に、データハンドラ回路９０は、データの送受信を制御するための各種のタイミング信号を生成する処理も行う。
【０１３６】
ＵＳＢ２．０では、ＨＳモード（広義には第１の転送モード）とＦＳモード（広義には第２の転送モード）が定義されている。ＨＳモードは、ＵＳＢ２．０により新たに定義された転送モードである。ＦＳモードは、従来のＵＳＢ１．１で既に定義されている転送モードである。
【０１３７】
クロック生成回路９２は、ＨＳ用の４８０ＭＨｚのクロックや、６０ＭＨｚのシステムクロックなどの種々の周波数のクロックを生成する回路であり、ＯＳＣ、ＰＬＬ４８０Ｍ、ＰＬＬ６０Ｍを含む。
【０１３８】
ここでＯＳＣ（発振回路）は、例えば外部振動子との組み合わせによりベースクロックを生成する。ＰＬＬ４８０Ｍは、ＯＳＣ（発振回路）で生成されたベースクロックに基づいて、ＨＳモードで必要な４８０ＭＨｚのクロックと、ＦＳモードやシステムクロックに必要な６０ＭＨｚのクロックを生成するＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）である。ＰＬＬ６０Ｍは、ＯＳＣ（発振回路）で生成されたベースクロックに基づいて、ＦＳモードやシステムクロックに必要な６０ＭＨｚのクロックを生成するＰＬＬである。
【０１３９】
ＨＳ回路９４は、データ転送速度が４８０ＭｂｐｓとなるＨＳモードでのデータの送受信を行うためのロジック回路である。一方、ＦＳ回路９６は、データ転送速度が１２ＭｂｐｓとなるＦＳモードでのデータの送受信を行うためのロジック回路である。
【０１４０】
アナログフロントエンド回路９８（送受信回路）は、ＦＳモードやＨＳモードでの送受信を行うためのドライバやレシーバを含むアナログ回路であり、差動信号ＤＰ、ＤＭを用いて送受信処理を行う。このアナログフロントエンド回路９８には、ＨＳモードでの送受信を行うためのＨＳモード用ドライバ及びレシーバと、ＦＳモードで送受信を行うためのＦＳモード用ドライバ及びレシーバを含ませることができる。
【０１４１】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【０１４２】
例えばテスト回路、第１、第２のマクロブロックの構成は、図２、図５、図６、図１１、図１３、図１９、図２０等で説明した構成に限定されず、種々の変形実施が可能である。
【０１４３】
また本実施形態で説明したテスト用送信バッファＴＸＢ、テスト用受信バッファＲＸＢ、通信シーケンサＣＳＱ、セレクタＳＥＬ１、ＳＥＬ２、ダミーのスキャン用フリップフロップＤＳＦＦ、テスト用バッファＴＳＢと均等な回路を用いる場合も、本発明の均等な範囲に含まれる。
【０１４４】
また第２のマクロブロックによる第１のバスでの送受信処理（第２のマクロブロックが含む物理層回路）は、ＵＳＢ２．０規格に基づく送受信処理（ＵＳＢ２．０の物理層回路）には限定されない。例えばＵＳＢ２．０と同様の思想に基づく規格や、ＵＳＢ２．０を発展させた規格に基づく送受信処理や、ＩＥＥＥ１３９４規格などの他の高速シリアル転送規格に基づいて送受信処理であってもよい。
【０１４５】
また、明細書又は図面中の記載において広義な用語（通信マクロブロック仕様、第１のインターフェース回路、第２のインターフェース回路、第１の転送モード、第２の転送モード、第１のバス、（Ｉ−Ｊ）個、複数段、複数バイト等）として引用された用語（ＵＴＭＩ、ＳＩＥ、ＤＡＭＣ、ＨＳモード、ＦＳモード、ＵＳＢ、３個、４段、４バイト等）は、明細書又は図面中の他の記載においても広義な用語に置き換えることができる。
【０１４６】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の１の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【図面の簡単な説明】
【図１】図１（Ａ）（Ｂ）はマクロブロックを含む集積回路のテスト手法についての説明図である。
【図２】本実施形態のテスト回路の構成例である。
【図３】図３（Ａ）（Ｂ）（Ｃ）は図２のテスト回路の動作説明図である。
【図４】テスト回路の動作を説明するための波形図である。
【図５】通信シーケンサを含むテスト回路の構成例である。
【図６】セレクタを含むテスト回路の構成例である。
【図７】図７（Ａ）（Ｂ）は図６のテスト回路の動作説明図である。
【図８】マクロブロック及びテスト回路にスキャンパスを設定する手法の説明図である。
【図９】図９（Ａ）（Ｂ）はスキャン手法の説明図である。
【図１０】スキャン手法を利用したテスト方法のフローチャートである。
【図１１】ダミーのスキャン用ＦＦを含むテスト回路の例である。
【図１２】図１２（Ａ）（Ｂ）（Ｃ）はダミーのスキャン用ＦＦの説明図である。
【図１３】本実施形態のテスト回路の詳細例である。
【図１４】バッファのアドレスマップの例である。
【図１５】図１５（Ａ）〜（Ｄ）は本実施形態のテスト用バッファ、テスト用送信バッファ、テスト用受信バッファの説明図である。
【図１６】通信シーケンサの構成例である。
【図１７】テスト回路や通信シーケンサの動作を説明する波形図である。
【図１８】テスト回路や通信シーケンサの動作を説明する波形図である。
【図１９】マクロブロックＭＢ１の一例である。
【図２０】マクロブロックＭＢ２の一例である。
【符号の説明】
ＭＢ１  第１のマクロブロック、ＭＢ２  第２のマクロブロック、
ＴＸＢ  テスト用送信バッファ、ＲＸＢ  テスト用受信バッファ、
ＴＣ  テスト回路、ＣＳＱ  通信シーケンサ、
ＳＥＬ１  第１のセレクタ、ＳＥＬ２  第２のセレクタ、
ＳＳ１、ＳＳ２  選択信号、
Ｍ１ＯＵＴ  ＭＢ１の出力信号、Ｍ１ＩＮ  ＭＢ１の入力信号、
Ｍ２ＩＮ  ＭＢ２の入力信号、Ｍ２ＯＵＴ  ＭＢ２の出力信号、
ＴＩＮ  テスト入力信号、ＴＯＵＴ  テスト出力信号、
ＴＰＩ  テスト入力端子、ＴＰＯ  テスト出力端子、
ＳＱ  ＳＥＬ１の出力信号、
ＤＳＦＦ、ＤＳＦＦ１〜ＤＳＦＦ３  ダミーのスキャン用フリップフロップ、
ＴＳＢ  テスト用バッファ、ＤＥＣ  デコーダ、ＰＨＹ  物理層回路、
１０、１２、１４  接続部分、３０  ＳＩＥ、３２  パケットハンドラ回路、
３４  サスペンド＆レジューム回路、３６  トランザクション管理回路
４０  エンドポイント管理回路、５０  バッファ管理回路、６０  バッファ、
７０  バルク転送管理回路、８０  ＤＭＡＣ、
９０  データハンドラ回路、９２  クロック生成回路、９４  ＨＳ回路、
９６  ＦＳ回路、９８  アナログフロントエンド回路、
【図１】
0003632692.tif 000002
【図２】
0003632692.tif 000003
【図３】
0003632692.tif 000004
【図４】
0003632692.tif 000005
【図５】
0003632692.tif 000006
【図６】
0003632692.tif 000007
【図７】
0003632692.tif 000008
【図８】
0003632692.tif 000009
【図９】
0003632692.tif 000010
【図１０】
0003632692.tif 000011
【図１１】
0003632692.tif 000012
【図１２】
0003632692.tif 000013
【図１３】
0003632692.tif 000014
【図１４】
0003632692.tif 000015
【図１５】
0003632692.tif 000016
【図１６】
0003632692.tif 000017
【図１７】
0003632692.tif 000018
【図１８】
0003632692.tif 000019
【図１９】
0003632692.tif 000020
【図２０】
0003632692.tif 000021