(57)【要約】【課題】セットアップ・タイミングに対する複数の全てのタイミング制約を同時に満たすことができるセットアップ・タイミング・エラー修正方法を提供する。【解決手段】タイミング制約毎の静的タイミング解析結果から、タイミング制約毎に各パスのセットアップ・スラック値を各記憶素子に割り付け（Ｓ２−１）、割り付けた各記憶素子のセットアップ・スラック値から、各記憶素子のセットアップ・ワースト・スラック値を導出し、タイミング制約毎にセットアップ・ワースト・スラック・マップを作成し、タイミング制約毎に作成したセットアップ・ワースト・スラック・マップを一つにマージし（Ｓ２−２）、マージしたセットアップ・ワースト・スラック・マップのクロック・パスへの伝播を行い（Ｓ２−３）、伝播結果から、セットアップ・タイミング・エラーを持つ記憶素子を選択し（Ｓ２−４）、セットアップ・タイミング・エラーを修正する。【選択図】          図２
2006031141.tif 000002
【特許請求の範囲】
【請求項１】
タイミング制約毎にセットアップ・ワースト・スラック・マップをスラック・マップ作成手段が作成するスラック・マップ作成工程と、
タイミング制約毎に作成されたセットアップ・ワースト・スラック・マップをマップ・マージ手段が一つにマージするマップ・マージ工程を有する
ことを特徴とする集積回路装置のセットアップ・タイミング・エラー修正方法。
【請求項２】
前記スラック・マップ作成工程は、タイミング制約毎の静的タイミング解析から得られるタイミング制約毎の各パスのセットアップ・スラック値から、各記憶素子がターゲット記憶素子及びソース記憶素子として使用される場合のセットアップ・ワースト・スラック値を導出し、該導出したセットアップ・ワースト・スラック値を各記憶素子に割り付けることにより行われる
ことを特徴とする請求項１記載の集積回路装置のセットアップ・タイミング・エラー修正方法。
【請求項３】
前記マップ・マージ工程で得られたセットアップ・ワースト・スラック・マップのクロック・パスへの伝播をセットアップ・スラック伝播手段が行うセットアップ・スラック伝播工程と、
前記マップ・マージ工程で得られたセットアップ・ワースト・スラック・マップのクロック・パスへの伝播結果から、セットアップ・タイミング・エラーを持つ記憶素子を選択し、セットアップ・タイミング・エラーを修正するエラー修正工程を有する
ことを特徴とする請求項１又は２記載の集積回路装置のセットアップ・タイミング・エラー修正方法。
【請求項４】
前記セットアップ・タイミング・エラーを持つ記憶素子の選択は、集積回路装置の中で最も出力に近いところからトレースしていき、セットアップ・タイミング・エラーになっている記憶素子から選択することにより行われることを特徴とする請求項３記載の集積回路装置のセットアップ・タイミング・エラー修正方法。
【請求項５】
タイミング制約毎にセットアップ・ワースト・スラック・マップを作成するスラック・マップ作成工程と、タイミング制約毎に作成されたセットアップ・ワースト・スラック・マップを一つにマージするマップ・マージ工程を、コンピュータに実行させるプログラムを含む
ことを特徴とする集積回路装置のセットアップ・タイミング・エラー修正プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レイアウト工程にある集積回路装置のタイミング調整を行う場合に使用するセットアップ・タイミング・エラー修正方法及びセットアップ・タイミング・エラー修正プログラムに関する。
【背景技術】
【０００２】
集積回路装置には製品化するために満たさなければならないスペックが存在する。そのスペックの代表がセットアップ・タイムである。セットアップ・タイムは、集積回路装置内の記憶素子がクロックでトリガーされて出力したデータが次段の記憶素子にクロックでラッチされる（取り込まれる）までの時間と定義することができ、集積回路装置の速度性能を表現するものである。
【０００３】
セットアップ・タイムには、必ず満たさなければならない要求時間（required time）が存在し、この要求時間に対して充分に間に合ってデータが次段の記憶素子に到達すれば、セットアップ・タイミングがメット（met）しており、スラック（slack）があると表現される。
【０００４】
他方、データが要求時間内に次段の記憶素子に到達しない場合には、セットアップ・タイミングがバイオレーション（violation）又はエラー（error）しており、ネガティブ・スラック（negative slack）があると表現される。本明細書では、メットやエラーに関わらず、単にセットアップ・タイミングの余裕を表現する場合には、slackと表記する場合がある。
【０００５】
また、データを出力する側の記憶素子をソース（source）記憶素子、データを取り込む側の記憶素子をターゲット（target）記憶素子と表現する場合がある。通常、集積回路装置で使用される記憶素子にはフリップフロップやラッチやＲＡＭ、ＲＯＭ等のメモリがあるが、本明細書では、これらを代表して記憶素子と言い、図中及びその参照を表す場合には“ＦＦ”と表記する場合がある。
【０００６】
集積回路装置のレイアウト工程において、セットアップ・タイミングをメットさせるためには、主に、次の３通りの手法が考えられる。（Ａ１）ソース記憶素子のクロック遅延を速める。（Ａ２）データの伝播遅延を速める。（Ａ３）ターゲット記憶素子のクロック遅延を遅くする。
【０００７】
上記の（Ａ１）及び（Ａ３）はクロックの遅延時間を変更する手法であり、ユースフル・スキュー（useful skew）やインテンショナル・スキュー（intentional skew）と呼ばれる（例えば、特許文献１参照）。他方、（Ａ２）はデータの遅延時間を変更する手法であり、様々なタイミング最適化アルゴリズムが存在し、自動最適化ツールが市販されている。いずれの手法にしても、セットアップ・タイミングに対する要求時間を満たすように回路の遅延時間を修正するという点において違いはない。
【０００８】
集積回路装置においては、セットアップ・タイミングに対する要求時間は、タイミング制約（timing constraint）で記述され、静的タイミング解析（以下、ＳＴＡ［Static Timing Analysis］という）ツールを用いて、集積回路装置全体のタイミング余裕の有無が計算される。近年、集積回路装置は、様々なクロック・モードや消費電力モードで動作することが要求されるため、セットアップ・タイミングに対するタイミング制約が複数存在することが当たり前になっている。
【特許文献１】特開２００２−１０８９６２号公報
【特許文献２】特開２００３−１６２５５６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
前述したように、集積回路装置においては、セットアップ・タイミングに対するタイミング制約が複数存在することが当たり前になっているが、その一方で、複数のタイミング制約を同時に満たす回路を実現する手法が確立されておらず、多くのイタレーションが必要となり、設計期間の長期化が問題となっている。また、イタレーションの中で、新たなセットアップ・タイミング・エラーを発生させない保障がない点も問題である。
【００１０】
本発明は、かかる点に鑑み、新たなセットアップ・タイミング・エラーを発生させずに、セットアップ・タイミングに対する複数の全てのタイミング制約を同時に満たすことができる集積回路装置のセットアップ・タイミング・エラー修正方法及びセットアップ・タイミング・エラー修正プログラム、更には、セットアップ・タイミング・エラー修正に必要な回路変更箇所を低減し、集積回路装置の規模削減及び設計時間短縮を図ることができる集積回路装置のセットアップ・タイミング・エラー修正方法及びセットアップ・タイミング・エラー修正プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の集積回路装置のセットアップ・タイミング・エラー修正方法は、タイミング制約毎にセットアップ・ワースト・スラック・マップをスラック・マップ作成手段が作成するスラック・マップ作成工程と、タイミング制約毎に作成されたセットアップ・ワースト・スラック・マップをマップ・マージ手段が一つにマージするマップ・マージ工程を有するというものである。
【００１２】
本発明の集積回路装置のセットアップ・タイミング・エラー修正プログラムは、タイミング制約毎にセットアップ・ワースト・スラック・マップを作成するスラック・マップ作成工程と、タイミング制約毎に作成されたセットアップ・ワースト・スラック・マップを一つにマージするマップ・マージ工程を、コンピュータに実行させるプログラムを含むというものである。
【発明の効果】
【００１３】
本発明によれば、タイミング制約毎のセットアップ・ワースト・スラック・マップを作成することができ、更に、タイミング制約毎に作成されたセットアップ・ワースト・スラック・マップを一つにマージすることができるが、マージされたセットアップ・ワースト・スラック・マップには、全てのタイミング制約の中で最も厳しいセットアップ・スラック値を表現することができる。
【００１４】
したがって、マージされたセットアップ・ワースト・スラック・マップに表現されているセットアップ・タイミング・エラーを修正することにより、新たなセットアップ・タイミング・エラーを発生させずに、セットアップ・タイミングに対する複数の全てのタイミング制約を同時に満たすことができるセットアップ・タイミング・エラー修正を行うことができる。
【００１５】
なお、マージされたセットアップ・ワースト・スラック・マップのクロック・パスへの伝播を行う場合には、記憶素子のクロック端子でセットアップ・タイミング・エラーを修正する場合と異なり、複数の記憶素子のセットアップ・タイミング・エラーを一箇所の遅延修正で行うことが可能となる場合が生じる。したがって、セットアップ・タイミング・エラー修正に必要な回路変更箇所を低減し、集積回路装置の規模削減及び設計時間短縮を図ることができる。
【発明を実施するための最良の形態】
【００１６】
図１は本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態を含む、集積回路装置のレイアウト工程におけるタイミング調整処理フローを示す図である。本タイミング調整処理フローの目的は、集積回路装置に対するセットアップ・タイミング及びホールド・タイミングのスペックを満たすようにタイミング調整を行うことにある。
【００１７】
本タイミング調整処理フローでは、まず、従来手法によるセットアップ・タイミング最適化を実行する（ステップＳ１−１）。即ち、この工程では、（Ｂ１）セルの配置、（Ｂ２）クロック・ツリー・シンセシス、（Ｂ３）既存のセットアップ・タイミング最適化ツールを使用したセットアップ・タイミング最適化、（Ｂ４）配線を行い、レイアウト対象の集積回路装置について、セットアップ・タイミングを調整したレイアウトを実現する。
【００１８】
この工程は、「（Ｂ３）既存のセットアップ・タイミング最適化ツールを使用したセットアップ・タイミング最適化」により、セットアップ・タイミングのメットを目指すものである。しかし、既存のセットアップ・タイミング最適化ツールの性能の制限（例えば、ＳＴＡツールとの誤差など）で、必ずしも、次のＳＴＡでセットアップ・タイミングがメットするという結果が出るとは限らず、本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態が必要となる。
【００１９】
なお、既存のセットアップ・タイミング最適化ツールで可能な限りデータの伝播遅延を速めておくことが、本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態による効果を挙げるために必要となる。これにより、セットアップ・タイミング・エラーを修正するために、クロック調整可能な範囲を広げることが出来るためである。よって、本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態を実施する前にはホールド・タイミング調整は一切行わないことが望ましい。
【００２０】
そして、従来手法によるセットアップ・タイミング最適化（ステップＳ１−１）の後、ＳＴＡによるセットアップ・タイミング・チェックを実行し、セットアップ・タイミング・エラーの有無を確認する（ステップＳ１−２）。その際、集積回路装置に対して要求されている全てのタイミング制約でＳＴＡを実施する必要がある。
【００２１】
ＳＴＡによるセットアップ・タイミング・チェックで、セットアップ・タイミング・エラーがひとつでも検出された場合には、本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態を実施し、セットアップ・タイミング・エラー修正方法を導出し（ステップＳ１−３）、導出したセットアップ・タイミング・エラー修正方法に基いてレイアウト修正を行い（Ｓ１−４）、再度、ＳＴＡによるセットアップ・タイミング・チェックを実行する（ステップＳ１−２）。
【００２２】
通常、このＳＴＡでセットアップ・タイミング・エラーは発生しないが、レイアウト修正（ステップＳ１−４）による誤差が原因で、本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態の実施により導出したセットアップ・タイミング・エラー修正方法での期待された遅延値にならなかった場合に、セットアップ・タイミング・エラーが発生する場合があり、この場合は、再度、同じ処理を繰り返すことになる。
【００２３】
そして、ＳＴＡによるセットアップ・タイミング・チェック（ステップＳ１−２）の結果、セットアップ・タイミング・エラーが検出されなかった場合には、ＳＴＡによるホールド・タイミング・チェックを実行し、ホールド・タイミング・エラーの有無を確認する（ステップＳ１−５）。その際、集積回路装置に対して要求されている全てのタイミング制約でＳＴＡを実施する必要がある。
【００２４】
ＳＴＡによるホールド・タイミング・チェックで、ホールド・タイミング・エラーがひとつでも検出された場合には、ホールド・タイミング・エラー修正方法を導出し（ステップＳ１−６）、導出したホールド・タイミング・エラー修正方法に基づいてレイアウト修正を行い（ステップＳ１−７）、再度、ＳＴＡによるホールド・タイミング・チェックを実行する（ステップＳ１−５）。なお、ホールド・タイミング・エラー修正方法については、例えば、特許文献２に記載の技術を適用することができる。
【００２５】
そして、ＳＴＡによるホールド・タイミング・チェック（ステップＳ１−５）の結果、ホールド・タイミング・エラーが検出されなかった場合、即ち、全てのタイミング制約でセットアップ・タイミング及びホールド・タイミングを満たしたところで、タイミング調整完了となる（ステップＳ１−８）。
【００２６】
図２は本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態の内容を示す図であり、図２に示すステップＳ１−３のセットアップ・タイミング・エラー修正方法導出フローが本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態の内容を示している。
【００２７】
図２中、１００は演算ユニット、１０１は集積回路装置のネットリスト（回路情報）を格納するネットリスト格納手段、１０２はＳＴＡによるセットアップ・タイミング・チェック（ステップＳ１−２）で得られるタイミング制約毎のスラックをリスト化して格納するスラックリスト格納手段、１０３は後述するセットアップ・ワースト・スラック・マップを格納するワースト・スラック・マップ格納手段であり、これらと所定のプログラムにより、本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態が実施される。
【００２８】
本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態においては、まず、ＳＴＡから得られるタイミング制約毎の各パスのセットアップ・スラック値から、各記憶素子がターゲット記憶素子及びソース記憶素子として使用される場合のセットアップ・ワースト・スラック値を導出し、各記憶素子について導出したセットアップ・ワースト・スラック値を各記憶素子へ割り付ける（ステップＳ２−１）。
【００２９】
この工程は、セットアップ・スラック値割り付けプログラム（又はセットアップ・ワースト・スラック・マップ作成用プログラム）により、演算ユニット１００をセットアップ・スラック値割り付け手段（又はセットアップ・ワースト・スラック・マップ作成手段）として機能させることにより実施することができる。
【００３０】
図３は或るタイミング制約（以下、タイミング制約ＴＣ１と表記する）でのＳＴＡを実行した場合の結果を示しており、各パスにslackとして表示している値は、各パスのセットアップ・ワースト・スラック値である。また、１０４、１０５は組合せ回路である。
【００３１】
図３の例では、ＦＦ１の前段のＦＦからＦＦ１へのパスは、セットアップ・ワースト・スラック値＝１０００ps（ピコ秒）、ＦＦ２の前段のＦＦからＦＦ２へのパスは、セットアップ・ワースト・スラック値＝９００ps、ＦＦ１からＦＦ３へのパスは、セットアップ・ワースト・スラック値＝−２００ps（タイミング・エラー＝２００ps）、ＦＦ２からＦＦ３へのパスは、セットアップ・ワースト・スラック値＝１００psとなっている。
【００３２】
また、ＦＦ３からＦＦ４へのパスは、セットアップ・ワースト・スラック値＝８００ps、ＦＦ３からＦＦ５へのパスは、セットアップ・ワースト・スラック値＝５００ps、ＦＦ４からＦＦ４の後段のＦＦへのパスは、セットアップ・ワースト・スラック値＝１１００ps、ＦＦ５からＦＦ５の後段のＦＦへのパスは、セットアップ・ワースト・スラック値＝７００psとなっている。
【００３３】
図４は図３に示すＳＴＡによる結果から、ＦＦ１〜ＦＦ５に対して、ＦＦ１〜ＦＦ５のターゲット記憶素子及びソース記憶素子としてのセットアップ・ワースト・スラック値を割り当てた結果を示している。本明細書では、ＦＦ１〜ＦＦ５のターゲット記憶素子及びソース記憶素子としてのセットアップ・ワースト・スラック値をＡ／Ｂで表示している。「Ａ」はＦＦ１〜ＦＦ５がターゲット記憶素子になる場合のセットアップ・ワースト・スラック値、「Ｂ」はＦＦ１〜ＦＦ５がソース記憶素子になる場合のセットアップ・ワースト・スラック値である。
【００３４】
図３において、例えば、ＦＦ３に着目した場合、ＦＦ３がターゲット記憶素子になるパスには、ＦＦ１からＦＦ３へのパス（セットアップ・ワースト・スラック値＝−２００ps）と、ＦＦ２からＦＦ３へのパス（セットアップ・ワースト・スラック値＝１００ps）があるが、よりワーストな値は、ＦＦ１からＦＦ３へのパスのセットアップ・ワースト・スラック値＝−２００psである。そこで、この場合には、ＦＦ３がターゲット記憶素子となる場合のセットアップ・ワースト・スラック値Ａとして、−２００psを割り付ける。
【００３５】
また、ＦＦ３がソース記憶素子になるパスには、ＦＦ３からＦＦ４へのパス（セットアップ・ワースト・スラック値＝８００ps）と、ＦＦ３からＦＦ５へのパス（セットアップ・ワースト・スラック値＝５００ps）があるが、よりワーストな値は、ＦＦ３からＦＦ５へのパスのセットアップ・ワースト・スラック値＝５００psである。そこで、この場合には、ＦＦ３がソース記憶素子となる場合のセットアップ・ワースト・スラック値Ｂとして、５００psをＦＦ３に割り付ける。
【００３６】
この結果、タイミング制約ＴＣ１の場合、図４に示すように、ＦＦ３には、ターゲット記憶素子及びソース記憶素子としてのセットアップ・ワースト・スラック値として、「−２００／５００」が割り付けられる。
【００３７】
このようにして、各ＦＦにターゲット記憶素子及びソース記憶素子としてのセットアップ・ワースト・スラック値が割り付けられたものをセットアップ・ワースト・スラック・マップと言い、タイミング制約ＴＣ１でのセットアップ・ワースト・スラック・マップは、ワースト・スラック・マップ格納手段１０３に格納される。
【００３８】
図５は他のタイミング制約（以下、タイミング制約ＴＣ２と表記する）でＳＴＡを実行した場合の結果を示しており、各パスにslackとして表示している値は、各パスのセットアップ・ワースト・スラック値である。
【００３９】
図５の例では、ＦＦ１の前段のＦＦからＦＦ１へのパスは、セットアップ・ワースト・スラック値＝６００ps、ＦＦ２の前段のＦＦからＦＦ２へのパスは、セットアップ・ワースト・スラック値＝７００ps、ＦＦ１からＦＦ３へのパスは、セットアップ・ワースト・スラック値＝２００ps、ＦＦ２からＦＦ３へのパスは、セットアップ・ワースト・スラック値＝−１００ps（タイミング・エラー＝１００ps）となっている。
【００４０】
また、ＦＦ３からＦＦ４へのパスは、セットアップ・ワースト・スラック値＝６００ps、ＦＦ３からＦＦ５へのパスは、セットアップ・ワースト・スラック値＝３００ps、ＦＦ４からＦＦ４の後段のＦＦへのパスは、セットアップ・ワースト・スラック値＝４００ps、ＦＦ５からＦＦ５の後段のＦＦへのパスは、セットアップ・ワースト・スラック値＝９００psとなっている。
【００４１】
図６は図５に示すＳＴＡによる結果から、ＦＦ１〜ＦＦ５に対して、ＦＦ１〜ＦＦ５のターゲット記憶素子及びソース記憶素子としてのセットアップ・ワースト・スラック値を割り付けた結果を示している。このタイミング制約ＴＣ２でのセットアップ・ワースト・スラック・マップは、ワースト・スラック・マップ格納手段１０３に格納される。
【００４２】
図５において、例えば、ＦＦ３に着目した場合、ＦＦ３がターゲット記憶素子になるパスには、ＦＦ１からＦＦ３へのパス（セットアップ・ワースト・スラック値＝２００ps）と、ＦＦ２からＦＦ３へのパス（セットアップ・ワースト・スラック値＝−１００ps）があるが、よりワーストな値は、ＦＦ２からＦＦ３へのパスのセットアップ・ワースト・スラック値＝−１００psである。そこで、この場合には、ＦＦ３がターゲット記憶素子となる場合のセットアップ・ワースト・スラック値Ａとして、−１００psを割り付ける。
【００４３】
また、ＦＦ３がソース記憶素子になるパスには、ＦＦ３からＦＦ４へのパス（セットアップ・ワースト・スラック値＝６００ps）と、ＦＦ３からＦＦ５へのパス（セットアップ・ワースト・スラック値＝３００ps）があるが、よりワーストな値は、ＦＦ３からＦＦ５へのパスのセットアップ・ワースト・スラック値＝３００psである。そこで、この場合には、ＦＦ３がソース記憶素子となる場合のセットアップ・ワースト・スラック値Ｂとして、３００psをＦＦ３に割り付ける。
【００４４】
この結果、タイミング制約ＴＣ２の場合、図６に示すように、ＦＦ３には、ターゲット記憶素子及びソース記憶素子としてのセットアップ・ワースト・スラック値として、「−１００／３００」が割り付けられる。以上の処理を全てのタイミング制約について行う必要があるが、本例では、タイミング制約ＴＣ１、ＴＣ２が満たすべきスペックと仮定する。
【００４５】
そして、ステップＳ２−２では、セットアップ・ワースト・スラック・マップのマージを行う。本例では、タイミング制約ＴＣ１、ＴＣ２での２つのセットアップ・ワースト・スラック・マップが作成されているため、これらを、タイミング制約ＴＣ１、ＴＣ２の中で最も厳しいセットアップ・スラック値を表現しているようにマージする必要がある。マージそのものは各記憶素子のセットアップ・スラック値のワーストを採用するという簡単なアルゴリズムで実現することができる。
【００４６】
図７は図４に示すタイミング制約ＴＣ１でのセットアップ・ワースト・スラック・マップと図６に示すタイミング制約ＴＣ２でのセットアップ・ワースト・スラック・マップをマージした結果を示している。セットアップ・ワースト・スラック・マップのマージは、セットアップ・ワースト・スラック・マップ・マージ用プログラムにより、演算ユニット１００をセットアップ・ワースト・スラック・マップ・マージ手段として機能させることにより行うことができる。
【００４７】
続いて、ステップＳ２−３では、クロック・パスへのセットアップ・スラック伝播を行う。図８は図７に示すマージされたセットアップ・ワースト・スラック・マップを全てのクロック・パスへ伝播させた結果を示している。クロック・パスへのセットアップ・スラック伝播は、セットアップ・スラック伝播用プログラムにより、演算ユニット１００をセットアップ・スラック伝播手段として機能させることにより行うことができる。
【００４８】
図８中、○で示された点Ｓ１〜Ｓ１２は遅延を調整するポイントを示しており、Ｓ１はＦＦ１のクロック（以下、ＣＫと表記する）端子、Ｓ２はＦＦ２のＣＫ端子、Ｓ３はＦＦ３のＣＫ端子、Ｓ４はＦＦ４のＣＫ端子、Ｓ５はＦＦ５のＣＫ端子、Ｓ６はバッファ（以下、ＢＵＦと表記する）１の出力端子、Ｓ７はＢＵＦ１の入力端子、Ｓ８はＢＵＦ２の出力端子、Ｓ９はＢＵＦ２の入力端子、Ｓ１０はＢＵＦ３の出力端子、Ｓ１１はＢＵＦ３の入力端子、Ｓ１２はＢＵＦ４の出力端子を表している。
【００４９】
ここで、Ｓ６とＳ１、Ｓ２は、遅延上、同一のポイントに見えるが、遅延を変更した場合の効果が及ぶ範囲がそれぞれ異なる点に注意する必要がある。即ち、Ｓ１の遅延増減はＦＦ１のみに影響を与え、Ｓ２の遅延増減はＦＦ２のみに影響を与え、Ｓ６の遅延増減はＦＦ１およびＦＦ２に及ぶという違いがある。また、図８は伝播遅延ではなくセットアップ・スラック値を表現しているため、Ｓ３、Ｓ８およびＳ９のような分岐のないパスは、セットアップ・ワースト・スラック値として同じ値を持つことになる。
【００５０】
以上のことを踏まえ、クロック・パスへのセットアップ・スラック伝播を説明する。Ｓ１、Ｓ２、Ｓ３、Ｓ４、Ｓ５のセットアップ・ワースト・スラック値は、それぞれ、ＦＦ１、ＦＦ２、ＦＦ３、ＦＦ４、ＦＦ５のセットアップ・ワースト・スラック値そのものである。Ｓ６には、Ｓ１のセットアップ・ワースト・スラック値＝「６００／−２００」とＳ２のセットアップ・ワースト・スラック値＝「７００／−１００」を考慮し、「６００／−２００」を割り付ける。Ｓ７のセットアップ・ワースト・スラック値はＳ６のセットアップ・ワースト・スラック値と同じになる。
【００５１】
Ｓ８、Ｓ９のセットアップ・ワースト・スラック値はＳ３のセットアップ・ワースト・スラック値と同じになる。Ｓ１０には、Ｓ４のセットアップ・ワースト・スラック値＝「６００／４００」とＳ５のセットアップ・ワースト・スラック値＝「３００／７００」を考慮し、「３００／４００」を割り付ける。Ｓ１１のセットアップ・ワースト・スラック値はＳ１０のワースト・スラック値と同じになる。
【００５２】
Ｓ１２には、Ｓ７のセットアップ・ワースト・スラック値＝「６００／−２００」とＳ９のセットアップ・ワースト・スラック値＝「−２００／３００」とＳ１１のセットアップ・ワースト・スラック値＝「３００／４００」を考慮し、「−２００／−２００」を割り付ける。
【００５３】
このように、クロック・パスについてまで、ワースト・スラック・マップを考慮することにより、記憶素子のＣＫ端子でセットアップ・タイミング・エラーを修正する場合と異なり、複数のＦＦのセットアップ・タイミング・エラーを一箇所の遅延修正で行うことが可能となる場合が生じる。例えば、図８において、Ｓ６の遅延修正を行うことで、ＦＦ１及びＦＦ２の遅延が変わるために、これらのセットアップ・タイミング・エラーが修正される可能性がある。言い換えれば、セットアップ・タイミング・エラー修正を記憶素子のクロック端子のみで行う場合には、ステップＳ２−３は不要である。
【００５４】
以上のステップＳ２−１からステップＳ２−３までで、セットアップ・タイミング・エラーを修正するために必要な入力情報はすべて揃ったことになる。そこで、ステップＳ２−４では、セットアップ・タイミング・エラーを持つ記憶素子を選択してセットアップ・タイミング・エラー修正を行う。
【００５５】
ステップＳ２−４は、セットアップ・タイミング・エラー修正対象記憶素子選択用プログラム及びセットアップ・タイミング・エラー修正用プログラムにより、演算ユニット１００をセットアップ・タイミング・エラー修正対象記憶素子選択手段及びセットアップ・タイミング・エラー修正手段として機能させることにより行うことができる。
【００５６】
図９はセットアップ・タイミング・エラー修正方法の基本概念を示している。図９中、１０６は組合せ回路、１０７〜１１１はバッファである。図９（Ａ）において、例えば、ＦＦ６からＦＦ７へのパスに２００psのセットアップ・タイミング・エラーが発生している場合、図９（Ｂ）に示すように、ターゲット側のＦＦ７のクロック・パスにバッファ１１１を挿入して２００psの遅延をつけることで、図９（Ａ）に示すセットアップ・タイミング・エラーを修正することができる。これがユースフル・スキューやインテンショナル・スキューと呼ばれる手法である。
【００５７】
本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態においては、セットアップ・タイミング・エラーを修正する具体的な手法として、図９に示す手法を用いる。ただし、本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態においては、どのポイントにどのくらいの遅延修正が必要なのかを示す点に特徴があり、その具体的な実現方法は問わない。
【００５８】
そこで、ステップＳ２−４では、まず、セットアップ・タイミング・エラーになっている記憶素子をピックアップする。ピックアップするアルゴリズムとしては、次のものが考えられる。（Ｃ１）スラック値の昇順に選択、（Ｃ２）ランダムに選択、（Ｃ３）クロック・パスの接続関係から、多くのセットアップ・タイミング・エラーを共有する記憶素子群の中から代表記憶素子を選択、（Ｃ４）集積回路装置の中で最も出力に近いところからトレースしていき、セットアップ・タイミング・エラーになっている記憶素子から選択する。
【００５９】
上記の（Ｃ１）〜（Ｃ３）は最適化アルゴリズムでよく使用される方法である。本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態では、（Ｃ４）の選択アルゴリズムを採用し、セットアップ・タイミング・エラー修正対象記憶素子選択用プログラムに、集積回路装置の中で最も出力に近いところからトレースしていき、セットアップ・タイミング・エラーになっている記憶素子から選択するというプログラムを含ませるものとなる。
【００６０】
通常、クロックを遅らせた場合、対象ＦＦがターゲットになるパスのセットアップ・タイミング・エラーを修正することができるが、同時に対象ＦＦがターゲットになる全てのパスについてスラックを増加させる効果があり、これらのパスのソース記憶素子についてクロックを遅らせることで、セットアップ・タイミング・エラーを修正できる可能性が増すという利点が生じる。
【００６１】
また、セットアップ・タイミング・エラーを持つ記憶素子としてピックアップする場合には、セットアップ・ワースト・スラック・マップにおいてセットアップ・ワースト・スラック値である「Ａ／Ｂ」表現のＡ側がセットアップ・タイミング・エラーになっているものをピックアップすることが望ましい。
【００６２】
なぜなら、多くの記憶素子はクロックを遅くすることは自由にできるが、クロックを速めることは実現が困難な場合があるからである。つまり、Ａ側がセットアップ・タイミング・エラーになっている場合には、その対象記憶素子のクロックを遅くすることで、セットアップ・タイミング・エラーを容易に修正できるためである。
【００６３】
なお、クロックを速める手法を利用する場合には、集積回路装置の中で、最も入力に近いところからトレースしていき、セットアップ・タイミング・エラーになっている記憶素子から選択することになる。本発明の集積回路装置のセットアップ・タイミング・エラー修正方法において、この手法を採用することもできる。
【００６４】
以上のことを踏まえ、図８に示すセットアップ・タイミング・エラーを修正する方法について説明する。図１０は図８に示すセットアップ・タイミング・エラーを修正するために、ＦＦ３のクロックを２００psだけ遅くした結果を示している。即ち、ＦＦ３に与えるクロックを２００ps遅くすることにより、２重取り消し線が付けられたスラック値が更新され、この処理により、ＦＦ３のセットアップ・タイミング・エラーは修正される。
【００６５】
具体的には、Ｓ３のセットアップ・ワースト・スラック値＝「（−２００＋２００）／（３００−２００）」＝「０／１００」となる。この結果、Ｓ８、Ｓ９のセットアップ・ワースト・スラック値＝「０／１００」となる。
【００６６】
また、Ｓ１のセットアップ・ワースト・スラック値＝「６００／（−２００＋２００）」＝「６００／０」、Ｓ２のセットアップ・ワースト・スラック値＝「７００／（−１００＋２００）」＝「７００／１００」、Ｓ６、Ｓ７のセットアップ・ワースト・スラック値＝「６００／０」となる。
【００６７】
また、Ｓ４のセットアップ・ワースト・スラック値＝「（６００−２００）／４００」＝「４００／４００」、ＦＦ５のセットアップ・ワースト・スラック値＝「（３００−２００）／７００」＝「１００／７００」、Ｓ１０、Ｓ１１のセットアップ・ワースト・スラック値＝「１００／４００」となる。また、Ｓ１２のセットアップ・ワースト・スラック値＝「０／０」となる。
【００６８】
そして、ステップＳ２−５では、ステップＳ２−４の結果に基づいて、セットアップ・ワースト・スラック・マップの更新を行い、セットアップ・タイミング・エラーが残っている場合には、全てのセットアップ・タイミング・エラーが修正されるか、又は、セットアップ・タイミング・エラーの競合により修正できなくなるまで、ステップＳ２−４、Ｓ２−５の処理を繰り返す。図１０の例では、全てのセットアップ・タイミング・エラーが修正されているため、処理が終了となる。
【００６９】
なお、セットアップ・ワースト・スラック・マップの更新は、セットアップ・ワースト・スラック・マップ更新用プログラムにより、演算ユニット１００をセットアップ・ワースト・スラック・マップ更新手段として機能させることにより行うことができる。
【００７０】
また、図１１は図８のセットアップ・タイミング・エラーを修正するために、クロックを速めた場合を示している。即ち、まず、セットアップ・タイミング・エラー値が最も大きいＦＦ１からＦＦ３へのパスのスラック値＝−２００psを修正するために、ＦＦ１のクロックを２００psだけ速めることにより、２重取り消し線が付けられたスラック値が更新されている。
【００７１】
具体的には、Ｓ１のセットアップ・ワースト・スラック値＝「（６００−２００）／（−２００＋２００）」＝「４００／０」、Ｓ６、Ｓ７のセットアップ・ワースト・スラック値＝「４００／−１００」、Ｓ３、Ｓ８、Ｓ９のセットアップ・ワースト・スラック値＝「−１００／３００」、Ｓ１２のセットアップ・ワースト・スラック値＝「−１００／−１００」となる。
【００７２】
この場合には、ＦＦ２からＦＦ３へのパスに−１００psのセットアップ・タイミング・エラーが残っているため、更に、ＦＦ２のクロックを１００psだけ速める処理を行う（ステップＳ２−４）。結果を図１２に示している。これらの処理により、全てのセットアップ・タイミング・エラーが修正され、処理が終了となる。
【００７３】
具体的には、Ｓ２のセットアップ・ワースト・スラック値＝「（７００−１００）／（−１００＋１００）」＝「６００／０」、Ｓ６、Ｓ７のセットアップ・ワースト・スラック値＝「４００／０」、Ｓ３、Ｓ８、Ｓ９のセットアップ・ワースト・スラック値＝「０／３００」、Ｓ１２のセットアップ・ワースト・スラック値＝「０／０」となる。
【００７４】
図１３は図８のセットアップ・タイミング・エラーを修正するために、クロックの上流までトレースした場合を示している。この例は、セットアップ・タイミング・エラー値が最も大きいＦＦ１からＦＦ３へのパスの−２００psを修正するために、ＦＦ１のクロックを２００psだけ速めようとするものであり、この点は、図１１に示す場合と同様である。しかし、図１３の例では、ＦＦ１のクロックを２００psだけ速めるポイントとして、ＦＦ１直近のＳ１ではなく、よりクロックの上流のＳ７を選択している。この点が、図１１に示す例と異なっている。
【００７５】
この処理を行うことができるのは、Ｓ１、Ｓ６及びＳ７のセットアップ・ワースト・スラック値は「６００／−２００」であり、いずれのポイントでも、クロックを２００psだけ速めることができるためである。本例では、Ｓ７のクロック遅延を２００psだけ速めることにより、全てのセットアップ・タイミング・エラーを修正することが可能となっており、処理が終了となる。
【００７６】
具体的には、Ｓ７のセットアップ・ワースト・スラック値＝「（６００−２００）／（−２００＋２００）」＝「４００／０」となる。この結果、Ｓ６、Ｓ１のセットアップ・ワースト・スラック値＝「（６００−２００）／（−２００＋２００）」＝「４００／０」となる。
【００７７】
また、Ｓ２のセットアップ・ワースト・スラック値＝「（７００−２００）／（−１００＋２００）」＝「５００／１００」、Ｓ３、Ｓ８、Ｓ９のセットアップ・ワースト・スラック値＝「０／３００」、Ｓ１２のセットアップ・ワースト・スラック値＝「０／０」となる。
【００７８】
以上のように、本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態においては、タイミング制約毎にセットアップ・ワースト・スラック・マップを作成し、更に、タイミング制約毎に作成されたセットアップ・ワースト・スラック・マップを一つにマージしているが、マージされたセットアップ・ワースト・スラック・マップには、全てのタイミング制約の中で最も厳しいセットアップ・スラック値を表現することができる。
【００７９】
したがって、マージされたセットアップ・ワースト・スラック・マップに表現されているセットアップ・タイミング・エラーを修正することにより、新たなセットアップ・タイミング・エラーを発生させずに、セットアップ・タイミングに対する複数の全てのタイミング制約を同時に満たすことができるセットアップ・タイミング・エラー修正を行うことができる。
【００８０】
また、マージされたセットアップ・ワースト・スラック・マップのクロック・パスへの伝播を行うようにしているので、記憶素子のＣＫ端子でセットアップ・タイミング・エラーを修正する場合と異なり、複数の記憶素子のセットアップ・タイミング・エラーを一箇所の遅延修正で行うことが可能となる場合が生じる。したがって、セットアップ・タイミング・エラー修正に必要な回路変更箇所を低減し、集積回路装置の規模削減及び設計時間短縮を図ることができる。
【００８１】
また、ステップＳ２−４でのセットアップ・タイミング・エラーを持つ記憶素子の選択を、集積回路装置の中で最も出力に近いところからトレースしていき、セットアップ・タイミング・エラーになっている記憶素子から選択するとし、対象記憶素子のクロックを遅くすることでセットアップ・タイミング・エラーを修正するとしているので、対象記憶素子がターゲットになる全てのパスについてスラックを増加させる効果があり、これらのパスのソース記憶素子についてクロックを遅らせることで、セットアップ・タイミング・エラーを修正できる可能性が増すという利点が生じる。
【００８２】
なお、特許文献１には、集積回路装置のセットアップ・タイミング・エラーを修正する手法として、ユースフル・スキュー的な手法（実際には、クロック挿入遅延の異なるＦＦを用意し、必要に応じてスワップする手法）が記載されているが、本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の特徴である複数のタイミング制約への対応については記載されていない。
【００８３】
また、特許文献２には、複数のタイミング制約でのセットアップのスラック値の中から最も厳しい値を抽出し、セットアップ・スラック・マップを作成し、セットアップ・タイミング・エラーを発生させることなしに、ホールドタイム修正を行う技術が記載されている。本発明は、セットアップ・ワースト・スラック・マップを使用し、セットアップ・タイミング・エラーを修正する方法を開示しており、特許文献２に記載の技術とは対象が異なる。
【００８４】
ここで、本発明を整理すると、本発明には、以下の集積回路装置のセットアップ・タイミング・エラー修正方法及びセットアップ・タイミング・エラー修正プログラムが含まれる。
【００８５】
（付記１）タイミング制約毎にセットアップ・ワースト・スラック・マップをスラック・マップ作成手段が作成するスラック・マップ作成工程と、タイミング制約毎に作成されたセットアップ・ワースト・スラック・マップをマップ・マージ手段が一つにマージするマップ・マージ工程を有することを特徴とする集積回路のセットアップ・タイミング・エラー修正方法。
【００８６】
（付記２）前記スラック・マップ作成工程は、タイミング制約毎のＳＴＡから得られるタイミング制約毎の各パスのセットアップ・スラック値から、各記憶素子がターゲット記憶素子及びソース記憶素子として使用される場合のセットアップ・ワースト・スラック値を導出し、該導出したセットアップ・ワースト・スラック値を各記憶素子に割り付けることにより行われることを特徴とする付記１記載の集積回路装置のセットアップ・タイミング・エラー修正方法。
【００８７】
（付記３）前記マップ・マージ工程で得られるセットアップ・ワースト・スラック・マップのクロック・パスへの伝播をセットアップ・スラック伝播手段が行うセットアップ・スラック伝播工程と、前記マップ・マージ工程で得られたセットアップ・ワースト・スラック・マップのクロック・パスへの伝播結果から、セットアップ・タイミング・エラーを持つ記憶素子を選択し、セットアップ・タイミング・エラーを修正するエラー修正工程を有することを特徴とする付記１又は２記載の集積回路装置のセットアップ・タイミング・エラー修正方法。
【００８８】
（付記４）前記セットアップ・タイミング・エラーを持つ記憶素子の選択は、集積回路装置の中で最も出力に近いところからトレースしていき、セットアップ・タイミング・エラーになっている記憶素子から選択することにより行われることを特徴とする付記３記載の集積回路装置のセットアップ・タイミング・エラー修正方法。
【００８９】
（付記５）タイミング制約毎にセットアップ・ワースト・スラック・マップを作成するスラック・マップ作成工程と、タイミング制約毎に作成されたセットアップ・ワースト・スラック・マップを一つにマージするマップ・マージ工程を、コンピュータに実行させるプログラムを含むことを特徴とする集積回路装置のセットアップ・タイミング・エラー修正プログラム。
【００９０】
（付記６）前記スラック・マップ作成工程は、タイミング制約毎のＳＴＡから得られるタイミング制約毎の各パスのセットアップ・スラック値から、各記憶素子がターゲット記憶素子及びソース記憶素子として使用される場合のセットアップ・ワースト・スラック値を導出し、該導出したセットアップ・ワースト・スラック値を各記憶素子に割り付ける工程を、コンピュータに実行させるプログラムを含むことを特徴とする付記５記載の集積回路装置のセットアップ・タイミング・エラー修正プログラム。
【００９１】
（付記７）前記マップ・マージ工程で得られるセットアップ・ワースト・スラック・マップのクロック・パスへの伝播を行うセットアップ・スラック伝播工程と、前記マップ・マージ工程で得られたセットアップ・ワースト・スラック・マップのクロック・パスへの伝播結果から、セットアップ・タイミング・エラーを持つ記憶素子を選択し、セットアップ・タイミング・エラーを修正するエラー修正工程を、コンピュータに実行させるプログラムを含むことを特徴とする付記５又は６記載の集積回路装置のセットアップ・タイミング・エラー修正プログラム。
【００９２】
（付記８）前記セットアップ・タイミング・エラーを持つ記憶素子の選択を、集積回路装置の中で最も出力に近いところからトレースしていき、セットアップ・タイミング・エラーになっている記憶素子から選択することにより行うことを特徴とする付記７記載の集積回路装置のセットアップ・タイミング・エラー修正プログラム。
【図面の簡単な説明】
【００９３】
【図１】本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態を含む、集積回路装置のレイアウト工程におけるタイミング調整フローを示す図である。
【図２】本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態の内容を示す図である。
【図３】本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態の内容を具体的に説明するための図である。
【図４】本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態の内容を具体的に説明するための図である。
【図５】本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態の内容を具体的に説明するための図である。
【図６】本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態の内容を具体的に説明するための図である。
【図７】本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態の内容を具体的に説明するための図である。
【図８】本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態の内容を具体的に説明するための図である。
【図９】本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態の内容を具体的に説明するための図である。
【図１０】本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態の内容を具体的に説明するための図である。
【図１１】本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態の内容を具体的に説明するための図である。
【図１２】本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態の内容を具体的に説明するための図である。
【図１３】本発明の集積回路装置のセットアップ・タイミング・エラー修正方法の一実施形態の内容を具体的に説明するための図である。
【符号の説明】
【００９４】
１００…演算ユニット
１０１…ネットリスト格納手段
１０２…スラックリスト格納手段
１０３…ワースト・スラック・マップ格納手段
１０４、１０５…組合せ回路
【図１】
2006031141.tif 000003
【図２】
2006031141.tif 000004
【図３】
2006031141.tif 000005
【図４】
2006031141.tif 000006
【図５】
2006031141.tif 000007
【図６】
2006031141.tif 000008
【図７】
2006031141.tif 000009
【図８】
2006031141.tif 000010
【図９】
2006031141.tif 000011
【図１０】
2006031141.tif 000012
【図１１】
2006031141.tif 000013
【図１２】
2006031141.tif 000014
【図１３】
2006031141.tif 000015