(57)【要約】【課題】ＦＦ等の順序回路のディレイライブラリの生成を人手によることなく短時間で行なえるようにする。【解決手段】順序回路の回路情報に基づき順序回路の出力端子と当該出力端子に影響を与える順序回路の入力端子とをグループ化するグループ化部１１と、このグループ化部１１によって得られたグループと順序回路の真理値表とに基づき、順序回路の入力端子に対する、ディレイ情報測定用の信号パターンを前記グループ毎に生成する信号パターン生成部１２と、この信号パターン生成部１２によって前記グループ毎に生成された信号パターンに基づき、順序回路のディレイを示すディレイ情報を前記グループ毎に測定し、順序回路のディレイライブラリを生成するライブラリ生成部１３とをそなえる。【選択図】図１
2011257845.tif 000002
【特許請求の範囲】
【請求項１】
順序回路の回路情報に基づき、前記順序回路の出力端子と当該出力端子に影響を与える前記順序回路の入力端子とをグループ化するグループ化部と、
前記グループ化部によって得られたグループと前記順序回路の真理値表とに基づき、前記順序回路の入力端子に対する信号パターンを、前記グループ毎に生成する信号パターン生成部と、
前記信号パターン生成部によって前記グループ毎に生成された前記信号パターンに基づき、前記順序回路のディレイを示すディレイ情報を前記グループ毎に測定し、前記順序回路のディレイライブラリを生成するライブラリ生成部とを有する、ディレイライブラリ生成装置。
【請求項２】
前記グループ化部は、
前記順序回路の回路情報から、前記順序回路において信号を保持する回路ループを検出する回路ループ検出部と、
前記回路ループ検出部によって検出された前記回路ループからフォワードトレースを行ない、前記回路ループに繋がる前記順序回路の出力端子を、前記順序回路の回路情報から抽出する出力端子抽出部と、
前記出力端子抽出部によって抽出された前記出力端子からバックワードトレースを行ない、前記出力端子に影響を与える入力端子を、前記順序回路の回路情報から抽出する入力端子抽出部と、
前記出力端子抽出部によって抽出された前記出力端子と前記入力端子抽出部によって抽出された前記入力端子とをグループ化して出力する出力部とを有する、請求項１記載のディレイライブラリ生成装置。
【請求項３】
前記信号パターン生成部は、
前記グループ化部によって得られたグループに基づき、前記順序回路の真理値表を前記グループ毎に分割する真理値表分割部と、
前記真理値表分割部によって分割された各真理値表に基づき、前記入力端子の種別を前記グループ毎に判定する種別判定部と、
前記種別判定部によって判定された前記入力端子の種別に基づき、前記順序回路の入力端子に対する前記信号パターンを、前記グループ毎に生成する生成部とを有する、請求項１または請求項２に記載のディレイライブラリ生成装置。
【請求項４】
前記グループ化部によって得られたグループに基づき、前記順序回路の真理値表を前記グループ毎に作成する真理値表作成部をさらに有し、
前記信号パターン生成部は、前記グループ化部によって得られたグループと前記真理値表作成部によって作成された前記グループ毎の真理値表とに基づき、前記順序回路の入力端子に対する前記信号パターンを、前記グループ毎に生成する、請求項１または請求項２に記載のディレイライブラリ生成装置。
【請求項５】
前記真理値表作成部は、
前記グループ毎に、当該グループに属する出力端子に所定の状態値が設定されるように当該グループに属する入力端子に適当な状態値を設定してから、当該グループに属する入力端子に任意の状態値を設定することにより当該入力端子の状態を上記適当な状態値から上記任意の状態値に遷移させ、前記入力端子に前記任意の状態値を設定したときの当該出力端子の状態値を取得するシミュレーション動作を行なうシミュレーション部と、
当該入力端子に前記任意の状態値として設定される状態値の全ての組み合わせについて、当該入力端子に設定される状態値と、その状態値に基づき前記シミュレーション部によって設定／取得される、当該入力端子に対する信号遷移前後の当該出力端子の状態値とを、シミュレーションパターンとして前記グループ毎に保存する保存部と、
前記保存部によって前記グループ毎に保存されている前記シミュレーションパターンに基づき、前記グループ毎に当該グループの真理値表を作成する作成部とを有する、請求項４記載のディレイライブラリ生成装置。
【請求項６】
順序回路のディレイライブラリを生成する装置としてコンピュータを機能させるディレイライブラリ生成プログラムであって、
前記順序回路の回路情報に基づき、前記順序回路の出力端子と当該出力端子に影響を与える前記順序回路の入力端子とをグループ化するグループ化部、
前記グループ化部によって得られたグループと前記順序回路の真理値表とに基づき、前記順序回路の入力端子に対する信号パターンを、前記グループ毎に生成する信号パターン生成部、および、
前記信号パターン生成部によって前記グループ毎に生成された前記信号パターンに基づき、前記順序回路のディレイを示すディレイ情報を前記グループ毎に測定し、前記順序回路のディレイライブラリを生成するライブラリ生成部として、前記コンピュータを機能させる、ディレイライブラリ生成プログラム。
【請求項７】
順序回路のディレイライブラリをコンピュータにより生成するディレイライブラリ生成方法であって、
前記順序回路の回路情報に基づき、前記順序回路の出力端子と当該出力端子に影響を与える前記順序回路の入力端子とをグループ化するグループ化ステップと、
前記グループ化ステップにおいて得られたグループと前記順序回路の真理値表とに基づき、前記順序回路の入力端子に対する信号パターンを、前記グループ毎に生成する信号パターン生成ステップと、
前記信号パターン生成ステップにおいて前記グループ毎に生成された前記信号パターンに基づき、前記順序回路のディレイを示すディレイ情報を前記グループ毎に測定し、前記順序回路のディレイライブラリを生成するライブラリ生成ステップとを含む、ディレイライブラリ生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、集積回路のディレイ解析に用いられる、順序回路のディレイライブラリを生成する装置，プログラムおよび方法に関する。
【背景技術】
【０００２】
一般に、集積回路、例えばＬＳＩ(Large Scale Integration)回路のディレイ解析は、ディレイライブラリを使用した静的タイミング解析(ＳＴＡ：Static Timing Analysis)により行なわれる。ディレイライブラリは、タイミング解析ライブラリとも呼ばれ、上記ＬＳＩ回路に組み込まれるマクロ毎に作成される。マクロとしては、例えば、組み合わせ回路や、フリップフロップ（以下「ＦＦ」という）等の順序回路が含まれる。そして、ディレイライブラリには、シミュレーションによって得られた、対象マクロのタイミング制約値（セットアップ／ホールド時間）やディレイ値などの特性情報が保持されている。
【０００３】
組み合わせ回路のディレイライブラリの作成は、ある程度、自動化されている。その際、信号の組み合わせを対象の組み合わせ回路の入力端子に単純に与えてシミュレーションを行なうことにより遅延値などの特性情報を取得し、組み合わせ回路のディレイライブラリの作成が行なわれている。
これに対し、ＦＦのディレイライブラリの作成は、以下の理由により、入力端子に与える単純な信号の組み合わせを考えるだけでは行なえない。
【０００４】
つまり、ＦＦでは、クロック信号のHigh (“１”)またはLow (“０”)への遷移に伴って信号の取り込みや値の保持が行なわれる。このため、ＦＦのディレイライブラリを作成する際には、まず、クロック信号の入力端子、即ちクロック端子を認識する必要がある。次に、ＦＦにおける信号の取り込みと値の保持とを解析するために、クロック信号遷移前後の状態に基づく、時間を考慮した解析が必要となる。このほかにも、取り込み信号は、セット信号やリセット信号に影響されるため、これらの信号の入力端子、即ちセット端子やリセット端子も認識する必要がある。
【０００５】
このように、ＦＦはクロック信号，セット信号，リセット信号の遷移に伴って動作するため、単純な信号の組み合わせを信号パターンとしてＦＦの入力端子に与えるだけでは、ＦＦのディレイライブラリを作成することができない。また、単純に全ての端子を同時に解析対象とすると、信号の組み合わせの数が極めて膨大なものとなり、現実的な時間で解析を終えることができない。
【０００６】
従って、ＦＦのディレイライブラリを作成すべくＦＦの入力端子に与える信号パターンの生成は、自動化することができず、現状では、その信号パターンの生成は設計者等によって人手で行なわれている。そして、人手で生成された信号パターンに基づいて、ＦＦのディレイライブラリの作成が行なわれている。
ディレイライブラリに関する技術は、例えば下記特許文献に開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平６−２７４５６６号公報
【特許文献２】特開平７−３１１７９１号公報
【特許文献３】特開平９−１５３０７３号公報
【特許文献４】特開２００５−１９６２６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ところで、クロック周波数が数ＧＨｚを超える超高速ＬＳＩ回路の開発においては、その高い周波数性能を実現するため、また近年ではさらに省電力化を実現するために、同一論理に対して様々なバリエーションの回路（マクロ）を用意し、これらを組み合わせて回路設計を行なっている。そして、所望の周波数性能を達成するためにはＦＦ間のタイミング調整が必須であり、タイミング計算では、各種マクロのディレイライブラリが使用される。
【０００９】
ＦＦについても多くのバリエーションの回路が用意され、それぞれについてディレイライブラリが必要となる。ＦＦは、クロック信号等によって値を保持する機能をもつため時間的な概念を必要とし、上述した通り、単純な信号の組み合わせを考えるだけではＦＦのディレイライブラリの作成は行なえない。このため、ＦＦのディレイライブラリの作成に際し、ライブラリ作成用の信号パターンの生成は人手で行なわれている。
【００１０】
このように人手で信号パターンを作成するため、ＦＦのディレイライブラリ作成に時間がかかり、特に、ＦＦのバリエーションが増大すると、ＦＦのディレイライブラリ作成に要する工数や時間が極めて増大することになる。また、入力端子の多い多ビットＦＦのディレイライブラリの作成に際しては、さらなる手間や時間がかかってしまう。
【００１１】
本件の目的の一つは、ＦＦ等の順序回路のディレイライブラリの生成を人手によることなく短時間で行なえるようにすることである。
なお、前記目的に限らず、後述する発明を実施するための最良の形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本件の他の目的の一つとして位置付けることができる。
【課題を解決するための手段】
【００１２】
本件のディレイライブラリ生成装置は、以下のグループ化部，信号パターン生成部およびライブラリ生成部を有することを要件としている。ここで、前記グループ化部は、順序回路の回路情報に基づき、前記順序回路の出力端子と当該出力端子に影響を与える前記順序回路の入力端子とをグループ化する。信号パターン生成部は、前記グループ化部によって得られたグループと前記順序回路の真理値表とに基づき、前記順序回路の入力端子に対する信号パターンを、前記グループ毎に生成する。前記ライブラリ生成部は、前記信号パターン生成部によって前記グループ毎に生成された前記信号パターンに基づき、前記順序回路のディレイを示すディレイ情報を前記グループ毎に測定し、前記順序回路のディレイライブラリを生成する。
【００１３】
また、本件のディレイライブラリ生成プログラムは、順序回路のディレイライブラリを生成する装置としてコンピュータを機能させるもので、上述したグループ化部，信号パターン生成部およびライブラリ生成部として前記コンピュータを機能させることを要件としている。
【００１４】
さらに、本件のディレイライブラリ生成方法は、順序回路のディレイライブラリをコンピュータにより生成するもので、以下のグループ化ステップ，信号パターン生成ステップおよびライブラリ生成ステップを有することを要件としている。ここで、前記グループ化ステップでは、順序回路の回路情報に基づき、前記順序回路の出力端子と当該出力端子に影響を与える前記順序回路の入力端子とをグループ化する。信号パターン生成ステップでは、前記グループ化ステップにおいて得られたグループと前記順序回路の真理値表とに基づき、前記順序回路の入力端子に対する信号パターンを、前記グループ毎に生成する。前記ライブラリ生成ステップでは、前記信号パターン生成ステップにおいて前記グループ毎に生成された前記信号パターンに基づき、前記順序回路のディレイを示すディレイ情報を前記グループ毎に測定し、前記順序回路のディレイライブラリを生成する。
【発明の効果】
【００１５】
開示の技術では、順序回路の出力端子および入力端子についてグループ化を行ないグループ毎に信号パターンの生成およびディレイ情報の測定を行なうことにより、ＦＦ等の順序回路のディレイライブラリの生成を人手によることなく短時間で行なうことができる。
【図面の簡単な説明】
【００１６】
【図１】第１実施形態のディレイライブラリ生成装置の機能構成を示すブロック図である。
【図２】ＬＳＩ回路のディレイ解析手順を説明するためのフローチャートである。
【図３】ＬＳＩ回路のディレイ計算を説明するための図である。
【図４】第１実施形態のディレイライブラリ生成手順の概略を説明するためのフローチャートである。
【図５】第１実施形態のグループ化手順を説明するためのフローチャートである。
【図６】第１実施形態のグループ化手順を説明するための図である。
【図７】第１実施形態の真理値表分割手順を説明するためのフローチャートである。
【図８】（Ａ）〜（Ｃ）は第１実施形態の真理値表分割手順を説明するための図である。
【図９】第１実施形態の端子種別判定手順を説明するためのフローチャートである。
【図１０】第１実施形態のクロック端子判定手順を説明するためのフローチャートである。
【図１１】第１実施形態のセット端子判定手順を説明するためのフローチャートである。
【図１２】第１実施形態のリセット端子判定手順を説明するためのフローチャートである。
【図１３】第１実施形態の端子種別判定手順を説明するための図である。
【図１４】第１実施形態の信号パターン生成手順およびディレイ測定手順を説明するためのフローチャートである。
【図１５】（Ａ）および（Ｂ）は第１実施形態の信号パターン生成手順およびディレイ測定手順を具体的に説明するための図である。
【図１６】（Ａ）および（Ｂ）は第１実施形態で生成されるＦＦディレイライブラリを具体的に説明するための図である。
【図１７】第２実施形態のディレイライブラリ生成装置の機能構成を示すブロック図である。
【図１８】第２実施形態のディレイライブラリ生成手順の概略を説明するためのフローチャートである。
【図１９】第２実施形態の真理値表作成手順を説明するためのフローチャートである。
【図２０】第２実施形態の真理値表作成手順を説明するためのフローチャートである。
【図２１】第２実施形態の回路ループの切断を説明するための図である。
【図２２】第２実施形態の安定化処理（不定値の修正）を説明するための図である。
【図２３】（Ａ）〜（Ｃ）は第２実施形態のシミュレーションパターンおよび真理値表作成手順を説明するための図である。
【発明を実施するための形態】
【００１７】
以下、図面を参照して実施の形態を説明する。
〔１〕第１実施形態の説明
〔１−１〕第１実施形態のディレイライブラリ生成装置の構成
図１は、第１実施形態のディレイライブラリ生成装置１Ａの機能構成を示すブロック図である。
【００１８】
この図１に示すディレイライブラリ生成装置（以下「本装置」と称する）１Ａは、順序回路（本実施形態ではＦＦ）のディレイライブラリ４０を生成するもので、一般的なパーソナルコンピュータ等の計算機から構成される。そして、ディレイライブラリ生成装置１Ａは、処理部１０および記憶部２０を有するほか、ユーザによって操作され各種情報を本装置１Ａに入力するマンマシンインタフェース（図示略）を有している。なお、処理部１０は、ＣＰＵ（Central Processing Unit）等である。記憶部２０は、ＲＡＭ（Random Access Memory），ＲＯＭ（Read Only Memory），ＨＤＤ（Hard Disk Drive），ＳＳＤ（Solid State Drive）等の内部記憶装置であってもよいし、外部記憶装置であってもよい。
【００１９】
処理部１０は、ディレイライブラリ生成プログラムを実行することにより、後述するグループ化部１１，信号パターン生成部１２およびライブラリ生成部１３としての機能を果たす。
また、記憶部２０は、後述するＦＦ回路情報データベース２１，真理値表保存部２２およびＦＦディレイライブラリ４０を有するほか、ユーザによって設定される各種情報や、上記ディレイライブラリ生成プログラムなどを適宜格納する。
【００２０】
ここで、ＦＦディレイライブラリ４０は、本装置１Ａにより、後述する機能や動作によって生成されるもので、図１６を参照しながら後述するごとく、対象ＦＦのディレイ値やのタイミング制約値（セットアップ／ホールド時間）などの特性情報を保持している。
ＦＦ回路情報データベース２１は、設計者等によって予め与えられるもので、ＦＦディレイライブラリ４０を生成すべき対象ＦＦについての回路情報、例えば図６に示すごとき対象ＦＦ内の詳細な回路情報を保持する。ＦＦの回路情報のことを、以下ではＦＦ回路情報という。
【００２１】
真理値表保存部２２は、対象ＦＦにおいて入力端子に与えられる状態値と、その状態値を与えた際に出力端子から出力される状態値との関係を示す真理値表を保存する。この真理値表は、例えば図８（Ａ）に示すようなもので、第１実施形態においては設計者等によって予め与えられ、真理値表保存部２２に保存されている。
【００２２】
上述したＦＦ回路情報および真理値表では、対象ＦＦの端子が入力端子と出力端子のいずれであるかの識別が可能になっている。また、ＦＦ回路情報および真理値表には、各出力端子を特定する端子識別情報Ｑ1，Ｑ1′，Ｑ2，Ｑ2′，…，Ｑn，Ｑn′が含まれており、各出力端子は、端子識別情報Ｑ1，Ｑ1′，Ｑ2，Ｑ2′，…，Ｑn，Ｑn′によって特定される。なお、対象ＦＦにおいて、出力端子は、それぞれ、端子識別情報Ｑi，Ｑi′（i＝１，２，…，ｎ）によって特定される一対の出力端子と反転出力端子との組になっている。
【００２３】
また、ＦＦ回路情報および真理値表には、各入力端子を特定しうる端子識別情報Ｘ1，Ｘ2，…，Ｘmが含まれており、各入力端子は、端子識別情報Ｘ1，Ｘ2，…，Ｘmによって特定される。しかし、ＦＦ回路情報および真理値表において、各入力端子の種別が何であるか、つまり各入力端子がクロック端子，セット端子，リセット端子，データ端子のいずれであるかを特定するための情報は含まれていない。つまり、図６に示すＦＦ回路情報における入力端子と図８（Ａ）に示す対象ＦＦの真理表における入力端子との対応関係は認識されているが、ＦＦ回路情報や真理値表における入力端子情報の意味付けがなされておらず、各入力端子の種別は認識されていない。このため、本装置１Ａでは、ＦＦディレイライブラリ４０を生成する際、後述する信号パターン生成部１２（種別判定部１２２）により各入力端子の種別の判定／認識が行なわれる。
【００２４】
次に、第１実施形態の処理部１０が果たす、グループ化部１１，信号パターン生成部１２およびライブラリ生成部１３としての機能について、詳細に説明する。
グループ化部１１は、対象ＦＦのＦＦ回路情報に基づき、対象ＦＦの出力端子と当該出力端子に影響を与える対象ＦＦの入力端子とをグループ化する。このグループ化部１１は、後述する回路ループ検出部１１１，出力端子抽出部１１２，入力端子抽出部１１３および出力部１１４としての機能を有する。これらの回路ループ検出部１１１，出力端子抽出部１１２，入力端子抽出部１１３および出力部１１４を含むグループ化部１１の具体的な機能や動作については、図５および図６を参照しながら後述する。
【００２５】
信号パターン生成部１２は、グループ化部１１によって得られたグループと保存部２２に保存された対象ＦＦの真理値表とに基づき、対象ＦＦの各入力端子に対する信号パターンを、グループ毎に生成する。この信号パターンは、ディレイライブラリ作成用のシミュレーションパターンであり、後述するように、この信号パターンを入力端子に設定してディレイ情報を測定することにより、ＦＦのディレイライブラリ４０を作成することができる。なお、信号パターン生成部１２は、後述する真理値表分割部１２１，種別判定部１２２および生成部１２３としての機能を有する。これらの真理値表分割部１２１，種別判定部１２２および生成部１２３を含む信号パターン生成部１２の具体的な機能や動作については、図７〜図１５を参照しながら後述する。
【００２６】
ライブラリ生成部１３は、信号パターン生成部１２によってグループ毎に生成された信号パターンに基づき、ディレイ情報をグループ毎に測定し、対象ＦＦのディレイライブラリ４０を生成する。このライブラリ生成部１３の具体的な機能や動作については、図１５および図１６を参照しながら後述する。
【００２７】
グループ化部１１に含まれる、回路ループ検出部１１１，出力端子抽出部１１２，入力端子抽出部１１３および出力部１１４としての機能について説明する。
回路ループ検出部１１１は、対象ＦＦのＦＦ回路情報から、対象ＦＦにおいて信号（状態）を保持する回路ループを検出する。通常、ＦＦにおいては、信号を保持する回路ループが、２つのインバータをループ状に接続して形成されている。このため、回路ループ検出部１１１は、ＦＦ回路情報を参照して対象ＦＦの回路をマーク付けしながらトレースし、以前にマークを付与された位置に戻った場合に、回路ループを検出することができる。
【００２８】
出力端子抽出部１１２は、回路ループ検出部１１１によって検出された回路ループからフォワードトレースを行ない、その回路ループに繋がる対象ＦＦの出力端子を、対象ＦＦのＦＦ回路情報から抽出する。この出力端子抽出部１１２によるフォワードトレースについては、図５のステップＳ１２および図６を参照しながら後述する。
【００２９】
入力端子抽出部１１３は、出力端子抽出部１１２によって抽出された出力端子からバックワードトレースを行ない、この出力端子に影響を与える入力端子を、対象ＦＦのＦＦ回路情報から抽出する。この入力端子抽出部１１３によるバックワードトレースについては、図５のステップＳ１３および図６を参照しながら後述する。
【００３０】
出力部１１４は、出力端子抽出部１１２によって抽出された出力端子と入力端子抽出部１１３によって抽出された入力端子とをグループ化し、出力端子毎に、一つのグループとして出力する。この出力部１１４によって出力される各グループの具体例については、図６を参照しながら後述する。
【００３１】
信号パターン生成部１２に含まれる、真理値表分割部１２１，種別判定部１２２および生成部１２３としての機能について説明する。
真理値表分割部１２１は、グループ化部１１によって得られたグループに基づき、保存部２２における対象ＦＦの真理値表をグループ毎に分割する。この真理値表分割部１２１の具体的な機能や動作については、図７および図８を参照しながら後述する。
【００３２】
種別判定部１２２は、真理値表分割部１２１によって分割された各真理値表に基づき、入力端子の種別をグループ毎に判定する。この種別判定部１２２による基本的な判定機能は、以下の項目(a1)〜(a4)の通りである。なお、種別判定部１２２の具体的な機能や動作については、図９〜図１３を参照しながら後述する。
【００３３】
(a1) 種別判定部１２２は、真理値表において出力端子の状態として“Ｈ（ホールド）”が設定されているレコード（真理値表における１行分の要素）を抽出し、抽出された全てのレコードにおいて同一の状態値（１または０）が設定されている入力端子を、クロック端子であると判定する。このクロック端子判定については、図９，図１０および図１３を参照しながら後述する。
【００３４】
(a2) 種別判定部１２２は、クロック端子に係る真理値表のレコードおよびクロック端子と判定された入力端子を除外した真理値表において、出力端子の状態として「１」が設定されているレコードを抽出し、抽出された全てのレコードにおいて同一の状態値（１または０）が設定されている入力端子を、セット端子であると判定する。このセット端子判定については、図９，図１１および図１３を参照しながら後述する。
【００３５】
(a3) 種別判定部１２２は、クロック端子やセット端子に係る真理値表のレコードおよびクロック端子やセット端子と判定された入力端子を除外した真理値表において、出力端子の状態として「０」が設定されているレコードを抽出し、抽出された全てのレコードにおいて同一の状態値（１または０）が設定されている入力端子を、リセット端子であると判定する。このリセット端子判定については、図９，図１２および図１３を参照しながら後述する。
【００３６】
(a4) 種別判定部１２２は、上記項目(a1)〜(a3)の判定を行なった後に未判定のままで残っている入力端子を、データ端子であると判定する。このデータ端子判定については、図９および図１３を参照しながら後述する。
【００３７】
生成部１２３は、種別判定部１２２によって判定された入力端子の種別に基づき、対象ＦＦの入力端子に対して設定する信号パターン、つまりディレイライブラリ作成用のシミュレーションパターンを、グループ毎に生成する。この生成部１２３による基本的な生成機能、および、生成部１２３によって生成された信号パターンに基づくライブラリ生成部１３の基本的な生成機能は、以下の項目(b1), (b2)の通りである。なお、生成部１２３およびライブラリ生成部１３の具体的な機能や動作については、図１４〜図１６を参照しながら後述する。
【００３８】
(b1) 生成部１２３は、グループ毎に、種別判定部１２２による判定結果に応じ、出力端子の状態を「１」から「０」に遷移させる、入力端子に対する第１信号パターンを生成する。このとき、ライブラリ生成部１３は、第１信号パターンによって出力端子の状態が「１」から「０」に遷移する際の、クロック端子から出力端子へのディレイ値、および、クロック端子に対するデータ端子のセットアップ／ホールド時間を、ディレイ情報として、シミュレーションによって測定する。つまり、ライブラリ生成部１３は、出力端子の信号立ち下がり時のディレイ情報をシミュレーションによって測定し、記憶部２０に記録することにより、対象ＦＦのディレイライブラリ４０を生成する。
【００３９】
(b2) 生成部１２３は、上記項目(b1)とは逆に、グループ毎に、種別判定部１２２による判定結果に応じ、出力端子の状態を「０」から「１」に遷移させる、入力端子に対する第２信号パターンを生成する。このとき、ライブラリ生成部１３は、前記第２信号パターンによって前記出力端子の状態が「０」から「１」に遷移する際の、クロック端子から出力端子へのディレイ値、および、クロック端子に対するデータ端子のセットアップ／ホールド時間を、ディレイ情報として、シミュレーションによって測定する。つまり、ライブラリ生成部１３は、出力端子の信号立ち上がり時のディレイ情報を、シミュレーションによって測定し、記憶部２０に記録することにより、対象ＦＦのディレイライブラリ４０を生成する。
【００４０】
〔１−２〕ＬＳＩ回路のディレイ解析
ここで、第１実施形態のディレイライブラリ生成装置１Ａの動作について説明するに先立ち、本装置１Ａによって生成されたＦＦディレイライブラリ４０を用いて行なわれるＬＳＩ回路のディレイ解析の手順について、図２および図３を参照しながら説明する。ここで、図２は、その手順を説明するためのフローチャート（ステップＳ１〜Ｓ７）、図３はディレイ計算を説明するための図である。
【００４１】
図２に示すように、ＬＳＩ回路のディレイ解析に際しては、まず、ＬＳＩ回路におけるパスが選択され（ステップＳ１）、選択されたパス上のマクロについてのディレイ解析ディレイライブラリが選択され、ディレイ条件が設定される（ステップＳ２）。このとき、マクロが組み合わせ回路である場合には、ディレイ解析ディレイライブラリとして、そのマクロに対応する組み合わせ回路ディレイライブラリ３０が選択される。また、マクロがＦＦである場合には、ディレイ解析ディレイライブラリとして、そのマクロに対応するＦＦディレイライブラリ４０が選択される。ディレイ条件としては、ディレイ値の最大値(max)および最小値(min)を算出するためのmax条件とmin条件とが設定される。
【００４２】
そして、ステップＳ２で設定されたディレイ条件と、同じくステップＳ２で選択されたディレイライブラリ３０，４０とに基づいて、ステップＳ１で選択されたパスのディレイ計算が行なわれる（ステップＳ３）。このディレイ計算は、前述したように、ディレイライブラリ３０，４０を使用した静的タイミング解析(ＳＴＡ)により行なわれる。つまり、図３に示すように、対象パスの入力端子から出力端子までの信号の伝播時間が、max条件／min条件に従って算出される。その際、ＬＳＩの回路情報から対象パス上のマクロとその接続関係とが読み出され、読み出された情報に基づき、マクロ間ディレイ値が算出されるとともに、対象パス上の各マクロについてのディレイライブラリ３０，４０を参照して各マクロのマクロ内部ディレイ値が読み出される。上述のごとく算出されたマクロ間ディレイ値と、上述のごとく読み出されたマクロ内部ディレイ値とを加算することにより、対象パスの入力端子から出力端子までの信号の伝播時間が算出される。なお、ディレイライブラリ３０，４０は、マクロ毎に存在し、各マクロについての内部ディレイ値等が、各ディレイライブラリ３０，４０に保存されている。
【００４３】
このように算出された伝播時間に基づき、ステップＳ１で選択された対象パスのディレイチェックが行なわれる（ステップＳ４）。算出された伝播時間に問題がある場合（ステップＳ５のＮＧルート）、ディレイ調整（再作成）が行なわれ（ステップＳ６）、ディレイ解析が再度実行される。一方、算出された伝播時間に問題がない場合（ステップＳ５のＯＫルート）、ＬＳＩの全パスに対する処理を終了したか否かが判定され（ステップＳ７）、終了していなければステップＳ１の処理に戻り、終了していればディレイ解析を終了する。
【００４４】
〔１−３〕第１実施形態のディレイライブラリ生成装置の動作
次に、上述のごとく構成された第１実施形態のディレイライブラリ生成装置１Ａの機能や動作について、図４〜図１６を参照しながら具体的に説明する。第１実施形態のディレイライブラリ生成装置１Ａは、図２や図３を参照しながら上述したディレイ解析を行なう際に用いられるＦＦディレイライブラリ４０を生成するもので、以下、そのＦＦディレイライブラリ４０の生成手順について詳細に説明する。
【００４５】
〔１−３−１〕ディレイライブラリ生成手順の概略
図４に示すフローチャート（ステップＳ１０〜Ｓ６０）に従い、第１実施形態のディレイライブラリ生成装置１Ａによるディレイライブラリ生成手順の概略を説明する。
まず、グループ化部１１において、対象ＦＦのＦＦ回路情報に基づき、対象ＦＦの出力端子と当該出力端子に影響を与える対象ＦＦの入力端子とがグループ化される（ステップＳ１０；グループ化ステップ）。つまり、グループ化部１１は、まず対象ＦＦの回路ループを検出してから、検出した回路ループを起点にフォワードトレースを行なうことにより、対象ＦＦの出力端子を抽出する。さらに、グループ化部１１は、抽出された出力端子からバックワードトレースを行なうことにより、その出力端子に影響を与える対象ＦＦの入力端子を抽出する。これにより、出力端子と当該出力端子に影響を与える入力端子とがグループ化される。なお、ステップＳ１０でのグループ化手順については、図５および図６を参照しながら詳述する。
【００４６】
そして、信号パターン生成部１２において、ステップＳ１０で得られたグループと保存部２２に保存されている対象ＦＦの真理値表とに基づき、対象ＦＦの各入力端子に対する信号パターン、つまりディレイライブラリ作成用のシミュレーションパターンが、グループ毎に生成される（ステップＳ２０〜Ｓ４０；信号パターン生成ステップ）。
【００４７】
つまり、信号パターン生成部１２の真理値表分割部１２１において、ステップＳ１０で得られたグループに基づき、保存部２２に保存されている対象ＦＦの真理値表がグループ毎に分割される（ステップＳ２０）。ステップＳ２０で分割された各真理値表に基づき、信号パターン生成部１２の種別判定部１２２において、入力端子の種別が、クロック端子，セット端子，リセット端子およびデータ端子のうちのいずれであるかが、グループ毎に判定され認識される（ステップＳ３０）。ステップＳ３０で判定された入力端子の種別に基づき、信号パターン生成部１２の生成部１２３において、対象ＦＦの入力端子に対する信号パターンが、グループ毎に生成される（ステップＳ４０）。なお、ステップＳ２０での真理値表分割手順については、図７および図８を参照しながら詳述する。また、ステップＳ３０での端子種別判定手順については、図９〜図１３を参照しながら詳述する。
【００４８】
この後、ライブラリ生成部１３において、ステップＳ４０でグループ毎に生成された信号パターンに基づき、対象ＦＦのディレイ値やセットアップ／ホールド時間などが、グループ毎にディレイ情報として測定され（ステップＳ５０）、判定結果より対象ＦＦのディレイライブラリ４０が記憶部２０に生成される（ステップＳ６０；ライブラリ生成ステップ）。なお、ステップＳ４０での信号パターン生成手順，ステップＳ５０でのディレイ測定手順およびステップＳ６０で生成されるＦＦディレイライブラリ４０については、図１４〜図１６を参照しながら詳述する。
【００４９】
〔１−３−２〕グループ化手順
次に、図４のステップＳ１０においてグループ化部１１により行なわれるグループ化手順について、図６を参照しながら、図５に示すフローチャート（ステップＳ１１〜Ｓ１７）に従って説明する。なお、図６は、第１実施形態のグループ化手順を説明するための図で、ディレイライブラリ４０を生成すべき対象ＦＦの具体的な回路例を示す。図６に示すような回路に関する情報は、ＦＦ回路情報としてデータベース２１に保持されている。このＦＦ回路情報では、前述した通り、対象ＦＦの端子が入力端子と出力端子のいずれであるかの識別は可能であるが、各入力端子の種別は特定されていない。図６に示すＦＦ回路情報では、各出力端子は端子識別情報Ｑ1，Ｑ1′，Ｑ2，Ｑ2′，…，Ｑn，Ｑn′によって特定されるとともに、各入力端子は端子識別情報Ｘ1，Ｘ2，Ｘ3，Ｘ4，…，Ｘmによって特定される。
【００５０】
グループ化部１１が対象ＦＦの端子をグループ化する際、まず、回路ループ検出部１１１によって、対象ＦＦのＦＦ回路情報から、対象ＦＦにおいて状態を保持する回路ループＬi（図６参照；i＝１，２，…，ｎ）が検出される（ステップＳ１１）。上述した通り、回路ループ検出部１１１は、ＦＦ回路情報を参照して対象ＦＦの回路をマーク付けしながらトレースし、マークを付与された位置に戻った場合に、回路ループＬiを検出する。
【００５１】
ステップＳ１１で回路ループＬiが検出されると、出力端子抽出部１１２によって、回路ループＬiからフォワードトレースが行なわれる（ステップＳ１２）。このフォワードトレースによって到達した出力端子Ｑi，Ｑi′が、回路ループＬiに繋がる出力端子として対象ＦＦのＦＦ回路情報から抽出される。なお、フォワードトレースは、図６に示すように、トランジスタ端子についていうと、ゲートからドレインへの方向またはソースからドレインへの方向（矢印(1)参照）に実行される。
【００５２】
そして、ステップＳ１２で到達した出力端子Ｑi，Ｑi′から、入力端子抽出部１１３によってバックワードトレースが行なわれる（ステップＳ１３）。このバックワードトレースによって到達した入力端子として出力端子Ｑi，Ｑi′に影響を与える入力端子が、対象ＦＦのＦＦ回路情報から抽出され、抽出された入力端子に関する情報が出力端子Ｑi，Ｑi′に対応付けられて記憶部２０に保存される（ステップＳ１４）。なお、バックワードトレースは、図６に示すように、トランジスタ端子についていうと、ドレインからゲートへの方向またはドレインからソースへの方向（矢印(2)参照）に実行される。図６に示す例では、出力端子Ｑ1，Ｑ1′からバックワードトレースを行なうと入力端子Ｘ1，Ｘ2，Ｘ3，Ｘ4に到達し、出力端子Ｑn，Ｑn′からバックワードトレースを行なうと入力端子Ｘ1，Ｘ2，Ｘ3，Ｘmに到達している。
【００５３】
ステップＳ１３，Ｓ１４による処理は、ステップＳ１２で抽出された全ての出力端子に対して実行されるまで繰り返し実行される（ステップＳ１５のＮＯルート）。グループ化部１１は、ステップＳ１２で抽出された全ての出力端子に対する処理を完了すると（ステップＳ１５のＹＥＳルート）、対象ＦＦの全ての回路ループに対する処理が完了したか否かを判断する（ステップＳ１６）。グループ化部１１は、対象ＦＦの全ての回路ループに対する処理が完了していない場合（ステップＳ１６のＮＯルート）、ステップＳ１１の処理に戻る。
【００５４】
対象ＦＦの全ての回路ループに対する処理が完了している場合（ステップＳ１６のＹＥＳルート）、ステップＳ１４で記憶部２０に保存された情報に基づき、出力部１１４によって、ステップＳ１２で抽出された出力端子とステップＳ１３で抽出された入力端子とが、グループ化され、記憶部２０に出力保存される（ステップＳ１７）。図６に示す例では、出力端子Ｑ1，Ｑ1′と入力端子Ｘ1，Ｘ2，Ｘ3，Ｘ4とが一つのグループＧ1としてグループ化され、出力端子Ｑn，Ｑn′と入力端子Ｘ1，Ｘ2，Ｘ3，Ｘmとが一つのグループＧNとしてグループ化される。
【００５５】
上述のようにグループ化された各グループＧj（ｊ＝１，２，…，Ｎ）では、各グループＧjに属する入力端子に対する信号の影響範囲が、各グループＧjに属する出力端子に限られる。従って、このようなグループ毎に入力端子に対する信号の組み合わせ（信号パターン）を生成することで、対象ＦＦの全ての入力端子に対する信号の組み合わせを同時に考慮する場合に比べ、ＦＦディレイライブラリ４０を生成するための演算量を大幅に削減することができる。
【００５６】
〔１−３−３〕真理値表分割手順
次に、図４のステップＳ２０において真理値表分割部１２１により行なわれる真理値表分割手順について、図８（Ａ）〜図８（Ｃ）を参照しながら、図７に示すフローチャート（ステップＳ２１〜Ｓ２４）に従って説明する。なお、図８（Ａ）は、前述した通り、真理値表保存部２２に保存されている、対象ＦＦの真理値表（分割前）の一例で、図６に示す対象ＦＦについての真理値表である。また、図８（Ｂ）および図８（Ｃ）は、それぞれ、以下の手順で、図８（Ａ）に示す対象ＦＦの真理値表から分割して得られた、新たな真理値表（分割後）を示している。図８（Ａ）〜図８（Ｃ）において、“Ｘ”はドントケア（don’t care；不定値）を示し、“Ｈ”はホールド（hold）を示している。
【００５７】
図８（Ａ）〜図８（Ｃ）に示した真理値表（分割前／分割後）においても、前述した通り、対象ＦＦの端子が入力端子と出力端子のいずれであるかの識別は可能であるが、各入力端子の種別は特定されていない。図８（Ａ）〜図８（Ｃ）に示す真理値表は、図６に示す対象ＦＦに対応しており、ＦＦ回路情報と同様、これらの真理値表においても、各出力端子は端子識別情報Ｑ1，Ｑ1′，Ｑ2，Ｑ2′，…，Ｑn，Ｑn′によって特定されるとともに、各入力端子は端子識別情報Ｘ1，Ｘ2，Ｘ3，Ｘ4，…，Ｘmによって特定される。
【００５８】
上述したように、各グループＧjは、入力端子に入力された信号が出力端子に影響を与える影響範囲を規定している。真理値表分割部１２１は、各グループＧjに関する情報に基づき、図７に示す手順で、例えば図８（Ａ）に示すような対象ＦＦの真理値表をグループ毎に分割する。
【００５９】
各グループＧjについて、そのグループＧjに属する入力端子および出力端子の識別情報が取り出される（ステップＳ２１）。取り出された入力端子および出力端子の識別情報に基づき、これらの入力端子および出力端子に該当する部分が、真理値表保存部２２の真理値表から取り出される（ステップＳ２２）。取り出された真理値表の部分を組み合わせることにより、グループＧjについての新しい真理値表が作成されて記憶部２０に保存される（ステップＳ２３）。このとき、新しい真理値表は、真理値表保存部２２に保存してもよいし、記憶部２０における、真理値表保存部２２とは異なる記憶領域に保存してもよい。
【００６０】
ステップＳ２１〜Ｓ２３による処理は、全てのグループＧjに対して実行されるまで繰り返し実行される（ステップＳ２４のＮＯルート）。真理値表分割部１２１は、全てのグループＧjに対する処理を完了すると（ステップＳ２４のＹＥＳルート）、真理値表の分割処理を終了する。
【００６１】
例えば、図８（Ａ）の真理値表から分割された図８（Ｂ）の真理値表は、上述したグループＧ1に対応しており、図８（Ａ）の真理値表から、このグループＧ1に属する入力端子Ｘ1，Ｘ2，Ｘ3，Ｘ4と出力端子Ｑ1，Ｑ1′とに該当する部分を抽出して作成されている。同様に、図８（Ａ）の真理値表から分割された図８（Ｃ）の真理値表は、上述したグループＧNに対応しており、図８（Ａ）の真理値表から、このグループＧNに属する入力端子Ｘ1，Ｘ2，Ｘ3，Ｘmと出力端子Ｑn，Ｑn′とに該当する部分を抽出して作成されている。
【００６２】
〔１−３−４〕端子種別判定手順
次に、図４のステップＳ３０において端子種別判定部１２２により行なわれる端子種別判定手順について、図８（Ｂ）および図１３を参照しながら、図９に示すフローチャート（ステップＳ３０１〜Ｓ３１７）に従って説明する。なお、図１３は、第１実施形態の端子種別判定手順を説明するための図で、図８（Ｂ）に示すグループＧ1についての真理値表に基づいて判定される入力端子の種別を具体的に説明するための図である。
【００６３】
まず、上述のごとく分割された真理値表の中から一の真理値表が選択され（ステップＳ３０１）、選択された真理値表から、出力端子に不定値Ｘが出力されるケース（レコード）が除外される（ステップＳ３０２）。なお、図８（Ａ）〜図８（Ｃ）における真理値表の例では、出力端子に不定値Ｘが出力されるケースは示されていない。
【００６４】
この後、端子種別判定部１２２は、選択された真理値表において、出力端子の状態として“Ｈ（ホールド）”が設定されているレコードの有無を判定する（ステップＳ３０３）。ＦＦの真理値表であれば、出力端子の状態として“Ｈ”が設定されたレコードは必ず存在するので、端子種別判定部１２２は、Ｓ３０３の処理後にステップＳ３０４の処理に移行することになる（ステップＳ３０３のＹＥＳルート）。
【００６５】
ステップＳ３０４では、出力端子の状態として“Ｈ”が設定されている複数のレコードが存在する場合、これらの複数のレコードにおいて、同一の状態値（１または０）が設定されている入力端子が、クロック端子ＣＫであると判定され、クロック端子ＣＫと判定された入力端子のその時の状態値が動作値として記憶される。出力端子の状態として“Ｈ”が設定されているレコードが一つである場合、そのレコードでは、一の入力端子の状態として１または０の状態値が設定され、他の入力端子の状態として不定値Ｘが設定される。このため、“Ｈ”が設定されているレコードが一つである場合、上記一の入力端子がクロック端子ＣＫであると判定され、クロック端子ＣＫと判定された入力端子のその時の状態値が動作値として記憶される。例えば図８（Ｂ）に示すグループＧ1についての真理値表では、図１３に示すように、出力端子の状態として“Ｈ”が設定されたレコード(1)が一つだけ抽出される。“Ｈ”が設定されているレコードが一つであるため、図１３に示す例では、レコード(1)において、状態値として“１”が設定された入力端子Ｘ1がクロック端子ＣＫであると判定される。
【００６６】
このステップＳ３０４でのより詳細な処理、つまり第１実施形態のクロック端子判定手順について、図１０に示すフローチャート（ステップＳ３２１〜Ｓ３２５）に従って説明する。種別判定部１２２は、選択された真理値表から、出力端子の状態として“Ｈ”を設定されているレコードを抽出する（ステップＳ３２１）。また、種別判定部１２２は、抽出されたレコードの中から、信号種別不明の入力端子、つまり、まだ種別が特定されていない一の入力端子を取り出す（ステップＳ３２２）。
【００６７】
そして、ステップＳ３２２で取り出された入力端子に、状態値として全て同一の値（１または０）が設定されているか否かが判定される（ステップＳ３２３）。ステップＳ３２２で取り出された入力端子に同一の値（１または０）が設定されている場合（ステップＳ３２３のＹＥＳルート）、種別判定部１２２は、ステップＳ３２２で取り出された入力端子をクロック端子ＣＫであると判定し、クロック端子ＣＫと判定された入力端子にその時に設定された値（１または０）を記憶し（ステップＳ３２４）、クロック端子判定処理を終了する。
【００６８】
一方、ステップＳ３２２で取り出された入力端子に同一の値（１または０）が設定されていない場合（ステップＳ３２３のＮＯルート）、種別判定部１２２は、ステップＳ３２１で抽出されたレコードの中から、信号種別不明の入力端子を全て取り出したか否かを判定する（ステップＳ３２５）。種別不明の入力端子をまだ全て取り出していない場合（ステップＳ３２５のＮＯルート）、種別判定部１２２は、ステップＳ３２２の処理に戻る。また、種別不明の入力端子を全て取り出した場合（ステップＳ３２５のＹＥＳルート）、種別判定部１２２は、クロック端子判定処理を終了する。
【００６９】
端子種別判定部１２２は、クロック端子ＣＫの判定を行なった後、出力端子の状態として“Ｈ”が設定されているレコード（例えば図１３のレコード(1)）を真理値表から除外するとともに（ステップＳ３０５）、クロック端子ＣＫつまり入力端子Ｘ1を真理値表から除外する（ステップＳ３０６）。この除外処理によって、クロック端子ＣＫに係るレコードとクロック端子ＣＫとが、真理値表から除外される。このような除外処理を終了した後、あるいは、出力端子の状態として“Ｈ”が設定されたレコードが存在しないと判定した場合（ステップＳ３０３のＮＯルート）、種別判定部１２２は、ステップＳ３０７の処理に移行する。
【００７０】
ステップＳ３０７では、クロック端子ＣＫに係るレコードおよびクロック端子ＣＫと判定された入力端子を除外した真理値表において、特定の値（１または０）に設定されると、出力端子の状態が必ず“１”になる入力端子の有無が判定される。このような入力端子が有る場合（ステップＳ３０７のＹＥＳルート）、その入力端子がセット端子Ｓであると判定され、セット端子Ｓと判定された入力端子のその時の状態値が動作値として記憶される（ステップＳ３０８）。
【００７１】
ステップＳ３０７，Ｓ３０８でのより詳細な処理、つまり第１実施形態のセット端子判定手順について、図１１に示すフローチャート（ステップＳ３３１〜Ｓ３３５）に従って説明する。種別判定部１２２は、クロック端子ＣＫに係るレコードおよび入力端子を除外した真理値表から、出力端子の状態として“１”が設定されているレコードを抽出する（ステップＳ３３１）。また、種別判定部１２２は、ステップＳ３３１で抽出されたレコードの中から、信号種別不明の入力端子、つまり、まだ種別が特定されていない一の入力端子を取り出す（ステップＳ３３２）。
【００７２】
そして、ステップＳ３３２で取り出された入力端子に、状態値として全て同一の値（１または０）が設定されているか否かが判定される（ステップＳ３３３）。ステップＳ３３２で取り出された入力端子に同一の値（１または０）が設定されている場合（ステップＳ３３３のＹＥＳルート）、種別判定部１２２は、ステップＳ３３２で取り出された入力端子をセット端子Ｓであると判定し、セット端子Ｓと判定された入力端子にその時設定された値（１または０）を記憶し（ステップＳ３３４）、セット端子判定処理を終了する。
【００７３】
一方、ステップＳ３３２で取り出された入力端子に同一の値（１または０）が設定されていない場合（ステップＳ３３３のＮＯルート）、種別判定部１２２は、ステップＳ３３１で抽出されたレコードの中から、信号種別不明の入力端子を全て取り出したか否かを判定する（ステップＳ３３５）。種別不明の入力端子をまだ全て取り出していない場合（ステップＳ３３５のＮＯルート）、種別判定部１２２は、ステップＳ３３２の処理に戻る。また、種別不明の入力端子を全て取り出した場合（ステップＳ３３５のＹＥＳルート）、種別判定部１２２は、セット端子判定処理を終了する。
【００７４】
例えば図８（Ｂ）に示すグループＧ1についての真理値表では、図１３に示すように、レコード(1)および入力端子Ｘ1（クロック端子ＣＫ）が除外される。レコード(1)および入力端子Ｘ1が除外された真理値表では、レコード(4)において、入力端子Ｘ2，Ｘ3，Ｘ4の状態値がそれぞれ“０”，“０”，“１”のときに出力端子Ｑ1の状態値が“１”になっている。これに対し、レコード(2)においては、入力端子Ｘ2の状態値が“１”で且つ入力端子Ｘ2以外の入力端子Ｘ3，Ｘ4の状態値がいずれも不定値Ｘのときに出力端子Ｑ1の状態値が“１”になっている。従って、レコード(2)に基づき、入力端子Ｘ2の状態値が特定の値“１”に設定されると、出力端子Ｑ1の状態が必ず“１”になると判定される。このため、入力端子Ｘ2の状態値“１”に対して出力端子Ｑ1の状態値として“１”が設定されたレコード(2)が抽出される。そして、レコード(2)において、状態値として“１”を設定された入力端子Ｘ2がセット端子Ｓであると判定される。
【００７５】
端子種別判定部１２２は、セット端子Ｓの判定を行なった後、セット端子Ｓつまり入力端子Ｘ2を真理値表から除外する（ステップＳ３０９）。このような除外処理を終了した後、あるいは、特定の値（１または０）に設定されると出力端子の状態が必ず“１”になる入力端子が存在しないと判定した場合（ステップＳ３０７のＮＯルート）、種別判定部１２２は、ステップＳ３１０の処理に移行する。
【００７６】
ステップＳ３１０では、クロック端子ＣＫおよびセット端子Ｓに係るレコード、および、クロック端子ＣＫ／セット端子Ｓと判定された入力端子を除外した各真理値表において、特定の値（１または０）に設定されると、出力端子の状態が必ず“０”になる入力端子の有無が判定される。このような入力端子が有る場合（ステップＳ３１０のＹＥＳルート）、その入力端子がリセット端子Ｒであると判定され、リセット端子Ｒと判定された入力端子のその時の状態値が動作値として記憶される（ステップＳ３１１）。
【００７７】
ステップＳ３１０，Ｓ３１１でのより詳細な処理、つまり第１実施形態のリセット端子判定手順について、図１２に示すフローチャート（ステップＳ３４１〜Ｓ３４５）に従って説明する。種別判定部１２２は、クロック端子ＣＫやセット端子Ｓに係るレコード、および、クロック端子ＣＫ／セット端子Ｓと判定された入力端子を除外した各真理値表から、出力端子の状態として“０”が設定されているレコードを抽出する（ステップＳ３４１）。また、種別判定部１２２は、ステップＳ３４１で抽出されたレコードの中から、信号種別不明の入力端子、つまり、まだ種別が特定されていない一の入力端子を取り出す（ステップＳ３４２）。
【００７８】
そして、ステップＳ３４２で取り出された入力端子に、状態値として全て同一の値（１または０）が設定されているか否かが判定される（ステップＳ３４３）。ステップＳ３４２で取り出された入力端子に同一の値（１または０）が設定されている場合（ステップＳ３４３のＹＥＳルート）、種別判定部１２２は、ステップＳ３４２で取り出された入力端子をリセット端子Ｒであると判定し、リセット端子Ｒと判定された入力端子にその時設定された値（１または０）を記憶し（ステップＳ３４４）、リセット端子判定処理を終了する。
【００７９】
一方、ステップＳ３４２で取り出された入力端子に同一の値（１または０）が設定されていない場合（ステップＳ３４３のＮＯルート）、種別判定部１２２は、ステップＳ３４１で抽出されたレコードの中から、信号種別不明の入力端子を全て取り出したか否かを判定する（ステップＳ３４５）。種別不明の入力端子をまだ全て取り出していない場合（ステップＳ３４５のＮＯルート）、種別判定部１２２は、ステップＳ３４２の処理に戻る。また、種別不明の入力端子を全て取り出した場合（ステップＳ３４５のＹＥＳルート）、種別判定部１２２は、リセット端子判定処理を終了する。
【００８０】
例えば図８（Ｂ）に示すグループＧ1についての真理値表では、図１３に示すように、レコード(1),(2)および入力端子Ｘ1，Ｘ2（クロック端子ＣＫ，セット端子Ｓ）が除外される。レコード(1),(2)および入力端子Ｘ1，Ｘ2が除外された真理値表では、レコード(5)において、入力端子Ｘ3，Ｘ4の状態値がそれぞれ“０”，“０”のときに出力端子Ｑ1の状態値が“０”になっている。これに対し、レコード(3)においては、入力端子Ｘ3の状態値が“１”で且つ入力端子Ｘ3以外の入力端子Ｘ4の状態値が不定値Ｘのときに出力端子Ｑ1の状態値が“０”になっている。従って、レコード(3)に基づき、入力端子Ｘ2の状態値が特定の値“１”に設定されると、出力端子Ｑ1の状態が必ず“０”になると判定される。このため、入力端子の状態値“１”に対して出力端子Ｑ1の状態値として“０”が設定されたレコード(3)が抽出される。そして、レコード(3)において、状態値として“１”が設定された入力端子Ｘ3がリセット端子Ｒであると判定される。
【００８１】
端子種別判定部１２２は、リセット端子Ｒの判定を行なった後、リセット端子Ｒつまり入力端子Ｘ3を真理値表から除外する（ステップＳ３１２）。このような除外処理を終了した後、あるいは、特定の値（１または０）に設定されると出力端子の状態が必ず“０”になる入力端子が存在しないと判定した場合（ステップＳ３１０のＮＯルート）、種別判定部１２２は、ステップＳ３１３の処理に移行する。
【００８２】
ステップＳ３１３では、セット端子Ｓまたはリセット端子Ｒのいずれかが未判定であるか否かが判定される。セット端子Ｓもリセット端子Ｒも判定済みである場合（ステップＳ３１３のＹＥＳルート）、端子種別判定部１２２は、ステップＳ３１５の処理に移行する。また、セット端子Ｓまたはリセット端子Ｒのいずれか一方が未認識である場合（ステップＳ３１３のＮＯルート）、今回の端子種別判定が１回目であるか否かが判定される（ステップＳ３１４）。１回目の端子種別判定である場合（ステップＳ３１４のＹＥＳルート）、端子種別判定部１２２は、ステップＳ３０７の処理に戻り、２回目の端子種別判定である場合（ステップＳ３１４のＮＯルート）、ステップＳ３１５の処理に移行する。
【００８３】
ここで、ステップＳ３１３およびＳ３１４による判定処理は、セット端子Ｓよりも先にリセット端子Ｒが認識されなければ、セット端子Ｓを認識判定できない場合があるための措置である。端子種別判定を２回行なってもセット端子Ｓまたはリセット端子Ｒを認識できない場合、端子種別判定部１２２は、対象ＦＦにセット端子Ｓまたはリセット端子Ｒが存在しないものと判断して次の処理（ステップＳ３１５）に移行する。
【００８４】
ステップＳ３１５において、端子種別判定部１２２は、この時点で残っている信号種別不明の入力端子、つまり、まだ種別が特定されていない入力端子をデータ端子Ｄであると判定する。そして、端子種別判定部１２２は、そのデータ端子Ｄの値と出力端子の値との組み合わせを記録する（ステップＳ３１６）。なお、本実施形態では、対象ＦＦにおいては、図１５（Ａ）や図１６（Ａ）に示すごとく、ｎ個のデータ端子Ｄ1，Ｄ2，…，Ｄnがそなえられているものとする。
【００８５】
例えば図８（Ｂ）に示すグループＧ1についての真理値表では、図１３に示すように、レコード(1),(2),(3)および入力端子Ｘ1，Ｘ2，Ｘ3（クロック端子ＣＫ，セット端子Ｓ，リセット端子Ｒ）が除外された状態で残っている２つのレコード(4),(5)が抽出される。そして、レコード(4),(5)における入力端子Ｘ4がデータ端子Ｄ1であると判定される。
【００８６】
この後、端子種別判定部１２２は、真理値表分割部１２１によって分割された全ての真理値表に対する処理が完了したか否かを判断し（ステップＳ３１７）、処理が完了していない場合（ステップＳ３１７のＮＯルート）、ステップＳ３０１の処理に戻る。また、分割された全ての真理値表に対する処理が完了している場合（ステップＳ３１７のＹＥＳルート）、端子種別判定部１２２は、端子種別判定処理を終了する。
【００８７】
〔１−３−５〕信号パターン生成手順およびディレイ測定手順
次に、図４のステップＳ４０での信号パターン生成手順，ステップＳ５０でのディレイ測定手順およびステップＳ６０で生成されるＦＦディレイライブラリ４０について、図１４〜図１６を参照しながら説明する。
まず、図１４に示すフローチャート（ステップＳ５０１〜Ｓ５１１）に従って、ステップＳ４０において生成部１２３により行なわれる信号パターン生成手順とステップＳ５０においてライブラリ生成部１３により行なわれるディレイ測定手順とについて説明する。
【００８８】
端子種別判定済みの真理値表の中から一の真理値表が選択され（ステップＳ５０１）、生成部１２３は、選択された真理値表における端子種別を参照し、当該真理値表に対応するグループに属する入力端子ＣＬ，Ｓ，Ｒ，Ｄiおよび出力端子Ｑi，Ｑi′を認識する。そして、生成部１２３は、まず、セット端子Ｓおよびリセット端子Ｒにそれぞれ入力される信号を無効化する（ステップＳ５０２）。つまり、生成部１２３は、セット端子Ｓおよびリセット端子Ｒに“０”を設定することで、出力端子Ｑi，Ｑi′に出力される信号を変化可能にする。
【００８９】
この後、生成部１２３は、出力端子Ｑiに“１”が出力された状態で、出力端子Ｑiを“Ｈ（ホールド）”にする値をクロック端子ＣＫに設定するように、信号パターンを生成する（ステップＳ５０３）。続いて、生成部１２３は、出力端子Ｑiに“０”を出力する値をデータ端子Ｄiに設定し、クロック端子ＣＫの値を変化させるように、信号パターンを生成する（ステップＳ５０４）。このようなクロックＣＫの値の変化に伴い、出力端子Ｑiの値は“１”から“０”に立ち下がるとともに、出力端子Ｑi′の値は“０”から“１”に立ち上がる。
【００９０】
このようにステップＳ５０３，Ｓ５０４によって信号パターンを生成して入力端子に設定することで、クロック端子ＣＫの信号遷移に伴い出力端子Ｑi／Ｑi′の信号が立ち下がり／立ち上がり遷移する。その際、ライブラリ生成部１３は、シミュレータを用い、下記項目(c1)のディレイ値を算出測定するとともに（ステップＳ５０５）、下記項目(c2)および(c3)のセットアップ時間およびホールド時間を算出測定する（ステップＳ５０６）。測定されたディレイ値，セットアップ時間およびホールド時間は、記憶部２０に記録され、ＦＦディレイライブラリ４０が生成される。このようにして、生成部１２３およびライブラリ生成部１３は、上記項目(b1)で説明した機能を実現している。
【００９１】
(c1) クロック端子ＣＫから出力端子Ｑi，Ｑi′までのディレイ値（クロック端子の信号遷移から出力端子の出力信号が遷移するまでの遅延時間）
(c2) クロック端子ＣＫに対するデータ端子Ｄiのセットアップ時間（クロック端子の信号遷移後にデータ端子へのデータ信号を保持しておかなければならない最小時間）
(c3) クロック端子ＣＫに対するデータ端子Ｄiのホールド時間（クロック端子の信号遷移に先立ちデータ端子へのデータ信号を予め保持しておかなければならない最小時間）
【００９２】
同様に、生成部１２３は、出力端子Ｑiに“０”が出力された状態で、出力端子Ｑiを“Ｈ（ホールド）”にする値をクロック端子ＣＫに設定するように、信号パターンを生成する（ステップＳ５０７）。続いて、生成部１２３は、出力端子Ｑiに“１”を出力する値をデータ端子Ｄiに設定し、クロック端子ＣＫの値を変化させるように、信号パターンを生成する（ステップＳ５０８）。このようなクロックＣＫの値の変化に伴い、出力端子Ｑiの値は“０”から“１”に立ち上がるとともに、出力端子Ｑi′の値は“１”から“０”に立ち下がる。
【００９３】
このようにステップＳ５０７，Ｓ５０８によって信号パターンを生成して入力端子に設定することで、クロック端子ＣＫの信号遷移に伴い出力端子Ｑi／Ｑi′の信号が立ち上がり／立ち下がり遷移する。その際、ライブラリ生成部１３は、シミュレータを用い、上記項目(c1)のディレイ値を算出測定するとともに（ステップＳ５０９）、上記項目(c2)および(c3)のセットアップ時間およびホールド時間を算出測定する（ステップＳ５１０）。測定されたディレイ値，セットアップ時間およびホールド時間は、記憶部２０に記録され、ＦＦディレイライブラリ４０が生成される。このようにして、生成部１２３およびライブラリ生成部１３は、上記項目(b2)で説明した機能を実現している。
【００９４】
この後、生成部１２３は、端子種別判定済みの全ての真理値表に対する処理が完了したか否かを判断し（ステップＳ５１１）、処理が完了していない場合（ステップＳ５１１のＮＯルート）、ステップＳ５０１の処理に戻る。また、端子種別判定済みの全ての真理値表に対する処理が完了している場合（ステップＳ５１１のＹＥＳルート）、生成部１２３およびライブラリ生成部１３は、信号パターン生成／ディレイ測定処理を終了する。
【００９５】
ついで、図１５および図１６を参照しながら、図１４に従って上述した信号パターン生成／ディレイ測定処理について、より具体的に説明する。なお、図１５（Ａ）および図１５（Ｂ）は、第１実施形態の信号パターン生成手順およびディレイ測定手順を、より具体的に説明するための図である。また、図１６（Ａ）および図１６（Ｂ）は、図１５（Ａ）および図１５（Ｂ）で説明した手順で得られたＦＦディレイライブラリ４０を具体的に説明するための図である。
【００９６】
図１５（Ｂ），図１６（Ｂ）および以下の説明において、信号（値）の“１”から“０”への立ち下がり遷移は、“Ｄ (down)”で表記され、信号（値）の“０”から“１”への立ち上がり遷移は、“Ｕ(up)”で表記される。このような表記を用い、出力端子Ｑi，Ｑi′の値の立ち下がり遷移はＱi(Ｄ)，Ｑi′(Ｄ)と表記され、出力端子Ｑi，Ｑi′の値の立ち上がり遷移はＱi(Ｕ)，Ｑi′(Ｕ)と表記される。同様に、クロック端子ＣＫの値の立ち下がり遷移はＣＫ(Ｄ)と表記され、クロック端子ＣＫの値の立ち上がり遷移はＣＫ(Ｕ)と表記される。
【００９７】
ここでは、図１５（Ａ）および図１６（Ａ）に示すように、図６に示したＦＦがディレイライブラリ４０の生成対象になっている。このＦＦは、入力端子としてクロック端子ＣＫ，セット端子Ｓ，リセット端子Ｒおよびｎ個のデータ端子Ｄ1〜Ｄnを有するとともに、出力端子Ｑ1〜Ｑn，Ｑ1′〜Ｑn′を有している。
【００９８】
図１５（Ａ）および図１５（Ｂ）に示すように、クロック端子ＣＫ，セット端子Ｓ，リセット端子Ｒ，データ端子Ｄ1および出力端子Ｑ1，Ｑ1′を含む第１グループに対し、項目(d1), (d2)で示す処理が実行される。項目(d1)で示す処理は、図１４のステップＳ５０３〜Ｓ５０６による処理に対応し、項目(d2)で示す処理は、図１４のステップＳ５０７〜Ｓ５１０による処理に対応している。
【００９９】
項目(d1)で示す処理では、生成部１２３は、各信号がＳ＝０，Ｒ＝０，ＣＫ＝１，Ｄ1＝１（Ｑ1＝１，Ｑ1′＝０）の状態で、Ｄ1＝０とする。Ｄ1＝０とした状態から、生成部１２３はＣＫ＝０とし、その際、ライブラリ生成部１３は、クロック端子ＣＫ(Ｄ)から出力端子Ｑ1(Ｄ)，Ｑi′(Ｕ)までのディレイ値をそれぞれ測定する。また、ライブラリ生成部１３は、Ｄ1＝０，ＣＫ＝Ｄのセットアップ時間およびホールド時間を測定する。このように測定されたＣＫ(Ｄ)→Ｑ1(Ｄ)のディレイ値，ＣＫ(Ｄ)→Ｑ1′(Ｕ)のディレイ値およびＣＫ(Ｄ)vsＤ1のセットアップ／ホールド時間は、図１６（Ｂ）に示すように、Ｄ1＝０に対応付けられて、記憶部２０のＦＦディレイライブラリ４０に記録保存される。
【０１００】
項目(d2)で示す処理では、生成部１２３は、各信号がＳ＝０，Ｒ＝０，ＣＫ＝１，Ｄ1＝０（Ｑ1＝０，Ｑ1′＝１）の状態で、Ｄ1＝１とする。Ｄ1＝１とした状態から、生成部１２３はＣＫ＝０とし、その際、ライブラリ生成部１３は、クロック端子ＣＫ(Ｄ)から出力端子Ｑ1(Ｕ)，Ｑi′(Ｄ)までのディレイ値をそれぞれ測定する。また、ライブラリ生成部１３は、Ｄ1＝１，ＣＫ＝Ｄのセットアップ時間およびホールド時間を測定する。このように測定されたＣＫ(Ｄ)→Ｑ1(Ｕ)のディレイ値，ＣＫ(Ｄ)→Ｑ1′(Ｄ)のディレイ値およびＣＫ(Ｄ)vsＤ1のセットアップ／ホールド時間は、図１６（Ｂ）に示すように、Ｄ1＝１に対応付けられて、記憶部２０のＦＦディレイライブラリ４０に記録保存される。
【０１０１】
図１５（Ａ）および図１５（Ｂ）に示すように、クロック端子ＣＫ，セット端子Ｓ，リセット端子Ｒ，データ端子Ｄnおよび出力端子Ｑn，Ｑn′を含む第ｎグループに対し、項目(d3), (d4)で示す処理が実行される。項目(d3)で示す処理は、項目(d1)の処理と同様、図１４のステップＳ５０３〜Ｓ５０６による処理に対応し、項目(d4)で示す処理は、項目(d2)の処理と同様、図１４のステップＳ５０７〜Ｓ５１０による処理に対応している。
【０１０２】
項目(d3)で示す処理では、生成部１２３は、各信号を、Ｓ＝０，Ｒ＝０，ＣＫ＝１，Ｄn＝１（Ｑn＝１，Ｑ1′＝０）に設定した状態で、Ｄn＝０とする。Ｄn＝０とした状態から、生成部１２３はＣＫ＝０とし、その際、ライブラリ生成部１３は、クロック端子ＣＫ(Ｄ)から出力端子Ｑn(Ｄ)，Ｑn′(Ｕ)までのディレイ値をそれぞれ測定する。また、ライブラリ生成部１３は、Ｄn＝０，ＣＫ＝Ｄのセットアップ時間およびホールド時間を測定する。このように測定されたＣＫ(Ｄ)→Ｑn(Ｄ)のディレイ値，ＣＫ(Ｄ)→Ｑn′(Ｕ)のディレイ値およびＣＫ(Ｄ)vsＤnのセットアップ／ホールド時間は、図１６（Ｂ）に示すように、Ｄn＝０に対応付けられて、記憶部２０のＦＦディレイライブラリ４０に記録保存される。
【０１０３】
項目(d4)で示す処理では、生成部１２３は、各信号を、Ｓ＝０，Ｒ＝０，ＣＫ＝１，Ｄn＝０（Ｑn＝０，Ｑn′＝１）に設定した状態で、Ｄn＝１とする。Ｄn＝１とした状態から、生成部１２３はＣＫ＝０とし、その際、ライブラリ生成部１３は、クロック端子ＣＫ(Ｄ)から出力端子Ｑn(Ｕ)，Ｑn′(Ｄ)までのディレイ値をそれぞれ測定する。また、ライブラリ生成部１３は、Ｄn＝１，ＣＫ＝Ｄのセットアップ時間およびホールド時間を測定する。このように測定されたＣＫ(Ｄ)→Ｑn(Ｕ)のディレイ値，ＣＫ(Ｄ)→Ｑn′(Ｄ)のディレイ値およびＣＫ(Ｄ)vsＤnのセットアップ／ホールド時間は、図１６（Ｂ）に示すように、Ｄn＝１に対応付けられて、記憶部２０のＦＦディレイライブラリ４０に記録保存される。
【０１０４】
なお、図１５および図１６では、第２〜第ｎ−１グループに対する処理について、図示および説明を省略しているが、これらの第２〜第ｎ−１グループに対しても、第１および第ｎグループに対する処理(d1)〜(d4)と同様の処理が実行される。これにより、第ｉグループ（ｉ＝２，…，ｎ−１）についても、ＣＫ(Ｄ)→Ｑi(Ｄ)のディレイ値，ＣＫ(Ｄ)→Ｑi′(Ｕ)のディレイ値およびＣＫ(Ｄ)vsＤiのセットアップ／ホールド時間が測定され、測定結果がＤi＝０に対応付けられてＦＦディレイライブラリ４０に記録保存される。同様に、ＣＫ(Ｄ)→Ｑi(Ｕ)のディレイ値，ＣＫ(Ｄ)→Ｑi′(Ｄ)のディレイ値およびＣＫ(Ｄ)vsＤiのセットアップ／ホールド時間が測定され、測定結果がＤi＝１に対応付けられてＦＦディレイライブラリ４０に記録保存される。
【０１０５】
〔１−４〕第１実施形態のディレイライブラリ生成装置の効果
第１実施形態のディレイライブラリ生成装置１Ａによれば、対象ＦＦの出力端子および入力端子についてグループ化が行なわれ、グループ毎に信号パターンの生成およびディレイ情報の測定が自動的に行なわれる。これにより、ＦＦディレイライブラリ４０の生成が、人手によることなく、自動的に短時間で行なわれる。
【０１０６】
特に、上述のようにグループ化された各グループでは、各グループに属する入力端子に対する信号の影響範囲が、各グループに属する出力端子に限られる。従って、このようなグループ毎に入力端子に対する信号パターン／シミュレーションパターンを生成することで、対象ＦＦの全ての入力端子に対する信号の組み合わせを同時に考慮する場合に比べ、ＦＦディレイライブラリ４０を生成するための演算量が大幅に削減される。
【０１０７】
また、上述したように、ＦＦ回路情報や真理値表における入力端子の種別が自動的に判定されて認識されるとともに、入力端子に対する信号パターン／シミュレーションパターンが自動的に生成されるので、ＦＦディレイライブラリ４０の生成自動化が実現される。従って、ＦＦディレイライブラリ４０の生成が、人手によることなく、自動的に短時間で行なわれるのである。
【０１０８】
〔２〕第２実施形態の説明
〔２−１〕第２実施形態のディレイライブラリ生成装置の構成
図１７は、第２実施形態のディレイライブラリ生成装置１Ｂの機能構成を示すブロック図である。前述した第１実施形態では、対象ＦＦの真理値表が存在し予め与えられている場合について説明したが、この第２実施形態は、対象ＦＦの真理値表が存在していない場合に対応するものである。このため、第２実施形態では、後述するように、対象ＦＦの真理値表を作成してＦＦディレイライブラリ４０を生成するための機能がそなえられている。
【０１０９】
図１７に示すディレイライブラリ生成装置１Ｂも、第１実施形態のディレイライブラリ生成装置１Ａと同様、ＦＦのディレイライブラリ４０を生成するもので、一般的なパーソナルコンピュータ等の計算機から構成される。そして、ディレイライブラリ生成装置１Ｂも、第１実施形態と同様、処理部１０および記憶部２０を有するほか、ユーザによって操作され各種情報を本装置１Ｂに入力するマンマシンインタフェース（図示略）を有している。
【０１１０】
処理部１０は、ディレイライブラリ生成プログラムを実行することにより、第１実施形態と同様のグループ化部１１およびライブラリ生成部１３としての機能を果たすとともに、後述する信号パターン生成部１２′および真理値表作成部１４としての機能を果たす。
また、記憶部２０は、第１実施形態と同様のＦＦ回路情報データベース２１およびＦＦディレイライブラリ４０を有するほか、真理値表保存部２２およびシミュレーションパターン保存部２３を有している。
【０１１１】
ここで、ＦＦディレイライブラリ４０は、本装置１Ｂによって生成されるものである。真理値表保存部２２は、後述する真理値表作成部１４によって作成された真理値表を保存する。また、シミュレーションパターン保存部２３は、後述するごとく、真理値表作成部１４によって真理値表の作成時に用いられるもので、シミュレーションパターン〔図２３（Ａ），図２３（Ｂ）参照〕をグループ毎に保存する。
【０１１２】
この第２実施形態におけるＦＦ回路情報やシミュレーションパターン〔図２３（Ａ），図２３（Ｂ）参照〕でも、第１実施形態のＦＦ回路情報や真理値表と同様、対象ＦＦの端子が入力端子と出力端子のいずれであるかの識別が可能になっている。また、ＦＦ回路情報およびシミュレーションパターンには、各出力端子を特定する端子識別情報Ｑ1，Ｑ1′，Ｑ2，Ｑ2′，…，Ｑn，Ｑn′が含まれており、各出力端子は、端子識別情報Ｑ1，Ｑ1′，Ｑ2，Ｑ2′，…，Ｑn，Ｑn′によって特定される。
【０１１３】
また、ＦＦ回路情報およびシミュレーションパターンには、各入力端子を特定しうる端子識別情報Ｘ1，Ｘ2，…，Ｘmが含まれており、各入力端子は、端子識別情報Ｘ1，Ｘ2，…，Ｘmによって特定される。しかし、ＦＦ回路情報およびシミュレーションパターンにおいて、各入力端子の種別が何であるか、つまり各入力端子がクロック端子，セット端子，リセット端子，データ端子のいずれであるかを特定するための情報は含まれていない。つまり、図６に示すＦＦ回路情報における入力端子と図２３（Ａ），図２３（Ｂ）に示す対象ＦＦのシミュレーションパターンにおける入力端子との対応関係は認識されているが、ＦＦ回路情報やシミュレーションパターンにおいては入力端子情報の意味付けがなされておらず、各入力端子の種別は認識されていない。このため、本装置１Ｂでは、後述する真理値表作成部１４（作成部１４４）が、図２３（Ａ），図２３（Ｂ）に示すシミュレーションパターンから図２３（Ｃ）に示す真理値表を生成する際に、各入力端子の種別の判定／認識も同時に行なう。
【０１１４】
次に、第２実施形態の処理部１０が果たす、グループ化部１１，信号パターン生成部１２′，ライブラリ生成部１３および真理値表作成部１４としての機能について、詳細に説明する。
グループ化部１１は、第１実施形態と同様、対象ＦＦのＦＦ回路情報に基づき、対象ＦＦの出力端子と当該出力端子に影響を与える対象ＦＦの入力端子とをグループ化する。このグループ化部１１は、第１実施形態と同様の回路ループ検出部１１１，出力端子抽出部１１２，入力端子抽出部１１３および出力部１１４としての機能を有しているので、その説明は省略する。
【０１１５】
真理値表作成部１４は、グループ化部１１によって得られたグループに基づき、対象ＦＦの真理値表をグループ毎に作成する。この真理値表作成部１４は、後述する切断部１４１，安定化処理部１４２，シミュレーション部１４３および作成部１４４としての機能を有する。これらの切断部１４１，安定化処理部１４２，シミュレーション部１４３および作成部１４４を含む真理値表作成部１４の具体的な機能や動作については、図１９〜図２３を参照しながら後述する。
【０１１６】
信号パターン生成部１２′は、グループ化部１１によって得られたグループと真理値表作成部１４によって作成されたグループ毎の真理値表とに基づき、対象ＦＦの入力端子に対する信号パターンを、グループ毎に生成する。第２実施形態では、真理値表作成部１４によって作成された真理値表は、既にグループ毎に分割されているとともに、入力端子の種別も認識済みである。このため、第２実施形態の信号パターン生成部１２′では、第１実施形態における真理値表分割部１２１および種別判定部１２２としての機能は不要であり、生成部１２３としての機能のみがそなえられている。この生成部１２３は、真理値表作成部１４で判定された入力端子の種別に基づき、第１実施形態と同様、対象ＦＦの入力端子に対する信号パターン、つまりディレイライブラリ作成用のシミュレーションパターンを、グループ毎に生成する。
【０１１７】
ライブラリ生成部１３は、信号パターン生成部１２′によってグループ毎に生成された信号パターンに基づき、ディレイ情報をグループ毎に測定し、測定結果から対象ＦＦのディレイライブラリ４０を生成する。
ここで、生成部１２３による基本的な生成機能、および、生成部１２３によって生成された信号パターンに基づくライブラリ生成部１３の基本的な生成機能は、上記項目(b1), (b2)の通りである。また、生成部１２３およびライブラリ生成部１３の具体的な機能や動作については、第１実施形態において図１４〜図１６を参照しながら前述した通りであるので、その説明は省略する。
【０１１８】
ついで、真理値表作成部１４に含まれる、切断部１４１，安定化処理部１４２，シミュレーション部１４３および作成部１４４としての機能と、記憶部２０におけるシミュレーションパターン保存部２３の機能について説明する。
【０１１９】
切断部１４１は、シミュレーション部１４３によるシミュレーション開始前に、第１実施形態で上述した回路ループ検出部１１１と同様にして、対象ＦＦの回路情報から、対象ＦＦにおいて信号を保持する回路ループを検出し、検出された回路ループを切断する。ここで、論理シミュレーションを行なう際に回路ループが存在すると、その回路ループで信号が回わって発振してしまうため、このような状況を、何らかの処理により解消する必要が生じる。ＦＦの回路ループは、基本的に、信号を保持する回路要素として現れるので、この回路ループを切断しても論理シミュレーション結果に影響を与えることはない。そこで、本実施形態では、論理シミュレーションに先立って、切断部１４１が、対象ＦＦの回路ループを検出し、回路ループを切断削除する回路修正を対象ＦＦに対し行なっておくことで、シミュレーション部１４３で実行される論理シミュレーションが容易化かつ高速化される。この切断１４１の具体的な機能や動作については、図２１を参照しながら後述する。
【０１２０】
安定化処理部１４２は、対象ＦＦ内に存在する不定値Ｘを「０」または「１」に設定する。特に、本実施形態において、安定化処理部１４２は、シミュレーション部１４３によるシミュレーション開始前に、対象ＦＦに対し任意の状態値を与えて遷移させた際、対象ＦＦ内に存在する不定値Ｘを「０」または「１」に設定する。この安定化処理部１４２の具体的な機能や動作については、図２２を参照しながら後述する。
【０１２１】
シミュレーション部１４３は、以下のシミュレーション動作を行なう。つまり、シミュレーション部１４３は、グループ毎に、当該グループに属する出力端子に所定の状態値（０または１）が設定されるように当該グループに属する入力端子に適当な状態値を設定する。この後、シミュレーション部１４３は、当該グループに属する入力端子に任意の状態値を設定することにより当該入力端子の状態を上記適当な状態値から上記任意の状態値に遷移させ、信号遷移後の当該出力端子の状態値を取得する。このとき、記憶部２０のシミュレーションパターン保存部２３は、当該入力端子に任意の状態値として設定される状態値の全ての組み合わせについて、当該入力端子に設定される状態値と、その状態値に基づきシミュレーション部１４３によって設定／取得される、入力端子に対する信号遷移前後の当該出力端子の状態値とを、シミュレーションパターンとしてグループ毎に保存する。シミュレーション部１４３の具体的な機能や動作については、図１９のステップＳ７０４〜Ｓ７０９および図２３（Ａ），図２３（Ｂ）を参照しながら後述する。
【０１２２】
作成部１４４は、ある一のグループのシミュレーションパターンに基づき、当該シミュレーションパターンにおける入力端子の種別を判定し、その判定結果に基づき、当該シミュレーションパターンに係るグループについての真理値表を作成する。この作成部１４４による基本的な判定機能や真理値表作成機能は、以下の項目(e1)〜(e4)の通りである。なお、作成部１４４の具体的な機能や動作については、図２０のステップＳ７１０〜Ｓ７３４および図２３（Ａ）〜図２３（Ｃ）を参照しながら後述する。
【０１２３】
(e1) 作成部１４４は、当該シミュレーションパターンにおいて、ある入力端子を所定の状態値（１または０）に設定した時に、入力端子に対する信号遷移前後の出力端子の状態値が変化していない場合、当該入力端子をクロック端子と判定する。そして、作成部１４４は、当該シミュレーションパターンに係るグループの真理値表に、クロック端子の状態値として前記所定の状態値（１または０）を設定し、出力端子の状態値として“Ｈ（ホールド）”を設定する。また、作成部１４４は、クロック端子と判定された当該入力端子以外の入力端子の状態値として“Ｘ（不定値）”を真理値表に設定する。このようなクロック端子判定／真理値表作成については、図２０のステップＳ７１２〜Ｓ７１７および図２３の項目(f1)を参照しながら後述する。
【０１２４】
(e2) 作成部１４４は、当該シミュレーションパターンにおいて、クロック端子に係るレコードおよびクロック端子と判定された入力端子を除外し、残った入力端子の中のある入力端子を所定の状態値（１または０）に設定した時に、入力端子に対する信号遷移後の出力端子の状態値が「１」になる場合、当該入力端子をセット端子と判定する。そして、作成部１４４は、当該シミュレーションパターンに係るグループの真理値表に、セット端子の状態値として前記所定の状態値（１または０）を設定し、出力端子の状態値として遷移後の状態値「１」を真理値表に設定する。また、作成部１４４は、クロック端子およびセット端子と判定された入力端子以外の入力端子の状態値として“Ｘ（不定値）”を設定する。このようなセット端子判定／真理値表作成については、図２０のステップＳ７１８〜Ｓ７２３および図２３の項目(f2)を参照しながら後述する。
【０１２５】
(e3) 作成部１４４は、当該シミュレーションパターンにおいて、クロック端子やセット端子に係るレコード、および、クロック端子やセット端子と判定された入力端子を除外し、残った入力端子の中のある入力端子を所定の状態値に設定した時に、入力端子に対する信号遷移後の出力端子の状態値が「０」になる場合、当該入力端子をリセット端子と判定する。そして、作成部１４４は、当該シミュレーションパターンに係るグループの真理値表に、リセット端子の状態値として前記所定の状態値を設定し、出力端子の状態値として遷移後の状態値「０」を設定する。また、作成部１４４は、クロック端子，セット端子およびリセット端子と判定された入力端子以外の入力端子の状態値として“Ｘ（不定値）”を真理値表に設定する。このようなリセット端子判定／真理値表作成については、図２０のステップＳ７２４〜Ｓ７２９および図２３の項目(f3)を参照しながら後述する。
【０１２６】
(e4) 作成部１４４は、当該シミュレーションパターンにおいて、未判定の残りの入力端子をデータ端子と判定する。そして、作成部１４４は、当該シミュレーションパターンに係るグループの真理値表に、データ端子の状態値および出力端子の状態として当該シミュレーションパターンにおける状態値を設定する。このようなデータ端子判定／真理値表作成については、図２０のステップＳ７３２，Ｓ７３３および図２３の項目(f4)を参照しながら後述する。
【０１２７】
〔２−２〕第２実施形態のディレイライブラリ生成装置の動作
次に、上述のごとく構成された第２実施形態のディレイライブラリ生成装置１Ｂの機能や動作について、図１８〜図２３を参照しながら説明する。第２実施形態のディレイライブラリ生成装置１Ｂも、第１実施形態と同様、図２や図３を参照しながら上述したディレイ解析を行なう際に用いられるＦＦディレイライブラリ４０を生成する。ただし、第２実施形態の装置１Ｂでは、上述したように、対象ＦＦの真理値表が存在していない場合に、その真理値表がグループ毎に作成され、以下では、特に、真理値表の作成手順について詳細に説明する。
【０１２８】
〔２−２−１〕ディレイライブラリ生成手順の概略
図１８に示すフローチャート（ステップＳ１０，Ｓ７０，Ｓ４０〜Ｓ６０）に従い、第２実施形態のディレイライブラリ生成装置１Ｂによるディレイライブラリ生成手順の概略を説明する。
まず、グループ化部１１において、第１実施形態と同様、対象ＦＦのＦＦ回路情報に基づき、対象ＦＦの出力端子と当該出力端子に影響を与える対象ＦＦの入力端子とがグループ化される（ステップＳ１０；グループ化ステップ）。
【０１２９】
ついで、真理値表作成部１４において、ステップＳ１０で得られたグループに基づき、対象ＦＦの真理値表が、グループ毎に作成され、記憶部２０の真理値表保存部２２に記録保存される（ステップＳ７０；真理値表作成ステップ）。ステップＳ７０での真理値表作成手順については、図１９〜図２３を参照しながら詳述する。
【０１３０】
この後、信号パターン生成部１２′の生成部１２３において、ステップＳ１０で得られたグループとステップＳ７０で作成されたグループ毎の真理値表とに基づき、第１実施形態と同様、対象ＦＦの入力端子に対する信号パターン、つまりディレイライブラリ作成用のシミュレーションパターンが、グループ毎に生成される（ステップＳ４０；信号パターン生成ステップ）。
【０１３１】
そして、ライブラリ生成部１３において、ステップＳ４０でグループ毎に生成された信号パターンに基づき、ディレイ値やセットアップ／ホールド時間などが、グループ毎にディレイ情報として測定され（ステップＳ５０）、測定結果から対象ＦＦのディレイライブラリ４０が記憶部２０に生成される（ステップＳ６０；ライブラリ生成ステップ）。
【０１３２】
〔２−２−２〕真理値表作成手順
次に、図１８のステップＳ７０において真理値表作成部１４により行なわれる真理値表作成手順について、図２１〜図２３を参照しながら、図１９および図２０に示すフローチャート（ステップＳ７０１〜Ｓ７３４）に従って説明する。なお、図２１は第２実施形態の回路ループの切断を説明するための図、図２２は第２実施形態の安定化処理（不定値の修正）を説明するための図、図２３（Ａ）〜図２３（Ｃ）は第２実施形態のシミュレーションパターンおよび真理値表作成手順を説明するための図である。
【０１３３】
まず、真理値表作成部１４では、ステップＳ１０でグループ化部１１によってグループ化された複数のグループの中から、一のグループが選択される（ステップＳ７０１）。切断部１４１は、選択されたグループに係る対象ＦＦの回路情報を参照し、そのグループに属する入力端子からフォワードトレースを行なって、回路ループを検出する。例えば図２１に示すＦＦにおいては、図６に示したＦＦと同様、第１グループで回路ループＬ1が検出され、第ｎグループで回路ループＬnが検出される。そして、切断部１４１は、各グループで検出された回路ループＬi（i＝１，２，…，ｎ）を、例えば図２１に「×」で示す位置で切断することにより、対象ＦＦから回路ループを除去する（ステップＳ７０２）。
【０１３４】
このような回路修正を行なって回路ループを除去したグループに対し、安定化処理部１４２は、任意の状態値を与えて遷移させ、対象ＦＦ内に不定値Ｘが存在する場合、その不定値Ｘを「０」または「１」に設定する（ステップＳ７０３）。端子に値を設定してシミュレーションを行なった後に不定値Ｘが対象ＦＦから出力される場合、任意の不定値出力箇所に例えば“０”を安定化処理部１４２が設定してから、シミュレーション部１４３による正式なシミュレーションが実行される。“０”が設定されていない箇所に不定値Ｘが残っている場合、その箇所に安定化処理部１４２によって“０”が設定される。例えば図２２に示すような回路が対象ＦＦ内に存在する場合、ＩＮ１＝“１”，ＩＮ２＝“１”としてシミュレーションを行なっても、ＯＵＴ１＝Ｘ（不定値）,ＯＵＴ２＝Ｘ（不定値）となってしまう。このような場合、安定化処理部１４２がＯＵＴ１＝“０”と設定することで、次のシミュレーションでは、ＯＵＴ１＝“０”，ＯＵＴ２＝“１”となり、対象ＦＦ内の状態が安定化され、以降のシミュレーションが安定的に且つ確実に実行される。
【０１３５】
この後、選択された一のグループに対し、シミュレーション部１４３による処理（ステップＳ７０４〜Ｓ７０９）が実行される。なお、以下では、図６や図１８に示す対象ＦＦの第１グループ、つまり種別未判定の４つの入力端子Ｘ1，Ｘ2，Ｘ3，Ｘ4と２つの出力端子Ｑ1，Ｑ1′とを含むグループの真理値表を作成する場合について説明する。
【０１３６】
まず、シミュレーション部１４３は、内部ループＬ1に“１”が設定されるように入力端子Ｘ1，Ｘ2，Ｘ3，Ｘ4に適当な状態値を設定することにより、出力端子Ｑ1，Ｑ1′に、所定の信号遷移前状態値として“０”，“１”を設定する。そして、シミュレーション部１４３は、出力端子Ｑ1，Ｑ1′に設定した状態値“０”，“１”を、図２３（Ａ）の出力端子Ｑ1，Ｑ1′の欄における「→」の左側に示すように、シミュレーションパターンとして保存部２３に保存する（ステップＳ７０４）。
【０１３７】
この後、シミュレーション部１４３は、４つの入力端子Ｘ1，Ｘ2，Ｘ3，Ｘ4に任意の状態値を設定するとともに、その任意の状態値を、図２３（Ａ）の入力端子Ｘ1，Ｘ2，Ｘ3，Ｘ4の欄に示すように、シミュレーションパターンとして保存部２３に保存し、シミュレーションを実行する（ステップＳ７０５）。
【０１３８】
シミュレーション部１４３は、シミュレーションの実行に伴う、入力端子に対する信号遷移後における、出力端子Ｑ1，Ｑ1′の状態値を取得する。つまり、シミュレーション部１４３は、入力端子Ｘ1，Ｘ2，Ｘ3，Ｘ4の状態を上記適当な状態値から上記任意の状態値に遷移させ、この信号遷移に伴う出力端子Ｑ1，Ｑ1′の状態値を取得する。そして、シミュレーション部１４３は、取得した状態値を、図２３（Ａ）の出力端子Ｑ1，Ｑ1′の欄における「→」の右側に示すように、シミュレーションパターンとして保存部２３に保存する（ステップＳ７０６）。
【０１３９】
ステップＳ７０５およびＳ７０６の処理は、４つの入力端子Ｘ1，Ｘ2，Ｘ3，Ｘ4に対し全ての組み合わせ、つまり図２３（Ａ）に示す１６通りの組み合わせの状態値が設定されるまで繰り返し実行される（ステップＳ７０７のＮＯルート）。全ての組み合わせの設定を完了した時点で、図２３（Ａ）に示すような１６個のレコードのシミュレーションパターンが得られる。なお、１レコードは、シミュレーションパターンにおける１行分の要素である。また、シミュレーション部１４３は、全ての組み合わせの設定を完了すると（ステップＳ７０７のＹＥＳルート）、出力端子Ｑ1，Ｑ1′に設定される所定の信号遷移前状態値を変更したか否かを判定する（ステップＳ７０８）。
【０１４０】
出力端子Ｑ1，Ｑ1′に設定される信号遷移前状態値が変更されていない場合（ステップＳ７０８のＮＯルート）、シミュレーション部１４３は、内部ループＬ1に“０”が設定されるように、入力端子Ｘ1，Ｘ2，Ｘ3，Ｘ4に適当な状態値を設定することにより、出力端子Ｑ1，Ｑ1′に、所定の信号遷移前状態値として“１”，“０”を設定する。また、シミュレーション部１４３は、出力端子Ｑ1，Ｑ1′に設定した状態値“１”，“０”を、図２３（Ｂ）の出力端子Ｑ1，Ｑ1′の欄における「→」の左側に示すように、シミュレーションパターンとして保存部２３に保存する（ステップＳ７０４）。この状態で、シミュレーション部１４３は、ステップＳ７０５〜Ｓ７０７の処理を繰り返すことにより、図２３（Ｂ）に示すような１６個のレコードのシミュレーションパターンが得られる。
【０１４１】
ステップＳ７０８で所定の信号遷移前状態値が変更されていると判定された場合（ＹＥＳルート）、シミュレーション部１４３は、ステップＳ７０２〜Ｓ７０８の処理が全てのグループに対し実行されたか否かを判定する（ステップＳ７０９）。未処理のグループが存在する場合（ステップＳ７０９のＮＯルート）、シミュレーション部１４３は、ステップＳ７０１に戻り、未処理のグループの中から一のグループを選択し、ステップＳ７０２〜Ｓ７０８の処理を実行する。
【０１４２】
全てのグループに対する処理を終了した場合（ステップＳ７０９のＹＥＳルート）、シミュレーション部１４３は、シミュレーション動作を終了する。この時点で、記憶部２０のシミュレーションパターン保存部２３には、グループ毎に、図２３（Ａ），図２３（Ｂ）に示すようなシミュレーションパターングループが保存されることになる。
【０１４３】
シミュレーション部１４３がシミュレーション動作を完了すると、作成部１４４が起動され、記憶部２０のシミュレーションパターン保存部２３から、一のシミュレーションパターングループが選択される（ステップＳ７１０）。ここでは、図２３（Ａ），図２３（Ｂ）に示す、第１グループについてのシミュレーションパターングループが選択されたものとする。
【０１４４】
作成部１４４は、選択したシミュレーションパターングループにおいて、出力端子Ｑ1，Ｑ1′に不定値Ｘが出力されるケースを除外する（ステップＳ７１１）。なお、図２３（Ａ），図２３（Ｂ）に示すシミュレーションパターングループにおいては、そのようなケース（レコード）は存在しない。
【０１４５】
ついで、作成部１４４は、当該シミュレーションパターンにおいて、ある入力端子の設定値が“１”の時に、入力端子に対する信号遷移前後の出力端子Ｑ1，Ｑ1′の状態値が変化していないケースの有無を判定する（ステップＳ７１２）。状態値が変化していないケースが無い場合（ステップＳ７１２のＮＯルート）、作成部１４４は、ある入力端子の設定値が“０”の時に出力端子Ｑ1，Ｑ1′の信号遷移前後の状態値が変化していないケースの有無を判定する（ステップＳ７１３）。ステップＳ７１２またはＳ７１３で、状態値が変化していないケースが有ると判定された場合（ＹＥＳルート）、作成部１４４は、当該入力端子をクロック端子ＣＫであると判定する（ステップＳ７１４）。例えば、図２３（Ａ），図２３（Ｂ）に示すシミュレーションパターンでは、領域(f1)のレコードに基づき、入力端子Ｘ1が“１”の時に出力端子Ｑ1，Ｑ1′の状態値が変化していないと判断され、入力端子Ｘ1がクロック端子ＣＫであると判定される。
【０１４６】
そして、作成部１４４は、当該シミュレーションパターンの真理値表に、図２３（Ｃ）のレコード(f11)に示すように、クロック端子ＣＫの状態値として“１”を設定するとともに、出力端子Ｑ1，Ｑ1′の状態値として“Ｈ（ホールド）”を設定する（ステップＳ７１５）。また、作成部１４４は、図２３（Ｃ）のレコード(f11)に示すように、クロック端子ＣＫと判定された入力端子Ｘ1以外の入力端子Ｘ2，Ｘ3，Ｘ4の状態値として“Ｘ（不定値）”を真理値表に設定する（ステップＳ７１６）。この後、作成部１４４は、状態が“Ｈ（ホールド）”となっているレコードを当該シミュレーションパターンから除外する（ステップＳ７１７）。例えば、図２３（Ａ），図２３（Ｂ）に示すシミュレーションパターンでは、領域(f1)のレコードが除外されて、以降の処理が実行される。
【０１４７】
ステップＳ７１３でＮＯ判定の場合、もしくはステップＳ７１７の処理終了後、作成部１４４は、当該シミュレーションパターンにおいて、ある入力端子の設定値が“１”の時に、入力端子に対する信号遷移後の出力端子Ｑ1の状態値が“１”になるケースの有無を判定する（ステップＳ７１８）。状態値が“１”となるケースが無い場合（ステップＳ７１８のＮＯルート）、作成部１４４は、ある入力端子の設定値が“０”の時に出力端子Ｑ1の状態値が“１”になるケースの有無を判定する（ステップＳ７１９）。ステップＳ７１８またはＳ７１９で状態値が“１”となるケースが有ると判定された場合（ＹＥＳルート）、作成部１４４は、当該入力端子をセット端子Ｓであると判定する（ステップＳ７２０）。例えば、図２３（Ａ），図２３（Ｂ）に示すシミュレーションパターンでは、領域(f2)のレコードに基づき、入力端子Ｘ2が“１”の時に出力端子Ｑ1の状態値が“１”になると判断され、入力端子Ｘ2がセット端子Ｓであると判定される。
【０１４８】
そして、作成部１４４は、当該シミュレーションパターンの真理値表に、図２３（Ｃ）のレコード(f12)に示すように、クロック端子ＣＫの状態値として“０”を、セット端子Ｓの状態値として“１”を設定する。また、作成部１４４は、図２３（Ｃ）のレコード(f12)に示すように、種別判定済みの入力端子Ｘ1，Ｘ2以外の入力端子Ｘ3，Ｘ4の状態値として“Ｘ（不定値）”を真理値表に設定する（ステップＳ７２１）。さらに、作成部１４４は、図２３（Ｃ）のレコード(f12)に示すように、出力端子Ｑ1，Ｑ1′の状態値として信号遷移後の値“１”，“０”を真理値表にそれぞれ設定する（ステップＳ７２２）。この後、作成部１４４は、セット端子Ｓが有効になっているレコードを当該シミュレーションパターンから除外する（ステップＳ７２３）。例えば、図２３（Ａ），図２３（Ｂ）に示すシミュレーションパターンでは、領域(f2)のレコードが除外されて、以降の処理が実行される。
【０１４９】
ステップＳ７１９でＮＯ判定の場合、もしくはステップＳ７２３の処理終了後、作成部１４４は、当該シミュレーションパターンにおいて、ある入力端子の設定値が“１”の時に、入力端子に対する信号遷移後の出力端子Ｑ1の状態値が“０”になるケースの有無を判定する（ステップＳ７２４）。状態値が“０”になるケースが無い場合（ステップＳ７２４のＮＯルート）、作成部１４４は、ある入力端子の設定値が“０”の時に出力端子Ｑの状態値が“０”になるケースの有無を判定する（ステップＳ７２５）。ステップＳ７２４またはＳ７２５で状態値が“０”になるケースが有ると判定された場合（ＹＥＳルート）、作成部１４４は、当該入力端子をリセット端子Ｒであると判定する（ステップＳ７２６）。例えば、図２３（Ａ），図２３（Ｂ）に示すシミュレーションパターンでは、領域(f3)のレコードに基づき、入力端子Ｘ3が“１”の時に出力端子Ｑ1の状態値が“０”になると判断され、入力端子Ｘ3がリセット端子Ｒであると判定される。
【０１５０】
そして、作成部１４４は、当該シミュレーションパターンの真理値表に、図２３（Ｃ）のレコード(f13)に示すように、クロック端子ＣＫの状態値として“０”を、セット端子Ｓの状態値として“０”を、リセット端子Ｒの状態値として“１”を設定する。また、作成部１４４は、図２３（Ｃ）のレコード(f13)に示すように、種別判定済みの入力端子Ｘ1，Ｘ2，Ｘ3以外の入力端子Ｘ4の状態値として“Ｘ（不定値）”を真理値表に設定する（ステップＳ７２７）。さらに、作成部１４４は、図２３（Ｃ）のレコード(f13)に示すように、出力端子Ｑ1，Ｑ1′の状態値として信号遷移後の値“０”，“１”を真理値表にそれぞれ設定する（ステップＳ７２８）。この後、作成部１４４は、リセット端子Ｒが有効になっているレコードを当該シミュレーションパターンから除外する（ステップＳ７２９）。例えば、図２３（Ａ），図２３（Ｂ）に示すシミュレーションパターンでは、領域(f3)のレコードが除外されて、以降の処理が実行される。
【０１５１】
ステップＳ７１９でＮＯ判定の場合もしくはステップＳ７２３の処理終了後、作成部１４４は、セット端子Ｓまたはリセット端子Ｒのいずれかが未判定であるか否かを判定する（ステップＳ７３０）。セット端子Ｓもリセット端子Ｒも判定済みである場合（ステップＳ７３０のＹＥＳルート）、作成部１４４は、ステップＳ７３２の処理に移行する。また、セット端子Ｓまたはリセット端子Ｒのいずれか一方が未認識である場合（ステップＳ７３０のＮＯルート）、今回の処理が１回目であるか否かが判定される（ステップＳ７３１）。１回目の処理である場合（ステップＳ７３１のＹＥＳルート）、作成部１４４は、ステップＳ７１８の処理に戻り、２回目の処理である場合（ステップＳ７３１のＮＯルート）、ステップＳ３３２の処理に移行する。
【０１５２】
ここで、ステップＳ７３０およびＳ７３１による判定処理は、図９のステップＳ３１３およびＳ３１４と同様、セット端子Ｓよりも先にリセット端子Ｒが認識されなければ、セット端子Ｓを認識判定できない場合があるための措置である。ステップＳ７１８〜Ｓ７２９の処理を２回行なってもセット端子Ｓまたはリセット端子Ｒを認識できない場合、作成部１４４は、対象ＦＦにセット端子Ｓまたはリセット端子Ｒが存在しないものと判断して次の処理（ステップＳ７３２）に移行する。
【０１５３】
ステップＳ７３２において、作成部１４４は、この時点で残っている信号種別不明の入力端子、つまり、まだ種別が特定されていない入力端子をデータ端子Ｄであると判定する。そして、作成部１４４は、そのデータ端子Ｄの値と遷移後の出力端子Ｑ1，Ｑ1′の状態値との組み合わせを記録する（ステップＳ７３３）。例えば、図２３（Ａ），図２３（Ｂ）にシミュレーションパターンでは、未判定の入力端子Ｘ4がデータ端子Ｄ1であると判定され、作成部１４４は、領域(f4)における４つのパターンに基づき、当該シミュレーションパターンの真理値表に、図２３（Ｃ）に示す２つのレコード(f14)を設定する。これにより、図２３（Ｃ）のレコード(f11)〜(f14)によって、図１３に対応する第１グループの真理値表が作成されることになる。このような真理値表は、記憶部２０の真理値表保存部２２に記録される。
【０１５４】
この後、作成部１４４は、全てのシミュレーションパターングループに対する処理が完了したか否かを判断し（ステップＳ７３４）、完了していない場合（ステップＳ７３４のＮＯルート）、ステップＳ７１０の処理に戻る。また、完了している場合（ステップＳ７３４のＹＥＳルート）、作成部１４４は、真理値表作成処理を終了する。
【０１５５】
〔２−３〕第２実施形態のディレイライブラリ生成装置の効果
第２実施形態のディレイライブラリ生成装置１Ｂによれば、第１実施形態と同様の作用効果が得られるほか、以下のような作用効果も得られる。つまり、第２実施形態では、ディレイライブラリ４０の作成対象であるＦＦについて、真理値表が用意されていない場合、その対象ＦＦの出力端子および入力端子についてグループ化が行なわれグループ毎に真理値表が自動的に作成される。これにより、各グループの真理値表、つまりは対象ＦＦの真理値表が、自動的に短時間で作成される。
【０１５６】
特に、上述のようにグループ化された各グループでは、各グループに属する入力端子に対する信号の影響範囲が、各グループに属する出力端子に限られる。従って、このようなグループ毎に真理値表を作成することで、対象ＦＦの全ての入力端子に対する信号の組み合わせを同時に考慮する場合に比べ、真理値表を作成するための演算量が大幅に削減される。
【０１５７】
また、上述したように、ＦＦ回路情報やシミュレーションパターングループにおける入力端子の種別が自動的に判定されて認識されるとともに、各グループの真理値表や、入力端子に対する信号パターン／シミュレーションパターンが自動的に生成される。従って、真理値表が存在しない場合でも、真理値表の作成を含む、ＦＦディレイライブラリ４０の生成処理が全て自動化が実現される。
【０１５８】
さらに、第２実施形態では、論理シミュレーションに先立って、切断部１４１により、対象ＦＦの回路ループが検出され、回路ループを切断削除する回路修正が対象ＦＦに対し行なわれる。これにより、回路ループによる信号の発振を抑止する処理が容易に行なわれることになり、シミュレーション部１４３で実行される論理シミュレーションが、容易化され、ひいては高速化される。
【０１５９】
また、第２実施形態では、上述のごとく回路修正を行なって回路ループを除去したグループに対し、安定化処理部１４２により、対象ＦＦ内に存在する不定値Ｘが「０」または「１」に設定される。これにより、対象ＦＦ内の状態が安定化され、以降の論理シミュレーションが安定的に且つ確実に実行される。
【０１６０】
〔３〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
なお、上述した実施形態では、入力端子としてクロック端子ＣＫ，セット端子Ｓ，リセット端子Ｒおよびｎ個のデータ端子Ｄ1〜Ｄnを有するとともに出力端子Ｑ1〜Ｑn，Ｑ1′〜Ｑn′をもつＦＦが対象となっているが、本件の対象は、このようなＦＦに限定されるものではない。
【０１６１】
また、上述したグループ化部１１，信号パターン生成部１２，１２′，ライブラリ生成部１３および真理値表作成部１４としての機能の全部もしくは一部は、コンピュータ（ＣＰＵ，情報処理装置，各種端末を含む）が所定のアプリケーションプログラム（ディレイライブラリ生成プログラム）を実行することによって実現される。
【０１６２】
そのプログラムは、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷなど），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋Ｒ，ＤＶＤ＋ＲＷ，ブルーレイディスクなど）等のコンピュータ読取可能な記録媒体に記録された形態で提供される。この場合、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。
【０１６３】
ここで、コンピュータとは、ハードウエアとＯＳ（オペレーティングシステム）とを含む概念であり、ＯＳの制御の下で動作するハードウエアを意味している。また、ＯＳが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウエアは、少なくとも、ＣＰＵ等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取る手段とをそなえている。上記ディレイライブラリ生成プログラムは、上述のようなコンピュータに、上記各部１１〜１５，１２′の機能を実現させるプログラムコードを含んでいる。また、その機能の一部は、アプリケーションプログラムではなくＯＳによって実現されてもよい。
【０１６４】
〔４〕付記
以上の本実施形態を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
順序回路の回路情報に基づき、前記順序回路の出力端子と当該出力端子に影響を与える前記順序回路の入力端子とをグループ化するグループ化部と、
前記グループ化部によって得られたグループと前記順序回路の真理値表とに基づき、前記順序回路の入力端子に対する信号パターンを、前記グループ毎に生成する信号パターン生成部と、
前記信号パターン生成部によって前記グループ毎に生成された前記信号パターンに基づき、前記順序回路のディレイを示すディレイ情報を前記グループ毎に測定し、前記順序回路のディレイライブラリを生成するライブラリ生成部とを有する、ディレイライブラリ生成装置。
【０１６５】
（付記２）
前記グループ化部は、
前記順序回路の回路情報から、前記順序回路において信号を保持する回路ループを検出する回路ループ検出部と、
前記回路ループ検出部によって検出された前記回路ループからフォワードトレースを行ない、前記回路ループに繋がる前記順序回路の出力端子を、前記順序回路の回路情報から抽出する出力端子抽出部と、
前記出力端子抽出部によって抽出された前記出力端子からバックワードトレースを行ない、前記出力端子に影響を与える入力端子を、前記順序回路の回路情報から抽出する入力端子抽出部と、
前記出力端子抽出部によって抽出された前記出力端子と前記入力端子抽出部によって抽出された前記入力端子とをグループ化して出力する出力部とを有する、付記１記載のディレイライブラリ生成装置。
【０１６６】
（付記３）
前記信号パターン生成部は、
前記グループ化部によって得られたグループに基づき、前記順序回路の真理値表を前記グループ毎に分割する真理値表分割部と、
前記真理値表分割部によって分割された各真理値表に基づき、前記入力端子の種別を前記グループ毎に判定する種別判定部と、
前記種別判定部によって判定された前記入力端子の種別に基づき、前記順序回路の入力端子に対する前記信号パターンを、前記グループ毎に生成する生成部とを有する、付記１または付記２に記載のディレイライブラリ生成装置。
【０１６７】
（付記４）
前記種別判定部は、真理値表において出力端子の状態として「ホールド」が設定されているレコード（当該真理値表における１行分の要素）を抽出し、抽出された全てのレコードにおいて同一の状態値が設定されている入力端子を、クロック端子と判定する、付記３記載のディレイライブラリ生成装置。
（付記５）
前記種別判定部は、前記クロック端子に係るレコードおよびクロック端子と判定された入力端子を除外した真理値表において、出力端子の状態として「１」が設定されているレコードを抽出し、抽出された全てのレコードにおいて同一の状態値が設定されている入力端子を、セット端子と判定する、付記４記載のディレイライブラリ生成装置。
【０１６８】
（付記６）
前記種別判定部は、前記クロック端子に係るレコードおよびクロック端子と判定された入力端子を除外した真理値表において、出力端子の状態として「０」が設定されているレコードを抽出し、抽出された全てのレコードにおいて同一の状態値が設定されている入力端子を、リセット端子と判定する、付記４または付記５に記載のディレイライブラリ生成装置。
【０１６９】
（付記７）
前記種別判定部は、未判定の残りの入力端子を、データ端子と判定する、付記５または付記６に記載のディレイライブラリ生成装置。
（付記８）
前記生成部は、前記グループ毎に、前記種別判定部による判定結果に応じ、出力端子の状態を「１」から「０」に遷移させる、入力端子に対する第１信号パターンを生成し、
前記ライブラリ生成部は、前記第１信号パターンによって前記出力端子の状態が「１」から「０」に遷移させた際の、クロック端子から出力端子へのディレイ値、および、クロック端子に対するデータ端子のセットアップ／ホールド時間を、前記ディレイ情報として測定する、付記７記載のディレイライブラリ生成装置。
【０１７０】
（付記９）
前記生成部は、前記グループ毎に、前記種別判定部による判定結果に応じ、出力端子の状態を「０」から「１」に遷移させる、入力端子に対する第２信号パターンを生成し、
前記ライブラリ生成部は、前記第２信号パターンによって前記出力端子の状態が「０」から「１」に遷移する際における、クロック端子から出力端子へのディレイ値、および、クロック端子に対するデータ端子のセットアップ／ホールド時間を、前記ディレイ情報として測定する、付記７または付記８に記載のディレイライブラリ生成装置。
【０１７１】
（付記１０）
前記グループ化部によって得られたグループに基づき、前記順序回路の真理値表を前記グループ毎に作成する真理値表作成部をさらに有し、
前記信号パターン生成部は、前記グループ化部によって得られたグループと前記真理値表作成部によって作成された前記グループ毎の真理値表とに基づき、前記順序回路の入力端子に対する前記信号パターンを、前記グループ毎に生成する、付記１または付記２に記載のディレイライブラリ生成装置。
【０１７２】
（付記１１）
前記真理値表作成部は、
前記グループ毎に、当該グループに属する出力端子に所定の状態値が設定されるように当該グループに属する入力端子に適当な状態値を設定してから、当該グループに属する入力端子に任意の状態値を設定することにより当該入力端子の状態を上記適当な状態値から上記任意の状態値に遷移させ、前記入力端子に前記任意の状態値を設定したときの当該出力端子の状態値を取得するシミュレーション動作を行なうシミュレーション部と、
当該入力端子に前記任意の状態値として設定される状態値の全ての組み合わせについて、当該入力端子に設定される状態値と、その状態値に基づき前記シミュレーション部によって設定／取得される、当該入力端子に対する信号遷移前後の当該出力端子の状態値とを、シミュレーションパターンとして前記グループ毎に保存する保存部と、
前記保存部によって前記グループ毎に保存されている前記シミュレーションパターンに基づき、前記グループ毎に当該グループの真理値表を作成する作成部とを有する、付記１０記載のディレイライブラリ生成装置。
【０１７３】
（付記１２）
前記作成部は、前記保存部によって前記グループ毎に保存されている前記シミュレーションパターンに基づき、当該シミュレーションパターンにおける入力端子の種別を判定し、判定された前記入力端子の種別に基づき、当該シミュレーションパターンに係るグループの真理値表を作成する、付記１１記載のディレイライブラリ生成装置。
【０１７４】
（付記１３）
前記作成部は、当該シミュレーションパターンにおいて、ある入力端子を所定の状態値に設定した時に、入力端子に対する信号遷移前後の出力端子の状態値が変化していない場合、当該入力端子をクロック端子と判定し、当該シミュレーションパターンに係るグループの真理値表に、クロック端子の状態値として前記所定の状態値を設定し、出力端子の状態値として「ホールド」を設定するとともに、クロック端子と判定された当該入力端子以外の入力端子の状態値として「不定値」を設定する、付記１２記載のディレイライブラリ生成装置。
【０１７５】
（付記１４）
前記作成部は、当該シミュレーションパターンにおいて、前記クロック端子に係るレコードおよびクロック端子と判定された入力端子を除外し、残った入力端子の中のある入力端子を所定の状態値に設定した時に、入力端子に対する信号遷移後の出力端子の状態値が「１」になる場合、当該入力端子をセット端子と判定し、当該シミュレーションパターンに係るグループの真理値表に、セット端子の状態値として前記所定の状態値を設定し、出力端子の状態値として遷移後の状態値「１」を設定するとともに、クロック端子およびセット端子と判定された入力端子以外の入力端子の状態値として「不定値」を設定する、付記１３記載のディレイライブラリ生成装置。
【０１７６】
（付記１５）
前記作成部は、当該シミュレーションパターンにおいて、前記クロック端子に係るレコードおよびクロック端子と判定された入力端子を除外し、残った入力端子の中のある入力端子を所定の状態値に設定した時に、入力端子に対する信号遷移後の出力端子の状態値が「０」になる場合、当該入力端子をリセット端子と判定し、当該シミュレーションパターンに係るグループの真理値表に、リセット端子の状態値として前記所定の状態値を設定し、出力端子の状態値として遷移後の状態値「０」を設定するとともに、クロック端子およびリセット端子と判定された入力端子以外の入力端子の状態値として「不定値」を設定する、付記１３または付記１４に記載のディレイライブラリ生成装置。
【０１７７】
（付記１６）
前記作成部は、当該シミュレーションパターンにおいて、未判定の残りの入力端子をデータ端子と判定し、当該シミュレーションパターンに係るグループの真理値表に、データ端子の状態値および出力端子の状態として当該シミュレーションパターンにおける状態値を設定する、付記１４または付記１５に記載のディレイライブラリ生成装置。
【０１７８】
（付記１７）
前記真理値表作成部は、
前記シミュレーション部によるシミュレーション開始前に、前記順序回路の回路情報から、前記順序回路において信号を保持する回路ループを検出し、検出された前記回路ループを切断する切断部をさらに有する、付記１１〜付記１６のいずれか一項に記載のディレイライブラリ生成装置。
【０１７９】
（付記１８）
前記真理値表作成部は、
前記順序回路内に存在する不定値を「０」または「１」に設定する安定化処理部をさらに有する、付記１１〜付記１７のいずれか一項に記載のディレイライブラリ生成装置。
【０１８０】
（付記１９）
順序回路のディレイライブラリを生成する装置としてコンピュータを機能させるディレイライブラリ生成プログラムであって、
前記順序回路の回路情報に基づき、前記順序回路の出力端子と当該出力端子に影響を与える前記順序回路の入力端子とをグループ化するグループ化部、
前記グループ化部によって得られたグループと前記順序回路の真理値表とに基づき、前記順序回路の入力端子に対する信号パターンを、前記グループ毎に生成する信号パターン生成部、および、
前記信号パターン生成部によって前記グループ毎に生成された前記信号パターンに基づき、前記順序回路のディレイを示すディレイ情報を前記グループ毎に測定し、前記順序回路のディレイライブラリを生成するライブラリ生成部として、前記コンピュータを機能させる、ディレイライブラリ生成プログラム。
【０１８１】
（付記２０）
順序回路のディレイライブラリをコンピュータにより生成するディレイライブラリ生成方法であって、
前記順序回路の回路情報に基づき、前記順序回路の出力端子と当該出力端子に影響を与える前記順序回路の入力端子とをグループ化するグループ化ステップと、
前記グループ化ステップにおいて得られたグループと前記順序回路の真理値表とに基づき、前記順序回路の入力端子に対する信号パターンを、前記グループ毎に生成する信号パターン生成ステップと、
前記信号パターン生成ステップにおいて前記グループ毎に生成された前記信号パターンに基づき、前記順序回路のディレイを示すディレイ情報を前記グループ毎に測定し、前記順序回路のディレイライブラリを生成するライブラリ生成ステップとを含む、ディレイライブラリ生成方法。
【符号の説明】
【０１８２】
１Ａ，１Ｂ    ディレイライブラリ生成装置
１０    処理部（ＣＰＵ）
１１    グループ化部
１１１    回路ループ検出部
１１２    出力端子抽出部
１１３    入力端子抽出部
１１４    出力部
１２，１２′    信号パターン生成部
１２１    真理値表分割部
１２２    種別判定部
１２３    生成部
１３    ライブラリ生成部
１４    真理値表作成部
１４１    切断部
１４２    安定化処理部
１４３    シミュレーション部
１４４    作成部
２０    記憶部
２１    ＦＦ回路情報データベース
２２    真理値表保存部
２３    シミュレーションパターン保存部（保存部）
３０    組み合わせ回路ディレイライブラリ（タイミング解析ライブラリ）
４０    ＦＦディレイライブラリ（タイミング解析ライブラリ）
【図１】
2011257845.tif 000003
【図２】
2011257845.tif 000004
【図３】
2011257845.tif 000005
【図４】
2011257845.tif 000006
【図５】
2011257845.tif 000007
【図６】
2011257845.tif 000008
【図７】
2011257845.tif 000009
【図８】
2011257845.tif 000010
【図９】
2011257845.tif 000011
【図１０】
2011257845.tif 000012
【図１１】
2011257845.tif 000013
【図１２】
2011257845.tif 000014
【図１３】
2011257845.tif 000015
【図１４】
2011257845.tif 000016
【図１５】
2011257845.tif 000017
【図１６】
2011257845.tif 000018
【図１７】
2011257845.tif 000019
【図１８】
2011257845.tif 000020
【図１９】
2011257845.tif 000021
【図２０】
2011257845.tif 000022
【図２１】
2011257845.tif 000023
【図２２】
2011257845.tif 000024
【図２３】
2011257845.tif 000025