(57)【要約】【課題】スキャンテストにおける消費電力を低減する半導体集積回路設計方法、半導体集積回路設計プログラム、及び半導体集積回路を提供する。【解決手段】本発明による半導体集積回路の設計方法は、保持するデータの変化に伴って駆動する後段ゲートの数が、基準値以上のフリップフロップを第１フリップフロップ（パワー大ＦＦ）として決定するステップと、同一のクロック信号によって動作するフリップフロップ群を有するスキャンチェーンを作成するステップとを具備する。第１フリップフロップは、同一のクロック信号によって動作するフリップフロップ群において最もスキャンイン側に配置される。【選択図】図７
2010199106.tif 000002
【特許請求の範囲】
【請求項１】
ケアビットと同値のデータをドントケアビットにスキャン入力するスキャンテストが行われる半導体集積回路の設計方法において、
同一のクロック信号によって動作するフリップフロップ群を有するスキャンチェーンを作成するステップを具備し、
前記スキャンチェーンを作成するステップは、
保持するデータの変化に伴って駆動する後段ゲートの数が、前記フリップフロップ群において最も多いフリップフロップを第１フリップフロップとして決定するステップと、
前記第１フリップフロップを、前記フリップフロップ群において最もスキャンイン側に配置するステップと、
を備える
半導体集積回路の設計方法。
【請求項２】
請求項１に記載の半導体集積回路の設計方法において、
前記スキャンチェーンを作成するステップは、前記第１フリップフロップを、前記スキャンチェーンにおいて最もスキャンイン側に配置するステップを備える
半導体集積回路の設計方法。
【請求項３】
請求項１又は２に記載の半導体集積回路の設計方法において、
前記スキャンチェーンを作成するステップは、
予め、複数のフリップフロップを用いてスキャンチェーンを作成するステップと、
前記第１フリップフロップが、前記フリップフロップ群において最もスキャンイン側に配置されるように前記複数のフリップ複数のフリップフロップの配列を変更するステップと、
を更に備える半導体集積回路の設計方法。
【請求項４】
請求項３に記載の半導体集積回路の設計方法において、
前記予め作成されたスキャンチェーンは、それぞれが前記第１フリップフロップを有する複数のフリップフロップ群を有し、
前記スキャンチェーンを作成するステップは、前記複数のフリップフロップ群のうち、フリップフロップ数の少ないフリップフロップ群を、前記スキャンチェーンにおいて最もスキャンイン側に配置するステップを更に備える
半導体集積回路の設計方法。
【請求項５】
請求項３又は４に記載の半導体集積回路の設計方法において、
前記スキャンチェーンを作成するステップは、
予め作成された他のスキャンチェーンにおいて最もスキャンイン側に位置し、前記第１フリップフロップを含まないフリップフロップ群と、前記第１フリップフロップを有するフリップフロップ群とを置換するステップを更に備える
半導体集積回路の設計方法。
【請求項６】
請求項１から５のいずれか１項に記載の半導体集積回路の設計方法をコンピュータに実行させる設計プログラム。
【請求項７】
同一のクロック信号によって動作するフリップフロップ群を有するスキャンチェーンを具備し、
前記フリップフロップ群は、保持するデータの変化に伴って駆動する後段ゲートの数が、前記フリップフロップ群において最も多い第１フリップフロップを備え、
前記第１フリップフロップは、前記フリップフロップ群において最もスキャンイン側に配置される
半導体集積回路。
【請求項８】
請求項７に記載の半導体集積回路において、
前記第１フリップフロップは、前記スキャンチェーンにおいて最もスキャンイン側に配置される
半導体集積回路。
【請求項９】
請求項７又は８に記載の半導体集積回路において、
前記スキャンチェーンは、それぞれが前記第１フリップフロップを有する複数のフリップフロップ群を有し、
前記複数のフリップフロップ群のうち、フリップフロップ数の少ないフリップフロップ群は、前記スキャンチェーンにおいて最もスキャンイン側に配置される
半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路の設計方法、設計プログラム、及び半導体集積回路に関し、特に半導体集積回路のスキャンテストのためのテスト容易化設計方法に関する。
【背景技術】
【０００２】
半導体集積回路の製造後、製品中に遅延故障（ｄｅｌａｙ  ｆａｕｌｔ）や縮退故障（ｓｔｕｃｋ−ａｔ  ｆａｕｌｔ）が発生しているか否かを確認するため、テスト回路を設計段階で予め組み込んでおく設計技術が知られている。そのような設計技術は、テスト容易化設計（ＤＦＴ：Ｄｅｓｉｇｎ  Ｆｏｒ  Ｔｅｓｔａｂｉｌｉｔｙ）と呼ばれている。
【０００３】
テスト容易化設計の一手法として、「スキャン設計」が知られている。スキャン設計によれば、設計回路内のフリップフロップの全て又は一部が、スキャンセル（スキャンフリップフロップとも呼ばれる）に置き換えられ、スキャンチェーン（スキャンパスとも呼ばれる）を構成する。
【０００４】
図１を参照して、本発明に関連するスキャンチェーンについて説明する。スキャンチェーンは、半導体集積回路内の組み合わせ回路Ｃ１〜Ｃ３の間に設けられたフリップフロップＦＦ１〜ＦＦ４を利用して構成される。詳細には、フリップフロップＦＦ１〜ＦＦ４のそれぞれは、入力端子がセレクタＭ１〜Ｍ４（マルチプレクサ）を介して直列接続されることでスキャンセル１〜４として機能する。直列接続されたスキャンセル１〜４シフトレジスタとして動作するスキャンチェーンを構成する。スキャンチェーンは、スキャンインされるテストパタンデータをシフト動作により組み合わせ回路に入力する。又、スキャンチェーンは、スキャンイネーブル信号ＥＮに応じて、組み合わせ回路からデータＤ１〜Ｄ４を取り込み（キャプチャ）、取り込んだデータをシフト動作により外部に取り出す。
【０００５】
スキャンイネーブル信号ＥＮは、セレクタＭ１〜Ｍ４の信号選択動作を制御し、キャプチャ動作（データ入力動作）とシフト動作とを切り替える。例えば、スキャンセル１は、セレクタＭ１を介して組み合わせ回路Ｃ１からデータＤ１をキャプチャする。キャプチャされたデータＤ１は、入力されるスキャンインデータＳＩによって、次段のスキャンセル２、３、４にシフトし、スキャンアウトデータＳＯとして外部に取り出される。スキャンセル２〜４も同様に動作する。
【０００６】
スキャンテストでは、スキャンチェーンのシフト動作によって、テストパタンデータを組み合わせ回路に入力し、キャプチャ動作によって組み合わせ回路の出力データがスキャンセル（フリップフロップ）に取り出される。次に、スキャンセルに取り出された出力データは、シフト動作によって外部に出力される。このように外部に取り出されたデータ（スキャンアウトデータ）とその期待値とを比較することにより、テスト対象回路内の論理回路の良否を判定することができる。
【０００７】
図２を参照して、従来技術によるスキャンテストの動作の詳細を説明する。図２は、スキャンチェーンの一例を示す図である。ここでは、８つのスキャンセル１〜８を備えるスキャンチェーンを一例に説明する。先ず、テストパタンデータがスキャンチェーンにセットされ（スキャンイン）、その応答結果がスキャンセル１〜８のそれぞれに取り出される（キャプチャ）。
【０００８】
キャプチャ結果は、シフト動作によって外部に取り出される（スキャンアウト）。データがスキャンインやスキャンアウトされる際のシフト動作に伴い、スキャンセル内で保持するデータ値は変化する（トグル）。このトグル回数が多いと消費電力が増大する。このため、シフト動作させるためにスキャンチェーンにスキャンインされるデータ（スキャンインデータＳＩ）の値を適切な値にすることでトグル回数を減らし、消費電力の増大を抑制することができる。
【０００９】
このようなトグル数を低減する方法の一例として、同値Ｆｉｌｌを利用した方法がある。同値Ｆｉｌｌとは、ドントケアビットのデータ値をケアビットと同じ値としたパタンのスキャンインデータを、スキャンインする方法である。ここでケアビットとは、パタンデータにおいて、故障検出に必要なスキャンセルに対応するビット位置を示す。尚、同値Ｆｉｌｌは、他にもｍｉｎｉｍｕｍ  ｔｒａｎｓｉｔｉｏｎ  ｆｉｌｌ、ｒｅｐｅａｔ  ｆｉｌｌ、又はａｄｊａｃｅｎｔ  ｆｉｌｌと呼ばれることもある。
【００１０】
例えば、図２に示すスキャンチェーンにおいて、スキャンイン側から４番目と８番目のスキャンセル４、８を故障検出に利用する場合、それぞれに対応するパタン上の位置がケアビットとして設定される。この場合、１ビット目と４ビット目をケアビットとし、それ以外をドントケアビットとしたパタンデータがスキャンインされる。例えば、１ビット目のデータ値を“１”、４ビット目のデータ値を“０”とすると、２〜３ビット目のドントケアビットは１ビット目と同じ“１”に設定され、５〜８ビット目のドントケアビットは４ビット目と同じ“０”に設定される。すなわち、パタンデータ“１１１１００００”がスキャンインされる。
【００１１】
同値Ｆｉｌｌを利用してスキャンセル１〜８にデータをセットする際、スキャンセルには同じデータが連続してシフト入力される。このため、スキャンセルのトグル数は減少し、スキャンインによる消費電力は抑制される。同値Ｆｉｌｌを利用したトグル数の低減方法は、例えばＬａｕｎｇ−Ｔｅｒｎｇ  Ｗａｎｇ，  Ｃｈａｒｌｅｓ  Ｅ．  Ｓｔｒｏｕｄ，  Ｎｕｒ  Ａ．  Ｔｏｕｂａ、“ＳＹＳＴＥＭ  ＯＮ  ＣＨＩＰ  ＴＥＳＴ  ＡＲＣＨＩＴＥＣＴＵＲＥＳ”、ＭＯＲＧＡＮ  ＫＡＵＦＦＭＡＮ、ＮＯＶ、２００７に記載されている（非特許文献１参照）。
【先行技術文献】
【非特許文献】
【００１２】
【非特許文献１】Ｌａｕｎｇ−Ｔｅｒｎｇ  Ｗａｎｇ，  Ｃｈａｒｌｅｓ  Ｅ.  Ｓｔｒｏｕｄ，  Ｎｕｒ  Ａ.  Ｔｏｕｂａ、“ＳＹＳＴＥＭ  ＯＮ  ＣＨＩＰ  ＴＥＳＴ  ＡＲＣＨＩＴＥＣＴＵＲＥＳ”、ＭＯＲＧＡＮ  ＫＡＵＦＦＭＡＮ、ＮＯＶ、２００７
【発明の概要】
【発明が解決しようとする課題】
【００１３】
スキャンインデータＳＩのパタンは、ユーザ（設計者）が任意に設定可能なため、上述のように同値Ｆｉｌｌを利用することでトグル回数を減少させることが可能である。しかし、キャプチャデータは、任意に設定することができないランダムな値であるため、スキャンアウトデータによるスキャンセルのトグル回数を制御することは困難である。
【００１４】
このように、従来技術では、スキャンインのときの消費電力を低減することは可能であるが、キャプチャしたデータを外部に取り出すスキャンアウト時に消費電力を低減することは困難である。スキャンテストにおける消費電力を低減するためには、スキャンアウト時においても消費電力を低減することが望まれる。
【課題を解決するための手段】
【００１５】
本発明による半導体集積回路の設計方法は、ケアビットと同値のデータをドントケアビットにスキャン入力するスキャンテストが行われる半導体集積回路の設計方法である。本発明による半導体集積回路の設計方法は、同一のクロック信号によって動作するフリップフロップ群を有するスキャンチェーンを作成するステップを具備する。スキャンチェーンを作成するステップは、保持するデータの変化に伴って駆動する後段ゲートの数が、フリップフロップ群において最も多いフリップフロップを、第１フリップフロップ（パワー大ＦＦ）として決定するステップと、第１フリップフロップを、フリップフロップ群において最もスキャンイン側に配置するステップとを備える。
【００１６】
スキャンテストにおけるスキャンアウト動作では、ランダムなキャプチャデータがスキャンチェーンのシフト動作によって外部に取り出される。この際、スキャンチェーン内のフリップフロップのデータが変化する（トグル）。ケアビットと同値のデータをドントケアビットにスキャン入力する方法では、スキャンアウト時、フリップフロップにおけるトグル回数はスキャンイン側の方がスキャンアウト側よりも少なくなる。このため、保持するデータの変化に伴って駆動する後段ゲートの数が、基準値以上のフリップフロップをスキャンイン側に配置することで、後段ゲートの駆動回数を抑制し消費電力を低減できる。
【００１７】
本発明による半導体集積回路の設計方法は、コンピュータに実行させる設計プログラムによって実現されることが好ましい。
【００１８】
本発明による半導体集積回路は、同一のクロック信号によって動作するフリップフロップ群を有するスキャンチェーンを具備する。このフリップフロップ群は、保持するデータの変化に伴って駆動する後段ゲートの数が、前記フリップフロップ群において最も多い第１フリップフロップを備える。又、第１フリップフロップは、フリップフロップ群において最もスキャンイン側に配置される。
【発明の効果】
【００１９】
本発明による半導体集積回路の設計方法、設計プログラム、及び半導体集積回路によれば、スキャンテストにおける消費電力を低減できる。
【図面の簡単な説明】
【００２０】
【図１】図１は、本発明に係る半導体集積回路及びスキャンチェーンの一例を示す図である。
【図２】図２は、本発明に係るスキャンチェーンの一例を示す図である。
【図３】図３は、本発明による設計支援装置の実施の形態における構成を示す図である。
【図４】図４は、本発明による回路設計プログラムの実施の形態における機能を示す図である。
【図５】図５は、本発明に係るパワー大ＦＦを説明する図である。
【図６】図６は、スキャンテストにおいて、スキャンセルで保持するデータ値の変遷の一例を示す図である。
【図７】図７は、本発明による設計支援装置によってリオーダされたスキャンチェーンの一例を示す図である。
【図８】図８は、本発明による設計支援装置によって設計されたリオーダ前のスキャンチェーンの一例を示す図である。
【図９】図９は、本発明による設計支援装置によってリオーダされたスキャンチェーンの一例を示す図である。
【図１０】図１０は、本発明による設計支援装置によって設計されたリオーダ前のスキャンチェーンの一例を示す図である。
【図１１】図１１は、本発明による設計支援装置によってリオーダされたスキャンチェーンの一例を示す図である。
【図１２】図１２は、本発明による設計支援装置によって設計されたリオーダ前のスキャンチェーンの一例を示す図である。
【図１３】図１３は、本発明による設計支援装置によってリオーダされたスキャンチェーンの一例を示す図である。
【図１４】図１４は、本発明による設計支援装置によって設計されたリオーダ前のスキャンチェーンの一例を示す図である。
【図１５Ａ】図１５Ａは、本発明による設計支援装置によってリオーダされたスキャンチェーンの一例を示す図である。
【図１５Ｂ】図１５Ｂは、本発明による設計支援装置によってリオーダされたスキャンチェーンの一例を示す図である。
【図１６】図１６は、本発明による設計支援装置によって設計されたリオーダ前のスキャンチェーンの一例を示す図である。
【図１７】図１７は、本発明による設計支援装置によってリオーダされたスキャンチェーンの一例を示す図である。
【図１８】図１８は、本発明による設計支援装置によってリオーダされたスキャンチェーンの一例を示す図である。
【発明を実施するための形態】
【００２１】
以下、添付図面を参照して、本発明による半導体集積回路の設計方法、設計プログラム、設計支援装置の実施の形態を説明する。本実施の形態では、テスト容易化設計によって、ＭＵＸ（マルチプレクサ）スキャン方式のスキャンテストが行なわれるスキャンチェーンが、半導体集積回路上に設計される。
【００２２】
（設計支援装置の構成）
図３及び図４を参照して、本発明による半導体回路設計支援装置１０（以下、設計支援装置１０と称す）の実施の形態における構成を説明する。図３は、本発明による設計支援装置１０の実施の形態における構成図である。設計支援装置１０は、バス１６を介して相互に接続されるＣＰＵ１１と、ＲＡＭ１２と、記憶装置１３と、入力装置１４と、出力装置１５とを具備する。記憶装置１３はハードディスクやメモリ等に例示される外部記憶装置である。又、入力装置１４は、キーボードやマウス等のユーザによって操作されることで、各種データをＣＰＵ１１や記憶装置１３に出力する。出力装置１５は、モニタやプリンタに例示され、ＣＰＵ１１から出力される半導体装置のレイアウト結果をユーザに対し視認可能に出力する。
【００２３】
ＣＰＵ１１は、入力装置１４からの入力に応答して、記憶装置１３内の回路設計プログラム２３を実行し、テスト容易化設計（ここでは、スキャンチェーンの設計）を行う。この際、記憶装置１３からの各種データやプログラムはＲＡＭ１２に一時格納され、ＣＰＵ１１は、ＲＡＭ１２内のデータを用いて各種処理を実行する。
【００２４】
記憶装置１３は、ネットリスト２１、回路設計プログラム２２を格納している。ネットリスト２１は、設計対象回路を構成する素子の接続や種類、サイズ（素子数）等が記述されたエレメントカードと、その回路を構成する素子の内で、ダイオードやトランジスタなどの非線形能動素子のデバイスモデルのパラメータと、回路の解析方法を制御する条件情報（初期値等）を含む。
【００２５】
回路設計プログラム２２は、ＣＰＵ１１によって実行されることで、設計対象の半導体集積回路上にスキャンチェーンを生成するツールとして機能を有する。詳細には、回路設計プログラム２２は、ＣＰＵ１１に実行されることで図４に示すスキャンチェーン設計部２２１、パワー大ＦＦ決定部２２２、リオーダ部２２３の各機能を実現する。
【００２６】
スキャンチェーン設計部２２１は、論理合成の途中、又は論理合成後の段階で、ゲートレベルのネットリストにスキャンイネーブル信号ＳＥによって制御されるセレクタ（マルチプレクサ）、スキャンイン端子、スキャンアウト端子等を挿入して、スキャンチェーンを生成する。スキャンチェーン設計部２２１は、従来技術と同様な方法及び条件（例えばスキャンセル間の配線長）によりスキャンチェーンを生成し、ネットリスト２１を更新する。又、スキャンチェーン設計部２２１は、スキャンテストを行なうときに入力するテストパタンをネットリスト２１から自動生成する。
【００２７】
パワー大ＦＦ決定部２２２は、生成された（又は、予め用意された）スキャンチェーンを構成するスキャンセル（フリップフロップ）を検索し、パワー大ＦＦ（第１フリップフロップ）を決定する。ここで、パワー大ＦＦとは、保持するデータが変化することで、回路の消費電力を大きく増加させるスキャンセル（フリップフロップ）を示す。例えば、スキャンチェーンを構成するスキャンセルの中で、自身が保持するデータが変化に伴って駆動する後段ゲートの数が、基準値以上のスキャンセル（フリップフロップ）が、パワー大ＦＦとして選択される。すなわち、トグル１回当たりの消費電力（半導体集積回路の消費電力）が大きいスキャンセルをパワー大ＦＦとして定義する。
【００２８】
パワー大ＦＦを決定する方法の一例としては、スキャンセルのファンアウトコーンに含まれるゲート数（以下、パワーと称す）をカウントし、その数が基準値以上であるスキャンセルをパワー大ＦＦとする方法がある。詳細には、図５を参照して、スキャンセル１のファンアウトコーンに含まれるゲート素子は、ゲート素子Ｅ１、Ｅ２、Ｅ３の３つであり、これをパワー＝３とする。又、スキャンセル２のファンアウトコーンに含まれるゲート素子は、ゲート素子Ｅ３の１つであり、これをパワー＝１とする。ここで、パワー大ＦＦとする基準値がパワー＝２に設定されている場合、スキャンセル１がパワー大ＦＦとして選択される。あるいは、パワー大ＦＦとする基準値がスキャンチェーン内の全てのスキャンセル１〜４の中で最も大きいパワーに設定されている場合、パワーが最大のスキャンセル１がパワー大ＦＦとして選択される。更に、パワー大ＦＦとする基準値が、同一のクロック信号によって動作するフリップフロップ群毎に設定されていても良い。例えば、基準値がフリップフロップ群内の全てのスキャンセルの中で最も大きいパワーに設定されている場合、フリップフロップ群内においてパワーが最大のスキャンセルがパワー大ＦＦとして選択される。
【００２９】
リオーダ部２２３は、生成された（又は、予め用意された）スキャンチェーンにおけるスキャンセルの配置を変更する（リオーダ）。詳細には、リオーダ部２２３は、スキャンチェーンが付加されたネットリスト２１を参照し、パワー大ＦＦがスキャンチェーンにおいてスキャンイン側に配置されるようにスキャンセルの配置を変更し、ネットリスト２１を更新する。
【００３０】
（パワー大ＦＦをスキャンイン側に配置する効果）
図６を参照して、パワー大ＦＦをスキャンイン側に配置する効果について説明する。
【００３１】
図６は、図２に示すスキャンチェーンＳＣ１０に対して行なわれたスキャンテストにおいて、スキャンセル１〜８で保持するデータ値の変遷の一例を示す図である。図６を参照して、スキャンセル１〜８でキャプチャされたデータがスキャンアウトされるまでの間におけるデータの変遷の一例を説明する。ここでスキャンセル１、２、３、４、５、６、７、８は順に、データ“０”、“１”、“０”、“１”、“０”、“１”、“０”、“１”をキャプチャしたものとする。
【００３２】
スキャンセル１〜８がキャプチャしたデータ“０１０１０１０１”を外部へ取り出す場合、スキャンデータＳＩによって、スキャンセル１〜８で保持されたデータはシフトし、スキャンアウトデータ“１０１０１０１０”として外部に出力される。ここで、スキャンインによる消費電力を軽減するため、同値Ｆｉｌｌを利用してキャプチャデータを取り出すことが好ましい。同値Ｆｉｌｌによってキャプチャデータを外部に取り出す場合、スキャンセルには同じデータが連続してシフト入力される。このため、スキャンセルにおけるトグル数を減少させることができる。図６に示す例では、図２に示すスキャンチェーンにおいて、スキャンイン側から４番目と８番目のスキャンセル４、８に対応するパタン上の位置がケアビットとして設定され、パタンデータ“１１１１００００”がスキャンインされる。
【００３３】
スキャンセルの前段（入力側）に接続するスキャンセル数は、スキャンイン側の方がスキャンアウト側よりもが少ない。このため、スキャンアウトの際、キャプチャイン側のスキャンセルにシフト入力されるキャプチャデータの数は、スキャンアウト側よりも少なくなる。一方、スキャンインアウトの際、スキャンイン側にシフト入力されるスキャンインデータＳＩの数は、スキャンアウト側より多くなる。
【００３４】
同値Ｆｉｌｌを利用することでスキャンインデータＳＩがシフトする際のトグル数を低減することができる。一方、ユーザ（設計者）が任意に設定できるスキャンインデータＳＩと異なり、キャプチャデータはランダムの値であるため、キャプチャデータがシフトする際のトグル回数を制御することは困難である。
【００３５】
以上のことから、同値Ｆｉｌｌを利用することで、スキャンイン側のトグル数は、スキャンアウト側のトグル数よりも少なくなる。特に、最もスキャンイン側のスキャンセル１は、他のスキャンセルからキャプチャデータがシフト入力されることがなく、スキャンインデータＳＩの入力のみであるため、そのトグル回数は、自身がキャプチャしたデータとスキャンインデータＳＩのみで決定する。このため、スキャンインデータＳＩのパタンを適切な値に設定することにより、最もスキャンイン側のスキャンセル１のトグル回数を最も少なくすることができる。図６に示す例では、スキャンイン側のスキャンセル１、２、３のトグル数は、順に２回、３回、４回であるのに対し、スキャンアウト側のスキャンセル６、７、８のトグル数は、６回、７回、８回であり、スキャンイン側のトグル数は、スキャンアウト側より少なくなることが分かる。
【００３６】
本発明では、リオーダ部２２３によって、パワー大ＦＦがスキャンチェーンにおけるスキャンイン側に配置される。すなわち、トグル回数の少ない位置にパワー大ＦＦが配置される。例えば、図２に示すスキャンチェーンＳＣ１０のスキャンセル５、７がパワー大ＦＦである場合、図７に示すスキャンチェーンＳＣ１００のスキャンイン側にスキャンセル５、７（パワー大ＦＦ）が配置され、他のスキャンセル１〜４、６、８は、その後段となるようにリオーダされる。
【００３７】
図２に示すスキャンチェーンＳＣ１０の場合、スキャンイン側から５番目（トグル数５）と７番目（トグル数７）にパワー大ＦＦが配置されている。すなわち、スキャンチェーンにおけるパワー大ＦＦのトグル数は５＋７＝１２となる。一方、図７に示すリオーダ後のスキャンチェーンＳＣ１００の場合、スキャンイン側から１番目（トグル数２）と２番目（トグル数３）にパワー大ＦＦが配置される。すなわち、パワー大ＦＦのトグル数は２＋３＝５となり、後段に接続されたゲートのトグルに起因する駆動回数は少なくなる。
【００３８】
このように、本発明では、トグル１回当たりの消費電力が大きいパワー大ＦＦをトグル数の少ないスキャンイン側に配置することで、スキャンアウト（キャプチャデータの取り出し）時における半導体集積回路全体の消費電力を低減することができる。
【００３９】
又、パワー大ＦＦ決定部２２２は、トグル１回当たりの半導体集積回路の消費電力が基準値以下のスキャンセルを選択しても構わない。この場合、リオーダ部２２３は、トグル１回当たりの消費電力が小さいスキャンセルをトグル数の多いスキャンアウト側に配置する。これを上述したパワー大ＦＦの配置位置の変更とあわせて行なうことにより、スキャンアウト（キャプチャデータの取り出し）時における半導体集積回路全体の消費電力を更に低減することができる。
【００４０】
（リオーダ方法）
図８から図１８を参照して、パワー大ＦＦの配置位置を変更する方法の例を説明する。
【００４１】
リオーダ例１
図８は、スキャンチェーン設計部２２１によって設計された２本のスキャンチェーンＳＣ１１、ＳＣ２１を示す図である。ここで、パワー大ＦＦ決定部２２２は、スキャンチェーンＳＣ１１におけるスキャンイン側（ＳＩ１）から１番目、５番目、６番目のスキャンセル１、５、６と、スキャンチェーンＳＣ２１におけるスキャンイン側（ＳＩ２）から７番目のスキャンセル１７をパワー大ＦＦとして選択する。又、２本のスキャンチェーンＳＣ１１、ＳＣ２１は同じクロック信号に同期して動作するものとする。
【００４２】
リオーダ部２２３は、スキャンチェーンＳＣ１１、ＳＣ２１内のスキャンセルを並び替えて図９に示す２本のスキャンチェーンＳＣ１１０、ＳＣ２１０を生成する。リオーダ部２２３は、動作クロックが同一の複数のスキャンチェーンがある場合、スキャンチェーン同士でスキャンセルを入れ替えることが可能であることが好ましい。このような場合、少しでも多くのパワー大ＦＦがスキャンイン側に配置されるように、スキャンチェーン毎のパワー大ＦＦの数を均一化することが好ましい。
【００４３】
スキャンチェーンＳＣ１１には３つ、スキャンチェーンＳＣ２１には１つのパワー大ＦＦが存在している。又、スキャンチェーンＳＣ１１、ＳＣ２１は同一のクロック信号に応じて動作するため、スキャンセルの入れ替えが可能である。従ってリオーダ部２２３は、パワー大ＦＦであるスキャンセル１、６をスキャンチェーンＳＣ１１０の最もスキャンイン側（ＳＩ１）に配置し、パワー大ＦＦであるスキャンセル５、１７をスキャンチェーンＳＣ２１０の最もスキャンイン側（ＳＩ２）に配置する。この際、スキャンセル５が他のスキャンチェーンＳＣ２１０に配置されたため、パワー小のスキャンセル（ここではスキャンセル１８）が１１０に配置される。
【００４４】
リオーダ例２
図１０は、スキャンチェーン設計部２２１によって設計されたスキャンチェーンＳＣ１３を示す図である。スキャンチェーンＳＣ１３は、クロック信号ＣＬＫ１で動作するクロックドメインＣＤ１（スキャンセル１〜４）と、クロック信号ＣＬＫ２で動作するクロックドメインＣＤ２（スキャンセル５〜８）とを備える。クロックドメインＣＤ１とクロックドメインＣＤ２との間は、ロックアップセルＲ１が挿入されている。尚、ロックアップセルＲ１は、同一極性のクロックドメイン間に挿入されるシフトタイミング保障用のラッチ又はフリップフロップである。
【００４５】
ここで、パワー大ＦＦ決定部２２２は、スキャンチェーンＳＣ１３におけるスキャンイン側（ＳＩ１）から４番目、５番目、８番目のスキャンセル４、５、８をパワー大ＦＦとして選択する。
【００４６】
リオーダ部２２３は、スキャンチェーンＳＣ１３内のスキャンセルを並び替えて図１１に示すスキャンチェーンＳＣ１３０を生成する。１つのスキャンチェーンに複数のクロックドメインが存在する場合、リオーダ部２２３は、クロックドメインの順番の入れ替えも考慮してパワー大ＦＦの配置を変更する。ここで、クロックドメイン内のスキャンセルの数が同じである場合、パワー大ＦＦの数が多いクロックドメインをスキャンイン側に配置する。これにより、より多くのパワー大ＦＦをトグル数の少ないスキャンイン側に配置できる。
【００４７】
スキャンチェーンＳＣ１３内のクロックドメインＣＤ１とクロックドメインＣＤ２内のスキャンセル数は同じである。このため、リオーダ部２２３は、パワー大ＦＦの数が多いクロックドメインＣＤ２をスキャンイン側に配置し、パワー大ＦＦであるスキャンセル５、８をクロックドメインＣＤ２内で最もスキャンイン側に配置する。これにより、スキャンセル５、８は、スキャンチェーンＳＣ１３０の最もスキャンイン側（ＳＩ１）に配置される。又、リオーダ部２２３は、パワー大ＦＦの数が少ないクロックドメインＣＤ２をスキャンアウト側に配置し、パワー大ＦＦであるスキャンセル４をクロックドメインＣＤ２内で最もスキャンイン側に配置する。
【００４８】
リオーダ例３
図１２は、スキャンチェーン設計部２２１によって設計されたスキャンチェーンＳＣ１４を示す図である。スキャンチェーンＳＣ１４は、クロック信号ＣＬＫ１で動作するクロックドメインＣＤ１（スキャンセル１〜６）と、クロック信号ＣＬＫ２で動作するクロックドメインＣＤ２（スキャンセル７〜８）とを備える。クロックドメインＣＤ１とクロックドメインＣＤ２との間は、ロックアップセルＲ１が挿入されている。
【００４９】
ここで、パワー大ＦＦ決定部２２２は、スキャンチェーンＳＣ１４におけるスキャンイン側（ＳＩ１）から４番目、５番目、８番目のスキャンセル４、５、８をパワー大ＦＦとして選択する。
【００５０】
リオーダ部２２３は、スキャンチェーンＳＣ１４内のスキャンセルを並び替えて図１３に示すスキャンチェーンＳＣ１４０を生成する。１つのスキャンチェーンに複数のクロックドメインが存在する場合、リオーダ部２２３は、クロックドメインの順番の入れ替えも考慮してパワー大ＦＦの配置を変更する。ここで、クロックドメイン内のスキャンセルの数が異なる場合、スキャンセル数が少ないクロックドメインをスキャンイン側に配置する方が消費電力を低減できる場合がある。
【００５１】
例えば、図１２を参照して、スキャンチェーンＳＣ１４内のクロックドメインＣＤ１におけるパワー大ＦＦ以外のスキャンセル１、２、３、６は多く存在する。この場合、クロックドメインＣＤ１をスキャンイン側に配置すると、消費電力の少ないスキャンセルの多くがスキャンイン側に配置され、クロックドメインＣＤ２内のパワー大ＦＦは、スキャンイン側から遠ざかり、トグル数の多い位置に配置されてしまう。一方、クロックドメインＣＤ２におけるパワー大ＦＦ以外のスキャンセル７は１つと少ないため、クロックドメインＣＤ２をスキャンイン側に配置しても、クロックドメインＣＤ１内のパワー大ＦＦは、スキャンイン側からスキャンセル１つ分しか遠ざからない位置に配置されることとなる。すなわち、多くのパワー大ＦＦを少しでもスキャンイン側に配置するように考慮して、クロックドメインの位置及びパワー大ＦＦの位置が変更されることが好ましい。
【００５２】
図１３に示すように、リオーダ部２２３は、クロックドメインＣＤ２をスキャンイン側に配置し、パワー大ＦＦであるスキャンセル８をクロックドメインＣＤ２内で最もスキャンイン側に配置する。これにより、スキャンセル８は、スキャンチェーンＳＣ１４０の最もスキャンイン側（ＳＩ１）に配置される。又、リオーダ部２２３は、クロックドメインＣＤ１をスキャンアウト側に配置し、パワー大ＦＦであるスキャンセル４、５をクロックドメインＣＤ２内で最もスキャンイン側に配置する。
【００５３】
リオーダ例４
図１４は、スキャンチェーン設計部２２１によって設計されたスキャンチェーンＳＣ１５を示す図である。スキャンチェーンＳＣ１５は、クロック信号ＣＬＫ１の立下りエッジで動作するクロックドメイン（ＮＥＧ）ＣＤ１（スキャンセル１〜３）と、クロック信号ＣＬＫ２の立上りエッジで動作するクロックドメイン（ＰＯＳ）ＣＤ２（スキャンセル４、５）と、クロック信号ＣＬＫ１の立上りエッジで動作するクロックドメイン（ＰＯＳ）ＣＤ３（スキャンセル６〜８）とを備える。クロックドメイン（ＰＯＳ）ＣＤ２とクロックドメイン（ＰＯＳ）ＣＤ３との間は、ロックアップセルＲ１が挿入されている。
【００５４】
ここで、パワー大ＦＦ決定部２２２は、スキャンチェーンＳＣ１５におけるスキャンイン側（ＳＩ１）から３番目、６番目、８番目のスキャンセル３、６、８をパワー大ＦＦとして選択する。
【００５５】
スキャンチェーン内にクロックの立下りエッジで動作するスキャンセル（ＰＯＳ）と立下りエッジで動作するスキャンセル（ＮＥＧ）が混在する場合、リオーダ部２２３は、スキャンセル（ＮＥＧ）とスキャンセル（ＰＯＳ）の順を入れ替え可能であることが好ましい。しかし、現在用いられているＤＦＴ／ＡＴＰＧツールの中には、スキャンセル（ＰＯＳ）をスキャンイン側、スキャンセル（ＮＥＧ）をスキャンアウト側とする構成は禁止されているものがある。このような場合、リオーダ部２２３は、図１５Ａに示すように、クロックドメイン（ＮＥＧ）ＣＤ１とクロックドメイン（ＰＯＳ）との入れ替えは行なわず、必要に応じてクロックドメイン（ＰＯＳ）のみの入れ替えを行なう。
【００５６】
ここで、リオーダ部２２３は、スキャンチェーンＳＣ１４内のスキャンセルを並び替えて図１５Ａに示すスキャンチェーンＳＣ１５１を生成する。図１５Ａを参照して、クロックドメイン（ＰＯＳ）ＣＤ２には、パワー大ＦＦが存在しないため、リオーダ部２２３は、パワー大ＦＦを２つ有するクロックドメイン（ＰＯＳ）ＣＤ３との位置を入れ替える。又、スキャンセル６、８をクロックドメイン（ＰＯＳ）ＣＤ３の最もスキャンイン側に配置する。更に、リオーダ部２２３は、クロックドメイン（ＮＥＧ）ＣＤ１の位置は変更せず、スキャンセル３をクロックドメイン（ＮＥＧ）ＣＤ１の最もスキャンイン側に配置する。これにより、スキャンセル３は、スキャンチェーンＳＣ１５１の最もスキャンイン側（ＳＩ１）に配置される。
【００５７】
一方、リオーダ部２２３が、スキャンセル（ＮＥＧ）とスキャンセル（ＰＯＳ）の順を入れ替え可能な機能を搭載している場合、スキャンチェーンＳＣ１４内のスキャンセルを並び替えて図１５Ｂに示すスキャンチェーンＳＣ１５２を生成する。図１５Ｂを参照してクロックドメイン（ＰＯＳ）ＣＤ２には、パワー大ＦＦが存在しないため、リオーダ部２２３は、クロックドメイン（ＰＯＳ）ＣＤ２をスキャンチェーンＳＣ１５２における最もスキャンアウト側にクロックドメイン（ＰＯＳ）ＣＤ２を配置する。又、スキャンチェーンＳＣ１４内のクロックドメイン（ＮＥＧ）ＣＤ１とクロックドメイン（ＰＯＳ）ＣＤ２内のスキャンセル数は同じである。このため、リオーダ部２２３は、パワー大ＦＦの数が多いクロックドメイン（ＰＯＳ）ＣＤ３をスキャンイン側に配置し、パワー大ＦＦであるスキャンセル６、８をクロックドメイン（ＰＯＳ）ＣＤ３内で最もスキャンイン側に配置する。これにより、スキャンセル６、８は、スキャンチェーンＳＣ１５２の最もスキャンイン側（ＳＩ１）に配置される。又、リオーダ部２２３は、パワー大ＦＦの数が少ないクロックドメイン（ＮＥＧ）ＣＤ１をクロックドメイン（ＰＯＳ）ＣＤ３に対しスキャンアウト側に配置し、パワー大ＦＦであるスキャンセル３をクロックドメイン（ＮＥＧ）ＣＤ１内で最もスキャンイン側に配置する。更に、クロックドメイン（ＰＯＳ）ＣＤ３とクロックドメイン（ＮＥＧ）ＣＤ１との間、及びクロックドメイン（ＮＥＧ）ＣＤ１とクロックドメイン（ＰＯＳ）ＣＤ３との間に、それぞれクロックの位相を保障する新たなロックアップセルＲ２、Ｒ３が挿入される。
【００５８】
以上のように、本発明によれば、リオーダ部２２３に与えられた制限の中で最も消費電力を低減できる配置にリオーダすることができる。
【００５９】
リオーダ例５
図１６は、スキャンチェーン設計部２２１によって設計された２本のスキャンチェーンＳＣ１６、ＳＣ２６を示す図である。スキャンチェーンＳＣ１６は、クロック信号ＣＬＫ１で動作するクロックドメインＣＤ１（スキャンセル１〜４）と、クロック信号ＣＬＫ２で動作するクロックドメインＣＤ２（スキャンセル５〜８）とを備える。クロックドメインＣＤ１とクロックドメインＣＤ２との間は、ロックアップセルＲ１が挿入されている。又、スキャンチェーンＳＣ２６は、クロック信号ＣＬＫ３で動作するクロックドメインＣＤ３（スキャンセル１１〜１４）と、クロック信号ＣＬＫ４で動作するクロックドメインＣＤ４（スキャンセル１５〜１８）とを備える。クロックドメインＣＤ３とクロックドメインＣＤ４との間は、ロックアップセルＲ２が挿入されている。
【００６０】
ここで、パワー大ＦＦ決定部２２２は、スキャンチェーンＳＣ１６におけるスキャンイン側（ＳＩ１）から１番目、３番目、５番目、８番目のスキャンセル１、３、５、８をパワー大ＦＦとして選択する。
【００６１】
リオーダ部２２３は、スキャンチェーンＳＣ１６、ＳＣ２６内のスキャンセルを並び替えて図１７に示す２本のスキャンチェーンＳＣ１６０、ＳＣ２６０を生成する。リオーダ部２２３は、複数のスキャンチェーン間で、クロックドメインの入れ替えが可能なことが好ましい。少しでも多くのパワー大ＦＦが配置されるように、クロックドメインを他のスキャンチェーンのスキャンイン側に配置することで、スキャンチェーン毎に配置するパワー大ＦＦの数を均一化することが好ましい。
【００６２】
スキャンチェーンＳＣ１６には４つのパワー大ＦＦが存在し、スキャンチェーンＳＣ２６にはパワー大ＦＦが存在しない。このような場合、クロックドメインごと他のスキャンチェーンと入れ替えて、パワー大ＦＦをスキャンチェーンにおける最もスキャンイン側に配置する。ここでは、リオーダ部２２３は、クロックドメインＣＤ２をスキャンチェーンＳＣ２６のスキャンイン側に配置し、クロックドメインＣＤ３をスキャンチェーンＳＣ１６０のスキャンアウト側に配置する。この際、リオーダ前のスキャンチェーンＳＣ１６、２６において、クロックドメインＣＤ１とクロックドメインＣＤ２との間、及びクロックドメインＣＤ３とクロックドメインＣＤ４との間に挿入されたロックアップセルＲ１、Ｒ２は、クロックドメインＣＤ１とクロックドメインＣＤ３との間、及びクロックドメインＣＤ２とクロックドメインＣＤ４との間に挿入される適切な構成のロックアップセルＲ３、Ｒ４に変更される。又、リオーダ部２２３は、パワー大ＦＦであるスキャンセル１、３をクロックドメインＣＤ１の最もスキャンイン側（ＳＩ１）に配置し、パワー大ＦＦであるスキャンセル５、８をクロックドメインＣＤ２の最もスキャンイン側（ＳＩ２）に配置する。これにより、パワー大ＦＦであるスキャンセル１、３はスキャンチェーンＳＣ１６０の最もスキャンイン側（ＳＩ１）に配置され、パワー大ＦＦであるスキャンセル５、８はスキャンチェーンＳＣ２１０の最もスキャンイン側（ＳＩ２）に配置される。
【００６３】
リオーダ例６
上述の例では、パワー大ＦＦとそれ以外のスキャンセルという２種類に分類してリオーダしていたがこれに限らず、消費電力が大きい順（例えばファンアウトコーン内のゲート数が大きい順）にスキャンイン側からスキャンセルを配置しても構わない。この場合、配線長を短くするという従来技術によるリオーダの効果を考慮して、消費電力の大きさ（例えばファンアウトコーン内のゲート数）と配線長による評価関数を用いてスキャンセルの配置を決定しても良い。
【００６４】
図１８は、図２に示すスキャンチェーンＳＣ１０をリオーダ部２２３によって配置換えされたスキャンチェーンＳＣ１０１を示す図である。ここでは、パワー大ＦＦであるスキャンセル５、７に停止回路ＳＴが接続される。停止回路ＳＴは、スキャンイネーブル信号ＳＥに応じてスキャンセル５、７の動作を停止する。これにより、パワー大ＦＦは、スキャンテストの際、動作しなくなるため消費電力を低減できる。この際、パワー大ＦＦ決定部２２２は、他のスキャンセル１〜４、６、８の中で最も消費電力（トグル１回当たりの半導体集積回路の消費電力）が大きいスキャンセルをパワー準大ＦＦとして選択する。リオーダ部２２３は、パワー準大ＦＦとして選択されたスキャンセル２、４をスキャンチェーンＳＣ１０１で最もスキャンイン側に配置する。停止回路ＳＴが接続されたスキャンセル５、７は、スキャンチェーンＳＣ１０１内で最も消費電力が少ないスキャンセルと認識されるため、スキャンチェーンＳＣ１０１における最もスキャンアウト側に配置される。
【００６５】
以上のように、本発明による半導体集積回路の設計方法、設計プログラム、及び半導体集積回路によれば、スキャンアウトに伴うトグルの回数が少ない位置に、トグルによる消費電力が大きいスキャンセル（パワー大ＦＦ）を配置することで、スキャンテストにおける消費電力を低減できる。
【００６６】
以上、本発明の実施の形態を詳述してきたが、具体的な構成は上記実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。上述のリオーダ例は、技術的に矛盾がない範囲で組み合せて適用できる。
【符号の説明】
【００６７】
１０：半導体集積回路設計支援装置
１１：ＣＰＵ
１２：ＲＡＭ
１３：記憶装置
１４：入力装置
１５：出力装置
２１：ネットリスト
２２：回路設計プログラム
２２１：スキャンチェーン設計部
２２２：パワー大ＦＦ決定部
２２３：リオーダ部
【図１】
2010199106.tif 000003
【図２】
2010199106.tif 000004
【図３】
2010199106.tif 000005
【図４】
2010199106.tif 000006
【図５】
2010199106.tif 000007
【図６】
2010199106.tif 000008
【図７】
2010199106.tif 000009
【図８】
2010199106.tif 000010
【図９】
2010199106.tif 000011
【図１０】
2010199106.tif 000012
【図１１】
2010199106.tif 000013
【図１２】
2010199106.tif 000014
【図１３】
2010199106.tif 000015
【図１４】
2010199106.tif 000016
【図１５Ａ】
2010199106.tif 000017
【図１５Ｂ】
2010199106.tif 000018
【図１６】
2010199106.tif 000019
【図１７】
2010199106.tif 000020
【図１８】
2010199106.tif 000021