(57)【要約】【課題】ゲーテッドクロック技術および低電力フリップフロップを用いながら、消費電力またはクロック遅延時間を低減した回路設計方法を提供する。【解決手段】半導体回路設計方法は、半導体集積回路の回路情報に基づいてフリップフロップを設定し、フリップフロップを制御する制御信号を求め、フリップフロップにクロックゲーティングを適用したときの消費電力の低さおよびクロック遅延時間のばらつきの小ささに基づく第１の評価値ｈ１を算出し、第１の評価値が第１の閾値よりも大きい場合に、フリップフロップに対してゲーテッドクロック構造を設定し、フリップフロップに該フリップフロップよりも消費電力の低い低電力フリップフロップを適用したときの消費電力の低さおよび設置面積に基づく第２の評価値ｈ２を算出し、第２の評価値が第２の閾値よりも大きい場合に、フリップフロップを低電力フリップフロップに置換することを具備する。【選択図】図１
2009053989.tif 000002
【特許請求の範囲】
【請求項１】
半導体回路のフリップフロップにクロックを供給するクロック配線構造を設計するための半導体回路設計方法であって、
半導体集積回路の回路情報に基づいて前記フリップフロップを設定し、
前記フリップフロップを制御する制御信号を求め、
前記フリップフロップにクロックゲーティングを適用したときの消費電力およびクロック遅延時間のばらつきの大きさを示す第１の評価値を算出し、
前記第１の評価値が第１の閾値よりも大きい場合に、前記フリップフロップに対してクロックゲーティングを行うゲーテッドクロック構造を設定し、
前記フリップフロップに該フリップフロップよりも消費電力の低い低電力フリップフロップを適用したときの消費電力および設置面積の大きさを示す第２の評価値を算出し、
前記第２の評価値が第２の閾値よりも大きい場合に、前記フリップフロップを前記低電力フリップフロップに置換することを具備した半導体回路設計方法。
【請求項２】
前記第１の評価値は、前記制御信号が前記フリップフロップへのクロックを阻止する確率と、前記制御信号によって制御されるフリップフロップ数と、前記制御信号によって制御される前記フリップフロップ間の距離または前記制御信号によって制御される前記フリップフロップ間のクロック遅延時間のばらつきとの関数によって算出されることを特徴とする請求項１に記載の半導体回路設計方法。
【請求項３】
前記第２の評価値は、前記制御信号がクロックを前記フリップフロップへ通過させる確率と、前記フリップフロップがクロックゲーティングされているか否かを示す論理値と、前記フリップフロップに格納される値の単位時間におけるスイッチング率と、前記フリップフロップと前記低電力フリップフロップとの面積差分と、クロック遅延時間の余裕度との関数によって算出されることを特徴とする請求項１または請求項２に記載の半導体回路設計方法。
【請求項４】
半導体回路のフリップフロップにクロックを供給するクロック配線構造を設計するための半導体回路設計方法であって、
半導体集積回路の回路情報に基づいて前記フリップフロップを設定し、
前記フリップフロップを制御する制御信号を求め、
前記フリップフロップにクロックゲーティングを適用したときの消費電力およびクロック遅延時間のばらつきの大きさを示す第１の評価値を算出し、
前記第１の評価値が第１の閾値よりも大きい場合に、前記フリップフロップに対してクロックゲーティングを行うゲーテッドクロック構造を設定し、
前記フリップフロップに格納される値の単位時間におけるスイッチング率に基づいて、前記フリップフロップの種類を置換候補として選択し、
前記フリップフロップを前記置換候補のフリップフロップに置換したときの設置面積およびクロック遅延時間を計算し、
前記設置面積および前記クロック遅延時間が許容範囲内の場合に、前記フリップフロップを前記置換候補のフリップフロップに置換することを具備する半導体回路設計方法。
【請求項５】
前記フリップフロップの置換後、前記クロック配線構造の消費電力、回路面積およびクロック遅延時間を計算し、
前記消費電力、前記回路面積および前記クロック遅延時間が、所定の規格に適合している場合に回路設計を終了することをさらに具備したことを特徴とする請求項１または請求項４に記載の半導体回路設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体回路設計方法に関する。
【背景技術】
【０００２】
フリップフロップやクロックツリーの消費電力を削減するために、従来からゲーテッドクロック技術が用いられている。また、フリップフロップ自体の消費電力を低減するために、コンディショナル・クロッキング・フリップフロップ（ＣＣＫ−Ｆ／Ｆ（Conditional Clocking Flip-Flop））およびコンディショナル・データ・マッピング・フリップフロップ(ＣＤＭ−Ｆ／Ｆ（Conditional Data Mapping Flip-Flop）)が開発されている。ＣＣＫ−Ｆ／ＦおよびＣＤＭ−Ｆ／Ｆは、通常のフリップフロップよりも消費電力が低いので低電力フリップフロップと呼ぶ。
【０００３】
ゲーテッドクロック技術と低電力フリップフロップとを単に組み合わせた場合、クロック信号がゲーティングされるため、クロックパルスの供給頻度が小さくなる。従って、低電力フリップフロップを用いたとしても、消費電力を削減する効果が小さい。また、低電力フリップフロップは、通常のフリップフロップには無い排他的ＯＲゲートや排他的ＮＯＲゲートを有するため、通常のフリップフロップよりも設置面積が大きくなる。よって、通常のフリップフロップを低電力フリップフロップで置換した場合、設置面積が増大する。即ち、ゲーテッドクロック技術と低電力フリップフロップとを単に組み合わせた場合、設置面積が大きくなる割に、消費電力の削減効果が期待通りに得られない。
【０００４】
さらに、ゲーテッドクロック技術において、イネーブル信号とクロック信号を受けるゲートをフリップフロップから離れた位置に配置する場合、クロック遅延時間が大きくなり、また、クロック配線を充放電する消費電力が増大する。このような場合、クロックゲーティングを用いるよりむしろ、クロック信号をそのままフリップフロップへ伝達することが消費電力およびクロック遅延時間の観点から好ましい。
【０００５】
しかし、従来の半導体回路設計方法では、ゲーテッドクロック技術および低電力フリップフロップを用いながら、消費電力およびクロック遅延時間を低減した半導体回路を設定することが困難であった。
【非特許文献１】Mototsugu Hamada et al., "A Conditional Clocking Flip-Flop for Low Power H.264/MPEG4 Audio/Visual Codec LSI", Custom Integrated Circuit Conference 2005.
【非特許文献２】Chen Kong Teh et al., "Conditional Data Mapping Flip-Flops for Low-Power and High-Performance Systems", IEEE Transactions on Very Large Scale Integration (VLSI) Systems, Vol.14, November, 2006.
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ゲーテッドクロック技術および低電力フリップフロップを用いながら、消費電力またはクロック遅延時間を低減した半導体回路の設計方法を提供する。
【課題を解決するための手段】
【０００７】
本発明に係る実施形態に従った半導体回路設計方法は、半導体回路のフリップフロップにクロックを供給するクロック配線構造を設計するための半導体回路設計方法であって、
半導体集積回路の回路情報に基づいて前記フリップフロップを設定し、前記フリップフロップを制御する制御信号を求め、前記フリップフロップにクロックゲーティングを適用したときの消費電力およびクロック遅延時間のばらつきの大きさを示す第１の評価値を算出し、前記第１の評価値が第１の閾値よりも大きい場合に、前記フリップフロップに対してクロックゲーティングを行うゲーテッドクロック構造を設定し、前記フリップフロップに該フリップフロップよりも消費電力の低い低電力フリップフロップを適用したときの消費電力および設置面積の大きさを示す第２の評価値を算出し、前記第２の評価値が第２の閾値よりも大きい場合に、前記フリップフロップを前記低電力フリップフロップに置換することを具備する。
【０００８】
本発明に係る実施形態に従った半導体回路設計方法は、半導体回路のフリップフロップにクロックを供給するクロック配線構造を設計するための半導体回路設計方法であって、
半導体集積回路の回路情報に基づいて前記フリップフロップを設定し、前記フリップフロップを制御する制御信号を求め、前記フリップフロップにクロックゲーティングを適用したときの消費電力およびクロック遅延時間のばらつきの大きさを示す第１の評価値を算出し、前記第１の評価値が第１の閾値よりも大きい場合に、前記フリップフロップに対してクロックゲーティングを行うゲーテッドクロック構造を設定し、前記フリップフロップに格納される値の単位時間におけるスイッチング率に基づいて、前記フリップフロップの種類を置換候補として選択し、前記フリップフロップを前記置換候補のフリップフロップに置換したときの設置面積およびクロック遅延時間を計算し、前記設置面積および前記クロック遅延時間が許容範囲内の場合に、前記フリップフロップを前記置換候補のフリップフロップに置換することを具備する。
【発明の効果】
【０００９】
本発明による半導体回路設計方法は、ゲーテッドクロック技術および低電力フリップフロップを用いながら、消費電力およびクロック遅延時間を低減することができる。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照して本発明に係る実施形態を説明する。本実施形態は、本発明を限定するものではない。
【００１１】
（第１の実施形態）
図１は、本発明に係る第１の実施形態に従った半導体回路設計装置の構成を示すブロック図である。半導体回路設計装置は、半導体回路のフリップフロップにクロックを供給するクロック配線構造を設計する。本実施形態による半導体回路設計装置は、回路情報格納部１０と、論理合成／配置処理部２０と、終了条件判定部３０と、ゲーテッドクロック構造生成部４０と、フリップフロップ置換部５０と、ユーザインタフェース６０とを備えている。回路情報格納部１０は、半導体回路の回路情報、ゲーテッドクロック構造の回路情報、低電力フリップフロップの回路情報等を記憶する。論理合成／配置処理部２０は、半導体回路の構成要素を論理合成し、各構成要素の配置処理を実行する。終了条件判定部３０は、設計された半導体回路のクロック遅延時間等の特性が規格に適合する場合に設計終了を決定する。ゲーテッドクロック構造生成部４０は、フリップフロップにゲーテッドクロック構造を適用する場合にゲーテッドクロック構造を生成する。フリップフロップ置換部５０は、フリップフロップを低電力フリップフロップに置換する場合に低電力フリップフロップを生成する。ユーザインタフェース６０は、外部からの情報を受け取るために設けられている。
【００１２】
図２は、本発明に係る第１の実施形態に従った半導体回路設計方法を示すフロー図である。まず、論理構成／配置処理部２０が、回路情報格納部１０から半導体回路の回路情報を得て、その回路情報に基づいてフリップフロップをロジカルに合成配置する（Ｓ１０）。フリップフロップは、ＬＳＩにおける様々なデータ間の同期をとるための順序回路であり、その動作タイミング等を考慮して配置される。
【００１３】
次に、回路情報に基づいて、ＣＴＳ（Clock Tree Synthesis）処理を行う（Ｓ１０１）。ここでは、バッファＬＣＢ（Local Clock Buffer）が回路に追加、配置される。これにより、フリップフロップＦ／ＦおよびバッファＬＣＢの配置およびフリップフロップＦ／ＦとバッファＬＣＢとの間を接続する配線（クロックツリー配線）が設定される。クロックツリー配線は、半導体集積回路の回路情報に基づいてフリップフロップＦ／Ｆへクロックを供給する。クロックツリー配線はフリップフロップＦ／ＦおよびバッファＬＣＢ以外の回路要素を考慮してチップ内に設定される。
【００１４】
次に、タイミング解析部２５がタイミング解析を行う（Ｓ１０２）。タイミング解析は、例えば、ＣＴＳ処理において構成されたクロックツリー配線のクロック遅延時間、データパスの遅延時間、半導体回路の動作速度等を計測することによって行われる。このときに、半導体回路の消費電力、半導体回路の面積といったパラメータも計測する。
【００１５】
次に、終了条件判定部３０が、タイミング解析部２５によって得られたパラメータが終了条件を満たしているか否かを判定する（Ｓ１０３）。より詳細には、終了条件判定部３０は、ユーザインタフェース６０を介してパラメータの規格値を獲得し、この規格値とタイミング解析によって得られたパラメータ値とを比較する。パラメータ値が規格値より小さい場合に、終了条件判定部３０は、終了条件を満たすと判定し、処理は終了する。
【００１６】
例えば、クロック遅延時間、半導体回路の消費電力、半導体回路の面積、半導体回路の動作速度がそれぞれ規格値以下であった場合に、終了条件判定部３０は、処理を終了させる。あるいは、クロック遅延時間、半導体回路の消費電力、半導体回路の面積および半導体回路の動作速度を演算することによって得られた評価関数値が所定の指標値を下回った場合に、終了条件判定部３０は、処理を終了してもよい。さらに、ステップＳ１０１〜Ｓ１０５が予め設定された回数だけ繰り返し実行された場合に、終了条件判定部３０は、処理を終了してもよい。終了条件を満たしていない場合には、ステップＳ１０４〜Ｓ１０５を実行する。
【００１７】
ステップＳ１０４では、ゲーテッドクロック構造生成部４０が各フリップフロップに対してクロックゲーティングを適用するか否かを決定し、クロックゲーティングを適用する場合には、フリップフロップＦ／Ｆに対してゲーテッドクロック構造を生成する。ステップＳ１０４は、図３に示すフロー図に従って実行される。
【００１８】
まず、回路情報格納部１０内の回路情報に含まれるフリップフロップに未選択のフリップフロップがある場合（Ｓ２０１のＹＥＳの場合）、未選択フリップフロップの１つを選択する（Ｓ２０２）。当初、いずれのフリップフロップも未選択であるので、いずれか１つのフリップフロップを選択してステップＳ２０３へ進む。
【００１９】
次に、ゲーテッドクロック構造生成部４０は、ステップＳ２０２で選択されたフリップフロップ（以下、第１の選択フリップフロップという）がクロックゲーティングされているか否かを判定する（Ｓ２０３）。クロックゲーティングの判定は、第１の選択フリップフロップのクロック入力を辿り、クロックゲーティングセルが存在するか否かで行うことができる。クロックゲーティングセルは、例えば、クロック信号およびイネーブル信号を入力として受けるＡＮＤゲートまたはＯＲゲートで構成されている。従って、より詳細には、クロックゲーティングの判定は、クロック信号およびイネーブル信号を入力として受けるＡＮＤゲートまたはＯＲゲートが、第１の選択フリップフロップのクロック入力側に存在するか否かで行うことができる。ゲーテッドクロック構造は、イネーブル信号が活性（例えば、論理ハイ）である場合に、クロック信号をフリップフロップへ通過させ、イネーブル信号が不活性（例えば、論理ロウ）である場合に、クロック信号を遮断する構造である。即ち、ゲーテッドクロック構造は、フリップフロップへデータ転送が必要な場合にイネーブル信号の制御を受けてクロック信号を通過させ、あるいは、フリップフロップへのデータ転送が不要な場合にクロック信号を遮断するようにイネーブル信号でクロック信号を制御する構造である。尚、ゲーテッドクロックされていないフリップフロップは、例えば、図５に示す構造を有する。ゲーテッドクロックされているフリップフロップは、例えば、図６に示す構造を有する。
【００２０】
第１の選択フリップフロップがクロックゲーティングされている場合（Ｓ２０３のＹＥＳの場合）、第１の選択フリップフロップに入力されるイネーブル信号を制御信号とする（Ｓ２０４）。例えば、制御信号は、図６に示すＣＴＲＬＦｊである。
【００２１】
第１の選択フリップフロップがクロックゲーティングされていない場合（Ｓ２０３のＮＯの場合）、第１の選択フリップフロップへのデータ入力信号に基づいて制御信号を求める（Ｓ２０５）。この場合、例えば、次のような方法により制御信号を求めることができる。一般に、フリップフロップＦｊのデータ入力信号は、ブール式ｆＦｊ(Ｑ，ｘ１，ｘ２，・・・ｘｎ)で表わすことができる。但し、ここでＱは、フリップフロップＦｊの出力値を表記したものである。ｘ１，ｘ２，・・・ｘｎは、外部入力信号及び他のフリップフロップの出力値を変数表記したものである。ブール式ｆＦｊ（Ｑ，ｘ１，ｘ２，・・・ｘｎ）が次の式１で表わされた場合に、ＣＴＲＬＦｊが制御信号となる。
ｆＦｊ（Ｑ，ｘ１，ｘ２，・・・ｘｎ） ＝ ＣＴＲＬＦｊ（ｘ１，ｘ２，・・・ｘｎ）・Ｑ＋ＣＴＲＬＦｊ（ｘ１，ｘ２，・・・ｘｎ）’・ｇＦｊ（Ｑ，ｘ１，ｘ２，・・・ｘｎ）    （式１）
ここで、ＣＴＲＬＦｊ（ｘ１，ｘ２，・・・ｘｎ）’は、ＣＴＲＬＦｊの否定を表わす。ｇＦｊ（Ｑ，ｘ１，ｘ２，・・・ｘｎ）は、図５または図６に示すデータ入力信号ｄａｔａを示す。ＣＴＲＬＦｊは、ｆＦｊ（Ｑ，ｘ１，ｘ２，・・・ｘｎ）に対して、代数的除数（algebraic divisor）をＱとして、代数的除算（algebraic division）を行うことにより求めることが可能である。
【００２２】
このように、クロックゲーティングされていないフリップフロップの制御信号ＣＴＲＬＦｊも求めることができる。
【００２３】
ゲーテッドクロック構造生成部４０は、フリップフロップを１つずつ選択し、ステップＳ２０１〜Ｓ２０５を各フリップフロップに対して実行する。全フリップフロップの選択が終了し、それぞれの制御信号ＣＴＲＬＦｊが求まると（ステップＳ２０１のＮＯの場合）、ゲーテッドクロック構造生成部４０は、ステップＳ２０６〜Ｓ２１１を実行する。ステップＳ２０６〜Ｓ２１１において、ゲーテッドクロック構造生成部４０は、各フリップフロップの制御信号ＣＴＲＬＦｊを用いて、各フリップフロップにゲーテッドクロック構造を適用するか否かを決定する。
【００２４】
ゲーテッドクロック構造生成部４０は、全フリップフロップを未選択状態に戻し、再度、フリップフロップを１つずつ選択する（Ｓ２０７）。当初、いずれのフリップフロップも未選択であるので、いずれか１つのフリップフロップを選択してステップＳ２０８へ進む。
【００２５】
ゲーテッドクロック構造生成部４０は、ステップＳ２０７で選択されたフリップフロップ（第２の選択フリップフロップという）に対して第１の評価値としての評価関数を計算する（Ｓ２０８）。評価関数は、例えば、ｈ１（ｙ１，ｙ２，ｙ３）と定義する。評価関数ｈ１は、ｙ１、ｙ２およびｙ３の演算式で表される関数である。
【００２６】
例えば、ｙ１は、制御信号ＣＴＲＬＦｊが単位時間当たりに不活性状態にある確率（ＣＴＲＬＦｊ＝１の確率）である。ＣＴＲＬＦｊが１である場合、ＣＴＲＬＦｊ’が０となる。このとき、式１のデータ入力信号ｆＦｊは、フリップフロップの出力信号Ｑに等しくなる。つまり、制御信号ＣＴＲＬＦｊが不活性状態である場合には、フリップフロップへのクロック入力信号は停止される。従って、ｙ１が大きいことは、クロック信号を阻止する単位時間当たりの割合が大きいことを意味する。クロック信号を阻止する割合が大きいことは、ゲーテッドクロック構造の利用頻度（ゲーティングの頻度）が高く、ゲーテッドクロック構造によって効率よくゲーティングできることを意味する。即ち、ｙ１が大きいほど、ゲーテッドクロック構造をフリップフロップに適用することによって得られるメリットが大きい。
【００２７】
ｙ２は、同じ制御信号ＣＴＲＬＦｊで制御されるフリップフロップの個数である。同じ制御信号ＣＴＲＬＦｊで制御されるフリップフロップの個数が多ければ、１つのクロックゲーティングセルは、より多くのフリップフロップをゲーティングすることができる。よって、ｙ２が大きいほど、クロックゲーティングセルは、低消費電力で多くのフリップフロップをゲーティングすることができ、ｙ２が大きいほど、フリップフロップにゲーテッドクロック構造を適用することによって得られるメリットが大きい。
【００２８】
例えば、ｙ３は、同じ制御信号ＣＴＲＬＦｊで制御されるフリップフロップがどの程度分離して配置されているかを示す指標である。より詳細には、ｙ３は、同じ制御信号ＣＴＲＬＦｊで制御されるフリップフロップ間の距離でよい。ｙ３は、共通の配線ノードから同じ制御信号ＣＴＲＬＦｊで制御される各フリップフロップまでの距離でもよい。ｙ３は、同じ制御信号ＣＴＲＬＦｊで制御されるフリップフロップ間のクロック遅延時間の差（クロックスキュー）であってもよい。
【００２９】
同じ制御信号ＣＴＲＬＦｊで制御されるフリップフロップが互いに接近していると、ゲーテッドクロック構造は、クロックスキューを増大させることなく、フリップフロップをゲーティングすることができる。従って、ｙ３が小さいほど、フリップフロップにゲーテッドクロック構造を適用することが好ましい。
【００３０】
以上のようなｙ１〜ｙ３を用いて、評価関数ｈ１を式３のように予め定義することができる。
ｈ１（ｙ１，ｙ２，ｙ３）＝ｋ１・ｙ１＋ｋ２・ｙ２−ｋ３・ｙ３        （式３）
ここで、ｋ１、ｋ２およびｋ３は重み付け係数であり、ｙ１〜ｙ３の重要度が高いほどｋ１、ｋ２およびｋ３は大きくなる。ｈ１は、フリップフロップにゲーテッドクロック構造を適用したときの消費電力の低さの度合いおよびクロック遅延時間のばらつき（クロックスキュー）の小ささの度合いを示す。従って、評価関数ｈ１が大きいほど、クロック配線構造の消費電力が低く、かつ、クロック配線構造のクロックスキューが小さくなる。
【００３１】
評価関数ｈ１は、式４のような関数であってもよい。
ｈ１（ｙ１，ｙ２，ｙ３）＝ｋ１・ｙ１・ｋ２・ｙ２／ｋ３・ｙ３        （式４）
式４に示すｈ１もまた、フリップフロップにゲーテッドクロック構造を適用したときの消費電力の低さの度合いおよびクロック遅延時間のばらつき（クロックスキュー）の小ささの度合いを示す。
【００３２】
ゲーテッドクロック構造生成部４０は、ステップＳ２０８で得られた評価関数ｈ１の値（第１の評価値）とユーザインタフェース６０を介して得た第１の閾値（指標値）とを比較する（Ｓ２０９）。その結果、第１の評価値が第１の閾値よりも大きい場合には、ゲーテッドクロック構造生成部４０は、フリップフロップに対してゲーテッドクロック構造を設定する（Ｓ２１０）。第１の評価値が第１の閾値よりも小さい場合には、ゲーテッドクロック構造生成部４０は、フリップフロップに対してゲーテッドクロック構造を設定しない（Ｓ２１１）。
【００３３】
ゲーテッドクロック構造生成部４０は、フリップフロップを１つずつ選択し、ステップＳ２０６〜Ｓ２１１を各フリップフロップに対して実行する。全フリップフロップの選択が終了し、それぞれのフリップフロップに対してゲーテッドクロック構造の設定の要否が決定されると（ステップＳ２０６のＮＯの場合）、ステップＳ１０５へ進む。
【００３４】
フリップフロップ置換部５０は、各フリップフロップを低電力フリップフロップに置換するか否かを決定し、必要な場合には、フリップフロップを低電力フリップフロップに置換する（Ｓ１０５）。ステップＳ１０５は、図４に示すフロー図に従って実行される。まず、回路情報格納部１０内の回路情報に含まれるフリップフロップに未選択のフリップフロップがある場合（Ｓ３０１のＹＥＳの場合）、未選択フリップフロップの１つを選択する（Ｓ３０２）。当初、いずれのフリップフロップも未選択であるので、いずれか１つのフリップフロップを選択してステップＳ３０３へ進む。
【００３５】
次に、フリップフロップ置換部５０は、ステップＳ３０２で選択されたフリップフロップ（以下、第３の選択フリップフロップという）の第２の評価値としての評価関数を計算する（Ｓ３０３）。評価関数は、例えば、ｈ２（ｚ１，ｚ２，ｚ３，ｚ４，ｚ５）と定義する。評価関数ｈ２は、ｚ１，ｚ２，ｚ３，ｚ４およびｚ５の演算式で表される関数である。
【００３６】
ｚ１は、制御信号ＣＴＲＬＦｊが単位時間当たりに活性状態にある確率（ＣＴＲＬＦｊ＝０の確率）である。ＣＴＲＬＦｊが０である場合、式１のデータ入力信号ｆＦｊは、データｇＦに等しくなる。つまり、制御信号ＣＴＲＬＦｊが活性状態である場合には、クロック信号はフリップフロップへ入力される。従って、ｚ１が大きいことは、単位時間当たりにクロック信号を通過させる割合が大きいことを意味する。クロック信号を通過させる割合が大きいことは、フリップフロップの利用頻度が高いことを意味する。このような場合、フリップフロップを低電力フリップフロップに置換すれば、消費電力の低減効果が大きい。即ち、ｚ１が大きいほど、フリップフロップを低電力フリップフロップに置換するメリットが大きい。
【００３７】
ｚ２は、第３の選択フリップフロップにゲーテッドクロック構造が適用されているか否かを示すフラグである。例えば、ｚ２は、ゲーテッドクロック構造が第３の選択フリップフロップに適用されていない場合には１以上の数値とし、ゲーテッドクロック構造が第３の選択フリップフロップに適用されている場合には０とする。これにより、ゲーテッドクロック構造が適用されているフリップフロップに対しては、低電力フリップフロップを適用しない、あるいは、低電力フリップフロップの適用の可能性を低くすることが可能となる。
【００３８】
ｚ３は、第３の選択フリップフロップが保持する値のスイッチング率である。図７に示すような低電力フリップフロップが保持する値のスイッチング率が高いと、低電力フリップフロップ内部のＡＮＤゲートやＯＲゲートのスイッチング率が高くなる。これは、低電力フリップフロップを第３の選択フリップフロップに適用した場合に、消費電力が大きくなることを意味する。従って、スイッチング率が高い場合には、通常のフリップフロップを第３の選択フリップフロップに適用した方が好ましい。
【００３９】
ｚ４は、通常のフリップフロップと低電力フリップフロップとの面積差分である。低電力フリップフロップは、例えば、ＣＣＫ−Ｆ／ＦまたはＣＤＭ−Ｆ／Ｆであり、通常のフリップフロップよりも設置面積が大きい。従って、ｚ４は小さいほど好ましい。
【００４０】
ｚ５は、第３の選択フリップフロップのタイミング余裕度である。低電力フリップフロップは、排他的ＯＲゲートや排他的ＮＯＲゲートを有するので、その分、通常のフリップフロップよりもクロック遅延時間が大きい。従って、タイミング余裕度が大きい場合に、低電力フリップフロップを第３の選択フリップフロップに適用することが好ましい。
【００４１】
以上のようなｚ１〜ｚ５を用いて、第２の評価値としての評価関数ｈ２を式５のように予め定義する。
ｈ２（ｚ１，ｚ２，ｚ３，ｚ４，ｚ５）＝ｃ１・ｚ１＋ｃ２・ｚ２−ｃ３・ｚ３−ｃ４・ｚ４＋ｃ５・ｚ５        （式５）
ここで、ｃ１〜ｃ５は重み付け係数であり、ｚ１〜ｚ５の重要度が高いほどｃ１〜ｃ５は大きくなる。評価関数ｈ２は、第３の選択フリップフロップにゲーテッドクロック構造が適用されているか否か、タイミング余裕度、第３の選択フリップフロップに低電力フリップフロップを適用したときの消費電力の低さおよび設置面積などに基づいて算出される。評価関数ｈ２が大きいほど、第３の選択フリップフロップに低電力フリップフロップを適用することが好ましいと言える。
【００４２】
評価関数ｈ２は、式６のような関数であってもよい。
ｈ２（ｚ１，ｚ２，ｚ３，ｚ４，ｚ５）＝ｃ１・ｚ１・ｃ２・ｚ２・ｃ５・ｚ５／（ｃ３・ｚ３・ｃ４・ｚ４）  （式６）
ｈ２は、ゲーテッドクロック構造が第３の選択フリップフロップに適用されている場合（ｚ２＝０の場合）に０となる。よって、式６のｈ２を用いることによって、ゲーテッドクロック構造が第３の選択フリップフロップに適用されている場合には、フリップフロップ置換部５０は、第３の選択フリップフロップに低電力フリップフロップを適用しない。
【００４３】
フリップフロップ置換部５０は、ステップＳ３０３で得られた評価関数ｈ２の値（第２の評価値）とユーザインタフェース６０を介して得た第２の閾値（指標値）とを比較する（Ｓ３０４）。その結果、第２の評価値が第２の閾値よりも大きい場合には、フリップフロップ置換部５０は、第３の選択フリップフロップを低電力フリップフロップに置換する（Ｓ３０５）。第２の評価値が第２の閾値よりも小さい場合には、フリップフロップ置換部５０は、第３の選択フリップフロップを通常のフリップフロップのままとする（Ｓ３０６）。
【００４４】
フリップフロップ置換部５０は、フリップフロップを１つずつ選択し、ステップＳ３０３〜Ｓ３０６を各フリップフロップに対して実行する。全フリップフロップの選択が終了し、それぞれのフリップフロップに対して低電力フリップフロップへの置換の要否が決定されると（ステップＳ３０１のＮＯの場合）、ステップＳ１０１へ進む。
【００４５】
なお、低電力フリップフロップが既に回路情報において設定されている場合、フリップフロップ置換部５０は、低電力フリップフロップを第３の選択フリップフロップとしてステップＳ３０３〜Ｓ３０６を実行すればよい。例えば、第２の評価値が第２の閾値よりも大きい場合、フリップフロップ置換部５０は、第３の選択フリップフロップとしての低電力フリップフロップを通常フリップフロップに置換し、第２の評価値が第２の閾値よりも小さい場合、フリップフロップ置換部５０は、低電力フリップフロップをそのままとする。
【００４６】
その後、図２に示すステップＳ１０１において再度ＣＴＳ処理が実行され、ステップＳ１０２においてタイミング解析が実行される。タイミング解析で得られたパラメータが終了条件を満たしていない場合（Ｓ１０３）には、ステップＳ１０４、Ｓ１０５、Ｓ１０１およびＳ１０２が繰返し実行される。このとき、第１あるいは第２の評価関数を変更しながらステップＳ１０４、Ｓ１０５、Ｓ１０１およびＳ１０２を繰り返してよい。タイミング解析で得られたパラメータが終了条件を満たしている場合（Ｓ１０３）には、半導体回路の設計は終了する。
【００４７】
図５は、通常のフリップフロップの一例を示すブロック図である。マルチプレクサＭＰＸは、制御信号ｃｎｄに応じて、データｄａｔａまたはフリップフロップＦ／Ｆの出力Ｑを選択的に出力する。フリップフロップＦ／Ｆは、クロック信号ｃｌｋに基づいて、マルチプレクサＭＰＸの出力ｆＦｊを受け取り、これを出力する。
【００４８】
図６は、ゲーテッドクロック構造の一例を示すブロック図である。ラッチ回路は、クロック信号ｃｌｋの逆相クロック信号に基づいて制御信号ｃｎｄをラッチする。ラッチされた制御信号ｃｎｄがハイレベルの場合には、ＡＮＤゲートＧ１はクロックｃｌｋをフリップフロップＦ／Ｆへ通過させる。ラッチされた制御信号ｃｎｄがロウレベルの場合には、ＡＮＤゲートＧ１はクロックｃｌｋを遮断する。
【００４９】
低電力フリップフロップは、ＣＣＫ−Ｆ／ＦまたはＣＤＭ−Ｆ／Ｆのいずれか一方でよい。例えば、図７にＣＣＫ−Ｆ／Ｆの一例を示す。
【００５０】
本実施形態によれば、消費電力、クロック遅延時間、設置面積等のパラメータを考慮して、ゲーテッドクロック構造をフリップフロップに適用し、あるいは、フリップフロップを低電力フリップフロップに置換することができる。従って、消費電力のより低い、クロックスキューのより小さい、あるいは、設置面積がより小さい半導体回路を設計することができる。消費電力、クロック遅延時間、設置面積等のパラメータは、重み付け係数によって、その重要度を変更することができる。よって、規格の厳しいパラメータの重み付け係数を大きくすることによって、そのパラメータに適合した半導体回路を設計することができる。さらに、ゲーテッドクロック構造および／または低電力フリップフロップの適用とタイミング解析とを繰返し実行することによって、仕様に適合した半導体回路を容易に設計することができる。
【００５１】
尚、本実施形態において、１回目の処理では、ステップＳ１０１、Ｓ１０２およびＳ１０３を実行することなくスキップし、合成配置処理（Ｓ１０）によって得られた設計回路データに基づいてステップＳ１０４以降のステップを実行してもよい。
【００５２】
評価関数ｈ１およびｈ２を構成するパラメータｙ１〜ｙ３およびｚ１〜ｚ５は、これらに限定されず、さらに他のパラメータを付加してもよい。パラメータｙ１〜ｙ３のうち２つを組み合わせて評価関数ｈ１を構成してもよい。パラメータｚ１〜ｚ５のうち２〜４つのパラメータを組み合わせて評価関数ｈ２を構成してもよい。
【００５３】
（第２の実施形態）
図８は、本発明に係る第２の実施形態に従った低電力フリップフロップの置換ステップを示すフロー図である。第２の実施形態では、フリップフロップ置換部５０は、複数の低電力フリップフロップから消費電力の最も低いフリップフロップを選択して、このフリップフロップを適用する。第２の実施形態のその他のステップＳ１０〜Ｓ１０４は、第１の実施形態と同様でよい。
【００５４】
ＣＣＫ−Ｆ／Ｆ、ＣＤＭ−Ｆ／Ｆ、通常のフリップフロップは、図９に示すようにスイッチング率に応じて、消費電力の大小関係が変化する。スイッチング率は、フリップフロップ内の値が単位時間において変化する確率である。例えば、フリップフロップＦＦ１としてのＣＣＫ−Ｆ／Ｆは、スイッチング率ｐが０〜ｐ０の範囲において他の２つのフリップフロップよりも消費電力が低い。フリップフロップＦＦ２としてのＣＤＭ−Ｆ／Ｆは、スイッチング率ｐがｐ０〜ｐ１の範囲において他の２つのフリップフロップよりも消費電力が低い。さらに、通常のフリップフロップＦＦ３は、スイッチング率ｐがｐ１以上において他の２つのフリップフロップよりも消費電力が最も低い。フリップフロップ置換部５０は、図９に示すスイッチング率と消費電力との関係を利用して、消費電力の小さいフリップフロップを適用する。スイッチング率と消費電力との関係は、ユーザインタフェース６０を介して外部から獲得すればよい。
【００５５】
図８に示すように、まず、回路情報格納部１０内の回路情報に含まれるフリップフロップに未選択のフリップフロップがある場合（Ｓ４０１のＹＥＳの場合）、未選択フリップフロップの１つを選択する（Ｓ４０２）。当初、いずれのフリップフロップも未選択であるので、いずれか１つのフリップフロップを選択してステップＳ４０３へ進む。
【００５６】
次に、フリップフロップのスイッチング率ｐを参照する（Ｓ４０３）。スイッチング率ｐがｐ０より小さい場合、低電力フリップフロップＦＦ１（ＣＣＫ−Ｆ／Ｆ）を置換候補とする（Ｓ４０５）。スイッチング率ｐがｐ０以上かつｐ１未満の場合、低電力フリップフロップＦＦ２（ＣＤＭ−Ｆ／Ｆ）を置換候補とする（Ｓ４０６）。スイッチング率ｐがｐ１以上の場合、通常のフリップフロップＦＦ３を置換候補とする（Ｓ４０７）。
【００５７】
次に、フリップフロップ置換部５０は、第３のフリップフロップを置換候補のフリップフロップで置換した場合の評価関数ｈ２を計算する（Ｓ４０８）。例えば、評価関数ｈ２は、式５または式６で示したものを使えるほか、設置面積の増加分ΔＳおよびクロック遅延時間の増加分ΔＴＤをパラメータとして、ｈ２＝ｃ６・ΔＳ＋ｃ７・ΔＴＤのように定義してもよく、ｈ２＝ｃ６・ΔＳ・ｃ７・ΔＴＤのように定義してもよい。尚、ｃ６およびｃ７は、それぞれΔＳおよびΔＴＤに対する重み付け係数である。
【００５８】
評価関数ｈ２の値が、指標値よりも小さく、設置面積およびクロック遅延時間が許容範囲内である場合（Ｓ４０９のＹＥＳの場合）、フリップフロップ置換部５０は、第３の選択フリップフロップを、置換候補のフリップフロップに置換する（Ｓ４１０）。評価関数ｈ２の値が、指標値よりも大きく、設置面積およびクロック遅延時間が許容範囲外である場合（Ｓ４０９のＮＯの場合）、フリップフロップ置換部５０は、第３の選択フリップフロップを置換しない（Ｓ４１１）。つまり、第３の選択フリップフロップは、当初設定されたフリップフロップのままとする。
【００５９】
フリップフロップ置換部５０は、フリップフロップを１つずつ選択し、ステップＳ４０３〜Ｓ４１１を各フリップフロップに対して実行する。全フリップフロップの選択が終了し、それぞれのフリップフロップに対して低電力フリップフロップへの置換の要否が決定されると（ステップＳ４０１のＮＯの場合）、ステップＳ１０１へ進む。
【００６０】
第２の実施形態によれば、フリップフロップ置換部５０は、スイッチング率に基づいて複数の低電力フリップフロップおよび／または通常のフリップフロップから選択したフリップフロップで置換することができる。よって、第２の実施形態は、さらに消費電力の低い半導体回路を設計することができる。
【００６１】
尚、フリップフロップのクロック信号がゲーティングされている場合には、クロックゲーティングセルがクロック信号を通過させているとき（イネーブル信号が１のとき）のスイッチング率を対象にすればよい。
【００６２】
また、ステップ４０５〜４０７置換候補のフリップフロップを１つに限定せずに、評価関数ｈ２のパラメータにｚ６を追加して、置換候補のフリップフロップをパラメータ化しても良い。このときには、ステップＳ４０９でフリップフロップを置換すると判定した時に、置換すべき低電力フリップフロップも決定する。
【図面の簡単な説明】
【００６３】
【図１】本発明に係る第１の実施形態に従った半導体回路設計装置の構成を示すブロック図。
【図２】本発明に係る第１の実施形態に従った半導体回路設計方法を示すフロー図。
【図３】ステップＳ１０４のフロー図。
【図４】ステップＳ１０５のフロー図。
【図５】ゲーテッドクロックされていないフリップフロップの構造の一例を示す回路図。
【図６】ゲーテッドクロックされているフリップフロップの構造の一例を示す回路図。
【図７】ＣＣＫ−Ｆ／Ｆの一例を示す回路図。
【図８】本発明に係る第２の実施形態に従った低電力フリップフロップの置換ステップを示すフロー図。
【図９】スイッチング率と消費電力との関係を示すグラフ。
【符号の説明】
【００６４】
１０…回路情報格納部
２０…論理合成／配置処理部
２５…タイミング解析部
３０…終了条件判定部
４０…ゲーテッドクロック構造生成部
５０…フリップフロップ置換部
６０…ユーザインタフェース
ＣＴＲＬＦｊ…制御信号
ｈ１、ｈ２…評価関数
【図１】
2009053989.tif 000003
【図２】
2009053989.tif 000004
【図３】
2009053989.tif 000005
【図４】
2009053989.tif 000006
【図５】
2009053989.tif 000007
【図６】
2009053989.tif 000008
【図７】
2009053989.tif 000009
【図８】
2009053989.tif 000010
【図９】
2009053989.tif 000011