(57)【要約】  タイミングエラー除去方法は、設計対象の半導体集積回路のタイミングエラーを除去可能な論理上の修正箇所及び該修正箇所に挿入する第一のバッファを選択し、前記修正箇所に関して、前記第一のバッファを配置可能な前記半導体集積回路上の空き領域を探索し、空き領域が無い場合は、前記第一のバッファの挿入によって遅延を代替可能な、該第一のバッファよりも小さい複数のバッファの組み合わせを、前記半導体集積回路への配置対象として探索する処理をコンピュータが実行する。
2012124117.tif 000002
【特許請求の範囲】
【請求項１】
設計対象の半導体集積回路のタイミングエラーを除去可能な論理上の修正箇所及び該修正箇所に挿入する第一のバッファを選択し、
前記修正箇所に関して、前記第一のバッファを配置可能な前記半導体集積回路上の空き領域を探索し、空き領域が無い場合は、前記第一のバッファの挿入によって遅延を代替可能な、該第一のバッファよりも小さい複数のバッファの組み合わせを、前記半導体集積回路への配置対象として探索する処理をコンピュータが実行するタイミングエラー除去方法。
【請求項２】
前記探索する処理は、前記半導体集積回路上において前記論理上の修正箇所に対応する位置から所定範囲内において前記第一のバッファを配置可能な空き領域を探索し、空き領域が無い場合は、前記所定範囲内に配置可能なバッファの組み合わせを探索する請求項１記載のタイミングエラー除去方法。
【請求項３】
前記選択する処理は、所定の規則に基づいて前記論理上の修正箇所の前段のセルから前記論理上の修正箇所の後段のセルまでの遅延を計算し、前記第一のバッファを選択し、
前記探索する処理は、前記第一のバッファの挿入によって得られる遅延に関して、前記所定の規則に基づいて算出される値を用いて前記組み合わせを探索する請求項１又は２記載のタイミングエラー除去方法。
【請求項４】
設計対象の半導体集積回路のタイミングエラーを除去可能な論理上の修正箇所及び該修正箇所に挿入する第一のバッファを選択する選択部と、
前記修正箇所に関して、前記第一のバッファを配置可能な前記半導体集積回路上の空き領域を探索し、空き領域が無い場合は、前記第一のバッファの挿入によって遅延を代替可能な、該第一のバッファよりも小さい複数のバッファの組み合わせを、前記半導体集積回路への配置対象として探索する探索部とを有する設計支援装置。
【請求項５】
前記探索部は、前記半導体集積回路上において前記論理上の修正箇所に対応する位置から所定範囲内において前記第一のバッファを配置可能な空き領域を探索し、空き領域が無い場合は、前記所定範囲内に配置可能なバッファの組み合わせを探索する請求項４記載の設計支援装置。
【請求項６】
前記選択部は、所定の規則に基づいて前記論理上の修正箇所の前段のセルから前記論理上の修正箇所の後段のセルまでの遅延を計算し、前記第一のバッファを選択し、
前記探索部は、前記第一のバッファの挿入によって得られる遅延に関して、前記所定の規則に基づいて算出される値を用いて前記組み合わせを探索する請求項４又は５記載の設計支援装置。
【請求項７】
設計対象の半導体集積回路のタイミングエラーを除去可能な論理上の修正箇所及び該修正箇所に挿入する第一のバッファを選択し、
前記修正箇所に関して、前記第一のバッファを配置可能な前記半導体集積回路上の空き領域を探索し、空き領域が無い場合は、前記第一のバッファの挿入によって遅延を代替可能な、該第一のバッファよりも小さい複数のバッファの組み合わせを、前記半導体集積回路への配置対象として探索する処理をコンピュータに実行させるプログラム。
【請求項８】
前記探索する処理は、前記半導体集積回路上において前記論理上の修正箇所に対応する位置から所定範囲内において前記第一のバッファを配置可能な空き領域を探索し、空き領域が無い場合は、前記所定範囲内に配置可能なバッファの組み合わせを探索する請求項７記載のプログラム。
【請求項９】
前記選択する処理は、所定の規則に基づいて前記論理上の修正箇所の前段のセルから前記論理上の修正箇所の後段のセルまでの遅延を計算し、前記第一のバッファを選択し、
前記探索する処理は、前記第一のバッファの挿入によって得られる遅延に関して、前記所定の規則に基づいて算出される値を用いて前記組み合わせを探索する請求項７又は８記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路のタイミングエラー除去方法、設計支援装置、及びプログラムに関する。
【背景技術】
【０００２】
デジタルＬＳＩ（半導体集積回路）においては、クロック信号等のタイミング信号に合わせてデータ信号の取り込みが行われる。したがって、デジタルＬＳＩの設計には、動作保障に必要なタイミング規定がある。タイミング規定の主なものとして、セットアップタイム及びホールドタイムがある。セットアップタイムとは、タイミング信号に先立ってデータ信号を確定、及び保持しておかなければならない時間をいう。ホールドタイムとは、タイミング信号が与えられた後もデータ信号を保持しておかなければならない時間をいう。
【０００３】
一般的に、デジタルＬＳＩのレイアウトツールでは、このようなタイミング規定を考慮してレイアウトが行われているが、部分的にタイミング規定違反（タイミングエラー）が残ってしまうことが多い。タイミングエラーを効率的に除去するためには、タイミングエラーを起こしていない部分に影響を与えないようにレイアウトを修正する必要がある。そこで、タイミングエラーを起こしている部分に影響範囲を限定して、バッファの挿入等を行うなどしてタイミングエラーの除去が図られている。なお、タイミングエラーの除去を目的としたレイアウトの修正をタイミングＥＣＯ（Engineering Change Order）という。
【０００４】
図１は、タイミングエラーの除去例を説明するための図である。同図において、順序回路ＦＦ１からＦＦ４へのパスＴ１と、ＦＦ２からＦＦ４へのパスＴ２がホールドタイム違反（ホールドタイムエラー）を起こしていることとする。一方、ＦＦ３からＦＦ４へのパスＴ３はセットアップタイムに余裕が無いこととする。なお、パスとは、任意の順序回路のデータ出力ピンを始点とし、次の順路回路のデータ入力ピンを終点とする、回路上の経路をいう。
【０００５】
同図に示されるような状況では、タイミングエラーを起こしているパス内において、効果的な論理上の修正箇所が選定され、挿入バッファの選定又は既存セル（論理）のサイズの再選定等が行われればよい。「効果的」とは、タイミングエラーの修正のために挿入又は変更されるセルが少なくて済むことをいう。同図の例では、パスＴ３に影響がなく、パスＴ１及びＰ２のホールドタイムエラーを除去可能な解として、Ｐ１で示される箇所（以下、「ポイントＰ１」という。）にバッファＢ５が挿入するのが、効果的な解決方法である。この場合、バッファＢ５は、パスＴ３には影響を与えずに、パスＴ１及びＴ２のデータ信号を遅延させることができ、パスＴ１及びＴ２のホールドタイムエラーを除去することができるからである。
【０００６】
従来、このようなタイミングエラーの除去方法として、次のような手順が行われていた。
手順１：レイアウト結果からタイミングエラーの有無を判定する。
手順２：タイミングエラーが有る場合、バッファの論理上の挿入箇所、及び挿入するバッファの選定を行う。例えば、図１に示される箇所Ｐの選定及びバッファＢ５の選定が行われる。
手順３：手順２の結果に基づいてバッファの物理的な配置位置を決定する。例えば、図１の箇所Ｐに関して、バッファＢ５の物理的な配置位置が決定される。
手順４：未結線部分の配線レイヤの選定及び配線形状の選定を行う。
【０００７】
ここで、手順２と手順３とは、相互に独立している。すなわち、手順２では、レイアウト情報は参照されず、バッファを挿入しても新たな配線容量は生じないと仮定した遅延モデルを使って挿入バッファが選定される。
【０００８】
一方、手順３では、手順２で作成された論理修正が反映されたネットリストが入力され、挿入バッファの物理位置が決定される。ここで、挿入バッファの物理的な配置位置は、当該挿入バッファを配置可能な空き領域に限られるため、手順２の遅延モデルと実際の配置位置が反映された遅延との間には大きな誤差が生じてしまう場合がある。
【０００９】
例えば、図２は、挿入バッファの実際の配置位置の例を示す図である。同図には、図１に示されるポイントＰ１（セルＡ２の入力ピン）周辺の空き領域が示されている。図中、網掛けが施された部分は、配置済みのインスタンスセルを示す。一方、網掛けが施されていない白抜きの部分が空き領域となる。
【００１０】
手順２において挿入対象として選定されたバッファＢ５のサイズが５（高さ１、幅５）であった場合、バッファＢ５を挿入可能な空き領域は、図中左下の部分しかない。したがって、手順３において、バッファＢ５は、左下の空き領域に配置される。そうすると、図中において実線矢印ｓ１によって示される、手順２において遅延計算の根拠とした信号経路と、破線矢印ｓ２及びｓ３によって示される、実際の配置位置に基づく遅延計算の根拠とされる信号経路との間には、誤差が発生してしまう。この点について、図３を用いて更に詳しく説明する。
【００１１】
図３は、挿入バッファとその前後のセルとの相対距離について、バッファ選択する際の予想とバッファ選択後の実際との違いを説明するための図である。
【００１２】
同図において、（ａ）は、バッファＢ５を選択した際に予想した位置（すなわち、ポイントＰ１）を示す。同図では、セルＡ１の出力ピンからバッファＢ５の入力ピンまでは、距離ｌ１であり、バッファＢ５の出力ピンからセルＡ２の入力ピンまでは、距離ｌ２であることが示されている。
【００１３】
一方、（ｂ）は、バッファＢ５が選択され配置された位置を示す。同図では、セルＡ１の出力ピンからバッファＢ５の入力ピンまでは、距離ｍ１（ｌ１＜ｍ１）であり、バッファＢ５の出力ピンからセルＡ２の入力ピンまでは、距離ｍ２（ｌ２＜ｍ２）であることが示されている。
【００１４】
すなわち、セルＡ１の出力ピンからバッファＢ５入力ピンまでの実際の距離、及びバッファＢ５の出力ピンからセルＡ２の入力ピンまでの実際の距離は、手順２において予定していた距離よりも長くなってしまっている。
【００１５】
その結果、例えば、ホールドタイムエラーを除去する目的で挿入したバッファＢ５が、セットアップタイムエラーを引き起こしたり、あるいは、セットアップタイムエラーを引き起こすことを避けてバッファを挿入しなかったためにホールドタイムエラーを除去できなかったりということが起こる。この場合、再度タイミングＥＣＯを実行しただけでは同じ結果になるため、前回の手順２において選定されたポイントＰ１を修正箇所の候補から除いて、タイミングＥＣＯを再度実行することになる。このような繰り返しは、タイミングエラーの修正処理全体の処理時間の長期化を招く。
【００１６】
そこで、手順２と手順３とを統合し、手順２においてレイアウト情報を参照する方法が考案されている（例えば、特許文献１）。すなわち、挿入バッファが選択されたら直ちに当該挿入バッファの物理的な配置位置を決定される。その結果に基づいて、遅延計算及びスラック値の更新が行われ、タイミングエラーが修正されるか否かが判定される。なお、スラック値とは、セットアップタイム規定及びホールドタイム規定を守ることを前提に計算された到達要求時間と実際の信号到達時間との差分であり、余裕時間を表す。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特開２００８−５２６５９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１８】
しかしながら、特許文献１に記載された技術では、最初に選択された挿入バッファを配置可能な領域を探す必要がある。その結果、タイミングエラーの除去全体の処理が長期化する可能性がある。
【００１９】
そこで、半導体集積回路のタイミングエラーの除去を効率化することのできるタイミングエラー除去方法、設計支援装置、及びプログラムの提供を目的とする。
【課題を解決するための手段】
【００２０】
そこで上記課題を解決するため、タイミングエラー除去方法は、設計対象の半導体集積回路のタイミングエラーを除去可能な論理上の修正箇所及び該修正箇所に挿入する第一のバッファを選択し、前記修正箇所に関して、前記第一のバッファを配置可能な前記半導体集積回路上の空き領域を探索し、空き領域が無い場合は、前記第一のバッファの挿入によって遅延を代替可能な、該第一のバッファよりも小さい複数のバッファの組み合わせを、前記半導体集積回路への配置対象として探索する処理をコンピュータが実行する。
【発明の効果】
【００２１】
半導体集積回路のタイミングエラーの除去を効率化することができる。
【図面の簡単な説明】
【００２２】
【図１】タイミングエラーの除去例を説明するための図である。
【図２】挿入セルの実際の配置位置の例を示す図である。
【図３】挿入バッファの論理上の位置と実際の配置位置との違いを説明するための図である。
【図４】本発明の実施の形態におけるＬＳＩ設計支援装置のハードウェア構成例を示す図である。
【図５】本発明の実施の形態におけるＬＳＩ設計支援装置の機能構成例を示す図である。
【図６】タイミングエラーの除去処理の処理手順の一例を説明するためのフローチャートである。
【図７】論理修正情報の一例を示す図である。
【図８】バッファ一覧情報の一例を示す図である。
【図９】理想配置位置と近傍領域との一例を説明するための図である。
【図１０】候補領域リストＣＬの一例を示す図である。
【図１１】代替バッファの一例を説明するための図である。
【図１２】代替バッファの探索処理の処理手順の一例を説明するためのフローチャートである。
【図１３】最小遅延及び最大遅延の第一の例を説明するための図である。
【図１４】最小遅延及び最大遅延の第二の例を説明するための図である。
【発明を実施するための形態】
【００２３】
以下、図面に基づいて本発明の実施の形態を説明する。図４は、本発明の実施の形態におけるＬＳＩ設計支援装置のハードウェア構成例を示す図である。図４のＬＳＩ設計支援装置１０は、それぞれバスBで相互に接続されているドライブ装置１００、補助記憶装置１０２、メモリ装置１０３、ＣＰＵ１０４、インタフェース装置１０５、表示装置１０６、及び入力装置１０７等を有する。
【００２４】
ＬＳＩ設計支援装置１０での処理を実現するプログラムは、記録媒体１０１によって提供される。プログラムを記録した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００２５】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従ってＬＳＩ設計支援装置１０に係る機能を実現する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。表示装置１０６はプログラムによるＧＵＩ（Graphical User Interface）等を表示する。入力装置１０７はキーボード及びマウス等であり、様々な操作指示を入力させるために用いられる。
【００２６】
なお、記録媒体１０１の一例としては、ＣＤ−ＲＯＭ、ＤＶＤディスク、又はＵＳＢメモリ等の可搬型の記録媒体が挙げられる。また、補助記憶装置１０２の一例としては、ＨＤＤ（Hard Disk Drive）又はフラッシュメモリ等が挙げられる。記録媒体１０１及び補助記憶装置１０２のいずれについても、コンピュータ読み取り可能な記録媒体に相当する。
【００２７】
図５は、本発明の実施の形態におけるＬＳＩ設計支援装置の機能構成例を示す図である。同図において、ＬＳＩ設計支援装置１０は、レイアウト部１１、タイミング解析部１２、論理解作成部１３、配置解作成部１４、及び配線解作成部１５等を有する。これら各部は、ＬＳＩ設計支援装置１０にインストールされたプログラムが、ＣＰＵ１０４に実行させる処理によって実現される。
【００２８】
レイアウト部１１は、設計対象の半導体集積回路（以下、単に、「回路」という。）に関するネットリストＮ１に基づいて、回路上におけるセル（論理）の配置及びセル間の配線（配置配線）をシミュレーションし、レイアウト情報Ｌ１を作成する。ネットリストＮ１は、回路上のピン間の接続情報等を含む情報である。レイアウト情報Ｌ１は、配置配線の結果を示す情報である。
【００２９】
タイミング解析部１２は、レイアウト情報Ｌ１よりＲＣ情報Ｒ１（配線の容量及び抵抗等を含む情報）を抽出し、ネットリストＮ１、ＲＣ情報Ｒ１、セルライブラリＬＩＢ、及びタイミング制約ＴＩＭ等に基づいて、タイミングエラーを検出する。
【００３０】
セルライブラリＬＩＢは、使用可能なセルごとに、セル形状やセル内のピンの位置情報、遅延情報及び機能情報等を含む。またセットアップタイム及びホールドタイム等を示す情報が含まれている。タイミング制約ＴＩＭは、回路の動作保障に必要なタイミング規定を示す情報である。具体的には、論理回路内の各パスの遅延制約である。
【００３１】
論理解作成部１３は、タイミング解析部１２によって検出されたタイミングエラーを除去するための論理上の解を作成する。より詳しくは、論理解作成部１３は、回路において論理上の修正箇所、及び該修正箇所に挿入するバッファ（挿入バッファ）等を選択する。論理解作成部１３は、作成された論理解を論理修正情報Ｕ１として出力する。
【００３２】
配置解作成部１４は、論理解修正情報Ｕ１に基づいて、レイアウト情報Ｌ１等を参照して、挿入バッファの配置の可否を判定する。挿入バッファを配置できない場合、配置解作成部１４は、挿入バッファよりも小さい複数のバッファの組み合わせであって、かつ、挿入バッファの挿入によって得られる遅延を代替することのできる組み合わせを、回路への配置対象として探索する。
【００３３】
配線解作成部１５は、挿入されたバッファ等に関する未結線部分の配線処理を行う。
【００３４】
なお、ネットリストＮ１、タイミング制約ＴＩＭ、及びセルライブラリＬＩＢ等は、補助記憶装置１０２又はＬＳＩ設計支援装置１０とネットワークを介して接続される記憶装置等に記憶される。また、レイアウト情報Ｌ１、ＲＣ情報Ｒ１、及び論理修正情報Ｕ１等は、メモリ装置１０３若しくは補助記憶装置１０２、又はＬＳＩ設計支援装置１０とネットワークを介して接続される記憶装置等に記憶される。
【００３５】
以下、ＬＳＩ設計支援装置１０の処理手順について説明する。図６は、タイミングエラーの除去処理の処理手順の一例を説明するためのフローチャートである。本実施の形態ではホールドタイム違反（ホールドタイムエラー）を修正する例について説明する。
【００３６】
ステップＳ１０１において、レイアウト部１１は、レイアウト対象の回路のネットリストＮ１に基づいて配置配線を行い、レイアウト情報Ｌ１を作成する（Ｓ１０１）。続いて、タイミング解析部１２は、レイアウト情報Ｌ１に含まれる配線情報に基づいてＲＣ抽出を行う（Ｓ１０２）。ＲＣ抽出の結果、ＲＣ情報Ｒ１が生成される。続いて、タイミング解析部１２は、ネットリストＮ１、ＲＣ情報Ｒ１、並びにセルライブラリＬＩＢに含まれる各セルの遅延情報及び機能情報に基づいて遅延計算を行う（Ｓ１０３）。続いて、タイミング解析部１２は、遅延計算の結果と、タイミング制約情報ＴＩＭとに基づいて静的タイミング解析（ＳＴＡ：Static Timing Analysis）を行い、セットアップタイム制約及びホールドタイム制約の双方に対する遅延余裕値（ｓｌａｃｋ値）を求める（Ｓ１０４）。続いて、タイミング解析部１２は、遅延余裕値に基づいて、ホールドタイムエラーの有無を判定する（Ｓ１０５）。ホールドタイムエラーが無い場合（Ｓ１０５でＮｏ）、図６の処理は終了する。
【００３７】
一方、ホールドタイムエラーが検出された場合（Ｓ１０５でＹｅｓ）、ホールドタイムエラー（以下、単に「エラー」という。）を除去するために、ステップＳ１０６以降において論理解の作成処理が論理解作成部１３によって実行される。なお、ステップＳ１０６以降では、一つのエラーが除去対象とされる。したがって、複数のエラーが検出されている場合、ステップＳ１０６〜Ｓ１０９は、繰り返し実行される。
【００３８】
ステップＳ１０６において、論理解作成部１３は、除去対象のエラーを効率的に除去するための論理上の修正箇所（以下、「論理修正箇所」という。）の選択とその箇所において改善可能な遅延量を判定する（Ｓ１０６）。例えば、図１の例では、ポイントＰ１が論理修正箇所として選択され、ポイントＰ１において改善可能な遅延量が判定される。改善可能な遅延量とは、新たなタイミングエラーを起こさない範囲で追加可能な遅延量をいう。なお、論理修正箇所の前段のセルを、以下、単に「前段のセル」という。また、論理修正箇所の後段のセルを、以下、単に「後段のセル」という。図１の例では、セルＡ１が前段のセルであり、セルＡ２が後段のセルである。
【００３９】
続いて、論理解作成部１３は、セルライブラリＬＩＢに登録されているバッファの中から、改善可能な遅延量に相当する遅延値を有するバッファ（以下、「挿入バッファ」という。）を一以上選択する（Ｓ１０７）。すなわち、一つの論理修正箇所に関して、複数のバッファが挿入されてもよい。図１の例では、バッファＢ５が挿入バッファに相当する。続いて、論理解作成部１３は、挿入バッファを、論理修正箇所に挿入したと仮定して遅延計算を行う（Ｓ１０８）。遅延計算の内容は、ステップＳ１０３と同様でよい。遅延計算の結果、セットアップタイム制約及びホールドタイム制約の双方に対する遅延余裕値が再計算（更新）される。
【００４０】
なお、論理解作成部１３は、ステップＳ１０８の遅延計算に関して、配置解作成部１４が、論理解作成部１３の期待した（又は予定した）遅延の修正量を再現可能（又は把握可能）なように、所定の規則に基づいて遅延計算を実行する。当該所定の規則は、配置解作成部１４との間で当初から決められているものであってもよい。または、論理解作成部１３が、当該所定の規則を示す情報を、遅延計算の実行時にメモリ装置１０３又は補助記憶装置１０２に記録してもよい。
【００４１】
所定の規則の一例として、遅延計算において、前段のセルの出力ピンから挿入バッファの入力ピンまでの配線のＲＣ情報、及び挿入バッファの出力ピンから後段のセルの入力ピンまでの配線のＲＣ情報に関してどのような値を用いるかが挙げられる。例えば、前者のＲＣ情報については、挿入バッファの挿入前の状態において、前段のセルの出力ピンと後段のセルの入力ピンを接続する配線のＲＣの情報を用い、後者のＲＣ情報については、０とするという規則に基づいて遅延計算が行われる。また、タイミング解析部１２又は論理解作成部１３による遅延計算の過程において得られる、前段セルの出力ピンにおける信号波形のなまり（ｓｌｅｗ）（以下、「波形なまり」という。）の情報が、メモリ装置１０３又は補助記憶装置１０２に保存される。当該情報が、配置解作成部１４による遅延計算において利用可能とされるためである。
【００４２】
続いて、論理解作成部１３は、挿入バッファの挿入により新たなタイミングエラーが発生するか否かを判定する（Ｓ１０９）。すなわち、ステップＳ１０８において更新された遅延余裕値に基づいて、ホールドタイムエラーの有無が判定される。
【００４３】
新たなエラーが発生する場合（Ｓ１０９でＹｅｓ）、論理解作成部１３は、ステップＳ１０７以降を繰り返し実行する。すなわち、挿入バッファの再選択及び遅延計算等が行われる。一方、エラーが発生しない場合（Ｓ１０９でＮｏ）、論理解作成部１３は、回路内にホールドタイムエラーが残っているか否かを判定する（Ｓ１０５）。すなわち、まだ除去対象とされていないホールドタイムエラーの有無が判定され、全てのホールドエラーが除去されるまで、ステップＳ１０６〜Ｓ１０９が繰り返される。
【００４４】
全てのホールドエラーが除去されると（Ｓ１０５でＮｏ）、論理解作成部１３は、論理修正箇所の有無を判定する（Ｓ１１０）。すなわち、ステップＳ１０６において少なくとも一つの論理修正箇所が選択されたか否かが判定される。
【００４５】
論理修正箇所が無い場合（Ｓ１１０でＮｏ）、図６の処理は終了する。論理修正箇所が有る場合（Ｓ１１０でＹｅｓ）、論理解作成部１３は、論理修正箇所と挿入バッファとの対応情報である論理修正情報Ｕ１をメモリ装置１０３又は補助記憶装置１０２に出力（記録）する（Ｓ１１１）。なお、論理修正情報Ｕ１は、ステップＳ１０６〜Ｓ１０８の過程において部分的かつ逐次的に出力されてもよい。
【００４６】
図７は、論理修正情報の一例を示す図である。同図に示される論理修正情報Ｕ１は、挿入バッファごとに、バッファ名及び論理修正箇所を含む。バッファ名は、挿入バッファの識別名である。論理修正箇所は、挿入バッファを挿入する論理上の位置であり、前段のセルの出力ピン又は後段のセルの入力ピンによって特定されている。すなわち、論理修正箇所の末尾が「ｉｎ」である場合、当該挿入バッファの挿入箇所は、「ｉｎ」以前の識別子（「Ｍ１／Ｅ１」等）によって識別される後段のセルの入力ピンの前方であることを示す。一方、論理修正箇所の末尾が「ｏｕｔ」である場合、当該挿入バッファの挿入箇所は、「ｏｕｔ」以前の識別子によって識別される前段のセルの出力ピンの後方であることを示す。
【００４７】
続いて、論理修正情報Ｕ１等に基づいて、配置解作成部１４による処理が実行される。ステップＳ１１２において、配置解作成部１４は、セルライブラリＬＩＢより、使用可能なバッファのサイズ（大きさ）と遅延値との一覧情報（以下、「バッファ一覧情報」という。）を抽出する（Ｓ１１２）。
【００４８】
図８は、バッファ一覧情報の一例を示す図である。同図に示されるバッファ一覧情報ＢＬは、バッファごとに、バッファ名、サイズ、及び遅延値等を含む。バッファ名は、バッファの識別名である。サイズは、バッファの大きさである。同図では、高さが１固定である例が示されている。したがってサイズの値は幅を示す。但し、高さ及び幅の双方の値がサイズとして示されていてもよい。遅延値は、バッファ自体の有する遅延値である。
【００４９】
続いて、配置解作成部１４は、一つの論理修正箇所に係る挿入バッファ（以下、「対象挿入バッファ」という。）の理想的な配置位置を算出する（Ｓ１１３）。具体的には、配置解作成部１４は、論理修正情報Ｕ１から一つの論理修正箇所と、当該論理修正箇所に対応付けられているバッファ名を全て取り出す。配置解作成部１４は、ネットリストＮ１及びレイアウト情報Ｌ１を参照して当該論理修正箇所の位置情報を算出する。当該位置情報が、挿入バッファの理想配置位置とされる。
【００５０】
続いて、配置解作成部１４は、理想配置位置の近傍領域において、空き領域を探索し、連続する空き領域（以下、「候補領域」という。）の一覧情報（以下、「候補領域リストＣＬ」という。）を作成する（Ｓ１１４）。
【００５１】
図９は、理想配置位置と近傍領域との一例を説明するための図である。同図に示される配置マップＭ１は、配置解作成部１４が、レイアウト情報Ｌ１に基づいて作成した、理想配置位置の近傍のレイアウト情報を図形化したものである。配置マップＭ１における最小単位の矩形は、バッファのサイズの単位に対応する。すなわち、１つの矩形は、サイズ１に対応する。網掛けが施されている矩形は、セルが配置されていることを示し、白抜きの矩形は空き領域であることを示す。
【００５２】
配置マップＭ１において、Ａ１及びＡ２が記載されている領域は、図１に示されるセルＡ１又はセルＡ２を示す。ここで、論理修正箇所は、セルＡ２の入力ピンによって特定されていることとする。すなわち、当該論理修正箇所に係る対象挿入バッファの後段セルは、セルＡ２であり、前段セルは、セルＡ１である。同図において、セルＡ２の入力ピンの位置は、Ｐｒによって示される位置であるとする。したがって、Ｐｒによって示される位置が、当該論理修正箇所に係る対象挿入バッファの理想的な配置位置（以下、「理想配置位置Ｐｒ」という。）として算出される。
【００５３】
また、理想配置位置Ｐｒと、当該対象挿入バッファの前段セルであるセルＡ１とを囲む最小の矩形領域Ｒ１を中心とする矩形領域が近傍領域とされる。ここで、前段セルが対象とされるのは、理想配置位置Ｐｒに係る論理修正箇所が、後段セルの入力ピンに対応する位置であるからである。したがって、仮に、論理修正箇所が、前段セルの出力ピンに対応する位置であるとすると、当該論理修正箇所に係る理想配置位置と、後段セルとを囲む最小の矩形を中心とする矩形領域が近傍領域とされる。近傍領域とは候補領域の探索範囲を限定するためのものである。候補領域の探索範囲を理想配置位置の近傍に限定しようとするのは、後述のステップＳ１１６において、対象挿入バッファと遅延のほぼ等しい代替バッファの組み合わせを求めるときに、論理解作成部１３が予定していた遅延量に対する誤差を小さくするためである。
【００５４】
同図では、矩形領域Ｒｎが、近傍領域とされた例が示されている。なお、近傍領域Ｒｎは、空き領域の探索の過程において、空き領域が見つからない場合には、拡大されてもよい。また、近傍領域Ｒｎは、必ずしも、矩形領域Ｒ１を中心とする矩形領域でなくてもよい。また、矩形領域Ｒｎは、矩形領域Ｒ１と一致する領域であってもよい。
【００５５】
また、図１０は、候補領域リストＣＬの一例を示す図である。同図に示される候補領域リストＣＬは、候補領域ごとに、サイズ及び座標を記憶する。サイズは、候補領域の大きさである。座標は、候補領域の位置情報であり、例えば、候補領域の所定の頂点の座標である。
【００５６】
続いて、配置解作成部１４は、全ての対象挿入バッファを、候補領域リストＣＬにリストアップされている、いずれかの候補領域に排他的に配置可能であるか否かを判定する（Ｓ１１５）。任意の対象挿入バッファのサイズと同じであるか、当該サイズよりも大きい候補領域には、当該対象挿入バッファは配置可能であると判定される。なお、排他的にとは、同じ候補領域に複数の対象挿入バッファが重複して配置されないことをいう。
【００５７】
全ての対象挿入バッファを排他的に配置可能であれば（Ｓ１１５でＹｅｓ）、当該各対象挿入バッファを、それぞれが配置可能であると判定された候補領域に配置する（Ｓ１１７）。
【００５８】
少なくとも一つの対象挿入バッファを配置できない場合（Ｓ１１５でＮｏ）、配置解作成部１４は、対象挿入バッファよりサイズの小さい、バッファの組み合わせであって、遅延が対象挿入バッファとほぼ等しくなるような組み合わせを、バッファ一覧情報ＢＬを参照して探索する（Ｓ１１６）。配置解作成部１４は、探索されたバッファ（以下、「代替バッファ」という。）の組み合わせによって、挿入対象を代替する。なお、代替バッファは、対象導入バッファと論理等価なバッファである。
【００５９】
図１１は、代替バッファの一例を説明するための図である。同図において、（ａ）は、セルＡ１とセルＡ２との間に、挿入バッファＢ５が挿入された状態を示す。挿入バッファＢ５のサイズは、５であるとする。一方、（ｂ）は、挿入バッファＢ５が、代替バッファＢ３と代替バッファＢ２との組み合わせによって代替された例を示す。
【００６０】
ここで、（ａ）において、前段のセルＡ１の入力ピンから後段のセルＡ２の入力ピンまでの遅延がｔ１であるとすると、（ｂ）において、セルＡ１の入力ピンからセルＡ２の入力ピンまでの遅延ｔ２は、ｔ１と等しくなるように、代替バッファＢ３及びＢ２が選択される。すなわち、バッファの挿入時の遅延は、前段のセルの入力ピンから当該バッファの入力ピンまでの遅延と、当該バッファの入力ピンから後段のセルの入力ピンまでの遅延とを加算することにより算出される。なお、（ａ）及び（ｂ）の双方において、ｗ１によって示される信号の波形は、遅延ｔ１及びｔ２を計算する際に利用される波形なまりの情報をしめす。
【００６１】
続いて、配置解作成部１４は、代替バッファをいずれかの候補領域に配置する（Ｓ１１７）。
【００６２】
なお、ステップＳ１１３〜Ｓ１１７は、論理修正情報Ｕ１に含まれる全ての論理修正箇所に関して繰り返し実行される（Ｓ１１８）。その結果、全ての論理修正箇所に関して挿入バッファ又は代替バッフが配置される。
【００６３】
全ての論理修正箇所に関してバッファの配置が完了すると（Ｓ１１８でＮｏ）、配置解作成部１４は、挿入バッファ又は代替バッファの実際の配置位置と、理想配置位置とのずれや、挿入バッファを代替バッファよって代替することによる配線遅延の影響等を検証する。具体的には、配置解作成部１４は、配置された挿入バッファ又は代替バッファ（以下、「配置バッファ」という。）の配置位置に基づいて、各配置バッファに繋がるネットの仮の配線長を配置バッファの配置位置に基づいて計算する（Ｓ１１９）。仮の配線長（以下、「仮配線長」という。）とは、厳密な配線を行って求まる配線長ではなく、配線に関する各種のパラメータに関して仮定に基づく値が設定されて算出される配線長をいう。続いて、論理解作成部１３は、配置バッファの遅延値及び仮配線長等を考慮して遅延計算を行い、遅延余裕値の再計算を行う（Ｓ１２０）。ステップＳ１２０の計算の結果、セットアップタイムエラーが検出された場合（Ｓ１２１でＹｅｓ）、配置解作成部１４は、配置バッファのうちの少なくとも１つを、当該配置バッファより遅延値の小さいバッファに交換する（Ｓ１２２）。配置解作成部１４は、バッファの交換後、ステップＳ１２０以降を繰り返す。
【００６４】
セットアップエラーが検出されない場合（Ｓ１２１でＮｏ）、配置解作成部１４は、確定した修正情報（各配置バッファの配置位置等）をネットリストＮ１及びレイアウト情報Ｌ１に反映する（Ｓ１２３）。
【００６５】
続いて、配線解作成部１５は、レイアウト情報Ｌ１に基づいて、挿入バッファ又は代替バッファの挿入によって生じる未結線部分の配線処理を行う（Ｓ１２４）。未結線部分の配線処理の内容は、公知技術に従えばよい。
【００６６】
続いて、ステップＳ１１６の詳細について説明する。図１２は、代替バッファの探索処理の処理手順の一例を説明するためのフローチャートである。
【００６７】
ステップＳ２０１において、配置解作成部１４は、全ての対象挿入バッファを理想配置位置に配置した場合の前段のセルの入力ピンから後段のセルの入力ピンまでの遅延の値（以下、「標準遅延」という。）を計算する（Ｓ２０１）。この際、配置解作成部１４は、ステップＳ１０８において論理解作成部１３が遅延計算において従った所定の規則に従って遅延計算を行う。また、配置解作成部１４は、論理解作成部１３が遅延計算として前提とした情報（例えば、波形なまりの情報）を、メモリ装置１０３又は補助記憶装置１０２より取得し、当該情報を前提として遅延計算を行う。すなわち、ステップＳ２０１における遅延計算は、ステップＳ１０８と同じ規則及び同じ前提に基づいて行われる。
【００６８】
但し、ステップＳ１０８において、対象挿入バッファに関して論理解作成部１３によって計算された、前段セルの入力ピンから後段セルの入力ピンまでの遅延の値が、論理修正情報Ｕ１に含められていてもよい。この場合、配置解作成部１４は、論理修正情報Ｕ１に含まれている遅延の値を標準遅延として利用してもよい。また、タイミング解析部１２又は論理解作成部１３による遅延計算の過程で得られる波形なまりの情報も、論理修正情報Ｕ１に含まれていてもよい。
【００６９】
いずれの場合においても、論理解作成部１３による遅延計算の規則が、配置解作成部１４においても適用されることにより、配置解作成部１４は、論理解作成部１３が予定していた遅延量を把握することができる。その結果、配置解作成部１４は、当該遅延量との誤差の小さい配置解を探索することができる。
【００７０】
続いて、配置解作成部１４は、対象挿入バッファの中で遅延値が最小であるバッファを、一段階小さい遅延値を有するバッファに交換した場合の遅延の値（以下、「最小遅延」という。）と、一段階大きい遅延値を持つバッファに交換した場合の遅延の値（以下、「最大遅延」という。）を計算する（Ｓ２０２）。ここで計算される遅延の値は、ステップＳ２０１と同様に、前段のセルの入力ピンから後段のセルの入力ピンまでの遅延の値である。また、ステップＳ２０２においても、ステップＳ２０１において利用された規則及び前提が適用される。なお、対象挿入バッファの遅延値よりも一段階小さい遅延値又は一段階大きい遅延値とは、バッファ一覧情報ＢＬにおいて、対象挿入バッファの遅延値の次に小さい遅延値又は次の大きい遅延値をいう。
【００７１】
図１３は、最小遅延及び最大遅延の第一の例を説明するための図である。同図では、対象挿入バッファが一つである場合について説明する。
【００７２】
（ａ）は、論理解作成部１３によって選択された挿入バッファＢ５が挿入された場合を示す。したがって、この場合において、前段のセルＡ１の入力ピンから後段のセルＡ２の入力ピンまでの遅延の値は、標準遅延に相当する。
【００７３】
（ｂ）は、バッファＢ５が、バッファＢ５よりも一段階小さい遅延値を有するバッファＢ４に交換された場合を示す。同図の例では、対象挿入バッファは一つであるため、バッファＢ５は、対象挿入バッファの中で遅延値が最小のバッファである。したがって、バッファＢ５よりも一段階小さい遅延値を有するバッファＢ４に交換された場合における、前段のセルＡ１の入力ピンから後段のセルＡ２の入力ピンまでの遅延の値は、最小遅延に相当する。
【００７４】
（ｃ）は、バッファＢ５が、バッファＢ５よりも一段階大きい遅延値を有するバッファＢ８に交換された場合を示す。したがって、この場合における、前段のセルＡ１の入力ピンから後段のセルＡ２の入力ピンまでの遅延の値は、最大遅延に相当する。
【００７５】
また、図１４は、最小遅延及び最大遅延の第二の例を説明するための図である。同図では、対象挿入バッファが二つである場合について説明する。
【００７６】
（ａ）は、論理解作成部１３によって選択された挿入バッファＢ４及びＢ２が挿入された場合を示す。したがって、この場合において、前段のセルＡ１の入力ピンから後段のセルＡ２の入力ピンまでの遅延の値は、標準遅延に相当する。
【００７７】
（ｂ）は、バッファＢ２が、バッファＢ２よりも一段階小さい遅延値を有するバッファＢ１に交換された場合を示す。同図の例において、バッファＢ４よりもバッファＢ２の方が遅延値は小さいこととする。すなわち、バッファＢ２は、対象挿入バッファの中で遅延値が最小のバッファである。したがって、バッファＢ２よりも一段階小さい遅延値を有するバッファＢ１に交換された場合における、前段のセルＡ１の入力ピンから後段のセルＡ２の入力ピンまでの遅延の値は、最小遅延に相当する。
【００７８】
（ｃ）は、バッファＢ２が、バッファＢ２よりも一段階大きい遅延値を有するバッファＢ４に交換された場合を示す。したがって、この場合における、前段のセルＡ１の入力ピンから後段のセルＡ２の入力ピンまでの遅延の値は、最小遅延に相当する。
【００７９】
なお、挿入バッファの個数は、３つ以上の場合も有るが、その場合の最小遅延及び最大遅延は、図１４より自明であるため省略する。
【００８０】
続いて、配置解作成部１４は、標準遅延と一致するか十分に近い遅延を有し、かつ、候補領域に配置可能で総数がなるべく少ないバッファの組み合わせを求める。例えば、配置解作成部１４は、最大サイズの候補領域に配置可能な最大の代替バッファをセルライブラリＬＩＢより選択する（Ｓ２０３）。続いて、配置解作成部１４は、当該候補領域に当該代替バッファを配置して、当該候補領域を更新する（Ｓ２０４）。ステップＳ２０３及びＳ２０４は、選択された代替バッファが（例えば、直列に）配置された場合の、前段のセルの入力ピンから後段のセルの入力ピンまでの遅延の値（以下、「代替バッファにより得られる遅延」という。）が標準遅延を超えるまで繰り返される（Ｓ２０５）。２回目以降のステップＳ２０３では、そのときの候補領域の中で最大サイズの候補領域が処理対象とされる。
【００８１】
なお、代替バッファにより得られる遅延を求める際の配線長は、各代替バッファの配置位置を基準として所定の仮定に基づいて算出されてもよい。又は配置位置は近傍領域に限定されているため、一つのバッファは理想配置位置に配置されたと仮定して配線長を求め、次以降のバッファ間の配線長は０とされてもよい。
【００８２】
代替バッファにより得られる遅延が標準遅延を超えると（Ｓ２０５でＹｅｓ）、配置解作成部１４は、代替バッファにより得られる遅延が最小遅延より大きく、最大遅延より小さくなるように、代替バッファの入れ替えを行う（Ｓ２０６）。例えば、配置解作成部１４は、最後に選択された代替バッファを、当該代替バッファの遅延値より小さい、一又は複数のバッファと交換する。すなわち、最小遅延及び最大遅延は、代替バッファにより得られる遅延が、当初の挿入バッファの挿入により得られる遅延（すなわち、論理解作成部１３が予定していた遅延）に十分に近いか否かを判定するために使用される。
【００８３】
代替バッファの組み合わせが決まると、配置解作成部１４は、代替バッファの挿入順番にしたがって、代替バッファ間の論理接続を行う（Ｓ２０７）。
【００８４】
なお、図１２の処理手順は、あくまでも一例である。例えば、最大サイズの候補領域に配置可能なバッファを少なくとも１個含み、残りは当該バッファと同じサイズか、又は当該バッファより小さいサイズのバッファを含む組み合わせを最初に複数求めておく。続いて、組み合わせごとに、当該組み合わせに含まれる全てのバッファが候補領域に配置可能か否かを確認して、代替バッファの候補が狭めてられてもよい。
【００８５】
上述したように、本実施の形態によれば、当初の挿入バッファを配置できない場合、配置対象をより小さいサイズの代替バッファ群に変更することで、当該代替バッファ群を論理解作成部１３が選択した論理修正箇所の近傍に配置できる可能性を高めることができる。その結果、論理解作成部１３が追加を予定していた遅延と、実際の遅延との誤差を小さくすることができる。また、挿入するバッファの空き領域の探索処理の時間を短縮化することもできる。
【００８６】
また、挿入されるバッファが、論理修正箇所の近傍に配置されることで、遅延計算において、実際の遅延との誤差を小さくすることができるため、代替バッファを再選択するたびに実行される遅延計算を簡素化して処理時間を短縮することもできる。
【００８７】
更に、当初の挿入バッファが代替バッファに分解されることにより、論理解作成部１３が選択した挿入バッファ等が配置可能な空き領域が見つからなくても、論理修正箇所は再選択される必要はない。結果的にタイミングＥＣＯの処理時間を短縮することができる。
【００８８】
なお、上記では、ホールドタイムエラーを除去するためのタイミングＥＣＯを例に挙げて説明してきたが、本発明の実施形態を適用可能な範囲は、ホールドタイムエラーに限定されない。例えば、既にタイミングエラー調整がされている状態での小規模の論理変更（セルの削除及びセルの追加）に本実施の形態が適用されてもよい。
【００８９】
この場合、配置解作成部１４は、不要になったセルを元のレイアウト情報から削除してから、追加するセルの配置解を作成する。この際、追加されるセルは、バッファに限られない。したがって、配置解作成部１４は、バッファだけでなく、論理修正情報において追加対象として示されているセル（以下、「追加セル」という。）と論理等価なセルのサイズ及び遅延の一覧を作成する。そして、配置解作成部１４は、追加セルを論理変更箇所の近傍に配置する。配置できない場合、配置解作成部１４は、追加セルと論理等価でサイズの小さいセルとバッファの組み合わせで、当初の変更予定のセルの遅延を実現できるように追加セルを代替させる。
【００９０】
なお、本実施の形態において、論理解作成部１３は、選択部の一例である。また、配置解作成部１４は、探索部の一例である。
【００９１】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００９２】
１０          ＬＳＩ設計支援装置
１１          レイアウト部
１２          タイミング解析部
１３          論理解作成部
１４          配置解作成部
１５          配線解作成部
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
１０６        表示装置
１０７        入力装置
Ｂ            バス
【図１】
2012124117.tif 000003
【図２】
2012124117.tif 000004
【図３】
2012124117.tif 000005
【図４】
2012124117.tif 000006
【図５】
2012124117.tif 000007
【図６】
2012124117.tif 000008
【図７】
2012124117.tif 000009
【図８】
2012124117.tif 000010
【図９】
2012124117.tif 000011
【図１０】
2012124117.tif 000012
【図１１】
2012124117.tif 000013
【図１２】
2012124117.tif 000014
【図１３】
2012124117.tif 000015
【図１４】
2012124117.tif 000016
【手続補正書】
【提出日】平成25年8月8日(2013.8.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
設計対象の半導体集積回路のタイミングエラーを除去可能な論理上の修正箇所及び該修正箇所に挿入する第一のバッファを選択し、
前記修正箇所に関して、前記第一のバッファを配置可能な前記半導体集積回路上の空き領域を探索し、空き領域が無い場合は、前記第一のバッファの挿入によって遅延を代替可能な、該第一のバッファよりも小さい複数のバッファの組み合わせを、前記半導体集積回路への配置対象として探索する処理をコンピュータが実行するタイミングエラー除去方法。
【請求項２】
前記探索する処理は、前記半導体集積回路上において前記論理上の修正箇所に対応する位置から所定範囲内において前記第一のバッファを配置可能な空き領域を探索し、空き領域が無い場合は、前記所定範囲内に配置可能なバッファの組み合わせを探索する請求項１記載のタイミングエラー除去方法。
【請求項３】
前記選択する処理は、所定の規則に基づいて前記論理上の修正箇所の前段のセルから前記論理上の修正箇所の後段のセルまでの遅延を計算し、前記第一のバッファを選択し、
前記探索する処理は、前記第一のバッファの挿入によって得られる遅延に関して、前記所定の規則に基づいて算出される値を用いて前記組み合わせを探索する請求項１又は２記載のタイミングエラー除去方法。
【請求項４】
設計対象の半導体集積回路のタイミングエラーを除去可能な論理上の修正箇所及び該修正箇所に挿入する第一のバッファを選択する選択部と、
前記修正箇所に関して、前記第一のバッファを配置可能な前記半導体集積回路上の空き領域を探索し、空き領域が無い場合は、前記第一のバッファの挿入によって遅延を代替可能な、該第一のバッファよりも小さい複数のバッファの組み合わせを、前記半導体集積回路への配置対象として探索する探索部とを有する設計支援装置。
【請求項５】
設計対象の半導体集積回路のタイミングエラーを除去可能な論理上の修正箇所及び該修正箇所に挿入する第一のバッファを選択し、
前記修正箇所に関して、前記第一のバッファを配置可能な前記半導体集積回路上の空き領域を探索し、空き領域が無い場合は、前記第一のバッファの挿入によって遅延を代替可能な、該第一のバッファよりも小さい複数のバッファの組み合わせを、前記半導体集積回路への配置対象として探索する処理をコンピュータに実行させるプログラム。
【国際調査報告】
2012124117.tif 000017
2012124117.tif 000018
2012124117.tif 000019
2012124117.tif 000020