(57)【要約】【課題】ホールドエラーをより確実に修正することが可能なホールドエラー修正方法、ホールドエラー修正装置及びホールドエラー修正プログラムを提供する。【解決手段】ホールドエラー修正方法は、レイアウトデータ５３に対しタイミング解析を行ってタイミングレポート５４を生成し、ホールドエラーセルとは別のセルを置換元セルに選択し、置換元セルよりも駆動能力が小さいセルを置換先セルに選択し、レイアウトデータ５３において置換元セルを置換先セルに置換し、置換により生成された空き領域に、ホールドエラーセルのホールドエラーを修正するためのホールドバッファを挿入して、挿入したレイアウトデータを生成するものである。【選択図】図３
2013003944.tif 000002
【特許請求の範囲】
【請求項１】
複数のセルが配置配線されたレイアウトデータと、前記セルが定義されたライブラリデータとを記憶部に記憶し、
前記レイアウトデータに基づきタイミング解析を行い、解析結果であるタイミングレポートデータを前記記憶部に記憶し、
前記タイミングレポートデータを参照して特定されるホールドエラーセルとは別のセルを置換元セルに選択し、
前記ライブラリデータを参照して前記置換元セルよりも駆動能力が小さいセルを置換先セルに選択し、
前記レイアウトデータにおいて前記置換元セルを前記置換先セルに置換して、置換したレイアウトデータを前記記憶部に記憶し、
前記置換されたレイアウトデータにおいて前記置換により生成された空き領域に、前記ホールドエラーセルのホールドエラーを修正するためのホールドバッファを挿入して、挿入したレイアウトデータを前記記憶部に記憶する、ホールドエラー修正方法。
【請求項２】
前記置換先セルの選択は、前記置換元セルよりも駆動能力が小さく、かつ、前記置換元セルよりも高速動作可能なセルを前記置換先セルに選択する、請求項１に記載のホールドエラー修正方法。
【請求項３】
前記高速動作可能なセルは、前記置換元セルよりも動作閾値が低いセルである、請求項２に記載のホールドエラー修正方法。
【請求項４】
前記置換先セルの選択は、前記ライブラリデータに含まれる複数のセルのうちリーク電流が低いセルを前記置換先セルに選択する、請求項１乃至３のいずれかに記載のホールドエラー修正方法。
【請求項５】
前記置換元セルの選択は、前記タイミング解析の結果、セットアップタイムに余裕があるセルを前記置換元セルに選択する、請求項１乃至４のいずれかに記載のホールドエラー修正方法。
【請求項６】
前記セットアップの余裕は、タイミング制約を厳しく設定したタイミング解析により検出される、請求項５に記載のホールドエラー修正方法。
【請求項７】
前記置換元セルの選択は、前記ホールドエラーセルの周辺のセルを前記置換元セルに選択する、請求項１乃至６のいずれかに記載のホールドエラー修正方法。
【請求項８】
前記置換元セルの選択は、前記レイアウトデータにおけるレイアウト面を複数の領域に区分し、前記複数の領域のうちセル混雑度が基準値よりも低い領域のセルを前記置換元セルに選択する、請求項１乃至７のいずれかに記載のホールドエラー修正方法。
【請求項９】
前記セル混雑度は、前記領域の面積に対し当該領域内に配置された全セルの面積が占める割合である、請求項８に記載のホールドエラー修正方法。
【請求項１０】
前記複数の領域は、前記レイアウト面における角部から順に、前記レイアウト面を複数の矩形の領域に区分した領域である、請求項８または９に記載のホールドエラー修正方法。
【請求項１１】
前記複数の領域は、前記レイアウト面における前記ホールドエラーセル付近を中心として、前記レイアウト面を複数の矩形の領域に区分した領域である、請求項８または９に記載のホールドエラー修正方法。
【請求項１２】
前記領域の面積を変更し前記セル混雑度を再計算して、前記置換元セルを選択する、請求項８乃至１１のいずれかに記載のホールドエラー修正方法。
【請求項１３】
前記置換されたレイアウトデータについて、タイミング解析した結果、セットアップエラーが発生した場合、前記領域の面積を変更する、請求項１２に記載のホールドエラー修正方法。
【請求項１４】
前記ライブラリに前記置換先セルとして選択可能なセルが存在しない場合、前記領域の面積を変更する、請求項１２または１３に記載のホールドエラー修正方法。
【請求項１５】
コンピュータにホールドエラー修正処理を実行させるホールドエラー修正プログラムであって、前記ホールドエラー修正処理は、
複数のセルが配置配線されたレイアウトデータと、前記セルが定義されたライブラリデータとを記憶部に記憶し、
前記レイアウトデータに基づきタイミング解析を行い、解析結果であるタイミングレポートデータを前記記憶部に記憶し、
前記タイミングレポートデータを参照して特定されるホールドエラーセルとは別のセルを置換元セルに選択し、
前記ライブラリデータを参照して前記置換元セルよりも駆動能力が小さいセルを置換先セルに選択し、
前記レイアウトデータにおいて前記置換元セルを前記置換先セルに置換して、置換したレイアウトデータを前記記憶部に記憶し、
前記置換されたレイアウトデータにおいて前記置換により生成された空き領域に、前記ホールドエラーセルのホールドエラーを修正するためのホールドバッファを挿入して、挿入したレイアウトデータを前記記憶部に記憶する、ホールドエラー修正プログラム。
【請求項１６】
前記置換先セルの選択は、前記置換元セルよりも駆動能力が小さく、かつ、前記置換元セルよりも高速動作可能なセルを前記置換先セルに選択する、請求項１５記載のホールドエラー修正プログラム。
【請求項１７】
前記高速動作可能なセルは、前記置換元セルよりも動作閾値が低いセルである、請求項１６に記載のホールドエラー修正プログラム。
【請求項１８】
複数のセルが配置配線されたレイアウトデータと、前記セルが定義されたライブラリデータとを記憶する記憶部と、
前記レイアウトデータに基づきタイミング解析を行い、解析結果であるタイミングレポートデータを前記記憶部に記憶するタイミング解析部と、
前記タイミングレポートデータを参照して特定されるホールドエラーセルとは別のセルを置換元セルに選択する置換元セル選択部と、
前記ライブラリデータを参照して前記置換元セルよりも駆動能力が小さいセルを置換先セルに選択する置換先セル選択部と、
前記レイアウトデータにおいて前記置換元セルを前記置換先セルに置換して、置換したレイアウトデータを前記記憶部に記憶するセル置換部と、
前記置換されたレイアウトデータにおいて前記置換により生成された空き領域に、前記ホールドエラーセルのホールドエラーを修正するためのホールドバッファを挿入して、挿入したレイアウトデータを前記記憶部に記憶するホールドバッファ挿入部と、を備えるホールドエラー修正装置。
【請求項１９】
前記置換先セル選択部は、前記置換元セルよりも駆動能力が小さく、かつ、前記置換元セルよりも高速動作可能なセルを前記置換先セルに選択する、請求項１５記載のホールドエラー修正装置。
【請求項２０】
前記高速動作可能なセルは、前記置換元セルよりも動作閾値が低いセルである、請求項１９に記載のホールドエラー修正装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホールドエラー修正方法、ホールドエラー修正装置及びホールドエラー修正プログラムに関し、特に、ホールドバッファを挿入してホールドエラーを修正するホールドエラー修正方法、ホールドエラー修正装置及びホールドエラー修正プログラムに関する。
【背景技術】
【０００２】
半導体集積回路のレイアウト設計では、タイミング解析によりタイミングエラーを確認しながら回路の配置配線が行われており、近年の半導体集積回路の微細化、複雑化に伴い、タイミング制約を満たすように配置配線することが困難になってきている。
【０００３】
タイミング解析では、供給されるデータがクロックのどれくらい前から確定されるべきかを示すセットアップタイムと、供給されるデータがクロックのどれくらい後まで保持されるべきかを示すホールドタイムとについて、タイミング制約を満足するかどうか解析が行われる。セットアップタイムのタイミング制約が満足されないエラーをセットアップエラーといい、ホールドタイムのタイミング制約が満足されないエラーをホールドエラーという。なお、セットアップエラーが発生しているパスをセットアップエラーパス、セットアップエラーパスが含まれるセルをセットアップエラーセル、ホールドエラーが発生しているパスをホールドエラーパス、ホールドエラーパスが含まれるセルをホールドエラーセルという。
【０００４】
図１２のタイミングチャートは、データ、クロックとセットアップタイム、ホールドタイムとの関係を示している。
【０００５】
図１２（ａ）に示されるように、セットアップタイムは、データの確定時とクロックの立ち上がりエッジとの間の時間である。例えば、セットアップタイムのタイミング制約をＳＴ１とすると、ＳＴ１よりも前にデータが確定しているため、タイミング制約を満たしている。タイミング制約ＳＴ１とセットアップタイムとの差であるＳＴ２が、セットアップタイムの余裕（マージン）である。また、セットアップタイムのタイミング制約をＳＴ３とすると、ＳＴ３よりも後にデータが確定しているため、タイミング制約を満たさず、セットアップエラーとなる。なお、ＳＴ１よりもＳＴ３の方が制約を満たすことが難しいため、ＳＴ３は、ＳＴ１よりも制約が厳しいことになる。
【０００６】
図１２（ｂ）に示されるように、ホールドタイムは、クロックの立ち上がりエッジとデータの終了時との間の時間である。例えば、ホールドタイムのタイミング制約をＨＴ１とすると、ＨＴ１よりも後にデータが終了しているため、タイミング制約を満たしている。タイミング制約ＨＴ１とホールドタイムとの差であるＨＴ２が、ホールドタイムの余裕（マージン）である。また、ホールドタイムのタイミング制約をＨＴ３とすると、ＨＴ３よりも前にデータが終了しているため、タイミング制約を満たさず、ホールドエラーとなる。なお、ＨＴ１よりもＨＴ３の方が制約を満たすことが難しいため、ＨＴ３は、ＨＴ１よりも制約が厳しいことになる。
【０００７】
このようなセットアップエラー、ホールドエラーを修正する方法が提案されており、従来のホールドエラー修正方法として、例えば、特許文献１、２が知られている。なお、セルの最適化方法として、特許文献３，４も知られている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１０−１４６０４７号公報
【特許文献２】特開２００３−３３０９８６号公報
【特許文献３】特開２００１−２１０７２１号公報
【特許文献４】特開平７−９４５８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１，２に記載された従来のホールドエラー修正方法では、タイミング解析によりホールドエラーが検出されたパスに対しホールドバッファを挿入することで、データを遅延させ、ホールドタイムを満たすように修正している。なお、ホールドバッファとは、ホールドエラーを修正するための遅延回路である。
【００１０】
しかし、このようなホールドエラーパスのみを修正する方法では、修正箇所が局所的に混雑する傾向にあり、ホールドバッファが大量に挿入されて挿入可能な領域が不足すると、それ以上、ホールドバッファが挿入できない場合ある。
【００１１】
したがって、従来のホールドエラー修正方法では、ホールドエラーが検出されたパスにのみに着目しホールドバッファを挿入することから、領域不足によりホールドバッファが挿入できず、ホールドエラーを十分に修正することができないという問題があった。
【課題を解決するための手段】
【００１２】
本発明に係るホールドエラー修正方法は、複数のセルが配置配線されたレイアウトデータと、前記セルが定義されたライブラリデータとを記憶部に記憶し、前記レイアウトデータに基づきタイミング解析を行い、解析結果であるタイミングレポートデータを前記記憶部に記憶し、前記タイミングレポートデータを参照して特定されるホールドエラーセルとは別のセルを置換元セルに選択し、前記ライブラリデータを参照して前記置換元セルよりも駆動能力が小さいセルを置換先セルに選択し、前記レイアウトデータにおいて前記置換元セルを前記置換先セルに置換して、置換したレイアウトデータを前記記憶部に記憶し、前記置換されたレイアウトデータにおいて前記置換により生成された空き領域に、前記ホールドエラーセルのホールドエラーを修正するためのホールドバッファを挿入して、挿入したレイアウトデータを前記記憶部に記憶するものである。
【００１３】
本発明に係るホールドエラー修正プログラムは、コンピュータにホールドエラー修正処理を実行させるホールドエラー修正プログラムであって、前記ホールドエラー修正処理は、複数のセルが配置配線されたレイアウトデータと、前記セルが定義されたライブラリデータとを記憶部に記憶し、前記レイアウトデータに基づきタイミング解析を行い、解析結果であるタイミングレポートデータを前記記憶部に記憶し、前記タイミングレポートデータを参照して特定されるホールドエラーセルとは別のセルを置換元セルに選択し、前記ライブラリデータを参照して前記置換元セルよりも駆動能力が小さいセルを置換先セルに選択し、前記レイアウトデータにおいて前記置換元セルを前記置換先セルに置換して、置換したレイアウトデータを前記記憶部に記憶し、前記置換されたレイアウトデータにおいて前記置換により生成された空き領域に、前記ホールドエラーセルのホールドエラーを修正するためのホールドバッファを挿入して、挿入したレイアウトデータを前記記憶部に記憶するものである。
【００１４】
本発明に係るホールドエラー修正装置は、複数のセルが配置配線されたレイアウトデータと、前記セルが定義されたライブラリデータとを記憶する記憶部と、前記レイアウトデータに基づきタイミング解析を行い、解析結果であるタイミングレポートデータを前記記憶部に記憶するタイミング解析部と、前記タイミングレポートデータを参照して特定されるホールドエラーセルとは別のセルを置換元セルに選択する置換元セル選択部と、前記ライブラリデータを参照して前記置換元セルよりも駆動能力が小さいセルを置換先セルに選択する置換先セル選択部と、前記レイアウトデータにおいて前記置換元セルを前記置換先セルに置換して、置換したレイアウトデータを前記記憶部に記憶するセル置換部と、前記置換されたレイアウトデータにおいて前記置換により生成された空き領域に、前記ホールドエラーセルのホールドエラーを修正するためのホールドバッファを挿入して、挿入したレイアウトデータを前記記憶部に記憶するホールドバッファ挿入部と、を備えるものである。
【００１５】
本発明では、ホールドエラーが発生したホールドエラーセルとは別のセルを、駆動能力の小さいセルに置換し、置換により空いた領域にホールドバッファを挿入するため、より確実にホールドエラーを修正することができる。
【発明の効果】
【００１６】
本発明によれば、ホールドエラーをより確実に修正することが可能なホールドエラー修正方法、ホールドエラー修正装置及びホールドエラー修正プログラムを提供することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施の形態１に係る自動レイアウト装置の構成を示すブロック図である。
【図２】本発明の実施の形態１に係る自動レイアウト処理の動作を示すフローチャートである。
【図３】本発明の実施の形態１に係るホールドエラー修正処理の動作を示すフローチャートである。
【図４】本発明の実施の形態１に係るホールドエラー修正処理の動作を説明するための図である。
【図５】本発明の実施の形態１に係る置換先セル選択処理の動作を示すフローチャートである。
【図６】本発明の実施の形態１に係る置換先セル選択処理の動作を説明するための図である。
【図７】本発明の実施の形態２に係る置換先セル選択処理の動作を示すフローチャートである。
【図８】本発明の実施の形態２に係る置換先セル選択処理の動作を説明するための図である。
【図９】本発明の実施の形態２に係る置換先セル選択処理の動作を説明するための図である。
【図１０】本発明の実施の形態３に係る置換先セル選択処理の動作を示すフローチャートである。
【図１１】本発明の実施の形態３に係る置換先セル選択処理の動作を説明するための図である。
【図１２】セットアップタイムとホールドタイムを説明するための図である。
【発明を実施するための形態】
【００１８】
本発明の実施の形態１
以下、図面を参照して本発明の実施の形態１について説明する。まず、図１を用いて、本発明の実施の形態１に係る自動レイアウト装置の構成について説明する。この自動レイアウト装置１００は、半導体集積回路におけるレイアウト設計を自動的に行う装置であり、セル（論理回路）を配置配線し、タイミングエラーの最適化を行う。自動レイアウト装置１００では、複数の論理回路を含むセルベースにレイアウト設計が行われる。
【００１９】
図に示されるように、この自動レイアウト装置１００は、制御部１と記憶部２を備えている。例えば、自動レイアウト装置１００は、パーソナルコンピュータ等の情報処理装置であり、制御部１は、ＣＰＵ等の制御装置からなり、記憶部２は、メモリやハードディスク等の記憶装置からなる。そして、記憶部２には制御部１の各ブロックに対応したプログラム（ツール）が格納されており、制御部１が各プログラムを実行することで、各ブロックが実現される。なお、ここでは、制御部１と記憶部２を１つの装置としているが、複数の装置をネットワーク等で接続し構成してもよい。制御部１と記憶部２を別装置としたり、制御部１の各ブロックや記憶部２の各データを複数の装置に分散させてもよい。
【００２０】
記憶部２に格納される各データ、制御部１で実行される各ブロック（処理部）について説明する。記憶部２には、ネットリスト５１、ライブラリ５２、レイアウトデータ５３、タイミングレポート５４、第１のタイミング制約５５ａ、第２のタイミング制約５５ｂ、混雑度計算領域５６、混雑度判定基準５７、セルリスト５８が格納されており、その他、制御部１が使用する各種プログラム及び各種データが格納されている。
【００２１】
ネットリスト５１は、論理回路の構成や接続関係が記述されたデータであり、論理設計の段階であらかじめ生成されている。
【００２２】
ライブラリ５２は、論理回路を含むセルに関する情報が定義されたデータであり、各セルのセル名、機能、特性、大きさ、サイズ、端子位置等が記述されている。システムで使用するセルが決まっており、使用可能なセルがあらかじめライブラリ５２に格納されている。
【００２３】
レイアウトデータ５３は、半導体チップのレイアウト面における配置配線データであり、配置されるセルの位置、セル間を接続する配線の位置等が記述されている。
【００２４】
タイミングレポート５４は、タイミング解析した結果として得られるデータであり、各論理回路を接続するパスについて、遅延時間、制約、余裕等が記述されている。
【００２５】
第１のタイミング制約５５ａ、第２のタイミング制約５５ｂは、タイミング解析のために与えられる制約データであり、それぞれセットアップタイム及びホールドタイムのタイミング制約が含まれている。第１のタイミング制約５５ａは、半導体集積回路のシステムとして要求する通常のタイミング制約である。半導体集積回路のレイアウトを完了するためには、第１のタイミング制約５５ａを満たさなければならない。また、第２のタイミング制約５５ｂは、通常よりも厳しいタイミング制約であり、後述するように、タイミングに余裕のあるセルを判定するために用いられる。
【００２６】
混雑度計算領域５６は、セル混雑度（セル占有率）を計算する単位となる領域のデータであり、領域のサイズが記述されている。例えば、領域のサイズは、縦×横の大きさ、面積、形状等である。
【００２７】
混雑度判定基準５７は、セル混雑度を判定する基準データであり、その領域がセルを修正できる程度に空いているかどうかの基準である。
【００２８】
セルリスト５８は、複数のセルの一覧データであり、修正可能なセルを選択するために、候補となるセルを記述する。
【００２９】
制御部１は、配置配線部２０、タイミング解析部３０、セットアップエラー修正部４０、ホールドエラー修正部１０を備えている。なお、制御部１に含まれる各ブロック、ホールドエラー修正部１０に含まれる各ブロックは、一例であって、後述の自動レイアウト処理、ホールドエラー修正処理、置換先セル選択処理が実行できれば、その他のブロックにより構成されてもよい。
【００３０】
配置配線部２０は、論理設計により作成されたネットリスト５１に基づき、セルの自動配置配線を行ってレイアウトデータ５３を生成する処理部であり、レイアウトツール（プログラム）の実行により実現される。
【００３１】
タイミング解析部３０は、レイアウトデータ５３に基づき、論理回路を含むパスのタイミングを解析してタイミングレポート５４を生成する処理部であり、静的タイミング解析（Static Timing Analysis）ツールの実行により実現される。なお、タイミング解析は、配置配線、セットアップエラー修正、ホールドエラー修正の各処理に必要な処理であるため、各処理の一部として実行され、あるいは、各処理からの要求により実行される。
【００３２】
セットアップエラー修正部４０は、タイミングレポート５４によりセットアップエラーが検出された場合に、セットアップエラーを自動的に修正する処理部であり、セットアップエラー修正ツールの実行により実現される。
【００３３】
ホールドエラー修正部１０は、タイミングレポート５４によりホールドエラーが検出された場合に、ホールドエラーを自動的に修正する処理部であり、ホールドエラー修正ツールの実行により実現される。
【００３４】
さらに、ホールドエラー修正部１０は、ホールドバッファ挿入部１１、セル混雑度計算部１２、余裕セル判定部１３、置換先セル選択部１４、セル置換部１５を備えている。
【００３５】
ホールドバッファ挿入部１１は、配置配線されたレイアウトデータ５３に対し、ホールドエラーを修正するために、空いている領域にホールドバッファを挿入する処理部であり、ホールドバッファ挿入ツールの実行により実現される。
【００３６】
セル混雑度計算部１２は、混雑度計算領域５６で規定される領域について、当該領域内に配置されている全セルの面積の割合であるセル混雑度を計算する処理部であり、セル混雑度計算ツールの実行により実現される。
【００３７】
余裕セル判定部１３は、セットアップタイムのタイミング制約を満たすセルが、セットアップタイムに余裕があるかどうか判定する処理部であり、余裕セル判定ツールの実行により実現される。ここでは、第２のタイミング制約５５ｂを満たすかどうかで余裕のあるセルを判定する。すなわち、余裕セル判定部１３は、ホールドエラーセルとは別のセルを置換元セルに選択する置換元セル選択部である。
【００３８】
置換先セル選択部１４は、現在配置されているセルを、どのセルに置換するのか、置換先のセルを選択する処理部であり、置換先セル選択ツールの実行により実現される。ここで、一のセルを他のセルに置換する場合に、置換前に配置されていて置換により他のセルに置き換えられる一のセルを置換元セルといい、置換により一のセルに代わって新たに配置される他のセルを置換先セルという。
【００３９】
セル置換部１５は、レイアウトデータ５３において、置換元セルを置換先のセルに置き換える処理部であり、セル置換ツールの実行により実現される。
【００４０】
次に、図２のフローチャートを用いて、本発明の実施の形態１に係る自動レイアウト処理について説明する。この処理は、自動レイアウト装置１００により実行される処理である。
【００４１】
図に示されるように、本実施形態の自動レイアウト処理が開始されると、まず、セルの配置配線が行われる（Ｓ１０１）。すなわち、配置配線部２０は、ネットリスト５１及びライブラリ５２を記憶部２から取得し、ネットリスト５１に従って、ライブラリ５２に定義されたセルの配置及びセル間の配線を行い、配置配線されたレイアウトデータ５３を生成して記憶部２に格納する。
【００４２】
次いで、生成されたレイアウトデータ５３に対しタイミング解析が行われる（Ｓ１０２）。すなわち、タイミング解析部３０は、配置配線がなされたレイアウトデータ５３及び第１のタイミング制約５５ａを記憶部２から取得し、第１のタイミング制約５５ａのもとで、レイアウトデータ５３に定義された全パスの遅延値を算出してタイミング解析を行い、タイミングレポート５４を生成して記憶部２に格納する。ここでは、まずセットアップエラーを解消するために、セットアップタイムのタイミングを解析する。
【００４３】
次いで、タイミング解析されたレイアウトデータ５３に対しセットアップエラーの修正が行われる（Ｓ１０３）。すなわち、セットアップエラー修正部４０は、レイアウトデータ５３、ライブラリ５２及びタイミングレポート５４を記憶部２から取得し、タイミングレポート５４でセットアップエラーが発生している場合、セットアップタイムのタイミング制約を満たすようにセルの配置配線を変更し、セットアップエラー修正後のレイアウトデータ５３を記憶部２に格納する。例えば、セットアップエラーが発生しているパスを含むセルについて、ライブラリ内の駆動能力の高いセルに置換することで、データ伝達時間を速め、セットアップエラーを解消する。なお、さらにタイミング解析を行って、セットアップエラーの解消を確認するとともに、次のステップでホールドエラーを解消するために、ホールドタイムのタイミングを解析する。
【００４４】
次いで、タイミング解析されたレイアウトデータ５３に対しホールドエラー修正処理が実行される（Ｓ１０４）。すなわち、ホールドエラー修正部１０は、セットアップエラーが修正されたレイアウトデータ５３、ライブラリ５２及びタイミングレポート５４を記憶部２から取得し、タイミングレポート５４でホールドエラーが発生している場合、ホールドタイムのタイミング制約を満たすようにセルの配置配線を変更し、ホールドエラー修正後のレイアウトデータ５３を記憶部２に格納する。ホールドエラーの修正が終了すると、自動レイアウト処理が終了する。
【００４５】
ここで、このホールドエラー修正処理（Ｓ１０４）の詳細について、図３のフローチャートを用いて説明する。図に示されるように、ホールドエラー修正処理が開始されると、まず、レイアウトデータ５３にホールドバッファが挿入される（Ｓ２０１）。すなわち、ホールドバッファ挿入部１１は、レイアウトデータ５３、ライブラリ５２及びタイミングレポート５４を記憶部２から取得し、タイミングレポート５４でホールドエラーが発生している場合、ホールドバッファを挿入し、ホールドバッファ挿入後のレイアウトデータ５３を記憶部２に格納する。ここでは、レイアウトデータ５３から配置可能な箇所を検出して、ホールドバッファを配置し、ホールドエラーが発生しているパスにホールドバッファを挿入接続することで、データを遅延させ、ホールドエラーの解消を図る。特に、本実施形態では、後述のセル置換（Ｓ２０９）により空いた領域にホールドバッファを配置する。
【００４６】
次いで、ホールドバッファが挿入されたレイアウトデータ５３に対しタイミング解析が行われる（Ｓ２０２）。すなわち、ホールドバッファの挿入によりホールドエラーが解消されているかどうか確認するために、ホールドバッファ挿入部１１は、レイアウトデータ５３及び第１のタイミング制約５５ａを記憶部２から取得し、第１のタイミング制約５５ａのもとで、レイアウトデータ５３のタイミング解析を行い、タイミングレポート５４を生成して記憶部２に格納する。なお、セットアップエラーはすでに解消しているため、ここでは、ホールドタイムのタイミングを解析する。
【００４７】
次いで、タイミングレポート５４にホールドエラーが存在するかどうか判定される（Ｓ２０３）。すなわち、ホールドバッファ挿入部１１は、タイミングレポート５４を記憶部２から取得し、タイミングレポート５４の全パスについて、ホールドタイムの第１のタイミング制約５５ａを満たすかどうか判定し、全てのパスがタイミング制約を満たしていればホールドエラーは無いと判定し、パスが一つでもタイミング制約を満たしていなければホールドエラーは有ると判定する。
【００４８】
Ｓ２０３において、ホールドエラーが無いと判定された場合、ホールドバッファの挿入により、セットアップエラー及びホールドエラーが解消したことになるため、ホールドエラー修正処理が終了し、自動レイアウト処理（図２）も終了する。
【００４９】
また、Ｓ２０３において、ホールドエラーが有ると判定された場合、ホールドバッファが挿入されたレイアウトデータ５３に対してセル混雑度（セル占有率）が計算される（Ｓ２０４）。すなわち、セル混雑度計算部１２は、レイアウトデータ５３、ライブラリ５２、混雑度計算領域５６、混雑度判定基準５７を記憶部２から取得し、レイアウトデータ５３についてのセル混雑度を計算し、セル混雑度を記憶部２に格納する。例えば、混雑度計算領域５６等とともにセル混雑度を記憶する。
【００５０】
つまり、本実施形態では、ホールドバッファを挿入するためにセルを置換し空き領域を確保することから、この空き領域が確保可能な領域であるかどうかを判断するため、セル混雑度を計算し、セル混雑度が混雑度判定基準５７を満たす領域を修正領域に選択する。
【００５１】
具体的には、セル混雑度計算部１２は、レイアウトデータ５３のレイアウト面を混雑度計算領域５６毎に区分し、区分された各領域についてセル混雑度を計算する。例えば、混雑度計算領域５６は、縦×横が１００μｍ×１００μｍの矩形である。レイアウト面の区分は、レイアウト面の角部や端部から順に区分してもよいし、ホールドエラーが発生しているエラーパス付近を中心として、エラーパス付近から順に区分してもよい。セル混雑度は次の式１により求められる。
セル混雑度＝混雑度計算領域内に配置されているセルの面積の合計／混雑度計算領域の面積  ・・・（式１）
【００５２】
例えば、レイアウトデータ５３を参照して各領域内に配置されている各セルを特定し、ライブラリ５２を参照して各セルの面積を特定し、配置されているセル数とセル面積によりセル面積の合計を求め、混雑度計算領域の面積で割ることにより、セル混雑度を算出する。
【００５３】
さらに、各領域について算出したセル混雑度が、混雑度判定基準５７と比べて大きい場合には、ホールドバッファを挿入することができないため、修正不可能な領域と判断し、混雑度判定基準５７と比べて小さい場合には、修正可能な領域と判断する。例えば、混雑度判定基準５７は９５％である。混雑度判定基準５７は、混雑度計算領域の面積と挿入されるホールドバッファの面積等を考慮して決定することが好ましい。例えば、領域毎のセル混雑度を記憶する際に、領域毎に修正可・不可についても記憶しておく。そして、修正可とした領域についてＳ２０５以降の修正が行われる。修正可能な領域が複数存在する場合には、Ｓ２０５以降の処理が繰り返される。なお、修正可能な領域が存在しない場合、混雑度計算領域５６を拡大し（Ｓ２１３）、さらにセル混雑度を計算してもよい。
【００５４】
次いで、セル混雑度が混雑度判定基準５７を満たす領域について、エラー箇所周辺のセルリストが作成される（Ｓ２０５）。すなわち、セル混雑度計算部１２は、レイアウトデータ５３、ライブラリ５２、タイミングレポート５４を記憶部２から取得し、ホールドエラーが発生しているエラーパス付近を中心として、ホールドエラーパス周辺に配置されている複数のセルを特定し、これらの複数のセルをセルリスト５８として記憶部２に記憶する。そして、このセルリストの各セルについて、Ｓ２０６以降の修正処理が行われる。
【００５５】
すなわち、本実施形態では、ホールドエラーが発生しているセル周辺の複数セルを置換元セルの選択候補とする。ホールドエラーセルの周辺について、空き領域を設け、ホールドバッファを配置することで、エラー箇所の近くにホールドバッファを挿入できるため、ホールドエラーを効果的に修正できる。エラーセルの周辺に限らず、エラーセルの近傍であれば同様の効果が得られる。なお、タイミング遅延や配線上の影響が少なければ、エラーセル周辺に限らず、例えば、混雑度計算領域内の任意のセルを置換元セルの選択候補としてもよい。
【００５６】
次いで、レイアウトデータ５３に対して厳しいタイミング制約によりタイミング解析が行われる（Ｓ２０６）。すなわち、余裕セル判定部１３は、現在のレイアウトデータ５３及び第２のタイミング制約５５ｂを記憶部２から取得し、第２のタイミング制約５５ｂのもとで、レイアウトデータ５３のタイミング解析を行い、タイミングレポート５４を生成して記憶部２に格納する。
【００５７】
つまり、本実施形態では、セットアップタイムに余裕のあるセルを置換元セルに選択することから、セットアップタイムの厳しいタイミング制約である第２のタイミング制約５５ｂにより、セットアップタイムのタイミングを解析する。具体的には、セットアップに余裕があるセルを特定するために、セットアップタイムがより長く、すなわち、クロックの前にデータ供給されるタイミングがより早いことを条件とする。例えば、第２のタイミング制約５５ｂは、１００ｐｓである。このタイミング制約は、置換されるセルや挿入されるバッファ等を考慮して決定することが好ましい。
【００５８】
なお、セットアップタイムに余裕があり、かつ、波形なまりが小さいセルを置換元セルに選択することが、より好ましい。波形なまりが小さい方が、データの変化するタイミングが速いためである。
【００５９】
次いで、Ｓ２０６のタイミング解析の結果、セットアップタイムに余裕のあるセルがあるかどうか判定する（Ｓ２０７）。すなわち、余裕セル判定部１３は、厳しいタイミング制約でタイミング解析されたタイミングレポート５４を記憶部２から取得し、タイミングレポート５４の全パスについて、セットアップタイムの第２のタイミング制約５５ｂを満たすかどうか判定し、タイミング制約を満たすセルを置換元セルとして選択する。
【００６０】
セルリスト５８のセルについて、タイミング制約を満たすパスを含むセルが有ればセットアップタイムに余裕のあるセルが有ると判定し、タイミング制約を満たすパスを含むセルが無ければセットアップタイムに余裕のあるセルが無いと判定する。セットアップタイムに余裕のあるセルが有る場合、余裕のあるセルを置換元セルとして、Ｓ２０８以降の修正が行われる。例えば、記憶部２のセルリスト５８において、余裕のあるセルを置換元セルとして記憶しておく。なお、余裕のあるセルが複数存在する場合には、Ｓ２０８以降の処理を繰り返してもよい。
【００６１】
Ｓ２０７において、セットアップタイムに余裕のあるセルが無いと判定された場合、混雑度計算領域５６が拡大される（Ｓ２１３）。すなわち、セットアップタイムに余裕のあるセルが無い場合は、置換元セルとして選択可能なセルが存在せずホールドエラーを修正できないため、混雑度計算領域５６を拡大して記憶部２に格納し、さらに混雑度計算（Ｓ２０４）以降を繰り返して、新たに修正可能なセルを選択する。
【００６２】
また、Ｓ２０７において、セットアップタイムに余裕のあるセルが有ると判定された場合、置換先セルの選択処理が実行される（Ｓ２０８）。すなわち、置換先セル選択部１４は、ライブラリ５２を記憶部２から取得し、ライブラリ５２の中から置換条件を満たすセルを選択して、例えば、置換先セルを記憶部２に格納する。この処理では後述するように、ホールドバッファを挿入可能にするために、置換元セルよりも面積の小さいセルを選択する。
【００６３】
次いで、レイアウトデータ５３において置換元セルを置換先セルに置換する（Ｓ２０９）。すなわち、セル置換部１５は、レイアウトデータ５３を記憶部から取得し、Ｓ２０７で選択された置換元セルをＳ２０８で選択された置換先セルに置換し、置換したレイアウトデータ５３を記憶部２に格納する。
【００６４】
次いで、置換後のレイアウトデータ５３についてタイミング解析が行われる（Ｓ２１０）。すなわち、Ｓ２０９の置換によりセットアップエラーが新たに発生していないことを確認するため、セル置換部１５は、置換後のレイアウトデータ５３、第１のタイミング制約５５ａを記憶部２から取得し、第１のタイミング制約５５ａのもとで、レイアウトデータ５３のタイミング解析を行い、タイミングレポート５４を生成して記憶部２に格納する。ここでは、主にセットアップタイムのタイミングを解析するが、空き領域に対するホールドバッファの挿入を確認するため、ホールドタイムのタイミングも解析する。
【００６５】
次いで、タイミングレポート５４にセットアップエラーがあるかどうか判定される（Ｓ２１１）。すなわち、セル置換部１５は、タイミングレポート５４を記憶部２から取得し、置換後のレイアウトデータ５３に対するタイミングレポート５４の全パスについて、セットアップタイムの第１のタイミング制約５５ａを満たすかどうか判定し、全てのパスがタイミング制約を満たしていればセットアップエラーは無いと判定し、パスが一つでもタイミング制約を満たしていなければセットアップエラーは有ると判定する。
【００６６】
Ｓ２１１において、セットアップエラーが有ると判定された場合、混雑度計算領域５６が拡大される（Ｓ２１３）。すなわち、この場合には、セルの置換により新たにセットアップエラーが発生したため、置き換えた置換先セルをもとの置換元セルにして、置換前のレイアウトデータ５３に戻す。そして、上記と同様に、混雑度計算領域５６を拡大して、混雑度計算（Ｓ２０４）以降を繰り返す。
【００６７】
また、Ｓ２１１において、セットアップエラーが無いと判定された場合、タイミングレポート５４にホールドエラーがあるかどうか判定される（Ｓ２１２）。すなわち、セル置換部１５は、タイミングレポート５４を記憶部２から取得し、置換後のレイアウトデータ５３に対するタイミングレポート５４の全パスについて、ホールドタイムの第１のタイミング制約５５ａを満たすかどうか判定し、全てのパスがタイミング制約を満たしていればホールドエラーは無いと判定し、パスが一つでもタイミング制約を満たしていなければホールドエラーは有ると判定する。
【００６８】
Ｓ２１２において、ホールドエラーが無いと判定された場合、セルの置換により、セットアップエラー及びホールドエラーが解消したことになるため、ホールドエラー修正処理が終了し、自動レイアウト処理（図２）も終了する。
【００６９】
また、Ｓ２１２において、ホールドエラーが有ると判定された場合、ホールドバッファが挿入され（Ｓ２０１）、以降の処理が繰り返される。つまり、セル置換により空いた領域に対しホールドバッファが挿入され、ホールドエラーが修正される。
【００７０】
このように、ホールドエラーが無くなるまでＳ２０１〜Ｓ２１２が繰り返される。なお、修正可能なセルが無い場合、混雑度計算領域５６を拡大して処理を繰り返すが、混雑度計算領域５６をレイアウト面の最大範囲まで拡大しても修正可能なセルが無い場合には、ホールドエラーが修正不可能であるとして、処理を終了する。
【００７１】
ここで、図４を用いて、ホールドエラー修正処理の具体的な動作の例を説明する。図３のフローチャートと対応して説明すると、まず、ホールドバッファの挿入、タイミング解析、ホールドエラーが判定される（Ｓ２０１〜Ｓ２０３）。
【００７２】
次いで、図４（ａ）のように、セル混雑度が計算される（Ｓ２０４）。すなわち、半導体チップのレイアウト面２００を格子状に区分して、複数の矩形である混雑度計算領域２０１を設定する。すなわち、この例はレイアウト面を角部から区分した例である。そして、各領域について、領域の面積と配置されているセルの面積とからセル混雑度を計算する。さらに、これらのセルから、セル混雑度が混雑度判定基準５７よりも小さい領域を選択する。ここでは、領域２０２をセル混雑度が小さい領域とする。
【００７３】
次いで、図４（ｂ）のように、エラー箇所周辺のセルリストを作成する（Ｓ２０５）。すなわち、混雑度が小さいと判定した領域２０２について、ホールドエラーが発生しているセル２１０を特定し、セル２１０の周辺のセル２１１〜２１６をセルリスト５８として記憶する。
【００７４】
次いで、図４（ｃ）のように、タイミング解析によりセットアップに余裕のあるセルを特定する（Ｓ２０６〜Ｓ２０７）。すなわち、第２のタイミング制約５５ｂによるタイミング解析の結果、周辺のセル２１１〜２１６のうちから、セットアップに余裕のあるセル２１１を置換元セルとして選択する。
【００７５】
次いで、図４（ｄ）のように、置換先セルを選択してセルを置換し、ホールドバッファを挿入する（Ｓ２０８〜Ｓ２１２、Ｓ２０１）。すなわち、置換元セルのセル２１１よりも小さいセル２１１ａを置換先セルとして選択し、セル２１１をセル２１１ａに置換する。そして、この置換により空いた領域に、ホールドバッファ２２０を挿入する。このホールドバッファ２２０によりセル２１０のホールドエラーが解消すると、ホールドエラー修正処理が終了する。なお、置換先セルを配置する位置は、空き領域がより大きく確保できるように、置換元セルが配置されていた領域の端部に寄せて配置することが好ましい。また、エラーセルとホールドバッファがより近づくように、配置後の空き領域がエラーセルにより近い位置、つまり、配置先セルがエラーセルにより遠い位置に配置することが好ましい。このため、図４（ｄ）では、置換先セル２１１ａをエラーセル２１０より遠い位置、エラーセル２１０に接しない位置に配置しており、空き領域、つまり、ホールドバッファ２２０をエラーセル２１０に近い位置、エラーセル２１０に接する位置に配置している。
【００７６】
次に、図３の置換先セル選択処理（Ｓ２０８）の詳細について、図５のフローチャートを用いて説明する。図に示されるように、置換先セルの選択処理が開始されると、ライブラリ５２にサイズ（面積）の小さいセルがあるかどうか判定する（Ｓ３０１）。すなわち、置換先セル選択部１４は、ライブラリ５２を記憶部２から取得し、ライブラリ５２内のセルを順次判定して、Ｓ２０７で選択された置換元セルよりも面積が小さいセルを検索する。
【００７７】
ここで、一般的にセルの面積と駆動能力は比例関係にあるため、小さいセルとは駆動能力の小さいセルである。このため、本実施形態でサイズの小さいセルを選択することは、換言すれば、駆動能力の小さいセルを選択することである。
【００７８】
Ｓ３０１において、サイズの小さいセルがライブラリ５２に無いと判定された場合、図３のＳ２１３に戻って、混雑度計算領域５６を拡大し、混雑度計算（Ｓ２０４）以降を繰り返す。
【００７９】
また、Ｓ３０１において、サイズの小さいセルがライブラリ５２に有ると判定された場合、そのセルを置換先セルとして決定する（Ｓ３０２）。すなわち、置換先セル選択部１４は、ライブラリ５２のセルのうち面積の小さいセルを置換先セルに決定して、例えば記憶部２に格納する。その後、選択した置換先セルによりセルの置換（Ｓ２０９）が行われる。
【００８０】
なお、面積の小さいセルが複数見つかった場合、いずれを置換先セルとすることも可能である。この場合、面積（駆動能力）の小さい順、または、面積（駆動能力）の大きい順に選択して、タイミング解析することで、タイミングエラーの無いセルを選択することが好ましい。
【００８１】
ここで、図６を用いて、置換先セルの選択処理の具体的な動作の例を説明する。図６は、ライブラリ５２に格納されたセルの一例である。ここでは、各セル毎に、番号、セルタイプ、セル名、駆動能力、面積が格納されている。そして、セル１−１〜１−３が、面積の大きい順、すなわち、駆動能力の大きい順に並んでいる。
【００８２】
本実施形態では、置換先セルの選択基準としてより面積（駆動能力）が小さいセルを選択する（Ｓ３０１）。例えば、置換元セルをセル１−２とすると、セル１−２よりも面積が小さいセル１−３を置換先セルとして選択する。
【００８３】
また、置換元セルをセル１−１とすると、セル１−１よりも面積が小さいセル１−２またはセル１−３が置換先セルとして選択可能である。
【００８４】
例えば、面積の大きい順に選択すると、まず、セル１−２を選択して、タイミングエラーが発生しない場合、セル１−３を選択する。そして、このセル１−３で、タイミングエラーが発生しなければ、セル１−３を置換先セルに決定し、タイミングエラーが発生すれば、セル１−２を置換先セルに決定する。
【００８５】
また、例えば、面積の小さい順に選択すると、まず、セル１−３を選択して、タイミングエラーが発生しない場合、セル１−３を置換先セルに決定する。また、セル１−３で、タイミングエラーが発生した場合に、セル１−２を選択する。
【００８６】
以上のように、本実施形態では、ホールドエラーが発生しているパスを含むセルとは別のセルに着目し、このエラーの発生していないセルを置換元セルとした。そして、置換元セルをサイズの小さいセルに置換し、空いた領域にホールドバッファを挿入することにより、ホールドエラーを修正するようにした。これにより、ホールドエラーを確実に修正することができる。
【００８７】
すなわち、従来のホールドエラー修正方法では、ホールドエラーが発生しているパスにのみ着目していたため、ホールドバッファを挿入するための領域が不足する場合があったが、本実施形態では、ホールドエラーが発生していないセルを置換することで空き領域を生成するため、従来と比べて、空き領域を確実に確保することが可能である。特に駆動能力の小さいセルを置換先セルに選択することで確実に空き領域を確保できる。
【００８８】
また、本実施形態では、セットアップタイムに余裕のあるセルを置換元セルに選択するため、セルの置換により、セットアップエラーが発生することを抑制することができる。特に駆動能力の小さいセルに置換すると、データの遅延が大きくなりセットアップエラーの発生が予想されるため、セットアップタイムに余裕のあるセルを選択することが有効である。
【００８９】
さらに、本実施形態では、ホールドエラーが発生しているセルの周辺セルを置換元セルに選択しているため、ホールドエラーの箇所の近くにホールドバッファを配置でき、ホールドエラーを容易に修正できる。ホールドエラーの箇所とホールドバッファとの距離が離れていると、配線長が長くなることから、配線による遅延も考慮する必要があり、タイミングエラーの収束が困難となるため、ホールドエラーの近くのセルを選択することによる効果が大きい。また、エラーの近くにホールドバッファを配置することにより、配線エラー数の減少、迂回配線の抑制、設計ＴＡＴ（Turn Around Time）の向上を図ることができる。
【００９０】
さらに、本実施形態では、セル混雑度が基準よりも低い領域について、ホールドエラーの修正を行うため、確実にホールドバッファを挿入しホールドエラーを修正できる。すでにセルが混雑している領域に対し、ホールドエラーを修正しようとしても、ホールドバッファが挿入できないため、修正処理を無駄に実行することになる。ホールドバッファが挿入できるように、セルが混雑していない領域に対し、ホールドエラー修正処理を実行することで、無駄な処理の実行を防ぐことができ、処理の高速化が図れる。
【００９１】
本発明の実施の形態２
次に、本発明の実施の形態２について説明する。本実施形態では、実施の形態１と比べて、置換先セルの選択処理のみ相違しており、他の処理については同様である。
【００９２】
図７を用いて、本発明の実施の形態２に係る置換先セル選択処理（Ｓ２０８）の詳細について説明する。図に示されるように、本実施形態の置換先セルの選択処理が開始されると、まず、図５と同様にして、ライブラリ５２にサイズの小さいセルがあるかどうか判定し（Ｓ３０１）、サイズの小さいセルが置換先セルに決定される（Ｓ３０２）。
【００９３】
次いで、タイミング解析が行われ（Ｓ３０３）、セットアップエラーが判定される（Ｓ３０４）。すなわち、置換先セル選択部１４は、サイズの小さいセルに置換したレイアウトデータ５３についてタイミング解析を行い、タイミングレポート５４が第１のタイミング制約５５ａを満たしているかどうかにより、セットアップエラーの有無を判定する。
【００９４】
Ｓ３０４において、セットアップエラーが無いと判定された場合、図３のＳ２０１に戻って、ホールドバッファを挿入し、Ｓ２０１以降の処理を繰り返す。
【００９５】
また、Ｓ３０４において、セットアップエラーが有ると判定された場合、サイズが小さく、低Ｖｔのセルがあるかどうか判定する（Ｓ３０５）。すなわち、置換先セル選択部１４は、ライブラリ５２を記憶部２から取得し、ライブラリ５２内のセルを順次判定して、Ｓ２０７で選択された置換元セルよりも面積が小さく、かつ、低Ｖｔのセルを検索する。
【００９６】
低Ｖｔとは、通常の回路よりも動作閾値Ｖｔが低い回路のことであり、低電圧で動作するため、より高速に動作することが可能な回路である。すなわち、本実施形態でＶｔの低いセルを選択することは、換言すれば、動作速度の速いセルを選択することである。高速なセルを選択することによりセットアップエラーの発生を防ぐことができる。
【００９７】
Ｓ３０５において、サイズが小さく低Ｖｔのセルがライブラリ５２に無いと判定された場合、図３のＳ２１３に戻って、混雑度計算領域５６を拡大し、混雑度計算（Ｓ２０４）以降を繰り返す。
【００９８】
また、Ｓ３０５において、サイズが小さく低Ｖｔのセルがライブラリ５２に有ると判定された場合、そのセルを置換先セルとして決定する（Ｓ３０６）。すなわち、置換先セル選択部１４は、ライブラリ５２のセルのうち面積が小さく、低Ｖｔのセルを置換先セルに決定して、例えば記憶部２に格納する。その後、選択した置換先セルによりセルの置換（Ｓ２０９）が行われる。
【００９９】
なお、低Ｖｔのセルが複数見つかった場合、いずれを置換先セルとすることも可能である。この場合、閾値Ｖｔの低い順、または、閾値Ｖｔの高い順に選択して、タイミング解析することで、タイミングエラーの無いセルを選択することが好ましい。
【０１００】
ここで、図８を用いて、置換先セルの選択処理の具体的な動作の例を説明する。図８は、ライブラリ５２に格納されたセルの一例である。ここでは、各セル毎に、番号、セルタイプ、セル名、駆動能力、面積が格納されている。そして、セルタイプが２種類であり、セル１−１〜１−３、セル２−１〜２−３が、通常セル、低Ｖｔセルの順に並び、それぞれ、面積の大きい順に並んでいる。
【０１０１】
本実施形態では、置換先セルの選択基準としてより面積（駆動能力）が小さく、かつ、低Ｖｔのセルを選択する（Ｓ３０５）。例えば、置換元セルをセル１−２とし、セル１−２よりも小さいセル１−３でタイミングエラーが発生する場合、セル１−２よりも小さく低Ｖｔのセル２−３を置換先セルとして選択する。
【０１０２】
また、置換元セルをセル１−１とすると、まず、セル１−１よりも小さいセル１−２、セル１−３が置換先セルとして選択可能である。セル１−２またはセル１−３を選択して、タイミングエラーが発生しない場合、セル１−２またはセル１−３を置換先セルに決定する。また、セル１−２及びセル１−３でタイミングエラーが発生した場合、セル１−１よりも小さく低Ｖｔのセル２−２またはセル２−３が置換先セルとして選択可能である。セル２−２とセル２−３のいずれを選択するのかは、図６と同様に、面積の大きい順もしくは面積の小さい順に選択できる。
【０１０３】
例えば、面積の大きい順に選択すると、セル２−２を選択して、その後、タイミングエラーに応じて、セル２−３を選択できる。また、例えば、面積の小さい順に選択すると、セル２−３を選択して、その後、タイミングエラーに応じて、セル２−２を選択できる。
【０１０４】
次に、図９を用いて、本実施形態の他の動作例を説明する。図９では、図８に比べて、セルタイプが３種類であり、セル０−１〜０−３、セル１−１〜１−３、セル２−１〜２−３が、高Ｖｔセル、通常セル、低Ｖｔセルの順に並び、それぞれ、面積の大きい順に並んでいる。なお、高Ｖｔとは、低Ｖｔに対して、通常の回路よりも動作閾値Ｖｔが高い回路のことであり、高電圧で動作するため、動作速度が遅い回路である。
【０１０５】
例えば、置換元セルをセル０−２とし、セル０−２よりも小さいセル０−３でタイミングエラーが発生する場合、セル０−２よりも小さく低Ｖｔのセル１−３、セル２−３を置換先セルとして選択可能である。セル１−３とセル２−３のいずれを選択するのかは、面積の順に選択するのと同様に、閾値Ｖｔの高い順もしくは閾値Ｖｔの低い順に選択できる。
【０１０６】
例えば、閾値Ｖｔの高い順に選択すると、セル１−３を選択して、その後、タイミングエラーに応じて、セル２−３を選択できる。また、例えば、閾値Ｖｔの低い順に選択すると、セル２−３を選択して、その後、タイミングエラーに応じて、セル１−３を選択できる。
【０１０７】
また、例えば、置換元セルをセル０−１とすると、セル０−１よりも小さいセル０−２、セル０−３が置換先セルとして選択可能であり、さらに、タイミングエラーに応じて、セル０−１よりも小さく低Ｖｔのセル１−２、セル１−３、セル２−２、セル２−３が選択可能である。この場合、上記と同様に、面積の順、閾値の順を組み合わせて、タイミングエラーの無いセルを選択できる。
【０１０８】
以上のように、本実施形態では、置換先セルの選択において、面積（駆動能力）が小さく、かつ、低Ｖｔのセルを選択することにしたため、面積が小さいセルに置換することによりセットアップエラーが発生するような場合であっても、セルの高速化によりセットアップエラーの発生を抑止しつつ、確実に空き領域を確保することができる。高速なセルを選択することにより、より多くのホールドバッファが挿入可能になることから、ホールドエラーの修正が容易になる。
【０１０９】
本発明の実施の形態３
次に、本発明の実施の形態３について説明する。本実施形態では、実施の形態１，２と比べて、置換先セルの選択処理のみ相違しており、他の処理については同様である。
【０１１０】
図１０を用いて、本発明の実施の形態２に係る置換先セル選択処理（Ｓ２０８）について説明する。図に示されるように、本実施形態の置換先セルの選択処理が開始されると、まず、図７と同様にして、ライブラリ５２にサイズの小さいセルがあるかどうか判定し（Ｓ３０１）、サイズの小さいセルが置換先セルに決定され（Ｓ３０２）、タイミング解析によりセットアップエラーが判定され（Ｓ３０３，Ｓ３０４）、サイズが小さく低Ｖｔのセルがあるか判定される（Ｓ３０５）。
【０１１１】
Ｓ３０５において、サイズが小さく低Ｖｔのセルがライブラリ５２に有ると判定された場合、さらに、リーク電流が低いセルを選択する（Ｓ３０７）。すなわち、置換先セル選択部１４は、サイズが小さく低Ｖｔのセルが複数存在する場合に、ライブラリ５２内の該当する複数のセルを順次判定して、リーク電流が低いセルを選択する。最もリーク電流の低いセルが好ましく、タイミングエラーの無いセルを選択することがより好ましい。
【０１１２】
一般に低Ｖｔのセルは、高速動作が可能であるがリーク電流が高いため、よりリーク電流の低いセルを選択することで消費電力の増加を防ぐことができる。
【０１１３】
次いで、このリーク電流が低いセルを置換先セルとして決定し（Ｓ３０６）その後、選択した置換先セルによりセルの置換（Ｓ２０９）が行われる。
【０１１４】
ここで、図１１を用いて、置換先セルの選択処理の具体的な動作の例を説明する。図１１は、ライブラリ５２に格納されたセルの一例である。ここでは、各セル毎に、番号、セルタイプ、セル名、駆動能力、面積、リーク電流が格納されている。そして、セルタイプが２種類であり、セル１−１〜１−３、セル２−１〜２−３が、通常セル、低Ｖｔセルの順に並び、それぞれ、面積の大きい順に並んでいる。
【０１１５】
本実施形態では、置換先セルの選択基準としてより面積（駆動能力）が小さく、低Ｖｔのセルで、かつ、リーク電流が低いセルを選択する（Ｓ３０５，Ｓ３０７）。
【０１１６】
例えば、置換元セルをセル１−１とすると、セル１−１よりも小さいセル１−２、セル１−３を置換先セルとして選択可能である。そして、タイミングエラーが発生する場合、セル１−１よりも小さく低Ｖｔのセル２−２、セル２−３が選択可能となる。ここで、セル２−３が、セル２−２よりもリーク電流が低いため、セル２−３を置換先セルに決定する。
【０１１７】
以上のように、本実施形態では、置換先セルの選択において、面積（駆動能力）が小さく、かつ、低Ｖｔのセルのうちで、リーク電流の低いセルを選択することにしたため、セットアップエラーの発生を抑止しつつ空き領域が確保できるとともに、さらに消費電力を低減することができる。特に、低Ｖｔのセルはリーク電流が高い場合が多いため、低Ｖｔのセルのなかでリーク電流の低いセルを選択する効果が大きい。
【０１１８】
また、置換元セルは、ホールドエラー周辺の特定のセルであり、置換によるリーク電流の影響が局所的であるため、置換先セルとしてリーク電流の低いセルを選択することで、リーク電流の合計がシステムの制限値を超える可能性は低い。
【０１１９】
なお、本実施形態では、実施の形態２のように、面積が小さく、かつ、低Ｖｔのセルを選択する方法において、リーク電流が低いセルを選択するようにしたが、実施の形態１のように、面積が小さいセルを選択する方法において、リーク電流が低いセルを選択するようにしてもよい。また、リーク電流が低いセルを選択する方法として、複数のセルのうちでリーク電流が低い方のセルを選択したが、所定の基準値よりもリーク電流が低いセルを選択してもよい。
【０１２０】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、１つセルは、全て同じタイプ（閾値）の回路によりセルが構成されているが、１つのセルを複数のタイプの回路により構成してもよい。この場合、セルを構成する複数の回路の動作速度の平均を、セルの動作速度としてもよい。
【符号の説明】
【０１２１】
１  制御部
２  記憶部
１０  ホールドエラー修正部
１１  ホールドバッファ挿入部
１２  セル混雑度計算部
１３  余裕セル判定部
１４  置換先セル選択部
１５  セル置換部
２０  配置配線部
３０  タイミング解析部
４０  セットアップエラー修正部
５１  ネットリスト
５２  ライブラリ
５３  レイアウトデータ
５４  タイミングレポート
５５ａ  第１のタイミング制約
５５ｂ  第２のタイミング制約
５６  混雑度計算領域
５７  混雑度判定基準
５８  セルリスト
１００  自動レイアウト装置
【図１】
2013003944.tif 000003
【図２】
2013003944.tif 000004
【図３】
2013003944.tif 000005
【図４】
2013003944.tif 000006
【図５】
2013003944.tif 000007
【図６】
2013003944.tif 000008
【図７】
2013003944.tif 000009
【図８】
2013003944.tif 000010
【図９】
2013003944.tif 000011
【図１０】
2013003944.tif 000012
【図１１】
2013003944.tif 000013
【図１２】
2013003944.tif 000014