(57)【特許請求の範囲】
【請求項１】
データをシリアルに転送するシリアル動作を行う直列接続された複数のフリップフロップに含まれる複数のＦ／Ｆグループであって、各Ｆ／Ｆグループは２以上の直列接続された前記フリップフロップにより構成される、複数のＦ／Ｆグループと、
前記Ｆ／Ｆグループに含まれるフリップフロップの出力が前記Ｆ／Ｆグループ内において一致する場合に第１の信号を出力し、そうでない場合に第２の信号を出力する連続信号判定回路と、
前記Ｆ／Ｆグループの先頭以外のフリップフロップに対し、前記第１の信号を受信する場合にはクロック信号を供給せず、前記第２の信号を受信する場合にはクロック信号を供給するクロックゲーティング回路と、
を備えることを特徴とする半導体集積回路。
【請求項２】
前記Ｆ／Ｆグループの含むフリップフロップの数ｍは、式（１）で与えられる整数ｍ＿ｂｅｓｔに対し、ｍ＿ｂｅｓｔ−１≦ｍ≦ｍ＿ｂｅｓｔ＋３の範囲にあることを特徴とする請求項１に記載の半導体集積回路。
【数１】
0005361930.tif 000009
ここで、関数Nearest_intは、引数から最も近い整数を返す関数であり、ｎは、データをシリアルに転送するシリアル動作を行う直列接続された前記複数のフリップフロップに入力されるデータにおける同一データ連続数と、前記同一データ連続数の発生回数との積が最大となる整数である。
【請求項３】
前記直列接続された複数のフリップフロップは、前記半導体集積回路のスキャンイン端子およびスキャンアウト端子を用いて、スキャンテストモード時に前記フリップフロップを制御および監視可能なスキャンチェーンであり、
スキャンテストモード時に、前記連続信号判定回路から出力された信号を前記クロックゲーティング回路に出力するマルチプレクサをさらに備えることを特徴とする請求項１または２に記載の半導体集積回路。
【請求項４】
前記直列接続された複数のフリップフロップは、通常動作モード時に所定の論理機能を実現するように構成された論理ネット内に含まれるシフトレジスタであることを特徴とする請求項１または２に記載の半導体集積回路。
【請求項５】
前記連続信号判定回路は、前記Ｆ／Ｆグループ内の全てのフリップフロップの出力信号または入力信号について、論理積（ＡＮＤ）と、論理和（ＯＲ）の反転（ＮＯＴ）との否定論理和（ＮＯＲ）を取るものとして構成されていることを特徴とする請求項１乃至４のいずれかに記載の半導体集積回路。
【請求項６】
半導体集積回路の論理ネットに対して、ＤＦＴ回路を挿入するテスト容易化設計を施すことにより、ＤＦＴ挿入後の論理ネット、及びスキャンチェーンを構成するフリップフロップの接続状態を示すＤＦＴ情報を作成し、
前記ＤＦＴ挿入後の論理ネットに関する情報および前記ＤＦＴ情報を用いて、テストパターンを生成し、
前記テストパターンを解析することにより、同一データ連続数と、前記同一データ連続数の発生回数との積が最大となる同一データ連続数である最大有効データ連続数を取得し、
前記最大有効データ連続数に基づいて、グループ化要素数を算出し、
前記グループ化要素数を用いて、前記ＤＦＴ情報にグループ化情報を追加し、グループ化後のＤＦＴ情報を作成し、
前記グループ化後のＤＦＴ情報に従って前記スキャンチェーンを複数のＦ／Ｆグループに分割し、前記Ｆ／Ｆグループの各々に低消費電力化テスト回路を挿入することにより、前記論理ネットを更新する、
を備えることを特徴とする半導体集積回路の設計方法。
【請求項７】
半導体集積回路の論理ネットからシフトレジスタを抽出し、前記シフトレジスタを構成するフリップフロップの接続状態を示すシフトレジスタ情報を作成し、
前記論理ネットの論理シミュレーションを行うことにより、前記シフトレジスタ上をシフトするデータを取得し、
前記データを解析することにより、同一データ連続数と、前記同一データ連続数の発生回数との積が最大となる同一データ連続数である最大有効データ連続数を取得し、
前記最大有効データ連続数に基づいて、グループ化要素数を算出し、
前記グループ化要素数を用いて、前記シフトレジスタ情報にグループ化情報を追加し、グループ化後のシフトレジスタ情報を作成し、
前記グループ化後のシフトレジスタ情報に従って前記シフトレジスタを複数のＦ／Ｆグループに分割し、前記Ｆ／Ｆグループの各々に低消費電力化回路を挿入することにより、前記論理ネットを更新する、
を備えることを特徴とする半導体集積回路の設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、半導体集積回路およびその設計方法に関する。
【背景技術】
【０００２】
近年、ＬＳＩ（大規模集積回路）のさらなる高集積化および高速化が進展する一方、ＬＳＩ全体のピン数に対する制限から、電源に割り当てられるピン数に対しては強い制約が課せられている。このため、多数の回路ブロックが電源配線を共有することとなる結果、ＬＳＩの動作中に、電源電圧の低下やグラウンド電位の上昇が発生するおそれがある。また、最悪の場合には、ＬＳＩの誤動作を引き起こす。このような所謂ＩＲドロップ問題がＬＳＩの高集積化および高速化の進展に伴って深刻化している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２２３７９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、ＩＲドロップ問題を緩和することのできる半導体集積回路およびその設計方法を提供することである。
【課題を解決するための手段】
【０００５】
本発明の一実施形態による半導体集積回路は、データをシリアルに転送するシリアル動作を行う直列接続された複数のフリップフロップに含まれる複数のＦ／Ｆグループであって、各Ｆ／Ｆグループは２以上の直列接続された前記フリップフロップにより構成される、複数のＦ／Ｆグループと、前記Ｆ／Ｆグループに含まれるフリップフロップの出力が前記Ｆ／Ｆグループ内において一致する場合に第１の信号を出力し、そうでない場合に第２の信号を出力する連続信号判定回路と、前記Ｆ／Ｆグループの先頭以外のフリップフロップに対し、前記第１の信号を受信する場合にはクロック信号を供給せず、前記第２の信号を受信する場合にはクロック信号を供給するクロックゲーティング回路とを備える。
【図面の簡単な説明】
【０００６】
【図１】本発明の一実施形態に係る半導体集積回路の構成を示す図である。
【図２】本発明によるクロックゲーティングの様子の一例を説明するための図である。
【図３】最大有効データ連続数を求めるためのヒストグラムの一例である。
【図４】グループ化要素数に対する有効クロックゲーティング率を示すグラフである。
【図５】本発明に一実施形態に係る半導体集積回路の設計方法を示すフロー図である。
【発明を実施するための形態】
【０００７】
以下、本発明に係る実施形態について図面を参照しながら説明する。なお、各図において同等の機能を有する構成要素には同一の符号を付し、同一符号の構成要素の詳しい説明は繰り返さない。
【０００８】
図１は、本発明の第１の実施形態による半導体集積回路１００の構成の一部を示している。図１に示すように、半導体集積回路１００は、スキャンテスト対象の組合せロジック部１０１と、Ｆ／Ｆグループ１１と、連続信号判定回路１３０と、を備える。
【０００９】
この半導体集積回路１００は、テストモード信号（ＴＭ）により、通常動作モードとスキャンテストモード（シフト動作モード）とを切替えることができる。即ち、ＴＭ＝０のとき、通常動作する通常動作モードとなり、ＴＭ＝１のとき、スキャンテストを行うスキャンテストモードとなる。
【００１０】
組合せロジック部１０１は、ＡＮＤ回路、ＯＲ回路、インバータ、バッファなどの組合せ論理回路を組み合わせて構成され、図１中に示したフリップフロップ、ラッチとともに通常動作時における所定の論理機能を実現するように構成されたものである。
【００１１】
Ｆ／Ｆグループ１１は、フリップフロップ（スキャンＦ／Ｆ）１１１〜１１４及びマルチプレクサ１２１〜１２４を有する。フリップフロップ１１１〜１１４はマルチプレクサ１２２〜１２４を介して直列接続されている。
【００１２】
図１に示すように、マルチプレクサ１２１〜１２４は、一方の入力端子が組合せロジック部１０１と接続され、他方の入力端子がスキャンイン端子（ＳＩ）または前段のフリップフロップと接続され、また、セレクト信号としてテストモード信号を用いる。
【００１３】
よって、通常動作モードでは、組合せロジック部１０１から出力されたデータが、マルチプレクサ１２１〜１２４を経由して、それぞれフリップフロップ１１１〜１１４に格納される。一方、スキャンテストモードでは、スキャンイン端子（または前段（図示せず）のフリップフロップの出力）のデータおよびフリップフロップ１１１〜１１３から出力されたデータが、マルチプレクサ１２１〜１２４を経由して、それぞれフリップフロップ１１１〜１１４に格納される。即ち、スキャンテストモードでは、フリップフロップ１１１，１１２，・・・は直列接続されて、各々のフリップフロップの出力（ＳＯ出力またはＱ出力）は、次段のフリップフロップに入力される。このように、フリップフロップ１１１〜１１４に格納されたデータはクロックサイクルごとに次段のフリップフロップにシフトする。なお、ここではＦ／Ｆグループ１１について説明したが、Ｆ／Ｆグループ１２以降の他のＦ／Ｆグループでも同様である。
【００１４】
Ｆ／Ｆグループ１１の後ろにはＦ／Ｆグループ１２が接続されている。Ｆ／Ｆグループ１２は、フリップフロップ２１１〜２１４及びマルチプレクサ２２１〜２２４を有する（フリップフロップ２１２〜２１４及びマルチプレクサ２２２〜２２４は図示せず）。図１に示すように、Ｆ／Ｆグループ１２は、Ｆ／Ｆグループ１１の最後尾のフリップフロップ１１４にマルチプレクサ２２１を介して接続されたフリップフロップ２１１を先頭のＦ／Ｆとして有する。
【００１５】
図示しないが、Ｆ／Ｆグループ１２に続いて、Ｆ／Ｆグループ１３，１４，・・・が順次接続されている。
【００１６】
Ｆ／Ｆグループ１１，１２，・・・は、スキャンテストモード時に、半導体集積回路１００のスキャンイン端子およびスキャンアウト端子を用いてフリップフロップ１１１，１１２，・・・を制御および監視可能なスキャンチェーンを構成する。スキャンチェーンは、組合せロジック部１０１の外部に構成されており、直列接続された複数のフリップフロップ１１１〜１１４，２１１・・・を有し、データをシリアルに転送するシリアル動作を行う。Ｆ／Ｆグループ１１，１２，・・・は、各々が所定数（本実施形態では４個）のフリップフロップを有するように、スキャンチェーンを分割したものである。
【００１７】
なお、図示しないが、フリップフロップ１１１，１１２，・・・の出力端子は組合せロジック部１０１とも接続されており、通常動作モード時においてフリップフロップ１１１，１１２，・・・の出力は組合せロジック部１０１に入力される。
【００１８】
連続信号判定回路１３０は、Ｆ／Ｆグループ１１に含まれるフリップフロップ１１１〜１１４の出力（Ｑ出力またはＳＯ出力）が一致する場合、即ち、フリップフロップ１１１〜１１４の出力が全て“０”又は全て“１”の場合に“０”を出力し、そうでない場合に“１”を出力する。
【００１９】
連続信号判定回路１３０は、図１に示すように、論理積ゲート１３１〜１３３と、論理和ゲート１３４〜１３６と、インバータ１３７と、否定論理和ゲート１３８とを有し、Ｆ／Ｆグループ１１内のフリップフロップ１１１〜１１４の出力信号について、論理積（ＡＮＤ）と、論理和（ＯＲ）の反転（ＮＯＴ）との否定論理和（ＮＯＲ）を取るものとして構成されている。
【００２０】
より具体的には、クロックゲーティング制御線１０３に出力する否定論理和ゲート１３８には、論理積ゲート１３１の出力とインバータ１３７の出力とが入力される。論理積ゲート１３１の出力は、フリップフロップ１１１〜１１４の出力が全て“１”のときにのみ“１”となる。一方、インバータ１３７の出力は、フリップフロップ１１１〜１１４の出力が全て“０”のときにのみ“１”となる。したがって、フリップフロップ１１１〜１１４の出力が全て“１”又は“０”の場合にのみ、否定論理和ゲート１３８の出力は“０”となる。
【００２１】
Ｆ／Ｆグループ１２に対しても連続信号判定回路１３０と同様な構成の連続信号判定回路２３０が設けられる。このように、Ｆ／Ｆグループ１２以降のＦ／Ｆグループに対しても、そのＦ／Ｆグループが有するフリップフロップの出力が一致するか否かを判定する回路がそれぞれ設けられている。
【００２２】
図１に示すように、半導体集積回路１００は、マルチプレクサ１４１，１４２と、クロックゲーティング回路１５１，１５２とをさらに備えている。
【００２３】
マルチプレクサ１４１，１４２は、それぞれクロックゲーティング回路１５１，１５２のイネーブル信号を出力するものであり、いずれもテストモード信号をセレクト信号として用いる。
【００２４】
マルチプレクサ１４１は、ＴＭ＝０（通常動作モード）のときクロックゲーティング制御線１０２の信号を出力し、ＴＭ＝１（スキャンテストモード）のときクロックゲーティング制御線１０３の信号を出力する。マルチプレクサ１４２は、ＴＭ＝０のときクロックゲーティング制御線１０２の信号を出力し、ＴＭ＝１のときは常に信号“１”を出力する。
【００２５】
クロックゲーティング制御線１０２には、通常動作モードで行われるクロックゲーティング用の制御信号が流れる。一方、クロックゲーティング制御線１０３には、連続信号判定回路１３０から出力された信号が流れる。
【００２６】
クロックゲーティング回路１５１，１５２は、クロックゲーティング（クロック信号の遮断）を行う回路である。なお、クロックゲーティング回路１５１，１５２はそれぞれ、例えば、２入力のＡＮＤゲートを用いて構成することができる。
【００２７】
図１に示すように、クロックゲーティング回路１５１は、フリップフロップ１１２〜１１４に対してクロック信号の供給／遮断を行い、クロックゲーティング回路１５２は、フリップフロップ１１１に対してクロック信号の供給／遮断を行う。また、クロックゲーティング回路１５２はＦ／Ｆグループ１２以降のＦ／Ｆグループの先頭のフリップフロップに対してもクロック信号の供給／遮断を行う。
【００２８】
クロックゲーティング回路１５１には、一方の端子からクロック信号（ＣＬＫ）が入力され、他方の端子（イネーブル入力端子）からマルチプレクサ１４１から出力された信号が入力される。クロックゲーティング回路１５１は、マルチプレクサ１４１から出力された信号が“１”であるときＣＬＫ信号を出力し、マルチプレクサ１４１から出力された信号が“０”であるときはクロック信号を出力しない。
【００２９】
クロックゲーティング回路１５２には、一方の端子からクロック信号が入力され、他方の端子（イネーブル入力端子）からマルチプレクサ１４２から出力された信号が入力される。クロックゲーティング回路１５２は、マルチプレクサ１４２から出力された信号が“１”であるときＣＬＫ信号を出力し、マルチプレクサ１４２から出力された信号が“０”であるときはクロック信号を出力しない。
【００３０】
なお、マルチプレクサ２４１は、マルチプレクサ１４１と同様に機能するものであり、クロックゲーティング回路２５１のイネーブル信号を出力する。クロックゲーティング回路２５１は、クロックゲーティング回路１５１と同様に機能するものであり、Ｆ／Ｆグループ１２の先頭のフリップフロップ２１１以外のフリップフロップに対してクロック信号の供給／遮断を行う。
【００３１】
上記の構成により、通常動作モード（ＴＭ＝０）においては、クロックゲーティング制御線１０２上の信号がマルチプレクサ１４１，１４２を介して、クロックゲーティング回路１５１，１５２のイネーブル入力端子に入力される。その結果、フリップフロップ１１１〜１１４はクロックゲーティング制御線１０２の信号によりクロックゲーティング制御される。同様のことがＦ／Ｆグループ１２以降のＦ／Ｆグループについてもいえる。よって、通常動作モードにおいては、スキャンチェーンを構成する全てのフリップフロップは、クロックゲーティング制御線１０２上の信号によってクロックゲーティング制御される。
【００３２】
一方、スキャンテストモード（ＴＭ＝１）においては、フリップフロップ１１１〜１１４に格納されたデータが全て“０”又は“１”の場合、連続信号判定回路１３０は“０”を出力する。この“０”信号は、マルチプレクサ１４１を介して、クロックゲーティング回路１５１のイネーブル入力端子に入力される。その結果、フリップフロップ１１２〜１１４はゲーティングされる。スキャンテストモード中のフリップフロップのクロックゲーティング制御はＦ／Ｆグループごとに行われる。
【００３３】
なお、スキャンテストモード中、マルチプレクサ１４２は常に信号“１”を出力するため、クロックゲーティング回路１５２のイネーブル入力端子には“１”が入力される。これにより、フリップフロップ１１１には常にクロック信号が供給されることになり、フリップフロップ１１１はスキャンテストモード中、クロックゲーティング制御されない。このようにしてスキャンテストモード中、フリップフロップ１１１を常に動作させる理由は、フリップフロップ１１１は、Ｆ／Ｆグループ１１への入力信号のトグル（toggle：“１”→“０” または“０”→“１”の信号変化）を検出する必要があるためである。
【００３４】
上記のように、スキャンテストモード時では、各Ｆ／Ｆグループの先頭のフリップフロップ（１１１，２１１等）は常に動作し、それ以外のフリップフロップはクロックゲーティング制御線１０３の信号によりクロックゲーティング制御される。
【００３５】
次に、具体的な動作例として、スキャンテストモードにおいて、Ｆ／Ｆグループ１１に“１”が連続的にシフト入力され、フリップフロップ１１１〜１１４の全てに“１”が格納された場合を考える。このとき、前述のように、連続信号判定回路１３０の出力は“０”となり、クロックゲーティング回路１５１のイネーブル入力端子に“０”が入力されるため、フリップフロップ１１２〜１１４へのクロック信号の供給が停止される。
【００３６】
フリップフロップ１１１に“１”がシフト入力される限り、フリップフロップ１１２〜１１４へのクロック信号の供給が停止された状態が継続する。
【００３７】
その後、先頭のフリップフロップ１１１の入力端子（ＳＩ）に“０”が転送されると、次のクロックで“０”がフリップフロップ１１１に入力される。このとき、連続信号判定回路１３０は“１”を出力するため、クロックゲーティング回路１５１のイネーブル入力端子に“１”が入力される。その結果、フリップフロップ１１２〜１１４へのクロック信号の供給が再開され、フリップフロップ１１２〜１１４は入力データをシフト可能な状態になる。
【００３８】
上記の動作は、Ｆ／Ｆグループ１１に“０”が連続的にシフト入力され、フリップフロップ１１１〜１１４の全てに“０”が格納された場合も同様である。フリップフロップ１１１に“０”が入力される限り、フリップフロップ１１２〜１１４へのクロック信号の供給は停止される。そして、先頭のフリップフロップ１１１に“１”が格納されると、クロック信号の供給が再開され、フリップフロップ１１２〜１１４は入力データをシフト可能な状態になる。
【００３９】
上記の説明からわかるように、“１”または“０”がＮビット（Ｎ≧４）連続するデータがＦ／Ｆグループ１１にシフト入力される場合、あるサイクル（時間）において４個のフリップフロップ１１１〜１１４の全てに“１”または“０”が格納される。そして、その次のサイクルにおいて、先頭のフリップフロップ１１１を除くフリップフロップ１１２〜１１４へのクロック信号供給が停止されることとなる。より詳しくは、（Ｎ−３）サイクルの間、フリップフロップ１１２〜１１４へのクロック信号が停止される。その結果、スキャンテストモードにおけるＦ／Ｆグループ１１の消費電力を低減することができる。また、Ｆ／Ｆグループ１１からシフト出力されたデータはＦ／Ｆグループ１２以降にもシリアル転送されるため、Ｆ／Ｆグループ１２以降についても消費電力を低減させることができる。
【００４０】
ここで、図２を用いて、クロックゲーティングの様子を視覚的に説明する。図２は、７ビット連続する“１”および“０”が交互に現われるデータがスキャンチェーンにシフト入力された場合における、クロックゲーティング発生の様子を示している。スキャンチェーンは３個のＦ／Ｆグループ（Ｇｒ１、Ｇｒ２及びＧｒ３）で構成されている。各Ｆ／ＦグループＧｒ１、Ｇｒ２及びＧｒ３は、前述のＦ／Ｆグループ１１と同様、直列接続された４個のフリップフロップ（スキャンＦ／Ｆ）を含む。
【００４１】
図２（ａ）において、横方向はフリップフロップに格納されたデータのシフト方向を示し、縦方向は時間をサイクル単位で示している。図２（ａ）は、１０サイクル（Ｔ１，Ｔ２，・・・，Ｔ１０）分について示している。スキャンシフト動作は、１サイクル毎に各データが右斜め下方向に移動していくものとして表現される。
【００４２】
また、図２（ａ）において、太枠で囲われた部分は、クロックゲーティングが有効である（即ち、クロック信号が供給されていない）ことを示している。前述のように、Ｆ／ＦグループＧｒ１，Ｇｒ２，Ｇｒ３の先頭のフリップフロップはクロックゲーティングの対象でないため、常にクロックが供給される。
【００４３】
図２（ｂ）は、各Ｆ／Ｆグループにおけるクロックゲーティング制御のイネーブル信号を時間サイクルごとに示している。このイネーブル信号は、前述のように、連続信号判定回路の出力信号であり、シフト入力されるデータに応じて自動的に生成される。
【００４４】
図２（ａ）および（ｂ）からわかるように、イネーブル信号はクロックゲーティングが行われる１サイクル前に確定している。これにより、前述のように、Ｆ／Ｆグループを構成するフリップフロップの値が一致したサイクルの次のサイクルで、クロックゲーティングが有効になる。
【００４５】
図２に示す場合、有効クロックゲーティング率（＝クロックゲーティングを行ったサイクルの和／全サイクル）は、４５％（＝５４/１２０）となる。
【００４６】
上述したように、本実施形態では、スキャンチェーンにシフト入力されるデータに応じて、Ｆ／Ｆグループの先頭以外のフリップフロップへのクロック信号の供給を停止する。これにより、スキャンテスト時におけるスキャンチェーンの消費電力を低下させることができる。また、スキャンテストモードにおいて動作するフリップフロップの数が減少するため、ＩＲドロップを軽減することができる。
【００４７】
スキャンテスト中は、通常動作と比較して厳し過ぎる動作によってＩＲドロップが突発的に発生することがある。しかしながら、本実施形態によれば、ＩＲドロップを軽減することができるために、所謂オーバーキルの問題（出荷テストにおいて良品として差し支えない半導体集積回路を不良品としてしまう問題）を緩和することができる。その結果、半導体集積回路の歩留まりを向上させることができる。
【００４８】
上記の説明では、Ｆ／Ｆグループに含まれるフリップフロップの数（以下、「要素数」又は「グループ化要素数」という。）は４個であったが、これに限るものではない。グループ化要素数は、シフト動作中のクロックゲーティングの単位となるものであり、スキャンチェーンにシフト入力されるデータに応じて、有効クロックゲーティング率が最も大きくなるように決定することが好ましい。このことについて、以下に詳細に説明する。
【００４９】
スキャンチェーンに入力されるテストパターンは、自動テストパターン生成（ＡＴＰＧ：Automatic Test Pattern Generation）ツールにより生成される。このＡＴＰＧツールは、ＬＳＩの論理ネットに挿入された全てのスキャンチェーンに関する情報を把握した上でテストパターンを生成する。また、最近のＡＴＰＧツールは、トグルの少ないテストパターンを生成する機能を有している。この機能を活用することで、有効クロックゲーティング率をさらに向上させることができる。
【００５０】
まず、ＡＴＰＧツールで生成されたテストパターンについて、同一データが連続する数（以下、「同一データ連続数」という。）ごとの発生回数を示すヒストグラムを作成する。なお、テストパターンから適当な割合でサンプリングしたものについて、ヒストグラムを作成してもよい。
【００５１】
図３は、作成されたヒストグラムの一例を示している。この例では、同一データ連続数１の場合が最も発生回数が多く、その後同一データ連続数が増えるにつれて発生回数は漸減するものの、ＡＴＰＧツールのトグル低減機能により、同一連続データ数６，７において再び発生回数が増える。
【００５２】
次に、同一データ連続数と、その同一データ連続数の発生回数との積が最大となる同一データ連続数（以下、「最大有効データ連続数」という。）を取得する。この最大有効データ連続数ｎは、有効クロックゲーティング率を最適化する際に基本となるパラメータである。図３は、最大有効データ連続数のヒストグラムも示している。この例では、最大有効データ連続数ｎは７である。
【００５３】
次に、有効クロックゲーティング率を、最大有効データ連続数ｎ、グループ化要素数ｍを用いて表すことを考える。まず、グループ化要素数と最大有効データ連続数が等しい（ｎ＝ｍ）の場合における有効クロックゲーティング率について説明する。
【００５４】
この場合、ｎサイクルに１回だけ、Ｆ／Ｆグループの先頭以外のｍ−１個（即ち、ｎ−１個）のフリップフロップへのクロック供給が停止される。よって、有効クロックゲーティング率Ｒ＿ＣＧは式（１）で表される。
【数１】
0005361930.tif 000002
ここで、Ｎsc：スキャンチェーン長（スキャンチェーンを構成するフリップフロップの総数）、Ｎ：シフト動作周波数（単位時間（１サイクル）当たりシフトするビット数）、ｎ：最大有効データ連続数である。
【００５５】
式（１）からわかるように、最大有効データ連続数ｎが大きくなるにつれて、有効クロックゲーティング率Ｒ＿ＣＧは単調減少する。よって、最大有効データ連続数ｎをグループ化要素数ｍとした場合には、ＡＴＰＧツールにより生成されたテストパターンにおいてトグルが少ない（即ち、最大有効データ連続数ｎが大きい）という点を活かすことができない。
【００５６】
そこで、最大有効データ連続数ｎより小さい数をグループ化要素数ｍとすることを考える。この場合、有効クロックゲーティング率Ｒ＿ＣＧ（ｍ）は、ｍの関数として式（２）で与えられる。
【数２】
0005361930.tif 000003
ここで、Ｎsc：スキャンチェーン長、Ｎ：シフト動作周波数、ｎ：最大有効データ連続数、ｍ：グループ化要素数である。
【００５７】
式（２）をｍで微分すると、式（３）が得られる。
【数３】
0005361930.tif 000004
【００５８】
ｄＲ＿ＣＧ（ｍ）／ｄｍ＝０を解くと、式（４）が得られる。
【数４】
0005361930.tif 000005
【００５９】
したがって、最大有効データ連続数ｎに対して、最も高い有効クロックゲーティング率を与えるグループ化要素数ｍ＿ｂｅｓｔは式（５）で与えられる。
【数５】
0005361930.tif 000006
ここで、関数Nearest_intは引数から最も近い整数を返す関数である。
【００６０】
式（５）より、例えば、ｎ＝７のときｍ＿ｂｅｓｔ＝３であり、ｎ＝１２のときｍ＿ｂｅｓｔ＝４である。
【００６１】
図４は、最大有効データ連続数ｎが２〜２０の場合について、有効クロックゲーティング率Ｒ＿ＣＧをグループ化要素数ｍに対してプロットしたグラフである。図４中の破線は、最大有効クロックゲーティング率を与える要素数ｍ＿ｂｅｓｔの最大有効データ連続数ｎに対する軌跡を示している。このように、要素数ｍ＿ｂｅｓｔの値は、最大有効データ連続数ｎの平方根に比例するため、最大有効データ連続数ｎの増加に対して緩やかに増加する。
【００６２】
なお、ｍの値を小さくするにつれて、連続信号判定回路１３０等の付加ハードウェアが増加する。よって、ハードウェア規模の増加と、低消費電力化で得られる効果（ＩＲドロップの緩和など）とのトレードオフを考慮した上で、グループ化要素数を決定してもよい。
【００６３】
図３からもわかるように、特定の同一データ連続数についてのみ、（同一データ連続数）×（発生回数）が突出して大きくなるとは限らない。即ち、実際には、複数の同一連続データ数について（同一データ連続数）×（発生回数）が互いに接近した値となる場合が多いと思われる。このことと、グループ化要素数が小さくなるほど付加ハードウェア量が増加すること等を考慮して、これら複数の同一連続データ数のいずれかを最大有効データ連続数ｎとして、式（５）によりグループ化要素数を算出してもよい。例えば、図３の場合、ｎ＝８を式（５）に代入して、グループ化要素数を求めてもよい。これにより、ハードウェアの増加を抑え、消費電力の低減効果と、ハードウェア量とのバランスを向上させることができる。
【００６４】
図４中の矢印Ａ，Ｂ，Ｃは、最大有効データ連続数ｎ＝５〜１２を想定した場合における、グループ化要素数ｍ＝３，４，５に対する有効クロックゲーティング率の範囲をそれぞれ示している。グループ化要素数を３とすれば平均的に最も高い有効クロックゲーティング率が得られることがわかる。しかし、ｎ＞１０となる可能性が実際上かなり小さいことを考慮すれば、付加ハードウェアがｍ＝３の場合よりも少なくなるｍ＝４，５の場合でも、実用的に許容可能な範囲の有効クロックゲーティング率を得ることができる。さらに、最大有効データ連続数によっては、グループ化要素数を２または６としても、十分高い有効クロックゲーティング率が得られる。即ち、グループ化要素数ｍは、式（５）で与えられる整数ｍ＿ｂｅｓｔに対し、ｍ＿ｂｅｓｔ−１≦ｍ≦ｍ＿ｂｅｓｔ＋３の範囲にあるようにしてもよい。
【００６５】
いずれにせよ、グループ化要素数ｍは、消費電力の削減効果と付加ハードウェア量とのトレードオフ等を考慮して、適切な値を選択することが望ましい。
【００６６】
なお、グループ要素数は１つの値に限らず、複数の値をグループ化要素数として用いることによって、スキャンチェーンを複数のＦ／Ｆグループに分割してもよい。
【００６７】
また、連続信号判定回路１３０等の低消費電力化のための付加回路は、必ずしも、スキャンチェーンを構成する全てのフリップフロップに対して挿入する必要はない。即ち、テストパターンによる半導体集積回路の動作解析の結果、ＩＲドロップ等の問題が最も大きい部分についてのみ付加回路を挿入してもよい。
【００６８】
また、連続信号判定回路１３０の内部構成は上述のものに限られず、例えば図１では信号配線の増加を抑制するために論理積ゲート、論理和ゲートは全て２入力のものが描かれているが、ゲートによる面積増加抑制の方が全体的な面積増加抑制に有効な場合、３入力以上の多入力ゲートを用いても勿論問題なく、ＱまたはＳＯ出力の代わりに適宜それらの反転信号を用いて論理積を否定論理和（ＮＯＲ）に置き換え、論理和を否定論理積に置き換えることも勿論可能である。
【００６９】
また、テストパターンを解析した結果、“１”の連続数が“０”の連続数よりもずっと大きい場合には、連続信号判定回路１３０の論理和ゲート１３４〜１３６及びインバータ１３７を削除して、“１”の連続のみを検知するようにしてもよい。この際、否定論理和ゲート１３８の入力端子のうちインバータ１３７に接続されていた端子は接地する。これにより、連続信号判定回路１３０のハードウェア量をほぼ半減させることができる。同様に、テストパターンを解析した結果、“０”の連続数が“１”の連続数よりもずっと大きい場合には、連続信号判定回路１３０の論理積ゲート１３１〜１３３を削除して、“０”の連続のみを検知するようにしてもよい。このとき、否定論理和ゲート１３８の入力端子のうち論理積ゲート１３１に接続されていた端子は接地される。
【００７０】
また、連続信号判定回路を構成する各種の論理ゲート回路（ＡＮＤ、ＯＲ等）をプリチャージタイプの回路で代替してもよい。
【００７１】
また、スキャンチェーンに限らず、半導体集積回路１００内部における一般的なシフトレジスタを対象とすることもできる。この場合、シフトレジスタを複数のＦ／Ｆグループに分割し、各Ｆ／Ｆグループに連続信号判定回路１３０等を設ける。これにより、通常動作において、ＩＲドロップを抑制することが可能となる。
【００７２】
次に、本実施形態に係る半導体集積回路１００の設計方法について、図５のフロー図に沿って説明する。図５は、低消費電力化テスト回路（ＬＰテスト回路）が挿入された半導体集積回路を設計する手順を示している。
【００７３】
（１）まず、通常動作を実現するための半導体集積回路の論理ネット（フリップフロップ・ラッチおよび組合せロジック部およびメモリ等のマクロセルで構成）に対して、ＤＦＴ回路を挿入するテスト容易化設計（ＤＦＴ: Design For Testability）を施す（ステップＳ１）。ステップＳ１で用いる情報として、スキャンテストの仕様であるテスト制約と、フリップフロップ・ラッチおよび組合せロジックを構成する論理ゲートからなる基本セルとマクロセルの論理的な回路構成を示す論理ネットとがある。論理ネットは、ＲＴＬ（Register Transfer Level）等による高レベルの記述から論理合成によって作成されたものである。
【００７４】
ステップＳ１を実行することにより、ＤＦＴ挿入後の論理ネット（ＤＦＴ回路が挿入された論理ネット情報）、及びスキャンチェーンを構成するフリップフロップの接続状態を示すＤＦＴ情報を作成する。
【００７５】
表１は、スキャンチェーンのＤＦＴ情報の一例を示している。表１において、左端の“Ｆ／Ｆ  Ｎｏ．”カラムは、フリップフロップ（スキャンＦ／Ｆ）の接続順を示す。“Ｃｌｏｃｋ”カラムは、フリップフロップにクロック信号を供給するクロックの名称を示す。“Ｃｅｌｌ＿ｎａｍｅ”カラムは、フリップフロップのセルの名称を示す。“ＳＩ”カラムは、ＬＳＩの論理ネットの階層情報を含んだ、フリップフロップの入力端子（スキャンイン端子）の名称を示す。“ＳＯ”カラムは、ＬＳＩの論理ネットの階層情報を含んだ、フリップフロップの出力端子（スキャンアウト端子）の名称を示す。
【００７６】
ＤＦＴ情報は、テストモード時において、ある行のフリップフロップのＳＯ端子が次の行のフリップフロップのＳＩ端子に接続されることを示す。
【表１】
0005361930.tif 000007
【００７７】
（２）次に、ＡＴＰＧツールを用いて、テストパターンを生成する（ステップＳ２）。テストパターンの生成には、ステップＳ１で得られたＤＦＴ挿入後の論理ネットに関する情報およびＤＦＴ情報を用いる。ここで、ＤＦＴ情報を用いるのは、ＡＴＰＧツールがスキャンチェーンの構成に対応したテストパターンを生成するためである。
【００７８】
なお、有効クロックゲーティング率を向上させてＩＲドロップを抑制するため、できるだけトグルの少ないテストパターンを生成することが好ましい。
【００７９】
（３）次に、ステップＳ２で得られたテストパターンのデータ配列を解析することにより、最大有効データ連続数ｎを取得する。そして、その最大有効データ連続数ｎを前述の式（５）に代入することにより、最も高い有効クロックゲーティング率を実現するグループ化要素数ｍ＿ｂｅｓｔを算出する（ステップＳ３）。
【００８０】
テストパターンの解析は、例えば、図３を用いて説明したように、同一データ連続数のヒストグラムを作成することにより行う。
【００８１】
なお、算出されたグループ化要素数ｍ＿ｂｅｓｔを式（２）に代入することにより有効クロックゲーティング率を算出し、その有効クロックゲーティング率を設計者へのレポート情報として用いてもよい。
【００８２】
（４）次に、ステップＳ３で算出されたグループ化要素数ｍ＿ｂｅｓｔを用いて、ＤＦＴ情報にグループ化情報を追加し、グループ化後のＤＦＴ情報を作成する（ステップＳ４）。
【００８３】
なお、ｍ＿ｂｅｓｔの値に限らず、（ｍ＿ｂｅｓｔ−１）以上（ｍ＿ｂｅｓｔ＋３）以下のグループ化要素数を用いてグループ化後のＤＦＴ情報を作成してもよい。また、複数のグループ化要素数を用いて行ってもよい。
【００８４】
表２は、グループ化後のＤＦＴ情報の一例を示している。表２に示すように、グループ化後のＤＦＴ情報には、ＤＦＴ情報に“Ｇｒｏｕｐ”カラムが追加されている。この“Ｇｒｏｕｐ”カラムは、（グループＩＤ番号）．（グループ内番号）の形で記述され、フリップフロップがどのＦ／Ｆグループの何番目のものであるかを示している。例えば、Ｆ／Ｆ  Ｎｏ．３の“１．３”の情報は、第１のＦ／Ｆグループの３番目のフリップフロップであることを示している。
【表２】
0005361930.tif 000008
【００８５】
（５）次に、ステップＳ４で得られたグループ化後のＤＦＴ情報に従ってスキャンチェーンを複数のＦ／Ｆグループに分割し、Ｆ／Ｆグループの各々にＬＰテスト回路を挿入する（ステップＳ５）。これにより、ＬＰテスト回路が挿入された半導体集積回路の論理ネット（最終的な論理ネット）を作成する。換言すれば、Ｆ／Ｆグループの各々にＬＰテスト回路を挿入することにより、論理ネットを更新する。
【００８６】
ＬＰテスト回路は、具体的には、図１に示す実施形態の場合、連続信号判定回路１３０，２３０，・・・である。通常動作でクロックゲーティングを行う半導体集積回路の場合、マルチプレクサ１４１，１４２，２４１やクロックゲーティング回路１５１，１５２，２５１は既に設けられており、これらの回路については信号線を繋ぎ替えるだけでよい。一方、通常動作でクロックゲーティングを行わない半導体集積回路の場合には、これらの回路も本ステップの処理によりＬＰテスト回路として挿入される。
【００８７】
上記の手順により、ＬＰテスト回路が挿入された半導体集積回路が設計される。なお、上記の説明ではスキャンチェーンが１つの場合についてであったが、ステップＳ１の処理により複数のスキャンチェーンが作成された場合、ステップＳ４の処理は、スキャンチェーンごとに実行する。この処理は並列して実行してもよい。
【００８８】
本実施形態に係る方法で設計された半導体集積回路では、スキャンテストの際、ＬＰテスト回路が、対応するＦ／Ｆグループに対して最も効果的なクロックゲーティングを行う。これにより、スキャンテストにおける半導体集積回路の消費電力が低減され、ＩＲドロップを緩和することができる。
【００８９】
上記の設計方法の説明ではスキャンテスト用のスキャンチェーンを低消費電力化の対象としたが、通常動作用の論理ネットにおける一般的なシフトレジスタを対象とすることもできる。
【００９０】
この場合、まず、半導体集積回路の論理ネットからシフトレジスタを抽出する処理を行い、抽出されたシフトレジスタを構成するフリップフロップの接続状態を示すシフトレジスタ情報を作成する。このシフトレジスタ情報は、前述のＤＦＴ情報に相当するものである。
【００９１】
次に、半導体集積回路の論理ネットの論理シミュレーションを行うことにより、抽出したシフトレジスタ上をシフトするデータを取得する。次に、前述のステップＳ３と同様にして、そのデータを解析することにより、最大有効データ連続数ｎを取得する。次に、最大有効データ連続数ｎを式（５）に代入することにより、最も高い有効クロックゲーティング率を実現するグループ化要素数を算出する。
【００９２】
次に、算出されたグループ化要素数を用いて、シフトレジスタ情報にグループ化情報を追加し、グループ化後のシフトレジスタ情報を作成する。このグループ化後のシフトレジスタ情報は、前述のグループ化後のＤＦＴ情報に相当するものである。
【００９３】
最後に、グループ化後のシフトレジスタ情報に従ってシフトレジスタを複数のＦ／Ｆグループに分割し、各Ｆ／Ｆグループに低消費電力化回路を挿入することにより、最終的な論理ネットを作成する。換言すれば、Ｆ／Ｆグループの各々に低消費電力化回路を挿入することにより、論理ネットを更新する。
【００９４】
この低消費電力化回路は前述のＬＰテスト回路と同様のものである。
【００９５】
ＬＳＩの仕様によりシフトレジスタを通過するデータの大部分が“０”又は“１”である場合、挿入される低消費電力化回路は、Ｆ／Ｆグループのフリップフロップの出力の論理積または論理和をとるだけでもよい。具体的には、図１に示す実施形態の場合、シフトレジスタを通過するデータの大部分が“０”のときは、論理和ゲート１３４、１３５及び１３６による論理和信号をそのままマルチプレクサ１４１への入力信号として用い、一方、シフトレジスタを通過するデータの大部分が“１”のときは、論理積ゲート１３１，１３２，１３３による論理積信号を反転した信号をマルチプレクサ１４１への入力信号として用いればよい。これにより、低消費電力化回路のハードウェア量をほぼ半減させることができる。
【００９６】
上記の設計方法によれば、通常動作用の論理回路（例えば図１の半導体集積回路１００）内のシフトレジスタの通常動作における消費電力を低減することができる。その結果、通常動作において、ＩＲドロップを抑制することが可能となる。
【００９７】
本発明のいくつかの実施形態を説明したが、これらは、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００９８】
１１，１２  Ｆ／Ｆグループ
１００  半導体集積回路
１０１  組合せロジック部
１０２，１０３  クロックゲーティング制御線
１１１〜１１５  フリップフロップ
１２１〜１２５  マルチプレクサ
１３０，２３０  連続信号判定回路
１３１，１３２，１３３  論理積ゲート（ＡＮＤ）
１３４，１３５，１３６  論理和ゲート（ＯＲ）
１３７  インバータ（ＮＯＴ）
１３８  否定論理和ゲート（ＮＯＲ）
１４１，１４２，２４１  マルチプレクサ
１５１，１５２，２５１  クロックゲーティング回路
【図１】
0005361930.tif 000010
【図２】
0005361930.tif 000011
【図３】
0005361930.tif 000012
【図４】
0005361930.tif 000013
【図５】
0005361930.tif 000014