(57)【特許請求の範囲】
【請求項１】
クロック信号を生成するクロック生成部（A）と、
オン、またはオフの信号を生成するイネーブル生成部（B）と、
前記クロック生成部（A）の出力と前記イネーブル生成部（B）の出力を入力とし、前記イネーブル生成部（B）の出力がオンのときのみ、前記クロック生成部（A）からの入力をスルーするクロック制御部（C）と、
前記イネーブル生成部（B）の出力がオフのとき、出力変化の頻度が０または少ない第１の回路（D）と、
前記イネーブル生成部（B）の出力がオフのとき、出力変化の頻度が多い第２の回路（E）と、
前記第２の回路（E）の出力と前記イネーブル生成部（B）の出力を入力とし、前記イネーブル生成部（B）の出力がオンのときのみ、前記第２の回路（E）からの入力をスルーする入力制御部（F）と、
前記第１の回路（D）の出力と前記入力制御部（F）の出力を入力とする組合せ回路（G）と、
前記組合せ回路（G）の出力を入力とし、前記クロック制御部（C）の出力によって駆動される記憶装置（H）と
を具備することを特徴とする半導体集積回路装置。
【請求項２】
前記入力制御部（F）は、前記第２の回路（E）の出力と前記イネーブル生成部（B）の出力を入力としたＡＮＤゲートから構成されることを特徴とする請求項１記載の半導体集積回路装置。
【請求項３】
前記入力制御部（F）は、前記第２の回路（E）の出力と前記イネーブル生成部（B）の出力を入力としたＯＲゲートから構成されることを特徴とする請求項１記載の半導体集積回路装置。
【請求項４】
前記入力制御部（F）は、前記第２の回路（E）の出力を入力とし、前記イネーブル生成部（B）の出力によって制御されるイネーブル付きラッチ回路から構成され、
前記第１の回路（D）は、前記記憶装置（H）の出力をそのまま、前記組合せ回路（G）に接続するフィードバックループ回路、または前記クロック制御部（C）の出力によって駆動される同期回路から構成されることを特徴とする請求項１記載の半導体集積回路装置。
【請求項５】
前記第１の回路（D）は、この第１の回路（D）のクロックを制御する第２のイネーブル生成部（I）を有し、前記イネーブル生成部（B）と前記第２のイネーブル生成部（I）の出力とが同時にオフとなるときの期間が、ある閾値を超える、または
前記第２の回路（E）は、この第２の回路（E）のクロックを制御する第３のイネーブル生成部（J）を有し、前記イネーブル生成部（B）と前記第３のイネーブル生成部（I）の出力が異なる期間が、ある閾値を超え、前記第２の回路（E）から前記入力制御部（F）への出力線が前記第２の回路（E）内部の他の論理回路に接続されることを特徴とする請求項１乃至４の何れか一項記載の半導体集積回路装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、半導体集積回路装置、及びその回路挿入手法に関する。
【背景技術】
【０００２】
値の変化しないフリップフロップや、出力が他の回路で使用されないフリップフロップに対して、クロック駆動するのは電力の無駄である。この事情を解決する手法として、ゲーティッドクロック手法がよく知られている。
【０００３】
模式的なゲーティッドクロック回路を図１７に示す。図１７に示すように、模式的なゲーティッドクロック回路は、Ｄ型フリップフロップ(以下ＤＦＦ)１００と、ＤＦＦを駆動するクロック線を制御するクロック制御部１０１とから構成される。クロック制御部１０１はイネーブルがオンのときのみ、クロックをＤＦＦ１００に伝達する制御回路である。ＤＦＦの値を更新したい時のみ、イネーブルをオンにすることで低消費電力化が図れる。
【０００４】
従来は、ゲーティッドクロック手法はモジュール単位やクロックドメイン毎にまとめて制御することが多かったが、近年、消費電力を少しでも削減する目的で、クロックをフリップフロップ（以下ＦＦ）毎に細かくゲーティッド制御することが多い。これにはクロックによるバッファやＦＦの駆動電力を削減するのみでなく、ＦＦ後段に存在する組合せ回路の無駄な駆動を止める意味も含まれている。図１８Ａ、及び図１８Ｂに例を示す。図１８Ａには、ＲＴＬ（Ｒｅｇｉｓｔｅｒ Ｔｒａｎｓｆｅｒ Ｌｅｖｅｌ）記述が、図１８Ｂには図１８Ａに示すＲＴＬ記述に従ったゲーティッドクロック回路の例を示す。図１８Ａに示すコードは、イネーブルが１のときのみＤを更新するＲＴＬ記述である。このＲＴＬは、図１８Ｂに示すようなゲーティッドクロック回路で実現できる。回路に含まれる、各ＦＦを図１８Ｂに示すような構成とすることで、ＦＦ毎に細かくゲーティッド制御することができる。このとき、以下に示すような事情が存在する。
【０００５】
図１９を参照して説明する。図１９に示す回路は、ＤＦＦ１ ２００と、ＤＦＦ１ ２００の値を決める組合せ回路１ ２０１、ならびにクロック制御部１ ２０２と、ＤＦＦ２ ２０３とＤＦＦ２ ２０３の値を決める組合せ回路２ ２０４、ならびにクロック制御部２ ２０５と、ＤＦＦ３ ２０６と、ＤＦＦ３の値を決める組合せ回路３ ２０７、ならびにクロック制御部３ ２０８とから構成される。ＤＦＦ１ ２００の出力は組合せ回路２ ２０４、および組合せ回路３ ２０７に接続されている。
【０００６】
今、ＤＦＦ１ ２００とＤＦＦ２ ２０３とを駆動し、ＤＦＦ３ ２０６の駆動を止めることを考える。すなわち、クロック制御部１ ２０２とクロック制御部２ ２０５はイネーブルをオンにし、クロック制御部３ ２０８はイネーブルをオフにする。結果、ＤＦＦ３ ２０６とクロック制御部３ ２０８は動作を停止する。しかし、ＤＦＦ３ ２０６の値を決定する組合せ回路３ ２０７はＤＦＦ１ ２００の変化によって駆動されてしまう。ＤＦＦ３ ２０６が停止しているのに、組合せ回路３ ２０７が駆動されるのは電力の無駄である。
【０００７】
以上のように、複数のクロックドメインが存在する場合、ゲーティッドクロック手法だけでは組合せ回路部で無駄な電力を消費することがある。
【０００８】
ゲーティッドクロック手法に関する参考文献としては非特許文献１がある。
【０００９】
また、組合せ回路は入力が変化したときに、回路が駆動され電力を消費する。したがって、無駄な入力の変化を抑えられれば、組合せ回路における電力消費を削減できる。この事情を解決する手法としてガーディングロジック手法がある。
【００１０】
模式的なガーディングロジック回路を図２０に示す。図２０に示すように、模式的なガーディングロジック回路は、組合せ回路３００と組合せ回路３００への入力線を制御する入力制御回路３０１とから構成される。入力制御回路３０１は、イネーブル（Enable）がオンのときは入力（Inputs）を組合せ回路３００へそのまま伝達し、イネーブルがオフのときは、入力を組合せ回路３００に伝達しない。組合せ回路３００の出力を使うときのみ、入力制御回路３０１のイネーブルをオンにすることで、組合せ回路３００の無駄な駆動を止めることができる。
【００１１】
ガーディングロジック手法の事情として、入力制御回路３０１を挿入することによる、１．遅延の増大、２．回路規模の増大、３．イネーブル信号生成回路の必要、などが挙げられる。遅延の増大は回路の動作速度に、回路規模の増大はＬＳＩの生産コストにそれぞれ大きく影響するため、大きな事情といえる。
【００１２】
ガーディングロジック手法に関する参考文献としては非特許文献２がある。
【非特許文献１】Automatic Insertion of Gated Clocks at Register Transfer Level, N. Raghavan, V. Akella, S. Bakshi, Proceedings of the Twelfth International Conference on VLSI Design, 1999, pp 48-54
【非特許文献２】Guarded Evaluation: Pushing Power Management to Logic Synthesis/Design, V. Tiwari, S. Malik, P. Ashar, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, Vol. 17, No. 10, October 1998
【発明の開示】
【発明が解決しようとする課題】
【００１３】
この発明は、ゲーティッドクロック設計された回路を有しつつも、消費電力が小さい半導体集積回路装置、及びこの半導体集積回路装置を得るための回路挿入手法を提供する。
【課題を解決するための手段】
【００１４】
この発明の第１態様に係る半導体集積回路装置は、クロック信号を生成するクロック生成部（A）と、オン、またはオフの信号を生成するイネーブル生成部（B）と、前記クロック生成部（A）の出力と前記イネーブル生成部（B）の出力を入力とし、前記イネーブル生成部（B）の出力がオンのときのみ、前記クロック生成部(A)からの入力をスルーするクロック制御部(C)と、前記イネーブル生成部(B)の出力がオフのとき、出力変化の頻度が０または少ない第１の回路(D)と、前記イネーブル生成部(B)の出力がオフのとき、出力変化の頻度が多い第２の回路(E)と、前記第２の回路(E)の出力と前記イネーブル生成部(B)の出力を入力とし、前記イネーブル生成部(B)の出力がオンのときのみ、前記第２の回路（E）からの入力をスルーする入力制御部（F）と、前記第１の回路（D）の出力と前記入力制御部（F）の出力を入力とする組合せ回路（G）と、前記組合せ回路（G）の出力を入力とし、前記クロック制御部（C）の出力によって駆動される記憶装置（H）とを具備する。
【００１５】
この発明の第２態様に係る回路挿入手法は、ゲーティッドクロック設計されたゲートネットリストを入力とし（A）、前記ゲートネットリスト内の全てのフリップフロップに対してフリップフロップのデータ入力端子を出発点として回路のツリー構造を上流に向かって探索し（B）、発見された各ゲートから見たドライバゲートとロードゲートの関係を調べることでゲーティッドクロック設計だけでは下流の組合せ回路のスイッチングを止められない箇所を発見し（C）、前記出発点となったフリップフロップのゲーティッドクロックのイネーブル制御線を入力としたガーディングロジックを、前記組合せ回路の前段に挿入する（D）。
【発明の効果】
【００１６】
この発明によれば、ゲーティッドクロック設計された回路を有しつつも、消費電力が小さい半導体集積回路装置、及びこの半導体集積回路装置を得るための回路挿入手法を提供できる。
【発明を実施するための最良の形態】
【００１７】
さて、図１９を参照して説明した事情は、ＤＦＦ１ ２００と組合せ回路３ ２０７との配線上に、クロック制御部３ ２０８のイネーブル信号と同期したガーディングロジックを挿入することで解決できる。つまり、クロック制御部３ ２０８のイネーブル信号がオフのとき、組合せ回路３ ２０８への入力をガーディングロジックで止める。しかしながら、ガーディングロジックを適切な場所へ自動で生成するツールなどは存在しない。
【００１８】
以下、この発明の実施形態を、図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【００１９】
第１〜第８実施形態に係る半導体集積回路装置は、低消費電力化を実現する。
【００２０】
集積回路における消費電力は「Ｗ＝ＣＦＶ２」で与えられる。Ｃは負荷容量、Ｖは電圧、Ｆは周波数または論理遷移数である。論理遷移数を抑える手法として、一般にゲーティッドクロック手法が知られている。本発明は、レジスタにおけるゲーティッドクロックの制御線を用いて、そのレジスタ入力を生成する組合せ回路の入力を０または１に固定することで、ゲーティッドクロック期間の組合せ回路の論理遷移を完全に防ぐことができる。「Ｗ＝ＣＦＶ２」の“Ｆ”を削減することで低消費電力化を実現する。
【００２１】
（第１実施形態）
図１は、この発明の第１実施形態に係る半導体集積回路装置の一例を示すブロック図である。
【００２２】
第１実施形態は、クロック生成部４００と、オン／オフを出力するイネーブル（Enable）生成部４０１と、クロック生成部４００の出力、及びイネーブル生成部４０１の出力を入力とするクロック制御部４０２と、イネーブル生成部４０１の出力がオフのときに出力変化の頻度が少ない回路４０３と、イネーブル生成部４０１の出力がオフのときに出力変化の頻度が多い回路４０４と、イネーブル生成部４０１の出力、及び回路４０４の出力を入力とする入力制御部４０５と、回路４０３の出力、及び入力制御部４０５の出力を入力とする組み合わせ回路４０６と、組み合わせ回路４０６の出力を入力とし、クロック制御部４０２から出力されたクロックによって駆動されるフリップフロップ（以下ＦＦと略す）４０７と、を含む。なお、回路４０３、及び回路４０４はそれぞれ１個以上存在しても良い。
【００２３】
各部について詳しく説明する。
【００２４】
クロック制御部４０２はイネーブル生成部４０１の出力がオンのときのみ、クロック生成部４００で発生したクロック信号をＦＦ４０７に伝える。イネーブル生成部４０１の出力がオフのとき、クロック制御部４０２の出力は固定値となり、ＦＦ４０７は駆動されない。
【００２５】
入力制御部４０５はイネーブル生成部４０１の出力がオンのとき、回路４０４の出力を組合せ回路４０６にそのまま伝達する。イネーブル生成部４０１の出力がオフのとき、入力制御部４０５の出力は固定値となり、回路４０４の出力が変化しても、組合せ回路４０６を駆動しない。
【００２６】
回路４０３はイネーブル生成部４０１の出力がオフのとき、出力変化の頻度が０または少ない回路である。したがって、ＦＦ毎に細かく制御を行うようなゲーティッドクロック回路において、ＦＦ４０７が止まっているときの組合せ回路の無駄な駆動は少ないといえる。
【００２７】
一方、回路４０４はイネーブル生成部４０１の出力がオフのとき、出力変化の頻度が多い回路である。しかし、入力制御部４０５の働きにより、イネーブル生成部４０１の出力がオフの期間は、出力の変化は組合せ回路４０６まで伝達しない。したがって、ＦＦ毎に細かく制御を行うようなゲーティッドクロック回路において、ＦＦ４０７が止まっているときの組合せ回路の無駄な駆動を完全に止めることができる。
【００２８】
本実施形態は、ゲーティッドクロック手法とガーディングロジック手法を効果的に組み合わせることで初めて、各手法を単純に実施した場合には得られない効果を実現している。これについて説明する。
【００２９】
ゲーティッドクロック手法と本実施形態との比較を行う。一般的に論理回路には空間的局所性があり、前後の処理や制御は関連性が高い。したがってＦＦ毎に細かく制御を行うようなゲーティッドクロック回路において、あるＦＦがゲーティッドクロック制御で停止しているとき、前後のＦＦもゲーティッドクロック制御で停止している確率が高いと言える。したがって、回路４０３のような回路が大半を占める。しかしながら、回路４０４のような回路も存在するため、ゲーティッドクロック手法だけでは組合せ回路の無駄な駆動を止めることはできない。そこで無駄な駆動を止めることができない箇所にのみガーディングロジック手法を用いる。結果、ゲーティッドクロック手法に比べて電力削減効果の高い回路を実現できる。
【００３０】
一方、ガーディングロジック手法のみで組合せ回路の駆動を止めることを考えてみると、組合せ回路の入り口全てにガーディングロジックを置く必要があるため、回路規模の増加や遅延の増加が無視できない問題になる。本実施形態では、先にも述べたとおり入力の大半がゲーティッドロジック制御でとめられるので、組合せ回路の全ての入り口を止める必要がない。回路４０４のような出力変化の頻度が多い入力だけをガーディングロジックを用いて止めればよい。これは、単純なガーディングロジック手法に比べて、回路規模の増加、及び遅延の増加に対して効率が良い実現方法である。
【００３１】
以上のように本実施形態は、ゲーティッドクロックだけのときより電力削減効果が高い。なぜならば、ゲーティッドクロックだけでは止められなかったスイッチングが止められるからである。一方、ガーディングロジックだけのときよりも回路規模が少ない。なぜならば、ガーディングロジックが必要ない箇所については削減できるからである。ガーディングロジックだけゲーティッドクロック手法およびガーディングロジック手法をそれぞれ実施した場合に比べて、高い効果を実現できる。
【００３２】
（第２実施形態）
図２は、この発明の第２実施形態に係る半導体集積回路装置の一例を示すブロック図である。
【００３３】
第２実施形態は、第１実施形態の入力制御部４０５を具体的に示した第１の例である。
【００３４】
入力制御部４０５は、例えば、ＡＮＤゲートで構成できる(参照符号５００)。各外部入力線はビット線毎に制御線とのＡＮＤゲートを経由した後、組合せ回路４０６に接続される。
【００３５】
制御線が０のときオフ動作となり、ＡＮＤゲートは入力制御部５００の出力を０に固定する。制御線が１のときオン動作となり、入力制御部５００の出力は外部入力になる。
【００３６】
このように入力制御部５００は、ＡＮＤゲート一つで実現可能であるため、クリティカルパスへの影響はゲート１段分の遅延に抑えることができる。
【００３７】
なお、ド・モルガンの法則を用いることで、ＯＲゲート一つで実現することも可能であることを明記しておく。
【００３８】
集積回路において、ＡＮＤゲートもＯＲゲートも基本素子であるため、回路面積やパス遅延は小さい。
【００３９】
（第３実施形態）
図３は、この発明の第３実施形態に係る半導体集積回路装置の一例を示すブロック図である。
【００４０】
第３実施形態は、第１実施形態の入力制御部４０５を具体的に示した第２の例である。
【００４１】
入力制御部４０５は、例えば、イネーブル付きラッチ回路で構成できる(参照符号６００)。イネーブル付きラッチ回路は制御線により制御される。各外部入力線はそれぞれラッチ回路を経由した後、組合せ回路４０６に接続される。
【００４２】
制御線が０のときオフ動作となり、イネーブル付きラッチ回路は入力制御部６００の出力を直前の外部入力値に固定する。制御線が１のときオン動作となり、入力制御部６００の出力は外部入力になる。
【００４３】
第３実施形態の効果を示すために、第２実施形態と比較する。第２実施形態の場合、ＡＮＤゲートで入力制御部５００の出力（値）を０に固定する。このとき組合せ回路４０６の入力は外部入力から０にスイッチする。ゆえに、入力制御部５００による値固定時に組合せ回路４０６でスイッチングが発生するため電力を消費する。
【００４４】
一方、第３実施形態の場合、イネーブル付きラッチ回路は入力制御部６００の出力を、外部入力値で固定する。このため、値固定時に組合せ回路４０６でスイッチングが発生しない。従って、第３実施形態は、第２実施形態に比較して値固定時の電力消費を削減できる。
【００４５】
（第４実施形態）
図４は、この発明の第４実施形態に係る半導体集積回路装置の一例を示すブロック図である。
【００４６】
第４実施形態は、第１実施形態の、イネーブル生成部４０１の出力がオフのとき出力変化の頻度が０または少ない回路４０３を具体的に示した第１の例である。
【００４７】
図４中の破線枠７００は、イネーブル生成部４０１の出力がオフのとき出力変化の頻度が０の回路の例を示す。本例では、ＦＦ７０１の出力をそのまま組合せ回路７０２に入力する回路構造(フィードバックループ線)となっている。イネーブル生成部４０１の出力がオフのとき、ＦＦ７０１は駆動されないので、出力変化の頻度が０となる。
【００４８】
このように自己フィードバックループとなるような回路構造には、入力制御部４０５を挿入する必要がない。
【００４９】
第４実施形態の代表的な回路として「カウンタ回路」や「状態ステートマシン回路」が挙げられる。
【００５０】
カウンタ回路は、自身のレジスタ値を＋１することで、レジスタ値を更新する回路である。ＲＴＬ（Ｒｅｇｉｓｔｅｒ Ｔｒａｎｓｆｅｒ Ｌｅｖｅｌ）記述では、
always @(posedge CLOCK){A <= A+1;}
と記述される。
【００５１】
状態ステートマシン回路は、ある現状態（レジスタ値）から、次状態決定回路（組合せ回路）によって次状態のレジスタ値を算出して、現状態を更新する回路である。ＲＴＬ記述では、
assign NextState = function(CurrentState); ＜＜＜組合せ回路
always @(posedge CLOCK){CurrentState <= NextState;}
と記述される。
【００５２】
これらの回路構造は、ＲＴＬ記述等から推定可能である。このため、カウンタ回路や、状態ステートマシン回路においては、図４に示すフィードバックループ線７００の特定が容易である。フィードバックループ線７００には入力制御部４０５を入れる必要がない。逆の見方をすれば、入力制御部４０５は、フィードバックループ線７００以外に対して入れれば良い。
【００５３】
このように、特に、フィードバックループ線７００は、集積回路内で容易に発見可能である。しかも、入力制御部４０５は、フィードバックループ線７００以外に対して挿入すれば良いから、半導体チップへの回路実装も容易である。
【００５４】
（第５実施形態）
図５は、この発明の第５実施形態に係る半導体集積回路装置の一例を示すブロック図である。
【００５５】
第５実施形態は、第１実施形態の、イネーブル生成部４０１の出力がオフのとき出力変化の頻度が０または少ない回路４０３を具体的に示した第２の例である。
【００５６】
図５中の破線枠８００は、イネーブル生成部４０１の出力がオフのとき出力変化の頻度が０の回路の例を示す。ＦＦ８０１とＦＦ８０２とはクロック制御部８０３を共有する。したがって、ＦＦ８０２の駆動が停止しているとき、ＦＦ８０１の出力も停止するので、出力変化の頻度が０となる。したがって、組合せ回路８０４は駆動されない。
【００５７】
このようにクロック制御部８０３を共有するような回路８００からの出力には、入力制御部４０５を挿入する必要がない。
【００５８】
なお、第５実施形態のような回路構造においても、第４実施形態と同様に容易に発見可能であるから、半導体チップへの回路実装も容易である。
【００５９】
（第６実施形態）
図６は、この発明の第６実施形態に係る半導体集積回路装置の一例を示すブロック図である。
【００６０】
第６実施形態は、第１実施形態の、イネーブル生成部４０１の出力がオフのとき出力変化の頻度が０または少ない回路４０３を具体的に示した第３の例である。
【００６１】
図６中の破線枠９００は、イネーブル生成部９００の出力がオフのとき出力変化の頻度が少ない回路の例を示す。ＦＦ９０１を制御するイネーブル生成部２ ９０２が生成するイネーブル信号のタイミングと、ＦＦ９０３を制御するイネーブル生成部１ ９０４が生成するイネーブル信号のタイミングとが近いとき、ＦＦ９０１の出力変化の頻度は少なくなる。
【００６２】
例えば、図６の左下の破線枠中に示すように、信号Ｅｎａｂｌｅ１がオフの期間中、信号Ｅｎａｂｌｅ２もほぼオフであるならば、ＦＦ９０３の駆動が止まっているとき、ＦＦ９０１の駆動もほぼ止まる。このため、回路９００は、出力変化が少ない回路といえる。
【００６３】
このように信号Ｅｎａｂｌｅがオフの期間がほぼ重なる場合、入力制御部４０５を挿入する必要がない。
【００６４】
このような回路構造は人手であれば発見可能である。また、ＲＴＬシミュレーションなどを実施することで、イネーブル生成部１ ９０４の動作と、イネーブル生成部２ ９０２の動作とを比較し、オフの期間の重なり具合が、ある閾値を超えるか否かで判定することもできる。例えば、５０％以上重なる場合は入力制御部４０５を挿入しない、などで判定できる。
【００６５】
（第７実施形態）
図７は、この発明の第７実施形態に係る半導体集積回路装置の一例を示すブロック図である。
【００６６】
第７実施形態は、第１実施形態の、イネーブル生成部４０１の出力がオフのときに出力変化の頻度が多い回路４０４を具体的に示した第１の例である。
【００６７】
図７に示す破線枠１０００は、イネーブル生成部４０１の出力がオフのとき出力変化の頻度が多い回路を示す。図７に示すＦＦ１００１の出力Ｄは回路１００２に接続される。さらに、ＦＦ１００１の出力Ｄは組合せ回路１００３に入力制御部１００５を介して接続される。このとき、ＦＦ１００４のイネーブルがオフであったとしても、回路１００２がＦＦ１００１の出力を利用するので、ＦＦ１００１のイネーブル生成部４０１´はオンとなる。結果、ＦＦ１００４のイネーブルがオフのときのＦＦ１００１の出力変化の頻度は多くなる。組合せ回路１００３の無駄な駆動を避けるために、入力制御部１００５を挿入する。
【００６８】
このように、ＦＦ出力を他の回路にも接続しており、かつイネーブル生成部の論理が大きく異なる場合、入力制御部１００５を挿入する。
【００６９】
このような回路構造は人手であれば発見可能である。また、ＲＴＬシミュレーションなどを実施することで、イネーブル生成部４０１の動作とイネーブル生成部４０１´の動作とを比較し、オフの期間の異なり具合が、ある閾値を超えるかで判定することもできる。例えば、５０％以上異なる場合は入力制御部１００５を挿入しない、などで判定できる。
【００７０】
（第８実施形態）
図８は、この発明の第８実施形態に係る半導体集積回路装置の一例を示すブロック図である。
【００７１】
第８実施形態は、第１実施形態の、イネーブル生成部４０１の出力がオフのときに出力変化の頻度が多い回路４０４を具体的に示した第２の例である。
【００７２】
図８に示す破線枠１１００は、イネーブル生成部４０１の出力がオフのときに出力変化の頻度が多い回路を示す。第８実施形態は、第７実施形態とほぼ同じ構成であるが、ＦＦ１１０１の出力は組合せ回路１１０６を経由して回路１１０２と、組合せ回路１１０３とに接続される。このとき、ＦＦ１１０４のイネーブルがオフであったとしても、回路１１０２がＦＦ１１０１の出力を組合せ回路１１０６経由で利用する。このため、ＦＦ１１０１のイネーブル生成部４０１´はオンとなる。結果、ＦＦ１１０４のイネーブルがオフのときのＦＦ１１０１の出力変化の頻度は多くなる。組合せ回路１１０３の無駄な駆動を避けるために、組合せ回路１１０６と組合せ回路１１０３との間に、入力制御部１１０５を挿入する。
【００７３】
このように、ＦＦ出力を組合せ回路経由で他の回路にも接続しており、かつイネーブル生成部の論理が大きく異なる場合、入力制御部１１０５を挿入する。
【００７４】
このような回路構造は人手であれば発見可能である。また、ＲＴＬシミュレーションなどを実施することで、イネーブル生成部４０１の動作とイネーブル生成部４０１´の動作とを比較し、オフの期間の異なり具合が、ある閾値を超えるかで判定することもできる。例えば、５０％以上異なる場合は入力制御部１００５を挿入しない、などで判定できる。
【００７５】
第９〜第１３実施形態に係る半導体集積回路装置は、論理回路における論理合成後のゲートネットリストに対して低消費電力削減回路を追加する装置に関する。
【００７６】
ＦＦ毎に細かくゲーティッドクロックを行う場合、ＦＦの停止中にも関わらず、ＦＦの値を決定する組合せ回路の入力が変化することで、組合せ回路が無駄に駆動される場合がある。この事情を解決する手法としてガーディングロジック手法が存在するが、単純にガーディングロジック手法を適用すると回路規模が大きく増大する。
【００７７】
以下の実施形態は、ＦＦ毎に細かくゲーティッドクロック設計されたゲートネットリストに対して、ガーディングロジックを効果的に挿入する手法を提供するものである。具体的にはゲートネットの接続構造を解析し、必要となる箇所のみにガーディングロジックを挿入する。
【００７８】
（第９実施形態）
図９は、この発明の第９実施形態に係る回路挿入手法の一例を示す流れ図である。
【００７９】
第９実施形態は基本的に、入力はゲートネットリストとし、各ＦＦのデータ入力端子を出発点として回路のツリー構造を上流に向かって探索し、ゲーティッドクロックだけでは無駄な駆動が止められない組合せ回路の前段にガーディングロジックを挿入する。
【００８０】
ここで、ガーディングロジックは、第２、第３実施形態において説明したように、ＡＮＤゲート、またはＯＲゲート、またはイネーブル付きラッチ回路で実現できる。ガーディングロジックの制御は、出発点となるＦＦのクロック制御用のイネーブル線によってオン／オフ動作を行う。
【００８１】
図９に示す流れ図に従った動作を説明する前に、まず言葉の定義を行う。
【００８２】
図１０Ａ〜図１０Ｄは、ゲート間の関係、及びガーディングロジックの挿入例を示す回路図である。
【００８３】
図１０Ａ〜図１０Ｄに示す回路において、左側を上流、右側を下流と定義する。
【００８４】
あるゲートを駆動する上流に存在するゲートのことをドライバゲート、あるゲートが駆動する下流に存在するゲートのことをロードゲートと呼ぶ。図１０Ａにおいて、ゲートＡのドライバゲートはゲートＣとＤである。ゲートＣのロードゲートはゲートＡとＢである。
【００８５】
ドライバゲートとロードゲートの関係を定義する。図１０Ｂの関係を考える。ゲートＢはゲートＡのドライバゲートであり、ゲートＢのロードゲートはゲートＡのみである。このような関係を、“ゲートＡから見た１対１の関係”と呼ぶ。
【００８６】
一方、図１０Ｃの関係を考える。ゲートＢは、ゲートＡのドライバゲートであるが、ゲートＢのロードゲートはゲートＡ、Ｃ、Ｄが存在する。このような関係を、“ゲートＡから見た１対多の関係”と呼ぶ。
【００８７】
図９に示す流れ図に従った動作について説明する。
【００８８】
ゲーティッドクロック設計されたゲートネットリストを入力とし、ネットリスト内の各ＦＦに対してＦＦのデータ入力端子を出発点として、回路のツリー構造を上流に向かって探索する（手順１２００）。
【００８９】
次に、上記ツリー構造の中から発見されたゲートから見たドライバゲートとロードゲートの関係を調べる(手順１２０１)。
【００９０】
発見されたゲートから見て１対多の関係の場合を考える。このとき、ゲーティッドクロック手法だけでは下流の組合せ回路のスイッチングを止められない構成であるならば、ガーディングロジックを組合せ回路の前段に挿入する（手順１２０２）。
【００９１】
例えば、図１０Ｄにおいて、ゲートＡから見てゲートＢは１対多の関係である。今、ＦＦがゲーティッドクロックにより停止しているとすると、ゲートＡがスイッチングするのは無駄である。しかし、ゲートＣやＤがゲートＢの出力を利用するならば、ゲートＢはスイッチングすることになる。したがって、ゲートＢの出力線を、ガーディングロジックを経由してゲートＡに接続させる。なお、ゲートＣ、ＤにはゲートＢの出力をそのまま繋げておく。このときのガーディングロジックの制御線は探索の出発点であるＦＦのクロックイネーブル線を利用する。処理終了後、次のゲートへ移り（手順１２０３）、再びドライバゲートとロードゲートの関係を調べる。
【００９２】
なお、発見されたゲートから見て１対１の関係の場合は何もしないで次のゲートに移る。なぜならば、より上流のゲートでガーディングロジック制御ができるからである。例えば、図１０ＢにおいてゲートＡのスイッチングを止める必要があるとしても、ゲートＡとゲートＢとの間にガーディングロジックを置く必要はない。ゲートＢの前段にガーディングロジックを置くことで対応できるからである。
【００９３】
このように、より上流のゲートでガーディングロジックを挿入することで、論理遷移を根元から止めることができる。
【００９４】
以上の処理により、各ＦＦがゲーティッドクロックによって停止している期間中に、違うクロックドメインのＦＦが動作することによる組合せ回路の無駄なスイッチングが発生しうる箇所を、ガーディングロジックによって止めることができる。
【００９５】
以下の実施形態では、“どういう条件”で“どこにガーディングロジックを挿入するか”を、具体例を交えて説明することにする。
【００９６】
（第１０実施形態）
図１１は、この発明の第１０実施形態に係る回路挿入手法の一例を示す流れ図である。
【００９７】
第１０実施形態は、第９実施形態のガーディングロジックの挿入条件をより具体的に示した例である。
【００９８】
図１１中の手順１３００に示すように、ドライバゲートとロードゲートが１対多の関係にあるとき、ドライバゲートがロードするロードゲートのうち、“ロードゲートの出力端子の下流経路に存在する全てのＦＦが探索開始ＦＦと同一のクロックドメインによって駆動される”ようなロードゲートが１つ以上（ただし全てではない。全ての場合については後述する）存在した場合、ドライバゲートの出力端子をガーディングロジックに接続し、その出力を前述のロードゲートの入力に接続することで、ガーディングロジックを挿入する。
【００９９】
図１２Ａに具体的な回路例を示す。図１２Ａにおいて、ゲートＡに注目してドライバゲートとロードゲートの関係を調べる。ゲートＡから見てゲートＢはドライバゲートであり、ゲートＢがロードするゲートはゲートＡ以外にゲートＣ、Ｄが存在するので、１対多の関係にある。
【０１００】
このとき、ドライバゲートの出力端子から下流に向かってゲートＣ、Ｄを経由する経路を調べる。調べた結果、ロードゲートＣの出力端子の下流経路に存在する全てのＦＦは、探索開始ＦＦと同一のクロックドメインによって駆動されている。一方、ロードゲートＤの出力端子の下流経路に存在するＦＦには、探索開始ＦＦとは異なるクロックドメインによって駆動されている。このとき、ゲートＡとゲートＣはまとめてガーディングロジックによって制御できる(図１２Ｂ参照)。ロードゲートＤについてはゲートＢの出力線をそのまま繋いでおく。
【０１０１】
ロードゲートの下流経路に存在するＦＦのクロック制御を確認することにより、異なるクロックドメインの動作を妨げることがない。さらに、同一クロックドメインについてはガーディングロジックを一つにまとめることで、回路規模の増加を抑えることができる。
【０１０２】
次に、論理回路の２つめの例を説明する。
【０１０３】
第１０実施形態において、全てのロードゲートが、“ロードゲートの出力端子の下流経路に存在する全てのＦＦが探索開始ＦＦと同一のクロックドメインによって駆動されている”場合について説明する。
【０１０４】
なぜ全てではないのか？について説明する。
【０１０５】
ドライバゲートとロードゲートとが１対多の関係にあるとき、ドライバゲートがロードする全てのロードゲートの出力端子から繋がる下流経路に存在するＦＦが、全て同一のクロックによって駆動されている場合、ガーディングロジックを挿入する必要がない。
【０１０６】
図１３に具体的な回路例を示す。今、ゲートＡに注目してドライバゲートとロードゲートとの関係を調べる。ゲートＡから見てゲートＢはドライバゲートであり、ゲートＢがロードするゲートはゲートＡ以外にゲートＣ、Ｄが存在するので、１対多の関係にある。このとき、ドライバゲートの出力端子から下流に向かってゲートＣ、Ｄを経由する経路を調べると、全て同一のクロックによって駆動されているＦＦに繋がっている。
【０１０７】
このような構成の場合、１対１の関係に帰着できる。なぜならば、ゲートＢの出力を利用する下流端のＦＦは、同じタイミングでクロックがオフとなるため、ゲートＢの前段にガーディングロジックを置いても問題がない。これは第９実施形態の“１対１の場合”と等価とみなせる。
【０１０８】
（第１１実施形態）
図１４は、この発明の第１１実施形態に係る回路挿入手法の一例を示す流れ図である。
【０１０９】
第１１実施形態は、第９実施形態のガーディングロジックの挿入条件をより具体的に示した例である。
【０１１０】
図１４中の手順１４００に示すように、ドライバゲートがＦＦであった場合、探索開始ＦＦのクロックドメインと、ドライバゲートであるＦＦのクロックドメインとを比較し、異なっているときのみドライバゲートの出力ポートとロードゲートの間にガーディングロジックを挿入する。
【０１１１】
なお、クロックドメインが同じである場合、ゲーティッドクロックで値を止めることが可能である。したがって、ガーディングロジックは必要なく、回路も増加しない。
【０１１２】
（第１２実施形態）
図１５は、この発明の第１２実施形態に係る回路挿入手法の一例を示す流れ図である。
【０１１３】
第１２実施形態は、第９〜第１１実施形態の挿入条件に、さらに、条件を追加するものである。
【０１１４】
第９〜第１１実施形態において説明した条件に従ってガーディングロジックを挿入する際に、図１５中の手順１５００に示すように、探索開始ＦＦからドライバゲートまでのゲート段数があるしきい値（例えば、３０段など）を超えたときのみ、ガーディングロジックを挿入する。ここでしきい値はユーザーが指定できる変数である。
【０１１５】
ガーディングロジックを挿入しても、ゲート１段分のスイッチングしか止められない場合などは、ガーディングロジックのオーバーヘッドが無視できなくなる事情がある。ある程度のゲート段数をまとめて止めることで、ガーディングロジックの挿入オーバーヘッドに対して、十分に効果を補償できるようになる。なお、フローチャート中ではゲート段数と書いているが、ゲートの代わりにブラックボックスが入っていても良い。その場合は、ブラックボックス内の平均ゲート段数などで、ゲート段数のカウントを行うことで対応できる。
【０１１６】
（第１３実施形態）
図１６は、この発明の第１３実施形態に係る回路挿入手法の一例を示す流れ図である。
【０１１７】
第１３実施形態は、第９〜第１２実施形態の挿入条件に、さらに、条件を追加するものである。
【０１１８】
一般的に、論理合成を行う際にＦＦ間には遅延制約がかけられる。この遅延制約が満たせなくなると、回路の動作が保証できなくなる問題がある。そこで、図１６中の手順１６００に示すように、ガーディングロジックを挿入する際に、遅延制約を満たせる場合のみガーディングロジックを挿入する。これにより、回路の動作を保証できる。
【０１１９】
第１〜第７実施形態に係る半導体集積回路装置を実現するに当たり、効率よく機械的にガーディングロジックを挿入する装置が、例えば、第８〜第１３実施形態に係る回路挿入法をアルゴリズムとして利用する回路設計支援装置である。
【０１２０】
なお、第８〜第１３実施形態に係る回路挿入法では、作業者の手作業でガーディングロジックを挿入する場合に比較すると、無駄な回路挿入が存在することがあり得る。具体的な一例としては、図６の左下破線枠内に示すように、イネーブル期間がほぼ重なっているような箇所にもガーディングロジックが挿入されることがある。
【０１２１】
簡単には、図１に示す回路４０３が“出力変化の頻度が０または少ない回路”であるのに対して、第８〜第１３実施形態に係る回路挿入法は“出力変化の頻度が０の回路”に対してのみ、ガーディングロジックを挿入しないことになる。つまり、第８〜第１３実施形態に係る回路挿入法は“出力変化の頻度が少ない回路”に対しても、ガーディングロジックで止める。“出力変化の頻度が少ない回路”に対してもガーディングロジックで止めることは、集積回路の動作としては、何等問題は無いのでこのままでもよい。
【０１２２】
しかしながら、無駄な回路挿入を極力回避したい場合には、第８〜第１３実施形態に係る回路挿入法において、“出力変化の頻度が０または少ない回路”に対して、ガーディングロジックを挿入しないように変更すれば良い。“出力変化の頻度が少ない回路”を発見するには、例えば、回路シミュレーションを併用して回路の出力変化の頻度を調べれば良い。さらに、出力変化の頻度にはしきい値を持たせ、出力変化の頻度がしきい値以下、もしくはしきい値未満の場合には、“出力変化の頻度が少ない回路”と判断すれば良い。出力変化の頻度がしきい値以下、もしくはしきい値未満の場合にはガーディングロジックを挿入しない、あるいは挿入されたガーディングロジックを取り外すようにすれば良い。このように第８〜第１３実施形態を変更することにより、第８〜第１３実施形態に係る回路挿入法から得られる利点、即ち、ゲーティッドクロック設計された回路を有しつつも消費電力を小さくできる、という利点に加えて、無駄な回路挿入を抑制できる、という利点を得ることができる。無駄な回路挿入を抑制できることは、消費電力をさらに低減できる他、生産コストの低減、あるいは高集積化に有利、といった利点も合わせて得ることができる。
【０１２３】
さらに、上記実施形態は以下の態様を含む。
【０１２４】
（１）クロック信号を生成するクロック生成部（A）と、
オン／オフの信号を生成するイネーブル生成部（B）と、
（A）と（B）の出力を入力とし、
（B）の出力がONのときのみ（A）からの入力をスルーするクロック制御部（C）と、
（B）の出力がOFFのとき出力変化の頻度が０または少ない回路（D）と、
（B）の出力がOFFのとき出力変化の頻度が多い回路（E）と、
（E）の出力と（B）の出力を入力とし、
（B）の出力がONのときのみ（E）からの入力をスルーする入力制御部（F）と、
（D）の出力と（F）の出力を入力とする組合せ回路（G）と、
（G）の出力を入力とし、
（C）の出力によって駆動される記憶装置（H）と、
から構成される論理回路。
【０１２５】
（１）の態様に係る論理回路によれば、クロック制御部でクロックをとめたときに、値が頻繁に変わる組合せ回路への入力については、入力制御部によって値を固定し、値がほとんど変わらない組合せ回路への入力については、そのまま組合せ回路に接続する。一般的に論理回路には空間的局所性があり、前後のクロック制御は近いことから、入力制御部を必要とする入力線の数は、入力制御部が必要ない入力線の数より少なくなる。結果、回路規模の増大を抑えつつ、組合せ回路で発生する無駄な電力消費を効果的に削減することができる。
【０１２６】
（２）（１）の態様に係る論理回路において、入力制御部（F）は、回路（E）の出力とイネーブル生成部（B）の出力を入力としたＡＮＤゲートまたはＯＲゲートから構成される論理回路。
【０１２７】
（２）の態様に係る論理回路によれば、ＡＮＤゲートやＯＲゲートは単純な回路構造で、値の固定、及び値のスルーを効果的に実現できる。結果、回路規模の増大やパス遅延の増大を抑えることができる。
【０１２８】
（３）（１）の態様に係る論理回路において、入力制御部（F）は、回路（E）の出力を入力とし、イネーブル生成部（B）の出力によって制御されるイネーブル付きラッチ回路から構成される論理回路。
【０１２９】
（３）の態様に係る論理回路によれば、イネーブル付きラッチ回路は、イネーブルがオフになったときの値を保持、及び固定する回路素子である。値を固定したときには組合せ回路への出力が変化しないため、値固定時の電力消費を０にすることができる。（２）の態様に係る論理回路では、AND／ORゲートでは値を固定したときに組合せ回路への出力が０固定、または１固定になるため、値固定時に組合せ回路で駆動電力が発生することがある。
【０１３０】
（４）（１）の態様に係る論理回路において、回路（D）は、記憶装置（H）の出力をそのまま組合せ回路（G）に接続するフィードバックループ回路、またはクロック制御部（C）の出力によって駆動される同期回路から構成される論理回路。
【０１３１】
（４）の態様に係る論理回路によれば、フィードバックループ回路も、クロック制御部を共有している回路も、イネーブル生成部がオフのときに回路（D）の出力変化が０となる。したがって、入力制御部を入れなくても組合せ回路部の駆動は０となる。回路規模の増大を招くことなく確実に低消費電力化を実現できる。
【０１３２】
（５）（１）の態様に係る論理回路において、回路（D）は、この回路（D）のクロックを制御する第２のイネーブル生成部（I）を有し、イネーブル生成部（B）と第２のイネーブル生成部（I）の出力が同時にオフとなるときの期間が、ある閾値を超える論理回路。
【０１３３】
（５）の態様に係る論理回路によれば、イネーブル生成部がオフの期間中、第２のイネーブル生成部がほぼオフであるならば、イネーブル生成部がオフのときに回路（D）の出力変化も少なくなる。したがって、入力制御部を入れなくても組合せ回路部の駆動は少なくなる。また、回路規模の増大を招くことなく確実に低消費電力化を実現できる。イネーブル生成部がオフの期間と第２のイネーブル生成部がオフの期間が一致するほど低消費電力化の効果は高くなる。
【０１３４】
（６）（１）の態様に係る論理回路において、回路（E）は、この回路（E）のクロックを制御する第３のイネーブル生成部（J）を有し、イネーブル生成部（B）と第２のイネーブル生成部（I）の出力が異なる期間が、ある閾値を超えること、さらに、回路（E）から入力制御部（F）への出力線が回路（E）内部の他の論理回路に接続される論理回路。
【０１３５】
（６）の態様に係る論理回路によれば、イネーブル生成部がオフの期間中に、回路（E）の出力を他の回路が利用するため、回路（E）の出力変化が多くなる。しかし、入力制御部の働きによって組合せ回路の無駄な駆動を止めることができるため、低消費電力化を実現できる。
【０１３６】
なお、イネーブル生成部がオフの期間中、第３のイネーブル生成部もオフであるなら、（４）の態様に係る論理回路においても同様である。
【０１３７】
（７）ゲーティッドクロック設計されたゲートネットリストを入力とし（A）、
ゲートネットリスト内の全てのフリップフロップに対してフリップフロップのデータ入力端子を出発点として回路のツリー構造を上流に向かって探索し（B）、
前記ツリー構造の中から発見された各ゲートから見たドライバゲートとロードゲートの関係を調べることでゲーティッドクロック設計だけでは下流の組合せ回路のスイッチングを止められない箇所を発見し（C）、
出発点となったフリップフロップのゲーティッドクロックのイネーブル制御線を入力としたガーディングロジックを前記組合せ回路の前段に挿入する（D）
以上の手順を含む回路挿入手法。
【０１３８】
（７）の態様に係る回路挿入手法によれば、ゲーティッドクロック設計だけでは下流の組合せ回路のスイッチングを止められない箇所にのみ、ガーディングロジック挿入されることで、回路面積の増大を抑えつつ低消費電力化が実現できる。
【０１３９】
（８）（７）の態様に係る回路挿入手法において、手順（C）が、発見された各ゲートから見たドライバゲートとロードゲートの関係が１対多の場合（E）、かつ、ドライバゲートがロードするロードゲートのうち、“ロードゲートの出力端子の下流経路に存在する全てのＦＦが探索開始ＦＦと同一のクロックドメインによって駆動されるロードゲートが１つ以上（ただし全てではない）存在した場合（F）、
手順（D）は、ドライバゲートの出力端子をガーディングロジックに接続し、その出力を前述のロードゲート（F）の入力に接続する。
【０１４０】
（８）の態様に係る回路挿入手法によれば、ロードゲートの下流経路に存在するＦＦのクロック制御を確認することにより、異なるクロックドメインの動作を妨げることがない。さらに、同一クロックドメインについてはガーディングロジックを一つにまとめることで、回路規模の増加を抑えることができる。
【０１４１】
（９）（７）の態様に係る回路挿入手法において、手順（C）が、発見された各ゲートから見たドライバゲートがフリップフロップだった場合（G）、かつ、前記請求項１の出発点となったフリップフロップ（B）のクロックドメインと、前記ドライバゲートであるフリップフロップ（G）のクロックドメインが異なっている場合、
手順（D）は、前記ドライバゲートであるフリップフロップ（G）の出力ポートとロードゲートの間にガーディングロジックを挿入する。
【０１４２】
（９）の態様に係る回路挿入手法によれば、出発点のフリップフロップのクロックドメインと、ドライバゲートであるフリップフロップのクロックドメインが異なるということは、出発点のフリップフロップが停止している期間中に、ドライバゲートであるフリップフロップが動作する可能性がありうる。ガーディングロジックを挿入することで、組合せ回路の無駄な駆動を止めることができる。
【０１４３】
（１０）（７）の態様に係る回路挿入手法において、手順（C）に、出発点となったフリップフロップ（B）からドライバゲートまでのゲート段数がある閾値を超えたときのみ、という条件を付加する。
【０１４４】
（１０）の態様に係る回路挿入手法によれば、ガーディングロジックを挿入しても、ゲート1段分のスイッチングしか止められない場合などは、ガーディングロジックのオーバーヘッドが無視できなくなる問題がある。ある程度のゲート段数をまとめて止めることで、ガーディングロジックの挿入オーバーヘッドに対して、十分に効果を補償できるようになる。
【０１４５】
（１１）（７）の態様に係る回路挿入手法において、手順（C）に、フリップフロップ間の遅延制約が満たせる場合のみ、という条件を付加する。
【０１４６】
（１１）の態様に係る回路挿入手法によれば、一般的に、論理合成を行う際にＦＦ間には遅延制約がかけられる。この遅延制約が満たせなくなると、回路の動作が保証できなくなる問題がある。そこで、ガーディングロジックを挿入する際に、遅延制約を満たせる場合のみガーディングロジックを挿入する。これにより、回路の動作を保証できる。
【０１４７】
また、各実施形態は種々の段階の発明を含んでおり、各実施形態において開示した複数の構成要件の適宜な組み合わせにより、種々の段階の発明を抽出することが可能である。
【図面の簡単な説明】
【０１４８】
【図１】図１はこの発明の第１実施形態に係る半導体集積回路装置の一例を示すブロック図
【図２】図２はこの発明の第２実施形態に係る半導体集積回路装置の一例を示すブロック図
【図３】図３はこの発明の第３実施形態に係る半導体集積回路装置の一例を示すブロック図
【図４】図４はこの発明の第４実施形態に係る半導体集積回路装置の一例を示すブロック図
【図５】図５はこの発明の第５実施形態に係る半導体集積回路装置の一例を示すブロック図
【図６】図６はこの発明の第６実施形態に係る半導体集積回路装置の一例を示すブロック図
【図７】図７はこの発明の第７実施形態に係る半導体集積回路装置の一例を示すブロック図
【図８】図８はこの発明の第８実施形態に係る半導体集積回路装置の一例を示すブロック図
【図９】図９はこの発明の第９実施形態に係る回路挿入手法の一例を示す流れ図
【図１０】図１０Ａ〜図１０Ｄはゲート間の関係、及びガーディングロジックの挿入例を示す回路図
【図１１】図１１はこの発明の第１０実施形態に係る回路挿入手法の一例を示す流れ図
【図１２】図１２Ａ及び図１２Ｂは第１０実施形態に従って設計された回路の例を示す回路図
【図１３】図１３は第１０実施形態に従って設計された回路の例を示す回路図
【図１４】図１４はこの発明の第１１実施形態に係る回路挿入手法の一例を示す流れ図
【図１５】図１５はこの発明の第１２実施形態に係る回路挿入手法の一例を示す流れ図
【図１６】図１６はこの発明の第１３実施形態に係る回路挿入手法の一例を示す流れ図
【図１７】図１７は模式的なゲーティッドクロック回路を示す回路図
【図１８】図１８ＡはＲＴＬ記述を示す図、図１８Ｂは図１８Ａに示すＲＴＬ記述に従ったゲーティッドクロック回路の例を示す図
【図１９】図１９はゲーティッドクロック手法の事情を説明するための図
【図２０】図２０は模式的なガーディングロジック回路を示す回路図
【符号の説明】
【０１４９】
４００…クロック生成部、４０１…イネーブル生成部、４０２…クロック制御部、４０３…イネーブル生成部の出力がオフのときに出力変化の頻度が０または少ない回路、４０４…イネーブル生成部の出力がオフのときに出力変化の頻度が多い回路、４０５…入力制御部、４０６…組合せ回路、４０７…記憶装置（フリップフロップ）。
【図１】
0004738216.tif 000002
【図２】
0004738216.tif 000003
【図３】
0004738216.tif 000004
【図４】
0004738216.tif 000005
【図５】
0004738216.tif 000006
【図６】
0004738216.tif 000007
【図７】
0004738216.tif 000008
【図８】
0004738216.tif 000009
【図９】
0004738216.tif 000010
【図１０】
0004738216.tif 000011
【図１１】
0004738216.tif 000012
【図１２】
0004738216.tif 000013
【図１３】
0004738216.tif 000014
【図１４】
0004738216.tif 000015
【図１５】
0004738216.tif 000016
【図１６】
0004738216.tif 000017
【図１７】
0004738216.tif 000018
【図１８】
0004738216.tif 000019
【図１９】
0004738216.tif 000020
【図２０】
0004738216.tif 000021