(57)【要約】【課題】スキャンテスト時間を短縮する半導体集積回路のスキャンテスト回路、スキャンテスト回路設計方法を提供する。【解決手段】スキャンフリップフロップを示すセル間を接続するシフトパスを生成するステップと、信号伝達の制約条件を満たすようにリピータセルをシフトパスに挿入するステップと、スキャンフリップフロップを示すセル及びリピータセルの間のセル間遅延時間を求めるステップと、リピータセルをフリップフロップを示すセルに置換してシフトパスを分割したときのシフトパスの遅延時間を示すシフトパス遅延時間を算出するステップと、シフトパスを分割したときの、スキャンチェーンにテストデータをシフトさせて供給するスキャンシフト時間を算出するステップと、スキャンシフト時間が最短になるシフトパスの分割位置を求めるステップと、シフトパスの分割位置のリピータセルをフリップフロップを示すセルに置換した回路データを生成するステップとを具備する。【選択図】図３
2012146865.tif 000002
【特許請求の範囲】
【請求項１】
スキャンテストを行うためのスキャンチェーンを形成するフリップフロップを含む回路データに基づいて、スキャンシフト時にシフトレジスタを形成するようにスキャンフリップフロップを示すセル間を接続するシフトパスを生成するステップと、
前記スキャンフリップフロップを示すセル間の信号伝達の制約条件を満たすようにリピータセルを前記シフトパスに挿入するステップと、
前記スキャンチェーンに含まれる前記スキャンフリップフロップを示すセル及び前記リピータセルの間のセル間遅延時間を求めるステップと、
前記リピータセルをフリップフロップを示すセルに置換して前記シフトパスを分割したときのシフトパスの遅延時間を示すシフトパス遅延時間を算出するステップと、
前記シフトパスを分割したときの、前記スキャンチェーンにテストデータをシフトさせて供給するスキャンシフト時間を算出するステップと、
前記スキャンシフト時間が最短になる前記シフトパスの分割位置を求めるステップと、
前記シフトパスの分割位置の前記リピータセルを前記フリップフロップを示すセルに置換した回路データを生成するステップと
を具備する
スキャンテスト回路設計方法。
【請求項２】
前記リピータセルはバッファ回路である
請求項１に記載のスキャンテスト回路設計方法。
【請求項３】
前記セル間遅延時間の最大値を示す最大パス遅延値を求めるステップをさらに具備し、
前記シフトパス遅延時間を算出するステップは、前記スキャンフリップフロップ間の前記シフトパスの遅延時間が前記最大パス遅延値を超えない前記シフトパスを対象から除外して前記分割セル間遅延時間を算出する
請求項１または請求項２に記載のスキャンテスト回路設計方法。
【請求項４】
回路データを生成するステップは、前記シフトパスの分割位置の前記リピータセルを前記スキャンテストのキャプチャ動作時に固定論理を取り込むスキャンフリップフロップを示すセルに置換する回路データを生成する
請求項１から請求項３のいずれかに記載のスキャンテスト回路設計方法。
【請求項５】
回路データを生成するステップは、前記シフトパスの分割位置の前記所定のセルを前記スキャンテストのキャプチャ動作時に前記組み合わせ回路からデータを取り込まずにデータを保持するフリップフロップを示すセルに置換する回路データを生成する
請求項１から請求項３のいずれかに記載のスキャンテスト回路設計方法。
【請求項６】
前記スキャンシフト時間は、前記シフトパスの遅延値の最大値とシフト段数とを乗じて積算される
請求項１から請求項５のいずれかに記載のスキャンテスト回路設計方法。
【請求項７】
前記シフトパス遅延時間を算出するステップは、
前記スキャンフリップフロップを示すセル間毎に、置換する前記リピータセルの数に関連付けて前記シフトパスを分割したときの各シフトパスにおける遅延時間を求めるステップと、
前記置換する前記リピータセルの数が同数である前記スキャンフリップフロップを示すセル間の遅延時間を、前記リピータセルの置換する組み合わせによって算出される前記各シフトパスにおける遅延時間のうちの最長となる遅延時間とし、前記スキャンフリップフロップを示すセル間における前記リピータセルの数を置換したときの最小シフト動作レートとして求めるステップと
を備える
請求項１から請求項６のいずれかに記載のスキャンテスト回路設計方法。
【請求項８】
請求項１から請求項７のいずれかに記載のスキャンテスト回路設計方法によって生成される半導体集積回路。
【請求項９】
スキャンテストを行うときにスキャンチェーンを形成する複数のスキャンフリップフロップと、
前記スキャンチェーンからテストデータを入力し、テスト結果を前記スキャンチェーンに出力する組み合わせ回路と
を具備し、
前記スキャンチェーンは、
組み合わせ回路からキャプチャ時にデータを取り込むスキャンフリップフロップと、
前記スキャンフリップフロップ間のシフトパスの信号伝達の制約条件を満たすように配置されたバッファと、
キャプチャ時に組み合わせ回路からデータを取り込まずに所定データを取り込むダミースキャンフリップフロップと
を備える
請求項８に記載の半導体集積回路。
【請求項１０】
請求項１から請求項７のいずれかに記載のスキャンテスト回路設計方法をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路に関し、特に半導体集積回路のスキャンテスト回路、スキャンテスト回路設計方法に関する。
【背景技術】
【０００２】
近年、半導体集積回路の高速化、高集積化が進み、集積回路のテストを容易にするためにスキャン方式のテスト回路が搭載されることが多い。従来の回路設計では、セルの配置は、スキャンチェーンの配置・配線を考慮せずに、回路の機能ブロックでの配線が短くなるように決定される。
【０００３】
通常の回路設計では、スキャンチェーンは、レイアウト前に結線順序を決定されることが多く、レイアウト設計によって、スキャンフリップフロップは結線順に関わらずばらばらに配置されることになる。そのため、レイアウトによるセル配置決定後にスキャンチェーンを繋ぎ換えるリチェーン処理が行なわれ、スキャンシフトパスを短くすることが一般的である。
【０００４】
例えば、特開平１０−５０８４７号公報に開示されるスキャンパス回路の自動配置配線方法では、ネットリスト情報に基づき配置、配線を行なった後に、配線による遅延量の計算が行なわれ、スキャンパス接続間にホールド時間制約エラーが検出された場合、各スキャンパスフリップフロップのクロック入力端子とＬＳＩのテストクロック端子間の配線による遅延量が大きい順に接続されるように、各スキャンパスフリップフロップが再配線される。
【０００５】
また、ロジックＢＩＳＴモードにおけるタイミング解析でエラーを検出すると、タイミングエラーの発生箇所に、セレクタ付きスキャンフリップフロップを挿入配置することで、そのタイミングエラー発生パスをパイプライン化する技術が特開２００３−６２５３号公報に開示されている。
【０００６】
このような再配線では、全てのスキャンフリップフロップ間の配線を短くできるわけではない。したがって、スキャンシフトパス上にデータを伝達するスキャンシフト動作を高速化することができず、スキャンシフト時間がその大半を占めるスキャンテストに要する時間を短縮することができない。
【０００７】
スキャンシフト時間は、シフト動作の周期と、シフト段数との積算によって求められる。スキャンシフト時間は、シフト動作の周期を短縮するか（シフトクロックの高速化）、シフト段数を削減することにより短縮できる。しかし、シフト段数の削減は、データ入出力に使用される外部ピンの増加を招き、また、シフトクロックの高速化は上述のように単純な再配線では困難である。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平１０−５０８４７号公報
【特許文献２】特開２００３−６２５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、スキャンテスト時間を短縮する半導体集積回路、スキャンテスト回路設計方法を提供する。
【課題を解決するための手段】
【００１０】
以下に、［発明を実施するための形態］で使用される番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号・符号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１１】
本発明の観点では、スキャンテスト回路設計方法は、スキャンテストを行うためのスキャンチェーンを形成するフリップフロップを含む回路データに基づいて、スキャンシフト時にシフトレジスタを形成するようにスキャンフリップフロップを示すセル（Ｆ１〜Ｆ６）間を接続するシフトパスを生成するステップと、スキャンフリップフロップを示すセル間の信号伝達の制約条件を満たすようにリピータセル（Ｂ１〜Ｂ９）をシフトパスに挿入するステップと、スキャンチェーンに含まれるスキャンフリップフロップを示すセル（Ｆ１〜Ｆ６）及びリピータセル（Ｂ１〜Ｂ９）の間のセル間遅延時間を求めるステップと、リピータセル（Ｂ１〜Ｂ９）をフリップフロップを示すセルに置換してシフトパスを分割したときのシフトパスの遅延時間を示すシフトパス遅延時間を算出するステップと、シフトパスを分割したときの、スキャンチェーンにテストデータをシフトさせて供給するスキャンシフト時間を算出するステップと、スキャンシフト時間が最短になるシフトパスの分割位置を求めるステップと、シフトパスの分割位置のリピータセル（Ｂ２、Ｂ４、Ｂ７）をフリップフロップを示すセル（ＦＢ２、ＦＢ４、ＦＢ７）に置換した回路データを生成するステップとを具備する。
【００１２】
本発明の他の観点では、半導体集積回路は、上記のスキャンテスト回路設計方法により設計される半導体集積回路であり、スキャンテストを行うときにスキャンチェーンを形成する複数のスキャンフリップフロップ（Ｆ１〜Ｆ６）と、スキャンチェーンからテストデータを入力し、テスト結果を前記スキャンチェーンに出力する組み合わせ回路（Ｃ１０）とを具備する。このスキャンチェーンは、組み合わせ回路（Ｃ１０）からキャプチャ時にデータを取り込むスキャンフリップフロップ（Ｆ１〜Ｆ６）と、スキャンフリップフロップ間のシフトパスの信号伝達の制約条件を満たすように配置されたバッファ（Ｂ１、Ｂ３〜Ｂ４、Ｂ６、Ｂ８〜Ｂ９）と、キャプチャ時に組み合わせ回路（Ｃ１０）からデータを取り込まずに所定データを取り込むダミーフリップフロップ（Ｂ２、Ｂ４、Ｂ７）とを備える。
【発明の効果】
【００１３】
本発明によれば、スキャンテスト時間の短縮ができる半導体集積回路、スキャンテスト回路設計方法を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施の形態に係る半導体集積回路装置の設計システムの概略構成を示す図である。
【図２】本発明の実施の形態に係る半導体集積回路装置の設計システムを実現するコンピュータの構成を示す図である。
【図３】本発明の実施の形態に係る半導体集積回路装置の設計システムにおける処理手順を示す図である。
【図４】処理前の回路構成を示す図である。
【図５Ａ】フリップフロップＦ１−Ｆ２間のシフト動作レートとシフト段数の組み合わせ情報を示す図である。
【図５Ｂ】フリップフロップＦ２−Ｆ３間のシフト動作レートとシフト段数の組み合わせ情報を示す図である。
【図５Ｃ】フリップフロップＦ３−Ｆ４間のシフト動作レートとシフト段数の組み合わせ情報を示す図である。
【図５Ｄ】フリップフロップＦ４−Ｆ５間のシフト動作レートとシフト段数の組み合わせ情報を示す図である。
【図５Ｅ】フリップフロップＦ５−Ｆ６間のシフト動作レートとシフト段数の組み合わせ情報を示す図である。
【図６】処理後の回路構成を示す図である。
【図７】処理後の他の回路構成を示す図である。
【発明を実施するための形態】
【００１５】
図面を参照して本発明の実施の形態を説明する。
【００１６】
図１に、本発明の実施の形態に係る半導体集積回路装置の設計システムの概略構成を示す。半導体集積回路装置の設計システムは、設計プログラムを含む設計ツール１２と、設計ツール１２に入力される回路データなどの入力データ１１と、設計ツール１２により生成される出力データ１３と、セルライブラリ１４と、対応リスト１５とを具備する。設計ツール１２は、セルライブラリ１４および対応リスト１５を参照して入力データ１１から出力データ１３を生成する。
【００１７】
半導体集積回路装置の設計システムは、図２に例示されるコンピュータ上で動作するソフトウェアによって実現される。設計システムを搭載するコンピュータは、ＣＰＵ２２と、記憶部２３と、入出力部２１とを具備する。設計システムにおける入力データ１１、出力データ１３は、設計ツール１２、セルライブラリ１４、対応リスト１５と共に記憶部２３に記憶される。ＣＰＵ２２は、記憶部２３に格納される設計ツール１２を読み出して実行し、記憶部２３に格納されるセルライブラリ１４、対応リスト１５を参照して入力データ１１を処理し、処理された結果を示す出力データ１３を記憶部２３に格納する。入出力部２１は、設計ツール１２に対するパラメータを入力し、結果を表示し、外部の補助記憶装置に格納する。
【００１８】
図３に、本発明の実施の形態に係る設計システムにおける処理手順が示される。
【００１９】
入力データであるセル配置後のレイアウトデータが記憶部２３に格納されている（ステップＳ１７）。ここでは、レイアウトデータは、タイミングドリブンレイアウト（ＴＤＬ）後のデータとする。このセル配置後のレイアウトデータは、図４に示されるように、ユーザー論理の回路機能ブロック群を示す組み合わせ回路Ｃ１０と、フリップフロップＦ１からフリップフロップＦ６に至るスキャンチェーンとを含む回路を示す。このスキャンチェーンには、スキャンフリップフロップＦ１〜Ｆ６と、バッファＢ１〜Ｂ９とが含まれる。フリップフロップＦ１〜Ｆ６は、組み合わせ回路Ｃ１０にテストデータを供給し（接続は図示せず）、テスト結果をデータ端子から取り込む。バッファＢ１〜Ｂ９は、リピータセルであり、タイミングやレイアウト等のスキャンフリップフロップ間の信号伝達の制約条件を満たすようにスキャンシフトパス内に挿入されている。すなわち、フリップフロップＦ１とフリップフロップＦ２との間に、バッファＢ１〜Ｂ３が順に接続され、フリップフロップＦ２とフリップフロップＦ３との間に、バッファＢ４〜Ｂ７が順に接続される。フリップフロップＦ３とフリップフロップＦ４とは、バッファＢ８を介して接続され、フリップフロップＦ４とフリップフロップＦ５とは、バッファＢ９を介して接続される。フリップフロップＦ５とフリップフロップＦ４とは、バッファを介さずに接続される。
【００２０】
この配置後のレイアウトデータに基づいて、スキャンシフトパスの遅延時間情報が抽出される（ステップＳ１１）。すなわち、スキャンチェーンの回路構成を抽出し、スキャンシフトパス間に接続される各セルについて、フリップフロップ・フリップフロップ間、フリップフロップ・バッファ間、バッファ・バッファ間、バッファ・フリップフロップ間の遅延情報がそれぞれ抽出される。
【００２１】
ここでは、図４に示されるように、フリップフロップＦ１からバッファＢ１までの遅延時間は５ｎｓ、バッファＢ１からバッファＢ２までの遅延時間およびバッファＢ２からバッファＢ３までの遅延時間は４ｎｓ、バッファＢ３からフリップフロップＦ２までの遅延時間は２ｎｓと抽出される。フリップフロップＦ２からバッファＢ４までの遅延時間は８ｎｓ、バッファＢ４からバッファＢ５までの遅延時間は２ｎｓ、バッファＢ５からバッファＢ６までの遅延時間は３ｎｓ、バッファＢ６からバッファＢ７までの遅延時間は４ｎｓ、バッファＢ７からフリップフロップＦ３までの遅延時間は８ｎｓと抽出される。フリップフロップＦ３からバッファＢ８までの遅延時間は５ｎｓ、バッファＢ８からフリップフロップＦ４までの遅延時間は４ｎｓと抽出される。フリップフロップＦ４からバッファＢ９までの遅延時間およびバッファＢ９からフリップフロップＦ５までの遅延時間は５ｎｓと抽出される。フリップフロップＦ５からフリップフロップＦ６までの遅延時間は６ｎｓと抽出される。
【００２２】
また、各スキャンシフトパス間の遅延時間のうちの最大値を示す最大パス遅延値が抽出される。最大パス遅延値は、回路のスキャンシフトパスのシフト動作レートの最適化の限界値を示すことになる。図４に示されるスキャンチェーンの場合、フリップフロップＦ２・バッファＢ４間と、バッファＢ７・フリップフロップＦ３間のパス遅延時間が共に８ｎｓで最大パス遅延値となる。
【００２３】
各セル間の遅延情報が抽出されると、その遅延情報に基づいて、各スキャンシフトパス間において、フリップフロップに置換されるバッファの組み合わせ毎に、パス遅延が順次計算される（ステップＳ１２）。ここでは、フリップフロップ間毎に区切って計算される。フリップフロップ間において、置換なし（０段）、１個のバッファが置換されるときのバッファの組み合わせ（１段）、２個のバッファが置換されるときのバッファの組み合わせ（２段）というように、全てのバッファがフリップフロップに置換されるまで順に、置換後の遅延時間が算出される。
【００２４】
フリップフロップＦ１−Ｆ２間の処理を例に具体的に説明する。フリップフロップＦ１の出力は、バッファＢ１、Ｂ２、Ｂ３を介してフリップフロップＦ２に接続される。バッファＢ１、Ｂ２、Ｂ３を置換せずに、そのまま動作させると、スキャンシフトの動作レートは、フリップフロップＦ１−Ｆ２間の遅延である１５ｎｓとなる（図５Ａ−０段）。
【００２５】
バッファＢ１をフリップフロップＦＢ１に置換すると、シフト段数は１段増加し、シフトパスはフリップフロップＦ１−ＦＢ１間と、フリップフロップＦＢ１−Ｆ２間とに分割される。フリップフロップＦＢ１の前段（Ｆ１−ＦＢ１間）の遅延時間は５ｎｓとなり、フリップフロップＦＢ１の後段（ＦＢ１-Ｆ２間）の遅延時間は１０ｎｓとなる（＜Ｂ１＞＝（５、１０））。スキャンシフト動作は、大きな遅延に合わせて動作する必要があるため、フリップフロップＦ１−Ｆ２間のバッファＢ１をフリップフロップに置換したときのスキャンシフトの動作レート（可能動作レート）は、１０ｎｓとなる。
【００２６】
バッファＢ２をフリップフロップＦＢ２に置換すると、シフト段数は１段増加し、シフトパスはフリップフロップＦ１−ＦＢ２間と、フリップフロップＦＢ２−Ｆ２間とに分割される。フリップフロップＦＢ２の前段（Ｆ１−ＦＢ２間）の遅延時間は９ｎｓとなり、フリップフロップＦＢ２の後段（ＦＢ２-Ｆ２間）の遅延時間は６ｎｓとなる（＜Ｂ２＞＝（９、６））。したがって、フリップフロップＦ１−Ｆ２間のバッファＢ２をフリップフロップに置換したときのスキャンシフトの動作レート（可能動作レート）は、９ｎｓとなる。
【００２７】
バッファＢ３をフリップフロップＦＢ３に置換すると、シフト段数は１段増加し、シフトパスはフリップフロップＦ１−ＦＢ３間と、フリップフロップＦＢ３−Ｆ２間とに分割される。フリップフロップＦＢ３の前段（Ｆ１−ＦＢ３間）の遅延時間は１３ｎｓとなり、フリップフロップＦＢ３の後段（ＦＢ３-Ｆ２間）の遅延時間は２ｎｓとなる（＜Ｂ３＞＝（１３、２））。したがって、フリップフロップＦ１−Ｆ２間のバッファＢ３をフリップフロップに置換したときのスキャンシフトの動作レート（可能動作レート）は、１３ｎｓとなる。
【００２８】
それぞれのバッファをフリップフロップ化したときの最大の遅延値である可能動作レート（１０ｎｓ、９ｎｓ、１３ｎｓ）のうちの最小値である９ｎｓが、シフト段数を１段増加するときのＦ１−Ｆ２間の最小シフト動作レートとして抽出される。この最小シフト動作レート９ｎｓは、フリップフロップＦ１〜Ｆ２間で、シフトパスを途中で１段区切るときに、最もシフト動作レートを短縮可能な値である。
【００２９】
バッファＢ１、Ｂ２をフリップフロップＦＢ１、ＦＢ２に置換すると、シフト段数は２段増加し、シフトパスはフリップフロップＦ１−ＦＢ１間、ＦＢ１−ＦＢ２間、ＦＢ２−Ｆ２間に分割される。フリップフロップＦＢ１の前段（Ｆ１−ＦＢ１間）の遅延時間は５ｎｓとなり、フリップフロップＦＢ１の後段かつフリップフロップＦＢ２の前段（ＦＢ１−ＦＢ２間）の遅延時間は４ｎｓとなり、フリップフロップＦＢ２の後段（ＦＢ２-Ｆ２間）の遅延時間は６ｎｓとなる（＜Ｂ１，Ｂ２＞＝（５、４、６））。したがって、フリップフロップＦ１−Ｆ２間のバッファＢ１、Ｂ２をフリップフロップに置換したときのスキャンシフトの動作レート（可能動作レート）は、６ｎｓとなる。
【００３０】
バッファＢ１、Ｂ３をフリップフロップＦＢ１、ＦＢ３に置換すると、シフト段数は２段増加し、シフトパスはフリップフロップＦ１−ＦＢ１間、ＦＢ１−ＦＢ３間、ＦＢ３−Ｆ２間に分割される。フリップフロップＦＢ１の前段（Ｆ１−ＦＢ１間）の遅延時間は５ｎｓとなり、フリップフロップＦＢ１の後段かつフリップフロップＦＢ３の前段（ＦＢ１−ＦＢ３間）の遅延時間は８ｎｓとなり、フリップフロップＦＢ３の後段（ＦＢ３-Ｆ２間）の遅延時間は２ｎｓとなる（＜Ｂ１，Ｂ３＞＝（５、８、２））。したがって、フリップフロップＦ１−Ｆ２間のバッファＢ１、Ｂ３をフリップフロップに置換したときのスキャンシフトの動作レート（可能動作レート）は、８ｎｓとなる。
【００３１】
バッファＢ２、Ｂ３フリップフロップＦＢ２、ＦＢ３に置換すると、シフト段数は２段増加し、シフトパスはフリップフロップＦ１−ＦＢ２間、ＦＢ２−ＦＢ３間、ＦＢ３−Ｆ２間に分割される。フリップフロップＦＢ２の前段（Ｆ１−ＦＢ２間）の遅延時間は９ｎｓとなり、フリップフロップＦＢ２の後段かつフリップフロップＦＢ３の前段（ＦＢ２−ＦＢ３間）の遅延時間は４ｎｓとなり、フリップフロップＦＢ３の後段（ＦＢ３-Ｆ２間）の遅延時間は２ｎｓとなる（＜Ｂ２、Ｂ３＞＝（９、４、２））。したがって、フリップフロップＦ１−Ｆ２間のバッファＢ２、Ｂ３をフリップフロップに置換したときのスキャンシフトの動作レート（可能動作レート）は、９ｎｓとなる。
【００３２】
それぞれのバッファをフリップフロップ化したときの最大の遅延値である可能動作レート（６ｎｓ、８ｎｓ、９ｎｓ）のうちの最小値である６ｎｓが、シフト段数を２段増加するときのＦ１−Ｆ２間の最小シフト動作レートとして抽出される。この最小シフト動作レート６ｎｓは、フリップフロップＦ１〜Ｆ２間で、シフトパスを途中で２段に区切るときに、最もシフト動作レートを短縮可能な値である。
【００３３】
バッファＢ１、Ｂ２、Ｂ３をフリップフロップＦＢ１、ＦＢ２、ＦＢ３に置換すると、シフト段数は３段増加し、シフトパスはフリップフロップＦ１−ＦＢ１間、ＦＢ１−ＦＢ２間、ＦＢ２−ＦＢ３間、ＦＢ３−Ｆ２間に分割される。フリップフロップＦＢ１の前段（Ｆ１−ＦＢ１間）の遅延時間は５ｎｓとなり、フリップフロップＦＢ１の後段かつフリップフロップＦＢ２の前段（ＦＢ１−ＦＢ２間）の遅延時間は４ｎｓとなり、フリップフロップＦＢ２の後段かつフリップフロップＦＢ３の前段（ＦＢ２−ＦＢ３間）の遅延時間は４ｎｓとなり、フリップフロップＦＢ３の後段（ＦＢ３−Ｆ２間）の遅延時間は２ｎｓとなる（＜Ｂ１、Ｂ２、Ｂ３＞＝（５、４、４、２））。したがって、フリップフロップＦ１−Ｆ２間のバッファＢ１、Ｂ２、Ｂ３をフリップフロップに置換したときのスキャンシフトの動作レート（可能動作レート）は、５ｎｓとなる。
【００３４】
シフト段数を３段増加する場合は、１通りの組み合わせしかないため、シフト段数を３段増加するときのＦ１−Ｆ２間の最小シフト動作レートは、５ｎｓとなる。この最小シフト動作レート５ｎｓは、フリップフロップＦ１〜Ｆ２間で、シフトパスを途中で３段に区切るときに、最もシフト動作レートを短縮可能な値である。
【００３５】
次に、スキャンテスト時のシフト動作は、遅延の大きいクリティカルなシフトパスの遅延値で動作する必要があるため、上記のようにバッファをフリップフロップ化して得られる遅延時間を示す組み合わせ情報から段数毎に最小のシフト動作レートを算出する。最小シフト動作レートは、増加シフト段数毎に、可能動作レートの最小値を求めるとよい。したがって、最小動作レートは、シフト段数が１段増加の場合には９ｎｓ、シフト段数が２段増加の場合には６ｎｓ、シフト段数が３段増加の場合には５ｎｓとなる。
【００３６】
以上のように、全てのシフト段数の組み合わせについて行い、各シフト段数における最小シフト動作レートを算出する。図５Ｂ〜５Ｅに示されるように、各スキャンフリップフロップ間で同様の処理が行われ、各最小シフト動作レートが算出される。ここでは、処理量削減のためにフリップフロップ間毎に区切って処理するように説明したが、全区間を対象にバッファの置換位置の組み合わせを求めてもよい。
【００３７】
算出された結果は、図５Ａ〜図５Ｅに示されるように、フリップフロップに置換するバッファを示すＦＦ化位置に対応して、シフトパス遅延の組み合わせ、すなわち、新しいシフトパス遅延が求められる。新しいシフトパスにおける最大の遅延を有するシフトパスがそのシフトパスの動作速度を制限することになり、その動作速度を示すそれぞれの新しいシフトパスにおける可能動作レートが求められる。フリップフロップ間の挿入段数毎に可能動作レートの最小値が求められ、この最小値が、そのフリップフロップ間において挿入段数分のバッファがフリップフロップに置換されたときの最小シフト動作レートとなる。
【００３８】
したがって、図４に示されるスキャンチェーンの場合、フリップフロップＦ１−Ｆ２間では、図５Ａに示されるように、元の回路の最小動作レートが１５ｎｓであるが、バッファＢ２をフリップフロップ化することによって（シフト段数１段増加）、最小シフト動作レートは９ｎｓとなる。バッファＢ１、Ｂ２の２個のバッファをフリップフロップ化することによって（シフト段数２段増加）、最小シフト動作レートは６ｎｓとなる。さらに、全てのバッファＢ１、Ｂ２、Ｂ３をフリップフロップ化すると（シフト段数３段増加）、最小シフト動作レートは５ｎｓとなる。
【００３９】
フリップフロップＦ２−Ｆ３間では、図５Ｂに示されるように、元の回路の最小動作レートが２５ｎｓであるが、バッファＢ６をフリップフロップ化することによって（シフト段数１段増加）、最小シフト動作レートは１３ｎｓとなり、バッファＢ４、Ｂ７をフリップフロップ化することによって（シフト段数２段増加）、最小シフト動作レートは９ｎｓとなり、バッファＢ４、Ｂ５、Ｂ７をフリップフロップ化することによって（シフト段数３段増加）、最小シフト動作レートは８ｎｓとなる。全てのバッファＢ４、Ｂ５、Ｂ６、Ｂ７をフリップフロップ化しても（シフト段数４段増加）、最小シフト動作レートは８ｎｓとなる。
【００４０】
フリップフロップＦ３−Ｆ４間では、図５Ｃに示されるように、バッファＢ８をフリップフロップ化することによって（シフト段数１段増加）、最小シフト動作レート９ｎｓを５ｎｓにすることができる。フリップフロップＦ４−Ｆ５間では、図５Ｄに示されるように、バッファＢ９をフリップフロップ化することによって（シフト段数１段増加）、最小シフト動作レート１０ｎｓを５ｎｓにすることができる。フリップフロップＦ５−Ｆ６間では、バッファを介在しないため、図５Ｅに示されるように、最小シフト動作レートは３ｎｓである。
【００４１】
次に、バッファをフリップフロップに置換して増加するシフト段数と、そのときの最小シフト動作レートとを求め、スキャンシフト時間を算出する（ステップＳ１３）。ここでは、まず上述のように得られた最小シフト動作レートを長い順に並べ、重複を削除する。図５Ａ〜図５Ｅに示される値では、２５、１５、１３、１０、９、８、…となる。しかし、最小シフト動作レートは、スキャンシフトパスの遅延時間情報の１つとして求められた最大パス遅延値８ｎｓを下回る値にまで短縮することはできない。そのため、シフト動作レートの候補は、２５、１５、１３、１０、９、８の６種類となる。
【００４２】
バッファをフリップフロップに置換しない場合のシフト動作レートは２５ｎｓであり、シフト段数は６段である。このときのスキャンシフト時間は、２５ｎｓ×６段＝１５０ｎｓと計算される。
【００４３】
シフト動作レート１５ｎｓで動作させるためには、遅延時間が２５ｎｓであるシフトパス（フリップフロップＦ２−Ｆ３間）を分割するとよいので、バッファＢ６（またはバッファＢ５）をフリップフロップに置換し、シフト段数を１段増加することにより実現可能となる。したがって、スキャンシフト時間は、１５ｎｓ×（６＋１）段＝１０５ｎｓと計算される。
【００４４】
シフト動作レート１３ｎｓで動作可能とするためには、遅延時間２５ｎｓのシフトパス（フリップフロップＦ２−Ｆ３間）および遅延時間１５ｎｓのシフトパス（フリップフロップＦ１−Ｆ２間）を分割して遅延時間を１３ｎｓ以下にするとよい。したがって、バッファＢ２（またはバッファＢ１／Ｂ３）と、バッファＢ６とをフリップフロップに置換し、シフト段数を２段増加することにより実現できる。その場合、スキャンシフト時間は、１３ｎｓ×（６＋２）段＝１０４ｎｓとなる。
【００４５】
シフト動作レート１０ｎｓで動作可能とするためには、遅延時間１５ｎｓのシフトパス（フリップフロップＦ１−Ｆ２間）を２つのシフトパスに分割し、遅延時間２５ｎｓのシフトパス（フリップフロップＦ２−Ｆ３間）を３つのシフトパスに分割する必要がある。バッファＢ２（またはＢ１）と、バッファＢ４、Ｂ７（またはバッファＢ５、Ｂ７）とをフリップフロップに置換し、シフト段数を３段増加することにより実現できる。スキャンシフト時間は、１０ｎｓ×（６＋３）段＝９０ｎｓとなる。
【００４６】
シフト動作レート９ｎｓで動作可能とするためには、遅延時間１５ｎｓのシフトパス（フリップフロップＦ１−Ｆ２間）を２つのシフトパスに分割し、遅延時間２５ｎｓのシフトパス（フリップフロップＦ２−Ｆ３間）を３つのシフトパスに分割し、遅延時間１０ｎｓのシフトパス（フリップフロップＦ４−Ｆ５間）を２つのシフトパスに分割する必要がある。バッファＢ２と、バッファＢ４、Ｂ７と、バッファＢ９とをフリップフロップに置換し、シフト段数を４段増加することにより実現できる。スキャンシフト時間は、９ｎｓ×（６＋４）段＝９０ｎｓとなる。
【００４７】
さらに、シフト動作レート８ｎｓで動作可能とするためには、遅延時間１５ｎｓのシフトパス（フリップフロップＦ１−Ｆ２間）を３つのシフトパスに分割し、遅延時間２５ｎｓのシフトパス（フリップフロップＦ２−Ｆ３間）を４つのシフトパスに分割し、遅延時間９ｎｓのシフトパス（フリップフロップＦ３−Ｆ４間）を２つのシフトパスに分割し、遅延時間１０ｎｓのシフトパス（フリップフロップＦ４−Ｆ５間）を２つのシフトパスに分割する必要がある。バッファＢ１、Ｂ２と、バッファＢ４、Ｂ５、Ｂ７と、バッファＢ８と、バッファＢ９とをフリップフロップに置換し、シフト段数を７段増加することにより実現できる。スキャンシフト時間は、８ｎｓ×（６＋７）段＝１０４ｎｓとなる。
【００４８】
さらに８ｎｓ未満に短縮してもフリップフロップＦ２−Ｆ３間にバッファを置換することによってパス分割できない遅延時間８ｎｓのパスがあり、動作レートを短縮することはできない。
【００４９】
スキャンシフト段数が求められると、スキャンシフトパスの段数の増加分の情報からスキャンシフト時間が計算される。さらに、最もスキャンシフト時間が短くなるシフト動作レートが選択される（ステップＳ１４）。スキャンシフト時間は、上記のスキャンシフト段数の増分と、シフト動作レートから下記のように計算される。
（スキャンシフト時間）＝（シフト動作レート）×（スキャンシフト段数）
１５０ｎｓ        ＝      ２５ｎｓ      ×      ６段
１０５ｎｓ        ＝      １５ｎｓ      ×    （６＋１）段
１０４ｎｓ        ＝      １３ｎｓ      ×    （６＋２）段
９０ｎｓ        ＝      １０ｎｓ      ×    （６＋３）段
９０ｎｓ        ＝        ９ｎｓ      ×    （６＋４）段
１０４ｎｓ        ＝        ８ｎｓ      ×    （６＋７）段
【００５０】
この計算結果からスキャンシフト動作レートが１０ｎｓまたは９ｎｓのとき、スキャンシフト時間は最短の９０ｎｓとなることがわかる。同じスキャンシフト時間であれば、（１）なるべくフリップフロップ化するバッファが少なくなるように、（２）シフト動作レートが長くなるように（動作周波数が低くなるように）、選択されることが好ましい。すなわち、スキャンシフト段数が少なくシフト動作レートが長い方を選択する。したがって、ここではスキャンシフト段数が３段増加してシフト動作レートが１０ｎｓになるスキャンシフトパスの分割が選択される。
【００５１】
最短スキャンシフト時間が求められると、そのシフト動作レートを実現するために置換されるべきバッファが選択され、フリップフロップに置換される（ステップＳ１５）。すなわち、スキャンシフトパスのタイミングの最適化を行なう。ここでは、最短スキャンシフト時間９０ｎｓとなるように、３個のバッファをフリップフロップに置換する。すなわち、フリップフロップＦ１−Ｆ２間のバッファＢ２をフリップフロップＦＢ２に置換してこの区間の可能動作レートを９ｎｓとし、フリップフロップＦ２−Ｆ３間のバッファＢ４およびＢ７をフリップフロップＦＢ４およびＦＢ７に置換してこの区間の可能動作レートを９ｎｓとする。フリップフロップＦ３−Ｆ４間では可能動作レートは９ｎｓ、フリップフロップＦ４−Ｆ５間では可能動作レートは１０ｎｓ、フリップフロップＦ５−Ｆ６間では可能動作レートは６ｎｓであるからシフト動作レートの条件を満足する。このように、バッファをフリップフロップに置換した結果を示す回路が図６に示される。このように置換することにより、シフト段数は９段となり、各フリップフロップ間の遅延時間は、図６に示されるように、９ｎｓ、６ｎｓ、８ｎｓ、９ｎｓ、８ｎｓ、９ｎｓ、１０ｎｓ、６ｎｓとなる。ここでは、フリップフロップＦ２−Ｆ３間の可能動作レートを最小シフト動作レートの９ｎｓとして置換されるバッファが選択されたが、スキャンシフト動作レートが１０ｎｓであるから、バッファＢ５およびＢ７をフリップフロップＦＢ５およびＦＢ７に置換してフリップフロップＦ２−Ｆ３間の可能動作レートを１０ｎｓとしてもよい。
【００５２】
図６に示される回路では、バッファから置換されたフリップフロップは、シフトするデータをシフトクロックに同期して取り込んで出力するフリップフロップとしている。置換後のフリップフロップをキャプチャ動作も行なうスキャンフリップフロップとするときには、図７に示されるように、キャプチャ動作時に所定の値を取り込むようにユーザー機能接続用のデータ端子をレベル固定論理に接続する必要がある。図７では、データ“０”を取り込むように、フリップフロップの入力端子は、接地電圧に接続されている。
【００５３】
このように、所定のバッファがフリップフロップに置換されたレイアウトデータは、記憶部２３に格納され（ステップＳ１８）、最適化処理は終了する。
【００５４】
なお、最大パス遅延値８ｎｓを求めておくと、この条件以上の短縮はできないため、ステップＳ１２において分割組み合わせ処理の一部を省略することも可能である。例えば、フリップフロップＦ１−Ｆ２間では、バッファＢ１、Ｂ２をフリップフロップ化すると、最小シフト動作レート６ｎｓが得られるため、他の組み合わせを省略してもよい。また、３段以上の分割をしても、段数の増加が見込まれるだけであり、これも省略することができる。このように処理を省略することにより、バッファをフリップフロップに置換する組み合わせ情報が減少し、計算量（計算時間）とメモリ使用量の増加を抑制しながら、本発明が適用可能となる。
【００５５】
上記実施の形態では、セル配置（ＴＤＬ：タイミングドリブンレイアウト）後のレイアウトデータを入力データとしているが、ＣＴＳ（Ｃｌｏｃｋ  Ｔｒｅｅ  Ｓｙｎｔｈｅｓｉｓ：クロックツリー合成）後や配線後のレイアウトデータでも適用可能である。また、スキャンシフトパスの最適化の観点からスキャンチェーンのリチェーン処理後に適用されることが好ましい。
【００５６】
さらに、近年の回路装置では、複数本（例えば、数百〜数千本）のスキャンチェーンを有する回路が頻繁に設計されている。本発明は、複数のスキャンチェーンを有する回路にも適用可能である。また、スキャンシフトパスを分割する場合に、置換されるリピータセルはバッファで示したが、インバータセルでも本発明は適用可能である。さらに、置換されるリピータセルの選択方法は、スキャンシフトパスに含まれるセル間の遅延時間に基づいて選択され、上記手順に限定されることはない。各スキャンシフトパス間の遅延のうち、最大のパス遅延値を抽出する処理は、パス遅延の組み合わせ情報を作成する際に抽出してもよい。また、スキャンフリップフロップＦ５−Ｆ６間のように、バッファが挿入されていないスキャンシフトパスを除外して、セル間の組み合わせ遅延を算出するようにしてもよい。
【００５７】
上述のように、本発明によれば、半導体集積回路のスキャンテスト回路設計手法において、スキャンシフトパス間に挿入されている１つ以上のバッファをフリップフロップに置換して、スキャンシフトパスを分割することによって短縮できる遅延時間と増加するシフト段数とに基づいて、最適な置換位置を求め、シフト動作の周期を短縮することができる。したがって、スキャンテストに費やされる時間を短縮することができる。
【００５８】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記実施の形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００５９】
１１  入力データ
１２  設計ツール
１３  出力データ
１４  セルライブラリ
１５  対応リスト
２１  入出力部
２２  ＣＰＵ
２３  記憶部
Ｂ１〜Ｂ９  バッファ
Ｃ１０  組み合わせ回路
Ｆ１〜Ｆ６  フリップフロップ
ＦＢ２、ＦＢ４、ＦＢ７  フリップフロップ
【図１】
2012146865.tif 000003
【図２】
2012146865.tif 000004
【図３】
2012146865.tif 000005
【図４】
2012146865.tif 000006
【図５Ａ】
2012146865.tif 000007
【図５Ｂ】
2012146865.tif 000008
【図５Ｃ】
2012146865.tif 000009
【図５Ｄ】
2012146865.tif 000010
【図５Ｅ】
2012146865.tif 000011
【図６】
2012146865.tif 000012
【図７】
2012146865.tif 000013