(57)【要約】【課題】ファンクション動作速度に影響を与えず、また回路面積増を抑えつつ、スキャンテストおよびロジックＢＩＳＴ動作中の消費電力を低減することができる半導体集積回路およびその設計方法を提供する。【解決手段】スキャンテストのシフト動作時において消費電力に与える影響の大きいフリップフロップとして選択されたスキャンフリップフロップを、スキャンテストのシフト中に、組合せ回路１０１への出力値が固定されるように修正し、また、選択されるスキャンフリップフロップの数を、回路修正時に許容される面積の増分によって制限することで面積の増加を許容範囲に抑え、また、回路の動作速度を決定するフリップフロップ間経路の始点となるフリップフロップを選択しないことにより、回路のファンクション動作に影響を与えないようにする。【選択図】図１
2005115578.tif 000002
【特許請求の範囲】
【請求項１】
複数のスキャンフリップフロップが直列に接続されたスキャンチェーンと、組合せ回路部分とを有し、スキャンテストのシフト動作時は、前記スキャンチェーン内をシリアルにデータ転送し、ファンクション動作時もしくはスキャンテストのキャプチャー動作時は、前記組合せ回路部分を介して、前記スキャンフリップフロップ間でデータ転送を行うように構成された半導体集積回路であって、前記ファンクション動作時もしくはスキャンテストのキャプチャー動作時にデータ転送が行われる前記スキャンフリップフロップの出力端子と前記組合せ回路部分との間に、前記スキャンテストのシフト動作中は、前記スキャンフリップフロップから前記組合せ回路へのデータ信号を固定値に保持するための回路を備えたことを特徴とする半導体集積回路。
【請求項２】
複数のスキャンフリップフロップが直列に接続されたスキャンチェーンと、組合せ回路部分とを有し、スキャンテストのシフト動作時は、前記スキャンチェーン内をシリアルにデータ転送し、ファンクション動作時もしくはスキャンテストのキャプチャー動作時は、前記組合せ回路部分を介して、前記スキャンフリップフロップ間でデータ転送を行うように構成された半導体集積回路であって、前記スキャンチェーンに含まれる１つ以上の前記スキャンフリップフロップは、前記ファンクション動作時もしくはスキャンテストのキャプチャー動作時に、前記組合せ回路へデータ転送する第１の出力端子と、前記スキャンテストのシフト動作時に、前記スキャンチェーン内の次段のスキャンフリップフロップへデータ転送する第２の出力端子とを備え、前記スキャンテストのシフト動作中には、前記第１の出力端子の値を固定するように構成したことを特徴とする半導体集積回路。
【請求項３】
複数のスキャンフリップフロップが直列に接続されたスキャンチェーンと、組合せ回路部分とを有し、スキャンテストのシフト動作時は、前記スキャンチェーン内をシリアルにデータ転送し、ファンクション動作時もしくはスキャンテストのキャプチャー動作時は、前記組合せ回路部分を介して、前記スキャンフリップフロップ間でデータ転送を行うように構成された半導体集積回路であって、前記スキャンチェーンに含まれる１つ以上の前記スキャンフリップフロップは、前記ファンクション動作時もしくはスキャンテストのキャプチャー動作時に、前記組合せ回路へデータ転送する第１の出力端子と、前記組合せ回路へ前記第１の出力端子の反転データを転送する第２の出力端子と、前記スキャンテストのシフト動作時に、前記スキャンチェーン内の次段のスキャンフリップフロップへデータ転送する第３の出力端子とを備え、前記スキャンテストのシフト動作中には、前記第１の出力端子および前記第２の出力端子の各値を固定するように構成したことを特徴とする半導体集積回路。
【請求項４】
請求項１〜３に記載の半導体集積回路であって、前記スキャンチェーンに対するテストパタンを供給するパタン発生回路を内蔵したことを特徴とする半導体集積回路。
【請求項５】
請求項１〜４に記載の半導体集積回路であって、前記スキャンチェーンから出力されるデータを圧縮する圧縮回路を内蔵したことを特徴とする半導体集積回路。
【請求項６】
請求項１〜５に記載の半導体集積回路の設計方法であって、前記半導体集積回路を構成している複数の組合せ論理素子および複数のフリップフロップの接続情報を含む回路データを生成する工程１と、前記スキャンテストのシフト動作時に消費電力への影響が大きいフリップフロップを、前記回路データ内から１つ以上選択する工程２と、前記工程２で選択されたフリップフロップに対して、前記スキャンテストのシフト動作中に前記組合せ回路への出力値が固定されるように前記回路データを修正する工程３とを有し、前記工程２は、各スキャンフリップフロップ毎に消費電力への影響を見積もる工程２−１と、全スキャンフリップフロップの中から、消費電力への影響が最も高いと判断されたスキャンフリップフロップを選択する工程２−２と、既に選択されたスキャンフリップフロップの出力を固定することにより、所望の消費電力値まで削減できたかを判定する工程２−３と、未だ選択されていないスキャンフリップフロップの中から、消費電力に対する影響が最も高いと判断されたスキャンフリップフロップを選択する工程２−４とからなり、前記工程２−３の判定結果がＹｅｓの場合、前記工程２を終了し、前記判定結果がＮｏの場合、前記工程２−４を行うことを特徴とする半導体集積回路の設計方法。
【請求項７】
請求項６に記載の半導体集積回路の設計方法であって、前記工程２において選択されるフリップフロップの数が、前記工程３における回路修正時に許容される面積の増分によって制限されていることを特徴とする半導体集積回路の設計方法。
【請求項８】
請求項６または７に記載の半導体集積回路の設計方法であって、前記工程２において、前記半導体集積回路の動作速度を決定するフリップフロップ間経路の始点となるフリップフロップは選択しないことを特徴とする半導体集積回路の設計方法。
【請求項９】
複数のスキャンフリップフロップが直列に接続されたスキャンチェーンと、組合せ回路部分とを有し、スキャンテストのシフト動作時は、前記スキャンチェーン内をシリアルにデータ転送し、ファンクション動作時もしくはスキャンテストのキャプチャー動作時は、前記組合せ回路部分を介して、前記スキャンフリップフロップ間でデータ転送を行うように構成された半導体集積回路であって、前記ファンクション動作時もしくはスキャンテストのキャプチャー動作時に前記スキャンフリップフロップからデータ転送される前記組合せ回路部分の１つ以上の特定の内部ノードに対して、その信号値を前記スキャンテストのシフト動作時に固定するための回路を備えたことを特徴とする半導体集積回路。
【請求項１０】
請求項９に記載の半導体集積回路であって、前記スキャンチェーンに対するテストパタンを供給するパタン発生回路を内蔵したことを特徴とする半導体集積回路。
【請求項１１】
請求項９または１０に記載の半導体集積回路であって、前記スキャンチェーンから出力されるデータを圧縮する圧縮回路を内蔵したことを特徴とする半導体集積回路。
【請求項１２】
請求項９〜１１に記載の半導体集積回路の設計方法であって、前記半導体集積回路を構成している複数の組合せ論理素子および複数のフリップフロップの接続情報を含む回路データを生成する工程１と、前記スキャンテストのシフト動作時に単位時間当りの信号変化回数の大きい内部ノードを、前記回路データ内から１つ以上選択する工程２と、前記工程２で選択された前記内部ノードに対して、前記スキャンテストのシフト動作中に信号値が固定されるように前記回路データを修正する工程３とを有し、前記工程２は、回路の各内部ノードについてトグル率を計算する工程２−１と、全内部ノードの中から、前記トグル率が最も高いと判断されたノードを選択する工程２−２と、既に選択されたノードを固定することにより、所望の消費電力値まで削減できたかを判定する工程２−３と、未だ選択されていないノードの中から、前記トグル率が最も高いノードを選択する工程２−４とからなり、前記工程２−３の判定結果がＹｅｓの場合、前記工程２を終了し、前記判定結果がＮｏの場合、前記工程２−４を行うことを特徴とする半導体集積回路の設計方法。
【請求項１３】
請求項１２に記載の半導体集積回路の設計方法であって、前記工程２において選択される内部ノードの数が、前記工程３における回路修正時に許容される面積の増分によって制限されていることを特徴とする半導体集積回路の設計方法。
【請求項１４】
請求項１２または１３に記載の半導体集積回路の設計方法であって、前記工程２において、前記半導体集積回路の動作速度を決定するフリップフロップ間経路の途中の内部ノードは選択しないことを特徴とする半導体集積回路の設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スキャンテスト回路を搭載した半導体集積回路およびその設計方法に関するものである。
【背景技術】
【０００２】
従来、半導体集積回路内に含まれる論理回路部分のテストによく使われている方式として、スキャンテスト方式がある。この方式によりスキャンテストを行うためには、半導体集積回路内にスキャンテスト回路を形成する必要があり、このスキャンテスト回路は、半導体集積回路内のスキャンフリップフロップを用いて構成される。
【０００３】
ここで用いられるスキャンフリップフロップは、機能ブロック内の組合せ回路を伝搬してきたデータ信号をフリップフロップに取り込むための入力端子Ｄと、スキャンテスト用の信号をフリップフロップに取り込むための入力端子ＤＴと、クロック信号を取り込むためのクロック端子ＣＫと、入力端子Ｄからの信号または入力端子ＤＴからの信号のうちどちらの信号をフリップフロップのデータとして取り込むかを切り替えるための信号が入力される入力端子ＮＴと、データ信号を出力するための出力端子Ｑ、／Ｑ（／は、Ｑの反転を意味する）を持っている。
【０００４】
スキャンテスト回路には２つのモードが存在し、このモードはＮＴ端子の値によって切り替えられる。ＮＴ端子の信号値が「１（ハイレベル）」の時、シフトモードと呼ばれ、ＤＴ信号がフリップフロップのデータとして取り込まれる。一方、ＮＴ端子の信号値が「０（ローレベル）」の時、キャプチャーモードと呼ばれ、Ｄ信号がフリップフロップのデータとして取り込まれる。
【０００５】
スキャンテスト回路は、複数のスキャンフリップフロップのＤＴ端子とＱ（もしくは／Ｑ）端子を数珠つなぎに順次接続することで、スキャンテスト時のシフトモード（ＮＴ＝１）のときに、シフトレジスタとして機能するように構成された回路である。またスキャンテスト信号の入力端子として機能する外部入力端子が、シフトレジスタの先頭に配置されるスキャンフリップフロップのＤＴに接続され、スキャンテスト信号の出力端子として機能する外部出力端子が、シフトレジスタの最終段に配置されるスキャンフリップフロップのＱもしくは／Ｑ端子に接続される。スキャンフリップフロップのＣＫ端子およびＮＴ端子は外部入力端子から直接制御される。
【０００６】
このように構成されたスキャンテスト回路は、スキャンフリップフロップがチェーン状に接続されていることからスキャンチェーンとも呼ばれる。スキャンチェーンは１つの半導体集積回路内に複数本あってもよい。
【０００７】
一般にスキャンテストでは、そのテストを開始する場合には、ＬＳＩテスタから半導体集積回路のスキャンテスト信号入力端子に対して、スキャンテスト信号を供給する。また、スキャンフリップフロップのＣＫ端子に対するクロック信号とＮＴ端子に対するスキャンイネーブル信号も、ＬＳＩテスタから半導体集積回路に対して直接供給する。ＮＴ端子にスキャンイネーブル信号として信号値「１」を供給している間に、スキャンチェーンの段数分のクロックを印加することにより、テスト対象のスキャンチェーンを構成する全スキャンフリップフロップに対して、スキャンテスト信号を供給することができる。
【０００８】
その後、ＮＴ端子に対するスキャンイネーブル信号を「０」に切り替え、さらにその後、１クロックを入力することで、機能ブロックからの信号をスキャンフリップフロップのＤ端子に取り込むことができる。その後、再びスキャンイネーブル信号を「１」に切り替えて、スキャンチェーンの段数分のクロックを印加することにより、スキャンチェーン内にキャプチャーされた値をＬＳＩテスタに取り込むことができる。ＬＳＩテスタに取り込んだ後、予めＬＳＩテスタに格納していた期待値と比較して、テスト対象のスキャンチェーンを構成する全スキャンフリップフロップの良否判定を行う。
【０００９】
また、近年では、前記した一般的なスキャンテストの代わりに、組み込み自己テスト（ＢＩＳＴ）方式で、半導体集積回路の論理回路部分をテストするようになりつつある。論理回路部分を対象としたＢＩＳＴ（以下、ロジックＢＩＳＴ）のアーキテクチャーで最もよく用いられているものにＳＴＵＭＰＳがある。ＳＴＵＭＰＳはマルチスキャン設計をベースとしたＢＩＳＴアーキテクチャーである。これは、スキャンテスト方式と同様に、回路内に形成されたスキャンチェーンを利用してテストを行う。
【００１０】
ロジックＢＩＳＴとスキャンテストの間には、テスト信号発生手段と出力応答信号の比較手段に違いがある。スキャンテストにおけるテスト信号発生方法と出力応答信号の比較手段については前述しているとおりである。
【００１１】
このスキャンテストに対して、ロジックＢＩＳＴでは、ＬＳＩテスタからＢＩＳＴ起動信号、クロック信号、その他いくつかの制御信号を印加することで、半導体集積回路の内部に組み込まれたパタン生成回路からテスト信号が発生され、テスト対象回路へ印加される。また、テスト対象回路からの出力応答信号は出力圧縮回路へ入力され、シグニチャーとよばれる圧縮データに変換される。最終的にシグニチャーをＬＳＩテスタに読み出して、予めＬＳＩテスタに格納しておいたシグニチャーの期待値と比較し、テスト対象回路の良否判定を行う。
【００１２】
近年の半導体集積回路は非常に大規模になってきている。一般的なスキャンテストにしてもロジックＢＩＳＴにしても、このような半導体集積回路のテストを短時間で済ませるためには、できるだけ多くの回路ブロックを同時に動作させる必要がある。ＬＳＩテスタの稼動時のコストは非常に高いため、テスタ使用時間が長いと、最終的な半導体集積回路の製造コストに大きな影響を与えてしまうからである。
【００１３】
また一方で、近年の半導体集積回路の動作速度は非常に高速になってきていており、遅延故障が顕在化し始めている。このような遅延故障のテストを行うために、スキャンテスト、ロジックＢＩＳＴ時にも、半導体集積回路を高速に動作させる必要が生じてきている。また、スキャンテスト、ロジックＢＩＳＴにおけるテスト時間の大部分は、スキャンチェーンのシフト動作の時間によって占められる。従って、テスト時間の短縮を図るためには、キャプチャー動作だけでなく、シフト動作も高速に行う必要がある。
【００１４】
しかしながら、スキャンテストもしくはロジックＢＩＳＴで、大規模な半導体集積回路を高速に動作させると、テスト時の消費電力が極めて大きくなり、適切な検査が行えなくなってしまうという問題が生じてきている。
【００１５】
一般に、半導体集積回路の電源設計は、ファンクション動作時の消費電力を見込んで行われており、テスト時の消費電力は考慮されていない。ファンクション動作時には、半導体集積回路内で動作する部分は限定的であるため、消費電力はそれほど大きくないが、スキャンテスト、もしくはロジックＢＩＳＴ時には、対象となる回路部分の全てが同時に動作するため、ファンクション時にくらべて非常に多くの電力を消費する。
【００１６】
このように、電源設計がテスト時の消費電力を考慮せずに行われている場合には、スキャンテストもしくはロジックＢＩＳＴ時には半導体集積回路は正常に動作せず、適切な検査が行われないことになる。なお、回路内の消費電力は動作周波数に比例するため、動作速度が速くなるにつれて問題が大きくなる。
【００１７】
以上の問題に対して、従来技術（例えば、特許文献１を参照）では、スキャンフリップフロップから、機能ブロック（組合せ回路）へ伝搬する出力端子（Ｑ端子）を固定した状態でシフト動作を行うことにより、動作周波数を下げることなく、スキャンテスト時の消費電力を削減し、上記の問題を解決しようと図っている。
【００１８】
図９は従来の半導体集積回路の構成を示す回路図である。この半導体集積回路の特徴は、フリップフロップ回路１１（１１Ａ〜１１Ｆ）に、組合せ回路１０にデータ信号Ｄやスキャンテスト信号ＤＴを伝達させるためのＱ端子とは別に、スキャンテスト信号ＤＴを次のフリップフロップ回路１１に伝達するための端子としてＳＯを設け、このフリップフロップ回路１１（１１Ａ〜１１Ｆ）を、スキャンテストのシフトモードの間、Ｑ端子の信号値を固定して、組合せ回路１０内の状態がシフトモード中は変化しないように、構成している点である。
【００１９】
従来のスキャンテスト回路構成では、シフトモードの間、各スキャンフリップフロップに印加されるスキャンテスト信号に応じて、スキャンフリップフロップのＱ端子の信号値が変化する。このとき、組合せ回路内の多くのトランジスタが同時にスイッチングし、瞬間的に非常に大きな電力を消費する。それに対して、図９の回路では、シフト中にＱ端子の信号値を固定するため、組合せ回路１０内の各ノードの値は固定され、シフト中の消費電力を抑制することができる。
【００２０】
以上のような半導体集積回路において、Ｑ端子の出力値を固定するためのフリップフロップ回路１１の具体的な構造を図１０および図１１に示す。
図１０に示すフリップフロップ回路は、データ信号Ｄおよびスキャンテスト信号ＤＴを受け、スキャンイネーブル信号ＮＴの値によって、ＤまたＤＴのいずれを出力として選択するマルチプレクサ２１と、クロック信号ＣＬＫの反転信号に応じてマルチプレクサ２１の出力信号をラッチする第１のラッチ回路２２と、クロックＣＬＫに応じて第１のラッチ２２の出力をラッチする第２のラッチ２３と、クロック信号ＣＬＫ及びＨＯＬＤ信号の反転信号を受けて、両者のＡＮＤ演算を行った結果を出力するＡＮＤ回路２４と、ＡＮＤ回路２４の出力に応じて第１のラッチ回路２２の出力をラッチする第３ラッチ回路２５とを備えている。また、第２のラッチ回路２３の出力はＳＯ端子として機能し、第３のラッチ回路２５の出力はＱ出力端子として機能する。
【００２１】
この構成では、ＨＯＬＤ信号が「１」の時は、クロック信号ＣＬＫが「１」または「０」のいずれにも拘わらず、ＡＮＤ回路２４の出力はかならず「０」になる。したがって、このとき第３のラッチ回路２５の出力Ｑは、第１のラッチ回路２２の出力値にかかわらず、前時刻に保持していた値（「０」または「１」）に固定される。なお、ＨＯＬＤ信号の代わりにスキャンイネーブル信号ＮＴを、Ｑを固定するための信号として利用することも可能である。つまり、ＨＯＬＤ信号用端子と、ＮＴ端子とを共通化することができる。
【００２２】
また、図１１は、従来のスキャンフリップフロップと同様の構成において、Ｑ端子をＳＯ端子として機能させるように構成されたフリップフロップ３１とホールド信号の反転信号とフリップフロップ３１の出力とを受け、両者のＡＮＤ演算を行った結果を出力するＡＮＤ回路３２とを備えている。
【００２３】
この構成では、ＨＯＬＤ信号が「１」のときには、フリップフロップ３１の出力が「１」または「０」のいずれにも拘わらず、ＡＮＤ回路の３２の出力は必ず「０」になる。なおこの構造においても、ＨＯＬＤ信号に変えてＮＴ信号を、Ｑ端子を固定するための信号として利用することもできる。つまり、ＨＯＬＤ信号用とＮＴ端子を共通化することができる。
【特許文献１】特開２００１−５９８５６号公報
【発明の開示】
【発明が解決しようとする課題】
【００２４】
しかしながら上記のような従来の技術では、消費電力の抑制は行うことができるが、回路面積やファンクション動作速度に対するペナルティが発生する可能性が高い。図１０のフリップフロップは、通常のスキャンフリップフロップに対して、ラッチ１つとＡＮＤゲート１つ分の面積オーバーヘッドがある。
【００２５】
また、図１１のフリップフロップに関しては、通常のスキャンフリップフロップに対する面積オーバーヘッドがＡＮＤゲート１つ分であり、図１０のフリップフロップと比較してラッチ１つ分小さいが、図１０のフリップフロップと異なり、ＡＮＤゲート３２がフリップフロップ３１の後側に配置されているため、Ｑの信号伝搬速度がＡＮＤゲート一段分遅延する。
【００２６】
つまり、図１０や図１１に示される構成では、フリップフロップの使用数、使用箇所について言及していないため、消費電力を削減できる一方で、回路面積の増大および、動作速度低下の恐れがあるという問題点を有していた。
【００２７】
本発明は、上記従来の問題点を解決するもので、ファンクション動作速度に影響を与えず、また回路面積増を最低限に抑えつつ、スキャンテストおよびロジックＢＩＳＴ動作中のシフト動作中の消費電力を低減することができる半導体集積回路およびその設計方法を提供する。
【課題を解決するための手段】
【００２８】
上記の課題を解決するために、本発明の請求項１に記載の半導体集積回路は、複数のスキャンフリップフロップが直列に接続されたスキャンチェーンと、組合せ回路部分とを有し、スキャンテストのシフト動作時は、前記スキャンチェーン内をシリアルにデータ転送し、ファンクション動作時もしくはスキャンテストのキャプチャー動作時は、前記組合せ回路部分を介して、前記スキャンフリップフロップ間でデータ転送を行うように構成された半導体集積回路であって、前記ファンクション動作時もしくはスキャンテストのキャプチャー動作時にデータ転送が行われる前記スキャンフリップフロップの出力端子と前記組合せ回路部分との間に、前記スキャンテストのシフト動作中は、前記スキャンフリップフロップから前記組合せ回路へのデータ信号を固定値に保持するための回路を備えた構成としたことを特徴とする。
【００２９】
また、本発明の請求項２に記載の半導体集積回路は、複数のスキャンフリップフロップが直列に接続されたスキャンチェーンと、組合せ回路部分とを有し、スキャンテストのシフト動作時は、前記スキャンチェーン内をシリアルにデータ転送し、ファンクション動作時もしくはスキャンテストのキャプチャー動作時は、前記組合せ回路部分を介して、前記スキャンフリップフロップ間でデータ転送を行うように構成された半導体集積回路であって、前記スキャンチェーンに含まれる１つ以上の前記スキャンフリップフロップは、前記ファンクション動作時もしくはスキャンテストのキャプチャー動作時に、前記組合せ回路へデータ転送する第１の出力端子と、前記スキャンテストのシフト動作時に、前記スキャンチェーン内の次段のスキャンフリップフロップへデータ転送する第２の出力端子とを備え、前記スキャンテストのシフト動作中には、前記第１の出力端子の値を固定するように構成したことを特徴とする。
【００３０】
また、本発明の請求項３に記載の半導体集積回路は、複数のスキャンフリップフロップが直列に接続されたスキャンチェーンと、組合せ回路部分とを有し、スキャンテストのシフト動作時は、前記スキャンチェーン内をシリアルにデータ転送し、ファンクション動作時もしくはスキャンテストのキャプチャー動作時は、前記組合せ回路部分を介して、前記スキャンフリップフロップ間でデータ転送を行うように構成された半導体集積回路であって、前記スキャンチェーンに含まれる１つ以上の前記スキャンフリップフロップは、前記ファンクション動作時もしくはスキャンテストのキャプチャー動作時に、前記組合せ回路へデータ転送する第１の出力端子と、前記組合せ回路へ前記第１の出力端子の反転データを転送する第２の出力端子と、前記スキャンテストのシフト動作時に、前記スキャンチェーン内の次段のスキャンフリップフロップへデータ転送する第３の出力端子とを備え、前記スキャンテストのシフト動作中には、前記第１の出力端子および前記第２の出力端子の各値を固定するように構成したことを特徴とする。
【００３１】
また、本発明の請求項４に記載の半導体集積回路は、請求項１〜３に記載の半導体集積回路であって、前記スキャンチェーンに対するテストパタンを供給するパタン発生回路を内蔵した構成としたことを特徴とする。
【００３２】
また、本発明の請求項５に記載の半導体集積回路は、請求項１〜４に記載の半導体集積回路であって、前記スキャンチェーンから出力されるデータを圧縮する圧縮回路を内蔵した構成としたことを特徴とする。
【００３３】
また、本発明の請求項６に記載の半導体集積回路の設計方法は、請求項１〜５に記載の半導体集積回路の設計方法であって、前記半導体集積回路を構成している複数の組合せ論理素子および複数のフリップフロップの接続情報を含む回路データを生成する工程１と、前記スキャンテストのシフト動作時に消費電力への影響が大きいフリップフロップを、前記回路データ内から１つ以上選択する工程２と、前記工程２で選択されたフリップフロップに対して、前記スキャンテストのシフト動作中に前記組合せ回路への出力値が固定されるように前記回路データを修正する工程３とを有し、前記工程２は、各スキャンフリップフロップ毎に消費電力への影響を見積もる工程２−１と、全スキャンフリップフロップの中から、消費電力への影響が最も高いと判断されたスキャンフリップフロップを選択する工程２−２と、既に選択されたスキャンフリップフロップの出力を固定することにより、所望の消費電力値まで削減できたかを判定する工程２−３と、未だ選択されていないスキャンフリップフロップの中から、消費電力に対する影響が最も高いと判断されたスキャンフリップフロップを選択する工程２−４とからなり、前記工程２−３の判定結果がＹｅｓの場合、前記工程２を終了し、前記判定結果がＮｏの場合、前記工程２−４を行う方法としたことを特徴とする。
【００３４】
以上により、スキャンテストでのシフト動作時に消費電力に大きく影響する素子として選択されたスキャンフリップフロップを、スキャンテストのシフト中は組合せ回路への出力値が固定されるように、修正することができる。
【００３５】
また、本発明の請求項７に記載の半導体集積回路の設計方法は、請求項６に記載の半導体集積回路の設計方法であって、前記工程２において選択されるフリップフロップの数を、前記工程３における回路修正時に許容される面積の増分によって制限する方法としたことを特徴とする。
【００３６】
以上により、選択されるスキャンフリップフロップの数を、回路修正時に許容される面積の増分に応じて制限することにより、面積の増加を許容範囲に抑えることができる。
また、本発明の請求項８に記載の半導体集積回路の設計方法は、請求項６または７に記載の半導体集積回路の設計方法であって、前記工程２において、前記半導体集積回路の動作速度を決定するフリップフロップ間経路の始点となるフリップフロップは選択しない方法としたことを特徴とする。
【００３７】
以上により、回路の動作速度を決定するフリップフロップ間経路の始点となるフリップフロップを選択しないことにより、回路のファンクション動作に影響を与えないようにすることができる。
【００３８】
また、本発明の請求項９に記載の半導体集積回路は、複数のスキャンフリップフロップが直列に接続されたスキャンチェーンと、組合せ回路部分とを有し、スキャンテストのシフト動作時は、前記スキャンチェーン内をシリアルにデータ転送し、ファンクション動作時もしくはスキャンテストのキャプチャー動作時は、前記組合せ回路部分を介して、前記スキャンフリップフロップ間でデータ転送を行うように構成された半導体集積回路であって、前記ファンクション動作時もしくはスキャンテストのキャプチャー動作時に前記スキャンフリップフロップからデータ転送される前記組合せ回路部分の１つ以上の特定の内部ノードに対して、その信号値を前記スキャンテストのシフト動作時に固定するための回路を備えた構成としたことを特徴とする。
【００３９】
また、本発明の請求項１０に記載の半導体集積回路は、請求項９に記載の半導体集積回路であって、前記スキャンチェーンに対するテストパタンを供給するパタン発生回路を内蔵した構成としたことを特徴とする。
【００４０】
また、本発明の請求項１１に記載の半導体集積回路は、請求項９または１０に記載の半導体集積回路であって、前記スキャンチェーンから出力されるデータを圧縮する圧縮回路を内蔵した構成としたことを特徴とする。
【００４１】
また、本発明の請求項１２に記載の半導体集積回路の設計方法は、請求項９〜１１に記載の半導体集積回路の設計方法であって、前記半導体集積回路を構成している複数の組合せ論理素子および複数のフリップフロップの接続情報を含む回路データを生成する工程１と、前記スキャンテストのシフト動作時に単位時間当りの信号変化回数の大きい内部ノードを、前記回路データ内から１つ以上選択する工程２と、前記工程２で選択された前記内部ノードに対して、前記スキャンテストのシフト動作中に信号値が固定されるように前記回路データを修正する工程３とを有し、前記工程２は、回路の各内部ノードについてトグル率を計算する工程２−１と、全内部ノードの中から、前記トグル率が最も高いと判断されたノードを選択する工程２−２と、既に選択されたノードを固定することにより、所望の消費電力値まで削減できたかを判定する工程２−３と、未だ選択されていないノードの中から、前記トグル率が最も高いノードを選択する工程２−４とからなり、前記工程２−３の判定結果がＹｅｓの場合、前記工程２を終了し、前記判定結果がＮｏの場合、前記工程２−４を行う方法としたことを特徴とする。
【００４２】
以上により、スキャンテストでのシフト動作時に消費電力に大きく影響する素子として選択されたスキャンフリップフロップを、スキャンテストのシフト中は組合せ回路への出力値が固定されるように、修正することができる。
【００４３】
また、本発明の請求項１３に記載の半導体集積回路の設計方法は、請求項１２に記載の半導体集積回路の設計方法であって、前記工程２において選択される内部ノードの数を、前記工程３における回路修正時に許容される面積の増分によって制限する方法としたことを特徴とする。
【００４４】
以上により、選択されるスキャンフリップフロップの数を、回路修正時に許容される面積の増分に応じて制限することにより、面積の増加を許容範囲に抑えることができる。
また、本発明の請求項１４に記載の半導体集積回路の設計方法は、請求項１２または１３に記載の半導体集積回路の設計方法であって、前記工程２において、前記半導体集積回路の動作速度を決定するフリップフロップ間経路の途中の内部ノードは選択しない方法としたことを特徴とする。
【００４５】
以上により、回路の動作速度を決定するフリップフロップ間経路の始点となる内部ノードを選択しないことにより、回路のファンクション動作に影響を与えないようにすることができる。
【発明の効果】
【００４６】
以上のように本発明によれば、スキャンテストでのシフト動作時に消費電力に大きく影響する素子として選択されたスキャンフリップフロップを、スキャンテストのシフト中は組合せ回路への出力値が固定されるように、修正することができる。
【００４７】
また、選択されるスキャンフリップフロップの数を、回路修正時に許容される面積の増分に応じて制限することにより、面積の増加を許容範囲に抑えることができる。
また、回路の動作速度を決定するフリップフロップ間経路の始点となるフリップフロップまたは内部ノードを選択しないことにより、回路のファンクション動作に影響を与えないようにすることができる。
【００４８】
以上のため、ファンクション動作速度に影響を与えることなく、また回路面積の増大を最低限に抑えつつ、スキャンテストおよびロジックＢＩＳＴ動作中の消費電力を抑えることができる。
【発明を実施するための最良の形態】
【００４９】
以下、本発明の実施の形態を示す半導体集積回路およびその設計方法について、図面を参照しながら具体的に説明する。
（実施の形態１）
本発明の実施の形態１の半導体集積回路およびその設計方法を説明する。
【００５０】
図１は本実施の形態１の半導体集積回路の構成を示す回路図である。図１において、１０２、１０３、１０４、１０５、１０６、１０７はスキャンフリップフロップである。スキャンフリップフロップ１０４、１０３、１０２、１０７、１０６、１０５には、それぞれ、スキャンテストのシフト動作中に入力信号を受けるための入力端子ＤＴと、ファンクション動作中、もしくはスキャンテストのキャプチャー動作中に入力信号を受けるための入力端子Ｄと、スキャンイネーブル端子を受けるための入力端子ＮＴと、クロック信号入力用の入力端子ＣＫと、データ出力端子Ｑがある。
【００５１】
これらスキャンフリップフロップ１０４、１０３、１０２、１０７、１０６、１０５は、順次直列に接続されていてスキャンチェーンを構成している。このスキャンチェーンは、具体的には以下のように接続されて構成されている。スキャンフリップフロップ１０４、１０３、１０２、１０７、１０６のＱ端子は、それぞれ、スキャンフリップフロップ１０３、１０２、１０７、１０６、１０５のＤＴ端子と接続されている。また、スキャンフリップフロップ１０５のＱ端子はスキャンチェーンのスキャンアウト端子に接続されている。また、スキャンフリップフロップ１０４のＤＴ端子はスキャンチェーンのスキャンイン端子に接続されている。以上のようにスキャンフリップフロップ１０２、１０３、１０４、１０５、１０６、１０７が接続されることで、スキャンチェーンが構成される。
【００５２】
１０１は組合せ回路であり、ａ、ｂ、ｃは組合せ回路１０１の入力で、ｄ、ｅ、ｆは組合せ回路１０１の出力である。１０８、１０９、１１０は２入力ＡＮＤゲートである。ＡＮＤゲート１０８、１０９、１１０は入力端子ＡおよびＢ、出力端子Ｙをもつ。１１１はインバータである。インバータ１１１は入力端子Ａと出力端子Ｙをもつ。１１２、１１３はＯＲゲートである。ＯＲゲート１１２、１１３もまた、入力端子ＡおよびＢ、出力端子Ｙをもつ。この組合せ回路１０１は、ＡＮＤゲート１０８、１０９、１１０とインバータ１１１と、ＯＲゲート１１２、１１３で構成されている。
【００５３】
これらの接続関係について、以下に説明する。
ＡＮＤゲート１０８の入力端子Ａ、Ｂは、それぞれ、組合せ回路１０１の入力ａ、ｂに接続されている。ＡＮＤゲート１０８の出力端子ＹはＡＮＤゲート１０９の入力端子Ａに接続されている。ＡＮＤゲート１０９の入力端子Ａ、Ｂは、それぞれ、ＡＮＤゲート１０８の出力端子Ｙ、ＯＲゲート１１２の出力端子Ｙに接続されている。ＡＮＤゲート１０９の出力端子Ｙは、ＡＮＤゲート１１０の入力端子Ａと組合せ回路１０１の出力ｄに接続されている。ＡＮＤゲート１１０の入力端子Ａ、Ｂは、それぞれ、ＡＮＤゲート１０９の出力端子Ｙ、ＯＲゲート１１３の出力端子Ｙと接続されている。ＡＮＤゲート１１０の出力端子Ｙは、組合せ回路１０１の出力ｅと接続されている。インバータ１１１の入力端子Ａは組合せ回路１０１の入力ｂと接続されている。インバータ１１１の出力端子ＹはＯＲゲート１１２の入力端子Ａと接続されている。ＯＲゲート１１２の入力端子Ａ、Ｂは、それぞれ、インバータ１１１の出力端子Ｙ、組合せ回路１０１の入力ｃと接続されている。ＯＲゲート１１２の出力端子Ｙは、ＡＮＤゲート１０９の入力ＢとＯＲゲート１１３の入力端子Ａに接続されている。ＯＲゲート１１３の入力端子Ａ、Ｂは、それぞれ、ＯＲゲート１１２の出力端子Ｙ、組合せ回路１０１の入力ｃと接続されている。ＯＲゲート１１３の出力端子Ｙは、ＡＮＤゲート１１０の入力端子Ｂと組合せ回路１０１の出力ｆと接続されている。
【００５４】
１１４はＡＮＤゲートであり、入力端子Ａ、Ｂと出力端子Ｙをもつ。スキャンフリップフロップ１０２、１０３、１０４のＱ端子は、それぞれ、組合せ回路１０１の入力ａ、ＡＮＤゲート１１４の入力端子Ａ、組合せ回路１０１の入力ｃと接続されている。スキャンフリップフロップ１０５、１０６、１０７のＤ端子は、それぞれ、組合せ回路の出力ｄ、ｅ、ｆと接続されている。ＡＮＤゲート１１４の入力端子Ａは、スキャンフリップフロップ１０３の出力端子Ｑに接続されている。ＡＮＤゲート１１４の出力端子Ｙは、組合せ回路１０１の入力ｂに接続されている。ＡＮＤゲート１１４の入力端子Ｂは、スキャンイネーブル信号ＮＴ（シフト動作中＝「１」、キャプチャー動作中＝「０」）の反転信号／ＮＴ（シフト動作中＝「０」、キャプチャー動作中＝「１」）が接続される。
【００５５】
以上の構成からもわかるように、ＡＮＤゲート１１４は、スキャンフリップフロップ１０４の出力端子Ｑと組合せ回路１０１の間にあり、スキャンテストのシフト動作中、スキャンフリップフロップ１０４から組合せ回路１０１へ伝達されるデータを「０」に固定することができる。
【００５６】
半導体集積回路の単位時間あたりの消費電力は、その回路内部において、「０」から「１」、もしくは「１」から「０」に変化するノード数に比例する。回路の内部ノードをＡＮＤ、ＯＲ、インバータなどの基本ゲートの出力端子と定義した場合、本実施の形態の回路構成をとることにより、スキャンテストのシフト動作中は、組合せ回路内部の全てのノードを固定することができ、消費電力を抑えることができる。
【００５７】
また、このような回路構成をとることにより、従来技術と同等の効果を、より少ない面積オーバーヘッドで実現することができる。
なお、本実施の形態１の半導体集積回路において、スキャンチェーンに対するテストパタン供給が、組込み自己テスト手法（いわゆるＢＩＳＴ手法）で用いられているように、半導体集積回路に内蔵されているパタン発生回路から行われていてもよい。
【００５８】
また、本実施の形態１の半導体集積回路において、スキャンチェーンから出力されるデータが、組込み自己テスト手法（いわゆるＢＩＳＴ手法）で用いられているように、半導体集積回路に内蔵されている出力圧縮回路に取り込まれ、圧縮されるような構成になっていてもよい。
【００５９】
次に、図１に示す本実施の形態１の半導体集積回路の設計手法を、図４を用いて説明する。
図４において、３０１は回路データ（ネットリスト）を生成する工程である。工程３０１で生成する回路データは、半導体集積回路を構成している複数の組合せ論理素子、および複数のフリップフロップの接続情報を含んでいる。３０２は、工程３０１で生成した回路データ内に含まれるフリップフロップを１つ以上選択する工程である。工程３０２で選択されるスキャンフリップフロップは、スキャンテストのシフト動作時において消費電力に与える影響が大きいものである。３０３は回路データ（ネットリスト）を修正する工程である。工程３０３では、工程３０２で選択されたフリップフロップに対して、スキャンテストのシフト動作中に組合せ回路への出力値が固定されるように回路データを修正する。
【００６０】
ここで説明する半導体集積回路の設計方法は、工程３０１、工程３０２、工程３０３で構成される。また、工程３０２は以下の工程に分割される。すなわち、回路中の各スキャンフリップフロップに消費電力に対する影響を評価する工程３０２ａと、最も消費電力に対する影響が大きいスキャンフリップフロップを選択する工程３０２ｂと、選択されたスキャンフリップフロップの出力を固定することにより、所望の消費電力まで削減できるかを判定する工程３０２ｃと、未だ選択されていないスキャンフリップフロップの中から、最も消費電力に対する影響が大きいスキャンフリップフロップを選択する工程３０２ｄである。
【００６１】
これらの工程は以下の順番で実行される。まず、工程３０２ａ、３０２ｂ、３０２ｃが順番に実行される。工程３０２ｃの判定結果がＹｅｓの場合、処理は終了し、判定結果がＮｏの場合、工程３０２ｄを実行し、その実行後、工程３０２ｃへ戻る。
【００６２】
ここで、図４に示す半導体集積回路の設計方法によって、図１に示す半導体集積回路を設計する流れを具体的に示す。図４において、工程３０１は、市販の論理合成ツールなどのＥＤＡツールで容易に実行できるため、ここでの詳細な説明は省略する。図５は、工程３０１で生成された回路データ（ネットリスト）をスケマティック表現したものである。４０１は組合せ回路である。
【００６３】
ａ、ｂ、ｃは組合せ回路４０１の入力であり、ｄ、ｅ、ｆは組合せ回路４０１の出力である。４０８、４０９、４１０は２入力ＡＮＤゲートである。ＡＮＤゲート４０８、４０９、４１０は入力端子ＡおよびＢ、出力端子Ｙをもつ。４１１はインバータである。インバータ４１１は入力端子Ａと出力端子Ｙをもつ。４１２、４１３はＯＲゲートである。ＯＲゲート４１２、４１３も、また入力端子ＡおよびＢ、出力端子Ｙをもつ。組合せ回路４０１は、ＡＮＤゲート４０８、４０９、４１０とインバータ４１１と、ＯＲゲート４１２、４１３で構成されている。
【００６４】
以下、これらの接続関係について説明する。
ＡＮＤゲート４０８の入力端子Ａ、Ｂは、それぞれ、組合せ回路４０１の入力ａ、ｂに接続されている。ＡＮＤゲート４０８の出力端子ＹはＡＮＤゲート４０９の入力端子Ａに接続されている。ＡＮＤゲート４０９の入力端子Ａ、Ｂは、それぞれ、ＡＮＤゲート４０８の出力端子Ｙ、ＯＲゲート４１２の出力端子Ｙに接続されている。ＡＮＤゲート４０９の出力端子Ｙは、ＡＮＤゲート４１０の入力端子Ａと組合せ回路４０１の出力ｄに接続されている。ＡＮＤゲート４１０の入力端子Ａ、Ｂは、それぞれ、ＡＮＤゲート４０９の出力端子Ｙ、ＯＲゲート４１３の出力端子Ｙと接続されている。ＡＮＤゲート４１０の出力端子Ｙは、組合せ回路４０１の出力ｅと接続されている。インバータ４１１の入力端子Ａは組合せ回路４０１の入力ｂと接続されている。インバータ４１１の出力端子ＹはＯＲゲート４１２の入力端子Ａと接続されている。ＯＲゲート４１２の入力端子Ａ、Ｂは、それぞれ、インバータ４１１の出力端子Ｙ、組合せ回路４０１の入力ｃと接続されている。ＯＲゲート４１２の出力端子Ｙは、ＡＮＤゲート４０９の入力端子ＢとＯＲゲート４１３の入力端子Ａに接続されている。ＯＲゲート４１３の入力端子Ａ、Ｂは、それぞれ、ＯＲゲート４１２の出力端子Ｙ、組合せ回路４０１の入力ｃと接続されている。ＯＲゲート４１３の出力端子ＹはＡＮＤゲート４１０の入力端子Ｂと組合せ回路４０１の出力ｆと接続されている。
【００６５】
４０２、４０３、４０４、４０５、４０６、４０７はスキャンフリップフロップである。これらスキャンフリップフロップ４０４、４０３、４０２、４０７、４０６、４０５は直列に接続されていて、スキャンチェーンを構成している。
【００６６】
このスキャンチェーンは、具体的には以下のように接続されて構成されている。
スキャンフリップフロップ４０４、４０３、４０２、４０７、４０６のＱ端子は、それぞれ、スキャンフリップフロップ４０３、４０２、４０７、４０６、４０５のＤＴ端子と接続されている。また、スキャンフリップフロップ４０５のＱ端子はスキャンチェーンのスキャンアウト端子に接続されている。また、スキャンフリップフロップ４０４のＤＴ端子はスキャンチェーンのスキャンイン端子に接続されている。
【００６７】
以上のようにスキャンフリップフロップ４０２、４０３、４０４、４０５、４０６、４０７が接続されることで、スキャンチェーンが構成される。
また、スキャンフリップフロップ４０２、４０３、４０４のＱ端子は、それぞれ、組合せ回路４０１の入力ａ、ｂ、ｃと接続されている。図５では図示されていないが、フリップフロップ４０５、４０６、４０７のＱ端子は、同一半導体集積回路内にある他の組合せ回路部分と接続されている。スキャンフリップフロップ４０５、４０６、４０７のＤ端子は、それぞれ、組合せ回路の出力ｄ、ｅ、ｆと接続されている。図５では図示されていないが、フリップフロップ４０２、４０３、４０４のＤ端子は、半導体集積回路内にある他の組合せ回路部分と接続されている。
【００６８】
図５に示す回路に対して、工程３０２を実行し、スキャンテストのシフト動作時において、消費電力に与える影響が大きいフリップフロップを１つ以上選択する。
まず、工程３０２ａで回路中の各スキャンフリップフロップに対して、消費電力に対する影響を見積もる。一般的に、半導体集積回路の単位時間あたりの消費電力は、単位時間当りに、「０」から「１」もしくは「１」から「０」に変化する回路内部のノード数に比例する。ここで回路内部のノードをＡＮＤ、ＯＲ、インバータなどの基本ゲートの出力端子と定義する。
【００６９】
図５において、回路中の各スキャンフリップフロップの出力値を固定した場合に消費電力に与える影響を評価する。スキャンフリップフロップ４０２の出力端子Ｑの値を「０」に固定した場合、ＡＮＤゲート４０８、ＡＮＤゲート４０９、ＡＮＤゲート４１０の出力端子、すなわち３つのノードの値を固定できる。また、スキャンフリップフロップ４０３の出力端子Ｑの値を「０」に固定した場合、ＡＮＤゲート４０８、４０９、４１０、インバータ４１１、ＯＲゲート４１２、４１３の出力端子、すなわち６つのノードの値を固定することができる。スキャンフリップフロップ４０４の出力端子Ｑの値を「１」に固定した場合、ＯＲゲート４１２、４１３の出力端子、すなわち２つのノードの値を固定することができる。スキャンフリップフロップ４０５、４０６、４０７の出力端子を固定しても、固定できるノードはない。
【００７０】
工程３０２ｂで、消費電力に対する影響が最も高いスキャンフリップフロップとして、スキャンフリップフロップ４０３を選択する。工程３０２ｃで目標の消費電力削減が達成できたと判断した場合には、工程３０２を終了する。
【００７１】
次に工程３０３で回路データの修正を行う。具体的には、選択されたフリップフロップ４０３のＱ端子と組合せ回路４０１との間に、２入力ＡＮＤゲートを挿入することにより図１に示す回路に修正される。また、挿入されたＡＮＤゲートの第１の入力はスキャンフリップフロップ４０３のＱ端子と接続され、第２の入力はスキャンイネーブル信号ＮＴの反転信号／ＮＴが接続される。
【００７２】
以上のような方法により図１に示す半導体集積回路は設計される。なお、図４の工程３０２において選択されるスキャンフリップフロップの数は複数であってもよい。このとき選択されるフリップフロップ数は、目標となる消費電力を達成できるまで選択される。またこのとき、選択されるスキャンフリップフロップの数は、許容できる面積の増分に制限されてあってもよい。
【００７３】
また、選択されたスキャンフリップフロップが、回路全体の動作速度を決定するフリップフロップ間経路の始点となるスキャンフリップフロップであった場合は、選択を取りやめることがあっても良い。
【００７４】
以上の方法により設計された半導体集積回路は、面積増大および動作速度低下を抑制しつつ、スキャンテストおよびロジックＢＩＳＴでのスキャンシフト時の消費電力を低減することができる。
（実施の形態２）
本発明の実施の形態２の半導体集積回路およびその設計方法を説明する。
【００７５】
図２は本実施の形態２の半導体集積回路の構成を示す回路図である。図２において、２０２、２０３、２０４、２０５、２０６、２０７はスキャンフリップフロップである。スキャンフリップフロップ２０４、２０２、２０７、２０６、２０５は、それぞれ、スキャンテストのシフト動作中に入力信号を受けるための入力端子ＤＴと、ファンクション動作中もしくはスキャンテストのキャプチャー動作中に入力信号を受けるための入力端子Ｄと、スキャンイネーブル信号を受けるための入力端子ＮＴと、クロック信号入力用の入力端子ＣＫと、データ出力端子Ｑとを備えるスキャンフリップフロップである。
【００７６】
スキャンフリップフロップ２０３は、スキャンテストのシフト動作中に入力信号を受けるための入力端子ＤＴと、ファンクション動作中もしくはスキャンテストのキャプチャー動作中に入力信号を受けるための入力端子Ｄと、スキャンイネーブル信号を受けるための入力端子ＮＴと、クロック信号入力用の入力端子ＣＫと、スキャンテストのシフト動作中に信号値が固定される機能を備えるデータ出力端子Ｑと、スキャンデータ信号を出力するための出力端子ＳＯとを備えるスキャンフリップフロップである。
【００７７】
スキャンフリップフロップ２０３の具体的な回路構成例を、図１０または図１１に示す。これらの回路についての詳細な説明は従来技術の説明で行ったため、ここでの説明は省略する。ただし、図２に示す本実施の形態２に用いる場合には、ＨＯＬＤ端子をＮＴ端子と共通化して使用する必要がある。ＮＴ端子は、スキャンテストのシフトモードとキャプチャーモードを切り替えるためのスキャンイネーブル信号を受ける。この信号は、シフト動作中＝１、キャプチャー動作中＝０となる。
【００７８】
これらスキャンフリップフロップ２０４、２０３、２０２、２０７、２０６、２０５は直列に接続されていて、スキャンチェーンを構成している。このスキャンチェーンは具体的には、以下のように接続されて構成されている。
【００７９】
スキャンフリップフロップ２０４、２０２、２０７、２０６のＱ端子は、それぞれ、スキャンフリップフロップ２０３、２０７、２０６、２０５のＤＴ端子と接続されている。スキャンフリップフロップ２０３のＳＯ端子はスキャンフリップフロップ２０２のＤＴ端子と接続されている。また、スキャンフリップフロップ２０５のＱ端子はスキャンチェーンのスキャンアウト端子に接続されている。また、スキャンフリップフロップ２０４のＤＴ端子はスキャンチェーンのスキャンイン端子に接続されている。
【００８０】
以上のように、スキャンフリップフロップ２０２、２０３、２０４、２０５、２０６、２０７が接続されることで、スキャンチェーンが構成される。
２０１は組合せ回路である。ａ、ｂ、ｃは組合せ回路２０１の入力であり、ｄ、ｅ、ｆは組合せ回路２０１の出力である。２０８、２０９、２１０は２入力ＡＮＤゲートである。ＡＮＤゲート２０８、２０９、２１０は入力端子ＡおよびＢ、出力端子Ｙをもつ。２１１はインバータである。インバータ２１１は入力端子Ａと出力端子Ｙをもつ。２１２、２１３はＯＲゲートである。ＯＲゲート２１２、２１３もまた、入力端子ＡおよびＢ、出力端子Ｙをもつ。組合せ回路２０１は、ＡＮＤゲート２０８、２０９、２１０とインバータ２１１と、ＯＲゲート２１２、２１３で構成されている。
【００８１】
これらの接続関係について以下に説明する。
ＡＮＤゲート２０８の入力端子Ａ、Ｂは、それぞれ、組合せ回路２０１の入力ａ、ｂに接続されている。ＡＮＤゲート２０８の出力端子ＹはＡＮＤゲート２０９の入力端子Ａに接続されている。ＡＮＤゲート２０９の入力端子Ａ、Ｂは、それぞれ、ＡＮＤゲート２０８の出力端子Ｙ、ＯＲゲート２１２の出力端子Ｙに接続されている。ＡＮＤゲート２０９の出力端子Ｙは、ＡＮＤゲート２１０の入力端子Ａと組合せ回路２０１の出力ｄに接続されている。ＡＮＤゲート２１０の入力端子Ａ、Ｂは、それぞれ、ＡＮＤゲート２０９の出力端子Ｙ、ＯＲゲート２１３の出力端子Ｙと接続されている。ＡＮＤゲート２１０の出力端子Ｙは、組合せ回路２０１の出力ｅと接続されている。インバータ２１１の入力端子Ａは組合せ回路２０１の入力ｂと接続されている。インバータ２１１の出力端子ＹはＯＲゲート２１２の入力端子Ａと接続されている。ＯＲゲート２１２の入力端子Ａ、Ｂは、それぞれ、インバータ２１１の出力端子Ｙ、組合せ回路２０１の入力ｃと接続されている。ＯＲゲート２１２の出力端子Ｙは、ＡＮＤゲート２０９の入力端子ＢとＯＲゲート２１３の入力端子Ａに接続されている。ＯＲゲート２１３の入力端子Ａ、Ｂは、それぞれ、ＯＲゲート２１２の出力端子Ｙ、組合せ回路２０１の入力ｃと接続されている。ＯＲゲート２１３の出力端子ＹはＡＮＤゲート２１０の入力端子Ｂと組合せ回路２０１の出力ｆと接続されている。スキャンフリップフロップ２０２、２０３、２０４のＱ端子は、それぞれ、組合せ回路２０１の入力ａ、ｂ、ｃと接続される。スキャンフリップフロップ２０５、２０６、２０７のＤ端子は、それぞれ、組合せ回路２０１の出力ｄ、ｅ、ｆと接続されている。
【００８２】
スキャンフリップフロップ２０３には、前述したように、図１０または図１１に示されている回路（ＨＯＬＤ信号はＮＴ信号と共通化されている）が使用されているので、そのＱ出力端子の信号値は、入力端子ＮＴに受けるスキャンイネーブル信号の値が１の時、すなわちスキャンテストのシフトモード時には０に固定される。
【００８３】
一般的に半導体集積回路の単位時間あたりの消費電力は、「０」から「１」もしくは「１」から「０」に変化する回路内部のノード数に比例する。回路の内部ノードをＡＮＤ、ＯＲ、インバータなどの基本ゲートの出力端子と定義した場合、この回路構成をとることにより、スキャンテストのシフト動作中は、組合せ回路内部の全てのノードを固定することができ、消費電力を抑えることができる。
【００８４】
また、このような回路構成をとることにより、従来技術と同等の効果を、より少ない面積オーバーヘッドで実現することができる。
なお、本実施の形態２において、スキャンテストのシフト時に、組合せ回路へ伝達されるデータが固定されるように構成されたスキャンフリップフロップ２０３は、図３に示すように、組合せ回路へ伝達される第１の出力端子Ｑ端子と、組合せ回路へＱ端子の反転のデータを伝達する第２の出力端子／Ｑ端子と、スキャンチェーン内の次段のスキャンフリップフロップへデータを伝達する第３の出力端子ＳＯとを備えたスキャンフリップフロップであっても良い。
【００８５】
スキャンフリップフロップ２０３として、図３のＱ端子と／Ｑ端子を備えたスキャンフリップフロップを使用することにより、組合せ回路分の論理の圧縮を容易にすることができる。例えば、／Ｑ端子がないスキャンフリップフロップを使用した場合において、Ｑ端子の直後にインバータが接続されるような回路構成は、／Ｑ端子のあるスキャンスリップフロップを使用することにより、インバータを削減することが可能となる。
【００８６】
また、本実施の形態２のスキャンフリップフロップ２０４が、図３に示すスキャンフリップフロップに置き換えられている場合においても、スキャンチェーンに対するテストパタン供給が、組込み自己テスト手法（いわゆるＢＩＳＴ手法）で用いられているように、半導体集積回路に内蔵されているパタン発生回路から行われていてもよい。
【００８７】
また、本実施の形態２のスキャンフリップフロップ２０３が、図３に示すスキャンフリップフロップに置き換えられている場合においても、スキャンチェーンから出力されるデータが、組込み自己テスト手法（いわゆるＢＩＳＴ手法）で用いられているように、半導体集積回路に内蔵されている出力圧縮回路に取り込まれ、圧縮されるような構成になっていてもよい。
【００８８】
図２に示す本実施の形態２の半導体集積回路の設計方法を図４に示す。なお、図４の各工程については、実施の形態１で既に説明したので、ここでの説明は省略する。ここで、図４に示す半導体集積回路の設計手法によって、図２に示す半導体集積回路を設計する流れを具体的に示す。工程３０１は、市販の論理合成ツールなどのＥＤＡツールで容易に実行できるため、詳細な説明は省略する。
【００８９】
図５に示す回路に対して、工程３０２を実施し、スキャンテストのシフト動作時において消費電力に与える影響が大きいフリップフロップを１つ以上選択する。実施の形態１と同様の手順で、スキャンフリップフロップ４０３を選択する。
【００９０】
次に工程３０３で回路修正を行う。具体的には、スキャンフリップフロップ４０３を、図１０または図１１または図３に示すスキャンフリップフロップに置き換える。ただし、ここで使用されるスキャンフリップフロップは、ＨＯＬＤ端子への信号がＮＴ端子への信号に共通化されている。
【００９１】
以上のような設計方法により、図２に示すような半導体集積回路が設計される。なお、図４の工程３０２において選択されるスキャンフリップフロップの数は複数であってもよい。このとき選択されるフリップフロップ数は、目標となる消費電力を達成できるまで選択される。またこのとき、選択されるスキャンフリップフロップの数は、許容できる面積の増分に制限されてもよい。
【００９２】
また、選択されたスキャンフリップフロップが、回路全体の動作速度を決定するフリップフロップ間経路の始点となるスキャンフリップフロップであった場合は、選択を取りやめることがあっても良い。
【００９３】
以上の手法により設計された半導体集積回路は、面積増大、速度低下を抑制しつつ、スキャンテストおよびロジックＢＩＳＴ時のスキャンシフト時の消費電力を低減することができる。
（実施の形態３）
本発明の実施の形態３の半導体集積回路およびその設計方法を説明する。
【００９４】
図６は本実施の形態３の半導体集積回路の構成を示す回路図である。図６において、５０２、５０３、５０４、５０５、５０６、５０７はスキャンフリップフロップである。スキャンフリップフロップ５０４、５０３、５０２、５０７、５０６、５０５は、それぞれ、スキャンテストのシフト動作中に入力信号を受けるための入力端子ＤＴと、ファンクション動作中もしくはスキャンテストのキャプチャー動作中に入力信号を受けるための入力端子Ｄと、スキャンイネーブル信号を受けるための入力端子ＮＴと、クロック信号入力用の入力端子ＣＫと、データ出力端子Ｑとを備えている。
【００９５】
これらスキャンフリップフロップ５０４、５０３、５０２、５０７、５０６、５０５は直列に接続されていて、スキャンチェーンを構成している。このスキャンチェーンは具体的には以下のように接続されて構成されている。
【００９６】
スキャンフリップフロップ５０４、５０３、５０２、５０７、５０６のＱ端子は、それぞれ、スキャンフリップフロップ５０３、５０２、５０７、５０６、５０５のＤＴ端子と接続されている。また、スキャンフリップフロップ５０５のＱ端子はスキャンチェーンのスキャンアウト端子に接続されている。また、スキャンフリップフロップ５０４のＤＴ端子はスキャンチェーンのスキャンイン端子に接続されている。
【００９７】
以上のように、スキャンフリップフロップ５０２、５０３、５０４、５０５、５０６、５０７が接続されることで、スキャンチェーンが構成される。５０１は組合せ回路である。ａ、ｂ、ｃ、ｇは組合せ回路５０１の入力であり、ｄ、ｅ、ｆは組合せ回路５０１の出力である。５０８、５０９、５１０は２入力ＡＮＤゲートである。ＡＮＤゲート５０８、５０９、５１０は入力端子ＡおよびＢ、出力端子Ｙをもつ。５１１はＮＯＲゲートである。ＮＯＲゲート５１１は入力端子ＡおよびＢ、出力端子Ｙをもつ。５１２、５１３はＯＲゲートである。ＯＲゲート５１２、５１３もまた、入力端子ＡおよびＢ、出力端子Ｙをもつ。組合せ回路５０１は、ＡＮＤゲート５０８、５０９、５１０とＮＯＲゲート５１１と、ＯＲゲート５１２、５１３とで構成されている。
【００９８】
これらの接続関係について以下に説明する。
ＡＮＤゲート５０８の入力端子Ａ、Ｂは、それぞれ、組合せ回路５０１の入力ａ、ｂに接続されている。ＡＮＤゲート５０８の出力端子ＹはＡＮＤゲート５０９の入力端子Ａに接続されている。ＡＮＤゲート５０９の入力端子Ａ、Ｂは、それぞれ、ＡＮＤゲート５０８の出力端子Ｙ、ＯＲゲート５１２の出力端子Ｙに接続されている。ＡＮＤゲート５０９の出力端子Ｙは、ＡＮＤゲート５１０の入力端子Ａと組合せ回路５０１の出力ｄに接続されている。ＡＮＤゲート５１０の入力端子Ａ、Ｂは、それぞれ、ＡＮＤゲート５０９の出力端子Ｙ、ＯＲゲート５１３の出力端子Ｙと接続されている。ＡＮＤゲート５１０の出力端子Ｙは、組合せ回路５０１の出力ｅと接続されている。ＮＯＲゲート５１１の入力端子Ａ、Ｂは組合せ回路５０１の入力ｂ、ｇと接続されている。ＮＯＲゲート５１１の出力端子ＹはＯＲゲート５１２の入力端子Ａと接続されている。ＯＲゲート５１２の入力端子Ａ、Ｂは、それぞれ、ＮＯＲゲート５１１の出力端子Ｙ、組合せ回路５０１の入力ｃと接続されている。ＯＲゲート５１２の出力端子Ｙは、ＡＮＤゲート５０９の入力端子ＢとＯＲゲート５１３の入力端子Ａに接続されている。ＯＲゲート５１３の入力端子Ａ、Ｂは、それぞれ、ＯＲゲート５１２の出力端子Ｙ、組合せ回路５０１の入力ｃと接続されている。ＯＲゲート５１３の出力端子ＹはＡＮＤゲート５１０の入力端子Ｂと組合せ回路５０１の出力ｆと接続されている。スキャンフリップフロップ５０２、５０３、５０４のＱ端子は、それぞれ、組合せ回路５０１の入力ａ、ｂ、ｃと接続されている。スキャンフリップフロップ５０５、５０６、５０７のＤ端子は、それぞれ、組合せ回路の出力ｄ、ｅ、ｆと接続されている。組合せ回路５０１の入力ｇは、スキャンフリップフロップ５０２、５０３、５０４、５０５、５０６、５０７の端子ＮＴへのスキャンイネーブル信号（シフト動作中＝１、キャプチャー動作中＝０）が接続される。
【００９９】
以上の構成からもわかるように、スキャンテストのシフト動作中、すなわちスキャンイネーブル信号ＮＴ＝１の時は、ＮＯＲゲート５１１の出力端子の信号値は「０」に固定される。従って、組合せ回路５０１の内部ノードをＡＮＤ、ＯＲ、ＮＯＲなどの基本ゲートの出力端子と定義した場合、図６に示す半導体集積回路は、スキャンテストのシフト動作時に、内部の組合せ回路部分の、１つの特定の内部ノード信号を固定するための回路を備えている。
【０１００】
一般的に半導体集積回路の単位時間あたりの消費電力は、「０」から「１」もしくは「１」から「０」に変化する回路内部のノード数に比例するが、回路の内部ノードをＡＮＤ、ＯＲ、ＮＯＲなどの基本ゲートの出力端子と定義した場合、図６の回路構成をとることにより、スキャンテストのシフト動作中は、組合せ回路内部の特定のノード、すなわちＮＯＲゲート４１２の出力端子の信号値を固定することができ、消費電力を抑えることができる。
【０１０１】
図６に示す本実施の形態３では、シフト動作中に固定できる内部ノード数が、実施の形態１または２で固定できる内部ノードに比べて少ないため、低減できる消費電力は、実施の形態１または実施の形態２で低減できる消費電力に比べて小さい。
【０１０２】
しかしながら、スキャンフリップフリップ５０３を始点として、ＡＮＤゲート５０８、ＡＮＤゲート５０９を経由してスキャンフリップフリップ５０５を終点とする経路が回路の動作速度を決定している経路（いわゆるクリティカルパス）である場合においては、図１に示す実施の形態１、または実施の形態２では、回路の動作速度を低下させてしまうが、図６に示す本実施の形態３は、回路の動作速度を低下させることなく、消費電力を低減できる。
【０１０３】
また、本実施の形態３において、スキャンチェーンに対するテストパタン供給が、組込み自己テスト手法（いわゆるＢＩＳＴ手法）で用いられているように、半導体集積回路に内蔵されているパタン発生回路から行われていてもよい。
【０１０４】
また、本実施の形態３において、スキャンチェーンから出力されるデータが、組込み自己テスト手法（いわゆるＢＩＳＴ手法）で用いられているように、半導体集積回路に内蔵されている出力圧縮回路に取り込まれ、圧縮されるような構成になっていてもよい。
【０１０５】
図６に示す本実施の形態３の半導体集積回路の設計方法を図７に示す。図７において、６０１は、回路データを生成する工程である。工程６０１で生成する回路データは、半導体集積回路を構成している複数の組合せ論理素子および複数のフリップフロップの接続を含んでいる。６０２は、６０１で生成した回路データ内に含まれる内部ノードを１つ以上選択する工程である。選択する内部ノードは、スキャンテストのシフト動作中に単位時間当たりの信号変化回数の大きい内部ノードである。６０３は回路データを修正する工程である。工程６０３では、工程６０２で選択された内部ノードがスキャンテストのシフト中に組合せ回路への出力値が固定されるように、回路データを修正する。
【０１０６】
以上のように、ここで説明する半導体集積回路の設計方法は、工程６０１、工程６０２、工程６０３で構成される。
また、工程６０２は以下の工程に分割される。すなわち回路中の各ノードのトグル率を計算する工程６０２ａと、最もトグル率の高いノードを選択する工程６０２ｂと、選択されたノードを固定することにより、所望の消費電力まで削減できるかを判定する工程６０２ｃと、未だ選択されていないノードの中から、最もトグル率の高いノードを選択する工程６０２ｄである。
【０１０７】
これらの工程は以下の順番で実行される。まず６０２ａ、６０２ｂ、６０２ｃが順番に実行される。６０２ｃの判定結果がＹｅｓの場合、処理は終了し、判定結果がＮｏの場合、６０２ｄを実行する。６０２ｄの実行後、６０２ｃへ戻る。
【０１０８】
ここで、図７に示す半導体集積回路の設計方法によって、図６に示す半導体集積回路を設計する流れを具体的に示す。工程６０１は、市販の論理合成ツールなどのＥＤＡツールで容易に実行できるため、ここでの詳細な説明は省略する。図５は、工程６０１で生成された回路データ（ネットリスト）をスケマティック表現したものである。図５の構成に関する説明は前述しているため省略する。
【０１０９】
図５に示す回路に対して、工程６０２を実行し、スキャンテストのシフト動作時において、単位時間当たりの信号変化回数の大きい内部ノードを１つ選択する。まず、工程６０２ａで各ノードのトグル率を求める。ここでスキャンテスト信号｛０１１０１１｝がスキャンテストのシフト動作中に、スキャンイン端子からシリアルに入力され、６クロックで、スキャンチェーンを構成する６つスキャンフリップフロップ４０４、４０３、４０２、４０７、４０６、４０５にセットされるとする。このときの各スキャンフリップフロップの値、および組合せ回路内の各ノードの値の遷移を図８に示す。
【０１１０】
図８に示す表中の「変化回数」は、スキャンテスト信号｛０１１０１１｝を全スキャンフリップフロップに印加する間の、組合せ回路４０１内の各内部ノードの信号変化の回数である。従って、各内部ノードのトグル率は、ＡＮＤゲート４０８のＹ端子が０．５回／サイクル、ＡＮＤゲート４０９のＹ端子が０回／サイクル、ＡＮＤゲート４１０のＹ端子が０回／サイクル、インバータ４１１のＹ端子が０．６７回／サイクル、ＯＲゲート４１２のＹ端子が０．５回／サイクル、ＯＲゲート４１３のＹ端子が０．５回／サイクルである。
【０１１１】
工程６０２ｂで最もトグル率の高いノードとして、インバータ４１１の出力端子Ｙが選択される。工程６０２ｃで、インバータ４１１の出力端子Ｙを固定することで、目標の消費電力まで削減されると判定され、工程６０２を終了する。
【０１１２】
次に工程６０３で、工程６０２で選択された内部ノードが、スキャンテストのシフト動作中に値が固定されるように回路修正を行う。具体的には、インバータ４１１を、入力端子Ａ、Ｂと出力端子Ｙを持っている２入力ＮＯＲゲートに置き換える。このとき、２入力ＮＯＲゲートの１つの入力端子Ａは組合せ回路４０１の入力ｂと接続され、他方の入力Ｂはスキャンイネーブル信号ＮＴと接続され、インバータ４１１の出力端子ＹはＯＲゲート４１２の入力端子Ａに接続される。
【０１１３】
以上のような方法により図６に示すような半導体集積回路は設計される。
なお、図７の工程６０２において選択される内部ノードの数は複数であってもよい。このとき選択される内部ノード数は、目標となる消費電力を達成できるまで選択される。またこのとき、選択される内部ノードの数は、許容できる面積の増分に制限されてもよい。また、選択された内部ノードが、回路全体の動作速度を決定するフリップフロップ間経路上にある場合、選択を取りやめることがあっても良い。
【０１１４】
以上の手法により設計された半導体集積回路は、面積増大、速度低下を抑制しつつ、スキャンテストおよびロジックＢＩＳＴ時のスキャンシフト時の消費電力を低減することができる。
【産業上の利用可能性】
【０１１５】
本発明の半導体集積回路およびその設計方法は、ファンクション動作速度に影響を与えることなく、また回路面積の増大を最低限に抑えつつ、スキャンテストおよびロジックＢＩＳＴ動作中の消費電力を抑えることができるものであり、テスト回路を搭載した半導体集積回路等の設計技術に適用できる。
【図面の簡単な説明】
【０１１６】
【図１】本発明の実施の形態１の半導体集積回路を示す回路図
【図２】本発明の実施の形態２の半導体集積回路を示す回路図
【図３】同実施の形態２の半導体集積回路におけるスキャンフリップフロップの内部回路図
【図４】本発明の実施の形態１の半導体集積回路の設計方法を示すフロー図
【図５】同実施の形態１の半導体集積回路の設計方法で生成される回路データによる回路図
【図６】本発明の実施の形態３の半導体集積回路を示す回路図
【図７】同実施の形態３の半導体集積回路の設計方法を示すフロー図
【図８】同実施の形態３の半導体集積回路において図５に示す回路の対応説明図
【図９】従来の半導体集積回路を示す回路図
【図１０】同従来例の半導体集積回路におけるフリップフロップ回路の構成例（１）を示す回路図
【図１１】同従来例の半導体集積回路におけるフリップフロップ回路の構成例（２）を示す回路図
【符号の説明】
【０１１７】
１０１、２０１、４０１、５０１、１０    組合せ回路
１０２〜１０７、２０２〜２０７、４０２〜４０７、５０２〜５０７、１１Ａ〜１１Ｆ    スキャンフリップフロップ
１０８〜１１０、１１４、２０８〜２１０、４０８〜４１０、５０８〜５１０    ＡＮＤゲート
１１１、２１１、４１１    インバータ
１１２〜１１３、２１２〜２１３、４１２〜４１３、５１２〜５１３    ＯＲゲート
３０１    （実施の形態１の）工程１
３０２    （実施の形態１の）工程２
３０３    （実施の形態１の）工程３
５１１    ＮＯＲゲート
６０１    （実施の形態３の）工程１
６０２    （実施の形態３の）工程２
６０３    （実施の形態３の）工程３
２１    ＭＵＸ
２２、２３、２５    ラッチ
２４    ＡＮＤゲート
３１    スキャンフリップフロップ
３２    ＡＮＤゲート
【図１】
2005115578.tif 000003
【図２】
2005115578.tif 000004
【図３】
2005115578.tif 000005
【図４】
2005115578.tif 000006
【図５】
2005115578.tif 000007
【図６】
2005115578.tif 000008
【図７】
2005115578.tif 000009
【図８】
2005115578.tif 000010
【図９】
2005115578.tif 000011
【図１０】
2005115578.tif 000012
【図１１】
2005115578.tif 000013