(57)【要約】【課題】データバスの物理的な故障の他、データ転送における論理的な障害が発生した箇所を特定する機構を備えた半導体集積回路装置及びそのデータ転送障害解析方法を提供する。【解決手段】データバス１２を含む経路を介して半導体集積回路のテスト回路間でテストデータを送受信し、テストデータを受信した半導体集積回路のテスト回路が、受信したテストデータと参照データとの比較結果に基づいてデータ転送障害を判定する。【選択図】図１
2007304808.tif 000002
【特許請求の範囲】
【請求項１】
データバスを介して互いに接続する複数の半導体集積回路と、前記複数の半導体集積回路の各々に設けられ、前記データバスを含む経路でのデータ転送障害を判定するテスト回路とを備えた半導体集積回路装置において、
前記テスト回路は、
前記データバスを介して接続する半導体集積回路のテスト回路との間で、前記データバスを含む経路でテストデータを送受信すると共に、前記半導体集積回路のテスト回路から受信したテストデータと参照データとの比較結果に基づいて、前記データバスを含む経路の物理的故障及びデータ転送のタイミング不良を判定することを特徴とする半導体集積回路装置。
【請求項２】
テスト回路は、
位相の異なる複数のクロック信号からテストデータ送信用のクロック信号を選択して、半導体集積回路のテスト回路へのテストデータの送信を制御するテストデータ送信部と、
位相の異なる複数のクロック信号からテストデータ受信用のクロック信号を選択して、前記半導体集積回路のテスト回路からのテストデータの受信を制御するテストデータ受信部と、
前記半導体集積回路のテスト回路から受信したテストデータと参照データとの比較結果に基づいて、前記データバスを含む経路の物理的故障及びデータ転送のタイミング不良を判定する障害判定部とを備えたことを特徴とする請求項１記載の半導体集積回路装置。
【請求項３】
障害判定部は、
データバスを介して接続する半導体集積回路のテスト回路から受信したテストデータと参照データが一致すると、データ転送を正常と判定し、
前記受信したテストデータが、０又は１のデジタル値に固定されていると、前記データバスを含む経路が物理的故障が生じていると判定し、
前記受信したテストデータが、前記デジタル値に固定されておらず、かつ前記参照データと一致しないと、データ転送にタイミング不良が生じていると判定することを特徴とする請求項２記載の半導体集積回路装置。
【請求項４】
テストデータ送信部及びテストデータ受信部は、
障害判定部によりデータ転送にタイミング不良が生じていると判定されると、
半導体集積回路のテスト回路間で、位相の異なる複数のクロック信号の各々に同期してテストデータを送受信し、
前記障害判定部は、
前記位相の異なる複数のクロック信号の各々に同期して受信されたテストデータと参照データとの比較結果に基づいて障害判定を行い、
前記複数のクロック信号による判定結果のうち、データ転送が正常であったクロック信号を用いてタイミング不良を改善することを特徴とする請求項３記載の半導体集積回路装置。
【請求項５】
データバスを介した半導体集積回路間のデータ転送障害解析方法において、
前記データバスを含む経路を介して前記半導体集積回路のテスト回路間でテストデータを送受信するステップと、
前記テストデータを受信した前記半導体集積回路のテスト回路が、受信したテストデータと参照データとの比較結果に基づいて、前記データバスを含む経路の物理的故障及びデータ転送のタイミング不良を判定するステップとを備えたことを特徴とするデータ転送障害解析方法。
【請求項６】
テストデータを受信した半導体集積回路のテスト回路は、
データバスを介して接続する半導体集積回路のテスト回路から受信したテストデータと参照データが一致すると、データ転送を正常と判定し、
前記受信したテストデータが、０又は１のデジタル値に固定されていると、前記データバスを含む経路が物理的故障が生じていると判定し、
前記受信したテストデータが、前記デジタル値に固定されておらず、かつ前記参照データと一致しないと、データ転送にタイミング不良が生じていると判定することを特徴とする請求項５記載のデータ転送障害解析方法。
【請求項７】
データ転送にタイミング不良が生じていると判定されると、データバスを介して接続する半導体集積回路のテスト回路との間で、位相の異なる複数のクロック信号の各々に同期して障害判定を行い、これら複数のクロック信号での判定結果のうち、データ転送が正常であると判定されたクロック信号でタイミング不良を改善することを特徴とする請求項６記載のデータ転送障害解析方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、バスインタフェース回路のデータ転送障害を解析する機構を設けた半導体集積回路装置及びそのデータ転送障害解析方法に関するものである。
【背景技術】
【０００２】
従来では、各種システムにおいてデータ転送に障害が発生した場合、ロジックアナライザを用いてデータバス信号の状態を観測して障害原因を特定していた。しかしながら、この方法では、信号数の増加や動作周波数の高速化に伴って障害調査が長期化する傾向にあった。
【０００３】
これに対して、特許文献１に開示されるバスインタフェース回路の障害診断方法では、半導体集積回路装置に搭載されたバスインタフェース回路で障害が発生したとき、テストデータを用いて、データ転送障害の箇所を判定（特定）する。簡単に概要を説明すると、特許文献１のバスインタフェース回路は、相対する２つの半導体集積回路にそれぞれ搭載された双方向バッファと、これら双方向バッファ間を接続するデータバスとを備え、各半導体集積回路には、障害検出回路が設けられている。
【０００４】
一方の双方向バッファと他方の双方向バッファとを結ぶデータバスに異常が発生すると、障害検出回路から一方の双方向バッファの内部側にテストデータを入力し、このテストデータと一方の双方向バッファのデータバス側から出力されたテストデータとを比較する。続いて、テストデータの発生タイミングとは異なるタイミングで障害検出回路から他方の双方向バッファの内部側にテストデータを入力し、このテストデータと他方の双方向バッファのデータバス側から出力されたテストデータとを比較する。これら各比較結果を判定し、判定結果から障害箇所が診断される。
【０００５】
【特許文献１】特開平９−３４７４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献１の障害診断方法は、テストデータの入力値とデータバスを介した受信データの値との比較結果からデータ転送障害を診断するものであり、診断可能な障害が、データバスの開放や短絡、データバスの両端に位置する双方向バッファの異常等の物理的故障に限られる。このため、論理的故障、例えば両双方向バッファよりさらに外側に位置するフリップフロップ間でのデータ転送不良（タイミング不良）の箇所を特定することができない。
【０００７】
この発明は、上記のような課題を解決するためになされたもので、データバスの物理的な故障の他、データ転送における論理的な障害が発生した箇所を特定する機構を備えた半導体集積回路装置及びそのデータ転送障害解析方法を得ることを目的とする。
【課題を解決するための手段】
【０００８】
この発明に係る半導体集積回路装置は、データバスを介して互いに接続する複数の半導体集積回路と、複数の半導体集積回路の各々に設けられ、データバスを含む経路でのデータ転送障害を判定するテスト回路とを備え、テスト回路が、データバスを介して接続する半導体集積回路のテスト回路との間で、データバスを含む経路でテストデータを送受信すると共に、半導体集積回路のテスト回路から受信したテストデータと参照データとの比較結果に基づいて、データバスを含む経路の物理的故障及びデータ転送のタイミング不良を判定するものである。
【発明の効果】
【０００９】
この発明によれば、データバスを含む経路を介して半導体集積回路のテスト回路間でテストデータを送受信し、テストデータを受信した半導体集積回路のテスト回路が、受信したテストデータと参照データとの比較結果に基づいて、データバスを含む経路の物理的故障及びデータ転送のタイミング不良を判定するので、ロジックアナライザ等の試験機器を別途使用することなく、データバスを含む経路における信号の開放や短絡等の物理的故障や、タイミング不良の発生を特定でき、デバッグ期間を短縮化することができるという効果がある。
【発明を実施するための最良の形態】
【００１０】
実施の形態１．
図１は、この発明の実施の形態１による半導体集積回路装置の構成を示す図であり、データバス１２を介して半導体集積回路Ａ，Ｂが接続され、半導体集積回路Ａ，Ｂ間のデータ転送が障害解析される。実施の形態１による半導体集積回路装置において、半導体集積回路Ａは、テスト回路Ａ、フリップフロップ７ａ，８ａ、バッファ１１ａ，１３ａを備え、半導体集積回路Ｂは、テスト回路Ｂ、フリップフロップ７ｂ，８ｂ、バッファ１１ｂ，１３ｂを備える。
【００１１】
テスト回路Ａは、テスト制御部１ａ、テストデータ送信部２ａ、テストデータ受信部３ａ、セレクタ４ａ〜６ａを備え、テスト回路Ｂは、テスト制御部１ｂ、テストデータ送信部２ｂ、テストデータ受信部３ｂ、セレクタ４ｂ〜６ｂを備える。また、テスト制御部１ａ，１ｂは、制御バス１４を介してＣＰＵ（Central Processing Unit）１５と接続している。ＣＰＵ１５は、制御バス１４を介してテスト制御部１ａ又はテスト制御部１ｂにテスト実施の指令を送信する。なお、制御バス１４に接続する不図示の外部入出力端子を介してテスト制御部１ａ又はテスト制御部１ｂにテスト実施の指令を送信してもよい。
【００１２】
テスト制御部１ａは、制御バス１４を介してテスト実施指令を受信すると、テストデータをテストデータ送信部２ａ及びテストデータ受信部３ａに出力し、半導体集積回路Ａから半導体集積回路Ｂへのテストデータの転送、及び、半導体集積回路Ｂから半導体集積回路Ａへ転送されたテストデータを用いたデータ転送障害の解析を制御する。
【００１３】
テスト制御部１ｂは、制御バス１４を介してテスト実施指令を受信すると、テストデータをテストデータ送信部２ｂ及びテストデータ受信部３ｂに出力し、半導体集積回路Ｂから半導体集積回路Ａへのテストデータの転送、及び、半導体集積回路Ａから半導体集積回路Ｂへ転送されたテストデータを用いたデータ転送障害の解析を制御する。
【００１４】
セレクタ４ａは、テストデータ送信部２ａからテストデータ及びデータ選択信号を入力し、データ選択信号の値に応じてテストデータ送信部２ａからのテストデータ又はデータ出力ライン９ａ上のデータのいずれか一方を選択してフリップフロップ７ａのデータ端子に出力する。以降の説明では、データ選択信号が「Ｈ（ハイレベル）」のとき、テストデータ送信部２ａからのテストデータを選択し、データ選択信号が「Ｌ（ロウレベル）」のとき、データ出力ライン９ａからのデータを選択するものとする。
【００１５】
セレクタ４ｂは、テストデータ送信部２ｂからテストデータ及びデータ選択信号を入力し、データ選択信号の値に応じてテストデータ送信部２ｂからのテストデータ又はデータ出力ライン９ｂ上のデータのいずれか一方を選択してフリップフロップ７ｂのデータ端子に出力する。以降の説明では、データ選択信号が「Ｈ」のとき、テストデータ送信部２ｂからのテストデータを選択し、データ選択信号が「Ｌ」のとき、データ出力ライン９ｂからのデータを選択するものとする。
【００１６】
セレクタ５ａは、テストデータ送信部２ａから各種位相クロック信号及びクロック選択信号を入力し、クロック選択信号の値に応じてテストデータ送信部２ａからの各種位相クロック信号又は不図示のクロック源からの通常のクロック信号ＣＬＫのいずれか一方を選択してフリップフロップ７ａのクロック端子に出力する。以降の説明では、クロック選択信号が「Ｈ」のとき、テストデータ送信部２ａからの各種位相クロック信号を選択し、クロック選択信号が「Ｌ」のとき、不図示のクロック源からの通常のクロック信号ＣＬＫを選択するものとする。
【００１７】
セレクタ５ｂは、テストデータ送信部２ｂから各種位相クロック信号及びクロック選択信号を入力し、クロック選択信号の値に応じてテストデータ送信部２ｂからの各種位相クロック信号又は不図示のクロック源からの通常のクロック信号ＣＬＫのいずれか一方を選択してフリップフロップ７ｂのクロック端子に出力する。以降の説明では、クロック選択信号が「Ｈ」のとき、テストデータ送信部２ｂからの各種位相クロック信号を選択し、クロック選択信号が「Ｌ」のとき、不図示のクロック源からの通常のクロック信号ＣＬＫを選択するものとする。
【００１８】
セレクタ６ａは、テストデータ受信部３ａから各種位相クロック信号及びクロック選択信号を入力し、クロック選択信号の値に応じてテストデータ受信部３ａからの各種位相クロック信号又は不図示のクロック源からの通常のクロック信号ＣＬＫのいずれか一方を選択してフリップフロップ８ａのクロック端子に出力する。以降の説明では、クロック選択信号が「Ｈ」のとき、テストデータ受信部３ａからの各種位相クロック信号を選択し、クロック選択信号が「Ｌ」のとき、不図示のクロック源からの通常のクロック信号ＣＬＫを選択するものとする。
【００１９】
セレクタ６ｂは、テストデータ受信部３ｂから各種位相クロック信号及びクロック選択信号を入力し、クロック選択信号の値に応じてテストデータ受信部３ｂからの各種位相クロック信号又は不図示のクロック源からの通常のクロック信号ＣＬＫのいずれか一方を選択してフリップフロップ８ｂのクロック端子に出力する。以降の説明では、クロック選択信号が「Ｈ」のとき、テストデータ受信部３ｂからの各種位相クロック信号を選択し、クロック選択信号が「Ｌ」のとき、不図示のクロック源からの通常のクロック信号ＣＬＫを選択するものとする。
【００２０】
フリップフロップ７ａは、クロック端子から入力されるクロック信号に同期して、セレクタ４ａからのデータをラッチし、バッファ１１ａを介してデータバス１２に送信する。フリップフロップ７ｂは、クロック端子から入力されるクロック信号に同期して、セレクタ４ｂからのデータをラッチし、バッファ１１ｂを介してデータバス１２に送信する。
【００２１】
フリップフロップ８ａは、クロック端子を介して入力されたクロック信号に同期して、バッファ１３ａを介してデータバス１２上のデータをラッチし、データ入力ライン１０ａに送信する。フリップフロップ８ｂは、クロック端子を介して入力されたクロック信号に同期して、バッファ１３ｂを介してデータバス１２上のデータをラッチし、データ入力ライン１０ｂに送信する。
【００２２】
図２は、図１中のテストデータ送信部及びテストデータ受信部の構成を示す図であり、図２（ａ）がテストデータ送信部の構成を示し、図２（ｂ）がテストデータ受信部の構成を示している。図２に示すように、テストデータ送信部２ａ，２ｂは、テストデータ送信制御部１６及びＤＰＬＬ（Digital Phase Looked Loop）回路１７を備える。また、テストデータ受信部３ａ，３ｂは、テストデータ受信制御部１８、障害判定部１９及びＤＰＬＬ回路２０を備える。
【００２３】
テストデータ送信部２ａ（又は、テストデータ送信部２ｂ）のテストデータ送信制御部１６は、テスト制御部１ａ（又は、テスト制御部１ｂ）による制御の下、データ選択信号を生成し、このデータ選択信号とテスト制御部１ａ（又は、テスト制御部１ｂ）から入力したテストデータとをセレクタ４ａ（又はセレクタ４ｂ）に出力すると共に、通常のクロック信号ＣＬＫと各種位相クロック信号とのいずれか一方を選択するためのクロック選択信号を生成してセレクタ５ａ（又は、セレクタ５ｂ）に出力する。
【００２４】
ＤＰＬＬ回路１７は、テストデータ送信制御部１６を介して不図示のクロック源から通常のクロック信号ＣＬＫを入力し、この通常のクロック信号ＣＬＫに基づいて各種位相のクロック信号を生成し、セレクタ５ａ（又は、セレクタ５ｂ）に出力する。例えば、通常のクロック信号ＣＬＫから４５度ごとの位相差を持つ８相のクロック信号を生成する。
【００２５】
テストデータ受信部３ａ（又は、テストデータ受信部３ｂ）のテストデータ受信制御部１８は、テスト制御部１ａ（又は、テスト制御部１ｂ）からテストデータを入力すると共に、その制御の下、半導体集積回路Ｂ（又は、半導体集積回路Ａ）から転送されてきたテストデータを受信する。また、テストデータ受信制御部１８は、通常のクロック信号ＣＬＫと各種位相クロック信号とのいずれか一方を選択するためのクロック選択信号を生成してセレクタ８ａ（又は、セレクタ８ｂ）に出力する。
【００２６】
障害判定部１９は、テストデータ受信制御部１８を介して半導体集積回路Ｂ（又は、半導体集積回路Ａ）から転送されてきたテストデータとテスト制御部１ａ（又は、テスト制御部１ｂ）からのテストデータを入力し、これらテストデータの比較結果に基づいて障害の有無を判定し、障害判定結果をテスト制御部１ａ（又は、テスト制御部１ｂ）に出力する。具体的な判定方法については、後述する。
【００２７】
ＤＰＬＬ回路２０は、テストデータ受信制御部１８を介して不図示のクロック源から通常のクロック信号ＣＬＫを入力し、この通常のクロック信号ＣＬＫに基づいて各種位相のクロック信号を生成し、セレクタ８ａ（又は、セレクタ８ｂ）に出力する。
【００２８】
次に動作について説明する。
図３は、実施の形態１の半導体集積回路装置によるデータ転送障害の解析処理の流れを示すフローチャートであり、この図に沿って説明する。
ＣＰＵ１５又は不図示の外部入出力端子から制御バス１４を介してテスト実施指令を、半導体集積回路Ａ，Ｂのテスト制御部１ａ，１ｂに送信する（ステップＳＴ１）。半導体集積回路Ａのテスト制御部１ａでは、テスト実施指令を受信すると、通常のクロック信号ＣＬＫに同期したテストの開始指令及びテストデータを、テストデータ送信部２ａのテストデータ送信制御部１６に出力する。
【００２９】
また、半導体集積回路Ｂのテスト制御部１ｂでは、テスト実施指令を受信すると、通常のクロック信号ＣＬＫに同期したテストの開始指令及びテストデータ（半導体集積回路Ａのテスト制御部１ａがテストデータ送信部２ａに出力したテストデータと同一内容のテストデータ（以下、送信テストデータＡと称す））を、テストデータ受信部３ｂのテストデータ受信制御部１８に出力する。このテストデータが、半導体集積回路Ａのテスト回路から受信したテストデータと比較する参照データとなる。
【００３０】
半導体集積回路Ａのテストデータ送信制御部１６では、テスト制御部１ａから、通常のクロック信号ＣＬＫに同期したテストを開始する旨のテスト開始指令を受信すると、通常のクロック信号ＣＬＫを選択させる所定の値のクロック選択信号をセレクタ５ａに出力する。また、テストデータ及びこれを選択させる所定の値のデータ選択信号をセレクタ４ａに出力する。ここでは、「Ｈ」のデータ選択信号がセレクタ４ａに出力され、「Ｌ」のクロック選択信号がセレクタ５ａに出力される。
【００３１】
セレクタ４ａでは、テストデータ送信部２ａからテストデータ及びデータ選択信号を入力すると、データ選択信号の値「Ｈ」に応じてテストデータを選択してフリップフロップ７ａのデータ端子に出力する。一方、セレクタ５ａでは、テストデータ送信部２ａからクロック選択信号を入力すると、クロック選択信号の値「Ｌ」に応じて不図示のクロック源からの通常のクロック信号ＣＬＫを選択してフリップフロップ７ａのクロック端子に出力する。
【００３２】
フリップフロップ７ａでは、クロック端子から入力される通常のクロック信号ＣＬＫに同期して、データ端子から入力されるテストデータを、バッファ１１ａを介してデータバス１２に出力し、半導体集積回路Ｂへテストデータを転送する（ステップＳＴ２）。
【００３３】
一方、半導体集積回路Ｂのテストデータ受信制御部１８は、テスト制御部１ｂから通常のクロック信号ＣＬＫに同期したテストを開始する旨のテスト開始指令を受信すると、通常のクロック信号ＣＬＫを選択させる所定の値のクロック選択信号をセレクタ６ｂに出力する。ここでは、「Ｌ」のクロック選択信号がセレクタ６ｂに出力される。
【００３４】
セレクタ６ｂでは、テストデータ受信部３ｂからクロック選択信号を入力すると、クロック選択信号の値「Ｌ」に応じて通常のクロック信号ＣＬＫを選択してフリップフロップ８ｂのクロック端子に出力する。これにより、フリップフロップ８ｂでは、クロック端子から入力される通常のクロック信号ＣＬＫに同期して、半導体集積回路Ａからのテストデータを、データバス１２及びバッファ１３ｂを介してラッチし、データ入力バス１０ｂ及びテストデータ受信部３ｂに出力する。
【００３５】
半導体集積回路Ｂのテストデータ受信部３ｂにおいて、半導体集積回路Ａからのテストデータは、テストデータ受信制御部１８に入力される。テストデータ受信制御部１８は、半導体集積回路Ａからのテストデータを障害判定部１９に出力すると共に、テスト制御部１ｂから入力した送信テストデータＡを障害判定部１９に出力する。
【００３６】
障害判定部１９は、半導体集積回路Ａからのテストデータ及びテスト制御部１ｂからの送信テストデータＡを入力すると、これらテストデータをビット単位で比較し、この比較結果に基づいて障害の有無を判定する（ステップＳＴ３）。以下に、具体的な障害判定処理について説明する。
図４は、図２（ｂ）中の障害判定部による障害判定条件を示す図である。図４に示す判定条件は、障害判定部１９に予め設定されている。障害判定部１９は、半導体集積回路Ａから転送されてきたテストデータが送信テストデータＡと一致する場合、半導体集積回路Ａから半導体集積回路Ｂへのデータ転送は「正常」であると判定する。
【００３７】
また、半導体集積回路Ａから転送されてきたテストデータが、値「０」のままで固定され、値「１」にならない場合、半導体集積回路Ａから半導体集積回路Ｂまでのデータライン（データバス１２を含む）が、０縮退故障（値「０」に短絡している）であるか、又は、データラインの開放（プルダウン抵抗有りの場合）であると判定する。
【００３８】
反対に、半導体集積回路Ａから転送されてきたテストデータが、値「１」のままで固定され、値「０」にならない場合、半導体集積回路Ａから半導体集積回路Ｂまでのデータライン（データバス１２を含む）が、１縮退故障（値「１」に短絡している）であるか、又は、データラインの開放（プルダウン抵抗有りの場合）であると判定する。
【００３９】
さらに、半導体集積回路Ａから転送されてきたテストデータが、値「０」又は値「１」に固定されてはいないが、送信テストデータＡの値と一致しない場合は、「不一致ビットラインにタイミング不良有り」と判定する。この場合、後述するように、各種位相のクロックによるテストを実施し、障害箇所や原因を特定する。
【００４０】
障害判定部１９による判定結果は、テスト制御部１ｂに出力される。このあと、半導体集積回路Ｂから半導体集積回路Ａへのデータ転送の障害判定処理に移行する。
【００４１】
ステップＳＴ３の処理が完了すると、半導体集積回路Ｂのテスト制御部１ｂが、通常のクロック信号ＣＬＫに同期したテストの開始指令及びテストデータを、テストデータ送信部２ｂのテストデータ送信制御部１６に出力する。また、半導体集積回路Ａのテスト制御部１ａが、通常のクロック信号ＣＬＫに同期したテストの開始指令及びテストデータ（半導体集積回路Ｂのテスト制御部１ｂがテストデータ送信部２ｂに出力したテストデータと同一内容のテストデータ（以下、送信テストデータＢと称す））を、テストデータ受信部３ａのテストデータ受信制御部１８に出力する。このテストデータが、半導体集積回路Ｂのテスト回路から受信したテストデータと比較する参照データとなる。
【００４２】
半導体集積回路Ｂのテストデータ送信制御部１６では、テスト制御部１ｂから、通常のクロック信号ＣＬＫによるテストの開始指令を受信すると、通常のクロック信号ＣＬＫを選択させる所定の値のクロック選択信号をセレクタ５ｂに出力する。また、テストデータ及びこれを選択させる所定の値のデータ選択信号をセレクタ４ｂに出力する。ここでは、「Ｈ」のデータ選択信号がセレクタ４ｂに出力され、「Ｌ」のクロック選択信号がセレクタ５ｂに出力される。
【００４３】
セレクタ４ｂでは、テストデータ送信部２ｂからテストデータ及びデータ選択信号を入力すると、データ選択信号の値「Ｈ」に応じてテストデータを選択してフリップフロップ７ｂのデータ端子に出力する。セレクタ５ｂでは、テストデータ送信部２ｂからクロック選択信号を入力すると、クロック選択信号の値「Ｌ」に応じて不図示のクロック源からの通常のクロック信号ＣＬＫを選択してフリップフロップ７ｂのクロック端子に出力する。
【００４４】
フリップフロップ７ｂでは、クロック端子から入力される通常のクロック信号ＣＬＫに同期して、データ端子から入力されるテストデータを、バッファ１１ｂを介してデータバス１２に出力し、半導体集積回路Ａへテストデータを転送する（ステップＳＴ４）。
【００４５】
一方、半導体集積回路Ａのテストデータ受信制御部１８は、テスト制御部１ａから通常のクロック信号ＣＬＫに同期したテストを開始する旨のテスト開始指令を受信すると、通常のクロック信号ＣＬＫを選択させる所定の値のクロック選択信号をセレクタ６ａに出力する。ここでは、「Ｌ」のクロック選択信号がセレクタ６ａに出力される。
【００４６】
セレクタ６ａでは、テストデータ受信部３ａからクロック選択信号を入力すると、クロック選択信号の値「Ｌ」に応じて通常のクロック信号ＣＬＫを選択してフリップフロップ８ａのクロック端子に出力する。これにより、フリップフロップ８ａでは、クロック端子から入力される通常のクロック信号ＣＬＫに同期して、半導体集積回路Ｂからのテストデータを、データバス１２及びバッファ１３ａを介してラッチし、データ入力バス１０ａ及びテストデータ受信部３ａに出力する。
【００４７】
半導体集積回路Ａのテストデータ受信部３ａでは、半導体集積回路Ｂからのテストデータをテストデータ受信制御部１８が入力する。テストデータ受信制御部１８は、半導体集積回路Ｂからのテストデータを障害判定部１９に逐次出力すると共に、テスト制御部１ａから入力した送信テストデータＢを障害判定部１９に出力する。
【００４８】
障害判定部１９は、半導体集積回路Ｂからのテストデータ及びテスト制御部１ａからの送信テストデータＢを入力すると、これらテストデータをビット単位で比較し、この比較結果に基づいて障害の有無を判定する（ステップＳＴ５）。この判定処理については、上述した半導体集積回路Ｂの障害判定部１９による処理と同様である。障害判定部１９による判定結果は、テスト制御部１ａに出力される。
【００４９】
テスト制御部１ａ，１ｂは、以上のようにして、半導体集積回路Ａ，Ｂ間のデータラインの双方向の障害判定結果を取得すると、制御バス１４を介してＣＰＵ１５又は外部入出力端子に出力する。これにより、ＣＰＵ１５又は外部入出力端子に接続する不図示の外部検査装置が、データ転送が正常であったか異常であったかを最終的に判定する（ステップＳＴ６）。
【００５０】
ここで、半導体集積回路Ａ，Ｂの障害判定部１９の判定結果が双方とも「正常」と判定されていれば、半導体集積回路Ａ，Ｂ間のデータ転送は「正常」であると判断される（ステップＳＴ６−１）。また、半導体集積回路Ａ，Ｂの障害判定部１９による判定結果のいずれかが「異常」と判定されている場合、ステップＳＴ７の処理に進む。
【００５１】
ステップＳＴ７では、ＣＰＵ１５又は外部入出力端子に接続する不図示の外部検査装置が、障害判定部１９の判定結果に基づいて、データライン異常が縮退故障又は開放によるものであるか否かを最終的に判定する。このとき、図４の判定条件に基づき判定結果が、「データラインの縮退故障又は開放によるもの」であることを示していれば、データラインのデータ転送異常は、データラインにおける物理的な故障が原因であると判定される（ステップＳＴ７−１）。一方、判定結果が「データラインの縮退故障又は開放によるもの」であることを示していなければ、データラインにタイミング不良があると判断され、ステップＳＴ８の処理に進む。
【００５２】
ステップＳＴ８において、ＣＰＵ１５又は外部入出力端子に接続する不図示の外部検査装置が、制御バス１４を介してテストクロックでのテストを開始する指令を、半導体集積回路Ａ，Ｂのテスト制御部１ａ，１ｂに送信する。
【００５３】
半導体集積回路Ａのテスト制御部１ａは、上記指令を受信すると、テストクロックとして各種位相クロック信号にそれぞれ同期したテストを開始する指令及びテストデータを、テストデータ送信部２ａのテストデータ送信制御部１６に出力する。また、半導体集積回路Ｂのテスト制御部１ｂは、上記指令を受信すると、テストクロックとして各種位相クロック信号にそれぞれ同期したテストを開始する指令及びテストデータ（送信テストデータＡ）（参照データ）を、テストデータ受信部３ｂのテストデータ受信制御部１８に出力する。
【００５４】
半導体集積回路Ａのテストデータ送信制御部１６では、テスト制御部１ａから、各種位相クロック信号にそれぞれ同期したテストを開始する旨のテスト開始指令を受信すると、各種位相クロック信号を選択させる所定の値のクロック選択信号をセレクタ５ａに出力する。また、テストデータ及びこれを選択させる所定の値のデータ選択信号をセレクタ４ａに出力する。ここでは、「Ｈ」のデータ選択信号がセレクタ４ａに出力され、「Ｈ」のクロック選択信号がセレクタ５ａに出力される。
【００５５】
セレクタ４ａでは、テストデータ送信部２ａからテストデータ及びデータ選択信号を入力すると、データ選択信号の値「Ｈ」に応じてテストデータを選択してフリップフロップ７ａのデータ端子に出力する。一方、セレクタ５ａでは、テストデータ送信部２ａからクロック選択信号を入力すると、クロック選択信号の値「Ｈ」に応じて、テストデータ送信部２ａのＤＰＬＬ回路１７からの各種位相クロック信号を選択してフリップフロップ７ａのクロック端子に出力する。
【００５６】
図５は、ＤＰＬＬ回路によって生成される各種位相クロック信号の例を示す図であり、４５度ずつ位相差をもたせた８相のクロック信号を示している。ＤＰＬＬ回路１７，２０は、タイミング不良判定時に、通常のクロック信号ＣＬＫを元に例えば図５に示すようなクロック信号ａ〜ｈを逐次生成する。これにより、各クロック信号ａ〜ｈでの障害判定が実行される。先ず、ＤＰＬＬ回路１７，２０によって、図５中のクロック信号ａが生成されたものとして説明する。
【００５７】
フリップフロップ７ａでは、クロック端子から入力されるクロック信号ａに同期して、データ端子から入力されるテストデータを、バッファ１１ａを介してデータバス１２に出力し、半導体集積回路Ｂへテストデータを転送する（ステップＳＴ９）。
【００５８】
半導体集積回路Ｂのテストデータ受信制御部１８は、テスト制御部１ｂから各種位相クロック信号に同期したテストを開始する旨のテスト開始指令を受信すると、ＤＰＬＬ回路２０からの各種位相クロック信号を選択させる所定の値のクロック選択信号をセレクタ６ｂに出力する。ここでは、「Ｈ」のクロック選択信号がセレクタ６ｂに出力される。
【００５９】
セレクタ６ｂでは、テストデータ受信部３ｂからクロック選択信号を入力すると、クロック選択信号の値「Ｈ」に応じてＤＰＬＬ回路２０からの各種位相クロック信号（クロック信号ａ）を選択してフリップフロップ８ｂのクロック端子に出力する。これにより、フリップフロップ８ｂでは、クロック端子から入力されるクロック信号ａに同期して、半導体集積回路Ａからのテストデータを、データバス１２及びバッファ１３ｂを介してラッチし、データ入力バス１０ｂ及びテストデータ受信部３ｂに出力する。
【００６０】
半導体集積回路Ｂのテストデータ受信部３ｂにおいて、半導体集積回路Ａからのテストデータは、テストデータ受信制御部１８に入力される。テストデータ受信制御部１８は、半導体集積回路Ａからのテストデータを障害判定部１９に逐次出力すると共に、テスト制御部１ｂから入力した送信テストデータＡを障害判定部１９に出力する。
【００６１】
障害判定部１９は、半導体集積回路Ａからのテストデータ及びテスト制御部１ｂからの送信テストデータＡを入力すると、これらテストデータをビット単位で比較し、この比較結果に基づいて障害の有無を判定する（ステップＳＴ１０）。この判定処理については、上述した図４に示す判定条件に基づく処理と同様である。障害判定部１９によるクロック信号ａに基づく障害判定結果は、テスト制御部１ａに出力される。
【００６２】
テスト制御部１ａでは、テストクロックとして設定された各種位相のクロック信号による障害判定が全て実施されるまで、ステップＳＴ９からステップＳＴ１０までの処理を繰り返す。ここでは、図５に示すクロック信号ｂからクロック信号ｈまでのそれぞれに同期したテストが繰り返され、各種位相クロック信号における障害判定結果が、テスト制御部１ａに出力される。
【００６３】
半導体集積回路Ａから半導体集積回路Ｂへのデータ転送におけるタイミング不良判定が完了すると、半導体集積回路Ｂから半導体集積回路Ａへのデータ転送におけるタイミング不良判定処理に移行する。
【００６４】
ステップＳＴ１０の処理が完了すると、半導体集積回路Ｂのテスト制御部１ｂは、各種位相クロック信号に同期したテストの開始指令及びテストデータを、テストデータ送信部２ｂのテストデータ送信制御部１６に出力する。また、半導体集積回路Ａのテスト制御部１ａは、各種位相クロック信号に同期したテストの開始指令及びテストデータ（送信テストデータＢ）（参照データ）を、テストデータ受信部３ａのテストデータ受信制御部１８に出力する。
【００６５】
半導体集積回路Ｂのテストデータ送信制御部１６では、テスト制御部１ｂから、各種位相クロック信号によるテストの開始指令を受信すると、各種位相クロック信号を選択させる所定の値のクロック選択信号をセレクタ５ｂに出力する。また、テストデータ及びこれを選択させる所定の値のデータ選択信号をセレクタ４ｂに出力する。ここでは、「Ｈ」のデータ選択信号がセレクタ４ｂに出力され、「Ｈ」のクロック選択信号がセレクタ５ｂに出力される。
【００６６】
セレクタ４ｂでは、テストデータ送信部２ｂからテストデータ及びデータ選択信号を入力すると、データ選択信号の値「Ｈ」に応じてテストデータを選択してフリップフロップ７ｂのデータ端子に出力する。セレクタ５ｂでは、テストデータ送信部２ｂからクロック選択信号を入力すると、クロック選択信号の値「Ｈ」に応じてＤＰＬＬ回路１７からの各種位相クロック信号を選択してフリップフロップ７ｂのクロック端子に出力する。
【００６７】
フリップフロップ７ｂでは、クロック端子から入力される各種位相クロック信号に同期して、データ端子から入力されるテストデータを、バッファ１１ｂを介してデータバス１２に出力し、半導体集積回路Ａへテストデータを転送する（ステップＳＴ１１）。
【００６８】
一方、半導体集積回路Ａのテストデータ受信制御部１８は、テスト制御部１ａから各種位相クロック信号に同期したテストを開始する旨のテスト開始指令を受信すると、各種位相クロック信号を選択させる所定の値のクロック選択信号をセレクタ６ａに出力する。ここでは、「Ｈ」のクロック選択信号がセレクタ６ａに出力される。
【００６９】
セレクタ６ａでは、テストデータ受信部３ａからクロック選択信号を入力すると、クロック選択信号の値「Ｈ」に応じてＤＰＬＬ回路２０からの各種位相クロック信号を選択してフリップフロップ８ａのクロック端子に出力する。これにより、フリップフロップ８ａでは、クロック端子から入力される各種位相クロック信号に同期して、半導体集積回路Ｂからのテストデータを、データバス１２及びバッファ１３ａを介してラッチし、データ入力バス１０ａ及びテストデータ受信部３ａに出力する。
【００７０】
半導体集積回路Ａのテストデータ受信部３ａでは、半導体集積回路Ｂからのテストデータをテストデータ受信制御部１８が入力する。テストデータ受信制御部１８は、半導体集積回路Ｂからのテストデータを障害判定部１９に逐次出力すると共に、テスト制御部１ａから入力した送信テストデータＢを障害判定部１９に出力する。
【００７１】
障害判定部１９では、半導体集積回路Ｂからのテストデータ及びテスト制御部１ａからの送信テストデータＢを入力すると、これらテストデータをビット単位で比較し、この比較結果に基づいて障害の有無を判定する（ステップＳＴ１２）。この判定処理については、上述した半導体集積回路Ｂの障害判定部１９による処理と同様である。障害判定部１９による判定結果は、テスト制御部１ａに出力される。
【００７２】
テスト制御部１ｂでは、テストクロックとして設定された各種位相のクロック信号による障害判定が全て実施されるまで、ステップＳＴ１１からステップＳＴ１２までの処理を繰り返す。ここでは、図５に示すクロック信号ａからクロック信号ｈまでのそれぞれに同期したテストが繰り返され、各種位相クロック信号における障害判定結果が、テスト制御部１ｂに出力される。
【００７３】
テスト制御部１ａ，１ｂは、以上のようにして、半導体集積回路Ａ，Ｂ間のデータラインの双方向のタイミング不良判定結果を取得すると、制御バス１４を介してＣＰＵ１５又は外部入出力端子に出力する。これにより、ＣＰＵ１５又は外部入出力端子に接続する不図示の外部検査装置が、判定結果が正常となるクロックがあったか否かを最終的に判定する（ステップＳＴ１３）。
【００７４】
ここで、いずれかの位相のクロック信号での判定で「正常」となる結果が得られた場合、ＣＰＵ１５又は外部入出力端子に接続する不図示の外部検査装置は、クロック源を制御する等して、当該「正常」と判定されたクロック信号を、通常のクロック信号ＣＬＫに設定する（ステップＳＴ１３−１）。これにより、タイミング不良を改善することが可能である。一方、「正常」となる判定結果が得られなかった場合は、現段階ではタイミング不良の改善が不可能である（ステップＳＴ１３−２）と判断し、以後さらに詳細な改善措置を講じる。
【００７５】
以上のように、この実施の形態１によれば、データバス１２を含む経路を介して半導体集積回路Ａ，Ｂのテスト回路Ａ，Ｂ間でテストデータを送受信し、テストデータを受信した半導体集積回路のテスト回路が、受信したテストデータと参照データである送信テストデータＡ又はＢとの比較結果に基づいて、データバスを含む経路の物理的故障及びデータ転送のタイミング不良を判定する。
特に、障害判定部１９が、半導体集積回路のテスト回路から受信したテストデータと参照データが一致するとデータ転送が正常であると判定し、受信したテストデータが、０又は１のデジタル値に固定されていれば、物理的故障である縮退故障が生じていると判定し、受信したテストデータが、０又は１のデジタル値に固定されておらず、かつ参照データと一致しない場合、論理的故障であるタイミング不良が生じていると判定する。
これにより、ロジックアナライザ等の試験機器を別途使用することなく、データバス１２における信号の開放や短絡等の物理的故障や、データ転送におけるタイミング不良を特定することができる。
【００７６】
また、この実施の形態１によれば、データ転送にタイミング不良が生じていると判定されると、位相の異なる複数のクロック信号の各々に同期して障害判定を行い、これら複数のクロック信号のうち、データ転送が正常であると判定されたクロック信号でタイミング不良を改善するので、タイミング不良を回路変更や追加なしに改善することができる。これにより、デバッグ期間の短縮化を図ることができる。
【図面の簡単な説明】
【００７７】
【図１】この発明の実施の形態１による半導体集積回路装置の構成を示す図である。
【図２】図１中のテストデータ送信部及びテストデータ受信部の構成を示す図である。
【図３】実施の形態１の半導体集積回路装置によるデータ転送障害の解析処理の流れを示すフローチャートである。
【図４】図２（ｂ）中の障害判定部による障害判定条件を示す図である。
【図５】各種位相クロック信号の例を示す図である。
【符号の説明】
【００７８】
１ａ，１ｂ  テスト制御部、２ａ，２ｂ  テストデータ送信部、３ａ，３ｂ  テストデータ受信部、４ａ，４ｂ，５ａ，５ｂ，６ａ，６ｂ  セレクタ、７ａ，７ｂ，８ａ，８ｂ  フリップフロップ、９ａ，９ｂ  データ出力ライン、１０ａ，１０ｂ  データ入力ライン、１１ａ，１１ｂ，１３ａ，１３ｂ  バッファ、１２  データバス、１４  制御バス、１５  ＣＰＵ、１６  テストデータ送信制御部、１７，２０  ＤＰＬＬ回路、１８  テストデータ受信制御部、１９  障害判定部。
【図１】
2007304808.tif 000003
【図２】
2007304808.tif 000004
【図３】
2007304808.tif 000005
【図４】
2007304808.tif 000006
【図５】
2007304808.tif 000007