(57)【特許請求の範囲】
【請求項１】
設計された電子回路のセル間を接続するネットのなかでタイミングエラーが発生している対象ネット上にタイミング調整のために挿入すべき調整用セルの位置を自動的に決定する自動配置装置における自動配置方法であって、
セルや配線の配置設計後、前記自動配置装置に備えられる評価手段が、前記電子回路が形成される基板を複数のエリアに分割して、該エリア毎にセル、或いは配線が存在しない面積が全体を占める割合である空きスペース率を算出し、
前記自動配置装置に備えられる判定手段が、前記対象ネットが存在するエリアで算出した空きスペース率に基づいて、該対象ネット上に前記調整用セルを挿入可能か否かを判定し、
前記自動配置装置に備えられる配置決定手段が、前記調整用セルを挿入可能と判定した対象ネットに信号を出力する出力側セル、及び該信号を入力する入力側セルのうちの一方の近傍に前記調整用セルを挿入するという該調整用セルを挿入すべき位置の決定を行うとともに、前記対象ネットが複数の層に形成されることで複数のネットセグメントから構成されている場合、前記調整用セルを挿入すべきネットセグメントの決定を、前記複数のネットセグメントのなかで長さが長いネットセグメントを優先させる形で行い、前記調整用セルを挿入すべきと決定したネットセグメントにおいて前記調整用セルを挿入すべき位置の決定を行い、
前記調整用セルを挿入すべき位置を、
複数の前記入力側セルにタイミングエラーが発生し、且つ、前記出力側セルに前記調整用セルの挿入スペースがある場合、前記入力側セルにタイミングエラーが発生し、且つ、前記入力側セルに前記調整用セルの挿入スペースが無い場合、及び前記入力側セルにタイミングエラーが発生し、且つ、前記入力側セルの近傍に他の入力側セルが存在する場合の何れかの場合には前記出力側セルの近傍に決定し、
複数の前記入力側セルのうちタイミングエラーが発生していない前記入力側セルが存在する場合、前記入力側セルにタイミングエラーが発生し、且つ、前記出力側セルに前記調整用セルの挿入スペースが無い場合、前記出力側セルの近傍に他の入力側セルが存在する場合、及び前記入力側セルにタイミングエラー及びスルーレートエラーが発生している場合の何れかの場合には前記入力側セルの近傍に決定する、
ことを特徴とする自動配置方法。
【請求項２】
前記評価手段が、前記複数のエリアへの分割を、各エリア内に、一つのセルが有する１つのピンを存在させるように、各エリアの形状及び位置を決定する形で行う、
ことを特徴とする請求項１記載の自動配置方法。
【請求項３】
前記評価手段が、前記空きスペース率の算出を、前記対象ネットに信号を出力する出力側セル、及び該信号を入力する入力側セルのうちの少なくとも一方に着目して、該対象ネットが接続された側に限定して行う、
ことを特徴とする請求項１又は請求項２記載の自動配置方法。
【請求項４】
設計された電子回路のセル間を接続するネットのなかでタイミングエラーが発生している対象ネット上にタイミング調整のために挿入すべき調整用セルの位置を自動的に決定する自動配置装置であって、
セルや配線の配置設計後、前記電子回路が形成される基板を複数のエリアに分割して、該エリア毎にセル、或いは配線が存在しない面積が全体を占める割合である空きスペース率を算出する評価手段と、
前記対象ネットが存在するエリアで算出した空きスペース率に基づいて、該対象ネット上に前記調整用セルを挿入可能か否か判定する判定手段と、
前記調整用セルを挿入可能と前記判定手段が判定した対象ネットに信号を出力する出力側セル、及び該信号を入力する入力側セルのうちの一方の近傍に前記調整用セルを挿入するという該調整用セルを挿入すべき位置の決定を行うとともに、前記対象ネットが複数の層に形成されることで複数のネットセグメントから構成されている場合、前記調整用セルを挿入すべきネットセグメントの決定を、前記複数のネットセグメントのなかで長さが長いネットセグメントを優先させる形で行い、前記調整用セルを挿入すべきと決定したネットセグメントにおいて前記調整用セルを挿入すべき位置の決定を行い、
前記調整用セルを挿入すべき位置を、
複数の前記入力側セルにタイミングエラーが発生し、且つ、前記出力側セルに前記調整用セルの挿入スペースがある場合、前記入力側セルにタイミングエラーが発生し、且つ、前記入力側セルに前記調整用セルの挿入スペースが無い場合、及び前記入力側セルにタイミングエラーが発生し、且つ、前記入力側セルの近傍に他の入力側セルが存在する場合の何れかの場合には前記出力側セルの近傍に決定し、
複数の前記入力側セルのうちタイミングエラーが発生していない前記入力側セルが存在する場合、前記入力側セルにタイミングエラーが発生し、且つ、前記出力側セルに前記調整用セルの挿入スペースが無い場合、前記出力側セルの近傍に他の入力側セルが存在する場合、及び前記入力側セルにタイミングエラー及びスルーレートエラーが発生している場合の何れかの場合には前記入力側セルの近傍に決定する配置決定手段と、
を具備することを特徴とする自動配置装置。
【請求項５】
設計された電子回路のセル間を接続するネットのなかでタイミングエラーが発生している対象ネット上にタイミング調整のために挿入すべき調整用セルの位置を自動的に決定する機能をコンピュータに実現させるプログラムであって、
セルや配線の配置設計後、前記電子回路が形成される基板を複数のエリアに分割して、該エリア毎にセル、或いは配線が存在しない面積が全体を占める割合である空きスペース率を算出する評価機能と、
前記対象ネットが存在するエリアで算出した空きスペース率に基づいて、該対象ネット上に前記調整用セルを挿入可能か否か判定する判定機能と、
前記調整用セルを挿入可能と前記判定機能により判定した対象ネットに信号を出力する出力側セル、及び該信号を入力する入力側セルのうちの一方の近傍に前記調整用セルを挿入するという該調整用セルを挿入すべき位置の決定を行うとともに、前記対象ネットが複数の層に形成されることで複数のネットセグメントから構成されている場合、前記調整用セルを挿入すべきネットセグメントの決定を、前記複数のネットセグメントのなかで長さが長いネットセグメントを優先させる形で行い、前記調整用セルを挿入すべきと決定したネットセグメントにおいて前記調整用セルを挿入すべき位置の決定を行い、
前記調整用セルを挿入すべき位置を、
複数の前記入力側セルにタイミングエラーが発生し、且つ、前記出力側セルに前記調整用セルの挿入スペースがある場合、前記入力側セルにタイミングエラーが発生し、且つ、前記入力側セルに前記調整用セルの挿入スペースが無い場合、及び前記入力側セルにタイミングエラーが発生し、且つ、前記入力側セルの近傍に他の入力側セルが存在する場合の何れかの場合には前記出力側セルの近傍に決定し、
複数の前記入力側セルのうちタイミングエラーが発生していない前記入力側セルが存在する場合、前記入力側セルにタイミングエラーが発生し、且つ、前記出力側セルに前記調整用セルの挿入スペースが無い場合、前記出力側セルの近傍に他の入力側セルが存在する場合、及び前記入力側セルにタイミングエラー及びスルーレートエラーが発生している場合の何れかの場合には前記入力側セルの近傍に決定する配置決定機能と、
をコンピュータに実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、設計された電子回路のセル間を接続するネットのなかでタイミングエラーが発生している対象ネット上にタイミング調整のために挿入すべき調整用セルの位置を自動的に決定するための技術に関する。
【背景技術】
【０００２】
現在では、電子回路の設計はＣＡＤを用いて行われるのが普通である。ＣＡＤでは、電子回路の機能的、或いは論理的な単位となる素子、或いは部品は基本素子（セル）としてライブラリに登録させている。このことから、論理設計は、基本的に、ライブラリに登録されたセルのなかで必要なセルを選択し、その選択したセル同士を接続させることで行われる。セル同士の接続は、それらがそれぞれ持つピンとピンを結ぶことで行われる。
【０００３】
電子回路の設計では、デザインの比較的に小さな変更が行われる。そのようなデザイン変更はＥＣＯ（engineering change orders）と呼ばれる。そのＥＣＯは、セル間を接続するネットで発生したタイミングエラー（信号を取り込むタイミングが早すぎるか否か確認するホールドタイムチェックでのエラー）の修正のために行われることが多い。その修正は普通、ネット上に信号を遅延させる調整用セル（通常はバッファ）を追加することで行われる。そのような調整用セルの追加では、既存のデザインからはそれが挿入された箇所の配線のみが変更されることになる。
【０００４】
図１は、ＥＣＯが行われる場合の一般的な設計処理の流れを説明する図である。ここで図１を参照して、その設計処理の一般的な流れについて具体的に説明する。
ステップＳ１の論理合成では、ハードウェア記述言語で表現したＲＴＬ（register transfer level）記述、真理値表、状態遷移記述、（特定の半導体製造技術に依存しない）論理式などを入力して、最適なゲート・レベル論理回路（ネットリスト）が自動生成される。ステップＳ２のレイアウト処理では、ネットリストを読み込み、セルの配置の決定や配線の配置といったことが行われ、デザインが確定される。そのデザインを表すデータは配置配線データベースに格納される。このときにセルはインスタンス化される。
【０００５】
ステップＳ３では、配置された配線の抵抗、容量の各値を算出する。ステップＳ４では、電子回路の遅延を計算で見積もり，見積もった遅延値を用いて、信号が伝搬していく時間差によって不具合（誤動作など）が生じるか否か確認するための静的タイミング解析（ＳＴＡ）を行う。ステップＳ５では、そのＳＴＡによって見つかったタイミングエラー（ここではホールド・タイミングエラー）を発生させる配線（ネット）を示すパス（ｐａｔｈ）情報、及び実際の遅延を示すスラック（Ｓｌａｃｋ）情報を出力する。ステップＳ６では、タイミングエラーを修正するためのタイミング調整を行い、その調整内容を示すＥＣＯリストＤ１が作成される。そのＥＣＯリストＤ１は、対象ネットを例えばインスタンス名とピン（端子）名で記述したものである。ＥＣＯはステップＳ２のレイアウト処理で行われる。
【０００６】
タイミングエラーが発生しているネット上に調整用セルを挿入可能なエリアが存在しているとは限らない。他のセルや配線によってエリアが存在しない場合がある。このことから、特許文献１に記載された従来技術のように、配線上で調整用セルを配置可能な位置を探索して挿入位置（挿入ポイント）を決定することが行われている。しかし、その探索に要する負荷は重いのが実情である。その探索を行うべき配線の数が多くなると、負荷は非常に重くなり、膨大な処理時間が必要となる。また、探索を行っても挿入可能なエリアを探し出せるか否かは判らない。このようなことから、調整用セルを挿入可能なエリアの探索精度を維持させつつ、負荷を軽減させることが重要であると考えられる。
【０００７】
設計の対象となる電子回路の多くは、半導体チップ（基板）上に形成される半導体集積回路である。近年のディープサブミクロン半導体集積回路の設計では、回路の高集積化、高速化が進むにつれ、タイミングエラーを短ＴＡＴ（ターンアラウンドタイム）で修正するのが困難になってきている。これは、タイミングエラーを修正するためのデザイン変更によって他のタイミングエラーを発生させることが起こりやすいためである。そのために、デザイン変更を再度、行うイタレーションを繰り返すことも多いのが実情である。このことから、調整用セルを挿入可能なエリアの探索では、その調整用セルの挿入によって生じる影響を考慮することも重要であると考えられる。
【特許文献１】特開２００１−１６８１９９号公報
【特許文献２】特開２０００−２６９３４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、より軽い負荷で探索精度を維持した調整用セルの挿入可能なエリア（挿入ポイント）を探索するための技術を提供することを第１の目的とする。
また、本発明は、調整用セルの挿入によって生じる影響を考慮して、その調整用セルの挿入可能なエリア（挿入ポイント）を探索するための技術を提供することを第２の目的とする。
【課題を解決するための手段】
【０００９】
本発明の第１〜第３の態様の自動配置方法は共に、設計された電子回路のセル間を接続するネットのなかでタイミングエラーが発生している対象ネット上にタイミング調整のために挿入すべき調整用セルの位置を自動的に決定するための方法であって、それぞれ以下のように調整用セルを挿入すべき位置の決定を行う。
【００１０】
第１の態様の自動配置方法では、電子回路が形成される基板を複数のエリアに分割して、該エリア毎に調整用セルを挿入できる余裕度を事前に評価し、対象ネットが存在するエリアで評価した余裕度に基づいて、該対象ネット上に調整用セルを挿入可能か否か判定し、調整用セルを挿入可能と判定した対象ネットを対象にして、該調整用セルを挿入すべき位置の決定を行う。
【００１１】
第２の態様の自動配置方法では、対象ネットに信号を出力する出力側セル、及び該信号を入力する入力側セルのうちの少なくとも一方の近傍に調整用セルを挿入可能か否か確認すると共に、該一方の近傍に該調整用セルを挿入すべき状況か否か確認し、該確認によって、一方の近傍に調整用セルが挿入可能であり、且つ該調整用セルを挿入すべき状況であることが判明した場合に、該調整用セルを挿入すべき位置として該一方の近傍を選択し決定する。
【００１２】
第３の態様の自動配置方法では、対象ネットが複数の層に形成されることで複数のネットセグメントから構成されている場合に、該複数のネットセグメントをネットセグメントの長さによって分け、該ネットセグメントのなかで長さが長いネットセグメントを優先させる形で、調整用セルを挿入すべきネットセグメントを選択し決定する。
【００１３】
本発明の自動配置装置は、設計された電子回路のセル間を接続するネットのなかでタイミングエラーが発生している対象ネット上にタイミング調整のために挿入すべき調整用セルの位置を自動的に決定するものであって、電子回路が形成される基板を複数のエリアに分割して、該エリア毎に調整用セルを挿入できる余裕度を事前に評価する評価手段と、対象ネットが存在するエリアで評価した余裕度に基づいて、該対象ネット上に調整用セルを挿入可能か否か判定する判定手段と、調整用セルを挿入可能と判定手段が判定した対象ネットを対象にして、該調整用セルを挿入すべき位置の決定を行う配置決定手段と、を具備する。
【００１４】
本発明のプログラムは、設計された電子回路のセル間を接続するネットのなかでタイミングエラーが発生している対象ネット上にタイミング調整のために挿入すべき調整用セルの位置を自動的に決定するためにコンピュータに実行させるプログラムであって、電子回路が形成される基板を複数のエリアに分割して、該エリア毎に調整用セルを挿入できる余裕度を事前に評価する評価機能と、対象ネットが存在するエリアで評価した余裕度に基づいて、該対象ネット上に調整用セルを挿入可能か否か判定する判定機能と、調整用セルを挿入可能と判定機能により判定した対象ネットを対象にして、該調整用セルを挿入すべき位置の決定を行う配置決定機能と、を実現させる。
【発明の効果】
【００１５】
本発明では、電子回路が形成される基板を複数のエリアに分割して、エリア毎に調整用セルを挿入できる余裕度を事前に評価し、対象ネットが存在するエリアで評価した余裕度に基づいて、対象ネット上に調整用セルを挿入可能か否か判定することにより、調整用セルを挿入可能と判定した対象ネットのみを対象にして、調整用セルを挿入すべき位置の決定を行う。対象ネット上で挿入すべき位置を探す探索には負荷が重く、対象ネットの数が多くなれば負荷は極めて重くなり、膨大な処理時間が必要となる。しかし、比較的に軽い負荷で求められる余裕度によって、調整用セルの挿入可能な対象ネットを選別する（絞り込む）ようにした場合には、無駄な探索を行うことを回避できるようになる。この結果、調整用セルの挿入可能なエリア（挿入ポイント）の決定（探索）は、探索精度を維持しながらより軽い負荷で行えるようになる。
【００１６】
本発明では、対象ネットに信号を出力する出力側セル、及び該信号を入力する入力側セルのうちの少なくとも一方の近傍に調整用セルを挿入可能か否か確認すると共に、該一方の近傍に該調整用セルを挿入すべき状況か否か確認し、その確認によって、一方の近傍に調整用セルが挿入可能であり、且つ該調整用セルを挿入すべき状況であることが判明した場合に、調整用セルを挿入すべき位置としてその一方の近傍を選択し決定する。出力側セル、或いは入力側セルの近傍に調整用セルを配置することにより、その配置（挿入）によって対象ネットに生じる抵抗値や容量値の変化を最小限に抑えることができる。その近傍への配置は、その配置を行うべき状況であった場合、つまりその配置によって別の不具合が生じない、その不具合が生じる可能性が小さい状況下で行うため、調整用セルの配置（挿入）によって生じる影響も最小限に抑えることができる。これらの結果、調整用セルの配置によって別のタイミングエラーを発生させるようなことはより確実に回避できるようになり、それによってイタレーションの発生も最小限に抑えられるようになる。
【００１７】
本発明では、対象ネットが複数の層に形成されることで複数のネットセグメントから構成されている場合に、該複数のネットセグメントをネットセグメントの長さによって分け、該ネットセグメントのなかで長さが長いネットセグメントを優先させる形で、調整用セルを挿入すべきネットセグメントを選択し決定する。調整用セルの挿入には或る程度のネットセグメントの長さが必要である。そのため、調整用セルを挿入可能なネットセグメントをより高速に探し出すことができる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
図２は、本実施の形態による自動配置装置を搭載した自動レイアウト処理装置の構成を説明する図である。
【００１９】
そのレイアウト処理装置は、図２に示すように、ユーザである設計者がデータ入力を行うための入力処理部３１と、表示装置に表示させるべき情報を表示させるための表示制御部３２と、自動レイアウト処理を実行する自動レイアウト処理部３３と、タイミングエラーが発生した配線（ネット）上で調整用セルを挿入すべき位置の決定を自動的に行う自動配置処理部３４と、各種データやプログラムを記憶可能な記憶部３５と、を備えた構成となっている。
【００２０】
自動レイアウト処理部５４は、図１に示すステップＳ２〜Ｓ５の設計処理を行えるものである。入力処理部３１を介して設計者が指示した設計処理を行う。ステップＳ２のレイアウト処理を実行することで確定したデザインのデータは配置配線データベース（ＤＢ）に格納される。そのＤＢは記憶部３５上に構築されている。
【００２１】
図３は、上記自動レイアウト処理装置として用いることが可能なコンピュータのハードウェア構成を説明する図である。図２についての詳細な説明の前に、自動レイアウト処理装置として用いることが可能なコンピュータの構成について具体的に説明する。
【００２２】
図３に示すコンピュータは、ＣＰＵ６１、メモリ６２、入力装置６３、出力装置６４、外部記憶装置６５、媒体駆動装置６６、及びネットワーク接続装置６７を有し、これらがバス６８によって互いに接続された構成となっている。同図に示す構成は一例であり、これに限定されるものではない。
【００２３】
ＣＰＵ６１は、当該コンピュータ全体を制御するものである。メモリ６２は、プログラム実行、データ更新等の際に、外部記憶装置６５（あるいは可搬型の記録媒体ＭＤ）に記憶されているプログラムあるいはデータを一時的に格納するＲＡＭ等のメモリである。ＣＰＵ６１は、プログラムをメモリ６２に読み出して実行することにより、全体の制御を行う。
【００２４】
入力装置６３は、例えば、キーボード、マウス等の外部入力装置と接続可能なものか、或いはそれらを有するものである。そのような外部入力装置に対するユーザの操作を検出し、その検出結果をＣＰＵ６１に通知する。
【００２５】
出力装置６４は、例えばディスプレイと接続可能なものか、或いはそれを有するものである。ＣＰＵ６１の制御によって送られてくるデータをディスプレイ上に出力させる。
ネットワーク接続装置６７は、例えばＬＡＮ、或いはインターネット等の通信ネットワークを介して、他の装置と通信を行うためのものである。外部記憶装置６５は、例えばハードディスク装置である。主に各種データやプログラムの保存に用いられる。
【００２６】
媒体駆動装置６６は、光ディスクや光磁気ディスク等の可搬型の記録媒体ＭＤにアクセスするものである。
図２に示す自動レイアウト処理装置は、ＣＰＵ６１が、例えば外部記憶装置６５に格納されたプログラムをメモリ６２に読み出して実行することで実現される。そのプログラムは、ネットワーク接続装置６７が通信ネットワークを介して取得したもの、或いは媒体駆動装置６６が記録媒体ＭＤから読み出したものであっても良い。
【００２７】
図２に示す自動配置処理部３４は、マップ作成部４１、探索部４２、及びリスト作成部４３を備えている。それらは以下のような処理を行う。
電子回路を構成するセルが基板上に高密度に配置されるほど、空いたスペースは小さくなる。しかし、実装密度は一様であるとは限らない。これらのことに着目し、本実施の形態では、設計された電子回路が形成される基板を複数のエリアに分割し、エリア毎に調整用セルを挿入できる余裕度を事前に評価するようにしている。その評価を行うのがマップ作成部４１である。その余裕度の評価は、エリア毎にセル、或いは配線が存在しない面積（空きスペース）が全体に占める割合を算出することで行っている。以降、その割合を「空きスペース率」（％）、その空きスペース率を求めるエリアを「ブロック」とそれぞれ呼ぶことにする。
【００２８】
図６は、分割されたブロック、及びその空きスペース率を説明する図である。その図６では、各枠はそれぞれブロックを表し、そのブロックの空きスペース率は枠内の模様によって表している。ここでは、空きスペース率が０、つまり空きスペース無し、空きスペース率が５０％未満（より正確には５０＞空きスペース率＞０）、空きスペース率が５０％以上の３種類に分けてブロックの空きスペース率を表している。
【００２９】
調整用セルは、他のセルに重ならないように配置しなければならない。セル間の接続はピンとピンを結ぶことで行われる。配線はそのピン間に配置される。このことから、本実施の形態では、ブロックへの分割はそれぞれがセルの１つのピンを含むように行っている（図１２）。セルのピンについては以降「端子」とも呼ぶことにする。信号を出力する側の端子はソース（ｓｏｕｒｃｅ）端子、その信号を入力する側の端子はシンク（ｓｉｎｋ）端子と呼ぶことにする。
【００３０】
図７は、空きスペースマップの記述方法を説明する図である。
各ブロックにはそれぞれセルが持つ１つのピン（端子）が存在している。このことから、空きスペースマップの記述では、セルを表すインスタンス名、及びそれが持つ１つのピンの名前をブロック識別用の情報として用いて、ブロック毎に空きスペース率を記述する方法を採用している。図７で１行目に記述された「ＴＯＰ／ＣｅｌｌＡ．ＩＮ  ９０％」では、「ＴＯＰ／ＣｅｌｌＡ」はインスタンス名、「ＩＮ」はピン名、「９０％」は空きスペース率、をそれぞれ表している。
【００３１】
配置配線ＤＢには、セルに関する情報やその配置情報が格納されている。マップ作成部４１はその配置配線ＤＢを参照して、それぞれがセルの持つ１つのピンを含むように各ブロックの形状、及びその位置を決定し、空きスペース率を計算する。そのようにして空きスペースマップの作成を行う。
【００３２】
探索部４２は、タイミングエラーが発生した配線（ネット）毎に、調整用セルを挿入すべき位置（挿入ポイント）を探索する処理を行う。その探索は、対象ネットが存在するブロックの空きスペース率が予め定めた閾値より大きい場合にのみ行う。その閾値は、空きスペース率と、調整用セルの挿入可能なスペース（挿入ポイント）が実際に見つかる確率との関係を考慮して決定したものである。それにより、挿入ポイントを探し出せることが見込める場合にのみ、その挿入ポイントの探索を行う。
【００３３】
そのようにして、調整用セルを挿入すべき対象ネットのなかで可能性が期待できないものを除外し、その可能性が期待できる挿入ポイントのみに限定して探索を行う。そのような絞り込みを行うため、挿入ポイントの探索に要する負荷はより軽減させることができる。その絞り込みのための空きスペースマップの作成は、比較的に軽い負荷で行うことができる。このことから、対象ネットの全てで探索を行うような場合と比較すれば、全体的な負荷はより軽くすることができ、処理時間はより短縮させることができる。また、調整用セルを挿入可能な対象ネットでは挿入ポイントの探索を行うため、高い探索精度を維持させることができる。
【００３４】
挿入ポイントの探索は、以下のようなものを優先させる形で行う。図８〜図１０を参照して具体的に説明する。
図８は、ネットの抵抗・容量を考慮した場合の調整用セルの理想的な挿入ポイントを説明する図である。
【００３５】
最近では、ネットで生じる遅延値の計算（見積もり）はその抵抗・容量を考慮して行うようになっている（図１）。それら抵抗・容量の変化に伴ってネットで生じる遅延値も変化する。その遅延値の変化は再度、ＥＣＯを行うことになる可能性、つまりイタレーションの可能性を高くする。従って、調整用セルのネットへの挿入前後で生じる抵抗・容量の変化は最小限に抑えるのが望ましい。このことから本実施の形態では、調整用セル（ｂｕｆｆ）はソース端子、或いはシンク端子の何れかにできるだけ近づけて配置するようにしている。図８は、セルＡ、セルＢを結ぶネットに調整用セルとして挿入するバッファ（ｂｕｆｆ）をセルＡのソース端子に近づけて配置した場合の例を示している。そのように配置することにより、調整用セルとそれに近い側の端子を結ぶネットの抵抗・容量は殆ど無視できるものにすることができ、調整用セルとそれに遠い側の端子を結ぶネットの抵抗・容量は挿入前のネットのそれらとほぼ同じものとすることができる。
【００３６】
調整用セルを近傍に配置すべき端子は、状況に応じて選択するのが望ましい。その選択は、例えば以下のように行えば良い。
図９は、ソース端子を選択すべき状況を説明する図である。その図９では、３つの状況例１〜３を図９（ａ）〜（ｃ）にそれぞれ示している。以降、ネットに信号を出力する側のセルは「ソース・セル」、その信号を入力する側のセルは「シンク・セル」とそれぞれ呼ぶことにする。
【００３７】
調整用セルを挿入してのタイミング調整は、基本的にホールド・タイミングエラー（以下「ホールド・エラー」と略記）を修正するために行われる。図９（ａ）に示す状況例１は、ソース・セルから出力された信号を入力する複数のシンク・セルでホールド・エラーが発生し、且つソース・セル側に調整用セル（ｂｕｆｆｅｒ）の挿入スペースがある場合のものである。そのような場合、ソース・セル側に調整用セルを配置することにより、複数のシンク・セルで発生していたホールド・エラーを全て解消させることができる。
【００３８】
図９（ｂ）に示す状況例２は、一つだけあるシンク・セルにホールド・エラーが発生したが、その近傍に挿入スペースが無い場合のものである。そのような場合、デザインの変更量を抑えるために、ソース・セル側に調整用セルを配置するのが望ましい。
【００３９】
図９（ｃ）に示す状況例３は、ホールド・エラーが発生したシンク・セルの近傍に他のネット（ｎｅｔ  Ｂ）が存在する場合のものである。そのような場合、シンク・セル側に調整用セルを挿入することによって、他のネットに重畳するクロストーク・ノイズ分を増大させる。そのノイズ分は、クロストーク遅延を発生させる原因となる。このことから、ソース・セル側に調整用セルを配置するのが望ましい。
【００４０】
図１０は、シンク端子を選択すべき状況を説明する図である。その図１０では、４つの状況例１〜４を図１０（ａ）〜（ｄ）にそれぞれ示している。
図１０（ａ）に示す状況例１は、ソース・セルから出力された信号を入力する複数のシンク・セルが存在し、その全てのシンク・セルでホールド・エラーのみが発生していない場合のものである。その場合、少なくとも１つのシンク・セルでホールド・エラーが発生し、それ以外のシンク・セルのなかにタイミングエラーが発生していないもの、或いはセットアップ・タイミングエラー（以降「セットアップ・エラー」と略記）が発生しているものが存在する。このため、ソース・セル側に調整用セルを配置すると、それ以外のシンク・セルに新たなタイミングエラーを発生させる、或いはタイミングエラーをより悪化させる、といった可能性がある。それにより、ホールド・エラーのみが発生したシンク・セル側に調整用セルを配置するのが望ましい。
【００４１】
図１０（ｂ）に示す状況例２は、一つだけあるシンク・セルにホールド・エラーが発生したが、ソース・セル側に挿入スペースが無い場合のものである。そのような場合、デザインの変更量を抑えるために、シンク・セル側に調整用セルを配置するのが望ましい。
【００４２】
図１０（ｃ）に示す状況例３は、ホールド・エラーが発生したソース・セルの近傍に他のネット（ｎｅｔ  Ｂ）が存在する場合のものである。そのような場合、他のネットに重畳するクロストーク・ノイズ分の増大を回避させるために、シンク・セル側に調整用セルを配置するのが望ましい。
【００４３】
図１０（ｄ）に示す状況例４は、シンク・セルにホールド・エラーの他にスルーレート（ｓｌｅｗ  ｒａｔｅ）エラーが発生している場合のものである。そのスルーレート・エラーは、伝搬してきた信号の波形が動作を保証する形を保っているか否か確認する波形解析によって検出するエラーである。信号波形は伝搬中になまることから、調整用セルはシンク・セル側に配置するのが望ましい。そのように配置することにより、スルーレート・エラーを解消できる可能性がある。
【００４４】
ネット（配線）は多層に渡って配置する場合がある。現在では、多層構造の基板を採用するのが普通なため、多くのネットは多層に渡って配置されているのが実情である。各層の部分であるネットセグメントの長さは、その周辺の状態を考慮して決定された可能性がある。周辺の状態を考慮して決定されたのであれば、長さが短いネットセグメントでは、調整用セルの挿入スペースが存在しない可能性が高いことになる。このことから本実施の形態では、対象ネットが多層に渡って配置されている場合、調整用セルの挿入ポイントを探索するネットセグメントは、長さが長いほうから行っている。それにより、より長いネットセグメントを優先させる形で調整用セルを挿入するようにしている。
【００４５】
探索部４２は、上述したようにして、調整用セルの挿入ポイントの探索を行う。ネットセグメントの長さによる優先は、ソース端子、及びシンク端子のなかで調整用セルを配置するのが望ましい端子の近傍に挿入スペースが存在しない場合に採用するようにしている。それにより、デザイン変更をより小さくする、その変更による影響をより小さくする、といったことを重視している。
【００４６】
リスト作成部４３は、探索部４２が探索によって見つかった挿入ポイントに挿入すべき調整用セル、その挿入ポイントを示す情報を対象ネット毎にまとめたリストを作成する。そのリストは、例えば図１１に示すようなものである。その情報としては、例えばソース端子と調整用セルを新たに結ぶネットの抵抗値、容量値を採用している。
【００４７】
そのリストでは、対象ネットは図７に示す空きスペースマップと同様に、インスタンス名、及びそれが持つ１つの端子の名前で表している。「ｂｕｆｆ１（０ｍΩ，４ｐｆ）」は調整用セルの候補がバッファであり、そのバッファはソース端子と抵抗値、容量値がそれぞれ０ｍΩ、４ｐｆのネットで接続させるべきであることを表している。「ＤｏｎｔＡｄｊｕｓｔ」は対象ネットに挿入ポイントが見つからなかったことを表している。絞り込みにより除外するか、或いは探索によって挿入ポイントが探し出せなかった対象ネットでは、それが記述される。
【００４８】
図４は、調整用セル自動配置処理のフローチャートである。次に図４を参照して、上記自動配置処理部３４の動作について詳細に説明する。その配置処理は、タイミングエラーが発生した対象ネットに調整用セルを挿入すべき挿入ポイントを自動的に決定するために実行する処理の流れを示したものである。例えば図３に示すＣＰＵ６１が外部記憶装置６５に格納されたプログラムをメモリ６２に読み出して実行することで実現される。
【００４９】
先ず、ステップＳ１１では、配置配線ＤＢを参照して、空きスペースマップ（図７）を作成する。続くステップＳ１２では、対象ネットが存在するブロックの空きスペース率が０％でないか否か判定する。本実施の形態では、上述したように、セルの１端子のみが存在すようにブロックへの分割を行っている。このことから、２つの空きスペース率が共に０％であった場合、判定はＮＯとなってステップＳ１５に移行し、その対象ネット用の結果を格納した後、一連の処理を終了する。そうでない場合には、判定はＹＥＳとなってステップＳ１３に移行する。ステップＳ１２からステップＳ１５に移行した場合には、対象ネットには「ＤｏｎｔＡｄｊｕｓｔ」が記述されることとなる（図１１）。
【００５０】
ステップＳ１３では、２つの空きスペース率は共に閾値以下か否か判定する。その２つの空きスペース率が共に閾値以下であった場合、判定はＹＥＳとなってステップＳ１４に移行し、対象ネットをタイミング調整対象から除外した後、ステップＳ１５に移行する。それにより、ステップＳ１４からステップＳ１５に移行した場合にも、対象ネットには「ＤｏｎｔＡｄｊｕｓｔ」が記述されることとなる（図１１）。一方、そうでない場合、つまり空きスペース率が閾値より大きい場合には、判定はＮＯとなってステップＳ１６に移行し、調整用セルを挿入すべき挿入ポイントを探索するための挿入ポイント探索処理を実行した後、ステップＳ１５に移行する。
【００５１】
上記ステップＳ１２〜Ｓ１６は、タイミング調整の対象となる対象ネット毎に、その対象ネットに応じて実行される。それにより、図１１に示すようなリストが作成されることとなる。
【００５２】
図５は、上記ステップＳ１６として実行される挿入ポイント探索処理のフローチャートである。ここで図５を参照して、その探索処理について詳細に説明する。
先ず、ステップＳ２１では、ネット（配線）をネットセグメントに分けて、その長さが長い順にソートする。続くステップＳ２２では、ソートしたネットセグメントのなかから対象とする対象ネットセグメントを選択し、その全体に渡って挿入ポイントを探索する。その後に移行するステップＳ２３では、探索した挿入ポイントは複数、存在するか否か判定する。既に探し出した挿入ポイントが存在する状態でステップＳ２２の処理を実行した結果、新たに挿入ポイントが見つかった場合、判定はＹＥＳとなってステップＳ２４に移行する。そうでない場合には、判定はＮＯとなってステップＳ２５に移行する。
【００５３】
ステップＳ２４では、対象ネットの状況に応じた優先度に従って挿入ポイントを選択する。その後に移行するステップＳ２５では、抵抗値・容量値（ＲＣ）を計算すべき挿入ポイントが有るか否か判定する。挿入ポイントを初めて探し出した場合、或いはステップＳ２４の処理を実行することで選択した挿入ポイントが新たに探し出したものであった場合、その挿入ポイントを示すＲＣを計算する必要があることから、判定はＹＥＳとなり、ステップＳ２６でそのＲＣを計算した後、ステップＳ２７に移行する。そうでない場合には、判定はＮＯとなり、次にそのステップＳ２７の処理を実行する。
【００５４】
ステップＳ２７では、探索の対象となる他のネットセグメントが有るか否か判定する。上述したように、対象ネットの状況により、調整用セルの望ましい挿入ポイントは変化する。ネットセグメントの探索は長いものから行うようにしている。挿入ポイントが１つも見つかっていなければ、未探索のネットセグメントが有る間はそれを対象とした探索は続けなければならない。このようなことから、調整用セルの挿入がより望ましい未探索のネットセグメントが存在する場合、或いは未探索のネットセグメントが存在し、且つ挿入ポイントが見つかっていない場合、判定はＹＥＳとなってステップＳ２２に戻り、対象としていないネットセグメントのなかで長さが最も長いネットセグメントを選択して挿入ポイントの探索を行う。それらの何れも該当しない場合には、判定はＮＯとなってステップＳ２８に移行し、探索結果を出力した後、一連の処理を終了する。その探索結果として、探し出した挿入ポイントの有無、その挿入ポイントが有れば計算したＲＣなどが出力される。
【００５５】
このようにして本実施の形態では、対象ネットの状況に応じて、見つかった挿入ポイントのなかで最も望ましいものを選択するようにしている。それにより、デザイン変更をより小さくする、その変更による影響をより小さくする、ということを重視した挿入ポイントの決定を行うようにしている。
【００５６】
なお、本実施の形態では、ブロックへの分割はセルの１端子のみが存在すよう行っているが、別の分割方法を採用しても良い。例えば予め定めた形状・大きさでブロックへの分割を行うようにしても良い。或いはネットで結ぶ各セルの各端子を含むように分割を行うようにしても良い。
【００５７】
調整用セルを挿入できる余裕度の評価は、空きスペース率を計算することで行っているが、別の指標を採用しても良い。その空きスペース率は、ブロック全体に示す空きスペース率であるが、調整用セルの配置が望ましい挿入スペースは、ネット上のセルに重ならないエリアである。ネット上でなくとも、元のネットの近傍であることが望ましい。これは、そのような場所に配置したとしても、対象ネットが接続される端子の裏側にのみ挿入可能なスペースがあり、そのスペースに調整用セルを配置するような場合と比較すれば、デザイン変更はより小さくなるからである。このことから、図１２に示すように、端子のネットが接続された側に予め定めた大きさのエリア１２０１を想定し、そのエリア１２０１の空きスペース率を求めるようにしても良い。そのようにした場合には、より確実に調整用セルを配置可能な対象ネットを特定できるようになる。
【００５８】
そのエリア１２０１は、端子の座標を基点に、ネットに沿って離れる方向、或いはその方向と交差する２つの方向の何れかに動かすことにより、空きスペース率がより望ましい位置を探索するようにしても良い。そのようにした場合には、調整用セルを配置可能な対象ネットを更に確実に特定できるようになる。そのエリア１２０１の形状や大きさは固定としても良いが、設計者が任意に設定できるようにしても良い。
【００５９】
（付記１）
設計された電子回路のセル間を接続するネットのなかでタイミングエラーが発生している対象ネット上にタイミング調整のために挿入すべき調整用セルの位置を自動的に決定するための方法であって、
前記電子回路が形成される基板を複数のエリアに分割して、該エリア毎に前記調整用セルを挿入できる余裕度を事前に評価し、
前記対象ネットが存在するエリアで評価した余裕度に基づいて、該対象ネット上に前記調整用セルを挿入可能か否か判定し、
前記調整用セルを挿入可能と判定した対象ネットを対象にして、該調整用セルを挿入すべき位置の決定を行う、
ことを特徴とする自動配置方法。
【００６０】
（付記２）
前記調整用セルを挿入すべき位置の決定は、前記対象ネットに信号を出力する出力側セル、及び該信号を入力する入力側セルのうちの一方の近傍を優先させる形で行う、
ことを特徴とする付記１記載の自動配置方法。
【００６１】
（付記３）
前記対象ネットが複数の層に形成されることで複数のネットセグメントから構成されている場合、前記調整用セルを挿入すべき位置の決定は、該ネットセグメントのなかで長さが長いネットセグメントを優先させる形で行う、
ことを特徴とする付記１記載の自動配置方法。
【００６２】
（付記４）
前記複数のエリアへの分割は、各エリア内に、一つのセルが有する１つのピンを存在させる形で行う、
ことを特徴とする付記１記載の自動配置方法。
【００６３】
（付記５）
前記余裕度の評価は、前記対象ネットに信号を出力する出力側セル、及び該信号を入力する入力側セルのうちの少なくとも一方に着目して、該対象ネットが接続された側に限定して行う、
ことを特徴とする付記１記載の自動配置方法。
【００６４】
（付記６）
設計された電子回路のセル間を接続するネットのなかでタイミングエラーが発生している対象ネット上にタイミング調整のために挿入すべき調整用セルの位置を自動的に決定するための方法であって、
前記対象ネットに信号を出力する出力側セル、及び該信号を入力する入力側セルのうちの少なくとも一方の近傍に前記調整用セルを挿入可能か否か確認すると共に、該一方の近傍に該調整用セルを挿入すべき状況か否か確認し、
前記確認によって、前記一方の近傍に前記調整用セルが挿入可能であり、且つ該調整用セルを挿入すべき状況であることが判明した場合に、該調整用セルを挿入すべき位置として該一方の近傍を選択し決定する、
ことを特徴とする自動配置方法。
【００６５】
（付記７）
設計された電子回路のセル間を接続するネットのなかでタイミングエラーが発生している対象ネット上にタイミング調整のために挿入すべき調整用セルの位置を自動的に決定するための方法であって、
前記対象ネットが複数の層に形成されることで複数のネットセグメントから構成されている場合に、該複数のネットセグメントをネットセグメントの長さによって分け、
該ネットセグメントのなかで長さが長いネットセグメントを優先させる形で、前記調整用セルを挿入すべきネットセグメントを選択し決定する、
ことを特徴とする自動配置方法。
【００６６】
（付記８）
設計された電子回路のセル間を接続するネットのなかでタイミングエラーが発生している対象ネット上にタイミング調整のために挿入すべき調整用セルの位置を自動的に決定する自動配置装置であって、
前記電子回路が形成される基板を複数のエリアに分割して、該エリア毎に前記調整用セルを挿入できる余裕度を事前に評価する評価手段と、
前記対象ネットが存在するエリアで評価した余裕度に基づいて、該対象ネット上に前記調整用セルを挿入可能か否か判定する判定手段と、
前記調整用セルを挿入可能と前記判定手段が判定した対象ネットを対象にして、該調整用セルを挿入すべき位置の決定を行う配置決定手段と、
を具備することを特徴とする自動配置装置。
【００６７】
（付記９）
設計された電子回路のセル間を接続するネットのなかでタイミングエラーが発生している対象ネット上にタイミング調整のために挿入すべき調整用セルの位置を自動的に決定する自動配置装置であって、
前記対象ネットに信号を出力する出力側セル、及び該信号を入力する入力側セルのうちの少なくとも一方の近傍に前記調整用セルを挿入可能か否か確認すると共に、該一方の近傍に該調整用セルを挿入すべき状況か否か確認する確認手段と、
前記確認手段によって、前記一方の近傍に前記調整用セルが挿入可能であり、且つ該調整用セルを挿入すべき状況であることが判明した場合に、該調整用セルを挿入すべき位置として該一方の近傍を選択し決定する配置決定手段と、
を具備することを特徴とする自動配置装置。
【００６８】
（付記１０）
設計された電子回路のセル間を接続するネットのなかでタイミングエラーが発生している対象ネット上にタイミング調整のために挿入すべき調整用セルの位置を自動的に決定する自動配置装置であって、
前記対象ネットが複数の層に形成されることで複数のネットセグメントから構成されている場合に、該複数のネットセグメントをネットセグメントの長さによって分けるソート手段と、
前記ソート手段が長さで分けた前記ネットセグメントのなかで長さが長いネットセグメントを優先させる形で、前記調整用セルを挿入すべきネットセグメントを選択し決定する配置決定手段と、
を具備することを特徴とする自動配置装置。
【００６９】
（付記１１）
設計された電子回路のセル間を接続するネットのなかでタイミングエラーが発生している対象ネット上にタイミング調整のために挿入すべき調整用セルの位置を自動的に決定するためにコンピュータに実行させるプログラムであって、
前記電子回路が形成される基板を複数のエリアに分割して、該エリア毎に前記調整用セルを挿入できる余裕度を事前に評価する評価機能と、
前記対象ネットが存在するエリアで評価した余裕度に基づいて、該対象ネット上に前記調整用セルを挿入可能か否か判定する判定機能と、
前記調整用セルを挿入可能と前記判定機能により判定した対象ネットを対象にして、該調整用セルを挿入すべき位置の決定を行う配置決定機能と、
を実現させるためのプログラム。
【００７０】
（付記１２）
前記配置決定機能による前記調整用セルを挿入すべき位置の決定は、前記対象ネットに信号を出力する出力側セル、及び該信号を入力する入力側セルのうちの一方の近傍を優先させる形で行う、
ことを特徴とする付記１１記載のプログラム。
【００７１】
（付記１３）
前記対象ネットが複数の層に形成されることで複数のネットセグメントから構成されている場合、前記配置決定機能による前記調整用セルを挿入すべき位置の決定は、該ネットセグメントのなかで長さが長いネットセグメントを優先させる形で行う、
ことを特徴とする付記１１記載のプログラム。
【００７２】
（付記１４）
前記評価機能による前記複数のエリアへの分割は、各エリア内に、一つのセルが有する１つのピンを存在させる形で行う、
ことを特徴とする付記１１記載のプログラム。
【００７３】
（付記１５）
前記評価機能による前記余裕度の評価は、前記対象ネットに信号を出力する出力側セル、及び該信号を入力する入力側セルのうちの少なくとも一方に着目して、該対象ネットが接続された側に限定して行う、
ことを特徴とする付記１１記載のプログラム。
【００７４】
（付記１６）
設計された電子回路のセル間を接続するネットのなかでタイミングエラーが発生している対象ネット上にタイミング調整のために挿入すべき調整用セルの位置を自動的に決定するためにコンピュータに実行させるプログラムであって、
前記対象ネットに信号を出力する出力側セル、及び該信号を入力する入力側セルのうちの少なくとも一方の近傍に前記調整用セルを挿入可能か否か確認すると共に、該一方の近傍に該調整用セルを挿入すべき状況か否か確認する確認機能と、
前記確認機能によって、前記一方の近傍に前記調整用セルが挿入可能であり、且つ該調整用セルを挿入すべき状況であることが判明した場合に、該調整用セルを挿入すべき位置として該一方の近傍を選択し決定する配置決定機能と、
を実現させるためのプログラム。
【００７５】
（付記１７）
設計された電子回路のセル間を接続するネットのなかでタイミングエラーが発生している対象ネット上にタイミング調整のために挿入すべき調整用セルの位置を自動的に決定するためにコンピュータに実行させるプログラムであって、
前記対象ネットが複数の層に形成されることで複数のネットセグメントから構成されている場合に、該複数のネットセグメントをネットセグメントの長さによって分けるソート機能と、
前記ソート機能により長さで分けた前記ネットセグメントのなかで長さが長いネットセグメントを優先させる形で、前記調整用セルを挿入すべきネットセグメントを選択し決定する配置決定機能と、
を実現させるためのプログラム。
【図面の簡単な説明】
【００７６】
【図１】ＥＣＯが行われる場合の一般的な設計処理の流れを説明する図である。
【図２】本実施の形態による自動配置装置を搭載した自動レイアウト処理装置の構成を説明する図である。
【図３】本実施の形態による自動配置装置を搭載した自動レイアウト処理装置として用いることが可能なコンピュータのハードウェア構成を説明する図である。
【図４】調整用セル自動配置処理のフローチャートである。
【図５】挿入ポイント探索処理のフローチャートである。
【図６】分割されたブロック、及びその空きスペース率を説明する図である。
【図７】空きスペースマップの記述方法を説明する図である。
【図８】ネットの抵抗・容量を考慮した場合の調整用セルの理想的な挿入ポイントを説明する図である。
【図９】ソース端子を選択すべき状況を説明する図である。
【図１０】シンク端子を選択すべき状況を説明する図である。
【図１１】挿入ポイントの探索によって作成されるリストを説明する図である。
【図１２】空きスペース率の他の求め方を説明する図である。
【符号の説明】
【００７７】
３１    入力処理部
３２    表示制御部
３３    自動レイアウト処理部
３４    自動配置処理部
３５    記憶部
４１    マップ作成部
４２    探索部
４３    リスト作成部
【図１】
0004778339.tif 000002
【図２】
0004778339.tif 000003
【図３】
0004778339.tif 000004
【図４】
0004778339.tif 000005
【図５】
0004778339.tif 000006
【図７】
0004778339.tif 000007
【図８】
0004778339.tif 000008
【図１１】
0004778339.tif 000009
【図６】
0004778339.tif 000010
【図９】
0004778339.tif 000011
【図１０】
0004778339.tif 000012
【図１２】
0004778339.tif 000013