JP4176906B2 - 静的・動的タイミング検証方法及び記憶媒体 - Google Patents
静的・動的タイミング検証方法及び記憶媒体 Download PDFInfo
- Publication number
- JP4176906B2 JP4176906B2 JP09055899A JP9055899A JP4176906B2 JP 4176906 B2 JP4176906 B2 JP 4176906B2 JP 09055899 A JP09055899 A JP 09055899A JP 9055899 A JP9055899 A JP 9055899A JP 4176906 B2 JP4176906 B2 JP 4176906B2
- Authority
- JP
- Japan
- Prior art keywords
- circuit
- clock
- timing verification
- attribute
- asynchronous
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
- G06F30/3312—Timing 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)
- Tests Of Electronic Circuits (AREA)
Description
【発明の属する技術分野】
本発明は、電気・電子回路(電気回路、半導体集積回路それ自体はもとより半導体集積回路を実装した電子回路)の設計検証技術に係り、設計検証の対象回路(被検証回路)に対して静的検証と動的検証とを割り振る静的・動的タイミング検証分割、そして、それによるタイミング検証方法、並びにその検証方法をコンピュータに実行させるためのプログラムを格納した記憶媒体に関するものである。
【0002】
【従来の技術】
電気・電子回路のタイミング検証にはその処理効率を向上させるために動的タイミング検証の代わりに若しくは動的タイミング検証と共に静的タイミング検証を採用することができる。
【0003】
前記静的タイミング検証と動的タイミング検証とを採用す検証フローとして図2に記載のフローを挙げることができる。図2において、21は検証対象とする回路接続情報、22は入出力信号のタイミング指定とクロック指定情報、23は従来の静的タイミング検証装置、24は信号情報(パターン)、25は動的タイミング検証装置、26は回路設計フェーズを示す。静的タイミング検証装置23で行われるような静的タイミング検証では、基本的に、シミュレーションによる各回路要素の信号情報を必要とせず、22で示されるような入出力信号のタイミング指定とクロック指定を行なうことで、ラッチ間で最も遅いパス(クリティカルパス)を見つけ、このクリティカルパスにおける信号伝達がクロック周期に比べて間に合うかどうかのセットアップタイミング検証を行う。更に、静的タイミング検証では、ラッチ間で最も速いパスを見つけ、同じクロックのタイミングで次のデータを取り込まないかのホールドタイミング検証を行なう。前記動的タイミング検証装置25で行われるような動的タイミング検証では、24で示されるようなシミュレーションによる各回路要素の信号情報(テストパターン)を必要とし、信号情報を21で例示されるような回路接続情報の入力端子に入力することで、被検証回路の回路接続を活性化し、シミュレーションを行なう。
【0004】
従来の電気・電子回路のタイミング検証方式について記載された文献の例として、特開平10−198723号、特開平7−44590号及び特開平9−50449号の各公報が有る。
【0005】
特開平10−198723号公報記載の技術は、電気・電子回路において特定クロック信号に同期する同期回路と特定クロックが無い或いは特定クロック信号に同期しない非同期回路を混在して備える回路に対して静的タイミング検証のみでタイミングを保証しようとするものである。
【0006】
特開平9−50449号公報は、同期・非同期混在回路に対して同期回路部分と非同期回路部分を識別し、識別された同期回路部分に対して静的タイミング検証を行い、非同期回路部分に対して動的タイミング検証を行う技術を提供する。但し、この公報記載の技術では、同期回路部分での回路正常動作保証の為のハザード(スパイクノイズ)解析や非同期回路部分への静的タイミング検証の適用は行っていない。
【0007】
特開平7−44590号公報記載の回路検証システムは、検証対象回路内にスパイクノイズ発生回路が存在するか否かを判定しようとするものであるが、その判定手法は信頼性が低いという不具合が有る。
【0008】
【発明が解決しようとする課題】
電気・電子回路のタイミング検証技術において、従来の静的タイミング検証では、指定クロックの同期回路に対してだけタイミング検証を行なっていた。このため個々にクロックを指定することが必須である。更に、同期回路部分での回路正常動作を保証する為にハザード解析を行う場合には、その個所を個別に探し出して動的タイミング検証の対象にしてハザード解析を行わねばならない。ハザード解析に対しては、前記特開平7−44590号公報記載の回路検証システムを用いても不十分である。
【0009】
このため、クロック指定ができなければ、また、ハザードの虞のある回路部分を抽出できなければ、タイミング検証はできない。
【0010】
この点に関し、対象回路の内部に任意のカウンタ回路とみなすことができる回路によって構成されたクロック生成回路が存在する場合、クロックの指定の為の情報作成に時間がかかり、また、低電力化の為に近年使用頻度が増してきたクロックゲートのセットアップ解析及びホールド解析を行う為の指示情報の作成に時間がかかるとい問題点がの有ることが本発明者によって明らかにされた。更に、前記セットアップ解析及びホールド解析を行う為の指示情報が正しく行われているかの検証には、静的タイミング検証結果を解析して疑似エラーの識別を手作業で行う以外になく、検証工数が多大にかかるという問題点を有していることが本発明者によって明らかにされた。
【0011】
更に、前述のようにユーザが同期回路部分のハザード解析を必要とする回路部分を選び出し、それについては別途の処理を行うという、非能率な作業が要求されていた。そして、手作業でハザード解析を必要とする回路部分を検証するのは更に能率が悪く、動的タイミング検証方法を用いる場合でも、動的タイミング検証装置にハザード解析を必要とする回路部分を教示するという非能率的な作業が必要とされる。特開平7−44590号公報記載の回路検証システムを用いてもハザード解析を要する回路部分の指摘は不十分であると考えられる。
【0012】
本発明の目的は、信頼性の高いタイミング検証を能率的に行うことができる静的・動的タイミング検証方法並びにその方法をコンピュータに実行させるためのプログラムを格納した記憶媒体を提供することにある。
【0013】
本発明の別の目的は、同期・非同期混在回路のクロック情報の抽出を能率的に行うことができる静的・動的タイミング検証方法並びにその方法をコンピュータに実行させるためのプログラムを格納した記憶媒体を提供することにある。
【0014】
本発明の更に別の目的は同期・非同期混在回路におけるハザードの発生可能性を考慮してのタイミング検証を能率的に行うことができる静的・動的タイミング検証方法並びにその方法をコンピュータに実行させるためのプログラムを格納した記憶媒体を提供することにある。
【0015】
本発明のその他の目的は同期・非同期混在回路におけるクロック情報とハザードの発生可能性とを考慮して信頼性の高いタイミング検証を能率的に行うことができる静的・動的タイミング検証方法並びにその方法をコンピュータに実行させるためのプログラムを格納した記憶媒体を提供することにある。
【0016】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【0017】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【0018】
すなわち、同期・非同期混在回路に対する従来のタイミング検証は、図37に例示されるように、同期回路(▲1▼、▲2▼)に対しては静的タイミング検証、非同期回路(▲3▼、▲4▼)に対しては動的タイミング検証を割り当てていた。本発明に係る静的・動的タイミング検証回路では、図37に例示されるように、同期・非同期回路に対して周期・非周期の観点を導入する。すなわち、同期・非同期混在回路を、前記外部クロック端子やクロックツリー等によって一義的に規定されるクロック信号に同期されるか否かの観点より同期回路と非同期回路に分類し、前記同期回路を周期回路(▲1▼)と非周期回路(▲2▼)に、前記非同期回路を周期回路(▲3▼)と非周期回路(▲4▼)に分類する。そして、同期回路の周期回路(▲1▼)及び非同期回路の周期回路(▲3▼)には静的タイミング検証を施し、同期回路の非周期回路(▲2▼)及び非同期回路の非周期回路(▲4▼)には動的タイミング検証を施す。要するに、同期・非同期混在回路において、外部クロック端子やクロックツリー等によって一義的に規定されるクロック信号に同期動作される同期回路に対して全てを静的タイミング検証の対象とはせず、ハザード等が発生する可能性のある回路部分を抽出し、この回路部分に対しては、同期回路における非周期的な動作回路部分(非周期回路)として動的タイミング検証を施す。また、同期・非同期混在回路において、外部クロック端子やクロックツリー等によって一義的に規定されるクロック信号を用いない若しくはそのようなクロック信号に同期動作されない非同期回路に対して全てを動的タイミング検証の対象とはせず、ストローブ信号やゲーテッドクロック等のように仮想的なクロック信号とみなすことが可能な信号が供給される回路部分を抽出し、この回路部分に対しては、非同期回路における周期的な動作回路部分(周期回路)として静的タイミング検証を施す。上述の観点より本発明に係る静的・動的タイミング検証方法を更に詳述する。
【0019】
〔1〕静的・動的タイミング検証方法は、タイミング検証の対象回路に対する静的タイミング検証又は動的タイミング検証の適用を決める静的・動的タイミング検証分割処部(6)による静的・動的タイミング検証分割処を有する。この静的・動的タイミング検証分割処理は、前記対象回路の中のカウンタ手段(周期信号を生成する回路手段)を識別し、識別されたカウンタ手段の情報(S1_3)を元に、対象回路の中のクロック情報を識別する(S6)クロック情報認識処理を有する。このクロック情報認識処理はクロック情報認識手段(11)行なわれる。前記クロック情報認識処理を有することにより、クロック信号が入力される外部入力ピンへのクロック情報と、セットまたはリセット信号が入力される外部入力ピンの情報と、対象回路内のカウンタの同期・非同期セット・リセットまたは同期・非同期ロードに用いるフリップフロップ又はラッチ素子の情報から、内部で生成されたクロックの情報を自動的に認識する事ができる。これによって対象回路の同期回路、非同期回路の識別が容易化される。
【0020】
〔2〕上記〔1〕において、前記クロック情報認識処理は、これによって識別した前記情報を元に、対象回路の中で同期回路部分と非同期回路部分との非同期転送経路、更に同期回路部分間の非同期転送経路を、夫々識別する(S3)。要するに、タイミング検証不要な回路部分を抽出する。前記非同期転送経路を認識するので、対象回路内の非周期信号がクロックとして供給されているフリップフロップ及びラッチを介したデータ転送経路(タイミング検証が必要な非同期転送経路)と、互いに非同期な信号、即ち電源投入時での前記信号間の位相差が定義不能な信号がクロックとして供給されているフリップフロップ及びラッチ間のデータ転送経路(タイミング検証が不要な非同期転送経路)とを別々の非同期転送経路として認識する事が出来る。
【0021】
〔3〕上記〔1〕において、前記クロック情報認識処理は、これによって識別した情報を元に、対象回路の中でゲーテッドクロックを構成している論理素子を認識する(S4)。そして、認識されたゲーテッドクロックを構成している論理素子へ2本以上クロック属性を持つ信号が入力されている場合に(図31、図32)、ゲーテッドクロックのセットアップ解析、ホールド解析を実行する必要があるかが判定され(S9)、前記クロック属性を持つ入力信号の中でどの信号を基準としてゲーテッドクロックのセットアップ解析、ホールド解析を実行するかが判定される(S10)。これにより、静的タイミング検証によるゲーテッドクロックのセットアップ・ホールド解析を行う為の指示情報を作成でき、網羅的に静的タイミング検証によるゲーテッドクロックのセットアップ・ホールド解析が実行できる。
【0022】
〔4〕上記〔1〕において、前記クロック情報認識処理は、これによって識別した情報を元に、対象回路の中でゲーテッドクロックを構成している論理素子を識別し(S4)、図36に例示されるように、前記識別されたゲーテッドクロックを構成している論理素子へのクロック属性を持たない入力信号がマルチサイクルパスか否かの識別を行う(S9)。このように、ゲーテッドクロックを構成している論理素子へのクロック属性を持たない入力信号のマルチサイクルパスを認識するから、疑似エラーを予め排除した静的タイミング検証によるゲーテッドクロックのセットアップ・ホールド解析を実行することができる。
【0023】
〔5〕上記〔1〕において、前記クロック情報認識処理は、これによって識別した前記情報を元に、対象回路の中でクロックの選択論理を構成している論理素子を識別する(S2)。これにより、フリップフロップ及びラッチ間のデータ転送経路の認識において、前記データ転送経路の両端のフリップフロップ又はラッチへ供給されるクロックの組み合わせを予め検証する事が出来る。
【0024】
〔6〕上記〔1〕において、前記静的・動的タイミング検証分割処理は、更に、クロック情報認識手段で識別した情報を元に、対象回路の中でクロック以外の信号がクロック端子に供給されているフリップフロップ及びラッチに対して、仮想的なクロックが定義可能かを判定し、クロック以外の信号がクロック端子に供給されているフリップフロップ及びラッチであって、前記仮想的なクロックが定義可能と判定されたフリップフロップ及びラッチのクロック端子に対して、仮想的なクロックを設定する(S7)。このように、クロック以外の信号がクロック端子に供給されているフリップフロップ及びラッチに対して、仮想的なクロックが定義可能かを判定して仮想クロックを設定するから、非同期回路に対しても静的タイミング検証が適用できる。換言すれば、非同期回路を周期回路と非周期回路に分類して、周期回路に静的タイミング検証を可能にするものである。結果として、大幅な検証工数の削減が期待できる。しかも、仮想クロックの設定において、セットアップタイム及びホールドタイムが最も厳しくなるように仮想クロックを設定れば、前記非同期回路に対する静的タイミング検証を最も厳しい条件下で行う事が可能になる。
【0025】
〔7〕上記〔1〕において、前記静的・動的タイミング検証分割処理は、前記クロック認識処理で識別した情報を元に、対象回路の中で静的タイミング検証適用回路部分と動的タイミング検証適用回路部分を識別する適用回路部分認識処理を有する。この処理は適用回路部分認識手段(13)で行なわれる。このように、静的タイミング検証適用回路部分と動的タイミング検証適用回路部分を識別できるので、同期回路部分でのハザード解析を必要とする回路部分の認識と当該回路部分への動的タイミング検証が実行できる。
【0026】
〔8〕上記〔7〕において、前記適用回路部分認識処理は、前静的タイミング検証適用回路部分と動的タイミング検証適用回路部分を識別する認識手段で識別した動的タイミング検証適用回路部分に信号の伝達経路に沿ってフリップフロップが現われる迄を動的タイミング検証適用回路部分に含めて認識する(S11)。これにより、動的タイミング検証適用回路部分への静的タイミング検証適用回路部分からのデータ転送経路における信号遅延時間を考慮しないで、動的タイミング検証適用回路部分の動的タイミング検証を実行することができる。
【0027】
〔9〕上記〔7〕において、前記適用回路部分認識処理は、前静静的タイミング検証適用回路部分と動的タイミング検証適用回路部分を識別する認識手段で識別した動的タイミング検証適用回路部分と対象回路の中の論理階層との対応を識別する(S11)。このように、動的タイミング検証適用回路部分と対象回路の中の論理階層との対応を識別するので、動的タイミング検証実行すべき論理階層を認識できる。したがって、論理検証時に予め作成されている各論理階層への入力信号情報を流用して動的タイミング検証を実行する事ができ、検証工数の削減が期待できる。
【0028】
〔10〕上記〔1〕において、前記適用回路部分認識処理は、これが識別した静的タイミング検証適用回路部分の入力端子及び出力端子に最も近い前記動的タイミング検証適用回路部分内のフリップフロップから信号の伝達経路に沿って前記動的タイミング検証適用回路部分外のフリップフロップ及びラッチを識別し(S11_8_1)、前記認識手段で識別されたフリップフロップ及びラッチへのクロック信号の伝搬遅延を、対象回路に遅延情報を与える際に前記動的タイミング検証適用回路部分と前記動的タイミング検証適用回路部分内のフリップフロップ及びラッチへのクロック信号の伝搬遅延のみを与えるだけで動的タイミング検証が可能となるよう調整する(S11_8_2)。これにより、動的タイミング検証適用回路部分に対してのみ遅延情報を与える事で、対象回路全体の動的タイミング検証を実行でき、且つ論理検証時に予め作成されている対象回路全体の入力信号情報の流用ができる。したがって、検証時間と検証工数の削減が期待できる。
【0029】
〔11〕特に、非同期転送経路の識別に着目した検証方法は、タイミング検証の対象回路に対する静的タイミング検証又は動的タイミング検証の適用を決める静的・動的タイミング検証分割処理を有し、前記静的・動的タイミング検証分割処理は、対象回路の中のカウンタ手段を識別し、識別されたカウンタ手段の情報をもとに、対象回路の中のクロック情報を識別するクロック情報認識処理を含む。そして、前記クロック情報認識処理は、更に、識別した前記情報をもとに、対象回路の中で同期回路部分と非同期回路部分との非同期転送経路、更に同期回路部分間の非同期転送経路を、夫々識別する非同期転送経路抽出処理(S5)を行う。更に、前記非同期転送経路抽出処理は、非同期転送経路を構成する素子を認識するために、クロック端子からデータ出力端子への素子内パスの通過を認め、外部端子から前記通過を認めた素子を通るクロックパスを、クロックソース間を結ぶグラフで表現する処理と、そのグラフのクロックソースを用いる素子の集合を把握する処理(S5_1)と、前記認識されたグラフ毎に、当該グラフのクロックソースをクロックソースとする素子と当該グラフのクロックソースをクロックソースとしない素子との間のデータ転送を非同期転送として認識し、非同期転送と認識された経路の素子が選択論理の前段で異なるグラフの頂点をクロックソースとするものであれば当該経路を常時非同期転送と認識し、一方、非同期転送と認識された経路の素子が選択論理の前後で同一グラフの頂点をクロックソースとするものであれば当該経路は選択論理の選択状態に応じて非同期転送になると認識する処理(S5_2)とを含む。
【0030】
この非同期転送経路抽出処理は、マルチプレクサのようなクロック選択論理毎に分断してクロック経路を把握する手法に比べて、コンピュータによる演算データ量が少なく、それ故に、コンピュータによる演算やテーブル作成のために必要なメモリ容量を小さくすることができ、データ処理も速く完了することができる。
【0031】
上記した静的・動的タイミング検証方法をコンピュータに実行させるためのプログラムをフロッピーディスクやCD−ROMなどのコンピュータ読取り可能な記憶媒体に格納して提供することにより、前記静的・動的タイミング検証方法を容易に実施することができる。
【0032】
例えば、そのような記憶媒体は、タイミング検証の対象回路の中のカウンタ手段を識別する第1の処理と、識別されたカウンタ手段の情報を元に、対象回路の中のクロック情報を識別する第2の処理と、識別したクロック情報を元に、対象回路の中で静的タイミング検証適用回路部分と動的タイミング検証適用回路部分を識別する第3の処理と、前記第3の処理結果に基づいて静的タイミング検証を行う第4の処理と、前記第3の処理結果に基づいて動的タイミング検証を行う第5の処理と、をコンピュータに実行させるためのプログラムを記録して成る。
【0033】
本発明による別の観点に立った記憶媒体は、同期・非同期混在回路における同期回路に非周期的な誤動作を発生する可能性のある回路部分を抽出し、この回路部分には非周期回路として動的タイミング検証を施す処理と、前記同期・非同期混在回路における非同期回路に仮想的なクロック信号とみなすことが可能な信号が供給される回路部分を抽出し、この回路部分には周期回路として静的タイミング検証を施す処理と、をコンピュータに実行させるためのプログラムを記録して成る。
【0034】
本発明による更に別の観点に立った記憶媒体は、クロック信号に対する同期・非同期混在回路をに対して、同期回路を周期回路と非周期回路に、非同期回路を周期回路と非周期回路に分類し、同期回路の周期回路及び非同期回路の周期回路には静的タイミング検証を施し、同期回路の非周期回路及び非同期回路の非周期回路には動的タイミング検証を施す、夫々の処理をコンピュータに実行させるためのプログラムを記録して成る。
【0035】
【発明の実施の形態】
《静的・動的タイミング検証装置の構成》
図1には静的・動的タイミング検証装置の一例が示される。図1において、5は半導体記憶素子等で構成される記憶部、1は対象回路の接続情報、即ち対象回路を構成する素子の種類及び外部入出力ピンを含めたそれらの接続状態に関する情報を記憶部5に格納する接続情報入力部である。2は各素子の遅延情報、タイミング制約情報等を入力し、記憶部5に格納する遅延情報入力部である。3はハザード発生防止の為の回路制約、即ち対象回路内でフリップフロップのクロック端子や非同期セット・リセット端子等ハザード信号が入力されると回路の誤動作を引き起こす可能性の高い端子への入力論理関数を構成する素子の種類及び外部入出力ピンを含めたそれらの接続状態に対する制約情報を記憶部5に格納する回路制約入力部である。4は被検証回路に固有の抵抗・容量・インダクタンスと被検証回路の実装基板上での配線の抵抗・容量・インダクタンスを入力し、記憶部5に格納する負荷情報入力部である。
【0036】
静的・動的タイミング検証分割部6は、対象回路の中のクロックツリー、任意のカウンタとみなすことができる回路によって構成されたクロック生成回路、内部で生成されたクロックの波形、クロックゲートを構成する素子、クロックの選択論理を構成する素子、及び非同期フリップフロップ・非同期ラッチを認識し記憶部5に格納する。また、静的・動的タイミング検証分割部6は、回路構成が回路制約入力部3で与えられたハザード発生防止の為の回路制約を満たすかどうかを検証し検証結果を記憶部5に格納する。更に静的・動的タイミング検証分割部6は、識別した非同期フリップフロップ・非同期ラッチの中でクロック端子への信号にハザードが発生しないと判定された前記非同期フリップフロップ・非同期ラッチに対してクロック波形を定義し記憶部5に格納するとともに、対象回路の中での動的タイミング検証適用部分を識別し記憶部5に格納し、識別された動的タイミング検証適用部分と対象回路内の論理階層との対応を認識し記憶部5に格納し、各論理階層内での静的タイミング検証適用部分と動的タイミング検証適用部分との構成比を算出し記憶部5に格納する。
【0037】
7は静的・動的タイミング検証分割部で識別された動的タイミング検証適用部分以外の回路部分のタイミング検証を静的タイミング検証方法にもとづいて行う静的タイミング検証部である。8は静的・動的タイミング検証分割部6で識別された動的タイミング検証適用部分のタイミング検証を動的タイミング検証方法にもとづいて行う動的タイミング検証部である。9は、識別された配置配線後の配置配線情報を伴うクロックツリーに対して、負荷情報入力部3で与えられたパッケージ固有の抵抗・容量・インダクタンスとボード基板上での配線の抵抗・容量・インダクタンスを付加して回路シミュレーションを実行する回路シミュレーション実行部である。
【0038】
記憶部5には、更に、静的タイミング検証部7及び動的タイミング検証部8の双方から、各々のタイミング検証結果が書き込まれ、回路シミュレーション実行部から、回路シミュレーション実行結果が書き込まれる。また、図1に示すように、この装置には出力部10が備わっており、記憶部5に記憶されるタイミング検証結果及び回路シミュレーション実行結果が、この出力部10によって出力される。
【0039】
この装置の主要部をなす静的・動的タイミング検証分割部6は、クロック情報抽出部11、回路制約検証部12、及び回路分割部13を備えている。そして、回路分割部13には、動的タイミング検証適用部分認識部14及び対応論理階層認識部15が備わっている。
【0040】
クロック情報抽出部11は、対象回路の外部クロックピンからクロックの波形等の情報を伝搬する事と、対象回路の中の任意のカウンタにより構成されたクロック生成回路を認識し、クロックゲートを構成する素子、クロックの選択論理を構成する素子を認識し、シミュレーションを実行する事で内部で生成されたクロックの波形を認識する事により、クロック情報付き対象回路情報及び非同期フリップフロップ・非同期ラッチ情報を回路制約検証部8及び記憶部5に出力する。また、記憶部5に記憶されるクロック情報付き対象回路情報及び非同期フリップフロップ・非同期ラッチ情報が、出力部10によって出力される。
【0041】
回路制約検証部12は、回路構成が回路制約入力部3で与えられたハザード発生防止の為の回路制約を満たすかどうかを検証する事により、回路制約検証結果を回路分割部13及び記憶部5に出力し、更に識別した非同期フリップフロップ・非同期ラッチの中でクロック端子への信号にハザードが発生しないと判定された前記非同期フリップフロップ・非同期ラッチに対してクロック波形を定義する事により、非同期クロック波形情報を回路分割部13及び記憶部5に出力する。また、記憶部5に記憶される回路制約検証結果及び非同期クロック波形情報が、出力部10によって出力される。
【0042】
動的タイミング検証適用部分認識部14は、対象回路の中での静的タイミング検証適用部分と動的タイミング検証適用部分とを識別し、静的タイミング検証適用部分情報即ち静的タイミング検証適用回路部分に関する情報を記憶部5に出力し、動的タイミング検証適用部分情報即ち動的タイミング検証適用回路部分に関する情報を対応論理階層認識部15及び記憶部5に出力する。
【0043】
対応論理階層認識部15は、識別された動的タイミング検証適用部分と対象回路内の論理階層との対応を認識する事により、対応論理階層情報を記憶部5に出力し、各論理階層内での静的タイミング検証適用部分と動的タイミング検証適用部分との構成比を算出する事で、論理階層構成比情報を記憶部5に出力する。また、記憶部5に記憶される対応論理階層情報及び論理階層構成比情報が、出力部10によって出力される。この構成比は、設計資産としての再利用可能性の評価に利用される。
【0044】
静的タイミング検証部8は、記憶部5に出力された静的タイミング検証適用部分情報に基づいてタイミング検証を行い、その結果を記憶部5に出力する。
【0045】
動的タイミング検証部8は、記憶部5に出力された動的タイミング検証適用部分情報に基づいてタイミング検証を行い、その結果を記憶部5に出力する。
【0046】
回路シミュレーション実行部9は、記憶部5に出力されたクロック情報付き対象回路情報に基づいて配置配線後結果から配置配線情報を伴うクロック情報付き対象回路情報を認識し、記憶部5に格納されたパッケージ固有の抵抗・容量・インダクタンスとボード基板上での配線の抵抗・容量・インダクタンスに基づいて回路シミュレーションを実行し、その結果を記憶部5に出力する。
【0047】
《静的・動的タイミング検証装置の処理手順》
図4は、図1の装置による処理の手順を示すフローチャートである。図4に示す様に、処理が開始されると、まずステップS1において対象回路の中のクロック情報の認識を行う。
【0048】
次に、ステップS1において抽出したクロック情報を元に、ステップS2、S3、S4それぞれにおいて、クロックの選択論理を構成する論理素子、周期的でない信号がクロック端子に供給されているフリップフロップやラッチ、クロックゲートを構成している論理素子を認識する。尚、この明細書に添付した図面においてFFはフリップフロップ、Latchはラッチを意味する。
【0049】
ステップS5では、クロック情報とクロックの選択論理を構成する論理素子の情報を元に、互いに非同期なクロックが供給されているフリップフロップやラッチ間のデータ転送経路を認識する。
【0050】
ステップS6では、クロック情報とクロックの選択論理を構成する論理素子の情報を元に、クロックを生成するかクロックが伝搬する素子のみの回路の接続情報を作成し、クロックの生成箇所の絞り込を行った後、論理シミュレータで新たに構成した回路の接続情報をシミュレーションする事で、クロックの生成箇所でのクロック波形を認識する。
【0051】
上記ステップS1〜S6の処理は、クロック情報抽出部11で実行される。
【0052】
ステップS7では、クロック波形情報を元に、周期的でない信号がクロック端子に供給されているフリップフロップやラッチに対して、クロック波形候補を定義する。
【0053】
ステップS8では、クロックゲートを構成している論理素子の回路構成と、トライステートバッファのイネーブル端子へのパス上に現われる論理素子の回路構成が特定の条件を満たしているか調べる。
【0054】
ステップS9では、クロック波形情報とクロックゲートを構成している論理素子の情報を元に、クロックゲート構成している論理素子へのクロック以外の入力信号経路がマルチサイクルパスである可能性があるかの判定を行う。
【0055】
上記ステップS7〜S9の処理は、回路制約検証部12で実行される。
【0056】
ステップS10では、クロック波形情報、クロックゲートを構成している論理素子の情報、上記マルチサイクルパスの情報を元に、静的タイミング検証装置により、ゲーテッドクロック解析を実行する。このステップS10は、静的タイミング検証部7で実行される。
【0057】
最後にステップS11では、回路構成違反、ゲーテッドクロック解析でのタイミング違反箇所、クロックが定義出来なかった周期的でない信号がクロック端子に供給されているフリップフロップやラッチの情報を元に動的タイミング検証の適用箇所を決定する。このステップS11は、回路分割部13で実行される。
【0058】
図5は、図1の装置によって実行される処理手順のステップS1の内部処理の流れを全体的に示すフローチャートである。図3に示す様に、処理が開始されると、まずステップS1_1において対象回路中の全ネットに対して非周期属性を設定する。
【0059】
次に、ステップS1_2において外部クロックピンからのトレースを行い、2入力以上の素子の入力端子に到達する迄クロック情報を伝搬させる。このように、トレースを実行したネットに対して周期属性を設定する。そのような2入力以上の素子の入力に至るまでのネットには周期性があるのは当然だからである。
【0060】
ステップS1_3においてカウンタ候補の認識を行い、ステップS1_4において、入力信号ネットの属性が変化した素子の出力信号ネットの属性演算を実行し、演算結果の属性を当該素子の出力信号ネットに設定する。
【0061】
次にステップS1_5で、認識したカウンタ候補を構成するフリップフロップ及びラッチのクロック端子への入力信号ネットの属性が非周期か否かの判定を行い、非周期であった場合にはステップS1_7へ、非周期でなかった場合にはステップS1_6へ処理を移行する。
【0062】
ステップS1_6では、構成するフリップフロップ及びラッチのクロック端子への入力信号ネットの属性が非周期でなかったカウンタ候補をカウンタとして認識し直し、当該カウンタを構成する素子の入力・出力信号ネット全てに周期属性を設定し、ステップS1_7へ処理を移行する。
【0063】
ステップS1_7では、属性が更新したネットがあるか否かを判定し、あった場合にはステップS1_4へ処理を移行し、なければ処理を終了する。
【0064】
図6は、ステップS1_3の内部処理の流れを示すフローチャートである。ステップS1_3の処理が開始されると、まずステップS1_3_1において対象回路中の全てのフリップフロップ及びラッチを認識し、その集合をFとする。
【0065】
次に、ステップS1_3_2において対象回路の中のフリップフロップ又はラッチを1つ取り出す。ステップS1_3_3でフリップフロップ及びラッチの集合T_fと論理素子の集合T_cを空集合に設定する。
【0066】
次にステップS1_3_4で、当該端子からのバックトレースが全て終了したか否かの判定を行い、終了していた場合にはステップS1_3_10へ、終了していなかった場合にはステップS1_3_6へ処理を移行する。
【0067】
ステップS1_3_5において、ステップS1_3_2で取り出したフリップフロップ又はラッチのデータ入力端子、セット・リセット端子からバックトレース実行する。バックトレースとは、起点の端子に供給される信号とは逆方向に信号経路を辿ることである。
【0068】
ステップS1_3_6では、バックトレース実行時に到達したネットの属性を識別し、カウンタ属性であった場合はステップS1_3_8へ、アンカウンタ属性であった場合にはステップS1_3_9へ、カウンタ属性でもアンカウンタ属性でもなかった場合にはステップS1_3_7へ処理を移行する。カウンタ属性やアンカウンタ属性とは、ステップS1_3_10において設定される属性のことである。
【0069】
ステップS1_3_7では、バックトレースの到達先が電源・グランド、外部システムリセット端子、ステップS1_3_2で取り出したフリップフロップ又はラッチのデータ出力端子、ユーザ指定のフリップフロップ又はラッチのデータ出力端子、或いはフリップフロップ又はラッチと論理素子の成すループの何れかであるか否かを判定し、何れかであった場合にはステップS1_3_8へ処理を移行し、なければステップS1_3_9へ処理を移行する。
【0070】
ステップS1_3_8では、バックトレース実行中に通過したフリップフロップ及びラッチの集合をT_f1とし、集合T_fをT_f∪T_f1と置き換え、バックトレース実行中に通過した論理素子の集合をT_c1とし、集合T_cをT_c∪T_c1と置き換えた後、ステップS1_3_4へ処理を移行する。ステップS1_3_5、S1_3_6、S1_3_7、及びS1_3_8の繰り返しにより得た集合T_fとT_cの和集合がカウンタ候補である。
【0071】
ステップS1_3_9では、バックトレース実行中に通過したフリップフロップ及びラッチの集合をT_f2とし、集合T_fをT_f2と置き換え、バックトレース実行中に通過した論理素子の集合をT_c2とし、集合T_cをT_c2と置き換えた後、ステップS1_3_10へ処理を移行する。
【0072】
次にステップS1_3_10において、集合FをF−T_fと置き換え、S1_3_4からの分岐で設定されたT_f、T_cのネットにはカウンタ属性を設定し、S1_3_9からの分岐で設定されたT_f、T_cのネットにはアンカウンタ属性を設定する。
【0073】
ステップS1_3_11において、集合Fが空か否かを判定し、空でない場合は処理をステップS1_3_2へ移行し、空の場合は処理を終了する。このようにして、カウンタ候補となるカウンタ属性の素子が認識される。
【0074】
図7は、ステップS1_4の内部処理の流れを示すフローチャートである。ステップS1_4の処理が開始されると、まずステップS1_4_1において対象回路から入力信号ネットの属性が変化した素子を1つ取り出す。
【0075】
次に、ステップS1_4_2において取り出した素子が1入力素子か否か判定し、1入力素子の場合はステップS1_4_3へ、1入力素子でない場合はステップS1_4_4へ処理を移行する。
【0076】
ステップS1_4_3で入力信号ネットの属性を出力信号ネットに設定し、処理をステップS1_4_9へ移行する。
【0077】
ステップS1_4_4では、入力信号ネットの属性が変化した素子が(1)to_clkフラグの立っている素子(出力がクロック入力端子に接続される素子)、(2)to_dataフラグの立っている素子(出力がデータ入力端子に接続され、to_clkフラグの立っていない素子)、(3)FF/Latch、の何れかを判定し、(1)の場合ステップS1_4_6へ、(2)の場合ステップS1_4_5へ、(3)の場合ステップS1_4_3へ処理を移行する。
【0078】
ステップS1_4_6において、入力信号ネットの属性が変化した素子に対して、入力信号ネットの属性が全て周期なら出力信号ネットの属性を周期に設定し、全て非周期ならば出力信号ネットの属性を非周期に設定し、入力信号ネットに少なくとも1つの周期属性ネットと少なくとも1つの非周期属性ネットがある(例えば、少なくとも1入力がクロック信号で、少なくとも1入力がデータである)のなら、出力信号ネットの属性を準周期に設定し、入力信号ネットに少なくとも1つの準周期属性ネットがあり周期属性ネットが1つもないのなら出力信号ネットの属性を準周期に設定し、処理をステップS1_4_9へ移行する。
【0079】
ステップS1_4_5では、入力信号ネットの属性が変化した素子の入力信号が帰還路を形成しているか否かを判定し、帰還路を形成している場合にはステップS1_4_7へ、そうでなければステップS1_4_6へ処理を移行する。
【0080】
ステップS1_4_7では、入力信号ネットの属性が変化した素子の入力信号で帰還路を形成しているネットの属性が周期か否かを判定し、周期の場合はステップS1_4_6へ、そうでなければステップS1_4_8へ処理を移行する。
【0081】
ステップS1_4_8では、当該素子の出力信号ネットに非周期属性を設定し、処理をステップS1_4_9へ移行する。
【0082】
ステップS1_4_9において、入力信号ネットの属性が変化した素子が空か否かを判定し、空でない場合は処理をステップS1_4_1へ移行し、空の場合は処理を終了する。
【0083】
図8は、ステップS1_4_4の内部処理の流れを示すフローチャートである。ステップS1_4_4の処理が開始されると、まずステップS1_4_4_1において対象回路の中のフリップフロップ及びラッチのクロック端子とセット・リセット端子のロジックコーンを取り出す。
【0084】
次に、ステップS1_4_4_2において当該ロジックコーン内の全素子に対してto_clkフラグを立てる。ロジックコーンとは、着目素子がフリップフロップやラッチのデータ出力端子に至るまでの間に存在する論理回路を意味する。
【0085】
ステップS1_4_4_3では、対象回路の中の全てのフリップフロップ及びラッチに対して処理を実行したか否かを判定し、実行されている場合はステップS1_4_4_4へ、実行されていない場合はステップS1_4_4_1へ処理を移行する。
【0086】
ステップS1_4_4_4において対象回路の中のフリップフロップ及びラッチのデータ端子とロジックコーンを取り出す。
【0087】
次に、ステップS1_4_4_5において当該ロジックコーン内のto_clkフラグの立っていない全素子に対してto_dataフラグを立てる。
【0088】
ステップS1_4_4_6では、対象回路の中の全てのフリップフロップ及びラッチに対して処理を実行したか否かを判定し、実行されていない場合はステップS1_4_4_1へ処理を移行し、実行されている場合は処理を終了する。
【0089】
尚、図8におけるステップS1_4_4_4、S1_4_4_5の処理は図38の処理に置き換えることが可能である。
【0090】
図9は、ステップS1_4_4_1の内部処理の流れを示すフローチャートである。ステップS1_4_4_1の処理が開始されると、先ずステップS1_4_4_1_1において対象回路から対象としている素子の対象としている端子を認識する。
【0091】
次にステップS1_4_4_1_2において当該端子へ出力信号ネットが接続されている素子を取り出す。
【0092】
ステップS1_4_4_1_3では、前ステップで取り出した素子の入力端子から、フリップフロップやラッチのデータ出力端子に到達する迄バックトレースを実行し、トレースされた素子とその接続情報から成る回路を構成し、ロジックコーンとして記憶し、処理を終了する。
【0093】
図10は、ステップS3の内部処理の流れを示すフローチャートである。ステップS3の処理が開始されると、ステップS3_1において対象回路から非周期属性のネットがクロック端子の入力信号となっているフリップフロップ及びラッチを認識し、当該素子に対して動的タイミング検証フラグを立て処理を終了する。
【0094】
図11は、ステップS4の内部処理の流れを示すフローチャートである。ステップS4の処理が開始されると、ステップS4_1においてto_clkフラグ立っている論理素子で出力信号ネットが周期属性である論理素子にゲーテッドクロック1フラグを立て、ロジックコーン内の論理素子で出力信号ネットが準周期属性である論理素子にゲーテッドクロック2フラグを立て、処理を終了する。
【0095】
図12は、ステップS2の内部処理の流れを示すフローチャートである。ステップS2の処理が開始されると、先ずステップS2_1において対象回路から合計2本以上の周期属性若くは準周期属性のネットが入力信号となっているものを認識する。
【0096】
次にステップS2_2において、当該素子にクロック選択論理フラグが立っているか否か判定し、立っておればステップS2_3へ、立っていなければステップS2_4へ処理を移行する。
【0097】
ステップS2_3では、クロックの選択論理フラグの立っている素子がクロック切り替え時にハザードを出力しても問題なく回路が正常動作するよう設計しているか否かのユーザ確認を行い、設計していない場合、当該素子に対して動的タイミング検証フラグを立てる。
【0098】
ステップS2_4では、当該素子がクロックの選択論理を構成しているか否かのユーザ確認を行い、構成している場合はステップS2_5へ、構成していない場合はステップS2_6へ処理を移行する。
【0099】
ステップS2_6では、対象素子全てをチェックしたか否かを判定し、チェックしていなければ処理をステップS2_1へ移行し、チェックしていれば処理を終了する。
【0100】
図13は、ステップS2_2の内部処理の流れを示すフローチャートである。ステップS2_2の処理が開始されると、先ずステップS2_2_1において対象回路から合計2本以上の周期属性若くは準周期属性のネットが入力信号となっている素子を認識する。
【0101】
次にステップS2_2_2において、前記認識した素子が、当該素子がマルチプレクサ等の選択論理素子であって、周期属性若くは準周期属性のネットが被選択信号である選択論理を構成しているか否かを判定し、前記選択論理を構成していれば、ステップS2_2_3へ、前記選択論理を構成していなければ、ステップS2_2_4へ処理を移行する。
【0102】
ステップS2_2_3では、当該選択論理を構成する素子にクロックの選択論理フラグを立てる。
【0103】
ステップS2_2_4では、当該素子の準周期入力端子からフリップフロップ又はラッチのデータ出力端子、或いは、周期属性と非周期属性のネットの両方が入力端子に接続されている素子に、到達する迄バックトレースを実行し、トレースされた素子とその接続情報から成る回路を構成する。
【0104】
ステップS2_2_5では、バックトレースでフリップフロップ又はラッチのデータ出力端子に到達したか否かを判定し、到達した場合はステップS2_2_6へ、到達していなかった場合は、ステップS2_2_7へ処理を移行する。
【0105】
次にステップS2_2_6において、当該回路を構成する各素子にクロックの選択論理候補フラグを立てる。
【0106】
次にステップS2_2_7では、当該回路の中の各非周期入力信号ネットに対してフリップフロップ又はラッチのデータ出力端子に到達する迄バックトレースを実行し、各々論理関数を構成し、論理和及び論理積を演算する事で各非周期入力信号の排他性を吟味する。
【0107】
ステップS2_2_9では、当該各非周期入力信号が排他的か否かを判定し、排他的でなければステップS2_2_6へ、排他的であれば処理をステップS2_2_3へ移行する。
【0108】
ステップS2_2_10では、対象素子全てをチェックしたか否かを判定し、チェックしていなければ処理をステップS2_2_1へ移行し、チェックしていれば処理を終了する。
【0109】
図14は、ステップS6の内部処理の流れを示すフローチャートである。ステップS6の処理が開始されると、先ずステップS6_1において対象回路からカウンタを構成する素子、ゲーテッドクロック1フラグが立っている素子、及びゲーテッドクロック2フラグが立っている素子から成る素子のネットリストを構成する。
【0110】
次にステップS6_2において、クロック波形生成の為に論理シミュレータでダンプすべきネットリスト内のポイントを決定する。
【0111】
ステップS6_3では、周期属性のネットが入力されていて準周期属性のネットが出力信号となっている素子で、クロックの選択論理フラグが立っていない素子の入力信号を周期属性が伝搬するよう固定する。
【0112】
ステップS6_4では、周期属性のネットが入力されていて準周期属性のネットが出力信号となっている素子で、クロックの選択論理フラグが立っていない素子がなくなったか否かを判定し、なくなっている場合はステップS6_5へ、なくなっていない場合は再びステップS6_4へ処理を移行する。
【0113】
ステップS6_5では、外部クロック端子、セット・リセット信号、クロックの選択論理フラグの立っている素子への入力パターンを用いて、論理シミュレーションを実行し、ダンプすべきポイントでのシミュレーション結果から波形情報を作成する。
【0114】
ステップS6_6では、ゲーテッドクロック1フラグが立っており入力に非周期属性ネットが接続されていない素子に対して、最小パルス幅の入力信号をクロックとして、その他の入力信号が、入力信号を出力しているフリップフロップまたはラッチに供給されているクロックからみてマルチサイクルパスとなっていないか判定し、なっていれば何サイクル転送かを認識し、処理を終了する。尚、このステップS6_6は省略可能である。前記ステップS6_5のシミュレーションで得られた波形情報を利用しても済むからである。
【0115】
図15は、ステップS6_2の内部処理の流れを示すフローチャートである。ステップS6_2の処理が開始されると、先ずステップS6_2_1においてto_clkフラグの立っている2入力以上の素子を取り出す。
【0116】
次にステップS6_2_2において、当該素子にゲーテッドクロック1フラグが立っているか否かを判定し、立っているならステップS6_2_3へ、立っていないならステップS6_2_4へ処理を移行する。
【0117】
ステップS6_2_3では、当該素子の入力信号と出力信号をゲーテッドクロック解析用ダンプポイントとし、ステップS6_2_7へ処理を移行する。
【0118】
ステップS6_2_4において、当該素子にゲーテッドクロック2フラグが立っているか否かを判定し、立っているならステップS6_2_5へ、立っていないならステップS6_2_6へ処理を移行する。
【0119】
ステップS6_2_5で、当該素子の入力信号ネットの属性が周期ならその周期属性の入力信号をクロック波形生成用のダンプポイントとし、ステップS6_2_6へ処理を移行する。
【0120】
ステップS2_6_8において、対象となる素子全てのチェックが終了したか否かの判定を行い、終了している場合はステップS6_2_7へ、終了していない場合はステップS6_2_1へ処理を移行する。
【0121】
ステップS6_2_6において、to_clkフラグの立っている2入力以上の素子へ出力信号が伝搬しない、周期若くは準周期属性ネットが出力端子に接続されているフリップフロップ及びラッチの出力信号をダンプポイントとし、処理を終了する。
【0122】
図16は、ステップS7の内部処理の流れを示すフローチャートである。ステップS7の処理が開始されると、先ずステップS7_1において対象回路から、ロジックコーンへ信号を出力している全てのフリップフロップ及びラッチのクロック端子につながる信号ネットが周期属性若くは準周期属性である、非同期フリップフロップ及び非同期ラッチのクロック端子及びセット・リセット端子へのロジックコーンを認識する。
【0123】
次にステップS7_2において、当該ロジックコーンへ信号を出力している全てのフリップフロップ及びラッチのクロック端子への信号の中で動作周波数が最大のものが唯1つか否かを判定し、唯1つならステップS7_3へ、2つ以上あるならステップS7_4へ処理を移行する。
【0124】
ステップS7_3では、最大動作周波数のクロックが供給されているフリップフロップ若くはラッチのデータ出力端子に、最大動作周波数の2倍の周期を持つデューティ50%の反転・非反転クロックを設定し、信号属性演算S1_4を実行し、クロックゲートの認識S4を実行した後、処理をS7_5へ移行する。
【0125】
ステップS7_5では、新たに定義したクロックが供給されるフリップフロップ又はラッチと、このフリップフロップ又はラッチとデータの授受を行うフリップフロップ又はラッチとのデータ転送経路に対して、セットアップ条件・ホールド条件が最も厳しくなるクロックは反転なのか非反転なのかを調査し、結果を記憶部6に格納しておき、処理をステップS7_4へ移行する。
【0126】
ステップS7_4において、非同期フリップフロップ及び非同期ラッチのクロック端子へのロジックコーン全てのチェックが終了したか否かの判定を行い、終了していない場合は処理をステップS7_1へ移行し、終了している場合は処理を終了する。
【0127】
図17は、ステップS5の内部処理の流れを示すフローチャートである。ステップS5の処理が開始されると、先ずステップS5_1では、データ出力信号ネットの属性が周期若くは準周期のフリップフロップ及びラッチのクロック端子からデータ出力端子への素子内パスの通過を認める。そして、外部クロック端子から、前記素子内通過が認められたところのゲーテッドクロック1フラグやゲーテッドクロック2フラグの立っている素子のトレースによるクロック情報の伝搬を行い、クロックの選択論理の情報を元に、起こり得るクロックの選択論理の出力クロックの組み合わせの数だけ、各ダンプポイント間をつなぐグラフを構成する。
【0128】
次にステップS5_2において、各グラフに対してグラフの頂点がクロック供給源となっているフリップフロップ及びラッチを認識し、当該グラフの頂点をクロック供給源としないフリップフロップ及びラッチとのデータ転送経路があればそれを非同期転送パスとして抽出し、処理を終了する。
【0129】
図18は、ステップS8の内部処理の流れを示すフローチャートである。ステップS8の処理が開始されると、先ずステップS8_1においてゲーテッドクロック2フラグが立っている素子を取り出す。
【0130】
次にステップS8_2において、当該素子が2入力素子、或いは3入力素子で後段に1入力素子が接続されている状態であるかの何れかであるか否かを判定し、何れでもない場合はS8_4へ、何れかである場合はS8_3へ処理を移行する。
【0131】
ステップS8_4では、当該素子に動的タイミング検証フラグを立て、処理をステップS8_3に移行する。
【0132】
ステップS8_3において、全てのゲーテッドクロック2フラグが立っている素子のチェックが終了したか否かを判定し、未終了の場合は処理をS8_1へ移行し、終了している場合は処理を終了する。
【0133】
尚、上記説明においては、回路制約入力部3に、クロックゲートの回路構成に対する回路制約として、ゲーテッドクロック2フラグが立っている素子が2入力素子であるか、或いは3入力素子であり後段に1入力素子が接続されている状態である事を与えていることを前提としている。
【0134】
図19は、ステップS8の内部処理のもう1つの流れを示すフローチャートである。ステップS8の処理が開始されると、先ずステップS8_5においてトライステート素子を取り出す。次にステップS8_6において、当該素子のイネーブル端子へのロジックコーンを認識する。
【0135】
ステップS8_7では、当該ロジックコーンへの入力信号ネットに周期若くは準周期属性のネットが存在するか否かを判定し、存在した場合はステップS8_8へ、存在しなかった場合はステップS8_9へ処理を移行する。
【0136】
ステップS8_8において、回路構成としてトライステート素子の出力信号を毎サイクルラッチする構成となっていないかユーザ確認し、毎サイクルラッチする構成となっている場合は、当該トライステート素子に動的タイミング検証フラグを立てる。
【0137】
ステップS8_9において、当該ロジックコーン内に2入力以上の論理素子が存在するか否かを判定し、存在した場合はステップS8_10へ、存在しなかった場合はステップS8_11へ処理を移行する。
【0138】
ステップS8_10で、当該トライステート素子に動的タイミング検証フラグを立て、処理をステップS8_11へ移行する。
【0139】
ステップS8_11において、対象回路内の全てのトライステート素子のチェックが終了したか否かの判定を行い、終了していない場合は処理をS8_5へ移行し、終了している場合は処理を終了する。
【0140】
尚、上記説明において、回路制約入力部3に、トライステート素子のイネーブル端子へのロジックコーンの回路構成に対する回路制約として、当該ロジックコーン内に2入力以上の論理素子が存在してはならず、トライステート素子の出力信号がバスホルダ回路(バスリピータ回路例えばインバータ2個で構成されたラッチ回路)による出力信号ネットでのデータ保持を行わなくてもハイインピーダンスとならない事を与えている事を前提としている。
【0141】
図39には、前記ステップS8の内部処理の更に別のフローチャートを示す。ステップS8の処理が開始されると、先ずステップS8_12においてフリップフロップ及びラッチを取り出す。次にステップS8_13において、当該素子のセット・リセット端子へのロジックコーンを認識する。
【0142】
ステップS8_14では、当該素子のセット・リセット端子に接続されているネットの属性が非周期か否かを判定し、非周期だった場合はステップS8_15へ、非周期でなかった場合はステップS8_17へ処理を移行する。
【0143】
ステップS8_15において、当該ロジックコーン内に2入力以上の論理素子が存在するか否かを判定し、存在した場合はステップS8_17へ、存在しなかった場合はステップS8_16へ処理を移行する。
【0144】
ステップS8_16で、当該フリップフロップ又はラッチに動的タイミング検証フラグを立て、処理をステップS8_17へ移行する。
【0145】
ステップS8_17において、対象回路内の全てのフリップフロップ及びラッチに対してのチェックが終了したか否かの判定を行い、終了していない場合は処理をS8_12へ移行し、終了している場合は処理を終了する。
【0146】
尚、図39の説明は、回路制約入力部3に、フリップフロップ及びラッチのセット・リセット端子へのロジックコーンの回路構成に対する回路制約として、当該素子のセット・リセット端子に接続されているネットの属性が非周期以外であるか、ロジックコーンが0個以上の1入力素子のみで構成されている事を与えているのを前提としている。
【0147】
図20は、ステップS9の内部処理の流れを示すフローチャートである。ステップS9の処理が開始されると、先ずステップS9_1においてゲーテッドクロック2フラグが立っていて、且つ少なくとも1本の非周期属性信号が入力信号ネットにつながっている素子を取り出す。
【0148】
ステップS9_2において、当該素子への入力信号の中で属性が準周期なものは、バックトレースを行って周期属性のネットを抽出し、その周期属性信号と置き換え、入力周期属性信号の周期をT_周期とする。
【0149】
ステップS9_3において、当該素子への入力信号の中で属性が非周期なものは、フリップフロップ及びラッチのデータ出力端子に到達する迄バックトレースを行って、到達先のフリップフロップ及びラッチのクロック端子への信号を取り出す。
【0150】
ステップS9_4において、取り出した信号が周期属性か否かを判定し、周期属性の場合はステップS9_5へ、周期属性でない場合はステップS9_6へ処理を移行する。
【0151】
ステップS9_5では、この周期属性の信号の周期をT_非周期とし、処理をステップS9_9へ移行する。ステップS9_4において、取り出した信号が準周期属性か否かを判定し、準周期属性の場合はステップS9_7へ、非周期属性の場合はステップS9_8へ処理を移行する。
【0152】
ステップS9_7では、この準周期属性に対して、バックトレースを行って周期属性のネットを抽出し、その周期属性信号と置き換え、この周期属性信号の周期をT_非周期とし、処理をステップS9_9へ移行する。
【0153】
ステップS9_9では、T_周期とT_非周期の組み合わせに対して、2×T_非周期≧T_周期が成り立つかを判定し、それが成り立つT_非周期を定めている入力非周期信号経路、即ち、ステップS9_1で取り出した素子の非周期属性信号とステップS9_3でバックトレースして到達したフリップフロップ及びラッチとの間のデータ転送経路は、マルチサイクルパスの可能性がある。この為、ユーザ確認を要求し、処理をステップS9_8へ移行する。
【0154】
ステップS9_8において、対象回路内の全てのゲーテッドクロック2フラグが立っている少なくとも1本の非周期属性信号が入力信号ネットにつながっている素子のチェックが終了したか否かの判定を行い、終了していない場合は処理をS9_1へ移行し、終了している場合は処理を終了する。
【0155】
図21は、ステップS10の内部処理の流れを示すフローチャートである。ステップS10の処理が開始されると、先ずステップS10_1においてゲーテッドクロック1フラグが立っている素子を取り出す。
【0156】
ステップS10_2において、当該素子に対して同じ波形の周期属性信号が2本以上入力されているか否かを判定し、入力されている場合は処理をステップS10_3へ、入力されていない場合はステップS10_4へ処理を移行する。
【0157】
ステップS10_3において、当該素子に動的タイミング検証フラグを立て、処理をステップS10_7へ移行する。前記ステップS10_2の判定において同じ波形の周期属性信号が2本以上入力されていると判断されれば、ハザードの虞があるからである。
【0158】
ステップS10_4において、ゲーテッドクロック解析用ダンプポイントの論理シミュレーション結果を元にセットアップ制約チェック、ホールド制約チェックの何れか若くは両方を実施すべきかを決定する。
【0159】
ステップS10_5で、静的タイミング検証によるゲーテッドクロック解析を実行する。ステップS10_6において、セットアップ制約違反又はホールド制約違反があるか否かを判定し、あった場合はステップS10_3へ、なかった場合はステップS10_7へ処理を移行する。
【0160】
ステップS10_7では、対象回路内の全てのゲーテッドクロック1フラグが立っている素子のチェックが終了したか否かの判定を行い、終了していない場合は処理をS10_1へ移行し、終了している場合は処理を終了する。
【0161】
図22は、ステップS10の内部処理のもう1つの流れを示すフローチャートである。ステップS10の処理が開始されると、先ずステップS10_8においてゲーテッドクロック2フラグが立っている素子を取り出す。
【0162】
ステップS10_9において、当該素子への入力信号の中で属性が準周期なものは、バックトレースを行って周期属性信号を抽出し、この周期属性信号と置き換える。
【0163】
ステップS10_10において、当該素子に対して同じ波形の周期属性信号が2本以上入力されているか否かを判定し、入力されている場合は処理をステップS10_11へ、入力されていない場合はステップS10_12へ処理を移行する。
【0164】
ステップS10_11において、当該素子に動的タイミング検証フラグを立て、処理をステップS10_14へ移行する。前記ステップS10_10の判定において同じ波形の周期属性信号が2本以上入力されていると判断されれば、ハザードの虞があるからである。
【0165】
ステップS10_12において、ゲーテッドクロック解析用ダンプポイントの論理シミュレーション結果を元にセットアップ制約チェック、ホールド制約チェックの何れか若くは両方を実施すべきかを決定する。
【0166】
ステップS10_13で、静的タイミング検証装置によるゲーテッドクロック解析を実行する。ステップS10_14において、セットアップ制約違反又はホールド制約違反があるか否かを判定し、あった場合はステップS10_11へ、なかった場合はステップS10_15へ処理を移行する。
【0167】
ステップS10_15では、対象回路内の全てのゲーテッドクロック2フラグが立っている素子のチェックが終了したか否かの判定を行い、終了していない場合は処理をS10_8へ移行し、終了している場合は処理を終了する。
【0168】
図23は、ステップS11の内部処理の流れを示すフローチャートである。ステップS11の処理が開始されると、先ずステップS11_1において動的タイミング検証フラグから動的タイミング検証適用回路を認識する。
【0169】
次にステップS11_2において積集合が空でない動的タイミング検証適用回路の和集合を構成する。ステップS11_3において、各和集合と各論理階層との積集合を演算する。
【0170】
ステップS11_4において、対象回路内の全ての動的タイミング検証適用回路のチェックが終了したか否かを判定し、終了している場合は処理をステップS11_5へ、終了していない場合はステップS11_1へ処理を移行する。
【0171】
ステップS11_5では、各論理階層における動的タイミング検証適用回路の割合を算出する。ステップS11_6において、その割合が100%になる論理階層があるか否かを判定し、あった場合はステップS11_7へ、なかった場合はステップS11_8へ処理を移行する。
【0172】
ステップS11_7では、当該論理階層処理を動的タイミング検証適用階層とし、処理をステップS11_8へ移行する。
【0173】
ステップS11_8で、動的タイミング検証装置で動的タイミング検証を実行した後、処理を終了する。
【0174】
尚、前述の図23は、図20のステップS10_5とS10_6、及び図21のステップS10_12とS10_13を実行しない場合の処理フローを示している。図20のステップS10_5とS10_6、及び図21のステップS10_12とS10_13を実行する場合には、図23のステップS11_1_5、S11_1_6、S11_1_7、及びS11_1_8を実行しないことになる。
【0175】
図24は、ステップS11_1の内部処理の流れを示すフローチャートである。ステップS11_1の処理が開始されると、先ずステップS11_1_1において動的タイミング検証フラグが立っている素子を取り出す。
【0176】
ステップS11_1_2において、当該素子が(1)フリップフロップ若しくはラッチ、又はフリップフロップ若しくはラッチのデータ入力端子或いはセット・リセット端子へのロジックコーン内の論理素子、(2)フリップフロップ又はラッチのクロック端子へのロジックコーン内の論理素子、の何れであるかを判定し、(1)の場合はステップS11_1_3へ、(2)の場合はステップS11_1_4へ処理を移行する。
【0177】
ステップS11_1_3において、トレース実行時にフリップフロップ及びラッチ内のパスであるのデータ出力端子とセット・リセット端子間のパスは通過可能として、当該素子の入力端子からフリップフロップのデータ出力端子に到達する迄バックトレースを実行し、当該素子の出力端子からフリップフロップのデータ入力端子に到達する迄フォワードトレースを実行する。これらのトレースで通過した素子と到達先のフリップフロップを動的タイミング検証適用回路とした後、処理をステップS11_1_9へ移行する。
【0178】
ステップS11_1_4では、当該素子に対してステップS11_1_3を実行して得られるものを動的タイミング検証適用回路1とし、これと当該素子の出力信号をトレースにより伝搬させ到達したクロック端子を備えるフリップフロップ及びラッチに対してステップS11_1_3を実行して得られるものとの和集合を動的タイミング検証適用回路2とする。
【0179】
ステップS11_1_5では、動的タイミング検証適用回路1に対して動的タイミング検証を実行する。ステップS11_1_6では、動的タイミング検証適用回路1における素子の出力信号にハザードが発生したか否かを判定し、発生した場合はステップS11_1_7へ、発生しなかった場合はステップS11_1_8へ処理を移行する。
【0180】
ステップS11_1_7では、動的タイミング検証適用回路2のみを動的タイミング検証適用回路とし、処理をS11_1_9へ移行する。
【0181】
ステップS11_1_8では、動的タイミング検証適用回路1及び2を削除する。
【0182】
ステップS11_1_9では、対象回路内の全ての動的タイミング検証フラグが立っている素子のチェックが終了したか否かの判定を行い、終了していない場合は処理をS11_1_1へ移行し、終了している場合は処理を終了する。
【0183】
図25は、ステップS11_8の内部処理の流れを示すフローチャートである。ステップS11_8の処理が開始されると、ステップS11_8_1において積集合が空でない動的タイミング検証適用回路の和集合の構成素子とその接続情報を構成し、入力パターンを用いて動的タイミング検証を実行した後、処理を終了する。
【0184】
図26は、ステップS11_8の内部処理の流れの別の例を示すフローチャートである。ステップS11_8の処理が開始されると、ステップS11_8_1において、動的タイミング検証適用回路を構成する素子とネット、動的タイミング検証適用回路内のフリップフロップ及びラッチのクロック端子へのクロックツリー上の全素子及び全ネットに遅延情報を与える。
【0185】
次にステップS11_8_2において、動的タイミング検証適用回路の境界を構成するフリップフロップとの間でデータ授受を行う動的タイミング検証非適用回路内のフリップフロップ及びラッチに対して、データ転送が可能となるよう、動的タイミング検証適用回路の境界を構成するフリップフロップとの間でデータ授受を行う動的タイミング検証非適用回路内のフリップフロップ及びラッチへのクロックツリー上における全素子及び全ネットの遅延値を調整する。ステップS11_8_3で動的タイミング検証を実行した後、処理を終了する。
【0186】
《具体的な対象回路に対する処理例》
次に、対象回路の一例を挙げて、カウンタ候補の認識S1_3による処理の具体例について説明する。図27は、対象回路の一例を示す回路図である。この対象回路は、外部からデータ信号が入力される外部入力ピンDIN、外部からイネーブル信号が入力される外部入力ピンENABLE、外部からリセット信号が入力される外部入力ピンRST、外部からクロック信号が入力される外部入力ピンCLK、及び、外部へデータ信号を出力する外部出力ピンDOUTを備えている。
【0187】
素子G1、G2、G3、G4は、何れも論理素子であり、素子FF1、FF2、FF3、FF4、FF5、FF6は、何れもフリップフロップである。先ずステップS1_3_1により、対象回路の中のフリップフロップ及びラッチの集合F={FF1、FF2、FF3、FF4、FF5、FF6}のテーブルが記憶部5に格納される。
【0188】
次にステップS1_3_2で、FF1を集合Fから取り出す。ステップS1_3_3では、ステップS1_3_4 以降で実行されるトレースによりトレースされたフリップフロップ及びラッチの集合をT_f、論理素子の集合をT_cとし、各々空集合に設定し、記憶部5に格納する。
【0189】
ステップS1_3_5でFF1のデータ入力端子dからバックトレースを実行すると、素子G1、FF2、FF1のデータ出力端子qに到達し、FF1のリセット端子sdnからバックトレースを実行すると、ユーザ指定のフリップフロップFF3に到達する。
【0190】
ステップS1_3_6では前記で到達したネットの属性による分岐を実行すると、カウンタ属性でもアンカウンタ属性でもないので、ステップS1_3_7へ処理を移行する。
【0191】
ステップS1_3_7で到達先による分岐を実行すると、到達先がFF1のデータ出力端子qとユーザ指定のフリップフロップFF3であるので、ステップS1_3_8へ処理を移行する。
【0192】
次にステップS1_3_8において、T_f={FF1、FF2}、T_c={G1}とし、記憶部5に格納する。
【0193】
ステップS1_3_10では、F={FF3、FF4、FF5、FF6}とし、T_fとT_cの成すネットに対してカウンタ属性を設定し、記憶部5に格納する。ステップS1_3_11でFが空集合ではないので、処理をステップS1_3_2へ移行する。
【0194】
次にステップS1_3_2で、FF5をFから取り出す。ステップS1_3_3では、ステップS1_3_5 以降で実行されるトレースによりトレースされたフリップフロップ及びラッチの集合をT_f、論理素子の集合をT_cとし、各々空集合に設定し、記憶部5に格納する。
【0195】
ステップS1_3_5でFF5のデータ入力端子dからバックトレースを実行すると、素子G3、FF5のデータ出力端子qに到達するパス、素子G3、FF4、G2、FF5のデータ出力端子qに到達するパス、及び素子G3、FF4、G2、FF1の出力端子に接続されているカウンタ属性ネットに到達するパスを認識する。
【0196】
ステップS1_3_6やステップS1_3_7での分岐を実行し、ステップS1_3_7へ処理を移行する。ステップS1_3_8において、T_f={FF4、FF5}、T_c={G3、G2}とし、記憶部5に格納する。
【0197】
ステップS1_3_10では、F={FF3、FF6}とし、T_fとT_cの成すネットに対してカウンタ属性を設定し、記憶部5に格納する。ステップS1_3_11でFが空集合ではないので、処理をステップS1_3_2へ移行する。
【0198】
FF3及びFF6に対して、S1_3を実行すると、各々バックトレースの到達先が外部端子であるため、S1_3_9を介してS1_3_10に処理が移行し、アンカウンタ属性を設定し、処理を終了する。
【0199】
次に、別の対象回路の一例を挙げて、属性演算S1_4による処理の具体例について説明する。図28は、対象回路の一例を示す回路図である。この対象回路は、素子FF1、FF2のcp端子に接続されているネットは周期属性であり、素子G1のa1端子に接続されているネットは周期属性であり、素子G1のa2端子に接続されているネットは非周期属性であり、素子G2のa2端子に接続されているネットは周期属性である。
【0200】
素子G1、G2は、何れも論理素子であり、素子FF1、FF2、FF3は、何れもフリップフロップである。素子G1にはto_clkフラグが、素子G2にはto_dataフラグが立っている。また、図面の素子G1のa1端子及びG2のa2端子への入力信号の属性が変化した状態だとする。
【0201】
先ずステップS1_4_1で入力信号属性が変化した素子G1、G2を認識し、記憶部5へ格納する。ステップS1_4_2では、素子G1及びG2が1入力素子であるか否かの判定を行い、1入力素子ではないので、ステップS1_4_4へ処理を移行する。
【0202】
ステップS1_4_4では、素子G1及びG2のフラグ判定を行い、素子G1はto_clkフラグが立っているのでステップS1_4_6へ、素子G2はto_dataフラグが立っているのでステップS1_4_5へ処理を移行する。
【0203】
ステップS1_4_5では、素子G2の入力信号で帰還路を形成しているものがあるか否かの判定を行い、素子G2のa3端子への信号が帰還路を形成しているので、処理をステップS1_4_7へ移行する。
【0204】
次にステップS1_4_7では、帰還路を形成している素子G2のa3端子に接続されていネットnet1がクロック情報の認識S1の最初のステップS1_1において、非周期属性に設定されているので、処理をS1_3_8へ移行する。
【0205】
ステップS1_3_8において、素子G2の出力信号が接続されているネットnet3に非周期属性を設定し、記憶部5へ格納し、処理をステップS1_4_9へ移行する。
【0206】
一方、ステップS1_4_6では、素子G1のa1入力端子に接続されているネットが周期属性であり、a2入力端子に接続されているネットが非周期属性であるので、素子G1の出力信号が接続されているネットnet2に準周期属性を設定し、記憶部5へ格納し、処理をステップS1_4_9へ移行する。
【0207】
ステップS1_4_9において、データ入力信号ネットの属性が変化した素子があるか否かを判定し、当回路例の場合、データ入力信号ネットの属性が変化した素子はないので、処理を終了する。
【0208】
次に、別の対象回路の一例を挙げて、属性演算S1_4による処理の具体例について説明する。図29は、対象回路の一例を示す回路図である。この対象回路は、素子G1のa2端子、素子G2のa1端子、素子G3のa1及びa2端子、及び素子G6のa1及びa2端子への信号はフリップフロップ又はラッチのデータ出力端子からの信号である。
【0209】
素子G1、G2、G3、G4、G5、G6は、何れも論理素子であり、素子FF1、FF2は、何れもフリップフロップでる。
【0210】
先ずステップS1_4_4_1でFF1及びFF2のcp端子へのロジックコーンを認識し、記憶部5へ格納する。当回路図の場合、 FF1及びFF2のcp端子へのロジックコーンは、G1、G2、G3からなる回路である。
【0211】
ステップS1_4_4_2で、素子G1、G2、及びG3にto_clkフラグを立て、記憶部5へ格納する。
【0212】
ステップS1_4_4_3で対象回路内の全てのフリップフロップ及びラッチに対して処理を実行したか否か判定し、全てに対して実行しているので、処理をステップS1_4_4_4へ移行する。
【0213】
ステップS1_4_4_5でFF2のd端子へのロジックコーンを認識すし、記憶部5へ格納する。当回路図の場合、 FF2のd端子へのロジックコーンは、G3、G4、G5、G6からなる回路である。
【0214】
次にステップS1_4_4_6で、to_clkフラグの立っていない素子G4、G5、G6に対してto_dataフラグを立て、記憶部5へ格納する。
【0215】
ステップS1_4_4_3で対象回路内の全てのフリップフロップ及びラッチに対して処理を実行したか否か判定し、全てに対して実行しているので、処理を終了する。
【0216】
次に、別の対象回路の一例を挙げて、属性演算S1_4_4_1による処理の具体例について説明する。図30は、対象回路の一例を示す回路図である。この対象回路は、素子G3のa1及びa2端子、素子G5のa1端子、及び素子G6のa1及びa2端子への信号はフリップフロップ又はラッチのデータ出力端子からの信号である。
【0217】
素子G1、G2、G3、G4、G5、G6は、何れも論理素子である。先ずステップS1_4_4_1_1で素子G1のa1端子を認識し、記憶部5へ格納する。
【0218】
ステップS1_4_4_1_2で、素子G1のa1端子に接続されている素子G2を認識し、記憶部5へ格納する。
【0219】
ステップS1_4_4_1_3で素子G2のa1端子からバックトレースを実行し素子G3を取出す。素子G3のa1及びa2端子への信号はフリップフロップ又はラッチのデータ出力端子からの信号である為、素子G2のa2端子からバックトレースを実行し素子G4を取出す。素子G4のa1端子への信号はフリップフロップ又はラッチのデータ出力端子からの信号である為、素子G4のa2端子からバックトレースを実行し素子G5を取出す。素子G5のa1端子への信号はフリップフロップ又はラッチのデータ出力端子からの信号である為、素子G4のa3端子からバックトレースを実行し素子G6を取出す。素子G6のa1端子への信号はフリップフロップ又はラッチのデータ出力端子からの信号である為、バックトレースを終了し、トレース結果により得られた素子G2、G3、G4、G5、G6から成る回路を構成し、G1のa1端子へのロジックコーンとして記憶部5へ格納し、処理を終了する。
【0220】
次に、別の対象回路の例を挙げて、クロック選択論理フラグS2_2による処理の具体例について説明する。図31は、対象回路の一例を示す回路図である。この対象回路は、素子G1のa1及びa2端子には周期又は準周期属性のネットが接続されており、素子G1のa3端子には非周期属性のネットが接続されている。
【0221】
素子G1は論理素子である。先ずステップS2_2_1において、周期属性と準周期属性のネットが2本以上入力端子に接続されている素子G1を認識し、記憶部5へ格納する。
【0222】
次にステップS2_2_2において、素子G1がマルチプレクサ素子であるので、処理をステップS2_2_3へ移行する。
【0223】
ステップS2_2_3で素子G1に対して、クロック選択論理フラグを立てる。ステップS2_2_10で処理を終了する。
【0224】
また、図32は、対象回路のもう一例を示す回路図である。この対象回路は、素子G1のa1、a2、a3、及びa4端子には準周期属性のネットが接続されており、素子G2、G3、G4、G5のa1端子には非周期属性のネットが接続されており、素子G2、G3、G4、G5のa2端子には周期属性のネットが接続されており、素子G6、G7、G8、G9のa1及びa2端子にはフリップフロップ又はラッチのデータ出力端子からの信号が接続されている。
【0225】
素子G1、G2、G3、G4、G5、G6、G7、G8、G9は論理素子である。先ずステップS2_2_1において、周期属性と準周期属性のネットが2本以上入力端子に接続されている素子G1を認識し、記憶部5へ格納する。
【0226】
次にステップS2_2_2において、素子G1がマルチプレクサ素子ではないので、処理をステップS2_2_4へ移行する。
【0227】
ステップS2_2_4において、素子G1のa1、a2、a3、及びa4端子からバックトレースを実行し、周期属性と非周期属性のネットが入力端子に接続されている素子G2、G3、G4、G5を認識し、他素子との接続情報と共に記憶部5へ格納する。
【0228】
ステップS2_2_5において、バックトレースにおいてフリップフロップ又はラッチのデータ出力端子には到達しなかったので、処理をステップS2_2_7へ移行する。
【0229】
ステップS2_2_7では、素子G2、G3、G4、G5のa1端子からバックトレースを実行し、フリップフロップ又はラッチのデータ出力端子からの信号が入力端子に接続されている素子G6、G7、G8、G9を認識し、素子G2、G3、G4、G5のa1端子への入力論理関数を構成し、論理積及び論理和を演算し、結果を記憶部5へ格納する。この回路図の場合、素子G2のa1端子への入力論理関数はa・b、素子G3のa1端子への入力論理関数はa・/b(記号/はこれが付された信号の論理反転を意味する)、素子G4のa1端子への入力論理関数は/a・b、素子G5のa1端子への入力論理関数は/a・/bである。素子G2〜G5の出力の論理積は、
(a・b)・(a・/b)・(/a・b)・(/a・/b)=0
であり、論理和は
(a・b)+(a・/b)+(/a・b)+(/a・/b)=1
である。
【0230】
ステップS2_2_9において、論理積が0、論理和が1である事から排他的であるので、処理をステップS2_2_3へ移行する。
【0231】
ステップS2_2_3で素子G1、G2、G3、G4、G5に対して、クロック選択論理フラグを立てる。ステップS2_2_10で処理を終了する。
【0232】
次に、別の対象回路の一例を挙げて、非同期フリップフロップ及び非同期ラッチのクロック波形候補の抽出S7による処理の具体例について説明する。図33は、対象回路の一例を示す回路図である。この対象回路は、外部から3種類のクロック信号が入力される外部入力ピンCLK1、CLK2、CLK3、外部からデータ信号が入力される外部入力ピンDIN、及び、外部へデータ信号を出力する外部出力ピンDOUTを備えている。
【0233】
素子FF1、FF2、FF3、FF4は、何れもフリップフロップであり、組み合わせ回路は内部に帰還路を持たない組み合わせ回路である。また、net1は非周期属性ネットである。
【0234】
先ずステップS7_1において、net1とクロック端子cpへの信号が周期属性であり出力端子がnet1に接続されている素子FF1を認識し、記憶部5へ格納する。
【0235】
次にステップS7_2において、素子FF2のcp端子に接続されている素子はFF1しか存在しないので、処理をステップS7_3へ移行する。
【0236】
ステップS7_3で素子FF1のデータ出力端子qに対して、図34に示すCLK1の2倍の周期を持つデューティ50%の反転クロックであるFF2の反転仮想クロック、及びCLK1の2倍の周期を持つデューティ50%の非反転クロックであるFF2の非反転仮想クロックを定義し、記憶部5へ格納する。
【0237】
ステップS7_5で、図34に示すタイミングチャートを作成し、FF3からのデータ転送におけるセットアップ解析にはFF2の反転仮想クロックを、ホールド解析にはFF2の非反転仮想クロックを用いる事が最も厳しい条件であり、FF4へのデータ転送におけるセットアップ解析にはFF2の非反転仮想クロックを、ホールド解析にはFF2の反転仮想クロックを用いる事が最も厳しい条件である事を記憶部5へ格納する。ステップS7_4で処理を終了する。
【0238】
次に、別の対象回路の一例を挙げて、非同期転送抽出S7による処理の具体例について説明する。図35は、対象回路の一例を示す回路図である。この対象回路は、外部から2種類のクロック信号が入力される外部入力ピンCLK1、CLK2、外部からクロック切り替え信号が入力される外部入力ピンSEL、外部からデータ信号が入力される外部入力ピンDIN、及び、外部へデータ信号を出力する外部出力ピンDOUTを備えている。
【0239】
素子FF1、FF2、FF3、FF4、FF5、FF6は、何れもフリップフロップであり、素子G1、G2、G3、G4は論理素子であり、素子G2にはクロック選択論理素子フラグが立っている。
【0240】
また、FF1のデータ出力端子q、及び素子G4の出力端子はクロック波形生成用のダンプポイントである。
【0241】
先ずステップS5_1において、頂点の集合V1={CLK1、FF1、G4}、辺の集合A1={(CLK1、FF1)、(FF1、G4)}である有向グラフ(V1、A1)、及び頂点の集合V2={CLK2、G4}、辺の集合A2={(CLK2、G4)}である有向グラフ(V2,A2)を構成し、記憶部5へ格納する。
【0242】
次にステップS5_2で、有向グラフ(V1、A1)の頂点をクロックソースとするフリップフロップ及びラッチの集合F1={FF5、FF6}、有向グラフ(V2、A2)の頂点をクロックソースとするフリップフロップ及びラッチの集合F2={FF4、FF6}を認識し、記憶部5へ格納し、素子FF4、FF5、FF6でデータ授受を行っているペアの集合P={(FF4、FF5)、(FF5、FF6)}を認識し、記憶部5へ格納し、F1に含まれるフリップフロップ及びラッチと有向グラフ(V1、A1)の頂点をクロックソースとしないフリップフロップ及びラッチとのデータ転送(FF4、FF5)を非同期転送として認識し、F2に含まれるフリップフロップ及びラッチと有向グラフ(V2、A2)の頂点をクロックソースとしないフリップフロップ及びラッチとのデータ転送(FF4、FF5)及び (FF5、FF6)を非同期転送として認識し、この結果からクロック選択論理素子G2の状態に関わらず、データ転送(FF4、FF5)は非同期転送であり、クロック選択論理素子G2により有向グラフ(V2、A2)が選択されたときのみデータ転送(FF5、FF6)が非同期転送である事を認識し、記憶部5へ格納し、処理を終了する。
【0243】
このように、非同期転送経路若しくは当該経路を構成する素子を認識するのに、クロック端子からデータ出力端子への素子内パスの通過を認め、外部端子から前記通過を認めた素子やマルチプレクサなどのクロック選択素子を通るクロックパスを、クロックソース間を結ぶグラフで表現し、そのグラフのクロックソースを用いる素子の集合を把握する。そして、第iのグラフのクロックソースをクロックソースとする素子と第iのグラフのクロックソースをクロックソースとしない素子との間のデータ転送を非同期転送として認識する。非同期転送と認識された経路の素子が、選択論理の前段で異なるグラフの頂点をクロックソースとするものであれば、その経路は常時非同期転送である。一方、非同期転送と認識された経路の素子が、選択論理の前後で同一グラフの頂点をクロックソースとするものであれば、その経路は選択論理の選択状態に応じて非同期転送になる。この非同期転送経路の認識方法(非同期転送経路抽出処理)は、マルチプレクサのようなクロック選択論理毎に分断してクロック経路を把握する手法に比べて、コンピュータによる演算データ量が少なく、それ故に、コンピュータによる演算やテーブル作成のために必要なメモリ容量を小さくすることができ、データ処理も速く完了することができる。
【0244】
次に、別の対象回路の一例を挙げて、マルチサイクルパス候補の抽出S9による処理の具体例について説明する。図36は、対象回路の一例を示す回路図である。この対象回路は、外部から2種類のクロック信号が入力される外部入力ピンCLK1、CLK2、外部からデータ信号が入力される外部入力ピンDIN、及び、外部へデータ信号を出力する外部出力ピンDOUTを備えている。
【0245】
素子FF1は、フリップフロップであり、素子G1は論理素子であり、素子G1にはゲーテッドクロック2フラグが立っており、net1は非周期属性である。
【0246】
先ずステップS9_1においてゲーテッドクロック2フラグが立っている素子G1を取りだし、記憶部5へ格納する。
【0247】
次にステップS9_2で、素子G1のa1端子に接続されているネットの属性が周期的なので、CLK1の周期をT_周期とし、記憶部5へ格納する。
【0248】
ステップS9_3で、素子G1のa2端子に接続されているネットの属性が非周期的なので、バックトレースを実行し、フリップフロップFF1を認識し、FF1のcp端子に接続されているネットの属性を記憶部5へ格納する。
【0249】
ステップS9_4では、FF1のcp端子に接続されているネットの属性が周期属性であるので、処理をステップS9_5へ移行する。
【0250】
ステップS9_5において、CLK2の周期をT_非周期とし、記憶部5へ格納し、処理をステップS9_9へ移行する。
【0251】
ステップS9_9において、2×T_周期≧T_非周期であるので、素子FF1のクロック端子cpから素子G1の入力端子a2迄のパスをマルチサイクルパス候補として記憶部5へ格納し、出力部10よりユーザへ情報提示を行い、遅延情報入力部2からユーザが前記パスがマルチサイクルパスかどうか判断した結果を入力し、もしユーザがマルチサイクルパスだと判断した場合は、遅延情報入力部2からユーザが指示したセットアップとホールドに対してのサイクル数と共に、前記パスをマルチサイクルパスとして記憶部5に格納し、もしユーザがマルチサイクルパスでないと判断した場合は、前記パスをシングルパスとして記憶部5に格納し、処理をステップS9_8へ移行する。ステップS9_8において処理を終了する。
【0252】
以上説明した静的・動的タイミング検証方法はコンピュータがプログラムを実行して実行される。静的・動的タイミング検証プログラムは、以上説明した静的・動的タイミング検証方法による処理内容をC言語のような高級言語で記述したソースプログラムを元に、これをコンパイルして、ターゲットとするコンピュータ固有のオブジェクトコードに変換された機械語プログラム(オブジェクトプログラム)である。
【0253】
この静的・動的タイミング検証プログラムは、特に制限されないが、磁気テープ、フロッピーディスク、ハードディスク、CD−ROM、MO(マグネット−オプチカル・ディスク)などの記憶媒体に、コンピュータによって読取り可能に記憶されている。
【0254】
図40には記憶媒体から静的・動的タイミング検証プログラムを読取って実行するコンピュータの一例が示される。
【0255】
同図に示されるコンピュータ100は、エンジニアリングワークステーションやパーソナルコンピュータのようなコンピュータであり、プロセッサ及びメモリなどを実装したプロセッサボード、そして各種インタフェースボードを搭載した本体101に、ディスプレイ102、キーボード103、ディスクドライブ104などの代表的に示された周辺機器が接続されて構成される。
【0256】
前述の静的・動的タイミング検証プログラムは、記憶媒体105に格納されている。記憶媒体105は、特に制限されないが、前記ディスクドライブ104に装着されて、それに記憶されている静的・動的タイミング検証プログラムがコンピュータの本体101に読み込まれる。例えば、読み込まれた静的・動的タイミング検証プログラムは、コンピュータ本体101のメモリにロードされ、ロードされたプログラムを順次解読しながら、前述の静的・動的タイミング検証を行っていく。また、記憶媒体から読み込まれた静的・動的タイミング検証プログラムはコンピュータ本体101に備え付けのハードディスク装置の磁気記憶媒体にインストールされて、そこから随時メモリにロードされて実行されても良い。この場合、静的・動的タイミング検証プログラムをデータ圧縮した状態で記憶媒体105に格納しておき、前記ハードディスクへのインストールに際して伸長してもよい。それらの場合等において、静的・動的タイミング検証プログラムを格納したコンピュータ読取り可能な記憶媒体は、そのまま実行可能な形態或いはデータ圧縮された状態で静的・動的タイミング検証プログラムを格納する前記記憶媒体105或いはコンピュータ本体101に内蔵されているハードディスク装置の磁気記憶媒体等、何れも該当する。
【0257】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【0258】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【0259】
すなわち、クロック情報認識手段を有することにより、クロック信号が入力される外部入力ピンへのクロック情報と、セットまたはリセット信号が入力される外部入力ピンの情報と、対象回路内のカウンタの同期・非同期セット・リセットまたは同期・非同期ロードに用いるフリップフロップ又はラッチ素子の情報から、内部で生成されたクロックの情報を自動的に認識する事ができる。これによって対象回路の同期回路、非同期回路の識別が容易化される。
【0260】
タイミング検証不要な非同期転送経路(を構成する回路部分)を認識するので、対象回路内の非周期信号がクロックとして供給されているフリップフロップ及びラッチを介したデータ転送経路と、互いに非同期な信号、即ち電源投入時での前記信号間の位相差が定義不能な信号がクロックとして供給されているフリップフロップ及びラッチ間のデータ転送経路を別々の非同期転送経路として認識する事が出来る。
【0261】
対象回路の中でゲーテッドクロック回路(クロックゲート)に対してセットアップ・ホールド解析を実行できる。
【0262】
ゲーテッドクロック回路を構成している論理素子へのクロック属性を持たない入力信号のマルチサイクルパスを認識するから、疑似エラーを予め排除した静的タイミング検証によるゲーテッドクロック回路のセットアップ・ホールド解析を実行することができる。
【0263】
フリップフロップ及びラッチ間のデータ転送経路の認識において、前記データ転送経路の両端のフリップフロップ又はラッチへ供給されるクロックの組み合わせを予め検証する事が出来る。
【0264】
クロック以外の信号がクロック端子に供給されているフリップフロップ及びラッチに対して、仮想的なクロックが定義可能かを判定して仮想クロックを設定するから、非同期回路に対しても静的タイミング検証が適用できる。換言すれば、非同期回路を周期回路と非周期回路に分類して、周期回路に静的タイミング検証を可能にするものである。結果として、大幅な検証工数の削減が期待できる。
【0265】
静的タイミング検証適用回路部分と動的タイミング検証適用回路部分を識別できるので、同期回路部分でのハザード解析を必要とする回路部分の認識と当該回路部分への動的タイミング検証が実行できる。
【0266】
信号の伝達経路に沿ってフリップフロップが現われる迄を動的タイミング検証適用回路部分に含めることにより、動的タイミング検証適用回路部分への静的タイミング検証適用回路部分からのデータ転送経路における信号遅延時間を考慮しないで、動的タイミング検証適用回路部分の動的タイミング検証を実行することができる。
【0267】
動的タイミング検証適用回路部分と対象回路の中の論理階層との対応を識別するので、動的タイミング検証実行すべき論理階層を認識できる。したがって、論理検証時に予め作成されている各論理階層への入力信号情報を流用して動的タイミング検証を実行する事ができ、検証工数の削減が期待できる。
【0268】
静的タイミング検証適用回路部分の入力端子及び出力端子に最も近い前記動的タイミング検証適用回路部分内のフリップフロップから信号の伝達経路に沿って前記動的タイミング検証適用回路部分外のフリップフロップ及びラッチを識別し、識別されたフリップフロップ及びラッチへのクロック信号の伝搬遅延を、対象回路に遅延情報を与える際に前記動的タイミング検証適用回路部分と前記動的タイミング検証適用回路部分内のフリップフロップ及びラッチへのクロック信号の伝搬遅延のみを与えるだけで動的タイミング検証が可能となるよう調整する。これにより、動的タイミング検証適用回路部分に対してのみ遅延情報を与える事で、対象回路全体の動的タイミング検証を実行でき、且つ論理検証時に予め作成されている対象回路全体の入力信号情報の流用ができる。したがって、検証時間と検証工数の削減が期待できる。
【図面の簡単な説明】
【図1】本発明に係る静的・動的タイミング検証装置の一例を全体的に示すブロック図である。
【図2】本発明者が先に検討した静的・動的タイミング検証方法の一例処理を全体的に示すフローチャートである。
【図3】本発明に係る静的・動的タイミング検証方法による処理の一例を全体的に示すフローチャートである。
【図4】本発明に係る静的・動的タイミング検証方法による処理の一例を図3とは別の観点から示したフローチャートである。
【図5】図4のステップS1の内部処理の一例を示すフローチャートである。
【図6】図5のステップS1_3の内部処理の一例を示すフローチャートである。
【図7】図5のステップS1_4の内部処理の一例を示すフローチャートである。
【図8】図7のステップS1_4_4の内部処理の一例を示すフローチャートである。
【図9】図8のステップS1_4_4_1の内部処理の一例を示すフローチャートである。
【図10】図4のステップS3の内部処理の一例を示すフローチャートである。
【図11】図4のステップS4の内部処理の一例を示すフローチャートである。
【図12】図4のステップS2の内部処理の一例を示すフローチャートである。
【図13】図12のステップS2_2の内部処理の一例を示すフローチャートである。
【図14】図4のステップS6の内部処理の一例を示すフローチャートである。
【図15】図13のステップS6_2の内部処理の一例を示すフローチャートである。
【図16】図4のステップS7の内部処理の一例を示すフローチャートである。
【図17】図4のステップS5の内部処理の一例を示すフローチャートである。
【図18】図4のステップS8の内部処理の一例を示すフローチャートである。
【図19】図4のステップS8のもう1つの内部処理の一例を示すフローチャートである。
【図20】図4のステップS9の内部処理の一例を示すフローチャートである。
【図21】図4のステップS10の内部処理の一例を示すフローチャートである。
【図22】図4のステップS10のもう1つの内部処理の一例を示すフローチャートである。
【図23】図4のステップS11の内部処理の一例を示すフローチャートである。
【図24】図23のステップS11_1の内部処理の一例を示すフローチャートである。
【図25】図23のステップS11_8の内部処理の一例を示すフローチャートである。
【図26】実施の形態2のステップS11_8の内部処理の一例を示すフローチャートである。
【図27】対象回路の一例であるカウンタ候補回路の回路図である。
【図28】対象回路の一例である属性演算回路の回路図である。
【図29】対象回路の一例である場合分け回路の回路図である。
【図30】対象回路の一例であるロジックコーン回路の回路図である。
【図31】対象回路の一例であるクロック選択回路の回路図である。
【図32】対象回路の一例である別のクロック選択回路の回路図である。
【図33】対象回路の一例である非同期フリップフロップ・ラッチ回路の回路図である。
【図34】図33の回路図の動作を示すタイミングチャートである。
【図35】対象回路の一例である非同期転送回路の回路図である。
【図36】対象回路の一例であるマルチサイクルパス回路の回路図である。
【図37】本発明に係る静的・動的タイミング検証装置による同期・非同期混在回路に対する静的タイミング検証と動的タイミング検証の割り振りに関する基本的な考え方を全体的に示す説明図である。
【図38】図8におけるステップS1_4_4_4、S1_4_4_5の処理に置き換えることが可能な処理をステップを示す説明図である。
【図39】図4のステップS8の更に別の内部処理の一例を示すフローチャートである。
【図40】記憶媒体から静的・動的タイミング検証プログラムを読取って実行するコンピュータの一例を示す斜視図である。
【符号の説明】
1 接続情報入力部
2 遅延情報入力部
3 回路制約入力部
4 負荷情報入力部
5 記憶部
6 静的・動的タイミング検証分割部
7 静的タイミング検証部
8 動的タイミング検証部
9 回路シミュレーション実行部
10 出力部
11 クロック情報抽出部
12 回路制約検証部
S1 クロック情報の認識処理
S2 クロックの選択論理の認識処理
S3 非同期FF/ラッチの認識処理
S4 ゲーテッドクロックの認識処理
S5 非同期転送抽出処理
S6 クロック波形生成処理
S7 非同期FF/ラッチのクロック波形候補の抽出処理
S8 回路構成チェック処理
S9 マルチサイクルパス候補の抽出処理
S10 ゲーテッドクロック解析実行処理
S11 動的タイミング検証適用箇所の決定処理
Claims (12)
- クロック信号に対する同期回路及び非同期回路が含まれる同期・非同期混在回路の静的・動的タイミング検証のための所定プログラムをコンピュータに実行させることで可能とされる静的・動的タイミング検証方法であって、
前記コンピュータが、前記同期・非同期混在回路を、クロック信号に同期されるか否かの観点より同期回路と非同期回路に分類し、前記同期回路を周期回路と非周期回路に分類し、前記非同期回路を周期回路と非周期回路に分類する第1処理と、
前記コンピュータが、前記同期回路の周期回路及び前記非同期回路の周期回路には静的タイミング検証を施し、前記同期回路の非周期回路及び前記非同期回路の非周期回路には動的タイミング検証を施す第2処理と、を含み、
前記第1処理は、前記コンピュータが、前記同期・非同期混在回路をタイミング検証の対象回路とし、その対象回路の中のクロック情報を識別するクロック情報認識処理を含み、
前記クロック情報認識処理は、前記コンピュータが、クロック情報認識の対象とされる回路中の全ネットに対して非周期属性を設定する処理と、
前記コンピュータが、前記クロック情報認識の対象とされる回路に対してトレースを実行し、2入力以上の素子の入力端子到達する迄クロック情報を伝搬させ、トレースを実行したネットに対して周期属性を設定する処理と、
前記コンピュータが、前記クロック情報認識の対象とされる回路中のカウンタ候補を認識する処理と、
前記コンピュータが、入力信号ネットの属性が変化した素子の出力信号ネットの属性演算を実行して、その演算結果の属性を当該素子の出力信号ネットに設定する処理と、
前記コンピュータが、前記カウンタ候補のクロック端子への入力信号ネットの属性が非周期か否かを判定する処理と、
前記コンピュータが、前記判定結果に基づいて、前記カウンタ候補のクロック端子への入力信号ネットの属性が非周期でなかったカウンタ候補をカウンタとして認識し直し、当該カウンタを構成する素子の入力・出力信号ネットに対して周期属性を設定する処理と、を含むことを特徴とする静的・動的タイミング検証方法。 - 請求項1において、
前記第1処理は、前記コンピュータが、前記クロック情報認識処理で識別された前記クロック情報をもとに、前記同期・非同期混在回路の中で同期回路部分と非同期回路部分との非同期転送経路、更に同期回路部分間の非同期転送経路を、夫々識別する処理を含み、タイミング検証が必要な非同期転送経路とタイミング検証が不要な非同期転送経路とを別々の非同期転送経路として認識可能とする静的・動的タイミング検証方法。 - 請求項1において、
前記第1処理は、前記コンピュータが、前記クロック情報認識処理で識別された前記クロック情報をもとに、前記対象回路の中でクロックゲートを構成している論理素子を識別し、
前記クロックゲートを構成している前記論理素子へ2本以上クロック属性を持つ信号が入力されている場合に、クロックゲートのセットアップ解析、ホールド解析を実行する必要があるかを判定し、
前記クロック属性を持つ入力信号の中でどの信号を基準としてクロックゲートのセットアップ解析、ホールド解析を実行する必要があるかを判定する処理を更に含み、
前記静的タイミング検証によるゲーテッドクロックのセットアップ・ホールド解析を行うための指示情報の作成を可能とする静的・動的タイミング検証方法。 - 請求項1において、
前記第1処理は、前記コンピュータが、前記クロック情報認識処理で識別された前記クロック情報をもとに、前記対象回路の中でクロックゲートを構成している論理素子を識別し、前記クロックゲートを構成している論理素子へのクロック属性を持たない入力信号がマルチサイクルパスか否かの識別を行う認識処理を更に含み、疑似エラーを予め排除した静的タイミング検証によるゲーテッドクロックのセットアップ・ホールド解析の実行を可能とする静的・動的タイミング検証方法。 - 請求項1において、
前記第1処理は、前記コンピュータが、前記クロック情報認識処理で識別された前記クロック情報をもとに、前記対象回路の中でクロックの選択論理を構成している論理素子を識別する処理を含み、フリップフロップ及びラッチ間のデータ転送経路の認識において、前記データ転送経路の両端のフリップフロップ又はラッチへ供給されるクロックの組み合わせの検証を可能とする静的・動的タイミング検証方法。 - 請求項1において、
前記第1処理は、前記コンピュータが、前記クロック情報認識処理で識別された前記クロック情報をもとに、前記対象回路の中でクロック以外の信号がクロック端子に供給されているフリップフロップ及びラッチに対して、仮想的なクロックが定義可能かを判定し、それによって、クロック以外の信号がクロック端子に供給されているフリップフロップ及びラッチであって、仮想的なクロックが定義可能と判定されたフリップフロップ及びラッチのクロック端子に対して、仮想的なクロックを設定する設定処理を更に含み、クロック以外の信号がクロック端子に供給されているフリップフロップ及びラッチに対して、仮想的なクロックが定義可能かを判定して仮想クロックを設定することで非同期回路に対する前記静的タイミング検証の適用を可能とする静的・動的タイミング検証方法。 - 請求項1において、
前記第1処理は、前記コンピュータが、前記クロック情報認識処理で識別された前記クロック情報をもとに、前記対象回路の中で静的タイミング検証適用回路部分と動的タイミング検証適用回路部分とを識別する適用回路部分認識処理を含み、この処理結果に応じて、同期回路部分でのハザード解析を必要とする回路部分の認識と当該回路部分への動的タイミング検証の実行を可能とする静的・動的タイミング検証方法。 - 請求項7において、
前記適用回路部分認識処理は、前記コンピュータが、識別した前記動的タイミング検証適用回路部分に信号の伝達経路に沿ってフリップフロップが現われる迄を前記動的タイミング検証適用回路部分に含めて認識することにより、動的タイミング検証適用回路部分への静的タイミング検証適用回路部分からのデータ転送経路における信号遅延時間を考慮しないで、動的タイミング検証適用回路部分の動的タイミング検証を実行する静的・動的タイミング検証方法。 - 請求項8において、
前記適用回路部分認識処理は、前記コンピュータが、識別した前記動的タイミング検証適用回路部分と前記対象回路の中の論理階層との対応を識別することによって、動的タイミング検証実行すべき論理階層の認識を可能とする静的・動的タイミング検証方法。 - 請求項7において、
前記適用回路部分認識処理は、前記コンピュータが、識別した前記静的タイミング検証適用回路部分の入力端子及び出力端子に最も近い前記動的タイミング検証適用回路部分内のフリップフロップから信号の伝達経路に沿って前記動的タイミング検証適用回路部分外のフリップフロップ及びラッチを識別し、
識別された前記動的タイミング検証適用回路部分外のフリップフロップ及びラッチへのクロック信号の伝搬遅延を、前記対象回路に遅延情報を与える際に前記動的タイミング検証適用回路部分と前記動的タイミング検証適用回路部分内のフリップフロップ及びラッチへのクロック信号の伝搬遅延のみを与えるだけで動的タイミング検証が可能となるよう調整することにより、対象回路全体の動的タイミング検証の実行を可能とする静的・動的タイミング検証方法。 - クロック信号に対する同期回路及び非同期回路が含まれる同期・非同期混在回路の静的・動的タイミング検証を可能とする静的・動的タイミング検証処理をコンピュータに実行させるための所定プログラムが記録されたコンピュータ読取り可能な記録媒体であって、
前記静的・動的タイミング検証処理は、前記同期・非同期混在回路を、クロック信号に同期されるか否かの観点より同期回路と非同期回路に分類し、前記同期回路を周期回路と非周期回路に分類し、前記非同期回路を周期回路と非周期回路に分類する第1処理と、
前記同期回路の周期回路及び前記非同期回路の周期回路には静的タイミング検証を施し、前記同期回路の非周期回路及び前記非同期回路の非周期回路には動的タイミング検証を施す第2処理と、を含み、
前記第1処理は、前記同期・非同期混在回路をタイミング検証の対象回路とし、その対象回路の中のクロック情報を識別するクロック情報認識処理を含み、
前記クロック情報認識処理は、クロック情報認識の対象とされる回路中の全ネットに対して非周期属性を設定する処理と、
前記クロック情報認識の対象とされる回路に対してトレースを実行し、2入力以上の素子の入力端子到達する迄クロック情報を伝搬させ、トレースを実行したネットに対して周期属性を設定する処理と、
上記クロック情報認識の対象とされる回路中のカウンタ候補を認識する処理と、
入力信号ネットの属性が変化した素子の出力信号ネットの属性演算を実行して、その演算結果の属性を当該素子の出力信号ネットに設定する処理と、
前記カウンタ候補のクロック端子への入力信号ネットの属性が非同期か否かを判定する処理と、
前記判定結果に基づいて、前記カウンタ候補のクロック端子への入力信号ネットの属性が非周期でなかったカウンタ候補をカウンタとして認識し直し、当該カウンタを構成する素子の入力・出力信号ネットに対して周期属性を設定する処理と、を含むことを特徴とするコンピュータ読取り可能な記録媒体。 - クロック情報の認識を可能とする所定プログラムをコンピュータに実行させることで、クロック情報認識の対象とされる回路の内部で生成されたクロックの情報を認識するためのクロック情報認識処理を含むクロック情報認識方法であって、
前記クロック情報認識処理は、前記コンピュータが、クロック情報認識の対象とされる回路中の全ネットに対して非周期属性を設定する処理と、
前記コンピュータが、前記クロック情報認識の対象とされる回路に対してトレースを実行し、2入力以上の素子の入力端子に到達する迄クロック情報を伝搬させ、トレースを実行したネットに対して周期属性を設定する処理と、
前記コンピュータが、前記クロック情報認識の対象とされる回路中のカウンタ候補を認識する処理と、
前記コンピュータが、入力信号ネットの属性が変化した素子の出力信号ネットの属性演算を実行して、その演算結果の属性を当該素子の出力信号ネットに設定する処理と、
前記コンピュータが、前記カウンタ候補のクロック端子への入力信号ネットの属性が非周期か否かを判定する処理と、
前記コンピュータが、前記判定結果に基づいて、前記カウンタ候補のクロック端子への入力信ネットの属性が非周期でなかったカウンタ候補をカウンタとして認識し直し、当該カウンタを構成する素子の入力・出力信号ネットに対して周期属性を設定する処理と、を含むことを特徴とするクロック情報認識方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP09055899A JP4176906B2 (ja) | 1999-01-14 | 1999-03-31 | 静的・動的タイミング検証方法及び記憶媒体 |
US09/482,877 US6658635B1 (en) | 1999-01-14 | 2000-01-14 | Static-dynamic timing analysis method and storage medium |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11-7429 | 1999-01-14 | ||
JP742999 | 1999-01-14 | ||
JP09055899A JP4176906B2 (ja) | 1999-01-14 | 1999-03-31 | 静的・動的タイミング検証方法及び記憶媒体 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2000268080A JP2000268080A (ja) | 2000-09-29 |
JP2000268080A5 JP2000268080A5 (ja) | 2005-10-27 |
JP4176906B2 true JP4176906B2 (ja) | 2008-11-05 |
Family
ID=26341714
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP09055899A Expired - Fee Related JP4176906B2 (ja) | 1999-01-14 | 1999-03-31 | 静的・動的タイミング検証方法及び記憶媒体 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6658635B1 (ja) |
JP (1) | JP4176906B2 (ja) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7188327B2 (en) * | 2002-04-11 | 2007-03-06 | Cadence Design Systems, Inc. | Method and system for logic-level circuit modeling |
US7181713B2 (en) * | 2002-08-28 | 2007-02-20 | Lsi Logic Corporation | Static timing and risk analysis tool |
US6851098B2 (en) * | 2002-08-28 | 2005-02-01 | Lsi Logic Corporation | Static timing analysis and performance diagnostic display tool |
JP4083544B2 (ja) * | 2002-11-18 | 2008-04-30 | 富士通株式会社 | マルチサイクルパス解析方法 |
US7080334B2 (en) * | 2003-05-09 | 2006-07-18 | Incentia Design Systems Corp. | Automatic clock gating insertion in an IC design |
US7134062B2 (en) * | 2003-08-12 | 2006-11-07 | Via Telecom, Inc. | Static timing analysis approach for multi-clock domain designs |
JP4271067B2 (ja) * | 2004-03-29 | 2009-06-03 | 富士通マイクロエレクトロニクス株式会社 | 非同期回路検証方法および非同期回路検証プログラム |
US7089143B2 (en) * | 2004-04-29 | 2006-08-08 | International Business Machines Corporation | Method and system for evaluating timing in an integrated circuit |
US7412678B2 (en) * | 2004-06-02 | 2008-08-12 | Lsi Corporation | Method and computer program for management of synchronous and asynchronous clock domain crossing in integrated circuit design |
JP4418310B2 (ja) * | 2004-06-29 | 2010-02-17 | 富士通株式会社 | テストパターン生成方法およびテストパターン生成プログラム |
US7609146B2 (en) * | 2005-07-27 | 2009-10-27 | Lear Corporation | System and method for controlling a function using a variable sensitivity receiver |
JP4992468B2 (ja) * | 2007-02-27 | 2012-08-08 | 富士通セミコンダクター株式会社 | 検証方法、検証装置及びプログラム |
US7930673B2 (en) | 2007-05-29 | 2011-04-19 | Magma Design Automation, Inc. | Method for automatic clock gating to save power |
JP2009086817A (ja) * | 2007-09-28 | 2009-04-23 | Casio Comput Co Ltd | 論理シミュレーション装置、アサーション記述自動生成装置、及びプログラム |
US8104004B2 (en) * | 2008-02-13 | 2012-01-24 | Achronix Semiconductor Corporation | Logic performance in cyclic structures |
US8086975B2 (en) * | 2008-04-10 | 2011-12-27 | University Of Southern California | Power aware asynchronous circuits |
US8448105B2 (en) * | 2008-04-24 | 2013-05-21 | University Of Southern California | Clustering and fanout optimizations of asynchronous circuits |
US7884649B1 (en) * | 2009-02-27 | 2011-02-08 | Magma Design Automation, Inc. | Selection of optimal clock gating elements |
JP5440094B2 (ja) * | 2009-10-22 | 2014-03-12 | 日本電気株式会社 | 回路設計装置及び方法 |
US8655634B2 (en) * | 2010-03-10 | 2014-02-18 | International Business Machines Corporation | Modeling loading effects of a transistor network |
US8365116B2 (en) * | 2010-12-06 | 2013-01-29 | University Of Utah Research Foundation | Cycle cutting with timing path analysis |
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 |
JP6146224B2 (ja) * | 2013-09-12 | 2017-06-14 | 株式会社ソシオネクスト | 判定方法、判定プログラム、および判定装置 |
US10268787B2 (en) * | 2017-07-17 | 2019-04-23 | Taiwan Semiconductor Manufacturing Company Ltd. | Hybrid timing analysis method and associated system and non-transitory computer readable medium |
US11087003B2 (en) * | 2018-08-24 | 2021-08-10 | Oracle International Corporation | Scalable pre-analysis of dynamic applications |
TWI689736B (zh) * | 2019-07-11 | 2020-04-01 | 瑞昱半導體股份有限公司 | 偵測電路之腳位關聯性的方法及其電腦程式產品 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5579510A (en) * | 1993-07-21 | 1996-11-26 | Synopsys, Inc. | Method and structure for use in static timing verification of synchronous circuits |
US5650938A (en) * | 1995-12-13 | 1997-07-22 | Synopsys, Inc. | Method and apparatus for verifying asynchronous circuits using static timing analysis and dynamic functional simulation |
-
1999
- 1999-03-31 JP JP09055899A patent/JP4176906B2/ja not_active Expired - Fee Related
-
2000
- 2000-01-14 US US09/482,877 patent/US6658635B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US6658635B1 (en) | 2003-12-02 |
JP2000268080A (ja) | 2000-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4176906B2 (ja) | 静的・動的タイミング検証方法及び記憶媒体 | |
US7206967B1 (en) | Chip debugging using incremental recompilation and register insertion | |
US5191541A (en) | Method and apparatus to improve static path analysis of digital circuits | |
Ott et al. | A designer's guide to VHDL synthesis | |
US7076748B2 (en) | Identification and implementation of clock gating in the design of integrated circuits | |
US7587690B1 (en) | Method and system for global coverage analysis | |
US8181131B2 (en) | Enhanced analysis of array-based netlists via reparameterization | |
US8522182B2 (en) | Generation of an end point report for a timing simulation of an integrated circuit | |
US7711534B2 (en) | Method and system of design verification | |
US7210109B2 (en) | Equivalence checking of scan path flush operations | |
Simpson | FPGA design | |
US7823101B2 (en) | Device, method, and storage for verification scenario generation, and verification device | |
CN107784185B (zh) | 一种门级网表中伪路径的提取方法、装置及终端设备 | |
CN117094269A (zh) | 一种验证方法、装置、电子设备及可读存储介质 | |
US8943457B2 (en) | Simulating scan tests with reduced resources | |
JP5830955B2 (ja) | 検証装置、検証方法及び検証プログラム | |
US10579774B2 (en) | Integrated circuit (IC) design systems and methods using single-pin imaginary devices | |
JP2007304699A (ja) | 回路連言標準形生成方法及び回路連言標準形生成装置並びにハザードチェック方法及びハザードチェック装置 | |
US8959467B2 (en) | Structural rule analysis with TCL scripts in synthesis or STA tools and integrated circuit design tools | |
US20220327269A1 (en) | Computing device and method for detecting clock domain crossing violation in design of memory device | |
Fallah | Coverage-directed validation of hardware models | |
US7328415B2 (en) | Modeling blocks of an integrated circuit for timing verification | |
US20060265673A1 (en) | Facilitating High Level Validation of Integrated Circuits in Parallel with Development of Blocks in a Hierarchical Design Approach | |
JP7351189B2 (ja) | タイミング制約抽出装置、タイミング制約抽出方法およびタイミング制約抽出プログラム | |
US20120253712A1 (en) | Power consumption calculation method, power consumption calculation apparatus, and non-transitory computer-readble medium storing power consumption calculation program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050707 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050707 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080129 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080205 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080407 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080507 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080707 |
|
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: 20080729 |
|
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: 20080821 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110829 Year of fee payment: 3 |
|
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: 20110829 Year of fee payment: 3 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110829 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120829 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120829 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130829 Year of fee payment: 5 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |