(57)【要約】【課題】スキャンテスト実行時における瞬間電力を低減する。【解決手段】スキャンチェーン回路１は、通常動作時には、組み合わせ論理回路２に入出力されるデータを一時保持する一方、スキャンテスト実行時には、複数個のフリップフロップＦ／Ｆをシフトレジスタとして機能させテストパターン信号ＳＣＡＮＩｎをシリアル転送する。クロックゲーティング回路３は、クロックゲーティング信号ＣＧＳに従いクロック信号ＣＬＫのパルスの出力を制御する一方、スキャンイネーブル信号が立ち上がっている間クロックゲーティング信号ＣＧＳを無効化する。クロックゲーティング回路３ｂは、スキャンイネーブル信号ＳＣＡＮＥｎが立ち上がっている間クロックゲーティング信号ＣＧＳを無効化すると共にクロック信号ＣＬＫを反転させる。【選択図】図２
2009222644.tif 000002
【特許請求の範囲】
【請求項１】
組み合わせ論理回路と、
複数個のフリップフロップを直列に接続して構成され、通常動作時において前記組み合わせ論理回路に入出力されるデータを一時保持すると共にスキャンテスト実行時に前記複数個のフリップフロップをシフトレジスタとして機能させスキャンテスト用のテストパターンデータをシリアル転送するスキャンシフトを実行可能に構成されたスキャンチェーン回路と、
クロックゲーティング信号に従い前記スキャンチェーン回路に対し供給されるクロック信号のパルスの出力を制御する一方前記スキャンシフトを許可するスキャンイネーブル信号の論理に基づき前記クロックゲーティング信号を無効化するように構成されたクロックゲーティング回路と
を備え、
前記クロックゲーティング回路は、
前記スキャンイネーブル信号の論理に基づき前記スキャンシフト時に前記クロックゲーティング信号を無効化すると共に前記クロック信号を反転させて出力するように構成された第１クロックゲーティング回路を含む
ことを特徴とする半導体集積回路。
【請求項２】
前記第１クロックゲーティング回路は、
前記スキャンイネーブル信号の論理変化を検知して前記スキャンイネーブル信号がイネーブルされた直後の前記クロック信号の立ち下がりエッジから前記スキャンイネーブル信号がディセーブルされるまでの間立ち上がる第１出力信号を出力するエッジ検出回路と、
前記クロックゲーティング信号に従って前記クロック信号のパルスの出力を制御する一方、前記スキャンイネーブル信号がイネーブルされている間は、前記クロックゲーティング信号に代えて、前記第１出力信号を取り込むゲーティング回路と、
前記第１出力信号に従って前記クロック信号を反転させる反転回路と
を備えたことを特徴とする請求項１記載の半導体集積回路。
【請求項３】
前記反転回路は、前記第１出力信号と前記クロック信号との排他的論理和信号を出力するＥＸ−ＯＲゲートを備え、  前記ゲーティング回路は、
前記第１出力信号
又は前記クロックゲーティング信号を選択的に取り込んで出力するマルチプレクサと、
前記マルチプレクサの出力信号を前記クロック信号が第１の状態のときは通過させ、第２の状態のときは保持するラッチ回路と、
前記ラッチ回路のラッチデータと前記クロック信号の論理積信号を出力するＡＮＤゲートと
を備えたことを特徴とする請求項２記載の半導体集積回路。
【請求項４】
半導体集積回路の設計を自動化する設計自動化システムにおいて、
前記半導体集積回路は、
組み合わせ論理回路と、
複数個のフリップフロップを直列に接続して構成され、通常動作時において前記組み合わせ論理回路に入出力されるデータを一時保持すると共にスキャンテスト実行時に前記複数個のフリップフロップをシフトレジスタとして機能させスキャンテスト用のテストパターンデータをシリアル転送するスキャンシフトを実行可能に構成されたスキャンチェーン回路と、
クロックゲーティング信号に従い前記スキャンチェーン回路に対し供給されるクロック信号のパルスの出力を制御する一方前記スキャンシフトを許可するスキャンイネーブル信号の論理に基づいて前記クロックゲーティング信号を無効化するように構成されたクロックゲーティング回路と
を少なくとも備え、
前記半導体集積回路中に含まれる複数の前記クロックゲーティング回路の少なくとも１つを選択するステップと、
選択された前記クロックゲーティング回路を、前記クロック信号を反転する機能を有する反転機能付きクロックゲーティング回路に置換するステップと、
１つのクロックドメイン中の前記フリップフロップのうち、前記反転機能付きクロックゲーティング回路により制御される前記フリップフロップの数が所定数に達した場合、その置換後のネットリストを出力するステップと
をコンピュータに実行可能に構成された設計自動化システム。 
【請求項５】
組み合わせ論理回路と、
複数個のフリップフロップを直列に接続して構成され、通常動作時において前記組み合わせ論理回路に入出力されるデータを一時保持すると共にスキャンテスト実行時に前記複数個のフリップフロップをシフトレジスタとして機能させスキャンテスト用のテストパターンデータをシリアル転送するスキャンテストを実行可能に構成されたスキャンチェーン回路と、
クロックゲーティング信号に従い前記スキャンチェーン回路に対し供給されるクロック信号のパルスの出力を制御する一方前記スキャンシフトを許可するスキャンイネーブル信号の論理に基づいて前記クロックゲーティング信号を無効化するように構成されたクロックゲーティング回路と
を備え、
前記フリップフロップの一部は、
前記クロック信号が立ち上がったときにデータを取り込むマスターラッチと、
前記クロック信号が立ち下がったときにデータを取り込むスレーブラッチとを備え、
前記スキャンイネーブル信号がディセーブルされている間は、前記マスターラッチからデータを取り込んだ後前記スレーブラッチに転送し、前記クロック信号の立ち上がりエッジで動作するフリップフロップとして動作する一方、
前記スキャンイネーブル信号がイネーブルされている間は、前記スレーブラッチから前記テストパターンデータを取り込んだ後前記マスターラッチに転送し、前記クロック信号が立ち下がりエッジで動作するスキャンんフリップフロップとして動作するように構成された
ことを特徴とする半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、半導体集積回路、及び半導体集積回路の設計を自動化する設計自動化システムに関する。
【背景技術】
【０００２】
半導体集積回路（以下、ＬＳＩと称する）が正常に製造できているか否かを試験するために、スキャンテスト手法が一般的に利用されている。スキャンテストは、ＬＳＩ内のフリップフロップ（以下、適宜Ｆ／Ｆと称する)を、スキャンＦ／Ｆと呼ばれるスキャンテスト用の入出力端子をもつＦ／Ｆに置き換えることで実行される。このようなスキャンＦ／Ｆを複数直列に接続したスキャンチェーン構造をＬＳＩ内部に形成し、ＬＳＩの外部端子から直接テストパタンをスキャンＦ／Ｆに入力する。また、外部端子へ直接スキャンＦ／Ｆのデータを出力させる。
【０００３】
このようなスキャンテストを実行可能に設計されたＬＳＩは、スキャンＦ／Ｆを含む順序回路であっても組み合わせ回路として扱えるため、ＡＴＰＧ(Automatic Test Pattern Generation)ツールによって、自動的にテストパタンを生成することが可能である。
【０００４】
スキャンテストにおけるスキャンシフト動作では、すべてのＦ／Ｆは外部端子から入力するクロックによって直接制御するのが一般的である。データの突き抜けや取りこぼしなくスキャンシフト動作を行うためには、シリアル接続されたＦ／Ｆのクロックは同時に立ち上がる必要がある。もし、内部で反転されたクロックがスキャンＦ／Ｆのクロック端子に接続されていたり、反転エッジのスキャンＦ／Ｆが存在したりしても、それらのスキャンＦ／Ｆをスキャンチェーンの先頭に配置すれば、正しくシフト動作が行うことができる。
【０００５】
このスキャン設計によって、ＬＳＩのテスト容易性は向上するが、スキャンテスト中は、すべてのスキャンＦ／Ｆが同時に動作することや、回路の内部状態が常に変化するような高い活性化状態になるため、消費電力が問題になる場合がある（例えば、非特許文献１参照）。このため、低消費電力化されたＬＳＩでは、クロックゲーティング設計を行って、動作しない（出力値が変化しない）Ｆ／Ｆのクロック供給を止めることにより消費電力を抑制している。
【０００６】
問題となる消費電力は、瞬間的に消費する瞬間電力（ピーク電力）と、ある一定期間で平均的に消費する平均電力の二つに大別できる。すべてのスキャンＦ／Ｆが一斉に動作するスキャンシフトにおいては、なるべくトグルが発生しないようなテストパターンを作成することにより、平均電力を抑制することが可能である。しかし、全スキャンＦ／Ｆが同時に動作するため、瞬間電力の抑制には対策として十分ではない。スキャンチェーンをクロックドメイン毎に分割し、クロックをずらしてスキャンシフトを実行することにより、データの突き抜けや取りこぼしの無い正常なスキャンシフトを実行可能としつつ瞬間電力を低減することは可能であるが、ＬＳＩ全体に亘る主要なクロックドメインが存在する場合には、その中の大部分のＦ／Ｆが同時に動作するため、消費電力削減の効果が希薄であるという問題がある。主要なクロックドメインをテスト時のみ複数のクロックドメインに分け、複数の外部クロックを供給することも可能であるが、クロック設計の負担が大きくなるとう問題がある。
【非特許文献１】参考文献：P. Girad, “Survey of Low-Power Testing of VLSI Circuits,” IEEE Design & Test of Computers, Vol. 19, No. 3, pp. 82-92, 2002）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、スキャンテスト実行時における瞬間電力を低減することを可能とした半導体集積回路及び設計自動化システムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一態様に係る半導体集積回路は、組み合わせ論理回路と、複数個のフリップフロップを直列に接続して構成され、通常動作時において前記組み合わせ論理回路に入出力されるデータを一時保持すると共にスキャンテスト実行時に前記複数個のフリップフロップをシフトレジスタとして機能させスキャンテスト用のテストパターンデータをシリアル転送するスキャンシフトを実行可能に構成されたスキャンチェーン回路と、クロックゲーティング信号に従い前記スキャンチェーン回路に対し供給されるクロック信号のパルスの出力を制御する一方前記スキャンシフトを許可するスキャンイネーブル信号の論理に基づき前記クロックゲーティング信号を無効化するように構成されたクロックゲーティング回路とを備え、前記クロックゲーティング回路は、前記スキャンイネーブル信号の論理に基づき前記スキャンシフト時に前記クロックゲーティング信号を無効化すると共に前記クロック信号を反転させて出力するように構成された第１クロックゲーティング回路を含むことを特徴とする。
【０００９】
また、本発明の一態様に係る設計自動化システムは、半導体集積回路の設計を自動化する設計自動化システムにおいて、前記半導体集積回路は、組み合わせ論理回路と、複数個のフリップフロップを直列に接続して構成され、通常動作時において前記組み合わせ論理回路に入出力されるデータを一時保持すると共にスキャンテスト実行時に前記複数個のフリップフロップをシフトレジスタとして機能させスキャンテスト用のテストパターンデータをシリアル転送するスキャンシフトを実行可能に構成されたスキャンチェーン回路と、クロックゲーティング信号に従い前記スキャンチェーン回路に対し供給されるクロック信号のパルスの出力を制御する一方前記スキャンシフトを許可するスキャンイネーブル信号の論理に基づいて前記クロックゲーティング信号を無効化するように構成されたクロックゲーティング回路とを少なくとも備え、前記半導体集積回路中に含まれる複数の前記クロックゲーティング回路の少なくとも１つを選択するステップと、選択された前記クロックゲーティング回路を、前記クロック信号を反転する機能を有する反転機能付きクロックゲーティング回路に置換するステップと、１つのクロックドメイン中の前記フリップフロップのうち、前記反転機能付きクロックゲーティング回路により制御される前記フリップフロップの数が所定数に達した場合、その置換後のネットリストを出力するステップとをコンピュータに実行可能に構成されたことを特徴とする。
【００１０】
また、本発明の別の一態様に係る半導体集積回路は、組み合わせ論理回路と、  複数個のフリップフロップを直列に接続して構成され、通常動作時において前記組み合わせ論理回路に入出力されるデータを一時保持すると共にスキャンテスト実行時に前記複数個のフリップフロップをシフトレジスタとして機能させスキャンテスト用のテストパターンデータをシリアル転送可能に構成されたスキャンチェーン回路と、クロックゲーティング信号に従い前記スキャンチェーン回路に対し供給されるクロック信号のパルスの出力を制御する一方前記スキャンテストの開始を許可するスキャンイネーブル信号の論理変化を検知して前記クロックゲーティング信号を無効化するように構成された複数のクロックゲーティング回路とを備え、前記複数個のフリップフロップの一部は、前記クロック信号が立ち上がったときにデータを取り込むマスターラッチと、前記クロック信号が立ち下がったときにデータを取り込むスレーブラッチとを備え、前記スキャンイネーブル信号がディセーブルされている間は、前記マスターラッチからデータを取り込んだ後前記スレーブラッチに転送し、前記クロック信号の立ち上がりエッジで動作するフリップフロップとして動作する一方、前記スキャンイネーブル信号がイネーブルされている間は、前記スレーブラッチから前記テストパターンデータを取り込んだ後前記マスターラッチに転送し、前記クロック信号が立ち下がりエッジで動作するスキャンんフリップフロップとして動作するように構成されたことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、スキャンテスト実行時における瞬間電力を低減することを可能とした半導体集積回路及び設計自動化システムを提供することができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施の形態について図面を参照して説明する。
【００１３】
〔第１の実施の形態〕
本発明の第１の実施の形態に係る半導体集積回路を、図面を参照して説明する。
【００１４】
第１の実施の形態の説明に先立ち、一般的なスキャンチェーン回路と組み合わせ論理回路との構成例を図１に示す。組み合わせ論理回路２の入力端子側にスキャンテスト用のフリップフロップＦ／Ｆ１〜Ｆ／Ｆ３が配置され、出力端子側にスキャンテスト用のフリップフロップＦ／Ｆ４が配置されている。これら４つのフリップフロップＦ／Ｆ１〜Ｆ／Ｆ４が直列にも接続され、スキャンテスト時にシフトレジスタとして機能するスキャンチェーン回路１が構成されている。
【００１５】
すなわち、通常動作においては、これらのフリップフロップＦ／Ｆ１〜Ｆ／Ｆ３は、データ入力端子Ｄから入力データＤｉｎを入力されて一時保持し、データ出力端子Ｑから出力データを組み合わせ論理回路２に向けて出力する。また、フリップフロップＦ／Ｆ４は、組み合わせ論理回路２からの出力データをデータ入力端子Ｄから入力されて一時保持し、データ出力端子Ｑから出力データＤＯｕｔを出力する。
【００１６】
一方、スキャンシフト動作においては、直列接続の最前段のフリップフロップＦ／Ｆ１のテストデータ入力端子ＴＩには、図示しないＡＴＰＧ（Automatic Test Pattern Generator)で生成されたテストパターン信号ＳＣＡＮＩｎが入力される。このテストパターン信号ＳＣＡＮＩｎが、直列接続されシフトレジスタを構成するフリップフロップＦ／Ｆ２〜４に順次転送され保持された後、テスト結果をクロック信号により各フリップフロップに取り込む。その後、取り込んだテスト結果をスキャンチェーン回路１を用いてシフト動作し、出力端子から出力信号ＳＣＡＮＯｕｔとして出力することで、スキャンテストが実行される。
【００１７】
テストパターン信号ＳＣＡＮＩｎは、組合せ論理回路２中の異なる箇所毎のテストのため、異なる種類の複数の信号が用意される。あるテストパターン信号ＳＣＡＮＩｎが入力された場合におけるテスト出力信号ＳＣＡＮＯｕｔを調べることにより、組み合わせ論理回路２中の故障箇所を特定することができる。なお、フリップフロップＦ／Ｆの数、及びスキャンチェーン回路１と組み合わせ論理回路２との接続関係は、図１に示すものに限られない。
【００１８】
クロック端子ＣＰには、クロック信号ＣＬＫｑが、クロックゲーティング回路３を介して入力されている。クロックゲーティング回路３は、クロック信号ＣＬＫをゲーティング制御したクロック信号ＣＬＫｑを出力する。クロックゲーティング回路３には、通常動作時には”Ｌ”となり、スキャンテスト時には”Ｈ”となるスキャンイネーブル信号ＳＣＡＮＥｎが入力される。クロックゲーティング回路３は、このスキャンイネーブル信号ＳＣＡＮＥｎに従ってクロック信号ＣＬＫｑを変化させる。
【００１９】
すなわちクロックゲーティング回路３は、通常動作時には、クロックゲーティング信号ＣＧＳに従い、クロック信号ＣＬＫを間引いたゲーテッドクロック信号としてのクロック信号ＣＬＫｑを出力する。一方、スキャンテスト動作時には、クロックゲーティング信号ＣＧＳに拘わらず、クロック信号ＣＬＫを間引かずにそのままとしたクロック信号ＣＬＫｑを出力する。
【００２０】
スキャンイネーブル信号ＳＣＡＮＥｎは、各フリップフロップＦ／Ｆ１〜４のスキャンイネーブル端子ＴＥにも入力される。各フリップフロップＦ／Ｆ１〜４は、スキャンイネーブル信号ＳＣＡＮＥｎが”Ｈ”となった場合にテストデータ入力端子ＴＩからテストパターンＳＣＡＮＩｎを入力させシフトレジスタ動作を行い、逆にスキャンイネーブル信号ＳＣＡＮＥｎが”Ｌ”となった場合にデータ入力端子Ｄから通常のデータＤｉｎを入力させる。
【００２１】
なお、クロックゲーティング回路３に供給されるクロック信号は、クロック生成回路１１、又は外部の回路１２、マルチプレクサ１３、及びクロックツリーシンセシス（ＣＴＳ）１４を介して供給される。マルチプレクサ１３は、スキャンテストモード信号ＳＣＡＮＴｅｓｔＭｏｄｅに従い、通常動作ではクロック信号をクロック生成回路１１から取り込み、スキャンテスト時にはスキャンテスト用のクロック信号を外部の回路１２から取り込む。
【００２２】
図２は、本発明の第１の実施の形態に係る半導体集積回路１００の全体構成を示すブロック図である。この半導体集積回路１００は、異なる複数種類（ここでは３種類）のクロックＣＬＫ１〜ＣＬＫ３により制御される。クロックＣＬＫ１は、半導体集積回路１００中の主要なクロックドメイン２ａの制御に用いられる。また、クロックＣＬＫ２は、半導体集積回路１００中の別のクロックドメイン２ｂの制御に用いられる。クロックＣＬＫ３は、半導体集積回路１００中の更に別のクロックドメイン２ｃの制御に用いられる。実際の半導体集積回路は、更に多数のクロックドメインに分割されることが殆どであるが、ここでは説明の便宜上、上記の３つのクロックドメイン２ａ〜２ｃが存在するものとして説明する。
【００２３】
クロックドメイン２ａ〜２ｃには、それぞれスキャンテストのためスキャンチェーン回路１ａ〜１ｃが用意されている。スキャンチェーン回路１ａには、総計ｎ個のフリップフロップＦ／Ｆ１〜Ｆ／Ｆｎが設けられている。スキャンチェーン回路１ｂには、総計（ｐ−ｎ）個のフリップフロップＦ／Ｆｎ＋１〜Ｆ／Ｆｐが設けられている。スキャンチェーン回路１ｃには、総計（ｑ−ｐ）個のフリップフロップＦ／Ｆｐ＋１〜Ｆ／Ｆｑが設けられている。
【００２４】
ここでクロックドメイン２ａに着目すると、クロックドメイン２ａは、半導体集積回路１００中の主要なクロックドメインであるため、スキャンチェーン回路１ａに含まれるすべて（ｎ個）のフリップフロップＦ／Ｆ１〜Ｆ／Ｆｎを同時に動作させることは、瞬間電力の上昇を招く。
【００２５】
そこで、本実施の形態では、ｎ個のフリップフロップＦ／Ｆ１〜Ｆ／Ｆｎのうち、半数程度のｍ個のフリップフロップＦ／Ｆ１〜Ｆ／Ｆｍに関しては、同一のクロック信号ＣＬＫ１を用いてスキャンテストを実行する一方、残りの（ｎ−ｍ）個のフリップフロップＦ／Ｆｍ＋１〜Ｆ／Ｆｎに関しては、このクロック信号ＣＬＫ１を反転させたクロック信号ＣＬＫ１ｉｎｖを用いてスキャンテスト信号を実行する。クロック信号ＣＬＫ１ｉｎｖは、クロック信号ＣＬＫ１の反転クロック信号であるため、フリップフロップＦ／Ｆｍ＋１〜Ｆ／Ｆｎは、残りのフリップフロップＦ／Ｆ１〜Ｆ／Ｆｍとは同時に動作しない。これにより、半導体集積回路１００のスキャンテスト実行時における瞬間電力を低減することが可能になる。後述するように、例えば図２に示すような半導体集積回路１００を自動設計する設計自動化システムにおいては、１つのクロックドメイン中に含まれる複数のクロックゲーティング回路のうちの１つを選択させ、その選択したクロックゲーティング回路には、クロック信号を反転させる機能を与える。そして、その選択され反転機能を与えられたクロックゲーティング回路により制御されるフリップフロップの数が、当該クロックドメイン中に含まれるフリップフロップの総数の半数に達した場合には、そのときのネットリストを出力し、達していない場合には、新たなクロックゲーティング回路を選択する。説明は省略するが、他のスキャンチェーン回路１ｂ、１ｃにおいても同様の手順を実行することが可能である。
【００２６】
すなわち、１つのクロックドメインを構成するクロックドメイン２ａに対応して設けられたスキャンチェーン回路１ａには、ｎ個のフリップフロップ回路Ｆ／Ｆ１〜Ｆ／Ｆｎが含まれている。そして、そのうちの約半数である（ｎ−ｍ）個のフリップフロップＦ／Ｆｍ＋１〜Ｆ／Ｆｎを制御するクロックゲーティング回路３ｂは、クロック信号ＣＬＫ１を反転して反転クロック信号ＣＬＫｉｎｖを出力する反転機能付きクロックゲーティング回路３ｂとされている。その他のフリップフロップＦ／Ｆ１〜Ｆ／Ｆｍは、クロック信号ＣＬＫ１をスキャンテスト時も反転させずそのまま用いるため、通常のクロックゲーティング回路３ａを有している。
【００２７】
図３に、通常のクロックゲーティング回路３ａ（反転機能無し）の構成例を示す。このクロックゲーティング回路３ａは、ＯＲゲート３１、反転ラッチ回路３２、及びＡＮＤゲート３３を備えている。ＯＲゲート３１には、クロックゲーティング信号ＣＧＳとスキャンイネーブル信号ＳＣＡＮＥｎを入力端子に供給されている。また、反転ラッチ回路３は、クロック信号ＣＬＫが立ち下がったときにＯＲゲート３１の出力信号をラッチする。ＡＮＤゲート３３は、クロック信号ＣＬＫと反転ラッチ回路３２の出力信号の論理積信号を出力する。
【００２８】
図４に、反転機能付きのクロックゲーティング回路３ｂの構成例を示す。このクロックゲーティング回路３ｂは、エッジ検出回路３４、ゲーティング回路３５及び反転回路３６を備えている。
【００２９】
エッジ検出回路３４は、スキャンイネーブル信号ＳＣＡＮＥｎの立ち上がりを検知して、その立ち上がり（イネーブル）の直後のクロック信号ＣＬＫの立ち下がりから、スキャンイネーブル信号ＳＣＡＮＥｎが立ち下がる（ディセーブルされる）までの間の期間立ち上がる出力信号ＯＵＴ２を出力する。具体的にエッジ検出回路３４は、反転エッジトリガー型フリップフロップ回路３０１とＡＮＤゲート３０２を備えている。反転エッジトリガー型フリップフロップ回路３０１は、クロック信号ＣＬＫが立ち下がったときにスキャンイネーブル信号ＳＣＡＮＥｎをラッチする。ＡＮＤゲート３０２は、反転エッジトリガー型フリップフロップ回路３０１のラッチデータとスキャンイネーブル信号ＳＣＡＮＥｎの論理積信号を出力する。
【００３０】
また、ゲーティング回路３５は、クロックゲーティング信号ＣＧＳに従ってクロック信号ＣＬＫのパルスの出力を制御する一方、スキャンイネーブル信号ＳＣＡＮＥｎが立ち上がっている間は、クロックゲーティング信号ＣＧＳに代えて、出力信号ＯＵＴ２を取り込むように構成されている。具体的にこのゲーティング回路３５は、マルチプレクサ３０４、反転ラッチ回路３０５、及びＡＮＤゲート３０６を有している。
マルチプレクサ３０４は、スキャンイネーブル信号ＳＣＡＮＥｎが”Ｌ”の場合にクロックゲーティング信号ＣＧＳを選択的に取り込み、逆にスキャンイネーブル信号ＳＣＡＮＥｎが”Ｈ”の場合にＡＮＤゲート３０２の出力信号を選択的に取り込む。
【００３１】
反転ラッチ回路３０５は、クロック信号ＣＬＫが立ち下がっっている間にマルチプレクサ３０５の出力信号を取り込む。ＡＮＤゲート３０６は、反転ラッチ回路３０５のラッチデータとクロック信号ＣＬＫの論理積信号を出力する。
【００３２】
反転回路３６は、排他的論理和回路３０７から構成され、スキャンシフト実行時において、クロック信号ＣＬＫを反転させる。排他的論理和回路３０７は、ＡＮＤゲート３０２の出力信号とＡＮＤゲート３０６の出力信号との排他的論理和信号を出力する。
【００３３】
次に、この通常のクロックゲーティング回路３ａ（反転機能無し）の動作を図５のタイミングチャートを参照して説明する。このクロックゲーティング回路３ａはスキャンイネーブル信号ＳＣＡＮＥｎとクロックゲーティング信号ＣＧＳを入力されるＯＲゲート３１を有している。このため、通常動作が行われるスキャンイネーブル信号ＳＣＡＮＥｎが”Ｌ”の場合には、クロックゲーティング信号ＣＧＳが有効となり、クロックゲーティング信号ＣＧＳのみに影響を受け、クロック信号ＣＬＫが間引きされたゲーテッドクロック信号としてのクロック信号ＣＬＫｑが出力される。
【００３４】
一方、スキャンシフト実行のためスキャンイネーブル信号ＳＣＡＮＥｎが”Ｈ”とされる場合には、クロックゲーティング信号ＣＧＳはＯＲゲート３１により打ち消され、いわば無効化される。このため、ＡＮＤゲート３３では、クロック信号ＣＬＫの立ち上がりと同期したクロック信号ＣＬＫｑが出力される。
【００３５】
次に、この反転機能付きのクロックゲーティング回路３ｂの動作を図６のタイミングーチャートを参照して説明する。このクロックゲーティング回路３ｂは、通常動作のためスキャンイネーブル信号ＳＣＡＮＥｎが”Ｌ”となる場合には、エッジ検出回路３４の出力信号は”Ｌ”に固定される。また、マルチプレクサ３０４もクロックゲーティング信号ＣＧＳを選択的に取り込む状態とされ、反転回路３６も一方の入力信号が”Ｌ”に固定されるため、単なるバッファとして機能する。このため、スキャンイネーブル信号ＳＣＡＮＥｎが”Ｌ”の場合、すなわち通常動作においては、クロックゲーティング回路３ｂの動作は、クロックゲーティング回路３ａと全く同様に動作する。換言すれば、クロックゲーティング回路３ｂは、クロックゲーティング信号ＣＧＳのみの影響を受けて、クロック信号ＣＬＫを間引いたゲーテッドクロック信号であるクロック信号ＣＬＫｑを出力する。
【００３６】
一方、スキャンシフト実行のためスキャンイネーブル信号ＳＣＡＮＥｎが”Ｈ”の場合には、マルチプレクサ３０４はＡＮＤゲート３０２の出力信号を選択的に取り込む状態となる。また、エッジ検出回路３４の出力信号ＯＵＴ２は時刻ｔ２１と時刻ｔ５との間において”Ｈ”となる。このため、時刻ｔ２１から時刻ｔ５の間において反転回路３６が出力する信号、すなわちクロック信号ＣＬＫと出力信号ＯＵＴ２の排他的論理和信号は、クロック信号ＣＬＫを反転させた信号となる。
【００３７】
このように、クロックゲーティング回路３ａとクロックゲーティング回路３ｂとは、スキャンテスト実行時において、同じクロック信号ＣＬＫを与えられても、位相の異なるクロック信号により駆動されるようになる（図５、図６のＣＬＫｑ参照）。このため、１つのクロックドメイン内において、クロックゲーティング回路３ａにより制御されるフリップフロップＦ／Ｆの数と、クロックゲーティング回路３ｂにより制御されるフリップフロップＦ／Ｆの数とを略同数とするように回路設計を行うことにより、スキャンテスト時における瞬間電力を低減させることが可能になる。
【００３８】
〔第２の実施の形態〕
次に、本発明の第２の実施の形態に係る設計自動化システムを、図面を参照して説明する。
【００３９】
図７は、本発明の第２の実施の形態に係る設計自動化システムの構成を示すブロック図である。この設計自動化システムはコンピュータとコンピュータプログラムにより実現可能であり、一例として、設計しようとする半導体集積回路のネットリストを保持するネットリスト格納部４１、回路設計部４２、及び出力部４３を備えている。
【００４０】
ネットリスト格納部４１に格納されるネットリストは、ここでは組み合わせ論理回路、フリップフロップ、及びクロックゲーティング回路を含むものとする。
【００４１】
回路設計部４２は、カウント部４０１、選択部４０２、置換部４０３、判定部４０４、及びネットリスト生成部４０５を備えている。これら４０１〜４０５は、コンピュータに格納され実行されたコンピュータプログラムによっても実現可能である。
【００４２】
カウント部４０１は、１つのクロックドメイン中に含まれるフリップフロップの個数をカウントする機能を有する。また、選択部４０２は、１つのクロックドメイン中に含まれるクロックゲーティング回路のうちの任意の１つを選択する機能を有する。置換部４０３は、選択部４０２により選択されたクロックゲーティング回路を、反転機能付きのクロックゲーティング回路に置き換える機能を有する。判定部４０４は、カウント部４０１でのカウント値、ネットリスト、及び置換部４０３での置換結果に従い、１つのクロックドメインの中に含まれるフリップフロップのうち、反転機能付きのクロックゲーティング回路により制御されるフリップフロップの数が、半数を超えているか否かを判定する機能を有する。ネットリスト生成部４０５は、カウント部４０１、選択部４０２、置換部４０３、及び判定部４０４の動作後にネットリストを生成する機能を有する。出力部４３は、こうして生成されたネットリストを外部に出力する。
【００４３】
次に、この図７に示すシステムを用いた半導体集積回路の設計手順を、図８に示すフローチャートを参照して説明する。
【００４４】
まず、ネットリスト格納部４１から、設計しようとする半導体集積回路のネットリストを回路設計部４２に入力する（Ｓ２１）。
【００４５】
続いて、このネットリスト中の１つのクロックドメイン内に含まれるフリップフロップの数を、カウント部４０１を用いて計算する（Ｓ２２）。そして、この１つのクロックドメイン中に配置された複数のクロックゲーティング回路のうちの任意の１つを選択し（Ｓ２３）、選択されたクロックゲーティング回路は反転機能付きのクロックゲーティング回路に置換する（Ｓ２４）。なお、このＳ２３での選択は、図示しない入力部を介してオペレータが行ってもよいし、選択部４０２により自動的に実行されるのでもよい。
【００４６】
その後、判定部４０４は、Ｓ２２でカウントしたカウント値、ネットリスト、及びＳ２４での置換結果に従い、１つのクロックドメインの中に含まれるフリップフロップのうち、反転機能付きのクロックゲーティング回路により制御されるフリップフロップの数が、半数を超えているか否かを判定する（Ｓ２５）。半数を超えている場合（ＹＥＳ）、Ｓ２４での置換動作により配置された反転機能付きのクロックゲーティング回路を含むネットリストを出力部４３から出力して、処理を終了する（Ｓ２６、Ｓ２７）。
【００４７】
一方、Ｓ２５で半数を超えていないと判定された場合（ＮＯ）、近傍のフリップフロップを駆動する別のクロックゲーティング回路が存在するか否かが判定される（Ｓ２８）。存在する場合には（ＹＥＳ）、そのような条件を満たすクロックゲーティング回路を１つ選択し（Ｓ２９）、Ｓ２４に戻って置換動作を繰り返す。
【００４８】
一方Ｓ２８で条件を満たすクロックゲーティング回路が存在しないと判定された場合には、Ｓ２３に戻り、任意のクロックゲーティング回路を選択する（Ｓ２３）。なお、Ｓ２３において、選択可能なクロックゲーティング回路が無いと判断された場合には、Ｓ２６に移動して処理を終了する。
【００４９】
なお、図９に示すように、反転機能付きのクロックゲーティング回路３ｂで制御されるフリップフロップＦ／Ｆ１〜Ｆ／Ｆ２と、反転機能無しのクロックゲーティング回路３ａで制御されるフリップフロップＦ／Ｆ３〜Ｆ／Ｆ４が混在したスキャンチェーンある場合を想定する。この場合、フリップフロップＦ／Ｆ１〜Ｆ／Ｆ２が、フリップフロップＦ／Ｆ３〜４よりも前段にある場合、フリップフロップＦ／Ｆ１〜Ｆ／Ｆ４により１つのスキャンチェーン回路を構成したとしても、正常にデータの受け渡し（シフト動作）を行うことが可能になる。
【００５０】
このような観点から、本実施の形態では、Ｓ２８において、近傍のフリップフロップを駆動する別のクロックゲーティング回路が存在するか否かが判定し、存在する場合にはそのクロックゲーティング回路も反転機能付きのものに置き換える。このようにして、反転機能付きクロックゲーティング回路により制御されるフリップフロップの近傍のフリップフロップを選択・置換し、そのようなフリップフロップ回路をスキャンチェーン回路が先頭部分に集められ、スキャンチェーン回路の配線長を短くすることができる。
【００５１】
〔第３の実施の形態〕
次に、本発明の第３の実施の形態に係る設計自動化システムを、図面を参照して説明する。
【００５２】
図１０は、本発明の第３の実施の形態に係る設計自動化システムの構成を示すブロック図である。この設計自動化システムはコンピュータとコンピュータプログラムにより実現可能であり、一例として、図２に示すような半導体集積回路の自動設計が可能なように構成されている。このシステムは、入力部１４１、データ格納部１４２、ネットリスト生成部１４３、テストパターン生成部１４４、及び出力部１４５から構成されている。これら１４３〜１４４は、コンピュータに格納され実行されたコンピュータプログラムによっても実現可能である。
【００５３】
入力部１４１は、後述する反転クロック化の選択、その他設計のために必要なオペレータからの指示を入力するために設けられている。データ格納部１４２は、設計しようとする回路のＲＴＬ（Register Transfer Level）を格納する。
【００５４】
また、ネットリスト生成部１４３は、入力部１４１からの入力データ、及びＲＴＬに基づいて、設計しようとする回路のネットリストを生成する。また、テストパターン生成部１４４は、図示しないＡＴＰＧ及び上述のネットリストに基づいて、設計しようとする回路をテストするためのテストパターンを生成する。出力部１４５は、生成されたネットリスト及びテストパターンを出力する。
【００５５】
次に、この図１０に示すシステムを用いた半導体集積回路の設計手順を、図１１を参照して説明する。ここでは、半導体集積回路中のあるクロックドメイン内の半分のクロックゲーティング回路が、第１の実施の形態で説明した反転機能付きクロックゲーティング回路となるように設計が行われるものとする。
【００５６】
まず、設計しようとする回路のＲＴＬがデータ格納部１４２からネットリスト生成部１４３に入力される（Ｓ３１）。
【００５７】
次に各クロックドメインに対しクロックゲーティング回路を配置するクロックゲーティング化を実行する（Ｓ３２）。そして、このようにして配置された複数のクロックゲーティング回路のうち、反転機能付きのクロックゲーティング回路とするものを選択し（Ｓ３３）、選択されたクロックゲーティング回路は反転機能付きのものに置換される。なお、この選択は、入力部１４１を介してオペレータが行ってもよいし、ネットリスト生成部１４３により自動的に実行されるのでもよい。
【００５８】
次に、この置換結果に従い、ＲＴＬの論理合成を行い（Ｓ３５）、スキャンチェーン回路の接続を行う（Ｓ３６）。このとき、スキャンチェーン回路の前段部分に、反転機能付きのクロックゲーティング回路により制御されるフリップフロップが集められ、後段に反転機能無しのクロックゲーティング回路により制御されるフリップフロップが集められるよう、スキャンチェーン接続を行う。こうして生成されたネットリストを出力部１４５から出力する（Ｓ３７）。さらに、ＡＴＰＧを用いてテストパターンを生成・出力する（Ｓ３８、Ｓ３９）。
【００５９】
[第４の実施の形態]
次に、本発明の第４の実施の形態を図１２及び図１３を参照して説明する。図の上記の第１乃至第３の実施の形態は、クロックゲーティング回路を反転機能付きのものに置き換えることで瞬間電力の低減を図るものである。これに対し、本実施の形態は、クロックゲーティング回路を反転機能付きのものに置き換えることは行わない。その代わりに、スキャンチェーン回路を構成するフリップフロップの一部を、スキャンシフト実行時において、クロック信号の立ち上がりでデータをラッチする回路から、クロック信号の立ち下がりでデータをラッチする回路に（またはその逆に）変更可能な構成とする。
【００６０】
図１２は、本実施の形態に係る半導体集積回路の構成の一部を示すブロック図である。図１２に示すように、この実施の形態の半導体集積回路は、１つのクロックドメインを構成する組み合わせ論理回路２に対応して設けられたスキャンチェーン回路１内に含まれるクロックゲーティング回路３は、いずれも同じクロック信号ＣＬＫ１により動作し、反転機能は与えられていない。その代わりに、スキャンチェーン回路１内に含まれるｎ個のフリップフロップＦ／Ｆのうちの半分のフリップフロップＦ／Ｆｍ＋１〜Ｆ／Ｆｎは、スキャンテストの実行時において、クロック信号の立ち上がりでデータをラッチする回路から、クロック信号の立ち下がりでデータをラッチする回路に（またはその逆に）変更可能なフリップフロップ５１とする。これにより、クロックゲーティング回路を反転機能付きに置き換えなくても、第１乃至第３の実施の形態と同様の効果を得ることができる。
【００６１】
図１３に、図１２で説明したフリップフロップ５１の構成例を示す。このフリップフロップ５１は、マルチプレクサ２４２、２４４、２４６と、第１ラッチ回路２４３、第２ラッチ回路２４４を備えている。
【００６２】
マルチプレクサ２４２は、スキャンイネーブル信号ＳＣＡＮＥｎが”Ｌ”のとき通常のデータＤｉｎを、”Ｈ”のときはラッチ回路２４５の出力信号を選択的に取り込むように構成されている。第１ラッチ回路２４３は、クロック信号ＣＬＫが立ち下っている間はマルチプレクサ２４２の出力信号を取り込む。マルチプレクサ２４４は、スキャンイネーブル信号ＳＣＡＮＥｎが”Ｌ”のときは第１ラッチ回路２４３の出力信号を、”Ｈ”のときはテストパターンＳＣＡＮＩｎを選択的に取り込むように構成されている。第２ラッチ回路２４５は、クロック信号ＣＬＫが立ち上がっている間にマルチプレクサ２４４の出力信号を取り込む。マルチプレクサ２４６は、スキャンイネーブル信号ＳＣＡＮＥｎが”Ｌ”のときは第２ラッチ回路２４５の出力信号を、”Ｈ”のときは第１ラッチ回路２４３の出力信号を選択的に取り込むように構成されている。
【００６３】
以上、発明の実施の形態を説明したが、本発明はこれらに限定されるものではなく、発明の趣旨を逸脱しない範囲内において、種々の変更、追加等が可能である。
【図面の簡単な説明】
【００６４】
【図１】一般的なスキャンチェーン回路と組み合わせ論理回路との構成例を示す。
【図２】本発明の第１の実施の形態に係る半導体集積回路１００の全体構成を示すブロック図である。
【図３】図２に示す、通常のクロックゲーティング回路３ａ（反転機能無し）の構成例を示す。
【図４】反転機能付きのクロックゲーティング回路３ｂの構成例を示す。
【図５】通常のクロックゲーティング回路３ａ（反転機能無し）の動作を示すタイミングチャートである。
【図６】反転機能付きのクロックゲーティング回路３ｂの動作を説明するタイミングチャートである。
【図７】本発明の第２の実施の形態に係る設計自動化システムの構成を示すブロック図である。
【図８】図７に示すシステムを用いた半導体集積回路の設計手順を説明するフローチャートである。
【図９】図７に示すシステムにおける動作を説明する概念図である。
【図１０】本発明の第３の実施の形態に係る設計自動化システムの構成を示すブロック図である。
【図１１】図１０に示すシステムを用いた半導体集積回路の設計手順を説明するフローチャートである。
【図１２】本実施の形態に係る半導体集積回路の構成の一部を示すブロック図である。
【図１３】図１２で説明したフリップフロップ５１の構成例を示す。
【符号の説明】
【００６５】
Ｆ／Ｆ１〜Ｆ／Ｆ３・・・フリップフロップ、  １、１ａ〜１ｃ・・・スキャンチェーン回路、  ２、２ａ〜２ｃ・・・組み合わせ論理回路、  ３、３ａ、３ｂ・・・クロックゲーティング回路、  １１・・・クロック生成回路、  １２・・・外部の回路、  １３・・・マルチプレクサ、  １４・・・クロックツリーシンセシス（ＣＴＳ）。
【図１】
2009222644.tif 000003
【図２】
2009222644.tif 000004
【図３】
2009222644.tif 000005
【図４】
2009222644.tif 000006
【図５】
2009222644.tif 000007
【図６】
2009222644.tif 000008
【図７】
2009222644.tif 000009
【図８】
2009222644.tif 000010
【図９】
2009222644.tif 000011
【図１０】
2009222644.tif 000012
【図１１】
2009222644.tif 000013
【図１２】
2009222644.tif 000014
【図１３】
2009222644.tif 000015