JP3913180B2 - Semiconductor integrated circuit design method - Google Patents

Semiconductor integrated circuit design method Download PDF

Info

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
Application number
JP2003013710A
Other languages
Japanese (ja)
Other versions
JP2003296387A (en
Inventor
善之 川上
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2003013710A priority Critical patent/JP3913180B2/en
Publication of JP2003296387A publication Critical patent/JP2003296387A/en
Application granted granted Critical
Publication of JP3913180B2 publication Critical patent/JP3913180B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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 circuit 1 surrounded by the pad 11, and in each functional block BL1, BL2, and BL3, Clock trees CT1, CT2 and CT3 are formed which indicate wiring structures (clock nets) for transmitting clock signals. FIG. 16b is an enlarged view of a part of the clock tree CT1 configured in the functional block BL1. A flip-flop 20 is disposed at a portion corresponding to the leaf of the clock tree CT1, and a clock buffer 21 is disposed (inserted) at a portion corresponding to an intermediate node between the tapping points 23 of the clock tree CT1. The clock buffers and clock buffers and flip-flops are connected by wiring. In the clock tree generated in this way, suppressing the clock skew increases the operation speed of all the circuits, so it is an important issue to bring the clock skew closer to “0”.
[0007]
As described above, Non-Patent Document 1 is a known example of a method for accurately setting the clock skew to “0” when generating a clock tree. When constructing a clock tree, this method is called zero skew merge so as to form a binary tree in a bottom-up order from the flip-flop. The tree is always skew = 0 (this state is called zero skew). ). Here, the above-described tapping point 23 is an important concept when creating one tree from two trees so as to achieve this zero skew (see FIG. 16). This is a point indicating which position is the root point (to which the clock buffer is connected) when merging two trees. If the delays from the tapping point 23 to the flip-flops 20 in the leaves of each tree are set to be equal, a zero skew clock tree can be realized. In the above-described known example, a method is described in which after flip-flops and buffers are once arranged, wiring is performed in a bottom-up manner so as to form a binary clock tree while always guaranteeing zero skew.
[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 Document 2 is an example. This is an algorithm for minimizing the estimation function of the delay time of the clock signal as an objective function, and is a technique for simultaneously optimizing the wiring width.
[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 Patent Document 1, there is a method of generating a clock tree in a top-down manner while hierarchically dividing blocks. This method is the same as the procedure 1. And 2. In this method, the clock buffer is inserted, the basic logic cells are arranged, and the clock tree structure is generated at a time while performing hierarchical region division in a top-down manner. According to this method, there is an advantage that the arrangement of basic logic cells other than the flip-flop can be optimized while being aware of the clock tree structure.
[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 Patent Document 2 is an example.
[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 Non-Patent Documents 1 and 2, since the clock tree is generated after the basic logic cell including the flip-flop and the clock buffer is first arranged, the clock tree can be configured to have zero skew. There has been a problem that it is difficult to minimize the delay time of the clock tree and to keep the required delay time value. For this reason, there is a possibility that operation synchronization between functional blocks may not be obtained in a semiconductor integrated circuit, or when a system composed of a plurality of semiconductor integrated circuits is configured, operation synchronization between semiconductor integrated circuits is performed. There was a fear that it could not be obtained.
[0021]
In the method of Patent Document 1, since the flip-flop group is distributed hierarchically, it is difficult to minimize the delay time of the clock tree and adjust to the required delay time value. For this reason, as in Non-Patent Documents 1 and 2, there is a possibility that operation synchronization between the semiconductor integrated circuits cannot be obtained.
[0022]
Further, as the methods of Non-Patent Documents 1 and 2 and Patent Document 1 aim, when the clock skew actually becomes “0”, a large number of flip-flops are operated at the same time. Current (increase in peak current) flows. Therefore, depending on the power supply state, the flip-flop may not operate. That is, if the number of logic cells such as flip-flops incorporated in the semiconductor integrated circuit is not so large even if the clock skew for each logic cell is designed to be “0” as in the prior art, In this case, since the operation time is gradually shifted due to variations in the process, there is little possibility of malfunction due to the operation of many logic cells at one time. However, when the scale of the semiconductor integrated circuit or the entire system is increased as in recent years and the clock frequency is increased, the probability that the number of logic cells that are actually simultaneously operated increases. Therefore, there is a possibility of causing the above-described problems due to instantaneous generation of excessive current.
[0023]
In the methods of Non-Patent Documents 1, 2, and 3, the normal clock net is often wired at the same time as other nets for cells to which no clock signal is supplied (the same wiring layer can be used), which is large and complicated. In the case of a simple clock tree, there is a problem that a wiring with an unnecessarily long wiring length is likely to occur due to the occurrence of a detour in the wiring path of the clock net due to the relationship between the wiring paths with other nets.
[0024]
Further, in the method of Patent Document 2, when a clock tree is generated by arranging a functional block on a semiconductor chip and clock wiring is performed, the wiring must be equal in length from the clock supply source to the clock terminal of each functional block. It is necessary to use a dedicated clock wiring in order to avoid the failure of other nets in order to keep the restriction. For example, in the case of a semiconductor chip having three wiring layers, the first and second layer wirings are used for general signal lines and power supply wirings, and the third layer wiring is used for clock wirings. In this case, since the general signal line cannot be formed in the third layer wiring, the chip area becomes larger than the case where the third layer wiring is also used as the general signal line. On the other hand, in a semiconductor integrated circuit having two wiring layers, if clock nets and nets other than clock nets are mixed, it is difficult to accurately adjust clock skew. This is due to the following reason. In other words, since clock nets and nets other than clock nets are mixed in the same wiring layer, in order to avoid interference between clock nets and nets other than clock nets, clock input from the clock source to each functional block In many cases, it is difficult to make the wiring length to the terminal the same. Therefore, once the functional blocks are arranged and the clock nets are wired, the transistor size of the clock buffer may need to be changed in order to finally adjust the skew. In that case, if the transistor size of the clock buffer in the functional block is changed, it is necessary to redesign the layout in the functional block. However, this greatly increases the number of layout steps, and the significance of using such a method is diminished.
[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 circuit 1 is partitioned into a plurality of functional blocks BL1, BL2,..., BLn, and the arrangement of the functional blocks BL1, BL2,. Then, a clock signal input from the clock generation source 2 through the first clock input unit 3 into the semiconductor integrated circuit 1 is transmitted to the second clock input unit 4 of each functional block BL1, BL2,. The out-of-block wiring path CNout (out-of-block clock net) can also be determined temporarily. However, the frame in which the inside of the semiconductor integrated circuit 1 shown in FIG. 1a is represented by blanks indicates the functional blocks BL1, BL2, and BLn shown in FIG. 1b. As shown in FIG. 1b, each functional block BL1, BL2,..., BLn in the semiconductor integrated circuit 1 is in a state where a large number of logic cells are accommodated.
[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 clock input unit 3 to each functional block BL1. ,..., BLn−1, BLn out-of-block delay times T1out,..., Tn−1out, Tnout are temporarily determined (however, the wire diameter is set to a constant value). Each of the functional blocks BL1,..., BLn-1, BLn can be regarded as a buffer having delay times T1in,. Accordingly, the delay times T1, T2,..., Tn-1, Tn of the clock signals from the first clock input unit 3 to the respective logic cells of the functional blocks BL1, BL2,. be able to. At this stage, it is estimated whether or not the delay times T1, T2,..., Tn−1, Tn in each functional block fall within a predetermined range. At the same time, an idea is made as to whether the clock skew is within the limit range. Note that the clock skew being “0” means that T1 = T2 =... = Tn−1 = Tn. Then, if it is expected that the delay times T1, T2,..., Tn-1, Tn in each logic cell are all within a predetermined range, the arrangement of the functional blocks at the predetermined positions and the clock nets in the functional blocks Enter the design. On the other hand, at this stage, when there is no prospect of keeping the delay times T1, T2,..., Tn-1, Tn in the respective functional blocks within a predetermined time, the function blocks BL1, BL2,. The delay times T1, T2,..., Tn−1, Tn in each logic cell are estimated again by changing the arrangement, etc., and temporary arrangement is performed until the delay time is within a predetermined range and the clock skew is within the limit range. . When this temporary arrangement is finished, as shown in FIG. 1d, the delay time is calculated in detail using a circuit simulator (for example, SPICE) for the clock net at the stage where the temporary arrangement is finished.
[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 circuit 1, and up to the final branch point up to each functional block BL1, BL2,. The part is determined, and the part from the final branch point 5 to each functional block BL1, BL2,. That is, there is left a room for slightly shifting the positions of the functional blocks BL1, BL2,. Then, out-block delay times T1out, T2out,..., Tnout of the clock signal from the first clock input unit 3 to the second clock input unit 4 of each functional block BL1, BL2,.
[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 circuit 1. (= T2out + T2in),..., Tn (= Tnout + Tnin) are calculated. At this time, the delay time T1, T2,..., Tn in each logic cell is controlled to be grouped into several different values within a certain range, and the wiring width of each clock net is changed. Alternatively, a clock buffer is arranged as necessary. In this case, the clock skew is not “0” and is grouped into several different values, but is set within a limited range that does not cause a synchronization failure of each logic cell.
[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 clock input unit 3 to each logic cell is generated. ,..., Tn are generated so as to make the predetermined range, so that the delay time T1, T2,..., Tn of the clock signal to each logic cell can be adjusted to a desired value. Therefore, between the functional blocks, each logic cell operates in synchronization with a common clock signal. Further, even when a large system is constituted by several semiconductor integrated circuits, operations between the semiconductor integrated circuits can be accurately synchronized.
[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 final branch point 5 reaching the functional blocks BL1, BL2,..., BLn in the non-block clock net CNout. You may decide to each 2nd clock input part 4 of each functional block. However, as in this embodiment, at the beginning of the structural design of the clock net, the portion up to the final branch point 5 of the out-of-block clock net is first determined, and the delay time is adjusted in the step of performing the final wiring, etc. Therefore, by finely adjusting the position of the functional block, the delay time can be adjusted finely and accurately, and the adjustable width can be expanded.
[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 circuit 1 according to the present embodiment. Three functional blocks BL1, BL2, and BL3 are arranged in a region surrounded by the pads 11 in the semiconductor integrated circuit 1 to supply a clock signal. A clock net CNout that transmits a clock signal supplied to each functional block BL1, BL2, BL3 from a clock generation source (not shown), and a clock to each basic logic cell in each functional block BL1, BL2, BL3. Clock trees CT1, CT2, and CT3 representing wiring paths for transmitting signals are generated.
[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 tapping point 23 from the equidistant position of each logic cell, the delay time in each logic cell can be made different from each other, and the clock skew value can be adjusted.
[0065]
Next, in step ST2, all the logic cells are arranged. At this time, first, as shown in FIGS. 6a and 6b, the flip-flop 20 and the clock buffer 21, which are first-type logic cells, are first arranged on the clock tree CT1. Thereafter, as shown in FIG. 7a, the remaining second type logic cells 22 are arranged.
[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-flop 20 and the clock buffer 21. At that time, fine adjustment is performed by changing the transistor size of the clock buffer 21, changing the wiring width in the paths 30, 31, and 32 as shown in FIG. 7B, changing the tapping point, and the like. In step ST4, the delay of the clock tree is not adjusted. This is because it is impossible to change (adjust) a large delay at this stage. Instead of changing the transistor size of the clock buffer, a method of selecting a different clock buffer may be used.
[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-flops 20 can be arranged as shown in the upper diagram of FIG. Need to be inserted. Here, the buffer insertion level is the number of buffer stages required for tracing from the clock buffer 21 serving as a base for supplying a clock signal to each flip-flop 20. If the buffer insertion level is “3” and the clock tree is a ternary tree, up to nine flip-flops 20 can be arranged as shown in FIG. 9b, and four clock buffers 21 need to be inserted. . Therefore, as the number of branch trees increases, the number of buffer insertions decreases and the maximum number of flip-flops increases, but the wiring between the buffers and between the flip-flops and the buffers increases, so it is not always advantageous for the final chip area. Absent.
[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 tapping point 23 is determined in order to adjust the magnitude of the clock skew. FIG. 11A shows a case where the tapping points 23 are set so that the clock trees are balanced, and the clock skew is “0”. On the other hand, FIG. 11b shows the tapping point 23 shifted slightly to the left in the figure to form an unbalanced shape as a clock tree. In this case, since the wiring lengths between the clock buffers 21 and between the clock buffers and the flip-flops are different, the clock skew is larger than “0”. In order to realize this, step ST8 is composed of two sub-steps ST8a and ST8b as shown in the flowchart of FIG. That is, after setting a clock skew value within a preset maximum allowable skew value in step ST8a, a tapping position that matches the set clock skew value is determined in step ST8b.
[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 tapping point 23 is determined. This can be calculated in the same way for a tri-tree or more.
[0080]
Even if the size of the clock tree and the position of the tapping point 23 are determined by the above steps, the type of the clock buffer 21 inserted into the clock tree is not determined, so the delay time of the clock tree is not uniquely determined. In order to determine this, in step ST9, the type of the clock buffer 21 to be inserted is selected. In general, the clock buffer 21 operates fast when it has a large driving capability, and operates slowly when it is small. The type of each clock buffer 21 is selected based on the delay time calculation result obtained in step ST12 so that the delay time value requested in advance is obtained. Here, there may be a case where the combination of clock buffers does not match the required delay value of the clock tree regardless of the combination of clock buffers. In this case, the process returns to step ST7 and the type of the clock buffer 21 is fixed. Then, the size of the template is determined again.
[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 clock buffer 21 inserted therein, and the position of the tapping point 23 are determined.
[0082]
FIG. 5b shows a state in which the position of the tapping point 23 of each part of the clock tree CT1 is determined in the functional block BL1.
[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-flop 20 is arranged in the clock tree CT1 in the functional block BL1, while in step ST22b, the clock buffer 21 is arranged in the clock tree CT1 as shown in FIG. 6b. To do. However, the arrangement order of the flip-flop 20 and the clock buffer 21 may be either.
[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-flop 20 and the clock buffer 21 are already arranged, the second-type logic cell 22 can be arranged in consideration of the structure of the clock tree CT1, that is, the clock net in the block. Therefore, it is possible to optimize the placement while evaluating the minimization of the virtual wiring length, the reduction in the degree of wiring congestion, and the like. However, the arrangement may not be good only with this step. In that case, the process returns to step ST2a or step ST2b, and the arrangement of the flip-flop 20 or the clock buffer 21 is improved in the state where the second type logic cell 22 is arranged, and then the second step ST2c again. The rearrangement of the seed logic cell 22 can be performed. At that time, until the placement state is optimized, for example, until the virtual wiring length is minimized or the wiring congestion is minimized, the entanglement between the conventional clock net and other nets is reduced, and as a result In addition, it is possible to generate a wiring pattern with less congestion.
[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 clock buffer 21 is changed, the wiring width is changed, and the tapping point 23 is used in order to accurately realize a desired clock skew value. Make changes. Since the delay time in the wiring is obtained from the capacitance and resistance of the wiring, the size of the clock skew can be adjusted by the wiring width, and the change in the wiring width can also be used as one means for adjusting the clock skew value. . For example, FIG. 12a shows a wiring state when the wirings having the same tapping point 23 and the same width are used. In this case, the clock skew value is clearly “0”. On the other hand, FIG. 12b shows a wiring state in the case of using wirings having two different widths although the tapping points 23 are balanced. In this case, since the resistance value decreases as the wiring width increases, the delay time in the path using thick wiring decreases. In a thick wiring, the capacitance increases conversely, but the ratio is lower than the resistance value. Therefore, the clock skew value is not “0” in the wiring state shown in FIG.
[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 clock buffer 21 is changed in sub-step ST4a of step ST4, the wiring width is changed in sub-step ST4b, and the position of the tapping point 23 is changed in sub-step ST4c. The position of the tapping point 23 is difficult to change drastically because the arrangement of each cell has already been completed. Therefore, when the delay time is largely adjusted, the transistor size of the clock buffer 21 is changed. The fine adjustment of the delay time is performed by changing the wiring width and changing the tapping position. By using these steps ST4a-4c, it is possible to accurately adjust the clock skew value. In FIG. 7 b, the path 30 has a minimum line width, the path 31 is slightly thicker, and the path 32 has a wiring width wider than the path 31.
[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 tapping point 23 and the paths 30, 31, and 32 is changed to configure the clock net, but the clock net is the same as the net other than the clock net. This is because if handled, it may be difficult to perform actual wiring as described above.
[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, paths 30, 31, and 32 shown in FIG. 7b correspond to the wirings 33, 34, and 35 shown in FIG. 8, respectively.
[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 type 1 logic cell arranged in the clock skew and the clock tree is adjusted. Can be performed flexibly and easily, and layout design of a semiconductor LSI chip having a high clock frequency is facilitated. Further, since the clock tree structure is known in advance, it is possible to facilitate the optimization of the arrangement position of other logic cells and the reduction of the degree of wiring congestion between the clock net and the general signal net.
[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 circuit 1 according to the third embodiment. As shown in FIG. 13, in the semiconductor integrated circuit 1, four functional blocks BL1-BL4 are arranged, and a region other than the region where the functional blocks BL1-BL4 are arranged is a gate array in which transistors are laid. Region 40 is formed. In order to generate a clock signal, a clock generation source 2 is provided on a part of the pad. The clock signal passes through the non-block clock wiring 41 and is supplied to each functional block BL1 to BL4 via each clock terminal 43. A clock buffer 44 is disposed between the out-of-block clock wiring 41 and each functional block BL1-BL4. The buffer 44 appears when the clock tree for configuring the out-of-block clock wiring 41 is formed, or is one that becomes the root of the clock trees CT1-CT4 in the functional blocks BL1-BL4. . When generating the out-of-block clock wiring 41, in order to synchronize the clock signals normally supplied to the functional blocks BL1 to BL4, the length from the clock source 2 to each clock buffer 44 is made as long as possible. Wiring is performed.
[0098]
Here, in this embodiment, since the clock buffer 44 is disposed outside the functional blocks BL1-BL4, the transistor size of the clock buffer 44 is changed (resizing) independently of the functional blocks BL1-BL4. Is possible. When the base clock buffer is arranged in the function blocks BL1 to BL4, the delay time is changed when the buffer size of the clock buffer, that is, the transistor size is changed after the layout of the function blocks BL1 to BL4 is finished due to some problem. In order to control the desired value, it is necessary to lay out the functional blocks BL1 to BL4 again, which increases the number of man-hours for layout. On the other hand, by arranging the clock buffer 44 outside the functional blocks BL1 to BL4 in this way, it is possible to adjust the delay time and clock skew of the clock chip of the entire chip in detail without executing the functional block relayout. Therefore, an increase in layout man-hours can be effectively prevented.
[0099]
As shown in the enlarged view of the portion of the clock buffer 44 in FIG. 13, in this embodiment, the clock buffer 44 having a transistor size three times the standard size is used.
[0100]
In the present embodiment, the clock buffer 44 is formed by using transistors laid out in the gate array region 40. However, a transistor provided in a part of the wiring region in the vicinity of the functional blocks BL1-BL4 is used. Thus, the gate region may be formed.
[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 circuit 1 shown in FIG. FIG. 15 is an exploded view showing a change in the design state of the semiconductor integrated circuit along the flow shown in FIG.
[0102]
In the present embodiment, as shown in FIG. 15A, the clock generation source 2 is arranged on a part of the pad, and the functional blocks BL1 to BL4 that have not yet been laid out in the semiconductor integrated circuit 1 and the outside of the functional blocks A chip having a gate array region 40 as a wiring region (in this case, an embedded cell array type LSI) will be described as an example.
[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 gate array region 40 without being arranged in the functional blocks BL1-BL4.
[0104]
Next, in step ST22, as shown in FIG. 15c, the functional blocks BL1-BL4 are arranged in the semiconductor integrated circuit 1.
[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 clock buffer 44 is arranged in the vicinity of the functional blocks BL1-BL4. The clock buffer 44 is arranged at a portion corresponding to the root of the clock tree CT1-CT4 in each functional block BL1-BL4 generated in step ST22. The transistor size of each clock buffer 44 is a size according to the required drive capability estimated when generating each clock tree CT1-CT4. In this example, since the area outside the functional block is constituted by the gate array area 40, the clock buffer 44 can be arranged at an arbitrary position.
[0107]
Finally, in step ST24, a clock tree outside the functional block is generated, and the outside-block clock wiring 41 is formed. The non-block clock wiring 41 in this example shows a state resulting from tapering (in which the wiring width is changed in stages). Tapering is an effective means for optimizing electromigration and clock delay time values. The non-block clock wiring 41 is formed so as to minimize the clock skew from the clock generation source 2 to each clock buffer 44. At this time, resizing of the transistors constituting the clock buffer 44 may be performed in order to finely adjust the clock skew in the entire chip. In that case, as described above, since the clock buffer 44 is arranged outside the functional blocks BL1 to BL4, it is obvious that the clock skew of the entire chip can be finely adjusted only by resizing the transistors constituting the clock buffer 44. It is.
[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 SYMBOLS 1 Semiconductor integrated circuit 2 Clock generation source 3 1st clock input part 4 2nd clock input part 5 Final branch point 11 Pad 20 Flip-flop (1st kind cell)
21 Clock buffer (type 1 cell)
22 Second type cell 23 Tapping point 40 Gate array region 44 Clock buffer (cell for adjusting delay time outside block)
BL Function block CT Clock tree CN Clock net

Claims (6)

複数の素子で構成され、外部からクロック信号が入力される第1クロック入力部を有する半導体集積回路を、少なくとも1つの素子からなる複数のセルに区画し、上記複数のセルを上記クロック信号が供給される複数の第1種セルと該第1種セル以外のセルからなる複数の第2種セルとに分類し、かつ上記複数のセルを複数の機能ブロックに区画して、上記半導体集積回路を設計する方法であって、
上記第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記載の半導体回路の設計方法において、
上記第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記載の半導体集積回路の設計方法において、
上記第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.
請求項3記載の半導体集積回路の設計方法において、
上記テンプレートを生成するステップは、
上記クロック木の分木数を算出するステップと、
上記クロック木の大きさを算出するステップと、
上記クロック木上のタッピングポイントの位置を算出するステップと、
上記クロック木に遅延時間調整用セルを配置するステップと
からなることを特徴とする半導体集積回路の設計方法。
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.
請求項3記載の半導体集積回路の設計方法において、
上記各セルの最終的な遅延時間を調整するステップは、クロック木上の中間節点に位置する遅延時間調整用セルの出力駆動能力の変更と、クロック木内の配線の幅の変更と、クロック木上のタッピングポイントの変更とのうち少なくともいずれか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.
請求項1記載の半導体集積回路の設計方法において、
上記第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.
JP2003013710A 1994-08-03 2003-01-22 Semiconductor integrated circuit design method Expired - Fee Related JP3913180B2 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (2)

* Cited by examiner, † Cited by third party
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