以下、図面を用いて実施形態を説明する。
図1は、一実施形態における半導体集積回路のレイアウト設計装置の例を示している。レイアウト設計装置は、算出部10、第1処理部20、第2処理部30および再配置部40を有している。例えば、レイアウト設計装置は、ASIC(Application Specific Integrated Circuit)等の専用のロジック回路を用いて形成され、半導体集積回路のレイアウト設計方法を実施する。なお、レイアウト設計装置は、半導体集積回路のレイアウト設計プログラムを実行することにより半導体集積回路のレイアウト設計方法を実施するCPU等のコンピュータを用いて形成されてもよい。
算出部10は、フリップフロップ等のホールドタイムの定義が必要な同期回路を含む素子と、素子間を接続する配線との電気的特性データを用いて、各同期回路のホールドタイムの余裕度HLDMを算出する。例えば、余裕度HLDMは、ホールドタイムに余裕があるときに正の値で示され、ホールドタイムが足りないとき負の値(不足時間ERRT)で示される。例えば、算出部10は、回路をレイアウトするときの最小単位であるセルを1つの素子として扱う。
例えば、電気的特性データは、素子の伝搬遅延時間のデータ、素子の駆動能力のデータ、および配線の伝搬遅延時間のデータを含み、半導体集積回路の素子および配線の配置情報を含むレイアウトデータから予め抽出される。レイアウトデータは、論理設計された半導体集積回路内の素子の接続関係を示す回路接続データを用いて生成される。回路接続データは、ネットリストとも称される。なお、レイアウトデータが上述した電気的特性データを含むとき、算出部10は、レイアウトデータから電気的特性データを直接読んでもよい。
第1処理部20は、算出部10により算出されたホールドタイムの余裕度HLDMに基づいて、ホールドタイムが不足している同期回路を抽出する。第1処理部20は、抽出した同期回路をエラー素子ERREとして、ホールドタイムの不足時間ERRTとともにホールドエラーリストに登録する。以下、ホールドタイムが不足していることをホールドエラーとも称する。
また、第1処理部20は、エラー素子ERREの入力に接続される第1信号経路上の素子ELM1を抽出し、抽出した素子ELM1をホールドエラーリストに登録する。例えば、第1信号経路は、エラー素子ERREの入力に接続される最初の同期回路からエラー素子ERREまでの信号経路であり、図4に示す回路ブロックCB20のノードN021、N022、N023、N024、N025を含む信号経路である。図4に示す例では、ホールドエラーリストに登録される素子ELM1は、回路ブロックCB20のセルC021、C022、C023、C024、C025であり、ホールドエラーリストに登録されるエラー素子ERREは、セルC027である。あるいは、第1信号経路は、図12に示すノードN4であり、素子ELM1は図12に示すフリップフロップFF3であり、エラー素子ERREは図12に示すフリップフロップFF4である。
図1に示す第2処理部30は、算出部10により算出されたホールドタイムの余裕度HLDMに基づいて、ホールドタイムに余裕のある同期回路を抽出する。第2処理部30は、抽出した同期回路の入力に接続される第2信号経路上の素子を選択する。この際、後述する配線の付け替えによるホールドエラーの解消効率を向上するために、ホールドタイムに余裕のある全ての同期回路を抽出することが望ましい。
例えば、第2信号経路は、ホールドタイムに余裕のある同期回路の入力に接続される最初の同期回路からホールドタイムに余裕のある同期回路までの信号経路である。第2信号経路は、図4に示す回路ブロックCB10のノードN011、N012、N013、N014、N015、N016を含む信号経路である。あるいは、第2信号経路は、図12に示すノードN1、N2、N3を含む信号経路である。
第2処理部30は、抽出した同期回路の入力に接続される第2信号経路上の素子の中から削除可能な素子を抽出し、抽出した素子をマージン素子MRGEとしてマージンリストに登録する。例えば、マージン素子MRGEは、図4に示すセルC016であり、図12に示すバッファBUF2である。
第2処理部30は、例えば、次の3つの条件(a)、(b)、(c)を全て満足するときに、削除が可能なマージン素子MRGEと判断する。
(a)素子が削除されたときに、第2信号経路内の各ノードの論理が変わらない。
(b)素子が削除されたときに、第2信号経路の末端の同期回路(すなわち、エラー素子ERRE)において、セットアップタイムのエラー等のタイミングエラーが発生しない。
(c)素子が削除されたときに、削除する素子の入力に接続された素子(入力側素子)が、削除する素子の出力に接続された素子(出力側素子)を正常に駆動できる。すなわち、入力側素子の駆動力の不足によるレイアウトエラーが発生しない。ここで、レイアウトエラーは、入力側素子が、入力側素子を出力側素子に接続する新たな配線の負荷と出力側素子の入力負荷とを駆動できないときに発生する。
再配置部40は、エラー素子ERRE毎に、ホールドタイムの不足時間ERRTを超える伝搬遅延時間を有するマージン素子MRGEをマージンリストから選択する。例えば、再配置部40は、エラー素子ERRE毎に、第1信号経路に最も近いマージン素子MRGEを選択する。再配置部40は、選択したマージン素子MRGEを、第2信号経路から切り離して第1信号経路に接続するために、データ上で配線を再配置する。そして、再配置部40は、再配置された配線を含む回路の接続関係を示す回路接続データを生成する。
これにより、新たな素子の挿入や素子の置換を行うことなく、配線の切り換えにより、ホールドエラーを解消できる。換言すれば、レイアウトされたセルの配置を換えることなく、ホールドエラーを解消できる。この後、例えば、生成された回路接続データを用いて、半導体集積回路のレイアウトデータが生成される。
なお、図1では、ホールドエラーリストおよびマージンリストは、レイアウト設計装置の外部に設けられているが、ホールドエラーリストおよびマージンリストの少なくともいずれかは、レイアウト設計装置内のレジスタや内部メモリ等の記憶部に設けられてもよい。
以上、この実施形態では、素子を新たに追加することなく、ホールドタイムのエラーを解消できる。この結果、レイアウト設計の効率を向上でき、半導体集積回路のレイアウトサイズを削減できる。
図2は、別の実施形態における半導体集積回路のレイアウト設計装置の例を示している。例えば、レイアウト設計装置は、CAD(Computer Aided Design)システム等のコンピュータシステムにより実現される。レイアウト設計装置は、プロセッサCPU、メモリROM、RAM、ハードディスクドライブ装置HDD、メディアドライブ装置MD、入出力インタフェースIIF、通信インタフェースCMIF、出力インタフェースOIFおよびグラフィック処理部GRを有している。
プロセッサCPUは、メモリROMまたはRAMに格納されている半導体集積回路のレイアウト設計プログラムを実行することにより、半導体集積回路のレイアウト設計方法を実施し、半導体集積回路に形成される素子および配線の物理的な配置を示すレイアウトデータを生成する。生成されたレイアウトデータは、半導体集積回路を製造するために必要なフォトマスクを製作するために使用される。なお、図1に示した算出部10、第1処理部20、第2処理部30および再配置部40は、レイアウト設計プログラムを実行するCPUにより実現されてもよい。
例えば、メモリROMはリードオンリーメモリであり、メモリRAMはランダムアクセスメモリである。ハードディスクドライブ装置HDDは、レイアウト設計プログラム、半導体集積回路のネットリストおよび半導体集積回路のレイアウトデータ等を記憶する。メディアドライブ装置MDは、光ディスク等の記録媒体SMに格納されているレイアウト設計プログラムやネットリストを読み出し、あるいは、設計されたレイアウトデータを記録媒体SMに格納するために使用される。なお、メディアドライブ装置MDは、メモリカード等のシリコンディスクや磁気テープ等に接続されてもよい。
CPUがメモリRAMに格納されたレイアウト設計プログラムを実行する場合、レイアウト設計プログラムは、ハードディスクドライブ装置HDDからメモリRAMに転送され、あるいは、光ディスク等の記録メディアからメモリRAMに転送される。メモリRAMは、レイアウト設計方法の実施時に生成される中間データを記憶してもよい。
入力インタフェースIIFは、キーボードやマウス等の入力装置に接続される。通信インタフェースCIFは、ローカルエリアネットワーク等の通信回線に接続される。レイアウト設計プログラムおよびネットリストは、通信インタフェースCIFを介してレイアウト設計装置の外部から供給されてもよい。レイアウト設計プログラムの実行により生成されたレイアウトデータは、通信インタフェースCIFを介してレイアウト設計装置の外部に出力されてもよい。
出力インタフェースOIFは、設計する半導体集積回路の論理図、ネットリスト、レイアウト図等を紙媒体に出力するプリンタ等の出力装置に接続される。グラフィック処理部GRは、液晶モニタ等の表示装置に接続される。表示装置は、入力装置から入力された情報や、半導体集積回路の論理図やネットリストを表示し、レイアウト設計プログラムの実行により生成されたレイアウトデータを視覚的に示したレイアウト図等を表示する。あるいは、表示装置は、レイアウト設計プログラムの実行結果を表示する。
図2に示したレイアウト設計装置において、プロセッサCPUがレイアウト設計プログラムを実行することにより、図3以降で説明する半導体集積回路のレイアウト設計方法が実施される。なお、レイアウト設計方法を実施するために必要なレイアウト設計装置の最小構成は、レイアウト設計プログラム、ネットリストおよびレイアウトデータが格納される記憶媒体、およびレイアウト設計プログラムを実行するプロセッサCPUである。
図3は、図2に示したレイアウト設計装置により実施されるレイアウト設計方法の例を示している。図3に示すフローは、プロセッサCPUがレイアウト設計プログラムを実行することにより実施される。図中に破線で示した矢印は、ファイルから読み出されるデータまたはファイルに書き込まれるデータの流れを示している。
先ず、ステップS10において、プロセッサCPUは、半導体集積回路の論理設計により得られた回路の接続データであるネットリストをハードディスクドライブ装置HDD等から読み出す。プロセッサCPUは、読み出したネットリストにより示される回路素子の接続順にしたがってセルを配置する位置を決め、セルの配置データを生成する。ここで、セルは、アンド回路、フリップフロップ回路、バッファ回路などの論理素子の基本部品であり、上述したように回路をレイアウトするときの最小単位である。ステップS10では、レイアウト平面上での各セルの位置を示す座標が求められる。ここで、レイアウト平面は、レイアウト設計方法を実施するための仮想平面である。
ステップS12において、プロセッサCPUは、セルの配置データおよびネットリストを用いて、レイアウト平面上に配置されたセル間を接続する配線の位置を決め、配線の配置データを生成する。そして、プロセッサCPUは、ステップS10、S12の実行により得られるセルおよび配線の配置データに基づいて、レイアウトデータを生成し、生成したレイアウトデータをハードディスクドライブ装置HDD等に格納する。
次に、ステップS14において、プロセッサCPUは、レイアウトデータに含まれるセルおよび配線の電気的特性データを抽出し、レイアウト基本情報として、ハードディスクドライブ装置HDD等に記憶する。レイアウト基本情報は、各セルの伝搬遅延時間を示すセル遅延情報、レイアウト平面上での各セルの位置を示すセル配置情報、各セルの出力駆動能力を示すセル駆動能力情報、およびセル間を接続する各配線の伝搬遅延時間を示す配線遅延情報を含む。
レイアウト基本情報の例は、図5に示す。なお、後述するステップS30、S40の処理において、プロセッサCPUがレイアウトデータからレイアウト基本情報を直接参照できる場合、ステップS14によるレイアウト基本情報のファイル化は不要である。
次に、ステップS16において、プロセッサCPUは、フリップフロップ回路やラッチ回路等の同期回路を含む各セルの入力端子に供給される信号のセットアップタイムを解析する。セットアップタイムは、クロック信号等のトリガ信号のエッジより前に入力信号の論理を確定すべき時間の最小値である。例えば、セットアップタイムの解析は、レイアウトデータを用いてSTA(Static Timing Analysis)手法等を用いて実施される。
ステップS18において、プロセッサCPUは、同期回路を含むセルのいずれかのセットアップタイムがタイミング仕様を満足しない場合(セットアップエラー)、処理をステップS20に移行する。全ての同期回路を含むセルのセットアップタイムがタイミング仕様を満足する場合、プロセッサCPUは、処理をステップS22に移行する。
ステップS20では、プロセッサCPUは、セットアップエラーを解消するために、セットアップエラーが発生した同期回路の入力端子への信号の到達タイミングを早くするためのタイミング修正を実施する。例えば、プロセッサCPUは、データ上で、セットアップエラーが発生した同期回路の入力端子に信号を出力するセルを、出力駆動能力が高いセルに変更する。あるいは、プロセッサCPUは、データ上で、セットアップエラーが発生した駆動回路の入力端子に接続された信号経路に含まれるセルのうち、信号経路に伝達される信号の論理を変更することなく削除できるセルを削除する。
そして、プロセッサCPUは、セットアップエラーを解消するためのセルの置き換え、またはセルの削除をするために、ネットリストを変更する。ステップS20の実施後、プロセッサCPUは、セットアップエラーが解消されるまで、ステップS20、S10、S12、S14、S16、S18の処理を繰り返し実施する。
セットアップエラーの解消後、ステップS22において、プロセッサCPUは、同期回路を含む各セルの入力端子に供給される信号のホールドタイムを解析する。ホールドタイムは、クロック信号等のトリガ信号のエッジより後に入力信号の論理を保持すべき時間の最小値である。例えば、ホールドタイム解析は、レイアウト基本情報のセル遅延情報、セル駆動能力情報および配線遅延情報を用いて実施される。なお、ホールドタイム解析は、レイアウトデータに含まれるセル遅延情報、セル駆動能力情報および配線遅延情報を用いてSTA手法等を用いて実施されてもよい。
ステップS24において、プロセッサCPUは、同期回路を含むセルのいずれかのホールドタイムがタイミング仕様を満足しない場合(ホールドエラー)、処理をステップS30に移行する。全ての同期回路を含むセルのホールドタイムがタイミング仕様を満足する場合、プロセッサCPUは、現在のレイアウトデータを、ハードディスクドライブ装置HDD等に完成レイアウトデータとして保存して処理を終了する。この後、完成レイアウトデータを用いてフォトマスクが設計される。
ステップS30において、プロセッサCPUは、レイアウト基本情報またはレイアウトデータを用いて、ホールドタイムの余裕度を算出する処理と、ホールドエラーリストおよびマージンリストに情報を登録する処理とを含むタイミング解析を実施する。タイミング解析では、図1の第1処理部20による処理と同様に、ホールドタイムが不足しているエラーセル(エラー素子)と、エラーセルの入力端子に接続される第1信号経路に含まれるセルと、ホールドタイムの不足時間とが、ホールドエラーリストに登録される。また、タイミング解析では、図1の第2処理部30による処理と同様に、ホールドタイムに余裕のある同期回路の入力に接続される第2信号経路上のセルの中から、削除可能なセルが抽出され、マージンセル(マージン素子)としてマージンリストに登録される。ステップS30のタイミング解析の処理の例については、図6で説明する。第1信号経路および第2信号経路については、図1の説明と同様であり、図4および図12で改めて説明する。
ステップS40において、プロセッサCPUは、エラーセル毎に、マージンリストに登録されているマージンセルの中から、第1信号経路に挿入可能なマージンセルを探す。そして、プロセッサCPUは、第1信号経路に挿入可能なマージンセルが存在する場合、データ上で、そのマージンセルを第2信号経路から切り離して第1信号経路に接続するために配線を再配置する。すなわち、ホールドタイムを満足する第2信号経路に接続されたセルを、ホールドタイムを満足しない第1信号経路に接続するために、配線の変更処理がデータ上で実施される。
一方、プロセッサCPUは、第1信号経路に挿入可能なマージンセルが、マージンリストに存在しない場合、第1信号経路上に新たなセルを追加する処理を、データ上で実施する。例えば、新たなセルは、挿入によっても論理が変更されないバッファセルである。プロセッサCPUは、配線の変更処理または新たなセルの追加をレイアウトデータに反映し、反映したレイアウトデータからネットリストを抽出する。
なお、ネットリストの抽出は、全てのレイアウトデータを用いることなく、配線が変更されたレイアウトデータの一部または新たなセルが追加された一部のレイアウトデータを用いて実施されてもよい。ステップS40の配線の変更処理の例については、図8から図11で説明する。
次に、ステップS50において、プロセッサCPUは、ステップS40の配線の変更処理で新たなセルが追加されたか否かを判定する。新たなセルが追加された場合、セルの配置をやり直す必要があるため、処理はステップS10に移行する。新たなセルが追加されず、配線の変更のみが実施された場合、セルの配置は変更されていないため、処理はステップS12に移行する。そして、プロセッサCPUは、ステップS24において、ホールドエラーがなくなるまで、ステップS30、S40、S50、S12、S14、S16、S18、S22の処理および必要に応じてステップS10の処理が繰り返し実施される。
この実施形態においても、新たなセルを追加せずにホールドエラーを解消可能なとき、セルの再配置は不要であり、配線の再配置のみが実施される。このため、レイアウトデータを作成するための処理量を少なくでき、レイアウトデータの作成時間を短縮できる。
また、セル間の配線は、半導体基板の上方に設けられる金属配線層を用いて形成される。このため、半導体集積回路の設計後に、製造条件の変動等によりホールドタイムの余裕がなくなったときにも、ステップS40の処理により得られるレイアウトデータを用いて金属配線層のフォトマスクを作り直すことで、ホールドタイムの余裕を確保できる。半導体基板の拡散領域用のフォトマスクやトランジスタのゲート用のフォトマスクは、配線を再配置する場合にも変更する必要がない。このため、金属配線層の配線工程の手前まで製造された半導体集積回路のストックは、廃棄することなく、新しいフォトマスクを使用して製造を継続できる。これにより、フォトマスクを作り直す場合の製造コストおよび製造期間を削減できる。
図4は、図3に示したレイアウト設計方法により最初にレイアウトされる回路ブロックCB10、CB20の例を示している。すなわち、図4に示す回路ブロックCB10、CB20は、図3に示したステップS30、S40の処理が一度も実施されていない。なお、回路ブロックCB20は、図3に示したステップS24で、ホールドエラーが検出されるブロックである。
図4では、説明を簡単にするために、セルC011、C017間の信号経路およびセルC021、C027間の信号経路に存在する信号線を示し、他の信号線の記載は省略している。実際の回路では、例えば、セルC013において、信号線が接続されていない入力端子に他の信号線が接続される。また、セルC013の出力端子に接続されたノードN013から他の信号線が分岐する場合がある。
さらに、図4では、クロック信号等のトリガ信号の配線を省略している。回路ブロックCB10において、トリガ信号は、セルC011、C017のクロック入力(三角印)に供給される。回路ブロックCB20において、トリガ信号は、セルC021、C027のクロック入力(三角印)に供給される。
回路ブロックCB10は、フリップフロップFFのセルC011のデータ出力QとフリップフロップFFのセルC017のデータ入力Dとの間に、セルC012、C013、C014、C015、C016を有している。セルC012の入力は、ノードN011を介してセルC011のデータ出力Qに接続され、セルC013の入力は、ノードN012を介してセルC012の出力に接続され、セルC014の入力は、ノードN013を介してセルC013の出力に接続されている。セルC015の入力は、ノードN014を介してセルC014の出力に接続され、セルC016の入力は、ノードN015を介してセルC015の出力に接続され、セルC017のデータ入力Dは、ノードN016を介してセルC016の出力に接続されている。
回路ブロックCB20は、フリップフロップFFのセルC021のデータ出力QとフリップフロップFFのセルC027のデータ入力Dとの間に、セルC022、C023、C024、C025を有している。セルC022の入力は、ノードN021を介してセルC021のデータ出力Qに接続され、セルC023の入力は、ノードN022を介してセルC022の出力に接続され、セルC024の入力は、ノードN023を介してセルC023の出力に接続されている。セルC025の入力は、ノードN024を介してセルC024の出力に接続され、セルC027のデータ入力Dは、ノードN025を介してセルC025の出力に接続されている。
後述するように、例えば、回路ブロックCB10は、ホールドタイムのマージンが大きく、セルC016は、削除可能なマージンセルである。回路ブロックCB10のノードN011、N012、N013、N014、N015、N016は、ホールドタイムに余裕のあるセルC017のデータ入力Dに接続される第2信号経路である。第2信号経路は、ホールドタイムに余裕のあるセルC017のデータ入力Dに接続される最初の同期回路であるセルC021のデータ出力QからセルC017のデータ入力Dまでの信号経路である。
例えば、回路ブロックCB20のセルC027は、ホールドタイムがタイミング仕様に対して不足しているエラーセルである。回路ブロックCB20のノードN021、N0122、N023、N024、N025は、エラーセルC027のデータ入力Dに接続される第1信号経路に含まれる。第1信号経路は、エラーセルC027のデータ入力Dに接続される最初の同期回路であるセルC021のデータ出力QからエラーセルC027のデータ入力Dまでの信号経路である。
図5は、図3に示したステップS14の処理により生成されるレイアウト基本情報の例を示している。図5では、図4に示した回路ブロックCB10、CB20に含まれるセルのレイアウト基本情報を示している。
セル遅延情報は、各セルの伝搬遅延時間のデータを含んでいる。セル配置情報は、レイアウト平面上での各セルの原点のX座標とY座標を含んでいる。セル駆動能力情報は、各セルの出力駆動能力のデータを含んでいる。出力駆動能力は、各セルの最終段の出力回路の駆動能力である。例えば、セル駆動能力情報の数値は、出力端子に接続される入力端子(ゲート)の最大数であるファンアウト数を示している。なお、セル駆動能力情報の数値は、ファンアウト数とともに、出力端子に接続される配線の長さ(配線負荷)を考慮して決められてもよい。配線遅延情報は、セル間の各ノードに信号を伝達する配線の伝搬遅延時間のデータを含んでいる。
図6は、図3に示したステップS30によるタイミング解析の例を示している。
先ず、ステップS300において、プロセッサCPUは、ホールドエラーを解析するために信号経路の1つを選択する。例えば、図4に示した回路ブロックCB10のセルC011からセルC017の間の信号経路が選択され、あるいは、図4に示した回路ブロックCB20のセルC021からセルC027の間の信号経路が選択される。プロセッサCPUは、レイアウト基本情報またはレイアウトデータのセル遅延情報、セル駆動能力情報および配線遅延情報を用いて、選択した信号経路に含まれる同期回路を含むセルのホールドタイムを解析する。なお、ステップS30のタイミング解析は、図3に示したステップS22のホールドタイム解析の結果を利用して実施されてもよい。
例えば、図4に示した回路ブロックCB10では、同期回路であるセルC017において、クロック端子で受けるトリガ信号に対して、入力端子Dで受ける信号のホールドタイムが解析される。図4に示した回路ブロックCB20では、同期回路であるセルC027において、クロック端子で受けるトリガ信号に対して、入力端子Dで受ける信号のホールドタイムが解析される。ステップS300による処理は、図1に示した算出部10が実施する処理に対応している。
次に、ステップS310において、プロセッサCPUは、選択した信号経路の末端に位置する同期回路のホールドタイムがタイミング仕様に対して不足している場合(ホールドエラー)、処理をステップS320に移行する。例えば、図4に示した回路ブロックCB20のセルC027は、ホールドエラーを有している。選択した信号経路の末端に位置する同期回路のホールドタイムがタイミング仕様を満足する場合、プロセッサCPUは、処理をステップS330に移行する。例えば、図4に示した回路ブロックCB10のセルC017は、ホールドエラーを有していない。
ステップS320において、プロセッサCPUは、ホールドエラーを有するセルの入力端子Dに接続される信号経路(第1信号経路)に含まれるセル名と、ホールドタイムの不足時間をホールドエラーリストに登録する。例えば、図4に示した回路ブロックCB20において、セル名C021、C022、C023、C024、C025、C027と、不足時間(例えば、−10ps)とが、ホールドエラーリストに登録される。ステップS310、S320による処理は、図1に示した第1処理部20が実施する処理に対応している。
一方、ステップS330において、プロセッサCPUは、ホールドエラーを有していない同期回路を含む信号経路に、論理的に削除可能なセルがあるか否かを判定する。論理的に削除可能なセルは、図1で説明した条件(a)を満足するセルであり、入力信号と出力信号の論理が同じで、出力信号の論理が、他の入力端子で受ける入力信号の論理の影響を受けないセルである。例えば、図4に示した回路ブロックCB10のセルC016は、バッファ回路であり、論理的に削除可能なセルである。プロセッサCPUは、論理的に削除可能なセルがある場合、処理をステップS340に移行し、論理的に削除可能なセルがない場合、処理をステップS370に移行する。
ステップS340において、プロセッサCPUは、ステップS330で検出した論理的に削除可能なセルを削除したときに、タイミングエラーが発生するか否かを判定する。すなわち、図1で説明した条件(b)を満足するか否かが判定される。例えば、セルの削除により、セットアップタイムがタイミング仕様を満足できなくなる場合、セルは削除できない。プロセッサCPUは、セルを削除してもタイミングエラーが発生しない場合、処理をステップS350に移し、セルの削除によりタイミングエラーが発生する場合、処理をステップS370に移行する。
ステップS350において、プロセッサCPUは、ステップS330で検出した論理的に削除可能なセルを削除したときに、レイアウトエラーが発生するか否かを判定する。すなわち、図1で説明した条件(c)を満足するか否かが判定される。例えば、図4の回路ブロックCB10において、セルC016の削除により、セルC015の出力からセルC017の入力までの配線が長くなり、セルC015の駆動能力が不足する場合、レイアウトエラーと判定される。プロセッサCPUは、セルを削除してもレイアウトエラーが発生しない場合、処理をステップS360に移し、セルの削除によりレイアウトエラーが発生する場合、処理をステップS370に移行する。
ステップS360において、プロセッサCPUは、ステップS330、S340、S350により削除可能とされたセル、すなわち、図1で説明した条件(a)、(b)、(c)を満足するセルをマージンセルとしてマージンリストに登録する。例えば、図4の回路ブロックCB10において、セルC016がマージンリストに登録される。ステップS310、S330、S340、S350、S360による処理は、図1に示した第2処理部30が実施する処理に対応している。この後、処理はステップS370に移行される。
ステップS370において、プロセッサCPUは、全ての信号経路を選択したか否かを判定する。すなわち、全ての信号経路について、ホールドエラーの有無と、削除可能なマージンセルの有無とをチェックしたか否かが判定される。チェックしていない信号経路が存在する場合、処理はステップS300に戻る。全ての信号経路がチェックされた場合、タイミング解析の処理は終了する。
図7は、図6に示した処理により生成されるマージンリストおよびホールドエラーリストの例を示している。この例では、図4の回路ブロックCB10のセルC016がマージンリストに登録されている。また、図4の回路ブロックCB20のセルC021、C022、C023、C024、C025、C026がエラー経路としてホールドエラーリストのエラー番号E001に対応して登録されている。不足時間の”−10”は、セルC027のホールドタイムが、タイミング仕様に対して、例えば、”−10ps”不足していることを示している。
図8は、図3に示したステップS40による配線変更の例を示している。
先ず、ステップS400において、プロセッサCPUは、ホールドエラーリストからホールドエラーを含む信号経路の1つを選択する。例えば、図7に示したエラー番号E001に対応する回路ブロックCB20のセルC021からセルC027が選択される。
次に、ステップS410において、プロセッサCPUは、レイアウト基本情報またはレイアウトデータを参照しながら、マージンリストに登録されたセルを用いて、選択している信号経路のホールドエラーを解消するための処理を実施する。例えば、プロセッサCPUは、図4に示した回路ブロックCB20のセルC027のホールドエラーを解消するために、回路ブロックCB20に挿入可能なマージンセルをマージンリストから探す。
この際、セル配置情報に基づいて、回路ブロックCB20に近い順にマージンセルが順次選択される。そして、プロセッサCPUは、セル駆動能力情報に基づいて、挿入するマージンセルが必要な駆動能力を有するか否かを判定する。また、プロセッサCPUは、マージンセルのセル遅延情報とマージンセルを挿入するノードの配線遅延情報とに基づいて、マージンセルの挿入によりホールドエラーが解消するか否かを判定する。
そして、プロセッサCPUは、ホールドエラーが解消すると判断したときに、回路ブロックCB20にマージンセルを挿入するために、データ上で配線を切り換える。例えば、配線の切り換えにより、図4に示した回路ブロックCB10のセルC016(マージンセル)が、回路ブロックCB20のノードN025に挿入される。このとき、回路ブロックCB10において、ノードN015とノードN016とが互いに接続され、セルC015の出力は、セルC017のデータ入力Dに直接接続される。
次に、ステップS420において、プロセッサCPUは、配線の切り換えを実施してもホールドエラーが解消できないときに、レイアウトエラーの発生を判断し、処理をステップS430に移行する。例えば、挿入されるマージンセルの入力に接続されるセルの駆動能力が、配線の切り換えのために新たに追加される配線の負荷により不足する場合、レイアウトエラーの発生が判断される。レイアウトエラーが発生しない場合、処理はステップS440に移行される。
ステップS430において、プロセッサCPUは、レイアウトエラーが発生する信号経路を固定エラー経路として記憶し、処理をステップS440に移行する。ステップS440において、プロセッサCPUは、ホールドエラーを含む全ての信号経路を選択したか否かを判定する。配線の切り換えを試みていない信号経路が存在する場合、処理はステップS400に戻る。全ての信号経路の配線の切り換えを試みた場合、処理はステップS450に移行される。
ステップS450において、プロセッサCPUは、配線の切り換えに使用していないマージンセルをレイアウトデータから削除する。次に、ステップS460において、プロセッサCPUは、ステップS430で記憶した固定エラー経路が存在するか否かを判定する。固定エラー経路が存在する場合、処理はステップS500に移行する。固定エラー経路が存在しない場合、処理はステップS470に移行する。
ステップS470において、プロセッサCPUは、配線を切り換えたレイアウトデータを用いてネットリストを抽出する。ステップS420、S470による処理は、図1に示した再配置部40が実施する処理に対応している。
ステップS500において、プロセッサCPUは、固定エラー経路を解消するための処理を実施する。ステップS500の処理の例は、図11で説明する。
図9は、図8に示したステップS410による配線切り換えの例を示している。
先ず、ステップS4100において、プロセッサCPUは、エラーセルの入力端子に接続される第1信号経路上からマージンセルを接続する接続位置を決める。マージンセルは、第1信号経路上に直列に接続される第1セル(第1素子)と第2セル(第2素子)との間のノードに接続される。例えば、図3に示した回路ブロックCB20において、マージンセルはセルC025とエラーセルC027との間のノードN25に接続される。
次にステップS4102において、プロセッサCPUは、ステップS4100で決定した接続位置に最も近いマージンセルを、マージンリストから選択する。次に、ステップS4104において、プロセッサCPUは、第1信号経路上にマージンセルを接続するために配置される配線の負荷を算出する。配線の負荷は、第1信号経路上のセルの出力からマージンセルの入力までを接続する新たな配線の負荷と、マージンセルの出力から第1信号経路上のセルの入力までを接続する新たな配線の負荷とを含む。
次に、ステップS4106において、プロセッサCPUは、選択したマージンセルの伝搬遅延時間がエラーセルのホールドタイムの不足時間より長いか否かを判定する。ここで、マージンセルの伝搬遅延時間に、マージンセルを第1信号経路上に接続するための新たな配線の負荷による伝搬遅延時間を加えた値を、不足時間と比較してもよい。この場合、ホールドタイムをより正確に算出できる。伝搬遅延時間が不足時間より長いとき、処理はステップS4108に移行され、伝搬遅延時間が不足時間以下のとき、処理はステップS4110に移行される。
ステップS4108において、プロセッサCPUは、マージンセルを駆動するセルの出力駆動能力と、マージンセルの出力駆動能力とを判断する。ステップS4100で決定した接続位置とマージンセルとの位置が離れている場合、マージンセルを接続するために新たに配置される配線は長くなり、配線負荷は大きくなる。このため、選択するマージンセルの位置に応じて、マージンセルを駆動するセルおよびマージンセルの出力駆動能力の判断が必要になる。
この実施形態では、選択するマージンセルの位置に応じて、出力駆動能力が十分か否かを判断できるため、半導体集積回路の性能を損なうことなく、配線の切り換えによりホールドエラーを解消できる。両方の出力駆動能力が十分な場合、処理はステップS4116に移行され、どちらか一方の出力駆動能力が不足する場合、処理はステップS3110に移行される。
次に、ステップS4110において、プロセッサCPUは、選択していないマージンセルがあるか否かを判断する。選択していないマージンセルがある場合、処理はステップS4112に移行され、全てのマージンセルが選択されている場合、処理はステップS4114に移行される。
なお、マージンセルを接続する第1信号経路上の接続位置からマージンセルまでの距離が所定値を超えるとき、選択していないマージンセルがある場合にも、処理をステップS4110からステップS4114に移行してもよい。これは、マージンセルを接続するために新たに配置される配線の負荷が大きいと、ホールドタイムは改善されるが、駆動能力が不足する可能性が高くなるためである。
また、マージンセルを駆動するセルの出力駆動能力が不足する場合、選択していないマージンセルがある場合にも、処理をステップS4110からステップS4114に移行してもよい。これは、ステップS4112により選択される新たなマージンセルと、第1信号経路上の接続位置との距離は、徐々に大きくなるため、マージンセルを駆動するセルの出力駆動能力の不足が解消しない可能性が高いためである。
次に、ステップS4112において、プロセッサCPUは、選択していないマージンセルの中から、第1信号経路上の接続位置から次に近いマージンセルを選択する。この後、処理はステップS4104に戻る。
一方、ステップS4114において、プロセッサCPUは、レイアウトエラーが発生したことを記憶し(例えば、エラーフラグを立てる)、処理を終了する。すなわち、プロセッサCPUは、第1信号経路上の接続位置に接続できるマージンセルが存在しないと判断したとき、図8に示したステップS430、S500を実施する。
ステップS4116では、プロセッサCPUは、第1信号経路上の接続位置にマージンセルを接続するために、レイアウトデータ上の配線を切り換える。なお、マージンセルの周辺に配線が高い密度でレイアウトされている場合、切り換えに必要な配線を配置できない。しかしながら、この実施形態では、図8に示したステップS470により、配線が切り換えられたレイアウトデータを用いてネットリストが抽出される。そして、図3に示したステップS12により、抽出されたネットリストを用いて、配線の再レイアウトが実施され、新たなレイアウトデータが生成される。この際、マージンセルの周辺の配線も再レイアウトされるため、切り換えられた配線が、ステップS12の処理でレイアウトできないという問題は生じない。なお、配線を切り換える例は、図12から図14で説明する。
図10は、図8に示したステップS410による配線切り換えの別の例を示している。図9と同じ処理については、詳細な説明は省略する。この例では、図9のステップS4104、S4106、S4108、S4112の代わりに、ステップS4104A、S4106A、S4108A、S4112Aが設けられている。その他の処理は、図9と同様である。
この例では、マージンセルの伝搬遅延時間が不足時間以下のときに、伝搬遅延時間を増加するために、ステップS4112Aにおいて、既に選択しているマージンセルに新たなマージンセルが追加で選択され、複数のマージンセルが直列に接続される。このため、ステップS4104Aでは、ステップS4104の処理に加えて、マージンセル間の配線の負荷も算出される。
複数のマージンセルを選択可能にすることで、第1信号経路に近いマージンセルをホールドエラーを解消するために用いることができる。この結果、第1信号経路とマージンセルとを接続する配線の負荷を小さくでき、出力駆動能力の不足によるレイアウトエラーの発生の可能性を低くできる。すなわち、配線の置き換えによるレイアウトエラーの解消効率を向上でき、レイアウト設計の効率を向上できる。この結果、半導体集積回路のレイアウトサイズを削減できる。
ステップS4106Aでは、プロセッサCPUは、選択された1つまたは複数のマージンセルの伝搬遅延時間がエラーセルのホールドタイムの不足時間より長いか否かを判定する。なお、図9と同様に、マージンセルの伝搬遅延時間に、マージンセルを第1信号経路上に接続するための新たな配線の負荷による伝搬遅延時間およびマージンセル間を接続するための新たな配線の負荷による伝搬遅延時間を加えた値を、不足時間と比較してもよい。
ステップS4108Aでは、プロセッサCPUは、図9に示したステップS4108の処理に加えて、マージンセルを駆動するマージンセルの出力駆動能力を判断する。なお、複数のマージンセルが選択されるとき、ステップS4108Aにおいて、出力駆動能力の不足が解消される可能性は低い。このため、プロセッサCPUは、ステップS4108Aにおいて、第1セルの出力駆動能力またはマージンセルの出力駆動能力のどちらか一方が不足する場合、新たなマージンセルの追加の選択を実施せずに、処理をステップS4114に移行してもよい。第1セルは、図9で説明したように、マージンセルの入力に接続され、マージンセルを駆動する第1信号経路上のセルである。
さらに、図9の説明と同様に、ステップS4110において、マージンセルを接続する第1信号経路上の接続位置からマージンセルまでの距離が所定値を超えるとき、選択していないマージンセルがある場合にも、処理をステップS4114に移行してもよい。また、選択されているマージンセルの数が所定数を超えたときに、ステップS4110に移行せず、ステップS4114に移行するステップを、ステップS4106AとS4110との間に設けてもよい。
図11は、図8に示したステップS500による処理の例を示している。
先ず、ステップS510において、プロセッサCPUは、配線の切り換えにより解消できないホールドエラーが発生した信号経路である固定エラー経路の1つを選択する。次に、ステップS520において、プロセッサCPUは、データ上において、選択した固定エラー経路にバッファを追加することでホールドエラーを解消する。
次に、ステップS530において、プロセッサCPUは、全ての固定エラー経路を選択したか否かを判定する。全ての固定エラー経路が選択されていない場合、処理はステップS510に戻る。全ての固定エラー経路が選択された場合、処理はステップS540に移行される。
ステップS540において、プロセッサCPUは、バッファを追加したレイアウトデータを用いてネットリストを抽出する。なお、ステップS540による処理は、ホールドエラーを解消するために配線を切り換えた信号経路のレイアウトデータも含まれる。すなわち、ステップS540では、ホールドエラーを解消するために、配線が切り換えられ、バッファが追加されたレイアウトデータを用いて、ネットリストが抽出される。
図12は、回路設計後のホールドタイム解析により検出されるホールドエラーの例を示している。この例では、説明を簡単にするために、解析の対象となる回路ブロックは、4つのフリップフロップFF1、FF2、FF3、FF4およびバッファBUF1、BUF2、BUF3、BUF4を有するとする。また、説明を簡単にするために、各フリップフロップFF1−FF4および各バッファBUF1−BUF4の伝搬遅延時間は”200”とし、信号線の伝搬遅延時間は、素子の伝搬遅延時間に対して無視できるものとする。フリップフロップFF2、FF4のセットアップタイムの最小値tSおよびホールドタイムの最小値tHは、それぞれ”100”とする。
フリップフロップFF1は、データ入力Dで入力信号IN1を受けている。フリップフロップFF1のデータ出力Qは、ノードN1、バッファBUF1、ノードN2、バッファBUF2、ノードN3を介してフリップフロップFF2のデータ入力Dに接続されている。フリップフロップFF2のデータ出力Qは、出力端子OUT1に接続されている。
フリップフロップFF3は、データ入力Dで入力信号IN2を受けている。フリップフロップFF3のデータ出力Qは、ノードN4を介してフリップフロップFF4のデータ入力Dに接続されている。フリップフロップFF4のデータ出力Qは、出力端子OUT2に接続されている。
フリップフロップFF1、FF2は、クロック入力(三角印)でバッファBUF3を介して供給されるクロック信号CKを受ける。バッファBUF3の出力は、ノードN5、バッファBUF4、ノードN6を介して、フリップフロップFF2、FF4のクロック入力に接続されている。
この例では、フリップフロップFF1、FF3は、ノードN5に伝達されるクロック信号CKの立ち上がりエッジに同期して、入力信号IN1、IN2の論理をラッチし、ラッチした論理をフリップフロップFF1、FF3の伝搬遅延時間(=200)後に、ノードN1、N4に出力する(図12(a、b))。ノードN1に現れた信号は、バッファBUF1、BUF2の伝搬遅延時間(=200+200)後に、フリップフロップFF2のデータ入力DであるノードN3に伝達される(図12(c))。ノードN4に現れた信号は、フリップフロップFF4のデータ入力Dに直接伝達される(図12(d))。
バッファBUF4は、ノードN5上のクロック信号CKを時間”200”遅らせて、ノードN6に出力する(図12(e))。フリップフロップFF2、FF4は、ノードN6に伝達されるクロック信号CKの立ち上がりエッジに同期して、ノードN3、N4の論理をラッチする。フリップフロップFF2、FF4は、ラッチした論理をフリップフロップFF2、FF4の伝搬遅延時間(=200)後に、出力端子OUT1、OUT2に出力する(図12(f、g))。
このとき、フリップフロップFF3がノードN4に信号を出力するタイミングと、バッファBUF4がノードN6にクロック信号CKを出力するタイミングとは、ほとんど同じである。すなわち、フリップフロップFF4において、クロック信号CKの立ち上がりエッジ(N6)に対する入力信号(N4)のホールドタイムに余裕がない。このため、フリップフロップFF4は、正しい論理をラッチできず、誤った論理(invalid)を出力する。図3に示したステップS22、S30では、フリップフロップFF4のホールドエラーが検出される。
フリップフロップFF4は、ホールドタイムが不足しているエラーセル(エラー素子)であり、エラーセルの入力に接続される第1信号経路はノードN4である。ホールドエラーリストには、第1信号経路上の素子として、フリップフロップFF3、FF4が登録される。
これに対して、フリップフロップFF2では、クロック信号CKの立ち上がりエッジ(N6)に対する入力信号(N3)のホールドタイム(=400)は、仕様(=100)に対して十分な余裕がある。フリップフロップFF2は、正しい論理をラッチし、正しい論理(valid)を出力する。例えば、ホールドタイム解析後のタイミング解析(図3のステップS30)において、ホールドタイムに余裕があるフリップフロップFF2のデータ入力Dに最も近いバッファBUF2がマージンリストとして登録される。ホールドタイムに余裕があるフリップフロップFF2のデータ入力Dに接続される第2信号経路はノードN1、N2、N3である。
なお、ノードN2が他のバッファを介して他のフリップフロップのデータ入力に接続され、このフリップフロップのホールドタイムにも余裕がある場合、バッファBUF1と上記他のバッファの両方がマージンリストとして登録されてもよい。マージンリストの登録数を増やすことで、ホールドエラーを解消するための配線の切り換え(図8のステップS410)に使用できるセルを増やすことができ、切り換え効率を向上できる。
図13は、図3に示したレイアウト設計手法によりホールドエラーが解消される例を示している。この例では、図12に示したフリップフロップFF4のホールドエラーを解消するために、マージンリストに登録されているバッファBUF2と図12の第2信号経路(ノードN2、N3)との接続が解除される。そして、バッファBUF2は、第1信号経路(ノードN4)に接続される。
これにより、フリップフロップFF4において、クロック信号CKの立ち上がりエッジ(N6)に対する入力信号(N7)のホールドタイム(=200)は、仕様(=100)に対して余裕のある値になる(図13(a))。マージンセルであるバッファBUF2を信号経路から削除することにより、フリップフロップFF2のホールドタイムは、図12の”400”から”200”に減少するが、仕様(=100)に対して余裕がある(図13(b))。換言すれば、削除してもホールドタイムを保証できるセルが、マージンセルとして登録される。
以上より、フリップフロップFF2、FF4は、ともに正しい論理をラッチし、正しい論理(valid)を出力することができる。すなわち、ホールドエラーが解消される(図13(c、d))。
図14は、図3に示したレイアウト設計手法により、ホールドエラーを有する回路(図12)をホールドエラーのない回路(図13)に修正する例を示している。実線の矩形は、セルのレイアウト領域を示し、太い実線はセル間を接続する信号線(配線)を示している。バッファBUF1、BUF2のセルにおいて、端子Aは入力端子を示し、端子Xは出力端子を示している。図12および図13に示したクロック信号CKの信号経路は、記載を省略している。
この例では、図3のステップS40の処理により、バッファBUF2(マージンセル)は、バッファBUF1およびフリップフロップFF2から切り離され、フリップフロップFF3、FF4の間に接続される。図14に示すように、バッファBUF2の置き換えは、セルの配置を変更することなく、配線の変更のみで行われる。したがって、バッファBUF2の置き換え後に、図3に示したステップS10の処理を不要にできる。この結果、レイアウト設計時間を短縮でき、レイアウト設計コストを削減できる。
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。さらに、マージンセルを第1信号経路に近い順に選択する場合に、選択するマージンセルの位置に応じて、出力駆動能力が十分か否かを判断することで、半導体集積回路の性能を損なうことなく、配線の切り換えによりホールドエラーを解消できる。
また、複数のマージンセルを選択可能にすることで、第1信号経路とマージンセルとを接続する配線の負荷を小さくでき、出力駆動能力の不足によるレイアウトエラーの発生の可能性を低くできる。すなわち、配線の置き換えによるレイアウトエラーの解消効率を向上でき、レイアウト設計の効率を向上できる。この結果、半導体集積回路のレイアウトサイズを削減できる。
以上の実施形態において説明した発明を整理して、付記として開示する。
(付記1)
同期回路を含む素子および配線の電気的特性データを用いて、前記同期回路のホールドタイムの余裕度を算出する算出部と、
ホールドタイムが不足している前記同期回路であるエラー素子、前記エラー素子の入力に接続される第1信号経路上の素子、およびホールドタイムの不足時間をホールドエラーリストに登録する第1処理部と、
ホールドタイムに余裕のある前記同期回路の入力に接続される第2信号経路上の素子の中から削除可能な素子を抽出し、抽出した素子をマージン素子としてマージンリストに登録する第2処理部と、
前記不足時間を超える伝搬遅延時間を有する前記マージン素子を前記マージンリストから選択し、選択した前記マージン素子を、前記第2信号経路から切り離して前記第1信号経路に接続するために、配線を再配置し、回路の接続関係を示す回路接続データを生成する再配置部と
を備えていることを特徴とする半導体集積回路のレイアウト設計装置。
(付記2)
前記電気的特性データは、前記半導体集積回路に配置される素子および配線のレイアウトデータに基づいて予め算出され、
前記再配置部は、
前記第1信号経路に最も近い前記マージン素子を、前記第1信号経路上の第1素子と第2素子との間に接続するために、前記マージンリストから選択し、
選択した前記マージン素子の出力駆動能力が、選択した前記マージン素子から前記第2素子までの新たな配線の負荷および前記第2素子の入力負荷を駆動する能力に対して不足しているときに、あるいは、前記第1素子の出力駆動能力が、前記第1素子から選択した前記マージン素子までの新たな配線の負荷および前記マージン素子の入力負荷を駆動する能力に対して不足しているときに、出力駆動能力の不足が解消するまで、前記第1信号経路に次に近い前記マージン素子を、前記マージンリストから順に選択すること
を特徴とする付記1に記載の半導体集積回路のレイアウト設計装置。
(付記3)
前記再配置部は、前記不足時間を超える伝搬遅延時間を確保するために、複数の前記マージン素子を前記マージンリストから選択し、選択した複数の前記マージン素子を前記第1信号経路に接続すること
を特徴とする付記1または付記2に記載の半導体集積回路のレイアウト設計装置。
(付記4)
前記第1信号経路は、前記エラー素子の入力に接続される最初の前記同期回路から前記エラー素子までの信号経路であり、
前記第2信号経路は、ホールドタイムに余裕のある前記同期回路の入力に接続される最初の前記同期回路からホールドタイムに余裕のある前記同期回路までの信号経路であること
を特徴とする付記1ないし付記3のいずれか1項に記載の半導体集積回路のレイアウト設計装置。
(付記5)
前記電気的特性データは、前記素子の伝搬遅延時間、前記素子の出力駆動能力、および前記配線の伝搬遅延時間を含むこと
を特徴とする付記1ないし付記4のいずれか1項に記載の半導体集積回路のレイアウト設計装置。
(付記6)
同期回路を含む素子および配線の電気的特性データを用いて、前記同期回路のホールドタイムの余裕度を算出する処理と、
ホールドタイムが不足している前記同期回路であるエラー素子、前記エラー素子の入力に接続される第1信号経路上の素子、およびホールドタイムの不足時間をホールドエラーリストに登録する処理と、
ホールドタイムに余裕のある前記同期回路の入力に接続される第2信号経路上の素子の中から削除可能な素子を抽出し、抽出した素子をマージン素子としてマージンリストに登録する処理と、
前記不足時間を超える伝搬遅延時間を有する前記マージン素子を前記マージンリストから選択し、選択した前記マージン素子を、前記第2信号経路から切り離して前記第1信号経路に接続するために、配線を再配置し、回路の接続関係を示す回路接続データを生成する処理と
を備えていることを特徴とする半導体集積回路のレイアウト設計方法。
(付記7)
前記電気的特性データは、前記半導体集積回路に配置される素子および配線のレイアウトデータに基づいて予め算出され、
配線を再配置するときに、
前記第1信号経路に最も近い前記マージン素子を、前記第1信号経路上の第1素子と第2素子との間に接続するために、前記マージンリストから選択し、
選択した前記マージン素子の出力駆動能力が、選択した前記マージン素子から前記第2素子までの新たな配線の負荷および前記第2素子の入力負荷を駆動する能力に対して不足しているときに、あるいは、前記第1素子の出力駆動能力が、前記第1素子から選択した前記マージン素子までの新たな配線の負荷および前記マージン素子の入力負荷を駆動する能力に対して不足しているときに、出力駆動能力の不足が解消するまで、前記第1信号経路に次に近い前記マージン素子を、前記マージンリストから順に選択すること
を特徴とする付記6に記載の半導体集積回路のレイアウト設計方法。
(付記8)
配線を再配置するときに、前記不足時間を超える伝搬遅延時間を確保するために、複数の前記マージン素子を前記マージンリストから選択し、選択した複数の前記マージン素子を前記第1信号経路に接続すること
を特徴とする付記6または付記7に記載の半導体集積回路のレイアウト設計方法。
(付記9)
同期回路を含む素子および配線の電気的特性データを用いて、前記同期回路のホールドタイムの余裕度を算出する処理と、
ホールドタイムが不足している前記同期回路であるエラー素子、前記エラー素子の入力に接続される第1信号経路上の素子、およびホールドタイムの不足時間をホールドエラーリストに登録する処理と、
ホールドタイムに余裕のある前記同期回路の入力に接続される第2信号経路上の素子の中から削除可能な素子を抽出し、抽出した素子をマージン素子としてマージンリストに登録する処理と、
前記不足時間を超える伝搬遅延時間を有する前記マージン素子を前記マージンリストから選択し、選択した前記マージン素子を、前記第2信号経路から切り離して前記第1信号経路に接続するために、配線を再配置し、回路の接続関係を示す回路接続データを生成する処理と
をコンピュータに実行させるための半導体集積回路のレイアウト設計プログラム。
(付記10)
前記電気的特性データは、前記半導体集積回路に配置される素子および配線のレイアウトデータに基づいて予め算出され、
配線を再配置するときに、
前記第1信号経路に最も近い前記マージン素子を、前記第1信号経路上の第1素子と第2素子との間に接続するために、前記マージンリストから選択し、
選択した前記マージン素子の出力駆動能力が、選択した前記マージン素子から前記第2素子までの新たな配線の負荷および前記第2素子の入力負荷を駆動する能力に対して不足しているときに、あるいは、前記第1素子の出力駆動能力が、前記第1素子から選択した前記マージン素子までの新たな配線の負荷および前記マージン素子の入力負荷を駆動する能力に対して不足しているときに、出力駆動能力の不足が解消するまで、前記第1信号経路に次に近い前記マージン素子を、前記マージンリストから順に選択すること
を特徴とする付記9に記載の半導体集積回路のレイアウト設計プログラム。
(付記11)
配線を再配置するときに、前記不足時間を超える伝搬遅延時間を確保するために、複数の前記マージン素子を前記マージンリストから選択し、選択した複数の前記マージン素子を前記第1信号経路に接続すること
を特徴とする付記9または付記10に記載の半導体集積回路のレイアウト設計プログラム。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。