(57)【特許請求の範囲】
【請求項１】
クロック信号に同期してシリアルデータのテストパターンを出力する複数の送信側フリップフロップと、
前記複数の送信側フリップフロップからそれぞれ出力された前記テストパターンを遅延する複数の遅延回路と、
前記複数の遅延回路からそれぞれ出力された前記テストパターンを、前記クロック信号に同期して順次ラッチし、順次出力する複数の受信側フリップフロップと、
前記複数の受信側フリップフロップのうちから選択された一つの受信側フリップフロップから出力された前記テストパターンの全てのビットと、該テストパターンの期待値とを比較して、両者が一致するか否かを示す比較信号を出力する比較器と、
前記比較信号を入力し、該比較信号によって前記選択された受信側フリップフロップから出力された前記テストパターンと前記期待値とが一致していないことが判った場合に前記選択された受信側フリップフロップに対応する前記遅延回路の遅延時間を調整するタイミング調整器と、
第１のセレクタ、ステートカウンタ、及び状態信号カウンタと、を有し、
前記ステートカウンタは、前記テストパターンの全てのビットが前記比較器にラッチされたときに「１」となり、それ以外のときに「０」となる状態信号を出力し、
前記状態信号カウンタは前記状態信号を計数し、その計数結果を制御信号として出力し、
前記第１のセレクタは前記制御信号に基づいて前記複数の受信側フリップフロップから前記一つの受信側フリップフロップを選択し、選択した前記受信側フリップフロップの出力を前記比較器にラッチさせることを特徴とする電子回路。
【請求項２】
前記遅延回路は、前記テストパターンが入力される直列に接続された複数のバッファと、タイミング指定信号によって複数の前記バッファの各々の出力のいずれか一を選択して前記受信側フリップフロップに出力する第２のセレクタとを有することを特徴とする請求項１に記載の電子回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子回路に関する。
【背景技術】
【０００２】
複数のフリップフロップを備えた電子回路では、配線遅延等が原因で各フリップフロップに異なるタイミングでクロック信号が到達することがある。そのような現象は、クロックスキューと呼ばれる。
【０００３】
クロックスキューが発生すると、フリップフロップへの入力信号とクロック信号の入力タイミングが略同時になり、入力信号とは逆のレベルの信号がフリップフロップにおいてラッチされるホールドエラーが生じてしまう。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−２０４２２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
電子回路において、フリップフロップのホールドエラーを防止することを目的とする。
【課題を解決するための手段】
【０００６】
以下の開示の一観点によれば、クロック信号に同期してシリアルデータのテストパターンを出力する複数の送信側フリップフロップと、前記複数の送信側フリップフロップからそれぞれ出力された前記テストパターンを遅延する複数の遅延回路と、前記複数の遅延回路からそれぞれ出力された前記テストパターンを、前記クロック信号に同期して順次ラッチし、順次出力する複数の受信側フリップフロップと、前記複数の受信側フリップフロップのうちから選択された一つの受信側フリップフロップから出力された前記テストパターンの全てのビットと、該テストパターンの期待値とを比較して、両者が一致するか否かを示す比較信号を出力する比較器と、前記比較信号を入力し、該比較信号によって前記選択された受信側フリップフロップから出力された前記テストパターンと前記期待値とが一致していないことが判った場合に前記選択された受信側フリップフロップに対応する前記遅延回路の遅延時間を調整するタイミング調整器と、第１のセレクタ、ステートカウンタ、及び状態信号カウンタと、を有し、前記ステートカウンタは、前記テストパターンの全てのビットが前記比較器にラッチされたときに「１」となり、それ以外のときに「０」となる状態信号を出力し、前記状態信号カウンタは前記状態信号を計数し、その計数結果を制御信号として出力し、前記第１のセレクタは前記制御信号に基づいて前記複数の受信側フリップフロップから前記一つの受信側フリップフロップを選択し、選択した前記受信側フリップフロップの出力を前記比較器にラッチさせる電子回路が提供される。
【発明の効果】
【０００８】
以下の開示によれば、ホールドエラーが原因で受信側フリップフロップから出力されたテストパターンが期待値と一致していないとき、遅延回路における遅延時間を調整することにより、ホールドエラーを解消することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、予備的事項に係る電子回路の回路図である。
【図２】図２は、ホールドエラーについて説明するためのタイミングチャートである。
【図３】図３は、本実施形態に係る電子回路の回路図である。
【図４】図４は、本実施形態に係る第１の半導体素子の機能ブロック図である。
【図５】図５は、本実施形態に係る第２の半導体素子の機能ブロック図である。
【図６】図６は、本実施形態に係る第１の遅延回路の回路図である。
【図７】図７は、本実施形態に係るタイミング調整器の回路図である。
【図８】図８は、本実施形態に係る第１〜第３のタイミング指定器の回路図である。
【図９】図９は、本実施形態に係るタイミング調整方法について説明するためのフローチャートである。
【図１０】図１０は、本実施形態において、受信側フリップフロップの各々に出力されるテストパターンの一例を示す模式図である。
【図１１】図１１は、本実施形態に係る第１の送信側フリップフロップと第１の受信側フリップフロップのタイミングチャートである。
【図１２】図１２は、本実施形態に係る電子回路の模式図（その１）である。
【図１３】図１３は、本実施形態に係る電子回路の模式図（その２）である。
【発明を実施するための形態】
【００１０】
本実施形態の説明に先立ち、本実施形態の基礎となる予備的事項について説明する。
【００１１】
図１は、予備的事項に係る電子回路１の回路図である。
【００１２】
この電子回路１は、配線基板２に実装された第１の半導体素子３と第２の半導体素子４と有する。
【００１３】
このうち、第１の半導体素子３は第１のフリップフロップＦＦ１と第２のフリップフロップＦＦ２を有し、第２の半導体素子４は第３のフリップフロップＦＦ３と第４のフリップフロップＦＦ４を有する。
【００１４】
これらのフリップフロップＦＦ１〜ＦＦ４は、ＤＱフリップフロップであって、ラッチしていたデータをクロック信号ＣＬＫに同期してＱ端子から出力する。
【００１５】
この電子回路１では、配線基板２を介して第１の半導体素子３と第２の半導体素子４との間でデータの送受信が行われる。
【００１６】
例えば、第１のフリップフロップＦＦ１から送信された第１のデータD1が第３のフリップフロップＦＦ３に受信され、第４のフリップフロップＦＦ４から送信された第２のデータD2が第２のフリップフロップＦＦ２に受信される。
【００１７】
図２は、電子回路１で発生し得るホールドエラーについて説明するためのタイミングチャートである。
【００１８】
図２に示すように、第１のフリップフロップＦＦ１は、クロック信号ＣＬＫの立ち上がりにより、ラッチしていた第１のデータD1を後段の第３のフリップフロップＦＦ３に出力する。
【００１９】
そして、第３のフリップフロップＦＦ３は、クロック信号ＣＬＫの立ち上がりで上記の第１のデータD1を取り込んでラッチする。
【００２０】
このとき、配線基板２における配線遅延が原因で、第１のフリップフロップＦＦ１と第３のフリップフロップＦＦ３にクロック信号ＣＬＫが異なるタイミングで到達することがある。
【００２１】
こうなると、第３のフリップフロップＦＦ３に入力される第１のデータD1の反転タイミングとクロック信号ＣＬＫの立ち上がりとが略同時となる。そのため、ラッチすべき第１のデータD1がＨレベルであるにも関わらずＬレベルにラッチしたり、逆にＬレベルの第１のデータD1をＨレベルにラッチしたりして、第３のフリップフロップＦＦ３においてホールドエラーが発生する。
【００２２】
その結果、第３のフリップフロップＦＦ３から後段に出力される第１のデータD1が本来の論理レベルとは逆になり、電子回路１が正常に動作しなくなるという不都合を招いてしまう。
【００２３】
また、ホールドエラーが発生したフリップフロップを特定するには、配線基板２の配線を外部に電気的に引き出して電子回路１をしらみつぶしに解析する必要があり、即座に不良解析を行うことも難しい。
【００２４】
本願発明者は、このような知見に鑑み、以下に説明するような本実施形態に想到した。
【００２５】
（本実施形態）
図３は、本実施形態に係る電子回路の回路図である。
【００２６】
この電子回路２０は、配線基板２２に実装された第１の半導体素子２３と第２の半導体素子２４とを有し、通常モードと診断モードの二種類の動作を行うことができる。
【００２７】
このうち、通常モードは、電子回路２０が製品仕様に従って動作している状態であり、診断モードは、ホールドエラーが発生しているかどうかを電子回路２０自身が診断する状態である。
【００２８】
通常モードと診断モードの切り替えは、第１の半導体素子２３と第２の半導体素子２４の各々に診断モード信号ＳCHKを入力することで行われる。
【００２９】
その診断モード信号ＳCHKが「０」のときに電子回路２０は通常モードとなり、第１の半導体素子２３から第２の半導体素子２４に通常データDが送信される。通常データDは、通常モード時に第２の半導体素子２４で処理の対象となるデータであって、所定のビット数を有する。
【００３０】
一方、診断モード信号ＳCHKが「１」になると電子回路２０は診断モードとなる。そして、第２の半導体素子２４から第１の半導体素子２３に対して後述のインデックス制御信号ＳIDXと開始信号Ｓrが送信される。
【００３１】
図４は、第１の半導体素子２３の機能ブロック図である。
【００３２】
図４に示すように、第１の半導体素子２３は、第１の論理回路２７、テストパターン生成器２８、セレクタ制御回路２９、第１〜第３のセレクタ３１〜３３、及び第１〜第３の送信側フリップフロップＦＦt１〜ＦＦt３を有する。
【００３３】
第１の論理回路２７は、通常モード時に要する通常データＤの各ビットＤ［０］〜Ｄ［２］を生成し、それらを第１〜第３のセレクタ３１〜３３に出力する。
【００３４】
また、テストパターン生成器２８は、診断モード信号ＳCHKが「１」になったときにイネーブルになる。イネーブルになったテストパターン生成器２８は、開始信号Ｓrが「１」になったときに診断モード時に要するテストパターンＴＰを生成し、それを第１〜第３のセレクタ３１〜３３に出力する。
【００３５】
なお、開始信号Ｓrが「０」のときは、テストパターン生成器２８はテストパターンＴＰの生成を停止する。
【００３６】
そのテストパターンＴＰはシリアルデータであり、本実施形態では〔０１０〕の配列を有する。テストパターンＴＰの各ビット「０」、「１」、「０」は、クロック信号ＣＬＫに同期してテストパターン生成器２８から出力される。
【００３７】
セレクタ制御回路２９には、上記のインデックス制御信号ＳIDXと診断モード信号ＳCHKが入力される。
【００３８】
インデックス制御信号ＳIDXは、第１〜第３の送信側フリップフロップＦＦt１〜ＦＦt３のいずれか一を指定するための２ビットの信号である。例えば、インデックス制御信号ＳIDXが「０１」のときは第１の送信側フリップフロップＦＦt１が指定され、「１０」のときは第２の送信側フリップフロップＦＦt２が指定され、「１１」のときは第３の送信側フリップフロップＦＦt３が指定される。
【００３９】
セレクタ制御回路２９は、診断モード信号ＳCHKが「１」のときにイネーブルとなり、第１〜第３のセレクタ３１〜３３の各々に２ビットの選択信号ＳSELを出力する。
【００４０】
そして、第１〜第３のセレクタ３１〜３３の各々は、この選択信号ＳSELに応じて、各ビットＤ［０］〜Ｄ［２］とテストパターンＴＰのいずれか一方を選択して後段に出力する。その選択により、第１〜第３のセレクタ３１〜３３のうち、インデックス制御信号ＳIDXで指定されるフリップフロップＦＦt１〜ＦＦtに接続されているセレクタではテストパターンＴＰが出力され、残りのセレクタでは各ビットＤ［０］〜Ｄ［２］が出力される。
【００４１】
この結果、診断モード時では、第１〜第３の送信側フリップフロップＦＦt１〜ＦＦt３のうち、インデックス制御信号ＳIDXで指定されるフリップフロップにはテストパターンＴＰが入力され、残りのフリップフロップには各ビットＤ［０］〜Ｄ［２］が入力される。
【００４２】
第１〜第３の送信側フリップフロップＦＦt１〜ＦＦt３はＤＱフリップフロップであって、これらの各々に同一のクロック信号ＣＬＫが入力される。
【００４３】
そして、第１〜第３の送信側フリップフロップＦＦt１〜ＦＦt３は、上記の各ビットＤ［０］〜Ｄ［２］とテストパターンＴＰのいずれかをラッチし、クロック信号ＣＬＫの立ち上がりを受けて各ビットＤ［０］〜Ｄ［２］とテストパターンＴＰを第２の半導体素子２４に出力する。
【００４４】
図５は、第２の半導体素子２４の機能ブロック図である。
【００４５】
図５に示すように、第２の半導体素子２４は、第１〜第３の遅延回路４１〜４３、フリップフロップ群４４、タイミング調整器４５、比較器４６、結果通知器４７、及び３ステートカウンタ４８を有する。
【００４６】
このうち、第１〜第３の遅延回路４１〜４３の入力端子は、それぞれ第１〜第３の送信側フリップフロップＦＦt１〜ＦＦt３のＱ端子と電気的に接続される。
【００４７】
図６は、第１の遅延回路４１の回路図である。なお、第２の遅延回路４２と第３の調整器４３の回路図は、第１の遅延回路４１と同じなので、ここでは省略する。
【００４８】
図６に示すように、第１の遅延回路４１は、チェインバッファ５１とセレクタ５５とを有する。
【００４９】
通常モード時のチェインバッファ５１には、上記の第１の送信側フリップフロップＦＦt１から出力された通常データＤのビットＤ［０］が入力される。なお、診断モード時のチェインバッファ５１には、第１の送信側フリップフロップＦＦt１からテストパターンＴＰが入力される。
【００５０】
そのチェインバッファ５１は、互いに直列に接続された第１〜第３のバッファ５２〜５４と、第１〜第４の出力線５１ａ〜５１ｄとを有する。これらのうち、第１〜第３の出力線５１ａ〜５１ｃは第１〜第３のバッファ５２〜５４の入力端に接続され、第４の出力線５１ｄは第３のバッファ５４の出力端に接続される。
【００５１】
各々のバッファ５２〜５４においては、入力端から所定の遅延時間αをおいて出力端にデータが現れる。その結果、第１〜第４の出力線５１ａ〜５１ｄの各々には、第１のバッファ５２の入力端から計ってそれぞれα、２α、３αの遅延が生じることになる。
【００５２】
そして、セレクタ５５の入力側は、第１〜第４の出力線５１ａ〜５１ｄが接続される。また、第１〜第４の出力線５１ａ〜５１ｄのいずれか一が２ビットのタイミング指定信号Ｓcにより選択され、セレクタ５５の出力側から出力される。
【００５３】
図の例では、タイミング指定信号Ｓcの各々の値「００」、「０１」、「１０」、「１１」に対応し、第１〜第４の出力線５１ａ〜５１ｄのいずれか一が選択され、ビットＤ［０］を所定の遅延時間だけ遅延して出力することができる。
【００５４】
これと同様に、第２の遅延回路４２はと第３の遅延回路４３の各々では、第２の送信側フリップフロップＦＦt２と第３の送信側フリップフロップＦＦt３から出力されたビットＤ［１］、Ｄ［２］を遅延させることができる。
【００５５】
再び図５を参照する。
【００５６】
フリップフロップ群４４は、第１〜第３の受信側フリップフロップＦＦr１〜ＦＦr３を有する。
【００５７】
第１〜第３の受信側フリップフロップＦＦr１〜ＦＦr３は、ＤＱフリップフロップであって、各々のＤ端子に第１〜第３の遅延回路４１〜４３の各々の出力が入力されると共に、クロック端子に同一のクロック信号ＣＬＫが入力される。
【００５８】
そして、第１〜第３の受信側フリップフロップＦＦr１〜ＦＦr３は、第１〜第３の遅延回路４１〜４３の各々の出力データをラッチし、クロック信号ＣＬＫの立ち上がりを受けてその出力データを後段に出力する。
【００５９】
既述のように、電子回路２０が診断モードの場合には、第１の遅延回路４１にはテストパターンＴＰが入力される。よって、この場合は、第１の遅延回路４１において０、α、２α、３αのいずれかの遅延時間だけ遅延されたテストパターンＴＰが第１の受信側フリップフロップＦＦr１にラッチされる。
【００６０】
また、通常モードのときは、第１の遅延回路４１には通常データＤのビットＤ［０］が入力され、第１の遅延回路４１で遅延時間０、α、２α、３αのいずれかだけ遅延されたビットＤ［０］が第１の受信側フリップフロップＦＦr１にラッチされる。
【００６１】
これと同様に、第２の受信側フリップフロップＦＦr２と第３の受信側フリップフロップＦＦr３においても、各調整器４２、４３のいずれかで遅延時間０、α、２α、３αだけ遅延されたデータ（Ｄ［１］、Ｄ［２］、ＴＰ）がラッチされる。
【００６２】
そして、第１〜第３の受信側フリップフロップＦＦr１〜ＦＦr３にラッチされていたデータは、第２の論理回路７５とセレクタ７６に出力される。
【００６３】
このうち、第２の論理回路７５は、第１〜第３の受信側フリップフロップＦＦr１〜ＦＦr３から出力される通常データDの各ビット各ビットＤ［０］〜Ｄ［２］を受けて、通常モード時に通常データDに対して所定の処理を行う。
【００６４】
一方、セレクタ７６は、インデックス制御信号ＳIDXを受けて、第１〜第３の受信側フリップフロップＦＦr１〜ＦＦr３のいずれかから出力されたデータを後段に出力する。
【００６５】
インデックス制御信号ＳIDXは、既述のように第１〜第３の送信側フリップフロップＦＦt１〜ＦＦt３を指定する他、第１〜第３の受信側フリップフロップＦＦr１〜ＦＦr３のいずれか一を指定するための信号でもある。
【００６６】
例えば、インデックス制御信号ＳIDXが「０１」のときは第１の受信側フリップフロップＦＦr１が指定され、「１０」のときは第２の受信側フリップフロップＦＦr２が指定され、「１１」のときは第３の受信側フリップフロップＦＦr３が指定される。
【００６７】
この結果、セレクタ７６の出力側には、インデックス制御信号ＳIDXで指定された第１〜第３の受信側フリップフロップＦＦr１〜ＦＦr３のいずれか一の出力信号が出力されることになる。
【００６８】
一方、比較器４６は、第１〜第３の遅延フリップフロップＦＦD１〜ＦＦD３と、第１〜第３のＸＯＲゲート７７〜７９を有する。
【００６９】
第１〜第３の遅延フリップフロップＦＦD１〜ＦＦD３は、例えばＤＱフリップフロップであって、それぞれに共通のクロック信号ＣＬＫの立ち上がりによってラッチしていたデータを後段に出力する。
【００７０】
これにより、第１〜第３の遅延フリップフロップＦＦD１〜ＦＦD３の各々には、クロック信号ＣＬＫに同期して、セレクタ７６から出力されたデータがシリアルに取り込まれる。
【００７１】
そして、ＸＯＲゲート７７〜７９の各々は、上記の第１〜第３の遅延フリップフロップＦＦD１〜ＦＦD３の各々の出力信号と、テストパターンＴＰの期待値「０」、「１」、「０」との排他的論理和をとる。これらの期待値は、遅延フリップフロップＦＦD１〜ＦＦD３の各々にラッチされるテストパターンＴＰの各ビットの期待値である。
【００７２】
そして、ＸＯＲゲート７７〜７９の各々は、排他的論理和をとることで得られた第１〜第３の比較信号Ｓp１〜Ｓp３を結果比較器４７に出力する。
【００７３】
結果比較器４７は、ＯＲゲート８１とＡＮＤゲート８２とを備える。
【００７４】
このうち、ＯＲゲート８１は、第１〜第３の比較信号Ｓp１〜Ｓp３の論理和をとり、その結果をＡＮＤゲート８２に出力する。
【００７５】
そのＡＮＤゲート８２は、３ステートカウンタ４８から出力された状態信号Ｓsと上記のＯＲゲート８１の出力信号との論理和をとり、それを結果信号Ｓhとして後段に出力する。
【００７６】
３ステートカウンタ４８は、診断モード信号ＳCHKが「１」のときにイネーブルとなり、クロック信号ＣＬＫに同期して内部状態が「０」、「１」、「０」の順に遷移する。その３ステートカウンタ４８から出力される状態信号Ｓsは、内部状態が最初の「０」と「１」のときには「０」であり、内部状態が最後の「０」になったときに「１」となる。
【００７７】
また、３ステートカウンタ４８には、結果信号Ｓhと開始信号Ｓrが入力される。３ステートカウンタ４８は、結果信号Ｓhが「１」になったときに状態遷移が停止し、再開信号Ｓrが「１」になったときに状態遷移が再開する。
【００７８】
その３ステートカウンタ４８から出力された状態信号Ｓsは、インデックスカウンタ８５に入力される。
【００７９】
インデックスカウンタ８５は、診断モード信号ＳCHKが「１」のときにイネーブルとなる。そして、イネーブル時のインデックスカウンタ８５は、状態信号Ｓsを計数し、その計数結果を既述の２ビットのインデックス制御信号ＳIDXとして出力する。
【００８０】
更に、３ステートカウンタ４８から出力された上記の状態信号Ｓsはタイミング調整器４５にも入力される。
【００８１】
図７は、タイミング調整器４５の回路図である。
【００８２】
図７に示すように、タイミング調整器４５は、第１〜第３のタイミング指定器１０１〜１０３と、第１〜第６のＡＮＤゲート１１１〜１１６と、ＯＲゲート１２０とを備える。
【００８３】
このうち、第１のＡＮＤゲート１１１は、２ビットのインデックス制御信号ＳIDXの下位ビットＳIDX［０］の反転信号と、そのインデックス制御信号ＳIDXの上位ビットＳIDX［１］との論理積をとり、その結果をイネーブル信号Ｓeとして出力する。
【００８４】
また、第２のＡＮＤゲート１１２は、下位ビットＳIDX［０］と上位ビットＳIDX［１］の反転信号との論理積をとり、その結果をイネーブル信号Ｓeとして出力する。
【００８５】
そして、第３のＡＮＤゲート１１３は、下位ビットＳIDX［０］と上位ビットＳIDX［１］との論理積をとり、その結果をイネーブル信号Ｓeとして出力する。
【００８６】
これにより、同一のインデックス制御信号ＳIDXの下では、第１〜第３のＡＮＤゲート１１１〜１１３のうちの一つのみのイネーブル信号Ｓeが「１」となり、それ以外のイネーブル信号Ｓeは「０」となる。
【００８７】
例えば、インデックス制御信号ＳIDXが「０１」のときは第１のＡＮＤゲート１１１が「１」となり、他のＡＮＤゲート１１２、１１３の出力は「０」となる。
【００８８】
そして、第１〜第３のタイミング指定器１０１〜１０３のうち、「１」となったイネーブル信号Ｓeが入力されたタイミング指定器のみがイネーブルとなる。
【００８９】
また、ＯＲゲート１２０は、各タイミング指定器１０１〜１０３から出力される後述の比較信号Ｓtの論理和をとり、その結果を開始信号Ｓrとして出力する。その開始信号Ｓrは、各タイミング指定器１０１〜１０３の比較信号Ｓtのいずれか一が「１」のときに「１」となり、それ以外のときには「０」となる。
【００９０】
更に、第４〜第６のＡＮＤゲート１１４〜１１６は、それぞれ状態信号Ｓsと第１〜第３の比較信号Ｓp１〜Ｓp３との論理積をとり、その結果をそれぞれ第１〜第３のタイミング指定器１０１〜１０３に出力する。
【００９１】
図８は、第１〜第３のタイミング指定器１０１〜１０３の回路図である。
【００９２】
図８に示すように、第１〜第３のタイミング指定器１０１〜１０３は、タイミングコード生成器６１と、第１〜第３のフリップフロップＦＦ１〜ＦＦ３と、比較器６７とを備える。
【００９３】
このうち、タイミングコード生成器６１には、上記した第４〜第６のＡＮＤゲート１１４〜１１６の出力が入力される。
【００９４】
そのタイミングコード生成器６１は、ＯＲゲート６２とカウンタ６３とを有する。
【００９５】
ＯＲゲート６２は、第４〜第６のＡＮＤゲート１１４〜１１６の各々の出力信号の論理和をとり、それをカウンタ６３に出力する。
【００９６】
カウンタ６３は、イネーブル信号Ｓｅによりイネーブル状態となる。イネーブル状態となったカウンタ６３は、ＯＲゲート６２の出力が「１」になったときにカウントアップし、その計数結果を２ビットのタイミング指定信号Ｓcとして出力する。
【００９７】
第１〜第３のフリップフロップＦＦ１〜ＦＦ３は、２ビットの信号をラッチするものであって、クロック信号ＣＬＫの立ち上がりによってラッチしていた信号を後段に出力する。
【００９８】
これにより、第１〜第３のフリップフロップＦＦ１〜ＦＦ３の各々には、クロック信号ＣＬＫに同期して、タイミング指定信号Ｓcが順に取り込まれる。
【００９９】
比較器６７は、上記の第２のフリップフロップＦＦ２と第３のフリップフロップＦＦ３の出力信号を比較し、これらが異なる値であれば比較信号Ｓtを「１」にし、これらが同じ値であれば比較信号Ｓtを「０」にする。
【０１００】
このように複数のフリップフロップＦＦ１〜ＦＦ３を接続し、最終のフリップフロップＦＦ３の入力と出力とを比較することで、カウンタ６３においてタイミング指定信号Ｓcが切り替わってから時間をおいて比較信号Ｓtを切り替えることができる。これにより、タイミング指定信号Ｓcによってセレクタ５５（図６参照）が確実に切り替わった後に、タイミング調整器４５（図７参照）から開始信号Ｓrを出力することができる。
【０１０１】
再び図５を参照する。
【０１０２】
上記した第１〜第３のタイミング指定器１０１〜１０３から出力されたタイミング指定信号Ｓcは、それぞれ第１〜第３の遅延回路４１〜４３に入力される。
【０１０３】
一方、ＡＮＤゲート８２から出力された結果信号Ｓhは、ＡＮＤゲート９０に入力される。
【０１０４】
ＡＮＤゲート９０の入力側には、その結果信号Ｓhの他に、回数カウンタ９１から出力された計数信号ＳNも入力される。
【０１０５】
回数カウンタ９１は、インデックス制御信号ＳIDXに基づいて、第１〜第３の受信側フリップフロップＦＦr１〜ＦＦr３の全てにテストパターンＴＰが１回供給されたら計数結果を１だけインクリメントする。例えば、第１〜第３の受信側フリップフロップＦＦr１〜ＦＦr３の全てにテストパターンＴＰが２回供給されたら回数カウンタ９１の計数値ｎは２となり、３回供給されたら計数値ｎは３となる。
【０１０６】
このように、回数カウンタ９１は、第１〜第３の受信側フリップフロップＦＦr１〜ＦＦr３の全てにテストパターンＴＰが供給された回数ｎを計数するものであり、その回数ｎが予定回数Ｎよりも少ないときは、回数カウンタ９１は計数信号ＳNを「０」とする。そして、その回数ｎが予定回数Ｎに等しくなったとき、回数は計数信号ＳNを「１」とする。
【０１０７】
ＡＮＤゲート９０は、これらの信号ＳN、Ｓhの論理積をとり、その結果をユーザへの通知信号ＳUとして出力する。
【０１０８】
次に、この電子回路２０を用いたタイミング調整方法について説明する。
【０１０９】
図９は、本実施形態に係るタイミング調整方法について説明するためのフローチャートである。
【０１１０】
最初のステップＰ１では、電子回路２０を通常モードから診断モードに切り替える。
【０１１１】
本ステップは、ユーザが診断モード信号ＳCHKを「０」から「１」に切り替えることで行われる。
【０１１２】
次に、ステップＰ２に移り、上記の診断モード信号ＳCHKによってイネーブルとなったテストパターン生成器２８（図４参照）が、クロック信号ＣＬＫに同期してテストパターンＴＰの各ビット「０」、「１」、「０」を生成する。
【０１１３】
そのテストパターンＴＰは、第１〜第３の送信側フリップフロップＦＦt１〜ＦＦt３の各々にラッチされる。その後、クロック信号ＣＬＫの立ち上がりを受けた送信側フリップフロップＦＦt１〜ＦＦt３が、テストパターンＴＰを第１〜第３の受信側フリップフロップＦＦr１〜ＦＦr３（図５参照）の各々に出力する。
【０１１４】
図１０は、各受信側フリップフロップＦＦr１〜ＦＦr３の各々に出力されるテストパターンＴＰの一例を示す模式図である。
【０１１５】
図１０において、「ＦＦ  Ｉｎｄｅｘ」とは、インデックス制御信号ＳIDXを１０進数で表したときの値である。図１０に示されるように、テストパターンＴＰは、各受信側フリップフロップＦＦr１〜ＦＦr３の各々において同一のシリアルデータ〔０１０〕である。そして、テストパターンＴＰの各ビット「０」、「１」、「０」は、クロック信号ＣＬＫに同期して、各受信側フリップフロップＦＦr１〜ＦＦr３にラッチされる。
【０１１６】
また、各受信側フリップフロップＦＦr１〜ＦＦr３のうちの一つに対して診断が行われているときは、他の受信側フリップフロップはdon't care （Ｘ）となる。
【０１１７】
本実施形態では、図６に示したように、第１〜第３の遅延回路４１〜４３によってテストパターンＴＰに０、α、２α、３αのいずれかの遅延時間が生ずることになる。これらのいずれの遅延時間が生ずるかは第１〜第３の受信側フリップフロップＦＦr１〜ＦＦr３の各々に個別に設定されるが、診断モードの開始直後では全てのフリップフロップＦＦr１〜ＦＦr３について遅延時間は０とされる。
【０１１８】
なお、このように遅延時間を０にするには、予めカウンタ６３（図８参照）をリセットしてタイミング指定信号Ｓcを「００」にしておけばよい。
【０１１９】
また、診断モードの開始前にインデックスカウンタ８５（図５参照）は予めリセットされており、インデックスカウンタ８５から出力されるインデックス制御信号ＳIDXは「０１」となっている。
【０１２０】
そのため、セレクタ７６（図５参照）では、「０１」に対応する第１の受信側フリップフロップＦＦr１の出力信号が選択され、第１の受信側フリップフロップＦＦr１に対するホールドエラーの有無の判断とタイミング調整とが最初に行われる。なお、第２の受信側フリップフロップＦＦr２と第３の受信側フリップフロップＦＦr３に対するタイミング調整は、インデックス制御信号ＳIDXがインクリメントすることにより、第１の受信側フリップフロップＦＦr１と同様にして行われる。
【０１２１】
次に、ステップＰ３に移り、比較器４６において、第１の受信側フリップフロップＦＦr１から出力されたテストパターンＴＰと、そのテストパターンＴＰの期待値「０」、「１」、「０」とが一致するか否かを調べる。
【０１２２】
ここで、診断モード時においては、第１の受信側フリップフロップＦＦr１にラッチされていたテストパターンＴＰ（〔０１０〕）の各ビットがクロック信号ＣＬＫに同期して各第１〜第３の遅延フリップフロップＦＦD１〜ＦＦD３にシリアルに取り込まれる。
【０１２３】
よって、第１の受信側フリップフロップＦＦr１においてホールドエラーが発生していなければ、第１〜第３の遅延フリップフロップＦＦD１〜ＦＦD３には、それぞれテストパターンＴＰの各ビット「０」、「１」、「０」が取り込まれるはずである。
【０１２４】
一方、第１の受信側フリップフロップＦＦr１においてホールドエラーが発生している場合は、第１の受信側フリップフロップＦＦr１から出力されるテストパターンＴＰのいずれかのビットにおいてデータが反転する。
【０１２５】
そこで、本ステップでは、そのようなビットの反転の有無を調べるために、ＸＯＲゲート７７〜７９の各々において、第１〜第３の遅延フリップフロップＦＦD１〜ＦＦD３の各々の出力信号と期待値「０」、「１」、「０」との排他的論理和をとる。
【０１２６】
ここで、ホールドエラーが原因のデータの反転がテストパターンＴＰのいずれかのビットで発生している場合（ＮＧ時）は、第１〜第３の比較結果信号Ｓp１〜Ｓp３のいずれかが「１」となる。
【０１２７】
そして、そのようなデータの反転がない場合（ＯＫ時）には、第１〜第３の比較結果信号Ｓp１〜Ｓp３の全てが「０」となる。
【０１２８】
また、データの反転の有無によらず、上記のように第１〜第３の遅延フリップフロップＦＦD１〜ＦＦD３の各々にテストパターンＴＰの三つの全てのビットがラッチされたときは、３ステートカウンタ４８の状態信号Ｓsが「１」となる。
【０１２９】
よって、ホールドエラーが発生しているときはＡＮＤゲート８２の結果信号Ｓhが「１」となり、ホールドエラーが発生していないときはその結果信号Ｓhが「０」となる。
【０１３０】
上記のように結果信号Ｓhが「１」となった場合（ＮＧ時）であって、且つ、回数カウンタ９１による計数nが予定回数Nを越えていない場合はステップＰ４に移る。
【０１３１】
本ステップでは、「１」となった結果信号Ｓhを受けて３ステートカウンタ４８がその動作を停止する。また、このタイミングではカウンタ６３（図８参照）のカウント値が変わっていないため、第１〜第３のフリップフロップＦＦ１〜ＦＦ３に同一のタイミング指定信号Ｓcがラッチされている。このため、本ステップでは、各タイミング指定器１０１〜１０３から出力される比較信号Ｓtが「０」になるため開始信号Ｓrも「０」になり、テストパターン生成器２８におけるテストパターンＴＰの生成が停止する。
【０１３２】
次に、ステップＰ５に移り、第１の受信側フリップフロップＦＦr１がデータを受け取るタイミングを調整する。
【０１３３】
その調整は、タイミング調整器４５の第１〜第３のタイミング指定器１０１〜１０３（図８参照）において次のように行われる。
【０１３４】
ホールドエラーが発生したときは、上記のように、第１〜第３の比較結果信号Ｓp１〜Ｓp３のいずれかが「１」となる。また、各遅延フリップフロップＦＦD１〜ＦＦD３の各々にテストパターンＴＰの三つの全てのビットがラッチされたときには状態信号Ｓsが「１」となる。
【０１３５】
よって、この場合は、第４〜第６のＡＮＤゲート１１４〜１１６のいずれかの出力が１となり、カウンタ６３が１だけカウントアップされる。これにより、予め「００」にリセットされていたタイミング指定信号Ｓcが「０１」となるため、第１の遅延回路４１（図６参照）のセレクタ５５が第２の出力線５１ｂを選択するようになる。
【０１３６】
その結果、第１の遅延回路４１に入力される信号が、遅延時間αだけ遅れて第１の受信側フリップフロップＦＦr１に出力されるようになり、信号のタイミング調整が行われる。
【０１３７】
この後は、上記したステップＰ２に再び戻る。
【０１３８】
ここで、上記のステップＰ４では３ステートカウンタ４８がその動作を停止していたので、インデックス制御信号ＳIDXは前回と変わっておらず、前回と同一の第１の受信側フリップフロップＦＦr１に対してタイミング調整が行われる。
【０１３９】
そして、ステップＰ５を行う度にタイミング調整器４５のカウンタ６３が１ずつカウントアップし、第１の遅延回路４１における遅延時間をα、２α、３αの順に長くすることができる。
【０１４０】
一方、ステップＰ３において結果信号Ｓhが「０」となった場合（ＯＫ時）であって、且つ、回数カウンタ９１による計数nが予定回数Nを越えていない場合もステップＰ２に戻る。
【０１４１】
そして、上記のようにステップＰ３を繰り返し行い、回数カウンタ９１による計数nが予定回数Nに等しくなった場合には、ステップＰ６に移る。
【０１４２】
ステップＰ６では、n＝Nとなったため回数カウンタ９１から出力される計数信号ＳNが「１」となる。その結果、ＡＮＤゲート９０から出力される通知信号ＳUは、結果信号Ｓhと同一となる。
【０１４３】
上記のように、結果信号Ｓhは、第１〜第３の受信側フリップフロップＦＦr１〜ＦＦr３のいずれかにおいてホールドエラーが発生したときに「１」となる。
【０１４４】
よって、ユーザは、通知信号ＳUが「１」のときに第１〜第３の受信側フリップフロップＦＦr１〜ＦＦr３のいずれかにおいてホールドエラーが発生したことを認識できる。
【０１４５】
以上により、本実施形態に係るタイミング調整方法に基本ステップを終了する。
【０１４６】
上記した本実施形態によれば、図６に示したように、第１〜第３の遅延回路４１〜４３によって、各第１〜第３の受信側フリップフロップＦＦr１〜ＦＦr３に入力される通常データＤの各ビットＤ［０］、Ｄ［１］、Ｄ［２］を遅延させる。
【０１４７】
図１１は、このようにビットＤ［０］を遅延させた場合における、第１の送信側フリップフロップＦＦt１と第１の受信側フリップフロップＦＦr１のタイミングチャートである。
【０１４８】
図１１に示すように、タイミング調整をしたことで、第１の受信側フリップフロップＦＦr１がビットＤ［０］を受信するタイミングは、第１の送信側フリップフロップＦＦt１がビットＤ［０］を送信するタイミングよりも所定の時間（例えばα）だけ遅れる。
【０１４９】
よって、クロックスキューが原因で第１の受信側フリップフロップＦＦr１にクロック信号ＣＬＫが遅れて入力されても、クロック信号ＣＬＫの立ち上がりから十分に長い期間Ｔを経過した後に、フリップフロップＦＦr１に入力されるビットＤ［０］が反転する。その結果、当該期間Ｔが短い場合に発生するホールドエラーを防止でき、電子回路２０の信頼性を高めることができる。
【０１５０】
更に、上記したステップＰ３では、ホールドエラーが発生していない場合（ＯＫ時）であっても、各第１〜第３の受信側フリップフロップＦＦr１〜ＦＦr３のそれぞれの診断回数が予め定めた回数Ｎを越えていない場合には診断を続ける。
【０１５１】
これにより、ＯＫと判断された受信側フリップフロップが、その後の温度変化によってＮＧとなるのを見落とす危険性を低減でき、診断の正確性を期することができる。
【０１５２】
また、電子回路２０の外部に通知信号ＳUとインデックス制御信号ＳIDXと出力し、ユーザがこれらの信号を監視できるようにしてもよい。
【０１５３】
この場合、通知信号ＳUが「１」で受信側フリップフロップＦＦr１〜ＦＦr３のいずれかにホールドエラーがある場合、どの受信側フリップフロップにホールドエラーがあるかをユーザがインデックス制御信号ＳIDXに基づいて判断することができる。
【０１５４】
図１２は、これらの信号ＳU、ＳIDXを外部に引き出す第１の端子１５０と第２の端子１５１を設けた場合の電子回路２０の模式図である。
【０１５５】
この場合、電子回路２０に第３の端子１５３を設け、その第３の端子１５３から電子回路２０に診断モード信号ＳCHKを入力するのが好ましい。
【０１５６】
図１３は、上記とは別の方法による各信号ＳU、ＳIDXの外部への引き出し方を説明するための電子回路２０の模式図である。
【０１５７】
この例では、上記の図１２のように各信号ＳU、ＳIDXに専用の端子１５０、１５１を設けるのではなく、第２の論理回路７５（図５参照）の出力データＤiを外部に出力するのに使用される第４の端子１５４と第５の端子１５５を流用する。なお、出力データＤiは、第１の半導体素子２３から出力された通常データＤに対し、第２の論理回路７５で所定の処理を施してなるデータである。
【０１５８】
この場合、各端子１５４、１５５から各信号ＳU、ＳIDXと出力データＤiのどちらを出力するかは、第１のセレクタ１６１と第２のセレクタ１６２により選択される。
【０１５９】
第１のセレクタ１６１は、診断モード信号ＳCHKが「０」のときに出力データＤiを選択し、診断モード信号ＳCHKが「１」のときに通知信号ＳUを選択する。
【０１６０】
そして、第２のセレクタ１６２は、診断モード信号ＳCHKが「０」のときに出力データＤiを選択し、診断モード信号ＳCHKが「１」のときにインデックス制御信号ＳIDXを選択する。
【０１６１】
このように、第４の端子１５４と第５の端子１５５に対して出力データＤiの他に各信号ＳU、ＳIDXの出力機能を担わせることにより、端子数が増大するのを防止して電子回路２０が大型化するのを抑制することができる。
【０１６２】
以上説明した各実施形態に関し、更に以下の付記を開示する。
【０１６３】
（付記１）  クロック信号に同期してテストパターンを出力する送信側フリップフロップと、
前記送信側フリップフロップから出力された前記テストパターンを所定の遅延時間だけ遅延させて出力する遅延回路と、
前記遅延回路から出力された前記テストパターンをラッチすると共に、前記クロック信号に同期して前記テストパターンを出力する受信側フリップフロップと、
前記受信側フリップフロップから出力された前記テストパターンと、該テストパターンの期待値とを比較して、前記テストパターンと前記期待値とが一致するか否かを示す比較信号を出力する比較器と、
前記比較信号が入力され、該比較信号によって前記テストパターンと前記期待値とが一致していないことが判った場合に、前記遅延回路における前記遅延時間を調整するタイミング調整器と、
を有することを特徴とする電子回路。
【０１６４】
（付記２）  前記受信側フリップフロップが複数設けられ、
制御信号に基づいて、前記受信側フリップフロップのいずれか一の出力を選択して前記比較器に出力する第１のセレクタと、
前記第１のセレクタに対して前記制御信号を出力する第１のカウンタとを更に有することを特徴とする付記１に記載の電子回路。
【０１６５】
（付記３）  前記テストパターンはシリアルデータであり、
前記比較器は、前記テストパターンの各々のビットをラッチする複数のフリップフロップを備え、
前記複数のフリップフロップの全てに前記テストパターンの全てのビットがラッチされたときに「１」となり、それ以外のときに「０」となる状態信号を出力するステートカウンタとを更に有し、
前記第１のカウンタは、前記状態信号を計数し、該計数結果を前記制御信号として出力することを特徴とする付記２に記載の電子回路。
【０１６６】
（付記４）  前記比較器は、複数の前記フリップフロップの各々の出力と、前記期待値の各々のビットとの排他的論理和を複数の前記比較信号として出力する複数の排他的論理和回路とを有し、
複数の前記比較信号の論理和をとる論理和回路と、
前記論理和回路の出力と前記状態信号との論理積をとる第１の論理積回路と、
複数の前記受信側フリップフロップの全てが前記テストパターンを受けたときに１だけインクリメントして、計数結果が予め定められた予定回数になったときに「１」になる計数信号を出力する第２のカウンタと、
前記第１の論理積回路の出力と前記計数信号との論理積を通知信号として外部に出力する第２の論理積回路とを更に有することを特徴とする付記３に記載の電子回路。
【０１６７】
（付記５）  前記通知信号が出力される第１の端子と、
前記制御信号が出力される第２の端子とを更に有することを特徴とする付記４に記載の電子回路。
【０１６８】
（付記６）  前記遅延回路は、前記テストパターンが入力される直列に接続された複数のバッファと、タイミング指定信号によって複数の前記バッファの各々の出力のいずれか一を選択して前記受信側フリップフロップに出力する第２のセレクタとを有することを特徴とする付記１〜５のいずれかに記載の電子回路。
【０１６９】
（付記７）  前記タイミング調整器は、前記比較信号によって前記テストパターンと前記期待値とが一致しないことが判った場合にカウントアップする第３のカウンタを備え、
前記第３のカウンタの計数結果が前記タイミング指定信号として前記第２のセレクタに出力されることを特徴とする付記６に記載の電子回路。
【０１７０】
（付記８）  通常モード時に通常データを生成する第１の論理回路と、
診断モード時に前記テストパターンを生成するテストパターン生成器と、
前記通常モード時に前記通常データを選択して前記送信側フリップフロップに出力し、前記診断モード時に前記テストパターンを選択して前記送信側フリップフロップに出力する第３のセレクタと、
前記通常モード時において、前記受信側フリップフロップから出力された前記通常データが入力される第２の論理回路とを更に有することを特徴とする付記１〜７のいずれかに記載の電子回路。
【０１７１】
（付記９）  配線基板と、
前記配線基板に実装された第１の半導体素子と第２の半導体素子とを更に有し、
前記第１の半導体素子に前記送信側フリップフロップが設けられ、
前記第２の半導体素子に、前記遅延回路、前記受信側フリップフロップ、前記比較器、及び前記タイミング調整器が設けられたことを特徴とする付記１〜８のいずれかに記載の電子回路。
【０１７２】
（付記１０）  送信側フリップフロップが遅延回路にテストパターンを出力して、前記遅延回路において所定の遅延時間だけ遅延された前記テストパターンを受信側フリップフロップがラッチするステップと、
クロック信号に同期して前記受信側フリップフロップから出力された前記テストパターンと、該テストパターンの期待値とが一致するか否かを調べるステップと、
前記テストパターンと前記期待値とが一致しないことが判った場合に、前記遅延回路における前記遅延時間を調整するステップと、
を有することを特徴とする電子回路のタイミング調整方法。
【符号の説明】
【０１７３】
１、２０…電子回路、２、２２…配線基板、３、２３…第１の半導体素子、４、２４…第２の半導体素子、２７…第１の論理回路、２８…テストパターン生成器、２９…セレクタ制御回路、３１〜３３…第１〜第３のセレクタ、４１〜４３…第１〜第３の遅延回路、４４…フリップフロップ群、４５…タイミング調整器、４６…比較器、４７…結果通知器、４８…３ステートカウンタ、５１…チェインバッファ、５１ａ〜５１ｃ…第１〜第３の出力線、５２〜５４…第１〜第３のバッファ、５５…セレクタ、６１…タイミングコード生成器、６２…ＯＲゲート、６３…カウンタ、６７…比較器、７５…第２の論理回路、７６…セレクタ、７７〜７９…第１〜第３のＸＯＲゲート、８１…ＯＲゲート、８２…ＡＮＤゲート、８５…インデックスカウンタ、９０…ＡＮＤゲート、９１…回数カウンタ、１０１〜１０３…第１〜第３のタイミング指定器、１１１〜１１６…第１〜第６のＡＮＤゲート、１２０…ＯＲゲート、１５０…第１の端子、１５１…第２の端子、１５３…第３の端子、１５４…第４の端子、１５５…第５の端子、１６１…第１のセレクタ、１６２…第２のセレクタ。
【図１】
0005699780.tif 000002
【図２】
0005699780.tif 000003
【図３】
0005699780.tif 000004
【図４】
0005699780.tif 000005
【図５】
0005699780.tif 000006
【図６】
0005699780.tif 000007
【図７】
0005699780.tif 000008
【図８】
0005699780.tif 000009
【図９】
0005699780.tif 000010
【図１０】
0005699780.tif 000011
【図１１】
0005699780.tif 000012
【図１２】
0005699780.tif 000013
【図１３】
0005699780.tif 000014