(57)【要約】      （修正有）【課題】クロックバッファを効果的にゲーティングできるように、クロックゲーティング回路を適切に設定できる半導体集積回路の設計装置を提供する。【解決手段】クロック信号により動作する論理回路に対して、当該クロック信号の供給を制御するクロックゲーティング回路を設定する機能を有し、コンピュータシステムにより構成される半導体集積回路の設計装置であって、検出機能と、算出機能と、分割機能と、設定機能とを実現するプロセッサを備えた構成である。検出機能は、クロックゲーティング回路に対して、イネーブル信号を出力するイネーブルの論理組み合わせを検出する。算出機能は、論理組み合わせの各論理要素の遅延時間を算出する。分割機能は、遅延時間に基づいて、論理組み合わせを各論理要素に分割する。設定機能は、分割された各論理要素のそれぞれに合わせて、クロックゲーティング回路を設定する。【選択図】図２
2019148995.tif 000002
【特許請求の範囲】
【請求項１】
クロック信号により動作する論理回路に対して、当該クロック信号の供給を制御するクロックゲーティング回路を設定する機能を有し、コンピュータシステムにより構成される半導体集積回路の設計装置であって、
クロックゲーティング回路に対して、イネーブル信号を出力するイネーブルの論理組み合わせを検出する検出手段と、
前記論理組み合わせの各論理要素の遅延時間を算出する算出手段と、
前記遅延時間に基づいて、前記論理組み合わせを前記各論理要素に分割する分割手段と、
分割された前記各論理要素のそれぞれに合わせて、クロックゲーティング回路を設定する設定手段と、
を具備する半導体集積回路の設計装置。
【請求項２】
前記検出手段は、
前記論理組み合わせから出力される前記イネーブル信号を抽出し、
前記論理組み合わせの各論理要素として、それぞれの出力が前記イネーブル信号を出力するアンドゲートの各入力となる構成の前記論理組み合わせを検出する、請求項１に記載の半導体集積回路の設計装置。
【請求項３】
前記検出手段は、
前記論理組み合わせから出力される前記イネーブル信号を抽出し、
前記論理組み合わせの各論理要素として、それぞれの入力が同一であり、それぞれの出力が前記イネーブル信号を出力するアンドゲートの各入力となる構成の前記論理組み合わせを検出する、請求項１に記載の半導体集積回路の設計装置。
【請求項４】
前記分割手段は、
前記遅延時間に基づいて、前記論理組み合わせから、相対的に遅延の大きさに従って前記各論理要素に分割する、請求項１から３のいずれか１項に記載の半導体集積回路の設計装置。
【請求項５】
前記論理回路において、前記クロック信号を生成する手段が階層的に最上位側である場合に、
前記設定手段は、
分割された前記各論理要素の中で、前記遅延時間に基づいて相対的に遅延の小さい論理要素からのイネーブル信号を入力とするクロックゲーティング回路を、前記論理回路の上位側に設定する請求項１から４のいずれか１項に記載の半導体集積回路の設計装置。
【請求項６】
前記論理回路はクロック信号の入出力を行うクロックバッファを含み、
前記設定手段は、
分割された前記各論理要素の中で、前記遅延時間に基づいて相対的に遅延の小さい論理要素からのイネーブル信号を入力とするクロックゲーティング回路を、前記クロックバッファの上流側に設定する、請求項１から４のいずれか１項に記載の半導体集積回路の設計装置。
【請求項７】
前記設定手段は、
分割された前記各論理要素の中で、前記遅延時間に基づいて相対的に遅延の大きい論理要素からのイネーブル信号を入力とするクロックゲーティング回路を、前記クロックバッファの下流側に設定する、請求項６に記載の半導体集積回路の設計装置。
【請求項８】
クロック信号により動作する論理回路に対して、当該クロック信号の供給を制御するクロックゲーティング回路を設定する機能を有し、コンピュータシステムにより実現される半導体集積回路の設計方法であって、
クロックゲーティング回路に対して、イネーブル信号を出力するイネーブルの論理組み合わせを検出する処理と、
前記論理組み合わせの各論理要素の遅延時間を算出する処理と、
前記遅延時間に基づいて、前記論理組み合わせを前記各論理要素に分割する処理と、
分割された前記各論理要素のそれぞれに合わせて、クロックゲーティング回路を設定する処理と、
を実行する半導体集積回路の設計方法。
【請求項９】
前記検出する処理は、
前記論理組み合わせから出力される前記イネーブル信号を抽出し、
前記論理組み合わせの各論理要素として、それぞれの出力が前記イネーブル信号を出力するアンドゲートの各入力となる構成の前記論理組み合わせを検出する、請求項８に記載の半導体集積回路の設計方法。
【請求項１０】
前記検出する処理は、
前記論理組み合わせから出力される前記イネーブル信号を抽出し、
前記論理組み合わせの各論理要素として、それぞれの入力が同一であり、それぞれの出力が前記イネーブル信号を出力するアンドゲートの各入力となる構成の前記論理組み合わせを検出する、請求項８に記載の半導体集積回路の設計方法。
【請求項１１】
前記分割する処理は、
前記遅延時間に基づいて、前記論理組み合わせから、相対的に遅延の大きさに従って前記各論理要素に分割する、請求項８から１０のいずれか１項に記載の半導体集積回路の設計方法。
【請求項１２】
前記論理回路において、前記クロック信号を生成する手段が階層的に最上位側である場合に、
前記設定する処理は、
分割された前記各論理要素の中で、前記遅延時間に基づいて相対的に遅延の小さい論理要素からのイネーブル信号を入力とするクロックゲーティング回路を、前記論理回路の上位側に設定する請求項８から１１のいずれか１項に記載の半導体集積回路の設計方法。
【請求項１３】
前記論理回路はクロック信号の入出力を行うクロックバッファを含み、
前記設定する処理は、
分割された前記各論理要素の中で、前記遅延時間に基づいて相対的に遅延の小さい論理要素からのイネーブル信号を入力とするクロックゲーティング回路を、前記クロックバッファの上流側に設定する、請求項８から１１のいずれか１項に記載の半導体集積回路の設計方法。
【請求項１４】
前記設定する処理は、
分割された前記各論理要素の中で、前記遅延時間に基づいて相対的に遅延の大きい論理要素からのイネーブル信号を入力とするクロックゲーティング回路を、前記クロックバッファの下流側に設定する、請求項１３に記載の半導体集積回路の設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、半導体集積回路の設計装置及び設計方法に関する。
【背景技術】
【０００２】
一般的に、ＬＳＩ（large scale integrated circuit）等の半導体集積回路の設計では、消費電力削減のために、クロックゲーティング（clock gating）回路を設定（挿入）する手法が採用されている。クロックゲーティング回路は、イネーブル信号に応じて、例えば、論理回路の構成要素であるフリップフロップ（flip-flop）に対して、非動作時にはクロック信号の供給を停止するように制御する。
【０００３】
通常では、半導体集積回路の設計では、ＥＤＡ（electronic design automation）ツールや論理合成ツール等を使用する設計装置が使用されて、イネーブルの論理によるイネーブルのタイミングを考慮して、クロックゲーティング回路の設定が行われる。このため、クロックゲーティング回路はクロックバッファの下流側に設定される可能性がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５３６８９４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
半導体集積回路の設計において、有効な消費電力削減を実現するためには、クロックバッファをイネーブルの論理により効果的にゲーティングできるように、クロックゲーティング回路をクロックバッファの上流側に設定（挿入）することが望ましい。
【０００６】
そこで、目的は、半導体集積回路の設計において、クロックバッファを効果的にゲーティングできるように、クロックゲーティング回路を適切に設定できる半導体集積回路の設計装置を提供することにある。
【課題を解決するための手段】
【０００７】
本実施形態の半導体集積回路の設計装置、クロック信号により動作する論理回路に対して、当該クロック信号の供給を制御するクロックゲーティング回路を設定する機能を有し、コンピュータシステムにより構成される半導体集積回路の設計装置であって、検出手段と、算出手段と、分割手段と、設定手段とを備えた構成である。前記検出手段は、前記クロックゲーティング回路に対して、イネーブル信号を出力するイネーブルの論理組み合わせを検出する。前記算出手段は、前記論理組み合わせの各論理要素の遅延時間を算出する。前記分割手段は、前記遅延時間に基づいて、前記論理組み合わせを前記各論理要素に分割する。前記設定手段は、分割された前記各論理要素のそれぞれに合わせて、前記クロックゲーティング回路を設定する。
【図面の簡単な説明】
【０００８】
【図１】実施形態に関する半導体集積回路の設計装置の構成を説明するためのブロック図。
【図２】実施形態に関する設計装置の処理を説明するためのフローチャート。
【図３】実施形態に関する論理回路データの一例を示す図。
【図４】実施形態に関する設計方法による設計結果の一例を示す図。
【図５】実施形態の変形例に関する論理回路データの一例を示す図。
【図６】実施形態の変形例に関する設計方法による設計結果の一例を示す図。
【発明を実施するための形態】
【０００９】
以下図面を参照して、実施形態を説明する。
［設計装置の構成］
図１は、本実施形態に関する半導体集積回路の設計装置の構成を説明するためのブロック図である。図１に示すように、本設計装置１は、コンピュータシステムにより構成されており、プロセッサ（ＣＰＵ）１０と、メモリ１１と、ストレージ１２と、入力装置１３と、表示装置１４と、インターフェース１５と、を有する構成である。
【００１０】
ＣＰＵ１０は、メモリ１１から読み出したプログラムにより、後述するように、半導体集積回路の設計において、本実施形態に関するクロックゲーティング（clock gating）回路の設定処理を実行する。メモリ１１は、ＣＰＵ１０が実行するプログラムや各種データを保持する、ＲＡＭ（random access memory）やフラッシュメモリ等を含む。
【００１１】
ストレージ１２は外部記憶装置であり、半導体集積回路の自動設計用ソフトウェアを保存している。自動設計用ソフトウェアには、例えばＥＤＡ（electronic design automation）ツールや、論理合成ツール等が含まれる。本実施形態では、ＣＰＵ１０が実行するプログラムは、例えば論理合成ツールに含まれており、ストレージ１２からメモリ１１にロードされる。
【００１２】
入力装置１３は、オペレータの操作により、データやコマンドを入力する。表示装置１４は、ＣＰＵ１０の制御により、論理回路データや設計結果をディスプレイに表示する。インターフェース１５は、ＬＡＮ（local area network）等の通信系を介して、ソフトウェアやデータを入出力する。
［設計装置の動作］
図２は、本設計装置１の処理を説明するためのフローチャートである。本実施形態は、ＬＳＩ等の半導体集積回路の自動設計において、消費電力削減のためのクロックゲーティング回路（ＣＧ回路）の設定（挿入）処理に関する。
【００１３】
図２に示すように、ＣＰＵ１０は、ＣＧ回路を挿入する、設計対象の論理回路データを入力すると（Ｓ１）、ＣＧ回路の設定処理を実行する。図３は、設計対象の論理回路データの一例を示す図である。
【００１４】
図３に示すように、当該論理回路データは、例えば、階層的に最上位（先端）のクロック生成回路３０と、最下位（末端）の論理回路ブロック３１を有する論理回路を示すデータである。クロック生成回路３０は、ＰＬＬ（phase-locked loop）を含み、クロック信号（CLK）を生成する。論理回路ブロック３１は、当該クロック信号（CLK）により動作するフリップフロップ（flip-flop:Ｆ／Ｆ）３２を含む。
【００１５】
クロック生成回路３０により生成されるクロック信号（CLK）は、複数のクロックバッファ３３,３４により、論理回路ブロック３１に伝送される。クロックバッファ３３,３４は、クロック信号の分配や、クロックスキュー（clock skew）調整等の機能を有する。ここで、論理回路ブロック３１に含まれるＦ／Ｆ３２は、ＣＧ回路３５により、クロックバッファ３４から出力されるクロック信号（CLK）の供給を制御される。
【００１６】
ＣＧ回路３５は、イネーブルの論理組み合わせ３６により生成されるイネーブル信号１００によるイネーブルのタイミングに応じてゲーティングし、Ｆ／Ｆ３２に対するクロック信号（CLK）の供給を制御する。通常では、ＣＧ回路３５は、アンド（ＡＮＤ）ゲート及びラッチ回路を含み、統合クロックゲーティング回路（Integrated Clock gating：ＩＣＧ）とも呼ばれる。
【００１７】
イネーブルの論理組み合わせ３６は、例えば、複数（ここでは２個）のイネーブル論理（Ａ，Ｂ）を構成するイネーブル論理回路３７Ａ，３７Ｂ、及びアンド（ＡＮＤ）ゲート３８を含む。各イネーブル論理回路３７Ａ，３７Ｂは、異なるフリップフロップ（Ｆ／Ｆ）３９Ａ，３９Ｂからの出力を各入力とし、各出力が同一のアンドゲート３８の入力となる構成である。
【００１８】
図２に戻って、ＣＰＵ１０は、図３に示すような論理回路データを入力すると（Ｓ１）、ＣＧ回路３５のイネーブル信号１００を抽出する（Ｓ２）。さらに、ＣＰＵ１０は、抽出したイネーブル信号１００に基づいて、ＣＧ回路３５のイネーブルの論理の組み合わせ３６に含まれる各イネーブル論理回路３７Ａ，３７Ｂを検出する（Ｓ３）。
【００１９】
次に、ＣＰＵ１０は、検出した各イネーブル論理回路３７Ａ，３７Ｂの遅延時間を算出する（Ｓ４）。ＣＰＵ１０は、算出した遅延時間に基づいて、例えば相対的に遅延が小さいイネーブル論理回路３７Ａと、相対的に遅延が大きいイネーブル論理回路３７Ｂとを識別する。
【００２０】
ここで、図４は、図３の論理回路データに対して、ＣＧ回路の設定処理を実行した後の設計結果の一例を示す図である。図４に示すように、ＣＰＵ１０は、イネーブルの論理の組み合わせ３６から、遅延が小さいイネーブル論理回路３７Ａと、遅延が大きいイネーブル論理回路３７Ｂとを分割する（Ｓ５）。
【００２１】
ＣＰＵ１０は、分割したイネーブル論理回路３７Ａ，３７Ｂに合わせて、ＣＧ回路の設定処理を実行する（Ｓ６）。具体的には、図４に示すように、ＣＰＵ１０は、末端の論理回路ブロック３１の近傍に挿入されるＣＧ回路３５と、クロックバッファ３４の上流側（入力側）に挿入されるＣＧ回路４０を設定する。ここでは、ＣＧ回路４０は、階層的に上位側に設定される。また、ＣＧ回路３５は、クロックバッファ３４の下流側（出力側）で、階層的に下位側に設定される。
【００２２】
末端のＣＧ回路３５は、遅延が大きいイネーブル論理回路３７Ｂからのイネーブル信号１００Ｂによるイネーブルのタイミングに応じて、クロックバッファ３４からのクロック信号（CLK）の供給を制御する。即ち、ＣＧ回路３５は、イネーブル論理が「１」であればクロック信号（CLK）をＦ／Ｆ３２に供給し、イネーブル論理が「０」であればクロック信号（CLK）の供給を停止する。
【００２３】
従って、末端の論理回路ブロック３１の非動作時には、クロック信号（CLK）の供給が停止されるため、Ｆ／Ｆ３２を含む論理回路ブロック３１における消費電力を削減できることになる。
【００２４】
一方、クロックバッファ３４の上流側に挿入されるＣＧ回路４０は、遅延が小さいイネーブル論理回路３７Ａからのイネーブル信号１００Ａによるイネーブルのタイミングに応じて、クロックバッファ３３からのクロック信号（CLK）の供給を制御する。即ち、ＣＧ回路４０は、イネーブル論理が「１」であればクロック信号（CLK）をクロックバッファ３４に供給し、イネーブル論理が「０」であればクロック信号（CLK）の供給を停止する。
【００２５】
従って、イネーブル論理回路３７Ａのイネーブル論理が「０」の場合に、末端のＣＧ回路３５によるクロック信号（CLK）の供給が停止する前に、クロックバッファ３４に対するゲーティングにより、クロック信号（CLK）の供給が停止される。これにより、クロックバッファ３４の消費電力を削減できることになる。
【００２６】
以上のように本実施形態によれば、設計対象の論理回路において、イネーブルの論理組み合わせを、遅延が小さいイネーブルの論理と、遅延が大きいイネーブルの論理とに分割し、それぞれのイネーブル信号を入力とする各ＣＧ回路を設定（挿入）することができる。
【００２７】
即ち、図４に示すように、設計対象の論理回路において階層的に末端の論理回路ブロック３１の近傍に設定するＣＧ回路３５と共に、クロックバッファ３４の上流側にＣＧ回路４０を設定することができる。ＣＧ回路４０は、遅延が小さいイネーブルの論理（論理回路３７Ａ）のイネーブルのタイミング（イネーブル信号１００Ａ）に応じて、クロックバッファ３４をゲーティングする。これにより、クロックバッファ３４は、イネーブル信号１００Ａの論理が「０」の場合に、クロック信号（CLK）の供給が停止される。従って、末端のＦ／Ｆ３２の消費電力の削減に加えて、クロックバッファ３４の消費電力を削減できるため、消費電力の効果的な削減を実現することができる。
【００２８】
換言すれば、本実施形態によれば、設計対象の論理回路において、前述したように、分割したイネーブルの論理のそれぞれに対応する各ＣＧ回路を設定（挿入）することにより、ゲーティングされるクロックバッファを増大することが可能となる。このため、結果的に、クロック信号（CLK）の供給を停止できるクロックバッファを増大できるため、効果的な消費電力の削減を実現することができる。
［変形例］
図５及び図６は、本実施形態の変形例を説明するための図である。図５は、本変形例の設計対象の論理回路データの一例を示す図である。図６は、本変形例の設計結果の一例を示す図である。
【００２９】
なお、本変形例においても、半導体集積回路の設計装置の構成は、図１に示す本実施形態の場合と同様であるため、図示を含む説明を省略する。また、設計装置の動作及び効果も、図２に示す本実施形態の場合と同様であるため、図示を含む説明を省略する。
【００３０】
図５に示すように、本変形例の設計対象の論理回路では、前述したように、ＣＧ回路３５は、イネーブルの論理組み合わせ３６により生成されるイネーブル信号１００によるイネーブルのタイミングに応じてゲーティングされる。これにより、ＣＧ回路３５は、Ｆ／Ｆ３２に対するクロック信号（CLK）の供給を制御する。
【００３１】
イネーブルの論理組み合わせ３６は、複数のイネーブル論理（Ａ，Ｂ）を構成するイネーブル論理回路３７Ａ，３７Ｂ、及びアンド（ＡＮＤ）ゲート３８を含む。ここで、各イネーブル論理回路３７Ａ，３７Ｂは、同一のフリップフロップ（Ｆ／Ｆ）３９からの出力を各入力とし、各出力が同一のアンドゲート３８の入力となる構成である。なお、他の構成については、図３に示す本実施形態の場合と同様であるため、含む説明を省略する。
【００３２】
次に、図６に示すように、本変形例の設計結果は、前述したように、イネーブルの論理の組み合わせ３６から、遅延が小さいイネーブルの論理Ａ（論理回路３７Ａ）と、遅延が大きいイネーブルの論理Ｂ（論理回路３７Ｂ）とが分割される。さらに、末端の論理回路ブロック３１の近傍にはＣＧ回路３５が設定されて、クロックバッファ３４の上流側にはＣＧ回路４０が設定されている。
【００３３】
ここで、各イネーブル論理回路３７Ａ，３７Ｂは、同一のフリップフロップ（Ｆ／Ｆ）３９からの出力を各入力とし、各出力が同一のアンドゲート３８の入力となる構成である。なお、他の構成については、図４に示す本実施形態の場合と同様であるため、含む説明を省略する。
【００３４】
なお、本実施形態及び変形例は、設計対象の論理回路は、階層的に最下位（末端）の論理回路ブロック３１が１個である場合について設定したが、当然ながら、複数の論理回路ブロック３１が存在する場合にも適用可能である。
【００３５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００３６】
１…設計装置、１０…プロセッサ（ＣＰＵ）、１１…メモリ、１２…ストレージ、
１３…入力装置、１４…表示装置、１５…インターフェース、
３０…クロック生成回路、３１…論理回路ブロック、
３２，３９，３９Ａ，３９Ｂ…フリップフロップ（Ｆ／Ｆ）、
３３，３４…クロックバッファ、３５，４０…クロックゲーティング回路（ＣＧ回路）、
３６…イネーブルの論理組み合わせ。
【図１】
2019148995.tif 000003
【図２】
2019148995.tif 000004
【図３】
2019148995.tif 000005
【図４】
2019148995.tif 000006
【図５】
2019148995.tif 000007
【図６】
2019148995.tif 000008