JP4388965B2 - クロックゲーティング解析プログラム、該プログラムを記録した記録媒体、クロックゲーティング解析装置、およびクロックゲーティング解析方法 - Google Patents

クロックゲーティング解析プログラム、該プログラムを記録した記録媒体、クロックゲーティング解析装置、およびクロックゲーティング解析方法 Download PDF

Info

Publication number
JP4388965B2
JP4388965B2 JP2007032540A JP2007032540A JP4388965B2 JP 4388965 B2 JP4388965 B2 JP 4388965B2 JP 2007032540 A JP2007032540 A JP 2007032540A JP 2007032540 A JP2007032540 A JP 2007032540A JP 4388965 B2 JP4388965 B2 JP 4388965B2
Authority
JP
Japan
Prior art keywords
state
clock gating
clock
state transition
output
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007032540A
Other languages
English (en)
Other versions
JP2008197920A (ja
Inventor
博之 樋口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2007032540A priority Critical patent/JP4388965B2/ja
Priority to US12/002,349 priority patent/US8069026B2/en
Publication of JP2008197920A publication Critical patent/JP2008197920A/ja
Application granted granted Critical
Publication of JP4388965B2 publication Critical patent/JP4388965B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/3312Timing analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Description

この発明は、半導体集積回路(LSI)に組み込まれているクロックゲーティングを解析するクロックゲーティング解析プログラム、該プログラムを記録した記録媒体、クロックゲーティング解析装置、およびクロックゲーティング解析方法に関する。また、クロックゲーティング(機能)とは、LSIの低消費電力化の主要技術の一つであり、LSI中で計算していない部分のクロック信号をクロック信号伝播のできるだけ根元で止め、不要なクロック信号の伝播による電力消費を抑える技術である。
従来、クロックゲーティングは大きなブロック単位で人手により挿入されていたため、クロックゲーティング機能の動作は設計者が完全に把握できていた。そのため、これまでのクロックゲーティングの検証では、(1)個々のクロックゲーティングの制御信号が到達するタイミングが正常動作の範囲内かを検証するクロック系信号のタイミング検証(たとえば、下記特許文献1,2を参照。)と、(2)クロックゲーティング機能を考慮したデータ系信号のタイミング検証(たとえば、非特許文献1を参照。)とが、おこなわれていた。
また、クロックゲーティングのタイミング検証以外の検証としては、クロックゲーティングに関係する部分回路を抽出して描画する程度のツールが開示されている(たとえば、下記特許文献3を参照。)。
特開平8−202569号公報 特開平11−259554号公報 特開平10−283381号公報 M.Kawarabayashi 他:「A Verification Technique for Gated Clock」(ア ベリフィケーション テクニック フォア ゲーテッド クロック), Proceedings of the Design Automation Conference(プロシーディングス オブ ザ デザイン オートメーション カンファレンス), pp.123-127, 1993
しかしながら、LSIの低消費電力化の要求はますます高まり、クロックゲーティングがより細かく挿入されたり、自動で挿入されたりするようになってきている。挿入されるクロックゲーティングの数が大幅に増え、設計者が個々のクロックゲーティング間の関係を統合的に把握するのはほぼ不可能になってきている。
このような状況の中で、クロックゲーティングの機能自体の検証洩れが問題になってきている。具体的には、クロックを止めるべきところで止められていない場合やクロックを止めてはいけないところで止まっていた場合、機能バグとして現れるため、検証洩れによる設計不良が問題となっている。また、クロックを止めたほうがよいのに止められていない場合、機能バグではないが無駄な電力消費をしてしまうという問題がある。消費電力については、近年その制約が厳しく、わずかな増加でもターゲット電力のオーバーにつながり問題となることが多い。
この発明は、上述した従来技術による問題点を解消するため、設計者の設計負担の軽減、解析対象回路の信頼性の向上、および低消費電力化を実現することができるクロックゲーティング解析プログラム、該プログラムを記録した記録媒体、クロックゲーティング解析装置、およびクロックゲーティング解析方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、この発明にかかるクロックゲーティング解析プログラム、該プログラムを記録した記録媒体、クロックゲーティング解析装置、およびクロックゲーティング解析方法は、解析対象回路内の順序回路素子へクロックの供給または前記クロックの停止をおこなうクロックゲーティングを検出し、検出されたクロックゲーティングにおいて前記順序回路素子から前記クロックの入力端子以外の他の入力端子に入力される制御信号により、前記クロックゲーティングから出力されるローカルクロックの活性化/非活性化を表現するクロックゲーティング関数を、前記クロックゲーティングごとに算出し、算出された各クロックゲーティング関数に、前記各順序回路素子からの出力値の組み合わせを代入して、前記各クロックゲーティング関数の値の組み合わせを、前記クロックゲーティング相互の活性化/非活性化をあらわすクロックゲーティング状態として算出することにより、前記各順序回路素子からの出力値の組み合わせから前記クロックゲーティング状態への変換をあらわす変換テーブルを作成し、作成された変換テーブルに基づいて、前記解析対象回路における前記クロックゲーティング状態をすべて網羅するクロックゲーティング全状態集合を出力することを特徴とする。
この発明によれば、クロックゲーティング解析において、個々のクロックゲーティング間の状態変化を考慮するために導入されたクロックゲーティング状態をすべて自動的に網羅することができる。
また、上記発明において、前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態が、前記全状態集合出力工程によって出力されたクロックゲーティング全状態集合を網羅している割合をあらわす状態網羅率を算出することとしてもよい。
この発明によれば、シミュレーションによる解析対象回路の機能バグを引き起こすクロックゲーティングのバグの検証漏れがどの程度存在するかを確認することができる。
また、上記発明において、前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態(以下、「検出クロックゲーティング状態」という)を除いたクロックゲーティング状態(以下、「非検出クロックゲーティング状態」という)を前記クロックゲーティング全状態集合の中から抽出し、前記変換テーブルを用いて、抽出された非クロックゲーティング状態を出現させる入力パタンを生成することとしてもよい。
この発明によれば、クロックゲーティング全状態集合に網羅されていないクロックゲーティングを出現させる入力パタンを自動生成することができる。またこれにより、状態網羅率を上昇させることができる。
また、上記発明において、前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出し、前記変換テーブルと算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成し、作成された状態テーブルにおける前記各順序回路素子からの現時刻および次時刻の出力値の組み合わせに基づいて、前記解析対象回路の状態遷移をあらわす回路状態遷移グラフを作成し、前記非検出クロックゲーティング状態を次時刻のクロックゲーティング状態とすることにより、作成された回路状態遷移グラフにおいて、前記非検出クロックゲーティング状態に対応する次時刻の出力値の組み合わせから初期状態までの状態遷移を探索し、探索された探索結果を、抽出された非クロックゲーティング状態を出現させる入力パタンとして出力することとしてもよい。
この発明によれば、クロックゲーティング全状態集合に網羅されていないクロックゲーティングを出現させる入力パタンを自動生成することができる。またこれにより、状態網羅率を上昇させることができる。
また、上記発明において、前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出し、前記変換テーブルと算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成し、出力されたクロックゲーティング全状態集合と作成された状態テーブルとに基づいて、前記クロックゲーティング状態の状態遷移をあらわすクロックゲーティング状態遷移グラフを作成し、作成されたクロックゲーティング状態遷移グラフの中から、前記クロックゲーティング状態の状態遷移枝をすべて抽出することにより、クロックゲーティング全状態遷移枝集合を出力することとしてもよい。
この発明によれば、クロックゲーティング解析において、個々のクロックゲーティング間の状態変化を考慮するために導入されたクロックゲーティング状態遷移枝をすべて自動的に網羅することができる。
また、上記発明において、前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態遷移枝が、出力されたクロックゲーティング全状態遷移枝集合を網羅している割合をあらわす状態遷移枝網羅率を算出することとしてもよい。
この発明によれば、シミュレーションによる解析対象回路の機能バグを引き起こすクロックゲーティングのバグの検証漏れがどの程度存在するかを確認することができる。
また、上記発明において、前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態遷移枝(以下、「検出クロックゲーティング状態遷移枝」という)を除いたクロックゲーティング状態遷移枝(以下、「非検出クロックゲーティング状態遷移枝」という)を前記クロックゲーティング全状態遷移枝集合の中から抽出し、前記変換テーブルを用いて、抽出された非クロックゲーティング状態遷移枝を出現させる入力パタンを生成することとしてもよい。
この発明によれば、クロックゲーティング全状態遷移枝集合に網羅されていないクロックゲーティングを出現させる入力パタンを自動生成することができる。またこれにより、状態遷移枝網羅率を上昇させることができる。
また、上記発明において、前記状態テーブルにおける前記各順序回路素子からの現時刻および次時刻の出力値の組み合わせに基づいて、前記解析対象回路の状態遷移をあらわす回路状態遷移グラフを作成し、前記非検出クロックゲーティング状態遷移枝を次時刻のクロックゲーティング状態遷移枝とすることにより、作成された回路状態遷移グラフにおいて、前記非クロックゲーティング状態遷移枝に対応する回路状態遷移枝から初期状態までの状態遷移を探索し、探索された探索結果を、前記非クロックゲーティング状態遷移枝を出現させる入力パタンとして出力することとしてもよい。
この発明によれば、クロックゲーティング全状態遷移枝集合に網羅されていないクロックゲーティングを出現させる入力パタンを自動生成することができる。またこれにより、状態遷移枝網羅率を上昇させることができる。
また、上記発明において、前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出し、前記変換テーブルと算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成し、出力されたクロックゲーティング全状態集合と作成された状態テーブルとに基づいて、前記クロックゲーティング状態の状態遷移をあらわすクロックゲーティング状態遷移グラフを作成し、作成されたクロックゲーティング状態遷移グラフの中から、前記クロックゲーティングが非活性化状態から活性化状態に復帰しない状態遷移を抽出することとしてもよい。
この発明によれば、クロックゲーティング機能のバグ検出を網羅的におこなうことができる。
また、上記発明において、出力されたクロックゲーティング全状態集合の中の任意のクロックゲーティング状態を、任意のローカルクロックを活性化状態から非活性化状態にしたクロックゲーティング状態に変換し、変換後のクロックゲーティング状態の中から、クロックゲーティング全状態集合内のクロックゲーティング状態と一致するものを削除することにより、クロックゲーティングミス状態候補を生成することとしてもよい。
この発明によれば、クロックを活性化状態(クロックを供給する状態)にしなくてもよいのに、活性化状態(クロックを止めている状態)になっているクロックゲーティングミス状態候補を意図的に自動生成することができる。
また、上記発明において、生成されたクロックゲーティングミス状態候補が、前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出される特定のクロックゲーティング状態を含んでいるか否かを判断させるとともに、変換対象となったクロックゲーティングにより駆動される順序回路素子の出力値が変化するか否かを判断し、判断された判断結果に基づいて、前記クロックゲーティングミス状態候補から前記特定のクロックゲーティング状態を削除することとしてもよい。
この発明によれば、シミュレーション結果により、クロックゲーティングミス状態候補を絞り込むことができる。
本発明にかかるクロックゲーティング解析プログラム、該プログラムを記録した記録媒体、クロックゲーティング解析装置、およびクロックゲーティング解析方法によれば、設計者の設計負担の軽減、解析対象回路の信頼性の向上、および低消費電力化を実現することができるという効果を奏する。
以下に添付図面を参照して、この発明にかかるクロックゲーティング解析プログラム、該プログラムを記録した記録媒体、クロックゲーティング解析装置、およびクロックゲーティング解析方法の好適な実施の形態を詳細に説明する。
(クロックゲーティング解析装置のハードウェア構成)
まず、この発明の実施の形態にかかるクロックゲーティング解析装置のハードウェア構成について説明する。図1は、この発明の実施の形態にかかるクロックゲーティング解析装置のハードウェア構成を示すブロック図である。
図1において、クロックゲーティング解析装置100は、コンピュータ本体110と、入力装置120と、出力装置130と、から構成されており、不図示のルータやモデムを介してLAN,WANやインターネットなどのネットワーク140に接続可能である。
コンピュータ本体110は、CPU,メモリ,インターフェースを有する。CPUは、クロックゲーティング解析装置100の全体の制御を司る。メモリは、ROM,RAM,HD,光ディスク111,フラッシュメモリから構成される。メモリはCPUのワークエリアとして使用される。
また、メモリには各種プログラムが格納されており、CPUからの命令に応じてロードされる。HDおよび光ディスク111はディスクドライブによりデータのリード/ライトが制御される。また、光ディスク111およびフラッシュメモリはコンピュータ本体110に対し着脱自在である。インターフェースは、入力装置120からの入力、出力装置130への出力、ネットワーク140に対する送受信の制御をおこなう。
また、入力装置120としては、キーボード121、マウス122、スキャナ123などがある。キーボード121は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式であってもよい。マウス122は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。スキャナ123は、画像を光学的に読み取る。読み取られた画像は画像データとして取り込まれ、コンピュータ本体110内のメモリに格納される。なお、スキャナ123にOCR機能を持たせてもよい。
また、出力装置130としては、ディスプレイ131、プリンタ132、スピーカ133などがある。ディスプレイ131は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。また、プリンタ132は、画像データや文書データを印刷する。またスピーカ133は、効果音や読み上げ音などの音声を出力する。
(解析対象回路の一例)
つぎに、この発明の実施の形態にかかるクロックゲーティング解析装置100の解析対象となる解析対象回路について説明する。図2は、この発明の実施の形態にかかるクロックゲーティング解析装置100の解析対象となる解析対象回路の一例を示す回路図である。
図2において、解析対象回路200は、論理合成後のネットリストなどの設計データによって表現される。この解析対象回路200には、クロックゲーティングCGi(i=1,2,…)が設けられている。クロックゲーティングCGiとは、順序回路素子(たとえば、フリップフロップ回路。以下、「FF」と称す。)に出力されるクロックの出力を制御する回路であり、たとえば、AND回路などの論理ゲートなどにより構成されている。
より具体的には、クロックゲーティングCGiの出力端子はFFのクロック端子に接続されており、一の入力端子はクロックを取り込み、他の入力端子が制御信号を取り込むことにより、クロックをクロックゲーティングで止めたり、出力先(直接間接を問わない)の順序回路素子のクロック端子に出力したりする。このように、クロックゲーティングCGiから出力先の順序回路素子に出力されるクロックclkをローカルクロックLCiと称す。
また、同一のローカルクロックLCiをクロック端子から取り込むFFを、「ローカルクロックLCiのFFグループAi」と称す。たとえば、ローカルクロックLC1のFFグループA1はFF2およびFF3から構成され、ローカルクロックLC2のFFグループA2はFF4およびFF5から構成され、ローカルクロックLC3のFFグループA3はFF6およびFF7から構成される。
なお、FF1は、いずれのローカルクロックLCiも取り込まないため、どのFFグループAiにも属さない。また、図2中、符号x1〜x3は、それぞれFF1,FF4,FF5の入力の値であり、符号y1〜y7は、それぞれFF1〜FF7からの出力値である。
(クロックゲーティング状態)
つぎに、この発明の実施の形態にかかるクロックゲーティング状態について説明する。図3は、図2に示した解析対象回路200のクロックゲーティング状態を示す説明図である。クロックゲーティング状態とは、同一時刻におけるクロックゲーティングCGi相互の状態変化をあらわしている。クロックゲーティング状態は、ローカルクロックLCiの集合である。この状態には、活性化(active)と非活性化(non−active)があり、活性化であれば、ローカルクロックLCiをそのFFグループAiのFFに出力し、非活性化であれば、ローカルクロックLCiの出力は非活性値固定(例えばポジティブエッジトリガFFの場合は0、ネガティブエッジトリガFFの場合は1)である。
(クロックゲーティング解析装置100の機能的構成1)
つぎに、この発明の実施の形態にかかるクロックゲーティング解析装置100の機能的構成1について説明する。図4は、この発明の実施の形態にかかるクロックゲーティング解析装置100の機能的構成1を示すブロック図である。図4におけるクロックゲーティング解析装置100では、解析対象回路200のクロックゲーティング状態(以下、「CG状態」と称す。)の集合(以下、「CG全状態集合」と称す。)を生成する構成である。
クロックゲーティング解析装置100は、クロックゲーティング検出部401と、クロックゲーティング関数(以下、「CG関数」と称す。)算出部402と、変換テーブル作成部403と、CG全状態集合出力部404と、から構成されている。これら各機能401〜404は、メモリに格納された当該機能に関するプログラムをCPUに実行させることにより、当該機能を実現することができる。
また、各機能401〜404からの出力データはメモリに保持される。また、図4中矢印で示した接続先の機能的構成は、接続元の機能的構成からの出力データをメモリから読み込んで、当該機能に関するプログラムをCPUに実行させる。
まず、クロックゲーティング検出部401は、解析対象回路200に関するネットリストなどの設計データ400を取り込んで、設計データ400により表現される解析対象回路200に存在するクロックゲーティングCGiを検出する。具体的には、クロックソースからFFまでの間に存在するセルのうち、バッファおよびインバータ以外のセル(たとえば、上述したAND回路)をクロックゲーティングとして検出する。
また、CG関数算出部402は、クロックゲーティング検出部401によって検出されたクロックゲーティングCGiから出力されるローカルクロックLCiの活性化/非活性化を表現するCG関数を算出する。CG関数とは、クロックゲーティングCGiにおいて、クロックclkの入力端子以外の他の入力端子に入力される制御信号の値を表現する関数である。以降、クロックゲーティングCGiのCG関数をfiと称す。このCG関数fiはクロックゲーティングCGiの(現時刻における)ローカルクロックLCiの活性化/非活性化を表している。
たとえば、クロックゲーティングCG1は、FF1の出力y1を制御信号として取り込むため、クロックゲーティングCG1のCG関数f1は、下記式(1)となる。
f1=y1・・・(1)
また、クロックゲーティングCG2は、その前段のNAND回路からの出力を制御信号として取り込むため、クロックゲーティングCG2のCG関数f2は、下記式(2)となる。
f2=(y1×y2×y3)’・・・(2)
なお、「×」は論理積、「’」は否定である。
また、クロックゲーティングCG3は、その前段のOR回路からの出力を制御信号として取り込むため、クロックゲーティングCG3のCG関数f3は、下記式(3)となる。
f3=y1’+y2+y3・・・(3)
なお、「+」は論理和である。
また、変換テーブル作成部403は、CG関数算出部402によって算出されたCG関数fiに基づいて、その入力元となるFFからの出力値の組み合わせからCG状態への変換テーブルT1を作成する。
具体的には、クロックゲーティングCGiへの入力元となるFFからの出力値yjの組み合わせと、クロックゲーティングCGiにおける各CG関数fiの組み合わせに変換する真理値表を変換テーブルT1として作成する。
図2の解析対象回路200を例に挙げて説明する。図5は、図2に示した解析対象回路200に関する変換テーブルT1を示す説明図である。クロックゲーティングCG1〜CG3の入力元となるFFはFF1〜FF3であり、その出力値はそれぞれy1,y2,y3であるため、出力値の組み合わせ{y1,y2,y3}は、8通り存在する。この8通りの組み合わせ{y1,y2,y3}を、CG関数f1〜f3に代入することで、変換後の{f1,f2,f3}を得ることができる。
ここで、CG関数fi=1であれば、そのローカルクロックゲーティングLCiは活性化状態となるため、そのFFグループ内のFFのクロック端子にローカルクロックLCiを供給することとなる。したがって、図5に示した{f1,f2,f3}は、クロックゲーティング状態そのものをあらわしており、「1」が活性化状態、「0」が非活性化状態をあらわすこととなる。
たとえば、図5において、{f1,f2,f3}={0,1,1}である場合、クロックゲーティングCG1がそのFFグループA1内のFFのクロック端子へのローカルクロックLC1の供給を停止し、クロックゲーティングCG2がそのFFグループA2内のFFのクロック端子にローカルクロックLC2を供給し、かつ、クロックゲーティングCG3がそのFFグループA3内のFFのクロック端子にローカルクロックLC3を供給していることをあらわしている。
また、図4において、CG全状態集合出力部404は、変換テーブル作成部403によって作成された変換テーブルT1に基づいて、CG全状態集合Sを出力する。CG全状態集合Sとは、CG状態をすべて網羅するCG状態の集合である。
具体的には、たとえば、変換テーブルT1では、クロックゲーティングCG1〜CG3の入力元となるFF1〜FF3の出力値{y1,y2,y3}の組み合わせをすべて網羅しているため、その変換結果であるCG状態{f1,f2,f3}をまとめることで、CG全状態集合Sを得ることができる。すなわち、重複している{f1,f2,f3}を一つにすることで、CG全状態集合Sを得ることができる。
図5に示した変換テーブルT1を例に挙げると、CG状態{f1,f2,f3}は3つのCG関数f1〜f3の組み合わせであるため、最大で8個出現するが、重複するCG状態が存在するため、CG状態{f1,f2,f3}は{0,1,1},{1,1,0},{1,1,1},{1,0,1}の4通りである。
(クロックゲーティング解析装置100のクロックゲーティング解析処理手順1)
つぎに、この発明の実施の形態にかかるクロックゲーティング解析装置100のクロックゲーティング解析処理手順1について説明する。図6は、この発明の実施の形態にかかるクロックゲーティング解析装置100のクロックゲーティング解析処理手順1を示すフローチャートである。
図6において、まず、メモリに保持されている設計データ400を読み込み(ステップS601)、クロックゲーティング検出部401により、解析対象回路200内のクロックゲーティングCGiを検出する(ステップS602)。そして、クロックゲーティングCGiのインデックスi=1,クロックゲーティング検出数nとし(ステップS603)、CG関数算出部402により、クロックゲーティングCGiのCG関数fiを算出する(ステップS604)。
そして、i>nであるか否かを判断し(ステップS605)、i>nでない場合(ステップS605:No)、iを1つインクリメントし(ステップS606)、ステップS64に戻る。一方、i>nである場合(ステップS605:Yes)、変換テーブル作成部403により変換テーブルT1を作成する(ステップS607)。そして、CG全状態集合出力部404により、CG全状態集合Sを出力する(ステップS608)。
このように、上述したクロックゲーティング解析装置100の機能的構成1およびクロックゲーティング解析処理手順1によれば、時刻ごとのクロックゲーティングCGi相互の状態変化を自動生成することができる。
(クロックゲーティング解析装置100の機能的構成2)
つぎに、この発明の実施の形態にかかるクロックゲーティング解析装置100の機能的構成2について説明する。この機能的構成2では、図4に示した機能的構成1で生成されたCG全状態集合Sを用いて、CG状態の状態網羅率の算出と、その状態網羅率を上昇させる入力パタンの生成をおこなう。なお、図4に示した構成と同一構成については同一符号を付し、その説明を省略する。
図7は、この発明の実施の形態にかかるクロックゲーティング解析装置100の機能的構成2を示すブロック図である。クロックゲーティング解析装置100は、シミュレーション実行部701と、状態網羅率算出部702と、非検出CG状態抽出部703と、入力パタン生成部704とから構成されている。これら各機能701〜704は、メモリに格納された当該機能に関するプログラムをCPUに実行させることにより、当該機能を実現することができる。
また、各機能701〜704からの出力データはメモリに保持される。また、図7中矢印で示した接続先の機能的構成は、接続元の機能的構成からの出力データをメモリから読み込んで、当該機能に関するプログラムをCPUに実行させる。
まず、シミュレーション実行部701は、設計データ400に対して任意の入力パタン(以下、「第1の入力パタンP1」と称す。)P1を与えることで、解析対象回路200の回路シミュレーションを実行する。シミュレーション実行部701は、既存の解析ツールで実現することができる。このシミュレーション実行結果から、時刻ごとのCG状態が検出される。このように、シミュレーション実行部701によるシミュレーション実行結果により検出されたCG状態を「検出CG状態710」と称す。
CG全状態集合Sは、解析対象回路200において発生するすべてのCG状態を網羅しているため、検出CG状態710はすべてCG全状態集合Sに含まれることとなる。
また、状態網羅率算出部702は、検出CG状態710がCG全状態集合Sを網羅する状態網羅率RSを算出する。すなわち、CG全状態集合SのCG状態数が分母の値となり、検出CG状態710のCG状態数が分子の値となって、状態網羅率RSが算出される。たとえば、検出CG状態710が{011},{110},{111}の3個である場合、図5に示したCG全状態集合Sのうち3個のCG状態が網羅されているため、状態網羅率RS=3/4となる。
また、非検出CG状態抽出部703は、CG全状態集合Sの中から検出CG状態710以外のCG状態(以下、「非検出CG状態720」と称す。)を抽出する。たとえば、図5に示したCG全状態集合Sのうち検出CG状態710が{011},{110},{111}である場合、{101}が非検出CG状態720として特定される。
また、入力パタン生成部704は、非検出CG状態720を網羅する入力パタン(以下、「第2の入力パタンP2」と称す。)を生成する。この入力パタン生成部704について具体的に説明する。
図8は、入力パタン生成部704の詳細な機能的構成を示すブロック図である。図8において、入力パタン生成部704は、次状態関数算出部801と、状態テーブル作成部802と、回路状態遷移グラフ作成部803と、探索部804と、出力部805とから構成されている。まず、次状態関数算出部801は、設計データ400を解析することにより、FFの次状態関数zjを算出する。次状態関数zjは、各FFの次時刻における出力を表現する関数である。
図2に示した解析対象回路200を用いて説明する。FF1には毎時刻x1が入力されるため、次状態関数z1は、下記式(4)の通りである。
z1=x1・・・(4)
また、現時刻においてFF1〜FF3からy1〜y3が出力された場合、FF2の前段のAND回路の出力が次時刻のFF2の出力として取り込まれる。したがって、次状態関数z2は、下記式(5)の通りである。
z2=y1’×y3・・・(5)
また、現時刻においてFF1〜FF3からy1〜y3が出力された場合、FF3の前段のNOR回路の出力が次時刻のFF3の出力として取り込まれる。したがって、次状態関数z3は、下記式(6)の通りである。
z3=(y1+y2)’・・・(6)
また、状態テーブル作成部802は、次状態関数算出部801によって算出された次状態関数zjと、変換テーブルT1とに基づいて、状態テーブルT2を作成する。状態テーブルT2とは、入力パタンx1と、現時刻におけるFFの出力{y1,y2,y3}と、次時刻におけるFFの出力{z1,z2,z3}と、現時刻におけるCG状態{f1,f2,f3}と、次時刻におけるCG状態{g1,g2,g3}とを関連付けたテーブルである。
図9は、図2に示した解析対象回路200に関する状態テーブルT2を示す説明図である。状態テーブルT2の左から1列目には、入力x1の値が示されている。また2列目には、現時刻におけるFFの出力{y1,y2,y3}の値が示されている。なお、ここでは{y1,y2,y3}={0,0,0}を初期状態の値とする。
また、2列目には、次時刻におけるFFの出力{z1,z2,z3}の値が示されている。{z1,z2,z3}の各値は、その左の{y1,y2,y3}の次時刻の出力値をあらわしている。
また、3列目には、現時刻におけるCG状態{f1,f2,f3}が示されている。{f1,f2,f3}の各値は、現時刻におけるFFの出力{y1,y2,y3}の値を変換テーブルT1を用いて変換することにより得られる値である。
また、4列目には、次時刻におけるCG状態{g1,g2,g3}が示されている。{g1,g2,g3}の各値は、次時刻におけるFFの出力{z1,z2,z3}の値を変換テーブルT1の{f1,f2,f3}として代入して変換することにより、変換結果{f1,f2,f3}として得られる値である。
また、図8において、回路状態遷移グラフ作成部803は、状態テーブルT2の左側2列を用いて解析対象回路200の状態遷移グラフG1(以下、「回路状態遷移グラフG1」と称す。)を作成する。ただし、クロックゲーティング関数を求めることが目的であるため、回路の状態として考慮するFFはクロックゲーティング関数に含まれるFFとそのFFの次状態関数に含まれるFF回路の状態として考慮するFFのみとする。図10は、回路状態遷移グラフG1を示す説明図である。
楕円で囲われた数字列は、FFの出力をあらわすノード(現時刻におけるFFの出力{y1,y2,y3}の値)であり、矢印は状態遷移枝である。矢印の始端側のノードは遷移元のノードであり、矢印の終端側のノードは遷移先のノード(次時刻におけるFFの出力{z1,z2,z3}の値)である。なお、{000}は初期状態をあらわすノードである。
また、探索部804は、非検出クロックゲーティング状態720を次時刻のクロックゲーティング状態とすることにより、回路状態遷移グラフ作成部803によって作成された回路状態遷移グラフG1において、非検出クロックゲーティング状態720に対応する次時刻の出力値の組み合わせから初期状態までの状態遷移を探索する。具体的には、回路状態遷移グラフG1において、初期状態におけるFFの出力{y1,y2,y3}={0,0,0}から非検出CG状態720を出現させる次時刻におけるFFの出力{z1,z2,z3}の値までの各状態遷移時の入力x1の値および当該各状態遷移時の時刻を第2の入力パタンP2として探索する。
また、出力部805は、探索部804によって探索された第2の入力パタンP2を出力する。具体的には、たとえば、メモリへの格納でもよく出力装置からの出力でもよい。
ここで探索部804の探索処理について詳細に説明する。まず、次時刻におけるCG状態が非検出CG状態720となる入力x1の値、現時刻におけるFFの出力、次時刻におけるFFの出力を状態テーブルT2から検索する。
図11は、状態テーブルT2からの検索例(その1)を示す説明図である。たとえば、非検出CG状態720が{111}である場合、次時刻におけるCG状態が{g1,g2,g3}={111}となるx1,{y1,y2,y3},{z1,z2,z3}を状態テーブルT2から検索する(図11中、ハッチングで表示)。
そして、検索結果となる現時刻におけるFFの出力{y1,y2,y3}の値から次時刻におけるFFの出力{z1,z2,z3}の値への状態遷移枝を、回路状態遷移グラフG1から検出する。図12は、図11に示した検索結果からの状態遷移枝の検出例を示す説明図である。
図11に示した検索結果では、{y1,y2,y3}={000}であり、{z1,z2,z3}={101}である。したがって、{000}であるノードN0から{101}であるノードN1に遷移する状態遷移枝e01を検出する。この状態遷移枝e01の状態遷移時の入力x1の値は、図11に示した検索結果よりx1=1であることがわかる。
つぎに、状態遷移元であるノードN0が初期状態のノードであるか否かを判断する。ノードN0の値は{y1,y2,y3}={000}であるため初期状態である。したがって、時刻t=0(初期状態)が状態遷移枝e01の状態遷移時の入力x1の値(x1=1)と対応付けられ、探索された入力パタン(第2の入力パタンP2)は、『時刻t=0(初期状態)で入力x1=1』となる。
また、非検出CG状態720が{111}である場合、次時刻におけるCG状態が{g1,g2,g3}={111}となるx1,{y1,y2,y3},{z1,z2,z3}がもう一組存在する。図13は、状態テーブルT2からの検索例(その2)を示す説明図である。図13中、このときの検索結果は、符号1301で示す行(ハッチングで表示)である。
そして、検索結果となる現時刻におけるFFの出力{y1,y2,y3}の値から次時刻におけるFFの出力{z1,z2,z3}の値への状態遷移枝を、回路状態遷移グラフG1から検出する。図14は、図13に示した検索結果からの状態遷移枝の検出例を示す説明図である。
図13に示した検索結果では、{y1,y2,y3}={011}であり、{z1,z2,z3}={110}である。したがって、{011}であるノードN3から{110}であるノードN4に遷移する状態遷移枝e34を検出する。この状態遷移枝e34の状態遷移時の入力x1の値は、図13に示した検索結果の行1301よりx1=1であることがわかる。
つぎに、状態遷移元であるノードN3が初期状態のノードであるか否かを判断する。ノードN3の値は{y1,y2,y3}={011}であるため初期状態ではない。したがって、ノードN3を状態遷移先とする遷移元のノードN2を探索する。状態テーブルT2からこのノードN2からノードN3への状態遷移時の入力x1の値は、図13に示した行1302よりx1=0であることがわかる。
そして、状態遷移元であるノードN2が初期状態のノードであるか否かを判断する。ノードN2の値は{y1,y2,y3}={001}であるため初期状態ではない。したがって、ノードN2を状態遷移先とする遷移元のノードN0を探索する。状態テーブルT2から、このノードN0からノードN2への状態遷移時の入力x1の値は、図13に示した行1303よりx1=0であることがわかる。
つぎに、状態遷移元であるノードN0が初期状態のノードであるか否かを判断する。ノードN0の値は{y1,y2,y3}={000}であるため初期状態である。このように、この探索処理により、回路状態遷移グラフG1上、時刻t=0でノードN0からノードN2に状態遷移(e02)し、その次時刻t=1でノードN2からノードN3に状態遷移(e23)し、その次時刻t=2でノードN3からノードN4に状態遷移(e34)する。したがって、各状態遷移枝e02,e23,e34における入力x1の値と、各時刻tを対応付ける。
これにより、探索されたもう一つの入力パタン(第2の入力パタンP2)は、『時刻t=0(初期状態)で入力x1=0、t=1で入力x1=0、t=2で入力x1=1』となる。このパタンを非検出状態{110}を検出するパタンとしてもよい。このようにして探索された第2の入力パタンP2を解析対象回路200に与えることにより、非検出CG状態720が出現することとなる。
(クロックゲーティング解析装置100のクロックゲーティング解析処理手順2)
つぎに、この発明の実施の形態にかかるクロックゲーティング解析装置100のクロックゲーティング解析処理手順2について説明する。クロックゲーティング解析処理手順2は、図7に示した機能的構成2についての処理手順である。図15は、この発明の実施の形態にかかるクロックゲーティング解析装置100のクロックゲーティング解析処理手順2を示すフローチャートである。
図15において、まず、第1の入力パタンP1が与えられるまで待ち受け(ステップS1501:No)、第1の入力パタンP1が与えられた場合(ステップS1501:Yes)、シミュレーション実行部701により解析対象回路200の回路シミュレーションを実行する(ステップS1502)。
つぎに、状態網羅率算出部702により、回路シミュレーション実行結果として得られる検出CG状態710がCG全状態集合Sをどの程度網羅しているかをあらわす状態網羅率RSを算出する(ステップS1503)。そして、非検出CG抽出部703により、CG全状態集合Sから検出CG状態710を除いたCG状態を、非検出CG状態720として抽出する(ステップS1504)。このあと、その状態網羅率RSを上昇させる入力パタンの生成処理を実行する(ステップS1505)。
図16は、ステップS1505に示した状態網羅率RSを上昇させる入力パタンの生成処理の手順を示すフローチャートである。図16において、まず、次状態関数算出部801により解析対象回路200内のFFの次状態関数zjを算出する(ステップS1601)。つぎに、状態テーブル作成部802により状態テーブルT2を作成する(ステップS1602)。そして、回路状態遷移グラフ作成部803により、回路状態遷移グラフG1を作成する(ステップS1603)。
つぎに、NS=Φ(空集合)であるか否かを判断する(ステップS1604)。ここで、NSとは、非検出CG状態720の集合である。NS=Φでない場合(ステップS1604:No)、NSから任意の非検出CG状態720を抽出し、その非検出CG状態720をNSから削除する(ステップS1604)。
そして、探索部804により、入力パタン探索処理を実行する(ステップS1606)。入力パタン探索処理の詳細については後述する。このあと、ステップS1604に戻る。ステップS1604において、NS=Φである場合(ステップS1604:Yes)、出力部805により、探索結果を、状態網羅率RSを上昇させる入力パタン(第2の入力パタンP2)として出力する(ステップS1607)。
図17は、ステップS1606に示した入力パタン探索処理の手順を示すフローチャートである。図17において、まず、非検出CG状態720と一致する次時刻におけるCG状態を、状態テーブルT2から検出する(ステップS1701)。つぎに、検出されたCG状態を出現させる入力x1の値、現時刻におけるFFの出力{y1,y2,y3}の値、次時刻におけるFFの出力{z1,z2,z3}の値を、状態テーブルT2から検索する(ステップS1702)。
そして、次時刻におけるFFの出力{z1,z2,z3}の値を、状態遷移先のノード(探索開始ノード)に設定し(ステップS1703)、その遷移先のノードに対する遷移元のノードと、これらのノード間の状態遷移枝とを、回路状態遷移グラフG1から特定する(ステップS1704)。
つぎに、この特定された状態遷移枝と遷移元のノード(現時刻におけるFFの出力{y1,y2,y3}の値)により特定される入力x1の値とを対応付ける(ステップS1705)。このとき、遷移元のノードは、初期状態をあらわすノードであるか否かを判断する(ステップS1706)。初期状態を表わすノードでない場合(ステップS1706:No)、初期状態をあらわすノードから遷移元のノードまでのパスが探索済みであるか否かを判断する(ステップS1707)。
パスが探索済みである場合(ステップS1707:Yes)、ステップS1709に移行する。一方、パスが探索済みでない場合(ステップS1707:No)、初期状態をあらわすノードから遷移元のノードまでのパスを探索する(ステップS1708)。そして、遷移元のノードをあらたに遷移先のノードに設定し(ステップS1709)、探索されたパスに従って、その遷移先のノードに対する遷移元のノードと、これらのノード間の状態遷移枝とを、回路状態遷移グラフG1から特定する(ステップS1710)。このあと、ステップS1705に戻る。
一方、ステップS1706において、遷移元のノードが初期状態をあらわすノードとなった場合(ステップS1706:Yes)、これまでに特定された各状態遷移枝の状態遷移時の時刻を回路状態遷移グラフG1から算出し、各状態遷移枝の入力x1の値と対応付ける(ステップS1711)。
このあと、終了するか否かを判断する(ステップS1712)。具体的には、ステップS1702において検索された次時刻におけるFFの出力{z1,z2,z3}の値がほかにあれば、終了せずに(ステップS1712:No)、ステップS1703に戻り、ステップS1702において検索された次時刻におけるFFの出力{z1,z2,z3}の値がほかになければ、図16に示したステップS1604に戻る。
このように、上述したクロックゲーティング解析装置100の機能的構成2およびクロックゲーティング解析処理手順2によれば、状態網羅率RSを求めることにより、シミュレーションによる解析対照回路の機能検証時に、状態網羅率RSを上昇させることで解析対象回路200の機能バグを引き起こすクロックゲーティング機能のバグの検証漏れを減少させることができる。
また、網羅していないCG状態(非検出CG状態720)を出現させる第2の入力パタンP2を生成することにより状態網羅率RSを自動的に上昇させることができる。これにより、解析対象回路200の機能バグを引き起こすクロックゲーティング機能のバグの検証漏れを抑制することができる。
(クロックゲーティング解析装置100の機能的構成3)
つぎに、この発明の実施の形態にかかるクロックゲーティング解析装置100の機能的構成3について説明する。この機能的構成3では、図4に示した機能的構成1で生成されたCG全状態集合Sを用いて、CG状態遷移枝の状態遷移枝網羅率の算出と、その状態遷移枝網羅率を上昇させる入力パタンの生成をおこなう。なお、図4、図7および図8に示した構成と同一構成については同一符号を付し、その説明を省略する。
図18は、この発明の実施の形態にかかるクロックゲーティング解析装置100の機能的構成3を示すブロック図である。クロックゲーティング解析装置100は、シミュレーション実行部701と、次状態関数算出部801と、状態テーブル作成部802と、CG状態遷移グラフ作成部1801と、CG全状態遷移枝出力部1802と、状態遷移枝網羅率算出部1803と、非検出CG状態遷移枝抽出部1804と、入力パタン生成部1805とから構成されている。これら各機能701,801,802,1801〜1805は、メモリに格納された当該機能に関するプログラムをCPUに実行させることにより、当該機能を実現することができる。
また、各機能701,801,802,1801〜1805からの出力データはメモリに保持される。また、図18中矢印で示した接続先の機能的構成は、接続元の機能的構成からの出力データをメモリから読み込んで、当該機能に関するプログラムをCPUに実行させる。
まず、CG状態遷移グラフ作成部1801は、状態テーブルT2を用いて、CG状態の状態遷移をあらわすCG状態遷移グラフG2を作成する。図19は、CG状態遷移グラフG2を示す説明図である。ノードM1〜M4はCG状態をあらわし、矢印は状態遷移枝をあらわしている。この状態遷移枝は、状態テーブルT2において、現時刻のCG状態をあらわす{y1,y2,y3}の値から次時刻のCG状態をあらわす{z1,z2,z3}の値への状態遷移により作成される。
また、図18において、CG全状態遷移枝出力部1802は、CG状態遷移グラフ作成部1801によって作成されたCG状態遷移グラフG2の中から、クロックゲーティング状態の状態遷移枝をすべて抽出することにより、CG全状態遷移枝集合Eとして出力する。具体的には、CG全状態遷移枝集合Eをメモリに保持する。
また、状態遷移枝網羅率算出部1803は、解析対象回路200の状態遷移枝網羅率を算出する。具体的には、シミュレーション実行部701によるシミュレーション実行結果から時刻ごとのCG状態が検出されるため、その状態遷移をあらわす時刻ごとのCG状態遷移枝も検出される。このように、シミュレーション実行部701によるシミュレーション実行結果により検出されたCG状態遷移枝を「検出CG状態遷移枝1810」と称す。
また、状態遷移枝網羅率REは、検出CG状態遷移枝1810が、CG全状態遷移枝集合Eをどれだけ網羅しているかをあらわす。すなわち、CG全状態遷移枝集合Eの全枝数が分母の値となり、検出CG状態遷移枝1810の枝数が分子の値となって、状態遷移枝網羅率REが算出される。たとえば、図19において、検出CG状態遷移枝1810が状態遷移枝d21以外のすべての枝である場合、CG全状態遷移枝集合Eの全枝数は9本であるため、状態遷移枝網羅率RE=8/9となる。
また、図18において、非検出CG状態遷移枝抽出部1804は、CG全状態遷移枝集合Eの中から検出CG状態遷移枝1810以外の遷移枝(以下、「非検出CG状態遷移枝1820」と称す。)を抽出する。たとえば、図19において、検出CG状態遷移枝1810が状態遷移枝d21以外のすべての枝である場合、遷移枝d21が非検出CG状態遷移枝1820として抽出される。
また、入力パタン生成部1805は、非検出CG状態遷移枝1820を網羅する入力パタン(以下、「第3の入力パタンP3」と称す。)を生成する。この入力パタン生成部1805について具体的に説明する。図20は、入力パタン生成部1805の詳細な機能的構成を示すブロック図である。
図20において、入力パタン生成部1805は、回路状態遷移グラフ作成部803と、探索部2001と、出力部2002とから構成されている。探索部2001は、非検出CG状態遷移枝1820を次時刻のクロックゲーティング状態遷移枝とすることにより、回路状態遷移グラフ作成部803によって作成された回路状態遷移グラフG1において、非検出CG状態遷移枝1820に対応する回路状態遷移枝から初期状態までの状態遷移を探索する。
具体的には、回路状態遷移グラフG1において、初期状態におけるFFの出力{y1,y2,y3}={0,0,0}から非検出CG状態遷移枝1820を出現させる次時刻におけるFFの出力{z1,z2,z3}の値までの各状態遷移時の入力x1の値および当該各状態遷移時の時刻を第3の入力パタンP3として探索する。
また、出力部2002は、探索部2001によって探索された第3の入力パタンP3を出力する。具体的には、たとえば、メモリへの格納でもよく出力装置からの出力でもよい。
ここで探索部2001の探索処理について詳細に説明する。まず、非検出CG状態遷移枝1820の遷移元が現時刻におけるCG状態と、非検出CG状態遷移枝1820の遷移先が次時刻におけるCG状態との組み合わせをCG状態遷移グラフG2から検出する。
たとえば、図19において、非検出CG状態遷移枝1820がd21である場合、その遷移元のCG状態{101}が現時刻のCG状態であり、その遷移先のCG状態{011}が次時刻のCG状態となる。
つぎに、検出された現時刻のCG状態および次時刻のCG状態を出現させる入力x1の値、現時刻におけるFFの出力{y1,y2,y3}の値、次時刻におけるFFの出力{z1,z2,z3}の値を、状態テーブルT2から検索する。
図21は、状態テーブルT2からの検索例(その1)を示す説明図である。図21において、現時刻のCG状態が{101}でかつ次時刻のCG状態が{011}である行(符号2201)を状態テーブルT2から検索する。
そして、検索された現時刻におけるFFの出力{y1,y2,y3}の値をあらわす遷移元のノードと、次時刻におけるFFの出力{z1,z2,z3}の値をあらわす遷移先のノードと、この遷移元のノードから遷移先のノードへの状態遷移をあらわす状態遷移枝を、回路状態遷移グラフG1から検出する。この検出された状態遷移枝を、先に検出された入力x1の値と対応付ける。このとき検出された状態遷移枝を「末尾状態遷移枝」と称す。
図22は、回路状態遷移グラフG1からの検出例(その1)を示す説明図である。状態テーブルT2より、検索された入力x1の値はx1=0であり、現時刻におけるFFの出力{y1,y2,y3}の値は{111}であり、次時刻におけるFFの出力{z1,z2,z3}の値は{000}である。したがって、ノードN5が遷移元のノードとして検出され、ノードN0が遷移先のノードとして検出され、そのノードN5,N0間の状態遷移枝e50が非検出CG状態遷移枝d21を出現させる末尾状態遷移枝として検出される。そして、この末尾状態遷移枝e50をx1=0と対応付ける。
つぎに、末尾状態遷移枝から1時刻前の状態遷移枝とそのときの入力x1の値を特定する。具体的には、状態テーブルT2上において、検索された行の1時刻前の行を検索する。すなわち、次時刻におけるFFの出力{z1,z2,z3}の値が、検索された行の現時刻におけるFFの出力{y1,y2,y3}の値となり、次時刻のCG状態が検索された行の現時刻のCG状態となる行を検索する。図21では、符号2202で示した行が、符号2201で示した行の1時刻前の行として検索される。
そして、この検索された1時刻前の行についても、現時刻におけるFFの出力{y1,y2,y3}の値をあらわす遷移元のノードと、次時刻におけるFFの出力{z1,z2,z3}の値をあらわす遷移先のノードと、この遷移元のノードから遷移先のノードへの状態遷移をあらわす状態遷移枝を、回路状態遷移グラフG1から検出する。この検出された状態遷移枝を、先に検出された入力x1の値と対応付ける。
たとえば、検索された1時刻前の行2202の場合、状態テーブルT2より、1時刻前の行における入力x1の値はx1=1であり、現時刻におけるFFの出力{y1,y2,y3}の値は{001}であり、次時刻におけるFFの出力{z1,z2,z3}の値は{111}である。したがって、ノードN2が遷移元のノードとして検出され、ノードN5が遷移先のノードとして検出され、そのノードN2,N5間の状態遷移枝e25が非検出CG状態遷移枝d21を出現させる状態遷移として検出される。そして、この状態遷移枝e25をx1=1と対応付ける。
そして、回路状態遷移グラフG1上において、1時刻前の行に基づいて検出された遷移元のノードが初期状態{000}をあらわすノードN0であるか否か判断する。初期状態をあらわすノードN0であれば、入力x1の値が対応付けられた状態遷移枝に、さらに時刻t=0を対応付ける。そして、遷移先の状態遷移枝に遷移する都度、時刻tを1時刻分加算する。なお、ノードN0でなければ、ノードN0から遷移元のノードまでのパスを探索する。
たとえば、図22では、遷移元のノードN2はノードN0でないため、ノードN0からノードN2までのパスを探索する。ここでは、N0→N2となるパス(最短のパス)を探索しているが、状態遷移枝が所定本数以上など自由に実行することができる。
つぎに、1時刻前の行に基づいて検出された遷移元のノードを遷移先のノードとし、探索されたパスに従って遷移元のノードと、そのノード間の遷移枝を特定する。たとえば、図22では、遷移元のノードN2を遷移先のノードとし、探索されたパスにしたがって、ノードN0を遷移元のノードとする。
つぎに、状態テーブルT2上において、あらたに設定された遷移元のノードを現時刻におけるFFの出力{y1,y2,y3}の値とし、遷移先のノードを次時刻におけるFFの出力{z1,z2,z3}の値とする行を検索し、そのときの入力x1の値を特定して、遷移枝に対応付ける。
たとえば、図22では、あらたな遷移先のノードがノードN2であり、探索されたパスにしたがったあらたな遷移元のノードがノードN0である。したがって、図21において、符号2203に示した行を検索する。したがって、図22において、入力x1の値(x1=0)を遷移枝e02に対応付ける。
このとき、遷移元のノードがノードN0でなければ、さらに探索されたパスにしたがって処理を継続するが、ノードN0であれば、入力x1の値が対応付けられた状態遷移枝に、さらに時刻t=0を対応付ける。そして、遷移先の状態遷移枝に遷移する都度、時刻tを1時刻分加算する。そして、これまでの状態遷移枝に対応付けられた入力x1の値と時刻tが、状態遷移枝網羅率REを上昇させる入力パタン(第3の入力パタンP3)となる。
たとえば、図22では、このときの遷移先のノードがノードN2で遷移元のノードがノードN0であるため、入力x1の値(x1=0)が対応付けられた遷移枝e02に、初期状態をあらわす時刻t=0を対応付ける。したがって、遷移枝e02にはx1=0,t=0が対応付けられ、遷移枝e25にはx1=1,t=1が対応付けられ、遷移枝e50にはx1=0,t=2が対応付けられている。これにより、第3の入力パタンP3は、『時刻t=0(初期状態)でx1=0、時刻t=1でx1=1、時刻t=2でx1=0』となる。
(クロックゲーティング解析装置100のクロックゲーティング解析処理手順3)
つぎに、この発明の実施の形態にかかるクロックゲーティング解析装置100のクロックゲーティング解析処理手順3について説明する。クロックゲーティング解析処理手順3は、図18に示した機能的構成3についての処理手順である。図23は、この発明の実施の形態にかかるクロックゲーティング解析装置100のクロックゲーティング解析処理手順3を示すフローチャートである。
まず、次状態関数算出部801により次状態関数を算出し(ステップS2301)、状態テーブル作成部802により、状態テーブルT2を作成する(ステップS2302)。そして、CG状態遷移グラフ作成部1801により、CG状態遷移グラフG2を作成する(ステップS2303)。そして、CG全状態遷移枝出力部1802により、CG状態遷移グラフG2の中から、クロックゲーティング状態の状態遷移枝をすべて抽出することにより、CG全状態遷移枝集合Eとして出力する(ステップS2304)。
このあと、第1の入力パタンP1が与えられるまで待ち受け(ステップS2305:No)、第1の入力パタンP1が与えられた場合(ステップS2305:Yes)、シミュレーション実行部701により回路シミュレーションを実行する(ステップS2406)。
つぎに、状態遷移枝網羅率算出部1803により、解析対象回路200の状態遷移枝網羅率REを算出し(ステップS2307)、状態遷移枝集合Eの中から検出CG状態遷移枝1810を除く枝を非検出CG状態遷移枝1820として抽出する(ステップS2308)。このあと、CG全状態遷移枝網羅率REを上昇させる入力パタンの生成処理を実行する(ステップS2309)。
図24は、ステップS2309で状態遷移枝網羅率REを上昇させる入力パタンの生成処理の処理手順を示すフローチャートである。図24において、まず、回路状態遷移グラフ作成部803により、回路状態遷移グラフG1を作成し(ステップS2401)、NE=Φ(空集合)であるか否かを判断する(ステップS2402)。
ここで、NEとは、非検出CG状態遷移枝1820をすべて集めた集合である。NE=Φでない場合(ステップS2402:No)、NEから任意の非検出CG状態遷移枝1820を抽出し、NEから削除する(ステップS2403)。そして、探索部2001により、入力パタン探索処理を実行する(ステップS2404)。入力パタン探索処理の詳細については後述する。
このあと、ステップS2402に戻る。ステップS2402において、NE=Φである場合(ステップS2402:Yes)、出力部2002により、探索結果を、状態遷移枝網羅率REを上昇させる入力パタン(第3の入力パタンP3)として出力する(ステップS2405)。
図25は、ステップS2404で示した入力パタン探索処理の処理手順を示すフローチャートである。図25において、まず、非検出CG状態遷移枝1820の遷移元および遷移先と一致する現時刻および次時刻におけるCG状態を、状態テーブルT2から検出する(ステップS2501)。
つぎに、検出されたCG状態を出現させる入力x1の値、現時刻におけるFFの出力{y1,y2,y3}の値、次時刻におけるFFの出力{z1,z2,z3}の値を、状態テーブルT2から検索する(ステップS2502)。
そして、回路状態遷移グラフG1から、現時刻におけるFFの出力{y1,y2,y3}の値を遷移元のノードとし、次時刻におけるFFの出力{z1,z2,z3}の値を遷移先のノードとする末尾状態遷移枝を特定する(ステップS2503)。
つぎに、この特定された末尾状態遷移枝が発生するときの入力x1の値を状態テーブルT2から読み出し、末尾状態遷移枝と対応付ける(ステップS2504)。そして、末尾状態遷移枝の1時刻前の状態遷移枝とそのときの入力x1の値を特定する(ステップS2505)。そして、その状態遷移枝とそのときの入力x1の値とを対応付ける(ステップS2506)。
つぎに、状態遷移枝により特定される状態遷移元のノードが初期状態をあらわすノードであるか否かを判断する(ステップS2507)。初期状態を表わすノードでない場合(ステップS2507:No)、回路状態遷移グラフG1上において、初期状態をあらわすノードから状態遷移元のノードまでのパスが探索済みであるか否かを判断する(ステップS2608)。
探索済みである場合(ステップS2508:Yes)、ステップS2510に移行する。一方、探索済みでない場合(ステップS2508:No)、初期状態をあらわすノードから状態遷移元のノードまでのパスを探索する(ステップS2509)。
そして、状態遷移元のノードを状態遷移先のノードに設定し(ステップS2510)、パスに従って、状態遷移元のノードと、当該ノードとその状態遷移先のノードとの間の状態遷移枝を特定する(ステップS2511)。このあと、この状態遷移枝による状態遷移が発生するときの入力x1の値を状態テーブルT2から読み出して、状態遷移枝と対応付ける(ステップS2512)。そして、ステップS2507に戻る。
ステップS2507において、状態遷移元のノードが初期状態のノードである場合(ステップS2507:Yes)、これまでに得られた各状態遷移枝の状態遷移時の時刻を、初期状態(t=0)を基準として算出し、各状態遷移枝に対応付けられた入力x1の値と対応付ける(ステップS2513)。
そして、終了するか否かを判断する(ステップS2514)。具体的には、たとえば、ステップS2502において、検索された次時刻におけるFFの出力{z1,z2,z3}の値がほかにあれば、終了せずに(ステップS2514:No)、ステップS2503に戻り、ステップS2502において検索された次時刻におけるFFの出力{z1,z2,z3}の値がほかになければ、図24に示したステップS2402に戻る。
このように、上述したクロックゲーティング解析装置100の機能的構成3およびクロックゲーティング解析処理手順3によれば、状態遷移枝網羅率REを求めることにより、シミュレーションによる解析対象回路200の機能検証時に、状態遷移枝網羅率REを上昇させることで解析対象回路200の機能バグを引き起こすクロックゲーティング機能のバグの検証漏れを減少させることができる。
また、網羅していないCG状態遷移枝(非検出CG状態遷移枝1820)を出現させる第3の入力パタンP3を生成することにより状態遷移枝網羅率REを自動的に上昇させることができる。これにより、解析対象回路200の機能バグを引き起こすクロックゲーティング機能のバグの検証漏れを抑制することができる。
(クロックゲーティング解析装置100の機能的構成4)
つぎに、この発明の実施の形態にかかるクロックゲーティング解析装置100の機能的構成4について説明する。この機能的構成4では、図4に示した機能的構成1で生成されたCG全状態集合Sを用いて、ローカルクロックLCiの非活性化状態から活性化状態への復帰可能性を検証する。すなわち、ローカルクロックLCiが一度非活性化状態(クロックを止めている状態)になった場合、いずれ活性化状態(クロックを供給する状態)に復帰するであろうという回路の性質を利用しておこなう検証である。なお、図4、図8および図18に示した構成と同一構成については同一符号を付し、その説明を省略する。
図26は、この発明の実施の形態にかかるクロックゲーティング解析装置100の機能的構成4を示すブロック図である。機能的構成4のクロックゲーティング解析装置100は、次状態関数算出部801と、状態テーブル作成部802と、CG状態遷移グラフ作成部1801と、状態遷移抽出部2600とから構成されている。これら各機能801,802,1801,2600は、メモリに格納された当該機能に関するプログラムをCPUに実行させることにより、当該機能を実現することができる。
また、各機能801,802,1801,2600からの出力データはメモリに保持される。また、図26中矢印で示した接続先の機能的構成は、接続元の機能的構成からの出力データをメモリから読み込んで、当該機能に関するプログラムをCPUに実行させる。
状態遷移抽出部2600は、CG状態遷移グラフ作成部1801によって作成されたCG状態遷移グラフG2の中から、ローカルクロックLCiが非活性化状態から活性化状態に復帰しない状態遷移を抽出する。
具体的には、CG状態遷移グラフにおける状態遷移において、あるローカルクロックLCiが非活性化状態(LCi=0)から活性化状態(LCi=1)に復帰する状態遷移が存在するか否かを判断する。すなわち、LCi=0からLCi=1となる状態遷移がCG状態遷移グラフ上に存在するか否かを判断する。復帰不可能であると判断されたローカルクロックLCiは復帰不可能な状態遷移として抽出される。
たとえば、図19において、ローカルクロックLC1に着目すると、たとえば、ノードM1はローカルクロックLC1=0であるが、LC1=1であるノードM2〜M4への状態遷移枝が存在するため、0から1に復帰可能な状態遷移をすることができる。したがって、ローカルクロックLC1は復帰可能なローカルクロックである。
(クロックゲーティング解析装置100のクロックゲーティング解析処理手順4)
つぎに、この発明の実施の形態にかかるクロックゲーティング解析装置100のクロックゲーティング解析処理手順4について説明する。クロックゲーティング解析処理手順4は、図26に示した機能的構成4についての処理手順である。図27は、この発明の実施の形態にかかるクロックゲーティング解析装置100のクロックゲーティング解析処理手順4を示すフローチャートである。
まず、次状態関数算出部801により次状態関数を算出し(ステップS2701)、状態テーブル作成部802により、状態テーブルT2を作成する(ステップS2702)。そして、CG状態遷移グラフ作成部1801により、CG状態遷移グラフG2を作成する(ステップS2703)。
そして、インデックスiをi=1とし、クロックゲーティング数をnとする(ステップS2704)。このあと、ローカルクロックLCiが0→1となる状態遷移がCG状態遷移グラフG2上にあるか否かを判断する(ステップS2705)。
ローカルクロックLCiが0→1となる状態遷移がない場合(ステップS2705:No)、そのローカルクロックLCiを復帰不可能集合SLに追加する(ステップS2706)。一方、ローカルクロックLCiが0→1となる状態遷移がある場合(ステップS2705:Yes)、ステップS2707に移行する。
ステップS2707では、インデックスiを1つインクリメントし(ステップS2707)、i>nであるか否かを判断する(ステップS2708)。i>nでない場合(ステップS2708:No)、ステップS2705に戻る。一方、i>nである場合(ステップS2708:Yes)、一連の処理を終了する。
このように、上述したクロックゲーティング解析装置100の機能的構成4およびクロックゲーティング解析処理手順4によれば、CG状態遷移グラフG2の到達可能性解析を行い、ローカルクロックLCiの非活性化状態から活性化状態に復帰できないというエラーの存在を自動的に検証することができる。これにより、漏れなく網羅的に特定のクロックゲーティング機能のバグの検出をおこなうことができる。
(クロックゲーティング解析装置100の機能的構成5)
つぎに、この発明の実施の形態にかかるクロックゲーティング解析装置100の機能的構成5について説明する。この機能的構成5では、図4に示した機能的構成1で生成されたCG全状態集合Sを用いて、クロックゲーティングCGiのミス状態候補を生成する。
ここで、ミス状態とは、ローカルクロックLCiを非活性化状態(クロックをとめている状態)にしてもよいのに、活性化状態(クロックを供給している状態)になっている状態をいう。すなわち、FFグループAiのFFにローカルクロックLCiを供給しなくてもよいのに、供給している状態であり、クロックゲーティングをし損ねている状態である。なお、図4、図8および図18に示した構成と同一構成については同一符号を付し、その説明を省略する。
図28は、この発明の実施の形態にかかるクロックゲーティング解析装置100の機能的構成5を示すブロック図である。機能的構成5のクロックゲーティング解析装置100は、シミュレーション実行部701と、変換部2801と、ミス状態候補集合生成部2802と、判断部2803と、削除部2804とから構成されている。これら各機能701,2801〜2804は、メモリに格納された当該機能に関するプログラムをCPUに実行させることにより、当該機能を実現することができる。
また、各機能701,2801〜2804からの出力データはメモリに保持される。また、図28中矢印で示した接続先の機能的構成は、接続元の機能的構成からの出力データをメモリから読み込んで、当該機能に関するプログラムをCPUに実行させる。
図28において、変換部2801は、CG全状態集合Sの中の任意のCG状態を、任意のクロックゲーティングCGiを活性化状態から非活性化状態にしたCG状態に変換する。また、ミス状態候補集合生成部2802は、変換部2801によって変換された変換後のCG状態に基づいて、ローカルクロックLCiに関するミス状態候補miを生成する。
ここで、変換部2801およびミス状態候補集合生成部2802によるミス状態候補生成例について説明する。図29は、変換部2801およびミス状態候補集合生成部2802によるミス状態候補生成例を示す説明図である。図29では、i=1、すなわち、ローカルクロックLCiをLC1とした場合のミス状態候補m1の生成例を示している。
図29において、(1)まず、CG全状態集合S内のCG状態のうちローカルクロックLC1=1であるCG状態を取り出し、そのLC1の値を1→0に変換する。これにより、{101}が{001}に、{110}が{010}に、{111}が{011}に変換される。(2)つぎに、変換前のCG状態と一致する変換後のCG状態を削除する。変換後の{011}は元のCG全状態集合Sにも含まれており、ミス状態でないため削除する。(3)最後に、(2)で残ったCG状態をそれぞれ変換前のCGに戻す。その結果{001}が{101}に、{010}が{110}になる。
これにより、残余の変換後のCG状態{101},{110}がミス状態候補m1として生成される。このような処理をローカルクロックLC1〜LCnまでおこなうことにより、ミス状態候補集合SMが生成される。ミス状態候補集合SM内の要素であるミス状態候補miは、LCiの状態を1から0に変えたCG状態がCG全状態集合Sに含まれない要素である。これにより、各FFをクロックゲーティングしない状態が解析対象回路200のCG状態として取り得ないCG状態を生成することができる。
また、判断部2803は、ミス状態候補集合SM内のミス状態候補miが、シミュレーション実行部701によるシミュレーション実行結果から得られるCG状態(以下、「特定のCG状態2800」と称す。)と一致するか否かを判断する。また、シミュレーション実行結果から、特定のCG状態2800時において、ローカルクロックLCiのFFグループAi内のFFの値が変化するか否かも判断する。
また、削除部2804は、特定のCG状態2800を、ミス状態候補miから削除する。具体的には、ミス状態候補miが特定のCG状態2800と一致し、かつ、ローカルクロックLCiのFFグループAi内のFFの値が変化する場合、クロックゲーティングCGiは活性化状態となっていることとなる。したがって、そのような特定のCG状態2800をミス状態候補miから削除する。これにより、ミス状態候補miを絞り込むことができる。
(クロックゲーティング解析装置100のクロックゲーティング解析処理手順5)
つぎに、この発明の実施の形態にかかるクロックゲーティング解析装置100のクロックゲーティング解析処理手順5について説明する。クロックゲーティング解析処理手順5は、図28に示した機能的構成5についての処理手順である。図30は、この発明の実施の形態にかかるクロックゲーティング解析装置100のクロックゲーティング解析処理手順5を示すフローチャートである。
図30において、まず、インデックスiをi=1とし、CG検出数をnとする(ステップS3001)。つぎに、変換部2801により、CG全状態集合S内のCG状態のローカルクロックLCiを1→0に変換する(ステップS3002)。そして、変換前のCG状態と一致する変換後のCG状態を、削除する(ステップS3003)。つぎに、残余の変換後のCG状態を変換前のCG状態に戻しミス状態候補miとし、ミス状態候補集合SMに追加する(ステップS3004)。
このあと、iを1つインクリメントし(ステップS3005)、i>nであるか否かを判断する(ステップS3006)。i>nでない場合(ステップS3006:No)、ステップS3002に戻る。一方、i>nである場合(ステップS3006:Yes)、一連の処理を終了する。これにより、簡単な変換処理のみでミス状態候補miを自動生成することができる。
図31は、ミス状態候補miの絞込み処理手順を示すフローチャートである。図31において、まず、入力パタンPが与えられるのを待ち受け(ステップS3101:No)、入力パタンPが与えられた場合(ステップS3101:Yes)、シミュレーション実行部701による回路シミュレーションを実行する(ステップS3102)。これにより、特定のCG状態2800を得る。
そして、インデックスiをi=1とし(ステップS3103)、判断部2803により、ミス状態候補miが特定のCG状態2800を含んでいるか否かを判断する(ステップS3104)。含んでいない場合(ステップS3104:No)、ステップS3107に移行する。
一方、含んでいる場合(ステップS3104:Yes)、ローカルクロックLCiにより駆動されるFF、すなわちFFグループAi内のFFの値が、特定のCG状態2800により変化するか否かを判断する(ステップS3105)。変化しない場合(ステップS3105:No)、ステップS3107に移行する。一方、変化する場合(ステップS3105:Yes)、特定のCG状態2800をミス状態候補miから削除する(ステップS3106)。
そして、ステップS3107において、iを1つインクリメントし(ステップS3107)、i>nであるか否かを判断する(ステップS3108)。i>nでない場合(ステップS3108:No)、ステップS3104に戻る。一方、i>nである場合(ステップS3108:Yes)、一連の処理を終了する。これにより、シミュレーション実行結果から効果的にミス状態候補miを絞り込むことができる。
このように、上述したクロックゲーティング解析装置100の機能的構成5およびクロックゲーティング解析処理手順5によれば、解析対象回路200のCG状態として取り得ないCG状態クロックゲーティングし損ねているミス状態候補miを得ることができる。
また、シミュレーション実行結果により、そのローカルクロックLCiのFFグループAi内のFFの値が特定のCGクロックゲーティング状態において変化することがなければ、特定のCG状態2800をクロックゲーティングし忘れ不具合(クロックを止めてもよいのに止めていない状態)の候補としてミス状態候補miに残しておくことができる。これにより、解析対象回路200の消費電力の増大を引き起こすクロックゲーティング漏れの低減化を図ることができる。
以上説明したように、クロックゲーティング解析装置、クロックゲーティング解析方法、およびクロックゲーティング解析プログラムによれば、設計者の設計負担の軽減、解析対象回路の信頼性の向上、および低消費電力化を実現することができる。
なお、本実施の形態で説明したクロックゲーティング解析方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
(付記1)解析対象回路内の順序回路素子へクロックの供給または前記クロックの停止をおこなうクロックゲーティングを検出させる検出工程と、
前記検出工程によって検出されたクロックゲーティングから出力されるローカルクロックの活性化/非活性化を表現するクロックゲーティング関数を、前記クロックゲーティングごとに算出させるクロックゲーティング関数算出工程と、
前記クロックゲーティング関数算出工程によって算出された各クロックゲーティング関数に、前記各順序回路素子からの出力値の組み合わせを代入して、前記各クロックゲーティング関数の値の組み合わせを、前記ローカルクロック相互の活性化/非活性化をあらわすクロックゲーティング状態として算出することにより、前記各順序回路素子からの出力値の組み合わせから前記クロックゲーティング状態への変換をあらわす変換テーブルを作成させる変換テーブル作成工程と、
前記変換テーブル作成工程によって作成された変換テーブルに基づいて、前記解析対象回路における前記クロックゲーティング状態をすべて網羅するクロックゲーティング全状態集合を出力させる全状態集合出力工程と、
をコンピュータに実行させることを特徴とするクロックゲーティング解析プログラム。
(付記2)前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態が、前記全状態集合出力工程によって出力されたクロックゲーティング全状態集合を網羅している割合をあらわす状態網羅率を算出させる状態網羅率算出工程を前記コンピュータに実行させることを特徴とする付記1に記載のクロックゲーティング解析プログラム。
(付記3)前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態(以下、「検出クロックゲーティング状態」という)を除いたクロックゲーティング状態(以下、「非検出クロックゲーティング状態」という)を前記クロックゲーティング全状態集合の中から抽出させる非検出クロックゲーティング状態抽出工程と、
前記変換テーブルを用いて、前記非検出クロックゲーティング状態抽出工程によって抽出された非クロックゲーティング状態を出現させる入力パタンを生成させる入力パタン生成工程と、
を前記コンピュータに実行させることを特徴とする付記1または2に記載のクロックゲーティング解析プログラム。
(付記4)前記入力パタン生成工程は、
前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出させる次状態関数算出工程と、
前記変換テーブルと前記次状態関数算出工程によって算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成させる状態テーブル作成工程と、
前記状態テーブル作成工程によって作成された状態テーブルにおける前記各順序回路素子からの現時刻および次時刻の出力値の組み合わせに基づいて、前記解析対象回路の状態遷移をあらわす回路状態遷移グラフを作成させる回路状態遷移グラフ作成工程と、
前記非検出クロックゲーティング状態を次時刻のクロックゲーティング状態とすることにより、前記回路状態遷移グラフ作成工程によって作成された回路状態遷移グラフにおいて、前記非検出クロックゲーティング状態に対応する次時刻の出力値の組み合わせから初期状態までの状態遷移を探索させる探索工程と、
前記探索工程によって探索された探索結果を、前記非検出クロックゲーティング状態抽出工程によって抽出された非クロックゲーティング状態を出現させる入力パタンとして出力させる出力工程と、
を含んだことを特徴とする付記3に記載のクロックゲーティング解析プログラム。
(付記5)前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出させる次状態関数算出工程と、
前記変換テーブルと前記次状態関数算出工程によって算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成させる状態テーブル作成工程と、
前記全状態集合出力工程によって出力されたクロックゲーティング全状態集合と前記状態テーブル作成工程によって作成された状態テーブルとに基づいて、前記クロックゲーティング状態の状態遷移をあらわすクロックゲーティング状態遷移グラフを作成させるクロックゲーティング状態遷移グラフ作成工程と、
前記クロックゲーティング状態遷移グラフ作成工程によって作成されたクロックゲーティング状態遷移グラフの中から、前記クロックゲーティング状態の状態遷移枝をすべて抽出することにより、クロックゲーティング全状態遷移枝集合を出力させる全状態遷移枝集合出力工程と、
を前記コンピュータに実行させることを特徴とする付記1に記載のクロックゲーティング解析プログラム。
(付記6)前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態遷移枝が、前記全状態遷移枝集合出力工程によって出力されたクロックゲーティング全状態遷移枝集合を網羅している割合をあらわす状態遷移枝網羅率を算出させる状態遷移枝網羅率算出工程を前記コンピュータに実行させることを特徴とする付記5に記載のクロックゲーティング解析プログラム。
(付記7)前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態遷移枝(以下、「検出クロックゲーティング状態遷移枝」という)を除いたクロックゲーティング状態遷移枝(以下、「非検出クロックゲーティング状態遷移枝」という)を前記クロックゲーティング全状態遷移枝集合の中から抽出させる非検出クロックゲーティング状態遷移枝抽出工程と、
前記変換テーブルを用いて、前記非検出クロックゲーティング状態遷移枝抽出工程によって抽出された非検出クロックゲーティング状態遷移枝を出現させる入力パタンを生成させる入力パタン生成工程と、
を前記コンピュータに実行させることを特徴とする付記5または6に記載のクロックゲーティング解析プログラム。
(付記8)前記入力パタン生成工程は、
前記状態テーブルにおける前記各順序回路素子からの現時刻および次時刻の出力値の組み合わせに基づいて、前記解析対象回路の状態遷移をあらわす回路状態遷移グラフを作成させる回路状態遷移グラフ作成工程と、
前記非検出クロックゲーティング状態遷移枝を次時刻のクロックゲーティング状態遷移枝とすることにより、前記回路状態遷移グラフ作成工程によって作成された回路状態遷移グラフにおいて、前記非検出クロックゲーティング状態遷移枝に対応する回路状態遷移枝から初期状態までの状態遷移を探索させる探索工程と、
前記探索工程によって探索された探索結果を、前記非検出クロックゲーティング状態遷移枝を出現させる入力パタンとして出力させる出力工程と、
を含んだことを特徴とする付記7に記載のクロックゲーティング解析プログラム。
(付記9)前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出させる次状態関数算出工程と、
前記変換テーブルと前記次状態関数算出工程によって算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成させる状態テーブル作成工程と、
前記全状態集合出力工程によって出力されたクロックゲーティング全状態集合と前記状態テーブル作成工程によって作成された状態テーブルとに基づいて、前記クロックゲーティング状態の状態遷移をあらわすクロックゲーティング状態遷移グラフを作成させるクロックゲーティング状態遷移グラフ作成工程と、
前記クロックゲーティング状態遷移グラフ作成工程によって作成されたクロックゲーティング状態遷移グラフの中から、前記クロックゲーティングが非活性化状態から活性化状態に復帰しない状態遷移を抽出させる状態遷移抽出工程と、
を前記コンピュータに実行させることを特徴とする付記1に記載のクロックゲーティング解析プログラム。
(付記10)前記全状態集合出力工程によって出力されたクロックゲーティング全状態集合の中の任意のクロックゲーティング状態を、任意のローカルクロックを活性化状態から非活性化状態にしたクロックゲーティング状態に変換させる変換工程と、
前記変換工程によって変換された変換後のクロックゲーティング状態の中から、クロックゲーティング全状態集合内のクロックゲーティング状態と一致するものを削除することにより、クロックゲーティングミス状態候補を生成させるクロックゲーティングミス状態候補生成工程と、
を前記コンピュータに実行させることを特徴とする付記1に記載のクロックゲーティング解析プログラム。
(付記11)前記クロックゲーティングミス状態候補生成工程によって生成されたクロックゲーティングミス状態候補が、前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出される特定のクロックゲーティング状態を含んでいるか否かを判断させるとともに、前記変換工程により変換対象となったクロックゲーティングにより駆動される順序回路素子の出力値が変化するか否かを判断させる判断工程と、
前記判断工程によって判断された判断結果に基づいて、前記クロックゲーティングミス状態候補から前記特定のクロックゲーティング状態を削除させる削除工程と、
を前記コンピュータに実行させることを特徴とする付記10に記載のクロックゲーティング解析プログラム。
(付記12)付記1〜付記11に記載のクロックゲーティング解析プログラムを記録した前記コンピュータに読み取り可能な記録媒体。
(付記13)解析対象回路内の順序回路素子へクロックの供給または前記クロックの停止をおこなうクロックゲーティングを検出する検出手段と、
前記検出手段によって検出されたローカルクロックから出力されるローカルクロックの活性化/非活性化を表現するクロックゲーティング関数を、前記クロックゲーティングごとに算出するクロックゲーティング関数算出手段と、
前記クロックゲーティング関数算出手段によって算出された各クロックゲーティング関数に、前記各順序回路素子からの出力値の組み合わせを代入して、前記各クロックゲーティング関数の値の組み合わせを、前記ローカルクロック相互の活性化/非活性化をあらわすクロックゲーティング状態として算出することにより、前記各順序回路素子からの出力値の組み合わせから前記クロックゲーティング状態への変換をあらわす変換テーブルを作成する変換テーブル作成手段と、
前記変換テーブル作成手段によって作成された変換テーブルに基づいて、前記解析対象回路における前記クロックゲーティング状態をすべて網羅するクロックゲーティング全状態集合を出力する全状態集合出力手段と、
備えることを特徴とするクロックゲーティング解析装置。
(付記14)前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態が、前記全状態集合出力手段によって出力されたクロックゲーティング全状態集合を網羅している割合をあらわす状態網羅率を算出する状態網羅率算出手段を備えることを特徴とする付記13に記載のクロックゲーティング解析装置。
(付記15)前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態(以下、「検出クロックゲーティング状態」という)を除いたクロックゲーティング状態(以下、「非検出クロックゲーティング状態」という)を前記クロックゲーティング全状態集合の中から抽出する非検出クロックゲーティング状態抽出手段と、
前記変換テーブルを用いて、前記非検出クロックゲーティング状態抽出手段によって抽出された非クロックゲーティング状態を出現させる入力パタンを生成する入力パタン生成手段と、
を備えることを特徴とする付記13または14に記載のクロックゲーティング解析装置。
(付記16)前記入力パタン生成手段は、
前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出する次状態関数算出手段と、
前記変換テーブルと前記次状態関数算出手段によって算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成する状態テーブル作成手段と、
前記状態テーブル作成手段によって作成された状態テーブルにおける前記各順序回路素子からの現時刻および次時刻の出力値の組み合わせに基づいて、前記解析対象回路の状態遷移をあらわす回路状態遷移グラフを作成する回路状態遷移グラフ作成手段と、
前記非検出クロックゲーティング状態を次時刻のクロックゲーティング状態とすることにより、前記回路状態遷移グラフ作成手段によって作成された回路状態遷移グラフにおいて、前記非検出クロックゲーティング状態に対応する次時刻の出力値の組み合わせから初期状態までの状態遷移を探索する探索手段と、
前記探索手段によって探索された探索結果を、前記非検出クロックゲーティング状態抽出手段によって抽出された非検出クロックゲーティング状態を出現させる入力パタンとして出力する出力手段と、
を備えることを特徴とする付記15に記載のクロックゲーティング解析装置。
(付記17)前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出する次状態関数算出手段と、
前記変換テーブルと前記次状態関数算出手段によって算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成する状態テーブル作成手段と、
前記全状態集合出力手段によって出力されたクロックゲーティング全状態集合と前記状態テーブル作成手段によって作成された状態テーブルとに基づいて、前記クロックゲーティング状態の状態遷移をあらわすクロックゲーティング状態遷移グラフを作成するクロックゲーティング状態遷移グラフ作成手段と、
前記クロックゲーティング状態遷移グラフ作成手段によって作成されたクロックゲーティング状態遷移グラフの中から、前記クロックゲーティング状態の状態遷移枝をすべて抽出することにより、クロックゲーティング全状態遷移枝集合を出力する全状態遷移枝集合出力手段と、
を備えることを特徴とする付記13に記載のクロックゲーティング解析装置。
(付記18)前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態遷移枝が、前記全状態遷移枝集合出力手段によって出力されたクロックゲーティング全状態遷移枝集合を網羅している割合をあらわす状態遷移枝網羅率を算出する状態遷移枝網羅率算出手段を備えることを特徴とする付記17に記載のクロックゲーティング解析装置。
(付記19)前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態遷移枝(以下、「検出クロックゲーティング状態遷移枝」という)を除いたクロックゲーティング状態遷移枝(以下、「非検出クロックゲーティング状態遷移枝」という)を前記クロックゲーティング全状態遷移枝集合の中から抽出する非検出クロックゲーティング状態遷移枝抽出手段と、
前記変換テーブルを用いて、前記非検出クロックゲーティング状態遷移枝抽出手段によって抽出された非検出クロックゲーティング状態遷移枝を出現させる入力パタンを生成する入力パタン生成手段と、
を備えることを特徴とする付記17または18に記載のクロックゲーティング解析装置。
(付記20)前記入力パタン生成手段は、
前記状態テーブルにおける前記各順序回路素子からの現時刻および次時刻の出力値の組み合わせに基づいて、前記解析対象回路の状態遷移をあらわす回路状態遷移グラフを作成する回路状態遷移グラフ作成手段と、
前記非検出クロックゲーティング状態遷移枝を次時刻のクロックゲーティング状態遷移枝とすることにより、前記回路状態遷移グラフ作成手段によって作成された回路状態遷移グラフにおいて、前記非検出クロックゲーティング状態遷移枝に対応する回路状態遷移枝から初期状態までの状態遷移を探索する探索手段と、
前記探索手段によって探索された探索結果を、前記非検出クロックゲーティング状態遷移枝を出現させる入力パタンとして出力する出力手段と、
を備えることを特徴とする付記19に記載のクロックゲーティング解析装置。
(付記21)前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出する次状態関数算出手段と、
前記変換テーブルと前記次状態関数算出手段によって算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成する状態テーブル作成手段と、
前記全状態集合出力手段によって出力されたクロックゲーティング全状態集合と前記状態テーブル作成手段によって作成された状態テーブルとに基づいて、前記クロックゲーティング状態の状態遷移をあらわすクロックゲーティング状態遷移グラフを作成するクロックゲーティング状態遷移グラフ作成手段と、
前記クロックゲーティング状態遷移グラフ作成手段によって作成されたクロックゲーティング状態遷移グラフの中から、前記ローカルクロックが非活性化状態から活性化状態に復帰しない状態遷移を抽出する状態遷移抽出手段と、
を備えることを特徴とする付記13に記載のクロックゲーティング解析装置。
(付記22)前記全状態集合出力手段によって出力されたクロックゲーティング全状態集合の中の任意のクロックゲーティング状態を、任意のローカルクロックを活性化状態から非活性化状態にしたクロックゲーティング状態に変換する変換手段と、
前記変換手段によって変換された変換後のクロックゲーティング状態の中から、クロックゲーティング全状態集合内のクロックゲーティング状態と一致するものを削除することにより、クロックゲーティングミス状態候補を生成するクロックゲーティングミス状態候補生成手段と、
を備えることを特徴とする付記13に記載のクロックゲーティング解析装置。
(付記23)前記クロックゲーティングミス状態候補生成手段によって生成されたクロックゲーティングミス状態候補が、前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出される特定のクロックゲーティング状態を含んでいるか否かを判断するとともに、前記変換手段により変換対象となったクロックゲーティングにより駆動される順序回路素子の出力値が変化するか否かを判断する判断手段と、
前記判断手段によって判断された判断結果に基づいて、前記クロックゲーティングミス状態候補から前記特定のクロックゲーティング状態を削除する削除手段と、
を備えることを特徴とする付記22に記載のクロックゲーティング解析装置。
(付記24)解析対象回路内の順序回路素子へクロックの供給または前記クロックの停止をおこなうクロックゲーティングを検出する検出工程と、
前記検出工程によって検出されたローカルクロックから出力されるローカルクロックの活性化/非活性化を表現するクロックゲーティング関数を、前記クロックゲーティングごとに算出するクロックゲーティング関数算出工程と、
前記クロックゲーティング関数算出工程によって算出された各クロックゲーティング関数に、前記各順序回路素子からの出力値の組み合わせを代入して、前記各クロックゲーティング関数の値の組み合わせを、前記ローカルクロック相互の活性化/非活性化をあらわすクロックゲーティング状態として算出することにより、前記各順序回路素子からの出力値の組み合わせから前記クロックゲーティング状態への変換をあらわす変換テーブルを作成する変換テーブル作成工程と、
前記変換テーブル作成工程によって作成された変換テーブルに基づいて、前記解析対象回路における前記クロックゲーティング状態をすべて網羅するクロックゲーティング全状態集合を出力する全状態集合出力工程と、
含んだことを特徴とするクロックゲーティング解析方法。
(付記25)前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態が、前記全状態集合出力工程によって出力されたクロックゲーティング全状態集合を網羅している割合をあらわす状態網羅率を算出する状態網羅率算出工程を含んだことを特徴とする付記24に記載のクロックゲーティング解析方法。
(付記26)前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態(以下、「検出クロックゲーティング状態」という)を除いたクロックゲーティング状態(以下、「非検出クロックゲーティング状態」という)を前記クロックゲーティング全状態集合の中から抽出する非検出クロックゲーティング状態抽出工程と、
前記変換テーブルを用いて、前記非検出クロックゲーティング状態抽出工程によって抽出された非検出クロックゲーティング状態を出現させる入力パタンを生成する入力パタン生成工程と、
を含んだことを特徴とする付記24または25に記載のクロックゲーティング解析方法。
(付記27)前記入力パタン生成工程は、
前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出する次状態関数算出工程と、
前記変換テーブルと前記次状態関数算出工程によって算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成する状態テーブル作成工程と、
前記状態テーブル作成工程によって作成された状態テーブルにおける前記各順序回路素子からの現時刻および次時刻の出力値の組み合わせに基づいて、前記解析対象回路の状態遷移をあらわす回路状態遷移グラフを作成する回路状態遷移グラフ作成工程と、
前記非検出クロックゲーティング状態を次時刻のクロックゲーティング状態とすることにより、前記回路状態遷移グラフ作成工程によって作成された回路状態遷移グラフにおいて、前記非検出クロックゲーティング状態に対応する次時刻の出力値の組み合わせから初期状態までの状態遷移を探索する探索工程と、
前記探索工程によって探索された探索結果を、前記非検出クロックゲーティング状態抽出工程によって抽出された非検出クロックゲーティング状態を出現させる入力パタンとして出力する出力工程と、
を含んだことを特徴とする付記26に記載のクロックゲーティング解析方法。
(付記28)前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出する次状態関数算出工程と、
前記変換テーブルと前記次状態関数算出工程によって算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成する状態テーブル作成工程と、
前記全状態集合出力工程によって出力されたクロックゲーティング全状態集合と前記状態テーブル作成工程によって作成された状態テーブルとに基づいて、前記クロックゲーティング状態の状態遷移をあらわすクロックゲーティング状態遷移グラフを作成するクロックゲーティング状態遷移グラフ作成工程と、
前記クロックゲーティング状態遷移グラフ作成工程によって作成されたクロックゲーティング状態遷移グラフの中から、前記クロックゲーティング状態の状態遷移枝をすべて抽出することにより、クロックゲーティング全状態遷移枝集合を出力する全状態遷移枝集合出力工程と、
を含んだことを特徴とする付記24に記載のクロックゲーティング解析方法。
(付記29)前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態遷移枝が、前記全状態遷移枝集合出力工程によって出力されたクロックゲーティング全状態遷移枝集合を網羅している割合をあらわす状態遷移枝網羅率を算出する状態遷移枝網羅率算出工程を含んだことを特徴とする付記28に記載のクロックゲーティング解析方法。
(付記30)前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態遷移枝(以下、「検出クロックゲーティング状態遷移枝」という)を除いたクロックゲーティング状態遷移枝(以下、「非検出クロックゲーティング状態遷移枝」という)を前記クロックゲーティング全状態遷移枝集合の中から抽出する非検出クロックゲーティング状態遷移枝抽出工程と、
前記変換テーブルを用いて、前記非検出クロックゲーティング状態遷移枝抽出工程によって抽出された非検出クロックゲーティング状態遷移枝を出現させる入力パタンを生成する入力パタン生成工程と、
を含んだことを特徴とする付記28または29に記載のクロックゲーティング解析方法。
(付記31)前記入力パタン生成工程は、
前記状態テーブルにおける前記各順序回路素子からの現時刻および次時刻の出力値の組み合わせに基づいて、前記解析対象回路の状態遷移をあらわす回路状態遷移グラフを作成する回路状態遷移グラフ作成工程と、
前記非検出クロックゲーティング状態遷移枝を次時刻のクロックゲーティング状態遷移枝とすることにより、前記回路状態遷移グラフ作成工程によって作成された回路状態遷移グラフにおいて、前記非クロックゲーティング状態遷移枝に対応する回路状態遷移枝から初期状態までの状態遷移を探索する探索工程と、
前記探索工程によって探索された探索結果を、前記非検出クロックゲーティング状態遷移枝を出現させる入力パタンとして出力する出力工程と、
を含んだことを特徴とする付記30に記載のクロックゲーティング解析方法。
(付記32)前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出する次状態関数算出工程と、
前記変換テーブルと前記次状態関数算出工程によって算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成する状態テーブル作成工程と、
前記全状態集合出力工程によって出力されたクロックゲーティング全状態集合と前記状態テーブル作成工程によって作成された状態テーブルとに基づいて、前記クロックゲーティング状態の状態遷移をあらわすクロックゲーティング状態遷移グラフを作成するクロックゲーティング状態遷移グラフ作成工程と、
前記クロックゲーティング状態遷移グラフ作成工程によって作成されたクロックゲーティング状態遷移グラフの中から、前記ローカルクロックが非活性化状態から活性化状態に復帰しない状態遷移を抽出する状態遷移抽出工程と、
を含んだことを特徴とする付記24に記載のクロックゲーティング解析方法。
(付記33)前記全状態集合出力工程によって出力されたクロックゲーティング全状態集合の中の任意のクロックゲーティング状態を、任意のローカルクロックを活性化状態から非活性化状態にしたクロックゲーティング状態に変換する変換工程と、
前記変換工程によって変換された変換後のクロックゲーティング状態の中から、クロックゲーティング全状態集合内のクロックゲーティング状態と一致するものを削除することにより、クロックゲーティングミス状態候補を生成するクロックゲーティングミス状態候補生成工程と、
を含んだことを特徴とする付記24に記載のクロックゲーティング解析方法。
(付記34)前記クロックゲーティングミス状態候補生成工程によって生成されたクロックゲーティングミス状態候補が、前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出される特定のクロックゲーティング状態を含んでいるか否かを判断するとともに、前記変換工程により変換対象となったクロックゲーティングにより駆動される順序回路素子の出力値が変化するか否かを判断する判断工程と、
前記判断工程によって判断された判断結果に基づいて、前記クロックゲーティングミス状態候補から前記特定のクロックゲーティング状態を削除する削除工程と、
を含んだことを特徴とする付記33に記載のクロックゲーティング解析方法。
以上のように、本発明にかかるクロックゲーティング解析装置、クロックゲーティング解析方法、およびクロックゲーティング解析プログラムは、クロックゲーティング機能を備えたLSIの設計に有用であり、特にクロックゲーティング機能が膨大なLSIに適している。
この発明の実施の形態にかかるクロックゲーティング解析装置のハードウェア構成を示すブロック図である。 この発明の実施の形態にかかるクロックゲーティング解析装置100の解析対象となる解析対象回路の一例を示す回路図である。 図2に示した解析対象回路200のクロックゲーティング状態を示す説明図である。 この発明の実施の形態にかかるクロックゲーティング解析装置100の機能的構成1を示すブロック図である。 図2に示した解析対象回路200に関する変換テーブルT1を示す説明図である。 この発明の実施の形態にかかるクロックゲーティング解析装置100のクロックゲーティング解析処理手順1を示すフローチャートである。 この発明の実施の形態にかかるクロックゲーティング解析装置100の機能的構成2を示すブロック図である。 入力パタン生成部704の詳細な機能的構成を示すブロック図である。 図2に示した解析対象回路200に関する状態テーブルT2を示す説明図である。 回路状態遷移グラフG1を示す説明図である。 状態テーブルT2からの検索例(その1)を示す説明図である。 図11に示した検索結果からの状態遷移枝の検出例を示す説明図である。 状態テーブルT2からの検索例(その2)を示す説明図である。 図13に示した検索結果からの状態遷移枝の検出例を示す説明図である。 この発明の実施の形態にかかるクロックゲーティング解析装置100のクロックゲーティング解析処理手順2を示すフローチャートである。 ステップS1505に示した状態網羅率RSを上昇させる入力パタンの生成処理の手順を示すフローチャートである。 ステップS1606に示した入力パタン探索処理の手順を示すフローチャートである。 この発明の実施の形態にかかるクロックゲーティング解析装置100の機能的構成3を示すブロック図である。 CG状態遷移グラフG2を示す説明図である。 入力パタン生成部1805の詳細な機能的構成を示すブロック図である。 状態テーブルT2からの検索例(その1)を示す説明図である。 回路状態遷移グラフG1からの検出例(その1)を示す説明図である。 この発明の実施の形態にかかるクロックゲーティング解析装置100のクロックゲーティング解析処理手順3を示すフローチャートである。 ステップS2309で状態遷移枝網羅率REを上昇させる入力パタンの生成処理の処理手順を示すフローチャートである。 ステップS2404で示した入力パタン探索処理の処理手順を示すフローチャートである。 この発明の実施の形態にかかるクロックゲーティング解析装置100の機能的構成4を示すブロック図である。 この発明の実施の形態にかかるクロックゲーティング解析装置100のクロックゲーティング解析処理手順4を示すフローチャートである。 この発明の実施の形態にかかるクロックゲーティング解析装置100の機能的構成5を示すブロック図である。 変換部2801およびミス状態候補集合生成部2802によるミス状態候補生成例を示す説明図である。 この発明の実施の形態にかかるクロックゲーティング解析装置100のクロックゲーティング解析処理手順5を示すフローチャートである。 ミス状態候補miの絞込み処理手順を示すフローチャートである。
100 クロックゲーティング解析装置
200 解析対象回路
400 設計データ
401 クロックゲーティング検出部
402 CG関数算出部
403 変換テーブル作成部
404 CG全状態集合出力部
701 シミュレーション実行部
702 状態網羅率算出部
703 非検出CG状態抽出部
704,1805 入力パタン生成部
801 次状態関数算出部
802 状態テーブル作成部
803 回路状態遷移グラフ作成部
804,2001 探索部
805,2002 出力部
1801 CG状態遷移グラフ作成部
1802 CG全状態遷移枝出力部
1803 状態遷移枝網羅率算出部
1804 非検出CG状態遷移枝抽出部
2600 状態遷移抽出部
2801 変換部
2802 ミス状態候補集合生成部
2803 判断部
2804 削除部
CGi クロックゲーティング
LCi ローカルクロック

Claims (8)

  1. 解析対象回路内の順序回路素子へクロックの供給または前記クロックの停止をおこなうクロックゲーティングを検出させる検出工程と、
    前記検出工程によって検出されたクロックゲーティングにおいて前記順序回路素子から前記クロックの入力端子以外の他の入力端子に入力される制御信号により、前記クロックゲーティングから出力されるローカルクロックの活性化/非活性化を表現するクロックゲーティング関数を、前記クロックゲーティングごとに算出させるクロックゲーティング関数算出工程と、
    前記クロックゲーティング関数算出工程によって算出された各クロックゲーティング関数に、前記各順序回路素子からの出力値の組み合わせを代入して、前記各クロックゲーティング関数の値の組み合わせを、前記ローカルクロック相互の活性化/非活性化をあらわすクロックゲーティング状態として算出することにより、前記各順序回路素子からの出力値の組み合わせから前記クロックゲーティング状態への変換をあらわす変換テーブルを作成させる変換テーブル作成工程と、
    前記変換テーブル作成工程によって作成された変換テーブルに基づいて、前記解析対象回路における前記クロックゲーティング状態をすべて網羅するクロックゲーティング全状態集合を出力させる全状態集合出力工程と、
    をコンピュータに実行させることを特徴とするクロックゲーティング解析プログラム。
  2. 前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態が、前記全状態集合出力工程によって出力されたクロックゲーティング全状態集合を網羅している割合をあらわす状態網羅率を算出させる状態網羅率算出工程を前記コンピュータに実行させることを特徴とする請求項1に記載のクロックゲーティング解析プログラム。
  3. 前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出させる次状態関数算出工程と、
    前記変換テーブルと前記次状態関数算出工程によって算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成させる状態テーブル作成工程と、
    前記全状態集合出力工程によって出力されたクロックゲーティング全状態集合と前記状態テーブル作成工程によって作成された状態テーブルとに基づいて、前記クロックゲーティング状態の状態遷移をあらわすクロックゲーティング状態遷移グラフを作成させるクロックゲーティング状態遷移グラフ作成工程と、
    前記クロックゲーティング状態遷移グラフ作成工程によって作成されたクロックゲーティング状態遷移グラフの中から、前記クロックゲーティング状態の状態遷移枝をすべて抽出することにより、クロックゲーティング全状態遷移枝集合を出力させる全状態遷移枝集合出力工程と、
    を前記コンピュータに実行させることを特徴とする請求項1に記載のクロックゲーティング解析プログラム。
  4. 前記解析対象回路に任意の入力パタンを与えたシミュレーション結果により検出されるクロックゲーティング状態遷移枝が、前記全状態遷移枝集合出力工程によって出力されたクロックゲーティング全状態遷移枝集合を網羅している割合をあらわす状態遷移枝網羅率を算出させる状態遷移枝網羅率算出工程を前記コンピュータに実行させることを特徴とする請求項3に記載のクロックゲーティング解析プログラム。
  5. 前記各順序回路素子に関する現時刻から次時刻への出力変化をあらわす次状態関数を算出させる次状態関数算出工程と、
    前記変換テーブルと前記次状態関数算出工程によって算出された次状態関数とに基づいて、前記各順序回路素子からの現時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態と、前記各順序回路素子からの次時刻の出力値の組み合わせおよび当該組み合わせに応じたクロックゲーティング状態とを関連付けた状態テーブルを作成させる状態テーブル作成工程と、
    前記全状態集合出力工程によって出力されたクロックゲーティング全状態集合と前記状態テーブル作成工程によって作成された状態テーブルとに基づいて、前記クロックゲーティング状態の状態遷移をあらわすクロックゲーティング状態遷移グラフを作成させるクロックゲーティング状態遷移グラフ作成工程と、
    前記クロックゲーティング状態遷移グラフ作成工程によって作成されたクロックゲーティング状態遷移グラフの中から、前記クロックゲーティングが非活性化状態から活性化状態に復帰しない状態遷移を抽出させる状態遷移抽出工程と、
    を前記コンピュータに実行させることを特徴とする請求項1に記載のクロックゲーティング解析プログラム。
  6. 請求項1〜5に記載のクロックゲーティング解析プログラムを記録した前記コンピュータに読み取り可能な記録媒体。
  7. 解析対象回路内の順序回路素子へクロックの供給または前記クロックの停止をおこなうクロックゲーティングを検出する検出手段と、
    前記検出手段によって検出されたクロックゲーティングにおいて前記順序回路素子から前記クロックの入力端子以外の他の入力端子に入力される制御信号により、前記クロックゲーティングから出力されるローカルクロックの活性化/非活性化を表現するクロックゲーティング関数を、前記クロックゲーティングごとに算出するクロックゲーティング関数算出手段と、
    前記クロックゲーティング関数算出手段によって算出された各クロックゲーティング関数に、前記各順序回路素子からの出力値の組み合わせを代入して、前記各クロックゲーティング関数の値の組み合わせを、前記ローカルクロック相互の活性化/非活性化をあらわすクロックゲーティング状態として算出することにより、前記各順序回路素子からの出力値の組み合わせから前記クロックゲーティング状態への変換をあらわす変換テーブルを作成する変換テーブル作成手段と、
    前記変換テーブル作成手段によって作成された変換テーブルに基づいて、前記解析対象回路における前記クロックゲーティング状態をすべて網羅するクロックゲーティング全状態集合を出力する全状態集合出力手段と、
    備えることを特徴とするクロックゲーティング解析装置。
  8. 検出手段とクロックゲーティング関数算出手段と変換テーブル作成手段と全状態集合出力手段とを備えるコンピュータが、
    前記検出手段により、解析対象回路内のクロックゲーティングから順序回路素子に供給されるローカルクロックを検出する検出工程と、
    前記クロックゲーティング関数算出手段により、前記検出工程によって検出されたクロックゲーティングにおいて前記順序回路素子から前記クロックの入力端子以外の他の入力端子に入力される制御信号により、前記クロックゲーティングから出力されるローカルクロックの活性化/非活性化を表現するクロックゲーティング関数を、前記クロックゲーティングごとに算出するクロックゲーティング関数算出工程と、
    前記変換テーブル作成手段により、前記クロックゲーティング関数算出工程によって算出された各クロックゲーティング関数に、前記各順序回路素子からの出力値の組み合わせを代入して、前記各クロックゲーティング関数の値の組み合わせを、前記ローカルクロック相互の活性化/非活性化をあらわすクロックゲーティング状態として算出することにより、前記各順序回路素子からの出力値の組み合わせから前記クロックゲーティング状態への変換をあらわす変換テーブルを作成する変換テーブル作成工程と、
    前記全状態集合出力手段により、前記変換テーブル作成工程によって作成された変換テーブルに基づいて、前記解析対象回路における前記クロックゲーティング状態をすべて網羅するクロックゲーティング全状態集合を出力する全状態集合出力工程と、
    実行することを特徴とするクロックゲーティング解析方法。
JP2007032540A 2007-02-13 2007-02-13 クロックゲーティング解析プログラム、該プログラムを記録した記録媒体、クロックゲーティング解析装置、およびクロックゲーティング解析方法 Expired - Fee Related JP4388965B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007032540A JP4388965B2 (ja) 2007-02-13 2007-02-13 クロックゲーティング解析プログラム、該プログラムを記録した記録媒体、クロックゲーティング解析装置、およびクロックゲーティング解析方法
US12/002,349 US8069026B2 (en) 2007-02-13 2007-12-17 Clock gating analyzing apparatus, clock gating analyzing method, and computer product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007032540A JP4388965B2 (ja) 2007-02-13 2007-02-13 クロックゲーティング解析プログラム、該プログラムを記録した記録媒体、クロックゲーティング解析装置、およびクロックゲーティング解析方法

Publications (2)

Publication Number Publication Date
JP2008197920A JP2008197920A (ja) 2008-08-28
JP4388965B2 true JP4388965B2 (ja) 2009-12-24

Family

ID=39686590

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007032540A Expired - Fee Related JP4388965B2 (ja) 2007-02-13 2007-02-13 クロックゲーティング解析プログラム、該プログラムを記録した記録媒体、クロックゲーティング解析装置、およびクロックゲーティング解析方法

Country Status (2)

Country Link
US (1) US8069026B2 (ja)
JP (1) JP4388965B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8073669B2 (en) * 2007-08-21 2011-12-06 International Business Machines Corporation Method and apparatus for detecting clock gating opportunities in a pipelined electronic circuit design
US7458050B1 (en) * 2008-03-21 2008-11-25 International Business Machines Corporation Methods to cluster boolean functions for clock gating
KR101139603B1 (ko) * 2010-08-24 2012-04-27 광운대학교 산학협력단 클럭 게이팅 집적 회로 장치의 소비 전력 예측 방법
US9495490B2 (en) 2012-07-16 2016-11-15 International Business Machines Corporation Active power dissipation detection based on erroneus clock gating equations
US8656326B1 (en) 2013-02-13 2014-02-18 Atrenta, Inc. Sequential clock gating using net activity and XOR technique on semiconductor designs including already gated pipeline design
US9946823B2 (en) * 2013-08-12 2018-04-17 Mentor Graphics Corporation Dynamic control of design clock generation in emulation

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08202569A (ja) 1995-01-23 1996-08-09 Sharp Corp ゲーティッドクロックの検証方法
JPH09251483A (ja) * 1996-03-18 1997-09-22 Fujitsu Ltd セルライブラリ作成方法
JP3357813B2 (ja) 1997-04-01 2002-12-16 株式会社東芝 ゲーテッドクロック設計支援方法、ゲーテッドクロック設計支援装置及びゲーテッドクロック設計支援プログラムを格納したコンピュータ読み取り可能な記録媒体
US6557150B1 (en) * 1997-08-20 2003-04-29 Hitachi, Ltd. Method of extracting timing characteristics of transistor circuits, storage medium storing timing characteristic library, LSI designing method, and gate extraction method
JPH11259554A (ja) 1998-03-13 1999-09-24 Toshiba Corp 論理回路のタイミング解析方法ならびに同方法を用いた論理合成システム、及び同方法がプログラムされ記録される記録媒体
TW382855B (en) * 1998-07-29 2000-02-21 Integrated Technology Express State machine with dynamic interception clock function
JP2006106865A (ja) * 2004-09-30 2006-04-20 Nec Corp 論理回路設計検証装置および方法、プログラム

Also Published As

Publication number Publication date
JP2008197920A (ja) 2008-08-28
US8069026B2 (en) 2011-11-29
US20080195367A1 (en) 2008-08-14

Similar Documents

Publication Publication Date Title
JP4388965B2 (ja) クロックゲーティング解析プログラム、該プログラムを記録した記録媒体、クロックゲーティング解析装置、およびクロックゲーティング解析方法
US7308660B2 (en) Calculation system of fault coverage and calculation method of the same
US11036913B2 (en) Integrated circuit methods using single-pin imaginary devices
JP2004013720A (ja) 論理回路のタイミング制約モデル生成方法、論理回路のタイミング制約モデル生成プログラム、およびタイミング制約モデルを用いるタイミングドリブンレイアウト方法
JP5310036B2 (ja) 検証支援プログラムおよび検証支援装置
Amarú et al. SAT-sweeping enhanced for logic synthesis
JP4533918B2 (ja) 回路仕様記述設計解析装置及び回路仕様記述設計解析方法
JP4142176B2 (ja) インタフェース仕様定義を記録した記憶媒体、及び接続検証方法、及び信号パタン生成方法
JP5292164B2 (ja) 故障診断方法および故障診断システム
Uysal et al. OCV guided clock tree topology reconstruction
US20070266348A1 (en) Circuit conjunctive normal form generating method, circuit conjunctive normal form generating device, hazard check method and hazard check device
JP5115003B2 (ja) 論理設計支援システム及びプログラム
Christensen et al. PyLSE: A pulse-transfer level language for superconductor electronics
US20220092246A1 (en) System and method for analog design synthesis using analog cell component library based on ai/ml
CN108279889A (zh) 时钟树代码生成方法及装置
JP2011257845A (ja) ディレイライブラリ生成装置,ディレイライブラリ生成プログラムおよびディレイライブラリ生成方法
JP6365273B2 (ja) テストパターン生成方法、テストパターン生成プログラム、およびテストパターン生成装置
CN111368513A (zh) Xdl电路网表文件到有向超图的转换方法
US6877140B1 (en) Method and system for generating a schematic representing bus structures
JP2010176208A (ja) 冗長論理素子削除方法、その装置、及びプログラム
US7350162B2 (en) Structure analytic program
US6463572B1 (en) IC timing analysis with known false paths
US20240046018A1 (en) Logic circuit design method and logic circuit designing apparatus
JP4782743B2 (ja) 論理接続チェックプログラム、論理接続チェック装置、および論理接続チェック方法
JP6813182B2 (ja) 抽出装置、抽出方法、ならびに、プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081205

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090512

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090713

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090929

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091005

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121009

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121009

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131009

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees