(57)【要約】【課題】マクロ内部でのクロック遅延時間を考慮したクロックスキュー計算が可能な動作タイミング検証装置を提供する。【解決手段】遅延時間算出手段２１は、回路ネットリスト１１を入力し、セルライブラリ１２、マクロ遅延ライブラリ１３を用いて、配線遅延情報、マクロとセルの遅延情報をＳＤＦ１４として出力する。遅延解析手段２２は、例えば始点ブロックがマクロで、終点ブロックがセルの信号パスの動作タイミング検証においては、ソースクロックからマクロのクロック端子までの配線遅延時間に、マクロクロック補正遅延ライブラリに記述されたマクロ内部のクロック遅延時間を加えた時間をマクロのクロック遅延時間とし、ソースクロックからセルのクロック端子までの配線遅延時間をセルのクロック遅延時間として、両者の差を、クロックスキューとして算出する。【選択図】図１
2009037278.tif 000002
【特許請求の範囲】
【請求項１】
構成要素にマクロを含む半導体集積回路の回路構成情報に基づいて、前記半導体集積回路の各部分における遅延時間を計算する遅延時間算出手段と、
始点ブロック及び終点ブロックの少なくとも一方がマクロである信号パスの動作タイミング検証にて、前記遅延時間算出手段が算出した、ソースクロックから始点ブロック及び終点ブロックのそれぞれまでのクロック配線の配線遅延時間と、前記マクロ内部のクロック遅延時間を記述したマクロクロック補正遅延ライブラリとを用い、前記始点ブロックと前記終点ブロックとの間のクロックスキューを求める遅延解析手段とを備えることを特徴とする動作タイミング検証装置。
【請求項２】
前記遅延解析手段は、前記遅延時間算出手段にて算出された、ソースクロックから前記マクロのクロック端子までの間のクロック配線の配線遅延時間に、前記マクロ内部のクロック遅延時間を加えた遅延時間を、該マクロのクロック遅延時間として、前記クロックスキューを算出する、請求項１に記載の動作タイミング検証装置。
【請求項３】
前記遅延時間算出手段は、前記回路構成情報を入力し、セル内部の信号パスの遅延時間を求めるためのセル遅延時間テーブルを有するセルライブラリと、マクロ内部の信号パスの遅延時間を求めるためのマクロ遅延時間テーブルを有するマクロ遅延ライブラリとを参照して、ＲＣシミュレーションによる遅延時間計算を行う、請求項１又は２に記載の動作タイミング検証装置。
【請求項４】
前記マクロ遅延時間テーブルは、前記マクロ内部のクロック遅延時間を含まない遅延時間を保持する、請求項３に記載の動作タイミング検証装置。
【請求項５】
前記遅延解析手段は、前記回路構成情報と、前記遅延時間算出手段が算出した各部分における遅延時間と、前記マクロクロック補正遅延ライブラリと、遅延制約情報とを参照して、信号パスの遅延時間、クロックパスの遅延時間、及び、前記クロックスキューを算出し、信号パス遅延時間が前記遅延制約情報で定義される遅延制約を満たしているか否かを示す情報を出力する、請求項１〜４の何れか一に記載の動作タイミング検証装置。
【請求項６】
コンピュータを用い、構成要素にマクロを含む半導体集積回路の動作タイミング検証を行う動作タイミング検証方法であって、
前記コンピュータが、前記半導体集積回路の回路構成情報に基づいて、前記半導体集積回路の各部分における遅延時間を計算するステップと、
前記コンピュータが、前記遅延時間を計算するステップで計算した、ソースクロックから始点ブロック及び終点ブロックのそれぞれまでのクロック配線の配線遅延時間と、前記マクロ内部のクロック遅延時間を記述したマクロクロック補正遅延ライブラリとを用い、前記始点ブロックと前記終点ブロックとの間のクロックスキューを求めるステップとを有することを特徴とする動作タイミング検証方法。
【請求項７】
前記クロックスキューを求めるステップでは、前記コンピュータは、前記遅延時間を計算するステップにて計算された、ソースクロックから前記マクロのクロック端子までの間のクロック配線の配線遅延時間に、前記マクロ内部のクロック遅延時間を加えた遅延時間を、該マクロのクロック遅延時間として、前記クロックスキューを算出する、請求項６に記載の動作タイミング検証方法。
【請求項８】
前記遅延時間を計算するステップでは、前記コンピュータは、前記回路構成情報を入力し、セル内部の信号パスの遅延時間を求めるためのセル遅延時間テーブルを有するセルライブラリと、マクロ内部の信号パスの遅延時間を求めるためのマクロ遅延時間テーブルを有するマクロ遅延ライブラリとを参照して、ＲＣシミュレーションによる遅延時間計算を行う、請求項６又は７に記載の動作タイミング検証方法。
【請求項９】
前記マクロ遅延時間テーブルは、前記マクロ内部のクロック遅延時間を含まない遅延時間を保持する、請求項８に記載の動作タイミング検証方法。
【請求項１０】
前記コンピュータが、前記回路構成情報と、前記遅延時間を計算するステップで計算した各部分における遅延時間と、前記算出したクロックスキューとを用いて、信号パスの遅延時間を算出し、信号パス遅延時間が遅延制約情報で定義される遅延制約を満たしているか否かを示す情報を出力するステップを更に有する、請求項６〜９の何れか一に記載の動作タイミング検証方法。
【請求項１１】
コンピュータに、構成要素にマクロを含む半導体集積回路の動作タイミング検証を行う処理を実行させるプログラムであって、前記コンピュータに、
前記半導体集積回路の回路構成情報に基づいて、前記半導体集積回路の各部分における遅延時間を計算する処理と、
前記遅延時間を計算する処理で計算した、ソースクロックから始点ブロック及び終点ブロックのそれぞれまでのクロック配線の配線遅延時間と、前記マクロ内部のクロック遅延時間を記述したマクロクロック補正遅延ライブラリとを用い、前記始点ブロックと前記終点ブロックとの間のクロックスキューを求める処理とを実行させることを特徴とするプログラム。
【請求項１２】
前記クロックスキューを求める処理では、前記遅延時間を計算する処理にて計算された、ソースクロックから前記マクロのクロック端子までの間のクロック配線の配線遅延時間に、前記マクロ内部のクロック遅延時間を加えた遅延時間を、該マクロのクロック遅延時間として、前記クロックスキューを算出する、請求項１１に記載のプログラム。
【請求項１３】
前記遅延時間を計算する処理では、前記回路構成情報を入力し、セル内部の信号パスの遅延時間を求めるためのセル遅延時間テーブルを有するセルライブラリと、マクロ内部の信号パスの遅延時間を求めるためのマクロ遅延時間テーブルを有するマクロ遅延ライブラリとを参照して、ＲＣシミュレーションによる遅延時間計算を行う、請求項１１又は１２に記載のプログラム。
【請求項１４】
前記マクロ遅延時間テーブルは、前記マクロ内部のクロック遅延時間を含まない遅延時間を保持する、請求項１３に記載のプログラム。
【請求項１５】
前記コンピュータに、前記回路構成情報と、前記遅延時間を計算するステップで計算した各部分における遅延時間と、前記算出したクロックスキューとを用いて、信号パスの遅延時間を算出し、信号パス遅延時間が遅延制約情報で定義される遅延制約を満たしているか否かを示す情報を出力する処理を更に実行させる、請求項１１〜１５の何れか一に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動作タイミング検証装置、方法、及び、プログラムに関し、更に詳しくは、半導体集積回路の信号パスの動作タイミングを検証する動作タイミング検証装置、方法、及び、プログラムに関する。
【背景技術】
【０００２】
半導体集積回路の設計では、タイミングシミュレーションにより、信号パスの動作検証を行う。半導体集積回路のタイミングシミュレーションを効率よく、かつ、精度よく行うことが望まれている。タイミングシミュレーションを効率よく、かつ、精度よく行うことを目的とした半導体集積回路のタイミングシミュレーション方法としては、特許文献１に記載されたものがある。
【０００３】
ところで、近年、半導体集積回路のレイアウトでは、マクロが使用されることがある。マクロは、セルの群で構成される。マクロを構成するセル群は、所定の機能を有する大規模な回路を構成する。マクロは、例えばＣＰＵコア、ＲＡＭなどの回路そのものや、それを含む回路である。マクロが使用される背景には、半導体集積回路が大規模化していること、及び、半導体集積回路の設計の効率化が求められていることがある。半導体集積回路の設計では、必要とする機能を有するマクロをつなぎ合わせることにより、大規模な半導体集積回路が容易に設計できるようになる。
【０００４】
マクロが含まれる半導体集積回路の動作タイミングを、正確かつ簡便に検証する方法として、特許文献２に記載の方法がある。この方法では、ゲートレベルで静的な遅延解析を行う際に、ＲＡＭなどのマクロを、内部の遅延値をライブラリ化（マクロ遅延ライブラリ）して解析する。
【特許文献１】特開平９−３１９７７６号公報
【特許文献２】特開２００１−２７３３３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
一般に、同期化回路の物理設計、遅延設計では、設計手順の便宜上、クロック分配設計と信号パスの遅延設計とを別々に処理している。その場合、クロック分配設計では、クロック分配遅延差であるクロックスキューをできるだけ０に近づけるように設計し、信号パスの遅延設計では、クロック分配設計でクロックスキューが十分に小さくなることを念頭に、パス遅延が所望のクロックサイクル内となるように、パス遅延の改善を行う。
【０００６】
マクロが含まれる半導体集積回路の動作タイミング検証で使用されている関連技術のマクロ遅延ライブラリでは、マクロ内部のクロック分配遅延時間と、マクロ内部のＦＦ（フリップフロップ）のセットアップ／ホールド時間とを足し合わせた値を、マクロ遅延ライブラリのセットアップ／ホールド時間と定義している。また、マクロ内部のクロック分配遅延時間とマクロ内部のＦＦの出力遅延時間とを、マクロ遅延ライブラリの遅延時間と定義している。ここで、マクロ内部のクロック分配遅延時間とは、マクロのクロック端子からマクロ内部のクロック分配経路を通ってマクロ内部の実際のＦＦのクロック端子に到達するまでの遅延時間のことである。
【０００７】
関連技術のマクロ遅延ライブラリでは、セットアップ／ホールド時間が、マクロ内部のクロック分配遅延時間とマクロ内部のＦＦのセットアップホールド時間とを足し合わせた値で定義されるため、マクロに絡んだパス、例えば始点がマクロで終点がＦＦのパスの動作タイミング検証において、マクロ遅延ライブラリからマクロ内部のクロック分配遅延時間のみを取り出すことはできない。このため、マクロ内部のクロック分配遅延時間は、信号パスの遅延時間として算出され、クロックスキューの算出には考慮されていなかった。従って、関連技術では、クロックスキュー情報に真のクロックスキュー、つまりソースクロックからの信号が、始点マクロ内部のクロック分配経路を通ってマクロ内部の実際のＦＦのクロック端子に到達するまでの遅延時間と、終点ＦＦのクロック端子に到達するまでの遅延時間との差を出力することができない。この結果、クロックスキュー情報を参照しても、真のクロックスキューの値を得ることができず、パスの遅延改善を行う際に、クロックスキューの値が大きければクロックパスを改善し、クロックスキューの値が小さければ信号パスを改善する、といった判断ができず、迅速に適切な遅延改善を行うことが困難であった。
【０００８】
本発明は、マクロを含む半導体集積回路の動作検証にて、マクロ内部でのクロック遅延時間を考慮したクロックスキュー算出が可能な動作タイミング検証装置、方法、及び、プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明の動作タイミング検証装置は、構成要素にマクロを含む半導体集積回路の回路構成情報に基づいて、前記半導体集積回路の各部分における遅延時間を計算する遅延時間算出手段と、始点ブロック及び終点ブロックの少なくとも一方がマクロである信号パスの動作タイミング検証にて、前記遅延時間算出手段が算出した、ソースクロックから始点ブロック及び終点ブロックのそれぞれまでのクロック配線の配線遅延時間と、前記マクロ内部のクロック遅延時間を記述したマクロクロック補正遅延ライブラリとを用い、前記始点ブロックと前記終点ブロックとの間のクロックスキューを求める遅延解析手段とを備えることを特徴とする。
【００１０】
本発明の動作タイミング検証方法は、コンピュータを用い、構成要素にマクロを含む半導体集積回路の動作タイミング検証を行う動作タイミング検証方法であって、前記コンピュータが、前記半導体集積回路の回路構成情報に基づいて、前記半導体集積回路の各部分における遅延時間を計算するステップと、前記コンピュータが、前記遅延時間を計算するステップで計算した、ソースクロックから始点ブロック及び終点ブロックのそれぞれまでのクロック配線の配線遅延時間と、前記マクロ内部のクロック遅延時間を記述したマクロクロック補正遅延ライブラリとを用い、前記始点ブロックと前記終点ブロックとの間のクロックスキューを求めるステップとを有することを特徴とする。
【００１１】
本発明のプログラムは、コンピュータに、構成要素にマクロを含む半導体集積回路の動作タイミング検証を行う処理を実行させるプログラムであって、前記コンピュータに、前記半導体集積回路の回路構成情報に基づいて、前記半導体集積回路の各部分における遅延時間を計算する処理と、前記遅延時間を計算する処理で計算した、ソースクロックから始点ブロック及び終点ブロックのそれぞれまでのクロック配線の配線遅延時間と、前記マクロ内部のクロック遅延時間を記述したマクロクロック補正遅延ライブラリとを用い、前記始点ブロックと前記終点ブロックとの間のクロックスキューを求める処理とを実行させることを特徴とする。
【発明の効果】
【００１２】
本発明の動作タイミング検証装置、方法、及び、プログラムでは、マクロを含む半導体集積回路の動作検証にて、マクロ内部でのクロック遅延時間を考慮したクロックスキューを算出することができる。
【発明を実施するための最良の形態】
【００１３】
以下、図面を参照し、本発明の実施の形態を詳細に説明する。図１は、本発明の一実施形態の動作タイミング検証装置の構成を示している。動作タイミング検証装置は、プログラム制御により動作するデータ処理装置（コンピュータ）２０と、ハードディスク等の記憶装置３０とを備える。データ処理装置２０は、バス４１を介して、記憶装置３０と接続する。また、データ処理装置２０は、バス４１を介して、データ入力を行う入力部４２と、データ出力を行う出力部４３とに接続する。
【００１４】
データ処理装置２０は、遅延時間算出手段２１と、クロック補正値考慮可能な遅延解析手段（以下、単に遅延解析手段と呼ぶ）２２とを有する。記憶装置３０は、回路ネットリスト記憶部３１、セルライブラリ記憶部３２、マクロ遅延ライブラリ記憶部３３、ＳＤＦ記憶部３４、遅延制約情報記憶部３５、マクロクロック補正遅延ライブラリ記憶部３６を有する。ＳＤＦ（Standard Delay Format）は、遅延計算によって算出されるネットワークごとの配線遅延情報やゲート遅延情報を格納するファイルのフォーマットであり、業界標準である。本実施形態では、ファイルフォーマットとして、ＳＤＦを用いる例で説明する。
【００１５】
遅延時間算出手段２１は、回路ネットリスト（回路構成情報）１１を入力し、セルライブラリ１２とマクロ遅延ライブラリ１３とを参照して、ＲＣシミュレーションによる遅延計算を行い、ＳＤＦ１４を生成し、生成したＳＤＦ１４をＳＤＦ記憶部３４に記憶する。遅延解析手段２２は、回路ネットリスト１１を入力し、ＳＤＦ記憶部３４に記憶されたネットワークごとの配線遅延時間情報やゲート遅延時間情報と、マクロクロック補正遅延ライブラリ１６と、遅延制約情報１５とを参照して、信号パスの遅延時間の算出、クロックパスの遅延時間の算出、クロックスキューの算出、クロックパス遅延時間と信号パス遅延時間とが遅延制約を満たしているか否かのチェックを行い、クロックスキュー情報１７−２を含むタイミング検証エラーレポート１７を出力する。
【００１６】
遅延解析手段２２におけるクロックパスの遅延時間の算出、及び、クロックスキューの算出では、マクロクロック補正遅延ライブラリ１６に記憶されたマクロ内のクロックパスの遅延時間を、クロックパス遅延時間に加算して算出する。クロックスキュー情報１７−２には、マクロクロック補正遅延ライブラリ１６に記憶された遅延時間を、クロックパスの遅延時間に加算して算出された真のクロックスキュー、つまり、ソースクロックからの信号がマクロ内部の実際の始点又は終点ＦＦのクロック端子に到達するまでの遅延時間の差が出力される。
【００１７】
図２に、検証対象の半導体集積回路の具体例を示す。この半導体集積回路５０は、マクロ７０、セル５１ａ、５２ａ、５２ｂ、配線５３ａ〜５３ｈ、組合せ回路５５ａを含む。マクロ７０は、２つのバッファと２つのＦＦとを有するマクロである。セル５１ａのセル種類は、フリップフロップ（ＦＦ）である。セル５１ａは、入力端子５４ａ、出力端子５４ｂ、及び、クロック端子５４ｃを有する。セル５２ａ、５２ｂのセル種類は、バッファ（ＢＵＦ）である。マクロ７０の出力端子ＤＯＵＴから出力された信号は、配線５３ａ、組合せ回路５５ａ、配線５３ｂを介して、セル５１ａの入力端子５４ａに入力される。セル５２ａ、５２ｂは、それぞれ入力端子５４ｄ、５４ｆと出力端子５４ｅ、５４ｇとを有する。半導体集積回路５０は、これらの要素が、図２に示すように組み合わされた回路である。図２では、同時に、レイアウトされた状態を模式的に示している。
【００１８】
図３に、マクロ７０の詳細を示す。マクロ７０は、セル７２ａ、７２ｂ、７３ａ、７３ｂ、配線７４ａ〜７４ｉ、及び、組合せ回路７５ａを含む。セル７２ａ、７２ｂのセル種類は、バッファ（ＢＵＦ）である。セル７２ａ、７２ｂは、それぞれ入力端子７６ａ、７６ｃと出力端子７６ｂ、７６ｄとを有する。セル７３ａ、７３ｂのセル種類は、フリップフロップ（ＦＦ）である。セル７３ａ、７３ｂは、それぞれ入力端子７６ｅ、７６ｈと出力端子７６ｆ、７６ｉとクロック端子７６ｇ、７６ｊを有する。マクロ７０は、これらの要素が、図３に示すように組み合わされた回路である。
【００１９】
図１のセルライブラリ１２には、フリップフロップ（ＦＦ）のセル、及び、バッファ（ＢＵＦ）のセルのそれぞれにおける入力端子から出力端子への遅延時間や、入力端子に入力されるデータ信号に対するクロック信号のセットアップ時間、ホールド時間などが記憶されている。セルライブラリの詳細については、特開２００１−２７３３３８号公報でセルライブラリ、特開２００６−３９６２１号公報でタイミング制約ライブラリとして説明されている。
【００２０】
マクロ遅延ライブラリ１３の構成を示す概念図を、図４に示す。このライブラリの構成は、セルライブラリ１２のセル種類フリップフロップ（ＦＦ）に係る部分と同じである。マクロ遅延ライブラリ１３は、遅延時間テーブル群１３１、出力波形なまりテーブル群１３２、セットアップ時間テーブル群１３３、ホールド時間テーブル群１３４、及び、マクロ情報テーブル群１３５を含んでいる。
【００２１】
遅延時間テーブル群１３１は、複数の「遅延時間テーブル」を含んでいる。各遅延時間テーブルは、マクロのクロック端子ＣＬＫＩＮから出力端子ＤＯＵＴまでの信号遅延時間のうち、マクロ内部のクロック分配遅延時間を差し引いた値が記述されている。つまり、マクロ７０（図３）のクロック端子ＣＬＫＩＮから出力端子ＤＯＵＴまでの遅延時間から、配線７４ｅ、７４ｆ、７４ｇ、７４ｉ、セル７２ａ、７２ｂの遅延時間の和を差し引いた遅延時間が記述されている。
【００２２】
図５に、遅延時間テーブルの具体例を示す。この遅延時間テーブル１３１ａは、複数の条件に対する遅延時間をテーブル形式で示している。複数の条件は、第１条件と第２条件との組合せで表される。ここでは、第１条件（第１テーブルインデックス）は、マクロのクロック端子ＣＬＫＩＮに入力される信号の波形なまりの程度を示す「入力波形なまり」とする。また、第２条件（第２テーブルインデックス）は、出力端子ＤＯＵＴにかかる負荷容量を示す「出力負荷容量」とする。マクロが複数の出力端子ＤＯＵＴを有する場合は、１つのマクロについて、複数の出力端子に対応して複数の遅延時間テーブルが用意される。
【００２３】
図５では、複数の条件は、第１条件（０．０５Ｒ〜１Ｒ）と、第２条件（０．０５Ｃ〜１Ｃ）との組合せで与えられ、遅延時間テーブル１３１ａは、その組合せのそれぞれに対する２５種類の遅延時間を示している。遅延時間テーブル１３１ａにおける遅延時間の単位は、［ｐｓ］とする。テーブルを引く際に、条件がインデックス間の値をとるときは、補間（例えば線形補間）により、補間値を求める。遅延時間テーブルは、最大値、標準値、最小値のそれぞれについて記述される。図５に示す遅延時間テーブル１３１ａは、これらのうち、最大値が記述された遅延時間テーブルである。
【００２４】
比較例として、図６に、関連技術で用いる遅延時間テーブルの具体例を示す。関連技術で用いる遅延時間テーブル１３１ｂのテーブル構造は、図５に示す、本実施形態で用いる遅延時間テーブル１３１ａのテーブル構造と同じである。関連技術における遅延時間テーブル１３１ｂは、マクロ７０内部のクロック分配遅延時間も含んだクロック端子ＣＬＫＩＮから出力端子ＤＯＵＴまでの信号遅延時間が記述されている。ここで、マクロ７０内部のクロック分配遅延時間、つまり、クロック信号がマクロ７０のクロック端子ＣＬＫＩＮからマクロ内部のＦＦセル７３ｂのクロック端子７６ｊに到達するまでの時間の最大値を８０［ｐｓ］、最小値を６０［ｐｓ］とする。図５に示す遅延時間テーブル１３１ａの遅延時間と、図６に示す遅延時間テーブル１３１ｂの遅延時間とを比較すると、マクロ内部のクロック分配遅延時間（８０［ｐｓ］）分の差がついていることがわかる。
【００２５】
出力波形なまりテーブル群１３２は、複数の「出力波形なまりテーブル」を含んでいる。各出力波形なまりテーブルは、マクロの各入力端子ＤＩＮと各出力端子ＤＯＵＴとのそれぞれの組み合わせにおける出力波形なまりを示す。出力波形なまりは、対応する出力端子ＤＯＵＴにおける信号の鈍りの程度を示す。本実施形態における出力波形なまりテーブルは、関連技術における出力波形なまりテーブルと同じ記述である。
【００２６】
図７に、出力波形なまりテーブルの具体例を示す。この出力波形なまりテーブル１３２ａは、条件に対する出力波形なまりをテーブル形式で示している。ここでは、条件（テーブルインデックス）は、出力端子ＤＯＵＴにかかる負荷容量を示す「出力負荷容量」としている。例えば、条件は、０．０５Ｃ〜１Ｃで与えられ、出力波形なまりテーブル１３２ａは、各条件に対応して、５種類の出力波形なまり（単位［ｐｓ］）を示している。テーブルを引く際に、条件がインデックス間の値をとるときは、補間（例えば線形補間）により、補間値を求める。出力波形なまりテーブルは、最大値、標準値、最小値のそれぞれについて記述され。図７に示す出力波形なまりテーブル１３２ａは、これらのうち、最大値が記述された出力波形なまりテーブルである。
【００２７】
セットアップ時間テーブル群１３３は、複数の「セットアップ時間テーブル」を含んでいる。各セットアップ時間テーブルは、マクロの入力端子ＤＩＮに入力される入力信号の、クロック端子ＣＬＫＩＮに入力されるクロック信号に対するセットアップ時間のうち、マクロ内部のクロック分配の遅延時間を差し引いた値を示す。つまり、マクロ７０の入力端子ＤＩＮのクロック端子ＣＬＫＩＮに対するセットアップ時間から、配線７４ｅ、７４ｆ、７４ｇ、７４ｈ、セル７２ａ、７２ｂの遅延時間の和を差し引いた時間を示す。マクロを正常に動作させるためには、クロック信号ＣＬＫによってマクロ内部のＦＦセル７３ａがラッチを閉じる前に、入力信号をある一定時間以上前から入力開始しなければならない。「セットアップ時間」は、その入力する一定時間の最小値を示す。
【００２８】
図８に、セットアップ時間テーブルの具体例を示す。このセットアップ時間テーブル１３３ａは、複数の条件に対するセットアップ時間をテーブル形式で示している。複数の条件は、第１条件と第２条件との組合せで構成される。ここでは、第１条件（第１テーブルインデックス）は、入力端子ＤＩＮに入力される信号の波形なまりの程度を示す「入力波形なまり」とする。また、第２条件（第２テーブルインデックス）は、クロック端子ＣＬＫＩＮに入力されるクロック信号の波形なまりの程度を示す「クロック波形なまり」とする。図８では、複数の条件は、第１条件（０．０５Ｒ〜１Ｒ）と第２条件（０．０５Ｒ〜１Ｒ）との組合せで与えられ、セットアップ時間テーブル１３３ａは、その組合せに対する２５種類のセットアップ時間（単位［ｐｓ］）を示している。テーブルを引く際に、条件がインデックス間の値をとるときは、補間（例えば線形補間）により、補間値を求める。セットアップ時間テーブルは、最大値、標準値、最小値のそれぞれについて記述されている。図８に示すセットアップ時間テーブル１３３ａは、それらのうち、最大値が記述されたセットアップ時間テーブルである。
【００２９】
比較例として、図９に、関連技術におけるセットアップ時間テーブルの具体例を示す。セットアップ時間テーブル１３３ｂのテーブル構成は、図８に示す、本実施形態で用いるセットアップ時間テーブル１３３ａのテーブル構造と同じである。関連技術におけるセットアップ時間テーブル１３３ｂは、マクロ７０（図３）内部のクロック分配の遅延時間を含んだ、入力端子ＤＩＮに入力される入力信号の、クロック端子ＣＬＫＩＮに入力されるクロック信号に対するセットアップ時間が記述されている。ここで、マクロ内部のクロック分配遅延時間、つまり、クロック信号がマクロ７０のクロック端子ＣＬＫＩＮからマクロ内部のＦＦセル７３ａのクロック端子７６ｇに到達するまでの時間の最大値を８０［ｐｓ］、最小値を６０［ｐｓ］とする。図８に示すセットアップ時間テーブル１３３ａのセットアップ時間と、図９に示すセットアップ時間テーブルのセットアップ時間とを比較すると、マクロ内部のクロック分配遅延時間（８０［ｐｓ］）分の差がついていることがわかる。
【００３０】
ホールド時間テーブル群１３４は、複数の「ホールド時間テーブル」を含んでいる。各ホールド時間テーブルは、マクロの入力端子ＤＩＮに入力される入力信号の、クロック端子ＣＬＫＩＮに入力されるクロック信号に対するホールド時間のうち、マクロ内部のクロック分配の遅延時間を含まない値を示す。つまり、マクロ７０の入力端子ＤＩＮのクロック端子ＣＬＫＩＮに対するホールド時間から、配線７４ｅ、７４ｆ、７４ｇ、７４ｈ、セル７２ａ、７２ｂの遅延時間の和を差し引いたホールド時間を示す。マクロ７０を正常に動作させるためには、クロック信号ＣＬＫによってマクロ７０内部のＦＦセル７３ａのラッチを閉じた後、入力信号をある一定上保持しなければならない。ホールド時間は、その保持する一定時間の最小値を示す。
【００３１】
図１０に、ホールド時間テーブルの具体例を示す。このホールド時間テーブル１３４ａは、複数の条件に対するホールド時間をテーブル形式で示している。複数の条件は、第１条件と第２条件との組合せで構成される。ここでは、第１条件（第１テーブルインデックス）は、入力端子ＤＩＮに入力される信号の波形なまりの程度を示す「入力波形なまり」とする。また、第２条件（第２テーブルインデックス）は、クロック端子に入力されるクロック信号の波形なまりの程度を示す「クロック波形なまり」とする。図１０では、複数の条件は、第１条件（０．０５Ｒ〜１Ｒ）と第２条件（０．０５Ｒ〜１Ｒ）との組合せで与えられ、ホールド時間テーブル１３４ａは、その組合せに対する２５種類のホールド時間（単位［ｐｓ］）を示している。テーブルを引く際に、条件がインデックス間の値をとるときは、補間（例えば線形補間）により、補間値を求める。ホールド時間テーブルは、最大値、標準値、最小値のそれぞれについて記述されている。図１０に示すホールド時間テーブル１３４ａは、それらのうち、最大値が記述されたホールド時間テーブルである。
【００３２】
比較例として、図１１に、関連技術で用いるホールド時間テーブルを示す。ホールド時間テーブル１３４ｂのテーブル構成は、図１０に示す、本実施形態で用いるホールド時間テーブル１３４ａのテーブル構成と同じである。関連技術におけるホールド時間テーブル１３４ｂは、マクロ７０（図３）内部のクロック分配の遅延時間を含んだ、入力端子ＤＩＮに入力される入力信号の、クロック端子ＣＬＫＩＮに入力されるクロック信号に対するホールド時間が記述されている。前述のように、マクロ内部のクロック分配遅延時間、つまり、クロック信号がマクロ７０のクロック端子ＣＬＫＩＮからマクロ内部のＦＦセル７３ａのクロック端子７６ｇに到達するまでの時間の最大値を８０［ｐｓ］、最小値を６０［ｐｓ］とする。図１０に示すホールド時間テーブル１３４ａのホールド時間と、図１１に示すホールド時間テーブルのホールド時間１３４ｂとを比較すると、マクロ内部のクロック分配遅延時間（８０［ｐｓ］）分の差がついていることがわかる。
【００３３】
マクロ情報テーブル群１３５は、複数のマクロ情報テーブルを含んでいる。各マクロ情報テーブルには、マクロの大きさ、入力端子ＤＩＮの容量、入力端子ＤＩＮのしきい値電圧が取り得る範囲、クロック端子ＣＬＫＩＮの容量、クロック端子ＣＬＫＩＮのしきい値電圧がとり得る範囲、出力端子ＤＯＵＴの抵抗などが記述されている。本実施形態で用いるマクロ情報テーブルは、関連技術におけるマクロ情報テーブルと同じ記述内容である。
【００３４】
遅延制約情報１５（図１）は、半導体集積回路を動作させるための制約情報となる基本クロック周期（或いは基本クロック周波数）、入力ピン外部の遅延時間、出力ピン外部の要求遅延時間、遅延制約例外パス（フォールス・パス，マルチサイクル・パス）などの情報である。基本クロック周期は、半導体集積回路の動作クロックの周期を表している。例えば、１クロックサイクル以内に動作完了する必要がある場合は、動作タイミング検証にて、動作時間が、基本クロック周期以内に収まっているか否かを判定する。
【００３５】
入力ピン外部の遅延時間は、半導体集積回路の外部入力ピンから、半導体集積回路内のブロックへのパスのタイミング検証の際に使用される遅延時間であり、半導体集積回路外部の信号出力点から外部入力ピンまでの遅延時間を示す。出力ピン外部の遅延時間は、半導体集積回路内のブロックから、半導体集積回路の外部出力ピンへのパスのタイミング検証に使用される遅延時間であり、外部出力ピンから半導体集積回路外部の信号入力点までの遅延時間を示す。
【００３６】
遅延制約例外パスのフォールス・パスは、半導体集積回路内でタイミング検証をする必要のないパスを指定するものであり、特定のパスを無視してタイミング検証を実施するときに使用する。遅延制約例外パスのマルチサイクル・パスは、半導体集積回路内でタイミング検証時に１クロックサイクル内に収める必要がなく、２クロックサイクルや３クロックサイクル内に収めれば良いパスを指定するものである。マルチサイクル・パスの検証では、例えば、動作時間が、基本クロック周期の２倍や３倍の周期以内に収まっているか否かを判定する。遅延制約情報１５は、遅延制約情報記憶部３５に、あらかじめ記憶されている。
【００３７】
マクロクロック補正遅延ライブラリ１６には、マクロ７０の内部のクロック分配の遅延時間が記述されている。図１２に、マクロクロック補正遅延ライブラリの具体例を示す。マクロクロック補正遅延ライブラリ１６は、ライン１６−１とライン１６−２とを含む。ライン１６−１には、クロック端子ＣＬＫＩＮからマクロ７０内部の入力端子ＤＩＮ側のＦＦセル７３ａのクロック端子７６ｇまでのクロックパス遅延時間、つまり、配線７４ｅ、７４ｆ、７４ｇ、７４ｈ、セル７２ａ、７２ｂの遅延時間の和の最大値と最小値とが記述されている。ライン１６−２には、クロック端子ＣＬＫＩＮからマクロ７０内部の出力端子ＤＯＵＴ側のＦＦセル７３ｂのクロック端子７６ｊまでのクロックパス遅延時間、つまり、配線７４ｅ、７４ｆ、７４ｇ、７４ｉ、セル７２ａ、７２ｂの遅延時間の和の最大値と最小値とが記述されている。
【００３８】
前記したとおり、クロック端子ＣＬＫＩＮからマクロ７０内部の入力端子ＤＩＮ側のＦＦセル７３ａのクロック端子７６ｇまでのクロックパス遅延時間の最大値及び最小値は、それぞれ８０［ｐｓ］、６０［ｐｓ］である。また、クロック端子ＣＬＫＩＮからマクロ７０内部の出力端子ＤＯＵＴ側のＦＦセル７３ｂのクロック端子７６ｊまでのクロックパス遅延時間の最大値及び最小値は、それぞれ８０［ｐｓ］、６０［ｐｓ］である。従って、ライン１６−１及び１６−２には、それぞれ、「８０」、「６０」が記述されている。
【００３９】
ＳＤＦ１４には、遅延時間算出手段２１によって算出されたネットワークごとの配線遅延時間やゲート遅延時間が出力される。タイミング検証エラーレポート１７には、クロックパス遅延時間と信号パス遅延時間が遅延制約を満たしているか否かのチェックの結果であるタイミング検証結果が記述される。このタイミング検証結果には、遅延解析手段２２が算出したクロックスキュー情報を示すライン１７−２が含まれる。
【００４０】
図１３に、タイミング検証エラーレポートの内容を示す。タイミング検証エラーレポート１７は、ライン１７−１〜ライン１７−１１を含む。ライン１７−１には、クロックサイクル時間Ｔが記述されている。このクロックサイクル時間は、遅延制約情報における基本クロック周期に相当する。ライン１７−２には、クロックスキューＴｓが記述されている。ライン１７−３には、セットアップタイミング検証の場合にはセットアップ時間Ｔｓｕが、ホールドタイミング検証の場合にはホールド時間Ｔｈｌが記述されている。ライン１７−４には、始点ブロック名と、始点ブロックの出力遅延時間とが記述されている。ライン１７−５〜１７−７には、経路となる配線名、セル名と、それぞれの遅延時間とが記述されている。ライン１７−８には、終点ブロック名が記述されている。
【００４１】
ライン１７−９には、信号パス要求遅延時間Ｔｒが記述されている。信号パス要求遅延時間Ｔｒは、クロックサイクル時間Ｔから、クロックスキューＴｓとセットアップ時間Ｔｓｕを差し引いた値である。ライン１７−１０には、信号パス遅延時間Ｔｄが記述されている。信号パス遅延時間Ｔｄは、始点の遅延時間Ｔ１と経路のそれぞれの遅延時間Ｔ２〜Ｔ４を足し合わせた値である。ライン１７−１１には、スラックが記述されている。スラックは信号パス要求遅延時間Ｔｒから、信号パス遅延時間Ｔｄを差し引いた値である。スラックがプラスの値であればパスの動作タイミングに違反がないと判定される。一方、スラックがマイナスの値であればパスの動作タイミングに違反があると判定される。
【００４２】
図１４は、動作タイミング検証装置の動作手順を示している。遅延時間算出手段２１は、回路ネットリスト１１、セルライブラリ１２、マクロ遅延ライブラリ１３を読み込み（ステップＳ１）、ＲＣシミュレーションによる遅延計算を行い、配線遅延情報及びマクロとセルの遅延情報を、ＳＤＦとして出力する（ステップＳ２）。ステップＳ１、Ｓ２の詳細については、特開２００１−２７３３３８号公報、特開２０００−２５９６８６号公報、特開２０００−３０５９６６号公報、特開２０００−２５０９５０号公報などに記載されている。
【００４３】
ステップＳ２における遅延計算では、例えば、出力波形なまりテーブル１３２ａ（図７）を参照してマクロ７０の出力負荷容量からマクロ７０の出力波形なまりを求め、これを組合せ回路５５ａの入力波形なまりとして用い、組合せ回路５５ａの遅延時間を算出する。ステップＳ２における遅延計算は、基本的には、関連技術における通常の遅延計算と同様である。ただし、本実施形態では、マクロ遅延ライブラリ１３の遅延時間テーブル１３１ａ（図５）は、マクロのクロック端子から出力端子までの信号の遅延時間のうち、クロック分配の遅延時間を差し引いた値を保持しているため、ステップＳ２で計算されるマクロの遅延時間は、マクロ内のクロック分配の遅延時間を含まない遅延時間である。
【００４４】
遅延解析手段２２は、回路ネットリスト１１、ＳＤＦ１４、遅延制約情報１５、マクロクロック補正遅延ライブラリ１６を読み込む（ステップＳ３）。遅延解析手段２２は、ＳＤＦから、始点ブロックの遅延時間と、各経路の配線、セル、組合せ回路の遅延時間とを取得し、信号パス遅延時間を求める（ステップＳ４）。ステップＳ４では、例えば、ステップＳ２で生成されたＳＤＦ１４を参照し、図２に示す半導体集積回路５０について、始点ブロックであるマクロ７０の遅延時間、配線５３ａ、５３ｂの遅延時間、組合せ回路５５ａの遅延時間を取得する。その後、取得した始点ブロックの遅延時間、各経路の配線、セル、組合せ回路の遅延時間から、信号パス遅延時間Ｔｄを算出する。図２に示す半導体集積回路５０では、信号パス遅延時間Ｔｄは、マクロ７０の遅延時間、配線５３ａ、５３ｂ、組合せ回路５５ａの遅延時間を足し合わせた値となる。
【００４５】
遅延解析手段２２は、検証対象の半導体集積回路について、クロックスキューを算出する（ステップＳ５）。クロックスキューの算出は、具体的には、以下のように行う。図２に示す半導体集積回路５０の場合、まず、クロック信号ＣＬＫがマクロ７０のクロック端子ＣＬＫＩＮに到達するまでのクロック遅延時間Ｔｃ１を算出する。このクロック遅延時間Ｔｃ１は、配線５３ｃ、５３ｄの遅延時間の和である。各配線の遅延時間は、ＳＤＦ１４を参照することで取得できる。次いで、クロック信号ＣＬＫがセル５１ａのクロック端子５４ｃに到達するまでのクロック遅延時間Ｔｃ２を算出する。クロック遅延時間Ｔｃ２は、セル５２ａ、５２ｂの遅延時間、配線５３ｃ、５３ｅ、５３ｆ、５３ｇ、５３ｈの配線遅延時間の和である。各セル及び各配線の遅延時間は、ＳＤＦ１４を参照することで取得できる。
【００４６】
遅延解析手段２２は、上記算出したクロック遅延時間Ｔｃ１、Ｔｃ２と、マクロクロック補正遅延ライブラリ１６とを用いて、クロックスキューＴｓを算出する。マクロクロック補正遅延ライブラリ１６（図１２）には、マクロ７０内の各部に対するクロック分配経路の遅延時間が保持されている。遅延解析手段２２は、マクロクロック補正遅延ライブラリ１６から、マクロ７０のクロック端子ＣＬＫＩＮからＦＦセル７３ｂのクロック端子７６ｊまでのマクロ内クロック遅延時間を取得する。遅延解析手段２２は、マクロ７０までのクロック遅延時間Ｔｃと、マクロクロック補正遅延ライブラリ１６から取得したマクロ内のクロック分配経路の遅延時間との和から、セル５１ａまでの遅延時間Ｔｃ２を差し引いた値を、クロックスキューＴｓとする。このクロックスキューＴｓは、実際のクロックスキュー、つまり、マクロ７０内部のクロック分配遅延を考慮した、ソースクロックからの信号がマクロ内部の実際の始点又は終点ＦＦのクロック端子に到達するまでの遅延時間の差である。
【００４７】
遅延解析手段２２は、ステップＳ４で算出した信号パス遅延時間Ｔｄと、ステップＳ５で算出したクロックスキューＴｓとを用いて、動作タイミングを検証する（ステップＳ６）。セットアップ検証では、遅延制約であるクロック信号ＣＬＫのクロックサイクル時間から、クロックスキューＴｓとセル５１ａのセットアップ時間との和を差し引いた値、つまり、信号パス要求遅延時間Ｔｒと、信号パス遅延時間Ｔｄとを比較することで、回路の動作タイミングを検証する。クロック信号ＣＬＫのクロックサイクル時間は、遅延制約情報１５から取得する。セル５１ａのセットアップ時間は、セルライブラリ１２のセットアップ時間テーブルから取得する。タイミング検証では、信号パス要求遅延時間Ｔｒから、信号パス遅延時間Ｔｄを差し引いた値であるスラックが、プラスの値であれば動作タイミングに違反がないと判定される。また、マイナスの値であれば動作タイミングに違反があり、遅延改善が必要であると判定される。
【００４８】
遅延解析手段２２は、タイミング検証の結果から、タイミング検証エラーレポート１７を生成する。具体的に、タイミング検証エラーレポート１７（図１３）におけるライン１７−４〜１７−７には、ステップＳ４にて、ＳＤＦ１４を参照して取得されたマクロ７０の遅延時間、配線５３ａ、５３ｂの遅延時間、組合せ回路５５ａの遅延時間が記述される。また、ライン１７−１０には、ステップＳ４で算出された信号パス遅延時間Ｔｄが記述される。ライン１７−２には、ステップＳ５で算出されたクロックスキューＴｓが記述される。ライン１７−９には、信号パス要求時間Ｔｒが記述される。ライン１７−１１には、スラック（信号パス要求時間−信号パス遅延時間）が記述される。遅延解析手段２２は、生成したタイミング検証エラーレポート１７を、出力部４３から出力する。
【００４９】
以下、半導体集積回路５０の動作タイミング検証について、具体的数値例を用いて説明する。遅延時間算出手段２１は、ステップＳ２で、各配線の配線遅延時間及びマクロとセルの遅延時間を計算する。遅延時間算出手段２１は、マクロ７０の遅延時間計算では、遅延時間テーブル１３１ａ（図５）を参照し、マクロ７０に入力する信号の入力波形なまりと、マクロ７０の出力負荷容量とから、遅延時間を求める。入力波形なまり「０．２Ｒ」で、出力負荷容量「０．２Ｃ」のときは、遅延時間テーブル１３１ａから、遅延時間は、「１６７［ｐｓ］」と求まる。遅延時間算出手段２１は、計算した各部の遅延時間を、ＳＤＦ１４に記述し、ＳＤＦ１４をＳＤＦ記憶部３４に記憶する。
【００５０】
遅延解析手段２２は、ステップＳ４で、ＳＤＦ１４から、マクロ７０の遅延時間、配線５３ａ、５３ｂの遅延時間、セル５１ａ、組合せ回路５５ａの遅延時間を取得する。配線５３ａの遅延時間は１０［ｐｓ］、組合せ回路５５ａの遅延時間は７８０［ｐｓ］、配線５３ｂの遅延時間は１０［ｐｓ］であったとする。この場合、遅延解析手段２２は、マクロ７０の遅延時間１６７［ｐｓ］に、これらの遅延時間を足した９６７［ｐｓ］を、信号パス遅延時間Ｔｄとして算出する。
【００５１】
続いて、遅延解析手段２２は、クロックスキューＴｓを算出する。クロックスキューＴｓの計算では、まず、マクロ７０のクロック遅延時間Ｔｃ１と、セル５１ａのクロック遅延時間Ｔｃ２とを求める。遅延解析手段２２は、ＳＤＦ１４を参照して、配線５３ｃ、５３ｄの遅延時間を取得し、これらの和を、クロックソースからマクロ７０のクロック端子ＣＬＫＩＮまでのクロック遅延時間Ｔｃ１とする。また、ＳＤＦ１４を参照して、セル５２ａ、５２ｂの遅延時間、配線５３ｃ、５３ｅ、５３ｆ、５３ｇ、５３ｈの遅延時間を取得し、これらの和を、クロックソースからセル５１ａのクロック端子５４ｃまでのクロック遅延時間Ｔｃ２とする。ここでは、クロック遅延時間Ｔｃ１は１０［ｐｓ］であり、クロック遅延時間Ｔｃ２は、９０［ｐｓ］であるとする。
【００５２】
次いで、遅延解析手段２２は、マクロクロック補正遅延ライブラリ１６を参照し、マクロ７０内部のクロック遅延時間を求める。より詳細には、マクロクロック補正遅延ライブラリ１６を参照して、マクロ７０のクロック端子ＣＬＫＩＮから出力端子ＤＯＵＴ側のＦＦセル７３ｂ（図３）のクロック端子７６ｊまでのクロック遅延時間を求める。図１２に示すマクロクロック補正遅延ライブラリ１６では、ライン１６−２に、ＦＦセル７３ｂのクロック遅延時間が記述されており、遅延解析手段２２は、ライン１６−２から、ＦＦセル７３ｂのクロック遅延時間８０［ｐｓ］を取得する。
【００５３】
遅延解析手段２２は、マクロ７０のクロック遅延時間Ｔｃ２と、マクロ７０内のクロック遅延時間との和を、クロックソースから、マクロ７０における出力端子側のＦＦセル７３ｂのクロック端子７６ｊまで間のクロック遅延時間とする。クロック遅延時間Ｔｃ１は１０［ｐｓ］で、マクロ７０内部のクロック遅延時間は８０［ｐｓ］であるので、クロックソースからクロック端子７６ｊまでの間のクロック遅延時間は９０［ｐｓ］となる。遅延解析手段２２は、マクロ７０内のクロック端子７６ｊまでのクロック遅延時間から、セル５１ａのクロック遅延時間Ｔｃ２を引いた値を、クロックスキューＴｓとする。マクロ７０内のクロック端子７６ｊまでのクロック遅延時間が９０［ｐｓ］で、セル５１ａのクロック遅延時間Ｔｃ２が９０［ｐｓ］なので、クロックスキューＴｓは０［ｐｓ］となる。
【００５４】
遅延解析手段２２は、ステップＳ６で、信号パス遅延時間Ｔｄと、クロックスキューＴｓとを用いて、動作タイミングを検証する。セットアップ検証では、まず、信号パス要求遅延時間Ｔｒを求める。信号パス遅延時間Ｔｒは、クロックサイクル時間Ｔから、クロックスキューＴｓとセットアップ時間Ｔｓｕとの和を差し引いた値で定義される。クロックサイクル時間Ｔを１０００［ｐｓ］とし、セットアップ時間Ｔｓｕを４０［ｐｓ］とすれば、クロックスキューＴｓは０［ｐｓ］なので、信号パス要求遅延時間Ｔｒは９６０［ｐｓ］と求まる。次いで、信号パス要求遅延時間Ｔｒから信号パス遅延時間Ｔｄを引いたスラックを求める。信号パス遅延時間Ｔｄは９６７［ｐｓ］であるので、スラックは、−７［ｐｓ］となる。
【００５５】
遅延解析手段２２は、動作タイミング検証を終えると、ステップＳ７で、タイミング検証エラーレポートを生成する。図１５に、タイミング検証エラーレポートの具体例を示す。タイミング検証エラーレポート１７ａでは、ライン１７ａ−４〜１７ａ−８に、始点ブロックであるマクロ７０から終点ブロックであるセル５１ａまでの信号経路が記述されている。また、ライン１７ａ−４にはマクロ７０の遅延時間（１６７［ｐｓ］）が記述され、ライン１７ａ−５には配線５３ａの遅延時間（１０［ｐｓ］）が記述され、ライン１７ａ−６には組合せ回路５５ａの遅延時間（７８０［ｐｓ］）が記述され、ライン１７ａ−７には配線５３ｂの遅延時間（１０［ｐｓ］）が記述されている。ライン１７ａ−１０は、信号パス遅延時間Ｔｄが記述され、その値は、ライン１７ａ−４〜１７ａ−７に記述された遅延時間の和（１６７＋１０＋７８０＋１０＝９６７［ｐｓ］）である。
【００５６】
タイミング検証エラーレポート１７ａのライン１７ａ−１は、クロックサイクル時間Ｔであり、その値は１０００［ｐｓ］である。ライン１７ａ−２は、ステップＳ５で算出されたクロックスキューであり、０［ｐｓ］である。ライン１７ａ−３は、セットアップ時間であり、４０［ｐｓ］である。ライン１７ａ−９は、信号パス要求遅延時間Ｔｒであり、その値は、ライン１７ａ−１のクロックサイクル時間Ｔから、ライン１７ａ−２のクロックスキューＴｓとライン１７ａ−３のセットアップ時間Ｔｓｕとの和を引いた値（１０００−０−４０＝９６０［ｐｓ］）である。
【００５７】
ライン１７ａ−１１は、ライン１７ａ−９の信号パス要求遅延時間Ｔｒから、ライン１７ａ−１０の信号パス遅延時間Ｔｄを引いたスラックであり、その値は、９６０−９６７＝−７［ｐｓ］である。このスラック値がプラスの値であれば、動作タイミング違反はないと判定され、スラック値がマイナスの値であれば、動作タイミング違反が発生しており、遅延改善が必要であると判定されることになる。この例では、スラック値はマイナスの値であり、遅延改善が必要である。
【００５８】
ここで、比較例として、関連技術を適用して半導体集積回路５０の動作タイミング検証を行った。図１６に、関連技術における動作タイミング検証の結果であるタイミング検証エラーレポートを示す。タイミング検証エラーレポート１７ｂにおけるライン１７ｂ−１のクロックサイクル時間Ｔと、ライン１７ｂ−３のセットアップ時間Ｔｓｕは、図１５に示す本実施形態におけるタイミング検証エラーレポート１７ａの値と同じである。また、ライン１７ｂ−５〜１７ｂ−７の遅延時間も、図１５に示す本実施形態におけるタイミング検証エラーレポート１７ａの値と同じである。
【００５９】
関連技術においては、マクロ７０の遅延時間計算に際して、マクロ７０内部のクロック遅延時間（８０［ｐｓ］）を含んだ遅延時間を保持する遅延時間テーブル１３１ｂ（図６）を参照する。入力波形なまり「０．２Ｒ」、出力負荷容量「０．２Ｃ」にて遅延時間テーブル１３１ｂを参照すると、マクロ７０の遅延時間は、２４７［ｐｓ］となる。従って、ライン１７ｂ−４のマクロ７０の遅延時間（２４７［ｐｓ］）は、タイミング検証エラーレポート１７ａにおけるマクロ７０の遅延時間（１６７［ｐｓ］）よりも、マクロ内部での遅延時間分である８０［ｐｓ］長い。ライン１７ｂ−１０は、ライン１７ｂ−４〜１７ｂ−７の遅延時間の和で与えられるため、本実施形態における動作タイミングレポート１７ａの値（９６７［ｐｓ］）よりも８０［ｐｓ］長い１０４７［ｐｓ］となる。
【００６０】
関連技術では、マクロ７０内部のクロック分配遅延時間は、遅延時間テーブル１３１ｂの値に含まれ、マクロ７０の遅延時間として与えられており、クロックスキューの計算には考慮されない。すなわち、クロックスキューＴｓは、マクロ７０のクロック遅延時間Ｔｃ１と、セル５１ａのクロック遅延時間Ｔｃ２との差で与えられる。マクロ７０のクロック遅延時間Ｔｃ１は１０［ｐｓ］で、セル５１ａのクロック遅延時間Ｔｃ２は９０［ｐｓ］なので、関連技術におけるタイミング検証エラーレポートのライン１７ｂ−２のクロックスキューＴｓは、１０−９０＝−８０［ｐｓ］となる。
【００６１】
ライン１７ｂ−９の信号パス要求遅延時間Ｔｒは、ライン１７ｂ−１のクロックサイクル時間Ｔから、ライン１７ｂ−２のクロックスキューＴｓとライン１７ｂ−３のセットアップ時間Ｔｓｕとの和を引いた値であり、１０００−（−８０＋４０）＝１０４０［ｐｓ］となる。ライン１７ｂ−１１のスラックは、ライン１７ｂ−９の信号パス要求遅延時間Ｔｒから、ライン１７ｂ−１０の信号パス遅延時間Ｔｄを引いた値であり、１０４０−１０４７＝−７［ｐｓ］となる。
【００６２】
図１５のタイミング検証エラーレポートと、図１６のタイミング検証エラーレポートとを比較すると、動作タイミング違反が発生しているか否かを判断する際に参照されるスラックの値は同じ値（−７［ｐｓ］）となっている。従って、本実施形態におけるタイミング検証エラーレポート１７ａでも、関連技術におけるタイミング検証エラーレポート１７ｂでも、遅延改善が必要と判定されることになる。遅延改善の方法としては、信号経路の遅延時間を改善する方法と、クロックスキューを改善する方法との２つがある。本実施形態におけるタイミング検証エラーレポート１７ａを参照すると、クロックスキューＴｓは０［ｐｓ］であるので、信号経路の遅延時間改善を図ればよいことになる。
【００６３】
一方、関連技術におけるタイミング検証エラーレポート１７ｂを参照すると、クロックスキューＴｓが−８０［ｐｓ］であるので、クロックスキュー改善が必要と判断されることになる。しかしながら、実際には、マクロ７０内部でのクロック遅延時間をも考慮すると、クロックスキューは良好である。このように、関連技術におけるタイミング検証エラーレポート１７ｂでは、実際にはクロック分配は良い状態であっても、クロック分配に改善が必要であるかのように見え、迅速に適切な遅延改善を行うことが困難である。
【００６４】
続いて、図１７に、検証対象の半導体集積回路の別の例を示す。この半導体集積回路６０は、マクロ７０、セル６１ａ、配線６３ａ〜６３ｆ、組合せ回路６５ａを含む。マクロ７０の構成は、図３に示す構成である。セル６１ａのセル種類は、フリップフロップ（ＦＦ）である。セル６１ａは、入力端子６４ａ、出力端子６４ｂ、及び、クロック端子６４ｃを有する。マクロ７０の出力端子ＤＯＵＴから出力された信号は、配線６３ａ、組合せ回路６５ａ、配線６３ｂを介して、セル６１ａの入力端子６４ａに入力される。以下、半導体集積回路６０の動作タイミング検証について、具体的数値例を用いて説明する。
【００６５】
遅延時間算出手段２１は、ステップＳ２で、半導体集積回路６０についての回路ネットリスト１１と、セルライブラリ１２と、マクロ遅延ライブラリ１３とを用いて遅延時間計算を行い、ＳＤＦ１４を、ＳＤＦ記憶部３４に記憶する。マクロ７０については、遅延時間テーブル１３１ａを参照し、マクロ７０の入力波形なまり「０．２Ｒ」と、出力負荷容量「０．２Ｃ」とから、マクロ７０の遅延時間は１６７［ｐｓ］と求まる。この遅延時間は、マクロ７０内部のクロック遅延時間を含まない値である。マクロ７０の遅延時間「１６７［ｐｓ］」を含め、各部の遅延時間は、ＳＤＦ１４に記述される。
【００６６】
遅延解析手段２２は、ＳＤＦ１４を参照して、始点ブロックであるマクロ７０の遅延時間、配線６３ａ、６３ｂの遅延時間、組合せ回路６５ａの遅延時間を取得し、マクロ７０からセル６１ａまでの信号遅延時間Ｔｄを計算する。配線６３ａの遅延時間は１０［ｐｓ］、組合せ回路６５ａの遅延時間は７１０［ｐｓ］、配線６３ｂの遅延時間は１０［ｐｓ］とすれば、信号遅延時間Ｔｄは、これらとマクロ７０の遅延時間との和であり、８９７［ｐｓ］と求まる。
【００６７】
遅延解析手段２２は、ステップＳ５で、クロックスキューＴｓを算出する。クロック信号がマクロ７０のクロック端子ＣＬＫＩＮに到達するまでのクロック遅延時間Ｔｃ１は、配線６３ｃ、６３ｄの配線遅延時間の和である。配線６３ｃ、６３ｄの配線遅延時間は、ＳＤＦ１４を参照することで取得できる。ここでは、配線６３ｃ、６３ｄの配線遅延時間の和、すなわち、クロック遅延時間Ｔｃ１は、１０［ｐｓ］であるとする。また、クロック信号がセル６１ａのクロック端子６４ｃに到達するまでのクロック遅延時間Ｔｃ２は、配線６３ｃ、６３ｅ、６３ｆの配線遅延時間の和である。配線６３ｃ、６３ｅ、６３ｆの配線遅延時間も、ＳＤＦ１４から取得できる。ここでは、配線６３ｃ、６３ｅ、６３ｆの配線遅延時間の和、すなわち、クロック遅延時間Ｔｃ２は、１０［ｐｓ］であるとする。
【００６８】
遅延解析手段２２は、マクロクロック補正遅延ライブラリ１６（図１２）を参照して、マクロ７０のクロック端子ＣＬＫＩＮから出力端子ＤＯＵＴ側のＦＦセル７３ｂのクロック端子７６ｊまでのクロック遅延時間を求める。図１２に示すマクロクロック補正遅延ライブラリ１６では、ＦＦセル７３ｂのクロック端子７６ｊまでのクロック遅延時間はライン１６−２に記述されており、８０［ｐｓ］と求まる。マクロ７０までのクロック遅延時間Ｔｃ１が１０［ｐｓ］、マクロ７０内部でのクロック遅延時間が８０［ｐｓ］で、セル６１ａのクロック遅延時間が１０［ｐｓ］であるので、クロックスキューＴｓは、（１０＋８０）−１０＝８０［ｐｓ］となる。このクロックスキューは、実際のクロックスキュー、つまり、マクロ７０内部のクロック分配遅延を考慮したクロック遅延時間を用いて算出されたクロックスキューである。
【００６９】
遅延解析手段２２は、ステップＳ６で、信号パス遅延時間Ｔｄ、クロックスキューＴｓを用いて動作タイミング検証を行う。セットアップ検証では、まず、クロック信号ＣＬＫのクロックサイクル時間から、クロックスキューＴｓとセル６１ａのセットアップ時間との和を差し引いた値である信号パス要求遅延時間Ｔｒを求める。クロックサイクル時間が１０００［ｐｓ］、クロックスキューＴｓが８０［ｐｓ］、セル６１ａのセットアップ時間が４０［ｐｓ］であるとすれば、信号パス要求時間Ｔｒは、１０００−（８０＋４０）＝８８０［ｐｓ］となる。次いで、信号パス要求遅延時間Ｔｒから信号パス遅延時間Ｔｄを引いたスラックを求める。信号パス遅延時間Ｔｄは、８９７［ｐｓ］であるので、スラックは、８８０−８９７＝−１７［ｐｓ］となる。
【００７０】
遅延解析手段２２は、ステップＳ７で、タイミング検証エラーレポートを出力する。図１８に、タイミング検証エラーレポートを示す。ライン１７ｃ−１には、クロックサイクル時間（１０００［ｐｓ］）が記述され、ライン１７ｃ−２には、ステップＳ５で算出されたクロックスキューＴｓ（８０［ｐｓ］）が記述される。また、ライン１７ｃ−３には、セル６１ａのセットアップ時間（４０［ｐｓ］）が記述される。ライン１７ｃ−４〜１７ｃ−８には、始点ブロックであるマクロ７０から終点ブロックであるセル６１ａまでの信号経路が記述される。
【００７１】
ライン１７ｃ−４にはマクロ７０の遅延時間（１６７［ｐｓ］）が記述され、ライン１７ｃ−５には配線６３ｃの遅延時間（１０［ｐｓ］）が記述され、ライン１７ｃ−６には組合せ回路６５ａの遅延時間（７１０［ｐｓ］）が記述され、ライン１７ｃ−７には配線６３ｂの遅延時間（１０［ｐｓ］）が記述される。ライン１７ｃ−１０は、ステップＳ４で算出された信号パス遅延時間Ｔｄ（８９７［ｐｓ］）が記述される。ライン１７ｃ−９には、ライン１７ｃ−１のクロックサイクル時間Ｔから、ライン１７ｃ−２のクロックスキューＴｓとライン１７ｃ−３のセットアップ時間Ｔｓｕとの和を引いた信号パス要求遅延時間Ｔｒ（８８０［ｐｓ］）が記述される。また、ライン１７ｃ−１１には、ライン１７ｃ−９の信号パス要求遅延時間Ｔｒから信号パス遅延時間Ｔｄを引いたスラック（−１７［ｐｓ］）が記述される。
【００７２】
ここで、比較例として、関連技術を適用して半導体集積回路６０の動作タイミング検証を行った。図１９に、関連技術における動作タイミング検証の結果であるタイミング検証エラーレポートを示す。タイミング検証エラーレポート１７ｄにおけるライン１７ｄ−１のクロックサイクル時間Ｔと、ライン１７ｄ−３のセットアップ時間Ｔｓｕは、図１８に示す本実施形態におけるタイミング検証エラーレポート１７ｃの値と同じである。また、ライン１７ｄ−５〜１７ｄ−７の遅延時間も、タイミング検証エラーレポート１７ｃの値と同じである。
【００７３】
関連技術においては、マクロ７０の遅延時間計算に際して、マクロ７０内部のクロック遅延時間（８０［ｐｓ］）を含んだ遅延時間を保持する遅延時間テーブル１３１ｂ（図６）を参照する。入力波形なまり「０．２Ｒ」、出力負荷容量「０．２Ｃ」にて遅延時間テーブル１３１ｂを参照すると、マクロ７０の遅延時間は、２４７［ｐｓ］となる。従って、ライン１７ｄ−４には、タイミング検証エラーレポート１７ｃにおけるマクロ７０の遅延時間（１６７［ｐｓ］）よりも、マクロ内部での遅延時間分である８０［ｐｓ］長い遅延時間（２４７［ｐｓ］）が、マクロ７０の遅延時間として記述される。ライン１７ｄ−１０は、ライン１７ｄ−４〜１７ｄ−７の遅延時間の和で与えられるため、本実施形態における動作タイミングレポート１７ｃの値（８９７［ｐｓ］）よりも８０［ｐｓ］長い９７７［ｐｓ］となる。
【００７４】
関連技術では、マクロ７０内部のクロック分配遅延時間は、遅延時間テーブル１３１ｂの値に含まれ、マクロ７０の遅延時間として与えられており、クロックスキューの計算には考慮されない。すなわち、クロックスキューＴｓは、マクロ７０のクロック遅延時間Ｔｃ１と、セル６１ａのクロック遅延時間Ｔｃ２との差で与えられる。マクロ７０のクロック遅延時間Ｔｃ１は１０［ｐｓ］で、セル６１ａのクロック遅延時間Ｔｃ２は１０［ｐｓ］なので、関連技術におけるタイミング検証エラーレポートのライン１７ｄ−２のクロックスキューＴｓは、０［ｐｓ］となる。
【００７５】
ライン１７ｄ−９の信号パス要求遅延時間Ｔｒは、ライン１７ｄ−１のクロックサイクル時間Ｔから、ライン１７ｄ−２のクロックスキューＴｓとライン１７ｄ−３のセットアップ時間Ｔｓｕとの和を引いた値であり、１０００−（０＋４０）＝９６０［ｐｓ］となる。ライン１７ｄ−１１のスラックは、ライン１７ｄ−９の信号パス要求遅延時間Ｔｒから、ライン１７ｂ−１０の信号パス遅延時間Ｔｄを引いた値であり、９６０−９７７＝−１７［ｐｓ］となる。
【００７６】
図１８のタイミング検証エラーレポート１７ｃと、図１９のタイミング検証エラーレポート１７ｄとを比較すると、動作タイミング違反が発生しているか否かを判断する際に参照されるスラックの値は同じ値（−１７［ｐｓ］）となっている。従って、本実施形態におけるタイミング検証エラーレポート１７ｃでも、関連技術におけるタイミング検証エラーレポート１７ｄでも、遅延改善が必要と判定されることになる。本実施形態におけるタイミング検証エラーレポート１７ｃを参照すると、クロックスキューＴｓは８０［ｐｓ］であるので、クロックスキューを改善すればよいことがわかる。
【００７７】
一方、関連技術におけるタイミング検証エラーレポート１７ｄを参照すると、クロックスキューＴｓが０［ｐｓ］であるので、信号経路の遅延時間改善が必要と判断されることになる。しかしながら、実際には、マクロ７０内部でのクロック遅延時間をも考慮すると、クロックスキューは８０［ｐｓ］であり、良好ではない。このように、関連技術におけるタイミング検証エラーレポート１７ｄでは、実際にはクロック分配は悪い状態であっても、クロック分配に改善が必要でないかのように見え、迅速に適切な遅延改善を行うことが困難である。
【００７８】
本実施形態では、始点ブロック及び終点ブロックの少なくとも一方がマクロである信号パスの動作タイミング検証にて、遅延時間算出手段２１が算出した遅延時間と、マクロ内部でのクロック遅延時間を記述したマクロクロック補正遅延ライブラリとを用いて、クロックスキューを算出する。より詳細には、遅延時間算出手段２１にて算出された、ソースクロックからマクロのクロック端子までのクロック遅延時間に、マクロクロック補正遅延ライブラリに記述された、マクロ内部でのクロック遅延時間を足し合わせた値を用いてクロックスキューを計算する。このようにすることで、マクロ７０内部のクロック分配遅延を考慮した真のクロックスキューが得られる。
【００７９】
動作タイミング検証にて、動作タイミング違反が発生した際に、クロックスキューが大きいときは、クロックスキュー改善が必要であり、クロックスキューが小さければ、信号パスの遅延時間改善が必要である。本発明では、マクロ内部のクロック分配遅延時間を考慮したクロックスキューが得られるため、動作タイミング違反が発生した際に、クロック分配改善が必要か、或いは、信号遅延時間改善が必要かを、正しく判断できる。一般に、クロック分配を修正すると、その前後に存在する全てのパスの遅延結果に影響が出るため、クロック分配は極力避けたい。その意味でも、クロック分配が良好であるか否かを、タイミング検証エラーレポートのクロックスキュー情報を参照することで簡単に判断できることは、半導体集積回路を設計する上で、大きなメリットである。
【００８０】
なお、上記では、始点ブロックがマクロで、終点ブロックがＦＦの信号パスのセットアップ検証を具体例に挙げて説明したが、これには限定されない。始点ブロックがＦＦ等のセルで終点ブロックがマクロの信号パス、或いは、始点ブロックがマクロで終点ブロックがマクロの信号パスについても、上記と同様な手法により、マクロ内部のクロック分配遅延を考慮したクロックスキューを算出し、そのクロックスキューを用いた動作タイミング検証が可能である。マクロが終点ブロックとなる信号パスのセットアップ検証／ホールド検証では、セットアップ時間テーブル１３３ａ（図８）／ホールド時間テーブル１３４ａ（図１０）より、マクロのセットアップ時間／ホールド時間を取得すればよい。
【００８１】
上記実施形態では、マクロ内部でのクロック分配遅延時間を除外した遅延時間テーブル１３１ａ（図５）を用意し、遅延時間計算では、その遅延時間テーブル１３１ａを参照して、クロック分配遅延時間を含まないマクロの信号遅延時間を算出したが、マクロの遅延時間計算は、これには限定されない。例えば、関連技術で用いられる、クロック分配遅延時間を含む遅延時間テーブル１３１ａを参照してマクロの遅延時間を算出し、その後、マクロクロック補正遅延ライブラリを参照して、算出した遅延時間から、マクロ内部でのクロック分配遅延時間を差し引いて、クロック分配遅延時間を含まないマクロの信号遅延時間を算出してもよい。このようにする場合は、クロック分配遅延時間を除外した遅延時間テーブル１３１ａを用意する必要がない。
【００８２】
以上、本発明をその好適な実施形態に基づいて説明したが、本発明の動作タイミング検証装置、方法、及び、プログラムは、上記実施形態にのみ限定されるものではなく、上記実施形態の構成から種々の修正及び変更を施したものも、本発明の範囲に含まれる。
【図面の簡単な説明】
【００８３】
【図１】本発明の一実施形態の動作タイミング検証装置の構成を示すブロック図。
【図２】検証対象の半導体集積回路の構成を示すブロック図。
【図３】マクロの内部構成を示すブロック図。
【図４】マクロ遅延ライブラリの構成を示すブロック図。
【図５】本発明の一実施形態における遅延時間テーブルの具体例を示す図。
【図６】関連技術における遅延時間テーブルの具体例を示す図。
【図７】出力波形なまりテーブルの具体例を示す図。
【図８】本発明の一実施形態におけるセットアップ時間テーブルの具体例を示す図。
【図９】関連技術におけるセットアップ時間テーブルの具体例を示す図。
【図１０】本発明の一実施形態におけるホールド時間テーブルの具体例を示す図。
【図１１】関連技術におけるホールド時間テーブルの具体例を示す図。
【図１２】マクロクロック補正遅延ライブラリの具体例を示す図。
【図１３】タイミング検証エラーレポートを示す図。
【図１４】動作タイミング検証装置の動作手順を示すフローチャート。
【図１５】本発明の一実施形態におけるタイミング検証エラーレポートの第１の具体例を示す図。
【図１６】関連技術におけるタイミング検証エラーレポートの第１の具体例を示す図。
【図１７】検証対象の別の半導体集積回路の構成を示すブロック図。
【図１８】本発明の一実施形態におけるタイミング検証エラーレポートの第２の具体例を示す図。
【図１９】関連技術におけるタイミング検証エラーレポートの第２の具体例を示す図。
【符号の説明】
【００８４】
１１：回路ネットリスト
１２：セルライブラリ
１３：マクロ遅延ライブラリ
１４：ＳＤＦ
１５：遅延制約情報
１６：マクロクロック補正遅延ライブラリ
１７：タイミング検証エラーレポート
１７−２：クロックスキュー情報
２０：データ処理装置
２１：遅延時間算出手段
２２：クロック補正値考慮可能な遅延解析手段
３０：記憶装置
３１：回路ネットリスト記憶部
３２：セルライブラリ記憶部
３３：マクロ遅延ライブラリ記憶部
３４：ＳＤＦ記憶部
３５：遅延制約情報記憶部
３６：マクロクロック補正遅延ライブラリ記憶部
４１：バス
４２：入力部
４３：出力部
５１ａ：セル（ＦＦ）
５２ａ、５２ｂ：セル（ＢＵＦ）
５５ａ：組合せ回路
７０：マクロ
１３１：遅延時間テーブル群
１３２：出力波形なまりテーブル群
１３３：セットアップ時間テーブル群
１３４：ホールド時間テーブル群
１３５：マクロ情報テーブル群
【図１】
2009037278.tif 000003
【図２】
2009037278.tif 000004
【図３】
2009037278.tif 000005
【図４】
2009037278.tif 000006
【図５】
2009037278.tif 000007
【図６】
2009037278.tif 000008
【図７】
2009037278.tif 000009
【図８】
2009037278.tif 000010
【図９】
2009037278.tif 000011
【図１０】
2009037278.tif 000012
【図１１】
2009037278.tif 000013
【図１２】
2009037278.tif 000014
【図１３】
2009037278.tif 000015
【図１４】
2009037278.tif 000016
【図１５】
2009037278.tif 000017
【図１６】
2009037278.tif 000018
【図１７】
2009037278.tif 000019
【図１８】
2009037278.tif 000020
【図１９】
2009037278.tif 000021