(57)【特許請求の範囲】
【請求項１】
クロック信号に対する同期回路及び非同期回路が含まれる同期・非同期混在回路の静的・動的タイミング検証のための所定プログラムをコンピュータに実行させることで可能とされる静的・動的タイミング検証方法であって、
前記コンピュータが、前記同期・非同期混在回路を、クロック信号に同期されるか否かの観点より同期回路と非同期回路に分類し、前記同期回路を周期回路と非周期回路に分類し、前記非同期回路を周期回路と非周期回路に分類する第１処理と、
前記コンピュータが、前記同期回路の周期回路及び前記非同期回路の周期回路には静的タイミング検証を施し、前記同期回路の非周期回路及び前記非同期回路の非周期回路には動的タイミング検証を施す第２処理と、を含み、
前記第１処理は、前記コンピュータが、前記同期・非同期混在回路をタイミング検証の対象回路とし、その対象回路の中のクロック情報を識別するクロック情報認識処理を含み、
前記クロック情報認識処理は、前記コンピュータが、クロック情報認識の対象とされる回路中の全ネットに対して非周期属性を設定する処理と、
前記コンピュータが、前記クロック情報認識の対象とされる回路に対してトレースを実行し、２入力以上の素子の入力端子到達する迄クロック情報を伝搬させ、トレースを実行したネットに対して周期属性を設定する処理と、
前記コンピュータが、前記クロック情報認識の対象とされる回路中のカウンタ候補を認識する処理と、
前記コンピュータが、入力信号ネットの属性が変化した素子の出力信号ネットの属性演算を実行して、その演算結果の属性を当該素子の出力信号ネットに設定する処理と、
前記コンピュータが、前記カウンタ候補のクロック端子への入力信号ネットの属性が非周期か否かを判定する処理と、
前記コンピュータが、前記判定結果に基づいて、前記カウンタ候補のクロック端子への入力信号ネットの属性が非周期でなかったカウンタ候補をカウンタとして認識し直し、当該カウンタを構成する素子の入力・出力信号ネットに対して周期属性を設定する処理と、を含むことを特徴とする静的・動的タイミング検証方法。
【請求項２】
請求項１において、
前記第１処理は、前記コンピュータが、前記クロック情報認識処理で識別された前記クロック情報をもとに、前記同期・非同期混在回路の中で同期回路部分と非同期回路部分との非同期転送経路、更に同期回路部分間の非同期転送経路を、夫々識別する処理を含み、タイミング検証が必要な非同期転送経路とタイミング検証が不要な非同期転送経路とを別々の非同期転送経路として認識可能とする静的・動的タイミング検証方法。
【請求項３】
請求項１において、
前記第１処理は、前記コンピュータが、前記クロック情報認識処理で識別された前記クロック情報をもとに、前記対象回路の中でクロックゲートを構成している論理素子を識別し、
前記クロックゲートを構成している前記論理素子へ２本以上クロック属性を持つ信号が入力されている場合に、クロックゲートのセットアップ解析、ホールド解析を実行する必要があるかを判定し、
前記クロック属性を持つ入力信号の中でどの信号を基準としてクロックゲートのセットアップ解析、ホールド解析を実行する必要があるかを判定する処理を更に含み、
前記静的タイミング検証によるゲーテッドクロックのセットアップ・ホールド解析を行うための指示情報の作成を可能とする静的・動的タイミング検証方法。
【請求項４】
請求項１において、
前記第１処理は、前記コンピュータが、前記クロック情報認識処理で識別された前記クロック情報をもとに、前記対象回路の中でクロックゲートを構成している論理素子を識別し、前記クロックゲートを構成している論理素子へのクロック属性を持たない入力信号がマルチサイクルパスか否かの識別を行う認識処理を更に含み、疑似エラーを予め排除した静的タイミング検証によるゲーテッドクロックのセットアップ・ホールド解析の実行を可能とする静的・動的タイミング検証方法。
【請求項５】
請求項１において、
前記第１処理は、前記コンピュータが、前記クロック情報認識処理で識別された前記クロック情報をもとに、前記対象回路の中でクロックの選択論理を構成している論理素子を識別する処理を含み、フリップフロップ及びラッチ間のデータ転送経路の認識において、前記データ転送経路の両端のフリップフロップ又はラッチへ供給されるクロックの組み合わせの検証を可能とする静的・動的タイミング検証方法。
【請求項６】
請求項１において、
前記第１処理は、前記コンピュータが、前記クロック情報認識処理で識別された前記クロック情報をもとに、前記対象回路の中でクロック以外の信号がクロック端子に供給されているフリップフロップ及びラッチに対して、仮想的なクロックが定義可能かを判定し、それによって、クロック以外の信号がクロック端子に供給されているフリップフロップ及びラッチであって、仮想的なクロックが定義可能と判定されたフリップフロップ及びラッチのクロック端子に対して、仮想的なクロックを設定する設定処理を更に含み、クロック以外の信号がクロック端子に供給されているフリップフロップ及びラッチに対して、仮想的なクロックが定義可能かを判定して仮想クロックを設定することで非同期回路に対する前記静的タイミング検証の適用を可能とする静的・動的タイミング検証方法。
【請求項７】
請求項１において、
前記第１処理は、前記コンピュータが、前記クロック情報認識処理で識別された前記クロック情報をもとに、前記対象回路の中で静的タイミング検証適用回路部分と動的タイミング検証適用回路部分とを識別する適用回路部分認識処理を含み、この処理結果に応じて、同期回路部分でのハザード解析を必要とする回路部分の認識と当該回路部分への動的タイミング検証の実行を可能とする静的・動的タイミング検証方法。
【請求項８】
請求項７において、
前記適用回路部分認識処理は、前記コンピュータが、識別した前記動的タイミング検証適用回路部分に信号の伝達経路に沿ってフリップフロップが現われる迄を前記動的タイミング検証適用回路部分に含めて認識することにより、動的タイミング検証適用回路部分への静的タイミング検証適用回路部分からのデータ転送経路における信号遅延時間を考慮しないで、動的タイミング検証適用回路部分の動的タイミング検証を実行する静的・動的タイミング検証方法。
【請求項９】
請求項８において、
前記適用回路部分認識処理は、前記コンピュータが、識別した前記動的タイミング検証適用回路部分と前記対象回路の中の論理階層との対応を識別することによって、動的タイミング検証実行すべき論理階層の認識を可能とする静的・動的タイミング検証方法。
【請求項１０】
請求項７において、
前記適用回路部分認識処理は、前記コンピュータが、識別した前記静的タイミング検証適用回路部分の入力端子及び出力端子に最も近い前記動的タイミング検証適用回路部分内のフリップフロップから信号の伝達経路に沿って前記動的タイミング検証適用回路部分外のフリップフロップ及びラッチを識別し、
識別された前記動的タイミング検証適用回路部分外のフリップフロップ及びラッチへのクロック信号の伝搬遅延を、前記対象回路に遅延情報を与える際に前記動的タイミング検証適用回路部分と前記動的タイミング検証適用回路部分内のフリップフロップ及びラッチへのクロック信号の伝搬遅延のみを与えるだけで動的タイミング検証が可能となるよう調整することにより、対象回路全体の動的タイミング検証の実行を可能とする静的・動的タイミング検証方法。
【請求項１１】
クロック信号に対する同期回路及び非同期回路が含まれる同期・非同期混在回路の静的・動的タイミング検証を可能とする静的・動的タイミング検証処理をコンピュータに実行させるための所定プログラムが記録されたコンピュータ読取り可能な記録媒体であって、
前記静的・動的タイミング検証処理は、前記同期・非同期混在回路を、クロック信号に同期されるか否かの観点より同期回路と非同期回路に分類し、前記同期回路を周期回路と非周期回路に分類し、前記非同期回路を周期回路と非周期回路に分類する第１処理と、
前記同期回路の周期回路及び前記非同期回路の周期回路には静的タイミング検証を施し、前記同期回路の非周期回路及び前記非同期回路の非周期回路には動的タイミング検証を施す第２処理と、を含み、
前記第１処理は、前記同期・非同期混在回路をタイミング検証の対象回路とし、その対象回路の中のクロック情報を識別するクロック情報認識処理を含み、
前記クロック情報認識処理は、クロック情報認識の対象とされる回路中の全ネットに対して非周期属性を設定する処理と、
前記クロック情報認識の対象とされる回路に対してトレースを実行し、２入力以上の素子の入力端子到達する迄クロック情報を伝搬させ、トレースを実行したネットに対して周期属性を設定する処理と、
上記クロック情報認識の対象とされる回路中のカウンタ候補を認識する処理と、
入力信号ネットの属性が変化した素子の出力信号ネットの属性演算を実行して、その演算結果の属性を当該素子の出力信号ネットに設定する処理と、
前記カウンタ候補のクロック端子への入力信号ネットの属性が非同期か否かを判定する処理と、
前記判定結果に基づいて、前記カウンタ候補のクロック端子への入力信号ネットの属性が非周期でなかったカウンタ候補をカウンタとして認識し直し、当該カウンタを構成する素子の入力・出力信号ネットに対して周期属性を設定する処理と、を含むことを特徴とするコンピュータ読取り可能な記録媒体。
【請求項１２】
クロック情報の認識を可能とする所定プログラムをコンピュータに実行させることで、クロック情報認識の対象とされる回路の内部で生成されたクロックの情報を認識するためのクロック情報認識処理を含むクロック情報認識方法であって、
前記クロック情報認識処理は、前記コンピュータが、クロック情報認識の対象とされる回路中の全ネットに対して非周期属性を設定する処理と、
前記コンピュータが、前記クロック情報認識の対象とされる回路に対してトレースを実行し、２入力以上の素子の入力端子に到達する迄クロック情報を伝搬させ、トレースを実行したネットに対して周期属性を設定する処理と、
前記コンピュータが、前記クロック情報認識の対象とされる回路中のカウンタ候補を認識する処理と、
前記コンピュータが、入力信号ネットの属性が変化した素子の出力信号ネットの属性演算を実行して、その演算結果の属性を当該素子の出力信号ネットに設定する処理と、
前記コンピュータが、前記カウンタ候補のクロック端子への入力信号ネットの属性が非周期か否かを判定する処理と、
前記コンピュータが、前記判定結果に基づいて、前記カウンタ候補のクロック端子への入力信ネットの属性が非周期でなかったカウンタ候補をカウンタとして認識し直し、当該カウンタを構成する素子の入力・出力信号ネットに対して周期属性を設定する処理と、を含むことを特徴とするクロック情報認識方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、電気・電子回路（電気回路、半導体集積回路それ自体はもとより半導体集積回路を実装した電子回路）の設計検証技術に係り、設計検証の対象回路（被検証回路）に対して静的検証と動的検証とを割り振る静的・動的タイミング検証分割、そして、それによるタイミング検証方法、並びにその検証方法をコンピュータに実行させるためのプログラムを格納した記憶媒体に関するものである。
【０００２】
【従来の技術】
電気・電子回路のタイミング検証にはその処理効率を向上させるために動的タイミング検証の代わりに若しくは動的タイミング検証と共に静的タイミング検証を採用することができる。
【０００３】
前記静的タイミング検証と動的タイミング検証とを採用す検証フローとして図２に記載のフローを挙げることができる。図２において、２１は検証対象とする回路接続情報、２２は入出力信号のタイミング指定とクロック指定情報、２３は従来の静的タイミング検証装置、２４は信号情報（パターン）、２５は動的タイミング検証装置、２６は回路設計フェーズを示す。静的タイミング検証装置２３で行われるような静的タイミング検証では、基本的に、シミュレーションによる各回路要素の信号情報を必要とせず、２２で示されるような入出力信号のタイミング指定とクロック指定を行なうことで、ラッチ間で最も遅いパス（クリティカルパス）を見つけ、このクリティカルパスにおける信号伝達がクロック周期に比べて間に合うかどうかのセットアップタイミング検証を行う。更に、静的タイミング検証では、ラッチ間で最も速いパスを見つけ、同じクロックのタイミングで次のデータを取り込まないかのホールドタイミング検証を行なう。前記動的タイミング検証装置２５で行われるような動的タイミング検証では、２４で示されるようなシミュレーションによる各回路要素の信号情報（テストパターン）を必要とし、信号情報を２１で例示されるような回路接続情報の入力端子に入力することで、被検証回路の回路接続を活性化し、シミュレーションを行なう。
【０００４】
従来の電気・電子回路のタイミング検証方式について記載された文献の例として、特開平１０−１９８７２３号、特開平７−４４５９０号及び特開平９−５０４４９号の各公報が有る。
【０００５】
特開平１０−１９８７２３号公報記載の技術は、電気・電子回路において特定クロック信号に同期する同期回路と特定クロックが無い或いは特定クロック信号に同期しない非同期回路を混在して備える回路に対して静的タイミング検証のみでタイミングを保証しようとするものである。
【０００６】
特開平９−５０４４９号公報は、同期・非同期混在回路に対して同期回路部分と非同期回路部分を識別し、識別された同期回路部分に対して静的タイミング検証を行い、非同期回路部分に対して動的タイミング検証を行う技術を提供する。但し、この公報記載の技術では、同期回路部分での回路正常動作保証の為のハザード（スパイクノイズ）解析や非同期回路部分への静的タイミング検証の適用は行っていない。
【０００７】
特開平７−４４５９０号公報記載の回路検証システムは、検証対象回路内にスパイクノイズ発生回路が存在するか否かを判定しようとするものであるが、その判定手法は信頼性が低いという不具合が有る。
【０００８】
【発明が解決しようとする課題】
電気・電子回路のタイミング検証技術において、従来の静的タイミング検証では、指定クロックの同期回路に対してだけタイミング検証を行なっていた。このため個々にクロックを指定することが必須である。更に、同期回路部分での回路正常動作を保証する為にハザード解析を行う場合には、その個所を個別に探し出して動的タイミング検証の対象にしてハザード解析を行わねばならない。ハザード解析に対しては、前記特開平７−４４５９０号公報記載の回路検証システムを用いても不十分である。
【０００９】
このため、クロック指定ができなければ、また、ハザードの虞のある回路部分を抽出できなければ、タイミング検証はできない。
【００１０】
この点に関し、対象回路の内部に任意のカウンタ回路とみなすことができる回路によって構成されたクロック生成回路が存在する場合、クロックの指定の為の情報作成に時間がかかり、また、低電力化の為に近年使用頻度が増してきたクロックゲートのセットアップ解析及びホールド解析を行う為の指示情報の作成に時間がかかるとい問題点がの有ることが本発明者によって明らかにされた。更に、前記セットアップ解析及びホールド解析を行う為の指示情報が正しく行われているかの検証には、静的タイミング検証結果を解析して疑似エラーの識別を手作業で行う以外になく、検証工数が多大にかかるという問題点を有していることが本発明者によって明らかにされた。
【００１１】
更に、前述のようにユーザが同期回路部分のハザード解析を必要とする回路部分を選び出し、それについては別途の処理を行うという、非能率な作業が要求されていた。そして、手作業でハザード解析を必要とする回路部分を検証するのは更に能率が悪く、動的タイミング検証方法を用いる場合でも、動的タイミング検証装置にハザード解析を必要とする回路部分を教示するという非能率的な作業が必要とされる。特開平７−４４５９０号公報記載の回路検証システムを用いてもハザード解析を要する回路部分の指摘は不十分であると考えられる。
【００１２】
本発明の目的は、信頼性の高いタイミング検証を能率的に行うことができる静的・動的タイミング検証方法並びにその方法をコンピュータに実行させるためのプログラムを格納した記憶媒体を提供することにある。
【００１３】
本発明の別の目的は、同期・非同期混在回路のクロック情報の抽出を能率的に行うことができる静的・動的タイミング検証方法並びにその方法をコンピュータに実行させるためのプログラムを格納した記憶媒体を提供することにある。
【００１４】
本発明の更に別の目的は同期・非同期混在回路におけるハザードの発生可能性を考慮してのタイミング検証を能率的に行うことができる静的・動的タイミング検証方法並びにその方法をコンピュータに実行させるためのプログラムを格納した記憶媒体を提供することにある。
【００１５】
本発明のその他の目的は同期・非同期混在回路におけるクロック情報とハザードの発生可能性とを考慮して信頼性の高いタイミング検証を能率的に行うことができる静的・動的タイミング検証方法並びにその方法をコンピュータに実行させるためのプログラムを格納した記憶媒体を提供することにある。
【００１６】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【００１７】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１８】
すなわち、同期・非同期混在回路に対する従来のタイミング検証は、図３７に例示されるように、同期回路（▲１▼、▲２▼）に対しては静的タイミング検証、非同期回路（▲３▼、▲４▼）に対しては動的タイミング検証を割り当てていた。本発明に係る静的・動的タイミング検証回路では、図３７に例示されるように、同期・非同期回路に対して周期・非周期の観点を導入する。すなわち、同期・非同期混在回路を、前記外部クロック端子やクロックツリー等によって一義的に規定されるクロック信号に同期されるか否かの観点より同期回路と非同期回路に分類し、前記同期回路を周期回路（▲１▼）と非周期回路（▲２▼）に、前記非同期回路を周期回路（▲３▼）と非周期回路（▲４▼）に分類する。そして、同期回路の周期回路（▲１▼）及び非同期回路の周期回路（▲３▼）には静的タイミング検証を施し、同期回路の非周期回路（▲２▼）及び非同期回路の非周期回路（▲４▼）には動的タイミング検証を施す。要するに、同期・非同期混在回路において、外部クロック端子やクロックツリー等によって一義的に規定されるクロック信号に同期動作される同期回路に対して全てを静的タイミング検証の対象とはせず、ハザード等が発生する可能性のある回路部分を抽出し、この回路部分に対しては、同期回路における非周期的な動作回路部分（非周期回路）として動的タイミング検証を施す。また、同期・非同期混在回路において、外部クロック端子やクロックツリー等によって一義的に規定されるクロック信号を用いない若しくはそのようなクロック信号に同期動作されない非同期回路に対して全てを動的タイミング検証の対象とはせず、ストローブ信号やゲーテッドクロック等のように仮想的なクロック信号とみなすことが可能な信号が供給される回路部分を抽出し、この回路部分に対しては、非同期回路における周期的な動作回路部分（周期回路）として静的タイミング検証を施す。上述の観点より本発明に係る静的・動的タイミング検証方法を更に詳述する。
【００１９】
〔１〕静的・動的タイミング検証方法は、タイミング検証の対象回路に対する静的タイミング検証又は動的タイミング検証の適用を決める静的・動的タイミング検証分割処部（６）による静的・動的タイミング検証分割処を有する。この静的・動的タイミング検証分割処理は、前記対象回路の中のカウンタ手段（周期信号を生成する回路手段）を識別し、識別されたカウンタ手段の情報（Ｓ１_３）を元に、対象回路の中のクロック情報を識別する（Ｓ６）クロック情報認識処理を有する。このクロック情報認識処理はクロック情報認識手段（１１）行なわれる。前記クロック情報認識処理を有することにより、クロック信号が入力される外部入力ピンへのクロック情報と、セットまたはリセット信号が入力される外部入力ピンの情報と、対象回路内のカウンタの同期・非同期セット・リセットまたは同期・非同期ロードに用いるフリップフロップ又はラッチ素子の情報から、内部で生成されたクロックの情報を自動的に認識する事ができる。これによって対象回路の同期回路、非同期回路の識別が容易化される。
【００２０】
〔２〕上記〔１〕において、前記クロック情報認識処理は、これによって識別した前記情報を元に、対象回路の中で同期回路部分と非同期回路部分との非同期転送経路、更に同期回路部分間の非同期転送経路を、夫々識別する（Ｓ３）。要するに、タイミング検証不要な回路部分を抽出する。前記非同期転送経路を認識するので、対象回路内の非周期信号がクロックとして供給されているフリップフロップ及びラッチを介したデータ転送経路（タイミング検証が必要な非同期転送経路）と、互いに非同期な信号、即ち電源投入時での前記信号間の位相差が定義不能な信号がクロックとして供給されているフリップフロップ及びラッチ間のデータ転送経路（タイミング検証が不要な非同期転送経路）とを別々の非同期転送経路として認識する事が出来る。
【００２１】
〔３〕上記〔１〕において、前記クロック情報認識処理は、これによって識別した情報を元に、対象回路の中でゲーテッドクロックを構成している論理素子を認識する（Ｓ４）。そして、認識されたゲーテッドクロックを構成している論理素子へ２本以上クロック属性を持つ信号が入力されている場合に（図３１、図３２）、ゲーテッドクロックのセットアップ解析、ホールド解析を実行する必要があるかが判定され（Ｓ９）、前記クロック属性を持つ入力信号の中でどの信号を基準としてゲーテッドクロックのセットアップ解析、ホールド解析を実行するかが判定される（Ｓ１０）。これにより、静的タイミング検証によるゲーテッドクロックのセットアップ・ホールド解析を行う為の指示情報を作成でき、網羅的に静的タイミング検証によるゲーテッドクロックのセットアップ・ホールド解析が実行できる。
【００２２】
〔４〕上記〔１〕において、前記クロック情報認識処理は、これによって識別した情報を元に、対象回路の中でゲーテッドクロックを構成している論理素子を識別し（Ｓ４）、図３６に例示されるように、前記識別されたゲーテッドクロックを構成している論理素子へのクロック属性を持たない入力信号がマルチサイクルパスか否かの識別を行う（Ｓ９）。このように、ゲーテッドクロックを構成している論理素子へのクロック属性を持たない入力信号のマルチサイクルパスを認識するから、疑似エラーを予め排除した静的タイミング検証によるゲーテッドクロックのセットアップ・ホールド解析を実行することができる。
【００２３】
〔５〕上記〔１〕において、前記クロック情報認識処理は、これによって識別した前記情報を元に、対象回路の中でクロックの選択論理を構成している論理素子を識別する（Ｓ２）。これにより、フリップフロップ及びラッチ間のデータ転送経路の認識において、前記データ転送経路の両端のフリップフロップ又はラッチへ供給されるクロックの組み合わせを予め検証する事が出来る。
【００２４】
〔６〕上記〔１〕において、前記静的・動的タイミング検証分割処理は、更に、クロック情報認識手段で識別した情報を元に、対象回路の中でクロック以外の信号がクロック端子に供給されているフリップフロップ及びラッチに対して、仮想的なクロックが定義可能かを判定し、クロック以外の信号がクロック端子に供給されているフリップフロップ及びラッチであって、前記仮想的なクロックが定義可能と判定されたフリップフロップ及びラッチのクロック端子に対して、仮想的なクロックを設定する（Ｓ７）。このように、クロック以外の信号がクロック端子に供給されているフリップフロップ及びラッチに対して、仮想的なクロックが定義可能かを判定して仮想クロックを設定するから、非同期回路に対しても静的タイミング検証が適用できる。換言すれば、非同期回路を周期回路と非周期回路に分類して、周期回路に静的タイミング検証を可能にするものである。結果として、大幅な検証工数の削減が期待できる。しかも、仮想クロックの設定において、セットアップタイム及びホールドタイムが最も厳しくなるように仮想クロックを設定れば、前記非同期回路に対する静的タイミング検証を最も厳しい条件下で行う事が可能になる。
【００２５】
〔７〕上記〔１〕において、前記静的・動的タイミング検証分割処理は、前記クロック認識処理で識別した情報を元に、対象回路の中で静的タイミング検証適用回路部分と動的タイミング検証適用回路部分を識別する適用回路部分認識処理を有する。この処理は適用回路部分認識手段（１３）で行なわれる。このように、静的タイミング検証適用回路部分と動的タイミング検証適用回路部分を識別できるので、同期回路部分でのハザード解析を必要とする回路部分の認識と当該回路部分への動的タイミング検証が実行できる。
【００２６】
〔８〕上記〔７〕において、前記適用回路部分認識処理は、前静的タイミング検証適用回路部分と動的タイミング検証適用回路部分を識別する認識手段で識別した動的タイミング検証適用回路部分に信号の伝達経路に沿ってフリップフロップが現われる迄を動的タイミング検証適用回路部分に含めて認識する（Ｓ１１）。これにより、動的タイミング検証適用回路部分への静的タイミング検証適用回路部分からのデータ転送経路における信号遅延時間を考慮しないで、動的タイミング検証適用回路部分の動的タイミング検証を実行することができる。
【００２７】
〔９〕上記〔７〕において、前記適用回路部分認識処理は、前静静的タイミング検証適用回路部分と動的タイミング検証適用回路部分を識別する認識手段で識別した動的タイミング検証適用回路部分と対象回路の中の論理階層との対応を識別する（Ｓ１１）。このように、動的タイミング検証適用回路部分と対象回路の中の論理階層との対応を識別するので、動的タイミング検証実行すべき論理階層を認識できる。したがって、論理検証時に予め作成されている各論理階層への入力信号情報を流用して動的タイミング検証を実行する事ができ、検証工数の削減が期待できる。
【００２８】
〔１０〕上記〔１〕において、前記適用回路部分認識処理は、これが識別した静的タイミング検証適用回路部分の入力端子及び出力端子に最も近い前記動的タイミング検証適用回路部分内のフリップフロップから信号の伝達経路に沿って前記動的タイミング検証適用回路部分外のフリップフロップ及びラッチを識別し（Ｓ１１_８_１）、前記認識手段で識別されたフリップフロップ及びラッチへのクロック信号の伝搬遅延を、対象回路に遅延情報を与える際に前記動的タイミング検証適用回路部分と前記動的タイミング検証適用回路部分内のフリップフロップ及びラッチへのクロック信号の伝搬遅延のみを与えるだけで動的タイミング検証が可能となるよう調整する（Ｓ１１_８_２）。これにより、動的タイミング検証適用回路部分に対してのみ遅延情報を与える事で、対象回路全体の動的タイミング検証を実行でき、且つ論理検証時に予め作成されている対象回路全体の入力信号情報の流用ができる。したがって、検証時間と検証工数の削減が期待できる。
【００２９】
〔１１〕特に、非同期転送経路の識別に着目した検証方法は、タイミング検証の対象回路に対する静的タイミング検証又は動的タイミング検証の適用を決める静的・動的タイミング検証分割処理を有し、前記静的・動的タイミング検証分割処理は、対象回路の中のカウンタ手段を識別し、識別されたカウンタ手段の情報をもとに、対象回路の中のクロック情報を識別するクロック情報認識処理を含む。そして、前記クロック情報認識処理は、更に、識別した前記情報をもとに、対象回路の中で同期回路部分と非同期回路部分との非同期転送経路、更に同期回路部分間の非同期転送経路を、夫々識別する非同期転送経路抽出処理（Ｓ５）を行う。更に、前記非同期転送経路抽出処理は、非同期転送経路を構成する素子を認識するために、クロック端子からデータ出力端子への素子内パスの通過を認め、外部端子から前記通過を認めた素子を通るクロックパスを、クロックソース間を結ぶグラフで表現する処理と、そのグラフのクロックソースを用いる素子の集合を把握する処理（Ｓ５_１）と、前記認識されたグラフ毎に、当該グラフのクロックソースをクロックソースとする素子と当該グラフのクロックソースをクロックソースとしない素子との間のデータ転送を非同期転送として認識し、非同期転送と認識された経路の素子が選択論理の前段で異なるグラフの頂点をクロックソースとするものであれば当該経路を常時非同期転送と認識し、一方、非同期転送と認識された経路の素子が選択論理の前後で同一グラフの頂点をクロックソースとするものであれば当該経路は選択論理の選択状態に応じて非同期転送になると認識する処理（Ｓ５_２）とを含む。
【００３０】
この非同期転送経路抽出処理は、マルチプレクサのようなクロック選択論理毎に分断してクロック経路を把握する手法に比べて、コンピュータによる演算データ量が少なく、それ故に、コンピュータによる演算やテーブル作成のために必要なメモリ容量を小さくすることができ、データ処理も速く完了することができる。
【００３１】
上記した静的・動的タイミング検証方法をコンピュータに実行させるためのプログラムをフロッピーディスクやＣＤ−ＲＯＭなどのコンピュータ読取り可能な記憶媒体に格納して提供することにより、前記静的・動的タイミング検証方法を容易に実施することができる。
【００３２】
例えば、そのような記憶媒体は、タイミング検証の対象回路の中のカウンタ手段を識別する第１の処理と、識別されたカウンタ手段の情報を元に、対象回路の中のクロック情報を識別する第２の処理と、識別したクロック情報を元に、対象回路の中で静的タイミング検証適用回路部分と動的タイミング検証適用回路部分を識別する第３の処理と、前記第３の処理結果に基づいて静的タイミング検証を行う第４の処理と、前記第３の処理結果に基づいて動的タイミング検証を行う第５の処理と、をコンピュータに実行させるためのプログラムを記録して成る。
【００３３】
本発明による別の観点に立った記憶媒体は、同期・非同期混在回路における同期回路に非周期的な誤動作を発生する可能性のある回路部分を抽出し、この回路部分には非周期回路として動的タイミング検証を施す処理と、前記同期・非同期混在回路における非同期回路に仮想的なクロック信号とみなすことが可能な信号が供給される回路部分を抽出し、この回路部分には周期回路として静的タイミング検証を施す処理と、をコンピュータに実行させるためのプログラムを記録して成る。
【００３４】
本発明による更に別の観点に立った記憶媒体は、クロック信号に対する同期・非同期混在回路をに対して、同期回路を周期回路と非周期回路に、非同期回路を周期回路と非周期回路に分類し、同期回路の周期回路及び非同期回路の周期回路には静的タイミング検証を施し、同期回路の非周期回路及び非同期回路の非周期回路には動的タイミング検証を施す、夫々の処理をコンピュータに実行させるためのプログラムを記録して成る。
【００３５】
【発明の実施の形態】
《静的・動的タイミング検証装置の構成》
図１には静的・動的タイミング検証装置の一例が示される。図１において、５は半導体記憶素子等で構成される記憶部、１は対象回路の接続情報、即ち対象回路を構成する素子の種類及び外部入出力ピンを含めたそれらの接続状態に関する情報を記憶部５に格納する接続情報入力部である。２は各素子の遅延情報、タイミング制約情報等を入力し、記憶部５に格納する遅延情報入力部である。３はハザード発生防止の為の回路制約、即ち対象回路内でフリップフロップのクロック端子や非同期セット・リセット端子等ハザード信号が入力されると回路の誤動作を引き起こす可能性の高い端子への入力論理関数を構成する素子の種類及び外部入出力ピンを含めたそれらの接続状態に対する制約情報を記憶部５に格納する回路制約入力部である。４は被検証回路に固有の抵抗・容量・インダクタンスと被検証回路の実装基板上での配線の抵抗・容量・インダクタンスを入力し、記憶部５に格納する負荷情報入力部である。
【００３６】
静的・動的タイミング検証分割部６は、対象回路の中のクロックツリー、任意のカウンタとみなすことができる回路によって構成されたクロック生成回路、内部で生成されたクロックの波形、クロックゲートを構成する素子、クロックの選択論理を構成する素子、及び非同期フリップフロップ・非同期ラッチを認識し記憶部５に格納する。また、静的・動的タイミング検証分割部６は、回路構成が回路制約入力部３で与えられたハザード発生防止の為の回路制約を満たすかどうかを検証し検証結果を記憶部５に格納する。更に静的・動的タイミング検証分割部６は、識別した非同期フリップフロップ・非同期ラッチの中でクロック端子への信号にハザードが発生しないと判定された前記非同期フリップフロップ・非同期ラッチに対してクロック波形を定義し記憶部５に格納するとともに、対象回路の中での動的タイミング検証適用部分を識別し記憶部５に格納し、識別された動的タイミング検証適用部分と対象回路内の論理階層との対応を認識し記憶部５に格納し、各論理階層内での静的タイミング検証適用部分と動的タイミング検証適用部分との構成比を算出し記憶部５に格納する。
【００３７】
７は静的・動的タイミング検証分割部で識別された動的タイミング検証適用部分以外の回路部分のタイミング検証を静的タイミング検証方法にもとづいて行う静的タイミング検証部である。８は静的・動的タイミング検証分割部６で識別された動的タイミング検証適用部分のタイミング検証を動的タイミング検証方法にもとづいて行う動的タイミング検証部である。９は、識別された配置配線後の配置配線情報を伴うクロックツリーに対して、負荷情報入力部３で与えられたパッケージ固有の抵抗・容量・インダクタンスとボード基板上での配線の抵抗・容量・インダクタンスを付加して回路シミュレーションを実行する回路シミュレーション実行部である。
【００３８】
記憶部５には、更に、静的タイミング検証部７及び動的タイミング検証部８の双方から、各々のタイミング検証結果が書き込まれ、回路シミュレーション実行部から、回路シミュレーション実行結果が書き込まれる。また、図１に示すように、この装置には出力部１０が備わっており、記憶部５に記憶されるタイミング検証結果及び回路シミュレーション実行結果が、この出力部１０によって出力される。
【００３９】
この装置の主要部をなす静的・動的タイミング検証分割部６は、クロック情報抽出部１１、回路制約検証部１２、及び回路分割部１３を備えている。そして、回路分割部１３には、動的タイミング検証適用部分認識部１４及び対応論理階層認識部１５が備わっている。
【００４０】
クロック情報抽出部１１は、対象回路の外部クロックピンからクロックの波形等の情報を伝搬する事と、対象回路の中の任意のカウンタにより構成されたクロック生成回路を認識し、クロックゲートを構成する素子、クロックの選択論理を構成する素子を認識し、シミュレーションを実行する事で内部で生成されたクロックの波形を認識する事により、クロック情報付き対象回路情報及び非同期フリップフロップ・非同期ラッチ情報を回路制約検証部８及び記憶部５に出力する。また、記憶部５に記憶されるクロック情報付き対象回路情報及び非同期フリップフロップ・非同期ラッチ情報が、出力部１０によって出力される。
【００４１】
回路制約検証部１２は、回路構成が回路制約入力部３で与えられたハザード発生防止の為の回路制約を満たすかどうかを検証する事により、回路制約検証結果を回路分割部１３及び記憶部５に出力し、更に識別した非同期フリップフロップ・非同期ラッチの中でクロック端子への信号にハザードが発生しないと判定された前記非同期フリップフロップ・非同期ラッチに対してクロック波形を定義する事により、非同期クロック波形情報を回路分割部１３及び記憶部５に出力する。また、記憶部５に記憶される回路制約検証結果及び非同期クロック波形情報が、出力部１０によって出力される。
【００４２】
動的タイミング検証適用部分認識部１４は、対象回路の中での静的タイミング検証適用部分と動的タイミング検証適用部分とを識別し、静的タイミング検証適用部分情報即ち静的タイミング検証適用回路部分に関する情報を記憶部５に出力し、動的タイミング検証適用部分情報即ち動的タイミング検証適用回路部分に関する情報を対応論理階層認識部１５及び記憶部５に出力する。
【００４３】
対応論理階層認識部１５は、識別された動的タイミング検証適用部分と対象回路内の論理階層との対応を認識する事により、対応論理階層情報を記憶部５に出力し、各論理階層内での静的タイミング検証適用部分と動的タイミング検証適用部分との構成比を算出する事で、論理階層構成比情報を記憶部５に出力する。また、記憶部５に記憶される対応論理階層情報及び論理階層構成比情報が、出力部１０によって出力される。この構成比は、設計資産としての再利用可能性の評価に利用される。
【００４４】
静的タイミング検証部８は、記憶部５に出力された静的タイミング検証適用部分情報に基づいてタイミング検証を行い、その結果を記憶部５に出力する。
【００４５】
動的タイミング検証部８は、記憶部５に出力された動的タイミング検証適用部分情報に基づいてタイミング検証を行い、その結果を記憶部５に出力する。
【００４６】
回路シミュレーション実行部９は、記憶部５に出力されたクロック情報付き対象回路情報に基づいて配置配線後結果から配置配線情報を伴うクロック情報付き対象回路情報を認識し、記憶部５に格納されたパッケージ固有の抵抗・容量・インダクタンスとボード基板上での配線の抵抗・容量・インダクタンスに基づいて回路シミュレーションを実行し、その結果を記憶部５に出力する。
【００４７】
《静的・動的タイミング検証装置の処理手順》
図４は、図１の装置による処理の手順を示すフローチャートである。図４に示す様に、処理が開始されると、まずステップＳ１において対象回路の中のクロック情報の認識を行う。
【００４８】
次に、ステップＳ１において抽出したクロック情報を元に、ステップＳ２、Ｓ３、Ｓ４それぞれにおいて、クロックの選択論理を構成する論理素子、周期的でない信号がクロック端子に供給されているフリップフロップやラッチ、クロックゲートを構成している論理素子を認識する。尚、この明細書に添付した図面においてＦＦはフリップフロップ、Ｌａｔｃｈはラッチを意味する。
【００４９】
ステップＳ５では、クロック情報とクロックの選択論理を構成する論理素子の情報を元に、互いに非同期なクロックが供給されているフリップフロップやラッチ間のデータ転送経路を認識する。
【００５０】
ステップＳ６では、クロック情報とクロックの選択論理を構成する論理素子の情報を元に、クロックを生成するかクロックが伝搬する素子のみの回路の接続情報を作成し、クロックの生成箇所の絞り込を行った後、論理シミュレータで新たに構成した回路の接続情報をシミュレーションする事で、クロックの生成箇所でのクロック波形を認識する。
【００５１】
上記ステップＳ１〜Ｓ６の処理は、クロック情報抽出部１１で実行される。
【００５２】
ステップＳ７では、クロック波形情報を元に、周期的でない信号がクロック端子に供給されているフリップフロップやラッチに対して、クロック波形候補を定義する。
【００５３】
ステップＳ８では、クロックゲートを構成している論理素子の回路構成と、トライステートバッファのイネーブル端子へのパス上に現われる論理素子の回路構成が特定の条件を満たしているか調べる。
【００５４】
ステップＳ９では、クロック波形情報とクロックゲートを構成している論理素子の情報を元に、クロックゲート構成している論理素子へのクロック以外の入力信号経路がマルチサイクルパスである可能性があるかの判定を行う。
【００５５】
上記ステップＳ７〜Ｓ９の処理は、回路制約検証部１２で実行される。
【００５６】
ステップＳ１０では、クロック波形情報、クロックゲートを構成している論理素子の情報、上記マルチサイクルパスの情報を元に、静的タイミング検証装置により、ゲーテッドクロック解析を実行する。このステップＳ１０は、静的タイミング検証部７で実行される。
【００５７】
最後にステップＳ１１では、回路構成違反、ゲーテッドクロック解析でのタイミング違反箇所、クロックが定義出来なかった周期的でない信号がクロック端子に供給されているフリップフロップやラッチの情報を元に動的タイミング検証の適用箇所を決定する。このステップＳ１１は、回路分割部１３で実行される。
【００５８】
図５は、図１の装置によって実行される処理手順のステップＳ１の内部処理の流れを全体的に示すフローチャートである。図３に示す様に、処理が開始されると、まずステップＳ１_１において対象回路中の全ネットに対して非周期属性を設定する。
【００５９】
次に、ステップＳ１_２において外部クロックピンからのトレースを行い、２入力以上の素子の入力端子に到達する迄クロック情報を伝搬させる。このように、トレースを実行したネットに対して周期属性を設定する。そのような２入力以上の素子の入力に至るまでのネットには周期性があるのは当然だからである。
【００６０】
ステップＳ１_３においてカウンタ候補の認識を行い、ステップＳ１_４において、入力信号ネットの属性が変化した素子の出力信号ネットの属性演算を実行し、演算結果の属性を当該素子の出力信号ネットに設定する。
【００６１】
次にステップＳ１_５で、認識したカウンタ候補を構成するフリップフロップ及びラッチのクロック端子への入力信号ネットの属性が非周期か否かの判定を行い、非周期であった場合にはステップＳ１_７へ、非周期でなかった場合にはステップＳ１_６へ処理を移行する。
【００６２】
ステップＳ１_６では、構成するフリップフロップ及びラッチのクロック端子への入力信号ネットの属性が非周期でなかったカウンタ候補をカウンタとして認識し直し、当該カウンタを構成する素子の入力・出力信号ネット全てに周期属性を設定し、ステップＳ１_７へ処理を移行する。
【００６３】
ステップＳ１_７では、属性が更新したネットがあるか否かを判定し、あった場合にはステップＳ１_４へ処理を移行し、なければ処理を終了する。
【００６４】
図６は、ステップＳ１_３の内部処理の流れを示すフローチャートである。ステップＳ１_３の処理が開始されると、まずステップＳ１_３_１において対象回路中の全てのフリップフロップ及びラッチを認識し、その集合をＦとする。
【００６５】
次に、ステップＳ１_３_２において対象回路の中のフリップフロップ又はラッチを１つ取り出す。ステップＳ１_３_３でフリップフロップ及びラッチの集合Ｔ_ｆと論理素子の集合Ｔ_ｃを空集合に設定する。
【００６６】
次にステップＳ１_３_４で、当該端子からのバックトレースが全て終了したか否かの判定を行い、終了していた場合にはステップＳ１_３_１０へ、終了していなかった場合にはステップＳ１_３_６へ処理を移行する。
【００６７】
ステップＳ１_３_５において、ステップＳ１_３_２で取り出したフリップフロップ又はラッチのデータ入力端子、セット・リセット端子からバックトレース実行する。バックトレースとは、起点の端子に供給される信号とは逆方向に信号経路を辿ることである。
【００６８】
ステップＳ１_３_６では、バックトレース実行時に到達したネットの属性を識別し、カウンタ属性であった場合はステップＳ１_３_８へ、アンカウンタ属性であった場合にはステップＳ１_３_９へ、カウンタ属性でもアンカウンタ属性でもなかった場合にはステップＳ１_３_７へ処理を移行する。カウンタ属性やアンカウンタ属性とは、ステップＳ１_３_１０において設定される属性のことである。
【００６９】
ステップＳ１_３_７では、バックトレースの到達先が電源・グランド、外部システムリセット端子、ステップＳ１_３_２で取り出したフリップフロップ又はラッチのデータ出力端子、ユーザ指定のフリップフロップ又はラッチのデータ出力端子、或いはフリップフロップ又はラッチと論理素子の成すループの何れかであるか否かを判定し、何れかであった場合にはステップＳ１_３_８へ処理を移行し、なければステップＳ１_３_９へ処理を移行する。
【００７０】
ステップＳ１_３_８では、バックトレース実行中に通過したフリップフロップ及びラッチの集合をＴ_ｆ１とし、集合Ｔ_ｆをＴ_ｆ∪Ｔ_ｆ１と置き換え、バックトレース実行中に通過した論理素子の集合をＴ_ｃ１とし、集合Ｔ_ｃをＴ_ｃ∪Ｔ_ｃ１と置き換えた後、ステップＳ１_３_４へ処理を移行する。ステップＳ１_３_５、Ｓ１_３_６、Ｓ１_３_７、及びＳ１_３_８の繰り返しにより得た集合Ｔ_ｆとＴ_ｃの和集合がカウンタ候補である。
【００７１】
ステップＳ１_３_９では、バックトレース実行中に通過したフリップフロップ及びラッチの集合をＴ_ｆ２とし、集合Ｔ_ｆをＴ_ｆ２と置き換え、バックトレース実行中に通過した論理素子の集合をＴ_ｃ２とし、集合Ｔ_ｃをＴ_ｃ２と置き換えた後、ステップＳ１_３_１０へ処理を移行する。
【００７２】
次にステップＳ１_３_１０において、集合ＦをＦ−Ｔ_ｆと置き換え、Ｓ１_３_４からの分岐で設定されたＴ_ｆ、Ｔ_ｃのネットにはカウンタ属性を設定し、Ｓ１_３_９からの分岐で設定されたＴ_ｆ、Ｔ_ｃのネットにはアンカウンタ属性を設定する。
【００７３】
ステップＳ１_３_１１において、集合Ｆが空か否かを判定し、空でない場合は処理をステップＳ１_３_２へ移行し、空の場合は処理を終了する。このようにして、カウンタ候補となるカウンタ属性の素子が認識される。
【００７４】
図７は、ステップＳ１_４の内部処理の流れを示すフローチャートである。ステップＳ１_４の処理が開始されると、まずステップＳ１_４_１において対象回路から入力信号ネットの属性が変化した素子を１つ取り出す。
【００７５】
次に、ステップＳ１_４_２において取り出した素子が１入力素子か否か判定し、１入力素子の場合はステップＳ１_４_３へ、１入力素子でない場合はステップＳ１_４_４へ処理を移行する。
【００７６】
ステップＳ１_４_３で入力信号ネットの属性を出力信号ネットに設定し、処理をステップＳ１_４_９へ移行する。
【００７７】
ステップＳ１_４_４では、入力信号ネットの属性が変化した素子が（１）ｔｏ_ｃｌｋフラグの立っている素子（出力がクロック入力端子に接続される素子）、（２）ｔｏ_ｄａｔａフラグの立っている素子（出力がデータ入力端子に接続され、ｔｏ_ｃｌｋフラグの立っていない素子）、（３）ＦＦ/Ｌａｔｃｈ、の何れかを判定し、（１）の場合ステップＳ１_４_６へ、（２）の場合ステップＳ１_４_５へ、（３）の場合ステップＳ１_４_３へ処理を移行する。
【００７８】
ステップＳ１_４_６において、入力信号ネットの属性が変化した素子に対して、入力信号ネットの属性が全て周期なら出力信号ネットの属性を周期に設定し、全て非周期ならば出力信号ネットの属性を非周期に設定し、入力信号ネットに少なくとも１つの周期属性ネットと少なくとも１つの非周期属性ネットがある（例えば、少なくとも１入力がクロック信号で、少なくとも１入力がデータである）のなら、出力信号ネットの属性を準周期に設定し、入力信号ネットに少なくとも１つの準周期属性ネットがあり周期属性ネットが１つもないのなら出力信号ネットの属性を準周期に設定し、処理をステップＳ１_４_９へ移行する。
【００７９】
ステップＳ１_４_５では、入力信号ネットの属性が変化した素子の入力信号が帰還路を形成しているか否かを判定し、帰還路を形成している場合にはステップＳ１_４_７へ、そうでなければステップＳ１_４_６へ処理を移行する。
【００８０】
ステップＳ１_４_７では、入力信号ネットの属性が変化した素子の入力信号で帰還路を形成しているネットの属性が周期か否かを判定し、周期の場合はステップＳ１_４_６へ、そうでなければステップＳ１_４_８へ処理を移行する。
【００８１】
ステップＳ１_４_８では、当該素子の出力信号ネットに非周期属性を設定し、処理をステップＳ１_４_９へ移行する。
【００８２】
ステップＳ１_４_９において、入力信号ネットの属性が変化した素子が空か否かを判定し、空でない場合は処理をステップＳ１_４_１へ移行し、空の場合は処理を終了する。
【００８３】
図８は、ステップＳ１_４_４の内部処理の流れを示すフローチャートである。ステップＳ１_４_４の処理が開始されると、まずステップＳ１_４_４_１において対象回路の中のフリップフロップ及びラッチのクロック端子とセット・リセット端子のロジックコーンを取り出す。
【００８４】
次に、ステップＳ１_４_４_２において当該ロジックコーン内の全素子に対してｔｏ_ｃｌｋフラグを立てる。ロジックコーンとは、着目素子がフリップフロップやラッチのデータ出力端子に至るまでの間に存在する論理回路を意味する。
【００８５】
ステップＳ１_４_４_３では、対象回路の中の全てのフリップフロップ及びラッチに対して処理を実行したか否かを判定し、実行されている場合はステップＳ１_４_４_４へ、実行されていない場合はステップＳ１_４_４_１へ処理を移行する。
【００８６】
ステップＳ１_４_４_４において対象回路の中のフリップフロップ及びラッチのデータ端子とロジックコーンを取り出す。
【００８７】
次に、ステップＳ１_４_４_５において当該ロジックコーン内のｔｏ_ｃｌｋフラグの立っていない全素子に対してｔｏ_ｄａｔａフラグを立てる。
【００８８】
ステップＳ１_４_４_６では、対象回路の中の全てのフリップフロップ及びラッチに対して処理を実行したか否かを判定し、実行されていない場合はステップＳ１_４_４_１へ処理を移行し、実行されている場合は処理を終了する。
【００８９】
尚、図８におけるステップＳ１_４_４_４、Ｓ１_４_４_５の処理は図３８の処理に置き換えることが可能である。
【００９０】
図９は、ステップＳ１_４_４_１の内部処理の流れを示すフローチャートである。ステップＳ１_４_４_１の処理が開始されると、先ずステップＳ１_４_４_１_１において対象回路から対象としている素子の対象としている端子を認識する。
【００９１】
次にステップＳ１_４_４_１_２において当該端子へ出力信号ネットが接続されている素子を取り出す。
【００９２】
ステップＳ１_４_４_１_３では、前ステップで取り出した素子の入力端子から、フリップフロップやラッチのデータ出力端子に到達する迄バックトレースを実行し、トレースされた素子とその接続情報から成る回路を構成し、ロジックコーンとして記憶し、処理を終了する。
【００９３】
図１０は、ステップＳ３の内部処理の流れを示すフローチャートである。ステップＳ３の処理が開始されると、ステップＳ３_１において対象回路から非周期属性のネットがクロック端子の入力信号となっているフリップフロップ及びラッチを認識し、当該素子に対して動的タイミング検証フラグを立て処理を終了する。
【００９４】
図１１は、ステップＳ４の内部処理の流れを示すフローチャートである。ステップＳ４の処理が開始されると、ステップＳ４_１においてｔｏ_ｃｌｋフラグ立っている論理素子で出力信号ネットが周期属性である論理素子にゲーテッドクロック１フラグを立て、ロジックコーン内の論理素子で出力信号ネットが準周期属性である論理素子にゲーテッドクロック２フラグを立て、処理を終了する。
【００９５】
図１２は、ステップＳ２の内部処理の流れを示すフローチャートである。ステップＳ２の処理が開始されると、先ずステップＳ２_１において対象回路から合計２本以上の周期属性若くは準周期属性のネットが入力信号となっているものを認識する。
【００９６】
次にステップＳ２_２において、当該素子にクロック選択論理フラグが立っているか否か判定し、立っておればステップＳ２_３へ、立っていなければステップＳ２_４へ処理を移行する。
【００９７】
ステップＳ２_３では、クロックの選択論理フラグの立っている素子がクロック切り替え時にハザードを出力しても問題なく回路が正常動作するよう設計しているか否かのユーザ確認を行い、設計していない場合、当該素子に対して動的タイミング検証フラグを立てる。
【００９８】
ステップＳ２_４では、当該素子がクロックの選択論理を構成しているか否かのユーザ確認を行い、構成している場合はステップＳ２_５へ、構成していない場合はステップＳ２_６へ処理を移行する。
【００９９】
ステップＳ２_６では、対象素子全てをチェックしたか否かを判定し、チェックしていなければ処理をステップＳ２_１へ移行し、チェックしていれば処理を終了する。
【０１００】
図１３は、ステップＳ２_２の内部処理の流れを示すフローチャートである。ステップＳ２_２の処理が開始されると、先ずステップＳ２_２_１において対象回路から合計２本以上の周期属性若くは準周期属性のネットが入力信号となっている素子を認識する。
【０１０１】
次にステップＳ２_２_２において、前記認識した素子が、当該素子がマルチプレクサ等の選択論理素子であって、周期属性若くは準周期属性のネットが被選択信号である選択論理を構成しているか否かを判定し、前記選択論理を構成していれば、ステップＳ２_２_３へ、前記選択論理を構成していなければ、ステップＳ２_２_４へ処理を移行する。
【０１０２】
ステップＳ２_２_３では、当該選択論理を構成する素子にクロックの選択論理フラグを立てる。
【０１０３】
ステップＳ２_２_４では、当該素子の準周期入力端子からフリップフロップ又はラッチのデータ出力端子、或いは、周期属性と非周期属性のネットの両方が入力端子に接続されている素子に、到達する迄バックトレースを実行し、トレースされた素子とその接続情報から成る回路を構成する。
【０１０４】
ステップＳ２_２_５では、バックトレースでフリップフロップ又はラッチのデータ出力端子に到達したか否かを判定し、到達した場合はステップＳ２_２_６へ、到達していなかった場合は、ステップＳ２_２_７へ処理を移行する。
【０１０５】
次にステップＳ２_２_６において、当該回路を構成する各素子にクロックの選択論理候補フラグを立てる。
【０１０６】
次にステップＳ２_２_７では、当該回路の中の各非周期入力信号ネットに対してフリップフロップ又はラッチのデータ出力端子に到達する迄バックトレースを実行し、各々論理関数を構成し、論理和及び論理積を演算する事で各非周期入力信号の排他性を吟味する。
【０１０７】
ステップＳ２_２_９では、当該各非周期入力信号が排他的か否かを判定し、排他的でなければステップＳ２_２_６へ、排他的であれば処理をステップＳ２_２_３へ移行する。
【０１０８】
ステップＳ２_２_１０では、対象素子全てをチェックしたか否かを判定し、チェックしていなければ処理をステップＳ２_２_１へ移行し、チェックしていれば処理を終了する。
【０１０９】
図１４は、ステップＳ６の内部処理の流れを示すフローチャートである。ステップＳ６の処理が開始されると、先ずステップＳ６_１において対象回路からカウンタを構成する素子、ゲーテッドクロック１フラグが立っている素子、及びゲーテッドクロック２フラグが立っている素子から成る素子のネットリストを構成する。
【０１１０】
次にステップＳ６_２において、クロック波形生成の為に論理シミュレータでダンプすべきネットリスト内のポイントを決定する。
【０１１１】
ステップＳ６_３では、周期属性のネットが入力されていて準周期属性のネットが出力信号となっている素子で、クロックの選択論理フラグが立っていない素子の入力信号を周期属性が伝搬するよう固定する。
【０１１２】
ステップＳ６_４では、周期属性のネットが入力されていて準周期属性のネットが出力信号となっている素子で、クロックの選択論理フラグが立っていない素子がなくなったか否かを判定し、なくなっている場合はステップＳ６_５へ、なくなっていない場合は再びステップＳ６_４へ処理を移行する。
【０１１３】
ステップＳ６_５では、外部クロック端子、セット・リセット信号、クロックの選択論理フラグの立っている素子への入力パターンを用いて、論理シミュレーションを実行し、ダンプすべきポイントでのシミュレーション結果から波形情報を作成する。
【０１１４】
ステップＳ６_６では、ゲーテッドクロック１フラグが立っており入力に非周期属性ネットが接続されていない素子に対して、最小パルス幅の入力信号をクロックとして、その他の入力信号が、入力信号を出力しているフリップフロップまたはラッチに供給されているクロックからみてマルチサイクルパスとなっていないか判定し、なっていれば何サイクル転送かを認識し、処理を終了する。尚、このステップＳ６_６は省略可能である。前記ステップＳ６_５のシミュレーションで得られた波形情報を利用しても済むからである。
【０１１５】
図１５は、ステップＳ６_２の内部処理の流れを示すフローチャートである。ステップＳ６_２の処理が開始されると、先ずステップＳ６_２_１においてｔｏ_ｃｌｋフラグの立っている２入力以上の素子を取り出す。
【０１１６】
次にステップＳ６_２_２において、当該素子にゲーテッドクロック１フラグが立っているか否かを判定し、立っているならステップＳ６_２_３へ、立っていないならステップＳ６_２_４へ処理を移行する。
【０１１７】
ステップＳ６_２_３では、当該素子の入力信号と出力信号をゲーテッドクロック解析用ダンプポイントとし、ステップＳ６_２_７へ処理を移行する。
【０１１８】
ステップＳ６_２_４において、当該素子にゲーテッドクロック２フラグが立っているか否かを判定し、立っているならステップＳ６_２_５へ、立っていないならステップＳ６_２_６へ処理を移行する。
【０１１９】
ステップＳ６_２_５で、当該素子の入力信号ネットの属性が周期ならその周期属性の入力信号をクロック波形生成用のダンプポイントとし、ステップＳ６_２_６へ処理を移行する。
【０１２０】
ステップＳ２_６_８において、対象となる素子全てのチェックが終了したか否かの判定を行い、終了している場合はステップＳ６_２_７へ、終了していない場合はステップＳ６_２_１へ処理を移行する。
【０１２１】
ステップＳ６_２_６において、ｔｏ_ｃｌｋフラグの立っている２入力以上の素子へ出力信号が伝搬しない、周期若くは準周期属性ネットが出力端子に接続されているフリップフロップ及びラッチの出力信号をダンプポイントとし、処理を終了する。
【０１２２】
図１６は、ステップＳ７の内部処理の流れを示すフローチャートである。ステップＳ７の処理が開始されると、先ずステップＳ７_１において対象回路から、ロジックコーンへ信号を出力している全てのフリップフロップ及びラッチのクロック端子につながる信号ネットが周期属性若くは準周期属性である、非同期フリップフロップ及び非同期ラッチのクロック端子及びセット・リセット端子へのロジックコーンを認識する。
【０１２３】
次にステップＳ７_２において、当該ロジックコーンへ信号を出力している全てのフリップフロップ及びラッチのクロック端子への信号の中で動作周波数が最大のものが唯１つか否かを判定し、唯１つならステップＳ７_３へ、２つ以上あるならステップＳ７_４へ処理を移行する。
【０１２４】
ステップＳ７_３では、最大動作周波数のクロックが供給されているフリップフロップ若くはラッチのデータ出力端子に、最大動作周波数の２倍の周期を持つデューティ５０％の反転・非反転クロックを設定し、信号属性演算Ｓ１_４を実行し、クロックゲートの認識Ｓ４を実行した後、処理をＳ７_５へ移行する。
【０１２５】
ステップＳ７_５では、新たに定義したクロックが供給されるフリップフロップ又はラッチと、このフリップフロップ又はラッチとデータの授受を行うフリップフロップ又はラッチとのデータ転送経路に対して、セットアップ条件・ホールド条件が最も厳しくなるクロックは反転なのか非反転なのかを調査し、結果を記憶部６に格納しておき、処理をステップＳ７_４へ移行する。
【０１２６】
ステップＳ７_４において、非同期フリップフロップ及び非同期ラッチのクロック端子へのロジックコーン全てのチェックが終了したか否かの判定を行い、終了していない場合は処理をステップＳ７_１へ移行し、終了している場合は処理を終了する。
【０１２７】
図１７は、ステップＳ５の内部処理の流れを示すフローチャートである。ステップＳ５の処理が開始されると、先ずステップＳ５_１では、データ出力信号ネットの属性が周期若くは準周期のフリップフロップ及びラッチのクロック端子からデータ出力端子への素子内パスの通過を認める。そして、外部クロック端子から、前記素子内通過が認められたところのゲーテッドクロック１フラグやゲーテッドクロック２フラグの立っている素子のトレースによるクロック情報の伝搬を行い、クロックの選択論理の情報を元に、起こり得るクロックの選択論理の出力クロックの組み合わせの数だけ、各ダンプポイント間をつなぐグラフを構成する。
【０１２８】
次にステップＳ５_２において、各グラフに対してグラフの頂点がクロック供給源となっているフリップフロップ及びラッチを認識し、当該グラフの頂点をクロック供給源としないフリップフロップ及びラッチとのデータ転送経路があればそれを非同期転送パスとして抽出し、処理を終了する。
【０１２９】
図１８は、ステップＳ８の内部処理の流れを示すフローチャートである。ステップＳ８の処理が開始されると、先ずステップＳ８_１においてゲーテッドクロック２フラグが立っている素子を取り出す。
【０１３０】
次にステップＳ８_２において、当該素子が２入力素子、或いは３入力素子で後段に１入力素子が接続されている状態であるかの何れかであるか否かを判定し、何れでもない場合はＳ８_４へ、何れかである場合はＳ８_３へ処理を移行する。
【０１３１】
ステップＳ８_４では、当該素子に動的タイミング検証フラグを立て、処理をステップＳ８_３に移行する。
【０１３２】
ステップＳ８_３において、全てのゲーテッドクロック２フラグが立っている素子のチェックが終了したか否かを判定し、未終了の場合は処理をＳ８_１へ移行し、終了している場合は処理を終了する。
【０１３３】
尚、上記説明においては、回路制約入力部３に、クロックゲートの回路構成に対する回路制約として、ゲーテッドクロック２フラグが立っている素子が２入力素子であるか、或いは３入力素子であり後段に１入力素子が接続されている状態である事を与えていることを前提としている。
【０１３４】
図１９は、ステップＳ８の内部処理のもう１つの流れを示すフローチャートである。ステップＳ８の処理が開始されると、先ずステップＳ８_５においてトライステート素子を取り出す。次にステップＳ８_６において、当該素子のイネーブル端子へのロジックコーンを認識する。
【０１３５】
ステップＳ８_７では、当該ロジックコーンへの入力信号ネットに周期若くは準周期属性のネットが存在するか否かを判定し、存在した場合はステップＳ８_８へ、存在しなかった場合はステップＳ８_９へ処理を移行する。
【０１３６】
ステップＳ８_８において、回路構成としてトライステート素子の出力信号を毎サイクルラッチする構成となっていないかユーザ確認し、毎サイクルラッチする構成となっている場合は、当該トライステート素子に動的タイミング検証フラグを立てる。
【０１３７】
ステップＳ８_９において、当該ロジックコーン内に２入力以上の論理素子が存在するか否かを判定し、存在した場合はステップＳ８_１０へ、存在しなかった場合はステップＳ８_１１へ処理を移行する。
【０１３８】
ステップＳ８_１０で、当該トライステート素子に動的タイミング検証フラグを立て、処理をステップＳ８_１１へ移行する。
【０１３９】
ステップＳ８_１１において、対象回路内の全てのトライステート素子のチェックが終了したか否かの判定を行い、終了していない場合は処理をＳ８_５へ移行し、終了している場合は処理を終了する。
【０１４０】
尚、上記説明において、回路制約入力部３に、トライステート素子のイネーブル端子へのロジックコーンの回路構成に対する回路制約として、当該ロジックコーン内に２入力以上の論理素子が存在してはならず、トライステート素子の出力信号がバスホルダ回路（バスリピータ回路例えばインバータ２個で構成されたラッチ回路）による出力信号ネットでのデータ保持を行わなくてもハイインピーダンスとならない事を与えている事を前提としている。
【０１４１】
図３９には、前記ステップＳ８の内部処理の更に別のフローチャートを示す。ステップＳ８の処理が開始されると、先ずステップＳ８_１２においてフリップフロップ及びラッチを取り出す。次にステップＳ８_１３において、当該素子のセット・リセット端子へのロジックコーンを認識する。
【０１４２】
ステップＳ８_１４では、当該素子のセット・リセット端子に接続されているネットの属性が非周期か否かを判定し、非周期だった場合はステップＳ８_１５へ、非周期でなかった場合はステップＳ８_１７へ処理を移行する。
【０１４３】
ステップＳ８_１５において、当該ロジックコーン内に２入力以上の論理素子が存在するか否かを判定し、存在した場合はステップＳ８_１７へ、存在しなかった場合はステップＳ８_１６へ処理を移行する。
【０１４４】
ステップＳ８_１６で、当該フリップフロップ又はラッチに動的タイミング検証フラグを立て、処理をステップＳ８_１７へ移行する。
【０１４５】
ステップＳ８_１７において、対象回路内の全てのフリップフロップ及びラッチに対してのチェックが終了したか否かの判定を行い、終了していない場合は処理をＳ８_１２へ移行し、終了している場合は処理を終了する。
【０１４６】
尚、図３９の説明は、回路制約入力部３に、フリップフロップ及びラッチのセット・リセット端子へのロジックコーンの回路構成に対する回路制約として、当該素子のセット・リセット端子に接続されているネットの属性が非周期以外であるか、ロジックコーンが０個以上の１入力素子のみで構成されている事を与えているのを前提としている。
【０１４７】
図２０は、ステップＳ９の内部処理の流れを示すフローチャートである。ステップＳ９の処理が開始されると、先ずステップＳ９_１においてゲーテッドクロック２フラグが立っていて、且つ少なくとも１本の非周期属性信号が入力信号ネットにつながっている素子を取り出す。
【０１４８】
ステップＳ９_２において、当該素子への入力信号の中で属性が準周期なものは、バックトレースを行って周期属性のネットを抽出し、その周期属性信号と置き換え、入力周期属性信号の周期をＴ_周期とする。
【０１４９】
ステップＳ９_３において、当該素子への入力信号の中で属性が非周期なものは、フリップフロップ及びラッチのデータ出力端子に到達する迄バックトレースを行って、到達先のフリップフロップ及びラッチのクロック端子への信号を取り出す。
【０１５０】
ステップＳ９_４において、取り出した信号が周期属性か否かを判定し、周期属性の場合はステップＳ９_５へ、周期属性でない場合はステップＳ９_６へ処理を移行する。
【０１５１】
ステップＳ９_５では、この周期属性の信号の周期をＴ_非周期とし、処理をステップＳ９_９へ移行する。ステップＳ９_４において、取り出した信号が準周期属性か否かを判定し、準周期属性の場合はステップＳ９_７へ、非周期属性の場合はステップＳ９_８へ処理を移行する。
【０１５２】
ステップＳ９_７では、この準周期属性に対して、バックトレースを行って周期属性のネットを抽出し、その周期属性信号と置き換え、この周期属性信号の周期をＴ_非周期とし、処理をステップＳ９_９へ移行する。
【０１５３】
ステップＳ９_９では、Ｔ_周期とＴ_非周期の組み合わせに対して、２×Ｔ_非周期≧Ｔ_周期が成り立つかを判定し、それが成り立つＴ_非周期を定めている入力非周期信号経路、即ち、ステップＳ９_１で取り出した素子の非周期属性信号とステップＳ９_３でバックトレースして到達したフリップフロップ及びラッチとの間のデータ転送経路は、マルチサイクルパスの可能性がある。この為、ユーザ確認を要求し、処理をステップＳ９_８へ移行する。
【０１５４】
ステップＳ９_８において、対象回路内の全てのゲーテッドクロック２フラグが立っている少なくとも１本の非周期属性信号が入力信号ネットにつながっている素子のチェックが終了したか否かの判定を行い、終了していない場合は処理をＳ９_１へ移行し、終了している場合は処理を終了する。
【０１５５】
図２１は、ステップＳ１０の内部処理の流れを示すフローチャートである。ステップＳ１０の処理が開始されると、先ずステップＳ１０_１においてゲーテッドクロック１フラグが立っている素子を取り出す。
【０１５６】
ステップＳ１０_２において、当該素子に対して同じ波形の周期属性信号が２本以上入力されているか否かを判定し、入力されている場合は処理をステップＳ１０_３へ、入力されていない場合はステップＳ１０_４へ処理を移行する。
【０１５７】
ステップＳ１０_３において、当該素子に動的タイミング検証フラグを立て、処理をステップＳ１０_７へ移行する。前記ステップＳ１０_２の判定において同じ波形の周期属性信号が２本以上入力されていると判断されれば、ハザードの虞があるからである。
【０１５８】
ステップＳ１０_４において、ゲーテッドクロック解析用ダンプポイントの論理シミュレーション結果を元にセットアップ制約チェック、ホールド制約チェックの何れか若くは両方を実施すべきかを決定する。
【０１５９】
ステップＳ１０_５で、静的タイミング検証によるゲーテッドクロック解析を実行する。ステップＳ１０_６において、セットアップ制約違反又はホールド制約違反があるか否かを判定し、あった場合はステップＳ１０_３へ、なかった場合はステップＳ１０_７へ処理を移行する。
【０１６０】
ステップＳ１０_７では、対象回路内の全てのゲーテッドクロック１フラグが立っている素子のチェックが終了したか否かの判定を行い、終了していない場合は処理をＳ１０_１へ移行し、終了している場合は処理を終了する。
【０１６１】
図２２は、ステップＳ１０の内部処理のもう１つの流れを示すフローチャートである。ステップＳ１０の処理が開始されると、先ずステップＳ１０_８においてゲーテッドクロック２フラグが立っている素子を取り出す。
【０１６２】
ステップＳ１０_９において、当該素子への入力信号の中で属性が準周期なものは、バックトレースを行って周期属性信号を抽出し、この周期属性信号と置き換える。
【０１６３】
ステップＳ１０_１０において、当該素子に対して同じ波形の周期属性信号が２本以上入力されているか否かを判定し、入力されている場合は処理をステップＳ１０_１１へ、入力されていない場合はステップＳ１０_１２へ処理を移行する。
【０１６４】
ステップＳ１０_１１において、当該素子に動的タイミング検証フラグを立て、処理をステップＳ１０_１４へ移行する。前記ステップＳ１０_１０の判定において同じ波形の周期属性信号が２本以上入力されていると判断されれば、ハザードの虞があるからである。
【０１６５】
ステップＳ１０_１２において、ゲーテッドクロック解析用ダンプポイントの論理シミュレーション結果を元にセットアップ制約チェック、ホールド制約チェックの何れか若くは両方を実施すべきかを決定する。
【０１６６】
ステップＳ１０_１３で、静的タイミング検証装置によるゲーテッドクロック解析を実行する。ステップＳ１０_１４において、セットアップ制約違反又はホールド制約違反があるか否かを判定し、あった場合はステップＳ１０_１１へ、なかった場合はステップＳ１０_１５へ処理を移行する。
【０１６７】
ステップＳ１０_１５では、対象回路内の全てのゲーテッドクロック２フラグが立っている素子のチェックが終了したか否かの判定を行い、終了していない場合は処理をＳ１０_８へ移行し、終了している場合は処理を終了する。
【０１６８】
図２３は、ステップＳ１１の内部処理の流れを示すフローチャートである。ステップＳ１１の処理が開始されると、先ずステップＳ１１_１において動的タイミング検証フラグから動的タイミング検証適用回路を認識する。
【０１６９】
次にステップＳ１１_２において積集合が空でない動的タイミング検証適用回路の和集合を構成する。ステップＳ１１_３において、各和集合と各論理階層との積集合を演算する。
【０１７０】
ステップＳ１１_４において、対象回路内の全ての動的タイミング検証適用回路のチェックが終了したか否かを判定し、終了している場合は処理をステップＳ１１_５へ、終了していない場合はステップＳ１１_１へ処理を移行する。
【０１７１】
ステップＳ１１_５では、各論理階層における動的タイミング検証適用回路の割合を算出する。ステップＳ１１_６において、その割合が１００％になる論理階層があるか否かを判定し、あった場合はステップＳ１１_７へ、なかった場合はステップＳ１１_８へ処理を移行する。
【０１７２】
ステップＳ１１_７では、当該論理階層処理を動的タイミング検証適用階層とし、処理をステップＳ１１_８へ移行する。
【０１７３】
ステップＳ１１_８で、動的タイミング検証装置で動的タイミング検証を実行した後、処理を終了する。
【０１７４】
尚、前述の図２３は、図２０のステップＳ１０_５とＳ１０_６、及び図２１のステップＳ１０_１２とＳ１０_１３を実行しない場合の処理フローを示している。図２０のステップＳ１０_５とＳ１０_６、及び図２１のステップＳ１０_１２とＳ１０_１３を実行する場合には、図２３のステップＳ１１_１_５、Ｓ１１_１_６、Ｓ１１_１_７、及びＳ１１_１_８を実行しないことになる。
【０１７５】
図２４は、ステップＳ１１_１の内部処理の流れを示すフローチャートである。ステップＳ１１_１の処理が開始されると、先ずステップＳ１１_１_１において動的タイミング検証フラグが立っている素子を取り出す。
【０１７６】
ステップＳ１１_１_２において、当該素子が（１）フリップフロップ若しくはラッチ、又はフリップフロップ若しくはラッチのデータ入力端子或いはセット・リセット端子へのロジックコーン内の論理素子、（２）フリップフロップ又はラッチのクロック端子へのロジックコーン内の論理素子、の何れであるかを判定し、（１）の場合はステップＳ１１_１_３へ、（２）の場合はステップＳ１１_１_４へ処理を移行する。
【０１７７】
ステップＳ１１_１_３において、トレース実行時にフリップフロップ及びラッチ内のパスであるのデータ出力端子とセット・リセット端子間のパスは通過可能として、当該素子の入力端子からフリップフロップのデータ出力端子に到達する迄バックトレースを実行し、当該素子の出力端子からフリップフロップのデータ入力端子に到達する迄フォワードトレースを実行する。これらのトレースで通過した素子と到達先のフリップフロップを動的タイミング検証適用回路とした後、処理をステップＳ１１_１_９へ移行する。
【０１７８】
ステップＳ１１_１_４では、当該素子に対してステップＳ１１_１_３を実行して得られるものを動的タイミング検証適用回路１とし、これと当該素子の出力信号をトレースにより伝搬させ到達したクロック端子を備えるフリップフロップ及びラッチに対してステップＳ１１_１_３を実行して得られるものとの和集合を動的タイミング検証適用回路２とする。
【０１７９】
ステップＳ１１_１_５では、動的タイミング検証適用回路１に対して動的タイミング検証を実行する。ステップＳ１１_１_６では、動的タイミング検証適用回路１における素子の出力信号にハザードが発生したか否かを判定し、発生した場合はステップＳ１１_１_７へ、発生しなかった場合はステップＳ１１_１_８へ処理を移行する。
【０１８０】
ステップＳ１１_１_７では、動的タイミング検証適用回路２のみを動的タイミング検証適用回路とし、処理をＳ１１_１_９へ移行する。
【０１８１】
ステップＳ１１_１_８では、動的タイミング検証適用回路１及び２を削除する。
【０１８２】
ステップＳ１１_１_９では、対象回路内の全ての動的タイミング検証フラグが立っている素子のチェックが終了したか否かの判定を行い、終了していない場合は処理をＳ１１_１_１へ移行し、終了している場合は処理を終了する。
【０１８３】
図２５は、ステップＳ１１_８の内部処理の流れを示すフローチャートである。ステップＳ１１_８の処理が開始されると、ステップＳ１１_８_１において積集合が空でない動的タイミング検証適用回路の和集合の構成素子とその接続情報を構成し、入力パターンを用いて動的タイミング検証を実行した後、処理を終了する。
【０１８４】
図２６は、ステップＳ１１_８の内部処理の流れの別の例を示すフローチャートである。ステップＳ１１_８の処理が開始されると、ステップＳ１１_８_１において、動的タイミング検証適用回路を構成する素子とネット、動的タイミング検証適用回路内のフリップフロップ及びラッチのクロック端子へのクロックツリー上の全素子及び全ネットに遅延情報を与える。
【０１８５】
次にステップＳ１１_８_２において、動的タイミング検証適用回路の境界を構成するフリップフロップとの間でデータ授受を行う動的タイミング検証非適用回路内のフリップフロップ及びラッチに対して、データ転送が可能となるよう、動的タイミング検証適用回路の境界を構成するフリップフロップとの間でデータ授受を行う動的タイミング検証非適用回路内のフリップフロップ及びラッチへのクロックツリー上における全素子及び全ネットの遅延値を調整する。ステップＳ１１_８_３で動的タイミング検証を実行した後、処理を終了する。
【０１８６】
《具体的な対象回路に対する処理例》
次に、対象回路の一例を挙げて、カウンタ候補の認識Ｓ１_３による処理の具体例について説明する。図２７は、対象回路の一例を示す回路図である。この対象回路は、外部からデータ信号が入力される外部入力ピンＤＩＮ、外部からイネーブル信号が入力される外部入力ピンＥＮＡＢＬＥ、外部からリセット信号が入力される外部入力ピンＲＳＴ、外部からクロック信号が入力される外部入力ピンＣＬＫ、及び、外部へデータ信号を出力する外部出力ピンＤＯＵＴを備えている。
【０１８７】
素子Ｇ１、Ｇ２、Ｇ３、Ｇ４は、何れも論理素子であり、素子ＦＦ１、ＦＦ２、ＦＦ３、ＦＦ４、ＦＦ５、ＦＦ６は、何れもフリップフロップである。先ずステップＳ１_３_１により、対象回路の中のフリップフロップ及びラッチの集合Ｆ＝{ＦＦ１、ＦＦ２、ＦＦ３、ＦＦ４、ＦＦ５、ＦＦ６}のテーブルが記憶部５に格納される。
【０１８８】
次にステップＳ１_３_２で、ＦＦ１を集合Ｆから取り出す。ステップＳ１_３_３では、ステップＳ１_３_４ 以降で実行されるトレースによりトレースされたフリップフロップ及びラッチの集合をＴ_ｆ、論理素子の集合をＴ_ｃとし、各々空集合に設定し、記憶部５に格納する。
【０１８９】
ステップＳ１_３_５でＦＦ１のデータ入力端子ｄからバックトレースを実行すると、素子Ｇ１、ＦＦ２、ＦＦ１のデータ出力端子ｑに到達し、ＦＦ１のリセット端子ｓｄｎからバックトレースを実行すると、ユーザ指定のフリップフロップＦＦ３に到達する。
【０１９０】
ステップＳ１_３_６では前記で到達したネットの属性による分岐を実行すると、カウンタ属性でもアンカウンタ属性でもないので、ステップＳ１_３_７へ処理を移行する。
【０１９１】
ステップＳ１_３_７で到達先による分岐を実行すると、到達先がＦＦ１のデータ出力端子ｑとユーザ指定のフリップフロップＦＦ３であるので、ステップＳ１_３_８へ処理を移行する。
【０１９２】
次にステップＳ１_３_８において、Ｔ_ｆ＝{ＦＦ１、ＦＦ２}、Ｔ_ｃ＝{Ｇ１}とし、記憶部５に格納する。
【０１９３】
ステップＳ１_３_１０では、Ｆ＝{ＦＦ３、ＦＦ４、ＦＦ５、ＦＦ６}とし、Ｔ_ｆとＴ_ｃの成すネットに対してカウンタ属性を設定し、記憶部５に格納する。ステップＳ１_３_１１でＦが空集合ではないので、処理をステップＳ１_３_２へ移行する。
【０１９４】
次にステップＳ１_３_２で、ＦＦ５をＦから取り出す。ステップＳ１_３_３では、ステップＳ１_３_５ 以降で実行されるトレースによりトレースされたフリップフロップ及びラッチの集合をＴ_ｆ、論理素子の集合をＴ_ｃとし、各々空集合に設定し、記憶部５に格納する。
【０１９５】
ステップＳ１_３_５でＦＦ５のデータ入力端子ｄからバックトレースを実行すると、素子Ｇ３、ＦＦ５のデータ出力端子ｑに到達するパス、素子Ｇ３、ＦＦ４、Ｇ２、ＦＦ５のデータ出力端子ｑに到達するパス、及び素子Ｇ３、ＦＦ４、Ｇ２、ＦＦ１の出力端子に接続されているカウンタ属性ネットに到達するパスを認識する。
【０１９６】
ステップＳ１_３_６やステップＳ１_３_７での分岐を実行し、ステップＳ１_３_７へ処理を移行する。ステップＳ１_３_８において、Ｔ_ｆ＝{ＦＦ４、ＦＦ５}、Ｔ_ｃ＝{Ｇ３、Ｇ２}とし、記憶部５に格納する。
【０１９７】
ステップＳ１_３_１０では、Ｆ＝{ＦＦ３、ＦＦ６}とし、Ｔ_ｆとＴ_ｃの成すネットに対してカウンタ属性を設定し、記憶部５に格納する。ステップＳ１_３_１１でＦが空集合ではないので、処理をステップＳ１_３_２へ移行する。
【０１９８】
ＦＦ３及びＦＦ６に対して、Ｓ１_３を実行すると、各々バックトレースの到達先が外部端子であるため、Ｓ１_３_９を介してＳ１_３_１０に処理が移行し、アンカウンタ属性を設定し、処理を終了する。
【０１９９】
次に、別の対象回路の一例を挙げて、属性演算Ｓ１_４による処理の具体例について説明する。図２８は、対象回路の一例を示す回路図である。この対象回路は、素子ＦＦ１、ＦＦ２のｃｐ端子に接続されているネットは周期属性であり、素子Ｇ１のａ１端子に接続されているネットは周期属性であり、素子Ｇ１のａ２端子に接続されているネットは非周期属性であり、素子Ｇ２のａ２端子に接続されているネットは周期属性である。
【０２００】
素子Ｇ１、Ｇ２は、何れも論理素子であり、素子ＦＦ１、ＦＦ２、ＦＦ３は、何れもフリップフロップである。素子Ｇ１にはｔｏ_ｃｌｋフラグが、素子Ｇ２にはｔｏ_ｄａｔａフラグが立っている。また、図面の素子Ｇ１のａ１端子及びＧ２のａ２端子への入力信号の属性が変化した状態だとする。
【０２０１】
先ずステップＳ１_４_１で入力信号属性が変化した素子Ｇ１、Ｇ２を認識し、記憶部５へ格納する。ステップＳ１_４_２では、素子Ｇ１及びＧ２が１入力素子であるか否かの判定を行い、１入力素子ではないので、ステップＳ１_４_４へ処理を移行する。
【０２０２】
ステップＳ１_４_４では、素子Ｇ１及びＧ２のフラグ判定を行い、素子Ｇ１はｔｏ_ｃｌｋフラグが立っているのでステップＳ１_４_６へ、素子Ｇ２はｔｏ_ｄａｔａフラグが立っているのでステップＳ１_４_５へ処理を移行する。
【０２０３】
ステップＳ１_４_５では、素子Ｇ２の入力信号で帰還路を形成しているものがあるか否かの判定を行い、素子Ｇ２のａ３端子への信号が帰還路を形成しているので、処理をステップＳ１_４_７へ移行する。
【０２０４】
次にステップＳ１_４_７では、帰還路を形成している素子Ｇ２のａ３端子に接続されていネットｎｅｔ１がクロック情報の認識Ｓ１の最初のステップＳ１_１において、非周期属性に設定されているので、処理をＳ１_３_８へ移行する。
【０２０５】
ステップＳ１_３_８において、素子Ｇ２の出力信号が接続されているネットｎｅｔ３に非周期属性を設定し、記憶部５へ格納し、処理をステップＳ１_４_９へ移行する。
【０２０６】
一方、ステップＳ１_４_６では、素子Ｇ１のａ１入力端子に接続されているネットが周期属性であり、ａ２入力端子に接続されているネットが非周期属性であるので、素子Ｇ１の出力信号が接続されているネットｎｅｔ２に準周期属性を設定し、記憶部５へ格納し、処理をステップＳ１_４_９へ移行する。
【０２０７】
ステップＳ１_４_９において、データ入力信号ネットの属性が変化した素子があるか否かを判定し、当回路例の場合、データ入力信号ネットの属性が変化した素子はないので、処理を終了する。
【０２０８】
次に、別の対象回路の一例を挙げて、属性演算Ｓ１_４による処理の具体例について説明する。図２９は、対象回路の一例を示す回路図である。この対象回路は、素子Ｇ１のａ２端子、素子Ｇ２のａ１端子、素子Ｇ３のａ１及びａ２端子、及び素子Ｇ６のａ１及びａ２端子への信号はフリップフロップ又はラッチのデータ出力端子からの信号である。
【０２０９】
素子Ｇ１、Ｇ２、Ｇ３、Ｇ４、Ｇ５、Ｇ６は、何れも論理素子であり、素子ＦＦ１、ＦＦ２は、何れもフリップフロップでる。
【０２１０】
先ずステップＳ１_４_４_１でＦＦ１及びＦＦ２のｃｐ端子へのロジックコーンを認識し、記憶部５へ格納する。当回路図の場合、 ＦＦ１及びＦＦ２のｃｐ端子へのロジックコーンは、Ｇ１、Ｇ２、Ｇ３からなる回路である。
【０２１１】
ステップＳ１_４_４_２で、素子Ｇ１、Ｇ２、及びＧ３にｔｏ_ｃｌｋフラグを立て、記憶部５へ格納する。
【０２１２】
ステップＳ１_４_４_３で対象回路内の全てのフリップフロップ及びラッチに対して処理を実行したか否か判定し、全てに対して実行しているので、処理をステップＳ１_４_４_４へ移行する。
【０２１３】
ステップＳ１_４_４_５でＦＦ２のｄ端子へのロジックコーンを認識すし、記憶部５へ格納する。当回路図の場合、 ＦＦ２のｄ端子へのロジックコーンは、Ｇ３、Ｇ４、Ｇ５、Ｇ６からなる回路である。
【０２１４】
次にステップＳ１_４_４_６で、ｔｏ_ｃｌｋフラグの立っていない素子Ｇ４、Ｇ５、Ｇ６に対してｔｏ_ｄａｔａフラグを立て、記憶部５へ格納する。
【０２１５】
ステップＳ１_４_４_３で対象回路内の全てのフリップフロップ及びラッチに対して処理を実行したか否か判定し、全てに対して実行しているので、処理を終了する。
【０２１６】
次に、別の対象回路の一例を挙げて、属性演算Ｓ１_４_４_１による処理の具体例について説明する。図３０は、対象回路の一例を示す回路図である。この対象回路は、素子Ｇ３のａ１及びａ２端子、素子Ｇ５のａ１端子、及び素子Ｇ６のａ１及びａ２端子への信号はフリップフロップ又はラッチのデータ出力端子からの信号である。
【０２１７】
素子Ｇ１、Ｇ２、Ｇ３、Ｇ４、Ｇ５、Ｇ６は、何れも論理素子である。先ずステップＳ１_４_４_１_１で素子Ｇ１のａ１端子を認識し、記憶部５へ格納する。
【０２１８】
ステップＳ１_４_４_１_２で、素子Ｇ１のａ１端子に接続されている素子Ｇ２を認識し、記憶部５へ格納する。
【０２１９】
ステップＳ１_４_４_１_３で素子Ｇ２のａ１端子からバックトレースを実行し素子Ｇ３を取出す。素子Ｇ３のａ１及びａ２端子への信号はフリップフロップ又はラッチのデータ出力端子からの信号である為、素子Ｇ２のａ２端子からバックトレースを実行し素子Ｇ４を取出す。素子Ｇ４のａ１端子への信号はフリップフロップ又はラッチのデータ出力端子からの信号である為、素子Ｇ４のａ２端子からバックトレースを実行し素子Ｇ５を取出す。素子Ｇ５のａ１端子への信号はフリップフロップ又はラッチのデータ出力端子からの信号である為、素子Ｇ４のａ３端子からバックトレースを実行し素子Ｇ６を取出す。素子Ｇ６のａ１端子への信号はフリップフロップ又はラッチのデータ出力端子からの信号である為、バックトレースを終了し、トレース結果により得られた素子Ｇ２、Ｇ３、Ｇ４、Ｇ５、Ｇ６から成る回路を構成し、Ｇ１のａ１端子へのロジックコーンとして記憶部５へ格納し、処理を終了する。
【０２２０】
次に、別の対象回路の例を挙げて、クロック選択論理フラグＳ２_２による処理の具体例について説明する。図３１は、対象回路の一例を示す回路図である。この対象回路は、素子Ｇ１のａ１及びａ２端子には周期又は準周期属性のネットが接続されており、素子Ｇ１のａ３端子には非周期属性のネットが接続されている。
【０２２１】
素子Ｇ１は論理素子である。先ずステップＳ２_２_１において、周期属性と準周期属性のネットが２本以上入力端子に接続されている素子Ｇ１を認識し、記憶部５へ格納する。
【０２２２】
次にステップＳ２_２_２において、素子Ｇ１がマルチプレクサ素子であるので、処理をステップＳ２_２_３へ移行する。
【０２２３】
ステップＳ２_２_３で素子Ｇ１に対して、クロック選択論理フラグを立てる。ステップＳ２_２_１０で処理を終了する。
【０２２４】
また、図３２は、対象回路のもう一例を示す回路図である。この対象回路は、素子Ｇ１のａ１、ａ２、ａ３、及びａ４端子には準周期属性のネットが接続されており、素子Ｇ２、Ｇ３、Ｇ４、Ｇ５のａ１端子には非周期属性のネットが接続されており、素子Ｇ２、Ｇ３、Ｇ４、Ｇ５のａ２端子には周期属性のネットが接続されており、素子Ｇ６、Ｇ７、Ｇ８、Ｇ９のａ１及びａ２端子にはフリップフロップ又はラッチのデータ出力端子からの信号が接続されている。
【０２２５】
素子Ｇ１、Ｇ２、Ｇ３、Ｇ４、Ｇ５、Ｇ６、Ｇ７、Ｇ８、Ｇ９は論理素子である。先ずステップＳ２_２_１において、周期属性と準周期属性のネットが２本以上入力端子に接続されている素子Ｇ１を認識し、記憶部５へ格納する。
【０２２６】
次にステップＳ２_２_２において、素子Ｇ１がマルチプレクサ素子ではないので、処理をステップＳ２_２_４へ移行する。
【０２２７】
ステップＳ２_２_４において、素子Ｇ１のａ１、ａ２、ａ３、及びａ４端子からバックトレースを実行し、周期属性と非周期属性のネットが入力端子に接続されている素子Ｇ２、Ｇ３、Ｇ４、Ｇ５を認識し、他素子との接続情報と共に記憶部５へ格納する。
【０２２８】
ステップＳ２_２_５において、バックトレースにおいてフリップフロップ又はラッチのデータ出力端子には到達しなかったので、処理をステップＳ２_２_７へ移行する。
【０２２９】
ステップＳ２_２_７では、素子Ｇ２、Ｇ３、Ｇ４、Ｇ５のａ１端子からバックトレースを実行し、フリップフロップ又はラッチのデータ出力端子からの信号が入力端子に接続されている素子Ｇ６、Ｇ７、Ｇ８、Ｇ９を認識し、素子Ｇ２、Ｇ３、Ｇ４、Ｇ５のａ１端子への入力論理関数を構成し、論理積及び論理和を演算し、結果を記憶部５へ格納する。この回路図の場合、素子Ｇ２のａ１端子への入力論理関数はａ・ｂ、素子Ｇ３のａ１端子への入力論理関数はａ・／ｂ(記号／はこれが付された信号の論理反転を意味する）、素子Ｇ４のａ１端子への入力論理関数は／ａ・ｂ、素子Ｇ５のａ１端子への入力論理関数は／ａ・／ｂである。素子Ｇ２〜Ｇ５の出力の論理積は、
（ａ・ｂ）・（ａ・／ｂ)・（／ａ・ｂ）・（／ａ・／ｂ)=０
であり、論理和は
（ａ・ｂ）＋（ａ・／ｂ）＋（／ａ・ｂ）＋（／ａ・／ｂ）=１
である。
【０２３０】
ステップＳ２_２_９において、論理積が０、論理和が１である事から排他的であるので、処理をステップＳ２_２_３へ移行する。
【０２３１】
ステップＳ２_２_３で素子Ｇ１、Ｇ２、Ｇ３、Ｇ４、Ｇ５に対して、クロック選択論理フラグを立てる。ステップＳ２_２_１０で処理を終了する。
【０２３２】
次に、別の対象回路の一例を挙げて、非同期フリップフロップ及び非同期ラッチのクロック波形候補の抽出Ｓ７による処理の具体例について説明する。図３３は、対象回路の一例を示す回路図である。この対象回路は、外部から３種類のクロック信号が入力される外部入力ピンＣＬＫ１、ＣＬＫ２、ＣＬＫ３、外部からデータ信号が入力される外部入力ピンＤＩＮ、及び、外部へデータ信号を出力する外部出力ピンＤＯＵＴを備えている。
【０２３３】
素子ＦＦ１、ＦＦ２、ＦＦ３、ＦＦ４は、何れもフリップフロップであり、組み合わせ回路は内部に帰還路を持たない組み合わせ回路である。また、ｎｅｔ１は非周期属性ネットである。
【０２３４】
先ずステップＳ７_１において、ｎｅｔ１とクロック端子ｃｐへの信号が周期属性であり出力端子がｎｅｔ１に接続されている素子ＦＦ１を認識し、記憶部５へ格納する。
【０２３５】
次にステップＳ７_２において、素子ＦＦ２のｃｐ端子に接続されている素子はＦＦ１しか存在しないので、処理をステップＳ７_３へ移行する。
【０２３６】
ステップＳ７_３で素子ＦＦ１のデータ出力端子ｑに対して、図３４に示すＣＬＫ１の２倍の周期を持つデューティ５０％の反転クロックであるＦＦ２の反転仮想クロック、及びＣＬＫ１の２倍の周期を持つデューティ５０％の非反転クロックであるＦＦ２の非反転仮想クロックを定義し、記憶部５へ格納する。
【０２３７】
ステップＳ７_５で、図３４に示すタイミングチャートを作成し、ＦＦ３からのデータ転送におけるセットアップ解析にはＦＦ２の反転仮想クロックを、ホールド解析にはＦＦ２の非反転仮想クロックを用いる事が最も厳しい条件であり、ＦＦ４へのデータ転送におけるセットアップ解析にはＦＦ２の非反転仮想クロックを、ホールド解析にはＦＦ２の反転仮想クロックを用いる事が最も厳しい条件である事を記憶部５へ格納する。ステップＳ７_４で処理を終了する。
【０２３８】
次に、別の対象回路の一例を挙げて、非同期転送抽出Ｓ７による処理の具体例について説明する。図３５は、対象回路の一例を示す回路図である。この対象回路は、外部から２種類のクロック信号が入力される外部入力ピンＣＬＫ１、ＣＬＫ２、外部からクロック切り替え信号が入力される外部入力ピンＳＥＬ、外部からデータ信号が入力される外部入力ピンＤＩＮ、及び、外部へデータ信号を出力する外部出力ピンＤＯＵＴを備えている。
【０２３９】
素子ＦＦ１、ＦＦ２、ＦＦ３、ＦＦ４、ＦＦ５、ＦＦ６は、何れもフリップフロップであり、素子Ｇ１、Ｇ２、Ｇ３、Ｇ４は論理素子であり、素子Ｇ２にはクロック選択論理素子フラグが立っている。
【０２４０】
また、ＦＦ１のデータ出力端子ｑ、及び素子Ｇ４の出力端子はクロック波形生成用のダンプポイントである。
【０２４１】
先ずステップＳ５_１において、頂点の集合V１＝{ＣＬＫ１、ＦＦ１、Ｇ４}、辺の集合Ａ１＝{(ＣＬＫ１、ＦＦ１)、(ＦＦ１、Ｇ４)}である有向グラフ(V１、Ａ１)、及び頂点の集合V２＝{ＣＬＫ２、Ｇ４}、辺の集合Ａ２＝{(ＣＬＫ２、Ｇ４)}である有向グラフ(V２,Ａ２)を構成し、記憶部５へ格納する。
【０２４２】
次にステップＳ５_２で、有向グラフ(V１、Ａ１)の頂点をクロックソースとするフリップフロップ及びラッチの集合Ｆ１＝{ＦＦ５、ＦＦ６}、有向グラフ(V２、Ａ２)の頂点をクロックソースとするフリップフロップ及びラッチの集合Ｆ２＝{ＦＦ４、ＦＦ６}を認識し、記憶部５へ格納し、素子ＦＦ４、ＦＦ５、ＦＦ６でデータ授受を行っているペアの集合Ｐ＝{(ＦＦ４、ＦＦ５)、(ＦＦ５、ＦＦ６)}を認識し、記憶部５へ格納し、Ｆ１に含まれるフリップフロップ及びラッチと有向グラフ(V１、Ａ１)の頂点をクロックソースとしないフリップフロップ及びラッチとのデータ転送(ＦＦ４、ＦＦ５)を非同期転送として認識し、Ｆ２に含まれるフリップフロップ及びラッチと有向グラフ(V２、Ａ２)の頂点をクロックソースとしないフリップフロップ及びラッチとのデータ転送(ＦＦ４、ＦＦ５)及び (ＦＦ５、ＦＦ６)を非同期転送として認識し、この結果からクロック選択論理素子Ｇ２の状態に関わらず、データ転送(ＦＦ４、ＦＦ５)は非同期転送であり、クロック選択論理素子Ｇ２により有向グラフ(V２、Ａ２)が選択されたときのみデータ転送(ＦＦ５、ＦＦ６)が非同期転送である事を認識し、記憶部５へ格納し、処理を終了する。
【０２４３】
このように、非同期転送経路若しくは当該経路を構成する素子を認識するのに、クロック端子からデータ出力端子への素子内パスの通過を認め、外部端子から前記通過を認めた素子やマルチプレクサなどのクロック選択素子を通るクロックパスを、クロックソース間を結ぶグラフで表現し、そのグラフのクロックソースを用いる素子の集合を把握する。そして、第ｉのグラフのクロックソースをクロックソースとする素子と第ｉのグラフのクロックソースをクロックソースとしない素子との間のデータ転送を非同期転送として認識する。非同期転送と認識された経路の素子が、選択論理の前段で異なるグラフの頂点をクロックソースとするものであれば、その経路は常時非同期転送である。一方、非同期転送と認識された経路の素子が、選択論理の前後で同一グラフの頂点をクロックソースとするものであれば、その経路は選択論理の選択状態に応じて非同期転送になる。この非同期転送経路の認識方法（非同期転送経路抽出処理）は、マルチプレクサのようなクロック選択論理毎に分断してクロック経路を把握する手法に比べて、コンピュータによる演算データ量が少なく、それ故に、コンピュータによる演算やテーブル作成のために必要なメモリ容量を小さくすることができ、データ処理も速く完了することができる。
【０２４４】
次に、別の対象回路の一例を挙げて、マルチサイクルパス候補の抽出Ｓ９による処理の具体例について説明する。図３６は、対象回路の一例を示す回路図である。この対象回路は、外部から２種類のクロック信号が入力される外部入力ピンＣＬＫ１、ＣＬＫ２、外部からデータ信号が入力される外部入力ピンＤＩＮ、及び、外部へデータ信号を出力する外部出力ピンＤＯＵＴを備えている。
【０２４５】
素子ＦＦ１は、フリップフロップであり、素子Ｇ１は論理素子であり、素子Ｇ１にはゲーテッドクロック２フラグが立っており、ｎｅｔ１は非周期属性である。
【０２４６】
先ずステップＳ９_１においてゲーテッドクロック２フラグが立っている素子Ｇ１を取りだし、記憶部５へ格納する。
【０２４７】
次にステップＳ９_２で、素子Ｇ１のａ１端子に接続されているネットの属性が周期的なので、ＣＬＫ１の周期をＴ_周期とし、記憶部５へ格納する。
【０２４８】
ステップＳ９_３で、素子Ｇ１のａ２端子に接続されているネットの属性が非周期的なので、バックトレースを実行し、フリップフロップＦＦ１を認識し、ＦＦ１のｃｐ端子に接続されているネットの属性を記憶部５へ格納する。
【０２４９】
ステップＳ９_４では、ＦＦ１のｃｐ端子に接続されているネットの属性が周期属性であるので、処理をステップＳ９_５へ移行する。
【０２５０】
ステップＳ９_５において、ＣＬＫ２の周期をＴ_非周期とし、記憶部５へ格納し、処理をステップＳ９_９へ移行する。
【０２５１】
ステップＳ９_９において、２×Ｔ_周期≧Ｔ_非周期であるので、素子ＦＦ１のクロック端子ｃｐから素子Ｇ１の入力端子ａ２迄のパスをマルチサイクルパス候補として記憶部５へ格納し、出力部１０よりユーザへ情報提示を行い、遅延情報入力部２からユーザが前記パスがマルチサイクルパスかどうか判断した結果を入力し、もしユーザがマルチサイクルパスだと判断した場合は、遅延情報入力部２からユーザが指示したセットアップとホールドに対してのサイクル数と共に、前記パスをマルチサイクルパスとして記憶部５に格納し、もしユーザがマルチサイクルパスでないと判断した場合は、前記パスをシングルパスとして記憶部５に格納し、処理をステップＳ９_８へ移行する。ステップＳ９_８において処理を終了する。
【０２５２】
以上説明した静的・動的タイミング検証方法はコンピュータがプログラムを実行して実行される。静的・動的タイミング検証プログラムは、以上説明した静的・動的タイミング検証方法による処理内容をＣ言語のような高級言語で記述したソースプログラムを元に、これをコンパイルして、ターゲットとするコンピュータ固有のオブジェクトコードに変換された機械語プログラム（オブジェクトプログラム）である。
【０２５３】
この静的・動的タイミング検証プログラムは、特に制限されないが、磁気テープ、フロッピーディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ（マグネット−オプチカル・ディスク）などの記憶媒体に、コンピュータによって読取り可能に記憶されている。
【０２５４】
図４０には記憶媒体から静的・動的タイミング検証プログラムを読取って実行するコンピュータの一例が示される。
【０２５５】
同図に示されるコンピュータ１００は、エンジニアリングワークステーションやパーソナルコンピュータのようなコンピュータであり、プロセッサ及びメモリなどを実装したプロセッサボード、そして各種インタフェースボードを搭載した本体１０１に、ディスプレイ１０２、キーボード１０３、ディスクドライブ１０４などの代表的に示された周辺機器が接続されて構成される。
【０２５６】
前述の静的・動的タイミング検証プログラムは、記憶媒体１０５に格納されている。記憶媒体１０５は、特に制限されないが、前記ディスクドライブ１０４に装着されて、それに記憶されている静的・動的タイミング検証プログラムがコンピュータの本体１０１に読み込まれる。例えば、読み込まれた静的・動的タイミング検証プログラムは、コンピュータ本体１０１のメモリにロードされ、ロードされたプログラムを順次解読しながら、前述の静的・動的タイミング検証を行っていく。また、記憶媒体から読み込まれた静的・動的タイミング検証プログラムはコンピュータ本体１０１に備え付けのハードディスク装置の磁気記憶媒体にインストールされて、そこから随時メモリにロードされて実行されても良い。この場合、静的・動的タイミング検証プログラムをデータ圧縮した状態で記憶媒体１０５に格納しておき、前記ハードディスクへのインストールに際して伸長してもよい。それらの場合等において、静的・動的タイミング検証プログラムを格納したコンピュータ読取り可能な記憶媒体は、そのまま実行可能な形態或いはデータ圧縮された状態で静的・動的タイミング検証プログラムを格納する前記記憶媒体１０５或いはコンピュータ本体１０１に内蔵されているハードディスク装置の磁気記憶媒体等、何れも該当する。
【０２５７】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【０２５８】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【０２５９】
すなわち、クロック情報認識手段を有することにより、クロック信号が入力される外部入力ピンへのクロック情報と、セットまたはリセット信号が入力される外部入力ピンの情報と、対象回路内のカウンタの同期・非同期セット・リセットまたは同期・非同期ロードに用いるフリップフロップ又はラッチ素子の情報から、内部で生成されたクロックの情報を自動的に認識する事ができる。これによって対象回路の同期回路、非同期回路の識別が容易化される。
【０２６０】
タイミング検証不要な非同期転送経路（を構成する回路部分）を認識するので、対象回路内の非周期信号がクロックとして供給されているフリップフロップ及びラッチを介したデータ転送経路と、互いに非同期な信号、即ち電源投入時での前記信号間の位相差が定義不能な信号がクロックとして供給されているフリップフロップ及びラッチ間のデータ転送経路を別々の非同期転送経路として認識する事が出来る。
【０２６１】
対象回路の中でゲーテッドクロック回路（クロックゲート）に対してセットアップ・ホールド解析を実行できる。
【０２６２】
ゲーテッドクロック回路を構成している論理素子へのクロック属性を持たない入力信号のマルチサイクルパスを認識するから、疑似エラーを予め排除した静的タイミング検証によるゲーテッドクロック回路のセットアップ・ホールド解析を実行することができる。
【０２６３】
フリップフロップ及びラッチ間のデータ転送経路の認識において、前記データ転送経路の両端のフリップフロップ又はラッチへ供給されるクロックの組み合わせを予め検証する事が出来る。
【０２６４】
クロック以外の信号がクロック端子に供給されているフリップフロップ及びラッチに対して、仮想的なクロックが定義可能かを判定して仮想クロックを設定するから、非同期回路に対しても静的タイミング検証が適用できる。換言すれば、非同期回路を周期回路と非周期回路に分類して、周期回路に静的タイミング検証を可能にするものである。結果として、大幅な検証工数の削減が期待できる。
【０２６５】
静的タイミング検証適用回路部分と動的タイミング検証適用回路部分を識別できるので、同期回路部分でのハザード解析を必要とする回路部分の認識と当該回路部分への動的タイミング検証が実行できる。
【０２６６】
信号の伝達経路に沿ってフリップフロップが現われる迄を動的タイミング検証適用回路部分に含めることにより、動的タイミング検証適用回路部分への静的タイミング検証適用回路部分からのデータ転送経路における信号遅延時間を考慮しないで、動的タイミング検証適用回路部分の動的タイミング検証を実行することができる。
【０２６７】
動的タイミング検証適用回路部分と対象回路の中の論理階層との対応を識別するので、動的タイミング検証実行すべき論理階層を認識できる。したがって、論理検証時に予め作成されている各論理階層への入力信号情報を流用して動的タイミング検証を実行する事ができ、検証工数の削減が期待できる。
【０２６８】
静的タイミング検証適用回路部分の入力端子及び出力端子に最も近い前記動的タイミング検証適用回路部分内のフリップフロップから信号の伝達経路に沿って前記動的タイミング検証適用回路部分外のフリップフロップ及びラッチを識別し、識別されたフリップフロップ及びラッチへのクロック信号の伝搬遅延を、対象回路に遅延情報を与える際に前記動的タイミング検証適用回路部分と前記動的タイミング検証適用回路部分内のフリップフロップ及びラッチへのクロック信号の伝搬遅延のみを与えるだけで動的タイミング検証が可能となるよう調整する。これにより、動的タイミング検証適用回路部分に対してのみ遅延情報を与える事で、対象回路全体の動的タイミング検証を実行でき、且つ論理検証時に予め作成されている対象回路全体の入力信号情報の流用ができる。したがって、検証時間と検証工数の削減が期待できる。
【図面の簡単な説明】
【図１】本発明に係る静的・動的タイミング検証装置の一例を全体的に示すブロック図である。
【図２】本発明者が先に検討した静的・動的タイミング検証方法の一例処理を全体的に示すフローチャートである。
【図３】本発明に係る静的・動的タイミング検証方法による処理の一例を全体的に示すフローチャートである。
【図４】本発明に係る静的・動的タイミング検証方法による処理の一例を図３とは別の観点から示したフローチャートである。
【図５】図４のステップＳ１の内部処理の一例を示すフローチャートである。
【図６】図５のステップＳ１_３の内部処理の一例を示すフローチャートである。
【図７】図５のステップＳ１_４の内部処理の一例を示すフローチャートである。
【図８】図７のステップＳ１_４_４の内部処理の一例を示すフローチャートである。
【図９】図８のステップＳ１_４_４_１の内部処理の一例を示すフローチャートである。
【図１０】図４のステップＳ３の内部処理の一例を示すフローチャートである。
【図１１】図４のステップＳ４の内部処理の一例を示すフローチャートである。
【図１２】図４のステップＳ２の内部処理の一例を示すフローチャートである。
【図１３】図１２のステップＳ２_２の内部処理の一例を示すフローチャートである。
【図１４】図４のステップＳ６の内部処理の一例を示すフローチャートである。
【図１５】図１３のステップＳ６_２の内部処理の一例を示すフローチャートである。
【図１６】図４のステップＳ７の内部処理の一例を示すフローチャートである。
【図１７】図４のステップＳ５の内部処理の一例を示すフローチャートである。
【図１８】図４のステップＳ８の内部処理の一例を示すフローチャートである。
【図１９】図４のステップＳ８のもう１つの内部処理の一例を示すフローチャートである。
【図２０】図４のステップＳ９の内部処理の一例を示すフローチャートである。
【図２１】図４のステップＳ１０の内部処理の一例を示すフローチャートである。
【図２２】図４のステップＳ１０のもう１つの内部処理の一例を示すフローチャートである。
【図２３】図４のステップＳ１１の内部処理の一例を示すフローチャートである。
【図２４】図２３のステップＳ１１_１の内部処理の一例を示すフローチャートである。
【図２５】図２３のステップＳ１１_８の内部処理の一例を示すフローチャートである。
【図２６】実施の形態２のステップＳ１１_８の内部処理の一例を示すフローチャートである。
【図２７】対象回路の一例であるカウンタ候補回路の回路図である。
【図２８】対象回路の一例である属性演算回路の回路図である。
【図２９】対象回路の一例である場合分け回路の回路図である。
【図３０】対象回路の一例であるロジックコーン回路の回路図である。
【図３１】対象回路の一例であるクロック選択回路の回路図である。
【図３２】対象回路の一例である別のクロック選択回路の回路図である。
【図３３】対象回路の一例である非同期フリップフロップ・ラッチ回路の回路図である。
【図３４】図３３の回路図の動作を示すタイミングチャートである。
【図３５】対象回路の一例である非同期転送回路の回路図である。
【図３６】対象回路の一例であるマルチサイクルパス回路の回路図である。
【図３７】本発明に係る静的・動的タイミング検証装置による同期・非同期混在回路に対する静的タイミング検証と動的タイミング検証の割り振りに関する基本的な考え方を全体的に示す説明図である。
【図３８】図８におけるステップＳ１_４_４_４、Ｓ１_４_４_５の処理に置き換えることが可能な処理をステップを示す説明図である。
【図３９】図４のステップＳ８の更に別の内部処理の一例を示すフローチャートである。
【図４０】記憶媒体から静的・動的タイミング検証プログラムを読取って実行するコンピュータの一例を示す斜視図である。
【符号の説明】
１  接続情報入力部
２  遅延情報入力部
３  回路制約入力部
４  負荷情報入力部
５  記憶部
６  静的・動的タイミング検証分割部
７  静的タイミング検証部
８  動的タイミング検証部
９  回路シミュレーション実行部
１０  出力部
１１  クロック情報抽出部
１２  回路制約検証部
Ｓ１  クロック情報の認識処理
Ｓ２  クロックの選択論理の認識処理
Ｓ３  非同期ＦＦ／ラッチの認識処理
Ｓ４  ゲーテッドクロックの認識処理
Ｓ５  非同期転送抽出処理
Ｓ６  クロック波形生成処理
Ｓ７  非同期ＦＦ／ラッチのクロック波形候補の抽出処理
Ｓ８  回路構成チェック処理
Ｓ９  マルチサイクルパス候補の抽出処理
Ｓ１０  ゲーテッドクロック解析実行処理
Ｓ１１  動的タイミング検証適用箇所の決定処理
【図１】
0004176906.tif 000002
【図２】
0004176906.tif 000003
【図３】
0004176906.tif 000004
【図４】
0004176906.tif 000005
【図５】
0004176906.tif 000006
【図６】
0004176906.tif 000007
【図７】
0004176906.tif 000008
【図８】
0004176906.tif 000009
【図９】
0004176906.tif 000010
【図１０】
0004176906.tif 000011
【図１１】
0004176906.tif 000012
【図１２】
0004176906.tif 000013
【図１３】
0004176906.tif 000014
【図１４】
0004176906.tif 000015
【図１５】
0004176906.tif 000016
【図１６】
0004176906.tif 000017
【図１７】
0004176906.tif 000018
【図１８】
0004176906.tif 000019
【図１９】
0004176906.tif 000020
【図２０】
0004176906.tif 000021
【図２１】
0004176906.tif 000022
【図２２】
0004176906.tif 000023
【図２３】
0004176906.tif 000024
【図２４】
0004176906.tif 000025
【図２５】
0004176906.tif 000026
【図２６】
0004176906.tif 000027
【図２７】
0004176906.tif 000028
【図２８】
0004176906.tif 000029
【図２９】
0004176906.tif 000030
【図３０】
0004176906.tif 000031
【図３１】
0004176906.tif 000032
【図３２】
0004176906.tif 000033
【図３３】
0004176906.tif 000034
【図３４】
0004176906.tif 000035
【図３５】
0004176906.tif 000036
【図３６】
0004176906.tif 000037
【図３７】
0004176906.tif 000038
【図３８】
0004176906.tif 000039
【図３９】
0004176906.tif 000040
【図４０】
0004176906.tif 000041