(57)【要約】【課題】本発明は、クロックゲーティングにおける消費電力の削減効果を向上させる。【解決手段】半導体集積回路設計支援装置１は、半導体集積回路の設計情報としてクロックゲーティング論理回路情報を生成するに際して、半導体集積回路の回路情報と、半導体集積回路の設計上のセル配置における制約情報と、を取得し、制約情報から半導体集積回路の回路動作におけるユースケース情報を抽出する。半導体集積回路設計支援装置１は、抽出したユースケース情報と回路情報に基づいて、クロックゲーティング論理回路情報を抽出する。【選択図】          図１
2017097685.tif 000002
【特許請求の範囲】
【請求項１】
半導体集積回路の設計情報としてクロックゲーティング論理回路情報を生成する半導体集積回路設計支援装置であって、
前記半導体集積回路の回路情報を取得する回路情報取得手段と、
前記半導体集積回路の設計上のセル配置における制約情報を取得する制約情報取得手段と、
前記制約情報から前記半導体集積回路の回路動作における現状事例としてのユースケース情報を抽出するユースケース情報抽出手段と、
前記ユースケース情報と前記回路情報に基づいて、クロックゲーティング論理回路情報を抽出する論理回路情報抽出手段と、
を備えていることを特徴とする半導体集積回路設計支援装置。
【請求項２】
前記半導体集積回路設計支援装置は、
前記回路情報の示す回路のうち、特定の回路に対する前記論理回路情報抽出手段によって抽出された前記クロックゲーティング論理回路情報の適用の適否を判断する適否判断手段を、
さらに備えていることを特徴とする半導体集積回路設計支援装置。
【請求項３】
半導体集積回路設計支援装置は、
セルライブラリを取得するライブラリ取得手段と、
前記論理回路情報抽出手段によって抽出された前記クロックゲーティング論理回路情報と前記セルライブラリに基づいて前記回路情報を変更する回路情報変更手段と、
前記回路情報変更手段で変更された回路情報を出力する出力手段と、
を、さらに備えていることを特徴とする請求項１または請求項２記載の半導体集積回路設計支援装置。
【請求項４】
半導体集積回路設計支援装置は、
セルライブラリを取得するライブラリ取得手段と、
前記論理回路情報抽出手段によって抽出された前記クロックゲーティング論理回路情報情報と前記回路情報からクロックゲーティング論理回路の挿入された回路情報を、前記セルライブラリを利用して論理合成する論理合成手段を、
さらに備えていることを特徴とする請求項１から請求項３のいずれかに記載の半導体集積回路設計支援装置。
【請求項５】
半導体集積回路の設計情報としてクロックゲーティング論理回路情報を生成する半導体集積回路設計支援方法であって、
前記半導体集積回路の回路情報を取得する回路情報取得処理ステップと、
前記半導体集積回路の設計上のセル配置における制約情報を取得する制約情報取得処理ステップと、
前記制約情報から前記半導体集積回路の回路動作における現状事例としてのユースケース情報を抽出するユースケース情報抽出処理ステップと、
前記ユースケース情報と前記回路情報に基づいて、クロックゲーティング論理回路情報を抽出する論理回路情報抽出処理ステップと、
を有することを特徴とする半導体集積回路設計支援方法。
【請求項６】
制御プロセッサに、
半導体集積回路の回路情報を取得する回路情報取得処理と、
半導体集積回路の設計上のセル配置における制約情報を取得する制約情報取得処理と、
前記制約情報から前記半導体集積回路の回路動作における現状事例としてのユースケース情報を抽出するユースケース情報抽出処理と、
前記ユースケース情報と前記回路情報に基づいて、クロックゲーティング論理回路情報を抽出する論理回路情報抽出処理と、
を実行させることを特徴とするプログラム
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路設計支援装置、半導体集積回路設計支援方法及びプログラムに関し、詳細には、半導体集積回路における消費電力を削減させる半導体集積回路設計支援装置、半導体集積回路設計支援方法及びプログラムに関する。
【背景技術】
【０００２】
近年、半導体集積回路の大規模化に伴い、半導体集積回路の消費電力を低減する設計手法が要望されている。半導体集積回路の消費電力を低減する設計手法の一つとして、動作していないフリップフロップのクロックを、短時間であっても停止させるクロックゲーティングという設計手法がある。
【０００３】
従来、このクロックゲーティングによる半導体集積回路の設計においては、図１７に示すように行われている。すなわち、図１７に示すように、半導体集積回路のクロックゲーティング手法では、まず、回路設計工程で回路仕様に基づいた回路設計を行って（ステップＳ１０１）、ＨＤＬ（Hardware description language）で記述した回路情報を作成して保存する（ステップＳ１０２）。
【０００４】
この回路情報は、例えば、図１８に示すように、Verilog-HDLで記述された回路情報であり、回路情報の１行目で、モジュール名が、「DUT」であることが宣言されている。この回路情報は、２〜５行目のステートメントで、「CLK」と「IN」と「EN」の３つの入力ポートを持ち、「OUT」の１つの出力ポート、「REG」というレジスタを持つことが記述されている。これらの入出力ポートやデータタイプは、全て１ビットである。回路情報は、７〜９行目の手続き代入文で、「CLK」の立ち上がりエッジで、「EN」が「HI」のとき、入力信号「IN」がレジスタ「REG」にノンブロッキング代入されるという論理が記述されている。さらに、回路情報は、１１行目の継続代入文において、出力ポート「OUT」に「REG」が代入されることが記述されている。すなわち、「DUT」モジュールは、入力信号「EN」が「HI」のとき、入力信号「IN」を「CLK」の立ち上がりでラッチし、「OUT」へ出力する。
【０００５】
この回路情報は、図１９に示すような「DUT」モジュールとして回路表現することができる。図１９において、この「DUT]回路は、入力信号「IN」がレジスタ「REG」へ伝播するか、レジスタ「REG」の値が保持されるかは、入力信号「EN」をセレクト信号とするマルチプレクサ「MP]で決定される回路となっている。この場合、REGが「IN」の値を取り込むかどうかにかかわらずレジスタ「REG」へクロックは常に供給される。この「DUT]回路は、レジスタ「REG」へクロックが供給されると電力が消費される。
【０００６】
次に、クロックゲーティング手法では、ＨＤＬで記述された回路情報からクロックゲーティング論理回路情報を抽出するクロックゲーティング論理回路情報抽出工程を行う（ステップＳ１０３）。次に、クロックゲーティング手法では、回路情報に対してクロックゲーティング論理回路情報を挿入するかどうか判定するクロックゲーティング可否判定工程処理を行う（ステップＳ１０４）。クロックゲーティング手法では、クロックゲーティング可否判定結果に基づいて、セルライブラリからクロックゲーティング論理回路情報を取得してマッピングするクロックゲーティング論理回路挿入工程処理を行う（ステップＳ１０５）。クロックゲーティング手法では、最後に、論理合成を行いＩＣＧ回路挿入済みのクロックゲーティング済み回路情報（NETLIST）を生成する論理合成工程処理を行って、ＣＫＧ（clock gate）済み回路情報を保管する（ステップＳ１０６）。なお、クロックゲーティング手法では、論理合成を実施することなく、ＨＤＬの回路情報を出力することもある。
【０００７】
上記クロックゲーティング手法を、図１８及び図１９に示した回路に適用して、クロックゲーティング論理回路を挿入すると、図２０に示すようなクロックゲーティング論理回路挿入済み回路となる。
【０００８】
すなわち、上記図１８の回路情報では、レジスタ「REG」のクロック入力に、ＩＣＧ回路（セル）が挿入されている。ＩＣＧ回路は、その出力がレジスタ「REG」のクロック端子に接続されるアンド回路と、「EN]と反転「CLK]が入力されて、その出力がアンド回路に接続されているラッチ「ＬＴ」とを備えている。また、ＩＣＧ回路は、そのアンド回路に、「CLK]が入力されている。ＩＣＧ回路は、「CLK」の立ち上がり時の「EN」信号が「HI（High)」であると、「IN」の値を取り込み、「EN」信号が「LO（Low)」であると、「IN」の値を取り込まない。
【０００９】
そこで、クロックゲーティング手法では、「EN」信号が「LO」のとき、レジスタ「REG」へのクロックを停止するようにゲーティング回路を挿入して、レジスタ「REG」が、「IN」の値を取り込むことをなくし、論理的に等価な回路とする。
【００１０】
すなわち、データラインのイネーブル論理を、クロックのON／OFFの論理に変換する手法が、一般的なクロックゲーティング手法である。
【００１１】
上記ＩＣＧ回路とよばれるクロックゲーティング専用セルは、セルライブラリとして提供されることが一般的である。
【００１２】
なお、上記図１８〜図２０の例では、フリップフロップ（レジスタ「REG」）が１つであるため、ＩＣＧの出力クロックが停止しても、ＩＣＧセル中のＬＴのクロックは動作しているため、消費電力削減効果は低い。
【００１３】
しかし、ＩＣＧセルの出力クロックの先に繋がるフリップフロップの数が多くなると、消費電力を低く抑えることができ、クロックゲーティングによる消費電力削減効果が向上する。
【００１４】
すなわち、いま、「REG」、「LT」のクロックが立ち上がる度に、「１」の電力を消費するものとすると、図１９では、フリップフロップ（「REG」）が１つで常にクロックが動作しているため、「１」の電力消費である。図２０では、「REG]の消費電力が「０」になる代わりに、「LT」の電力消費が「１」となり、「１」の電力が消費される。すなわち、図１９では、図２０のようにクロックゲーティングを行っても消費電力を減らすことができない。
【００１５】
ところが、図１９のフリップフロップ「FF]が、１０個あったものとすると、図２０では、フリップフロップ「FF」の消費電力が「０」になる代わりに、「LT」の電力消費が「１」となり、「１」の電力消費となる。したがって、クロックゲーティングを行うことで、「９」の電力消費を削減することができる。
【００１６】
そして、上記図１７におけるクロックゲーティング可否判定は、このような消費電力削減効果を勘案して、クロックゲーティングを実施すべきか否かを決定する。
【００１７】
ところが、従来の上述のようなクロックゲーティング手法は、ユースケース（現状事例）を十分に考慮したクロックゲーティングとはなっていないという問題があった。
【００１８】
そして、従来、１つ以上のフリップフロップが含まれる回路の仕様が記述されている回路仕様情報と、前記回路の動作を検証するための検証パタンが記述されている検証パタン情報とを入力する情報入力部と、前記回路仕様情報と前記検証パタン情報とを用いて、前記回路の動作の論理検証を行う論理検証実行部と、前記回路に含まれるフリップフロップごとに、前記論理検証実行部によって論理検証が行われている間のフリップフロップの入力値と出力値の遷移を監視し、監視結果に基づき、フリップフロップごとに、クロックゲーティングの対象とするか否かを判断するクロックゲーティング判断部と、前記クロックゲーティング判断部によりクロックゲーティングの対象とされたフリップフロップにクロックゲーティング回路が接続されるように、前記回路仕様情報を書き換える情報書換え部とを有する情報処理装置が提案されている（特許文献１参照）。
【００１９】
すなわち、この従来技術は、検証パタン情報で回路動作の論理検証を行うことで、フリップフロップ毎のクロックゲーティングの対象とするか否かの判断を行うことで、消費電力の低減の適切化を図っている。
【発明の概要】
【発明が解決しようとする課題】
【００２０】
しかしながら、上記公報記載の従来技術にあっては、単に、検証パタン情報で回路動作の論理検証を行っているのみであるため、ユースケースを正確に抽出することができず、クロックゲーティングにおける消費電力の削減効果を向上させる上で、改良の必要があった。
【００２１】
そこで、本発明は、クロックゲーティングにおける消費電力の削減効果を向上させることを目的としている。
【課題を解決するための手段】
【００２２】
上記目的を達成するために、請求項１記載の半導体集積回路設計支援装置は、半導体集積回路の設計情報としてクロックゲーティング論理回路情報を生成する半導体集積回路設計支援装置であって、前記半導体集積回路の回路情報を取得する回路情報取得手段と、前記半導体集積回路の設計上のセル配置における制約情報を取得する制約情報取得手段と、前記制約情報から前記半導体集積回路の回路動作における現状事例としてのユースケース情報を抽出するユースケース情報抽出手段と、前記ユースケース情報と前記回路情報に基づいて、クロックゲーティング論理回路情報を抽出する論理回路情報抽出手段と、を備えていることを特徴としている。
【発明の効果】
【００２３】
本発明によれば、クロックゲーティングにおける消費電力の削減効果を向上させることができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の一実施例を適用した半導体集積回路設計支援装置のブロック構成図。
【図２】半導体集積回路設計支援装置の機能ブロック図。
【図３】クロックゲーティング処理を示すフローチャート。
【図４】回路情報の一例を示す図。
【図５】制約情報の一例を示す図。
【図６】抽出されたクロックゲーティング論理回路の組み込まれた回路図。
【図７】従来のクロックゲーティング方式でクロックゲーティング論理回路を組み込んだ場合の回路図。
【図８】他の回路情報の一例を示す図。
【図９】図８の回路情報の回路図。
【図１０】図８、図９の回路の状態遷移図。
【図１１】図９の回路にクロックゲーティング論理回路を挿入した回路図。
【図１２】図１０の状態遷移の制約情報を示す図。
【図１３】図８の回路に入力信号SELの追加された回路情報を示す図。
【図１４】図１３の回路情報の状態遷移図。
【図１５】図１４の状態遷移に付加する制約情報を示す図。
【図１６】図１４の状態遷移に図１５の制約を付加した状態遷移図。
【図１７】従来のクロックゲーティング処理を示すフローチャート。
【図１８】回路情報の一例を示す図。
【図１９】図１８の回路情報の示す回路図。
【図２０】図１９の回路にクロックゲーティング論理回路を挿入した回路図。
【発明を実施するための形態】
【００２５】
以下、本発明の好適な実施例を添付図面に基づいて詳細に説明する。なお、以下に述べる実施例は、本発明の好適な実施例であるので、技術的に好ましい種々の限定が付されているが、本発明の範囲は、以下の説明によって不当に限定されるものではなく、また、本実施の形態で説明される構成の全てが本発明の必須の構成要件ではない。
【実施例１】
【００２６】
図１〜図１６は、本発明の半導体集積回路設計支援装置、半導体集積回路設計支援方法及びプログラムの一実施例を示す図であり、図１は、本発明の半導体集積回路設計支援装置、半導体集積回路設計支援方法及びプログラムの一実施例を適用した半導体集積回路設計支援装置１のブロック構成図である。
【００２７】
図１において、半導体集積回路設計支援装置１は、通常のハードウェア構成及びソフトウェア構成のコンピュータに、本発明の半導体集積回路設計支援方法を実行するプログラムを搭載することで構築されている。半導体集積回路設計支援装置１は、半導体集積回路の設計情報としてクロックゲーティング論理回路情報を生成する半導体集積回路設計支援装置である。なお、本実施例の半導体集積回路設計支援装置１は、１台のコンピュータで構築されているが、複数台のコンピュータや大容量記憶装置と演算装置等がＬＡＮ（Local Area Network）、インターネット等のネットワークで接続されることで構築されていてもよい。
【００２８】
半導体集積回路設計支援装置１は、ＣＰＵ（Central Processing Unit）２、ＲＯＭ（Read Only Memory）３、ＲＡＭ（Random Access Memory）４、不揮発性メモリ５、入力Ｉ／Ｆ（Input／Output）６、出力Ｉ／Ｆ７及び外部Ｉ／Ｆ８等を備えている。半導体集積回路設計支援装置１は、上記各部が、バス９により接続されている。
【００２９】
入力Ｉ／Ｆ６には、キーボード、マウス、スタイラスペン、タッチパネル等の入力デバイス１１が接続され、入力Ｉ／Ｆ６は、入力デバイス１１から入力される各種命令等をＣＰＵ２へ出力する。
【００３０】
出力Ｉ／Ｆ７には、ディスプレイ、ランプ、スピーカ、プリンタ等の出力デバイス１２が接続され、出力Ｉ／Ｆ７は、ＣＰＵ２の制御下で、出力デバイス１２に表示データ、点滅データ、音声データ、記録データ等の出力データを出力する。
【００３１】
外部Ｉ／Ｆ８は、ネットワーク、外部記憶装置等が接続される。外部Ｉ／Ｆ８は、ＣＰＵ２の制御下で、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）やＳＭＴＰ（Simple Mail Transfer Protocol ）／ＰＯＰ（Point Of Production ）等のプロトコルの制御を行って通信を行う。また、外部Ｉ／Ｆ８は、ＣＰＵ２の制御下で、外部記憶装置等へのデータの書き込み及び外部記憶装置等からのデータの読み出しを行う。
【００３２】
ＲＯＭ３は、コンピュータのＯＳ（Operating System）、半導体集積回路設計支援装置１としての基本プログラム、本発明の半導体集積回路設計支援方法を実行するプログラム及びシステムデータ等を記憶している。
【００３３】
ＲＡＭ４は、ＣＰＵ２のワークメモリとして利用され、半導体集積回路設計支援方法の実行に伴う各種データ等を記憶する。
【００３４】
ＣＰＵ２は、ＲＯＭ３内のプログラムに基づいて、ＲＡＭ４をワークメモリとして利用して、半導体集積回路設計支援装置１の各部を制御して、半導体集積回路設計支援装置１としての基本処理を実行する。また、ＣＰＵ２は、ＲＯＭ３内の半導体集積回路設計支援方法のプログラムに基づいて、本発明の半導体集積回路設計支援方法を実行する。
【００３５】
不揮発性メモリ５は、ＮＶＲＡＭ（Nonvolatile Random Access Memory）、ＳＳＤ（Solid State Drive）、ハードディスク等が用いられ、半導体集積回路設計支援装置１の電源がＯＦＦのときにも記憶内容を保持するメモリである。
【００３６】
不揮発性メモリ５は、半導体集積回路設計支援装置１の電源がＯＦＦのときにも記憶内容を保持する必要のあるデータとして、例えば、システム設定値や本発明の半導体集積回路設計支援機器管理方法で使用する各種データがＣＰＵ２の制御下で格納される。
【００３７】
そして、半導体集積回路設計支援装置１は、ＲＯＭ、ＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory ）、ＥＰＲＯＭ、フラッシュメモリ、フレキシブルディスク、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory ）、ＣＤ−ＲＷ（Compact Disc Rewritable ）、ＤＶＤ（Digital Versatile Disk）、ＵＳＢ（Universal Serial Bus）メモリ、ＳＤ（Secure Digital）カード、ＭＯ（Magneto-Optical Disc）等のコンピュータが読み取り可能な記録媒体に記録されている本発明の半導体集積回路設計支援方法を実行するプログラムを読み込んでＲＯＭ３や不揮発性メモリ５に導入することで、後述するクロックゲーティングにおける消費電力の削減効果を向上させる半導体集積回路設計支援方法を実行する半導体集積回路設計支援装置として構築されている。この半導体集積回路設計支援方法を実行するプログラムは、アセンブラ、Ｃ、Ｃ＋＋、Ｃ＃、Ｊａｖａ（登録商標）等のレガシープログラミング言語やオブジェクト指向プログラミング言語等で記述されたコンピュータ実行可能なプログラムであり、上記記録媒体に格納して頒布することができる。
【００３８】
半導体集積回路設計支援装置１は、上記半導体集積回路設計支援方法を実行するプログラムが導入されることで、図２に示す機能ブロックが構築される。すなわち、半導体集積回路設計支援装置１は、該プログラムが導入されると、図２に示すように、回路情報取得部２１、制約情報取得部２２、ユースケース情報抽出部２３、論理回路情報抽出部２４、適否判断部２５、ライブラリ取得部２６、回路情報変更部２７、出力部２８及び論理合成部２９が構築される。
【００３９】
回路情報取得部２１は、外部Ｉ／Ｆ８で構築され、外部Ｉ／Ｆ８に接続される外部メモリや外部装置（コンピュータ等）から半導体集積回路の回路情報を取得する。したがって、回路情報取得部２１は、回路情報取得手段として機能している。
【００４０】
制約情報取得部２２は、外部Ｉ／Ｆ８で構築され、外部Ｉ／Ｆ８に接続される外部メモリや外部装置（コンピュータ等）から半導体集積回路の設計上のセル配置における制約情報を取得する。したがって、制約情報取得部２２は、制約情報取得手段として機能している。
【００４１】
ユースケース情報抽出部２３は、ＣＰＵ２により構築され、前記制約情報から前記半導体集積回路の回路動作における現状事例としてのユースケース情報を抽出する。したがって、ユースケース情報抽出部２３は、ユースケース情報抽出手段として機能している。
【００４２】
論理回路情報抽出部２４は、ＣＰＵ２により構築され、前記ユースケース情報と前記回路情報に基づいて、クロックゲーティング論理回路情報を抽出する。したがって、論理回路情報抽出部２４は、論理回路抽出手段として機能している。
【００４３】
また、適否判断部２５は、ＣＰＵ２により構築され、前記回路情報の示す回路のうち、特定の回路に対する論理回路情報抽出部２４によって抽出されたクロックゲーティング論理回路情報の適用の適否を判断する。したがって、適否判断部２５は、適否判断手段として機能している。
【００４４】
ライブラリ取得部２６は、外部Ｉ／Ｆ８により構築され、外部Ｉ／Ｆ８に接続される外部メモリや外部装置（コンピュータ等）からセルライブラリを取得する。したがって、ライブラリ取得部２６は、ライブラリ取得手段として機能している。
【００４５】
回路情報変更部２７は、ＣＰＵ２により構築され、論理回路情報抽出部２４によって抽出されたクロックゲーティング論理回路情報とセルライブラリに基づいて、回路情報取得部２１の取得した回路情報を変更する。したがって、回路情報変更部２７は、回路情報変更手段として機能している。
【００４６】
出力部２８は、外部Ｉ／Ｆ８、出力Ｉ／Ｆ及び出力デバイス１２により構築され、回路情報変更部２７で変更された回路情報を、外部メモリ、外部装置（コンピュータ等）、出力デバイス１２へ出力する。したがって、出力部２８は、出力手段として機能している。
【００４７】
論理合成部２９は、ＣＰＵ２により構築され、論理回路情報抽出部２４によって抽出されたクロックゲーティング論理回路情報と回路情報取得部２１の取得した回路情報からクロックゲーティングの挿入された回路情報を、セルライブラリを利用して論理合成する。論理合成部２９の合成する回路情報は、NETLISTの回路情報である。したがって、論理合成部２９は、論理合成手段として機能している。
【００４８】
次に、本実施例の作用を説明する。本実施例の半導体集積回路設計支援装置１は、クロックゲーティングにおける消費電力の削減効果を向上させる。
【００４９】
半導体集積回路設計支援装置１は、クロックゲーティング処理が開始されると、図３に示すように、回路情報l取得部２１が、外部メモリや外部装置（コンピュータ等）から半導体集積回路の回路情報を取得する（ステップＳ２０１）。
【００５０】
いま、回路情報取得部２１は、例えば、図４に示すような回路情報を取得する。図４に示す回路情報は、図１８、図１９に示した回路情報を、２入力、２出力としたものと同じである。この回路情報では、２つのフリップフロップによるレジスタ「REG1]とレジスタ「REG2」がある。この回路情報では、「CLK」の立ち上がりで、「EN１」が「HI」のとき、「IN1」の値を「REG１」に取り込んで、「OUT1」に出力し、「CLK」の立ち上がりで、「EN2」が「HI」のとき、「IN2」の値を「REG2」に取り込んで、「OUT2」に出力する。なお、図４の回路情報は、後述するように、制約情報から抽出されたユースケース情報によってクロックゲーティングの効果を向上させることのできる回路の回路情報の一例となっている。
【００５１】
半導体集積回路設計支援装置１は、制約情報取得部２２が、外部メモリや外部装置（コンピュータ等）から半導体集積回路の設計上のセル配置における制約情報を取得する（ステップＳ２０２）。
【００５２】
この制約情報は、例えば、図５に示すような情報であり、System Verilog Assertionという言語で記述された設計制約情報である。図５に示す制約情報は、いま、mt0と、mt1が記述されている。mt0は、クロック「CLK」の立ち上がりで、「EN1」が「HI」のとき、「EN2」は「HI」であることを表しており、mt1は、「CLK」の立ち上がりで、「EN1」が「LO」のとき、「EN2」は「LO」であることを表している。すなわち、「EN1」と「EN2」は、常に同じ値をとることを示している。なお、System verilog assertionは、制約情報の記述例を示すための一例であり、制約情報は、System verilog assertion以外の言語で記述されていてもよい。このSystem Verilog Assertionは、IEEE Standard 1800-2005 として標準化し、2009年に IEEE 1800-2009 として改定されているSystem Verilog のサブセットとして規定されている。
【００５３】
半導体集積回路設計支援装置１は、次に、ユースケース情報抽出部２３が、制約情報からユースケース情報を抽出する（ステップＳ２０３）。ユースケース情報抽出部２３は、制約情報が上記図５の制約情報である場合、上述のように、「EN1」と「EN2」は、常に同じ値をとるというユースケース情報を抽出する。
【００５４】
そして、論理回路情報抽出部２４が、抽出されたユースケース情報と回路情報に基づいて、クロックゲーティング論理回路情報を抽出する（ステップＳ２０４）。
【００５５】
具体的には、論理回路情報抽出部２４は、回路情報が図４に示した回路情報で、制約情報が図５に示した制約情報であって、上記ユースケース情報が抽出されていると、図６に示すような回路情報のクロックゲーティング論理回路情報を抽出する。
【００５６】
図６において、「DUT]モジュールの回路は、２つのレジスタ「REG1」、「REG2」を有し、クロックゲーティング論理回路である「ICG」が１つ組み込まれている。
【００５７】
すなわち、図４に示した回路情報で、従来のクロックゲーティング手法によるクロックゲーティング回路を組み込むと、図７に示すように、各「REG1」、「REG2」に、それぞれ「ICG」が組み込まれたものとなる。この場合、「EN1」が「LO」のとき、「REG1」は「IN1」を取り込まないので、クロックを止めることができる。また、「EN2」が「LO」のとき、「REG2」は、「IN2」を取り込まないので、クロックをとめることができる。なお、「EN1」、「EN2」は、外部から与えられる情報であり、論理回路からだけでは関連性を読み取ることはできない。
【００５８】
ところが、本実施例の半導体集積回路設計支援装置１は、図４の回路情報の回路に対して、論理回路情報抽出部２４が、制約情報から抽出されたユースケース情報と回路情報に基づいて、図６に示したように、１つの「ICG」の情報のみを抽出する。
【００５９】
すなわち、図６の回路において、「EN1」が「LO」のとき、「REG1」は「IN1」を取り込まないため、クロックを止めることができる。また、図６の回路において、「EN2」が「LO」のとき、「REG2」は「IN2」を取り込まないため、クロックを止めることができる。さらに、図６の回路において、「EN2」が「LO」のとき、「REG1」は「IN1」を取り込まないため、クロックを止めることができ、「EN1」が「LO」のとき、「REG2」は「IN2」を取り込まないため、クロックを止めることができる。したがって、「EN2」で「REG1」のクロックを止めることができ、「ICG」を１つにまとめることができる。なお、図６では、「REG2」に対して「ICG」を配置して、「EN2」で、「REG1」と「REG2」のクロックを止めているが、「REG1」に対して「ICG」を配置して、「EN1」で、「REG1」と「REG2」のクロックを止めるようにしてもよい。
【００６０】
そして、論理回路情報抽出部２４の抽出したクロックゲート論理回路情報を挿入した回路情報を出力部２８が出力する（ステップＳ２０５）。半導体集積回路設計支援装置１は、このクロックゲート論理回路挿入回路情報を、不揮発性メモリ５に格納したり、外部Ｉ／Ｆ８を介して外部メモリや外部のコンピュータ等の外部装置へ出力する。
【００６１】
したがって、図４の回路情報の回路に対して、挿入するクロックゲート論理回路（「ECG」）を、１つに絞ることができ、常に動作しているラッチ（「LT」）の数を削減することができる。その結果、クロックゲーティングにおける消費電力をより一層削減することができる。
【００６２】
なお、上記説明においては、２つのレジスタ「REG1」、「REG2」が、それぞれ入力「IN」とイネーブル「EN」を有している場合について説明したが、回路としては、上記回路に限るものではない。
【００６３】
例えば、回路情報は、図８に示すように、複数（図８では、３つ）の入力「IN0」、「IN1」、「IN2」と１つの出力「OUT」を有する回路であってもよい。図８の回路情報の場合、図９に示すような回路となり、３つの入力信号は、「CLK」の立ち上がりで、それぞれ「IN0」が「reg0」、「IN1」が「reg1」、「IN2」が「reg2」へ取り込まれる。ＦＳＭ（Finite State Machine：有限状態機械）の現在の「state」の値によって、出力レジスタ「oreg」、すなわち、出力「OUT」へ取り込む信号が変化する。なお、FSMの内部ステートを示すstate信号は、サイクル毎に、０→１→２→０・・・と変化する。
【００６４】
すなわち、図８及び図９の回路は、入力信号を一度レジスタ「reg0」、「reg1」、「reg2」で受けて、FSMの状態によって選択して、出力する回路である。
【００６５】
そして、半導体集積回路設計支援装置１は、上記図８及び図９に示した回路情報の遷移状態から、ユースケース情報抽出部２３が、ユースケースを抽出する。
【００６６】
すなわち、図８及び図９の回路情報の示す回路のステートマシンの状態遷移は、図１０のように示すことができる。図１０は、図８におけるstate==0の状態をA、state==1の状態をB、state==2の状態をCと表している。そして、上述のように、state信号は、０→１→２→０・・・と変化する。
【００６７】
ユースケース情報抽出部２３は、ステートマシンの状態遷移から、以下のようなユースケースを抽出する。
【００６８】
ａ）現在のステートがAのとき、次サイクルで必ずBへ遷移し、A、Cへ遷移することはない。
【００６９】
ｂ）現在のステートがBのとき、次サイクルで必ずCへ遷移し、B、Aへ遷移することはない。
【００７０】
ｃ）現在のステートがCのとき、次サイクルで必ずAへ遷移し、C、Bへ遷移することはない。
【００７１】
そして、論理回路情報抽出部２４は、上記ユースケース情報に基づいて、以下のクロックゲーティング論理回路情報を抽出する。
【００７２】
ａ）現在のステートがAのとき、次サイクルのステートがAではないため、「reg0」のクロックを止めることができる。
【００７３】
ｂ）現在のステートがAのとき、次サイクルのステートがCではないため、「reg2」のクロックを止めることができる。
【００７４】
ｃ）現在のステートがBのとき、次サイクルのステートがBではないため、「reg1」のクロックを止めることができる。
【００７５】
ｄ）現在のステートがBのとき、次サイクルのステートがAではないため、「reg0」のクロックを止めることができる。
【００７６】
ｅ）現在のステートがCのとき、次サイクルのステートがCではないため、「reg2」のクロックを止めることができる。
【００７７】
ｆ）現在のステートがCのとき、次サイクルのステートがBではないため、「reg1」のクロックを止めることができる。
【００７８】
半導体集積回路設計支援装置１は、論理回路情報抽出部２４が抽出した上記クロックゲーティグ論理回路情報の論理回路を組み込んだ回路として、図１１に示すような回路の回路情報を生成する。
【００７９】
すなわち、図１１の回路では、各レジスタ「reg0」、「reg1」、「reg2」に、それぞれクロックゲーティング回路「CKG」を配置されている。この場合、半導体集積回路設計支援装置１は、状態遷移図から、回路のユースケース情報を抽出し、抽出したユースケース情報を用いてクロックゲーティンを実施している。
【００８０】
すなわち、図１０に示した状態遷移は、System Verilog Assertionで記述した制約情報としては、図１２のように示すことができる。
【００８１】
図１２では、state==0の状態をA、state==1の状態をB、state==2の状態をCと表している。
【００８２】
図１２の制約情報は、次のような内容になっている。
【００８３】
ａ）stA-0は、前ステートがAであれば、現ステートはBであるという設計制約である。
【００８４】
ｂ）stB-0は、前ステートがBであれば、現ステートはCであるという設計制約である。
【００８５】
ｃ）stC-0は、前ステートがCであれば、現ステートはAであるという設計制約である。
【００８６】
ユースケース情報抽出部２３は、上記制約情報から、以下のようなユースケース情報を抽出する。
【００８７】
ａ）ステートAの次サイクルは、ステートA、ステートCではない。
【００８８】
ｂ）ステートBの次サイクルは、ステートB、ステートAではない。
【００８９】
ｃ）ステートCの次サイクルは、ステートC、ステートBではない。
【００９０】
論理回路情報抽出部２４は、上記ユースケース情報と回路情報に基づいて、以下のようなクロックゲーティング論理回路情報を抽出する。
【００９１】
ａ）現在のステートがAのとき、次サイクルのステートがAではないため、「reg0」のクロックを止めることができる。
【００９２】
ｂ）現在のステートがAのとき、次サイクルのステートがCではないため、「reg2」のクロックを止めることができる。
【００９３】
ｃ）現在のステートがBのとき、次サイクルのステートがBではないため、「reg1」のクロックを止めることができる。
【００９４】
ｄ）現在のステートがBのとき、次サイクルのステートがAではないため、「reg0」のクロックを止めることができる。
【００９５】
ｅ）現在のステートがCのとき、次サイクルのステートがCではないため、「reg2」のクロックを止めることができる。
【００９６】
ｆ）現在のステートがCのとき、次サイクルのステートがBではないため、「reg1」のクロックを止めることができる。
【００９７】
論理回路情報抽出部２４は、上記抽出結果から、図１１に示したようなクロックゲーティング回路を挿入した回路情報を生成する。
【００９８】
図８の説明で示したように、回路を静的に解析した結果（状態遷移図）から得られたユースケース、及びクロックゲーティング論理を、設計制約からも得ることができる。したがって、制約情報から得られるユースケース情報でクロックゲーティング論理を抽出することができる。
【００９９】
すなわち、いま、図８に示した回路情報に、入力信号「SEL」が追加されると、図１３に示すような回路情報となる。なお、図１３において、破線で囲った部分が、図８に対して追加された部分である。
【０１００】
図１３の回路情報では、state==1のときに「SEL」の値によってステートマシンの遷移先が分岐しており、状態遷移図としては、図１４のように示される。
【０１０１】
なお、図１４は、state==0の状態をA、state==1の状態をB、state==2の状態をCとしている。
【０１０２】
図１４に示す状態遷移は、リセットを除いて、以下のようになっている。
【０１０３】
ａ）現在のステートがAのとき、次サイクルで必ずBへ遷移し、A、Cへ遷移することはない。
【０１０４】
ｂ）現在のステートがBのとき、次サイクルでAかCへ遷移し、Bへ遷移（とどまる）ことはない。
【０１０５】
ｃ）現在のステートがCのとき、次サイクルで必ずAへ遷移し、C、Bへ遷移することはない。
【０１０６】
そこで、論理回路情報抽出部２４は、以下のようなクロックゲーティング論理回路情報を抽出する。
【０１０７】
ａ）現在のステートがAのとき、次サイクルのステートがAではないため、「reg0」のクロックを止めることができる。
【０１０８】
ｂ）現在のステートがAのとき、次サイクルのステートがCではないため、「reg2」のクロックを止めることができる。
【０１０９】
ｃ）現在のステートがBのとき、次サイクルのステートがBではないため、「reg1」のクロックを止めることができる。
【０１１０】
ｄ）現在のステートがCのとき、次サイクルのステートがCではないため、「reg2」のクロックを止めることができる。
【０１１１】
ｅ）現在のステートがCのとき、次サイクルのステートがBではないため、「reg1」のクロックを止めることができる。
【０１１２】
また、上記図１４の状態遷移図に対して、追加で、図１５に示すような制約情報を付加すると、状態遷移図は、図１６のようになる。
【０１１３】
すなわち、論理回路として、ステートBからステートAへ遷移する論理は存在するが、ユースケースとして存在しない場合がある。
【０１１４】
一般的には、ユースケースとして存在しないパスは、ＨＤＬを変更して最適化されるべきである。
【０１１５】
ところが、ＩＰの適用や回路の再利用等を行う場合では、ＨＤＬを変更しない場合がある。
【０１１６】
このような場合、論理検証時にステートBからステートAへの遷移が行われないことを制約情報として与えて、全てのテストシナリオで制約に違反しないことを確認する等の検証手法がとられることがある。
【０１１７】
図１３の論理回路の場合、モジュールの外側で「SEL」が「LO」に固定されていると、ステートBからステートAへは絶対に遷移しない。また、「SEL」自体はトグルすることがあるが、ステートBのときは必ず「LO」になるということもある。
【０１１８】
このようなユースケースによる制約情報は、論理回路を静的に解析するだけでは得ることはできず、外部から与える必要がある。
【０１１９】
そして、ステートBからステートAへ遷移しないという制約情報を、System Verilog Assertionで記述したのが、図１５である。
【０１２０】
本実施例の半導体集積回路設計支援装置１では、論理回路情報抽出部２４は、図１３の回路情報を静的に解析して、以下に示すようなクロックゲーティング論理を抽出する。
【０１２１】
ａ）現在のステートがAのとき、次サイクルのステートがAではないため、「reg0」のクロックを止めることができる。
【０１２２】
ｂ）現在のステートがAのとき、次サイクルのステートがCではないため、「reg2」のクロックを止めることができる。
【０１２３】
ｃ）現在のステートがBのとき、次サイクルのステートがBではないため、「reg1」のクロックを止めることができる。
【０１２４】
ｄ）現在のステートがCのとき、次サイクルのステートがCではないため、「reg2」のクロックを止めることができる。
【０１２５】
ｅ）現在のステートがCのとき、次サイクルのステートがBではないため、「reg1」のクロックを止めることができる。
【０１２６】
さらに、論理回路情報抽出部２４は、図１５の制約情報から得られたユースケース（ステートBからステートAへ遷移しない）情報から以下のようなクロックゲーティング論理回路情報を抽出する。
【０１２７】
ｆ）現在のステートがBのとき、次サイクルのステートがAではないため、「reg0」のクロックを止めることができる。
【０１２８】
したがって、制約情報を外部から与えることにより、クロックを止めることが可能な条件を増やすことができる。
【０１２９】
このように、本実施例の半導体集積回路設計支援装置１は、半導体集積回路の設計情報としてクロックゲーティング論理回路情報を生成する半導体集積回路設計支援装置であって、前記半導体集積回路の回路情報を取得する回路情報取得部（回路情報取得手段）２１と、前記半導体集積回路の設計上のセル配置における制約情報を取得する制約情報取得部（制約情報取得手段）２２と、前記制約情報から前記半導体集積回路の回路動作における現状事例としてのユースケース情報を抽出するユースケース情報抽出部（ユースケース情報抽出手段）２３と、前記ユースケース情報と前記回路情報に基づいて、クロックゲーティング論理回路情報を抽出する論理回路情報抽出部（論理回路情報抽出手段）２４と、を備えている。
【０１３０】
したがって、ユースケースを考慮したクロック論理回路情報を抽出することができ、クロックゲーティングにおける消費電力の削減効果を向上させることができる。
【０１３１】
また、本実施例の半導体集積回路設計支援装置１は、半導体集積回路の設計情報としてクロックゲーティング論理回路情報を生成する半導体集積回路設計支援方法であって、前記半導体集積回路の回路情報を取得する回路情報取得処理ステップと、前記半導体集積回路の設計上のセル配置における制約情報を取得する制約情報取得処理ステップと、前記制約情報から前記半導体集積回路の回路動作における現状事例としてのユースケース情報を抽出するユースケース情報抽出処理ステップと、前記ユースケース情報と前記回路情報に基づいて、クロックゲーティング論理回路情報を抽出する論理回路情報抽出処理ステップと、を有する半導体集積回路設計支援方法を実行する。
【０１３２】
したがって、ユースケースを考慮したクロック論理回路情報を抽出することができ、クロックゲーティングにおける消費電力の削減効果を向上させることができる。
【０１３３】
さらに、本実施例の半導体集積回路設計支援装置１は、ＣＰＵ２等の制御プロセッサに、半導体集積回路の回路情報を取得する回路情報取得処理と、半導体集積回路の設計上のセル配置における制約情報を取得する制約情報取得処理と、前記制約情報から前記半導体集積回路の回路動作における現状事例としてのユースケース情報を抽出するユースケース情報抽出処理と、前記ユースケース情報と前記回路情報に基づいて、クロックゲーティング論理回路情報を抽出する論理回路情報抽出処理と、を実行させるプログラムを搭載している。
【０１３４】
したがって、ユースケースを考慮したクロック論理回路情報を抽出することができ、クロックゲーティングにおける消費電力の削減効果を向上させることができる。
【０１３５】
また、本実施例の半導体集積回路設計支援装置１は、前記回路情報の示す回路のうち、特定の回路に対する前記論理回路情報抽出部２４によって抽出された前記クロックゲーティング論理回路情報の適用の適否を判断する適否判断部（適否判断手段）２５を、さらに備えている。
【０１３６】
したがって、ユースケースを考慮したクロック論理回路情報をより一層適切に抽出することができ、クロックゲーティングにおける消費電力の削減効果を適切かつより一層向上させることができる。
【０１３７】
さらに、本実施例の半導体集積回路設計支援装置１は、セルライブラリを取得するライブラリ取得部（ライブラリ取得手段）２６と、前記論理回路情報抽出部２４によって抽出された前記クロックゲーティング論理回路情報と前記セルライブラリに基づいて前記回路情報を変更する回路情報変更部（回路情報変更手段）２７と、前記回路情報変更部２７で変更された回路情報を出力する出力部（出力手段）２８と、を、さらに備えている。
【０１３８】
したがって、クロックゲーティング論理回路情報の組み込まれたＨＤＬの回路情報を出力することができる。
【０１３９】
また、本実施例の半導体集積回路設計支援装置１は、セルライブラリを取得するライブラリ取得部（ライブラリ取得手段）２６と、前記論理回路情報抽出部２４によって抽出された前記クロックゲーティング論理回路情報と前記回路情報からクロックゲーティング論理回路情報の挿入された回路情報を、前記セルライブラリを利用して論理合成する論理合成部（論理合成手段）２９を、さらに備えている。
【０１４０】
したがって、クロックゲーティング論理回路情報の組み込まれたNETLISTの回路情報を出力することができる。
【０１４１】
以上、本発明者によってなされた発明を好適な実施例に基づき具体的に説明したが、本発明は上記実施例で説明したものに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【０１４２】
１  半導体集積回路設計支援装置
２  ＣＰＵ
３  ＲＯＭ
４  ＲＡＭ
５  不揮発性メモリ
６  入力Ｉ／Ｆ
７  出力Ｉ／Ｆ
８  外部Ｉ／Ｆ
２１  回路情報取得部
２２  制約情報取得部
２３  ユースケース情報抽出部
２４  論理回路情報抽出部
２５  適否判断部
２６  ライブラリ取得部
２７  回路情報変更部
２８  出力部
２９  論理合成部
【先行技術文献】
【特許文献】
【０１４３】
【特許文献１】特開２０１３−２４２７１４号公報
【図１】
2017097685.tif 000003
【図２】
2017097685.tif 000004
【図３】
2017097685.tif 000005
【図４】
2017097685.tif 000006
【図５】
2017097685.tif 000007
【図６】
2017097685.tif 000008
【図７】
2017097685.tif 000009
【図８】
2017097685.tif 000010
【図９】
2017097685.tif 000011
【図１０】
2017097685.tif 000012
【図１１】
2017097685.tif 000013
【図１２】
2017097685.tif 000014
【図１３】
2017097685.tif 000015
【図１４】
2017097685.tif 000016
【図１５】
2017097685.tif 000017
【図１６】
2017097685.tif 000018
【図１７】
2017097685.tif 000019
【図１８】
2017097685.tif 000020
【図１９】
2017097685.tif 000021
【図２０】
2017097685.tif 000022