(57)【特許請求の範囲】
【請求項１】
複数の回路素子を含む対象経路の信号伝搬時間を変化させる前記回路素子の物理特性値を所定の変動範囲で複数個発生させる物理特性値発生部と、
前記発生させたそれぞれの物理特性値にしたがって、前記回路素子を通る信号の遅延時間をそれぞれ算出する遅延時間算出部と、
前記信号の遅延時間を基に、前記対象経路の信号伝搬時間を算出する伝搬時間算出部と、
前記回路素子から出力される出力信号が所定の電圧値から第１電圧値に達する第１時間および前記第１電圧値から第２電圧値に達する第２時間を取得する区間取得部と、
前記区間取得部が取得した前記第１時間および前記第２時間が許容値以内にあるか否かを判定する第１判定部と、
前記第１時間および前記第２時間が前記許容値以内にない場合は、前記第１時間および前記第２時間を前記許容値以内に補正する補正部と、
を備える情報処理装置。
【請求項２】
前記回路素子はトランジスタであり、
前記遅延時間算出部は、トランジスタの飽和領域におけるソースドレイン間の電流電圧特性にしたがって前記信号の遅延時間を算出する第１の算出部と、トランジスタの非飽和領域におけるソースドレイン間の電流電圧特性にしたがって前記信号の遅延時間を算出する第２の算出部と、を備える請求項１に記載の情報処理装置。
【請求項３】
前記複数の回路素子を含む集積回路に外部から入力される入力信号の条件を規定した入力信号条件記憶部をさらに備え、
前記遅延時間算出部は、前記対象経路上のそれぞれの回路素子が前記入力信号を入力される入力素子か否かを判定する第２判定部と、前記入力素子については、前記入力信号に依存する遅延時間を前記信号伝搬時間に追加し、前記入力素子以外の回路素子については、前記対象経路上で入力側に接続される前記回路素子の前段の回路素子の出力信号に依存する遅延時間を追加する入力依存追加部と、を有する請求項１または２に記載の情報処置装置。
【請求項４】
前記信号伝搬時間が、前記回路素子に入力される入力信号と前記出力信号とが基準となる判定値に到達したときの時間差であり、前記対象経路の複数の回路素子に対して異なる前記判定値が指定されている場合に、前記対象経路上で接続される２つの回路素子間の前記判定値を整合させる基準設定部をさらに備える請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
前記信号の波形の変化の方向に対して、前記回路素子の前段の回路素子の出力電圧判定値が前記回路素子の入力電圧判定値に達していない場合、前記基準設定部は、前記前段の回路素子の出力電圧判定値に前記回路素子の入力電圧判定値を設定して、前記信号の遅延時間の追加分を算出し、
前記信号の波形の変化の方向に対して、前記前段の回路素子の出力電圧判定値が前記回路素子の入力電圧判定値に達している場合、前記基準設定部は、前記前段の回路素子の出力電圧判定値に前記回路素子の入力電圧判定値を設定して、前記信号の遅延時間の削減分を算出する、
ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
コンピュータに、
複数の回路素子を含む対象経路の信号伝搬時間を変化させる前記回路素子の物理特性値を所定の変動範囲で複数個発生させる物理特性値発生ステップと、
前記発生させたそれぞれの物理特性値にしたがって、前記回路素子を通る信号の遅延時間をそれぞれ算出する遅延時間算出ステップと、
前記信号の遅延時間を基に、前記対象経路の信号伝搬時間を算出する伝搬時間算出ステップと、
前記回路素子から出力される出力信号が所定の電圧値から第１電圧値に達する第１時間および前記第１電圧値から第２電圧値に達する第２時間を取得する区間取得ステップと、
前記区間取得部が取得した前記第１時間および前記第２時間が許容値以内にあるか否かを判定する判定ステップと、
前記第１時間および前記第２時間が前記許容値以内にない場合は、前記第１時間および前記第２時間を前記許容値以内に補正する補正ステップと、
を実行させるプログラム。
【請求項７】
コンピュータが、
複数の回路素子を含む対象経路の信号伝搬時間を変化させる前記回路素子の物理特性値を所定の変動範囲で複数個発生させる物理特性値発生ステップと、
前記発生させたそれぞれの物理特性値にしたがって、前記回路素子を通る信号の遅延時間をそれぞれ算出する遅延時間算出ステップと、
前記信号の遅延時間を基に、前記対象経路の信号伝搬時間を算出する伝搬時間算出ステップと、
前記回路素子から出力される出力信号が所定の電圧値から第１電圧値に達する第１時間および前記第１電圧値から第２電圧値に達する第２時間を取得する区間取得ステップと、
前記区間取得部が取得した前記第１時間および前記第２時間が許容値以内にあるか否かを判定する判定ステップと、
前記第１時間および前記第２時間が前記許容値以内にない場合は、前記第１時間および前記第２時間を前記許容値以内に補正する補正ステップと、
を実行する設計支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路のタイミング解析に関する。
【背景技術】
【０００２】
半導体集積回路では、集積回路内の回路の遅延時間が規定の条件を満足しない場合、集積回路が正常に動作しない場合がある。一方、集積回路の製造では、製造条件等に起因し、回路特性は、ばらつきを伴う。その結果、製造される集積回路内の回路の遅延時間にも、ばらつきが生じる。そこで、集積回路の設計では、設計者は、集積回路内の回路の遅延時間にある程度のマージンを見込んだ上で、遅延時間の許容値を設定し、集積回路内の回路が正常動作するか否かをタイミング解析によって検証する。
【０００３】
従来の集積回路の設計におけるタイミング解析では、集積回路内の回路の遅延時間のばらつきを統計的に処理する技術が知られている。回路の遅延時間を統計的に処理する解析方法としては、ＳＳＴＡ（統計的静的遅延解析）が提案されている。
【０００４】
ＳＳＴＡでは、例えば、様々な製造ラインで製造された様々な集積回路の遅延時間測定結果からフィードバックを受けて、回路の遅延時間の分布を求める。このため、１つの集積回路に着目した場合には、集積回路の遅延時間のばらつきと、様々な集積回路の製造ラインでの遅延時間のばらつきとが一致しない場合があった。そのため、その着目した集積回路内の回路では、遅延時間に対して過剰マージン（またはマージン不足）を設定する可能性を含んでいた。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−１９５２４号公報
【特許文献２】特開２００８−１３４８２６号公報
【特許文献３】特開２００２−１１０４８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来の技術は、例えば、様々な製造ラインから得られた遅延時間を統計的に処理した情報を用いるので、集積回路の設計段階で設計対象の集積回路の個々の回路の回路特性の変動による遅延時間のばらつきを取り扱う技術は提案されていない。本発明の課題は、設計対象の集積回路内での回路特性のばらつきに伴う遅延時間の変動を反映したタイミング解析技術を提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、実施形態の一側面は、以下の情報処理装置によって例示される。本情報処理装置は、複数の回路素子を含む対象経路の信号伝搬時間を変化させる物理特性値を所定の変動範囲で複数個発生させる物理特性値発生部と、発生させたそれぞれの物理特性値にしたがって、回路素子を通る信号の遅延時間をそれぞれ算出する素子遅延算出部と、信号の遅延時間を基に対象経路の信号伝搬時間を算出する伝搬時間算出部と、を備える。
【発明の効果】
【０００８】
本発明によれば、設計対象の半導体集積回路内での回路特性のばらつきに伴う遅延時間の変動を反映したタイミング解析を実行できる。
【図面の簡単な説明】
【０００９】
【図１】比較例に係る設計支援装置の処理手順を例示する図である。
【図２】設計対象の集積回路を例示する図である。
【図３】タイミング検証結果を例示するタイミングチャートである。
【図４】ＳＳＴＡによる解析手順を例示する図である。
【図５】タイミング解析の結果を例示するタイミングチャートである。
【図６】設計支援装置のハードウェア構成を例示する図である。
【図７】実施例１の設計支援装置の処理概要を例示する図である。
【図８】実施例１のタイミング解析を実行した結果を例示するタイミングチャートである。
【図９】ベストケースのタイミングチャートの例である。
【図１０】ワーストケースのタイミングチャートの例である。
【図１１】実施例２のＭＳＴＡを適用するインバータ回路の例である。
【図１２】回路の波形例である。
【図１３】インバータ回路の等価回路の例である。
【図１４】電流電圧特性を例示する図である。
【図１５】電流テーブルの構成を例示する図である。
【図１６】ドレイン電流の時間変化例をプロットした図である。
【図１７】入力電圧に対して出力電圧の変化例をプロットした図である。
【図１８】正規分布に近い遅延時間の分布例である。
【図１９】遅延時間の分布が２つの正規分布の組み合わせとなっている例である。
【図２０】試行回数が少ない場合の遅延時間分布の例である。
【図２１】Ｐ型トランジスタとＮ型トランジスタとで特性が対称でない場合のセルの遅延時間分布の例である。
【図２２Ａ】実施例２に係る設計支援装置の処理のフローチャートの例である。
【図２２Ｂ】実施例２に係る設計支援装置の処理のフローチャートの例である。
【図２３】電流テーブルを作成する処理の詳細を例示するフローチャートである。
【図２４】電流テーブルを基に、時間を横軸として出力電圧を縦軸としてプロットした図である。
【図２５】傾き決定区間を分割した例である。
【図２６】傾き決定区間全体の出力信号波形と、各分割区間の出力信号波形を比較する図である。
【図２７】電源電圧の８０％〜６５％の区間の立ち下がり時間を基に、決定区間全体の立ち下がり時間を補正する例である。
【図２８】セル出力ｓｌｅｗ計算処理を例示するフローチャートである。
【図２９】２つのバッファを直列に接続した回路を例示する図である。
【図３０】遅延時間を算出する信号レベル判定値が、２つバッファで相違する例を示す図である。
【図３１】遅延時間を算出する信号レベル判定値が異なる２つバッファで信号レベル判定値を補正した例を示す図である。
【図３２】信号レベル判定値補正処理の手順を例示する図である。
【図３３】タイミング解析結果の処理例を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照して、一実施形態に係る設計支援装置について説明する。以下の実施形態の構成は例示であり、本装置は実施形態の構成には限定されない。
【００１１】
［比較例］
図１−図４を参照して、比較例の設計支援装置が実行するＳＳＴＡの概要を説明する。
図１は、比較例に係る設計支援装置３００の処理手順を例示する図である。
【００１２】
回路の遅延時間を解析する技術として、ＳＴＡ（静的遅延解析）が用いられる場合がある。ＳＴＡを適用する場合、設計支援装置３００は、例えば、素子をブラックボックス化し、パスを形成する。そして、設計支援装置３００は、実際には起こり得ないケース、あるいは、発生する可能性の低いケースも考慮して、パスの遅延時間を求め、所与の条件が満足されるか否かを判定する。このような過剰なケースを含めてタイミング解析をすると、設計段階で過剰なマージンが確保される結果となりやすい。
【００１３】
このような過剰なマージンを緩和する１つの手法として、ＳＳＴＡが提案された。ＳＳＴＡでは、素子の遅延時間のばらつきは統計量として与えられる。統計量として与えるとは、例えば、ある素子Ｇ１の遅延時間分布を確率分布関数ｆ１とする。確率分布関数ｆ１は、例えば、平均ｍ１、標準偏差ｓ１の正規分布として例示できる。同様に、ある素子Ｇ２の遅延時間分布を確率分布関数ｆ２とする。確率分布関数ｆ２は、例えば、平均ｍ２、標準偏差ｓ２の正規分布として例示できる。そして、例えば、素子Ｇ１とＧ２とが直列につながったパスＰの時間として、単純な遅延時間の和とする代わりに、確率分布関数ｆ１とｆ２との統計的な和によって得られる確率分布関数ｆａが求められる。そして、確率分布関数ｆａを用いて、パスＰのエラーの発生頻度が算出され、エラーの発生頻度が、所与の条件を満足するところまで、素子の遅延時間に対する条件が緩和される。
【００１４】
図１に示すように、設計支援装置３００は、ＲＴＬ（レジスタ・トランスファー・レベル）で記述された回路データ３０１と、設計回路に含まれる素子の遅延時間を定義した遅延時間テーブル３０２と、遅延時間のばらつき、例えば、標準偏差を定義したバリエーションテーブル３０３とを記憶装置に保持する。
【００１５】
回路データ３０１は、設計対象の集積回路を表現する。ただし、ＲＴＬでは、フリップフロップ、ＡＮＤ、ＯＲといったゲートレベルでのハードウェアは抽象化されている。したがって、回路データ３０１は、レジスタ間の情報のやりとりを定義し、例えば、Ｘ＝Ａ・Ｂのような情報のやりとり、すなわち、レジスタＡとレジスタＢとのＡＮＤ演算結果がレジスタＸに入力される、という設計データが定義されるが、ゲートの構成は含まれない。
【００１６】
遅延時間テーブル３０２は、それぞれの素子を識別する情報と、それぞれの素子の遅延時間を保持する。
【００１７】
図１のように、設計支援装置３００は、回路データ３０１（ＲＴＬ）を基に、回路合成（Ｓｙｎｔｈｅｓｉｓ）を実行する（Ｓ３１１）。回路合成の結果、ＲＴＬを基に、ゲートレベルのネットリストが作成される。ゲートレベルのネットリストは、回路に含まれるゲートと、ゲート間の接続情報を含む。
【００１８】
そして、設計支援装置３００は、ゲートレベルのネットリストと遅延時間テーブル３０２とを基に、設計対象の集積回路内のそれぞれのパスについて、遅延時間を計算する（Ｓ３１２）。比較例では、設計支援装置３００は、ＳＳＴＡを適用する。すなわち、設計支援装置３００は、上述のように、例えば、複数ゲートの直列回路について、遅延時間を補正する（Ｓ３１３）。遅延時間の補正は、例えば、単純な遅延時間の加算を行う代わりに、統計的な加算の効果によるものである。遅延時間補正の結果、設計支援装置３００は、それぞれの素子の遅延時間を緩和する係数を決定する。そして、設計支援装置３００は、ゲートレベルのネットリスト内のそれぞれのゲートについて、遅延時間情報（Delay Info）３０４を設定する。
【００１９】
そして、設計支援装置３００は、それぞれのゲートについて設定された遅延時間情報３０４を基に、ＳＴＡを実行し（Ｓ３１４）、設計対象の集積回路内のそれぞれのパスの遅延時間が所与の条件を満足するか、否かを判定する（Ｓ３１５）。遅延時間が所与の条件を満足しないパスが存在する場合、設計支援装置３００は、処理をＳ３１１に戻し、設定条件を変更し、再度回路合成を実行する。設定条件とは、回路合成のためのコスト関数の設定、ゲート数の上限、ゲートサイズの上限の設定等である。一方、設計対象の集積回路内のそれぞれのパスの遅延時間が所与の条件を満足する場合には、設計終了となる（Ｓ３１５）。設計終了は、集積回路のユーザとメーカが相互に設計の正しさを確認する段階という意味で、サインオフとも呼ばれる。
【００２０】
図２−図５により、設計支援装置３００の処理例を示す。図２に、設計対象の集積回路の例を示す。図２は、ネットリストによるゲートの接続関係を回路図の形式で例示した図である。ここでは、図２の集積回路中のフリップフロップＦＦ１からゲートＧ１−Ｇ３を経由して、フリップフロップＦＦ２につながるパスＰ１と、ゲートＧ４を経由するパスＰ２のタイミング検証を例に説明する。図２で、パスＰ１は、フリップフロップＦＦ１とＦＦ２との間のデータ授受のパスである。また、パスＰ２は、フリップフロップＦＦ１およびＦＦ２に供給されるクロック信号のパスである。ここで、タイミング検証としては、例えば、パスＰ１を通る信号と、パスＰ２を通るクロック信号との関係によって算出される、フリップフロップＦＦ２のセットアップタイムとホールドタイムの検証を例示できる。
【００２１】
今、フリップフロップＦＦ１の遅延時間を１００ｐｓとし、ゲートＧ１−Ｇ３それぞれの遅延時間を１１０ｐｓとする。ここで、遅延時間とは、それぞれの素子の入力端子から出力端子までの信号伝搬時間をいうものとする。また、図２では、素子間の金属配線の伝搬時間は無視している。金属配線は伝送路ともいう。また、フリップフロップＦＦ１、ＦＦ２のホールドタイムと、セットアップタイムをいずれも２００ｐｓとする。
【００２２】
図３は、図２の集積回路についてのタイミング検証結果を例示するタイミングチャートである。図３の信号Ｄａｔａ−１からＤａｔａ−５は、図２の回路図中のＤａｔａ−１からＤａｔａ−５で示した位置での信号に相当する。図３のタイミングチャートには、フリップフロップＦＦ２への入力信号のセットアップタイムのチェック値と、ホールドタイムのチェック値とが例示されている。今、クロックＣｌｏｃｋ−１、Ｃｌｏｃｋ−２の立ち上がりエッジでフリップフロップＦＦ１、ＦＦ２の入力端子からデータが取り込まれるとする。図３で、フリップフロップＦＦ２への入力信号Ｄａｔａ−５は、クロック信号Ｃｌｏｃｋ−２の立ち上がりエッジＴＥ１で取り込まれる。そして、立ち上がりエッジＴＥ１で取り込まれた入力信号Ｄａｔａ−５は、ホールドタイムのチェック値２００ｐｓより長く継続する。したがって、入力信号Ｄａｔａ−５は、ホールドタイムのチェック値を満たしている。一方、入力信号Ｄａｔａ−５が次に取り込まれるタイミングでのセットアップタイム、すなわち、クロック信号Ｃｌｏｃｋ−２の立ち上がりエッジＴＥ２の前のセットアップタイムは、チェック値２００ｐｓよりも短く、セットアップタイムのチェック値が満たされない。したがって、セットアップエラーが検出される。なお、図３で「正常範囲」で示したのは、Ｄａｔａ−５が正常にフリップフロップＦＦ２に取り込まれるために、Ｄａｔａ−５のＬＯ（低電位）からＨＩ（高電位）への切り替えがなされる区間である。
【００２３】
図４は、ＳＳＴＡを適用した解析手順を例示する図である。図４の例では、１つの設計手法として、フリップフロップＦＦ２段目のデータにつながるパス（バッファ３段）に注目する。このパスに対して統計で求めた補正値（この例では０．９）を、パスディレイに係数掛けする。この補正値を係数掛けする処理が、図１のＳ３１３のステップに相当する。この補正値は、例えば、工場での製造結果に基づく経験値等を統計処理して得られる。補正値は、例えば、パス上の素子の遅延時間を補正値倍（この例では０．９倍）に補正し、マージンを削減しても、素子のエラー発生率が所与の限度を満足すると想定される値に
決定される。具体的な緩和係数の求め方は、半導体ベンダによって異なる。
【００２４】
図５は、図４の集積回路でのタイミング解析の結果を例示するタイミングチャートである。図５のように、遅延時間を補正した状態では、ゲートＧ１−Ｇ３の遅延時間がそれぞれ１００ｐｓとなる結果、入力信号Ｄａｔａ−５の立ち上がりエッジＴＥ１からのホールドタイムおよび立ち上がりエッジＴＥ２の前のセットアップタイムは、いずれもチェック値２００ｐｓを満たす。したがって、図４で示される集積回路でタイミング解析を実施するとセットアップエラーが消える。
【００２５】
上記スペック緩和で例示した、補正値の係数は、他のサンプルチップで得られた製造ばらつきの傾向から、例えば、統計的に求められる値である。したがって、上記係数掛けによるスペック緩和は、実際上は、他のサンプルチップで得られた製造ばらつき等の傾向をタイミングチェック対象、すなわち設計対象の集積回路に当てはめていることに相当する。したがって、「設計対象の集積回路について、設計段階で想定したチップ内ばらつきが発生した際に、スペックが満たされる」という一般化された保証にはならない。
【実施例１】
【００２６】
図６から図１０を参照して、実施例１に係る設計支援装置１０を説明する。設計支援装置１０は、情報処理装置と呼ぶことができ、例えば、パーソナルコンピュータ、あるいは、サーバ等である。図６に設計支援装置１０のハードウェア構成を例示する。設計支援装置１０は、ＣＰＵ１１、主記憶装置１２を有し、さらに、インターフェースを通じて外部記憶装置１３、表示装置１４、操作部１５、通信部１６、可搬型記憶媒体入出力装置１７等と接続される。
【００２７】
ＣＰＵ１１は、プロセッサとも呼ばれる。ＣＰＵ１１は、メモリ１２に実行可能に展開されたコンピュータプログラムを実行し、設計支援装置１０の機能を提供する。ＣＰＵ１１は、命令を実行する実行装置が１個のものには限定されず、いわゆる複数のコアを含むものでもよい。
【００２８】
主記憶装置１２は、メモリとも呼ばれる。主記憶装置１２は、ＣＰＵ１１が実行するコンピュータプログラム、ＣＰＵ１１が処理するデータ等を記憶する。主記憶装置１２は、不揮発性のＲＯＭ（Read Only Memory）と、揮発性のＤＲＡＭ（Dynamic Random Access Memory）とを含むようにしてもよい。外部記憶装置１３は、二次記憶装置と呼ばれる場合もある。外部記憶装置１３は、例えば、ハードディスク駆動装置による記憶装置である。ただし、外部記憶装置１３は、フラッシュメモリなどによるソリッド・ステート・ドライブ（ＳＳＤ）等でもよい。
【００２９】
表示装置１４は、例えば、液晶ディスプレイ、エレクトロルミネッセンスパネル、プラズマディスプレイ等である。操作部１５は、キーボード、マウス、タッチパネル、静電パッド等の入力装置である。静電パッドは、平面パッドを指等でなぞるユーザ操作を検知し、ユーザ操作に応じてディスプレイ上のカーソルの位置と移動状態とを制御するために使用される装置である。例えば、平面パッド下の電極の静電容量の変化によって、ユーザの指の動きが検知される。
【００３０】
通信部１６は、例えば、ＬＡＮへの接続インターフェース、すなわちＮＩＣ(Network Interface Card)と呼ばれるものである。また、通信部１６は、無線ＬＡＮ（Local Area Network）のインターフェースであってもよい。
【００３１】
可搬型記憶媒体入出力装置１７は、着脱可能な記憶媒体へのデータの入出力装置である。可搬型記憶媒体入出力装置１７は、例えば、フラッシュメモリカード等の入出力装置、
ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disk）、ブルーレイディスクへの入出力装置等である。
【００３２】
図７は、設計支援装置１０の処理概要を例示する図である。設計支援装置１０は、ＳＴＡ実行時に、設計対象の集積回路に含まれる素子の物理特性、あるいは配線の物理特性をモンテカルロ法によって所定のばらつきの範囲で生成する。設計支援装置１０は、所定のばらつきの範囲で発生させた素子の物理特性、あるいは配線の物理特性を用いて、それらの物理特性の素子、あるいは配線を含む集積回路のＳＴＡを実行する。設計支援装置１０がモンテカルロ法によって物理特性を発生させ、発生させた物理特性の素子、あるいは配線を含む集積回路においてＳＴＡを実行する処理をモンテカルロＳＴＡ（ＭＳＴＡ）と呼ぶ。
【００３３】
例えば、設計支援装置１０は、タイミング収束の悪いクリティカルパスを含む集積回路の設計データに対して、モンテカルロ法によって、ランダムにトランジスタの物理特性をばらつかせた遅延時間を生成する。そして、設計支援装置１０は、生成した遅延時間を基に、集積回路内のそれぞれのパスでのタイミングチェックを実施する。
【００３４】
トランジスタの物理特性をトランジスタの遅延時間に反映させるために、設計支援装置１０は、電流ベース遅延計算を実行する。電流ベース遅延計算では、設計支援装置１０は、トランジスタの電流電圧特性を示すモデル式を基に、トランジスタの入力電圧の変化に対する出力電流の変化を求め、さらに、出力電流の変化に対応する出力電圧の変化を求める。そして、設計支援装置１０は、入力電圧の変化に対応する出力電圧の変化が生じるまでの時間をトランジスタの遅延時間として求める。設計支援装置１０は、トランジスタ等の素子、あるいは金属配線の物理特性をモンテカルロ法によってランダムにばらつかせるので、物理特性のばらつきに応じて、素子あるいは金属配線の遅延時間がばらつく。したがって、設計支援装置１０は、素子あるいは金属配線の物理特性のばらつきを前提としたＳＴＡを可能とする。
【００３５】
設計支援装置１０は、電流ベース遅延計算に用いる電流テーブルを算出するため、例えば下記のモデル式を計算する。
［モデル式］
Ｉｏｕｔ＝Ｆ（キャリア移動度、ゲート酸化膜厚、ゲート幅、ゲート長、ゲートソース間電圧、閾値、ソースドレイン間電圧）；ここで、キャリア移動度、ゲート酸化膜厚、ゲート幅、ゲート長、ゲートソース間電圧、閾値、ソースドレイン間電圧等のパラメータは、トランジスタの物理特性の典型例である。以下、トランジスタの物理特性を含む、回路の遅延時間に影響を与えるパラメータを物理特性情報と呼ぶことにする。
【００３６】
モデル式は、例えば、上記（）内の物理特性情報の多項式で記述される。また、このモデル式にモンテカルロ法を適用するため、設計支援装置１０は、物理特性情報、例えば、ゲート長を所定の範囲でランダムにばらつかせた値を発生する。ここで、Ｉｏｕｔは、例えば、ドレイン電流である。上記モデル式は、例えば、非飽和領域と、飽和領域で異なる形式を用いることが一般的である。
【００３７】
図７に示すように、設計支援装置１０は、例えば、ＲＴＬで記述された回路データ１と、設計対象の集積回路に含まれる回路素子の物理特性のばらつきの範囲を定義したバリエーションパラメータ３とを主記憶装置１２に保持する。ばらつきの範囲とは、物理特性の値が変動される範囲であり、例えば、最大値を１とする係数Ｄで定義することができる。設計支援装置１０は、係数Ｄのデフォルト値を保持するとともに、設計支援装置１０のユーザから、操作部１５を介して、係数Ｄを受け付けるようにしてもよい。
【００３８】
設計支援装置１０は、０−１の範囲の乱数Ｒを発生する場合、係数Ｄに対して、変動値＝物理特性の固定値×（Ｒ−０．５）×Ｄで求めることができる。また、変動後の物理特性の値＝物理特性の固定値＋変動値＝物理特性の固定値×｛１＋（Ｒ−０．５）×Ｄ｝で求めることができる。例えば、Ｄ＝０．１を設定した場合には、変動後の物理特性の値は、乱数Ｒに応じて、物理特性の固定値に対して、０．９５〜１．０５倍の範囲で、物理特性の値がばらつくことになる。ここで、物理特性の固定値としては、設計目標値、経験的実験的に得られている典型値などを用いればよい。なお、素子の物理特性の他、配線抵抗、配線容量、次段トランジスタのゲート容量等を、乱数Ｒを用いて変動させてもよい。
【００３９】
図７のように、設計支援装置１０は、回路データ１（ＲＴＬ）を基に、回路合成を実行する（Ｓ１１）。回路合成の結果、ＲＴＬを基に、ゲートレベルのネットリストが作成される。ゲートレベルのネットリストは、回路に含まれるゲート等の素子を識別する情報と、素子の物理特性情報（物理特性の固定値）と、素子間の接続情報を含む。
【００４０】
また、設計支援装置１０は、電流テーブル生成部５を有している。設計支援装置１０のＣＰＵ１１は、主記憶装置１２上に実行可能に展開されたコンピュータプログラムを実行し、上記モデル式にしたがって電流テーブル生成部５として機能し、電流テーブル６を生成する。すなわち、電流テーブル生成部５は、例えば、上述の乱数Ｒと、係数Ｄとにしたがって、物理特性情報として、所定の範囲でランダムにばらつかせた値を発生する。そして、電流テーブル生成部５は、上記モデル式にしたがって、物理特性情報に対応する電流値を算出し、電流テーブル６を生成する。電流テーブル６は、上記モデル式にしたがって、入力電圧、例えば、ゲートソース間電圧の時間変化に対するドレイン電流およびドレインソース間電圧の時間変化を与える。電流テーブル生成部５が、物理特性値発生部に相当する。なお、設計支援装置１０は、トランジスタの遅延時間の他、金属配線の物理特性情報を所定のばらつきの範囲で発生させてもよい。
【００４１】
さらに、設計支援装置１０は、入力電圧（ゲートソース間電圧）の時間変化に対応するドレインソース間電圧（出力電圧）の時間変化から、トランジスタの遅延時間を計算し、遅延時間情報４（Ｄｅｌａｙ  Ｉｎｆｏ）を生成する（Ｓ１２）。設計支援装置１０のＣＰＵ１１は、素子遅延算出部として、主記憶装置１２に実行可能に展開されたコンピュータプログラムを実行し、Ｓ１２の処理を実行する。なお、Ｓ１２の処理によって、設計支援装置１０は、金属配線の物理特性情報に基づく遅延時間を遅延時間情報４に含めるようにしてもよい。
【００４２】
そして、設計支援装置１０は、ゲートレベルのネットリストと遅延時間情報４とを基に、設計対象の集積回路内のそれぞれのパスについて、遅延時間を計算する。すなわち、設計支援装置１０は、それぞれのゲートレベルの素子について設定された遅延時間情報４を基に、ＳＴＡを実行し（Ｓ１３）、設計対象の集積回路内のそれぞれのパスの遅延時間が所与の条件を満足するか、否かを判定する（Ｓ１４）。設計支援装置１０のＣＰＵ１１は、伝搬時間算出部として、主記憶装置１２に実行可能に展開されたコンピュータプログラムを実行し、Ｓ１３およびＳ１４の処理を実行する。
【００４３】
上記モンテカルロ法によって、トランジスタの物理特性情報がばらつく結果、それぞれのパスの遅延時間もばらつくことになる。このような処理により、ユーザは、パスの遅延時間のばらつきから、様々な判断をすることができる。例えば、ユーザは、所与の条件としては、様々なものを設定できる。Ｓ１４の条件としては、例えば、セットアップエラーあるいはホールドエラーとなる遅延時間の判定値がパスの平均遅延時間から３シグマ以上離れていることを条件としてもよい。ここで、シグマは標準偏差である。すると、パスの遅延時間が正規分布する場合に、９９．７％の確率でセットアップエラーあるいはホールドエラーとならないようなチェック値を設定できる。
【００４４】
遅延時間が所与の条件を満足しないパスが存在する場合、設計支援装置１０は、処理をＳ１１に戻し、設定条件を変更し、再度回路合成を実行する。設定条件とは、回路合成のためのコスト関数の設定、ゲート数の上限、ゲートサイズの上限の設定等である。一方、設計対象の集積回路内のそれぞれのパスの遅延時間が所与の条件を満足する場合には、設計終了となる（Ｓ１５）。
【００４５】
図８は、比較例の図４と同一の集積回路に対して、図７に示した設計支援装置１０によりタイミング解析を実行した結果を例示するタイミングチャートである。図８のように、集積回路内の素子の物理特性のばらつきに応じて、例えば、クロックＣｌｏｃｋ−１の立ち上がりエッジＴＥ１０、Ｃｌｏｃｋ−２の立ち上がりエッジＴＥ２０、ゲートＧ１−Ｇ３への入力信号Ｄａｔａ−２，３，４、さらにはフリップフロップＦＦ１、ＦＦ２のへの入力信号の入力タイミングがばらついた結果となる。例えば、ゲートＧ１−Ｇ３の遅延時間は、９０ｐｓから１１０ｐｓの範囲で変動している。
【００４６】
図９は、図８のタイミングチャートから、最もタイミングの余裕のある場合の波形の組み合わせを抽出した場合である。図９のタイミングをベストケースと呼ぶことにする。図９は、例えば、ゲートＧ１−Ｇ３の遅延時間が９０ｐｓである遅延時間の波形を抽出した場合である。この場合には、Ｃｌｏｃｋ−２の立ち上がりエッジＴＥ２０に対するセットアップエラーは発生しない。
【００４７】
図１０は、図８のタイミングチャートから、最もタイミングの余裕のない場合の波形の組み合わせを抽出した場合である。図１０のタイミングをワーストケースと呼ぶことにする。図１０は、例えば、ゲートＧ１−Ｇ３の遅延時間が１１０ｐｓである遅延時間の波形を抽出した場合である。この場合には、Ｃｌｏｃｋ−２の立ち上がりエッジＴＥ２０に対するセットアップエラーが発生する。このように、設計支援装置１０によれば、設計対象の集積回路に含まれるトランジスタの物理特性のばらつきに応じた遅延時間の算出およびタイミング解析を実行できる。
【００４８】
以上述べたように、実施例１の設計支援装置１０は、素子の物理特性、例えば、トランジスタのゲート長等を所定の範囲でランダムにばらつかせる。そして、ゲート長が変化したときの入力電圧（例えば、ゲートソース間電圧）に対する出力電流（ドレイン電流）と出力電圧（ドレインソース間電圧）を算出する。この場合のドレイン電流は、多項式等、簡潔なモデル式を用いればよい。そして、設計支援装置１０は、入力電圧の変化に対応する出力電圧の変化から、トランジスタの遅延時間を算出する。
【００４９】
この処理では、トランジスタの物理特性と入力電圧とを含む簡易なモデル式で、入力電圧の変化に対する、出力電流の変化と出力電圧の変化を求めることができる。したがって、微分方程式を解くことで、回路の動作をシミュレーションする技術、例えば、ＳＰＩＣＥ（Simulation Program with Integrated Circuit Emphasis）シミュレーションと比較
して、極めて少ない計算量で、トランジスタの物理特性を含む集積回路の物理特性をランダムに変化させた場合の集積回路内のパスの遅延時間を算出できる。このため、例えば、比較例に示した統計的な処理によって、過剰のマージンを緩和する手法を採る代わりに、所与の範囲あるいはユーザ指定の範囲等で、トランジスタの特性がばらつくことを前提として、遅延時間を把握し、集積回路内の各部に伝搬する信号のタイミングを解析できる。
【実施例２】
【００５０】
図１１から図３３の図面を参照して、実施例２に係る設計支援装置１０を説明する。実施例１では、集積回路内のトランジスタの物理特性をランダムに変化させた場合のトランジスタの遅延時間を算出し、集積回路のタイミング解析を実行する処理を説明した。実施
例２では、トランジスタの物理特性をランダムに変化させた場合の処理例をさらに具体的に説明する。実施例２の構成および作用は、基本的には実施例１と同様である。そこで、以下、実施例１と異なる構成について、詳しく説明する。
【００５１】
＜遅延時間算出例１＞
まず、１つのインバータを含む回路を例に、ＭＳＴＡの処理を説明する。図１１は、インバータ回路の例である。図１１は、Ｐ型トランジスタ（Ｐｃｈ  Ｔｒ）と、Ｎ型トランジスタ（Ｎｃｈ  Ｔｒ）を含むＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）インバータを例示する。また、図１１のＣＭＯＳインバータの出力回路の容量をＣとする。ここで、出力回路の容量Ｃは、Ｐ型トランジスタとＮ型トランジスタのそれぞれのドレインにつながる容量、例えば、拡散寄生容量である。ただし、以下の計算では、ＣＭＯＳインバータの拡散寄生容量に加えて、さらに、配線、ビアコンタクトの容量等の総和をも考慮して、遅延時間を計算する。そこで、図１１には、ＣＭＯＳインバータの負荷となる負荷抵抗ＲＬおよび負荷容量ＣＬが点線で示されている。
【００５２】
負荷抵抗ＲＬは、ＣＭＯＳインバータに接続される金属配線、あるいはビアコンタクトの抵抗として例示できる。また、負荷容量ＣＬは、金属配線、ビアコンタクトあるいは次段トランジスタのゲート容量等を含む容量として例示できる。以下、図１１のＣＭＯＳインバータに入力電圧Ｖｉｎが入力され、出力電圧Ｖｄｓが出力された場合を考える。また、図１１で負荷抵抗ＲＬ、負荷容量ＣＬを考慮しなし場合の出力電圧（ドレインソース電圧）をＶｄｓ＠ｎｏｎＲＣとする。また、負荷抵抗ＲＬ、負荷容量ＣＬを考慮した場合の出力電圧をＶｄｓ＠ＲＣとする。
【００５３】
まず、回路の動作を簡略化して考察するため、入力パルスが、波形のなまりのない理想パルスである場合のＣＭＯＳインバータの動作を考える。ＣＭＯＳインバータは、通常Ｐ型トランジスタとＮ型トランジスタのドレイン電流が揃えてられている。そこで、図１１のＰ型トランジスタとＮ型トランジスタの特性は対称性を持つものと仮定する。したがって、以下の解析で、飽和領域と非飽和領域の遷移に関する検討を行うが、Ｐ型トランジスタとＮ型トランジスタとを特に区別しない。
【００５４】
図１２は、図１１の回路の波形例である。図１２のように、入力パルスが理想パルスであると仮定しても、ＣＭＯＳインバータの動作特性によって、出力パルスは、理想的な矩形形状からなまった形状となる。立ち上がり遅延時間をｔＬＨとし、立ち下がり側をｔＨＬとする。対称性があるため遅延時間の考察は、ｔＨＬについてのみ行えばよい。すなわち、Ｖｉｎが、ＬＯからＨＩに変化する場合の遅延時間を解析する。
【００５５】
今、入力電圧Ｖｉｎがｔ＝０で立ち上がるとすると、ｔ＝０以前ではＶｉｎ＝０［ｖ］で、Ｖｄｓ＝電源電圧ＶＤＤになる。また、ｔ＝０で入力が立ち上がるとＰ型トランジスタは直ちにカットオフすると仮定する。そこで、図１１の回路は、図１３の等価回路で表すことができる。図１４に、電流電圧（Ｉｄｓ−Ｖｄｓ）特性を例示する。ここで、Ｉｄｓは、ドレイン電流であり、Ｖｄｓは、ドレインソース間電圧である。
【００５６】
ｔ＝０での動作点は、図１４のＡ点にある。すなわち、Ａ点は、ソースドレイン間電圧とゲートソース間電圧が一致する場合（Ｖｄｓ＝Ｖｇｓ）である。その後、時間が経過するのにつれて、動作点は、図１４でＡ点からＤ点に向けて移動する。ｔＨＬの遅延時間は、図１４の曲線を追跡することによって求めることができる。
【００５７】
図１４でＡ点からＢ点まではトランジスタの飽和領域である。飽和領域では、トランジスタは、定電流源として扱うことができる。飽和領域でのドレイン電流Ｉｄｓは、数１の
モデル式で記述できる。
【００５８】
［数１]
0005569237.tif 000002
ここで、μ０は、半導体基板中のキャリアの移動度、Ｃｏｘは、単位面積当たりのゲート容量、Ｗはゲート幅、Ｌはゲート長、Ｖｔｈは、トランジスタの閾値電圧である。数１により、図１４の点Ａから点Ｂまで動作点が移動するのに要する時間をｔＡＢとすると、ｔＡＢは、数２によって求められる。ただし、数２でＣは、図１１、図１３の出力回路の容量Ｃである。数２は、ドレインソース電圧ＶｄｓがＶｇｓからＶｇｓ−Ｖｔｈに変化するときに要する時間をソースドレイン電流による充電時間によって求める。
【００５９】
[数２]
0005569237.tif 000003
次に、図１４の点Ｂから点Ｃまで動作点が移動する時間ｔＢＣは、以下のように求めることができる。ｔＢＣは、非飽和領域にあるのでドレイン電流Ｉｄｓは数３となる。
【００６０】
[数３]
0005569237.tif 000004
このドレイン電流Ｉｄｓは、出力電圧Ｖｄｓに依存する。
ここで電流の時間積分は電荷量であることから数４の関係がある。ここで、ｄｔは、時間の変化量、ｄＶｄｓは出力電圧の変化量である。
【００６１】
［数４］
Ｉｄｓ・ｄｔ＝−Ｃ・ｄＶｄｓ
さらに、数３のＩｄｓを数４に代入し、出力電圧Ｖｄｓを含む因子を右辺に移動すると、数５が得られる。
【００６２】
[数５]
0005569237.tif 000005
数５の左辺を時間０からｔＢＣまで積分するとともに、右辺をＶＧＳ−Ｖｔｈから１／２Ｖｇｓまで積分してｔＢＣについて整理すると、数６が得られる。
【００６３】
[数６]
0005569237.tif 000006
そして、立ち下がりの遅延時間のうち、動作点Ａから動作点Ｃまでの遷移の時間ｔＡＣは、数７で求めることができる。
【００６４】
［数７］
ｔＡＣ＝ｔＡＢ＋ｔＢＣ
以上の式を用いて、図１１、あるいは、図１３の回路の遅延時間算出例を説明する。いまＶＤＤ＝１．８ｖと仮定し、出力間電圧Ｖｄｓを１．８ｖから０ｖまで、例えば０．１ｖ刻みで変化させる。このとき、それぞれの出力電圧Ｖｄｓに対応する出力電流は、飽和領域では数１、非飽和領域では、数３で求めることができる。
【００６５】
今、ドレインソース電圧Ｖｄｓを１．８ｖから０ｖの間で、０．１ｖ刻みに変化させ、ドレイン電流Ｉｄｓの変化を数１から数７にしたがって算出する。例えば、トランジスタの特性として、閾値Ｖｔｈ＝０．３６ｖとして、Ｖｇｓ＝１．８の場合には、図１４のＢ点においてＶｄｓ＝１．８−０．３６＝１．４４である。また、Ｖｄｓが、Ｖｇｓ／２＝０．９ｖとなる動作点がＣ点である。
【００６６】
そこで、Ｖｄｓが１．８ｖから１．５ｖまでは飽和領域の数１を用い、Ｖｄｓが１．４以下では、非飽和領域の数３を用いて出力電流Ｉｄｓを算出すればよい。また、数２によって飽和領域でのｔＡＢを求め、数６によって非飽和領域でのｔＢＣを求める。例えば、ｔＡＢ＝３．２８ｐｓ、ｔＢＣ＝５．１７ｐｓのようになる。
【００６７】
さらに、例えば、時間軸の分解能として、例えば、１ｐｓを設定する。すると、ｔＡＢ＝３ｐｓ、ｔＢＣ＝５ｐｓのように丸めることができる。すると、例えば、Ｖｄｓが１．８ｖから１．５ｖまでが飽和領域、Ｖｄｓが１．５ｖ未満のとき非飽和領域と考えることができる。
【００６８】
そして、Ｖｄｓと、Ｉｄｓとの関係を単位時間（１ｐｓ）刻みの時間変化にマッピングする。この場合、飽和領域は、ｔＡＢ＝３ｐｓであり、４ｐｓ以降の時間は、非飽和領域である。そこで、Ｖｄｓが１．８ｖから１．５ｖの変化を時間軸で０秒から３ｐｓまでの変化とする。また、非飽和領域のうち、図１４の動作点ＢからＣへ変化する時間は、ｔＢＣ＝５ｐｓである。そこで、Ｖｄｓが１．５ｖから０．９ｖの変化を時間軸で３ｐｓから８ｐｓまでの変化とする。また、Ｖｄｓが０．８ｖ以下の変化は、同様に、図１４の動作点Ｃから、動作点Ｄまでの時間をｔＣＤとして、上記と同様に計算できる。すなわち、数５の左辺を時間０からｔＣＤまで積分するとともに、右辺を１／２Ｖｇｓ＝０．９ｖから０まで積分すればよい。ただし、図１４でＣ点から原点Ｄまでの区間の計算は、１回の計算で求めてもよいし、複数区間に分割して、動作点の遷移を計算してもよい。
【００６９】
以上のような手順により、設計支援装置１０は、主記憶装置１２上に、電流テーブルを作成する。図１５に、電流テーブルの構成を例示する。図１５に示す表の各行が電流テーブルの１レコードを示している。図１５で、第１行目は説明である。図１５のように、電流テーブルのレコードは、時間（時刻ともいう）、入力電圧、出力電流、出力電圧の各要素を有する。したがって、電流テーブルのレコードは、単位時間（１ｐｓ）刻みのそれぞれの時刻に対して、作成される。以上の手順で作成した電流テーブルでのＶｄｓの変化を時間軸にマッピングすると、時間軸とＩｄｓとの関係は、図１６のようにプロットできる
。図１６は、横軸を時間とし、縦軸をＩｄｓとし、以上の計算結果をプロットした図である。
【００７０】
さらに、入力信号として、所定の立ち上がり時間（Ｔｒ）および立ち下がり時間（Ｔｆ）の矩形波が入力されたときのトランジスタの遅延時間を算定する。トランジスタは、入力信号レベルに応じて、トランジスタの電流駆動能力が変化し、したがって、トランジスタの遅延時間も変化する。したがって、トランジスタの遅延時間は、以下の３つに分けて考えることができる。
（１）入力信号レベルの変化に伴い、トランジスタが十分な電流駆動能力を有する状態に達するまでの遅延時間。
（２）トランジスタのドレインゲート間容量等の素子内の容量Ｃによる遅延時間。
（３）トランジスタの出力に接続される金属配線部分の抵抗および容量による遅延時間。
【００７１】
このうち、トランジスタへの入力パルスの立ち上がり時間および立ち下がり時間が遅延時間のばらつきに影響する程度は、例えば、製造ばらつき等に比較すると小さい。そこで、実施例２では、入力信号の立ち上がり時間および立ち下がり時間に依存するトランジスタの遅延時間を簡略的に固定値として取り扱う。ここでは、入力電圧Ｖｉｎは、ランプ入力と仮定する。そして、例えば、立ち上がり時間ｔｆを決定する条件として、入力電圧ＶｉｎがＬＯ（例えば、０ｖ）からＨＩ（例えば、１．８ｖ）になるまでの時間を例えば１００ｐｓと仮定する。このような入力電圧についての立ち上がり時間あるいは立ち下がり時間の条件を入力ｓｌｅｗという。そして、実施例２では、このような入力電圧の立ち上がり時間に依存したトランジスタの電流駆動能力の変化に伴う遅延時間を固定値（例えば、２０ｐｓ）であると仮定する。固定値としては、経験値、実験値、シミュレーションから得られた値等を用いればよい。
【００７２】
また、入力電圧の立ち上がり時間経過後は、例えば、Ｐ型トランジスタは遮断し、Ｎ型トランジスタは、飽和状態になる。さらに、実施例２では、図１１のＰ型トランジスタとＮ型トランジスタの特性は対称性を持ちものと仮定したので、Ｐ型トランジスタが飽和状態から非飽和状態に遷移するときのトランジスタの特性の変化は、Ｎ型トランジスタが非飽和状態から飽和状態に変化するときの特性の変化と対称になる。したがって、実施例２では、トランジスタの種類に言及することなく、単にトランジスタが飽和状態から非飽和状態になる場合の遅延時間について検討する。
【００７３】
すると、図１５の電流テーブルの最初のレコード（時刻０のレコード）、あるいは図１６のＩｄｓの時間変化の前に、入力電圧の立ち上がり時間に伴う遅延時間の間、例えば、２０ｐｓだけＩｄｓが変化しない期間が追加される。
【００７４】
さらに、図１１に示した金属配線部分（点線部分）について、例えば、抵抗ＲＬ＝５０オーム、容量ＣＬ＝０．１ｐＦと仮定すると、金属配線部分の遅延時間ｔａｕ＝５ｐｓと算出できる。
【００７５】
図１７は、入力電圧Ｖｉｎに対して、図１１のＣＭＯＳ回路のＶｄｓ＠ｎｏｎＲＣおよびＶｄｓ＠ＲＣの変化をプロットした図である。Ｖｄｓ＠ｎｏｎＲＣおよびＶｄｓ＠ＲＣは、図１１の回路図に示した位置の電圧に相当する。図１７で横軸が時間、縦軸は、それぞれの電圧である。また、図１７で、三角形のマークが、入力電圧Ｖｉｎを、菱形のマークがＶｄｓ＠ｎｏｎＲＣを、矩形のマークがＶｄｓ＠ＲＣを表す。
【００７６】
さらに、図１７で、例えば、遅延時間判定を判定する判定電圧として、Ｖｉｎ＝Ｖｄｓ＠ｎｏｎＲＣ＝Ｖｄｓ＠ＲＣ＝ＶＤＤ／２＝０．９ｖを設定する。なお、判定電圧が信号レベルに相当する。すると、縦軸の電圧＝０．９ｖの線がＶｉｎと交差する点から、縦軸
の電圧＝０．９ｖの線がＶｄｓ＠ｎｏｎＲＣと交差する点までの時間によって、ＣＭＯＳ部分の遅延時間を算出できる。また、縦軸の電圧＝０．９ｖの線がＶｉｎと交差する点から、縦軸の電圧＝０．９ｖの線がＶｄｓ＠ＲＣと交差する点までの時間によって、ＣＭＯＳ部分と金属配線とを含む回路の遅延時間を算出できる。
【００７７】
さらに、集積回路の物理特性情報、例えば、半導体基板中のキャリアの移動度μ０、単位面積当たりのゲート容量Ｃｏｘ（また、酸化膜の比誘電率と膜厚）、ゲート幅Ｗ、ゲート長Ｌ、トランジスタの閾値電圧Ｖｔｈ、トランジスタのドレインゲート間容量を含むトランジスタの容量Ｃ、金属配線の抵抗ＲＬ、容量ＣＬ等が製造ばらつき等に起因して、所定範囲でランダムに変化する場合を想定する。すると、数１、数３から明らかなように、Ｉｄｓの値は変動し、したがって、数２，数４から明らかなように、ｔＡＢ、ｔＢＣ、ｔＣＤ等も変化する。したがって、上記集積回路の物理特性情報を所定の範囲でランダムに変化させることで、製造ばらつきを考慮した集積回路の遅延時間のばらつきを求めることができる。なお、物理特性情報をランダムに変化させる所定の範囲は、実験的、経験的に決定すればよい。また、この範囲は、実験的、経験的に決定されたデフォルト値に対して、ユーザ指定にしたがって、変更できるようにすればよい。
【００７８】
＜遅延時間算出例２＞
図１８−図２１は、算出されたパス遅延時間をヒストグラムに示した例である。図１８は、ほぼ正規分布に近い遅延時間の分布例である。図１８で、横軸がパスの遅延時間であり、縦軸が分布数である。また、例えば、図１８において、３σで示す２つの縦線の位置が標準偏差の３倍（３シグマ）の位置である。したがって、例えば、ＳＴＡを実行するときのパス遅延時間のチェック値として、図２４で示す３σで示す位置よりも、外側（周辺側）の位置に、チェック値を設定することで、分布の３σの範囲（分布の９９．７パーセント）の確率でエラーなしとなるチェック値を選択できる。すなわち、ＭＳＴＡの結果得られたパス遅延時間の分布から、エラーの確率をユーザの所望値になるように、ＳＴＡのチェック値を選択できる。
【００７９】
図１９は、遅延時間の分布が２つの正規分布の組み合わせとなっている例を示す。例えば、遅延時間計算の対象となるパス上に、種類の異なるトランジスタ、バッファなどが存在する場合に、遅延時間の分布が複数の正規分布の組み合わせとなる。種類の異なるトランジスタとは、例えば、ゲート長Ｌなどの物理特性情報が異なるトランジスタをいう。
【００８０】
図２０は、試行回数、すなわち、モンテカルロのサンプル数が少ない場合の遅延時間分布の例である。実施例２の設計支援装置１０によれば、サンプル数が少ない場合でも遅延時間の分布の傾向を把握できる。
【００８１】
図２１は、Ｐ型トランジスタと、Ｎ型トランジスタとで、特性の異なるセルがある場合の遅延時間分布の例である。図２１の例では、ピーク位置が、設計目標の遅延時間４００ｐｓからずれた位置に存在する。
【００８２】
＜処理フロー＞
図２２Ａおよび図２２Ｂは、実施例２に係る設計支援装置１０の処理のフローチャートの例である。設計支援装置１０のＣＰＵ１１は、主記憶装置１２に実行可能に展開されたコンピュータプログラムを実行し、図２２Ａ、図２２Ｂの処理を提供する。なお、図２２Ａと図２２Ｂとの間は、符号Ａ，Ｂ，Ｃの箇所で接続される。
【００８３】
設計支援装置１０は、ＲＴＬ（レジスタ・トランスファ・レベル）の設計データを入力され、回路合成を実行する（Ｓ１０１）。ＲＴＬで記述されたハードウェア回路の設計データは、論理合成と呼ばれる機能を提供するツールによって、ゲートレベルのネットリス
トに変換される。なお、図示しないが、ネットリストから一旦レイアウトデータが作成される。そして、レイアウトデータから、配線ＲＣ情報などが決定される。
【００８４】
実施例２の設計支援装置１０は、合成されたネットリストの他、設計対象の集積回路に入力される入力信号の立ち上がりと立ち下がりの制約条件（slew）、設計対象の集積回路の出力側の金属配線層および次段の素子の入力インピーダンスを含めた容量の制約条件（Cap）、バリエーションパラメータ、配線ＲＣ情報、セルライブライブラリ、遅延時間を
決定するときの判定値等を、例えば、外部記憶装置１３のデータベースから主記憶装置１２上に読み出す（Ｓ１０２）。
【００８５】
ここで、制約条件（slew）は、設計対象の集積回路に対して、外部回路と接続時の条件、すなわち、入力ｓｌｅｗを指定する。制約条件（slew）は、例えば、ランプ入力の波形で指定される。
【００８６】
一方、制約条件（Cap）は、次段の容量に係る制約条件を指定する。なお、制約条件（slew）を記憶する外部記憶装置１３あるいは主記憶装置１２が、入力信号条件記憶部に相
当する。
【００８７】
バリエーションパラメータは、物理特性情報をどの範囲でばらつかせるかを指定する値である。バリエーションパラメータは、セルライブラリに含まれるそれぞれのセルのトランジスタの物理特性情報、あるいは、金属配線の物理特性情報（抵抗ＲＬおよび容量ＣＬなど）に適用される。その結果、設計支援装置１０は、バリエーションパラメータの範囲でトランジスタの物理特性情報、あるいは、金属配線の物理特性情報を変動させる。
【００８８】
なお、バリエーションパラメータは、それぞれの物理特性情報ごとに異なる値としてもよいし、複数の物理特性情報に共通の値としてもよい。また、ＭＳＴＡの１回の処理を通じて、すべての物理特性情報に共通のバリエーションパラメータを設定してもよい。
【００８９】
配線ＲＣ情報は、集積回路内のそれぞれの部分の金属配線層の抵抗値（ＲＬ）と容量（ＣＬ）を含む。さらに、図２２Ａの判定値は、信号レベル判定値ともいい、遅延時間を決定するときの判定値である。この判定値は、例えば、図１７の縦軸にＶＤＤ／２で示したように、遅延時間を判定するときの信号レベルを指定する。
【００９０】
次に、設計支援装置１０は、遅延計算対象のセルを選択する（Ｓ１０３）。そして、設計支援装置１０は、遅延計算対象のセルが入力セルか否かを判定する（Ｓ１０４）。ここで、入力セルとは、外部から入力信号を受けるセルをいい、入力信号について、制約条件（slew）が課せられるセルをいう。設計支援装置１０のＣＰＵ１１は、入力素子か否かを判定する第１判定部として、Ｓ１０４の処理を実行する。
【００９１】
遅延計算対象のセルが入力セルの場合、設計支援装置１０は、制約条件（slew）を用いて、入力信号波形を設定する（Ｓ１０５）。一方、遅延計算対象のセルが入力セルでない場合、設計支援装置１０は、前段セルの出力信号の信号波形を用いて、入力信号波形を設定する。出力信号の信号波形を出力ｓｌｅｗという。
【００９２】
次に、設計支援装置１０は、遅延計算対象のセルが出力セルか否かを判定する（Ｓ１０７）。ここで、出力セルとは、外部に出力信号を出力するセルをいい、出力側の回路に制約条件（Cap）が課せられるセルをいう。
【００９３】
遅延計算対象のセルが出力セルの場合、設計支援装置１０は、制約条件（Cap）を用い
て、遅延時間を算出する（Ｓ１０８）。一方、遅延計算対象のセルが出力セルでない場合
、設計支援装置１０は、配線ＲＣ情報を用いて、金属配線の遅延時間を算出する（Ｓ１０９）。なお、配線ＲＣ情報を所定の範囲で変動させ、金属配線の遅延時間としてばらつきのある値を発生させてもよい。
【００９４】
次に、設計支援装置１０は、バリエーションパラメータの範囲で、指定された試行回数ｎ回、トランジスタの物理特性情報を発生させる。そして、発生させた物理特性情報にしたがって、数１〜数６にしたがって、電流値、および動作点の移動時間を算出し、電流テーブルを作成する（Ｓ１１０）。以上の処理によって、試行回数ｎに対応する電流テーブルが作成される。
【００９５】
そして、設計支援装置１０は、セルの出力信号波形（出力slew）を作成する（Ｓ１１１）。Ｓ１１１の処理も試行回数ｎ回繰り返される。したがって、試行回数ｎに対応する個数の出力信号波形（出力slew）が生成される。なお、図２２Ａ、図２２Ｂにおいて、試行回数ｎ回で示した矢印は、上記Ｓ１１０とＳ１１１の処理の繰り返し実行を示している。
【００９６】
次に、設計支援装置１０は、遅延計算対象のセルについて、セル遅延計算を実行する（Ｓ１１２）。セル遅延計算は、図１８に示したように、遅延時間を決定するときの判定値における、入力信号（例えば、図１８のＶｉｎ）と、出力信号（Ｖｄｓ＠ＲＣ）との間の時間差を算出する処理である。セル遅延計算の結果、試行回数ｎ回に対応する個数のセル遅延時間が算出される。
【００９７】
設計支援装置１０のＣＰＵ１１は、主記憶装置１２に実行可能に展開されたコンピュータプログラムを実行し、素子遅延算出部として、Ｓ１１０およびＳ１１２の処理を実行する。
【００９８】
次に、設計支援装置１０は、パス内の全セルについて、遅延計算を行ったか否かを判定する（Ｓ１１３）。パス内の全セルについて、遅延計算を行っていない場合、設計支援装置１０は、制御をＳ１０３に戻す。
【００９９】
一方、パス内の全セルについて、遅延計算を行った場合、設計支援装置１０は、パス遅延計算を実行する（Ｓ１１４）。セル遅延計算の結果は、ＳＤＦ（Standard Delay Format）という形式で、試行回数ｎ回に対応する個数算出される。なお、Ｓ１１４において、
パス内の複数セルの遅延時間からパス遅延時間を算出する場合、例えば、それぞれのセルの同一試行回数に相当する遅延時間を加算して、パス遅延時間が算出される。例えば、試行回数１回目について、パス内の各セルの遅延時間が加算され、試行回数１回目について、パス遅延時間が算出される。２回目以降も同様である。設計支援装置１０のＣＰＵ１１は、主記憶装置１２に実行可能に展開されたコンピュータプログラムを実行し、伝搬時間算出部として、Ｓ１１４の処理を実行する。
【０１００】
次に、設計支援装置１０は、試行回数ｎ回分のパス遅延時間（ＳＤＦ）について、ＳＴＡを繰り返し実行する（Ｓ１１５、Ｓ１１６）。ＳＴＡの結果は、タイミングレポートファイルに記録される。さらに、設計支援装置１０は、試行回数ｎ回分のパス遅延時間（ＳＤＦ）から、ヒストグラム等の遅延時間分布を示す表示データを作成し、表示装置１４に表示する。
【０１０１】
図２３は、電流テーブルを作成する処理（図２２ＡのＳ１１０の詳細）の詳細を例示するフローチャートである。この処理では、設計支援装置１０は、トランジスタの物理特性情報を所定のばらつきの範囲で発生させる（Ｓ１１００）。設計支援装置１０のＣＰＵ１１は、物理特性値発生部として、図２３のＳ１１００の処理を実行する。
【０１０２】
次に、設計支援装置１０は、飽和の動作点Ａから、非飽和の動作点Ｂへの遷移時間ｔＡＢを計算する（Ｓ１１０１）。Ｓ１１０１では、設計支援装置１０は、数２の計算を実行すればよい。設計支援装置１０のＣＰＵ１１は、第１の算出部として、主記憶装置１２に実行可能に展開されたコンピュータプログラムを実行し、Ｓ１１０１の処理を実行する。
【０１０３】
次に、設計支援装置１０は、非飽和の動作点Ｂから非飽和の動作点Ｃへの遷移時間ｔＢＣを計算する（Ｓ１１０２）。Ｓ１１０２では、設計支援装置１０は、数６を実行すればよい。ただし、数６の計算は、実際には、数５の積分計算となる。そこで、設計支援装置１０は、Ｖｄｓを変化させたときのＩｄｓの値を算出しておけばよい。そして、設計支援装置１０は、単位時間、例えば１ｐｓ刻みで、Ｖｄｓを変化させ、逐次加算することで積分計算を実行すればよい。
【０１０４】
さらに、設計支援装置１０は、非飽和の動作点Ｃから、ドレイン電流＝０となる動作点までの間のドレイン電流Ｉｄｓと、ドレインソース電圧Ｖｄｓの時間軸に対する遷移を算出する（Ｓ１１０３）。この処理は、Ｓ１１０２と同様、数５の式において、Ｖｄｓを変化させたときのＩｄｓの値を順次算出する処理である。この場合の積分計算の手順は、図１４により説明した手順と同様である。設計支援装置１０のＣＰＵ１１は、第２の算出部として、主記憶装置１２に実行可能に展開されたコンピュータプログラムを実行し、Ｓ１１０２およびＳ１１０３の処理を実行する。
【０１０５】
設計支援装置１０は、Ｓ１１０１−Ｓ１１０３の処理によって、トランジスタの遅延時間に影響の大きい、飽和領域と非飽和領域との間の状態の時間変化を簡易に算出することができる。したがって、例えば、ＳＰＩＣＥシミュレーションのような厳格な微分方程式の解析を行わなくても、トランジスタの遅延時間に影響の大きい現象を反映した遅延時間計算が可能となる。
【０１０６】
次に、設計支援装置１０は、時間軸に対して、ドレイン電流Ｉｄｓ、ドレインソース電圧Ｖｄｓを対応付ける（Ｓ１１０４）。さらに、設計支援装置１０は、入力信号の変化に伴う遅延時間に対応するレコードを電流テーブルに追加する（Ｓ１１０５）。入力信号の変化に伴う遅延時間は、入力slewに対応する遅延時間または前段のトランジスタの出力slewに対応する遅延時間に該当する。このうち、入力slewに対応する遅延時間図２２ＡのＳ１０４−Ｓ１０５の処理で設定されている。また、前段のトランジスタの出力slewに対応する遅延時間は、Ｓ１０４とＳ１０６の処理によって設定されている。設計支援装置１０のＣＰＵ１１は、入力依存追加部として、図２２ＡのＳ１０４−Ｓ１０６および図２３のＳ１１０５の処理を実行する。Ｓ１１０５の処理によって、入力信号の立ち上がり時間、あるいは、立ち下がり時間の影響を簡易に反映することができる。
【０１０７】
さらに、設計支援装置１０は、制約条件（Cap）または負荷ＲＣに対応する遅延時間を
付加する（Ｓ１１０６）。負荷ＲＣの遅延時間としては、図２２ＡのＳ１０７−Ｓ１０９の処理により、制約条件（Cap）または、配線ＲＣ情報に対応する遅延時間が算出されて
いる。したがって、トランジスタが、集積回路で、制約条件（Cap）を課されるトランジ
スタと、課されないトランジスタとを区別して、遅延時間を算出できる。また、制約条件（Cap）を課されない場合には、次段セルの配線ＲＣを用いて、精度よく、かつ、簡潔に
遅延時間を算出できる。
【０１０８】
以上述べたように、実施例２の設計支援装置１０によれば、集積回路内のパスの遅延計算を行う場合に、パスに含まれるトランジスタ等の素子の特性、あるいは、金属配線層の物理特性情報をバリエーションパラメータの範囲で、試行回数ｎ回変動させて、遅延時間のばらつきを発生させる。バリエーションパラメータは、例えば、製造工程のばらつき等の経験値を基に決定すればよい。製造工程のばらつき等の経験値をデフォルト値として、
ユーザの指定にしたがって、バリエーションパラメータを変更できるようにしてもよい。
【０１０９】
したがって、集積回路の設計段階で、集積回路のそれぞれのパスについて遅延時間計算を行い、ＳＴＡを実行する場合に、物理特性情報のばらつきを反映した遅延時間を算出できる。その結果、物理特性情報のばらつきに対応した遅延時間のばらつきを求めることができる。したがって、設計者は、遅延時間のばらつきの状況、ばらつきの分布を基に、ＳＴＡでエラー判定となる遅延時間のチェック値を設定すればよい。例えば、遅延時間のばらつきの状況、ばらつきの分布から、エラー回数をｐ回未満とするために、遅延時間のチェック値をいくらに設定すればよいか、という判断ができる。
【０１１０】
従来、ＳＴＡでエラー判定となる遅延時間のチェック値が厳しいすぎる場合の緩和措置として、ＳＳＴＡが適用された。ＳＳＴＡでは、分布を持つ統計量として各素子の遅延時間を扱い、統計的に許容できるエラー回数の範囲まで遅延時間のチェック値を緩和する手法が採用された。
【０１１１】
しかし、実施例２の設計支援装置１０によれば、物理特性情報のばらつきを求め、数１〜数６の電流Ｉｄｓの式にしたがって、集積回路内のパスの遅延時間のばらつきを算出する。したがって、統計的な取り扱いをするＳＳＴＡと比較して、対象回路内での物理特性情報のばらつきの影響をパス遅延時間に反映でき、ＳＳＴＡよりも正確にタイミング解析が可能となる。
【０１１２】
また、実施例２の設計支援装置１０は、数１〜数６の式にしたがって、まず、トランジスタが飽和状態か非飽和状態かに応じて、簡易に算出可能な出力電流値（ドレイン電流Ｉｄｓ）と飽和状態から非飽和状態への遷移時間を求める。さらに、設計支援装置１０は、出力電流値から出力電圧値を求め、入力電圧と出力電圧との関係から、遅延時間を求める。さらに、設計支援装置１０は、数１〜数６のような近似関数への数値（ドレイン電圧Ｖｄｓ）の代入によって、解析可能なドレイン電流の式を用い、遷移時間を算出し、遷移時間にしたがって、ドレインソース間電圧の遷移時間を求める。また、遅延時間に占める割合が小さい、入力電圧の立ち上がり、立ち下がりに伴う遅延時間としては、固定値を適用する。したがって、例えば、素子の微分方程式によって遅延時間を求めるＳＰＩＣＥシミュレーションと比較して、極めて少なく計算量で、トランジスタの状態遷移に応じた遅延時間を求めることができる。以上のような構成と計算手順を採ったため、複数の試行回数ｎに対して、集積回路の物理特性情報を所定範囲でランダムに変化させても、計算量は、数１〜数６の計算量と試行回数ｎとの積に比例する程度にしか増大しない。
【０１１３】
さらに、集積回路の物理特性情報として、例えば、半導体基板中のキャリアの移動度μ０、単位面積当たりのゲート容量Ｃｏｘ（また、酸化膜の比誘電率と膜厚）、ゲート幅Ｗ、ゲート長Ｌ、トランジスタの閾値電圧Ｖｔｈ、トランジスタのドレインゲート間容量を含むトランジスタの容量Ｃ、金属配線の抵抗ＲＬ、容量ＣＬ等を用いることで、製造ばらつきを反映した解析が可能となる。
【０１１４】
したがって、例えば、過去に蓄積した製造上の集積回路の物理特性情報のばらつきの経験値を有すれば、実施例２の設計支援装置１０は、実際の集積回路の試作前、設計段階で、遅延時間の解析を行い、ＳＴＡを実行するとともに、遅延時間のばらつきを推定した上で、例えば、ＳＴＡのチェック値を決定できる。
【０１１５】
＜出力ｓｌｅｗの計算処理例＞
図２２Ａ、図２２Ｂに示したように、設計支援装置１０では、遅延計算対象のパスに含まれるセルのうち、パス内のセルの出力信号の立ち上がり特性、あるいは立ち下がり特性（出力slew）が、次段のセルの入力信号の立ち上がり特性、あるいは立ち下がり特性（入
力slew）となる。以下、図２４から図２８を参照して、セルの出力信号の立ち上がり特性、あるいは立ち下がり特性（出力slew）を決定する処理の詳細を説明する。
【０１１６】
図２４から図２８は、セルの出力信号波形（出力slew）を作成する処理（図２２ＢのＳ１１１）の詳細を例示する図である。図２４は、図２２ＡのＳ１１０の処理で得られる電流テーブルを基に、時間を横軸として出力電圧Ｖｄｓを縦軸としてプロットした図である。設計支援装置１０は、例えば、ユーザによる操作部１５からの入力操作を受け付け、出力信号波形を決定する決定区間を受け付ける。図２４の例では、電源電圧ＶＤＤに対して、２０％〜８０％の範囲でＶｄｓが遷移する区間を出力信号波形の傾きを決定する傾き決定区間としている。なお、出力信号波形の傾きを決定する区間のデフォルト値を予めパラメータファイル等に設定しておいてもよい。なお、図２４でＶＳＳは、ソースに接続される電源電圧を示し、ＶＤＤは、ドレインに接続される電源電圧を示す。実施例２の説明では、特に明示しない限り、ＶＳＳ＝０であり、ＶＤＤが電源電圧であるとする。
【０１１７】
次に、設計支援装置１０は、上記傾き決定区間を複数の区間に分割する。図２５は、例えば、傾き決定区間を４分割した例を示している。以下、決定区間が分割された区間を分割区間という。このように、設計支援装置１０は、出力信号波形を決定する決定区間を分割する分割数をユーザによる操作部１５からの入力操作で受け付けてもよい。また、分割数のデフォルト値を予めパラメータファイル等に設定しておいてもよい。
【０１１８】
次に、設計支援装置１０は、それぞれの分割区間における出力信号波形を線形近似し、それぞれの区間での立ち下がり時間を求める。また、決定区間全体での立ち下がり時間を求める。決定区間全体での立ち下がり時間をそれぞれの分割区間に換算した立ち下がり時間を求める。
【０１１９】
例えば、図２５の例では、電源電圧ＶＤＤの８０％〜２０％の間が決定区間であり、分割区間は、それぞれ、ＶＤＤの８０％〜６５％、６５％〜５０％、５０％〜３５％、３５％〜２０％である。そこで、決定区間全体の立ち下がり時間がＴｓｏｕｔとすると、Ｔｓｏｕｔをそれぞれの区間に換算した立ち下がり時間Ｔｓｏは、Ｔｓｏ＝Ｔｓｏｕｔ／４として決定される。
【０１２０】
次に、設計支援装置１０は、それぞれの分割区間において、算出された立ち下がり時間が、決定区間全体のたち下がり時間と比較して、許容の差分値の範囲にあるか否かを判定する。すなわち、各分割区間で出力信号の傾きが、決定区間全体の傾きから許容値以上に乖離していないか否かを判定する。
【０１２１】
図２６は、決定区間全体の出力信号波形と、各分割区間の出力信号波形を比較する図である。図２６で実線のグラフが、決定区間全体の傾きによる直線を示し、波線がそれぞれの分割区間の傾きによる直線を示す。図２６で、例えば、ＶＤＤの８０％〜６５％の区間では、立ち下がり時間は、Ｔｓｏ１である。また、ＶＤＤの６５％〜５０％の区間では、立ち下がり時間は、Ｔｓｏ２である。また、ＶＤＤの５０％〜３５％の区間では、立ち下がり時間は、Ｔｓｏ３である。また、ＶＤＤの３５％〜２０％の区間では、立ち下がり時間は、Ｔｓｏ４である。
【０１２２】
設計支援装置１０は、分割区間の立ち下がり時間Ｔｓｏ１、Ｔｓｏ２、Ｔｓｏ３、およびＴｓｏ４のいずれかと、決定区間全体の立ち下がり時間Ｔｓｏｕｔを分割区間に換算した立ち下がり時間Ｔｓｏとが許容値以上に乖離している場合、決定区間全体の立ち下がり時間Ｔｓｏｕｔを補正する。
【０１２３】
図２７は、電源電圧ＶＤＤの８０％〜６５％の区間の立ち下がり時間Ｔｓｏ１を基に、
決定区間全体の立ち下がり時間を補正する例である。図２７で実線のグラフが、決定区間全体の傾きによる直線を示し、波線が立ち下がり時間Ｔｓｏ１に対応する直線を示す。補正の基準となる分割区間は、例えば、ユーザ指定で選択してもよい。また、複数の分割区間の立ち下がり時間をソーティングしたときの中央値としてもよい。また、複数の分割区間の立ち下がり時間を収集し、ヒストグラムを作成したときに、分布のピークとなる立ち下がり時間の値としてもよい。なお、立ち上がり時間を補正する場合も、信号の変化の方向は逆になるが、基本的に処理手順は、立ち下がりの場合と同様である。
【０１２４】
図２８は、セル出力ｓｌｅｗ計算処理を例示するフローチャートである。この処理では、設計支援装置１０は、出力波形の決定区間を設定する（Ｓ１１１１）。出力波形の決定区間の指定は、例えば、出力電圧Ｖｄｓが電源電圧ＶＤＤの２０％−８０％の範囲等である。出力波形の決定区間は、設計支援装置１０がパラメータファイルに保持していてもよい。また、出力波形の決定区間は、設計支援装置１０がユーザ操作にしたがって設定値を受け付けてもよい。
【０１２５】
次に、設計支援装置１０は、出力波形の決定区間を分割する（Ｓ１１１２）。決定区間の分割は、例えば、設計支援装置１０がパラメータファイルの指定にしたがって、なされてよい。例えば、パラメータファイルに分割数と、分割境界値の指定が保持されていてもよい。また、パラメータファイルに分割数と、等分割指定が保持されていてもよい。また、分割数と、分割境界値とは、設計支援装置１０がユーザ操作にしたがって設定値を受け付けてもよい。
【０１２６】
次に、設計支援装置１０は、決定区間の波形の傾きと、各分割区間の波形の傾きとの乖離を算出する（Ｓ１１１３）。そして、設計支援装置１０は、乖離が許容値以内か、否かを判定する（Ｓ１１１４）。設計支援装置１０のＣＰＵ１１は、第２判定部として、主記憶装置１２に実行可能に展開されたコンピュータプログラムを実行し、Ｓ１１１４の処理を実行する。
【０１２７】
上記乖離が許容値を越えている場合、設計支援装置１０は、決定区間の波形の傾きを補正する（Ｓ１１１５）。出力波形の決定区間全体での波形の傾きが、個々の分割区間の波形の傾きを線形近似するのに適切でないと考えられるからである。設計支援装置１０のＣＰＵ１１は、補正部として、主記憶装置１２に実行可能に展開されたコンピュータプログラムを実行し、Ｓ１１５の処理を実行する。
【０１２８】
以上のように、設計支援装置１０は、出力波形の決定区間をユーザ指定、パラメータ指定等で設定する。さらに、設計支援装置１０は、出力波形の決定区間と、決定区間を分割した分割区間のそれぞれにおいて、波形の傾きに乖離があるか否かを判定する。さらに、出力波形の決定区間といずれかの分割区間との間で、出力波形の傾きに乖離があって、その乖離が許容値を超えている場合、設計支援装置１０は、出力波形の決定区間全体での波形の傾きを、いずれかの分割区間の傾きを基に補正する。
【０１２９】
このように、狭い分割区間の波形傾きを用いて、出力波形の決定区間全体での波形の傾きを補正することで、出力波形が変化していない区間の波形を基に、立ち下がり時間、立ち上がり時間を算出することによる誤差を抑制できる。例えば、出力波形がＨＩ（例えば、１．８ｖ）からＬＯ（例えば、０ｖ）に立ち下がる場合で、出力波形の決定区間の初期（時間軸で左側）に波形が平坦な部分が含まれている場合を考える。この場合に、出力波形の決定区間全体で、波形の傾きを算出すると、波形の傾きは本来よりも、平坦な部分が含まれている分だけ緩くなる。そこで、図２８の処理のように、いずれかの分割区間の傾きを基に、出力波形の傾きを補正することで、誤差を抑制できる。例えば、図２７では、ＶＤＤの８０％〜６５％の区間の立ち下がり時間Ｔｓｏ１を基に、決定区間全体の立ち下
がり時間Ｔｓｏｕｔが補正された。
【０１３０】
この場合の補正の基になる分割区間の選定は、ユーザ指定値、波形の傾きの中央値、波形の傾きの分布（ヒストグラム）を収集したうち、頻度の最も高い傾きなどを用いればよい。
【０１３１】
＜遅延時間算出のための信号レベル判定値がセルごとに異なる場合＞
上記実施例１、２では、パス上の複数のセル、あるいはトランジスタの遅延時間が同一であることを前提として処理がなされている。例えば、遅延時間を算出する信号レベル、すなわち、入力電圧と出力電圧が電源電圧ＶＤＤの１／２になるときの時間差を遅延時間として計算する。しかしながら、２つのセル、例えば、バッファＡとバッファＢとが、パス上で直列に接続されている場合で、バッファＡとバッファＢとで、遅延時間を算出する信号レベル判定値が異なる場合がある。図２９に、バッファＡとバッファＢとを直列に接続した回路を例示する。例えば、バッファＡが、高速タイプのトランジスタを含むセルで、バッファＢが低消費電力タイプのトランジスタを含む場合である。このように、セルのタイプが異なると、例えば、閾値電圧Ｖｔｈが相違する。そうすると、遅延時間を算出する信号レベル判定値、例えば、入力電圧Ｖｉｎあるいは出力電圧Ｖｄｓについて、遅延時間を算出する信号レベル判定値がセルライブラリごとに異なる場合がある。
【０１３２】
例えば、標準的には、遅延時間を算出する信号レベル判定値がＶＤＤの５０％であり、また、バッファＡについては、入力電圧Ｖｉｎ、出力電圧Ｖｄｓともに、信号レベル判定値がＶＤＤの４０％、一方、バッファＢについては、入力電圧ＶｉｎがＶＤＤの５０％、出力電圧ＶｄｓがＶＤＤの８０％の場合などである。
【０１３３】
今、図２９のように、バッファＡとバッファＢとが直列に接続されている場合で、バッファＡの入力電圧をＶ１、バッファＡの出力電圧でバッファＢの入力電圧をＶ２、バッファＢの出力電圧をＶ３とする。
【０１３４】
図３０に、遅延時間を算出する信号レベル判定値が、バッファＡとバッファＢとで相違する例を示す。例えば、バッファＡにおいて、出力電圧Ｖ２の信号レベル判定値が電源電圧ＶＤＤの５０％であり、一方、バッファＢにおいて、入力電圧Ｖ２の信号レベル判定値が電源電圧ＶＤＤの４０％であるような場合である。このような場合、同一の信号レベル判定値で遅延時間の計算を行う場合と異なり、信号レベル判定値の違いによる遅延時間の誤差が生じる。
【０１３５】
そこで、設計支援装置１０は、前段セルの出力電圧の信号レベル判定値を用いる代わりに、後段セルの入力電圧の信号レベル判定値を用いる。そして、例えば、前段セルの出力電圧信号レベル判定値が後段セルの入力電圧の信号レベル判定値より高い場合で、出力信号が立ち下がりの場合には、設計支援装置１０は、前段セルの出力電圧信号レベル判定値が後段セルの入力電圧の信号レベル判定値に達するまでの遷移時間を算出する。そして、設計支援装置１０は、この遷移時間分をパス遅延時間に加算する。遷移時間は、例えば、出力波形の傾きから算出すればよい。この場合の出力波形の傾きは、図２８の処理にしたがって、補正した後の出力波形の傾きを用いればよい。図３１は、遅延時間を算出する信号レベル判定値が異なる２つバッファ（バッファＡとバッファＢ）で信号レベル判定値を補正した例を示す図である。
【０１３６】
図３２に、信号レベル判定値補正処理の手順を例示する。設計支援装置１０は、まず、遅延時間を計算する対象パス上の対象セルと、次段セルとの間で、遅延時間算出のための信号レベルの判定値を比較する（Ｓ１２０）。それぞれのセルの遅延時間算出のための信号レベルの判定値は、例えば、図２２Ａのセルライブラリに格納されている。
【０１３７】
そして、遅延時間を計算する対象パス上の対象セルと、次段セルとの間で、信号レベルの判定値に差異がある場合、次に、設計支援装置１０は、信号レベルの判定値の差異が、レベルの隙間か否かを判定する（Ｓ１２２）。隙間とは、波形の変化の方向に対して、対象セルの信号レベルの判定値が、次段セルの信号レベルの判定値に達していない場合をいう。例えば、立ち下がり波形の場合に、対象セルの信号レベルの判定値よりも、次段セルの信号レベルの判定値の方が低い値の場合をいう。逆に、立ち上がり波形の場合に、対象セルの信号レベルの判定値よりも、次段セルの信号レベルの判定値の方が高い値の場合をいう。
【０１３８】
Ｓ１２２で、隙間ありと判定された場合、設計支援装置１０は、対象セルの信号レベルの判定値に、次段セルの信号レベルの判定値を設定し、遅延時間の追加分を算出する（Ｓ１２３）。遅延時間の追加分は、例えば、遅延時間の追加分＝対象セルの信号レベルの判定値と次段セルの信号レベルの判定値との差分値ｄ／傾きａで算出できる。
【０１３９】
また、Ｓ１２２で、隙間なしと判定された場合、逆に、遅延時間を計算する対象パス上の対象セルと、次段セルとの間で、信号レベルの判定値に重複（あるいはオーバーラン）がある場合に相当する。この場合、設計支援装置１０は、対象セルの信号レベルの判定値に、次段セルの信号レベルの判定値を設定し、遅延時間の削減分を算出する（Ｓ１２４）。対象セルの信号レベルの判定値に達する前にすでに、次段セルの信号レベルの判定値に達しているためである。遅延時間の削減分は、例えば、遅延時間の追加分＝対象セルの信号レベルの判定値と次段セルとの信号レベルの判定値の差分値ｄ／傾きａで算出できる。
【０１４０】
なお、単純に、補正値＝（次段セルの信号レベルの判定値−対象セルとの信号レベルの判定値）／傾きａを算出すると、隙間ありの場合に正の値、重複（あるいはオーバーラン）がある場合に負の値となる。そこで、Ｓ１２２−Ｓ１２４の処理をまとめて、上記補正値の式を算出することで、遅延時間を補正してもよい。設計支援装置１０のＣＰＵ１１は、基準設定部として、主記憶装置１２に実行可能に展開されたコンピュータプログラムを実行し、Ｓ１２２−Ｓ１２４の処理を実行する。
【０１４１】
以上の処理によって、図３１に示すように、前段セルの出力電圧の信号レベル判定値と、後段セルの出力電圧の信号レベル判定値とが一致する。さらに、前段セルの出力電圧の信号レベル判定値と、後段セルの出力電圧の信号レベル判定値との相違に依存した遅延時間をＭＳＴＡの解析対象パスの遅延時間に反映できる。
【０１４２】
＜タイミング解析の処理例＞
図３３に、タイミング解析結果の処理例を示す。図３３の例では、図２と同様のパスＰ１およびパス２を含む集積回路に対して、試行回数ｎ＝５０でＭＴＳＡが実行されている。
【０１４３】
図３３に示すように、ＭＳＴＡによるタイミング解析の結果、例えば、フリップフロップＦＦ２について、セットアップタイムの分布が収集され、ヒストグラムの形式に記述できる。また、セットアップアップタイムの値が小さいデータ区間から値が大きいデータ区間に向かって、分布を累積した累積グラフを記述できる。例えば、図３３では、矩形を結んだ折れ線が累積グラフである。
【０１４４】
ＭＳＴＡによれば、図３３のように、例えば、セットアップタイムの頻度と、累積値を収集できる。そこで、試行回数分のセットアップタイムの分布から、ユーザは、セットアップタイムの基準値に対して、物理特性がばらついた場合のエラー頻度を把握することができる。
【０１４５】
また、逆に、ユーザは、セットアップタイムの分布について、エラー頻度を与えられたときに、そのエラーの頻度となるように、セットアップタイムの基準値を決定できる。すなわち、ユーザは、設計中の集積回路について、ＭＳＴＡで得られた遅延時間の分布を基に、指定されたエラー頻度となるように、セットアップタイムの基準値を決定できる。例えば、ユーザが、図３２のパスＰ１とパスＰ２との間のセットアップタイムエラーとして、頻度５以下にしたい場合に、頻度５以下となるデータ区間２０に対応する位置に、ＳＴＡのチェック値を設定すればよい。
【０１４６】
＜その他の変形例＞
上記実施例１、２では、トランジスタの物理特性を変化させ、モデル式にしたがって、ばらつきを含む集積回路の遅延時間を算出する例を示した。しかし、実施例１の適用は、トランジスタに限定されるわけではない。すなわち、トランジスタ以外の素子についても、実施例１のモデル式、あるいは、実施例２の数１−数６のようなモデル式で、素子の動作を記述できれば、実施例１、２と同様の手順でＭＳＴＡを実行できる。
【０１４７】
上記実施例２では、主として、トランジスタが飽和から非飽和に遷移する場合を例に説明した。しかし、実施例２の処理は、トランジスタが飽和から非飽和に遷移する場合に限定されるわけではなく、トランジスタが非飽和から飽和に遷移する場合も、同様に適用できる。
【０１４８】
《コンピュータが読み取り可能な記録媒体》
コンピュータその他の機械、装置（以下、コンピュータ等）に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【０１４９】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ブルーレイディスク、ＤＡＴ、８ｍｍテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスクやＲＯＭ（リードオンリーメモリ）等がある。
【０１５０】
《その他》
本実施の形態は、以下の態様（付記という）も含む。一の付記に含まれる構成を他の付記の構成と組み合わせてもよい。
【０１５１】
（付記１）
複数の回路素子を含む対象経路の信号伝搬時間を変化させる物理特性値を所定の変動範囲で複数個発生させる物理特性値発生部と、
前記発生させたそれぞれの物理特性値にしたがって、前記回路素子を通る信号の遅延時間をそれぞれ算出する素子遅延算出部と、
前記信号の遅延時間を基に、前記対象経路の信号伝搬時間を算出する伝搬時間算出部と、を備える情報処理装置。（１、図７、図２２Ａ、図２２Ｂ）
【０１５２】
（付記２）
前記回路素子はトランジスタであり、
前記素子遅延算出部は、トランジスタの飽和領域におけるソースドレイン間の電流電圧
特性にしたがって信号の遅延時間を算出する第１の算出部と、トランジスタの非飽和領域におけるソースドレイン間の電流電圧特性にしたがって信号の遅延時間を算出する第２の算出部と、を備える付記１に記載の情報処理装置。（２、図２３）
【０１５３】
（付記３）
前記複数の回路素子を含む集積回路に外部から入力される入力信号の条件を規定した入力信号条件記憶部をさらに備え、
前記素子遅延算出部は、前記対象経路上のそれぞれの回路素子が前記入力信号を入力される入力素子か否かを判定する第１判定部と、前記入力素子については、前記入力信号に依存する遅延時間を前記信号伝搬時間に追加し、前記入力素子以外の回路素子については、前記対象経路上で入力側に接続される前段素子の出力信号に依存する遅延時間を追加する入力依存追加部と、を有する付記１または２に記載の情報処置装置。（３、図２２Ａ）
【０１５４】
（付記４）
前記出力信号が複数段階のそれぞれの値に達する時間を取得する区間取得部と、
前記それぞれの値と前記出力信号がそれぞれの値に達した時間との関係が線形近似可能な許容範囲にあるか否かを判定する第２判定部と、
前記関係が前記許容範囲にない前記関係を前記線形近似可能な許容範囲に補正する補正部と、をさらに備える付記１から３のいずれか１項に記載の情報処理装置。（４、図２４から図２８）
【０１５５】
（付記５）
前記信号伝搬時間が、入力信号と出力信号とが基準となる信号レベルに到達したときの時間差であり、前記対象経路の複数の回路素子に対して異なる信号レベルが指定されている場合に、前記対象経路上で接続される２つの回路素子間の信号レベルを整合させる基準設定部をさらに備える付記１から４のいずれか１項に記載の情報処理装置。（５、図２９から図３２）
【０１５６】
（付記６）
コンピュータに、
複数の回路素子を含む対象経路の信号伝搬時間を変化させる物理特性値を所定の変動範囲で複数個発生させる物理特性値発生ステップと、
前記発生させたそれぞれの物理特性値にしたがって、前記回路素子を通る信号の遅延時間をそれぞれ算出する素子遅延算出ステップと、
前記信号の遅延時間を基に、前記対象経路の信号伝搬時間を算出する伝搬時間算出ステップと、を実行させるプログラム。（６、図７、図２２Ａ、図２２Ｂ）
【０１５７】
（付記７）
前記回路素子はトランジスタであり、
前記素子遅延算出ステップは、トランジスタの飽和領域におけるソースドレイン間の電流電圧特性にしたがって信号の遅延時間を算出する第１の算出ステップと、トランジスタの非飽和領域におけるソースドレイン間の電流電圧特性にしたがって信号の遅延時間を算出する第２の算出ステップと、を含む付記６に記載のプログラム。（図２３）
【０１５８】
（付記８）
前記コンピュータに、前記複数の回路素子を含む集積回路に外部から入力される入力信号の条件を記憶手段から読み出すステップをさらに実行させ、
前記素子遅延算出ステップは、前記対象経路上のそれぞれの回路素子が前記入力信号を入力される入力素子か否かを判定するステップと、前記入力素子については、前記入力信号に依存する遅延時間を前記信号伝搬時間に追加し、前記入力素子以外の回路素子につい
ては、前記対象経路上で入力側に接続される前段素子の出力信号に依存する遅延時間を追加するステップと、を含む付記６または７に記載のプログラム。（図２２Ａ）
【０１５９】
（付記９）
前記出力信号が複数段階のそれぞれの値に達する時間を取得する区間取得ステップと、
前記それぞれの値と前記出力信号がそれぞれの値に達した時間との関係が線形近似可能な許容範囲にあるか否かを判定する判定ステップと、
前記関係が前記許容範囲にない前記関係を前記線形近似可能な許容範囲に補正する補正ステップと、をさらに実行させる付記６から８のいずれか１項に記載のプログラム。（図２４から図２８）
【０１６０】
（付記１０）
前記信号伝搬時間が、入力信号と出力信号とが基準となる信号レベルに到達したときの時間差であり、前記対象経路の複数の回路素子に対して異なる信号レベルが指定されている場合に、前記対象経路上で接続される２つの回路素子間の信号レベルを整合させる基準設定ステップをさらに実行させる付記６から９のいずれか１項に記載のプログラム。（図２９から図３２）
【０１６１】
（付記１１）
コンピュータが、
複数の回路素子を含む対象経路の信号伝搬時間を変化させる、物理特性値を所定の変動範囲で複数個発生させる物理特性値発生ステップと、
前記発生させたそれぞれの物理特性値にしたがって、前記回路素子を通る信号の遅延時間をそれぞれ算出する素子遅延算出ステップと、
前記信号の遅延時間を基に、前記対象経路の信号伝搬時間を算出する伝搬時間算出ステップと、を実行する設計支援方法。（７、図７、図２２Ａ、図２２Ｂ）
【符号の説明】
【０１６２】
１  回路データ
３  バリエーションパラメータ
４  遅延時間情報
５  電流テーブル生成部
６  電流テーブル
１０  設計支援装置
１１  ＣＰＵ
１２  主記憶装置
【図１】
0005569237.tif 000007
【図２】
0005569237.tif 000008
【図３】
0005569237.tif 000009
【図４】
0005569237.tif 000010
【図５】
0005569237.tif 000011
【図６】
0005569237.tif 000012
【図７】
0005569237.tif 000013
【図８】
0005569237.tif 000014
【図９】
0005569237.tif 000015
【図１０】
0005569237.tif 000016
【図１１】
0005569237.tif 000017
【図１２】
0005569237.tif 000018
【図１３】
0005569237.tif 000019
【図１４】
0005569237.tif 000020
【図１５】
0005569237.tif 000021
【図１６】
0005569237.tif 000022
【図１７】
0005569237.tif 000023
【図１８】
0005569237.tif 000024
【図１９】
0005569237.tif 000025
【図２０】
0005569237.tif 000026
【図２１】
0005569237.tif 000027
【図２２Ａ】
0005569237.tif 000028
【図２２Ｂ】
0005569237.tif 000029
【図２３】
0005569237.tif 000030
【図２４】
0005569237.tif 000031
【図２５】
0005569237.tif 000032
【図２６】
0005569237.tif 000033
【図２７】
0005569237.tif 000034
【図２８】
0005569237.tif 000035
【図２９】
0005569237.tif 000036
【図３０】
0005569237.tif 000037
【図３１】
0005569237.tif 000038
【図３２】
0005569237.tif 000039
【図３３】
0005569237.tif 000040