(57)【特許請求の範囲】
【請求項１】
第１のクロックに従ってデータを保持する偶数番目のラッチと、第２のクロックに従ってデータを保持する奇数番目のラッチとを含むスキャンチェーンを備え、前記スキャンチェーンに含まれる複数のラッチの各々に保持されたデータをスキャンシフトする診断回路であって、
前記偶数番目のラッチに保持されたデータをスキャンシフトする第１の場合と前記奇数番目のラッチに保持されたデータをスキャンシフトする第２の場合とで、前記第１のクロックと前記第２のクロックとの位相関係を逆相に維持したまま、前記第１のクロックと前記第２のクロックの各々の位相を反転させるクロック制御回路と、
前記複数のラッチとは異なるラッチである予備ラッチと、
前記第１の場合と前記第２の場合とで、前記予備ラッチを前記スキャンチェーンに含めるか否かを第１信号に従って切り替える切り替え回路とを備え、
前記複数のラッチは、前記第１信号とは異なる第２信号に従って選択されたデータを保持する、診断回路。
【請求項２】
前記複数のラッチは、各々の前段に設けられたラッチの出力データを前記第２信号に従って保持する、請求項１に記載の診断回路。
【請求項３】
前記複数のラッチは、各々の前段に設けられたセレクタによって前記第２信号に従って選択されたデータを保持する、請求項１に記載の診断回路。
【請求項４】
前記セレクタは、前記第２信号が第１のレベルの場合、各々の前段に設けられたラッチの出力データではない入力データを選択し、前記第２信号が第２のレベルの場合、各々の前段に設けられたラッチの出力データを選択する、請求項３に記載の診断回路。
【請求項５】
前記クロック制御回路は、前記第１信号及び前記第２信号に従って、前記第１のクロックと前記第２のクロックの各々の位相を制御する、請求項１から４のいずれか一項に記載の診断回路。
【請求項６】
前記クロック制御回路は、前記第２信号が第１のレベルの場合、前記第１のクロックと前記第２のクロックを同位相で出力し、前記第２信号が第２のレベルの場合、前記第１のクロックと前記第２のクロックを逆位相で出力する、請求項１から５のいずれか一項に記載の診断回路。
【請求項７】
前記予備ラッチは、前記第１のクロックに従ってデータを保持し、
前記切り替え回路は、前記第１の場合と前記第２の場合とで、前記複数のラッチのうち最後段の１番目のラッチの出力データを、前記予備ラッチを経由して出力させるか否かを切り替える、請求項１から６のいずれか一項に記載の診断回路。
【請求項８】
前記切り替え回路は、前記第１の場合、前記１番目のラッチの出力データを、前記予備ラッチを経由せずに出力させ、前記第２の場合、前記１番目のラッチの出力データを前記予備ラッチを経由して出力させる、請求項７に記載の診断回路。
【請求項９】
第１のクロックに従ってデータを保持する偶数番目のラッチと、第２のクロックに従ってデータを保持する奇数番目のラッチとを含むスキャンチェーンを備え、前記スキャンチェーンに含まれる複数のラッチの各々に保持されたデータをスキャンシフトする診断回路の制御方法であって、
前記偶数番目のラッチに保持されたデータをスキャンシフトする第１の場合と前記奇数番目のラッチに保持されたデータをスキャンシフトする第２の場合とで、前記診断回路が有するクロック制御回路が、前記第１のクロックと前記第２のクロックとの位相関係を逆相に維持したまま、前記第１のクロックと前記第２のクロックの各々の位相を反転させ、
前記第１の場合と前記第２の場合とで、前記診断回路が有する切り替え回路が、前記複数のラッチとは異なるラッチである予備ラッチを前記スキャンチェーンに含めるか否かを第１信号に従って切り替え、
前記複数のラッチは、前記第１信号とは異なる第２信号に従って選択されたデータを保持する、診断回路の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、診断回路及び診断回路の制御方法に関する。
【背景技術】
【０００２】
半導体集積回路の故障診断技術として、バウンダリスキャンチェーン内に挿入された複数のフリップフロップによって故障を見つけるバウンダリスキャンが知られている。ここで、一つのフリップフロップの回路に対して、二つのデータを記憶する技術がある。例えば、第１のラッチ部と第２のラッチ部に互いに逆位相の信号を入力することによって、第１のラッチ部と第２のラッチ部との組み合わせを、一つのスキャンフリップフロップ回路として使用可能となる（例えば、特許文献１参照）。同様に、二つのパルスラッチを一つのフリップフロップ回路として使用する技術がある（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−３５５６号公報
【特許文献２】特開２００３−２５５０２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術では、スキャンシフト時に、一方のラッチのデータによって他方のラッチのデータが上書きされてしまうため、他方のラッチにスキャンシフト前に記憶されていたデータを正しく読み出すことができない。その結果、他方のラッチにスキャンシフト前に記憶されていたデータが正しく書き込まれていたのか否かを判別することが困難となる。
【０００５】
そこで、本開示では、スキャンチェーン内の各ラッチに記憶されたデータを正しく読み出すことを可能にする診断回路及び診断回路の制御方法が提供される。
【課題を解決するための手段】
【０００６】
本開示の一態様では、
第１のクロックに従ってデータを保持する偶数番目のラッチと、第２のクロックに従ってデータを保持する奇数番目のラッチとを含むスキャンチェーンを備え、前記スキャンチェーンに含まれる複数のラッチの各々に保持されたデータをスキャンシフトする診断回路であって、
前記偶数番目のラッチに保持されたデータをスキャンシフトする第１の場合と前記奇数番目のラッチに保持されたデータをスキャンシフトする第２の場合とで、前記第１のクロックと前記第２のクロックとの位相関係を逆相に維持したまま、前記第１のクロックと前記第２のクロックの各々の位相を反転させるクロック制御回路と、
前記複数のラッチとは異なるラッチである予備ラッチと、
前記第１の場合と前記第２の場合とで、前記予備ラッチを前記スキャンチェーンに含めるか否かを第１信号に従って切り替える切り替え回路とを備え、
前記複数のラッチは、前記第１信号とは異なる第２信号に従って選択されたデータを保持する、診断回路が提供される。
【０００７】
また、本開示の一態様では、
第１のクロックに従ってデータを保持する偶数番目のラッチと、第２のクロックに従ってデータを保持する奇数番目のラッチとを含むスキャンチェーンを備え、前記スキャンチェーンに含まれる複数のラッチの各々に保持されたデータをスキャンシフトする診断回路の制御方法であって、
前記偶数番目のラッチに保持されたデータをスキャンシフトする第１の場合と前記奇数番目のラッチに保持されたデータをスキャンシフトする第２の場合とで、前記診断回路が有するクロック制御回路が、前記第１のクロックと前記第２のクロックとの位相関係を逆相に維持したまま、前記第１のクロックと前記第２のクロックの各々の位相を反転させ、
前記第１の場合と前記第２の場合とで、前記診断回路が有する切り替え回路が、前記複数のラッチとは異なるラッチである予備ラッチを前記スキャンチェーンに含めるか否かを第１信号に従って切り替え、
前記複数のラッチは、前記第１信号とは異なる第２信号に従って選択されたデータを保持する、診断回路の制御方法が提供される。
【発明の効果】
【０００８】
本開示に係る診断回路又は診断回路の制御方法によれば、スキャンチェーン内の各ラッチに記憶されたデータを正しく読み出すことができる。
【図面の簡単な説明】
【０００９】
【図１】本開示に係る診断回路の構成の一例を示す図である。
【図２】クロック制御回路の構成の一例を示す図である。
【図３】偶数番目のラッチに記憶されたデータをスキャンシフトする場合の動作の一例を示すタイムチャートである。
【図４】奇数番目のラッチに記憶されたデータをスキャンシフトする場合の動作の一例を示すタイムチャートである。
【図５】集積回路の構成の一例を示す図である。
【図６】複数のスキャンフリップフロップが接続されたスキャンチェーンの構成の一例を示す図である。
【図７】複数のスキャンフリップフロップが接続されたスキャンチェーンの動作の一例を示すタイムチャートである。
【図８】レジスタファイルの構成の一例を示す図である。
【図９】本開示に係る診断回路の制御方法の一例を示す図である。
【図１０】本開示に係る診断回路の構成の他の一例を示す図である。
【発明を実施するための形態】
【００１０】
以下、本開示に係る診断回路の実施形態を図面を参照して説明する。
【００１１】
図１は、本開示に係る診断回路の構成の一例を示す図である。図１（ａ）は、スキャンチェーン内で接続された複数のラッチを備える診断回路の回路構成を示す図である。図１（ｂ）は、複数のラッチのうち偶数番目のラッチに記憶されたデータをスキャンシフトする場合の動作イメージ図である。図１（ｃ）は、複数のラッチのうち奇数番目のラッチに記憶されたデータをスキャンシフトする場合の動作イメージ図である。図１（ｂ）及び図１（ｃ）において、Ｍは、マスターラッチを表し、Ｓは、スレーブラッチを表す。
【００１２】
図１に示される診断回路１１は、複数のラッチの各々に記憶されたデータをスキャンシフトする診断回路の一例である。診断回路１１は、複数（図示の場合、４つ）のラッチ１〜４と、ラッチ１〜４と同じ個数のセレクタ２１〜２４と、予備ラッチ４１と、セレクタ５１とを有する。
【００１３】
ラッチ１〜４及び予備ラッチ４１は、それぞれ、入力端子Ｄ、出力端子Ｍ及びクロック端子ＣＫを有する回路である。ラッチ１〜４及び予備ラッチ４１の具体例として、Ｄラッチが挙げられる。
【００１４】
本実施形態では、各ラッチ１〜４及び予備ラッチ４１は、クロック端子ＣＫに入力されるクロックのレベルがハイレベルからローレベルに遷移すると、入力端子Ｄに入力されるデータを書き込む。そして、各ラッチ１〜４ラッチ及び予備ラッチ４１は、クロック端子ＣＫに入力されるクロックのレベルがローレベルである期間、入力端子Ｄに入力されるデータを書き込み、入力端子Ｄに入力されるデータをそのまま出力端子Ｍから出力する。一方、各ラッチ１〜４及び予備ラッチ４１は、クロック端子ＣＫに入力されるクロックのレベルがローレベルからハイレベルに遷移すると、その遷移時点で入力端子Ｄに入力されるデータ（又は、その遷移時点で出力端子Ｍから出力されるデータ）を保持する。そして、各ラッチ１〜４及び予備ラッチ４１は、クロック端子ＣＫに入力されるクロックのレベルがハイレベルである期間、入力端子Ｄに入力されるデータの論理レベルにかかわらず、保持したデータを出力端子Ｍから継続的に出力する。
【００１５】
複数のラッチ１〜４は、各々の前段に設けられたセレクタ２１〜２４によって選択されたデータをラッチする。セレクタ２１〜２４は、第１の選択信号の一例であるローレベルの選択信号ＳＥ（ＳＥ＝０）が入力された場合には、各々の前段に設けられたラッチの出力データではない入力データＡ１〜Ａ４を選択する。一方、セレクタ２１〜２４は、第２の選択信号の一例であるハイレベルの選択信号ＳＥ（ＳＥ＝１）が入力された場合には、各々の前段に設けられたラッチの出力データを選択する。
【００１６】
選択信号ＳＥは、診断回路１１に入力される信号の一つである。診断回路１１の動作モードは、選択信号ＳＥに応じて、ラッチモードとスキャンモードとのいずれか一方に設定される。ラッチモードは、ラッチ１〜４の各々を、データを記憶する記憶素子として機能させるモードを表す。スキャンモードは、スキャンテスト用のデータをラッチ１〜４を含むスキャンチェーン１０に通すことにより、ラッチ１〜４のスキャンテストを行うモードを表す。
【００１７】
選択信号ＳＥのレベルが第１のレベル（例えば、ローレベル“０”、ＳＥ＝０）である場合、診断回路１１の動作モードは、ラッチモードに設定される。一方、選択信号ＳＥのレベルが第２のレベル（例えば、ハイレベル“１”、ＳＥ＝１）である場合、診断回路１１の動作モードは、スキャンモードに設定される。
【００１８】
セレクタ２４は、ラッチ４の前段に設けられている。セレクタ２４は、選択信号ＳＥに基づいて、スキャンイン端子ＳＩから入力されるスキャンインデータと第１の入力データＡ１とのいずれか一方を選択し、選択した方の信号をラッチ４の入力端子Ｄに出力する。セレクタ２４は、選択信号ＳＥのレベルがラッチモードの選択を表すローレベルである場合（ＳＥ＝０）、入力データＡ１を選択してラッチ４の入力端子Ｄに出力する。一方、セレクタ２４は、選択信号ＳＥのレベルがスキャンモードの選択を表すハイレベルである場合（ＳＥ＝１）、スキャンイン端子ＳＩから入力されるスキャンインデータを選択してラッチ４の入力端子Ｄに出力する。
【００１９】
ラッチ４は、セレクタ２４の出力データをクロックＣＬＫ０に従ってラッチする。ラッチ４は、そのラッチしたデータをクロックＣＬＫ０に同期して出力端子Ｍから出力データＭ１として出力する。ラッチ４は、スキャンアウト端子ＳＯ側から数えて４番目のラッチを表す。
【００２０】
セレクタ２３は、ラッチ３の前段に設けられている。セレクタ２３は、選択信号ＳＥに基づいて、ラッチ４の出力データＭ１と第２の入力データＡ２とのいずれか一方を選択し、選択した方の信号をラッチ３の入力端子Ｄに出力する。セレクタ２３は、選択信号ＳＥのレベルがラッチモードの選択を表すローレベルである場合（ＳＥ＝０）、入力データＡ２を選択してラッチ３の入力端子Ｄに出力する。一方、セレクタ２３は、選択信号ＳＥのレベルがスキャンモードの選択を表すハイレベルである場合（ＳＥ＝１）、ラッチ４の出力データＭ１を選択してラッチ３の入力端子Ｄに出力する。
【００２１】
ラッチ３は、セレクタ２３の出力データをクロックＣＬＫ１に従ってラッチする。ラッチ３は、そのラッチしたデータをクロックＣＬＫ１に同期して出力端子Ｍから出力データＭ２として出力する。ラッチ３は、スキャンアウト端子ＳＯ側から数えて３番目のラッチを表す。
【００２２】
セレクタ２２は、ラッチ２の前段に設けられている。セレクタ２２は、選択信号ＳＥに基づいて、ラッチ３の出力データＭ２と第３の入力データＡ３とのいずれか一方を選択し、選択した方の信号をラッチ２の入力端子Ｄに出力する。セレクタ２２は、選択信号ＳＥのレベルがラッチモードの選択を表すローレベルである場合（ＳＥ＝０）、入力データＡ３を選択してラッチ２の入力端子Ｄに出力する。一方、セレクタ２２は、選択信号ＳＥのレベルがスキャンモードの選択を表すハイレベルである場合（ＳＥ＝１）、ラッチ３の出力データＭ２を選択してラッチ２の入力端子Ｄに出力する。
【００２３】
ラッチ２は、セレクタ２２の出力データをクロックＣＬＫ０に従ってラッチする。ラッチ２は、そのラッチしたデータをクロックＣＬＫ０に同期して出力端子Ｍから出力データＭ３として出力する。ラッチ２は、スキャンアウト端子ＳＯ側から数えて２番目のラッチを表す。
【００２４】
セレクタ２１は、ラッチ１の前段に設けられている。セレクタ２１は、選択信号ＳＥに基づいて、ラッチ２の出力データＭ３と第４の入力データＡ４とのいずれか一方を選択し、選択した方の信号をラッチ１の入力端子Ｄに出力する。セレクタ２１は、選択信号ＳＥのレベルがラッチモードの選択を表すローレベルである場合（ＳＥ＝０）、入力データＡ４を選択してラッチ１の入力端子Ｄに出力する。一方、セレクタ２１は、選択信号ＳＥのレベルがスキャンモードの選択を表すハイレベルである場合（ＳＥ＝１）、ラッチ２の出力データＭ３を選択してラッチ１の入力端子Ｄに出力する。
【００２５】
ラッチ１は、セレクタ２１の出力データをクロックＣＬＫ１に従ってラッチする。ラッチ１は、そのラッチしたデータをクロックＣＬＫ１に同期して出力端子Ｍから出力データＭ４として出力する。ラッチ１は、スキャンアウト端子ＳＯ側から数えて１番目のラッチを表す。
【００２６】
仮に、スキャンチェーン１０内のラッチ１〜４が全て同位相のクロックに従って動作すると、スキャンシフトを行った場合（スキャン動作時）、データがラッチ４からラッチ１へレース（race）してしまう。つまり、同じデータがラッチ１〜４全てにクロックの１パルスにより一度に書き込まれてしまう。それを防ぐため、スキャンモードが選択されているときには、スキャンチェーン１０内の隣り合うラッチにそれぞれ入力されるクロックが互いに逆位相に設定される。つまり、スキャンモードが選択されているときには、クロックＣＬＫ０とクロックＣＬＫ１との位相関係は逆相である。
【００２７】
診断回路１１は、複数のラッチ１〜４とは別の予備ラッチ４１を備える。予備ラッチ４１は、ラッチ１の出力データＭ４をクロックＣＬＫ０に従ってラッチする回路である。予備ラッチ４１は、そのラッチしたデータをクロックＣＬＫ０に同期して出力端子Ｍから出力する。
【００２８】
セレクタ５１は、偶数番目のラッチ２，４に記憶されたデータをスキャンシフトする場合と、奇数番目のラッチ１，３に記憶されたデータをスキャンシフトする場合とで、予備ラッチ４１をスキャンチェーン１０内に含めるか否かを切り替える。セレクタ５１は、切り替え回路の一例である。
【００２９】
偶数番目のラッチ２，４に記憶されたデータをスキャンシフトする場合、スキャン選択信号ＯＤのレベルは、ローレベルとなる（ＯＤ＝０）。一方、奇数番目のラッチ１，３に記憶されたデータをスキャンシフトする場合、スキャン選択信号ＯＤのレベルは、ハイレベルとなる（ＯＤ＝１）。スキャン選択信号ＯＤは、診断回路１１に入力される信号の一つである。
【００３０】
セレクタ５１は、ＯＤ＝０の場合とＯＤ＝１の場合とで、ラッチ１〜４のうち最後段の１番目のラッチ１の出力データＭ４を、予備ラッチ４１を経由してスキャンアウトさせるか否かを切り替える。セレクタ５１は、ＯＤ＝０の場合、１番目のラッチ１の出力データＭ４を、予備ラッチ４１を経由せずにスキャンアウトさせる。つまり、ＯＤ＝０の場合、セレクタ５１は、出力データＭ４を予備ラッチ４１に通さずにスキャンアウト端子ＳＯからスキャンアウトデータとしてスキャンアウトさせる。一方、セレクタ５１は、ＯＤ＝１の場合、１番目のラッチ１の出力データＭ４を、予備ラッチ４１を経由してスキャンアウトさせる。つまり、ＯＤ＝１の場合、セレクタ５１は、出力データＭ４を予備ラッチ４１に通してスキャンアウト端子ＳＯからスキャンアウトデータとしてスキャンアウトさせる。
【００３１】
診断回路１１は、クロックＣＬＫ１とクロックＣＬＫ０の各々の位相を制御するクロック制御回路を備える。
【００３２】
図２は、クロック制御回路の構成の一例を示す図である。図２に示されるクロック制御回路３０は、クロックＣＬＫ１とクロックＣＬＫ０の各々の位相を制御する。クロック制御回路３０は、セレクタ３１，３２と、インバータ３３，３４とを有する。
【００３３】
インバータ３３は、診断回路１１に入力される信号の一つであるクロックＣＬＫの論理を反転させた信号を出力する。インバータ３４は、セレクタ３１から出力された信号の論理を反転させた信号を出力する。
【００３４】
セレクタ３１は、スキャン選択信号ＯＤのレベルがローレベルである場合（ＯＤ＝０）、クロックＣＬＫを選択し、クロックＣＬＫをクロックＣＬＫ０として出力する。一方、セレクタ３１は、スキャン選択信号ＯＤのレベルがハイレベルである場合（ＯＤ＝１）、インバータ３３の出力信号を選択し、インバータ３３の出力信号をクロックＣＬＫ０として出力する。
【００３５】
セレクタ３２は、選択信号ＳＥのレベルがラッチモードの選択を表すローレベルである場合（ＳＥ＝０）、セレクタ３１の出力信号を選択し、セレクタ３１の出力信号をクロックＣＬＫ１として出力する。一方、セレクタ３２は、選択信号ＳＥのレベルがスキャンモードの選択を表すハイレベルである場合（ＳＥ＝１）、インバータ３４の出力信号を選択し、インバータ３４の出力信号をクロックＣＬＫ１として出力する。
【００３６】
つまり、クロック制御回路３０は、ラッチモードが選択されている場合（ＳＥ＝０）、位相が互いに同一のクロックＣＬＫ０とクロックＣＬＫ１とを出力する。一方、クロック制御回路３０は、スキャンモードが選択され且つ偶数番目のラッチ２，４に記憶されたデータをスキャンシフトする場合（ＳＥ＝１且つＯＤ＝０）、クロックＣＬＫ０とクロックＣＬＫ１との位相関係を逆位相にする。他方、クロック制御回路３０は、スキャンモードが選択され且つ奇数番目のラッチ１，３に記憶されたデータをスキャンシフトする場合（ＳＥ＝１且つＯＤ＝１）、クロックＣＬＫ０とクロックＣＬＫ１との位相関係を逆位相にする。
【００３７】
このように、クロック制御回路３０は、ＯＤ＝０とＯＤ＝１とで、クロックＣＬＫ０とクロックＣＬＫ２との位相関係を逆相に維持したまま、クロックＣＬＫ１とクロックＣＬＫ０の各々の位相を反転させることが可能である。
【００３８】
次に、診断回路１１の動作例について説明する。
【００３９】
図３は、偶数番目のラッチをスキャンシフトする場合の診断回路の動作の一例を示すタイムチャートである。図３は、図１に示したスキャンアウト端子ＳＯから数えて偶数番目のラッチ２，４の各々に記憶されたデータをスキャンアウト端子ＳＯから読み出す場合の動作例を示す。図３では、最初に、ラッチ４，３，２，１に、それぞれ、データＡ，Ｂ，Ｃ，Ｄが記憶されているとする。図３が示す動作を、図１を参照して説明する。
【００４０】
選択信号ＳＥのレベルがスキャンモードの選択を表すハイレベルに遷移したタイミングｔ１では、クロックＣＬＫ０がハイレベルである。そのため、偶数番目のラッチ２，４は、入力端子Ｄに入力されるデータの論理レベルにかかわらず、保持したデータを出力端子Ｍから出力する。一方、タイミングｔ１でクロックＣＬＫ１はローレベルであるので、奇数番目のラッチ１，３は、入力端子Ｄに入力されるデータを書き込み、入力端子Ｄに入力されるデータをそのまま出力端子Ｍから出力する。そのため、タイミングｔ１では、ラッチ４に予め記憶されたデータＡは、ラッチ３に書き込まれ、ラッチ２に予め記憶されたデータＣは、ラッチ１に書き込まれる。したがって、ラッチ２に予め記憶されたデータＣは、ラッチ１及びＯＤ＝０が入力されるセレクタ５１を介して、スキャンアウト端子ＳＯから出力される。
【００４１】
次に、クロックＣＬＫ０がローレベルにタイミングｔ２で遷移するので、偶数番目のラッチ２，４は、入力端子Ｄに入力されるデータを書き込み、入力端子Ｄに入力されるデータをそのまま出力端子Ｍから出力する。一方、クロックＣＬＫ１がハイレベルにタイミングｔ２で遷移するので、奇数番目のラッチ１，３は、入力端子Ｄに入力されるデータの論理レベルにかかわらず、保持したデータを出力端子Ｍから出力する。そのため、ラッチ３にタイミングｔ１で書き込まれたデータＡは、ラッチ２に書き込まれる。
【００４２】
次に、クロックＣＬＫ１がローレベルにタイミングｔ３で遷移するので、奇数番目のラッチ１は、入力端子Ｄに入力されるデータを書き込み、入力端子Ｄに入力されるデータをそのまま出力端子Ｍから出力する。一方、クロックＣＬＫ０がハイレベルにタイミングｔ３で遷移するので、偶数番目のラッチ２は、入力端子Ｄに入力されるデータの論理レベルにかかわらず、保持したデータを出力端子Ｍから出力する。そのため、ラッチ２にタイミングｔ２で書き込まれたデータＡは、ラッチ１に書き込まれる。したがって、ラッチ４に予め記憶されたデータＡは、ラッチ１及びＯＤ＝０が入力されるセレクタ５１を介して、スキャンアウト端子ＳＯから出力される。
【００４３】
つまり、本実施形態に係る診断回路によれば、ラッチ２，４のそれぞれに予め記憶されていたデータＣ，Ａを正しくスキャンアウト端子ＳＯから読み出すことが可能となる。
【００４４】
図４は、奇数番目のラッチをスキャンシフトする場合の診断回路の動作の一例を示すタイムチャートである。図４は、図１に示したスキャンアウト端子ＳＯから数えて奇数番目のラッチ１，３の各々に記憶されたデータをスキャンアウト端子ＳＯから読み出す場合の動作例を示す。図４でも、最初に、ラッチ４，３，２，１に、それぞれ、データＡ，Ｂ，Ｃ，Ｄが記憶されているとする。図４が示す動作を、図１を参照して説明する。
【００４５】
選択信号ＳＥのレベルがスキャンモードの選択を表すハイレベルに遷移したタイミングｔ１１では、クロックＣＬＫ０がローレベルである。そのため、偶数番目のラッチ２，４は、入力端子Ｄに入力されるデータを書き込み、入力端子Ｄに入力されるデータをそのまま出力端子Ｍから出力する。一方、タイミングｔ１１でクロックＣＬＫ１はハイレベルであるので、奇数番目のラッチ１，３は、入力端子Ｄに入力されるデータの論理レベルにかかわらず、保持したデータを出力端子Ｍから出力する。そのため、タイミングｔ１１では、ラッチ３に予め記憶されたデータＢは、ラッチ２に書き込まれ、ラッチ１に予め記憶されたデータＤは、予備ラッチ４１に書き込まれる。クロックＣＬＫ０がローレベルであるので、予備ラッチ４１は、入力端子Ｄに入力されるデータを書き込み、入力端子Ｄに入力されるデータをそのまま出力端子Ｍから出力する。したがって、ラッチ１に予め記憶されたデータＤは、予備ラッチ４１及びＯＤ＝１が入力されるセレクタ５１を介して、スキャンアウト端子ＳＯから出力される。
【００４６】
次に、クロックＣＬＫ０がハイレベルにタイミングｔ１２で遷移するので、偶数番目のラッチ２，４は、入力端子Ｄに入力されるデータの論理レベルにかかわらず、保持したデータを出力端子Ｍから出力する。一方、クロックＣＬＫ１がローレベルにタイミングｔ１２で遷移するので、奇数番目のラッチ１，３は、入力端子Ｄに入力されるデータを書き込み、入力端子Ｄに入力されるデータをそのまま出力端子Ｍから出力する。そのため、ラッチ２にタイミングｔ１１で書き込まれたデータＢは、ラッチ１に書き込まれる。
【００４７】
次に、クロックＣＬＫ１がハイレベルにタイミングｔ１３で遷移するので、奇数番目のラッチ１は、入力端子Ｄに入力されるデータの論理レベルにかかわらず、保持したデータを出力端子Ｍから出力する。一方、クロックＣＬＫ０がローレベルにタイミングｔ１３で遷移するので、予備ラッチ４１は、入力端子Ｄに入力されるデータを書き込み、入力端子Ｄに入力されるデータをそのまま出力端子Ｍから出力する。そのため、ラッチ１にタイミングｔ１２で書き込まれたデータＢは、予備ラッチ４１に書き込まれる。したがって、ラッチ３に予め記憶されたデータＢは、予備ラッチ４１及びＯＤ＝１が入力されるセレクタ５１を介して、スキャンアウト端子ＳＯから出力される。
【００４８】
つまり、本実施形態に係る診断回路１１によれば、ラッチ１，３のそれぞれに予め記憶されていたデータＤ，Ｂを正しくスキャンアウト端子ＳＯから読み出すことが可能となる。
【００４９】
このように、診断回路１１は、偶数番目のラッチに記憶されたデータと奇数番目のラッチに記憶されたデータとを２回に分けてスキャンシフトすることで、ラッチ１〜４に予め記憶されたデータをスキャンアウト端子ＳＯから正しくスキャンアウトできる。つまり、図１（ｂ）のＯＤ＝０のとき、奇数番目のラッチに予め記憶されたデータが、その前段の偶数番目のラッチのデータでスキャンシフト時に上書きされても、図１（ｃ）のＯＤ＝１のとき、奇数番目のラッチに予め記憶されたデータの正しい読み出しができる。したがって、スキャンチェーン内の各ラッチに記憶されたデータを正しく読み出すことができる。
【００５０】
図５は、集積回路の構成の一例を示す図である。図５に示される集積回路１００は、レジスタファイル８０と、スキャンフリップフロップ（ＳＦＦ）６１〜６４と、スキャンフリップフロップ（ＳＦＦ）７１〜７４とを備える。また、集積回路１００は、複数の外部接続端子を備える。これらの外部接続端子には、集積回路１００及び／又はレジスタファイル８０をスキャンテストする不図示の検査装置が接続される。検査装置は、これらの外部接続端子を介して、テストデータイン信号ＴＤＩ、クロックＣＬＫ、選択信号ＳＥ及びスキャン選択信号ＯＤを入力する。また、検査装置は、外部接続端子を介して、テストデータアウト信号ＴＤＯを取得する。
【００５１】
テストデータイン信号ＴＤＩは、ＳＦＦ６１〜６４を含むバウンダリスキャンチェーンにシフトインされるデータである。テストデータアウト信号ＴＤＯは、ＳＦＦ７１〜７４を含むバウンダリスキャンチェーンからシフトアウトされるデータである。
【００５２】
テストデータイン信号ＴＤＩは、スキャンイン信号として、ＳＦＦ６４に入力され、ＳＦＦ６１から出力されるスキャンアウトデータは、レジスタファイル８０のスキャンイン端子に入力される。レジスタファイル８０のスキャンアウト端子から出力されるスキャンアウトデータは、ＳＦＦ７４に入力され、ＳＦＦ７１から出力されるスキャンアウトデータは、テストデータアウト信号ＴＤＯとして出力される。
【００５３】
レジスタファイル８０内の記憶素子部は、図１と同じ構成を有する。レジスタファイル８０の前後段に接続されているＳＦＦ６１〜６４，７１〜７４は、図６と同じ構成を有する。図５の前段のＳＦＦ６１〜６４は、それぞれ、図６のＳＦＦ１０１〜１０４に対応する。図５の後段のＳＦＦ７１〜７４は、それぞれ、図６のＳＦＦ１０１〜１０４に対応する。
【００５４】
図６は、複数のスキャンフリップフロップが接続されたスキャンチェーンの構成の一例を示す図である。図６（ａ）は、複数のＳＦＦが接続されたバウンダリスキャンチェーンの回路構成を示す図である。図６（ｂ）は、複数のＳＦＦの各々に記憶されたデータをスキャンシフトする場合の動作イメージ図である。図６（ｂ）において、Ｍは、マスターラッチを表し、Ｓは、スレーブラッチを表す。
【００５５】
図６に示されるスキャンチェーンは、複数（図示の場合、４つ）のＳＦＦ１０１〜１０４と、ＳＦＦ１０１〜１０４と同じ個数のセレクタ１２１〜１２４とを有する。
【００５６】
ＳＦＦ１０１〜１０４は、それぞれ、入力端子Ｄ、出力端子Ｍ及びクロック端子ＣＫを有する回路である。ＳＦＦ１０１〜１０４の具体例として、Ｄフリップフロップが挙げられる。Ｄフリップフロップは、マスターラッチとスレーブラッチとの２個のＤラッチを接続した構造を有する。
【００５７】
複数のＳＦＦ１０１〜１０４は、各々の前段に設けられたセレクタ１２１〜１２４によって選択されたデータをラッチする。セレクタ１２１〜１２４は、第１の選択信号の一例であるローレベルの選択信号ＳＥ（ＳＥ＝０）が入力された場合には、各々の前段に設けられたラッチの出力データではない入力データＢ１〜Ｂ４を選択する。一方、セレクタ１２１〜１２４は、第２の選択信号の一例であるハイレベルの選択信号ＳＥ（ＳＥ＝１）が入力された場合には、各々の前段に設けられたラッチの出力データを選択する。
【００５８】
ＳＦＦ１０４は、セレクタ１２４の出力データをクロックＣＬＫに従ってラッチする。ＳＦＦ１０４は、そのラッチしたデータをクロックＣＬＫに同期して出力端子Ｍから出力データＱ１として出力する。同様に、ＳＦＦ１０３，１０２，１０１は、各自がラッチしたデータをクロックＣＬＫに同期して出力端子Ｍから出力データＱ２，Ｑ３，Ｑ４として出力する。
【００５９】
図７は、複数のスキャンフリップフロップが接続されたスキャンチェーンの動作の一例を示すタイムチャートである。図７では、最初に、ＳＦＦ１０４，１０３，１０２，１０１に、それぞれ、データＡ，Ｂ，Ｃ，Ｄが記憶されているとする。周知の通り、図６が示すスキャンチェーンは、クロックＣＬＫに従って、データＤ，Ｃ，Ｂ，Ａをこの順にスキャンアウトする。
【００６０】
図８は、レジスタファイルの構成の一例を示す図である。レジスタファイル８０は、ラッチ部８１と、リード部８２と、ライト部８３と、クロック制御回路３０とを備える。
【００６１】
ラッチ部８１は、（ｎ＋１）ビット×（ｍ＋１）ワードの構成を有する記憶部の一例である。リード部８２は、リードアクセス信号ＲＡがアクティブのとき、ラッチ部８１に記憶されたデータを読み出してリード端子ＲＤに出力する。リード部８２は、例えば、（ｍ＋１）対１のマルチプレクサである。ライト部８３は、（ｍ＋１）個のワードのうちの一つのワードにワードデータＷＤを書き込み可能にする。クロック制御回路３０は、図２に示した構成を有する。
【００６２】
ラッチ部８１は、ラッチの数が異なるが図１と同じ構成を有し、（ｎ＋１）×（ｍ＋１）個のラッチがスキャンチェーン内に含まれる構成を有する。ライト部８３は、（ｍ＋１）個のデコード回路信号ＷＡとクロックＣＬＫ０とクロックＣＬＫ１との論理積を演算する回路である。この回路構成を図９のフローチャートのように動作させることで、リード部８２が故障したか、ライト部８３が故障したか判別可能となる。
【００６３】
図９は、本開示に係る診断回路の制御方法の一例を示す図である。検査装置は、ＳＥ＝１及びＯＤ＝０に設定し、クロックＣＬＫの入力によって、レジスタファイル８０の前段のＳＦＦ６１〜６４に対してレジスタファイル８０内に書き込みたい値をテストデータイン信号ＴＤＩとして設定する（ステップＳ１１〜Ｓ１５）。
【００６４】
検査装置は、ＳＥ＝０に設定し（ステップＳ２１）、クロックＣＬＫを１回動作させる（ステップＳ２３）。この時点でレジスタファイル８０内のラッチ部８１に、ステップＳ１１で設定した値が書き込まれる。更に、検査装置は、前段ＳＦＦ６１〜６４に対して同じ設定値を入れて（ステップＳ２５Ｎｏ，ステップＳ１１）、クロックＣＬＫを１回動作させる（ステップＳ２３）。この時点でレジスタファイル８０から読み出された値が、レジスタファイル８０の後段のＳＦＦ７１〜７４に書き込まれ、更にレジスタファイル８０内のラッチ部８１に対しても同じ値が書き込まれる（ステップＳ２５Ｙｅｓ）。
【００６５】
検査装置は、ＳＥ＝１に設定する（ステップＳ３１）。検査装置は、偶数番目のラッチ２，４をスキャンテストする場合、ＯＤ＝０に設定して、必要なクロックＣＬＫ０，ＣＬＫ１を入力してスキャンシフトを行う（ステップＳ３３Ｙｅｓ，Ｓ３７）。一方、検査装置は、奇数番目のラッチ１，３をスキャンテストする場合、ＯＤ＝１に設定して、必要なクロックＣＬＫ０，ＣＬＫ１を入力してスキャンシフトを行う（ステップＳ３３Ｎｏ，Ｓ３５，Ｓ３７）。検査装置は、テストデータアウト信号ＴＤＯを期待値と比較する（ステップＳ３９）。
【００６６】
検査装置は、その比較結果に基づいて、レジスタファイル８０内のラッチ１〜４でエラー（故障）があるか否かを判定し（ステップＳ４１）、ラッチ１〜４でエラーが無いと判定した場合、ＳＦＦでエラーがあるか否かを判定する（ステップＳ４３）。検査装置は、ＳＦＦでエラーがないと判定した場合、集積回路１００は故障なしと判定し（ステップＳ４５）、ＳＦＦでエラーがあると判定した場合、リード部８２による読み出しでエラーがあると判定する。
【００６７】
一方、検査装置は、その比較結果に基づいて、レジスタファイル８０内のラッチ１〜４でエラー（故障）があるか否かを判定し（ステップＳ４１）、ラッチ１〜４でエラーがあると判定した場合、ステップＳ４９の処理を実行する。検査装置は、ステップＳ４９で、ラッチ１〜４でエラーした箇所以外のエラーがあるか否かを判定する。検査装置は、ラッチ１〜４でエラーした箇所以外のエラーがないと判定した場合、ライト部８３による書き込みでエラーがあると判定する（ステップＳ５１）。一方、検査装置は、ラッチ１〜４でエラーした箇所以外のエラーがあると判定した場合、ライト部８３による書き込みとリード部８２による読み込みの両方でエラーがあると判定する（ステップＳ５５）。
【００６８】
このように、検査装置は、レジスタファイル８０の書き込み時に故障しているのか、読み出し時に故障しているのか判別できる。また、ライト部とリード部の故障が切り分けられるようになるので、リメークまでの時間を短くすることになり、コスト削減が可能となる。また、バウンダリスキャンでデータの設定が不要な記憶素子に、ＳＦＦではなく単なるラッチが使用されるので、サイズや電力の削減効果がある。
【００６９】
図１０は、本開示に係る診断回路の構成の他の一例を示す図である。図１０（ａ）は、スキャンチェーン内で接続された複数のラッチを備える診断回路の回路構成を示す図である。図１０（ｂ）は、複数のラッチのうち偶数番目のラッチに記憶されたデータをスキャンシフトする場合の動作イメージ図である。図１０（ｃ）は、複数のラッチのうち奇数番目のラッチに記憶されたデータをスキャンシフトする場合の動作イメージ図である。図１０（ｂ）及び図１０（ｃ）において、Ｍは、マスターラッチを表し、Ｓは、スレーブラッチを表す。
【００７０】
図１０に示されるように、診断回路１２は、最後段のラッチ１の後段に設けられた予備ラッチ４１及びセレクタ５１と、最前段のラッチ４の前段に設けられた予備ラッチ４２及びセレクタ５２とを備える。
【００７１】
予備ラッチ４２は、スキャンイン端子から入力されるスキャンインデータをクロックＣＬＫ１に従ってラッチする回路である。予備ラッチ４２は、そのラッチしたデータをクロックＣＬＫ１に同期して出力端子Ｍから出力する。セレクタ５２は、偶数番目のラッチ２，４に記憶されたデータをスキャンシフトする場合と、奇数番目のラッチ１，３に記憶されたデータをスキャンシフトする場合とで、予備ラッチ４２をスキャンチェーン１０内に含めるか否かを切り替える。セレクタ５２は、第２の切り替え回路の一例である。
【００７２】
このような構成によっても、図１と同様に、ラッチ１〜４に予め記憶されたデータをスキャンアウト端子ＳＯから正しくスキャンアウトすることができる。
【００７３】
以上、診断回路及び診断回路の制御方法を実施形態により説明したが、本発明は上記実施形態に限定されるものではない。他の実施形態の一部又は全部との組み合わせや置換などの種々の変形及び改良が、本発明の範囲内で可能である。
【００７４】
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）
第１のクロックに従ってデータを保持する偶数番目のラッチと、第２のクロックに従ってデータを保持する奇数番目のラッチとを含むスキャンチェーンを備え、前記スキャンチェーンに含まれる複数のラッチの各々に保持されたデータをスキャンシフトする診断回路であって、
前記偶数番目のラッチに保持されたデータをスキャンシフトする第１の場合と前記奇数番目のラッチに保持されたデータをスキャンシフトする第２の場合とで、前記第１のクロックと前記第２のクロックとの位相関係を逆相に維持したまま、前記第１のクロックと前記第２のクロックの各々の位相を反転させるクロック制御回路と、
前記複数のラッチとは異なるラッチである予備ラッチと、
前記第１の場合と前記第２の場合とで、前記予備ラッチを前記スキャンチェーンに含めるか否かを切り替える切り替え回路とを備える、診断回路。
（付記２）
前記予備ラッチは、前記第１のクロックに従ってデータを保持し、
前記切り替え回路は、前記第１の場合と前記第２の場合とで、前記複数のラッチのうち最後段の１番目のラッチの出力データを、前記予備ラッチを経由して出力させるか否かを切り替える、付記１に記載の診断回路。
（付記３）
前記切り替え回路は、前記第１の場合、前記１番目のラッチの出力データを、前記予備ラッチを経由せずに出力させ、前記第２の場合、前記１番目のラッチの出力データを前記予備ラッチを経由して出力させる、付記２に記載の診断回路。
（付記４）
前記複数のラッチは、各々の前段に設けられたセレクタによって選択されたデータを保持し、
前記セレクタは、第１の選択信号が入力された場合には、スキャンシフトしない入力データを選択し、第２の選択信号が入力された場合には、スキャンシフトするデータを選択する、付記１から３のいずれか一項に記載の診断回路。
（付記５）
前記ラッチは、Ｄラッチである、付記１から４のいずれか一項に記載の診断回路。
（付記６）
第１のクロックに従ってデータを保持する偶数番目のラッチと、第２のクロックに従ってデータを保持する奇数番目のラッチとを含むスキャンチェーンを備え、前記スキャンチェーンに含まれる複数のラッチの各々に保持されたデータをスキャンシフトする診断回路の制御方法であって、
前記偶数番目のラッチに保持されたデータをスキャンシフトする第１の場合と前記奇数番目のラッチに保持されたデータをスキャンシフトする第２の場合とで、前記診断回路が有するクロック制御回路が、前記第１のクロックと前記第２のクロックとの位相関係を逆相に維持したまま、前記第１のクロックと前記第２のクロックの各々の位相を反転させ、
前記第１の場合と前記第２の場合とで、前記診断回路が有する切り替え回路が、記複数のラッチとは異なるラッチである予備ラッチを前記スキャンチェーンに含めるか否かを切り替える、診断回路の制御方法。
（付記７）
前記予備ラッチは、前記第１のクロックに従ってデータを保持し、
前記第１の場合と前記第２の場合とで、前記複数のラッチのうち最後段の１番目のラッチの出力データを、前記予備ラッチを経由して出力させるか否かを切り替える、付記６に記載の診断回路の制御方法。
（付記８）
前記第１の場合、前記１番目のラッチの出力データを、前記予備ラッチを経由せずに出力させ、前記第２の場合、前記１番目のラッチの出力データを前記予備ラッチを経由して出力させる、付記７に記載の診断回路の制御方法。
（付記９）
前記複数のラッチは、各々の前段に設けられたセレクタによって選択されたデータを保持し、
前記セレクタは、第１の選択信号が入力された場合には、スキャンシフトしない入力データを選択し、第２の選択信号が入力された場合には、スキャンシフトするデータを選択する、付記６から８のいずれか一項に記載の診断回路の制御方法。
（付記１０）
前記ラッチは、Ｄラッチである、付記６から９のいずれか一項に記載の診断回路の制御方法。
【符号の説明】
【００７５】
１〜４  ラッチ
１０  スキャンチェーン
１１  診断回路
２１〜２４  セレクタ
３０  クロック制御回路
４１  予備ラッチ
５１  セレクタ
８０  レジスタファイル
８１  ラッチ部
１００  集積回路
【図１】
0006988156.tif 000002
【図２】
0006988156.tif 000003
【図３】
0006988156.tif 000004
【図４】
0006988156.tif 000005
【図５】
0006988156.tif 000006
【図６】
0006988156.tif 000007
【図７】
0006988156.tif 000008
【図８】
0006988156.tif 000009
【図９】
0006988156.tif 000010
【図１０】
0006988156.tif 000011