(57)【要約】【課題】設計者の設計負担の軽減、解析対象回路の信頼性の向上、および低消費電力化を実現すること。【解決手段】本発明のクロックゲーティング解析では、あらたに「クロックゲーティング状態」という概念を導入している。クロックゲーティング状態とは、同一時刻におけるクロックゲーティングＣＧｉ相互の状態変化をあらわしている。クロックゲーティング状態は、ローカルクロックＬＣｉの集合である。この状態には、活性化（ａｃｔｉｖｅ）と非活性化（ｎｏｎ−ａｃｔｉｖｅ）があり、活性化であれば、ローカルクロックＬＣｉをそのＦＦグループＡｉのＦＦに出力し、非活性化であれば、ローカルクロックＬＣｉの出力を止めている。【選択図】図３
2008197920.tif 000002
【特許請求の範囲】
【請求項１】
解析対象回路内の順序回路素子へクロックの供給または前記クロックの停止をおこなうクロックゲーティングを検出させる検出工程と、
前記検出工程によって検出されたクロックゲーティングから出力されるローカルクロックの活性化／非活性化を表現するクロックゲーティング関数を、前記クロックゲーティングごとに算出させるクロックゲーティング関数算出工程と、
前記クロックゲーティング関数算出工程によって算出された各クロックゲーティング関数に、前記各順序回路素子からの出力値の組み合わせを代入して、前記各クロックゲーティング関数の値の組み合わせを、前記ローカルクロック相互の活性化／非活性化をあらわすクロックゲーティング状態として算出することにより、前記各順序回路素子からの出力値の組み合わせから前記クロックゲーティング状態への変換をあらわす変換テーブルを作成させる変換テーブル作成工程と、
前記変換テーブル作成工程によって作成された変換テーブルに基づいて、前記解析対象回路における前記クロックゲーティング状態をすべて網羅するクロックゲーティング全状態集合を出力させる全状態集合出力工程と、
をコンピュータに実行させることを特徴とするクロックゲーティング解析プログラム。
【請求項２】
前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態が、前記全状態集合出力工程によって出力されたクロックゲーティング全状態集合を網羅している割合をあらわす状態網羅率を算出させる状態網羅率算出工程を前記コンピュータに実行させることを特徴とする請求項１に記載のクロックゲーティング解析プログラム。
【請求項３】
前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出させる次状態関数算出工程と、
前記変換テーブルと前記次状態関数算出工程によって算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成させる状態テーブル作成工程と、
前記全状態集合出力工程によって出力されたクロックゲーティング全状態集合と前記状態テーブル作成工程によって作成された状態テーブルとに基づいて、前記クロックゲーティング状態の状態遷移をあらわすクロックゲーティング状態遷移グラフを作成させるクロックゲーティング状態遷移グラフ作成工程と、
前記クロックゲーティング状態遷移グラフ作成工程によって作成されたクロックゲーティング状態遷移グラフの中から、前記クロックゲーティング状態の状態遷移枝をすべて抽出することにより、クロックゲーティング全状態遷移枝集合を出力させる全状態遷移枝集合出力工程と、
を前記コンピュータに実行させることを特徴とする請求項１に記載のクロックゲーティング解析プログラム。
【請求項４】
前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態遷移枝が、前記全状態遷移枝集合出力工程によって出力されたクロックゲーティング全状態遷移枝集合を網羅している割合をあらわす状態遷移枝網羅率を算出させる状態遷移枝網羅率算出工程を前記コンピュータに実行させることを特徴とする請求項３に記載のクロックゲーティング解析プログラム。
【請求項５】
前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出させる次状態関数算出工程と、
前記変換テーブルと前記次状態関数算出工程によって算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成させる状態テーブル作成工程と、
前記全状態集合出力工程によって出力されたクロックゲーティング全状態集合と前記状態テーブル作成工程によって作成された状態テーブルとに基づいて、前記クロックゲーティング状態の状態遷移をあらわすクロックゲーティング状態遷移グラフを作成させるクロックゲーティング状態遷移グラフ作成工程と、
前記クロックゲーティング状態遷移グラフ作成工程によって作成されたクロックゲーティング状態遷移グラフの中から、前記クロックゲーティングが非活性化状態から活性化状態に復帰しない状態遷移を抽出させる状態遷移抽出工程と、
を前記コンピュータに実行させることを特徴とする請求項１に記載のクロックゲーティング解析プログラム。
【請求項６】
請求項１〜５に記載のクロックゲーティング解析プログラムを記録した前記コンピュータに読み取り可能な記録媒体。
【請求項７】
解析対象回路内の順序回路素子へクロックの供給または前記クロックの停止をおこなうクロックゲーティングを検出する検出手段と、
前記検出手段によって検出されたクロックゲーティングから出力されるローカルクロックの活性化／非活性化を表現するクロックゲーティング関数を、前記クロックゲーティングごとに算出するクロックゲーティング関数算出手段と、
前記クロックゲーティング関数算出手段によって算出された各クロックゲーティング関数に、前記各順序回路素子からの出力値の組み合わせを代入して、前記各クロックゲーティング関数の値の組み合わせを、前記ローカルクロック相互の活性化／非活性化をあらわすクロックゲーティング状態として算出することにより、前記各順序回路素子からの出力値の組み合わせから前記クロックゲーティング状態への変換をあらわす変換テーブルを作成する変換テーブル作成手段と、
前記変換テーブル作成手段によって作成された変換テーブルに基づいて、前記解析対象回路における前記クロックゲーティング状態をすべて網羅するクロックゲーティング全状態集合を出力する全状態集合出力手段と、
備えることを特徴とするクロックゲーティング解析装置。
【請求項８】
解析対象回路内のクロックゲーティングから順序回路素子に供給されるローカルクロックを検出する検出工程と、
前記検出工程によって検出されたクロックゲーティングから出力されるローカルクロックの活性化／非活性化を表現するクロックゲーティング関数を、前記クロックゲーティングごとに算出するクロックゲーティング関数算出工程と、
前記クロックゲーティング関数算出工程によって算出された各クロックゲーティング関数に、前記各順序回路素子からの出力値の組み合わせを代入して、前記各クロックゲーティング関数の値の組み合わせを、前記ローカルクロック相互の活性化／非活性化をあらわすクロックゲーティング状態として算出することにより、前記各順序回路素子からの出力値の組み合わせから前記クロックゲーティング状態への変換をあらわす変換テーブルを作成する変換テーブル作成工程と、
前記変換テーブル作成工程によって作成された変換テーブルに基づいて、前記解析対象回路における前記クロックゲーティング状態をすべて網羅するクロックゲーティング全状態集合を出力する全状態集合出力工程と、
含んだことを特徴とするクロックゲーティング解析方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、半導体集積回路（ＬＳＩ）に組み込まれているクロックゲーティングを解析するクロックゲーティング解析プログラム、該プログラムを記録した記録媒体、クロックゲーティング解析装置、およびクロックゲーティング解析方法に関する。また、クロックゲーティング（機能）とは、ＬＳＩの低消費電力化の主要技術の一つであり、ＬＳＩ中で計算していない部分のクロック信号をクロック信号伝播のできるだけ根元で止め、不要なクロック信号の伝播による電力消費を抑える技術である。
【背景技術】
【０００２】
従来、クロックゲーティングは大きなブロック単位で人手により挿入されていたため、クロックゲーティング機能の動作は設計者が完全に把握できていた。そのため、これまでのクロックゲーティングの検証では、（１）個々のクロックゲーティングの制御信号が到達するタイミングが正常動作の範囲内かを検証するクロック系信号のタイミング検証（たとえば、下記特許文献１，２を参照。）と、（２）クロックゲーティング機能を考慮したデータ系信号のタイミング検証（たとえば、非特許文献１を参照。）とが、おこなわれていた。
【０００３】
また、クロックゲーティングのタイミング検証以外の検証としては、クロックゲーティングに関係する部分回路を抽出して描画する程度のツールが開示されている（たとえば、下記特許文献３を参照。）。
【０００４】
【特許文献１】特開平８−２０２５６９号公報
【特許文献２】特開平１１−２５９５５４号公報
【特許文献３】特開平１０−２８３３８１号公報
【非特許文献１】M.Kawarabayashi  他:「A Verification Technique for Gated Clock」（ア  ベリフィケーション  テクニック  フォア  ゲーテッド  クロック）, Proceedings of the Design Automation Conference（プロシーディングス  オブ  ザ  デザイン  オートメーション  カンファレンス）, pp.123-127, 1993
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、ＬＳＩの低消費電力化の要求はますます高まり、クロックゲーティングがより細かく挿入されたり、自動で挿入されたりするようになってきている。挿入されるクロックゲーティングの数が大幅に増え、設計者が個々のクロックゲーティング間の関係を統合的に把握するのはほぼ不可能になってきている。
【０００６】
このような状況の中で、クロックゲーティングの機能自体の検証洩れが問題になってきている。具体的には、クロックを止めるべきところで止められていない場合やクロックを止めてはいけないところで止まっていた場合、機能バグとして現れるため、検証洩れによる設計不良が問題となっている。また、クロックを止めたほうがよいのに止められていない場合、機能バグではないが無駄な電力消費をしてしまうという問題がある。消費電力については、近年その制約が厳しく、わずかな増加でもターゲット電力のオーバーにつながり問題となることが多い。
【０００７】
この発明は、上述した従来技術による問題点を解消するため、設計者の設計負担の軽減、解析対象回路の信頼性の向上、および低消費電力化を実現することができるクロックゲーティング解析プログラム、該プログラムを記録した記録媒体、クロックゲーティング解析装置、およびクロックゲーティング解析方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、この発明にかかるクロックゲーティング解析プログラム、該プログラムを記録した記録媒体、クロックゲーティング解析装置、およびクロックゲーティング解析方法は、解析対象回路内の順序回路素子へクロックの供給または前記クロックの停止をおこなうクロックゲーティングを検出し、検出されたクロックゲーティングから出力されるローカルクロックの活性化／非活性化を表現するクロックゲーティング関数を、前記クロックゲーティングごとに算出し、算出された各クロックゲーティング関数に、前記各順序回路素子からの出力値の組み合わせを代入して、前記各クロックゲーティング関数の値の組み合わせを、前記クロックゲーティング相互の活性化／非活性化をあらわすクロックゲーティング状態として算出することにより、前記各順序回路素子からの出力値の組み合わせから前記クロックゲーティング状態への変換をあらわす変換テーブルを作成し、作成された変換テーブルに基づいて、前記解析対象回路における前記クロックゲーティング状態をすべて網羅するクロックゲーティング全状態集合を出力することを特徴とする。
【０００９】
この発明によれば、クロックゲーティング解析において、個々のクロックゲーティング間の状態変化を考慮するために導入されたクロックゲーティング状態をすべて自動的に網羅することができる。
【００１０】
また、上記発明において、前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態が、前記全状態集合出力工程によって出力されたクロックゲーティング全状態集合を網羅している割合をあらわす状態網羅率を算出することとしてもよい。
【００１１】
この発明によれば、シミュレーションによる解析対象回路の機能バグを引き起こすクロックゲーティングのバグの検証漏れがどの程度存在するかを確認することができる。
【００１２】
また、上記発明において、前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態（以下、「検出クロックゲーティング状態」という）を除いたクロックゲーティング状態（以下、「非検出クロックゲーティング状態」という）を前記クロックゲーティング全状態集合の中から抽出し、前記変換テーブルを用いて、抽出された非クロックゲーティング状態を出現させる入力パタンを生成することとしてもよい。
【００１３】
この発明によれば、クロックゲーティング全状態集合に網羅されていないクロックゲーティングを出現させる入力パタンを自動生成することができる。またこれにより、状態網羅率を上昇させることができる。
【００１４】
また、上記発明において、前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出し、前記変換テーブルと算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成し、作成された状態テーブルにおける前記各順序回路素子からの現時刻および次時刻の出力値の組み合わせに基づいて、前記解析対象回路の状態遷移をあらわす回路状態遷移グラフを作成し、前記非検出クロックゲーティング状態を次時刻のクロックゲーティング状態とすることにより、作成された回路状態遷移グラフにおいて、前記非検出クロックゲーティング状態に対応する次時刻の出力値の組み合わせから初期状態までの状態遷移を探索し、探索された探索結果を、抽出された非クロックゲーティング状態を出現させる入力パタンとして出力することとしてもよい。
【００１５】
この発明によれば、クロックゲーティング全状態集合に網羅されていないクロックゲーティングを出現させる入力パタンを自動生成することができる。またこれにより、状態網羅率を上昇させることができる。
【００１６】
また、上記発明において、前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出し、前記変換テーブルと算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成し、出力されたクロックゲーティング全状態集合と作成された状態テーブルとに基づいて、前記クロックゲーティング状態の状態遷移をあらわすクロックゲーティング状態遷移グラフを作成し、作成されたクロックゲーティング状態遷移グラフの中から、前記クロックゲーティング状態の状態遷移枝をすべて抽出することにより、クロックゲーティング全状態遷移枝集合を出力することとしてもよい。
【００１７】
この発明によれば、クロックゲーティング解析において、個々のクロックゲーティング間の状態変化を考慮するために導入されたクロックゲーティング状態遷移枝をすべて自動的に網羅することができる。
【００１８】
また、上記発明において、前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態遷移枝が、出力されたクロックゲーティング全状態遷移枝集合を網羅している割合をあらわす状態遷移枝網羅率を算出することとしてもよい。
【００１９】
この発明によれば、シミュレーションによる解析対象回路の機能バグを引き起こすクロックゲーティングのバグの検証漏れがどの程度存在するかを確認することができる。
【００２０】
また、上記発明において、前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態遷移枝（以下、「検出クロックゲーティング状態遷移枝」という）を除いたクロックゲーティング状態遷移枝（以下、「非検出クロックゲーティング状態遷移枝」という）を前記クロックゲーティング全状態遷移枝集合の中から抽出し、前記変換テーブルを用いて、抽出された非クロックゲーティング状態遷移枝を出現させる入力パタンを生成することとしてもよい。
【００２１】
この発明によれば、クロックゲーティング全状態遷移枝集合に網羅されていないクロックゲーティングを出現させる入力パタンを自動生成することができる。またこれにより、状態遷移枝網羅率を上昇させることができる。
【００２２】
また、上記発明において、前記状態テーブルにおける前記各順序回路素子からの現時刻および次時刻の出力値の組み合わせに基づいて、前記解析対象回路の状態遷移をあらわす回路状態遷移グラフを作成し、前記非検出クロックゲーティング状態遷移枝を次時刻のクロックゲーティング状態遷移枝とすることにより、作成された回路状態遷移グラフにおいて、前記非クロックゲーティング状態遷移枝に対応する回路状態遷移枝から初期状態までの状態遷移を探索し、探索された探索結果を、前記非クロックゲーティング状態遷移枝を出現させる入力パタンとして出力することとしてもよい。
【００２３】
この発明によれば、クロックゲーティング全状態遷移枝集合に網羅されていないクロックゲーティングを出現させる入力パタンを自動生成することができる。またこれにより、状態遷移枝網羅率を上昇させることができる。
【００２４】
また、上記発明において、前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出し、前記変換テーブルと算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成し、出力されたクロックゲーティング全状態集合と作成された状態テーブルとに基づいて、前記クロックゲーティング状態の状態遷移をあらわすクロックゲーティング状態遷移グラフを作成し、作成されたクロックゲーティング状態遷移グラフの中から、前記クロックゲーティングが非活性化状態から活性化状態に復帰しない状態遷移を抽出することとしてもよい。
【００２５】
この発明によれば、クロックゲーティング機能のバグ検出を網羅的におこなうことができる。
【００２６】
また、上記発明において、出力されたクロックゲーティング全状態集合の中の任意のクロックゲーティング状態を、任意のローカルクロックを活性化状態から非活性化状態にしたクロックゲーティング状態に変換し、変換後のクロックゲーティング状態の中から、クロックゲーティング全状態集合内のクロックゲーティング状態と一致するものを削除することにより、クロックゲーティングミス状態候補を生成することとしてもよい。
【００２７】
この発明によれば、クロックを活性化状態（クロックを供給する状態）にしなくてもよいのに、活性化状態（クロックを止めている状態）になっているクロックゲーティングミス状態候補を意図的に自動生成することができる。
【００２８】
また、上記発明において、生成されたクロックゲーティングミス状態候補が、前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出される特定のクロックゲーティング状態を含んでいるか否かを判断させるとともに、変換対象となったクロックゲーティングにより駆動される順序回路素子の出力値が変化するか否かを判断し、判断された判断結果に基づいて、前記クロックゲーティングミス状態候補から前記特定のクロックゲーティング状態を削除することとしてもよい。
【００２９】
この発明によれば、シミュレーション結果により、クロックゲーティングミス状態候補を絞り込むことができる。
【発明の効果】
【００３０】
本発明にかかるクロックゲーティング解析プログラム、該プログラムを記録した記録媒体、クロックゲーティング解析装置、およびクロックゲーティング解析方法によれば、設計者の設計負担の軽減、解析対象回路の信頼性の向上、および低消費電力化を実現することができるという効果を奏する。
【発明を実施するための最良の形態】
【００３１】
以下に添付図面を参照して、この発明にかかるクロックゲーティング解析プログラム、該プログラムを記録した記録媒体、クロックゲーティング解析装置、およびクロックゲーティング解析方法の好適な実施の形態を詳細に説明する。
【００３２】
（クロックゲーティング解析装置のハードウェア構成）
まず、この発明の実施の形態にかかるクロックゲーティング解析装置のハードウェア構成について説明する。図１は、この発明の実施の形態にかかるクロックゲーティング解析装置のハードウェア構成を示すブロック図である。
【００３３】
図１において、クロックゲーティング解析装置１００は、コンピュータ本体１１０と、入力装置１２０と、出力装置１３０と、から構成されており、不図示のルータやモデムを介してＬＡＮ，ＷＡＮやインターネットなどのネットワーク１４０に接続可能である。
【００３４】
コンピュータ本体１１０は、ＣＰＵ，メモリ，インターフェースを有する。ＣＰＵは、クロックゲーティング解析装置１００の全体の制御を司る。メモリは、ＲＯＭ，ＲＡＭ，ＨＤ，光ディスク１１１，フラッシュメモリから構成される。メモリはＣＰＵのワークエリアとして使用される。
【００３５】
また、メモリには各種プログラムが格納されており、ＣＰＵからの命令に応じてロードされる。ＨＤおよび光ディスク１１１はディスクドライブによりデータのリード／ライトが制御される。また、光ディスク１１１およびフラッシュメモリはコンピュータ本体１１０に対し着脱自在である。インターフェースは、入力装置１２０からの入力、出力装置１３０への出力、ネットワーク１４０に対する送受信の制御をおこなう。
【００３６】
また、入力装置１２０としては、キーボード１２１、マウス１２２、スキャナ１２３などがある。キーボード１２１は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式であってもよい。マウス１２２は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。スキャナ１２３は、画像を光学的に読み取る。読み取られた画像は画像データとして取り込まれ、コンピュータ本体１１０内のメモリに格納される。なお、スキャナ１２３にＯＣＲ機能を持たせてもよい。
【００３７】
また、出力装置１３０としては、ディスプレイ１３１、プリンタ１３２、スピーカ１３３などがある。ディスプレイ１３１は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。また、プリンタ１３２は、画像データや文書データを印刷する。またスピーカ１３３は、効果音や読み上げ音などの音声を出力する。
【００３８】
（解析対象回路の一例）
つぎに、この発明の実施の形態にかかるクロックゲーティング解析装置１００の解析対象となる解析対象回路について説明する。図２は、この発明の実施の形態にかかるクロックゲーティング解析装置１００の解析対象となる解析対象回路の一例を示す回路図である。
【００３９】
図２において、解析対象回路２００は、論理合成後のネットリストなどの設計データによって表現される。この解析対象回路２００には、クロックゲーティングＣＧｉ（ｉ＝１，２，…）が設けられている。クロックゲーティングＣＧｉとは、順序回路素子（たとえば、フリップフロップ回路。以下、「ＦＦ」と称す。）に出力されるクロックの出力を制御する回路であり、たとえば、ＡＮＤ回路などの論理ゲートなどにより構成されている。
【００４０】
より具体的には、クロックゲーティングＣＧｉの出力端子はＦＦのクロック端子に接続されており、一の入力端子はクロックを取り込み、他の入力端子が制御信号を取り込むことにより、クロックをクロックゲーティングで止めたり、出力先（直接間接を問わない）の順序回路素子のクロック端子に出力したりする。このように、クロックゲーティングＣＧｉから出力先の順序回路素子に出力されるクロックｃｌｋをローカルクロックＬＣｉと称す。
【００４１】
また、同一のローカルクロックＬＣｉをクロック端子から取り込むＦＦを、「ローカルクロックＬＣｉのＦＦグループＡｉ」と称す。たとえば、ローカルクロックＬＣ１のＦＦグループＡ１はＦＦ２およびＦＦ３から構成され、ローカルクロックＬＣ２のＦＦグループＡ２はＦＦ４およびＦＦ５から構成され、ローカルクロックＬＣ３のＦＦグループＡ３はＦＦ６およびＦＦ７から構成される。
【００４２】
なお、ＦＦ１は、いずれのローカルクロックＬＣｉも取り込まないため、どのＦＦグループＡｉにも属さない。また、図２中、符号ｘ１〜ｘ３は、それぞれＦＦ１，ＦＦ４，ＦＦ５の入力の値であり、符号ｙ１〜ｙ７は、それぞれＦＦ１〜ＦＦ７からの出力値である。
【００４３】
（クロックゲーティング状態）
つぎに、この発明の実施の形態にかかるクロックゲーティング状態について説明する。図３は、図２に示した解析対象回路２００のクロックゲーティング状態を示す説明図である。クロックゲーティング状態とは、同一時刻におけるクロックゲーティングＣＧｉ相互の状態変化をあらわしている。クロックゲーティング状態は、ローカルクロックＬＣｉの集合である。この状態には、活性化（ａｃｔｉｖｅ）と非活性化（ｎｏｎ−ａｃｔｉｖｅ）があり、活性化であれば、ローカルクロックＬＣｉをそのＦＦグループＡｉのＦＦに出力し、非活性化であれば、ローカルクロックＬＣｉの出力は非活性値固定（例えばポジティブエッジトリガＦＦの場合は０、ネガティブエッジトリガＦＦの場合は１）である。
【００４４】
（クロックゲーティング解析装置１００の機能的構成１）
つぎに、この発明の実施の形態にかかるクロックゲーティング解析装置１００の機能的構成１について説明する。図４は、この発明の実施の形態にかかるクロックゲーティング解析装置１００の機能的構成１を示すブロック図である。図４におけるクロックゲーティング解析装置１００では、解析対象回路２００のクロックゲーティング状態（以下、「ＣＧ状態」と称す。）の集合（以下、「ＣＧ全状態集合」と称す。）を生成する構成である。
【００４５】
クロックゲーティング解析装置１００は、クロックゲーティング検出部４０１と、クロックゲーティング関数（以下、「ＣＧ関数」と称す。）算出部４０２と、変換テーブル作成部４０３と、ＣＧ全状態集合出力部４０４と、から構成されている。これら各機能４０１〜４０４は、メモリに格納された当該機能に関するプログラムをＣＰＵに実行させることにより、当該機能を実現することができる。
【００４６】
また、各機能４０１〜４０４からの出力データはメモリに保持される。また、図４中矢印で示した接続先の機能的構成は、接続元の機能的構成からの出力データをメモリから読み込んで、当該機能に関するプログラムをＣＰＵに実行させる。
【００４７】
まず、クロックゲーティング検出部４０１は、解析対象回路２００に関するネットリストなどの設計データ４００を取り込んで、設計データ４００により表現される解析対象回路２００に存在するクロックゲーティングＣＧｉを検出する。具体的には、クロックソースからＦＦまでの間に存在するセルのうち、バッファおよびインバータ以外のセル（たとえば、上述したＡＮＤ回路）をクロックゲーティングとして検出する。
【００４８】
また、ＣＧ関数算出部４０２は、クロックゲーティング検出部４０１によって検出されたクロックゲーティングＣＧｉから出力されるローカルクロックＬＣｉの活性化／非活性化を表現するＣＧ関数を算出する。ＣＧ関数とは、クロックゲーティングＣＧｉにおいて、クロックｃｌｋの入力端子以外の他の入力端子に入力される制御信号の値を表現する関数である。以降、クロックゲーティングＣＧｉのＣＧ関数をｆｉと称す。このＣＧ関数ｆｉはクロックゲーティングＣＧｉの（現時刻における）ローカルクロックＬＣｉの活性化／非活性化を表している。
【００４９】
たとえば、クロックゲーティングＣＧ１は、ＦＦ１の出力ｙ１を制御信号として取り込むため、クロックゲーティングＣＧ１のＣＧ関数ｆ１は、下記式（１）となる。
【００５０】
ｆ１＝ｙ１・・・（１）
【００５１】
また、クロックゲーティングＣＧ２は、その前段のＮＡＮＤ回路からの出力を制御信号として取り込むため、クロックゲーティングＣＧ２のＣＧ関数ｆ２は、下記式（２）となる。
【００５２】
ｆ２＝（ｙ１×ｙ２×ｙ３）’・・・（２）
なお、「×」は論理積、「’」は否定である。
【００５３】
また、クロックゲーティングＣＧ３は、その前段のＯＲ回路からの出力を制御信号として取り込むため、クロックゲーティングＣＧ３のＣＧ関数ｆ３は、下記式（３）となる。
【００５４】
ｆ３＝ｙ１’＋ｙ２＋ｙ３・・・（３）
なお、「＋」は論理和である。
【００５５】
また、変換テーブル作成部４０３は、ＣＧ関数算出部４０２によって算出されたＣＧ関数ｆｉに基づいて、その入力元となるＦＦからの出力値の組み合わせからＣＧ状態への変換テーブルＴ１を作成する。
【００５６】
具体的には、クロックゲーティングＣＧｉへの入力元となるＦＦからの出力値ｙｊの組み合わせと、クロックゲーティングＣＧｉにおける各ＣＧ関数ｆｉの組み合わせに変換する真理値表を変換テーブルＴ１として作成する。
【００５７】
図２の解析対象回路２００を例に挙げて説明する。図５は、図２に示した解析対象回路２００に関する変換テーブルＴ１を示す説明図である。クロックゲーティングＣＧ１〜ＣＧ３の入力元となるＦＦはＦＦ１〜ＦＦ３であり、その出力値はそれぞれｙ１，ｙ２，ｙ３であるため、出力値の組み合わせ｛ｙ１，ｙ２，ｙ３｝は、８通り存在する。この８通りの組み合わせ｛ｙ１，ｙ２，ｙ３｝を、ＣＧ関数ｆ１〜ｆ３に代入することで、変換後の｛ｆ１，ｆ２，ｆ３｝を得ることができる。
【００５８】
ここで、ＣＧ関数ｆｉ＝１であれば、そのローカルクロックゲーティングＬＣｉは活性化状態となるため、そのＦＦグループ内のＦＦのクロック端子にローカルクロックＬＣｉを供給することとなる。したがって、図５に示した｛ｆ１，ｆ２，ｆ３｝は、クロックゲーティング状態そのものをあらわしており、「１」が活性化状態、「０」が非活性化状態をあらわすこととなる。
【００５９】
たとえば、図５において、｛ｆ１，ｆ２，ｆ３｝＝｛０，１，１｝である場合、クロックゲーティングＣＧ１がそのＦＦグループＡ１内のＦＦのクロック端子へのローカルクロックＬＣ１の供給を停止し、クロックゲーティングＣＧ２がそのＦＦグループＡ２内のＦＦのクロック端子にローカルクロックＬＣ２を供給し、かつ、クロックゲーティングＣＧ３がそのＦＦグループＡ３内のＦＦのクロック端子にローカルクロックＬＣ３を供給していることをあらわしている。
【００６０】
また、図４において、ＣＧ全状態集合出力部４０４は、変換テーブル作成部４０３によって作成された変換テーブルＴ１に基づいて、ＣＧ全状態集合Ｓを出力する。ＣＧ全状態集合Ｓとは、ＣＧ状態をすべて網羅するＣＧ状態の集合である。
【００６１】
具体的には、たとえば、変換テーブルＴ１では、クロックゲーティングＣＧ１〜ＣＧ３の入力元となるＦＦ１〜ＦＦ３の出力値｛ｙ１，ｙ２，ｙ３｝の組み合わせをすべて網羅しているため、その変換結果であるＣＧ状態｛ｆ１，ｆ２，ｆ３｝をまとめることで、ＣＧ全状態集合Ｓを得ることができる。すなわち、重複している｛ｆ１，ｆ２，ｆ３｝を一つにすることで、ＣＧ全状態集合Ｓを得ることができる。
【００６２】
図５に示した変換テーブルＴ１を例に挙げると、ＣＧ状態｛ｆ１，ｆ２，ｆ３｝は３つのＣＧ関数ｆ１〜ｆ３の組み合わせであるため、最大で８個出現するが、重複するＣＧ状態が存在するため、ＣＧ状態｛ｆ１，ｆ２，ｆ３｝は｛０，１，１｝，｛１，１，０｝，｛１，１，１｝，｛１，０，１｝の４通りである。
【００６３】
（クロックゲーティング解析装置１００のクロックゲーティング解析処理手順１）
つぎに、この発明の実施の形態にかかるクロックゲーティング解析装置１００のクロックゲーティング解析処理手順１について説明する。図６は、この発明の実施の形態にかかるクロックゲーティング解析装置１００のクロックゲーティング解析処理手順１を示すフローチャートである。
【００６４】
図６において、まず、メモリに保持されている設計データ４００を読み込み（ステップＳ６０１）、クロックゲーティング検出部４０１により、解析対象回路２００内のクロックゲーティングＣＧｉを検出する（ステップＳ６０２）。そして、クロックゲーティングＣＧｉのインデックスｉ＝１，クロックゲーティング検出数ｎとし（ステップＳ６０３）、ＣＧ関数算出部４０２により、クロックゲーティングＣＧｉのＣＧ関数ｆｉを算出する（ステップＳ６０４）。
【００６５】
そして、ｉ＞ｎであるか否かを判断し（ステップＳ６０５）、ｉ＞ｎでない場合（ステップＳ６０５：Ｎｏ）、ｉを１つインクリメントし（ステップＳ６０６）、ステップＳ６４に戻る。一方、ｉ＞ｎである場合（ステップＳ６０５：Ｙｅｓ）、変換テーブル作成部４０３により変換テーブルＴ１を作成する（ステップＳ６０７）。そして、ＣＧ全状態集合出力部４０４により、ＣＧ全状態集合Ｓを出力する（ステップＳ６０８）。
【００６６】
このように、上述したクロックゲーティング解析装置１００の機能的構成１およびクロックゲーティング解析処理手順１によれば、時刻ごとのクロックゲーティングＣＧｉ相互の状態変化を自動生成することができる。
【００６７】
（クロックゲーティング解析装置１００の機能的構成２）
つぎに、この発明の実施の形態にかかるクロックゲーティング解析装置１００の機能的構成２について説明する。この機能的構成２では、図４に示した機能的構成１で生成されたＣＧ全状態集合Ｓを用いて、ＣＧ状態の状態網羅率の算出と、その状態網羅率を上昇させる入力パタンの生成をおこなう。なお、図４に示した構成と同一構成については同一符号を付し、その説明を省略する。
【００６８】
図７は、この発明の実施の形態にかかるクロックゲーティング解析装置１００の機能的構成２を示すブロック図である。クロックゲーティング解析装置１００は、シミュレーション実行部７０１と、状態網羅率算出部７０２と、非検出ＣＧ状態抽出部７０３と、入力パタン生成部７０４とから構成されている。これら各機能７０１〜７０４は、メモリに格納された当該機能に関するプログラムをＣＰＵに実行させることにより、当該機能を実現することができる。
【００６９】
また、各機能７０１〜７０４からの出力データはメモリに保持される。また、図７中矢印で示した接続先の機能的構成は、接続元の機能的構成からの出力データをメモリから読み込んで、当該機能に関するプログラムをＣＰＵに実行させる。
【００７０】
まず、シミュレーション実行部７０１は、設計データ４００に対して任意の入力パタン（以下、「第１の入力パタンＰ１」と称す。）Ｐ１を与えることで、解析対象回路２００の回路シミュレーションを実行する。シミュレーション実行部７０１は、既存の解析ツールで実現することができる。このシミュレーション実行結果から、時刻ごとのＣＧ状態が検出される。このように、シミュレーション実行部７０１によるシミュレーション実行結果により検出されたＣＧ状態を「検出ＣＧ状態７１０」と称す。
【００７１】
ＣＧ全状態集合Ｓは、解析対象回路２００において発生するすべてのＣＧ状態を網羅しているため、検出ＣＧ状態７１０はすべてＣＧ全状態集合Ｓに含まれることとなる。
【００７２】
また、状態網羅率算出部７０２は、検出ＣＧ状態７１０がＣＧ全状態集合Ｓを網羅する状態網羅率ＲＳを算出する。すなわち、ＣＧ全状態集合ＳのＣＧ状態数が分母の値となり、検出ＣＧ状態７１０のＣＧ状態数が分子の値となって、状態網羅率ＲＳが算出される。たとえば、検出ＣＧ状態７１０が｛０１１｝，｛１１０｝，｛１１１｝の３個である場合、図５に示したＣＧ全状態集合Ｓのうち３個のＣＧ状態が網羅されているため、状態網羅率ＲＳ＝３／４となる。
【００７３】
また、非検出ＣＧ状態抽出部７０３は、ＣＧ全状態集合Ｓの中から検出ＣＧ状態７１０以外のＣＧ状態（以下、「非検出ＣＧ状態７２０」と称す。）を抽出する。たとえば、図５に示したＣＧ全状態集合Ｓのうち検出ＣＧ状態７１０が｛０１１｝，｛１１０｝，｛１１１｝である場合、｛１０１｝が非検出ＣＧ状態７２０として特定される。
【００７４】
また、入力パタン生成部７０４は、非検出ＣＧ状態７２０を網羅する入力パタン（以下、「第２の入力パタンＰ２」と称す。）を生成する。この入力パタン生成部７０４について具体的に説明する。
【００７５】
図８は、入力パタン生成部７０４の詳細な機能的構成を示すブロック図である。図８において、入力パタン生成部７０４は、次状態関数算出部８０１と、状態テーブル作成部８０２と、回路状態遷移グラフ作成部８０３と、探索部８０４と、出力部８０５とから構成されている。まず、次状態関数算出部８０１は、設計データ４００を解析することにより、ＦＦの次状態関数ｚｊを算出する。次状態関数ｚｊは、各ＦＦの次時刻における出力を表現する関数である。
【００７６】
図２に示した解析対象回路２００を用いて説明する。ＦＦ１には毎時刻ｘ１が入力されるため、次状態関数ｚ１は、下記式（４）の通りである。
【００７７】
ｚ１＝ｘ１・・・（４）
【００７８】
また、現時刻においてＦＦ１〜ＦＦ３からｙ１〜ｙ３が出力された場合、ＦＦ２の前段のＡＮＤ回路の出力が次時刻のＦＦ２の出力として取り込まれる。したがって、次状態関数ｚ２は、下記式（５）の通りである。
【００７９】
ｚ２＝ｙ１’×ｙ３・・・（５）
【００８０】
また、現時刻においてＦＦ１〜ＦＦ３からｙ１〜ｙ３が出力された場合、ＦＦ３の前段のＮＯＲ回路の出力が次時刻のＦＦ３の出力として取り込まれる。したがって、次状態関数ｚ３は、下記式（６）の通りである。
【００８１】
ｚ３＝（ｙ１＋ｙ２）’・・・（６）
【００８２】
また、状態テーブル作成部８０２は、次状態関数算出部８０１によって算出された次状態関数ｚｊと、変換テーブルＴ１とに基づいて、状態テーブルＴ２を作成する。状態テーブルＴ２とは、入力パタンｘ１と、現時刻におけるＦＦの出力｛ｙ１，ｙ２，ｙ３｝と、次時刻におけるＦＦの出力｛ｚ１，ｚ２，ｚ３｝と、現時刻におけるＣＧ状態｛ｆ１，ｆ２，ｆ３｝と、次時刻におけるＣＧ状態｛ｇ１，ｇ２，ｇ３｝とを関連付けたテーブルである。
【００８３】
図９は、図２に示した解析対象回路２００に関する状態テーブルＴ２を示す説明図である。状態テーブルＴ２の左から１列目には、入力ｘ１の値が示されている。また２列目には、現時刻におけるＦＦの出力｛ｙ１，ｙ２，ｙ３｝の値が示されている。なお、ここでは｛ｙ１，ｙ２，ｙ３｝＝｛０，０，０｝を初期状態の値とする。
【００８４】
また、２列目には、次時刻におけるＦＦの出力｛ｚ１，ｚ２，ｚ３｝の値が示されている。｛ｚ１，ｚ２，ｚ３｝の各値は、その左の｛ｙ１，ｙ２，ｙ３｝の次時刻の出力値をあらわしている。
【００８５】
また、３列目には、現時刻におけるＣＧ状態｛ｆ１，ｆ２，ｆ３｝が示されている。｛ｆ１，ｆ２，ｆ３｝の各値は、現時刻におけるＦＦの出力｛ｙ１，ｙ２，ｙ３｝の値を変換テーブルＴ１を用いて変換することにより得られる値である。
【００８６】
また、４列目には、次時刻におけるＣＧ状態｛ｇ１，ｇ２，ｇ３｝が示されている。｛ｇ１，ｇ２，ｇ３｝の各値は、次時刻におけるＦＦの出力｛ｚ１，ｚ２，ｚ３｝の値を変換テーブルＴ１の｛ｆ１，ｆ２，ｆ３｝として代入して変換することにより、変換結果｛ｆ１，ｆ２，ｆ３｝として得られる値である。
【００８７】
また、図８において、回路状態遷移グラフ作成部８０３は、状態テーブルＴ２の左側２列を用いて解析対象回路２００の状態遷移グラフＧ１（以下、「回路状態遷移グラフＧ１」と称す。）を作成する。ただし、クロックゲーティング関数を求めることが目的であるため、回路の状態として考慮するＦＦはクロックゲーティング関数に含まれるＦＦとそのＦＦの次状態関数に含まれるＦＦ回路の状態として考慮するＦＦのみとする。図１０は、回路状態遷移グラフＧ１を示す説明図である。
【００８８】
楕円で囲われた数字列は、ＦＦの出力をあらわすノード（現時刻におけるＦＦの出力｛ｙ１，ｙ２，ｙ３｝の値）であり、矢印は状態遷移枝である。矢印の始端側のノードは遷移元のノードであり、矢印の終端側のノードは遷移先のノード（次時刻におけるＦＦの出力｛ｚ１，ｚ２，ｚ３｝の値）である。なお、｛０００｝は初期状態をあらわすノードである。
【００８９】
また、探索部８０４は、非検出クロックゲーティング状態７２０を次時刻のクロックゲーティング状態とすることにより、回路状態遷移グラフ作成部８０３によって作成された回路状態遷移グラフＧ１において、非検出クロックゲーティング状態７２０に対応する次時刻の出力値の組み合わせから初期状態までの状態遷移を探索する。具体的には、回路状態遷移グラフＧ１において、初期状態におけるＦＦの出力｛ｙ１，ｙ２，ｙ３｝＝｛０，０，０｝から非検出ＣＧ状態７２０を出現させる次時刻におけるＦＦの出力｛ｚ１，ｚ２，ｚ３｝の値までの各状態遷移時の入力ｘ１の値および当該各状態遷移時の時刻を第２の入力パタンＰ２として探索する。
【００９０】
また、出力部８０５は、探索部８０４によって探索された第２の入力パタンＰ２を出力する。具体的には、たとえば、メモリへの格納でもよく出力装置からの出力でもよい。
【００９１】
ここで探索部８０４の探索処理について詳細に説明する。まず、次時刻におけるＣＧ状態が非検出ＣＧ状態７２０となる入力ｘ１の値、現時刻におけるＦＦの出力、次時刻におけるＦＦの出力を状態テーブルＴ２から検索する。
【００９２】
図１１は、状態テーブルＴ２からの検索例（その１）を示す説明図である。たとえば、非検出ＣＧ状態７２０が｛１１１｝である場合、次時刻におけるＣＧ状態が｛ｇ１，ｇ２，ｇ３｝＝｛１１１｝となるｘ１，｛ｙ１，ｙ２，ｙ３｝，｛ｚ１，ｚ２，ｚ３｝を状態テーブルＴ２から検索する（図１１中、ハッチングで表示）。
【００９３】
そして、検索結果となる現時刻におけるＦＦの出力｛ｙ１，ｙ２，ｙ３｝の値から次時刻におけるＦＦの出力｛ｚ１，ｚ２，ｚ３｝の値への状態遷移枝を、回路状態遷移グラフＧ１から検出する。図１２は、図１１に示した検索結果からの状態遷移枝の検出例を示す説明図である。
【００９４】
図１１に示した検索結果では、｛ｙ１，ｙ２，ｙ３｝＝｛０００｝であり、｛ｚ１，ｚ２，ｚ３｝＝｛１０１｝である。したがって、｛０００｝であるノードＮ０から｛１０１｝であるノードＮ１に遷移する状態遷移枝ｅ０１を検出する。この状態遷移枝ｅ０１の状態遷移時の入力ｘ１の値は、図１１に示した検索結果よりｘ１＝１であることがわかる。
【００９５】
つぎに、状態遷移元であるノードＮ０が初期状態のノードであるか否かを判断する。ノードＮ０の値は｛ｙ１，ｙ２，ｙ３｝＝｛０００｝であるため初期状態である。したがって、時刻ｔ＝０（初期状態）が状態遷移枝ｅ０１の状態遷移時の入力ｘ１の値（ｘ１＝１）と対応付けられ、探索された入力パタン（第２の入力パタンＰ２）は、『時刻ｔ＝０（初期状態）で入力ｘ１＝１』となる。
【００９６】
また、非検出ＣＧ状態７２０が｛１１１｝である場合、次時刻におけるＣＧ状態が｛ｇ１，ｇ２，ｇ３｝＝｛１１１｝となるｘ１，｛ｙ１，ｙ２，ｙ３｝，｛ｚ１，ｚ２，ｚ３｝がもう一組存在する。図１３は、状態テーブルＴ２からの検索例（その２）を示す説明図である。図１３中、このときの検索結果は、符号１３０１で示す行（ハッチングで表示）である。
【００９７】
そして、検索結果となる現時刻におけるＦＦの出力｛ｙ１，ｙ２，ｙ３｝の値から次時刻におけるＦＦの出力｛ｚ１，ｚ２，ｚ３｝の値への状態遷移枝を、回路状態遷移グラフＧ１から検出する。図１４は、図１３に示した検索結果からの状態遷移枝の検出例を示す説明図である。
【００９８】
図１３に示した検索結果では、｛ｙ１，ｙ２，ｙ３｝＝｛０１１｝であり、｛ｚ１，ｚ２，ｚ３｝＝｛１１０｝である。したがって、｛０１１｝であるノードＮ３から｛１１０｝であるノードＮ４に遷移する状態遷移枝ｅ３４を検出する。この状態遷移枝ｅ３４の状態遷移時の入力ｘ１の値は、図１３に示した検索結果の行１３０１よりｘ１＝１であることがわかる。
【００９９】
つぎに、状態遷移元であるノードＮ３が初期状態のノードであるか否かを判断する。ノードＮ３の値は｛ｙ１，ｙ２，ｙ３｝＝｛０１１｝であるため初期状態ではない。したがって、ノードＮ３を状態遷移先とする遷移元のノードＮ２を探索する。状態テーブルＴ２からこのノードＮ２からノードＮ３への状態遷移時の入力ｘ１の値は、図１３に示した行１３０２よりｘ１＝０であることがわかる。
【０１００】
そして、状態遷移元であるノードＮ２が初期状態のノードであるか否かを判断する。ノードＮ２の値は｛ｙ１，ｙ２，ｙ３｝＝｛００１｝であるため初期状態ではない。したがって、ノードＮ２を状態遷移先とする遷移元のノードＮ０を探索する。状態テーブルＴ２から、このノードＮ０からノードＮ２への状態遷移時の入力ｘ１の値は、図１３に示した行１３０３よりｘ１＝０であることがわかる。
【０１０１】
つぎに、状態遷移元であるノードＮ０が初期状態のノードであるか否かを判断する。ノードＮ０の値は｛ｙ１，ｙ２，ｙ３｝＝｛０００｝であるため初期状態である。このように、この探索処理により、回路状態遷移グラフＧ１上、時刻ｔ＝０でノードＮ０からノードＮ２に状態遷移（ｅ０２）し、その次時刻ｔ＝１でノードＮ２からノードＮ３に状態遷移（ｅ２３）し、その次時刻ｔ＝２でノードＮ３からノードＮ４に状態遷移（ｅ３４）する。したがって、各状態遷移枝ｅ０２，ｅ２３，ｅ３４における入力ｘ１の値と、各時刻ｔを対応付ける。
【０１０２】
これにより、探索されたもう一つの入力パタン（第２の入力パタンＰ２）は、『時刻ｔ＝０（初期状態）で入力ｘ１＝０、ｔ＝１で入力ｘ１＝０、ｔ＝２で入力ｘ１＝１』となる。このパタンを非検出状態｛１１０｝を検出するパタンとしてもよい。このようにして探索された第２の入力パタンＰ２を解析対象回路２００に与えることにより、非検出ＣＧ状態７２０が出現することとなる。
【０１０３】
（クロックゲーティング解析装置１００のクロックゲーティング解析処理手順２）
つぎに、この発明の実施の形態にかかるクロックゲーティング解析装置１００のクロックゲーティング解析処理手順２について説明する。クロックゲーティング解析処理手順２は、図７に示した機能的構成２についての処理手順である。図１５は、この発明の実施の形態にかかるクロックゲーティング解析装置１００のクロックゲーティング解析処理手順２を示すフローチャートである。
【０１０４】
図１５において、まず、第１の入力パタンＰ１が与えられるまで待ち受け（ステップＳ１５０１：Ｎｏ）、第１の入力パタンＰ１が与えられた場合（ステップＳ１５０１：Ｙｅｓ）、シミュレーション実行部７０１により解析対象回路２００の回路シミュレーションを実行する（ステップＳ１５０２）。
【０１０５】
つぎに、状態網羅率算出部７０２により、回路シミュレーション実行結果として得られる検出ＣＧ状態７１０がＣＧ全状態集合Ｓをどの程度網羅しているかをあらわす状態網羅率ＲＳを算出する（ステップＳ１５０３）。そして、非検出ＣＧ抽出部７０３により、ＣＧ全状態集合Ｓから検出ＣＧ状態７１０を除いたＣＧ状態を、非検出ＣＧ状態７２０として抽出する（ステップＳ１５０４）。このあと、その状態網羅率ＲＳを上昇させる入力パタンの生成処理を実行する（ステップＳ１５０５）。
【０１０６】
図１６は、ステップＳ１５０５に示した状態網羅率ＲＳを上昇させる入力パタンの生成処理の手順を示すフローチャートである。図１６において、まず、次状態関数算出部８０１により解析対象回路２００内のＦＦの次状態関数ｚｊを算出する（ステップＳ１６０１）。つぎに、状態テーブル作成部８０２により状態テーブルＴ２を作成する（ステップＳ１６０２）。そして、回路状態遷移グラフ作成部８０３により、回路状態遷移グラフＧ１を作成する（ステップＳ１６０３）。
【０１０７】
つぎに、ＮＳ＝Φ（空集合）であるか否かを判断する（ステップＳ１６０４）。ここで、ＮＳとは、非検出ＣＧ状態７２０の集合である。ＮＳ＝Φでない場合（ステップＳ１６０４：Ｎｏ）、ＮＳから任意の非検出ＣＧ状態７２０を抽出し、その非検出ＣＧ状態７２０をＮＳから削除する（ステップＳ１６０４）。
【０１０８】
そして、探索部８０４により、入力パタン探索処理を実行する（ステップＳ１６０６）。入力パタン探索処理の詳細については後述する。このあと、ステップＳ１６０４に戻る。ステップＳ１６０４において、ＮＳ＝Φである場合（ステップＳ１６０４：Ｙｅｓ）、出力部８０５により、探索結果を、状態網羅率ＲＳを上昇させる入力パタン（第２の入力パタンＰ２）として出力する（ステップＳ１６０７）。
【０１０９】
図１７は、ステップＳ１６０６に示した入力パタン探索処理の手順を示すフローチャートである。図１７において、まず、非検出ＣＧ状態７２０と一致する次時刻におけるＣＧ状態を、状態テーブルＴ２から検出する（ステップＳ１７０１）。つぎに、検出されたＣＧ状態を出現させる入力ｘ１の値、現時刻におけるＦＦの出力｛ｙ１，ｙ２，ｙ３｝の値、次時刻におけるＦＦの出力｛ｚ１，ｚ２，ｚ３｝の値を、状態テーブルＴ２から検索する（ステップＳ１７０２）。
【０１１０】
そして、次時刻におけるＦＦの出力｛ｚ１，ｚ２，ｚ３｝の値を、状態遷移先のノード（探索開始ノード）に設定し（ステップＳ１７０３）、その遷移先のノードに対する遷移元のノードと、これらのノード間の状態遷移枝とを、回路状態遷移グラフＧ１から特定する（ステップＳ１７０４）。
【０１１１】
つぎに、この特定された状態遷移枝と遷移元のノード（現時刻におけるＦＦの出力｛ｙ１，ｙ２，ｙ３｝の値）により特定される入力ｘ１の値とを対応付ける（ステップＳ１７０５）。このとき、遷移元のノードは、初期状態をあらわすノードであるか否かを判断する（ステップＳ１７０６）。初期状態を表わすノードでない場合（ステップＳ１７０６：Ｎｏ）、初期状態をあらわすノードから遷移元のノードまでのパスが探索済みであるか否かを判断する（ステップＳ１７０７）。
【０１１２】
パスが探索済みである場合（ステップＳ１７０７：Ｙｅｓ）、ステップＳ１７０９に移行する。一方、パスが探索済みでない場合（ステップＳ１７０７：Ｎｏ）、初期状態をあらわすノードから遷移元のノードまでのパスを探索する（ステップＳ１７０８）。そして、遷移元のノードをあらたに遷移先のノードに設定し（ステップＳ１７０９）、探索されたパスに従って、その遷移先のノードに対する遷移元のノードと、これらのノード間の状態遷移枝とを、回路状態遷移グラフＧ１から特定する（ステップＳ１７１０）。このあと、ステップＳ１７０５に戻る。
【０１１３】
一方、ステップＳ１７０６において、遷移元のノードが初期状態をあらわすノードとなった場合（ステップＳ１７０６：Ｙｅｓ）、これまでに特定された各状態遷移枝の状態遷移時の時刻を回路状態遷移グラフＧ１から算出し、各状態遷移枝の入力ｘ１の値と対応付ける（ステップＳ１７１１）。
【０１１４】
このあと、終了するか否かを判断する（ステップＳ１７１２）。具体的には、ステップＳ１７０２において検索された次時刻におけるＦＦの出力｛ｚ１，ｚ２，ｚ３｝の値がほかにあれば、終了せずに（ステップＳ１７１２：Ｎｏ）、ステップＳ１７０３に戻り、ステップＳ１７０２において検索された次時刻におけるＦＦの出力｛ｚ１，ｚ２，ｚ３｝の値がほかになければ、図１６に示したステップＳ１６０４に戻る。
【０１１５】
このように、上述したクロックゲーティング解析装置１００の機能的構成２およびクロックゲーティング解析処理手順２によれば、状態網羅率ＲＳを求めることにより、シミュレーションによる解析対照回路の機能検証時に、状態網羅率ＲＳを上昇させることで解析対象回路２００の機能バグを引き起こすクロックゲーティング機能のバグの検証漏れを減少させることができる。
【０１１６】
また、網羅していないＣＧ状態（非検出ＣＧ状態７２０）を出現させる第２の入力パタンＰ２を生成することにより状態網羅率ＲＳを自動的に上昇させることができる。これにより、解析対象回路２００の機能バグを引き起こすクロックゲーティング機能のバグの検証漏れを抑制することができる。
【０１１７】
（クロックゲーティング解析装置１００の機能的構成３）
つぎに、この発明の実施の形態にかかるクロックゲーティング解析装置１００の機能的構成３について説明する。この機能的構成３では、図４に示した機能的構成１で生成されたＣＧ全状態集合Ｓを用いて、ＣＧ状態遷移枝の状態遷移枝網羅率の算出と、その状態遷移枝網羅率を上昇させる入力パタンの生成をおこなう。なお、図４、図７および図８に示した構成と同一構成については同一符号を付し、その説明を省略する。
【０１１８】
図１８は、この発明の実施の形態にかかるクロックゲーティング解析装置１００の機能的構成３を示すブロック図である。クロックゲーティング解析装置１００は、シミュレーション実行部７０１と、次状態関数算出部８０１と、状態テーブル作成部８０２と、ＣＧ状態遷移グラフ作成部１８０１と、ＣＧ全状態遷移枝出力部１８０２と、状態遷移枝網羅率算出部１８０３と、非検出ＣＧ状態遷移枝抽出部１８０４と、入力パタン生成部１８０５とから構成されている。これら各機能７０１，８０１，８０２，１８０１〜１８０５は、メモリに格納された当該機能に関するプログラムをＣＰＵに実行させることにより、当該機能を実現することができる。
【０１１９】
また、各機能７０１，８０１，８０２，１８０１〜１８０５からの出力データはメモリに保持される。また、図１８中矢印で示した接続先の機能的構成は、接続元の機能的構成からの出力データをメモリから読み込んで、当該機能に関するプログラムをＣＰＵに実行させる。
【０１２０】
まず、ＣＧ状態遷移グラフ作成部１８０１は、状態テーブルＴ２を用いて、ＣＧ状態の状態遷移をあらわすＣＧ状態遷移グラフＧ２を作成する。図１９は、ＣＧ状態遷移グラフＧ２を示す説明図である。ノードＭ１〜Ｍ４はＣＧ状態をあらわし、矢印は状態遷移枝をあらわしている。この状態遷移枝は、状態テーブルＴ２において、現時刻のＣＧ状態をあらわす｛ｙ１，ｙ２，ｙ３｝の値から次時刻のＣＧ状態をあらわす｛ｚ１，ｚ２，ｚ３｝の値への状態遷移により作成される。
【０１２１】
また、図１８において、ＣＧ全状態遷移枝出力部１８０２は、ＣＧ状態遷移グラフ作成部１８０１によって作成されたＣＧ状態遷移グラフＧ２の中から、クロックゲーティング状態の状態遷移枝をすべて抽出することにより、ＣＧ全状態遷移枝集合Ｅとして出力する。具体的には、ＣＧ全状態遷移枝集合Ｅをメモリに保持する。
【０１２２】
また、状態遷移枝網羅率算出部１８０３は、解析対象回路２００の状態遷移枝網羅率を算出する。具体的には、シミュレーション実行部７０１によるシミュレーション実行結果から時刻ごとのＣＧ状態が検出されるため、その状態遷移をあらわす時刻ごとのＣＧ状態遷移枝も検出される。このように、シミュレーション実行部７０１によるシミュレーション実行結果により検出されたＣＧ状態遷移枝を「検出ＣＧ状態遷移枝１８１０」と称す。
【０１２３】
また、状態遷移枝網羅率ＲＥは、検出ＣＧ状態遷移枝１８１０が、ＣＧ全状態遷移枝集合Ｅをどれだけ網羅しているかをあらわす。すなわち、ＣＧ全状態遷移枝集合Ｅの全枝数が分母の値となり、検出ＣＧ状態遷移枝１８１０の枝数が分子の値となって、状態遷移枝網羅率ＲＥが算出される。たとえば、図１９において、検出ＣＧ状態遷移枝１８１０が状態遷移枝ｄ２１以外のすべての枝である場合、ＣＧ全状態遷移枝集合Ｅの全枝数は９本であるため、状態遷移枝網羅率ＲＥ＝８／９となる。
【０１２４】
また、図１８において、非検出ＣＧ状態遷移枝抽出部１８０４は、ＣＧ全状態遷移枝集合Ｅの中から検出ＣＧ状態遷移枝１８１０以外の遷移枝（以下、「非検出ＣＧ状態遷移枝１８２０」と称す。）を抽出する。たとえば、図１９において、検出ＣＧ状態遷移枝１８１０が状態遷移枝ｄ２１以外のすべての枝である場合、遷移枝ｄ２１が非検出ＣＧ状態遷移枝１８２０として抽出される。
【０１２５】
また、入力パタン生成部１８０５は、非検出ＣＧ状態遷移枝１８２０を網羅する入力パタン（以下、「第３の入力パタンＰ３」と称す。）を生成する。この入力パタン生成部１８０５について具体的に説明する。図２０は、入力パタン生成部１８０５の詳細な機能的構成を示すブロック図である。
【０１２６】
図２０において、入力パタン生成部１８０５は、回路状態遷移グラフ作成部８０３と、探索部２００１と、出力部２００２とから構成されている。探索部２００１は、非検出ＣＧ状態遷移枝１８２０を次時刻のクロックゲーティング状態遷移枝とすることにより、回路状態遷移グラフ作成部８０３によって作成された回路状態遷移グラフＧ１において、非検出ＣＧ状態遷移枝１８２０に対応する回路状態遷移枝から初期状態までの状態遷移を探索する。
【０１２７】
具体的には、回路状態遷移グラフＧ１において、初期状態におけるＦＦの出力｛ｙ１，ｙ２，ｙ３｝＝｛０，０，０｝から非検出ＣＧ状態遷移枝１８２０を出現させる次時刻におけるＦＦの出力｛ｚ１，ｚ２，ｚ３｝の値までの各状態遷移時の入力ｘ１の値および当該各状態遷移時の時刻を第３の入力パタンＰ３として探索する。
【０１２８】
また、出力部２００２は、探索部２００１によって探索された第３の入力パタンＰ３を出力する。具体的には、たとえば、メモリへの格納でもよく出力装置からの出力でもよい。
【０１２９】
ここで探索部２００１の探索処理について詳細に説明する。まず、非検出ＣＧ状態遷移枝１８２０の遷移元が現時刻におけるＣＧ状態と、非検出ＣＧ状態遷移枝１８２０の遷移先が次時刻におけるＣＧ状態との組み合わせをＣＧ状態遷移グラフＧ２から検出する。
【０１３０】
たとえば、図１９において、非検出ＣＧ状態遷移枝１８２０がｄ２１である場合、その遷移元のＣＧ状態｛１０１｝が現時刻のＣＧ状態であり、その遷移先のＣＧ状態｛０１１｝が次時刻のＣＧ状態となる。
【０１３１】
つぎに、検出された現時刻のＣＧ状態および次時刻のＣＧ状態を出現させる入力ｘ１の値、現時刻におけるＦＦの出力｛ｙ１，ｙ２，ｙ３｝の値、次時刻におけるＦＦの出力｛ｚ１，ｚ２，ｚ３｝の値を、状態テーブルＴ２から検索する。
【０１３２】
図２１は、状態テーブルＴ２からの検索例（その１）を示す説明図である。図２１において、現時刻のＣＧ状態が｛１０１｝でかつ次時刻のＣＧ状態が｛０１１｝である行（符号２２０１）を状態テーブルＴ２から検索する。
【０１３３】
そして、検索された現時刻におけるＦＦの出力｛ｙ１，ｙ２，ｙ３｝の値をあらわす遷移元のノードと、次時刻におけるＦＦの出力｛ｚ１，ｚ２，ｚ３｝の値をあらわす遷移先のノードと、この遷移元のノードから遷移先のノードへの状態遷移をあらわす状態遷移枝を、回路状態遷移グラフＧ１から検出する。この検出された状態遷移枝を、先に検出された入力ｘ１の値と対応付ける。このとき検出された状態遷移枝を「末尾状態遷移枝」と称す。
【０１３４】
図２２は、回路状態遷移グラフＧ１からの検出例（その１）を示す説明図である。状態テーブルＴ２より、検索された入力ｘ１の値はｘ１＝０であり、現時刻におけるＦＦの出力｛ｙ１，ｙ２，ｙ３｝の値は｛１１１｝であり、次時刻におけるＦＦの出力｛ｚ１，ｚ２，ｚ３｝の値は｛０００｝である。したがって、ノードＮ５が遷移元のノードとして検出され、ノードＮ０が遷移先のノードとして検出され、そのノードＮ５，Ｎ０間の状態遷移枝ｅ５０が非検出ＣＧ状態遷移枝ｄ２１を出現させる末尾状態遷移枝として検出される。そして、この末尾状態遷移枝ｅ５０をｘ１＝０と対応付ける。
【０１３５】
つぎに、末尾状態遷移枝から１時刻前の状態遷移枝とそのときの入力ｘ１の値を特定する。具体的には、状態テーブルＴ２上において、検索された行の１時刻前の行を検索する。すなわち、次時刻におけるＦＦの出力｛ｚ１，ｚ２，ｚ３｝の値が、検索された行の現時刻におけるＦＦの出力｛ｙ１，ｙ２，ｙ３｝の値となり、次時刻のＣＧ状態が検索された行の現時刻のＣＧ状態となる行を検索する。図２１では、符号２２０２で示した行が、符号２２０１で示した行の１時刻前の行として検索される。
【０１３６】
そして、この検索された１時刻前の行についても、現時刻におけるＦＦの出力｛ｙ１，ｙ２，ｙ３｝の値をあらわす遷移元のノードと、次時刻におけるＦＦの出力｛ｚ１，ｚ２，ｚ３｝の値をあらわす遷移先のノードと、この遷移元のノードから遷移先のノードへの状態遷移をあらわす状態遷移枝を、回路状態遷移グラフＧ１から検出する。この検出された状態遷移枝を、先に検出された入力ｘ１の値と対応付ける。
【０１３７】
たとえば、検索された１時刻前の行２２０２の場合、状態テーブルＴ２より、１時刻前の行における入力ｘ１の値はｘ１＝１であり、現時刻におけるＦＦの出力｛ｙ１，ｙ２，ｙ３｝の値は｛００１｝であり、次時刻におけるＦＦの出力｛ｚ１，ｚ２，ｚ３｝の値は｛１１１｝である。したがって、ノードＮ２が遷移元のノードとして検出され、ノードＮ５が遷移先のノードとして検出され、そのノードＮ２，Ｎ５間の状態遷移枝ｅ２５が非検出ＣＧ状態遷移枝ｄ２１を出現させる状態遷移として検出される。そして、この状態遷移枝ｅ２５をｘ１＝１と対応付ける。
【０１３８】
そして、回路状態遷移グラフＧ１上において、１時刻前の行に基づいて検出された遷移元のノードが初期状態｛０００｝をあらわすノードＮ０であるか否か判断する。初期状態をあらわすノードＮ０であれば、入力ｘ１の値が対応付けられた状態遷移枝に、さらに時刻ｔ＝０を対応付ける。そして、遷移先の状態遷移枝に遷移する都度、時刻ｔを１時刻分加算する。なお、ノードＮ０でなければ、ノードＮ０から遷移元のノードまでのパスを探索する。
【０１３９】
たとえば、図２２では、遷移元のノードＮ２はノードＮ０でないため、ノードＮ０からノードＮ２までのパスを探索する。ここでは、Ｎ０→Ｎ２となるパス（最短のパス）を探索しているが、状態遷移枝が所定本数以上など自由に実行することができる。
【０１４０】
つぎに、１時刻前の行に基づいて検出された遷移元のノードを遷移先のノードとし、探索されたパスに従って遷移元のノードと、そのノード間の遷移枝を特定する。たとえば、図２２では、遷移元のノードＮ２を遷移先のノードとし、探索されたパスにしたがって、ノードＮ０を遷移元のノードとする。
【０１４１】
つぎに、状態テーブルＴ２上において、あらたに設定された遷移元のノードを現時刻におけるＦＦの出力｛ｙ１，ｙ２，ｙ３｝の値とし、遷移先のノードを次時刻におけるＦＦの出力｛ｚ１，ｚ２，ｚ３｝の値とする行を検索し、そのときの入力ｘ１の値を特定して、遷移枝に対応付ける。
【０１４２】
たとえば、図２２では、あらたな遷移先のノードがノードＮ２であり、探索されたパスにしたがったあらたな遷移元のノードがノードＮ０である。したがって、図２１において、符号２２０３に示した行を検索する。したがって、図２２において、入力ｘ１の値（ｘ１＝０）を遷移枝ｅ０２に対応付ける。
【０１４３】
このとき、遷移元のノードがノードＮ０でなければ、さらに探索されたパスにしたがって処理を継続するが、ノードＮ０であれば、入力ｘ１の値が対応付けられた状態遷移枝に、さらに時刻ｔ＝０を対応付ける。そして、遷移先の状態遷移枝に遷移する都度、時刻ｔを１時刻分加算する。そして、これまでの状態遷移枝に対応付けられた入力ｘ１の値と時刻ｔが、状態遷移枝網羅率ＲＥを上昇させる入力パタン（第３の入力パタンＰ３）となる。
【０１４４】
たとえば、図２２では、このときの遷移先のノードがノードＮ２で遷移元のノードがノードＮ０であるため、入力ｘ１の値（ｘ１＝０）が対応付けられた遷移枝ｅ０２に、初期状態をあらわす時刻ｔ＝０を対応付ける。したがって、遷移枝ｅ０２にはｘ１＝０，ｔ＝０が対応付けられ、遷移枝ｅ２５にはｘ１＝１，ｔ＝１が対応付けられ、遷移枝ｅ５０にはｘ１＝０，ｔ＝２が対応付けられている。これにより、第３の入力パタンＰ３は、『時刻ｔ＝０（初期状態）でｘ１＝０、時刻ｔ＝１でｘ１＝１、時刻ｔ＝２でｘ１＝０』となる。
【０１４５】
（クロックゲーティング解析装置１００のクロックゲーティング解析処理手順３）
つぎに、この発明の実施の形態にかかるクロックゲーティング解析装置１００のクロックゲーティング解析処理手順３について説明する。クロックゲーティング解析処理手順３は、図１８に示した機能的構成３についての処理手順である。図２３は、この発明の実施の形態にかかるクロックゲーティング解析装置１００のクロックゲーティング解析処理手順３を示すフローチャートである。
【０１４６】
まず、次状態関数算出部８０１により次状態関数を算出し（ステップＳ２３０１）、状態テーブル作成部８０２により、状態テーブルＴ２を作成する（ステップＳ２３０２）。そして、ＣＧ状態遷移グラフ作成部１８０１により、ＣＧ状態遷移グラフＧ２を作成する（ステップＳ２３０３）。そして、ＣＧ全状態遷移枝出力部１８０２により、ＣＧ状態遷移グラフＧ２の中から、クロックゲーティング状態の状態遷移枝をすべて抽出することにより、ＣＧ全状態遷移枝集合Ｅとして出力する（ステップＳ２３０４）。
【０１４７】
このあと、第１の入力パタンＰ１が与えられるまで待ち受け（ステップＳ２３０５：Ｎｏ）、第１の入力パタンＰ１が与えられた場合（ステップＳ２３０５：Ｙｅｓ）、シミュレーション実行部７０１により回路シミュレーションを実行する（ステップＳ２４０６）。
【０１４８】
つぎに、状態遷移枝網羅率算出部１８０３により、解析対象回路２００の状態遷移枝網羅率ＲＥを算出し（ステップＳ２３０７）、状態遷移枝集合Ｅの中から検出ＣＧ状態遷移枝１８１０を除く枝を非検出ＣＧ状態遷移枝１８２０として抽出する（ステップＳ２３０８）。このあと、ＣＧ全状態遷移枝網羅率ＲＥを上昇させる入力パタンの生成処理を実行する（ステップＳ２３０９）。
【０１４９】
図２４は、ステップＳ２３０９で状態遷移枝網羅率ＲＥを上昇させる入力パタンの生成処理の処理手順を示すフローチャートである。図２４において、まず、回路状態遷移グラフ作成部８０３により、回路状態遷移グラフＧ１を作成し（ステップＳ２４０１）、ＮＥ＝Φ（空集合）であるか否かを判断する（ステップＳ２４０２）。
【０１５０】
ここで、ＮＥとは、非検出ＣＧ状態遷移枝１８２０をすべて集めた集合である。ＮＥ＝Φでない場合（ステップＳ２４０２：Ｎｏ）、ＮＥから任意の非検出ＣＧ状態遷移枝１８２０を抽出し、ＮＥから削除する（ステップＳ２４０３）。そして、探索部２００１により、入力パタン探索処理を実行する（ステップＳ２４０４）。入力パタン探索処理の詳細については後述する。
【０１５１】
このあと、ステップＳ２４０２に戻る。ステップＳ２４０２において、ＮＥ＝Φである場合（ステップＳ２４０２：Ｙｅｓ）、出力部２００２により、探索結果を、状態遷移枝網羅率ＲＥを上昇させる入力パタン（第３の入力パタンＰ３）として出力する（ステップＳ２４０５）。
【０１５２】
図２５は、ステップＳ２４０４で示した入力パタン探索処理の処理手順を示すフローチャートである。図２５において、まず、非検出ＣＧ状態遷移枝１８２０の遷移元および遷移先と一致する現時刻および次時刻におけるＣＧ状態を、状態テーブルＴ２から検出する（ステップＳ２５０１）。
【０１５３】
つぎに、検出されたＣＧ状態を出現させる入力ｘ１の値、現時刻におけるＦＦの出力｛ｙ１，ｙ２，ｙ３｝の値、次時刻におけるＦＦの出力｛ｚ１，ｚ２，ｚ３｝の値を、状態テーブルＴ２から検索する（ステップＳ２５０２）。
【０１５４】
そして、回路状態遷移グラフＧ１から、現時刻におけるＦＦの出力｛ｙ１，ｙ２，ｙ３｝の値を遷移元のノードとし、次時刻におけるＦＦの出力｛ｚ１，ｚ２，ｚ３｝の値を遷移先のノードとする末尾状態遷移枝を特定する（ステップＳ２５０３）。
【０１５５】
つぎに、この特定された末尾状態遷移枝が発生するときの入力ｘ１の値を状態テーブルＴ２から読み出し、末尾状態遷移枝と対応付ける（ステップＳ２５０４）。そして、末尾状態遷移枝の１時刻前の状態遷移枝とそのときの入力ｘ１の値を特定する（ステップＳ２５０５）。そして、その状態遷移枝とそのときの入力ｘ１の値とを対応付ける（ステップＳ２５０６）。
【０１５６】
つぎに、状態遷移枝により特定される状態遷移元のノードが初期状態をあらわすノードであるか否かを判断する（ステップＳ２５０７）。初期状態を表わすノードでない場合（ステップＳ２５０７：Ｎｏ）、回路状態遷移グラフＧ１上において、初期状態をあらわすノードから状態遷移元のノードまでのパスが探索済みであるか否かを判断する（ステップＳ２６０８）。
【０１５７】
探索済みである場合（ステップＳ２５０８：Ｙｅｓ）、ステップＳ２５１０に移行する。一方、探索済みでない場合（ステップＳ２５０８：Ｎｏ）、初期状態をあらわすノードから状態遷移元のノードまでのパスを探索する（ステップＳ２５０９）。
【０１５８】
そして、状態遷移元のノードを状態遷移先のノードに設定し（ステップＳ２５１０）、パスに従って、状態遷移元のノードと、当該ノードとその状態遷移先のノードとの間の状態遷移枝を特定する（ステップＳ２５１１）。このあと、この状態遷移枝による状態遷移が発生するときの入力ｘ１の値を状態テーブルＴ２から読み出して、状態遷移枝と対応付ける（ステップＳ２５１２）。そして、ステップＳ２５０７に戻る。
【０１５９】
ステップＳ２５０７において、状態遷移元のノードが初期状態のノードである場合（ステップＳ２５０７：Ｙｅｓ）、これまでに得られた各状態遷移枝の状態遷移時の時刻を、初期状態（ｔ＝０）を基準として算出し、各状態遷移枝に対応付けられた入力ｘ１の値と対応付ける（ステップＳ２５１３）。
【０１６０】
そして、終了するか否かを判断する（ステップＳ２５１４）。具体的には、たとえば、ステップＳ２５０２において、検索された次時刻におけるＦＦの出力｛ｚ１，ｚ２，ｚ３｝の値がほかにあれば、終了せずに（ステップＳ２５１４：Ｎｏ）、ステップＳ２５０３に戻り、ステップＳ２５０２において検索された次時刻におけるＦＦの出力｛ｚ１，ｚ２，ｚ３｝の値がほかになければ、図２４に示したステップＳ２４０２に戻る。
【０１６１】
このように、上述したクロックゲーティング解析装置１００の機能的構成３およびクロックゲーティング解析処理手順３によれば、状態遷移枝網羅率ＲＥを求めることにより、シミュレーションによる解析対象回路２００の機能検証時に、状態遷移枝網羅率ＲＥを上昇させることで解析対象回路２００の機能バグを引き起こすクロックゲーティング機能のバグの検証漏れを減少させることができる。
【０１６２】
また、網羅していないＣＧ状態遷移枝（非検出ＣＧ状態遷移枝１８２０）を出現させる第３の入力パタンＰ３を生成することにより状態遷移枝網羅率ＲＥを自動的に上昇させることができる。これにより、解析対象回路２００の機能バグを引き起こすクロックゲーティング機能のバグの検証漏れを抑制することができる。
【０１６３】
（クロックゲーティング解析装置１００の機能的構成４）
つぎに、この発明の実施の形態にかかるクロックゲーティング解析装置１００の機能的構成４について説明する。この機能的構成４では、図４に示した機能的構成１で生成されたＣＧ全状態集合Ｓを用いて、ローカルクロックＬＣｉの非活性化状態から活性化状態への復帰可能性を検証する。すなわち、ローカルクロックＬＣｉが一度非活性化状態（クロックを止めている状態）になった場合、いずれ活性化状態（クロックを供給する状態）に復帰するであろうという回路の性質を利用しておこなう検証である。なお、図４、図８および図１８に示した構成と同一構成については同一符号を付し、その説明を省略する。
【０１６４】
図２６は、この発明の実施の形態にかかるクロックゲーティング解析装置１００の機能的構成４を示すブロック図である。機能的構成４のクロックゲーティング解析装置１００は、次状態関数算出部８０１と、状態テーブル作成部８０２と、ＣＧ状態遷移グラフ作成部１８０１と、状態遷移抽出部２６００とから構成されている。これら各機能８０１，８０２，１８０１，２６００は、メモリに格納された当該機能に関するプログラムをＣＰＵに実行させることにより、当該機能を実現することができる。
【０１６５】
また、各機能８０１，８０２，１８０１，２６００からの出力データはメモリに保持される。また、図２６中矢印で示した接続先の機能的構成は、接続元の機能的構成からの出力データをメモリから読み込んで、当該機能に関するプログラムをＣＰＵに実行させる。
【０１６６】
状態遷移抽出部２６００は、ＣＧ状態遷移グラフ作成部１８０１によって作成されたＣＧ状態遷移グラフＧ２の中から、ローカルクロックＬＣｉが非活性化状態から活性化状態に復帰しない状態遷移を抽出する。
【０１６７】
具体的には、ＣＧ状態遷移グラフにおける状態遷移において、あるローカルクロックＬＣｉが非活性化状態（ＬＣｉ＝０）から活性化状態（ＬＣｉ＝１）に復帰する状態遷移が存在するか否かを判断する。すなわち、ＬＣｉ＝０からＬＣｉ＝１となる状態遷移がＣＧ状態遷移グラフ上に存在するか否かを判断する。復帰不可能であると判断されたローカルクロックＬＣｉは復帰不可能な状態遷移として抽出される。
【０１６８】
たとえば、図１９において、ローカルクロックＬＣ１に着目すると、たとえば、ノードＭ１はローカルクロックＬＣ１＝０であるが、ＬＣ１＝１であるノードＭ２〜Ｍ４への状態遷移枝が存在するため、０から１に復帰可能な状態遷移をすることができる。したがって、ローカルクロックＬＣ１は復帰可能なローカルクロックである。
【０１６９】
（クロックゲーティング解析装置１００のクロックゲーティング解析処理手順４）
つぎに、この発明の実施の形態にかかるクロックゲーティング解析装置１００のクロックゲーティング解析処理手順４について説明する。クロックゲーティング解析処理手順４は、図２６に示した機能的構成４についての処理手順である。図２７は、この発明の実施の形態にかかるクロックゲーティング解析装置１００のクロックゲーティング解析処理手順４を示すフローチャートである。
【０１７０】
まず、次状態関数算出部８０１により次状態関数を算出し（ステップＳ２７０１）、状態テーブル作成部８０２により、状態テーブルＴ２を作成する（ステップＳ２７０２）。そして、ＣＧ状態遷移グラフ作成部１８０１により、ＣＧ状態遷移グラフＧ２を作成する（ステップＳ２７０３）。
【０１７１】
そして、インデックスｉをｉ＝１とし、クロックゲーティング数をｎとする（ステップＳ２７０４）。このあと、ローカルクロックＬＣｉが０→１となる状態遷移がＣＧ状態遷移グラフＧ２上にあるか否かを判断する（ステップＳ２７０５）。
【０１７２】
ローカルクロックＬＣｉが０→１となる状態遷移がない場合（ステップＳ２７０５：Ｎｏ）、そのローカルクロックＬＣｉを復帰不可能集合ＳＬに追加する（ステップＳ２７０６）。一方、ローカルクロックＬＣｉが０→１となる状態遷移がある場合（ステップＳ２７０５：Ｙｅｓ）、ステップＳ２７０７に移行する。
【０１７３】
ステップＳ２７０７では、インデックスｉを１つインクリメントし（ステップＳ２７０７）、ｉ＞ｎであるか否かを判断する（ステップＳ２７０８）。ｉ＞ｎでない場合（ステップＳ２７０８：Ｎｏ）、ステップＳ２７０５に戻る。一方、ｉ＞ｎである場合（ステップＳ２７０８：Ｙｅｓ）、一連の処理を終了する。
【０１７４】
このように、上述したクロックゲーティング解析装置１００の機能的構成４およびクロックゲーティング解析処理手順４によれば、ＣＧ状態遷移グラフＧ２の到達可能性解析を行い、ローカルクロックＬＣｉの非活性化状態から活性化状態に復帰できないというエラーの存在を自動的に検証することができる。これにより、漏れなく網羅的に特定のクロックゲーティング機能のバグの検出をおこなうことができる。
【０１７５】
（クロックゲーティング解析装置１００の機能的構成５）
つぎに、この発明の実施の形態にかかるクロックゲーティング解析装置１００の機能的構成５について説明する。この機能的構成５では、図４に示した機能的構成１で生成されたＣＧ全状態集合Ｓを用いて、クロックゲーティングＣＧｉのミス状態候補を生成する。
【０１７６】
ここで、ミス状態とは、ローカルクロックＬＣｉを非活性化状態（クロックをとめている状態）にしてもよいのに、活性化状態（クロックを供給している状態）になっている状態をいう。すなわち、ＦＦグループＡｉのＦＦにローカルクロックＬＣｉを供給しなくてもよいのに、供給している状態であり、クロックゲーティングをし損ねている状態である。なお、図４、図８および図１８に示した構成と同一構成については同一符号を付し、その説明を省略する。
【０１７７】
図２８は、この発明の実施の形態にかかるクロックゲーティング解析装置１００の機能的構成５を示すブロック図である。機能的構成５のクロックゲーティング解析装置１００は、シミュレーション実行部７０１と、変換部２８０１と、ミス状態候補集合生成部２８０２と、判断部２８０３と、削除部２８０４とから構成されている。これら各機能７０１，２８０１〜２８０４は、メモリに格納された当該機能に関するプログラムをＣＰＵに実行させることにより、当該機能を実現することができる。
【０１７８】
また、各機能７０１，２８０１〜２８０４からの出力データはメモリに保持される。また、図２８中矢印で示した接続先の機能的構成は、接続元の機能的構成からの出力データをメモリから読み込んで、当該機能に関するプログラムをＣＰＵに実行させる。
【０１７９】
図２８において、変換部２８０１は、ＣＧ全状態集合Ｓの中の任意のＣＧ状態を、任意のクロックゲーティングＣＧｉを活性化状態から非活性化状態にしたＣＧ状態に変換する。また、ミス状態候補集合生成部２８０２は、変換部２８０１によって変換された変換後のＣＧ状態に基づいて、ローカルクロックＬＣｉに関するミス状態候補ｍｉを生成する。
【０１８０】
ここで、変換部２８０１およびミス状態候補集合生成部２８０２によるミス状態候補生成例について説明する。図２９は、変換部２８０１およびミス状態候補集合生成部２８０２によるミス状態候補生成例を示す説明図である。図２９では、ｉ＝１、すなわち、ローカルクロックＬＣｉをＬＣ１とした場合のミス状態候補ｍ１の生成例を示している。
【０１８１】
図２９において、（１）まず、ＣＧ全状態集合Ｓ内のＣＧ状態のうちローカルクロックＬＣ１＝１であるＣＧ状態を取り出し、そのＬＣ１の値を１→０に変換する。これにより、｛１０１｝が｛００１｝に、｛１１０｝が｛０１０｝に、｛１１１｝が｛０１１｝に変換される。（２）つぎに、変換前のＣＧ状態と一致する変換後のＣＧ状態を削除する。変換後の｛０１１｝は元のＣＧ全状態集合Ｓにも含まれており、ミス状態でないため削除する。（３）最後に、（２）で残ったＣＧ状態をそれぞれ変換前のＣＧに戻す。その結果｛００１｝が｛１０１｝に、｛０１０｝が｛１１０｝になる。
【０１８２】
これにより、残余の変換後のＣＧ状態｛１０１｝，｛１１０｝がミス状態候補ｍ１として生成される。このような処理をローカルクロックＬＣ１〜ＬＣｎまでおこなうことにより、ミス状態候補集合ＳＭが生成される。ミス状態候補集合ＳＭ内の要素であるミス状態候補ｍｉは、ＬＣｉの状態を１から０に変えたＣＧ状態がＣＧ全状態集合Ｓに含まれない要素である。これにより、各ＦＦをクロックゲーティングしない状態が解析対象回路２００のＣＧ状態として取り得ないＣＧ状態を生成することができる。
【０１８３】
また、判断部２８０３は、ミス状態候補集合ＳＭ内のミス状態候補ｍｉが、シミュレーション実行部７０１によるシミュレーション実行結果から得られるＣＧ状態（以下、「特定のＣＧ状態２８００」と称す。）と一致するか否かを判断する。また、シミュレーション実行結果から、特定のＣＧ状態２８００時において、ローカルクロックＬＣｉのＦＦグループＡｉ内のＦＦの値が変化するか否かも判断する。
【０１８４】
また、削除部２８０４は、特定のＣＧ状態２８００を、ミス状態候補ｍｉから削除する。具体的には、ミス状態候補ｍｉが特定のＣＧ状態２８００と一致し、かつ、ローカルクロックＬＣｉのＦＦグループＡｉ内のＦＦの値が変化する場合、クロックゲーティングＣＧｉは活性化状態となっていることとなる。したがって、そのような特定のＣＧ状態２８００をミス状態候補ｍｉから削除する。これにより、ミス状態候補ｍｉを絞り込むことができる。
【０１８５】
（クロックゲーティング解析装置１００のクロックゲーティング解析処理手順５）
つぎに、この発明の実施の形態にかかるクロックゲーティング解析装置１００のクロックゲーティング解析処理手順５について説明する。クロックゲーティング解析処理手順５は、図２８に示した機能的構成５についての処理手順である。図３０は、この発明の実施の形態にかかるクロックゲーティング解析装置１００のクロックゲーティング解析処理手順５を示すフローチャートである。
【０１８６】
図３０において、まず、インデックスｉをｉ＝１とし、ＣＧ検出数をｎとする（ステップＳ３００１）。つぎに、変換部２８０１により、ＣＧ全状態集合Ｓ内のＣＧ状態のローカルクロックＬＣｉを１→０に変換する（ステップＳ３００２）。そして、変換前のＣＧ状態と一致する変換後のＣＧ状態を、削除する（ステップＳ３００３）。つぎに、残余の変換後のＣＧ状態を変換前のＣＧ状態に戻しミス状態候補ｍｉとし、ミス状態候補集合ＳＭに追加する（ステップＳ３００４）。
【０１８７】
このあと、ｉを１つインクリメントし（ステップＳ３００５）、ｉ＞ｎであるか否かを判断する（ステップＳ３００６）。ｉ＞ｎでない場合（ステップＳ３００６：Ｎｏ）、ステップＳ３００２に戻る。一方、ｉ＞ｎである場合（ステップＳ３００６：Ｙｅｓ）、一連の処理を終了する。これにより、簡単な変換処理のみでミス状態候補ｍｉを自動生成することができる。
【０１８８】
図３１は、ミス状態候補ｍｉの絞込み処理手順を示すフローチャートである。図３１において、まず、入力パタンＰが与えられるのを待ち受け（ステップＳ３１０１：Ｎｏ）、入力パタンＰが与えられた場合（ステップＳ３１０１：Ｙｅｓ）、シミュレーション実行部７０１による回路シミュレーションを実行する（ステップＳ３１０２）。これにより、特定のＣＧ状態２８００を得る。
【０１８９】
そして、インデックスｉをｉ＝１とし（ステップＳ３１０３）、判断部２８０３により、ミス状態候補ｍｉが特定のＣＧ状態２８００を含んでいるか否かを判断する（ステップＳ３１０４）。含んでいない場合（ステップＳ３１０４：Ｎｏ）、ステップＳ３１０７に移行する。
【０１９０】
一方、含んでいる場合（ステップＳ３１０４：Ｙｅｓ）、ローカルクロックＬＣｉにより駆動されるＦＦ、すなわちＦＦグループＡｉ内のＦＦの値が、特定のＣＧ状態２８００により変化するか否かを判断する（ステップＳ３１０５）。変化しない場合（ステップＳ３１０５：Ｎｏ）、ステップＳ３１０７に移行する。一方、変化する場合（ステップＳ３１０５：Ｙｅｓ）、特定のＣＧ状態２８００をミス状態候補ｍｉから削除する（ステップＳ３１０６）。
【０１９１】
そして、ステップＳ３１０７において、ｉを１つインクリメントし（ステップＳ３１０７）、ｉ＞ｎであるか否かを判断する（ステップＳ３１０８）。ｉ＞ｎでない場合（ステップＳ３１０８：Ｎｏ）、ステップＳ３１０４に戻る。一方、ｉ＞ｎである場合（ステップＳ３１０８：Ｙｅｓ）、一連の処理を終了する。これにより、シミュレーション実行結果から効果的にミス状態候補ｍｉを絞り込むことができる。
【０１９２】
このように、上述したクロックゲーティング解析装置１００の機能的構成５およびクロックゲーティング解析処理手順５によれば、解析対象回路２００のＣＧ状態として取り得ないＣＧ状態クロックゲーティングし損ねているミス状態候補ｍｉを得ることができる。
【０１９３】
また、シミュレーション実行結果により、そのローカルクロックＬＣｉのＦＦグループＡｉ内のＦＦの値が特定のＣＧクロックゲーティング状態において変化することがなければ、特定のＣＧ状態２８００をクロックゲーティングし忘れ不具合（クロックを止めてもよいのに止めていない状態）の候補としてミス状態候補ｍｉに残しておくことができる。これにより、解析対象回路２００の消費電力の増大を引き起こすクロックゲーティング漏れの低減化を図ることができる。
【０１９４】
以上説明したように、クロックゲーティング解析装置、クロックゲーティング解析方法、およびクロックゲーティング解析プログラムによれば、設計者の設計負担の軽減、解析対象回路の信頼性の向上、および低消費電力化を実現することができる。
【０１９５】
なお、本実施の形態で説明したクロックゲーティング解析方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
【０１９６】
（付記１）解析対象回路内の順序回路素子へクロックの供給または前記クロックの停止をおこなうクロックゲーティングを検出させる検出工程と、
前記検出工程によって検出されたローカルクロックから出力されるローカルクロックの活性化／非活性化を表現するクロックゲーティング関数を、前記クロックゲーティングごとに算出させるクロックゲーティング関数算出工程と、
前記クロックゲーティング関数算出工程によって算出された各クロックゲーティング関数に、前記各順序回路素子からの出力値の組み合わせを代入して、前記各クロックゲーティング関数の値の組み合わせを、前記ローカルクロック相互の活性化／非活性化をあらわすクロックゲーティング状態として算出することにより、前記各順序回路素子からの出力値の組み合わせから前記クロックゲーティング状態への変換をあらわす変換テーブルを作成させる変換テーブル作成工程と、
前記変換テーブル作成工程によって作成された変換テーブルに基づいて、前記解析対象回路における前記クロックゲーティング状態をすべて網羅するクロックゲーティング全状態集合を出力させる全状態集合出力工程と、
をコンピュータに実行させることを特徴とするクロックゲーティング解析プログラム。
【０１９７】
（付記２）前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態が、前記全状態集合出力工程によって出力されたクロックゲーティング全状態集合を網羅している割合をあらわす状態網羅率を算出させる状態網羅率算出工程を前記コンピュータに実行させることを特徴とする付記１に記載のクロックゲーティング解析プログラム。
【０１９８】
（付記３）前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態（以下、「検出クロックゲーティング状態」という）を除いたクロックゲーティング状態（以下、「非検出クロックゲーティング状態」という）を前記クロックゲーティング全状態集合の中から抽出させる非検出クロックゲーティング状態抽出工程と、
前記変換テーブルを用いて、前記非検出クロックゲーティング状態抽出工程によって抽出された非クロックゲーティング状態を出現させる入力パタンを生成させる入力パタン生成工程と、
を前記コンピュータに実行させることを特徴とする付記１または２に記載のクロックゲーティング解析プログラム。
【０１９９】
（付記４）前記入力パタン生成工程は、
前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出させる次状態関数算出工程と、
前記変換テーブルと前記次状態関数算出工程によって算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成させる状態テーブル作成工程と、
前記状態テーブル作成工程によって作成された状態テーブルにおける前記各順序回路素子からの現時刻および次時刻の出力値の組み合わせに基づいて、前記解析対象回路の状態遷移をあらわす回路状態遷移グラフを作成させる回路状態遷移グラフ作成工程と、
前記非検出クロックゲーティング状態を次時刻のクロックゲーティング状態とすることにより、前記回路状態遷移グラフ作成工程によって作成された回路状態遷移グラフにおいて、前記非検出クロックゲーティング状態に対応する次時刻の出力値の組み合わせから初期状態までの状態遷移を探索させる探索工程と、
前記探索工程によって探索された探索結果を、前記非検出クロックゲーティング状態抽出工程によって抽出された非クロックゲーティング状態を出現させる入力パタンとして出力させる出力工程と、
を含んだことを特徴とする付記３に記載のクロックゲーティング解析プログラム。
【０２００】
（付記５）前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出させる次状態関数算出工程と、
前記変換テーブルと前記次状態関数算出工程によって算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成させる状態テーブル作成工程と、
前記全状態集合出力工程によって出力されたクロックゲーティング全状態集合と前記状態テーブル作成工程によって作成された状態テーブルとに基づいて、前記クロックゲーティング状態の状態遷移をあらわすクロックゲーティング状態遷移グラフを作成させるクロックゲーティング状態遷移グラフ作成工程と、
前記クロックゲーティング状態遷移グラフ作成工程によって作成されたクロックゲーティング状態遷移グラフの中から、前記クロックゲーティング状態の状態遷移枝をすべて抽出することにより、クロックゲーティング全状態遷移枝集合を出力させる全状態遷移枝集合出力工程と、
を前記コンピュータに実行させることを特徴とする付記１に記載のクロックゲーティング解析プログラム。
【０２０１】
（付記６）前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態遷移枝が、前記全状態遷移枝集合出力工程によって出力されたクロックゲーティング全状態遷移枝集合を網羅している割合をあらわす状態遷移枝網羅率を算出させる状態遷移枝網羅率算出工程を前記コンピュータに実行させることを特徴とする付記５に記載のクロックゲーティング解析プログラム。
【０２０２】
（付記７）前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態遷移枝（以下、「検出クロックゲーティング状態遷移枝」という）を除いたクロックゲーティング状態遷移枝（以下、「非検出クロックゲーティング状態遷移枝」という）を前記クロックゲーティング全状態遷移枝集合の中から抽出させる非検出クロックゲーティング状態遷移枝抽出工程と、
前記変換テーブルを用いて、前記非検出クロックゲーティング状態遷移枝抽出工程によって抽出された非検出クロックゲーティング状態遷移枝を出現させる入力パタンを生成させる入力パタン生成工程と、
を前記コンピュータに実行させることを特徴とする付記５または６に記載のクロックゲーティング解析プログラム。
【０２０３】
（付記８）前記入力パタン生成工程は、
前記状態テーブルにおける前記各順序回路素子からの現時刻および次時刻の出力値の組み合わせに基づいて、前記解析対象回路の状態遷移をあらわす回路状態遷移グラフを作成させる回路状態遷移グラフ作成工程と、
前記非検出クロックゲーティング状態遷移枝を次時刻のクロックゲーティング状態遷移枝とすることにより、前記回路状態遷移グラフ作成工程によって作成された回路状態遷移グラフにおいて、前記非検出クロックゲーティング状態遷移枝に対応する回路状態遷移枝から初期状態までの状態遷移を探索させる探索工程と、
前記探索工程によって探索された探索結果を、前記非検出クロックゲーティング状態遷移枝を出現させる入力パタンとして出力させる出力工程と、
を含んだことを特徴とする付記７に記載のクロックゲーティング解析プログラム。
【０２０４】
（付記９）前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出させる次状態関数算出工程と、
前記変換テーブルと前記次状態関数算出工程によって算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成させる状態テーブル作成工程と、
前記全状態集合出力工程によって出力されたクロックゲーティング全状態集合と前記状態テーブル作成工程によって作成された状態テーブルとに基づいて、前記クロックゲーティング状態の状態遷移をあらわすクロックゲーティング状態遷移グラフを作成させるクロックゲーティング状態遷移グラフ作成工程と、
前記クロックゲーティング状態遷移グラフ作成工程によって作成されたクロックゲーティング状態遷移グラフの中から、前記クロックゲーティングが非活性化状態から活性化状態に復帰しない状態遷移を抽出させる状態遷移抽出工程と、
を前記コンピュータに実行させることを特徴とする付記１に記載のクロックゲーティング解析プログラム。
【０２０５】
（付記１０）前記全状態集合出力工程によって出力されたクロックゲーティング全状態集合の中の任意のクロックゲーティング状態を、任意のローカルクロックを活性化状態から非活性化状態にしたクロックゲーティング状態に変換させる変換工程と、
前記変換工程によって変換された変換後のクロックゲーティング状態の中から、クロックゲーティング全状態集合内のクロックゲーティング状態と一致するものを削除することにより、クロックゲーティングミス状態候補を生成させるクロックゲーティングミス状態候補生成工程と、
を前記コンピュータに実行させることを特徴とする付記１に記載のクロックゲーティング解析プログラム。
【０２０６】
（付記１１）前記クロックゲーティングミス状態候補生成工程によって生成されたクロックゲーティングミス状態候補が、前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出される特定のクロックゲーティング状態を含んでいるか否かを判断させるとともに、前記変換工程により変換対象となったクロックゲーティングにより駆動される順序回路素子の出力値が変化するか否かを判断させる判断工程と、
前記判断工程によって判断された判断結果に基づいて、前記クロックゲーティングミス状態候補から前記特定のクロックゲーティング状態を削除させる削除工程と、
を前記コンピュータに実行させることを特徴とする付記１０に記載のクロックゲーティング解析プログラム。
【０２０７】
（付記１２）付記１〜付記１１に記載のクロックゲーティング解析プログラムを記録した前記コンピュータに読み取り可能な記録媒体。
【０２０８】
（付記１３）解析対象回路内の順序回路素子へクロックの供給または前記クロックの停止をおこなうクロックゲーティングを検出する検出手段と、
前記検出手段によって検出されたローカルクロックから出力されるローカルクロックの活性化／非活性化を表現するクロックゲーティング関数を、前記クロックゲーティングごとに算出するクロックゲーティング関数算出手段と、
前記クロックゲーティング関数算出手段によって算出された各クロックゲーティング関数に、前記各順序回路素子からの出力値の組み合わせを代入して、前記各クロックゲーティング関数の値の組み合わせを、前記ローカルクロック相互の活性化／非活性化をあらわすクロックゲーティング状態として算出することにより、前記各順序回路素子からの出力値の組み合わせから前記クロックゲーティング状態への変換をあらわす変換テーブルを作成する変換テーブル作成手段と、
前記変換テーブル作成手段によって作成された変換テーブルに基づいて、前記解析対象回路における前記クロックゲーティング状態をすべて網羅するクロックゲーティング全状態集合を出力する全状態集合出力手段と、
備えることを特徴とするクロックゲーティング解析装置。
【０２０９】
（付記１４）前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態が、前記全状態集合出力手段によって出力されたクロックゲーティング全状態集合を網羅している割合をあらわす状態網羅率を算出する状態網羅率算出手段を備えることを特徴とする付記１３に記載のクロックゲーティング解析装置。
【０２１０】
（付記１５）前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態（以下、「検出クロックゲーティング状態」という）を除いたクロックゲーティング状態（以下、「非検出クロックゲーティング状態」という）を前記クロックゲーティング全状態集合の中から抽出する非検出クロックゲーティング状態抽出手段と、
前記変換テーブルを用いて、前記非検出クロックゲーティング状態抽出手段によって抽出された非クロックゲーティング状態を出現させる入力パタンを生成する入力パタン生成手段と、
を備えることを特徴とする付記１３または１４に記載のクロックゲーティング解析装置。
【０２１１】
（付記１６）前記入力パタン生成手段は、
前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出する次状態関数算出手段と、
前記変換テーブルと前記次状態関数算出手段によって算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成する状態テーブル作成手段と、
前記状態テーブル作成手段によって作成された状態テーブルにおける前記各順序回路素子からの現時刻および次時刻の出力値の組み合わせに基づいて、前記解析対象回路の状態遷移をあらわす回路状態遷移グラフを作成する回路状態遷移グラフ作成手段と、
前記非検出クロックゲーティング状態を次時刻のクロックゲーティング状態とすることにより、前記回路状態遷移グラフ作成手段によって作成された回路状態遷移グラフにおいて、前記非検出クロックゲーティング状態に対応する次時刻の出力値の組み合わせから初期状態までの状態遷移を探索する探索手段と、
前記探索手段によって探索された探索結果を、前記非検出クロックゲーティング状態抽出手段によって抽出された非検出クロックゲーティング状態を出現させる入力パタンとして出力する出力手段と、
を備えることを特徴とする付記１５に記載のクロックゲーティング解析装置。
【０２１２】
（付記１７）前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出する次状態関数算出手段と、
前記変換テーブルと前記次状態関数算出手段によって算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成する状態テーブル作成手段と、
前記全状態集合出力手段によって出力されたクロックゲーティング全状態集合と前記状態テーブル作成手段によって作成された状態テーブルとに基づいて、前記クロックゲーティング状態の状態遷移をあらわすクロックゲーティング状態遷移グラフを作成するクロックゲーティング状態遷移グラフ作成手段と、
前記クロックゲーティング状態遷移グラフ作成手段によって作成されたクロックゲーティング状態遷移グラフの中から、前記クロックゲーティング状態の状態遷移枝をすべて抽出することにより、クロックゲーティング全状態遷移枝集合を出力する全状態遷移枝集合出力手段と、
を備えることを特徴とする付記１３に記載のクロックゲーティング解析装置。
【０２１３】
（付記１８）前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態遷移枝が、前記全状態遷移枝集合出力手段によって出力されたクロックゲーティング全状態遷移枝集合を網羅している割合をあらわす状態遷移枝網羅率を算出する状態遷移枝網羅率算出手段を備えることを特徴とする付記１７に記載のクロックゲーティング解析装置。
【０２１４】
（付記１９）前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態遷移枝（以下、「検出クロックゲーティング状態遷移枝」という）を除いたクロックゲーティング状態遷移枝（以下、「非検出クロックゲーティング状態遷移枝」という）を前記クロックゲーティング全状態遷移枝集合の中から抽出する非検出クロックゲーティング状態遷移枝抽出手段と、
前記変換テーブルを用いて、前記非検出クロックゲーティング状態遷移枝抽出手段によって抽出された非検出クロックゲーティング状態遷移枝を出現させる入力パタンを生成する入力パタン生成手段と、
を備えることを特徴とする付記１７または１８に記載のクロックゲーティング解析装置。
【０２１５】
（付記２０）前記入力パタン生成手段は、
前記状態テーブルにおける前記各順序回路素子からの現時刻および次時刻の出力値の組み合わせに基づいて、前記解析対象回路の状態遷移をあらわす回路状態遷移グラフを作成する回路状態遷移グラフ作成手段と、
前記非検出クロックゲーティング状態遷移枝を次時刻のクロックゲーティング状態遷移枝とすることにより、前記回路状態遷移グラフ作成手段によって作成された回路状態遷移グラフにおいて、前記非検出クロックゲーティング状態遷移枝に対応する回路状態遷移枝から初期状態までの状態遷移を探索する探索手段と、
前記探索手段によって探索された探索結果を、前記非検出クロックゲーティング状態遷移枝を出現させる入力パタンとして出力する出力手段と、
を備えることを特徴とする付記１９に記載のクロックゲーティング解析装置。
【０２１６】
（付記２１）前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出する次状態関数算出手段と、
前記変換テーブルと前記次状態関数算出手段によって算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成する状態テーブル作成手段と、
前記全状態集合出力手段によって出力されたクロックゲーティング全状態集合と前記状態テーブル作成手段によって作成された状態テーブルとに基づいて、前記クロックゲーティング状態の状態遷移をあらわすクロックゲーティング状態遷移グラフを作成するクロックゲーティング状態遷移グラフ作成手段と、
前記クロックゲーティング状態遷移グラフ作成手段によって作成されたクロックゲーティング状態遷移グラフの中から、前記ローカルクロックが非活性化状態から活性化状態に復帰しない状態遷移を抽出する状態遷移抽出手段と、
を備えることを特徴とする付記１３に記載のクロックゲーティング解析装置。
【０２１７】
（付記２２）前記全状態集合出力手段によって出力されたクロックゲーティング全状態集合の中の任意のクロックゲーティング状態を、任意のローカルクロックを活性化状態から非活性化状態にしたクロックゲーティング状態に変換する変換手段と、
前記変換手段によって変換された変換後のクロックゲーティング状態の中から、クロックゲーティング全状態集合内のクロックゲーティング状態と一致するものを削除することにより、クロックゲーティングミス状態候補を生成するクロックゲーティングミス状態候補生成手段と、
を備えることを特徴とする付記１３に記載のクロックゲーティング解析装置。
【０２１８】
（付記２３）前記クロックゲーティングミス状態候補生成手段によって生成されたクロックゲーティングミス状態候補が、前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出される特定のクロックゲーティング状態を含んでいるか否かを判断するとともに、前記変換手段により変換対象となったクロックゲーティングにより駆動される順序回路素子の出力値が変化するか否かを判断する判断手段と、
前記判断手段によって判断された判断結果に基づいて、前記クロックゲーティングミス状態候補から前記特定のクロックゲーティング状態を削除する削除手段と、
を備えることを特徴とする付記２２に記載のクロックゲーティング解析装置。
【０２１９】
（付記２４）解析対象回路内の順序回路素子へクロックの供給または前記クロックの停止をおこなうクロックゲーティングを検出する検出工程と、
前記検出工程によって検出されたローカルクロックから出力されるローカルクロックの活性化／非活性化を表現するクロックゲーティング関数を、前記クロックゲーティングごとに算出するクロックゲーティング関数算出工程と、
前記クロックゲーティング関数算出工程によって算出された各クロックゲーティング関数に、前記各順序回路素子からの出力値の組み合わせを代入して、前記各クロックゲーティング関数の値の組み合わせを、前記ローカルクロック相互の活性化／非活性化をあらわすクロックゲーティング状態として算出することにより、前記各順序回路素子からの出力値の組み合わせから前記クロックゲーティング状態への変換をあらわす変換テーブルを作成する変換テーブル作成工程と、
前記変換テーブル作成工程によって作成された変換テーブルに基づいて、前記解析対象回路における前記クロックゲーティング状態をすべて網羅するクロックゲーティング全状態集合を出力する全状態集合出力工程と、
含んだことを特徴とするクロックゲーティング解析方法。
【０２２０】
（付記２５）前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態が、前記全状態集合出力工程によって出力されたクロックゲーティング全状態集合を網羅している割合をあらわす状態網羅率を算出する状態網羅率算出工程を含んだことを特徴とする付記２４に記載のクロックゲーティング解析方法。
【０２２１】
（付記２６）前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態（以下、「検出クロックゲーティング状態」という）を除いたクロックゲーティング状態（以下、「非検出クロックゲーティング状態」という）を前記クロックゲーティング全状態集合の中から抽出する非検出クロックゲーティング状態抽出工程と、
前記変換テーブルを用いて、前記非検出クロックゲーティング状態抽出工程によって抽出された非検出クロックゲーティング状態を出現させる入力パタンを生成する入力パタン生成工程と、
を含んだことを特徴とする付記２４または２５に記載のクロックゲーティング解析方法。
【０２２２】
（付記２７）前記入力パタン生成工程は、
前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出する次状態関数算出工程と、
前記変換テーブルと前記次状態関数算出工程によって算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成する状態テーブル作成工程と、
前記状態テーブル作成工程によって作成された状態テーブルにおける前記各順序回路素子からの現時刻および次時刻の出力値の組み合わせに基づいて、前記解析対象回路の状態遷移をあらわす回路状態遷移グラフを作成する回路状態遷移グラフ作成工程と、
前記非検出クロックゲーティング状態を次時刻のクロックゲーティング状態とすることにより、前記回路状態遷移グラフ作成工程によって作成された回路状態遷移グラフにおいて、前記非検出クロックゲーティング状態に対応する次時刻の出力値の組み合わせから初期状態までの状態遷移を探索する探索工程と、
前記探索工程によって探索された探索結果を、前記非検出クロックゲーティング状態抽出工程によって抽出された非検出クロックゲーティング状態を出現させる入力パタンとして出力する出力工程と、
を含んだことを特徴とする付記２６に記載のクロックゲーティング解析方法。
【０２２３】
（付記２８）前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出する次状態関数算出工程と、
前記変換テーブルと前記次状態関数算出工程によって算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成する状態テーブル作成工程と、
前記全状態集合出力工程によって出力されたクロックゲーティング全状態集合と前記状態テーブル作成工程によって作成された状態テーブルとに基づいて、前記クロックゲーティング状態の状態遷移をあらわすクロックゲーティング状態遷移グラフを作成するクロックゲーティング状態遷移グラフ作成工程と、
前記クロックゲーティング状態遷移グラフ作成工程によって作成されたクロックゲーティング状態遷移グラフの中から、前記クロックゲーティング状態の状態遷移枝をすべて抽出することにより、クロックゲーティング全状態遷移枝集合を出力する全状態遷移枝集合出力工程と、
を含んだことを特徴とする付記２４に記載のクロックゲーティング解析方法。
【０２２４】
（付記２９）前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態遷移枝が、前記全状態遷移枝集合出力工程によって出力されたクロックゲーティング全状態遷移枝集合を網羅している割合をあらわす状態遷移枝網羅率を算出する状態遷移枝網羅率算出工程を含んだことを特徴とする付記２８に記載のクロックゲーティング解析方法。
【０２２５】
（付記３０）前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態遷移枝（以下、「検出クロックゲーティング状態遷移枝」という）を除いたクロックゲーティング状態遷移枝（以下、「非検出クロックゲーティング状態遷移枝」という）を前記クロックゲーティング全状態遷移枝集合の中から抽出する非検出クロックゲーティング状態遷移枝抽出工程と、
前記変換テーブルを用いて、前記非検出クロックゲーティング状態遷移枝抽出工程によって抽出された非検出クロックゲーティング状態遷移枝を出現させる入力パタンを生成する入力パタン生成工程と、
を含んだことを特徴とする付記２８または２９に記載のクロックゲーティング解析方法。
【０２２６】
（付記３１）前記入力パタン生成工程は、
前記状態テーブルにおける前記各順序回路素子からの現時刻および次時刻の出力値の組み合わせに基づいて、前記解析対象回路の状態遷移をあらわす回路状態遷移グラフを作成する回路状態遷移グラフ作成工程と、
前記非検出クロックゲーティング状態遷移枝を次時刻のクロックゲーティング状態遷移枝とすることにより、前記回路状態遷移グラフ作成工程によって作成された回路状態遷移グラフにおいて、前記非クロックゲーティング状態遷移枝に対応する回路状態遷移枝から初期状態までの状態遷移を探索する探索工程と、
前記探索工程によって探索された探索結果を、前記非検出クロックゲーティング状態遷移枝を出現させる入力パタンとして出力する出力工程と、
を含んだことを特徴とする付記３０に記載のクロックゲーティング解析方法。
【０２２７】
（付記３２）前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出する次状態関数算出工程と、
前記変換テーブルと前記次状態関数算出工程によって算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成する状態テーブル作成工程と、
前記全状態集合出力工程によって出力されたクロックゲーティング全状態集合と前記状態テーブル作成工程によって作成された状態テーブルとに基づいて、前記クロックゲーティング状態の状態遷移をあらわすクロックゲーティング状態遷移グラフを作成するクロックゲーティング状態遷移グラフ作成工程と、
前記クロックゲーティング状態遷移グラフ作成工程によって作成されたクロックゲーティング状態遷移グラフの中から、前記ローカルクロックが非活性化状態から活性化状態に復帰しない状態遷移を抽出する状態遷移抽出工程と、
を含んだことを特徴とする付記２４に記載のクロックゲーティング解析方法。
【０２２８】
（付記３３）前記全状態集合出力工程によって出力されたクロックゲーティング全状態集合の中の任意のクロックゲーティング状態を、任意のローカルクロックを活性化状態から非活性化状態にしたクロックゲーティング状態に変換する変換工程と、
前記変換工程によって変換された変換後のクロックゲーティング状態の中から、クロックゲーティング全状態集合内のクロックゲーティング状態と一致するものを削除することにより、クロックゲーティングミス状態候補を生成するクロックゲーティングミス状態候補生成工程と、
を含んだことを特徴とする付記２４に記載のクロックゲーティング解析方法。
【０２２９】
（付記３４）前記クロックゲーティングミス状態候補生成工程によって生成されたクロックゲーティングミス状態候補が、前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出される特定のクロックゲーティング状態を含んでいるか否かを判断するとともに、前記変換工程により変換対象となったクロックゲーティングにより駆動される順序回路素子の出力値が変化するか否かを判断する判断工程と、
前記判断工程によって判断された判断結果に基づいて、前記クロックゲーティングミス状態候補から前記特定のクロックゲーティング状態を削除する削除工程と、
を含んだことを特徴とする付記３３に記載のクロックゲーティング解析方法。
【産業上の利用可能性】
【０２３０】
以上のように、本発明にかかるクロックゲーティング解析装置、クロックゲーティング解析方法、およびクロックゲーティング解析プログラムは、クロックゲーティング機能を備えたＬＳＩの設計に有用であり、特にクロックゲーティング機能が膨大なＬＳＩに適している。
【図面の簡単な説明】
【０２３１】
【図１】この発明の実施の形態にかかるクロックゲーティング解析装置のハードウェア構成を示すブロック図である。
【図２】この発明の実施の形態にかかるクロックゲーティング解析装置１００の解析対象となる解析対象回路の一例を示す回路図である。
【図３】図２に示した解析対象回路２００のクロックゲーティング状態を示す説明図である。
【図４】この発明の実施の形態にかかるクロックゲーティング解析装置１００の機能的構成１を示すブロック図である。
【図５】図２に示した解析対象回路２００に関する変換テーブルＴ１を示す説明図である。
【図６】この発明の実施の形態にかかるクロックゲーティング解析装置１００のクロックゲーティング解析処理手順１を示すフローチャートである。
【図７】この発明の実施の形態にかかるクロックゲーティング解析装置１００の機能的構成２を示すブロック図である。
【図８】入力パタン生成部７０４の詳細な機能的構成を示すブロック図である。
【図９】図２に示した解析対象回路２００に関する状態テーブルＴ２を示す説明図である。
【図１０】回路状態遷移グラフＧ１を示す説明図である。
【図１１】状態テーブルＴ２からの検索例（その１）を示す説明図である。
【図１２】図１１に示した検索結果からの状態遷移枝の検出例を示す説明図である。
【図１３】状態テーブルＴ２からの検索例（その２）を示す説明図である。
【図１４】図１３に示した検索結果からの状態遷移枝の検出例を示す説明図である。
【図１５】この発明の実施の形態にかかるクロックゲーティング解析装置１００のクロックゲーティング解析処理手順２を示すフローチャートである。
【図１６】ステップＳ１５０５に示した状態網羅率ＲＳを上昇させる入力パタンの生成処理の手順を示すフローチャートである。
【図１７】ステップＳ１６０６に示した入力パタン探索処理の手順を示すフローチャートである。
【図１８】この発明の実施の形態にかかるクロックゲーティング解析装置１００の機能的構成３を示すブロック図である。
【図１９】ＣＧ状態遷移グラフＧ２を示す説明図である。
【図２０】入力パタン生成部１８０５の詳細な機能的構成を示すブロック図である。
【図２１】状態テーブルＴ２からの検索例（その１）を示す説明図である。
【図２２】回路状態遷移グラフＧ１からの検出例（その１）を示す説明図である。
【図２３】この発明の実施の形態にかかるクロックゲーティング解析装置１００のクロックゲーティング解析処理手順３を示すフローチャートである。
【図２４】ステップＳ２３０９で状態遷移枝網羅率ＲＥを上昇させる入力パタンの生成処理の処理手順を示すフローチャートである。
【図２５】ステップＳ２４０４で示した入力パタン探索処理の処理手順を示すフローチャートである。
【図２６】この発明の実施の形態にかかるクロックゲーティング解析装置１００の機能的構成４を示すブロック図である。
【図２７】この発明の実施の形態にかかるクロックゲーティング解析装置１００のクロックゲーティング解析処理手順４を示すフローチャートである。
【図２８】この発明の実施の形態にかかるクロックゲーティング解析装置１００の機能的構成５を示すブロック図である。
【図２９】変換部２８０１およびミス状態候補集合生成部２８０２によるミス状態候補生成例を示す説明図である。
【図３０】この発明の実施の形態にかかるクロックゲーティング解析装置１００のクロックゲーティング解析処理手順５を示すフローチャートである。
【図３１】ミス状態候補ｍｉの絞込み処理手順を示すフローチャートである。
【符号の説明】
【０２３２】
１００  クロックゲーティング解析装置
２００  解析対象回路
４００  設計データ
４０１  クロックゲーティング検出部
４０２  ＣＧ関数算出部
４０３  変換テーブル作成部
４０４  ＣＧ全状態集合出力部
７０１  シミュレーション実行部
７０２  状態網羅率算出部
７０３  非検出ＣＧ状態抽出部
７０４，１８０５  入力パタン生成部
８０１  次状態関数算出部
８０２  状態テーブル作成部
８０３  回路状態遷移グラフ作成部
８０４，２００１  探索部
８０５，２００２  出力部
１８０１  ＣＧ状態遷移グラフ作成部
１８０２  ＣＧ全状態遷移枝出力部
１８０３  状態遷移枝網羅率算出部
１８０４  非検出ＣＧ状態遷移枝抽出部
２６００  状態遷移抽出部
２８０１  変換部
２８０２  ミス状態候補集合生成部
２８０３  判断部
２８０４  削除部
ＣＧｉ  クロックゲーティング
ＬＣｉ  ローカルクロック
【図１】
2008197920.tif 000003
【図２】
2008197920.tif 000004
【図３】
2008197920.tif 000005
【図４】
2008197920.tif 000006
【図５】
2008197920.tif 000007
【図６】
2008197920.tif 000008
【図７】
2008197920.tif 000009
【図８】
2008197920.tif 000010
【図９】
2008197920.tif 000011
【図１０】
2008197920.tif 000012
【図１１】
2008197920.tif 000013
【図１２】
2008197920.tif 000014
【図１３】
2008197920.tif 000015
【図１４】
2008197920.tif 000016
【図１５】
2008197920.tif 000017
【図１６】
2008197920.tif 000018
【図１７】
2008197920.tif 000019
【図１８】
2008197920.tif 000020
【図１９】
2008197920.tif 000021
【図２０】
2008197920.tif 000022
【図２１】
2008197920.tif 000023
【図２２】
2008197920.tif 000024
【図２３】
2008197920.tif 000025
【図２４】
2008197920.tif 000026
【図２５】
2008197920.tif 000027
【図２６】
2008197920.tif 000028
【図２７】
2008197920.tif 000029
【図２８】
2008197920.tif 000030
【図２９】
2008197920.tif 000031
【図３０】
2008197920.tif 000032
【図３１】
2008197920.tif 000033