(57)【要約】【課題】半導体集積回路のスキャンテストのスキャンシフト動作時における消費電力を効率的かつ効果的に削減すること。【解決手段】設計対象回路１００内の論理コーンＡ，Ｂごとに、各論理コーンＡ，Ｂに含まれる論理ゲートの消費電力の総和を求める。つぎに、論理コーンＡの消費電力の総和と、論理コーンＢの消費電力の総和とを比較する。そして、消費電力の総和が大きい論理コーンＢに含まれるＦＦ５〜ＦＦ７の出力端子側に制御回路を挿入する。これにより、論理ゲートＧ１〜Ｇ６からなる回路部分の動作を停止させて、スキャンシフト動作時における消費電力を削減する。このように、消費電力の削減効果が高い挿入位置に制御回路を優先的に挿入することにより、回路面積の増大化を抑制しつつ、スキャンシフト動作時における消費電力を効率的かつ効果的に削減する。【選択図】図１
2010181960.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを、
設計対象回路内のフリップフロップごとに、当該フリップフロップを基点として前段の論理ゲートを順次辿ることにより、前記フリップフロップから他のフリップフロップに辿り着くまでの間に含まれる論理ゲートを探索する探索手段、
前記探索手段によって探索された論理ゲートの消費電力を、前記設計対象回路内の論理ゲートごとの消費電力を保持するライブラリから抽出する抽出手段、
前記フリップフロップごとに、前記抽出手段によって抽出された論理ゲートごとの消費電力を足し合わせることにより、前記論理ゲートの消費電力の総和を算出する算出手段、
前記算出手段によって算出された算出結果に基づいて、前記設計対象回路のスキャンテストのスキャンシフト動作時に、前記他のフリップフロップの出力端子側の組み合わせ回路の動作を停止させる制御回路の挿入位置を決定する決定手段、
前記決定手段によって決定された決定結果を出力する出力手段、
として機能させることを特徴とする設計支援プログラム。
【請求項２】
前記決定手段は、
前記消費電力の総和が最大のフリップフロップを基点として前段の論理ゲートを順次辿ることで到達する他のフリップフロップと、当該他のフリップフロップの出力端子側の組み合わせ回路との間を前記制御回路の挿入位置に決定することを特徴とする請求項１に記載の設計支援プログラム。
【請求項３】
前記コンピュータを、
前記決定手段によって決定された挿入位置に前記制御回路を挿入する挿入手段として機能させ、
前記出力手段は、
前記挿入手段によって前記制御回路が挿入された挿入後の前記設計対象回路を出力することを特徴とする請求項１または２に記載の設計支援プログラム。
【請求項４】
前記コンピュータを、
前記挿入位置の後段の論理ゲートの種別に基づいて、複数の制御回路の中から挿入対象となる制御回路を選択する選択手段として機能させ、
前記挿入手段は、
前記選択手段によって選択された制御回路を前記挿入位置に挿入することを特徴とする請求項３に記載の設計支援プログラム。
【請求項５】
前記コンピュータを、
前記挿入位置に挿入される制御回路の回路面積と、前記設計対象回路に対して増加が許容される回路面積とに基づいて、前記制御回路の挿入の可否を判定する判定手段として機能させ、
前記挿入手段は、
前記判定手段によって挿入可能と判定された場合、前記挿入位置に前記制御回路を挿入することを特徴とする請求項４に記載の設計支援プログラム。
【請求項６】
コンピュータを、
設計対象回路内のフリップフロップごとに、当該フリップフロップとは異なる他のフリップフロップを基点として前段のセルを順次辿ることにより、前記フリップフロップに辿り着いた到達回数を計数する計数手段、
前記計数手段によって計数された計数結果に基づいて、前記設計対象回路のスキャンテストのスキャンシフト動作時に、前記フリップフロップの出力端子側の組み合わせ回路の動作を停止させる制御回路の挿入位置を決定する決定手段、
前記決定手段によって決定された決定結果を出力する出力手段、
として機能させることを特徴とする設計支援プログラム。
【請求項７】
設計対象回路内のフリップフロップごとに、当該フリップフロップを基点として前段の論理ゲートを順次辿ることにより、前記フリップフロップから他のフリップフロップに辿り着くまでの間に含まれる論理ゲートを探索する探索手段と、
前記探索手段によって探索された論理ゲートの消費電力を、前記設計対象回路内の論理ゲートごとの消費電力を保持するライブラリから抽出する抽出手段と、
前記フリップフロップごとに、前記抽出手段によって抽出された論理ゲートごとの消費電力を足し合わせることにより、前記論理ゲートの消費電力の総和を算出する算出手段と、
前記算出手段によって算出された算出結果に基づいて、前記設計対象回路のスキャンテストのスキャンシフト動作時に、前記他のフリップフロップの出力端子側の組み合わせ回路の動作を停止させる制御回路の挿入位置を決定する決定手段と、
前記決定手段によって決定された決定結果を出力する出力手段と、
を備えることを特徴とする設計支援装置。
【請求項８】
制御手段および記憶手段を備えるコンピュータが、
前記制御手段により、設計対象回路内のフリップフロップごとに、当該フリップフロップを基点として前段の論理ゲートを順次辿ることにより、前記フリップフロップから他のフリップフロップに辿り着くまでの間に含まれる論理ゲートを探索して、前記記憶手段に記憶する探索工程と、
前記制御手段により、前記探索工程によって探索された論理ゲートの消費電力を、前記設計対象回路内の論理ゲートごとの消費電力を保持するライブラリから抽出して、前記記憶手段に記憶する抽出工程と、
前記制御手段により、前記フリップフロップごとに、前記抽出工程によって抽出された論理ゲートごとの消費電力を足し合わせることにより、前記論理ゲートの消費電力の総和を算出して、前記記憶手段に記憶する算出工程と、
前記制御手段により、前記算出工程によって算出された算出結果に基づいて、前記設計対象回路のスキャンテストのスキャンシフト動作時に、前記他のフリップフロップの出力端子側の組み合わせ回路の動作を停止させる制御回路の挿入位置を決定して、前記記憶手段に記憶する決定工程と、
前記制御手段により、前記決定工程によって決定された決定結果を出力する出力工程と、
を実行することを特徴とする設計支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、半導体集積回路のスキャンテストにおけるスキャンシフト動作時の消費電力を削減する技術に関する。
【背景技術】
【０００２】
従来より、テスト容易化設計の一つとしてスキャンテストがある。スキャンテストとは、回路内部のフリップフロップをピンから直接制御・観測する経路（スキャンチェイン）を付加して、テストパターンの生成を容易にする手法である。
【０００３】
このスキャンテストにおいて、フリップフロップの出力端子側に制御回路を挿入して、フリップフロップ後段の組み合わせ回路の動作を制御する手法がある。この手法によれば、スキャンシフト動作時に制御回路に与える制御信号を固定することにより、組み合わせ回路の動作を停止させて消費電力を削減することができる。
【０００４】
ところが、制御回路を挿入するフリップフロップをランダムに選択すると、フリップフロップ後段の組み合わせ回路の動作を適切に停止させることができない場合がある。図２０は、従来の問題点を示す説明図である。図２０において、回路２０００は、フリップフロップ２００１〜２００４と、ＯＲゲート２００５と、ＡＮＤゲート２００６と、組み合わせ回路２００７と、を含む構成である。
【０００５】
ここでは、フリップフロップ２００１の出力端子側に制御回路２００８を挿入して、スキャンシフト動作時の消費電力を削減する場合を想定する。この場合、スキャンシフト動作時に制御回路２００８に与える制御信号を「１」に固定して、ＯＲゲート２００５の出力を固定しても、ＡＮＤゲート２００６以降の回路は動作する可能性がある。
【０００６】
したがって、この挿入例では、期待通りの削減効果を得ることができない場合がある。また、回路内（たとえば、回路２０００内）のすべてのフリップフロップの出力端子側に制御回路を挿入することも考えられるが、制御回路の挿入数が膨大なものとなり、回路面積の増大化を招くという問題がある。
【０００７】
そこで、半導体集積回路内のフリップフロップの中から、スキャンテストのスキャンシフト動作時に消費電力への影響が大きいものを選択し、そのフリップフロップに対して、スキャンシフト動作中に組み合わせ回路への出力値が固定される制御回路を挿入する従来技術がある（たとえば、下記特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００５−１１５５７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述した特許文献１に記載の従来技術では、フリップフロップに対して制御回路が挿入されると、その都度、削減された消費電力を見積もり、所望の消費電力まで削減することができたかを判定する必要がある。これでは、制御回路の挿入にともなう消費電力の見積もりにかかる処理時間が増大し、ひいては設計期間の長期化を招くという問題がある。
【００１０】
また、従来技術では、消費電力への影響を、フリップフロップの出力値を固定した場合に他のセル（ノード）の出力端子の値をいくつ固定できるかによって評価している。ところが、各セルの消費電力は種別や駆動能力などによって異なり、単純に個数では判断することができない場合がある。このため、消費電力を期待通りに削減することができない場合があり、結果的に、処理時間の増大化を招くという問題がある。
【００１１】
本開示技術は、上述した従来技術による問題点を解消するため、半導体集積回路のスキャンテストのスキャンシフト動作時における消費電力を効率的かつ効果的に削減することができる設計支援プログラム、設計支援装置、設計支援方法、および半導体集積回路を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するため、本開示技術は、設計対象回路内のフリップフロップごとに、当該フリップフロップを基点として前段の論理ゲートを順次辿ることにより、前記フリップフロップから他のフリップフロップに辿り着くまでの間に含まれる論理ゲートを探索し、探索された論理ゲートの消費電力を、前記設計対象回路内の論理ゲートごとの消費電力を保持するライブラリから抽出し、前記フリップフロップごとに抽出された論理ゲートごとの消費電力を足し合わせることにより、前記論理ゲートの消費電力の総和を算出し、算出された算出結果に基づいて、前記設計対象回路のスキャンテストのスキャンシフト動作時に、前記他のフリップフロップの出力端子側の組み合わせ回路の動作を停止させる制御回路の挿入位置を決定し、決定された決定結果を出力することを要件とする。
【００１３】
本開示技術によれば、設計対象回路の中から、スキャンシフト動作時に効果的に消費電力を削減することができる制御回路の挿入位置を絞り込むことができる。
【発明の効果】
【００１４】
本設計支援プログラム、設計支援装置、設計支援方法、および半導体集積回路によれば、半導体集積回路のスキャンテストのスキャンシフト動作時における消費電力を効率的かつ効果的に削減することができるという効果を奏する。
【図面の簡単な説明】
【００１５】
【図１】実施の形態１の概要を示す説明図である。
【図２】設計支援装置のハードウェア構成を示すブロック図である。
【図３】実施の形態１にかかる設計支援装置の機能的構成を示すブロック図である。
【図４】消費電力テーブルの記憶内容の一例を示す説明図である。
【図５】制御回路リストの一例を示す説明図である。
【図６】挿入済リストの一例を示す説明図である。
【図７】判定用テーブルの記憶内容を示す説明図である。
【図８】探索処理の具体例を示す説明図である。
【図９】探索結果の具体例を示す説明図である。
【図１０】実施の形態１にかかる設計支援装置の設計支援処理手順の一例を示すフローチャートである。
【図１１】消費電力算出処理の具体的な処理手順を示すフローチャートである。
【図１２】制御回路挿入処理の具体的な処理手順を示すフローチャートである。
【図１３】実施の形態２の概要を示す説明図である。
【図１４】実施の形態２にかかる設計支援装置の機能的構成を示すブロック図である。
【図１５】到達回数テーブルの記憶内容を示す説明図である。
【図１６】実施の形態２にかかる設計支援装置の設計支援処理手順の一例を示すフローチャートである。
【図１７】到達回数計数処理の具体的な処理手順を示すフローチャートである。
【図１８】半導体集積回路の構成を示す回路図（その１）である。
【図１９】半導体集積回路の構成を示す回路図（その２）である。
【図２０】従来の問題点を示す説明図である。
【発明を実施するための形態】
【００１６】
以下に添付図面を参照して、この発明にかかる設計支援プログラム、設計支援装置、設計支援方法、および半導体集積回路の好適な実施の形態を詳細に説明する。この設計支援プログラム、設計支援装置、設計支援方法、および半導体集積回路では、設計対象回路内の論理コーン同士の消費電力を比較して、スキャンシフト動作時に組み合わせ回路の動作を停止させる制御回路の挿入位置を絞り込むことにより、回路面積の増大化を抑制するとともに消費電力を削減する。
【００１７】
（実施の形態１）
まず、実施の形態１の概要について説明する。図１は、実施の形態１の概要を示す説明図である。図１において、設計対象回路１００の構成を示す回路図が表示されている。なお、図面には設計対象回路１００の一部を抜粋して表示している。具体的には、この回路図には、設計対象回路１００内の論理コーンＡ，Ｂが示されている。
【００１８】
ここで、論理コーンとは、あるフリップフロップ（以下、「ＦＦ」と表記）と、該ＦＦのファンインを辿って他のＦＦに到達するまでに経由する論理ゲートと、該他のＦＦとから形成されるセル集合である。たとえば、論理コーンＢは、ＦＦ８と、ＦＦ８のファンインを辿ってＦＦ５〜ＦＦ７に到達するまでに経由する論理ゲートＧ１〜Ｇ６と、ＦＦ５〜ＦＦ７と、から形成される。
【００１９】
実施の形態１では、各論理コーンに含まれる論理ゲートの消費電力の総和を、論理コーン同士で比較して、制御回路の挿入位置を決定する。（１）各論理コーンについて消費電力の総和を求める。たとえば、論理コーンＢについて、論理ゲートＧ１〜Ｇ６の消費電力を足し合わせて消費電力の総和を求める。同様に、論理コーンＡを形成する論理ゲートの消費電力の総和を求める。
【００２０】
（２）論理コーンＡについての消費電力の総和と、論理コーンＢについての消費電力の総和とを比較する。ここでは、論理コーンＡよりも論理コーンＢについての消費電力の総和が大きいと仮定する。（３）論理コーンＢに含まれるＦＦ５〜ＦＦ７の出力端子側を制御回路の挿入位置に決定する。
【００２１】
（４）ＦＦ５〜ＦＦ７の出力端子側に制御回路を挿入する。この結果、スキャンシフト動作時に、論理ゲートＧ１〜Ｇ６からなる組み合わせ回路部分の動作を停止させることができる。この場合、論理コーンＡに含まれるＦＦ１〜ＦＦ４の出力端子側に制御回路を挿入する場合に比べて、より多くの消費電力を削減することができる。
【００２２】
このように、実施の形態１では、論理コーン同士の消費電力を比較して制御回路の挿入位置を絞り込む。これにより、無駄に多くの制御回路を挿入して回路面積を増大化させることなく、スキャンシフト動作時における消費電力を効率的かつ効果的に削減することができる。
【００２３】
（設計支援装置のハードウェア構成）
つぎに、実施の形態１にかかる設計支援装置のハードウェア構成について説明する。図２は、設計支援装置のハードウェア構成を示すブロック図である。図２において、設計支援装置２００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３と、磁気ディスクドライブ２０４と、磁気ディスク２０５と、光ディスクドライブ２０６と、光ディスク２０７と、ディスプレイ２０８と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）２０９と、キーボード２１０と、マウス２１１と、スキャナ２１２と、プリンタ２１３と、を備えている。また、各構成部はバス２００によってそれぞれ接続されている。
【００２４】
ここで、ＣＰＵ２０１は、設計支援装置２００の全体の制御を司る。ＲＯＭ２０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ２０３は、ＣＰＵ２０１のワークエリアとして使用される。磁気ディスクドライブ２０４は、ＣＰＵ２０１の制御にしたがって磁気ディスク２０５に対するデータのリード／ライトを制御する。磁気ディスク２０５は、磁気ディスクドライブ２０４の制御で書き込まれたデータを記憶する。
【００２５】
光ディスクドライブ２０６は、ＣＰＵ２０１の制御にしたがって光ディスク２０７に対するデータのリード／ライトを制御する。光ディスク２０７は、光ディスクドライブ２０６の制御で書き込まれたデータを記憶したり、光ディスク２０７に記憶されたデータをコンピュータに読み取らせたりする。
【００２６】
ディスプレイ２０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ２０８は、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００２７】
インターフェース（以下、「Ｉ／Ｆ」と略する。）２０９は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク２１４に接続され、このネットワーク２１４を介して他の装置に接続される。そして、Ｉ／Ｆ２０９は、ネットワーク２１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ２０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００２８】
キーボード２１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス２１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００２９】
スキャナ２１２は、画像を光学的に読み取り、設計支援装置２００内に画像データを取り込む。なお、スキャナ２１２は、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）機能を持たせてもよい。また、プリンタ２１３は、画像データや文書データを印刷する。プリンタ２１３には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
【００３０】
（設計支援装置の機能的構成）
つぎに、実施の形態１にかかる設計支援装置２００の機能的構成について説明する。図３は、実施の形態１にかかる設計支援装置の機能的構成を示すブロック図である。図３において、設計支援装置２００は、取得部３０１と、探索部３０２と、抽出部３０３と、算出部３０４と、決定部３０５と、挿入部３０６と、選択部３０７と、判定部３０８と、挿入コスト算出部３０９と、出力部３１０と、を含む構成である。
【００３１】
この制御部となる機能（取得部３０１〜出力部３１０）は、具体的には、たとえば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶されたプログラムをＣＰＵ２０１に実行させることにより、または、Ｉ／Ｆ２０９により、その機能を実現する。
【００３２】
取得部３０１は、設計対象回路に関する回路情報を取得する機能を有する。ここで、回路情報とは、たとえば、設計対象回路内のセル間の接続関係をあらわすネットリストや回路図（または、ＲＴＬ記述）などである。セルとは、たとえば、ＦＦ、ラッチ、インバータ、ＡＮＤゲート、ＯＲゲートなどである。
【００３３】
具体的には、たとえば、取得部３０１が、キーボード２１０やマウス２１１を用いたユーザの操作入力により、回路情報を受け付けてもよく、また、ライブラリやデータベースからの抽出により取得することとしてもよい。なお、取得された取得結果は、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。
【００３４】
探索部３０２は、取得された回路情報に基づいて、設計対象回路内のＦＦごとに、当該ＦＦを基点として前段の論理ゲートを順次辿ることにより、当該ＦＦから他のＦＦに辿り着くまでの間に含まれる論理ゲートを探索する機能を有する。具体的には、たとえば、探索部３０２が、設計対象回路内のＦＦ群の中から選ばれた任意のＦＦのファンインを辿って前段のセルを探索する。
【００３５】
ここで、論理ゲートが探索された場合は、その論理ゲートのファンインを辿ってさらに前段のセルを再帰的に探索する。これをＦＦが探索されるまで繰り返す。そして、これら一連の処理を、設計対象回路内のＦＦ群の中から選ばれていない未選択のＦＦがなくなるまで繰り返す。なお、探索処理の具体例については後述する。
【００３６】
以降において、設計対象回路内の総ＦＦ数をＮ個とし、任意のＦＦをＦＦ（ｉ）と表記する（ｉ＝１，２，…，Ｎ）。また、ＦＦ（ｉ）を頂点とする論理コーンを形成する他のＦＦの総ＦＦ数をＭ個とし、他のＦＦをソースＦＦ（ｊ）と表記する（ｊ＝１，２，…，Ｍ）。なお、探索された探索結果は、ＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。
【００３７】
抽出部３０３は、探索された論理ゲートの消費電力を、各種論理ゲートの消費電力を保持する消費電力ライブラリ３００から抽出する機能を有する。具体的には、たとえば、抽出部３０３が、論理ゲートの種別や性能を手掛かりに、その論理ゲートの消費電力を消費電力ライブラリ３００から抽出する。
【００３８】
ここで、論理ゲートの種別とは、たとえば、ＡＮＤ、ＯＲ、ＮＡＮＤ、ＮＯＲなどの論理種別である。論理ゲートの能力とは、たとえば、出力端子の駆動能力である。なお、消費電力ライブラリ３００は、設計支援装置２００が備えていてもよく、また、外部のコンピュータ装置が備えていてもよい。外部のコンピュータ装置が備える場合は、ネットワーク２１４を介して論理ゲートの消費電力を取得することになる。
【００３９】
以降において、ＦＦ（ｉ）を頂点とする論理コーンを形成する論理ゲートの総ゲート数をＫ個とし、任意の論理ゲートをＧ（ｋ）と表記する（ｋ＝１，２，…，Ｋ）。また、論理ゲートＧ（ｋ）の消費電力をｐ（ｋ）と表記する。
【００４０】
なお、抽出部３０３による抽出処理は、探索部３０２によって論理ゲートが探索されると、その都度実行することにしてもよい。また、探索部３０２によってＦＦ（ｉ）を頂点とする論理コーンを形成するすべての論理ゲートが探索されたあと、一括して実行することにしてもよい。また、抽出された抽出結果は、ＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。
【００４１】
算出部３０４は、設計対象回路内のＦＦ（ｉ）ごとに、論理ゲートＧ（ｋ）の消費電力ｐ（ｋ）を足し合わせて消費電力の総和を算出する機能を有する。具体的には、たとえば、算出部３０４が、下記式（１）を用いて、消費電力の総和を求めることができる。ただし、消費電力Ｐ（ｉ）は、ＦＦ（ｉ）を頂点とする論理コーンに含まれる論理ゲートＧ（ｋ）の消費電力の総和である。
【００４２】
【数１】
2010181960.tif 000003
【００４３】
なお、算出された算出結果は、たとえば、図４に示す消費電力テーブル４００に記憶される。図４は、消費電力テーブルの記憶内容の一例を示す説明図である。図４において、消費電力テーブル４００は、設計対象回路内のＦＦ（ｉ）ごとの消費電力Ｐ（ｉ）を有している。この消費電力テーブル４００は、ＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶されている。
【００４４】
決定部３０５は、算出された算出結果に基づいて、設計対象回路のスキャンテストのスキャンシフト動作時に、ソースＦＦ（ｊ）の出力端子側の組み合わせ回路の動作を停止させる制御回路の挿入位置を決定する機能を有する。ここで、制御回路とは、スキャンシフト動作時に、ソースＦＦ（ｊ）から組み合わせ回路に伝達されるデータを固定するための回路である。
【００４５】
具体的には、制御回路は、ソースＦＦ（ｊ）の出力端子と接続される入力端子Ｘと、制御信号の入力を受け付ける入力端子Ｙと、組み合わせ回路の入力と接続される出力端子Ｚと、を有している（図５参照）。スキャンシフト動作時に入力端子Ｙに入力される制御信号を固定することにより、ソースＦＦ（ｊ）から組み合わせ回路に伝達されるデータを固定することができる。なお、制御回路は、予め複数種類用意されており、たとえば、図５に示す制御回路リスト５００に記憶されている。
【００４６】
具体的には、たとえば、決定部３０５が、消費電力の総和が最大のＦＦ（ｉ）を基点として前段の論理ゲートを順次辿ることで到達するソースＦＦ（ｊ）と、当該ソースＦＦ（ｊ）の出力端子側の組み合わせ回路との間を制御回路の挿入位置に決定する。なお、決定された決定結果は、ＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。
【００４７】
ここで、制御回路リストについて説明する。図５は、制御回路リストの一例を示す説明図である。図５において、制御回路リスト５００は、制御回路ＩＤ、種別、制御回路情報、回路面積といったフィールドを有している。各フィールドに情報を設定することで、挿入対象となる制御回路がレコードとして記憶される。
【００４８】
制御回路ＩＤとは、制御回路を識別する識別子である。種別とは、制御回路の論理種別である。制御回路情報とは、制御回路に関する回路記述（または、回路図）である。回路面積とは、制御回路を設計対象回路に挿入することで増加する面積である。この制御回路リスト５００は、たとえば、ＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶されている。
【００４９】
挿入部３０６は、決定された挿入位置に制御回路を挿入する機能を有する。具体的には、たとえば、設計対象回路に関する回路情報の中に制御回路情報を挿入する。このとき、挿入位置の前段のソースＦＦ（ｊ）を識別するセル名などを手掛かりに、回路情報内の挿入位置を特定する。なお、挿入された挿入結果は、図６に示す挿入済リスト６００に記憶される。
【００５０】
図６は、挿入済リストの一例を示す説明図である。図６において、挿入済リスト６００は、制御回路（たとえば、制御回路ＣＣ１，ＣＣ２，ＣＣ３）ごとの挿入個数（たとえば、Ｆ１，Ｆ２，Ｆ３）を有している。この挿入済リスト６００は、ＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶されている。
【００５１】
選択部３０７は、挿入位置の後段の論理ゲートの種別に基づいて、複数の制御回路の中から挿入対象となる制御回路を選択する機能を有する。具体的には、たとえば、後段の論理ゲートがＡＮＤゲートの場合、制御回路リスト５００から制御回路ＣＣ１を選択する。この場合、挿入部３０６は、制御回路リスト５００から制御回路ＣＣ１の制御回路情報を読み出して、設計対象回路に関する回路情報に挿入する。
【００５２】
また、後段の論理ゲートがＯＲゲートの場合、制御回路リスト５００の中から制御回路ＣＣ２を選択する。この場合、挿入部３０６は、制御回路リスト５００から制御回路ＣＣ２の制御回路情報を読み出して、設計対象回路に関する回路情報に挿入する。なお、選択された選択結果は、ＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。
【００５３】
判定部３０８は、決定された挿入位置に挿入される制御回路の回路面積と、設計対象回路に対して増加が許容される回路面積とに基づいて、制御回路の挿入の可否を判定する機能を有する。ここで、設計対象回路に対して増加が許容される回路面積は、予め任意に設定されて、たとえば、図７に示す判定用テーブル７００に記憶されている。
【００５４】
図７は、判定用テーブルの記憶内容を示す説明図である。図７において、判定用テーブル７００は、許容値、挿入コストおよびエンドフラグのフィールドを有している。許容値のフィールドには、設計対象回路に対して増加が許容される回路面積の許容値ＰＶが設定されている。挿入コストのフィールドには、後述する挿入コスト算出部３０９の算出結果（挿入コストＩＣ）が設定される。
【００５５】
エンドフラグのフィールドには、制御回路の挿入の可否をあらわすフラグが設定されている。エンドフラグがＯＦＦの場合は挿入可能、ＯＮの場合は挿入不能を示す。初期状態ではＯＦＦである。この判定用テーブル７００は、たとえば、ＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶されている。
【００５６】
ここで、判定処理の具体例について説明する。挿入コスト算出部３０９は、選択された制御回路の面積と、挿入された挿入済みの制御回路の総面積との総和を算出する機能を有する。具体的には、まず、挿入コスト算出部３０９が、制御回路リスト５００を参照して、選択された制御回路の面積を特定する。
【００５７】
つぎに、挿入コスト算出部３０９が、制御回路リスト５００および挿入済リスト６００を参照して、挿入済みの制御回路の面積を算出する。より具体的には、たとえば、挿入済リスト６００から各制御回路の挿入個数を特定する。さらに、その個数を、制御回路リスト５００から特定される各制御回路の面積と掛け合わせて挿入済みの制御回路の総面積を算出する。
【００５８】
そして、選択された制御回路の面積と、挿入された挿入済みの制御回路の総面積とを足し合わせることにより、挿入コストＩＣを算出する。この挿入コストＩＣは、図７に示した判定用テーブル７００に記憶される。
【００５９】
この場合、判定部３０８は、判定用テーブル７００を参照して、挿入コストＩＣと許容値ＰＶとを比較することにより、制御回路の挿入の可否を判定する。具体的には、たとえば、判定部３０８が、「挿入コストＩＣ≦許容値ＰＶ」の場合に、制御回路が挿入可能であると判定する。また、挿入部３０６は、判定部３０８によって挿入可能と判定された場合、決定された挿入位置に制御回路を挿入することになる。
【００６０】
なお、判定処理は上述した手法に限らない。具体的には、たとえば、設計対象回路に制御回路が挿入されると、その都度、設計対象回路に対して増加が許容される残余の回路面積を算出する。そして、選択された制御回路の回路面積と、残余の回路面積とを比較して、制御回路の挿入の可否を判定することにしてもよい。
【００６１】
出力部３１０は、決定部３０５によって決定された決定結果を出力する機能を有する。具体的には、たとえば、制御回路の挿入位置の前段のソースＦＦを識別するセル名をリスト化して出力することにしてもよい。これにより、設計対象回路の中から、スキャンシフト動作時に効果的に消費電力を削減することができる制御回路の挿入位置を絞り込むことができる。
【００６２】
また、出力部３１０は、制御回路が挿入された挿入後の設計対象回路を出力することにしてもよい。これにより、スキャンシフト動作時の消費電力が少ない高品質の半導体集積回路を製造するための回路情報を提供することができる。なお、出力形式としては、たとえば、ディスプレイ２０８への表示、プリンタ２１３への印刷出力、Ｉ／Ｆ２０９による外部装置への送信がある。また、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶することとしてもよい。
【００６３】
（検出処理の具体例）
ここで、上記探索部３０２による探索処理の具体例について説明する。ここでは、図１に示した設計対象回路１００内のＦＦ８を頂点とする論理コーンＢに含まれる論理ゲートを探索する場合について説明する。図８は、探索処理の具体例を示す説明図である。
【００６４】
図８において、（１）ＦＦ８のファンインを辿って前段のセル（以下、「ファンインセル」という）を探索する。ここでは論理ゲートＧ５が探索される。ＦＦ８は複数のファンインを有する分岐セルである。（２）論理ゲートＧ５のファンインセルを探索する。ここでは論理ゲートＧ３が探索される。論理ゲートＧ３は分岐セルである。
【００６５】
（３）論理ゲートＧ３のファンインセルを探索する。ここでは論理ゲートＧ１が探索される。（４）論理ゲートＧ１のファンインセルを探索する。ここではソースＦＦとなるＦＦ５が探索される。このため、これ以降の前段のセルの探索を終了する。
【００６６】
（５）直前の分岐セルに戻り、論理ゲートＧ３のファンインを辿って、論理ゲートＧ１とは異なるファンインセルを探索する。ここでは論理ゲートＧ２が探索される。（６）論理ゲートＧ１のファンインセルを探索する。ここではソースＦＦとなるＦＦ６が探索される。このため、これ以降の前段のセルの探索を終了する。
【００６７】
（７）直前の分岐セルに戻り、論理ゲートＧ３のファンインを辿って、論理ゲートＧ１，Ｇ２とは異なる前段のセルを探索する。ここでは、前段のセルが未探索となる。このため、これ以降の前段のセルの探索を終了する。
【００６８】
（８）直前の分岐セルに戻り、ＦＦ８のファンインを辿って、論理ゲートＧ５とは異なる前段のセルを探索する。ここでは論理ゲートＧ６が探索される。（９）論理ゲートＧ６のファンインセルを探索する。ここでは論理ゲートＧ４が探索される。
【００６９】
（１０）論理ゲートＧ４のファンインセルを探索する。ここではソースＦＦとなるＦＦ７が探索される。このため、これ以降の前段のセルの探索を終了する。（１１）直前の分岐セルに戻り、ＦＦ８のファンインを辿って、論理ゲートＧ５，Ｇ６とは異なる前段のセルを探索する。ここでは、前段のセルが未探索となる。このため、前段のセルの探索を終了する。
【００７０】
このように、論理コーンＢの頂点となるＦＦ８を基点としてファンインを辿って、前段のセルを再帰的に探索することにより、論理コーンＢに含まれるすべてのセルを探索する。この結果、論理コーンＢに含まれる論理ゲートＧ１〜Ｇ６およびソースＦＦ５〜ＦＦ７が探索される。
【００７１】
ここで、探索結果の具体例について説明する。図９は、探索結果の具体例を示す説明図である。図９において、探索結果９００は、ＦＦ８を頂点とする論理コーンＢに含まれるソースＦＦと論理ゲートとを有している。この探索結果９００によれば、ソースＦＦとなるＦＦ５〜ＦＦ７と、論理ゲートＧ１〜Ｇ６と、を認識することができる。
【００７２】
（設計支援装置の設計支援処理手順）
つぎに、実施の形態１にかかる設計支援装置２００の設計支援処理手順について説明する。図１０は、実施の形態１にかかる設計支援装置の設計支援処理手順の一例を示すフローチャートである。図１０のフローチャートにおいて、まず、設計対象回路に関する回路情報を取得したか否かを判断する（ステップＳ１００１）。
【００７３】
ここで、回路情報を取得するのを待って（ステップＳ１００１：Ｎｏ）、取得した場合（ステップＳ１００１：Ｙｅｓ）、ｉ＝１として（ステップＳ１００２）、設計対象回路内のＦＦ群の中から任意のＦＦ（ｉ）を選択する（ステップＳ１００３）。
【００７４】
このあと、ＦＦ（ｉ）を頂点とする論理コーンに含まれる論理ゲートＧ（ｋ）の消費電力の総和を算出する消費電力算出処理を実行する（ステップＳ１００４）。そして、算出されたＦＦ（ｉ）の消費電力Ｐ（ｉ）を消費電力テーブル４００に登録する（ステップＳ１００５）。
【００７５】
つぎに、「ｉ＝Ｎ」か否かを判断して（ステップＳ１００６）、「ｉ≠Ｎ」の場合（ステップＳ１００６：Ｎｏ）、ｉをインクリメントして（ステップＳ１００７）、ステップＳ１００４に戻る。一方、「ｉ＝Ｎ」の場合（ステップＳ１００６：Ｙｅｓ）、消費電力テーブル４００に記憶されている消費電力を大きい順にソートする（ステップＳ１００８）。
【００７６】
このあと、ｉ＝１とし（ステップＳ１００９）、ソート後の消費電力テーブル４００を参照して、設計対象回路内のＦＦ群の中からＦＦ（ｉ）を選択する（ステップＳ１０１０）。そして、ＦＦ（ｉ）を頂点とする論理コーンに含まれるソースＦＦ（ｊ）の出力端子側に制御回路を挿入する制御回路挿入処理を実行する（ステップＳ１０１１）。
【００７７】
つぎに、「ｉ＝Ｎ」か否か、または、エンドフラグがＯＮか否かを判断して（ステップＳ１０１２）、「ｉ≠Ｎ」かつエンドフラグがＯＦＦの場合（ステップＳ１０１２：Ｎｏ）、ｉをインクリメントして（ステップＳ１０１３）、ステップＳ１０１０に戻る。
【００７８】
一方、「ｉ＝Ｎ」、または、エンドフラグがＯＮの場合（ステップＳ１０１２：Ｙｅｓ）、制御回路が挿入された挿入後の設計対象回路に関する回路情報を出力して（ステップＳ１０１４）、本フローチャートによる一連の処理を終了する。
【００７９】
つぎに、図１０のステップＳ１００４に示した消費電力算出処理の具体的な処理手順について説明する。なお、以降において、ＦＦ（ｉ）のファンインセルを「Ｆｉｎ（ｇ）」と表記する（ｇ＝１，２，…，Ｇ）。図１１は、消費電力算出処理の具体的な処理手順を示すフローチャートである。
【００８０】
図１１において、まず、ＦＦ（ｉ）のファンインを辿ってＦｉｎ（ｇ）を探索する（ステップＳ１１０１）。ここで、Ｆｉｎ（ｇ）が探索されなかった場合（ステップＳ１１０２：Ｎｏ）、図１０に示したステップＳ１００５に移行する。一方、Ｆｉｎ（ｇ）が探索された場合（ステップＳ１１０２：Ｙｅｓ）、ｇ＝１とする（ステップＳ１１０３）。
【００８１】
このあと、Ｆｉｎ（ｇ）がＦＦか否かを判断して（ステップＳ１１０４）、論理ゲートの場合（ステップＳ１１０４：Ｎｏ）、Ｆｉｎ（ｇ）の消費電力ｐ（ｇ）を消費電力ライブラリ３００から抽出する（ステップＳ１１０５）。なお、この消費電力ｐ（ｇ）は、上述した論理ゲートＧ（ｋ）の消費電力ｐ（ｋ）に相当する。また、ステップＳ１１０４において、Ｆｉｎ（ｇ）がＦＦの場合は（ステップＳ１１０４：Ｙｅｓ）、ステップＳ１１０９に移行する。
【００８２】
そして、「Ｐ（ｉ）＝Ｐ（ｉ）＋ｐ（ｇ）」を算出する（ステップＳ１１０６）。つぎに、Ｆｉｎ（ｇ）のファンインを辿って再帰的に前段のセルを探索して消費電力算出処理を実行する（ステップＳ１１０７）。以降において、ステップＳ１１０７の消費電力算出処理を実行することで得られる消費電力をＱ（ｇ）と表記する。
【００８３】
そして、「Ｐ（ｉ）＝Ｐ（ｉ）＋Ｑ（ｇ）」を算出する（ステップＳ１１０８）。このあと、「ｇ＝Ｇ」か否かを判断して（ステップＳ１１０９）、「ｇ≠Ｇ」の場合（ステップＳ１１０９：Ｎｏ）、ｇをインクリメントして（ステップＳ１１１０）、ステップＳ１１０４に戻る。一方、「ｇ＝Ｇ」の場合（ステップＳ１１０９：Ｙｅｓ）、図１０に示したステップＳ１００５に移行する。
【００８４】
つぎに、図１０のステップＳ１０１１に示した制御回路挿入処理の具体的な処理手順について説明する。図１２は、制御回路挿入処理の具体的な処理手順を示すフローチャートである。図１２において、まず、図１１に示したステップＳ１１０１における探索結果を参照して、ＦＦ（ｉ）を頂点とする論理コーンのソースＦＦ（ｊ）を特定する（ステップＳ１２０１）。
【００８５】
このあと、ｊ＝１として（ステップＳ１２０２）、ソースＦＦ（ｊ）の次段の論理ゲートの種別を特定し（ステップＳ１２０３）、制御回路リスト５００の中から挿入対象の制御回路を選択する（ステップＳ１２０４）。つぎに、制御回路リスト５００および挿入済リスト６００を参照して、選択された制御回路の面積と、挿入された挿入済みの制御回路の総面積とを足し合わせた挿入コストＩＣを算出する（ステップＳ１２０５）。
【００８６】
そして、「挿入コストＩＣ≦許容値ＰＶ」か否かを判定する（ステップＳ１２０６）。ここで、「挿入コストＩＣ≦許容値ＰＶ」の場合（ステップＳ１２０６：Ｙｅｓ）、選択された制御回路をソースＦＦ（ｊ）の出力端子側に挿入する（ステップＳ１２０７）。そして、「ｊ＝Ｍ」か否かを判断する（ステップＳ１２０８）。
【００８７】
ここで、「ｊ≠Ｍ」の場合（ステップＳ１２０８：Ｎｏ）、ｊをインクリメントして（ステップＳ１２０９）、ステップＳ１２０３に戻る。一方、「ｊ＝Ｍ」の場合（ステップＳ１２０８：Ｙｅｓ）、図１０に示したステップＳ１０１２に移行する。
【００８８】
また、ステップＳ１２０６において、「挿入コストＩＣ＞許容値ＰＶ」の場合（ステップＳ１２０６：Ｎｏ）、判定用テーブル７００のエンドフラグをＯＦＦからＯＮに変更して（ステップＳ１２１０）、図１０に示したステップＳ１０１２に移行する。
【００８９】
以上説明したように、実施の形態１によれば、設計対象回路のスキャンテストのスキャンシフト動作時に効果的に消費電力を削減することができる制御回路の挿入位置を絞り込むことができる。これにより、制御回路の挿入にともなう回路面積の増大化を抑制するとともに、スキャンシフト動作時における消費電力を効率的かつ効果的に削減することができる。
【００９０】
また、消費電力の削減効果の高い挿入位置を的確に絞り込むことにより、消費電力削減作業の手戻りを防ぎ、設計期間の短縮化を図ることができる。この結果、スキャンテストのスキャンシフト動作時における消費電力が低減された高品質の半導体集積回路を早期に提供することができる。
【００９１】
（実施の形態２）
つぎに、実施の形態２について説明する。図１３は、実施の形態２の概要を示す説明図である。図１３において、設計対象回路１３００の構成を示す回路図が表示されている。なお、図面には設計対象回路１３００の一部を抜粋して表示している。具体的には、この回路図には、設計対象回路１３００内の論理コーンＣ，Ｄが示されている。ここで、ＦＦ９〜ＦＦ１１は、論理コーンＣのソースＦＦである。また、ＦＦ１０〜ＦＦ１４は、論理コーンＤのソースＦＦである。
【００９２】
実施の形態２では、論理コーンを形成するソースＦＦのうち、複数の論理コーンに重複して含まれるソースＦＦの出力端子側に制御回路を挿入する。ここでは、論理コーンＣ，Ｄを形成するソースＦＦ９〜ＦＦ１４のうち、ソースＦＦ１０，ＦＦ１１は論理コーンＣ，Ｄに重複して含まれるソースＦＦである。
【００９３】
このため、論理コーンＣ，Ｄに重複して含まれるソースＦＦ１０，ＦＦ１１の出力端子側に制御回路を挿入する。これにより、論理コーンＣおよび論理コーンＤの一部の動作を同時に停止させることになり、スキャンシフト動作時の消費電力を効率的に削減することができる。なお、以降において、実施の形態１で説明した箇所と同一の箇所については図示および説明を省略する。
【００９４】
（設計支援装置の機能的構成）
つぎに、実施の形態２にかかる設計支援装置の機能的構成について説明する。図１４は、実施の形態２にかかる設計支援装置の機能的構成を示すブロック図である。図１４において、設計支援装置１４００は、取得部３０１と、計数部１４０１と、決定部３０５と、挿入部３０６と、選択部３０７と、判定部３０８と、挿入コスト算出部３０９と、出力部３１０と、を含む構成である。
【００９５】
この制御部となる機能（取得部３０１、決定部３０５〜出力部３１０、計数部１４０１）は、具体的には、たとえば、ＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶されたプログラムをＣＰＵ２０１に実行させることにより、または、Ｉ／Ｆ２０９により、その機能を実現する。
【００９６】
計数部１４０１は、設計対象回路内のＦＦごとに、当該ＦＦとは異なる他のＦＦを基点として前段のセルを順次辿ることにより、ＦＦに辿り着いた到達回数を計数する機能を有する。具体的には、たとえば、計数部１４０１が、設計対象回路内のＦＦ群の中から選ばれたＦＦ（ｉ）のＦｉｎ（ｇ）を探索する。なお、Ｆｉｎ（ｇ）はファンインセルである。
【００９７】
ここで、Ｆｉｎ（ｇ）がＦＦの場合は、そのＦＦの到達回数をインクリメントする。一方、Ｆｉｎ（ｇ）がＦＦではない場合は、そのＦｉｎ（ｇ）のファンインを辿ってさらに前段のセルを再帰的に探索する。これら一連の処理を、設計対象回路内のＦＦ群の中から選ばれていない未選択のＦＦ（ｉ）がなくなるまで繰り返す。
【００９８】
なお、計数された計数結果は、たとえば、図１５に示す到達回数テーブル１５００に記憶される。図１５は、到達回数テーブルの記憶内容を示す説明図である。図１５において、到達回数テーブル１５００は、設計対象回路内のＦＦ１〜ＦＦＮごとの到達回数ＡＣ１〜ＡＣＮを有している。なお、ＦＦ１〜ＦＦＮはセル名である。この到達回数テーブル１５００は、たとえば、ＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶されている。
【００９９】
この場合、決定部３０５は、計数された計数結果に基づいて、制御回路の挿入位置を決定する。具体的には、たとえば、決定部３０５が、到達回数が最大のＦＦと、当該ＦＦの出力端子側の組み合わせ回路との間を制御回路の挿入位置に決定する。
【０１００】
（設計支援装置の設計支援処理手順）
つぎに、実施の形態２にかかる設計支援装置１４００の設計支援処理手順について説明する。図１６は、実施の形態２にかかる設計支援装置の設計支援処理手順の一例を示すフローチャートである。図１６のフローチャートにおいて、まず、設計対象回路に関する回路情報を取得したか否かを判断する（ステップＳ１６０１）。
【０１０１】
ここで、回路情報を取得するのを待って（ステップＳ１６０１：Ｎｏ）、取得した場合（ステップＳ１６０１：Ｙｅｓ）、ｉ＝１として（ステップＳ１６０２）、設計対象回路内のＦＦ群の中から任意のＦＦ（ｉ）を選択する（ステップＳ１６０３）。このあと、ＦＦ（ｉ）のＦｉｎ（ｇ）を辿って各ＦＦの到達回数を計数する到達回数計数処理を実行する（ステップＳ１６０４）。
【０１０２】
つぎに、「ｉ＝Ｎ」か否かを判断して（ステップＳ１６０５）、「ｉ≠Ｎ」の場合（ステップＳ１６０５：Ｎｏ）、ｉをインクリメントして（ステップＳ１６０６）、ステップＳ１６０４に戻る。一方、「ｉ＝Ｎ」の場合（ステップＳ１６０５：Ｙｅｓ）、到達回数テーブル１５００に記憶されている到達回数を大きい順にソートする（ステップＳ１６０７）。
【０１０３】
このあと、ｉ＝１とし（ステップＳ１６０８）、ソート後の到達回数テーブル１５００を参照して、設計対象回路内のＦＦ群の中からＦＦ（ｉ）を選択する（ステップＳ１６０９）。そして、ＦＦ（ｉ）を頂点とする論理コーンに含まれるソースＦＦ（ｊ）の出力端子側に制御回路を挿入する制御回路挿入処理を実行する（ステップＳ１６１０）。
【０１０４】
つぎに、「ｉ＝Ｎ」か否か、または、エンドフラグがＯＮか否かを判断して（ステップＳ１６１１）、「ｉ≠Ｎ」かつエンドフラグがＯＦＦの場合（ステップＳ１６１１：Ｎｏ）、ｉをインクリメントして（ステップＳ１６１２）、ステップＳ１６０９に戻る。
【０１０５】
一方、「ｉ＝Ｎ」、または、エンドフラグがＯＮの場合（ステップＳ１６１１：Ｙｅｓ）、制御回路が挿入された挿入後の設計対象回路に関する回路情報を出力して（ステップＳ１６１３）、本フローチャートによる一連の処理を終了する。
【０１０６】
つぎに、図１６のステップＳ１６０４に示した到達回数計数処理の具体的な処理手順について説明する。図１７は、到達回数計数処理の具体的な処理手順を示すフローチャートである。図１７において、まず、ＦＦ（ｉ）のファンインを辿ってＦｉｎ（ｇ）を探索する（ステップＳ１７０１）。
【０１０７】
ここで、Ｆｉｎ（ｇ）が探索されなかった場合（ステップＳ１７０２：Ｎｏ）、図１６に示したステップＳ１６０５に移行する。一方、Ｆｉｎ（ｇ）が探索された場合（ステップＳ１７０２：Ｙｅｓ）、ｇ＝１とする（ステップＳ１７０３）。
【０１０８】
このあと、Ｆｉｎ（ｇ）がＦＦか否かを判断して（ステップＳ１７０４）、ＦＦの場合（ステップＳ１７０４：Ｙｅｓ）、Ｆｉｎ（ｇ）の到達回数をインクリメントする（ステップＳ１７０５）。一方、論理ゲートの場合（ステップＳ１７０４：Ｎｏ）、Ｆｉｎ（ｇ）のファンインを辿って再帰的に前段のセルを探索して到達回数計数処理を実行する（ステップＳ１７０６）。
【０１０９】
このあと、「ｇ＝Ｇ」か否かを判断して（ステップＳ１７０７）、「ｇ≠Ｇ」の場合（ステップＳ１７０７：Ｎｏ）、ｇをインクリメントして（ステップＳ１７０８）、ステップＳ１７０４に戻る。一方、「ｇ＝Ｇ」の場合（ステップＳ１７０７：Ｙｅｓ）、図１６に示したステップＳ１６０５に移行する。
【０１１０】
以上説明したように、実施の形態２によれば、複数の論理コーンに重複して含まれるソースＦＦに対して制御回路を挿入することにより、制御回路の挿入にともなう消費電力の削減効果を高めることができる。これにより、制御回路の挿入にともなう回路面積の増大化を抑制しつつ、より効率的かつ効果的に消費電力を削減することができる。
【０１１１】
なお、実施の形態２で説明した手法により、複数の論理コーンに重複して含まれるソースＦＦに対して制御回路を挿入したあと、さらに、実施の形態１で説明した手法により、消費電力の大きな論理コーンに含まれるソースＦＦに対して制御回路を挿入することにしてもよい。これにより、スキャンシフト動作時における消費電力の削減効果が高いところに優先的に制御回路を挿入したあと、さらに、回路面積の許容値を超えるまで網羅的に制御回路を挿入することができる。
【０１１２】
ここで、本実施の形態の手法により制御回路が挿入された回路情報を用いて製造される半導体集積回路について説明する。図１８は、半導体集積回路の構成を示す回路図（その１）である。図１８において、半導体集積回路１８００は、特定のＦＦから前段の論理ゲートを順次辿ることで到達する全ＦＦの出力端子と組み合わせ回路との間に制御回路を備えている。なお、図面では半導体集積回路の一部を抜粋して表示している。
【０１１３】
具体的には、ＦＦ１８０６からファンインを順次辿ることで到達するＦＦ１８０１〜１８０３の出力端子と、組み合わせ回路１８０８との間に制御回路１８１０〜１８１２が挿入されている。この制御回路１８１０〜１８１２によれば、設計対象回路１８００のスキャンテストのスキャンシフト動作時に組み合わせ回路１８０８の動作を停止させることができる。
【０１１４】
図１９は、半導体集積回路の構成を示す回路図（その２）ある。図１９において、半導体集積回路１９００は、第１および第２のＦＦから前段の論理ゲートを順次辿ることで到達するＦＦのうち、重複するＦＦの出力端子と組み合わせ回路との間に制御回路を備える。なお、図面では半導体集積回路の一部を抜粋して表示している。
【０１１５】
具体的には、ＦＦ１９０７およびＦＦ１９０８からファンインを順次辿ることで到達するＦＦ１９０１〜１９０６のうち、重複するＦＦ１９０２，１９０３の出力端子と組み合わせ回路１９０９，１９１０との間に制御回路１９１１，１９１２が挿入されている。この制御回路１９１１，１９１２によれば、スキャンテストのスキャンシフト動作時における組み合わせ回路１９０９および組み合わせ回路１９１０の重複部分の動作を停止させることができる。
【０１１６】
なお、本実施の形態で説明した設計支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、このプログラムは、インターネットなどのネットワークを介して配布することが可能であってもよい。
【０１１７】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１１８】
（付記１）コンピュータを、
設計対象回路内のフリップフロップごとに、当該フリップフロップを基点として前段の論理ゲートを順次辿ることにより、前記フリップフロップから他のフリップフロップに辿り着くまでの間に含まれる論理ゲートを探索する探索手段、
前記探索手段によって探索された論理ゲートの消費電力を、前記設計対象回路内の論理ゲートごとの消費電力を保持するライブラリから抽出する抽出手段、
前記フリップフロップごとに、前記抽出手段によって抽出された論理ゲートごとの消費電力を足し合わせることにより、前記論理ゲートの消費電力の総和を算出する算出手段、
前記算出手段によって算出された算出結果に基づいて、前記設計対象回路のスキャンテストのスキャンシフト動作時に、前記他のフリップフロップの出力端子側の組み合わせ回路の動作を停止させる制御回路の挿入位置を決定する決定手段、
前記決定手段によって決定された決定結果を出力する出力手段、
として機能させることを特徴とする設計支援プログラム。
【０１１９】
（付記２）前記決定手段は、
前記消費電力の総和が最大のフリップフロップを基点として前段の論理ゲートを順次辿ることで到達する他のフリップフロップと、当該他のフリップフロップの出力端子側の組み合わせ回路との間を前記制御回路の挿入位置に決定することを特徴とする付記１に記載の設計支援プログラム。
【０１２０】
（付記３）前記コンピュータを、
前記決定手段によって決定された挿入位置に前記制御回路を挿入する挿入手段として機能させ、
前記出力手段は、
前記挿入手段によって前記制御回路が挿入された挿入後の前記設計対象回路を出力することを特徴とする付記１または２に記載の設計支援プログラム。
【０１２１】
（付記４）前記コンピュータを、
前記挿入位置の後段の論理ゲートの種別に基づいて、複数の制御回路の中から挿入対象となる制御回路を選択する選択手段として機能させ、
前記挿入手段は、
前記選択手段によって選択された制御回路を前記挿入位置に挿入することを特徴とする付記３に記載の設計支援プログラム。
【０１２２】
（付記５）前記コンピュータを、
前記挿入位置に挿入される制御回路の回路面積と、前記設計対象回路に対して増加が許容される回路面積とに基づいて、前記制御回路の挿入の可否を判定する判定手段として機能させ、
前記挿入手段は、
前記判定手段によって挿入可能と判定された場合、前記挿入位置に前記制御回路を挿入することを特徴とする付記４に記載の設計支援プログラム。
【０１２３】
（付記６）前記コンピュータを、
前記選択手段によって選択された制御回路の面積と、前記挿入手段によって挿入された挿入済みの制御回路の総面積との総和を算出する挿入コスト算出手段として機能させ、
前記判定手段は、
前記挿入コスト算出手段によって算出された算出結果と、前記設計対象回路に対して増加が許容される回路面積とに基づいて、前記制御回路の挿入の可否を判定することを特徴とする付記５に記載の設計支援プログラム。
【０１２４】
（付記７）前記コンピュータを、
前記制御回路が挿入された結果、前記設計対象回路に対して増加が許容される残余の回路面積を算出する許容値算出手段として機能させ、
前記判定手段は、
前記選択手段によって選択された制御回路の回路面積と、前記許容値算出手段によって算出された残余の回路面積とに基づいて、前記制御回路の挿入の可否を判定することを特徴とする付記５に記載の設計支援プログラム。
【０１２５】
（付記８）コンピュータを、
設計対象回路内のフリップフロップごとに、当該フリップフロップとは異なる他のフリップフロップを基点として前段のセルを順次辿ることにより、前記フリップフロップに辿り着いた到達回数を計数する計数手段、
前記計数手段によって計数された計数結果に基づいて、前記設計対象回路のスキャンテストのスキャンシフト動作時に、前記フリップフロップの出力端子側の組み合わせ回路の動作を停止させる制御回路の挿入位置を決定する決定手段、
前記決定手段によって決定された決定結果を出力する出力手段、
として機能させることを特徴とする設計支援プログラム。
【０１２６】
（付記９）前記決定手段は、
前記計数手段によって計数された到達回数が最大のフリップフロップと、当該フリップフロップの出力端子側の組み合わせ回路との間を前記制御回路の挿入位置に決定することを特徴とする付記８に記載の設計支援プログラム。
【０１２７】
（付記１０）前記コンピュータを、
前記決定手段によって決定された挿入位置に前記制御回路を挿入する挿入手段として機能させることを特徴とする付記８または９に記載の設計支援プログラム。
【０１２８】
（付記１１）前記コンピュータを、
前記挿入位置の後段の論理ゲートの種別に基づいて、複数の制御回路の中から挿入対象となる制御回路を選択する選択手段として機能させ、
前記挿入手段は、
前記選択手段によって選択された制御回路を前記挿入位置に挿入することを特徴とする付記１０に記載の設計支援プログラム。
【０１２９】
（付記１２）前記コンピュータを、
前記挿入位置に挿入される制御回路の回路面積と、前記設計対象回路に対して増加が許容される回路面積とに基づいて、前記制御回路の挿入の可否を判定する判定手段として機能させ、
前記挿入手段は、
前記判定手段によって挿入可能と判定された場合、前記挿入位置に前記制御回路を挿入することを特徴とする付記１１に記載の設計支援プログラム。
【０１３０】
（付記１３）前記コンピュータを、
前記選択手段によって選択された制御回路の面積と、前記挿入手段によって挿入済みの制御回路の面積との総和を算出する挿入コスト算出手段として機能させ、
前記判定手段は、
前記挿入コスト算出手段によって算出された算出結果と、前記設計対象回路に対して増加が許容される回路面積とに基づいて、前記制御回路の挿入の可否を判定することを特徴とする付記１２に記載の設計支援プログラム。
【０１３１】
（付記１４）前記コンピュータを、
前記制御回路が挿入された結果、前記設計対象回路に対して増加が許容される残余の回路面積を算出する許容値算出手段として機能させ、
前記判定手段は、
前記選択手段によって選択された制御回路の回路面積と、前記許容値算出手段によって算出された残余の回路面積とに基づいて、前記制御回路の挿入の可否を判定することを特徴とする付記１２に記載の設計支援プログラム。
【０１３２】
（付記１５）設計対象回路内のフリップフロップごとに、当該フリップフロップを基点として前段の論理ゲートを順次辿ることにより、前記フリップフロップから他のフリップフロップに辿り着くまでの間に含まれる論理ゲートを探索する探索手段と、
前記探索手段によって探索された論理ゲートの消費電力を、前記設計対象回路内の論理ゲートごとの消費電力を保持するライブラリから抽出する抽出手段と、
前記フリップフロップごとに、前記抽出手段によって抽出された論理ゲートごとの消費電力を足し合わせることにより、前記論理ゲートの消費電力の総和を算出する算出手段と、
前記算出手段によって算出された算出結果に基づいて、前記設計対象回路のスキャンテストのスキャンシフト動作時に、前記他のフリップフロップの出力端子側の組み合わせ回路の動作を停止させる制御回路の挿入位置を決定する決定手段と、
前記決定手段によって決定された決定結果を出力する出力手段と、
を備えることを特徴とする設計支援装置。
【０１３３】
（付記１６）設計対象回路内のフリップフロップごとに、当該フリップフロップとは異なる他のフリップフロップを基点として前段のセルを順次辿ることにより、前記フリップフロップに辿り着いた到達回数を計数する計数手段と、
前記計数手段によって計数された計数結果に基づいて、前記設計対象回路のスキャンテストのスキャンシフト動作時に、前記フリップフロップの出力端子側の組み合わせ回路の動作を停止させる制御回路の挿入位置を決定する決定手段と、
前記決定手段によって決定された決定結果を出力する出力手段と、
を備えることを特徴とする設計支援装置。
【０１３４】
（付記１７）制御手段および記憶手段を備えるコンピュータが、
前記制御手段により、設計対象回路内のフリップフロップごとに、当該フリップフロップを基点として前段の論理ゲートを順次辿ることにより、前記フリップフロップから他のフリップフロップに辿り着くまでの間に含まれる論理ゲートを探索して、前記記憶手段に記憶する探索工程と、
前記制御手段により、前記探索工程によって探索された論理ゲートの消費電力を、前記設計対象回路内の論理ゲートごとの消費電力を保持するライブラリから抽出して、前記記憶手段に記憶する抽出工程と、
前記制御手段により、前記フリップフロップごとに、前記抽出工程によって抽出された論理ゲートごとの消費電力を足し合わせることにより、前記論理ゲートの消費電力の総和を算出して、前記記憶手段に記憶する算出工程と、
前記制御手段により、前記算出工程によって算出された算出結果に基づいて、前記設計対象回路のスキャンテストのスキャンシフト動作時に、前記他のフリップフロップの出力端子側の組み合わせ回路の動作を停止させる制御回路の挿入位置を決定して、前記記憶手段に記憶する決定工程と、
前記制御手段により、前記決定工程によって決定された決定結果を出力する出力工程と、
を実行することを特徴とする設計支援方法。
【０１３５】
（付記１８）制御手段および記憶手段を備えるコンピュータが、
前記制御手段により、設計対象回路内のフリップフロップごとに、当該フリップフロップとは異なる他のフリップフロップを基点として前段のセルを順次辿ることにより、前記フリップフロップに辿り着いた到達回数を計数して、前記記憶手段に記憶する計数工程と、
前記制御手段により、前記計数工程によって計数された計数結果に基づいて、前記設計対象回路のスキャンテストのスキャンシフト動作時に、前記フリップフロップの出力端子側の組み合わせ回路の動作を停止させる制御回路の挿入位置を決定して、前記記憶手段に記憶する決定工程と、
前記制御手段により、前記決定工程によって決定された決定結果を出力する出力工程と、
を実行することを特徴とする設計支援方法。
【０１３６】
（付記１９）特定のフリップフロップから前段の論理ゲートを順次辿ることで到達する全フリップフロップの出力端子と組み合わせ回路との間に、前記設計対象回路のスキャンテストのスキャンシフト動作時に前記組み合わせ回路の動作を停止させる制御回路を備えることを特徴とする半導体集積回路。
【０１３７】
（付記２０）第１および第２のフリップフロップから前段の論理ゲートを順次辿ることで到達するフリップフロップのうち、重複するフリップフロップの出力端子と組み合わせ回路との間に、前記設計対象回路のスキャンテストのスキャンシフト動作時に前記組み合わせ回路の動作を停止させる制御回路を備えることを特徴とする半導体集積回路。
【符号の説明】
【０１３８】
２００，１４００  設計支援装置
３０１  取得部
３０２  探索部
３０３  抽出部
３０４  算出部
３０５  決定部
３０６  挿入部
３０７  選択部
３０８  判定部
３０９  挿入コスト算出部
３１０  出力部
１４０１  計数部
【図１】
2010181960.tif 000004
【図２】
2010181960.tif 000005
【図３】
2010181960.tif 000006
【図４】
2010181960.tif 000007
【図５】
2010181960.tif 000008
【図６】
2010181960.tif 000009
【図７】
2010181960.tif 000010
【図８】
2010181960.tif 000011
【図９】
2010181960.tif 000012
【図１０】
2010181960.tif 000013
【図１１】
2010181960.tif 000014
【図１２】
2010181960.tif 000015
【図１３】
2010181960.tif 000016
【図１４】
2010181960.tif 000017
【図１５】
2010181960.tif 000018
【図１６】
2010181960.tif 000019
【図１７】
2010181960.tif 000020
【図１８】
2010181960.tif 000021
【図１９】
2010181960.tif 000022
【図２０】
2010181960.tif 000023