(57)【要約】【課題】特定の動作パタンに拠らずに、消費電力の低減に効果のないＣＧセルの挿入を排除する。【解決手段】本発明は、検証対象の回路にクロックゲーティング回路を挿入することで前記検証対象の回路の消費電力を低減する効果が得られるか否かを検証するためのアサーション記述を生成し、前記アサーション記述に基づいて、前記検証対象の回路の動作を検証するフォーマルシミュレーションを行い、前記フォーマルシミュレーションの結果に基づいて、前記検証対象の回路にクロックゲーティング回路を挿入すべきか否か記述した挿入制約を生成する。【選択図】図３Ａ
2012221119.tif 000002
【特許請求の範囲】
【請求項１】
検証対象の回路にクロックゲーティング回路を挿入することで前記検証対象の回路の消費電力を低減する効果が得られるか否かを検証するためのアサーション記述を生成するアサーション生成部と、
前記アサーション記述に基づいて、前記検証対象の回路の動作を検証するフォーマルシミュレーションを行うシミュレーション部と、
前記フォーマルシミュレーションの結果に基づいて、前記検証対象の回路にクロックゲーティング回路を挿入すべきか否かを記述した挿入制約を生成するクロックゲーティング効果制約生成部と、
を有することを特徴とする設計支援装置。
【請求項２】
前記シミュレーション部は、特定の入力信号に対する前記検証対象の回路の動作を検証するダイナミックシミュレーションを実行し、前記ダイナミックシミュレーションの結果によっても前記消費電力を低減する前記効果が得られるか否かが不明な回路に対してのみ前記フォーマルシミュレーションを実行することを特徴とする請求項１に記載の設計支援装置。
【請求項３】
前記挿入制約に基づいて、前記検証対象の回路を含む回路の論理合成を行う論理合成部をさらに備えることを特徴とする請求項１に記載の設計支援装置。
【請求項４】
前記アサーション生成部は、前記検証対象の回路に対するイネーブル信号の値がアクティブの論理値に遷移した際に、前記検証対象の回路の出力する信号の値が変化するか否かを検証するアサーション記述を生成することを特徴とする請求項１に記載の設計支援装置。
【請求項５】
前記検証対象の回路は、前記イネーブル信号に応答して動作する少なくとも一のフリップフロップ、または複数の前記フリップフロップから構成されるレジスタであることを特徴とする請求項４に記載の設計支援装置。
【請求項６】
検証対象の回路にクロックゲーティング回路を挿入することで前記検証対象の回路の消費電力を低減する効果が得られるか否かを検証するためのアサーション記述をアサーション生成部が生成するステップと、
前記アサーション生成部が生成した前記アサーション記述に基づいて、フォーマルシミュレーション部が前記検証対象の回路の動作を検証するフォーマルシミュレーションを行うステップと、
前記フォーマルシミュレーションの結果に基づいて、クロックゲーティング効果制約生成部が前記検証対象の回路にクロックゲーティング回路を挿入すべきか否かを記述した挿入制約を生成するステップと、
を有することを特徴とする半導体集積回路の設計方法。
【請求項７】
前記シミュレーション部が、特定の入力信号に対する前記検証対象の回路の動作を検証するダイナミックシミュレーションを実行するステップと、
前記シミュレーション部が、前記ダイナミックシミュレーションの結果によっても前記消費電力を低減する前記効果が得られるか否かが不明な回路に対してのみ前記フォーマルシミュレーションを実行するステップと、
をさらに有することを特徴とする請求項６に記載の半導体集積回路の設計方法。
【請求項８】
前記挿入制約に基づいて、論理合成部が前記検証対象の回路を含む回路の論理合成を行うステップをさらに備えることを特徴とする請求項６に記載の半導体集積回路の設計方法。
【請求項９】
前記アサーション記述は、前記検証対象の回路に対するイネーブル信号の値がアクティブの論理値に遷移した際に、前記検証対象の回路の出力する信号の値が変化するか否かを検証するアサーション記述であることを特徴とする請求項６に記載の半導体集積回路の設計方法。
【請求項１０】
前記検証対象の回路は、前記イネーブル信号に応答して動作する少なくとも一のフリップフロップ、または複数の前記フリップフロップから構成されるレジスタであることを特徴とする請求項９に記載の半導体集積回路の設計方法。
【請求項１１】
検証対象の回路にクロックゲーティング回路を挿入することで前記検証対象の回路の消費電力を低減する効果が得られるか否かを検証するためのアサーション記述を生成するステップと、
前記アサーション生成部が生成した前記アサーション記述に基づいて、前記検証対象の回路の動作を検証するフォーマルシミュレーションを行うステップと、
前記フォーマルシミュレーションの結果に基づいて、前記検証対象の回路にクロックゲーティング回路を挿入すべきか否かを記述した挿入制約を生成するステップと
をコンピュータに実行させるための設計支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路の設計支援装置、設計方法、及び設計支援プログラムに関し、特に、論理設計における制約事項の設定方法に関する。
【背景技術】
【０００２】
近年、低消費電力化を実現するため、フリップフロップ回路に対する不要なクロック入力を一時的に遮断するクロックゲーティング（Ｃｌｏｃｋ  Ｇａｔｉｎｇ：ＣＧ、ゲーテッドクロック（ＧＣ）とも称す）手法が適用されている。クロックゲーティングセル（以下、ＣＧセルと称す）を半導体装置に挿入する方法としては、ＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）記述に明示的に挿入する方法があるが、近年は、膨大なＦ／Ｆ数に対応するため、論理合成時に自動挿入されることが主流となっている。
【０００３】
論理合成ツール（Ｌｏｇｉｃ  Ｓｙｎｔｈｅｓｉｓ  Ｔｏｏｌ）は、ＲＴＬ記述によるフリップフロップ回路（以下、Ｆ／Ｆと称す）のイネーブル信号を自動変換することで、ＣＧセルを自動挿入する。ＲＴＬ記述を論理合成して生成されるネットリストは一意に決まらず、同じＲＴＬ記述から異なるネットリストが生成され得る。例えば、論理合成において必要最小限のＣＧセルが挿入されることもあれば、ゲーティングによる低消費電力化効果（ゲーティング効果）のない無駄なＣＧセルが挿入されることもある。又、論理合成時の入力制約に従い、Ｆ／Ｆのビット幅に応じて自動挿入される場合、ＣＧセルがＦ／Ｆのビット幅に対して一律自動挿入されるため、ゲーティング効果のないＦ／ＦにもＣＧセルが挿入されことがある。このようにゲーティング効果のないＣＧセルが挿入された場合、面積増加や配線混雑によるレイアウト処理が厳しくなるため、論理合成のやり直しや修正が必要となる。従って、消費電力の削減に効果のあるＣＧセルを効率的に挿入する技術が求められている。
【０００４】
消費電力効果のあるＣＧセルを選択的に挿入する技術が、例えば特開２００２−９２０６５に記載されている（特許文献１参照）。特許文献１では、フリップフロップ（以下、Ｆ／Ｆと称す）の動作条件となるイネーブル信号と当該Ｆ／Ｆとの対応関係が記述されたＲＴＬ記述に対し、テストベクトルに従ったシミュレーションが行われる。そして、そのシミュレーション結果に基づきＦ／Ｆに対するイネーブル信号のアクティブ率が求められ、このアクティブ率に基づいてＣＧセルを挿入するＦ／Ｆが決定される。
【０００５】
特許文献１では、論理合成前にＣＧセルを挿入するＦ／Ｆを決定し、ゲーテッドクロック化したＦ／Ｆ（ＣＧセルを挿入したＦ／Ｆ）をＲＴＬ記述に反映している。このため、論理合成では、アクティブ率に基づいて選択されたＦ／ＦのみにＣＧセルが挿入されることとなり、消費電力を効果的に削減することが可能となる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−９２０６５
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１では、テストベクトルに従ったシミュレーション結果を用いてＣＧセルを挿入するＦ／Ｆを決定している。テストベクトルを利用したシミュレーションの場合、特定の動作パタンに対するアクティブ率しか求められない。すなわち、特許文献１の技術では、特定の動作において消費電力の削減効果があると判断できる回路に対してはＣＧセルを挿入することは有効である。しかし、特定の動作パタンによって消費電力の削減効果が得られるか分からなかった回路に対しては、ＣＧセルを挿入すべきか否かの適切な判断ができない。例えば当該特定の動作パタンの場合には消費電力を低減する効果がなくＣＧセルを挿入すべきでないと判定できるように見える回路であっても、別の異なる動作パタンの場合にはＣＧセルを挿入することによって消費電力の低減効果が得られる可能性もあるからである。しかし、テストベクトルを利用して全てのパタンを網羅的にシミュレーションすることは現実的ではない。従って、特許文献１の技術では、回路に特定の動作を実行させた場合の消費電力の削減効果に基づくＣＧセルの挿入しか行うことができず、回路の消費電力の低減を正確に反映したＣＧセルの挿入を行うことができないという解決すべき課題が存在する。
【課題を解決するための手段】
【０００８】
上記の課題を解決するために、本発明は、以下に述べられる手段を採用する。その手段を構成する技術的事項の記述には、［特許請求の範囲］の記載と［発明を実施するための形態］の記載との対応関係を明らかにするために、［発明を実施するための形態］で使用される番号・符号が付加されている。ただし、付加された番号・符号は、［特許請求の範囲］に記載されている発明の技術的範囲を限定的に解釈するために用いてはならない。
【０００９】
本発明による半導体集積回路の設計支援装置は、アサーション生成部、シミュレーション部、クロックゲーティング効果制約生成部を具備する。アサーション生成部は検証対象の回路にクロックゲーティング回路を挿入することで検証対象の回路の消費電力を低減する効果が得られるか否かを検証するためのアサーション記述を生成する。シミュレーション部は、アサーション記述に基づいて、検証対象の回路の動作を検証するフォーマルシミュレーションを行う。クロックゲーティング効果制約生成部はフォーマルシミュレーションの結果に基づいて、検証対象の回路にクロックゲーティング回路を挿入すべきか否かを記述した挿入制約を生成する。
【００１０】
本発明による半導体集積回路の設計方法は、検証対象の回路にクロックゲーティング回路を挿入することで検証対象の回路の消費電力を低減する効果が得られるか否かを検証するためのアサーション記述をアサーション生成部が生成するステップと、アサーション生成部が生成したアサーション記述に基づいて、フォーマルシミュレーション部が検証対象の回路の動作を検証するフォーマルシミュレーションを行うステップと、フォーマルシミュレーションの結果に基づいて、クロックゲーティング効果制約生成部が検証対象の回路にクロックゲーティング回路を挿入すべきか否かを記述した挿入制約を生成するステップとを具備する。
【００１１】
上述の半導体集積回路の設計方法は、コンピュータによって実行される設計支援プログラムによって実現されることが好ましい。
【００１２】
本発明ではアサーションベース検証によってクロックゲーティングの挿入効果を検証するため、特定の動作パタンを用いずにクロックゲーティングの挿入箇所を決定することができる。
【発明の効果】
【００１３】
従って、本発明によれば、特定の動作パタンに拠らずに、消費電力の低減に効果のないＣＧセルの挿入を排除することができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、本発明による半導体集積回路の設計支援装置の構成を示す図である。
【図２】図２は、本発明による設計支援装置の実施の形態における機能ブロック図である。
【図３Ａ】図３Ａは、本発明による半導体集積回路の設計方法の一例を示すフロー図である。
【図３Ｂ】図３Ｂは、本発明による半導体集積回路の設計方法の一例を示すフロー図である。
【図４】図４は、本発明による検証ポイント情報の構造の一例を示す図である。
【図５】図５は、本発明による検証ポイント情報として利用される消費電力結果ログの一例を示す図である。
【図６】図６は、本発明による検証ポイント情報の一例を示す図である。
【図７】図７は、本発明によるアサーション記述の一例を示す図である。
【図８】図８は、本発明によるＣＧ挿入制約スクリプトを利用しない場合の論理合成結果（ネットリスト）の一例を示す図である。
【図９】図９は、本発明によるＣＧ挿入制約スクリプトを利用した場合の論理合成結果（ネットリスト）の一例を示す図である。
【図１０】図１０は、本発明によるＣＧ挿入制約スクリプトを利用した場合の論理合成結果（ネットリスト）の他の一例を示す図である。
【図１１Ａ】図１１Ａは、本発明による半導体集積回路の設計方法の他の一例を示すフロー図である。
【図１１Ｂ】図１１Ｂは、本発明による半導体集積回路の設計方法の他の一例を示すフロー図である。
【発明を実施するための形態】
【００１５】
以下、添付図面を参照しながら本発明の実施の形態を説明する。図面において同一、又は類似の参照符号は、同一、類似、又は等価な構成要素を示している。
【００１６】
（概要）
本発明による半導体集積回路の設計支援装置（以下、設計支援装置と称す）は、ＲＴＬ記述によるＤＵＴ（Ｄｅｖｉｃｅ  Ｕｎｄｅｒ  Ｔｅｓｔ）にアサーション記述（アサーションモニタ）を追加してフォーマルシミュレーション（フォーマル検証とも称す）を行い、このシミュレーション結果に基づいて論理合成において挿入するＣＧセルを決定する。フォーマルシミュレーションでは、アサーションモニタが追加された箇所の動作が、そのアサーション記述によって検証されるため、検証対象箇所の全ての動作を網羅的に検証することができる。このため、特定の動作パタンに拠らずに、挿入するＣＧセルを論理合成前に決定することが可能となる。
（構成）
図１及び図２を参照して、本発明による設計支援装置１０の構成を説明する。図１は、本発明による設計支援装置１０の実施の形態における構成図である。設計支援装置１０は、バス１６を介して相互に接続されるＣＰＵ１１と、ＲＡＭ１２と、記憶装置１３と、入力装置１４と、出力装置１５とを具備する。記憶装置１３はハードディスクやメモリ等に例示される外部記憶装置である。又、入力装置１４は、キーボードやマウス等のユーザによって操作されることで、各種データをＣＰＵ１１や記憶装置１３に出力する。出力装置１５は、モニタやプリンタに例示され、ＣＰＵ１１から出力される半導体装置のレイアウト結果をユーザに対し視認可能に出力する。
【００１７】
記憶装置１３は、ＤＵＴ情報２０、制約スクリプト３０、設計支援プログラム４０を格納している。ＣＰＵ１１は、入力装置１４からの入力に応答して、記憶装置１３内の設計支援プログラム４０を実行し、挿入するＣＧセルの決定（ＣＧ挿入制約の生成）及び論理合成によるネットリストの作成を行う。この際、記憶装置１３からの各種データやプログラムはＲＡＭ１２に一時格納され、ＣＰＵ１１は、ＲＡＭ１２内のデータを用いて各種処理を実行する。尚、ＣＧ挿入制約生成処理と論理合成処理は、異なるプログラムや装置によって実現されても構わない。
【００１８】
ＤＵＴ情報２０は、ＲＴＬ記述による設計対象回路（ＤＵＴ）である。ここでは、論理合成対象回路のＲＴＬ記述がＤＵＴ情報２０として記録される。ＤＵＴ情報２０は、一般の論理合成で利用されるＲＴＬ記述が好適に利用される。制約スクリプト３０は、ＤＵＴの使用条件や制約を規定したスクリプトである。例えば使用条件としてＤＵＴ（半導体集積回路）の動作環境（温度や使用電圧）があり、制約としてクロック周波数や遅延値がある。制約スクリプト３０も一般の論理合成で利用される使用条件及び制約が定義されたスクリプトが好適に利用される。
【００１９】
設計支援プログラム４０は、ＣＰＵ１１によって実行されることで、図２に示すアサーション生成部４１、シミュレーション部４２、ＣＧ挿入制約生成部４３、論理合成部４４の各機能を実現する。
【００２０】
アサーション生成部４１は、ＤＵＴ情報２０からアサーション検証対象を抽出するとともに、監視対象の動作仕様を定義したアサーション記述（アサーションモニタ）をアサーション言語（例示：ＳＶＡ（Ｓｙｓｔｅｍ  Ｖｅｒｉｌｏｇ  Ａｓｓｅｒｔｉｏｎ）やＰＳＬ（Ｐｒｏｐｅｒｔｙ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｌａｎｇｕａｇｅ））により生成する。生成されたアサーションモニタはアサーション記述ファイル２２として記憶装置１３に記録される。シミュレーション部４２は、設計者が設定する信号の値やＲＴＬ記述を入力として検証対象の回路に信号を入力した場合の出力を設計者に通知する論理シミュレータや、検証対象となる回路の消費電力の値を出力して設計者に通知する消費電力解析ツールといったプログラムがＣＰＵ１１によって実行されることで実現される。また、後述するが、シミュレーション部４２は、フォーマル検証（フォーマルシミュレーション）を行っても良い。この場合、シミュレーション部４２は、ＣＰＵ１１がフォーマル検証ツールを実行することで、フォーマル検証を実行するハードウェア資源として機能する。フォーマル検証は、上述した論理シミュレータや消費電力解析ツールとは異なり、設計者が指定した特定の信号値に基づいてその特定の信号値に対応した信号値を出力結果とするのではない。すなわちフォーマル検証は、検証の対象となっている回路のＲＴＬ記述から当該回路が出力する可能性がある結果を数学的に解析して証明するものである。例えばシミュレーション部４２は、ＲＴＬ記述から検証対象となっている回路の状態遷移図を導き出し、その状態遷移図を追っていくことで当該回路の出力となるあらゆる組み合わせを導き出す。すなわち、フォーマル検証は、上記した論理シミュレータや消費電力解析ツールとは異なり、設計者が指定する信号値に依存しない網羅的な解析結果が得られることを特徴としている。なお、以下、本明細書では、検証対象の回路の具体例としてフリップフロップ、あるいは複数のフリップフロップから構成されるレジスタが例示されるが、検証対象の回路はこれに限らず、そのほかの回路であってもよい。
【００２１】
シミュレーション部４２は、アサーションモニタをＤＵＴ情報２０に挿入することでシミュレーション用のＤＵＴ情報を生成し、当該ＤＵＴ情報に対してフォーマルシミュレーションを行う。シミュレーション部４２は、フォーマルシミュレーションの前に所定のテストパタンに従ったダイナミックシミュレーションを行っても良い。ここで、ダイナミックシミュレーションとは、上述した論理シミュレータによって実行されるシミュレーションのこと意味しており、検証対象の回路が設計者によって指定された信号値に応じてどのような信号値を出力するかを解析する。この点については第２の実施の形態で述べる。
【００２２】
ＣＧ挿入制約生成部４３は、フォーマルシミュレーション結果に基づいてＤＵＴに挿入するＣＧセルを設定する（ＤＵＴへの挿入を禁止するＣＧセルを設定する）。あるいは、ＣＧ挿入制約生成部４３は、フォーマルシミュレーション結果に基づいてＤＵＴに挿入するＣＧセルの位置を設定する（ＤＵＴへの挿入を禁止するＣＧセルの位置を設定する）。ＣＧ挿入制約生成部４３は、この設定に基づきＤＵＴに挿入する（ＤＵＴへの挿入を禁止する）ＣＧセル制約スクリプトを生成し、ＣＧ挿入制約スクリプト２４として記憶装置１３に記録する。
【００２３】
論理合成部４４は、一般的な論理合成ツールと同様に、ＤＵＴ情報２０（ＲＴＬ記述）を解析して論理式に変換しネットリスト２５を生成する。この際、制約スクリプト３０やＣＧ挿入制約スクリプト２４に従い、回路の最適化（例えば論理圧縮や回路面積の縮小）を行う。本発明では、ＣＧ挿入制約スクリプト２４に従う最適化により、低消費電力化に不要なＣＧセルが削除される（あるいは、低消費電力化に必要なＣＧセルのみが選択的に挿入される）。
【００２４】
以上のような構成により、本発明による設計支援装置１０は、アサーション記述（アサーションモニタ）を挿入したＤＵＴ情報（ＲＴＬ記述）を用いてフォーマルシミュレーションを行い、この結果に基づいて低消費電力化に不要なＣＧセルを排除するための制約を生成する。又、論理合成において、この制約を利用することで、低消費電力化に不要なＣＧセルを排除したネットリストを作成することが可能となる。
【００２５】
（動作）
第１の実施の形態
以下、図３Ａから図８を参照して、本発明による半導体集積回路の設計方法の第１の実施の形態を説明する。図３Ａ及び図３Ｂは、本発明による半導体集積回路の設計方法の一例を示すフロー図である。
【００２６】
アサーション生成部４１は、先ず、ＤＵＴ情報２０を解析してアサーションモニタの挿入箇所となるアサーション検証ポイントを特定する（ステップＳ１０１）。詳細には、アサーション生成部４１は、ＤＵＴ情報２０を解析してアサーションモニタを挿入する箇所、すなわちアサーション記述によって動作を検証する箇所（アサーション検証ポイント）を特定する。本発明では、論理合成においてＣＧセルが挿入され得る箇所が監視ポイントとなる。このため、アサーション生成部４１は、論理合成においてＣＧセルを挿入する条件となるクロックゲーティング条件（例えばイネーブル信号）をアサーション検証ポイントとして特定する。
【００２７】
ステップＳ１０１において特定されたアサーション検証ポイントは検証ポイント情報２１として記憶装置１３に記録される。図４は、本発明による検証ポイント情報２１の構造の一例を示す図である。論理合成部４４では、クロック信号、イネーブル信号、レジスタ（又はＦ／Ｆ）によってＣＧセルを挿入する箇所を特定する。このため、アサーション生成部４１は、ＤＵＴ情報２０から少なくともクロック信号、イネーブル信号、レジスタ（又はＦ／Ｆ）を示す情報（クロック識別子２１１、イネーブル識別子２１２、レジスタ識別子２１３）を抽出し、それぞれを対応付けて検証ポイント情報２１として記録する。尚、検証ポイント情報２１としては、少なくともイネーブル信号とレジスタ（又はＦ／Ｆ）の組合せが抽出されればよいため、クロック識別子２１１は省略され得る。
【００２８】
例えば、検証ポイント情報２１の抽出ツールとして、一般的な消費電力解析ツールが好適に利用される。具体的には、アトレンタ社によるＳｐｙＧｌａｓｓ−Ｐｏｗｅｒツールが利用される。そのためにまずＣＰＵ１１は上述した論理シミュレータの機能を実現するため、記憶装置１３にアクセスして設計支援プログラム４０の内の論理シミュレータを読み出し実行する。当該実行によりシミュレーション部４２は、設計者が指定した信号値およびＲＴＬ記述に基づいて、検証対象である回路、例えばイネーブル信号に基づき動作するレジスタの出力結果を得る。次にＣＰＵ１１は、記憶装置１３から設計支援プログラム４０内に含まれる消費電力解析ツール、例えば上述のＳｐｙＧｌａｓｓ−Ｐｏｗｅｒツールを読み出して実行する。シミュレーション部４２は、論理シミュレータの実行結果を入力とし、検証対象の回路の消費電力の解析を行う。ここで、消費電力解析ツールの実行によって作成される消費電力結果には、イネーブル信号と、これに関連するレジスタ及び当該レジスタに入力されるクロック信号が示される。消費電力解析ツールは、レジスタの動作率（Ｄｕｔｙ−Ｃｙｃｌｅ）に関わらずＤＵＴにおける全てのイネーブル信号と関連するレジスタの組合せを抽出するため、本発明における検証ポイント情報２１の抽出ツールとして好適に利用され得る。アサーション生成部４１は、このようなツールを利用することで、ＤＵＴ情報２０から検証ポイント情報２１を網羅的に抽出することができる。シミュレーション部４２は、例えば消費電力解析ツールの実行結果を記憶装置１３に書き込んで記憶させると共に、出力装置１５を介して出力し、設計者に当該実行結果を通知する。
【００２９】
図５は、ＳｐｙＧｌａｓｓ−Ｐｏｗｅｒツールによって得られた消費電力結果ログの一例を示す図である。図５を参照して、消費電力結果ログには、クロック信号（Ｃｌｏｃｋ）及びイネーブル信号（Ｅｎａｂｌｅ）に関連するレジスタのサイズ（Ｒｅｇｉｓｔｅｒ  ｗｉｄｔｈ）、動作率（Ｄｕｔｙ−Ｃｙｃｌｅ（Ｅｎａｂｌｅ））、有効クロック（Ａｃｔｉｖｉｔｙ（Ｃｌｏｃｋ））、ゲーティングがない場合の消費電力（Ｐｏｗｅｒ（ｗ／ｏ  ｇａｔｉｎｇ））、ゲーティングされた場合の消費電力（Ｐｏｗｅｒ（ｇａｔｉｎｇ））、ゲーティング有無間の消費電力差（Ｐｏｗｅｒ（Ｄｉｆｆｅｒｅｎｃｅ））、モジュール階層（レジスタ位置（Ｈｉｅｒａｒｃｈｙ））、レジスタ識別子（Ｒｅｇｉｓｔｅｒｓ  Ａｆｆｅｃｔｅｄ）が、記録されている。ここで、上段の行のレジスタ識別子には、“￥ｒ１＿ｒｅｇ［０：３５］”と記載され、下段の行のレジスタ識別子には“￥ｒ３＿ｒｅｇ［０：３５］”と記載されている。これらはそれぞれレジスタの名称を意味しており、この例では“ｒ１”というレジスタは３６ビットの値を記憶可能であることになる。具体的にはレジスタ“ｒ１”は、１ビットの記憶素子であるフリップフロップ（Ｆ／Ｆ）を３６個有する。“ｒ３”という名称のレジスタについても同様である。これらのＦ／Ｆのそれぞれには、イネーブル信号が入力されている。なお、このレジスタ識別子に記載されている回路が、消費電力解析ツールが検証対象としている回路になる。以下では具体例として、これらのレジスタが検証対象の回路であるとして説明する。
【００３０】
図５における、クロック信号（Ｃｌｏｃｋ）とは、例えば半導体集積回路内に設けられたＰＬＬ等の発振回路が出力したクロック信号であり、クロックツリーを介して半導体集積回路内の各回路に伝達される。図５では“ｍｃ＿ｔｏｐ．ｃｌｋ＿ｉ  ２１１”の記載が２ヶ所ある。“ｍｃ＿ｔｏｐ．ｃｌｋ＿ｉ”はクロック信号の名称である。したがって、これらの同一名称のクロック信号はそれぞれ周波数が同一であり、クロックスキューがなければ同位相でトグルするクロック信号である。この例では、レジスタ“ｒ１”とレジスタ“ｒ３”に入力されるクロックは共に“ｍｃ＿ｔｏｐ．ｃｌｋ＿ｉ  ２１１”であり、同じクロック信号がそれぞれのレジスタの各Ｆ／Ｆに入力されていることになる。
【００３１】
動作率（Ｄｕｔｙ−Ｃｙｃｌｅ（Ｅｎａｂｌｅ））の列には、上段の行に“０．００”、下段の行に“１．００”と記載されている。ここで、クロックゲーティング回路にはクロック信号とイネーブル信号が入力される。イネーブル信号がアクティブである場合にはゲーティング回路はクロック信号のパルスを後段の回路に出力し、イネーブル信号がインアクティブであればゲーティング回路はパルスを出力しない。このようなクロックゲーティング回路の最も簡単な例はクロック信号とイネーブル信号を入力する２入力のＡＮＤゲートである。そして動作率（Ｄｕｔｙ−Ｃｙｃｌｅ（Ｅｎａｂｌｅ））の値が“０．００”であれば、このイネーブル信号がシミュレーション（電源解析シミュレーション）を実行している間、常にインアクティブであることを示し、“１．００”であれば、当該イネーブル信号がシミュレーション（電源解析シミュレーション）を実行している間、常にアクティブであることを意味する。なお、図５では動作率の値として“０．００”と“１．００”の２種類の値しか示されていないが、実際には“０．３”、“０．５”、“０．７”といった値であってもよい。そしてこの動作率の値は、ＣＰＵ１１が消費電力解析シミュレーションの前に実行した論理シミュレータに対する入力であり、設計者が設定した信号値である。また、上段の行、すなわちレジスタ“ｒ１”に入力されるイネーブル信号は“ｅｎａｂｌｅ  １”であり、下段の行、すなわちレジスタ“ｒ３”に入力されるイネーブル信号は“ｅｎａｂｌｅ  ２”であることが分かる。名称が異なるため、これらは別々のイネーブル信号である。なお、イネーブル信号は、回路構成上、複数の論理回路の論理演算の結果として生成される場合がある。例えば“ｅｎａｂｌｅ  １”は、実際の半導体集積回路では、メモリに対するアドレスを指定する信号の１ビットと、ライトイネーブル信号のＡＮＤ演算の結果として生成されることもある。“ｅｎａｂｌｅ  ２”についても同様である。
【００３２】
図５における有効クロック（Ａｃｔｉｖｉｔｙ（Ｃｌｏｃｋ））は、検証対象となっている回路、この説明では具体例としてレジスタ“ｒ１”と“ｒ３”に実際に入力されているクロック信号の周波数を示す。図５の例ではレジスタ“ｒ１”もレジスタ“ｒ３”もそれぞれ“２．００”の値が示されている。有効クロックの値が“２．００”の場合、レジスタ“ｒ１”と“ｒ３”を含む半導体集積回路中の最大の周波数がレジスタ“ｒ１”と“ｒ３”に入力されていることを意味する。また、有効クロックの値が“１．００”の場合には上記した最大の周波数の１／２の周波数が検証対象の回路に入力されることになる。
【００３３】
ゲーティングがない場合の消費電力（Ｐｏｗｅｒ（ｗ／ｏ  ｇａｔｉｎｇ））に関しては、レジスタ“ｒ１”、“ｒ３”共に“１８６μＷ”の電力を消費していることが分かる。一方、ゲーティングされた場合の消費電力（Ｐｏｗｅｒ（ｇａｔｉｎｇ））を見ると、レジスタｒ１は１８．７μＷの電力を消費しているのに対し、レジスタ“ｒ３”は“８００μＷ”の電力を消費している。これは、レジスタ“ｒ１”は動作率（Ｄｕｔｙ−Ｃｙｃｌｅ（Ｅｎａｂｌｅ））の値が“０．００”であるため、ゲーティング回路を挿入することで効果的に電力消費を抑制できることを意味している。一方、レジスタ“ｒ３”は、動作率の値が“１．００”であり、イネーブル信号が常にアクティブであるため、ゲーティング回路を挿入してもレジスタ“ｒ３”が消費する電力にゲーティング回路自体が消費する電力が上乗せされてしまうため、値が“８００μＷ”に上昇しているのである。ゲーティング有無間の消費電力差（Ｐｏｗｅｒ（Ｄｉｆｆｅｒｅｎｃｅ））はゲーティングがない場合の消費電力（Ｐｏｗｅｒ（ｗ／ｏ  ｇａｔｉｎｇ））とゲーティングされた場合の消費電力（Ｐｏｗｅｒ（ｇａｔｉｎｇ））の差分である。
【００３４】
モジュール階層（レジスタ位置（Ｈｉｅｒａｒｃｈｙ））はモジュールの名称を記載しており、レジスタ“ｒ１”や“ｒ３”が属するモジュール名がこの記載で分かる。
【００３５】
消費電力解析ツールでは、従来技術と同様にテストパタンを利用した消費電力シミュレーションを行っているため、検証対象の回路が消費する電力の値等の具体的なシミュレーション結果は本発明では利用しない。しかし、本発明によるアサーション生成部４１は、消費電力解析ツールの実行の結果として抽出されたクロック識別子２１１、イネーブル識別子２１２、レジスタ識別子２１３を検証ポイント情報２１に使用する。例えば、アサーション生成部４１は、図５に示す消費電力解析結果から、図６に示す検証ポイント情報２１を抽出する。ここでは、クロック識別子２１１“ｍｃ＿ｔｏｐ．ｃｌｋ＿ｉ”、イネーブル識別子２１２“ｅｎａｂｌｅ  １”、レジスタ識別子２１３“￥ｒ１＿ｒｅｇ［０：３５］”の組合せと、クロック識別子２１１“ｍｃ＿ｔｏｐ．ｃｌｋ＿ｉ”、イネーブル識別子２１２“ｅｎａｂｌｅ  ２”、レジスタ識別子２１３“￥ｒ３＿ｒｅｇ［０：３５］”の組合せが、検証ポイント情報２１として抽出される。
【００３６】
尚、レジスタ位置を特定するモジュール階層（Ｈｉｅｒａｒｃｈｙ）も検証ポイント情報２１として抽出されても構わない。図５に示す一例では、レジスタ“￥ｒ１＿ｒｅｇ［０：３５］の位置を示す“ｍｃ＿ｔｏｐ．ｕ３．ｕ０”、レジスタ“￥ｒ３＿ｒｅｇ［０：３５］の位置を示す“ｍｃ＿ｔｏｐ．ｕ３．ｕ０”がそれぞれ検証ポイント情報２１として抽出されても良い。
【００３７】
本実施例では、一般の消費電力解析ツールを利用した検証ポイント情報２１の抽出方法を一例としたが、ＤＵＴ情報２０から全てのイネーブル信号とこれに関連するレジスタとの組合せを抽出できればこれに限らない。上記の消費電力解析ツールを使用した検証ポイント情報２１の抽出は一例であり、請求項の記載を消費電力解析ツールの結果を用いることに限定しなくても、本発明は明確に理解されるところである。
【００３８】
続いて、アサーション生成部４１は、検証ポイント情報２１を利用してＣＧ効果チェック用アサーションを生成する（ステップＳ１０２）。ここでのＣＧ効果チェック用アサーションとは、より大略的には、検証対象の回路にクロックゲーティング回路を挿入することで検証対象の回路の消費電力を低減する効果が得られるか否かを検証するためのアサーション記述を意味する。ＣＧ効果チェック用アサーションには、ＣＧセルによる低電力化効果を検証するために、イネーブル信号に応じた関連レジスタの動作仕様（期待動作）が規定される。ＣＧセルによる低電力化効果は、イネーブル信号の発生（信号変化）に応じて、関連レジスタの出力が発生（信号変化）するか否かによって検証できる。明確に述べれば、イネーブル信号の信号値が遷移してアクティブの論理値に変化した場合に、検証対象となっているレジスタの各Ｆ／Ｆが出力する信号値が変化する否かを検証することで、各Ｆ／Ｆがゲーティング回路を挿入することで効果的に消費電力を削減可能であるかを検証できる。アサーションベース検証は、レジスタの各Ｆ／Ｆに、個別に行われるがレジスタ全体を検証の対象としてもよい。なお、以下では分かりやすさのため、それぞれのＦ／Ｆごとに検証を行うとして、具体的に説明していく。また、アクティブの論理値とは、回路が正論理であればハイレベル（１）の論理値を意味し、回路が負論理であればローレベル（０）の論理値を意味する。
【００３９】
例えば、イネーブル信号がアクティブの論理値に遷移しても、そのイネーブル信号に対応するレジスタの各Ｆ／Ｆの出力する信号の値が変化しない場合、各Ｆ／Ｆに対するゲーティング効果が期待できない。この場合、“当該レジスタの当該各Ｆ／Ｆに対するクロックゲーティングによる低電力効果は期待できない（以下、「ＣＧ効果なし」と称す）”と判定できる。あるいは、イネーブル信号の信号値がアクティブの論理値に遷移することに応じて対応するレジスタの各Ｆ／Ｆが出力する信号の値が変化する場合、ゲーティングすることで当該各Ｆ／Ｆの動作を停止できる。この場合、“当該レジスタに対するクロックゲーティングによる低電力効果は期待できる（以下、「ＣＧ効果あり」と称す）”と判定できる。アサーションベース検証はＦ／Ｆごとに行うため、イネーブル信号に対応するレジスタを構成するＦ／Ｆの内の少なくとも一つ以上の一部分のＦ／Ｆの出力値は変化せず、他の部分のＦ／Ｆの出力値は変化するというケースもある。その場合、出力値が変化しなかった当該一部分のＦ／Ｆにはゲーティング回路を挿入しても電力消費を抑制する効果がなく、他の部分のＦ／Ｆにはゲーティング回路を挿入することで電力消費を抑制する効果がある、と判定できる。
【００４０】
なお、イネーブル信号がアクティブの論理値に遷移しても出力値が変化しないＦ／Ｆとは、例えば設計において冗長に設けられ、実際の回路の動作では使用されることがない、あるいは使用される頻度が少ないようなレジスタである。具体例を挙げると、カウンタ回路を構成する各Ｆ／Ｆが考えられる。半導体集積回路の新製品を開発する場合には前製品で使用した機能回路を流用することで、開発期間を短縮することが行われる。このとき、新製品では前製品で搭載されていたカウンタ回路がカウントする桁数よりも少ない桁数までのカウントを繰り返せば問題ない場合が考えられる。その場合、新製品でのカウンタ回路の上位ビットの値を保持するＦ／Ｆは常に０の論理値を保持し、保持する値が０から１へ遷移することはない。このようなＦ／Ｆには、クロックゲーティング回路を挿入する必要はなく、挿入すればゲーティング回路が消費する電力によるチップ全体としての消費電力の増加と、チップ面積の増加を招くことになる。上記の例以外にも、回路の動作上、固定の信号値の制御信号がそのＦ／Ｆから出力される必要があり、常に固定値を保持するＦ／Ｆが存在する場合なども考えられる。本発明は、このようなＦ／Ｆに対する不要なゲーティング回路の挿入を防止するものである。
【００４１】
図７は、本発明によるアサーション記述の一例を示す図である。アサーション記述“ＡＳＴ１”では動作条件として“イネーブル信号Ｅｎａｂｌｅ（ｅｎａｂｌｅ  １）がアクティブの論理に遷移すること”が規定され、期待動作（期待仕様）として“いつかはレジスタ“ｒ１＿ｒｅｇ［０］”の出力する信号の値が変化する”ことが規定されている。ＡＳＴ１は、レジスタ“ｒ１”の０ビット目のＦ／Ｆに対し、ゲーティング効果があるか否かを判定するための記述である。ここで、インプリケーション演算子“｜＝＞”は、先行する（左辺）シーケンス（条件）が成立した場合に、プロパティの検証（右辺）が行われることを意味し、ここでは、イネーブル信号（ｅｎａｂｌｅ  １）がアクティブの論理に遷移することが条件として規定される。又、右辺のサイクルカウント“＃＃［０：＄］”は、レジスタｒ１＿ｒｅｇ［０］が出力する信号値の変化までの時間を示し、ここでは無限の時間が規定されている。“ＡＳＴ２”についても同様であり、３６ビットのレジスタ“ｒ１”に対してアサーション生成部４１は、“ＡＳＴ１”から“ＡＳＴ３６”をアサーション記述として生成する。
【００４２】
図７に示す一例では、イネーブル信号の信号値の遷移からレジスタの出力信号の値の遷移までの期間を無限として規定しているが、これに限らず、所定の期間を指定しても構わない。
【００４３】
作成されたアサーション記述（アサーションモニタ）は、検証ポイント情報２１に紐付けられてアサーション記述ファイル２２として記憶装置１３に記録される。
【００４４】
シミュレーション部４２は、アサーション生成部４１が生成したアサーション記述に基づいて、検証対象の回路の動作を検証するフォーマルシミュレーションを行う。具体的には、シミュレーション部４２は、ＤＵＴ情報２０、検証ポイント情報２１、アサーション記述ファイル２２を利用してＤＵＴに対してフォーマルシミュレーションを実行する（ステップＳ１０３）。詳細には、ＣＰＵ１１が記憶装置１３にアクセスし、設計支援プログラム４０に含まれるフォーマル検証ツールを記憶装置１３から読み出して実行する。ＣＰＵ１１がフォーマル検証ツールを実行することによって、ＣＰＵ１１はフォーマル検証を実行するシミュレーション部４２となる。シミュレーション部４２は、一例としてＤＵＴ情報２０にアサーション記述ファイル２２を挿入し、シミュレーション用のＤＵＴ情報を作成する。この際、シミュレーション部４２は、記憶装置１３から読み出したアサーション記述ファイル２２から抽出したアサーション記述を、当該アサーション記述に紐付けられた検証ポイント情報２１に挿入する。これにより、ゲーティング効果を検証するためのアサーションモニタが、ステップＳ１０１において特定されたＤＵＴ情報２０における検証ポイントに挿入されることとなる。シミュレーション部４２は、アサーション記述が挿入されたＤＵＴ情報を用いてフォーマルシミュレーションを実行する。ここで実行されるフォーマル検証は、例えば、一般的なプロパティチェッキング方法により実現できる。すなわち、本発明では、上述したアサーション記述に基づいて検証対象の回路をフォーマル検証によって検証する。フォーマル検証は、上述したように設計者が検証対象の回路に特定の入力信号を与える手法ではなく、回路のあらゆる出力結果を状態遷移図に基づくなどの手法により数学的に証明していくものだからである。具体的に言えば、本実施の形態では、フォーマル検証によって導かれる各Ｆ／Ｆの出力値（あるいはレジスタの出力値）を、上述したアサーション記述に基づいて検証するのである。つまり、フォーマル検証の結果から、イネーブル信号の信号値が遷移してアクティブの論理値に変化したとき、検証対象となっているレジスタ、あるいはレジスタを構成する各Ｆ／Ｆが出力する信号値が変化する否かを検証するのである。これによって、特定の入力パタンに対応した限定的な出力結果による判断ではない検証が実現できる。なお、アサーション記述は、ＤＵＴ情報２０に挿入されなくてもよい。この場合、フォーマル検証を実行するシミュレーション部４２にＤＵＴ情報２０とアサーション記述が別々に入力される。
【００４５】
シミュレーション部４２は、検証対象の回路であるレジスタ“ｒ１”の出力値、あるいはレジスタ“ｒ１”を構成する各Ｆ／Ｆの出力値が、当該レジスタ“ｒ１”または各Ｆ／Ｆに入力されるイネーブル信号がアクティブの論理に遷移した場合に変化するかを、フォーマル検証によって検証する。
【００４６】
次に、ＣＰＵ１１は、記憶装置１３から設計支援プログラム４０を読み出して実行することで、ＣＧ効果判定を行う。この場合、ＣＰＵ１１は、フォーマルシミュレーションの結果に基づいて、検証対象の回路にクロックゲーティング回路を挿入すべきか否かを記述した挿入制約を生成するクロックゲーティング効果制約生成部となる。より具体的には、設計支援プログラム４０が実行されることによってＣＰＵ１１がＣＧ挿入制約生成部４３となってＣＧ効果判定を実現する。ＣＧ挿入制約生成部４３は、フォーマルシミュレーション結果に基づいて、ＣＧ効果判定を行う（ステップＳ１０４）。ここでは、アサーション検証された検証ポイント毎にＣＧ効果判定が行われる。例えば、複数のＦ／Ｆを備えるレジスタの全体を検証ポイントとした場合、レジスタ全体についてＣＧ効果判定が行われ、複数のＦ／Ｆのそれぞれを検証ポイントとした場合、Ｆ／Ｆ毎にＣＧ効果判定が行われる。
【００４７】
例えば、イネーブル信号“ｅｎａｂｌｅ  １”がアクティブの論理値に変化しても、レジスタ（Ｆ／Ｆ）“￥ｒ１＿ｒｅｇ［０：１］”（の出力）が変化しない場合、ＣＧ挿入制約生成部４３は、レジスタ（Ｆ／Ｆ）“￥ｒ１＿ｒｅｇ［０：１］”に対してＣＧ効果なしと判定する。あるいは、イネーブル信号“ｅｎａｂｌｅ  １”が変化すると、レジスタ“￥ｒ１＿ｒｅｇ［０：１］”（の出力）が変化する場合、ＣＧ挿入制約生成部４３は、レジスタ（Ｆ／Ｆ）“￥ｒ１＿ｒｅｇ［０：１］”に対してＣＧ効果ありと判定する。
【００４８】
ＣＧ挿入制約生成部４３は、ステップＳ１０４のＣＧ効果判定結果に応じてＣＧセルを挿入するレジスタ（Ｆ／Ｆ）（又はＣＧセルの挿入を禁止するレジスタ（Ｆ／Ｆ））を、ＣＧ効果レジスタファイル２３として記憶装置１３に記録する（ステップＳ１０５）。ここでＣＧ挿入制約生成部４３は、ＣＧ効果ありと判定したレジスタ（Ｆ／Ｆ）を、ＣＧセルの挿入するレジスタとしてＣＧ効果レジスタファイル２３に記録する。あるいは、ＣＧ挿入制約生成部４３は、ＣＧ効果なしと判定したレジスタ（Ｆ／Ｆ）を、ＣＧセルの挿入を禁止するレジスタとしてＣＧ効果レジスタファイル２３に記録し、記憶装置１３に書き込む。記憶装置１３は当該ＣＧ効果レジスタファイル２３を記憶する。
【００４９】
ＣＧ挿入制約生成部４３は、ＣＧ効果レジスタファイル２３に基づいて、ＣＧ挿入制約スクリプト２４を作成する（ステップＳ１０６）。ＣＧ挿入制約スクリプト２４は、論理合成時にＣＧセルの挿入制約として利用される。ＣＧ挿入制約スクリプト２４には、ＣＧセルを挿入するレジスタ（Ｆ／Ｆ）を特定する情報、あるいは、ＣＧセルの挿入を禁止するレジスタ（Ｆ／Ｆ）を特定する情報が含まれる。
【００５０】
論理合成部４４は、ＤＵＴ情報２０、制約スクリプト３０、ＣＧ挿入制約スクリプト２４に基づいて、論理合成を行い、ＤＵＴに対するネットリスト２５を生成する（ステップＳ１０７）。論理合成部４４は、ＣＧ挿入制約スクリプト２４に応じてＣＧセルを選択的に挿入、あるいは不用なＣＧセルの挿入を排除する。これにより、レジスタのビット幅に応じた数のＣＧセルの自動挿入に比べて、挿入するＣＧセル数を低減することが可能となる。
【００５１】
図８から図１０を参照して、本発明による設計方法によるＣＧセルの削減効果について説明する。
【００５２】
図８は、本発明によるＣＧ挿入制約スクリプト２４を利用しない場合の論理合成結果（ネットリスト）の一例を示す図である。図８を参照して、レジスタ１００は、クロック識別子２１１“ｍｃ＿ｔｏｐ．ｃｌｋ＿ｉ”イネーブル識別子２１２“ｅｎａｂｌｅ  １”、レジスタ識別子２１３“￥ｒ１＿ｒｅｇ［０：４］”で特定される４ビットのレジスタであり、Ｆ／Ｆ１１１、１１２、１１３、１１４を備える。ここで、ＣＧ挿入制約スクリプト２４を利用せず、最大３つのＦ／Ｆを駆動可能なＣＧセルを挿入する場合、レジスタ１００に対して少なくとも２つのＣＧセルが挿入されることとなる。例えば、図８で示すように、論理合成においてＦ／Ｆ１１１、１１２に対してＣＧセル１２２が挿入され、Ｆ／Ｆ１１３、１１４に対してＣＧセル１２１が挿入される。
【００５３】
一方、本発明によるＣＧ挿入制約スクリプト２４に応じて論理合成した場合、イネーブル信号が変化しても出力変動しないレジスタ（Ｆ／Ｆ）へのＣＧセルの挿入が禁止されるため、レジスタ１００へ挿入されるＣＧセルの数を削減することができる。図９は、本発明によるＣＧ挿入制約スクリプト２４を利用した場合の論理合成結果（ネットリスト）の一例を示す図である。ここでは、ＣＧ挿入制約スクリプト２４によってＦ／Ｆ１１１へのＣＧセルの挿入が禁止された場合の論理合成結果の一例が示される。レジスタ１００の構造、及びＣＧセルの駆動能力が図８に示す一例と同じ条件である場合、論理合成においてＦ／Ｆ１１１以外のＦ／Ｆ１１２〜１１４に対して１つのＣＧセル１２０が挿入される。図９の一例では、図８に比べてＣＧセルが１つ削減されることとなる。このように、ＣＧセルの挿入をＦ／Ｆ毎に制御することで、レジスタに対して挿入するＣＧセルの数を削減することができる。
【００５４】
図１０は、本発明によるＣＧ挿入制約スクリプト２４を利用した場合の論理合成結果（ネットリスト）の他の一例を示す図である。ここでは、ＣＧ挿入制約スクリプト２４によってレジスタ１００全体へのＣＧセルの挿入が禁止された場合の論理合成結果の一例が示される。この場合、レジスタ１００に対してＣＧセルは挿入されないため、図８に比べてＣＧセルが２つ削減されることとなる。
【００５５】
以上のように、本発明によれば、アサーションベース検証によってＣＧ効果のないレジスタ（又はＦ／Ｆ）を特定し、当該レジスタ（又はＦ／Ｆ）へのＣＧセルの挿入を禁止することで、論理合成時に挿入され得る不要なＣＧセルを排除することができる。このように、無駄なＣＧセルの挿入を排除することで、半導体集積回路の回路面積を低減することができる。又、無駄なＣＧセルを削減することで、配線混雑も低減されるためレイアウト処理が容易となる。更に、低電力化に効果のないＣＧセルを排除しながら論理合成できるため、ＣＧセル削減のための後戻り処理が不要となりレイアウト半導体集積回路の設計ＴＡＴを短縮することができる。
【００５６】
第２の実施の形態
次に、図１１Ａ及び図１１Ｂを参照して、本発明による半導体集積回路の設計方法の第２の実施の形態を説明する。第２の実施の形態では、ステップＳ１０３におけるフォーマルシミュレーションの前に、ユーザの仕様に応じたテストパタンによるダイナミックシミュレーションを行うことで、フォーマルシミュレーション対象となる検証ポイントを絞り込むことができる。図１１Ａ及び図１１Ｂは、ダイナミックシミュレーションを併用した本発明による設計方法の一例を示すフロー図である。
【００５７】
図１１Ａを参照して、アサーション生成部４１は、図３Ａに示す動作と同様のステップＳ１０１、ステップＳ１０２の処理によりアサーション記述ファイル２２を生成する。
【００５８】
本一例のシミュレーション部４２は、シミュレーション部４２が、特定の入力信号に対する検証対象の回路の動作を検証するダイナミックシミュレーションを実行し、ダイナミックシミュレーションの結果によっても消費電力を低減する効果が得られるか否かが不明な回路に対してのみフォーマルシミュレーションを実行する。具体的には、フォーマルシミュレーションの前に、ＤＵＴ情報２０、検証ポイント情報２１、アサーション記述ファイル２２、テストパタン（図示なし）を利用して、ＤＵＴに対してダイナミックシミュレーションを実行する（ステップＳ２０１）。詳細には、ＣＰＵ１１が、記憶装置１３に記憶されている論理シミュレータを読み出し実行する。当該論理シミュレータが実行されることによってＣＰＵ１１が実現するシミュレーション部４２は、ＤＵＴ情報２０にアサーション記述ファイル２２を挿入し、シミュレーション用のＤＵＴ情報を作成する。この際、シミュレーション部４２は、アサーション記述ファイル２２から抽出したアサーション記述を、当該アサーション記述に紐付けられた検証ポイント情報２１に挿入する。これにより、ゲーティング効果を検証するためのアサーションモニタが、ステップＳ１０１において特定されたＤＵＴ情報２０における検証ポイントに挿入されることとなる。シミュレーション部４２は、アサーション記述が挿入されたＤＵＴ情報２０とテストパタンを入力として、検証対象のレジスタ（あるいはＦ／Ｆ）に対するダイナミックシミュレーションを実行する。
【００５９】
シミュレーション部４２は、ダイナミックシミュレーション結果に基づいてＣＧ効果を判定する（ステップＳ２０２）。ここでは、テストパタンに応じてアサーション検証された検証ポイント毎にＣＧ効果判定が行われる。このため、判定結果は、テストパタンに応じた検証ポイントに対する判定結果となる。シミュレーション部４２は、当該判定結果を記憶装置１３に書き込む。ステップＳ２０２において、ＣＧ効果ありと判定された検証ポイント（レジスタ）は、少なくともテストパタンに応じた動作時においてＣＧ効果があるため、フォーマルシミュレーションせずともＣＧセルの挿入対象と設定され得る。このため、シミュレーション部４２は、ダイナミックシミュレーションの結果として得られた前記判定結果を記憶装置１３から読み出し、ダイナミックシミュレーションで効果有りと判定された検証ポイント（レジスタ）をアサーション検証対象から外して、次工程であるフォーマルシミュレーションを実行する（ステップＳ１０３）。
【００６０】
図１１Ｂに示すステップＳ１０３〜Ｓ１０７までの処理は、図３Ａ及び図３Ｂと同様であるが、本一例では、ダイナミックシミュレーション結果に応じてアサーション検証の対象となるレジスタ（Ｆ／Ｆ）を検証対象から除外してフォーマルシミュレーションを実行する。換言すると、ダイナミック検証の結果に応じて絞り込まれたアサーション記述のみがＤＵＴ情報２０に追加され、当該ＤＵＴ情報に対してフォーマルシミュレーションが行われる。フォーマルシミュレーションでは、絞りこまれたアサーション記述（アサーションモニタ）のみを検証すればよいため、検証時間の短縮化が期待できる。
【００６１】
尚、ダイナミックシミュレーションで利用するアサーション記述（アサーションモニタ）とフォーマルシミュレーションで利用するアサーション記述（アサーションモニタ）は、ＣＧ効果判定ができれば、同一の動作条件及び動作仕様が規定されても、異なる動作条件及び動作仕様が規定されてもどちらでも良い。例えば、“イネーブル信号が変化した場合、レジスタ出力が変化する”を規定したアサーション記述をダイナミックシミュレーションで利用し、“イネーブル信号が変化しても、レジスタ出力は変化しない”を規定したアサーション記述をフォーマルシミュレーションで利用してもよい。この場合、ダイナミックシミュレーションにおいて、イネーブル信号が変化したときにレジスタ出力が変化するレジスタは、ＣＧ効果ありのため、フォーマル検証対象から除外される。
【００６２】
以上、本発明の実施の形態を詳述してきたが、具体的な構成は上記実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。上述した一例では、アサーション生成部４１は、アサーション検証ポイントを特定するための論理シミュレータや消費電力解析ツールの機能を有していたが、これに限らず、他の装置において出力された消費電力解析結果を利用して、検証ポイント情報２１を取得してもよい。すなわち、設計支援プログラム４０には、論理シミュレータや消費電力解析ツールが含まれなくてもよい。
【符号の説明】
【００６３】
１０：設計支援装置
１１：ＣＰＵ
１２：ＲＡＭ
１３：記憶装置
１４：入力装置
１５：出力装置
１６：バス
２０：ＤＵＴ情報
２１：検証ポイント情報
２２：アサーション記述ファイル
２３：ＣＧ効果レジスタファイル
２４：ＣＧ挿入制約スクリプト
２５：ネットリスト
３０：制約スクリプト
４０：設計支援プログラム
４１：アサーション生成部
４２：シミュレーション部
４３：ＣＧ挿入制約生成部
４４：論理合成部
１００：レジスタ
１２０〜１２２：クロックゲーティングセル（ＣＧセル）
２１１：クロック識別子
２１２：イネーブル識別子
２１３：レジスタ識別子
【図１】
2012221119.tif 000003
【図２】
2012221119.tif 000004
【図３Ａ】
2012221119.tif 000005
【図３Ｂ】
2012221119.tif 000006
【図４】
2012221119.tif 000007
【図５】
2012221119.tif 000008
【図６】
2012221119.tif 000009
【図７】
2012221119.tif 000010
【図８】
2012221119.tif 000011
【図９】
2012221119.tif 000012
【図１０】
2012221119.tif 000013
【図１１Ａ】
2012221119.tif 000014
【図１１Ｂ】
2012221119.tif 000015