JP4988758B2 - マルチサイクル・クロック・ゲーティングのための方法および装置 - Google Patents

マルチサイクル・クロック・ゲーティングのための方法および装置 Download PDF

Info

Publication number
JP4988758B2
JP4988758B2 JP2008546321A JP2008546321A JP4988758B2 JP 4988758 B2 JP4988758 B2 JP 4988758B2 JP 2008546321 A JP2008546321 A JP 2008546321A JP 2008546321 A JP2008546321 A JP 2008546321A JP 4988758 B2 JP4988758 B2 JP 4988758B2
Authority
JP
Japan
Prior art keywords
gating
group
data latch
latch device
circuit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008546321A
Other languages
English (en)
Other versions
JP2009520287A (ja
Inventor
アイスナー、シンシア
ファーカシュ、モニカ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2009520287A publication Critical patent/JP2009520287A/ja
Application granted granted Critical
Publication of JP4988758B2 publication Critical patent/JP4988758B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Geometry (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Logic Circuits (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Description

本発明は、一般に、回路設計に関し、特に、データ・ラッチ・デバイス(data latching device)のクロック・ゲーティング(clockgating)に関する。
複雑なハードウェア部品は、典型的には、無数のトランジスタから構成されている。回路設計者は、典型的には、その設計プロセスを支援するための計算機援用設計プログラムを使用する。設計者が回路の概念設計を終了すると、多くの最適化を行うことができる。
たとえば、低電力設計の場合、必要ではないときにその他の素子を動作させないために、論理素子を追加することが有用である場合が多い。
次に、低電力動作のために行うことができる変更を例示する図1および図2を参照する。図1は、フリップフロップ12を有する第1の回路10を示している。すべてのフリップフロップのように、フリップフロップ12は、クロック信号CLKによって制御される。クロック信号CLKがハイになると、フリップフロップ12はその入力Iから計算された値Qを出力し、その入力Iは論理回路14の一関数にすることができ、次に論理回路14は複数の入力(a、b、およびcが示されている)の一関数にすることができる。フリップフロップ12は、入力Iが変化したかどうかに関係なく、その計算を実行することになる。回路設計者は、自分の回路の電力消費量を最小限にする方法を決定することになると、フリップフロップの活動を検討することができ、特定の状況の場合に値が変化しないと自分が把握しているものを「ゲーティング」することができる。このようにするために、設計者は、フリップフロップへのクロック入力を切断するための回路を追加することができる。
この変更は図2に示されている。10’と示されているこの回路では、フリップフロップ12は論理回路14が実行する通りに存続しているが、フリップフロップ12へのクロック信号は変化している。GCLKと示されているクロック信号は、クロック信号CLKとイネーブル信号ENの両方がアクティブであるときにのみアクティブになるゲート・クロック信号である。ゲート・クロック信号GCLKはゲート16によって生成される。個々のフリップフロップ上でこのように実行されるクロック・ゲーティングは「密(fine-grained)」クロック・ゲーティングとして知られている。
クロック・ゲーティングのためのもう1つの方法は「粗(coarse-grained)」クロック・ゲーティングとして知られている。粗クロック・ゲーティングでは、同じクロック・ゲーティング関数を使用して多数のフリップフロップが遮断され、その結果、電力使用量の大幅な低減がもたらされる。たとえば、浮動小数点演算ユニットなど、単一ユニットとして動作する回路の各種セクションをクロック・ゲーティングすることができる。
クロック・ゲーティングのためのその他の候補は、いつでも決定しやすいわけではない。その上、回路をいつゲーティングしなければならないかを決定する論理関数は、フリップフロップなどの論理ゲートによって実装される。ゲーティングすべき回路と比較して、論理関数が複雑である(すなわち、遮断される回路より多くのゲートを有する)場合、クロック・ゲーティングはほとんど電力を節約できない。
以下の論文では、自動クロック・ゲーティング方法について論じている。
1997European Design and Test ConferenceにおけるL. Benini、G. De Micheli、E. Macii、M. Poncino、R. Scarsiによる「Symbolic Synthesis of Clock-Gating Logic for Power Optimization ofControl-Oriented Synchronous Networks」
Proc. IFIP Int. Workshop on Logic andArchitecture Synthesis, 1996におけるF. Theeuwen、E. Seelenによる「Power Reduction through Clock Gating by Symbolic Manipulation」
Proc. Twelfth International Conference onVLSI Design, 1999におけるN. Raghavan、V. Akella、S. Bakshiによる「Automatic Insertion of GatedClocks at Register Transfer Level」
IEEE Transactions on Circuits and Systems- II: Analog and Digital Signal Processing, Vol. 44, No. 6, June 1997におけるT.Lang、E. Musoll、J. Cortadellaによる「Individual Flip-Flops with Gated Clocks for Low Power Datapaths」
本発明と見なされる主題は、本明細書の結論部分で詳しく指摘され、明確に権利が主張されている。しかし、本発明は、その目的、特徴、および利点とともに構成および動作方法の両方について、添付図面とともに読んだときに以下の詳細な説明を参照することによって最も良く理解することができる。
例証を単純かつ明瞭にするため、図面に示されている要素は必ずしも一定の縮尺で描かれているわけではないことが分かるであろう。たとえば、いくつかの要素の寸法は明瞭にするために他の要素に対して誇張されている可能性がある。さらに、適切と見なされる場合、対応する要素または類似している要素を示すために、複数の図面間で参照番号が繰り返される可能性もある。
米国特許出願第11/295936号 1997 European Design and Test ConferenceにおけるL.Benini、G. De Micheli、E. Macii、M. Poncino、R. Scarsiによる「Symbolic Synthesis of Clock-Gating Logic for Power Optimization ofControl-Oriented Synchronous Networks」 Proc. IFIP Int. Workshop on Logic and Architecture Synthesis, 1996におけるF. Theeuwen、E. Seelenによる「Power Reduction through Clock Gating by Symbolic Manipulation」 Proc. Twelfth International Conference on VLSI Design, 1999におけるN. Raghavan、V. Akella、S. Bakshiによる「Automatic Insertion of GatedClocks at Register Transfer Level」 IEEE Transactions on Circuits and Systems - II: Analog and DigitalSignal Processing, Vol. 44, No. 6, June 1997におけるT. Lang、E. Musoll、J. Cortadellaによる「Individual Flip-Flops with Gated Clocks for Low Power Datapaths」 CHARME 2003におけるR. Tzoref、M. Matusevich、E. Berger、I. Beerによる「An Optimized Symbolic BoundedModel Checking Engine」 IEEE Transactions on Computers, Vol. C-35(8), 1986におけるR. Bryantによる「Graph-based algorithms forBoolean function manipulation」
本発明の諸態様は、複数サイクル・クロック・ゲーティング機会を検出するための方法およびシステムを提供し、これらは特許請求の範囲に定義されているが、それらについて述べる。
したがって、本発明の好ましい一実施形態により、マルチサイクル・クロック・ゲータ(multi-cycle clock gater)と回路設計アップデータ(circuitdesign updater)とを有するユニットが提供される。マルチサイクル・クロック・ゲータは、回路設計のデータ・ラッチ・デバイスのマルチサイクル・ゲーティング・グループを生成することができる。回路設計アップデータは、選択されたマルチサイクル・ゲーティング・グループで回路設計を更新することができる。
さらに、本発明の好ましい一実施形態により、各ゲーティング・グループは、単一ゲーティング関数に関連付けることができる。各ゲーティング・グループごとに、そのゲーティング・グループの0番目のレベルのデータ・ラッチ・デバイスをそのゲーティング関数でゲーティングすることができ、そのゲーティング・グループのi番目のレベルのデータ・ラッチ・デバイスをそのゲーティング関数のi番目のラッチ・バージョンでゲーティングすることができる。
その上、本発明の好ましい一実施形態により、データ・ラッチ・デバイスはフリップフロップまたはラッチにすることができる。
さらに、本発明の第1の好ましい実施形態により、マルチサイクル・クロック・ゲータは、インジケータ信号発生器(indicator signal generator)と、展開器(unfolder)と、ゲーティング関数決定器(gating function determiner)とを含む。インジケータ信号発生器は、入力回路設計のデータ・ラッチ・デバイスの値が変化しない条件を識別するインジケータ信号を作成することができる。展開器は、K回という複数回、インジケータ信号で回路を展開することができ、ゲーティング関数決定器は、少なくとも展開インジケータ信号から多数のデータ・ラッチ・デバイスに関する複数の候補ゲーティング関数を決定することができる。
さらに、本発明の第1の好ましい実施形態により、ゲーティング関数決定器は、まとめてANDが取られた展開インジケータ信号の二分決定グラフ(BDD:binary decision diagram)Xを構築して無変更値(no changevalue)でXのBDD Yを生成し、各タイム・スタンプkごとに、その入力がk番目のサイクルのものではないBDD Ykの変数を除去するための二分決定グラフ・オペレータを含む。
その上、本発明の第2の好ましい実施形態により、マルチサイクル・クロック・ゲータは、回路レビュア(circuit reviewer)と、ゲーティング関数決定器と、グループ発生器(groupgenerator)とを含む。回路レビュアは、入力サイクルにのみ依存する、その回路のデータ・ラッチ・デバイスのグループGを検出することができる。ゲーティング関数決定器は、j番目のゲーティング関数Fjを共用する、そのグループGのデータ・ラッチ・デバイスのグループHjを決定することができ、グループ発生器は、各グループHjごとに、グループHjの既存のデータ・ラッチ・デバイスから入力を受け取る、その回路のデータ・ラッチ・デバイスを追加することができる。
さらに、本発明の第2の好ましい実施形態により、グループ発生器は、各初期グループHjごとに、そこに含まれるデータ・ラッチ・デバイスをレベル0のデータ・ラッチ・デバイスとして定義するためのレベル0の定義器(definer)と、各i番目のレベルごとに、データ・ラッチ・デバイスがすでにグループHjに存在するレベルiのデータ・ラッチ・デバイスのみに依存する場合、回路のデータ・ラッチ・デバイスをレベルi+1のデータ・ラッチ・デバイスとしてグループHjに追加するための非レベル0の定義器とを含む。
最後に、本発明の好ましい一実施形態により、本発明は、マルチサイクル・クロック・ゲータと回路設計アップデータによって実装される方法を組み込むものである。
以下の詳細な説明では、本発明を完全に理解するために多数の具体的な詳細が示されている。しかし、当業者であれば、これらの具体的な詳細がなくても本発明を実施可能であることを理解するであろう。その他の事例では、本発明を曖昧にしないために、周知の方法、手順、およびコンポーネントについては詳細に記載されていない。
特に他の指定がない限り、「処理(processing)」、「コンピューティング(computing)」、「計算(calculating)」、「決定(determining)」などの用語を使用する考察は、コンピューティング・システムのレジスタまたはメモリあるいはその両方内の電子などの物理量として表現されたデータについて、コンピューティング・システムのメモリ、レジスタ、あるいはその他のこのような情報記憶装置、情報伝送装置、または情報表示装置内の物理量として同様に表現された他のデータへの操作または変換あるいはその両方を行うコンピュータ、コンピューティング・システム、または同様の電子コンピューティング・デバイスのアクションまたはプロセスあるいはその両方を指すことが認識されるであろう。
本明細書に提示されたプロセスおよび表示は、特定のコンピュータまたはその他の装置に本質的に関連するものではない。加えて、本発明の諸実施形態は、特定のプログラミング言語に関連して記載されているわけではない。本明細書に記載されている本発明の教示を実装するために様々なプログラミング言語を使用可能であることは認識されるであろう。
本出願人は、特定のフリップフロップ用のクロック・ゲーティング関数が少なくとも1つの他のフリップフロップ用のクロック・ゲーティング関数としてラッチ形式で使用可能である状況が存在する可能性があることを認識している。これは、おそらくラッチされた同じクロック・ゲーティング関数を使用する複数サイクルのフリップフロップを伴う可能性があるので、「マルチサイクル」クロック・ゲーティングとして知られている可能性がある。
本発明のマルチサイクル・ゲーティング・グループでは、ある設計のセクション全体をまとめてオフにするのではなく、ある回路の種々のデータ・ラッチ・デバイスが異なる時期にオン/オフになることが認識されるであろう。
マルチサイクル・ゲーティング・グループはデータ・ラッチ・デバイスの「データ依存(data dependent)」状態もゲーティングすることができ、データ依存状態はデータ・ラッチ・デバイスの出力が制御入力の値だけでなくデータ入力値に依存するときの状態として定義できることが認識されるであろう。データ独立(data independent)状態は、データ・ラッチ・デバイスの出力がデータ入力に関係なく同じである状態である。たとえば、(if EN=1 then f(A,B,C) else Q)などの単純な入力関数の場合、出力Qの値が変化しないケースとして、1)EN=0の場合と、2)EN=1かつf(A,B,C)=Qの場合という2つのケースが存在する。第1のケースは、入力値A、B、またはCのいずれにも依存せず、したがって、データ独立である。第2のケースは、入力値A、B、またはCに依存するので、データ依存である。
次に、電力低減回路レビュア18を例示している図3を参照する。レビュア18は、新規のマルチサイクル・クロック・ゲータ20と、回路アップデータ(circuit updater)22とを含むことができる。マルチサイクル・クロック・ゲータ20は、入力回路設計Rを検討して、潜在的なマルチサイクル・クロック・ゲーティング機会を検出し、クロック・ゲートを制御するための論理関数を生成することができる。回路アップデータ22は、回路設計者などのユーザと対話して、どの潜在的な機会をユーザが実装する必要があるかを決定することができ、選択されたクロック・ゲートとその関連論理で回路設計Rを更新することができる。その結果は、更新された低電力設計R’になる可能性がある。
マルチサイクル・クロック・ゲータ20は、複数サイクルに使用可能なクロック・ゲーティング論理関数を生成することができ、その結果、オーバヘッドを低減するか、またはより大きい関数(すなわち、より多くのゲートを有するもの)をクロック・ゲーティングに使用できるようにするか、あるいはその両方になる。
マルチサイクル・クロック・ゲータ20は、それぞれの動作に基づいて回路を複数ユニットに分割せずに、回路を全体として見なすことによって動作することができる。次に、クロック・ゲータ20によって実行される方法を例示している図4と、図4の方法の諸ステップを理解する際に有用である図5、図6、および図7とを参照する。
クロック・ゲータ20は初めに設計Rを検討して、そこに含まれるフリップフロップ、ラッチ、またはその他のデータ・ラッチ・デバイスを識別することができる(ステップ24)。図5、図6、および図7にこのように示されているので、残りの考察では「フリップフロップ」という用語を使用する。しかし、本発明はすべてのタイプのデータ・ラッチ・デバイスについて動作することが理解されるであろう。
ステップ25では、クロック・ゲータ20は、どのイネーブル信号がどのフリップフロップを制御するかを決定することができ、それに応じてフリップフロップをグループ化することができる。すべてのフリップフロップをイネーブル信号で制御できるわけではなく、すべてのイネーブル信号をゲーティングに使用できるわけではないことが認識されるであろう。いくつかのイネーブル信号は、その周りにフィードバック・ループを有するフリップフロップを制御することができる。このようなイネーブル信号は、本発明の譲受人に対し2005年12月7日に出願された「Clock Gating Through Data Independent Logic」という米国特許出願第11/295936号に記載されている方法を使用して、異なるイネーブル信号に変換することができる。
(ループ23でチェックされている通り)このように決定された各イネーブル信号の場合、次にクロック・ゲータ20は、現行イネーブル信号によって使用可能になる回路内のフリップフロップまたはいずれのイネーブル信号にも割り当てられていないフリップフロップの値が変化しない条件を識別できる論理を一時的に追加することができる(ステップ26)。たとえば、図5は分析すべき回路30を示している。これは、5つの入力x1、x2、x3、x4、およびx5と、3つのフリップフロップFF−1、FF−2、およびFF−3とを有する。また、これは、組み合わせ論理32−1、32−2、および32−3も有し、論理32−1および32−3はフリップフロップFF−1およびFF−3にフィードし、論理32−3はフリップフロップFF−1およびFF−3の出力を組み合わせてフリップフロップFF−2にフィードする。
図6は、ここで30’と示されている回路であって、それぞれフリップフロップFF−1、FF−2、およびFF−3に関連する一時論理34−1、34−2、および34−3の追加後の回路を示している。この例では、各追加論理34−i(i=1、・・・、Nである場合であって、Nは回路30内のフリップフロップの数である)は、その関連フリップフロップFF−iの入力Aおよび出力Bを受け入れるXORゲートにすることができる。XOR34−iの出力信号は、インジケータ信号piにすることができ、その関連フリップフロップFF−iの入力Aおよび出力Bが異なるときに1という値を有し、それらが同じであるときに0という値を有することができる。したがって、インジケータ信号piは、フリップフロップFF−iの値が変化する場合と変化しない場合を示すことができる。クロック・ゲータ20は、RTL論理記述に追加論理34−i(すなわち、図6の例内のXOR)を追加することができる。
図4に戻ると、ステップ40では、クロック・ゲータ20は、K個のステップ用に回路30’を「展開」することができ、Kは関心のある論理の深さである。たとえば、Kは、チップ入力からチップ出力まで、またはチップのあるセクションへの入力からその出力までの最長パス内のフリップフロップの数として定義できる可能性がある。図5〜図7の例では、2つのレベルのフリップフロップ(第1のレベルのFF−1およびFF−3と、第2のレベルのFF−2)しか存在しないので、Kは2になる可能性がある。
「展開」は、実質的に各時間kごとに回路30’のコピーを作成するプロセスにすることができる。CHARME 2003におけるR. Tzoref、M. Matusevich、E. Berger、I. Beerによる「An Optimized Symbolic BoundedModel Checking Engine」という論文では、記号モデル・チェッカ(symbolic modelchecker)内の展開プロセスを論じている。
図7は、2つのサイクル1および2に関する模範的な回路30’の展開を示している。各入力信号xjは、インジケータ信号piのようにタイム・スタンプを押される。たとえば、図7は、2つのサイクル1および2に関する入力信号x1の2つのコピー(x11、x12)を有し、インジケータ信号p3の2つのコピー(p31、p32)が存在している。
図4に戻ると、次にクロック・ゲータ20は、まとめてANDが取られた展開インジケータ信号pikを表す二分決定グラフ(BDD)Xを構築することができる(ステップ42)。二分決定グラフ(BDD)は、ブール式の全体的にコンパクトな表現であり、一般に、特に複雑なハードウェアの記号モデル・チェックで使用される。
手短に言えば、BDDは、ブール式を表す有向非周期グラフである。次に簡単に参照することができる図8は、式((A & B & C)|(C & D))に関する模範的なBDDを示しており、「&」は「AND」を意味し、「|」は「OR」を意味する。それぞれの円(またはノード)は変数(A、B、C、D)を示し、線は変数がFALSE(左側)またはTRUE(右側)と評価するときに従うべき方向を示している。リーフ・ノード51はブール式の値を表している。
したがって、ステップ42では、クロック・ゲータ20は、修正された回路30’のRTL論理を使用して、各インジケータ信号piを定義するブール式Qiを決定することができる。ブール演算はBDD上で実行することができるので、クロック・ゲータ20は、すべてのブール式Qiとその複数コピーQikについてまとめてANDを取って、BDD Xを生成することができる。
ステップ44では、クロック・ゲータ20は、フリップフロップFF−iが値を変更しないときにインジケータ信号piが生成する値を有する無変更BDDを生成することができる。この実施形態では、インジケータ信号piは、フリップフロップFF−iが値を変更しないときに0という値を生成し、したがって、この実施形態の場合、クロック・ゲータ20は、BDD X=0を作成することによって無変更BDD Yを生成することができる。
0からKまでのkに関するループ50では、クロック・ゲータ20は、k以外のサイクルからの入力xjkに依存する任意のインジケータ信号piを除去することによってk番目のゲーティング・グループを決定することができる。このように実行するために、クロック・ゲータ20は、まずサイクルkで使用するために無変更BDD Yの一時コピーYkを生成することができる(ステップ52)。次にクロック・ゲータ20は、k以外のサイクルからの入力xjnot_kの関数である任意のインジケータ信号pi(not_k)を一時無変更BDD Ykから除去することができる(ステップ54)。残りのインジケータ信号pi(remain)は、k番目の候補ゲーティング・グループYk’を形成する。
クロック・ゲータ20は、望ましくない信号pi(not_k)を除去することができ、次に、BDD Yk’について標準的な圧縮動作を実行することができる。このような動作は、当技術分野では既知のものであり、IEEE Transactions on Computers, Vol. C-35(8), 1986におけるR. Bryantによる「Graph-based algorithms forBoolean function manipulation」という論文に論じられている。
k番目の候補ゲーティング・グループYk’に残されている残りのインジケータ信号pi(remain)は、現行イネーブル信号またはそのラッチ形式あるいはその両方によってゲーティング可能なフリップフロップFF−iを示している。
それぞれのゲーティング関数を実装するために必要な論理に比較して大きいゲーティング・グループは、クロック・ゲーティングのための良好な候補である可能性がある。ゲーティング・グループのサイズは、そこに含まれるフリップフロップまたはその他のデータ・ラッチ・デバイスの数によって定義することができる。
クロック・ゲータ20がループ23および50を終了すると、クロック・ゲータ20は検討のための1組の候補ゲーティング関数とそれぞれのゲーティング・グループとを有することができる。回路アップデータ22はこれらのゲーティング関数とそのゲーティング・グループを回路設計者に提供することができ、次に回路設計者はどれを実装すべきかを選択することができ、その後、回路アップデータ22は選択されたゲーティング関数を回路に追加することができ、それにより、更新された回路R’を生成する。
次に、同じ素子の32個の繰り返しを有する単純な回路を示す図9と、その回路のクロック・ゲート・バージョンを示す図10を簡単に参照する。各素子nは、入力s(n)と、マルチプレクサ60−nと、3つの連結フリップフロップ62A−n、62B−n、および62C−nとを有する。フリップフロップ62A−n、62B−n、および62C−nの出力はa(n)、b(n)、およびo(n)であり、マルチプレクサ60−nへの入力は入力s(n)、信号en、およびフリップフロップ62A−nの出力a(n)である。マルチプレクサ60−nはイネーブル信号enによって使用可能になる。
このような回路の場合、クロック・ゲータ20は、図10に示すように以下のゲーティング関数を生成することができる。
イネーブル信号enで信号a(n)をゲーティングして、ゲート・クロックg0を生成し、
イネーブル信号enのラッチ・バージョンで信号b(n)をゲーティングして、ゲート・クロックg1を生成し、
イネーブル信号enの二重ラッチ・バージョンで出力信号o(n)をゲーティングして、ゲート・クロックg2を生成する。
この例の場合、オーバヘッドは、3つのゲート70−1、70−2、および70−3と、2つの遅延72−1および72−2である。特定のケースでは、これは受け入れられるオーバヘッドである可能性がある。単純な回路同士の間に組み合わせ論理が存在する(したがって、たとえば、b(0)がa(0)−a(4)の関数である可能性がある)場合でも、上記のゲーティングが機能することが認識されるであろう。
次に、マルチサイクル・クロック・ゲーティングのためにどのラッチ・デバイスをクロック・ゲーティングするべきかを決定するために、クロック・ゲータ20によって実行すべき代替方法を例示する図11を参照する。
前の実施形態のように、クロック・ゲータ20は初めに設計Rを検討して、そこに含まれるデータ・ラッチ・デバイスを識別することができる(ステップ24)。この場合も、以下の考察では模範的なフリップフロップを使用し、すべてのタイプのデータ・ラッチ・デバイスが含まれることが認識されるであろう。
本発明の好ましい代替実施形態により、クロック・ゲータ20は、どのフリップフロップが入力のみに依存するかを決定するために設計Rのネットリストをトラバースすることができる(ステップ80)。これはセットGである。
ステップ82では、クロック・ゲータ20は、前のステップで識別された「入力専用(input-only)」フリップフロップGを検討して、どのフリップフロップが同じクロック・ゲーティング関数Fjにより動作するかを決定することができる。クロック・ゲーティング関数Fjは、入力専用フリップフロップGへのイネーブル関数にすぎない可能性がある。代わって、クロック・ゲーティング関数Fjは、上述の通り2005年12月7日に出願された「Clock Gating Through Data Independent Logic」という米国特許出願第11/295936号に記載されているような密クロック・ゲーティングに関する標準的なアルゴリズムを使用して決定することができる。その結果は、j番目のゲーティング関数Fjによってまとめてクロック・ゲーティングすることができるデータ・ラッチ・デバイスのグループHjをリストすることができる。
次にクロック・ゲータ20は、各ゲーティング関数Fjによってゲーティングすべきフリップフロップを決定することができる。jに関するループ84によって制御される各ゲーティング関数Fjについて、クロック・ゲータ20は、ゲーティング・グループHj内のフリップフロップを「レベル0」のフリップフロップとして初期設定することができる(ステップ86)。次にクロック・ゲータ20は、iに関するループ88に入ることができる。ステップ90では、クロック・ゲータ20は、回路のフリップフロップを検討して、ゲーティング・グループHj内のレベルiのフリップフロップのみに依存するものを検出することができる。これらのフリップフロップは、「レベルi+1」のフリップフロップと示すことができ、ゲーティング・グループHjに追加することができる。
ステップ92では、クロック・ゲータ20は、ステップ90で任意の新しいフリップフロップがゲーティング・グループHjに追加されたかどうかをチェックすることができる。追加された場合、クロック・ゲータ20は、ステップ94でiを増分することができ、ステップ92の結果が否定になるまでループ88を続行することができる。
各ゲーティング・グループjの場合、クロック・ゲータ20は、以下のゲーティング関数を生成することができる。
クロック・ゲーティング関数Fjでレベル0のフリップフロップに関する信号をゲーティングし、
クロック・ゲーティング関数Fjのi番目のラッチ・バージョンでi番目のレベルのフリップフロップに関する信号をゲーティングする。
各ゲーティング・グループHjのサイズは、そこに保管されるフリップフロップの数にすることができる。
本発明の特定の特徴が本明細書に例示され記載されているが、当業者であれば、多くの修正、代用、変更、および同等のものが思い浮かぶであろう。したがって、特許請求の範囲は、本発明の真の本質に含まれるこのような修正および変更のすべてを包含するものであることが理解されたい。
本発明の範囲は、本明細書に開示された任意の新規な特徴または特徴の組み合わせを含む。これにより、本出願人は、本出願またはそこから派生する任意のその他の出願の手続き遂行中にこのような特徴または特徴の組み合わせに応じて新しい請求項を作成できることを通知する。特に、特許請求の範囲に関しては、従属請求項からの特徴を独立請求項の特徴と組み合わせることができ、それぞれの独立請求項からの特徴は、特許請求の範囲に列挙された特定の組み合わせだけでなく、任意の適切な方法で組み合わせることができる。
念のために付言すると、説明および特許請求の範囲全体を通して本明細書で使用する「含む(comprising)」という用語は、「のみから構成される(consistingonly of)」という意味として解釈すべきではない。
フリップフロップを含有する回路の概略回路図である。 フリップフロップ上のクロック・ゲーティングを有する図1の回路の概略図である。 電力低減回路レビュアのブロック図である。 本発明の第1の実施形態により動作するクロック・ゲーティング方法の流れ図である。 図4の方法の諸ステップを理解する際に有用な概略回路図である。 図4の方法の諸ステップを理解する際に有用な概略回路図である。 図4の方法の諸ステップを理解する際に有用な概略回路図である。 図4の方法の諸ステップを理解する際に有用な二分決定グラフの概略図である。 同じ回路の32個の繰り返しを有する素子の回路図である。 図9の回路のクロック・ゲート・バージョンの回路図である。 本発明の第2の実施形態により動作するクロック・ゲーティング方法の流れ図である。

Claims (10)

  1. データ・ラッチ・デバイスのマルチサイクル・ゲーティング・グループを生成するためのプログラムであって、コンピュータに、
    入力回路設計のデータ・ラッチ・デバイスの値が変化しないことを識別する論理によってインジケータ信号を作成するステップと、
    K回という複数回、前記インジケータ信号で前記回路を展開するステップと、
    少なくとも前記展開インジケータ信号から前記データ・ラッチ・デバイスに関する複数の候補ゲーティング関数を決定するステップであって、
    前記展開インジケータ信号の複数サイクルについてまとめてANDが取られた前記展開インジケータ信号のサイクルによる決定の値を示す二分決定グラフ(BDD)Xを構築するステップと、
    前記データ・ラッチ・デバイスの値が変化しないときに前記インジケータ信号の生成する値を有するXの無変更BDD Yを生成するステップと、
    各タイム・スタンプkごとに、その入力がk番目のサイクルのものではないBDD Ykの前記インジケータ信号の生成する値を除去するステップと、
    を含む、前記決定するステップと、
    を実行させる前記プログラム。
  2. 各前記ゲーティング・グループが単一ゲーティング関数に関連付けられ、各ゲーティング・グループごとに、前記ゲーティング・グループの0番目の段に対応するレベルのデータ・ラッチ・デバイスを前記ゲーティング関数でゲーティングし、前記ゲーティング・グループのi番目のレベルのデータ・ラッチ・デバイスを前記ゲーティング関数のi番目用でゲーティングするステップを実行させることも含む、請求項1に記載のプログラム。
  3. 前記生成するステップが、
    入力サイクルにのみ依存する、前記回路のデータ・ラッチ・デバイスのグループGを検出するステップと、
    j番目のゲーティング関数Fjを共用する、前記グループGのデータ・ラッチ・デバイスのグループHjを決定するステップと、
    各グループHjごとに、グループHjの既存のデータ・ラッチ・デバイスから入力を受け取る、前記回路のデータ・ラッチ・デバイスを追加するステップと、
    を含む、請求項1ないし2のいずれかに記載のプログラム。
  4. 前記追加するステップが、
    各初期グループHjごとに、そこに含まれるデータ・ラッチ・デバイスをレベル0のデータ・ラッチ・デバイスとして定義するステップと、
    各i番目のレベルごとに、前記データ・ラッチ・デバイスがすでにグループHjに存在するレベルiのデータ・ラッチ・デバイスのみに依存する場合、前記回路のデータ・ラッチ・デバイスをレベルi+1のデータ・ラッチ・デバイスとしてグループHjに追加するステップと、
    を含む、請求項3に記載のプログラム。
  5. データ・ラッチ・デバイスのマルチサイクル・ゲーティング・グループを生成するためのマルチサイクル・クロック・ゲータにおいて、
    入力回路設計のデータ・ラッチ・デバイスの値が変化しないことを識別する論理によってインジケータ信号を作成するためのインジケータ信号発生器と、
    K回という複数回、前記インジケータ信号で前記回路を展開するための展開器と、
    少なくとも前記展開インジケータ信号から前記データ・ラッチ・デバイスに関する複数の候補ゲーティング関数を決定するためのゲーティング関数決定器と、
    を含み、
    前記ゲーティング関数決定器が、
    前記展開インジケータ信号の複数サイクルについてまとめてANDが取られた前記展開インジケータ信号のサイクルによる決定の値を示す二分決定グラフ(BDD)Xを構築して、前記データ・ラッチ・デバイスの値が変化しないときに前記インジケータ信号の生成する値を有するXの無変更BDD Yを生成し、各タイム・スタンプkごとに、その入力がk番目のサイクルのものではないBDD Ykの前記インジケータ信号の生成する値を除去するための二分決定グラフ・オペレータを含む、
    前記マルチサイクル・クロック・ゲータ。
  6. 入力サイクルにのみ依存する、前記回路のデータ・ラッチ・デバイスのグループGを検出するための回路レビュアと、
    j番目のゲーティング関数Fjを共用する、前記グループGのデータ・ラッチ・デバイスのグループHjを決定するためのゲーティング関数決定器と、
    各グループHjごとに、グループHjの既存のデータ・ラッチ・デバイスから入力を受け取る、前記回路のデータ・ラッチ・デバイスを追加するグループ発生器と、
    を含む、請求項5に記載のマルチサイクル・クロック・ゲータ。
  7. 前記グループ発生器が、
    各初期グループHjごとに、そこに含まれるデータ・ラッチ・デバイスを段に対応するレベルが0のデータ・ラッチ・デバイスとして定義するためのレベル0の定義器と、
    各i番目のレベルごとに、前記データ・ラッチ・デバイスがすでにグループHjに存在するレベルiのデータ・ラッチ・デバイスのみに依存する場合、前記回路のデータ・ラッチ・デバイスをレベルi+1のデータ・ラッチ・デバイスとしてグループHjに追加するための非レベル0の定義器と、
    を含む、請求項6に記載のマルチサイクル・クロック・ゲータ。
  8. 各前記ゲーティング・グループが単一ゲーティング関数に関連付けられ、前記データ・ラッチ・デバイスをゲーティングするためのゲーティング関数インプリメンタを含み、各ゲーティング・グループごとに、前記インプリメンタが前記ゲーティング・グループの0番目のレベルのデータ・ラッチ・デバイスを前記ゲーティング関数でゲーティングし、前記ゲーティング・グループのi番目のレベルのデータ・ラッチ・デバイスを前記ゲーティング関数のi番目用でゲーティングする、請求項5ないし7のいずれかに記載のマルチサイクル・クロック・ゲータ。
  9. 前記データ・ラッチ・デバイスがフリップフロップおよびラッチのタイプである、請求項5ないし8のいずれかに記載のマルチサイクル・クロック・ゲータ。
  10. 回路設計のデータ・ラッチ・デバイスのマルチサイクル・ゲーティング・グループを生成するための請求項5ないし9のいずれかに記載のマルチサイクル・クロック・ゲータと、
    選択されたマルチサイクル・ゲーティング・グループで前記回路設計を更新するための回路設計アップデータと、
    を含む装置。
JP2008546321A 2005-12-19 2006-11-16 マルチサイクル・クロック・ゲーティングのための方法および装置 Expired - Fee Related JP4988758B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/311,756 2005-12-19
US11/311,756 US7594200B2 (en) 2005-12-19 2005-12-19 Method for finding multi-cycle clock gating
PCT/EP2006/068582 WO2007071506A1 (en) 2005-12-19 2006-11-16 A method for multi-cycle clock gating

Publications (2)

Publication Number Publication Date
JP2009520287A JP2009520287A (ja) 2009-05-21
JP4988758B2 true JP4988758B2 (ja) 2012-08-01

Family

ID=37880745

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008546321A Expired - Fee Related JP4988758B2 (ja) 2005-12-19 2006-11-16 マルチサイクル・クロック・ゲーティングのための方法および装置

Country Status (9)

Country Link
US (1) US7594200B2 (ja)
EP (1) EP1964266B1 (ja)
JP (1) JP4988758B2 (ja)
KR (1) KR100992025B1 (ja)
CN (1) CN101341656B (ja)
AT (1) ATE425585T1 (ja)
DE (1) DE602006005714D1 (ja)
TW (1) TW200745891A (ja)
WO (1) WO2007071506A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008028930A (ja) * 2006-07-25 2008-02-07 Toshiba Corp 半導体集積回路及びその設計方法
US7930673B2 (en) 2007-05-29 2011-04-19 Magma Design Automation, Inc. Method for automatic clock gating to save power
US7458050B1 (en) 2008-03-21 2008-11-25 International Business Machines Corporation Methods to cluster boolean functions for clock gating
US7884649B1 (en) * 2009-02-27 2011-02-08 Magma Design Automation, Inc. Selection of optimal clock gating elements
US8132144B2 (en) * 2009-06-17 2012-03-06 Oracle America, Inc. Automatic clock-gating insertion and propagation technique
US8166444B2 (en) * 2009-06-23 2012-04-24 International Business Machines Corporations Clock gating using abstraction refinement
JP5368941B2 (ja) * 2009-11-06 2013-12-18 シャープ株式会社 論理回路設計支援方法及び装置
JP5494468B2 (ja) * 2010-12-27 2014-05-14 富士通株式会社 状態検出装置、状態検出方法および状態検出のためのプログラム
KR20140020404A (ko) 2012-08-08 2014-02-19 삼성전자주식회사 집적 회로의 소비 전력 모델링 방법 및 장치
US8890573B2 (en) * 2012-09-07 2014-11-18 Nvidia Corporation Clock gating latch, method of operation thereof and integrated circuit employing the same
US8656326B1 (en) * 2013-02-13 2014-02-18 Atrenta, Inc. Sequential clock gating using net activity and XOR technique on semiconductor designs including already gated pipeline design
US10318695B2 (en) 2013-12-05 2019-06-11 International Business Machines Corporation Phase algebra for virtual clock and mode extraction in hierarchical designs
US9916407B2 (en) 2013-12-05 2018-03-13 International Business Machines Corporation Phase algebra for analysis of hierarchical designs
US10503856B2 (en) 2013-12-05 2019-12-10 International Business Machines Corporation Phase algebra for specifying clocks and modes in hierarchical designs
US9268889B2 (en) 2013-12-05 2016-02-23 International Business Machines Corporation Verification of asynchronous clock domain crossings
US10761559B2 (en) * 2016-12-13 2020-09-01 Qualcomm Incorporated Clock gating enable generation
CN116959519B (zh) * 2023-09-20 2023-12-15 深圳比特微电子科技有限公司 存储设备、包含该存储设备的片上系统和计算装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03131976A (ja) * 1989-10-18 1991-06-05 Hitachi Ltd 論理回路の製造方法
US5980092A (en) 1996-11-19 1999-11-09 Unisys Corporation Method and apparatus for optimizing a gated clock structure using a standard optimization tool
US6247134B1 (en) 1999-03-31 2001-06-12 Synopsys, Inc. Method and system for pipe stage gating within an operating pipelined circuit for power savings
US6434704B1 (en) * 1999-08-16 2002-08-13 International Business Machines Corporation Methods for improving the efficiency of clock gating within low power clock trees
US6785832B2 (en) * 2001-06-22 2004-08-31 International Business Machines Corporation Process independent source synchronous data capture apparatus and method
GB0210625D0 (en) 2002-05-09 2002-06-19 Paradigm Design Systems Control of guard flops
JP2003330568A (ja) 2002-05-09 2003-11-21 Toshiba Corp 半導体集積回路および回路設計システム
JP4083544B2 (ja) * 2002-11-18 2008-04-30 富士通株式会社 マルチサイクルパス解析方法
JP4288066B2 (ja) * 2002-12-27 2009-07-01 エヌエックスピー ビー ヴィ 回路装置
GB0301241D0 (en) * 2003-01-20 2003-02-19 Paradigm Design Systems Ltd Clocked gating on measured performance
GB0301244D0 (en) 2003-01-20 2003-02-19 Paradigm Design Systems Ltd Improved clock gating for synchronous circuits
US7080334B2 (en) * 2003-05-09 2006-07-18 Incentia Design Systems Corp. Automatic clock gating insertion in an IC design
US7032192B2 (en) * 2003-05-22 2006-04-18 Fujitsu Limited Performing latch mapping of sequential circuits
US6844767B2 (en) * 2003-06-18 2005-01-18 Via-Cyrix, Inc. Hierarchical clock gating circuit and method
US6983437B2 (en) * 2003-11-05 2006-01-03 Sun Microsystems, Inc. Timing verification, automated multicycle generation and verification
JP2007164590A (ja) * 2005-12-15 2007-06-28 Fujitsu Ltd 回路設計装置、回路設計プログラム、及び回路設計方法

Also Published As

Publication number Publication date
US20070157130A1 (en) 2007-07-05
US7594200B2 (en) 2009-09-22
TW200745891A (en) 2007-12-16
CN101341656A (zh) 2009-01-07
ATE425585T1 (de) 2009-03-15
KR100992025B1 (ko) 2010-11-05
JP2009520287A (ja) 2009-05-21
WO2007071506A1 (en) 2007-06-28
DE602006005714D1 (de) 2009-04-23
EP1964266A1 (en) 2008-09-03
CN101341656B (zh) 2010-09-22
EP1964266B1 (en) 2009-03-11
KR20080077231A (ko) 2008-08-21

Similar Documents

Publication Publication Date Title
JP4988758B2 (ja) マルチサイクル・クロック・ゲーティングのための方法および装置
Clow et al. A pythonic approach for rapid hardware prototyping and instrumentation
US7934179B2 (en) Systems and methods for logic verification
US20090106719A1 (en) Method and system for asynchronous chip design
US8302041B1 (en) Implementation flow for electronic circuit designs using choice networks
US7849428B2 (en) Formally deriving a minimal clock-gating scheme
US20140165022A1 (en) Relative timing architecture
JP2009535718A (ja) 同期回路設計の表現から非同期回路設計の表現へおよび非同期回路設計の表現から同期回路設計の表現への自動変換を実行するためのシステムおよび方法
US7523029B2 (en) Logic verification and logic cone extraction technique
JP4403187B2 (ja) 設計データ変換プログラム、該プログラムを記録した記録媒体、設計データ変換装置、および設計データ変換方法
JP4200465B2 (ja) 半導体集積回路の設計方法及び設計システム
CN115204076B (zh) 集成电路的逻辑优化方法、装置、电子设备及可读介质
JP2008299464A (ja) 消費電力計算方法、消費電力計算プログラムおよび消費電力計算装置
US10657210B2 (en) Slack time recycling
Ahmadi et al. Symbolic noise analysis approach to computational hardware optimization
Lanneer et al. An object-oriented framework supporting the full high-level synthesis trajectory
Huang On speeding up extended finite state machines using catalyst circuitry
Thillai Rani et al. Recurrent deep neural learning classification algorithm based high level synthesis in VLSI circuit with runtime adaptability
US11657205B2 (en) Construction, modeling, and mapping of multi-output cells
US8245178B2 (en) Method for multi-cycle clock gating
Li et al. Functional vectors generation for RT-level Verilog descriptions based on path enumeration and constraint logic programming
Madorsky et al. VPP-a Verilog HDL simulation and generation library for C++
WO2011007640A1 (ja) 動作合成装置、動作合成方法、ならびに、記録媒体
Daryanavard et al. Design of CAD ASIP for JIT extensible processor: Case study on simulated annealing placer
Phillips AC to register transfer level algorithm using structured circuit templates: A case study with simulated annealing

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090217

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090818

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110419

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110713

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110830

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111122

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120410

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120426

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150511

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees