JP3913180B2 - Semiconductor integrated circuit design method - Google Patents
Semiconductor integrated circuit design method Download PDFInfo
- Publication number
- JP3913180B2 JP3913180B2 JP2003013710A JP2003013710A JP3913180B2 JP 3913180 B2 JP3913180 B2 JP 3913180B2 JP 2003013710 A JP2003013710 A JP 2003013710A JP 2003013710 A JP2003013710 A JP 2003013710A JP 3913180 B2 JP3913180 B2 JP 3913180B2
- Authority
- JP
- Japan
- Prior art keywords
- clock
- wiring
- delay time
- block
- semiconductor integrated
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、半導体集積回路のレイアウト設計方法に係り、特にクロック信号を伝達するクロック配線及びクロック信号で駆動されるセルのレイアウトを設計する方法に関する。
【0002】
【従来の技術】
従来より、半導体集積回路(LSI)のレイアウト設計方式として、ゲートアレイ(又は、シー・オブ・ゲート)方式やスタンダードセル方式等がある。これらの方式は、NAND、NOR等の基本論理セルやそれらを組み合わせた複合セルをアレイ状に半導体チップ上に配置し、論理接続要求に従ってそれらのセルの端子間を配線することによってLSIを構成する方法である。これらの方法は設計の自動化が進んでおり、様々なシステムが開発されている。
【0003】
さらに、LSIの製造技術の進歩により、ゲートアレイ方式とスタンダードセル方式とを融合させたエンベデッド・アレイ・セル方式の半導体集積回路が開発されている。この方式は、半導体集積回路の中の一部の回路又は全ての回路を複数の機能ブロック内に例えば予め設計されたマクロブロックか新しく設計されたスタンダードセル方式ブロック内に組み込んで、各機能ブロックを半導体チップ上に配置し、各機能ブロック外はゲートアレイ領域と定めておく。そして、機能ブロックに収納された回路以外の回路の生成と、機能ブロック外の配線とはゲートアレイ領域で行なって、半導体集積回路を造り上げようとするものである。従って、これらの方式では、機能ブロック外の領域で任意に回路を生成できるので製造の配線工程の前までなら、回路の追加・修正を比較的簡単に行なうことができるという利点がある。
【0004】
ところで、近年は所望の機能を果たすために必要なシステム全体を1つの半導体チップ上に搭載できるほどに高集積化された半導体集積回路が開発されてきており、このように半導体集積回路の集積度が増大するにつれて半導体集積回路設計にかかる工数も増加の一途を辿っている。半導体集積回路のレイアウト設計についても例外ではなく、工数・処理時間が指数関数的に増大してきており、半導体集積回路全体を一度にレイアウトするには膨大な時間及び労力を費やすことになる。そこで、上述のように半導体集積回路を幾つかの機能ブロックに分割し、各機能ブロック内を個別に設計し、最後に機能ブロック間を配線して組み上げるといった階層設計の手法がとられることが多い。
【0005】
一方、半導体集積回路内の各セルを同期して駆動させるクロック信号の周波数も増大されてきている。半導体集積回路の動作速度は、各セルに到達するクロック信号の位相差であるクロックスキューによって制約され、同様に、システム全体の動作速度は、各半導体集積回路間のクロックスキューによって制約される。そして、半導体集積回路の高集積化によって、クロック信号で駆動されるフリップフロップ等のセルの数が多くなるとともに、各機能ブロックに供給されるクロック信号も互いに同期をとらなければならないので、クロック信号を各セルに供給するための配線方式は益々重要になってきている。
【0006】
ここで、上述のクロックスキューを最小化する方法として、クロック木を生成する方法がある。これは、図16に示すように、ある機能ブロック毎に、クロック信号入力部から同時に動作しなければならないフリップフロップ群までの配線経路をクロック木として構成し、そのクロック木内の根にあたるクロック信号を発信するセルから各フリップフロップ間までの信号が到達するまでの時間差(クロック木のスキュー)をある大きさ以内に抑える方法である。ここで、図16aに示すように、パッド11で囲まれる半導体集積回路1内には、3つの機能ブロックBL1,BL2,BL3が配置されており、各機能ブロックBL1,BL2,BL3内には、それぞれクロック信号を伝達するための配線構造(クロックネット)を示すクロック木CT1,CT2,CT3が形成されている。また、図16bは、上記機能ブロックBL1中で構成されたクロック木CT1の一部を拡大した図である。クロック木CT1の葉に相当する部位にはフリップフロップ20が配置され、クロック木CT1の各タッピングポイント23間の中間節点に相当する部位にはクロックバッファ21が配置(挿入)されている。そして、各クロックバッファ間やクロックバッファ−フリップフロップ間を配線で接続して構成されている。このように生成されたクロック木において、クロックスキューを抑えることが全回路の動作速度を速めることになるので、クロックスキューを「0」に近づけることが重要な課題となる。
【0007】
このように、クロック木を生成する際にクロックスキューを正確に「0」にする方法の公知例として、非特許文献1がある。この方法は、クロック木を構築していく際、フリップフロップから順に、ボトムアップ的に2分木を構成するようにゼロスキュー併合と呼ぶ常にその木がスキュー=0(この状態をゼロスキューと呼ぶ)となるように生成していくものである。ここで、このゼロスキューになるように2つの木から1つの木をつくるときに重要な概念として、上述のタッピングポイント23がある(図16参照)。これは、2つの木を併合するときにどの位置を根のポイント(そこにクロックバッファが接続される)にするかを表した点である。タッピングポイント23からそれぞれの木の葉にあるフリップフロップ20までの遅延を等しくなるような点に設定すれば、ゼロスキューのクロック木が実現できる。上記公知例では、フリップフロップとバッファをいったん配置させた後、ボトムアップ的に配線をゼロスキューを常に保証しながら2分クロック木になるように配線する方法が記述されている。
【0008】
ところで、このクロック木を生成するとき常にゼロスキューを保証する必要があるので、うまく配線を行なわないと配線長が長いクロック木が生成されることになる。即ち、クロック木の根から葉までの遅延時間が大きくなる結果、クロックの一周期が長くなって動作の遅い回路になってしまう。
【0009】
そこで、最近かかる不具合を解決した効率的なアルゴリズムが開発されてきている。例えば、非特許文献2がその一例である。これは、クロック信号の遅延時間の見積り式を目的関数にしてそれを最小化するアルゴリズムであり、配線幅の最適化も同時に行う手法である。
【0010】
以上のクロック木を用い、半導体集積回路を機能ブロックに区画するようにしたスタンダードセル方式(又はゲートアレイ方式)におけるレイアウト設計手順の一例は、以下のようになる。
【0011】
1.所望の動作を表した回路図を基に基本論理セルをアレイ状に配置する。このとき、フリップフロップは機能ブロック全体に広がるように配置する。
【0012】
2.クロック信号を伝達する配線のネット(クロックネット)に対して、フリップフロップ群からボトムアップ的にクロック木を構成しながら、クロックバッファの配置とクロック木の概略配線経路を決定する。
【0013】
3.残りのネットについて、概略的な配線経路を決定する。
【0014】
4.クロックネットについて、概略的な配線経路に従ってゼロスキューになるように詳細配線を行なう。
【0015】
5.クロックネット以外のネットについて、概略的な配線経路に従って詳細配線を行なう。
【0016】
一方、上述の手順とは異なる手順でクロック木を生成する方法として、例えば特許文献1に開示されるように、階層的にブロックを分割しながらトップダウン的にクロック木を生成する方法がある。この方法は、上記手順1.と2.とを同時に行なう方法であって、トップダウンに階層的領域分割を行ないながら、クロックバッファの挿入と基本論理セルの配置とクロック木構造の生成を一度に行なうものである。この方法によれば、クロック木構造を意識しながらフリップフロップ以外の基本論理セルの配置の最適化が図れるという利点がある。
【0017】
なお、これら上述の手法は、半導体チップ全体で一度に行なうか、各機能ブロック毎に適用されることが多い。
【0018】
また、半導体集積回路の設計は階層的に行なわれることが多いので、機能ブロック毎に適用された場合、機能ブロック同士のクロック信号の同期をとることも重要なことである。各機能ブロックに供給されるクロック信号同士の同期をとる従来のレイアウト方法の一例としては、
(A)クロック供給源から機能ブロックに至るブロック外クロック配線を、各機能ブロック外の配線チャネルに制限されることなく自由に、かつ、クロック供給源から各機能ブロックのクロック入力部(クロック端子)まで等長となるように敷設する方法
(B)半導体集積回路の中心部にクロック信号分配部を設置して、クロック供給源とクロック信号分配部とを1本のクロック配線で接続し、クロック分配部と機能ブロックを含む各機能ブロックのクロック端子との間に各々のクロック配線を等長となるように敷設する方法
等がある。例えば、特許文献2に開示される方法がその一例である。
【0019】
【非特許文献1】
Proc. IEEE International Conference on Computer Aided Design, 1991, pp.336-339
【非特許文献2】
Proc. IEEE International Conference on Computer Aided Design, 1993, pp.563-566
【特許文献1】
特開平6−282603号公報(要約書)
【特許文献2】
特開平5−198674号公報(要約書)
【0020】
【発明が解決しようとする課題】
しかしながら、上記非特許文献1及び2の方法では、フリップフロップとクロックバッファを含む基本論理セルを先に配置してからクロック木を生成するので、ゼロスキューになるようにクロック木は構成できるが、クロック木の遅延時間の大きさを最小にすることや要求された遅延時間値に収めることは困難であるという問題があった。そのため、半導体集積回路内において各機能ブロック間の動作の同期を得ることができない虞れを生じたり、複数の半導体集積回路からなるシステムを構成した場合に、各半導体集積回路間の動作の同期を得ることができない虞れがあった。
【0021】
特許文献1の方法では、階層的にフリップフロップ群の分散が行なわれるため、クロック木の遅延時間の大きさを最小にすることや要求された遅延時間値に調整することが困難である。そのため、非特許文献1,2と同様に、各半導体集積回路間の動作の同期を得ることができない虞れがあった。
【0022】
また、非特許文献1,2及び特許文献1の方法が目的とするごとく、クロックスキューが現実に「0」になると、同時に多数のフリップフロップが動作してしまうことになり、一時的に多くの電流(ピーク電流の増大)が流れる。従って、電力供給状態によっては、フリップフロップが動作しなくなる場合が生じる虞れがあった。すなわち、従来のように各論理セルに対するクロックスキューが「0」になるように設計していても、半導体集積回路内に組み込まれるフリップフロップ等の論理セルの数がそれほど多くない場合には、現実には工程上のバラツキ等によって少しずつ作動時刻がずれるので、一度に多くの論理セルが作動することによる動作不良を生じる虞れは少ない。しかし、最近のように半導体集積回路あるいはシステム全体の規模が大きくなってしかもクロック周波数が増大すると、現実に同時に作動する論理セルの数が増大する確率が高くなる。したがって、瞬時的に過剰な電流が生じることに起因する上述の不具合を招く虞れがある。
【0023】
また、非特許文献1,2,3の方法では、通常クロックネットは、クロック信号が供給されないセルに対する他のネットと同時に配線される場合(使用できる配線層は同じ)が多く、大規模で複雑なクロック木の場合、他のネットとの配線経路の関係からクロックネットの配線経路の迂回路の発生等、配線長がいたずらに長くなる配線が発生しやすくなるといった問題があった。
【0024】
また、特許文献2の方法において、半導体チップ上に機能ブロックを配置してクロック木を生成してクロック配線を行なう場合、その配線はクロック供給源から各機能ブロックのクロック端子までを等長にしなければならないという制約があり、その制約を守るために他のネットの障害を避ける意味でクロック専用の配線を用いることが必要になってくる。例えば、配線層を3層で構成する半導体チップの場合、第1及び第2層目配線を一般信号線や電源配線用とし、第3層目配線をクロック配線用として用いることになる。この場合、3層目配線に一般信号線を形成できないため、3層目配線を一般信号線としても併用した場合と比べてチップ面積が大きくなる。一方、配線層が2層の半導体集積回路では、クロックネットとクロックネット以外のネットとを混在させると、クロックスキューの正確な調整が困難となる。これは、下記理由による。すなわち、クロックネットとクロックネット以外のネットとを同じ配線層内に混在させているので、クロックネットとクロックネット以外のネットとの干渉を避けるためには、クロック発生源から各機能ブロックのクロック入力端子までの配線長を同じ長さにすることが困難な場合が多い。したがって、いったん機能ブロックの配置やクロックネットの配線を行った後、スキューの最終的な調整を行うためにクロックバッファのトランジスタサイズを変更しなければならない場合等がある。その場合、機能ブロック内のクロックバッファのトランジスタサイズを変更すると、機能ブロック内のレイアウトを再度設計する必要が生じる。しかし、これではレイアウト工数が大幅に増大することになり、このような手法を用いることの意義が薄れてしまうことになる。
【0025】
本発明の目的は、半導体集積回路内における遅延時間を容易に所定範囲内に調整し得る手段を講ずることにより、多数の回路を組み込んだシステム全体においても、各回路間の作動を円滑にある同期させ得るような半導体集積回路のレイアウトを設計することにある。
【0028】
【課題を解決するための手段】
本発明の半導体集積回路の設計方法は、複数の素子で構成される半導体集積回路を少なくとも1つの素子からなる複数のセルに区画し、上記複数のセルを上記クロック信号が供給される複数の第1種セルと該第1種セル以外のセルからなる複数の第2種セルとに分類し、かつ上記複数のセルを複数の機能ブロックに区画して、上記半導体集積回路を設計する方法であって、仮配置された各機能ブロックとブロック外配線とを用いて、上記第1クロック入力部から上記各機能ブロックの上記第2クロック入力部までのブロック外遅延時間と各機能ブロック内における上記第2クロック入力部から上記各第1種セルまでのブロック内遅延時間との和として最終的遅延時間を上記各第1種セルごとに算出して、上記各第1種セルにおける最終的遅延時間の差であるクロックスキューが制限範囲に収まり、かつ上記各第1種セルについての最終的遅延時間が所定範囲に収まるように上記ブロック外配線経路を回路シミュレータにより算出する第1ステップと、上記第1ステップで算出された各配線経路にしたがって配線パターンを生成する第2ステップとを備えている。
【0029】
この方法により、半導体集積回路内における各第1種セルにおける遅延時間がある幅に調整される。したがって、半導体集積回路内における各機能ブロック間において、各セルを構成する素子が共通のクロック信号に同期して動作する。また、複数の半導体集積回路で構成されるシステムの各半導体集積回路間においても、各セルを構成する素子が共通のクロック信号に同期して動作することができる。
【0032】
上記第1ステップで、各セルの最終的遅延時間を上記所定範囲内で互いに異なる複数の値に分布させることにより、半導体集積回路の回路規模が大きくなり、クロック周波数が増大しても、半導体集積回路内で現実に多くのセルが同時に作動するような事態を回避することが可能となる。したがって、瞬間的な電流の増大に起因するフリップフロップ等の動作不良を防止することができる。
【0033】
上記第1ステップを、上記機能ブロックへの第2クロック入力部から導出される配線を順次複数方向に分木させ最終的に個々の上記第1種セルに至るように構成されたクロック木構造を表すテンプレートを生成するステップと、上記クロック木構造に基づいて、上記各第1種セルを機能ブロック内に配置し、さらに上記第1種セルが配置された領域以外の空き領域に上記第2種セルを配置するステップと、論理接続要求に従って、上記各セル間の概略の配線経路を算出するステップと、上記第2クロック入力部から上記クロック木上の各第1種セルにおける遅延時間を最終的に所望の値に調整するステップと、上記ステップで求めた配線経路に従って機能ブロック内の配線パターンを生成するステップとにより構成することにより、各機能ブロック内でクロック木構造を利用したクロックネットの形成が容易に行われる。また、予めクロックネットの構造が定まっているので、第2種セルの配置の最適化やクロックネットとクロックネット以外のネット間の配線の干渉を容易に回避することができる。したがって、レイアウト設計のための工数が大幅に低減されることになる。
【0034】
上記テンプレートを生成するステップを、上記クロック木の分木数を算出するステップと、上記クロック木の大きさを算出するステップと、上記クロック木上のタッピングポイントの位置を算出するステップと、上記クロック木に遅延時間調整用セルを配置するステップとにより構成することにより、テンプレートを生成する段階で、機能ブロック内への第2種セルを配置するための領域が確保され、遅延時間及びクロックスキューがある程度所望値に近い状態に設定されているので、後のステップの進行がスムーズとなる。したがって、レイアウト設計の能率が大幅に向上する。
【0035】
なお、上記各セルの最終的な遅延時間を調整するステップは、クロック木上の中間節点に位置するセルの出力駆動能力の変更と、クロック木内の配線の幅の変更と、クロック木上のタッピングポイントの変更とのうち少なくともいずれか1つの変更により行うことができる。
【0036】
上記第2クロック入力部の前段側かつ機能ブロックの外側にブロック外遅延時間調整用セルを配置するステップをさらに備えることにより、ブロック外遅延時間調整用セル例えばクロックバッファのサイズを変更するだけでブロック外遅延時間やクロックスキューが調整され、その際、各機能ブロック内のレイアウトを再設計し直す必要はない。したがって、このリサイジングに伴うレイアウト工数の増大を回避することができる。
【0048】
図1a−図1dは、クロック構造の設計の概念を示す図である。図1aに示すように、半導体集積回路1の内部を複数の機能ブロックBL1,BL2,…,BLnに区画し、各機能ブロックBL1,BL2,…,BLnの配置を仮に定める。すると、クロック発生源2から第1クロック入力部3を介して半導体集積回路1内に入力されるクロック信号を各機能ブロックBL1,BL2,…,BLnの第2クロック入力部4まで伝達するためのブロック外配線経路CNout (ブロック外クロックネット)も仮に決定し得る。ただし、図1aに示す半導体集積回路1内の内部が空白で表されている枠は、図1bに示す機能ブロックBL1,BL2,BLnを示す。そして、図1bに示すように、半導体集積回路1内の各機能ブロックBL1,BL2,…,BLn内には、多数の論理セルが収納された状態となっている。
【0049】
ここで、図1cに示すように、ブロック外クロックネットCNout を構成する配線は電気的には抵抗と容量とが結合した遅延要素の集合であるので、第1クロック入力部3から各機能ブロックBL1,…,BLn-1 ,BLnまでのブロック外遅延時間T1out ,…,Tn−1out ,Tnout は仮に定まる(ただし、配線の径は一定値としておく)。また、各機能ブロックBL1,…,BLn−1,BLnはそれぞれ遅延時間T1in,…,Tn−1in,Tninをもったバッファとみなし得る。従って、第1クロック入力部3から各機能ブロックBL1,BL2,…,BLn−1,BLnの各論理セルまでのクロック信号の遅延時間T1,T2,…,Tn−1,Tnを概略的に見積もることができる。そして、この段階で各機能ブロックにおける遅延時間T1,T2,…,Tn−1,Tnがそれぞれ所定範囲内に収まるか否かを見積もる。同時に、クロックスキューが制限範囲内に収まるかどうかの見当をつける。なお、クロックスキューが「0」であるということは、T1=T2=…=Tn−1=Tnであることを意味する。そして、各論理セルにおける遅延時間T1,T2,…,Tn−1,Tnがいずれも所定範囲に収まるという見通しが立てば、仮に定めた位置への機能ブロックの配置及び機能ブロック内のクロックネットの設計にはいる。一方、この段階で、各機能ブロックにおける遅延時間T1,T2,…,Tn−1,Tnを所定時間に収める見通しが立たない場合には、機能ブロックBL1,BL2,…,BLn−1,BLnの配置を変更するなどによって、各論理セルにおける遅延時間T1,T2,…,Tn−1,Tnを再度見積もり、遅延時間が所定範囲内に収まりかつクロックスキューが制限範囲内に収まるまで仮配置を行う。この仮配置が終わると、図1dに示すように、仮配置が終わった段階におけるクロックネットについて回路シミュレータ(例えばSPICE)を用いて詳細に遅延時間の演算を行う。
【0050】
次に、本実施形態におけるクロック設計方法の詳細について説明する。まず、図2aに示すように、ブロック外クロックネットCNout を形成する。このとき、半導体集積回路1内に各機能ブロックBL1,BL2,…を仮に配置しておき、ブロック外クロックネットCNout のうち各機能ブロックBL1,BL2,…,BLnに至るまでの最終分岐点までの部分を決定し、最終分岐点5から各機能ブロックBL1,BL2,…,BLnに至る部分は、仮に決定しておく。つまり、最後に機能ブロックBL1,BL2,…,BLnの位置を少しずらせる余地は残しておくのである。そして、第1クロック入力部3から各機能ブロックBL1,BL2,…,BLnの第2クロック入力部4までのクロック信号のブロック外遅延時間T1out ,T2out ,…,Tnout を計算する。
【0051】
次に、図2bに示すように、各機能ブロックBL1,BL2,…,BLn内におけるクロック信号を伝達するための配線経路であるクロック木CT1,CT2,…,CTnを後述のクロック木構造で生成する。このクロック木の生成方法については、第2の実施形態で説明する。このとき、各機能ブロックBL1,BL2,…,BLn内におけるブロック内遅延時間T1in,T2in,…,Tninを計算する。
【0052】
最後に、図2cに示すように、半導体集積回路1内に各機能ブロックBL1,BL2,…,BLnを組み込んだ状態で、各機能ブロック内の論理セルにおける遅延時間T1(=T1out +T1in),T2(=T2out +T2in),…,Tn(=Tnout +Tnin)を算出する。このとき、各論理セルにおける遅延時間T1,T2,…,Tnがそれぞれある範囲内で互いに異なる何種類かの値に群別されるように制御しながら、各クロックネットの配線の幅を変更し、あるいは必要に応じてクロックバッファを配置する。その場合、クロックスキューは「0」ではなく、何種類かの異なる値に群別されることになるが、各論理セルの同期不良を招かない程度の制限範囲内には収まるようにする。
【0053】
このように遅延時間を群別する場合、各機能ブロックBL1,BL2,…,BLn単位で何種類かに群別すればある機能ブロック内では各論理セルへのクロック信号の遅延時間が同じになるように設計することになる。それでもよいが、各論理セルについて遅延時間を群別してもよい。つまり、ある機能ブロック内である論理セル群毎にクロック信号の遅延時間が異なるように設計してもよい。
【0054】
本実施形態のようなレイアウト設計方法では、先に機能ブロック外の配線経路つまりブロック外クロックネットを生成し、その後各第1クロック入力部3から各論理セルまでのクロック信号の遅延時間T1,T2,…,Tnを所定範囲にするように、全体のクロックネットを生成するので、各論理セルまでのクロック信号の遅延時間T1,T2,…,Tnを所望の値に調整し得る。従って、各機能ブロック間において、各論理セルが共通のクロック信号に同期して動作する。また、幾つかの半導体集積回路で大きなシステムを構成する場合でも、各半導体集積回路間の作動を正確に同期させることができる。
【0055】
なお、本実施形態のように、クロックネットの構造設計の当初はブロック外クロックネットCNout のうち各機能ブロックBL1,BL2,…,BLnに至る最終分岐点5までに止めておく必要は必ずしもなく、各機能ブロックの各第2クロック入力部4まで決定してもよい。ただし、本実施形態のごとく、クロックネットの構造設計の当初はブロック外クロックネットのうち最終分岐点5までの部分をまず決定しておき、最後の配線を行うステップで遅延時間を調整する等のために機能ブロックの位置を微調整することで、特に遅延時間の調整を微細かつ正確に行うことができるとともに、調整可能な幅の拡大をも図ることができる。
【0056】
なお、本実施形態では、本番のクロックネットのレイアウト設計に入る前に擬似的にクロックネットの設計を行ったが、必ずしも擬似的なクロックネットの設計を行うことなく本番のクロックネットのレイアウト設計から始めてもよい。ただし、擬似的なクロックネットの設計の段階で、遅延時間T1,T2,…,Tnが所定範囲に収まるように各機能ブロックBL1,BL2,…,BLnの適正な配置場所を概略的に求めておくことで、後に当初の配置場所ではどうしても遅延時間やクロックスキューを所望の値に調整できないことが判明して機能ブロックを再配置しなければならなくなるような事態を回避し得る。
【0057】
また、本実施形態におけるような遅延時間の群別は必ずしも行う必要はなく、各論理セルの遅延時間を同じに、言い換えるとクロックスキューが「0」になるようにしてもよい。ただし、このように設計段階で論理セルにおける遅延時間が幾つかの異なる値に群別されるように設計しておくことで、半導体集積回路の規模が大きくなり、クロック周波数が高くなったときでも、ある瞬間に多くの論理セルが一度に作動して電力の不足により動作不良を生じるのを有効に防止することができる。
【0058】
さらに、本実施形態においては、ブロック外クロックネットCNout はクロック木を用いて設計しなかったが、クロック木を利用してブロック外クロックネットCNout を設計するようにしてもよい。
【0059】
(第2の実施形態)
次に、第2の実施形態について、図3−図11を参照しながら説明する。
【0060】
図3は、第2の実施形態におけるレイアウト設計方法の全体の手順を示すフローチャートである。
【0061】
図4は、本実施形態に係る半導体集積回路1の構成を示し、半導体集積回路1内のパッド11で囲まれる領域に3つの機能ブロックBL1,BL2,BL3が配置されており、クロック信号を供給するクロック発生源(図示せず)から各機能ブロックBL1,BL2,BL3に供給されるクロック信号を伝達するブロック外クロックネットCNout と、各機能ブロックBL1,BL2,BL3内で各基本論理セルにクロック信号を伝達するための配線経路を表すクロック木CT1,CT2,CT3が生成されている。
【0062】
図5−図8は、上記図3に示す手順に従って上記図4に示す機能ブロックBL1内における配置配線を行う場合の構造の変化を示す図である。
【0063】
以下、図5−図8を参照しながら、図3に示す手順に従って、概略的な手順のみを説明する。
【0064】
まず、ステップST1で、例えば図5aに示すように、クロック木が持つ遅延(木の根から各葉までの到達時間)を制限範囲内に抑えるために、機能ブロックBL1におけるクロック木CT1の構造を表すテンプレートを生成する。本実施形態では、予めクロック木CT1上に配置される第1種セルであるフリップフロップ及びクロックバッファの位置とクロック木CT1自体の大きさを決定するために、クロック木CT1のテンプレートを生成する。ここで、重要なことは、クロックバッファのトランジスタサイズの変更だけでなく、クロック木の大きさによっても、クロック木の根から葉に位置するフリップフロップまでの遅延時間(この実施形態ではブロック内遅延時間Tinになる)を変化させることができることである。この性質を使って、クロック木の遅延を微細に調整できるとともに、必要に応じて空き領域を確保することができる。その際、ステップST12で、遅延時間の計算を行い、その計算結果を基にテンプレートを生成する。例えば図5bに示すように、タッピングポイント23を各論理セルの等距離位置よりもずらせることで、各論理セルにおける遅延時間を互いに異なる値とし、クロックスキュー値を調整することもできる。
【0065】
次に、ステップST2で、全ての論理セルを配置する。このとき、まず、図6a及び図6bに示すように、クロック木CT1上に第1種論理セルであるフリップフロップ20及びクロックバッファ21を先に配置する。その後に、図7aに示すように、残りの第2種論理セル22を配置することにする。
【0066】
次に、ステップST3で、概略配線を行なう。クロック木の構造は既にステップST1で生成されているが、クロック木に関する概略配線経路を詳細に決定し、つまり具体的に半導体集積回路内のどの辺りに配線を引くかを決定し、さらにクロックネット以外のネット(つまり、クロック信号以外の信号を伝達する配線の経路)に関しても概略的な配線経路を求める。このとき、クロック木の構造を考慮して、配線混雑度の最小化等を行ない、配線領域の面積が最小化されるような概略配線経路を決定する。
【0067】
次に、ステップST4で、フリップフロップ20及びクロックバッファ21の配置位置を基に、詳細にクロックスキュー値の調整を行なう。その際、クロックバッファ21のトランジスタサイズの変更や、図7bに示すような経路30,31,32における配線幅の変更や、タッピングポイントの変更等を行なって微小な調整をする。このステップST4では、クロック木の遅延の調整は行なわない。何故なら、この段階では大きな遅延の変更(調整)が不可能であるからである。なお、クロックバッファのトランジスタサイズの変更の代わりに、異なるクロックバッファを選択する方法でもよい。
【0068】
最後に、ステップST5で、図8に示すように、全てのネットの配線の詳細なパターンを生成する。ここでは、下記2つの方法(1)又は(2)
(1)クロックネットに対し専用配線層1層で配線し、それ以外のネットは他の配線層を用いて配線する方法
(2)全ネットについて全ての配線層を用いて配線する方法
を択一的に選択することができる。
【0069】
上記方法(2)の場合、クロックネットとクロックネット以外のネットとの関係によっては、所望のクロックスキュー値と異なる配線を行なう場合が発生するかもしれないので、さらに微小な調整の意味で配線幅変更を行なう。
【0070】
このように、クロック木構造決定にテンプレートを用いているので、フリップフロップやクロックバッファの最適配置の決定及びクロックスキューやクロック木の遅延を柔軟かつ容易に制御することができ、クロック周波数の高い半導体集積回路のレイアウト設計が容易となる。また、クロック木構造が予めわかっているので、他の論理セルの配置位置を最適化でき、かつクロックネットと一般信号ネットとの間の干渉を回避して配線混雑度を容易に低減することができる。
【0071】
なお、本実施形態はクロック木の中間節点のクロックバッファとしてバッファを配置してクロック木を生成しているが、クロック木の根元から葉までが偶数段である場合には、論理値が反転するインバータを配置しても最終的には入力信号の論理値が維持されるので、不具合は生じない。
【0072】
次に、上記図3に示すフローチャートの各ステップST1−ST5の具体的な内容について説明する。
【0073】
ステップST1は、図3に示すように、大きく分けて4つのステップから構成されている。まず、ステップST6で、クロック木の構造を決定する。その場合、例えば図9aに示す2分木方式と図9bに示す3分木方式とがある。図9aに示す2分木方式の場合、クロック木をバッファ挿入レベルが「3」とすると、図9aの上図に示すように、フリップフロップ20を最大8個まで配置でき、クロックバッファ21は7つ挿入する必要がある。ここで、バッファ挿入レベルとはクロック信号を供給する根元となるクロックバッファ21から各フリップフロップ20まで辿るのに必要なバッファの段数である。もしバッファ挿入レベルが「3」でクロック木が3分木とすると、図9bに示すように、フリップフロップ20を最大9個まで配置でき、クロックバッファ21は4つ挿入する必要があることになる。従って、分木数が多くなるほどバッファ挿入数が減少し、最大フリップフロップ数は増加するが、バッファ間やフリップフロップ−バッファ間の配線が増加するので最終的なチップ面積に有利であるとは限らない。
【0074】
なお、1つのクロック木内における分木数の種類を2分木,3分木等の単一種類に限定してもよいが、1つのクロック木内に数種類の分木数を混在させてもよい。
【0075】
本実施形態では、図5aに示すように、2分木構造のクロック木CT1を生成する。
【0076】
次に、ステップST7で、テンプレートサイズつまり機能ブロックBL1内で生成するクロック木CT1の大きさを決定する。図10aは、各機能ブロックBL1,BL2,BL3内におけるテンプレート領域Ret1,Ret2,Ret3を示し、各テンプレート領域Ret1,Ret2,Ret3は各機能ブロックBL1,BL2,BL3で生成するクロック木CT1,CT2,CT3の大きさをそれぞれ表している。例えば、図10bはテンプレートサイズを小さく設定した場合の形状を示し、図10cはテンプレートサイズを大きく設定した場合の形状を示す。両者の形状は幾何学的には相似であるが、クロックバッファ間やフリップフロップ−バッファ間の配線の長さが異なってくる。そして、配線の長さが異なると、配線の遅延時間が変化し、短い配線長であるほど配線における遅延時間は小さくなる。すなわち、図10bに示すテンプレートサイズを有するクロック木の方が、総遅延時間(根元のクロックバッファからフリップフロップまでの最大遅延時間)が小さいことになる。しかし、クロック木のサイズを小さくし過ぎると、フリップフロップが狭い領域に集中し、配線の混雑による配線の占有面積が増大し、最終的な機能ブロック面積の増加やチップ面積の増加を引き起こすことになるので注意しなければならない。
【0077】
本実施形態では、図5a,図5bに示すように、機能ブロックBL1の大きさ一杯にクロック木を生成させる。
【0078】
次に、ステップST8で、クロックスキューの大きさを調整するためにタッピングポイント23を決定する。図11aは、クロック木がバランスするようにタッピングポイント23を設定している場合であり、クロックスキューは「0」となる。一方、図11bはタッピングポイント23を図中やや左方にずらし、クロック木としてアンバランスな形を形成したものである。この場合、各クロックバッファ21間やクロックバッファ−フリップフロップ間の配線長が各々異なっているのでクロックスキューは「0」より大となる。これを実現するために、図3のフローチャートに示すように、ステップST8は、2つのサブステップST8a及びST8bから構成されている。すなわち、ステップST8aで、予め設定された最大許容スキュー値以内のあるクロックスキュー値に設定した後、ステップST8bで、その設定されたクロックスキュー値に合うようなタッピング位置を決定する。
【0079】
その際、ステップST12による遅延時間の計算結果を利用してクロックスキュー値を算出する。クロックスキュー値は、2分木の場合、分木される左側に生じる遅延時間と分木される右側に生じる遅延時間との差であるから、先のステップST8aで設定されたクロックスキュー値になるように、タッピングポイント23の位置を決定する。これは、3分木以上の場合も同様に計算することができる。
【0080】
以上のステップによってクロック木の大きさとタッピングポイント23の位置までが決まってもクロック木に挿入されるクロックバッファ21の種類が決定していないので、クロック木の遅延時間は一意に定まらない。それを決定するために、ステップST9で、挿入されるクロックバッファ21の種類を選択する。クロックバッファ21は、一般的に駆動能力の大きいものは早く、小さいものは遅く動作する。予め要求されたクロック木の遅延時間値になるように、ステップST12で得られた遅延時間の計算結果に基づいて各クロックバッファ21の種類を選択する。ここで、どのようにクロックバッファの組み合わせを変えてもクロック木の遅延の要求値に合わない場合が発生することもあり得るが、その場合は、ステップST7に戻ってクロックバッファ21の種類を固定して再度テンプレートの大きさを決定する。
【0081】
以上のステップにより、要求されるクロックスキュー値とクロック木の遅延時間値に合ったテンプレートの大きさと、その中に挿入されるクロックバッファ21の種類及びタッピングポイント23の位置が決定される。
【0082】
図5bは、機能ブロックBL1において、クロック木CT1の各部のタッピングポイント23の位置が決定された状態を示している。
【0083】
次に、ステップST2で、フリップフロップとクロックバッファを含む回路中の論理セル群を配置する。その際、まず、クロック木に配置される第1種論理セルを配置する。すなわち、ステップST2aで、図6aに示すように、機能ブロックBL1内のクロック木CT1にフリップフロップ20を配置する一方、ステップST22bで、図6bに示すように、クロック木CT1にクロックバッファ21を配置する。ただし、フリップフロップ20とクロックバッファ21との配置の順番はどちらでも良い。
【0084】
そして、ステップST2cで、機能ブロックBL1内のクロック木CT1以外の部位に、クロック信号が直接入力されない第2種論理セル(残セル)22を配置する。図7aは、第2種論理セルが配置された状態を示す。この状態では、まだ配線幅等は未定なので、配線部分は破線で示されている。
【0085】
その際、すでにフリップフロップ20とクロックバッファ21を配置しているので、クロック木CT1つまりブロック内クロックネットの構造を意識しながら第2種論理セル22を配置することができる。従って、仮想配線長の最小化や配線混雑度の低減化等を評価しながら配置の最適化を行なうことが可能となる。ただし、このステップのみでは配置が良くない場合もあり得る。その場合には、さらに、上記ステップST2aやステップST2bに戻って、第2種論理セル22を配置した状態で、フリップフロップ20又はクロックバッファ21の配置改善を行ない、その後、再度ステップST2cで第2種論理セル22の再配置を行なうことができる。その際、配置状態が最適化されるまで、例えば仮想配線長が最小なるまでや配線混雑度が最小になるまで行なうことにより、従来クロックネットとその他のネットの配線の絡み合いが低減され、結果的に混雑(密集)の少ない配線パターンの生成ができる。
【0086】
次に、ステップST3では、全ネットの概略配線経路を決定するが、すでにクロック木構造が決まっているので、設定したクロックスキューやクロック木の遅延を保持しながら、クロックネット以外のネットとの間の配線経路を決定することができる。
【0087】
以上の各ステップによって、全ネットの概略配線経路まで定まったので、ステップST4では、所望のクロックスキュー値を正確に実現するために、クロックバッファ21のトランジスタサイズ変更、配線幅の変更及びタッピングポイント23の変更を行なう。配線における遅延時間は配線がもつ容量と抵抗から求められるので、クロックスキューの大きさは、配線幅によって調整でき、配線幅の変更もクロックスキュ値ーを調整するための一手段として用いることができる。例えば図12aは、タッピングポイント23がバランスし、かつ同一の幅を有する配線を用いた場合の配線状態を示す。この場合、明らかにクロックスキュー値は「0」である。それに対し、図12bは、タッピングポイント23はバランスしているものの、2種類の相異なる幅を有する配線を用いた場合の配線状態を示す。この場合、配線幅が大きい程抵抗値が下がるので、太い配線を用いた経路における遅延時間は小さくなる。なお、太い配線において、容量は逆に増えることになるがその割合は抵抗値より低い。従って、図12bに示す配線状態では、クロックスキュー値は「0」ではない。
【0088】
なお、このステップST4は、ステップST12による遅延時間の計算と連係しながら実行する。
【0089】
ここで、ステップST4のサブステップST4aでクロックバッファ21のトランジスタサイズの変更を行い、サブステップST4bで配線幅の変更を行い、サブステップST4cでタッピングポイント23の位置の変更を行なう。タッピングポイント23の位置は、各セルの配置が既に完了しているので、大幅に変更することは困難である。従って、遅延時間を大幅に調整する場合は、クロックバッファ21のトランジスタサイズの変更による。そして、遅延時間の微調整は、配線幅の変更とタッピング位置の変更とによる。これらのステップST4a−4cを用いることによって、正確なクロックスキュー値の調整が可能となる。図7bにおいて、経路30は最小線幅で、経路31はそれより少し太く、さらに経路32は経路31より太い配線幅にしたことを表している。
【0090】
次に、ステップST5で全ネットの配線を行うが、上述のように、ステップST5を実行する具体的な方法として上記方式(1)と方式(2)とがある。
【0091】
方式(1)では、ステップST10aで、クロックネットを主に一層で配線し、ステップST10bで、クロックネット以外のネットをステップST10aで主に使われなかった層を用いて配線をする。このようにステップST10aでクロックネットのみを主に一層で配線する理由は、以下の通りである。すなわち、ステップST4で、クロックスキュー値を正確に計算してタッピングポイント23や経路30,31,32の配線幅を変更してクロックネットを構成したが、クロックネットをクロックネット以外のネットと同様に扱うと、上述の設定通りに実際の配線を行うことが困難となる虞れがあるからである。
【0092】
また、方式(2)では、ステップST11aで、いったん全ネットを配線した後、ステップST11bで、クロックネットのみに対し、ステップST8aで求めたクロックスキュー値に合わせて再度配線幅を変更する。
【0093】
図8に示すように、本実施形態では、ステップST4で決定した各クロックネットの構造に合わせて配線幅を決定している。例えば、図7bに示す経路30,31,32は、それぞれ図8に示す配線33,34,35にそれぞれ対応している。
【0094】
以上でレイアウトが完了する。
【0095】
本実施形態によれば、クロック木構造決定にテンプレートを用いているので、フリップフロップやクロックバッファの最適配置の決定とクロックスキューやクロック木に配置される各第1種論理セルにおける遅延時間の調整とを柔軟かつ容易に行うことができ、クロック周波数の高い半導体LSIチップのレイアウト設計が容易となる。また、クロック木構造が予めわかっているので、他の論理セルの配置位置最適化やクロックネットと一般信号ネットの間の配線混雑度の低減を容易化することができる。
【0096】
なお、第2実施形態において、ブロック外クロックネットをクロック木を用いて設計してもよいし、各論理セルを機能ブロックに分割することなく、半導体集積回路内に配置してもよい。
【0097】
(第3の実施形態)
次に、第3の実施形態について、図13−図15を参照しながら説明する。図13は、第3の実施形態に係る半導体集積回路1のレイアウトを示す図である。図13に示すように、半導体集積回路1内には、4つの機能ブロックBL1−BL4が配置されており、各機能ブロックBL1−BL4が配置されている領域以外の領域はトランジスタを敷き詰めたゲートアレイ領域40となっている。また、クロック信号を生成するために、パッド上の一部にクロック発生源2が設けられている。クロック信号は、ブロック外クロック配線41を通り、各クロック端子43を介して各機能ブロックBL1−BL4に供給される。ブロック外クロック配線41と各機能ブロックBL1−BL4との間にはクロックバッファ44が配置されている。このバッファ44はブロック外クロック配線41を構成するためのクロック木を構成したときに現れるものか、或は、機能ブロックBL1−BL4内のクロック木CT1−CT4の根になるものかいずれかである。ブロック外クロック配線41を生成する場合、通常各機能ブロックBL1−BL4に供給されるクロック信号の同期をとるために、可能な限りクロック発生源2から各クロックバッファ44までが等長となるように配線が行なわれる。
【0098】
ここで、本実施形態では、クロックバッファ44は機能ブロックBL1−BL4の外側に配置されているので、各機能ブロックBL1−BL4とは独立して、クロックバッファ44のトランジスタサイズの変更(リサイジング)が可能となる。機能ブロックBL1−BL4内に根元となるクロックバッファを配置した場合、何らかの問題から機能ブロックBL1−BL4のレイアウトを終了したのちにクロックバッファのバッファサイズ、即ちトランジスタサイズの変更があったとき、遅延時間を所望の値の制御するためには、再度機能ブロックBL1−BL4をレイアウトする必要が生じ、レイアウトのための工数が増大する。それに対し、このように機能ブロックBL1−BL4の外部にクロックバッファ44を配置することで、機能ブロックの再レイアウトを実行することなしにチップ全体のクロック木の遅延時間やクロックスキューの調整を詳細に行なうことができ、よって、レイアウト工数の増大を有効に防止することができる。
【0099】
なお、図13のクロックバッファ44の部分を拡大した図に示すように、本実施形態では、標準サイズの3倍のトランジスタサイズをもったクロックバッファ44を用いている。
【0100】
なお、本実施形態では、ゲートアレイ領域40内に敷き詰められたトランジスタを利用してクロックバッファ44を形成しているが、機能ブロックBL1−BL4の近傍の配線領域の一部に設けたトランジスタを利用してゲート領域を形成した場合でもよい。
【0101】
次に、本実施形態におけるレイアウト設計方法について、図14及び図15を参照しながら説明する。図14は、図13に示す半導体集積回路1におけるクロック配線を形成する手順を示すフローチャートである。図15は、図14に示すフローに沿った半導体集積回路の設計状態の変化を示す分解図である。
【0102】
本実施形態では、図15aに示すように、パッド上の一部にクロック発生源2を配置し、半導体集積回路1内に、未だレイアウトを実行していない機能ブロックBL1−BL4と、機能ブロック外の配線領域であるゲートアレイ領域40とを有するチップ(この例の場合、エンベデッド・セル・アレイ方式LSI)を例にとって説明する。
【0103】
まず、ステップST21で、図15bに示すように、未だレイアウトの終了していない4つの機能ブロックBL1−BL4において、クロックネットを形成するためのクロック木CT1−CT4をそれぞれ生成させ、クロックネット以外のネットと共にレイアウトを完成させる。その際、クロック木CT1−CT4を生成させるとき、そのクロック木の根にあたるクロックバッファを機能ブロックBL1−BL4内に配置することなく、ゲートアレイ領域40に配置する。
【0104】
次に、ステップST22で、図15cに示すように、各機能ブロックBL1−BL4を半導体集積回路1内に配置する。
【0105】
ここで、上記ステップST22を先に行った後に、ステップST21を行ってもよい。但し、その場合は、ステップST22では、未レイアウトの機能ブロックBL1−BL4を配置することになるので、これらの概略の位置を決定したに過ぎない。
【0106】
次に、ステップST23で、図15dに示すように、機能ブロックBL1−BL4の近傍にクロックバッファ44を配置する。このクロックバッファ44は、ステップST22で生成された各機能ブロックBL1−BL4内のクロック木CT1−CT4の根に相当する部位に配置されている。各クロックバッファ44のトランジスタサイズは、各クロック木CT1−CT4を生成するときに見積もった必要なドライブ能力に応じたサイズである。この例では、機能ブロック外の領域をゲートアレイ領域40で構成しているので、任意の位置にクロックバッファ44を配置することができる。
【0107】
最後に、ステップST24で、機能ブロック外のクロック木を生成し、ブロック外クロック配線41を形成する。この例のブロック外クロック配線41は、テーパーリング(段階的に、配線幅を変化させる)が行われた結果の状態を示している。テーパーリングは、エレクトロ・マイグレーションやクロック遅延時間値の最適化を行なう際に有効な手段である。また、ブロック外クロック配線41はクロック発生源2から各クロックバッファ44までのクロックスキューを最小化するように形成する。この時、チップ全体におけるクロックスキューを微調整するために、クロックバッファ44を構成するトランジスタのリサイジングを行なうこともある。その場合、上述したように、機能ブロックBL1−BL4の外側にクロックバッファ44を配置したので、クロックバッファ44を構成するトランジスタのリサイジングだけで、チップ全体のクロックスキューの微調整を実現できることは明白である。
【0108】
【発明の効果】
本発明によれば、機能ブロック内だけでなく、各機能ブロック間や、複数の半導体集積回路で構成されるシステムにおける各半導体集積回路間においても、各セルの動作の同期を確保することができる。
【0109】
あるいは、トップダウン的な設計により遅延時間の増大を回避しながら、各機能ブロック間における各セルの動作の同期の確保と、クロックネットの形成の容易化と、各配線間の干渉の回避の容易化とを図り、かつ工数の大幅な低減を図ることができる。
【図面の簡単な説明】
【図1】第1の実施形態に係る仮クロック設計の手順を説明する図である。
【図2】第1の実施形態に係るクロック設計の手順を説明する図である。
【図3】第2の実施形態に係るレイアウト設計手順を示すフロー図である。
【図4】第2の実施形態に係る半導体集積回路の構成を概略的に示すブロック図である。
【図5】第2の実施形態に係るレイアウト設計手順のうちクロック木の構造の決定とタッピングポイントの位置の決定とを終了した状態を示すブロック図である。
【図6】第2の実施形態に係るレイアウト設計手順のうちフリップフロップの配置と、その後のクロックバッファの配置とを終了した状態を示すブロック図である。
【図7】第2の実施形態に係るレイアウト設計手順のうち第2種論理セルの配置と、配線幅の変更とを終了した状態を示すブロック図である。
【図8】第2の実施形態に係るレイアウト設計を終了した状態を示すブロック図である。
【図9】第2の実施形態に係るレイアウト設計手順のうちクロック木の構造が2分木の場合と3分木の場合とのセル数の相違を説明するブロック図である。
【図10】第2の実施形態に係るレイアウト設計手順のうち機能ブロックとクロック木の大きさとの関係及びクロック木の大小の相違を説明するブロック図である。
【図11】第2の実施形態に係るレイアウト設計手順のうちクロックスキューを「0」又は正の値にするためのタッピングポイントの位置を説明するブロック図である。
【図12】第2の実施形態に係るレイアウト設計手順のうちクロックスキューを「0」又は正の値にするための配線幅の設定を説明するブロック図である。
【図13】第3の実施形態に係る半導体集積回路の全体構成を概略的に示すブロック図である。
【図14】第3の実施形態に係るレイアウト設計手順を示すフロー図である。
【図15】第3の実施形態に係るレイアウト設計手順中における半導体集積回路の仮想的構造の変化を示すブロック図である。
【図16】従来の半導体集積回路の概略的な構造とクロック木の生成方法とを説明するためのブロック図である。
【符号の説明】
1 半導体集積回路
2 クロック発生源
3 第1クロック入力部
4 第2クロック入力部
5 最終分岐点
11 パッド
20 フリップフロップ(第1種セル)
21 クロックバッファ(第1種セル)
22 第2種セル
23 タッピングポイント
40 ゲートアレイ領域
44 クロックバッファ(ブロック外遅延時間調整用セル)
BL 機能ブロック
CT クロック木
CN クロックネット[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a method for designing a layout of a semiconductor integrated circuit, and more particularly to a method for designing a layout of a clock wiring for transmitting a clock signal and a cell driven by the clock signal.
[0002]
[Prior art]
Conventionally, as a layout design method for a semiconductor integrated circuit (LSI), there are a gate array (or sea of gate) method, a standard cell method, and the like. In these systems, basic logic cells such as NAND and NOR and composite cells combining them are arranged on a semiconductor chip in an array, and an LSI is configured by wiring between terminals of these cells in accordance with a logic connection request. Is the method. These methods are advanced in design automation, and various systems have been developed.
[0003]
Furthermore, due to advances in LSI manufacturing technology, an embedded array cell type semiconductor integrated circuit in which a gate array type and a standard cell type are fused has been developed. In this method, a part or all of the circuits in a semiconductor integrated circuit are incorporated into a plurality of functional blocks, for example, a pre-designed macro block or a newly designed standard cell system block, and each functional block is incorporated. It is arranged on the semiconductor chip and the outside of each functional block is defined as a gate array region. Then, generation of circuits other than the circuits housed in the functional block and wiring outside the functional block are performed in the gate array region, and a semiconductor integrated circuit is to be built. Therefore, these systems have an advantage that a circuit can be arbitrarily generated in a region outside the functional block, so that the circuit can be added / modified relatively easily before the manufacturing wiring process.
[0004]
Incidentally, in recent years, semiconductor integrated circuits have been developed that are highly integrated so that the entire system necessary for performing a desired function can be mounted on one semiconductor chip. As the number of semiconductor integrated circuits increases, the number of man-hours for designing a semiconductor integrated circuit is increasing. The layout design of a semiconductor integrated circuit is no exception, and the man-hours and processing time are increasing exponentially, and enormous time and labor are consumed to lay out the entire semiconductor integrated circuit at once. Thus, as described above, a hierarchical design method is often used in which a semiconductor integrated circuit is divided into several functional blocks, each functional block is individually designed, and finally, the functional blocks are wired and assembled. .
[0005]
On the other hand, the frequency of the clock signal for driving each cell in the semiconductor integrated circuit synchronously has been increased. The operation speed of the semiconductor integrated circuit is restricted by a clock skew that is a phase difference between clock signals reaching each cell. Similarly, the operation speed of the entire system is restricted by the clock skew between the semiconductor integrated circuits. As the number of cells such as flip-flops driven by the clock signal increases due to the high integration of the semiconductor integrated circuit, the clock signal supplied to each functional block must be synchronized with each other. Wiring schemes for supplying to each cell are becoming increasingly important.
[0006]
Here, as a method for minimizing the clock skew described above, there is a method of generating a clock tree. As shown in FIG. 16, for each functional block, a wiring path from a clock signal input unit to a flip-flop group that must operate simultaneously is configured as a clock tree, and a clock signal corresponding to the root in the clock tree is defined. This is a method of suppressing a time difference (clock tree skew) until a signal arrives from a transmitting cell to each flip-flop within a certain size. Here, as shown in FIG. 16A, three functional blocks BL1, BL2, and BL3 are arranged in the semiconductor integrated
[0007]
As described above, Non-Patent
[0008]
By the way, since it is necessary to always guarantee zero skew when generating this clock tree, a clock tree having a long wiring length is generated unless wiring is performed well. That is, the delay time from the root of the clock tree to the leaves increases, resulting in a longer clock period and a slower operation circuit.
[0009]
Therefore, an efficient algorithm that has recently solved such a problem has been developed. For example, Non-Patent
[0010]
An example of the layout design procedure in the standard cell system (or gate array system) in which the above-described clock tree is used to partition the semiconductor integrated circuit into functional blocks is as follows.
[0011]
1. Basic logic cells are arranged in an array based on a circuit diagram representing a desired operation. At this time, the flip-flops are arranged so as to spread over the entire functional block.
[0012]
2. With respect to a net (clock net) of a wiring for transmitting a clock signal, the clock tree is determined from the flip-flop group in a bottom-up manner, and the clock buffer arrangement and the schematic wiring path of the clock tree are determined.
[0013]
3. A rough wiring route is determined for the remaining nets.
[0014]
4). For the clock net, detailed wiring is performed so as to achieve zero skew according to a schematic wiring route.
[0015]
5. For nets other than the clock net, detailed wiring is performed according to a schematic wiring path.
[0016]
On the other hand, as a method of generating a clock tree by a procedure different from the above-described procedure, for example, as disclosed in
[0017]
The above-described methods are often performed at the same time for the entire semiconductor chip or applied to each functional block.
[0018]
In addition, since semiconductor integrated circuits are often designed hierarchically, when applied to each functional block, it is important to synchronize clock signals between the functional blocks. As an example of a conventional layout method for synchronizing clock signals supplied to each functional block,
(A) The external clock wiring from the clock supply source to the functional block is not limited to the wiring channel outside each functional block, and the clock input unit (clock terminal) of each functional block from the clock supply source can be freely set. (B) A clock signal distribution unit is installed at the center of the semiconductor integrated circuit, and the clock supply source and the clock signal distribution unit are connected by a single clock wiring to distribute the clock. There is a method of laying out each clock wiring so as to have the same length between the block and the clock terminal of each functional block including the functional block. For example, the method disclosed in
[0019]
[Non-Patent Document 1]
Proc.IEEE International Conference on Computer Aided Design, 1991, pp.336-339
[Non-Patent Document 2]
Proc. IEEE International Conference on Computer Aided Design, 1993, pp.563-566
[Patent Document 1]
JP-A-6-282603 (abstract)
[Patent Document 2]
JP 5-198674 A (Abstract)
[0020]
[Problems to be solved by the invention]
However, in the methods of
[0021]
In the method of
[0022]
Further, as the methods of
[0023]
In the methods of
[0024]
Further, in the method of
[0025]
The purpose of the present invention, by taking means capable of adjusting in a readily predetermined range the delay time in the semiconductor integrated circuit, also in the overall system incorporating a large number of circuits, in smooth operation between the circuits The purpose is to design a layout of a semiconductor integrated circuit that can be synchronized.
[0028]
[Means for Solving the Problems]
Design method of a semiconductor integrated circuit of the present invention is to partition the semiconductor integrated circuit including a plurality of elements into a plurality of cells of at least one element, the plurality of cells of a plurality of the clock signals are supplied classified into a plurality of second type cells comprising a first type cell and said one cell other than the cell, and to partition the plurality of cells into a plurality of functional blocks, a method of designing the semiconductor integrated circuits And using the temporarily arranged functional blocks and the external wiring, the delay time outside the block from the first clock input unit to the second clock input unit of the functional block and the functional block. A final delay time is calculated for each first type cell as the sum of the intra-block delay time from the second clock input unit to each first type cell, and the final delay in each first type cell is calculated. A first step of clock skew fits limits, and is calculated by the circuit simulator on Symbol block out wiring paths as the final delay time for each of the one cell is within a predetermined range is the difference between, And a second step of generating a wiring pattern according to each wiring route calculated in the first step.
[0029]
By this method, the delay time in each first type cell in the semiconductor integrated circuit is adjusted to a certain width. Therefore, elements constituting each cell operate in synchronization with a common clock signal between the functional blocks in the semiconductor integrated circuit. In addition, elements constituting each cell can operate in synchronization with a common clock signal between the semiconductor integrated circuits in a system constituted by a plurality of semiconductor integrated circuits.
[0032]
In the first step, by distributing the final delay time of each cell to a plurality of values different from each other within the predetermined range, even if the circuit scale of the semiconductor integrated circuit increases and the clock frequency increases, the semiconductor integrated circuit It is possible to avoid a situation in which many cells actually operate simultaneously in the circuit. Accordingly, it is possible to prevent malfunction of the flip-flop or the like due to an instantaneous increase in current.
[0033]
In the first step, a clock tree structure configured so that wiring derived from the second clock input unit to the functional block is sequentially divided into a plurality of directions and finally reaches each of the first type cells. Generating a template to be represented, and arranging each of the first type cells in a functional block based on the clock tree structure, and further, in the empty area other than the area where the first type cell is arranged, A step of arranging cells, a step of calculating a rough wiring path between the cells according to a logical connection request, and a delay time in each of the first type cells on the clock tree from the second clock input unit. Each function block by adjusting to a desired value and generating a wiring pattern in the functional block according to the wiring path obtained in the above step. Formation of clock nets using a clock tree structure in Tsu the click can be easily performed. In addition, since the structure of the clock net is determined in advance, it is possible to easily avoid the optimization of the arrangement of the second type cells and the interference of the wiring between the clock net and the net other than the clock net. Accordingly, the number of man-hours for layout design is greatly reduced.
[0034]
Generating the template, calculating a number of branches of the clock tree, calculating a size of the clock tree, calculating a position of a tapping point on the clock tree, and the clock By arranging the delay time adjusting cell in the tree, an area for placing the second type cell in the functional block is secured at the stage of generating the template, and the delay time and clock skew are reduced. Since it is set to a state close to a desired value to some extent, the progress of the subsequent steps becomes smooth. Therefore, the efficiency of layout design is greatly improved.
[0035]
The steps of adjusting the final delay time of each cell include changing the output drive capability of the cell located at the intermediate node on the clock tree, changing the width of the wiring in the clock tree, and tapping on the clock tree. This can be done by changing at least one of the points.
[0036]
By further comprising a step of arranging an out-of-block delay time adjusting cell in front of the second clock input unit and outside the functional block, it is possible to block only by changing the size of the out-of-block delay time adjusting cell such as a clock buffer. The external delay time and clock skew are adjusted, and there is no need to redesign the layout in each functional block. Therefore, an increase in layout man-hours associated with resizing can be avoided.
[0048]
1a-1d are diagrams illustrating the concept of clock structure design. As shown in FIG. 1a, the interior of the semiconductor integrated
[0049]
Here, as shown in FIG. 1c, since the wiring configuring the out-of-block clock net CNout is a set of delay elements in which resistance and capacitance are electrically coupled, the first
[0050]
Next, details of the clock design method in the present embodiment will be described. First, as shown in FIG. 2a, an out-of-block clock net CNout is formed. At this time, each functional block BL1, BL2,... Is provisionally arranged in the semiconductor integrated
[0051]
Next, as shown in FIG. 2b, clock trees CT1, CT2,..., CTn, which are wiring paths for transmitting clock signals in the functional blocks BL1, BL2,. To do. This clock tree generation method will be described in the second embodiment. At this time, intra-block delay times T1in, T2in,..., Tnin in each functional block BL1, BL2,.
[0052]
Finally, as shown in FIG. 2c, the delay times T1 (= T1out + T1in) and T2 in the logic cells in each functional block in a state where the functional blocks BL1, BL2,..., BLn are incorporated in the semiconductor integrated
[0053]
When the delay times are grouped in this way, the delay times of the clock signals to the respective logic cells are the same in a certain functional block if they are grouped into several types in units of functional blocks BL1, BL2,. Will be designed as follows. However, the delay time may be grouped for each logic cell. That is, the delay time of the clock signal may be designed to be different for each logic cell group in a certain functional block.
[0054]
In the layout design method as in this embodiment, the wiring path outside the functional block, that is, the outside clock net is generated first, and then the delay time T1, T2 of the clock signal from each first
[0055]
As in the present embodiment, at the beginning of the structural design of the clock net, it is not always necessary to stop until the
[0056]
In this embodiment, the pseudo clock net is designed before starting the layout design of the actual clock net. However, the design of the real clock net is not necessarily performed without designing the pseudo clock net. You may start. However, at the design stage of the pseudo clock net, an appropriate arrangement location of each functional block BL1, BL2,..., BLn is roughly determined so that the delay times T1, T2,. By doing so, it is possible to avoid a situation in which later it becomes clear that the delay time and the clock skew cannot be adjusted to desired values at the original placement location, and the functional blocks have to be rearranged.
[0057]
Further, it is not always necessary to perform the grouping of the delay times as in the present embodiment, and the delay times of the logic cells may be the same, in other words, the clock skew may be “0”. However, by designing the delay time in the logic cell to be grouped into several different values at the design stage in this way, even when the scale of the semiconductor integrated circuit is increased and the clock frequency is increased. Therefore, it is possible to effectively prevent a malfunction due to a shortage of power caused by a large number of logic cells operating at a certain moment.
[0058]
Further, in this embodiment, the non-block clock net CNout is not designed using the clock tree, but the non-block clock net CNout may be designed using the clock tree.
[0059]
(Second Embodiment)
Next, a second embodiment will be described with reference to FIGS.
[0060]
FIG. 3 is a flowchart showing an overall procedure of the layout design method according to the second embodiment.
[0061]
FIG. 4 shows the configuration of the semiconductor integrated
[0062]
5 to 8 are diagrams showing changes in the structure in the case of performing placement and routing in the functional block BL1 shown in FIG. 4 according to the procedure shown in FIG.
[0063]
Hereinafter, only a schematic procedure will be described in accordance with the procedure shown in FIG. 3 with reference to FIGS.
[0064]
First, in step ST1, for example, as shown in FIG. 5a, a template representing the structure of the clock tree CT1 in the functional block BL1 in order to keep the delay of the clock tree (the arrival time from the root of the tree to each leaf) within the limit range. Is generated. In the present embodiment, a template of the clock tree CT1 is generated in order to determine the positions of the flip-flops and clock buffers, which are first-type cells arranged on the clock tree CT1, and the size of the clock tree CT1 itself. Here, what is important is not only the change in the transistor size of the clock buffer, but also the delay time from the root of the clock tree to the flip-flop located at the leaf (in this embodiment, the intra-block delay time Tin in accordance with the size of the clock tree). Can be changed). Using this property, the delay of the clock tree can be finely adjusted, and a free area can be secured as necessary. At that time, in step ST12, a delay time is calculated, and a template is generated based on the calculation result. For example, as shown in FIG. 5b, by shifting the
[0065]
Next, in step ST2, all the logic cells are arranged. At this time, first, as shown in FIGS. 6a and 6b, the flip-
[0066]
Next, schematic wiring is performed at step ST3. The structure of the clock tree has already been generated in step ST1, but the outline wiring path related to the clock tree is determined in detail, that is, specifically to which part in the semiconductor integrated circuit is to be routed, and the clock network is further determined. A schematic wiring path is also obtained for other nets (that is, a wiring path for transmitting a signal other than the clock signal). At this time, in consideration of the structure of the clock tree, the wiring congestion degree is minimized to determine a schematic wiring route that minimizes the area of the wiring region.
[0067]
Next, in step ST4, the clock skew value is adjusted in detail based on the arrangement positions of the flip-
[0068]
Finally, in step ST5, as shown in FIG. 8, detailed patterns of wiring of all nets are generated. Here, the following two methods (1) or (2)
(1) A method in which a dedicated wiring layer is wired to a clock net, and other nets are wired by using another wiring layer. (2) A method in which all nets are wired by using all wiring layers is selected. Can be selected.
[0069]
In the case of the above method (2), depending on the relationship between the clock net and a net other than the clock net, there may be a case where wiring different from the desired clock skew value occurs. Make changes.
[0070]
As described above, since the template is used to determine the clock tree structure, it is possible to determine the optimum arrangement of flip-flops and clock buffers, and to control the clock skew and clock tree delay flexibly and easily, and a semiconductor with a high clock frequency. Integrated circuit layout design is facilitated. In addition, since the clock tree structure is known in advance, the arrangement position of other logic cells can be optimized, and interference between the clock net and the general signal net can be avoided to easily reduce the degree of wiring congestion. it can.
[0071]
In this embodiment, a clock tree is generated by arranging buffers as clock buffers at the intermediate nodes of the clock tree. However, when the clock tree has an even number of stages from the root to the leaves, an inverter whose logic value is inverted. However, since the logical value of the input signal is maintained at the end, no problem occurs.
[0072]
Next, specific contents of steps ST1 to ST5 in the flowchart shown in FIG. 3 will be described.
[0073]
As shown in FIG. 3, step ST1 is roughly composed of four steps. First, in step ST6, the structure of the clock tree is determined. In this case, for example, there are a binary tree system shown in FIG. 9a and a triple tree system shown in FIG. 9b. In the case of the binary tree system shown in FIG. 9a, when the buffer insertion level of the clock tree is “3”, a maximum of eight flip-
[0074]
Note that the number of branch trees in one clock tree may be limited to a single tree, such as a binary tree or a triple tree, but several branch trees may be mixed in one clock tree.
[0075]
In this embodiment, as shown in FIG. 5a, a clock tree CT1 having a binary tree structure is generated.
[0076]
Next, in step ST7, the template size, that is, the size of the clock tree CT1 generated in the functional block BL1 is determined. FIG. 10a shows template regions Ret1, Ret2, and Ret3 in each of the functional blocks BL1, BL2, and BL3, and the template regions Ret1, Ret2, and Ret3 are clock trees CT1, CT2, and CT2 generated by the functional blocks BL1, BL2, and BL3, respectively. The size of CT3 is shown respectively. For example, FIG. 10b shows a shape when the template size is set small, and FIG. 10c shows a shape when the template size is set large. The shapes of both are similar geometrically, but the lengths of the wiring between clock buffers and between flip-flops and buffers are different. If the wiring length is different, the wiring delay time changes. The shorter the wiring length, the smaller the delay time in the wiring. That is, the total delay time (maximum delay time from the root clock buffer to the flip-flop) is smaller in the clock tree having the template size shown in FIG. 10b. However, if the clock tree size is made too small, flip-flops concentrate in a narrow area, increasing the occupied area of the wiring due to the congestion of the wiring, resulting in an increase in the final functional block area and an increase in the chip area. So be careful.
[0077]
In the present embodiment, as shown in FIGS. 5a and 5b, the clock tree is generated to the full size of the functional block BL1.
[0078]
Next, in step ST8, the
[0079]
At this time, the clock skew value is calculated using the calculation result of the delay time in step ST12. In the case of a binary tree, the clock skew value is the difference between the delay time generated on the left side of the tree and the delay time generated on the right side of the tree, and thus becomes the clock skew value set in the previous step ST8a. Thus, the position of the
[0080]
Even if the size of the clock tree and the position of the
[0081]
Through the above steps, the size of the template that matches the required clock skew value and the delay time value of the clock tree, the type of the
[0082]
FIG. 5b shows a state in which the position of the
[0083]
Next, in step ST2, a logic cell group in the circuit including the flip-flop and the clock buffer is arranged. At that time, first-type logic cells arranged in the clock tree are first arranged. That is, in step ST2a, as shown in FIG. 6a, the flip-
[0084]
Then, in step ST2c, the second type logic cell (remaining cell) 22 to which the clock signal is not directly input is arranged in a part other than the clock tree CT1 in the functional block BL1. FIG. 7a shows a state in which the second type logic cells are arranged. In this state, since the wiring width and the like are not yet determined, the wiring part is indicated by a broken line.
[0085]
At this time, since the flip-
[0086]
Next, in step ST3, the rough wiring paths of all nets are determined. Since the clock tree structure has already been determined, while maintaining the set clock skew and clock tree delay, it is possible to connect the nets other than the clock net. Can be determined.
[0087]
Since the rough wiring paths of all nets are determined by the above steps, in step ST4, the transistor size of the
[0088]
This step ST4 is executed in conjunction with the calculation of the delay time in step ST12.
[0089]
Here, the transistor size of the
[0090]
Next, all the nets are wired in step ST5. As described above, there are the above-described method (1) and method (2) as specific methods for executing step ST5.
[0091]
In method (1), in step ST10a, a clock net is mainly wired in one layer, and in step ST10b, a net other than the clock net is wired using a layer that is not mainly used in step ST10a. The reason why only the clock net is mainly wired in one layer in step ST10a is as follows. That is, in step ST4, the clock skew value is accurately calculated and the wiring width of the
[0092]
In method (2), after all nets are once wired in step ST11a, the wiring width is changed again in step ST11b according to the clock skew value obtained in step ST8a for only the clock net.
[0093]
As shown in FIG. 8, in this embodiment, the wiring width is determined in accordance with the structure of each clock net determined in step ST4. For example,
[0094]
This completes the layout.
[0095]
According to the present embodiment, since the template is used for determining the clock tree structure, the optimum arrangement of the flip-flop and the clock buffer is determined, and the delay time in each
[0096]
In the second embodiment, the non-block clock net may be designed using a clock tree, or each logic cell may be arranged in a semiconductor integrated circuit without being divided into functional blocks.
[0097]
(Third embodiment)
Next, a third embodiment will be described with reference to FIGS. FIG. 13 is a diagram showing a layout of the semiconductor integrated
[0098]
Here, in this embodiment, since the
[0099]
As shown in the enlarged view of the portion of the
[0100]
In the present embodiment, the
[0101]
Next, a layout design method according to this embodiment will be described with reference to FIGS. FIG. 14 is a flowchart showing a procedure for forming a clock wiring in the semiconductor integrated
[0102]
In the present embodiment, as shown in FIG. 15A, the
[0103]
First, in step ST21, as shown in FIG. 15B, the clock trees CT1-CT4 for forming the clock net are respectively generated in the four functional blocks BL1-BL4 that have not yet been laid out. Complete the layout with the net. At this time, when generating the clock trees CT1-CT4, the clock buffers corresponding to the roots of the clock trees are arranged in the
[0104]
Next, in step ST22, as shown in FIG. 15c, the functional blocks BL1-BL4 are arranged in the semiconductor integrated
[0105]
Here, step ST21 may be performed after step ST22 is performed first. However, in this case, in step ST22, the unlayed functional blocks BL1 to BL4 are arranged, so that only the approximate positions thereof are determined.
[0106]
Next, in step ST23, as shown in FIG. 15d, the
[0107]
Finally, in step ST24, a clock tree outside the functional block is generated, and the outside-
[0108]
【The invention's effect】
According to the present invention, synchronization of the operation of each cell can be ensured not only within a functional block but also between each functional block and between each semiconductor integrated circuit in a system constituted by a plurality of semiconductor integrated circuits. .
[0109]
Or, while avoiding an increase in delay time by a top-down design, ensuring the synchronization of the operation of each cell between each functional block, facilitating the formation of a clock net, and easily avoiding interference between wirings The number of man-hours can be greatly reduced.
[Brief description of the drawings]
FIG. 1 is a diagram for explaining a procedure of a temporary clock design according to a first embodiment.
FIG. 2 is a diagram for explaining a clock design procedure according to the first embodiment;
FIG. 3 is a flowchart showing a layout design procedure according to a second embodiment.
FIG. 4 is a block diagram schematically showing a configuration of a semiconductor integrated circuit according to a second embodiment.
FIG. 5 is a block diagram showing a state in which the determination of the clock tree structure and the determination of the position of the tapping point are completed in the layout design procedure according to the second embodiment.
FIG. 6 is a block diagram showing a state in which the arrangement of flip-flops and the subsequent arrangement of clock buffers are completed in the layout design procedure according to the second embodiment.
FIG. 7 is a block diagram showing a state in which the arrangement of the second type logic cells and the change of the wiring width are completed in the layout design procedure according to the second embodiment.
FIG. 8 is a block diagram illustrating a state in which layout design according to the second embodiment has been completed.
FIG. 9 is a block diagram illustrating a difference in the number of cells between a case where the clock tree structure is a binary tree and a case where the clock tree structure is a binary tree in the layout design procedure according to the second embodiment.
FIG. 10 is a block diagram for explaining a relationship between a functional block and a clock tree size and a difference in size of the clock tree in the layout design procedure according to the second embodiment.
FIG. 11 is a block diagram illustrating the position of a tapping point for setting a clock skew to “0” or a positive value in the layout design procedure according to the second embodiment.
FIG. 12 is a block diagram illustrating the setting of the wiring width for setting the clock skew to “0” or a positive value in the layout design procedure according to the second embodiment.
FIG. 13 is a block diagram schematically showing an overall configuration of a semiconductor integrated circuit according to a third embodiment.
FIG. 14 is a flowchart showing a layout design procedure according to the third embodiment.
FIG. 15 is a block diagram showing a change in the virtual structure of a semiconductor integrated circuit during a layout design procedure according to the third embodiment.
FIG. 16 is a block diagram for explaining a schematic structure of a conventional semiconductor integrated circuit and a clock tree generation method;
[Explanation of symbols]
DESCRIPTION OF
21 Clock buffer (
22
BL Function block CT Clock tree CN Clock net
Claims (6)
上記第1クロック入力部から上記各機能ブロックに設けられた第2クロック入力部までのブロック外遅延時間と各機能ブロック内における上記第2クロック入力部から上記各第1種セルまでのブロック内遅延時間との和である最終的遅延時間の上記各第1種セルにおける差であるクロックスキューが制限範囲に収まり、かつ上記各第1種セルについての上記最終的遅延時間が所定範囲に収まるように上記各機能ブロックの配置及び上記各機能ブロック外に設けられたブロック外配線の経路を決定する第1ステップと、
上記第1ステップで決定された各配線経路に従って配線パターンを生成する第2ステップとを備え、
上記第1ステップは、
上記各機能ブロック及びブロック外配線を仮配置するステップと、
仮配置された上記各機能ブロック及びブロック外配線の配置データに基づいて、上記ブロック外遅延時間を回路シミュレータを用いて算出するステップと、
上記機能ブロックごとに、上記第2クロック入力部から導出される配線を順次複数方向に分木させ最終的に個々の上記第1種セルに至るように構成されたクロック木の構造を表すテンプレートを生成するステップと、
上記テンプレートに基づいて、上記各第1種セルを上記機能ブロック内に配置した後、上記第1種セルが配置された領域以外の空き領域に上記第2種セルを配置するステップと、
上記第1種セルの配置データに基づいて、上記各機能ブロック内における上記ブロック内遅延時間を回路シミュレータを用いて算出するステップと、
上記各第1種セルごとに、上記ブロック外遅延時間と上記ブロック内遅延時間とを加算することにより上記最終的遅延時間をそれぞれ算出すると共に、上記最終的遅延時間に基づいて上記クロックスキューをそれぞれ算出するステップと、
上記クロックスキューが上記制限範囲に収まり、かつ上記最終的遅延時間が上記所定範囲に収まるように、上記各機能ブロックの配置及び上記ブロック外配線の経路の調整を行うことにより上記各機能ブロックの配置及び上記ブロック外配線の経路を決定するステップとを含むことを特徴とする半導体集積回路の設計方法。Is composed of a plurality of elements, a semiconductor integrated circuit having a first clock input a clock signal are entered from the outside, is divided into a plurality of cells of at least one element, the plurality of cells the clock signal supply A plurality of first type cells and a plurality of second type cells composed of cells other than the first type cells, and dividing the plurality of cells into a plurality of functional blocks, A method of designing,
Out-of-block delay time from the first clock input section to the second clock input section provided in each functional block and intra-block delay from the second clock input section to each first type cell in each functional block The clock skew, which is the difference between the first type cells in the final delay time, which is the sum of the time and the time, is within the limit range, and the final delay time for each first type cell is within the predetermined range. A first step of determining the layout of the functional blocks and the path of the external wiring provided outside the functional blocks;
A second step of generating a wiring pattern according to each wiring path determined in the first step,
The first step is
Temporarily placing each of the functional blocks and the wiring outside the block;
Based on the arrangement data of the temporary arranged each function block and the block outside wiring, and calculating using the circuit simulator on Kivu lock out delay,
For each of the functional blocks, a template representing a clock tree structure configured so that wiring derived from the second clock input unit is sequentially divided into a plurality of directions and finally reaches each of the first type cells. Generating step;
Based on the template, after placing each first type cell in the functional block, placing the second type cell in an empty area other than the area where the first type cell is arranged;
Based on the arrangement data of the first kind cell, and calculating using the circuit simulator on Kivu lock within the delay time in each functional block,
For each of the first type cells, the final delay time is calculated by adding the non-block delay time and the intra-block delay time, and the clock skew is calculated based on the final delay time. A calculating step;
Arrangement of the functional blocks is performed by adjusting the arrangement of the functional blocks and the path of the wiring outside the block so that the clock skew is within the limit range and the final delay time is within the predetermined range. And a step of determining a path of the out-of-block wiring .
上記第1ステップでは、各セルの最終的遅延時間を上記所定範囲内で互いに異なる複数の値に分布させることを特徴とする半導体集積回路の設計方法。The method of designing a semiconductor circuit according to claim 1,
In the first step, the final delay time of each cell is distributed to a plurality of values different from each other within the predetermined range.
上記第1ステップは、
論理接続要求に従って、上記各セル間の概略の配線経路を決定するステップと、
上記第2クロック入力部から上記テンプレートに基づいて配置された各第1種セルに至る遅延時間を最終的に所望の値に調整して、上記各セル間の配線経路を確定するステップと、
確定した配線経路に従って上記機能ブロック内の配線パターンを生成するステップとを含むことを特徴とする半導体集積回路の設計方法。The method for designing a semiconductor integrated circuit according to claim 1,
The first step,
Accordance logical connection request, determining a wiring path outline between the respective cells,
A step of finally adjusting a delay time from the second clock input unit to each first type cell arranged based on the template to a desired value to determine a wiring path between the cells ;
Method for designing a semiconductor integrated circuit, characterized in that according finalized wiring path and generating a wiring pattern of the functional block.
上記テンプレートを生成するステップは、
上記クロック木の分木数を算出するステップと、
上記クロック木の大きさを算出するステップと、
上記クロック木上のタッピングポイントの位置を算出するステップと、
上記クロック木に遅延時間調整用セルを配置するステップと
からなることを特徴とする半導体集積回路の設計方法。The method of designing a semiconductor integrated circuit according to claim 3,
The step of generating the template is as follows:
Calculating the number of branches of the clock tree;
Calculating the size of the clock tree;
Calculating a position of a tapping point on the clock tree;
A method for designing a semiconductor integrated circuit, comprising: arranging a delay time adjusting cell in the clock tree.
上記各セルの最終的な遅延時間を調整するステップは、クロック木上の中間節点に位置する遅延時間調整用セルの出力駆動能力の変更と、クロック木内の配線の幅の変更と、クロック木上のタッピングポイントの変更とのうち少なくともいずれか1つの変更により行うことを特徴とする半導体集積回路の設計方法。The method of designing a semiconductor integrated circuit according to claim 3,
The steps of adjusting the final delay time of each cell include changing the output drive capability of the delay time adjustment cell located at the intermediate node on the clock tree, changing the width of the wiring in the clock tree, A method for designing a semiconductor integrated circuit, which is performed by changing at least one of the tapping points.
上記第2クロック入力部の前段側かつ上記機能ブロックの外側にブロック外遅延時間調整用セルを配置するステップをさらに備えたことを特徴とする半導体集積回路の設計方法。The method for designing a semiconductor integrated circuit according to claim 1,
A method for designing a semiconductor integrated circuit, further comprising the step of disposing an out-of-block delay time adjusting cell before the second clock input unit and outside the functional block.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003013710A JP3913180B2 (en) | 1994-08-03 | 2003-01-22 | Semiconductor integrated circuit design method |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP6-182286 | 1994-08-03 | ||
JP18228694 | 1994-08-03 | ||
JP6-313398 | 1994-12-16 | ||
JP31339894 | 1994-12-16 | ||
JP2003013710A JP3913180B2 (en) | 1994-08-03 | 2003-01-22 | Semiconductor integrated circuit design method |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP7189276A Division JPH08221473A (en) | 1994-08-03 | 1995-07-25 | Semiconductor integrated circuit and its layout design method |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003112929A Division JP3877698B2 (en) | 1994-08-03 | 2003-04-17 | Semiconductor integrated circuit design method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003296387A JP2003296387A (en) | 2003-10-17 |
JP3913180B2 true JP3913180B2 (en) | 2007-05-09 |
Family
ID=29407401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003013710A Expired - Fee Related JP3913180B2 (en) | 1994-08-03 | 2003-01-22 | Semiconductor integrated circuit design method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3913180B2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150102086A (en) * | 2012-12-26 | 2015-09-04 | 시놉시스, 인크. | Automatic clock tree routing rule generation |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5077010B2 (en) * | 2008-03-26 | 2012-11-21 | 富士通株式会社 | System LSI power estimation method and designed block power library generation method used therefor. |
JP4918934B2 (en) * | 2009-08-21 | 2012-04-18 | 日本電気株式会社 | Semiconductor integrated circuit delay analysis apparatus, delay analysis method, and program thereof |
CN103259526B (en) * | 2013-06-03 | 2016-09-07 | 龙芯中科技术有限公司 | The construction method of clock network and device |
-
2003
- 2003-01-22 JP JP2003013710A patent/JP3913180B2/en not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150102086A (en) * | 2012-12-26 | 2015-09-04 | 시놉시스, 인크. | Automatic clock tree routing rule generation |
KR102103617B1 (en) * | 2012-12-26 | 2020-04-22 | 시놉시스, 인크. | Automatic clock tree routing rule generation |
Also Published As
Publication number | Publication date |
---|---|
JP2003296387A (en) | 2003-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5774371A (en) | Semiconductor integrated circuit and layout designing method for the same | |
US6601227B1 (en) | Method for making large-scale ASIC using pre-engineered long distance routing structure | |
US8966425B1 (en) | Clock tree generation and routing | |
JP3891599B2 (en) | Device for automatic insertion of standard cells into an integrated circuit layout. | |
US6442745B1 (en) | Method and apparatus for layout-constrained global routing | |
CN101587508B (en) | Method, system and computer program product for determining routing of data paths in interconnect circuitry | |
US6662349B2 (en) | Method of repeater insertion for hierarchical integrated circuit design | |
JP2540762B2 (en) | Clock signal supply method | |
TW201921602A (en) | Integrated circuit design and/or fabrication | |
KR20020037715A (en) | Concurrent logical and physical construction of voltage islands for mixed supply voltage designs | |
JP2001505716A (en) | Net routing method for electronic devices | |
US6480996B1 (en) | System and method for transposing wires in a circuit design | |
JPH10335472A (en) | Method and device for designing layout | |
TWI222580B (en) | System and method for H-tree signal layout | |
US5849610A (en) | Method for constructing a planar equal path length clock tree | |
US6958545B2 (en) | Method for reducing wiring congestion in a VLSI chip design | |
CN106096070A (en) | Make spend filling and refill operation to realize IC design | |
CN115659901B (en) | Distance wiring optimization method and device for chip physical design | |
JP3913180B2 (en) | Semiconductor integrated circuit design method | |
JP3877698B2 (en) | Semiconductor integrated circuit design method | |
US6944842B1 (en) | Method for making large-scale ASIC using pre-engineered long distance routing structure | |
JP2002318827A (en) | Integrated circuit manufacturing system | |
JPH08221473A (en) | Semiconductor integrated circuit and its layout design method | |
JPH0830655A (en) | Method for designing layout of synchronizing circuit of semiconductor device | |
Marek-Sadowska | Automated Routing for VLSI: Kuh's Group Contributions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060705 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060718 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060915 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061017 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061215 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070116 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070130 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100209 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110209 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120209 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |