(57)【要約】【課題】  データ保持回路のホールドエラーを解消するために、各データ保持回路間に挿入するバッファ回路数を抑制して、ホールドエラーの修正処理に要する処理時間を短縮し得るスキャンチェーンのホールドエラー解消方法を提供する。【解決手段】  複数のデータ保持回路１ａ〜１ｆを接続したスキャンチェーンのホールドエラーを解消するスキャンチェーンのホールドエラー解消方法において、データ保持回路を接続する配線を、スキャンチェーンのホールドエラーを解消するための遅延素子として利用するように各データ保持回路のリオーダーを行う。【選択図】      図１
2006258694.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータ保持回路を接続したスキャンチェーンのホールドエラーを解消するスキャンチェーンのホールドエラー解消方法において、
前記データ保持回路を接続する配線を、スキャンチェーンのホールドエラーを解消するための遅延素子として利用するように各データ保持回路のリオーダー処理を行うことを特徴とするスキャンチェーンのホールドエラー解消方法。
【請求項２】
複数のデータ保持回路を接続したスキャンチェーンのホールドエラーを解消するスキャンチェーンのホールドエラー解消方法において、
前記データ保持回路のスキャンアウト端子に接続される遅延素子を、スキャンチェーンのホールドエラーを解消するための遅延素子として利用するように、各データ保持回路を接続する配線の繋ぎ位置を変更することを特徴とするスキャンチェーンのホールドエラー解消方法。
【請求項３】
複数のデータ保持回路を接続したスキャンチェーンのホールドエラーを解消するスキャンチェーンのホールドエラー解消方法において、
前記スキャンチェーンのホールドエラー個所とホールドエラー値を検出する処理と、
前記データ保持回路を接続する配線を、前記ホールドエラー値を縮小するための遅延素子として利用するように各データ保持回路のリオーダーを行うリオーダー処理と、
前記リオーダー処理後のホールドエラーを解消するように、前記データ保持回路間に遅延素子を挿入する処理と
を行うことを特徴とするスキャンチェーンのホールドエラー解消方法。
【請求項４】
複数のデータ保持回路を接続したスキャンチェーンのホールドエラーを解消するスキャンチェーンのホールドエラー解消方法において、
前記スキャンチェーンのホールドエラー個所とホールドエラー値を検出する処理と、
前記データ保持回路のスキャンアウト端子に接続される遅延素子を、前記ホールドエラー値を縮小するための遅延素子として利用するように、各データ保持回路を接続する配線の繋ぎ位置を変更する繋ぎ位置変更処理と、
前記繋ぎ位置変更処理後のホールドエラーを解消するように、前記データ保持回路間に遅延素子を挿入する処理と
を行うことを特徴とするスキャンチェーンのホールドエラー解消方法。
【請求項５】
複数のデータ保持回路を接続したスキャンチェーンのホールドエラーを解消するスキャンチェーンのホールドエラー解消方法において、
前記スキャンチェーンのホールドエラー個所とホールドエラー値を検出する処理と、
前記データ保持回路を接続する配線を、前記ホールドエラー値を縮小するための遅延素子として利用するように各データ保持回路のリオーダーを行うリオーダー処理と、
前記リオーダー処理後のホールドエラー個所とホールドエラー値を再検出する再検出処理と、
前記データ保持回路のスキャンアウト端子に接続される遅延素子を、前記再検出処理で検出されたホールドエラー値を解消するための遅延素子として利用するように、各データ保持回路を接続する配線の繋ぎ位置を変更する繋ぎ位置変更処理と、
前記繋ぎ位置変更処理後のホールドエラーを解消するように、前記データ保持回路間に遅延素子を挿入する処理と
を行うことを特徴とするスキャンチェーンのホールドエラー解消方法。
【請求項６】
前記リオーダー処理は、前記データ保持回路間のすべての仮想配線のホールドエラー値及びホールド余裕値を算出し、その算出結果に基づいてホールドエラーが解消する仮想配線にしたがってリオーダーすることを特徴とする請求項１、３または５記載のスキャンチェーンのホールドエラー解消方法。
【請求項７】
前記繋ぎ位置変更処理は、前記データ保持回路のスキャンアウト端子に接続される既存の遅延素子を検出し、前記ホールドエラー値に基づいて所要の遅延素子がスキャンチェーン上の遅延素子となるように繋ぎ位置を変更することを特徴とする請求項４または５記載のスキャンチェーンのホールドエラー解消方法。
【請求項８】
前記繋ぎ位置変更処理は、既存の遅延素子がインバータ回路であるとき、偶数段のインバータ回路が前記スキャンチェーン上の遅延素子となるように繋ぎ位置を変更することを特徴とする請求項７記載のスキャンチェーンのホールドエラー解消方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、スキャンチェーン上に発生するホールドエラーを解消するためのホールドエラー解消方法に関するものである。
近年、デジタル回路の設計に際し、回路規模の増大に対応して設計効率を向上させるために、設計ツールを使用した自動設計が採用されている。また、設計された論理回路の動作試験を行うためのテスト回路の設計も自動で行われる。テスト回路を利用した動作試験の一手法として、フリップフロップ回路等のデータ保持回路を直列に接続したスキャンチェーンを構成し、各データ保持回路をシフトレジスタとして動作させることにより、各回路が正常に動作するか否かを判定するスキャンシフトテストが行われる。このようなスキャンシフトテストを効率的に行うためには、スキャンチェーンを構成する各フリップフロップ回路でセットアップエラー及びホールドエラーが発生しないようにすることが必要である。
【背景技術】
【０００２】
図１１（ａ）は、スキャンチェーンの一例を示す。チップ上にレイアウトされる多数のスキャンフリップフロップ回路（以下スキャンＦＦという）１ａ〜１ｆは、スキャンイン端子ＳＩとスキャンアウト端子ＳＯとを備え、動作試験時には各スキャンＦＦのスキャンアウト端子ＳＯが他のスキャンＦＦのスキャンイン端子ＳＩに接続されて、多数のスキャンＦＦが直列に接続される。
【０００３】
動作試験時には各スキャンＦＦに入力されるクロック信号ＣＫに基づいてスキャンイン端子ＳＩに入力されるデータをラッチしてスキャンアウト端子ＳＯから出力することによりシフトレジスタとして動作させる。そして、シフトレジスタとして正常に動作するか否かに基づいて、各スキャンＦＦ１ａ〜１ｆが正常に動作するか否かが判定される。
【０００４】
通常動作時には、各スキャンＦＦ１ａ〜１ｆに設けられる切換機能により、スキャンイン端子ＳＩとスキャンアウト端子ＳＯとの接続が遮断され、各スキャンＦＦ１ａ〜１ｆがそれぞれ他の論理回路と接続されて、通常のフリップフロップ回路として動作する。
【０００５】
このようなスキャンチェーンは、各スキャンＦＦにおいて、セットアップエラー及びホールドエラーが発生しないように接続する必要があるため、スキャンチェーンの設計時に次に示すような処理が行われる。
【０００６】
すなわち、図１３に示すように、スキャンチェーンで接続された各スキャンＦＦでセットアップエラーが発生しないようにスキャンＦＦ１ａ〜１ｆの配置位置や配線長が調整され（ステップ１）、ホールドタイミングの検証が行われる（ステップ２）。
【０００７】
次いで、各スキャンＦＦ１ａ〜１ｆにおいて、ホールドエラーが発生している箇所及びエラーを補正するために必要な遅延時間値を算出する（ステップ３）。そして、ホールドエラーが発生している箇所に所要の遅延時間を生成するためのバッファを挿入してＥＣ処理を行い（ステップ４）、再度タイミング検証を行う（ステップ５）。
【０００８】
その後、ホールドエラーが解消していれば、セットアップタイミング及びホールドタイミングが正常なタイミングに収束したものとしてスキャンチェーンのレイアウト処理を終了し（ステップ６，７）、ホールドエラーが解消していなければ、ステップ４，５の処理を繰り返す。
【０００９】
図１１（ｂ）は、上記のような処理により、スキャンＦＦ１ａ〜１ｆ間にホールドエラーを解消するための７個のバッファ回路２ａ〜２ｇが挿入された例を示す。
図１２（ａ）は、スキャンチェーンの別の従来例を示す。同図に示すスキャンＦＦ３ａ〜３ｄは、出力端子Ｑでスキャンアウト端子を兼用するものである。そして、スキャンＦＦ３ａの出力端子Ｑは、スキャンＦＦ３ｂのスキャンイン端子ＳＩに接続されるとともに、バッファ回路２ｈ，２ｉを介して論理セル４ａに接続されている。
【００１０】
また、スキャンＦＦ３ｃの出力端子Ｑは、スキャンＦＦ３ｄのスキャンイン端子ＳＩに接続されるとともに、インバータ回路５ａ〜５ｃを介して論理セル４ｂに接続されている。
【００１１】
図１２（ｂ）は、このようなスキャンチェーンにおいて、図１３に示す処理により、スキャンＦＦ３ａ，３ｂ間及びスキャンＦＦ３ｃ，３ｄ間にそれぞれバッファ回路２ｊ，２ｋ及び同２ｍ，２ｎが挿入された例を示す。このような処理により、スキャンシフトテスト時のスキャンＦＦ３ａ，３ｂ間及びスキャンＦＦ３ｃ，３ｄ間のホールドエラーが解消される。
【００１２】
特許文献１には、スキャンチェーンの配線長を短くするために、スキャンＦＦの繋ぎ替えを行い、スキャンＦＦの駆動能力不足に対処するために、バッファ回路を挿入する思想が開示されている。
【００１３】
また、特許文献２にはスキャンチェーンのセットアップタイミング及びホールドタイミングを調整するためにバッファ回路を挿入し、スキャンチェーンのリオーダリングを行う思想が開示されている。
【００１４】
また、特許文献３にはホールドエラーを解消するために、スキャンＦＦのスキャンデータ入力回路部に遅延素子を挿入する思想が開示されている。遅延素子は、しきい値を高くしたトランジスタを使用する。
【００１５】
また、特許文献４には二つのスキャンフリップフロップ回路を交互に動作させることにより、ホールドエラーを解消する思想が開示されている。
【特許文献１】特開平１１−２０３１０５号公報
【特許文献２】特開２００３−２５６４８８号公報
【特許文献３】特開２００３−１６７０３０号公報
【特許文献４】特開２００２−２６７７２３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
スキャンチェーンを構成するスキャンＦＦのホールドエラーを解消するために、図１１（ｂ）及び図１２（ｂ）に示すように、各スキャンＦＦ間に所要のバッファ回路を挿入する。すると、挿入するバッファ回路数の増大により、このスキャンＦＦを搭載したチップの面積増大を招くとともに、図１３に示すステップ４〜６の処理工数が増大し、設計効率が低下するという問題点がある。
【００１７】
この発明の目的は、データ保持回路のホールドエラーを解消するために、各データ保持回路間に挿入するバッファ回路数を抑制して、チップ面積の増大を抑制するとともに、ホールドエラーの修正処理に要する処理時間を短縮し得るスキャンチェーンのホールドエラー解消方法を提供することにある。
【課題を解決するための手段】
【００１８】
上記目的は、複数のデータ保持回路を接続したスキャンチェーンのホールドエラーを解消するスキャンチェーンのホールドエラー解消方法において、前記データ保持回路を接続する配線を、スキャンチェーンのホールドエラーを解消するための遅延素子として利用するように各データ保持回路のリオーダーを行うスキャンチェーンのホールドエラー解消方法により達成される。
【００１９】
また、上記目的は、複数のデータ保持回路を接続したスキャンチェーンのホールドエラーを解消するスキャンチェーンのホールドエラー解消方法において、前記データ保持回路のスキャンアウト端子に接続される遅延素子を、スキャンチェーンのホールドエラーを解消するための遅延素子として利用するように、各データ保持回路を接続する配線の繋ぎ位置を変更するスキャンチェーンのホールドエラー解消方法により達成される。
【００２０】
また、上記目的は、複数のデータ保持回路を接続したスキャンチェーンのホールドエラーを解消するスキャンチェーンのホールドエラー解消方法において、前記スキャンチェーンのホールドエラー個所とホールドエラー値を検出する処理と、前記データ保持回路を接続する配線を、前記ホールドエラー値を縮小するための遅延素子として利用するように各データ保持回路のリオーダーを行う処理と、前記リオーダー処理後のホールドエラーを解消するように、前記データ保持回路間に遅延素子を挿入する処理とを行うスキャンチェーンのホールドエラー解消方法により達成される。
【００２１】
また、上記目的は、複数のデータ保持回路を接続したスキャンチェーンのホールドエラーを解消するスキャンチェーンのホールドエラー解消方法において、前記スキャンチェーンのホールドエラー個所とホールドエラー値を検出する処理と、前記データ保持回路のスキャンアウト端子に接続される遅延素子を、前記ホールドエラー値を縮小するための遅延素子として利用するように、各データ保持回路を接続する配線の繋ぎ位置を変更する処理と、前記繋ぎ位置変更処理後のホールドエラーを解消するように、前記データ保持回路間に遅延素子を挿入する処理とを行うスキャンチェーンのホールドエラー解消方法により達成される。
【００２２】
また、上記目的は、複数のデータ保持回路を接続したスキャンチェーンのホールドエラーを解消するスキャンチェーンのホールドエラー解消方法において、前記スキャンチェーンのホールドエラー個所とホールドエラー値を検出する処理と、前記データ保持回路を接続する配線を、前記ホールドエラー値を縮小するための遅延素子として利用するように各データ保持回路のリオーダーを行う処理と、前記リオーダー処理後のホールドエラー個所とホールドエラー値を再検出する処理と、前記データ保持回路のスキャンアウト端子に接続される遅延素子を、前記再検出処理で検出されたホールドエラー値を解消するための遅延素子として利用するように、各データ保持回路を接続する配線の繋ぎ位置を変更する処理と、前記繋ぎ位置変更処理後のホールドエラーを解消するように、前記データ保持回路間に遅延素子を挿入する処理とを行うスキャンチェーンのホールドエラー解消方法により達成される。
【発明の効果】
【００２３】
本発明によれば、データ保持回路のホールドエラーを解消するために、各データ保持回路間に挿入するバッファ回路数を抑制して、チップ面積の増大を抑制するとともに、ホールドエラーの修正処理に要する処理時間を短縮し得るスキャンチェーンのホールドエラー解消方法を提供することができる。
【発明を実施するための最良の形態】
【００２４】
以下、この発明を具体化した一実施の形態を説明する。図１（ａ）は、スキャンチェーンの一例を示し、図１１（ａ）に示すスキャンチェーンと同一である。各スキャンＦＦ（データ保持回路）は、図１１（ａ）に示すスキャンＦＦと同一構成であるので、同一符号を付して説明する。
【００２５】
各スキャンＦＦ１ａ〜１ｆは、スキャンイン端子ＳＩとスキャンアウト端子ＳＯとを備え、動作試験時には各スキャンＦＦのスキャンアウト端子ＳＯがスキャンイン端子ＳＩに接続されて、多数のスキャンＦＦが直列に接続される。
【００２６】
動作試験時には、各スキャンＦＦは入力されるクロック信号ＣＫに基づいてスキャンイン端子ＳＩに入力されるデータをラッチしてスキャンアウト端子ＳＯから出力することにより、シフトレジスタとして動作する。そして、スキャンチェーンがシフトレジスタとして正常に動作するか否かに基づいて、各スキャンＦＦ１ａ〜１ｆが正常に動作するか否かが判定される。
【００２７】
通常動作時には、各スキャンＦＦ１ａ〜１ｆに設けられる切換機能により、スキャンイン端子ＳＩとスキャンアウト端子ＳＯとの接続が遮断され、各スキャンＦＦ１ａ〜１ｆがそれぞれ他の論理回路と接続される。
【００２８】
図１（ｂ）は、上記スキャンチェーンにおいて各スキャンＦＦ１ａ〜１ｆ間においてホールドエラーが発生し、そのホールドエラーを解消するために、スキャンチェーンのリオーダー、すなわち接続順の変更を行ったものである。
【００２９】
このようなホールドエラーを解消するための設計ツールでの処理を図３に従って説明する。まず、スキャンチェーンとなるように接続された各スキャンＦＦでセットアップエラーが発生しないようにスキャンＦＦ１ａ〜１ｆの配置位置や配線長が調整され（ステップ１１）、ホールドタイミングの検証が行われる（ステップ１２）。
【００３０】
次いで、ステップ１３では、各スキャンＦＦ１ａ〜１ｆにおいて、ホールドエラーが発生している箇所及びホールドエラーを補正するために必要な遅延時間値を算出し、各スキャンＦＦ１ａ〜１ｆの配置位置を認識し、かつ各スキャンＦＦ１ａ〜１ｆの出力端子に接続される論理セルを認識する。
【００３１】
次いで、ホールドエラーを解消するように、スキャンチェーンの繋ぎ直し処理を行う（ステップ１４）。この繋ぎ直し処理は、スキャンＦＦのリオーダー処理と、既存のバッファ回路をスキャンチェーン内のバッファ回路として使用する繋ぎ位置変更処理を含む。
【００３２】
次いで、各スキャンＦＦ１ａ〜１ｆにおいて、ホールドタイミングの再検証が行われ（ステップ１５）、ホールドエラーが発生している箇所及びホールドエラーを補正するために必要な遅延時間値を再度認識する（ステップ１６）。
【００３３】
そして、ホールドエラーが発生している箇所に所要の遅延時間を生成するためのバッファ回路を挿入してＥＣ処理を行い（ステップ１７）、再度ホールドタイミングのタイミング検証を行う（ステップ１８）。
【００３４】
その後、ホールドエラーが解消していれば、ホールドタイミングが正常なタイミングに収束したものとしてスキャンチェーンのレイアウト処理を終了し（ステップ１９，２０）、ホールドエラーが解消していなければ、ステップ１７，１８の処理を繰り返す。
【００３５】
図１（ｂ）は、ステップ１４において、スキャンＦＦ１ａ〜１ｆのリオーダー処理を行った場合を示す。すなわち、各スキャンＦＦ１ａ〜１ｆ間でホールドエラーが生じているとき、各スキャンＦＦ１ａ〜１ｆ間の配線長を調整することにより、各スキャンイン端子ＳＩに入力されるスキャンデータの遅延時間を調整して、ホールドエラーを解消する。
【００３６】
具体的には、図１（ａ）に示す接続順を、スキャンＦＦ１ａ→同１ｃ→同１ｅ→同１ｂ→同１ｆ→同１ｄというように繋ぎ直してホールドエラーを解消し、あるいはホールドエラー時間を短縮する。
【００３７】
図２（ａ）は、別のスキャンチェーンを示し、図１２（ａ）に示すスキャンＦＦと同一構成であるので、同一符号を付して説明する。同図に示すスキャンＦＦ３ａ〜３ｄは、出力端子Ｑでスキャンアウト端子を兼用するものである。そして、スキャンＦＦ３ａの出力端子Ｑは、スキャンＦＦ３ｂのスキャンイン端子ＳＩに接続されるとともに、バッファ回路２ｈ，２ｉを介して論理セル４ａに接続されている。
【００３８】
また、スキャンＦＦ３ｃの出力端子Ｑは、スキャンＦＦ３ｄのスキャンイン端子ＳＩに接続されるとともに、インバータ回路５ａ〜５ｃを介して論理セル４ｂに接続されている。
【００３９】
このようなスキャンチェーンにおいて、スキャンＦＦ３ａ，３ｂ間及びスキャンＦＦ３ｃ，３ｄ間でホールドエラーが生じている場合には、ステップ１４において、図２（ｂ）に示す繋ぎ位置変更処理を行う。
【００４０】
すなわち、スキャンＦＦ３ａ，３ｂ間では、バッファ回路２ｉの出力端子がスキャンＦＦ３ｂのスキャンイン端子ＳＩに接続されることにより、バッファ回路２ｈ，２ｉがスキャンチェーン上のバッファ回路として利用される。スキャンＦＦ３ａ，３ｂ間に挿入されるバッファ回路の数は、ステップ１３で算出されたホールドエラー値に基づいて決定される。
【００４１】
また、スキャンＦＦ３ｃ，３ｄ間では、インバータ回路５ｂの出力端子がスキャンＦＦ３ｄのスキャンイン端子ＳＩに接続されることにより、インバータ回路５ａ，５ｂがスキャンチェーン上のバッファ回路として利用される。スキャンＦＦ３ｃ，３ｄ間に挿入されるインバータ回路は、インバータ回路をバッファ回路として利用するので、偶数段に限定され、その数はステップ１３で算出されたホールドエラー値に基づいて決定される。
【００４２】
上記ステップ１４におけるリオーダーの処理を、図４〜図７にしたがってさらに詳細に説明する。図４は、Ａ〜ＦのスキャンＦＦで構成されるスキャンチェーンについて、リオーダー処理を行う前のスキャンチェーンを示す。
【００４３】
上記ステップ１３において、ホールドエラーが発生している箇所及びホールドエラーを補正するために必要な遅延時間値を算出し、かつホールドタイミングの余裕値を算出した結果を図４に示す。
【００４４】
すなわち、Ａ−Ｂ間では、２００ｐｓのホールドエラーが発生し、Ｂ−Ｃ間では３００ｐｓのホールドエラーが発生し、Ｃ−Ｄ間では２００ｐｓの余裕があり、Ｄ−Ｅ間では２００ｐｓのホールドエラーが発生し、Ｅ−Ｆ間では１００ｐｓの余裕がある。
【００４５】
次いで、図７に示すように、各スキャンＦＦとその他のすべてのスキャンＦＦとの仮想配線を想定し、その仮想配線の配線遅延時間をディレイ値として算出する（ステップ２１）。そして、セットアップエラー及びスルーエラーがともに発生しないパスをリストアップする（ステップ２２）。
【００４６】
次いで、上記仮想配線におけるホールドエラー値及びホールド余裕値を算出する（ステップ２３）。その算出結果の一例を図６に示す。同図において、縦軸のＡ〜Ｆはデータ出力側のスキャンＦＦを示し、横軸のＡ〜Ｆはデータ入力側のスキャンＦＦを示す。同図において、＋の値はホールド余裕値であり、−の値はホールドエラー値を示す。例えば、Ａ→Ｂのパスは２００ｐｓのホールドエラーが発生し、Ｃ→Ａのパスは２００ｐｓのホールド余裕値がある。また、Ｘで示すＣ→Ｆ及びＥ→Ｃのパスは、セットアップエラー及びスルーエラーが発生しているパスであり、このパスはスキャンチェーンとして利用不可であるので除外する。
【００４７】
次いで、図６に示す算出結果に基づいて、ホールドエラー数及びホールドエラー値が最小となるようにリオーダーを行う（ステップ２４）。
図５は、リオーダー後のスキャンチェーンを示す。すなわち、スキャンチェーンは、Ｄ→Ａ→Ｅ→Ｂ→Ｆ→Ｃの順に接続され、各パスにホールド余裕値を確保した状態となる。
【００４８】
上記ステップ１４における繋ぎ位置変更処理を、図８〜図１０にしたがってさらに詳細に説明する。図８は、Ｇ〜ＬのスキャンＦＦで構成されるスキャンチェーンについて、繋ぎ位置変更処理を行う前のスキャンチェーンを示す。Ｇ〜Ｌは、出力端子Ｑでスキャンアウト端子を兼用するスキャンＦＦである。
【００４９】
そして、Ｇ→Ｈ、Ｉ→Ｊ、Ｋ→Ｌがそれぞれスキャンチェーンを構成し、ステップ１３において、Ｇ→Ｈのパスでは３００ｐｓのホールドエラーが算出され、Ｉ→Ｊのパスでは４００ｐｓのホールドエラーが算出され、Ｋ→Ｌのパスでは３００ｐｓのホールドエラーが算出されている。
【００５０】
また、ステップ１３において、各スキャンＦＦの配置位置が認識され、Ｇの出力端子Ｑはバッファ回路６ａ，６ｂを介して論理セル７ａに接続され、Ｉの出力端子Ｑはインバータ回路８ａ〜８ｃを介して論理セル７ｂに接続され、Ｋの出力端子Ｑは論理セル７ｃに直接に接続されている。
【００５１】
ステップ１４では、図１０に示すように、ホールドエラーが発生しているＨ，Ｊ，ＬのスキャンＦＦにデータを出力しているＧ，Ｉ，ＫのスキャンＦＦの出力端子Ｑと論理セル７ａ〜７ｃとの間に接続される回路が、バッファ回路であるか、インバータ回路であるか、あるいは何も接続されていないかを認識する（ステップ３１）。
【００５２】
そして、Ｇ→Ｈのパスのように、Ｇの出力端子Ｑにバッファ回路が接続されている場合には、図９に示すように、ホールドエラー値を考慮して繋ぎ位置の変更を行い（ステップ３２）、ステップ１５に移行する。
【００５３】
また、Ｉ→Ｊのパスのように、Ｉの出力端子Ｑに２個以上の連続したインバータ回路８ａ〜８ｃが接続されている場合には、偶数段のインバータ回路をバッファ回路として利用するように繋ぎ位置の変更を行い（ステップ３３）、ステップ１５に移行する。
【００５４】
また、Ｋ→Ｌのパスのように、Ｋの出力端子Ｑと論理セル７ｃとの間にバッファ回路もインバータ回路も接続されていない場合には、繋ぎ位置の変更をすることなく、ステップ１５に移行する。
【００５５】
次いで、上記ステップ１５でホールドエラー値を再計算する。そして、Ｉ→Ｊのパスでホールドエラーが解消していないとき、インバータ回路８ｂとＪとの間に所要のバッファ回路６ｃを追加し、Ｋ→Ｌのパスではホールドエラーが解消されていないので、バッファ回路６ｄ〜６ｆを挿入する。
【００５６】
上記のようなホールドエラー解消方法では、次に示す作用効果を得ることができる。
（１）スキャンチェーンのホールドエラーを解消するために、スキャンＦＦ間の配線長による遅延を利用するように、スキャンチェーンのリオーダーを行う。従って、スキャンＦＦ間にバッファを挿入することなく、ホールドエラーの解消あるいはエラー値の縮小を図ることができる。
（２）スキャンチェーンのホールドエラーを解消するために、スキャンＦＦの出力端子に接続される既存のバッファ回路あるいはインバータ回路をスキャンチェーンに取り込むように繋ぎ位置の変更を行う。従って、スキャンＦＦ間に新たにバッファを挿入することなく、ホールドエラーの解消あるいはエラー値の縮小を図ることができる。
（３）スキャンチェーンのリオーダーを行った後、ホールドタイミングの再検証を行い、ホールドエラーが残っている個所にバッファ回路を挿入するので、ホールドエラーを解消するために挿入するバッファ回路の数を削減することができる。
（４）スキャンチェーンの繋ぎ位置の変更を行った後、ホールドタイミングの再検証を行い、ホールドエラーが残っている個所にバッファ回路を挿入するので、ホールドエラーを解消するために挿入するバッファ回路の数を削減することができる。
（５）スキャンチェーンのリオーダーを行い、さらに繋ぎ位置の変更を行うことにより、スキャンＦＦ間に挿入するバッファの数を削減しながら、ホールドエラーを解消することができる。
（６）スキャンＦＦ間に挿入するバッファ回路の数を削減することができるので、チップ面積の増大を防止することができる。
（７）スキャンＦＦ間に挿入するバッファ回路の数を削減することができるので、ステップ１７〜１９の処理工数を削減することができる。
【００５７】
上記実施の形態は、次に示すように変更してもよい。
・フリップフロップ回路以外のデータ保持回路でスキャンチェーンを構成する場合にも応用可能である。
・リオーダー処理と繋ぎ位置変更処理を両方行って、ホールドエラーを解消するようにしてもよい。
・リオーダー処理と繋ぎ位置変更処理を両方行う場合、いずれを先に行ってもよい。
【図面の簡単な説明】
【００５８】
【図１】（ａ）（ｂ）はリオーダー処理前及び処理後のスキャンチェーンを示す回路図である。
【図２】（ａ）（ｂ）は繋ぎ位置の変更処理前及び処理後のスキャンチェーンを示す回路図である。
【図３】ホールドエラーの解消処理を示すフローチャートである。
【図４】リオーダー処理前のスキャンチェーンを示す回路図である。
【図５】リオーダー処理後のスキャンチェーンを示す回路図である。
【図６】仮想配線のホールドエラー値及びホールド余裕値の算出結果リストを示す説明図である。
【図７】ステップ１４のリオーダー処理を示すフローチャートである。
【図８】繋ぎ位置変更処理前のスキャンチェーンを示す回路図である。
【図９】繋ぎ位置変更処理後のスキャンチェーンを示す回路図である。
【図１０】ステップ１４の繋ぎ位置変更処理を示すフローチャートである。
【図１１】（ａ）（ｂ）は従来のホールドエラー解消処理を示す回路図である。
【図１２】（ａ）（ｂ）は従来のホールドエラー解消処理を示す回路図である。
【図１３】従来のホールドエラーの解消処理を示すフローチャートである。
【符号の説明】
【００５９】
１ａ〜１ｆ，３ａ〜３ｄ        データ保持回路（スキャンＦＦ）
５ａ〜５ｃ，８ａ〜８ｃ        インバータ回路
６ａ，６ｂ        バッファ回路
【図１】
2006258694.tif 000003
【図２】
2006258694.tif 000004
【図３】
2006258694.tif 000005
【図４】
2006258694.tif 000006
【図５】
2006258694.tif 000007
【図６】
2006258694.tif 000008
【図７】
2006258694.tif 000009
【図８】
2006258694.tif 000010
【図９】
2006258694.tif 000011
【図１０】
2006258694.tif 000012
【図１１】
2006258694.tif 000013
【図１２】
2006258694.tif 000014
【図１３】
2006258694.tif 000015