(57)【要約】【課題】クロックスキューを考慮する必要が無く、かつ半導体デバイスの種類に関係なく論理回路の低消費電力回路化設計が行えるようにすること。【解決手段】半導体集積回路の論理回路を、データを取り込むためのイネーブル条件が付いているフリップフロップが含まれるモジュールＡ，Ｂ，Ｃと、データを取り込むためのイネーブル条件が付かないフリップフロップが含まれるモジュールＤとに分ける。そしてモジュールＡ，Ｂ，Ｃには前記イネーブル条件に従ってデータを取り込むタイミングでのみクロック供給となる供給・停止付きのクロック信号が供給されるようにし、モジュールＤには常にクロック供給となるクロック信号が供給されるようにする。その後、前記分割したモジュール間のデータ転送経路に、データ送信側のモジュールに供給する前記クロック信号を反転したクロック信号でデータを取り込むフリップフロップを挿入する。【選択図】        図１
2005293372.tif 000002
【特許請求の範囲】
【請求項１】
半導体集積回路の論理回路におけるフリップフロップを、データを取り込むためのイネーブル条件が付いている第１フリップフロップのグループと前記データを取り込むためのイネーブル条件が付かない第２フリップフロップのグループとに分ける工程と、
前記第１フリップフロップのグループを複数の第１モジュールに分割し、前記第２フリップフロップのグループを１以上の第２モジュールに分割する工程と、
分割したモジュールを単位として、前記第１モジュールでは、そのモジュールに含まれる第１フリップフロップに対し、前記イネーブル条件に従ってデータを取り込むタイミングではクロック供給となりその他のタイミングではクロック停止となる供給・停止付きのクロック信号が供給されるようにし、前記第２モジュールでは、そのモジュールに含まれる第２フリップフロップに対し、常にクロック供給となりデータの取り込みを連続して行わせるクロック信号が供給されるようにする工程と、
前記分割したモジュール間のデータ転送経路に、データ送信側のモジュールに供給する前記クロック信号を反転したクロック信号でデータを取り込むフリップフロップを挿入する工程と、
を含むことを特徴とする低消費電力回路の設計方法。
【請求項２】
前記モジュールに分割する工程では、少なくとも、前記第１フリップフロップのグループを複数の第１モジュールに分割する場合に、当該第１モジュール間でのデータ転送に関わる信号数が少なくなるように前記第１フリップフロップのグループを分割する工程を含むことを特徴とする請求項１に記載の低消費電力回路の設計方法。
【請求項３】
半導体集積回路の論理回路を表現した論理記述データと前記半導体集積回路に含まれるクロック信号の総数が含まれる制約条件とに基づき、前記クロック信号に接続されるフリップフロップが、データを取り込むためのイネーブル条件付きであるか否かを判別する手段と、
前記判別手段の判別結果に基づき、イネーブル条件付きのフリップフロップをグループ化してモジュールに分割し、イネーブル条件付きでないフリップフロップをグループ化して別のモジュールに分割する手段と、
前記制約条件として与えた半導体集積回路に含まれるクロック信号数を満足するように前記分割したイネーブル条件付きのフリップフロップが含まれるモジュールを細かく分割する手段と、
系統の異なるクロック信号が供給されるモジュール間のデータ転送経路に、送信側のモジュールに供給するクロック信号を反転したクロック信号で駆動されるフリップフロップを挿入する手段と、
前記イネーブル条件付きのフリップフロップが含まれる各モジュールについてそのモジュール内のフリップフロップがデータを取り込むタイミングのみでクロック信号が供給されるようにするクロックイネーブル条件を生成する回路を生成する手段と、
前記イネーブル条件付きのフリップフロップが含まれる各モジュールに対しては各モジュールに対する前記クロックイネーブル条件に基づき、そのモジュール内のフリップフロップがデータを取り込むタイミングではクロック供給となりその他のタイミングではクロック供給停止となる供給・停止付きのクロック信号を生成する一方、前記イネーブル条件付きでないフリップフロップが含まれる各モジュールに対してはそのモジュール内のフリップフロップがデータの取り込みを連続して行うように常にクロック供給となるクロック信号を供給する回路を生成する手段と、
前記の各手段によって生成された論理記述データを設計結果として出力する手段と、
を備えたことを特徴とする低消費電力回路の設計支援装置。
【請求項４】
半導体集積回路の論理回路を表現した論理記述データと前記半導体集積回路に含まれるクロック信号の総数が含まれる制約条件とに基づき、前記クロック信号に接続されるフリップフロップが、データを取り込むためのイネーブル条件付きであるか否かを判別する手段と、
前記判別手段の判別結果に基づき、イネーブル条件付きのフリップフロップをグループ化してモジュールに分割し、イネーブル条件付きでないフリップフロップをグループ化して別のモジュールに分割する手段と、
少なくとも、前記イネーブル条件付きのフリップフロップ間でのデータ転送経路を解析し、その経路総数を調べる手段と、
前記経路総数に基づき、モジュール分割後のモジュール間でのデータ転送を行う信号数が少なくなるように、前記分割したイネーブル条件付きのフリップフロップが含まれるモジュールを再分割する手段と、
系統の異なるクロック信号が供給されるモジュール間のデータ転送経路に、送信側のモジュールに供給するクロック信号を反転したクロック信号で駆動されるフリップフロップを挿入する手段と、
前記イネーブル条件付きのフリップフロップが含まれる各モジュールについてそのモジュール内のフリップフロップがデータを取り込むタイミングのみでクロック信号が供給されるようにするクロックイネーブル条件を生成する回路を生成する手段と、
前記イネーブル条件付きのフリップフロップが含まれる各モジュールに対しては各モジュールに対する前記クロックイネーブル条件に基づき、そのモジュール内のフリップフロップがデータを取り込むタイミングではクロック供給となりその他のタイミングではクロック供給停止となる供給・停止付きのクロック信号を生成する一方、前記イネーブル条件付きでないフリップフロップが含まれる各モジュールに対してはそのモジュール内のフリップフロップがデータの取り込みを連続して行うように常にクロック供給となるクロック信号を供給する回路を生成する手段と、
前記の各手段によって生成された論理記述データを設計結果として出力する手段と、
を備えたことを特徴とする低消費電力回路の設計支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、半導体集積回路の設計において所定のタイミングで動作する論理回路を低消費電力回路化する低消費電力回路の設計方法および低消費電力回路化の設計を支援する低消費電力回路の設計支援装置に関するものである。
【背景技術】
【０００２】
携帯機器等、省電力化の要求の厳しい分野の半導体集積回路においては、ゲーテッドクロックを用いた設計が行われている。しかしながら、ゲーテッドクロック回路を用いることにより、クロックスキューが大きくなり回路が誤動作する可能性がある。
【０００３】
この課題に対して従来から種々の提案がなされている（例えば、特許文献１〜３）。すなわち、特許文献１では、同一のクロックドメインに含まれるフリップフロップの数をほぼ同一にし、できるだけフリップフロップ転送条件が同一のフリップフロップの数が多くなるようにクロックツリーを形成する技術が開示されている。この特許文献１に記載の技術では、同一のクロックドメインに含まれるフリップフロップの転送条件の和集合をクロックのイネーブル条件とする。このようなクロックツリーを形成することにより、クロックドメイン間のクロックスキューを小さくすることができ、消費電力を低減することができる。
【０００４】
また、特許文献２では、半導体集積回路の階層ブロック毎にクロックツリー合成や配置配線を行った後の論理合成、タイミング解析、およびクロックツリー合成の効率および精度を向上させることを目的に、クロックで動作する第１クロック同期セルを有する階層ブロックと、上記クロックと同じクロックで動作し、階層ブロックに含まれない複数の第２クロック同期セルにおいて、複数の第２クロック同期セルのクロック入力端子と、このクロック入力端子にクロック信号を供給するクロック配線との間にこのクロック配線を入力とする第１のクロックバッファを挿入し、これによりクロック配線を、階層ブロックに接続する第１クロック配線と、第２クロック同期セルに接続する第２クロック配線とに分割する技術が開示されている。
【０００５】
また、特許文献３では、複数のクロックモードを具備する半導体集積回路の設計において、複数のクロックモードにおけるクロックスキューの最適化を効率的に行うことを目的に、半導体集積回路のレイアウトデータから、各クロックモードにおける複数のクロックパスを検出し、各クロックモードにおける複数のクロックパスを検出し、検出したクロックパス上に存在するすべての素子のディレイ量を収集し、検出した各クロックパス上におけるディレイ調整位置を設定し、設定したディレイ調整位置におけるディレイ量を非負数の変数とし、この変数と収集した素子のディレイ量とからクロックパスごとに線形式を作成して演算することにより、各パス上のディレイ調整位置における最適なディレイ値を算出し、算出したディレイ値に基づき、各ディレイ調整位置に、該当するディレイ量を有する遅延素子を配置して、レイアウトデータによる回路構成を自動的に修正する技術が開示されている。
【０００６】
【特許文献１】特開２００１−８４２８７号公報
【特許文献２】特開２００３−９２３５４号公報
【特許文献３】特開２００３−２７１６８９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に記載の技術では、各クロックドメインに接続するフリップフロップ数を均等にすることにより、各クロックドメインに接続するフリップフロップ間のクロックスキューが低減するという特徴はあるが、半導体集積回路の配置配線が考慮されていない。つまり、クロックスキュー値がチップ内でどの程度になるかは、配置配線後のクロック配線の引き回し経路やデバイスの製造バラツキ等があるので、正確に見積もることは困難であり、クロックスキューが原因でデータ転送が正しく行われないことが有り得る。
【０００８】
また、特許文献２に記載の技術では、複数のクロックを有する回路に対して、階層的なレイアウトでは有効なクロックツリー合成手法であるが、クロックドメインの異なるフリップフロップ間のクロックスキュー調整のためにクロックツリーを合成する他に、実際には、クロックドメインの異なる複数のフリップフロップの間に、クロックスキュー調整用のバッファを挿入することも考えられるので、レイアウト後の正確なタイミング解析ができない場合には、回路が誤動作する可能性がある。また、ＦＰＧＡ（Field Programmable Gate Array）のようにクロック配線が予めなされているデバイスでは、クロックツリーを合成する本手法を適用することができないという問題もある。
【０００９】
また、特許文献３に記載の技術では、複数のクロックモードにおいて、レイアウトデータから各クロックパスのディレイ量を算出し、各クロックパスの最適な位置に最適なディレイを挿入するので、レイアウト後の対策のために精度の高いディレイをクロックパスに挿入することができる。しかし、特許文献２に記載の技術と同様に、予めクロック配線がなされているＦＰＧＡにおいては、上記の手法を適用することができないという問題がある。
【００１０】
今日の半導体集積回路、特に、セルベースＬＳＩ（Large Scale Integrated Circuit）等の設計においては、半導体集積回路の機能検証のために、ＦＰＧＡ等の再構成可能なデバイスを用いて高速に機能を検証することが行われているので、様々なデバイスに適用できる低消費電力設計方式の開発が望まれている。
【００１１】
この発明は、上記に鑑みてなされたものであり、クロックスキューを考慮する必要が無く、かつ半導体デバイスの種類に関係なく論理回路の低消費電力回路化に適用できる低消費電力回路の設計方法を得ることを目的とする。
【００１２】
また、この発明は、クロックスキューを考慮する必要が無く、かつ半導体デバイスの種類に関係なく論理回路の低消費電力回路化に適用できる低消費電力回路をコンピュータの支援によって自動的に生成する低消費電力回路の設計支援装置を得ることを目的とする。
【課題を解決するための手段】
【００１３】
上述した目的を達成するために、この発明にかかる低消費電力回路の設計方法は、半導体集積回路の論理回路におけるフリップフロップを、データを取り込むためのイネーブル条件が付いている第１フリップフロップのグループと前記データを取り込むためのイネーブル条件が付かない第２フリップフロップのグループとに分ける工程と、前記第１フリップフロップのグループを複数の第１モジュールに分割し、前記第２フリップフロップのグループを１以上の第２モジュールに分割する工程と、分割したモジュールを単位として、前記第１モジュールでは、そのモジュールに含まれる第１フリップフロップに対し、前記イネーブル条件に従ってデータを取り込むタイミングではクロック供給となりその他のタイミングではクロック停止となる供給・停止付きのクロック信号が供給されるようにし、前記第２モジュールでは、そのモジュールに含まれる第２フリップフロップに対し、常にクロック供給となりデータの取り込みを連続して行わせるクロック信号が供給されるようにする工程と、前記分割したモジュール間のデータ転送経路に、データ送信側のモジュールに供給する前記クロック信号を反転したクロック信号でデータを取り込むフリップフロップを挿入する工程とを含むことを特徴とする。
【００１４】
この発明によれば、モジュール間のデータ転送は、データ送信側のモジュールに供給するクロック信号を反転したクロック信号でデータを取り込むフリップフロップを介して行うようにしたので、クロックスキューの影響無しにモジュール間のデータ転送が行えるようになる。このとき、データを取り込むためのイネーブル条件が付いている第１フリップフロップが含まれるモジュール間のデータ転送では、当該モジュール間に挿入されたフリップフロップは、供給・停止付きのクロック信号の反転クロック信号によって動作するので、低消費電力化も実現することができる。
【発明の効果】
【００１５】
この発明によれば、クロックスキューの影響が無い低消費電力回路を半導体デバイスの種類に依存しないで設計することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１６】
以下に図面を参照して、この発明にかかる低消費電力回路の設計方法および低消費電力回路の設計支援装置の好適な実施の形態を詳細に説明する。
【００１７】
実施の形態１．
図１は、この発明にかかる低消費電力回路の設計方法の一実施の形態による低消費電力回路の設計方法を説明する図である。図１において、モジュールＡ１，モジュールＢ２，モジュールＣ３およびモジュールＤ４は、それぞれ論理回路の回路要素であるフリップフロップを、供給するクロック信号によってグループ化したモジュールであり、次のようにして分割され、クロックの供給が行われる。なお、少なくともモジュールＡ１，モジュールＢ２およびモジュールＣ３は、モジュール間のデータ転送に関わる信号数が少なくなるように分割されている。
【００１８】
すなわち、半導体集積回路の論理回路に存するフリップフロップを、まず、データを取り込むためのイネーブル条件付きのフリップフロップ（以降「データイネーブル条件付きのフリップフロップ」と記す）と、常にクロック信号が供給されそのクロック信号に同期してデータを常に取り込み続けるフリップフロップ（以降「フリーランクロック信号が供給されるフリップフロップ」と記す）とに分ける。
【００１９】
次に、データイネーブル条件付きのフリップフロップを複数のモジュールに分割（図１ではモジュールＡ１，モジュールＢ２，モジュールＣ２の３つを示す）し、それぞれのモジュールにおけるフリップフロップの全てがデータを取り込むタイミングのみでクロックを供給するためのクロックイネーブル条件（クロックイネーブル条件信号ＣＬＫ＿Ａ＿ＥＮＡＢＬＥ１４，ＣＬＫ＿Ｂ＿ＥＮＡＢＬＥ１５，ＣＬＫ＿Ｃ＿ＥＮＡＢＬＥ１６）をそれぞれ生成する回路（クロックイネーブル条件生成回路５，６，７）を設計する。
【００２０】
そして、それらのクロックイネーブル条件（クロックイネーブル条件信号ＣＬＫ＿Ａ＿ＥＮＡＢＬＥ１４，ＣＬＫ＿Ｂ＿ＥＮＡＢＬＥ１５，ＣＬＫ＿Ｃ＿ＥＮＡＢＬＥ１６）と基準クロック信号９とに基づき、データを取り込むタイミングのみでクロック供給となりその他のタイミングではクロック供給の停止となる供給・停止付きのクロック信号（クロック信号ＣＬＫ＿Ａ１０，ＣＬＫ＿Ｂ１１，ＣＬＫ＿Ｂ１２）を対応するモジュール（モジュールＡ１，モジュールＢ２，モジュールＣ２）に分配供給するクロック生成回路８を設計する。
【００２１】
また、フリーランクロック信号が供給されるフリップフロップも複数のモジュールに分割（図１ではモジュールＤ４の１個を示す）し、クロック生成回路８はフリーランクロック信号（クロック信号ＣＬＫ＿Ｄ１３）を基準クロック信号９に基づき供給するように設計する。
【００２２】
次に、互いに異なるクロック信号が入力されるモジュール間のデータ転送部分に、データ送信側モジュールのクロック信号を反転したクロック信号で動作するフリップフロップを挿入する。すなわち、図１に示すように、クロック生成回路８に、クロック信号ＣＬＫ＿Ａ１０を反転するインバータ２３ａと、クロック信号ＣＬＫ＿Ｂ１１を反転するインバータ２３ｂと、クロック信号ＣＬＫ＿Ｃ１２を反転するインバータ２３ｃと、クロック信号ＣＬＫ＿Ｄ１３を反転するインバータ２３ｄとをそれぞれ設ける。
【００２３】
そして、モジュールＡ１からモジュールＢ２へのデータ転送部分に、インバータ２３ａが出力する反転クロック信号ＣＬＫ＿Ａ＿ＩＮＶ４０で駆動されるフリップフロップ２０ａを挿入する。モジュールＢ２からモジュールＡ１へのデータ転送部分とモジュールＢ２からモジュールＣ３へのデータ転送部分とに、インバータ２３ｂが出力する反転クロック信号ＣＬＫ＿Ｂ＿ＩＮＶ４１で駆動されるフリップフロップ２ｂ，２ｃをそれぞれ挿入する。同様にモジュールＣ３からモジュールＢ２へのデータ転送部分とモジュールＣ３からモジュールＤ４へのデータ転送部分とに、インバータ２３ｃが出力する反転クロック信号ＣＬＫ＿Ｃ＿ＩＮＶ４２で駆動されるフリップフロップ２ｄ，２ｅをそれぞれ挿入する。また、モジュールＤ４からモジュールＣ３へのデータ転送部分に、インバータ２３ｄが出力する反転クロック信号ＣＬＫ＿Ｄ＿ＩＮＶ４３で駆動されるフリップフロップ２ｆに挿入する。
【００２４】
この設計方法によれば、モジュール間のデータ転送は、データ送信側のモジュールに供給するクロック信号を反転したクロック信号でデータを取り込むフリップフロップを介して行うようにしたので、クロックスキューの影響無しにモジュール間のデータ転送が行えるようになる。しかも、データイネーブル付きフリップフロップに関わるモジュール間のデータ転送に用いる反転したクロック信号は、データ転送に必要なタイミングのみでクロック信号が供給されるので、低消費電力化も実現することができる。このような低消費電力回路は、半導体デバイスの種類を問わずに設計することができる。また、クロックスキュー等のタイミングの問題が発生しないので、確実に動作する。
【００２５】
次に、図２は、図１に示すクロック生成回路８の構成例を示す回路図である。図２において、フリップフロップ１８ａ，１８ｂ，１８ｃの各データ入力端Ｄには、各モジュールのクロックイネーブル条件信号ＣＬＫ＿Ａ＿ＥＮＡＢＬＥ１４，ＣＬＫ＿Ｂ＿ＥＮＡＢＬＥ１５，ＣＬＫ＿Ｃ＿ＥＮＡＢＬＥ１６が印加されている。また、フリップフロップ１８ａ，１８ｂ，１８ｃの各クロック入力端Ｇには、基準クロック信号ＣＬＫ９をインバータ１９にて反転して印加されている。これによって、フリップフロップ１８ａ，１８ｂ，１８ｃの各データ出力端Ｑには、クロックマスク信号ＣＬＫ＿Ａ＿ＭＡＳＫ２９，ＣＬＫ＿Ｂ＿ＭＡＳＫ３０，ＣＬＫ＿Ｃ＿ＭＡＳＫ３１がそれぞれ出力される。
【００２６】
ＡＮＤ回路２２ａ，２２ｂ，２２ｃでは、一方の入力端に基準クロック信号ＣＬＫ９が共通に印加されている。ＡＮＤ回路２２ａでは、他方の入力端にクロックマスク信号ＣＬＫ＿Ａ＿ＭＡＳＫ２９が印加され、出力端にバッファ２４ａとインバータ２３ａとが並列に接続されている。バッファ２４ａからはモジュールＡ１に対するクロック信号ＣＬＫ＿Ａ１０が出力される。インバータ２３ａからはデータ転送用のフリップフロップ２０ａに対する反転クロック信号ＣＬＫ＿Ａ＿ＩＮＶ４０が出力される。
【００２７】
ＡＮＤ回路２２ｂでは、他方の入力端にクロックマスク信号ＣＬＫ＿Ｂ＿ＭＡＳＫ３０が印加され、出力端にバッファ２４ｂとインバータ２３ｂとが並列に接続されている。バッファ２４ｂからはモジュールＢ２に対するクロック信号ＣＬＫ＿Ｂ１１が出力される。インバータ２３ｂからはデータ転送用のフリップフロップ２０ｂ，２０ｃに対する反転クロック信号ＣＬＫ＿Ｂ＿ＩＮＶ４１が出力される。
【００２８】
ＡＮＤ回路２２ｃでは、他方の入力端にクロックマスク信号ＣＬＫ＿Ｃ＿ＭＡＳＫ３１が印加され、出力端にバッファ２４ｃとインバータ２３ｃとが並列に接続されている。バッファ２４ｃからはモジュールＣ３に対するクロック信号ＣＬＫ＿Ｃ１２が出力される。インバータ２３ｃからはデータ転送用のフリップフロップ２０ｄ，２０ｅに対する反転クロック信号ＣＬＫ＿Ｃ＿ＩＮＶ４２が出力される。
【００２９】
また、基準クロック信号ＣＬＫ９が並列に入力されるバッファ２４ｄとインバータ２３ｄと設けられている。バッファ２４ｄからはモジュールＤ４に対するフリーランクロック信号ＣＬＫ＿Ｄ１３が出力される。インバータ２３ｄからはデータ転送用のフリップフロップ２０ｆに対する反転クロック信号ＣＬＫ＿Ｄ＿ＩＮＶ４３が出力される。
【００３０】
なお、図２に示すように、各モジュールに対するクロックイネーブル条件信号ＣＬＫ＿Ａ＿ＥＮＡＢＬＥ１４，ＣＬＫ＿Ｂ＿ＥＮＡＢＬＥ１５，ＣＬＫ＿Ｃ＿ＥＮＡＢＬＥ１６を、それぞれ基準クロック信号ＣＬＫ９の反転クロック信号によってフリップフロップ１８ａ，１８ｂ，１８ｃに一旦ラッチし、それと基準クロック信号ＣＬＫ９とのＡＮＤを取るようにしたので、モジュール等にはグリッジが乗らないクロック信号が供給されることになる。
【００３１】
次に、図３〜図６を参照して、クロックスキューの影響無しにモジュール間のデータ転送を実現する方法を具体的に説明する。なお、図３は、クロック系統の異なるモジュール間のデータ転送において、クロックスキューの影響によってデータ転送が正しく行われない可能性のある回路例である。図４は、図３に示す回路においてモジュールＡ１からモジュールＢ２へのデータ転送動作を説明するタイムチャートである。図５は、図３に示す回路において、モジュールＡ１とモジュールＢ２との間のデータ転送部分に、転送元のクロック信号の反転クロック信号で駆動されるフリップフロップを挿入した回路例である。図６は、図５に示す回路においてモジュールＡ１からモジュールＢ２へのデータ転送動作を説明するタイムチャートである。
【００３２】
図３では、説明を簡略化するために、２つのモジュールのモジュールＡ１とモジュールＢ２には、それぞれ、１個のフリップフロップ３５，３６が存在し、モジュールＡ１からモジュールＢ２に対して１本だけデータ転送経路がある場合の構成が示されている。モジュールＡ１からモジュールＢ３へのデータ転送は、複数のバッファを直列に接続したバッファ３７を介して行われる。したがって、クロック生成回路８は、図２に示した構成とは異なり、モジュールＡ１へのクロック信号ＣＬＫ＿Ａ１０とモジュールＢ２へのクロック信号ＣＬＫ＿Ｂ１１のみを生成する構成となる。
【００３３】
すなわち、図３において、モジュールＡ１では、２入力１出力のマルチプレクサ２１ａと１つのフリップフロップ３５とが示されている。マルチプレクサ２１ａは、一方の入力端Ａにフリップフロップ３５のデータ出力端Ｑが接続され、他方の入力端に外部からデータ信号ＤＡＴＡ＿ＩＮ５０が印加される。また、マルチプレクサ２１ａは、セット入力端Ｓに外部からデータイネーブル信号ＤＡＴＡ＿Ａ＿ＥＮＡＢＬＥ５２が印加され、出力端Ｙはフリップフロップ３５のデータ入力端Ｄに接続されている。データイネーブル信号ＤＡＴＡ＿Ａ＿ＥＮＡＢＬＥ５２は、クロックイネーブル条件生成回路５にも入力されている。フリップフロップ３５では、クロック入力端Ｇにクロック信号ＣＬＫ＿Ａ１０が印加される。そして、フリップフロップ３５のデータ出力端Ｑに現れる出力データ信号ＤＡＴＡ＿ＯＵＴ５１は、マルチプレクサ２１ａの一方の入力端Ａに印加されるとともに、バッファ３７を介したモジュールＢ２への転送データとなる。
【００３４】
モジュールＢ２では、２入力１出力のマルチプレクサ２１ｂと１つのフリップフロップ３６とが示されている。マルチプレクサ２１ｂは、一方の入力端Ａにフリップフロップ３６のデータ出力端Ｑが接続され、他方の入力端にバッファ３７からのデータ信号ＤＡＴＡ＿ＩＮ５３が印加される。また、マルチプレクサ２１ｂは、セット入力端Ｓに外部からデータイネーブル信号ＤＡＴＡ＿Ｂ＿ＥＮＡＢＬＥ５５が印加され、出力端Ｙはフリップフロップ３６のデータ入力端Ｄに接続されている。データイネーブル信号ＤＡＴＡ＿Ｂ＿ＥＮＡＢＬＥ５５は、クロックイネーブル条件生成回路６にも入力されている。フリップフロップ３６では、クロック入力端Ｇにクロック信号ＣＬＫ＿Ｂ１１が印加される。そして、フリップフロップ３５のデータ出力端Ｑに現れる出力データ信号ＤＡＴＡ＿ＯＵＴ５４は、マルチプレクサ２１ｂの一方の入力端Ａに印加される。
【００３５】
ここで、モジュールＡ１に供給するクロック信号ＣＬＫ＿Ａ１０とモジュールＢ２に供給するクロック信号ＣＬＫ＿Ａ１１とには、図４に示すように、クロックスキュー６０が存在する。図４では、基準クロックＣＬＫのクロックサイクルＴ１，Ｔ２，Ｔ３，Ｔ４，Ｔ５における、モジュールＡ１内のフリップフロップ３５の入出力関係（クロック信号ＣＬＫ＿Ａ、データイネーブル信号ＤＡＴＡ＿Ａ＿ＥＮＡＢＬＥ、入力データＤＡＴＡ＿Ａ＿ＩＮ、出力データＤＡＴＡ＿Ａ＿ＯＵＴ）と、モジュールＢ２内のフリップフロップ３６の入出力関係（クロック信号ＣＬＫ＿Ｂ、データイネーブル信号ＤＡＴＡ＿Ｂ＿ＥＮＡＢＬＥ、入力データＤＡＴＡ＿Ｂ＿ＩＮ、出力データＤＡＴＡ＿Ｂ＿ＯＵＴ）とが示されている。
【００３６】
図４において、モジュールＡ１内のフリップフロップ３５に供給するクロック信号ＣＬＫ＿Ａは、クロックタイミングＴ１，Ｔ２とクロックタイミングＴ５以降では、低レベル（クロック供給停止）であり、クロックタイミングＴ３，Ｔ４での各前半サイクルにおいて高レベル（クロック供給）である。これに対し、モジュールＢ２内のフリップフロップ３６に供給するクロック信号ＣＬＫ＿Ｂは、クロックの供給・停止の関係は、クロック信号ＣＬＫ＿Ａと同じであるが、クロック信号ＣＬＫ＿Ｂの先頭供給クロックの位置は、クロックタイミングＴ４の前半サイクルの期間内においてクロックタイミングＴ４の開始時点からクロックスキュー６０の分だけ位相が遅れた位置にシフトされている。
【００３７】
モジュールＡ１内のフリップフロップ３５では、データイネーブル信号ＤＡＴＡ＿Ａ＿ＥＮＡＢＬＥが、クロックタイミングＴ２，Ｔ３の期間内高レベルとなっている。入力データＤＡＴＡ＿Ａ＿ＩＮは、クロックタイミングＴ２の終了時点まで高レベルであり、クロックタイミングＴ３の開始時点で低レベルとなり、以降それを維持している。出力データＤＡＴＡ＿Ａ＿ＯＵＴは、クロック信号ＣＬＫ＿Ａに応答して生成されるので、クロックタイミングＴ３の期間内では高レベルとなり、クロックタイミングＴ４の期間内では低レベルとなる。この出力データＤＡＴＡ＿Ａ＿ＯＵＴが、バッファ３７を介してモジュールＢ２に転送される。
【００３８】
モジュールＢ２内のフリップフロップ３６では、データイネーブル信号ＤＡＴＡ＿Ｂ＿ＥＮＡＢＬＥは、クロックスキュー６０を考慮して生成されるので、クロックタイミングＴ３の開始時点からクロックスキュー６０の分だけ遅れた位置にて高レベルとなり、クロックタイミングＴ５の開始時点からクロックスキュー６０の分だけ遅れた位置にて低レベルとなっている。これに対し、入力データＤＡＴＡ＿Ｂ＿ＩＮは、モジュールＡ１が転送する出力データＤＡＴＡ＿Ａ＿ＯＵＴであるので、クロックタイミングＴ３の期間内では高レベルとなり、クロックタイミングＴ４の期間内では低レベルとなる。
【００３９】
そうすると、この入力データＤＡＴＡ＿Ｂ＿ＩＮをサンプリングするクロック信号ＣＬＫ＿Ｂは、入力データＤＡＴＡ＿Ｂ＿ＩＮが低レベルを示すクロックタイミングＴ４の期間以降に存在するので、出力データＤＡＴＡ＿Ｂ＿ＯＵＴは、常に、低レベルのままとなる。
【００４０】
この問題を解決するために、図５に示すように、バッファ３７に代えて、フリップフロップ２０ａを挿入する。そして、クロック生成回路８から、モジュールＡ１へのクロック信号ＣＬＫ＿Ａ１０の反転クロック信号ＣＬＫ＿Ａ＿ＩＮＶ４０をフリップフロップ２０ａに供給する構成と採る。
【００４１】
このようにすると、図６に示すように、モジュールＡ１からモジュールＢ２への転送経路に挿入したフリップフロップ２０ａでは、反転クロック信号ＣＬＫ＿Ａ＿ＩＮＶ４０がクロック信号ＣＬＫ＿Ａの後半サイクルにシフトされた関係で入力するので、モジュールＡ１からの転送データである入力データＤＡＴＡ＿Ｔ＿ＩＮは、半サイクルだけシフトされてデータ出力端に現れるモジュールＢ２への出力データＤＡＴＡ＿Ｔ＿ＯＵＴとなる。
【００４２】
その結果、モジュールＢ２内のフリップフロップ３６では、フリップフロップ２０ａからの転送データである入力データＤＡＴＡ＿Ａ＿ＩＮは、クロックタイミングＴ３の後半サイクルの開始時点からクロックタイミングＴ４の前半サイクルの終了時点までの期間内の高レベルとなる。クロック信号ＣＬＫ＿Ｂの先頭供給クロックの位置は、クロックタイミングＴ４の前半サイクルの期間内においてクロックタイミングＴ４の開始時点からクロックスキュー６０の分だけ位相が遅れた位置に存するので、入力データＤＡＴＡ＿Ａ＿ＩＮの高レベルをサンプリングすることができ、クロックタイミングＴ４の前半サイクルの途中からクロックタイミングＴ５の前半サイクルの途中まで高レベルで、クロックタイミングＴ５の前半サイクルの途中から図示してないがクロックタイミングＴ６の前半サイクルの途中まで低レベルとなるデータ出力ＤＡＴＡ＿Ｂ＿ＯＵＴが得られる。
【００４３】
このように、モジュールＡ１の出力データＤＡＴＡ＿Ａ＿ＯＵＴを、モジュールＡ１に供給するクロック信号ＣＬＫ＿Ａ１０の反転クロック信号ＣＬＫ＿Ａ＿ＩＮＶ４０によって一旦、フリップフロップ２０ａにラッチし、モジュールＢ２に転送するようにすれば、モジュールＡ１とモジュールＢ２との間にクロックスキューがあっても、確実に、データを転送することができる。しかも、データ転送部分に追加したフリップフロップ２０ａには、データ転送時に必要なクロックのみしか供給されないので、消費電力を抑えることができる。
【００４４】
実施の形態２．
図７は、この発明にかかる低消費電力回路の設計支援装置の一実施の形態による低消費電力回路の設計支援装置の構成を示すフローチャートである。この実施の形態２では、実施の形態１に示したクロック系統の異なるモジュール間のデータ転送を実現する低消費電力回路の設計において、モジュール間のデータ転送数を考慮しないでモジュールの分割を行う設計支援装置の構成例が示されている。
【００４５】
図７において、記憶装置１００には、半導体集積回路の論理回路を、例えばＨＤＬ（Hardware Description Language）にて表現した論理記述データが格納されている。以降、記憶装置１００に代えて、論理記述データ１００と記す。また、記憶装置１０２には、当該設計対象の半導体集積回路に含まれるクロック信号の総数が含まれる制約条件が格納されている。以降、記憶装置１０２に代えて、制約条件１０２と記す。
【００４６】
当該低消費電力回路の設計支援装置を制御するコンピュータ上の支援プログラムでは、まず、論理記述データ１００と制約条件１０２を読み込み（ステップＳ１１）、論理回路に含まれるフリップフロップの種別の解析を行う（ステップＳ１２）。つまり、ステップＳ１２では、論理回路に含まれるフリップフロップが、フリーランクロック信号の供給されるフリップフロップであるか、或いは、データイネーブル付きのフリップフロップであるかの判別を行う。
【００４７】
そして、判別したフリップフロップの種別に従って、当該半導体集積回路をモジュールに分割する（ステップＳ１３）。つまり、ステップＳ１３では、フリーランクロック信号の供給されるフリップフロップをグループ化してモジュールに分割する。また、データイネーブル付きのフリップフロップをグループ化して別のモジュールに分割する。
【００４８】
次いで、上記のように分割したデータイネーブル条件付きのフリップフロップが含まれるモジュールを、制約条件１０２として与えた半導体集積回路に含まれるクロック信号数を満足するように細かく分割する（ステップＳ１４）。そして、系統の異なるクロック信号が供給されるモジュール間のデータ転送部分に、転送元のモジュールに供給するクロック信号を反転したクロック信号で駆動されるフリップフロップを挿入する（ステップＳ１５）。
【００４９】
次いで、データイネーブル条件付きのフリップフロップが含まれる各モジュールについて、そのモジュール内のフリップフロップがデータを転送するタイミングのみでクロック信号が供給されるようにするクロックイネーブル条件を生成するクロックイネーブル条件生成回路と、前記各モジュールに対するクロックイネーブル条件によってデータを転送するタイミングのみでクロック供給となりその他のタイミングではクロック停止となる供給・停止付きのクロック信号および常にデータを取り込むフリップフロップに供給するフリーランクロック信号を生成するクロック生成回路とを生成する（ステップＳ１６）。
【００５０】
そして、終了処理として、上述の手順にて処理して生成されたＨＤＬなどによる論理記述データを記憶装置１０１に書き出す（ステップＳ１７）。斯くして、記憶装置１０１には、この実施の形態２による低消費電力化技術適用後のＨＤＬ等で表現された論理記述データが格納される。
【００５１】
以上の処理によって、異なるクロック信号が供給されるモジュール間転送においてクロックスキューによる誤動作の発生しない低消費電力化を実現した論理回路を支援プログラムにより生成することができる。
【００５２】
実施の形態３．
図８は、この発明にかかる低消費電力回路の設計支援装置の他の実施の形態による低消費電力回路の設計支援装置の構成を説明するフローチャートである。この実施の形態３では、実施の形態１に示したクロック系統の異なるモジュール間のデータ転送を実現する低消費電力回路の設計において、モジュール間のデータ転送数を考慮してモジュールの分割を行う設計支援装置の構成例が示されている。
【００５３】
図８において、記憶装置１００には、例えば、ＨＤＬ（Hardware Description Language）にて論理回路を表現した論理記述データが格納されている。以降、記憶装置１００に代えて、論理記述データ１００と記す。また、記憶装置１０２には、出力する半導体集積回路に含まれるクロック信号の総数が含まれる制約条件が格納されている。以降、記憶装置１０２に代えて、制約条件１０２と記す。
【００５４】
当該低消費電力回路の設計支援装置を制御するコンピュータ上の支援プログラムでは、まず、論理記述データ１００と制約条件１０２を読み込み（ステップＳ２１）、論理回路に含まれるフリップフロップの種別の解析を行う（ステップＳ２２）。つまり、ステップＳ２２では、論理回路に含まれるフリップフロップが、フリーランクロック信号の供給されるフリップフロップであるか、或いは、データイネーブル付きのフリップフロップであるかの判別を行う。
【００５５】
そして、判別したフリップフロップの種別に従って、当該半導体集積回路をモジュールに分割する（ステップＳ２３）。つまり、ステップＳ２３では、フリーランクロック信号の供給されるフリップフロップをグループ化してモジュールに分割する。また、データイネーブル付きのフリップフロップグをループ化して別のモジュールに分割する。
【００５６】
次に、実施の形態２とは異なり、論理回路間、特に、データイネーブル条件付きのフリップフロップ間でのデータ転送経路を解析しその経路総数を調べる（ステップＳ２４）。そして、モジュール分割後のモジュール間、特に、フリップフロップ間のデータ転送を行う信号線数が少なくなるように、ステップ２３にて分割したデータイネーブル付きのフリップフロップグを含むモジュールを再分割する（ステップＳ２５）。
【００５７】
以降は実施の形態２と同様である。すなわち、系統の異なるクロック信号が供給されるモジュール間のデータ転送部分に、データ送信側モジュールに供給するクロック信号を反転したクロック信号で駆動されるフリップフロップを挿入する（ステップＳ２６）。
【００５８】
次いで、データイネーブル条件付きのフリップフロップが含まれる各モジュールについて、そのモジュール内のフリップフロップがデータを転送するタイミングのみでクロック信号が供給されるようにするクロックイネーブル条件を生成するクロックイネーブル条件生成回路と、前記各モジュールに対するクロックイネーブル条件によってデータを転送するタイミングのみでクロック供給となりその他のタイミングではクロック停止となる供給・停止付きのクロック信号および常にデータを取り込むフリップフロップに供給するフリーランクロック信号を生成するクロック生成回路とを生成する（ステップＳ２７）。
【００５９】
そして、終了処理として、上述の手順にて処理して生成されたＨＤＬなどによる論理記述データを記憶装置１０１に書き出す（ステップＳ２８）。斯くして、記憶装置１０１には、この実施の形態３による低消費電力化技術適用後のＨＤＬ等で表現された論理記述データが格納される。
【００６０】
以上の処理によって、実施の形態２と同様に、異なるクロック信号が供給されるモジュール間転送においてクロックスキューによる誤動作の発生しない低消費電力化を実現した論理回路をプログラムにより生成することができる。加えて、モジュール間のデータ転送の数が少なくなるようにモジュール分割を行っているので、モジュール間に挿入されるフリップフロップの数が少なくなり、回路規模の増加を抑えることができるという効果が得られる。
【００６１】
以上説明したように、この発明によれば、クロックスキューの影響の無い低消費電力回路を半導体デバイスの種類に依存しないで設計することができる。これによって、半導体集積回路のレイアウトを行った後にクロックスキューの問題が発生し、タイミングが収束しなくなった最悪の場合に、今までは製造後に論理回路の誤動作が発生していたが、そのような問題を無くすことができる。
【００６２】
特に、ＦＰＧＡのように、予めロジックセルに対してクロック配線が行われている半導体集積回路の場合には、チップ内で使用できるクロック信号が定められているので、この発明によれば、そのクロック信号数に合うような論理回路が作成することができるようになる。
【００６３】
また、系統の異なるクロック間のクロックスキューを考慮しなくてよいのでレイアウト以降の工数を短縮できる。さらに、ためのイネーブル条件が付いているフリップフロップが含まれるモジュールでは、各モジュール内のフリップフロップがデータを取り込むために必要なタイミングのみにクロック信号を供給することができるようになるので、論理回路の電力消費の殆どを占めるスイッチングを削減することができ、低消費電力化を実現することができる。
【産業上の利用可能性】
【００６４】
以上のように、この発明にかかる低消費電力回路の設計方法は、半導体集積回路の論理回路の低消費電力回路化設計を、クロックスキューを考慮する必要が無く、かる半導体デバイスの種類に依存せずに実施するのに有用である。
【００６５】
また、この発明にかかる低消費電力回路の設計支援装置は、クロックスキューを考慮する必要が無く、かつ半導体デバイスの種類に関係なく低消費電力回路化した論理回路をコンピュータ上の支援プログラムにて自動生成するのに有用である。
【図面の簡単な説明】
【００６６】
【図１】この発明にかかる低消費電力回路の一実施の形態による低消費電力回路の設計方法を説明する図である。
【図２】図１に示すクロック生成回路８の構成例を示す回路図である。
【図３】クロック系統の異なるモジュール間のデータ転送において、クロックスキューの影響によってデータ転送が正しく行われない可能性のある回路例を示す図である。
【図４】図３に示す回路においてモジュールＡからモジュールＢへのデータ転送動作を説明するタイムチャートである。
【図５】図３に示す回路において、モジュールＡとモジュールＢとの間のデータ転送部分に、転送元のクロックの反転クロック信号で駆動されるフリップフロップを挿入した回路例を示す図である。
【図６】図５に示す回路においてモジュールＡからモジュールＢへのデータ転送動作を説明するタイムチャートである。
【図７】この発明にかかる低消費電力回路の設計支援装置の一実施の形態による低消費電力回路の設計支援装置の構成を説明するフローチャートである。
【図８】この発明にかかる低消費電力回路の設計支援装置の他の実施の形態による低消費電力回路の設計支援装置の構成を説明するフローチャートである。
【符号の説明】
【００６７】
１  モジュールＡ（論理回路の回路要素を供給するクロック信号でグループ化したモジュールで、データイネーブル付きのフリップフロップを含む）、
２  モジュールＢ（論理回路の回路要素を供給するクロック信号でグループ化したモジュールで、データイネーブル付きのフリップフロップを含む）、
３  モジュールＣ（論理回路の回路要素を供給するクロック信号でグループ化したモジュール、データイネーブル付きのフリップフロップを含む）、
４  モジュールＤ（論理回路の回路要素を供給するクロック信号でグループ化したモジュールで、フリーランクロック信号によって駆動されるフリップフロップを含む）、
５  モジュールＡのクロックイネーブル条件生成回路、
６  モジュールＢのロックイネーブル条件生成回路、
７  モジュールＣのクロックイネーブル条件生成回路、
８  クロック生成回路、
１８ａ，１８ｂ，１８ｃ  フリップフロップ、
２０ａ，２０ｂ，２０ｃ，２０ｄ，２０ｅ，２０ｆ  フリップフロップ、
２１ａ，２１ｂ  ２入力１出力のマルチプレクサ、
２２ａ，２２ｂ，２２ｃ  ＡＮＤ回路、
２３ａ，２３ｂ，２３ｃ，２３ｄ  インバータ、
２４ａ，２４ｂ，２４ｃ，２４ｄ，３７  バッファ、
３５，３６  フリップフロップ、
６０  クロックスキュー、
１００，１０１，１０２  記憶装置。
【図１】
2005293372.tif 000003
【図２】
2005293372.tif 000004
【図３】
2005293372.tif 000005
【図４】
2005293372.tif 000006
【図５】
2005293372.tif 000007
【図６】
2005293372.tif 000008
【図７】
2005293372.tif 000009
【図８】
2005293372.tif 000010