(57)【要約】【課題】  トランジスタ特性のばらつき等のばらつきの影響を受けにくく、クロックスキューを低減できる半導体集積回路設計方法を提供する。【解決手段】  セル配置情報に基づき、同一クロックネットに接続される複数のフリップフロップを、クロックスキューが所定閾値以下に収束することが推定できる回路規模、形状の第１のグループに分割し、グループ毎にＦＦを駆動するグループ化バッファを追加して第１のクロックツリーを生成し、グループ化バッファとハードマクロの前段に遅延素子を挿入し、第１のグループ間等の信号の接続を調べ、信号接続の度合いが大きい順に第１のグループ、または第１のグループとハードマクロとを組み合わせて第２のグループとし、第２のグループにクロックを供給しているセルを駆動する中継バッファを前段に追加して、クロックネットのクロックソースと第１のグループの遅延素子との間に第２のクロックツリーを生成するようにした。【選択図】  図１
2006107206.tif 000002
【特許請求の範囲】
【請求項１】
クロックスキューの閾値を設定する工程と、
入力される配置情報に基づき、クロックスキューが、前記設定した閾値以下に収束することが推定される回路規模及び形状となるよう、同一のクロックネットに接続されている複数のフリップフロップを複数の第１のグループに分割し、該第１のグループ毎に、前記グループ化したフリップフロップの前段にグループ化バッファを追加する第１のグループ化工程と、
前記グループ化バッファとフリップフロップとの間にクロックツリーを生成する第１のクロックツリー生成工程と、
前記グループ化バッファの前段に遅延素子を挿入する遅延素子挿入工程と、
前記第１のグループ間のクロックを除く信号の接続を調べる工程と、
前記信号の接続を調べる工程により得られた信号の接続情報に基づき、前記信号の接続の度合いが大きい順に複数の前記第１のグループをまとめる組み合わせを決定し、これらの組み合わせにより得られるグループを次の階層における第２のグループとし、該第２のグループにクロックを供給しているセルを駆動する中継バッファを前段に追加し、該追加した中継バッファに対して、前記第２のグループ化とその前段へ中継バッファを追加する処理とを繰り返し行うことにより、前記クロックネットのクロックソースと前記第１のグループの遅延素子との間にクロックツリーを生成する第２のクロックツリー生成工程と、を備えることを特徴とする半導体集積回路設計方法。
【請求項２】
前記第２のクロックツリー生成工程は、
前記第１のグループ間のクロックを除く信号の接続情報に基づき、前記信号の接続の度合いに応じた前記階層的グループ化により追加する中継バッファの段数を設定する、信号接続を考慮する階層数設定工程を備え、
前記信号の接続の度合いに応じて前記階層数設定工程により設定した段数の中継バッファを追加し、
最下層のグループに追加された前記中継バッファの配置情報に基づいて、前記クロックネットのクロックソースと前記最下層のグループに追加された中継バッファ間のクロックスキューが最小となるように、前記第２のクロックツリーを生成することを特徴とする請求項１記載の半導体集積回路設計方法。
【請求項３】
前記第２のクロックツリーを生成する工程の、前記第１のグループ間のクロックを除く信号の接続情報に基づき、前記信号の接続の度合いに応じた前記階層的グループ化において、
該グループ化の対象を１つ上の階層において隣接するグループに限定したことを特徴とする請求項２記載の半導体集積回路設計方法。
【請求項４】
前記第１のグループ間のクロックを除く信号のタイミング余裕度を調べる工程を備え、
該タイミング余裕度を調べる工程により得られるタイミング余裕度の情報に基づき、前記タイミング余裕度が小さい順に、複数の前記第１のグループをまとめる組み合わせを決定し、これらの組み合わせにより得られるグループを次の階層における第２のグループとすることを特徴とする請求項１記載の半導体集積回路設計方法。
【請求項５】
前記第１のグループ化工程において、フリップフロップ間のクロックを除く信号の接続とタイミング余裕度を調べ、該信号の接続情報とタイミング余裕度の情報に基づき、信号接続の多いフリップフロップ、及びタイミング余裕度の小さいフリップフロップが同一のグループとなるように、第１のグループを決定することを特徴とする請求項１記載の半導体集積回路設計方法。
【請求項６】
前記グループ化バッファとフリップフロップとの間に生成するクロックツリーのバッファの段数が所定の範囲内となるように設定し、かつ、前記クロックネットのクロックソースから全フリップフロップまでのセルの段数の合計が所定の範囲内となるように設定する段数設定工程を備えていることを特徴とする請求項１乃至請求項５のいずれか一項に記載の半導体集積回路設計方法。
【請求項７】
前記複数のフリップフロップの一部を、回路素子に置き換えたことを特徴とする請求項１記載の半導体集積回路設計方法。
【請求項８】
前記回路素子を、ラッチ、またはハードマクロとしたことを特徴とする請求項７記載の半導体集積回路設計方法。
【請求項９】
前記回路素子を単独で前記第１のグループとすることを特徴とする請求項７に記載の半導体集積回路設計方法。
【請求項１０】
前記回路素子としてハードマクロを含み、
前記ハードマクロ内部にフリップフロップまたはラッチが存在する場合に、ハードマクロのクロック入力端子からハードマクロ内部のフリップフロップまたはラッチまでの伝播遅延時間とバッファ段数とを識別することを特徴とする請求項７乃至９記載の半導体集積回路設計方法。
【請求項１１】
前記第２のクロックツリー生成工程において、前記中継バッファの負荷容量の制限値を設定する工程を備えることを特徴とする請求項１記載の半導体集積回路設計方法。
【請求項１２】
１本のスキャンチェーンを構成するフリップフロップ群を１つの前記第１のグループ内に含まれるフリップフロップに限定するか、あるいは１本のスキャンチェーンを構成するフリップフロップ群が複数のグループにまたがる場合に前記第１のグループ内のフリップフロップを全て連続して接続するとともに同一の第１のグループ間を複数回通らないように接続変更するスキャンチェーン接続変更工程と、
前記第１のグループ内において、入力される配置情報に基づき、スキャンチェーンの配線長が短くなるようにフリップフロップの接続順を変更する場合に、クロック分岐点からフリップフロップまでのクロックツリーの段数が予め設定した値以下のフリップフロップについては、優先的に連続で接続されるように接続順を決定するスキャンチェーン最適化工程と、を備えていることを特徴とする請求項１記載の半導体集積回路設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路の設計方法に関し、特にＡＳＩＣ(Application Specified Integrated Circuit)やシステムＬＳＩ(Large Scale Integration)等の大規模な半導体集積回路のクロックツリー生成方法に関するものである。
【背景技術】
【０００２】
半導体集積回路はプロセスの微細化の進展により、非常に大規模な製品の実現が可能となった。また半導体集積回路のレイアウト設計に用いる自動配置配線ツールの性能も飛躍的に向上しており、より大規模な回路を扱うことが可能となっている。そのため、より大規模な半導体集積回路のレイアウト設計方法を確立することの重要性が高まってきている。
【０００３】
近年の半導体集積回路は、フリップフロップ（以下、ＦＦと略す。）と、ＳＲＡＭ(Static Random Access Memory)、ＲＯＭ(Read Only Memory)等のハードマクロを１つのクロックに同期させて動かす同期設計を行うことが多くなっている。同期回路では、クロックソースから各ＦＦまでのクロック信号の伝播遅延時間差、即ちクロックスキューが大きいことは誤動作発生や、高速化の妨げの原因となる。また微細化が進んだプロセスでは、製造におけるトランジスタ特性のばらつきが原因で半導体集積回路の誤動作が起こる可能性が高くなる。特にクロックラインがばらつきの影響を受けやすい構成である場合、これは一層顕著となる。そのため、より大規模な半導体集積回路において、クロックスキューの低減と、トランジスタ特性のばらつきによるクロックスキューの変動に起因する誤動作の防止とを考慮したクロックライン設計が非常に重要になる。
【０００４】
クロックスキューを低減するレイアウト方法として、一般的にはクロックツリー生成を行う方法が用いられている。以下に通常のクロックツリー生成について説明する。
【０００５】
最初にＦＦ群を負荷容量、即ちＦＦの入力容量と配線容量の和、が均等になるように分割し、分割したクラスタ毎にそれらを駆動する中継バッファを追加する。中継バッファの配置位置は、追加した中継バッファから各ＦＦまでの負荷がそれぞれ等しくなるように、ＦＦの重心等に決定する。次に追加した中継バッファに対し、同様にクラスタ処理と中継バッファの挿入を繰り返し行い、クロックソースからＦＦまでの間にツリー状にクロック経路を生成する。
【０００６】
生成したクロックツリーは、各階層において負荷容量を等しく分割しているため、同じ階層の中継バッファに同一のセルを用いれば、その階層における全ての中継バッファの遅延時間は等しくなるため、クロックスキューを低減することが可能となる。
【０００７】
レイアウト設計の際に実際にクロックスキューを低減するためには、さらに負荷容量が詳細配線を実施した後に所望の値となるようにする等の対処が必要と考えられる。また負荷容量を均一にすることが難しい場合等は、負荷に応じた駆動能力の中継バッファを用いる方法が考えられるが、この場合も詳細配線を実施した後に、負荷容量と駆動能力のバランスがとれている必要がある。これらが実現できないと、より大規模な半導体集積回路においては、クロックラインに各階層の遅延時間の差が蓄積していくため、最終的にクロックスキューは大きくなってしまう。
【０００８】
クロックスキュー低減のための第１の例として特許文献１では、基本ゲート部をＦＦ領域とＦＦ以外の論理ゲート領域に分割して配置し、ＦＦ領域はＦＦのみを格子状に規則正しく配置し、クロックツリーシンセシスはＦＦ領域のＦＦのクロックラインに限定して適用している。この方法を用いると、ＦＦを負荷が均一になるように分割し、重心にバッファを挿入することが容易であり、回路規模やチップサイズの影響を受けることなく、クロックスキューの低減が可能である。
【０００９】
また第２の例として特許文献２では、バイナリツリー状のクロック配線経路の分岐点を一旦設定した後、共通の親分岐点を持つ兄弟分岐点間を結線し、その実配線経路上でRCディレイのバランスがとれるところを新たな親分岐点位置として更新し、これをボトムアップに繰り返して詳細配線経路を決定する。またバッファセル詳細配置位置決定後、同一階層でのディレイを等しくするようバッファセル近傍の経路に迂回部分を含ませるようにしている。また詳細配線経路の通過を許さないセルをクロックの詳細配線経路と交わらない位置に変更している。この方法では、階層毎に遅延時間が最適化され、かつ詳細配線の負荷容量も均一にしやすく、クロックラインの伝播遅延時間の削減とクロックスキューの低減が可能となる。
【００１０】
また第３の例として特許文献３では、クロックスキューを少なくするため、クロックネットに所定の機能素子に加えて、少なくとも１つのダミー素子を付加し、各クロックネットの負荷容量と配線長が一致、若しくは近い値になるようにしている。この方法も負荷が均一になりやすいので、クロックスキューの低減が可能である。
【００１１】
また近年の微細化プロセスでの半導体集積回路の設計では、チップ内でのトランジスタ特性のばらつきの影響についても考慮することが重要である。ばらつきを考慮したタイミング解析について、以下に簡単に説明する。
【００１２】
図６(ａ)、図６(ｂ)は従来の半導体集積回路の設計方法におけるタイミング解析を説明するための図であり、図において、ＦＦ５１、ＦＦ６１にはクロック入力端子６４から入力されたクロックが中継バッファ６３ａ〜６３ｄを経て入力される。ＦＦ５２、ＦＦ６２にはクロック入力端子６４から入力されたクロックが、中継バッファ６３ａ、６３ｅ〜６３ｇを経て入力される。ＦＦ５１のデータはＦＦ５２に入力され、ＦＦ６１のデータはＬｏｇｉｃ６５を介してＦＦ６２へ入力される。Ｔ１はデータ送り側のクロックパスの伝達遅延時間、Ｔ２はデータ送り側のデータパスの伝達遅延時間、Ｔ３はデータ受け側のクロックパスの伝達遅延時間である。
【００１３】
図６(ａ)において、通常のタイミング検証方法でＦＦ５２のホールドタイムを検証する場合は、ＦＦ５２の入力ピンＤのホールドタイムをＨとすると、ＦＦ５２の入力ピンＤにおけるホールドタイムマージンは、
ホールドタイムマージン＝Ｔ１＋Ｔ２−Ｔ３−Ｈ  （式１)
と表される。ホールドタイムマージン≧０であれば誤動作は発生しない。
【００１４】
トランジスタ特性のばらつき（以下、オンチップ変動と称す）を考慮したタイミング解析では、ＦＦ５２のホールドタイムマージン´は、
ホールドタイムマージン´＝(Ｔ１＋Ｔ２)＊[係数１]−Ｔ３＊[係数２]−Ｈ  （式２)
と表される。ここで係数１＝１．００、係数２＝１．１０のように設定し、クロックラインとデータパスの伝播遅延時間にばらつきを与える。この場合は１０％重み付けしたことになる。ホールドタイムマージン´≧０であれば誤動作は発生しない。
【００１５】
次に図６(ｂ)において、ＦＦ６２のセットアップマージンは、図６(ａ）と同じものは同一の符号を用い、クロック周期をＴＰ、ＦＦ６２のセットアップタイムをＳとすると、
セットアップマージン＝ＴＰ＋Ｔ３−(Ｔ１＋Ｔ２)−Ｓ  （式３)
と表される。セットアップマージン≧０であれば誤動作は発生しない。
【００１６】
またオンチップ変動解析でのＦＦ６２のセットアップマージン´は、
セットアップマージン´＝ＴＰ＋Ｔ３＊[係数４]−(Ｔ１＋Ｔ２) ＊[係数３]−Ｓ  （式４）
と表される。ここで係数３＝１．１０、係数４＝１．００のように設定し、クロックラインとデータパスの伝播遅延時間等にばらつきを与える。この場合は１０％重み付けしたことになる。セットアップマージン´≧０であれば誤動作は発生しない。
【００１７】
式２，式４からわかるとおり、クロックラインの分岐点からデータの送受信をするＦＦのクロック入力端子までの距離が長くなるほど、Ｔ１、Ｔ３の値が大きくなるため、オンチップ変動タイミング解析ではホールドマージン、セットアップマージンのいずれも不利になる。したがってクロック信号の伝播遅延時間を削減することが、ばらつきの対策として有効と考えられる。回路規模が大きく、クロック信号の伝播遅延時間の削減が難しい場合は、ＦＦ数の上限を設定し、予めその範囲内で機能ブロック毎にクロックを分割するようにネットリストを作成した上で、レイアウトを行う方法が考えられる。
【特許文献１】特許第２８５０９４５号明細書
【特許文献２】特許第２６９５０７８号明細書
【特許文献３】特開平５−２０６４１４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１８】
しかしながら、前述のような通常のクロックツリー生成では、回路規模がより大きく、またセルの配置領域が複雑な形状になるほど、負荷が均一になるようにクラスタ処理を行うことが難しくなるため、クロックスキューの低減ができなくなるという問題がある。
【００１９】
また、クロックスキュー低減について特許文献１に記載されている方法では、ＦＦを予め決めた領域内に格子状に配置することしかできず、かつＦＦ以外の論理セルも別の専用領域にしか配置できないため、ＦＦと論理セル間の距離が長くなり、ＦＦのデータ信号の遅延が大きくなる。そのためタイミング制約を満たせない場合があると考えられる。
【００２０】
また、ＦＦ領域にはＦＦ間の信号とＦＦと論理セル間の信号が集まるため、配線混雑が発生する可能性があり、そのための配線領域を確保すると、チップ面積の増加につながるという問題がある。
【００２１】
また、特許文献２に示されている方法では、各中継バッファの負荷容量を等しくするために、クロック配線を迂回させているため、配線混雑が発生する可能性があるという問題がある。
【００２２】
また、特許文献３に示されているように、クロックネットを駆動するバッファの負荷容量を等しくするためにダミー素子を追加する方法を用いると、そのダミー素子を配置するための領域が必要になり、またダミー素子とバッファを接続するための配線を追加することにより配線混雑が起こる可能性もあり、チップ面積の増加が発生するという問題がある。
【００２３】
また、チップ内でのトランジスタ特性のばらつきの影響を緩和するために、大規模な半導体集積回路において、予め機能ブロック毎にクロックを分割するようにネットリストを作成した上で、レイアウトを行う方法では、実際にタイミング制約を用いて自動配置を行うと、入力クロックが同じ機能ブロックのＦＦ群のうち、他の機能ブロックとの間でタイミング余裕度が少ないＦＦ等が、データの送受信をする他の機能ブロックのＦＦの近くに配置されることがあり、入力クロックが同一の機能ブロック内のＦＦが分散されて配置されていると、その機能ブロックのクロックスキューが大きくなり、問題となることがある。
【００２４】
本発明は、上記のような問題点を解消するためになされたものであり、トランジスタ特性のばらつきや、配線容量、配線抵抗等のばらつきの影響を受けにくく、クロックスキューを低減させることができる半導体集積回路設計方法を提供することを目的とする。
【課題を解決するための手段】
【００２５】
本発明に係る半導体集積回路設計方法は、クロックスキューの閾値を設定する工程と、セルの配置情報に基づき、クロックスキューが、前記設定した閾値以下に収束することが推定される回路規模及び形状となるよう、同一のクロックネットに接続されている複数のフリップフロップを複数の第１のグループに分割し、該第１のグループ毎に、前記グループ化したフリップフロップの前段にグループ化バッファを追加する第１のグループ化工程と、前記グループ化バッファとフリップフロップとの間にクロックツリーを生成する第１のクロックツリー生成工程と、前記グループ化バッファの前段に遅延素子を挿入する遅延素子挿入工程と、前記第１のグループ間のクロックを除く信号の接続を調べる工程と、前記信号の接続を調べる工程により得られた信号の接続情報に基づき、前記信号の接続の度合いが大きい順に複数の前記第１のグループをまとめる組み合わせを決定し、これらの組み合わせにより得られるグループを次の階層における第２のグループとし、該第２のグループにクロックを供給しているセルを駆動する中継バッファを前段に追加し、該追加した中継バッファに対して、前記第２のグループ化とその前段へ中継バッファを追加する処理とを繰り返し行うことにより、前記クロックネットのクロックソースと前記第１のグループの遅延素子との間にクロックツリーを生成する第２のクロックツリー生成工程と、を備えるようにしたものである。
【００２６】
また、上記半導体集積回路設計方法において、前記第２のクロックツリー生成工程は、前記第１のグループ間のクロックを除く信号の接続情報に基づき、前記信号の接続の度合いに応じた前記階層的グループ化により追加する中継バッファの段数を設定する、信号接続を考慮する階層数設定工程を備え、前記信号の接続の度合いに応じて前記階層数設定工程により設定した段数の中継バッファを追加し、最下層のグループに追加された前記中継バッファの配置情報に基づいて、前記クロックネットのクロックソースと前記最下層のグループに追加された中継バッファ間のクロックスキューが最小となるように、前記第２のクロックツリーを生成するようにしたものである。
【００２７】
また、上記半導体集積回路設計方法において、前記第２のクロックツリーを生成する工程の、前記第１のグループ間のクロックを除く信号の接続情報に基づき、前記信号の接続の度合いに応じた前記階層的グループ化において、該グループ化の対象を１つ上の階層において隣接するグループに限定したものである。
【００２８】
また、上記半導体集積回路設計方法において、前記第１のグループ間のクロックを除く信号のタイミング余裕度を調べる工程を備え、該タイミング余裕度を調べる工程により得られるタイミング余裕度の情報に基づき、前記タイミング余裕度が小さい順に、複数の前記第１のグループをまとめる組み合わせを決定し、これらの組み合わせにより得られるグループを次の階層における第２のグループとするようにしたものである。
【００２９】
また、上記半導体集積回路設計方法において、前記第１のグループ化工程において、フリップフロップ間のクロックを除く信号の接続とタイミング余裕度を調べ、該信号の接続情報とタイミング余裕度の情報に基づき、信号接続の多いフリップフロップ、及びタイミング余裕度の小さいフリップフロップが同一のグループとなるように、第１のグループを決定するようにしたものである。
【００３０】
また、上記半導体集積回路設計方法において、前記グループ化バッファとフリップフロップとの間に生成するクロックツリーのバッファの段数が所定の範囲内となるように設定し、かつ、前記クロックネットのクロックソースから全フリップフロップまでのセルの段数の合計が所定の範囲内となるように設定する段数設定工程を備えているようにしたものである。
【００３１】
また、上記半導体集積回路設計方法において、フリップフロップの一部を、回路素子に置き換えるようにしたものである。
【００３２】
また、上記半導体集積回路設計方法において、前記回路素子を、ラッチ、またはハードマクロとするようにしたものである。
【００３３】
また、上記半導体集積回路設計方法において、前記回路素子を単独で第１のグループとするようにしたものである。
【００３４】
また、上記半導体集積回路設計方法において、前記回路素子としてハードマクロを含み、前記ハードマクロ内部にフリップフロップまたはラッチが存在する場合に、ハードマクロのクロック入力端子からハードマクロ内部のフリップフロップまたはラッチまでの伝播遅延時間とバッファ段数とを識別するようにしたものである。
【００３５】
また、上記半導体集積回路設計方法において、前記第２のクロックツリー生成工程において、前記中継バッファの負荷容量の制限値を設定する工程を備えるようにしたものである。
【００３６】
また、上記半導体集積回路設計方法において、１本のスキャンチェーンを構成するフリップフロップ群を１つの前記第１のグループ内に含まれるフリップフロップに限定するか、あるいは１本のスキャンチェーンを構成するフリップフロップ群が複数のグループにまたがる場合に前記第１のグループ内のフリップフロップを全て連続して接続するとともに同一の第１のグループ間を複数回通らないように接続変更するスキャンチェーン接続変更工程と、前記第１のグループ内において、セルの配置情報に基づき、スキャンチェーンの配線長が短くなるようにフリップフロップの接続順を変更する場合に、クロック分岐点からフリップフロップまでのクロックツリーの段数が予め設定した値以下のフリップフロップについては、優先的に連続で接続されるように接続順を決定するスキャンチェーン最適化工程と、を備えているようにしたものである。
【発明の効果】
【００３７】
本発明によれば、セルの配置情報に基づき、同一のクロックネットに接続されているフリップフロップを、クロックスキューが所定の閾値以下に収束することが推定できる回路規模、形状の第１のグループに分割している。したがって分割した第１のグループ内を、最終的に目標どおりのクロックスキューに抑えられる可能性を高くすることができる。またそのグループ毎にＦＦを駆動するグループ化バッファを追加し、さらにグループ化バッファの前段に遅延素子を挿入しているので、クロックソースから全ＦＦまでのクロックスキューは、追加した遅延素子の遅延値を調整することで低減することができる効果がある。
【００３８】
また、本発明によれば、クロックソースから遅延素子間にクロックツリーを生成する際に、第１のグループ間について、クロックを除く信号の接続の度合いを調べ、信号の接続の度合いが大きい順に、複数のグループをまとめ、これにより得られるグループを次の階層における第２のグループとし、そのグループの前段に中継バッファを追加し、それ以後は追加した中継バッファに対し、同様のグループ化処理を繰り返し行っているので、信号接続のあるグループ間のＦＦについては、クロック信号の分岐点からＦＦまでの距離を、第２のクロックツリーの中では短く抑えられる。したがって、信号の接続の度合いが大きいグループ間の信号は、トランジスタ特性のばらつきの影響を受けにくくすることができる効果がある。
【００３９】
また、本発明によれば、第１及び第２のクロックツリー生成において、クロックツリーを構成する中継バッファの段数の範囲を設定しているので、クロックソースから全ＦＦまでのバッファの段数は所定の制限の範囲内として、それぞれの伝播遅延時間は比較的近い値にすることができる。したがって全ＦＦまでの伝播遅延時間を調整する際に、各遅延素子の遅延値には近い値を設定しても調整可能として、配線容量、配線抵抗のばらつきの影響を受けにくくすることができる効果がある。
【００４０】
また、本発明によれば、前記第２のクロックツリー生成工程は、前記第１のグループ間のクロックを除く信号の接続情報に基づき、前記信号の接続の度合いに応じた前記階層的グループ化により追加する中継バッファの段数を設定する、信号接続を考慮する階層数設定工程を備え、前記信号の接続の度合いに応じて前記階層数設定工程により設定した段数の中継バッファを追加し、最下層のグループに追加された前記中継バッファの配置情報に基づいて、前期従来のクロックツリー生成方法により、前記クロックネットのクロックソースと前記最下層のグループに追加された中継バッファ間のクロックスキューが最小となるように、前記第２のクロックツリーを生成するので、前期第２のクロックツリーが必要以上に複雑な構成にならないように制御することが可能となる。
【００４１】
また、本発明によれば、前記第２のクロックツリー生成工程において、第２のグループ化の対象を１つ上の階層において隣接するグループに限定することにより、前期第２のクロックツリーがより簡素な構成になるように制御することが可能となる。
【００４２】
また、本発明によれば、クロックソースから遅延素子間にクロックツリーを生成する際に、第１のグループ間について、クロックを除く信号のタイミング余裕度を調べ、タイミング余裕度が小さい順に、複数の第１のグループをまとめ、これにより得られるグループを次の階層における第２のグループとし、そのグループの前段に中継バッファを追加し、同様のグループ化処理を繰り返し行っているので、タイミング余裕度の小さいグループ間のＦＦについては、クロック信号の分岐点からＦＦまでの距離を、第２のクロックツリーの中では短く抑えられる。したがって、タイミング余裕度が小さいグループ間の信号は、トランジスタ特性のばらつきの影響を受けにくくすることができる効果がある。
【００４３】
また、本発明によれば、前記第１のグループ化工程において、ＦＦ間のクロックを除く信号の接続とタイミング余裕度を調べ、該信号の接続情報とタイミング余裕度の情報に基づき、信号接続の多いＦＦ群、及びタイミング余裕度の小さいＦＦ群が同一のグループに属するように、第１のグループを決定するため、トランジスタ特性のばらつきの影響を受けタイミング制約違反が発生しやすいＦＦ群は、同一の第１のグループ内に存在するように第１のグループ化が行われる可能性が高くなる。したがって、それらのＦＦ群はクロックの分岐点からセルまでの距離がより短くなるため、トランジスタ特性のばらつきの影響を受けにくくなるという効果がある。
【００４４】
また、本発明によれば、前記複数のＦＦの一部を、ラッチ、ハードマクロ等の回路素子に置き換えられるようにしているため、前期回路素子を含むシステムＬＳＩにおいても適用可能である。
【００４５】
また、本発明によれば、前記回路素子としてハードマクロを含み、前記ハードマクロ内部にＦＦまたはラッチが存在する場合に、ハードマクロのクロック入力端子からハードマクロ内部のＦＦまたはラッチまでの伝播遅延時間とバッファ段数とを識別するようにしているため、ハードマクロを含む複雑なシステムＬＳＩにおいても、クロックソースから全セルまでのクロックラインを対称な構成にすることが可能となる効果がある。
【００４６】
また、本発明によれば、１本のスキャンチェーンを構成するＦＦ群を１つの前記第１のグループ内に含まれるＦＦに限定するか、あるいは１本のスキャンチェーンを構成するフリップフロップ群が複数のグループにまたがる場合に前記第１のグループ内のＦＦを全て連続して接続するとともに同一の第１のグループ間を複数回通らないようにスキャンチェーンを接続変更し、前記第１のグループ内において、セルの配置情報に基づき、スキャンチェーンの配線長が短くなるようにＦＦの接続順を変更する場合に、クロック分岐点からＦＦまでのクロックツリーの段数が予め設定した値以下のＦＦについては、優先的に連続で接続されるように接続順を決定するスキャンチェーン最適化を行うため、トランジスタ特性のばらつきの影響を受け、特にホールドマージンについてタイミング制約違反が発生しやすいスキャンチェーンを、トランジスタ特性のばらつきの影響を受けにくい構成に変更できるという効果がある。
【発明を実施するための最良の形態】
【００４７】
（実施の形態１）
図１は本発明の実施の形態１に係る半導体集積回路設計方法を示すフローチャートである。
図３は本発明の実施の形態１に係る半導体集積回路設計方法を説明するための、ネットリストのグループ化前の状態を説明する図であり、クロック入力端子９から入力されるクロックが、メモリ等のハードマクロ１０〜１５と複数のＦＦ２０とに入力される半導体集積回路の例が示されている。なお、本実施の形態１においては、複数のＦＦ２０を配置する場合について説明するが、本発明はＦＦの代わりに、ラッチを配置する場合についても適用可能である。
【００４８】
図４(ａ)、図４(ｂ)は本発明を実施の形態１に係る半導体集積回路設計方法を説明するための、回路の第１のグループ化を示す図であり、図において、図３と同一符号は同一または相当する部分を示している。
【００４９】
図５は本発明を実施の形態１に係る半導体集積回路設計方法を説明するための、回路の第２のグループ化を示す図であり、図において、図３と同一符号は同一または相当する部分を示している。
【００５０】
図２は本発明の実施の形態１に係る半導体集積回路設計方法を説明するための、フロアプラン情報により決定されるハードマクロの配置位置を示す図であり、図において、図３と同一符号は同一または相当する部分を示している。
【００５１】
以下、図１、図２、図３、図４(ａ)、図４(ｂ)、及び図５を用いて本発明の実施の形態１に係る半導体集積回路設計方法について説明する。まず、最初の工程Ｓ１０１では、図３に示すような半導体集積回路のネットリストとタイミング制約、物理ライブラリ情報、フロアプラン情報等のレイアウト設計に必要な情報を半導体集積回路の自動配置配線ツールに入力する。続いて、工程Ｓ１０２では、次工程Ｓ１０３における自動配置処理に必要のないスキャンチェーンの接続情報を削除する。
【００５２】
次に工程Ｓ１０３では、入力されたネットリストとタイミング制約とを用いてレイアウト設計装置により自動配置を行う。工程Ｓ１０１においてフロアプラン情報を入力した際に、図２に示すように、ハードマクロ１０〜１５の配置位置は決定しているので、ここでは論理セルの配置のみが実行される。
【００５３】
次に工程Ｓ１０４では、工程Ｓ１０７で生成するクロックツリーのスキューの目標値とツリー段数の最大値、最小値等を設定する。ツリーの段数は一意に設定してもよい。工程Ｓ１０６では、工程Ｓ１０３で配置されたＦＦ２０の配置情報に基づいて、工程Ｓ１０２で設定したクロックスキューの目標値に収束することが推定される回路規模と形状に、ＦＦ群を複数に分割し、それらを第１のグループとする。この実施の形態１においては、図４(ａ)に示すようにＦＦ群は第１のグループ１〜８に分割される。クロックスキューを低減するためには、配置領域は上下、左右に対称に近い形状である方が有利と考えられるが、作成したフロアプランによっては、そのように分割できない場合もあり得る。ここでは、予めクロックスキューを低減しやすい形状についてのデータを準備しておき、そのデータを参考に形状を決定するものとする。また作成するグループのＦＦ数の上限値、禁止する形状等を予め設定しておいてもよい。
【００５４】
工程Ｓ１０６では、決定した各グループのＦＦ２０の前段に第１のグループ化バッファ２１を追加するようにネットリストを変更し、工程Ｓ１０７では、決定した各グループ１〜８に対して、従来の技術において説明したような通常のクロックツリー方式により複数の中継バッファ２３を追加して図４(ｂ)に示すツリーを生成する。そして生成したクロックラインに対して、マンハッタン長または概略配線の結果等から求められる配線容量と配線抵抗を用いてクロック信号の伝播遅延時間を仮計算する。工程Ｓ１０８では、仮計算の結果から各グループ１〜８のクロックスキューが目標値に収束しているかを調べ、全てのグループ１〜８のクロックスキューが目標値以下であれば工程Ｓ１０９に移行し、目標値を超えるものがあれば工程Ｓ１０４に移行する。工程Ｓ１０９では、図４(ａ)に示すように、第１のグループ化バッファの前段に遅延素子２２を挿入し、工程Ｓ１１０に移行する。
【００５５】
以上のように、まず配置情報に基づいて、クロックスキューが目標値以下になるまで第１のグループ化処理と第１のグループ１〜８のクロックツリー生成、クロックの遅延計算とを行い、クロックスキューの判定を行う。そしてクロックスキューが目標値以下となるようにグループが決まると、遅延素子２２の挿入を行う。ここまでが第１のクロックツリーの生成についての説明である。
【００５６】
次に第２のクロックツリー生成について説明する。工程Ｓ１１０では、作成した第１のグループ間と第１のグループとハードマクロ間のクロック信号以外の信号接続とタイミング余裕度を調べる。
【００５７】
工程Ｓ１１１では、工程Ｓ１１３の第２のクロックツリー生成におけるツリーのバッファ段数の制限値を設定する。このとき、この制限値に加えて、クロックネットのクロックソースから全フリップフロップ、及びハードマクロまでのセルの段数の合計を所定の範囲内となるように設定するようにしてもよい。
【００５８】
工程Ｓ１１２では第１のグループ１〜８と前記ハードマクロ１０〜１５間の信号接続とタイミング余裕度を考慮する階層数の設定を行う。例えば、タイミング余裕度が小さい順に、複数の第１のグループ１〜８と前記ハードマクロ１０〜１５とをまとめる組み合わせを決定し、これらの組み合わせにより得られるグループを次の階層における第２のグループとし、同様に階層的にグループ化処理を実施し、中継バッファを追加する段数を設定する。
【００５９】
工程Ｓ１１３では、図５に示すように、工程Ｓ１１０で調べた信号接続の度合いの情報に基づき、信号の接続の度合いが大きい順に、複数の第１のグループ１〜８とハードマクロ１０〜１５をまとめるように組み合わせを決定し、次の階層における第２のグループとする。あるいは、タイミング余裕度が小さい順に、複数の第１のグループ１〜８と前記ハードマクロ１０〜１５とをまとめる組み合わせを決定し、これらの組み合わせにより得られるグループを次の階層における第２のグループとするようにしてもよい。なお、このグループ化の対象を１つ上の階層において隣接する第１グループ１〜８またはハードマクロ１０〜１５に限定してもよい。次にクロックを供給しているセルを駆動する中継バッファ２４を前段に追加する。追加した中継バッファ２４は、駆動するセルに対して負荷が均等にかかるようにするため、駆動するセルの重心付近等に配置する。また第２のグループを決定する際には、予め中継バッファの負荷容量の制限値を設定しておき、駆動する中継バッファ２４の負荷が大きくならないように、組み合わせるグループ数等を決定するものとする。さらにクロック経路が短くなるように、必要に応じて遅延素子の配置位置を移動してもよい。以後は追加した中継バッファ２４に対して、同様にグループ化を行う処理を繰り返し、クロックソースから遅延素子までの間に第２のクロックツリーを生成する。
【００６０】
ここでグループ間の信号接続の度合いを考慮して階層的にグループ化処理を行う段数を工程Ｓ１１２で設定しているので、設定した階層数のグループ化処理を実行後、さらに第２のクロックツリーに中継バッファを追加する必要がある場合は、従来の技術において示した通常のクロックツリー方式で処理を行うものとする。
【００６１】
次に工程Ｓ１１４では、生成したクロックツリーの段数が設定した制限値を満たしているかを判定する。制限の範囲内であれば工程Ｓ１１５に移行し、範囲外であれば工程Ｓ１１１に移行する。
【００６２】
工程Ｓ１１５では、工程Ｓ１０２で削除したスキャンチェーンの再接続を行う。このとき、１本のスキャンチェーンを構成するＦＦ群を１つの第１のグループ内に含まれるＦＦに限定するか、あるいは１本のスキャンチェーンを構成するＦＦ群が複数の第１のグループにまたがる場合に第１のグループ内のＦＦを全て連続して接続するとともに同一の第１のグループ間を複数回通らないようにスキャンチェーンを接続変更するようにし、第１のグループ内においては、入力される配置情報に基づきスキャンチェーンの配線長が短くなるようにＦＦの接続順を変更する。
【００６３】
図７(ａ)はスキャンチェーン最適化前の接続を示し、 図７(ｂ)はスキャンチェーン最適化後の接続を示している。図７(ａ), 図７(ｂ)において、図２と同一符号は同一または相当する部分を示しており、ＳＩ１ないしＳＩ６はスキャン入力端子、ＳＯ１ないしＳＯ６はスキャン出力端子を示している。また、Ｆはフリップフロップを示している。図７(ｂ)では、同一の第１のグループに属するＦＦは全て連続して接続されるように、接続変更が行われている。また第１のグループ内において、セルの配置情報に基づきスキャンチェーンの配線長が短くなるようにＦＦの接続順を変更する場合に、工程Ｓ１１５においてクロック分岐点からＦＦまでのクロックツリーの段数が予め設定した値以下のＦＦについては、優先的に連続で接続されるように接続順を決定して、スキャンチェーンを最適化するようにしてもよい。
【００６４】
工程Ｓ１１６では第１のクロックツリーの詳細配線を実行し、工程Ｓ１１７では第２のクロックツリーの詳細配線を実行し、また工程Ｓ１１８では、クロック以外の信号の詳細配線を実行する。
【００６５】
工程Ｓ１１９では、詳細配線まで完了したレイアウトデータの遅延計算を実行してクロックソースから全セルまでのクロック信号の伝播遅延時間を求め、第１のグループ毎とハードマクロ毎に平均値が同じになるように、第１のグループとハードマクロの前段に追加した遅延素子を調整する。遅延素子は例えば、クロックラインに追加した中継バッファと同じセルを一列に並べたものでもよいし、遅延時間の調整が行いやすいように遅延値の小さいセルを作成し、その遅延調整用セルを並べて構成したものでもよい。工程Ｓ１１９が完了すると、全ての処理が終了となる。
【００６６】
なお、本発明においては、ハードマクロ内部にＦＦまたはラッチが存在する場合には、ハードマクロのクロック入力端子からハードマクロ内部のＦＦまたはラッチまでの伝播遅延時間とバッファ段数とを識別してクロックツリー生成の際にこれらを考慮するようにする。
【００６７】
以上のように本実施の形態１では、セルの配置情報に基づき、同一のクロックネットに接続されているＦＦを、クロックスキューが所定の閾値以下に収束することが推定できる回路規模や形状の第１のグループに分割している。したがって分割した第１のグループ内は最終的に目標どおりのクロックスキューに抑えられる可能性を高くすることができる。またそのグループ毎にＦＦを駆動するグループ化バッファを追加し、さらにグループ化バッファとハードマクロの前段に遅延素子を挿入しているので、クロックソースから全ＦＦとハードマクロまでのクロックスキューは、追加した遅延素子の遅延値を調整することで低減することが可能となる。
【００６８】
またクロックソースから遅延素子間にクロックツリーを生成する際に、第１のグループ間と第１のグループとハードマクロ間について、クロックを除く信号の接続の度合い、またはタイミング余裕度を調べ、信号の接続の度合いが大きい順、またはタイミング余裕度の小さい順に、複数のグループとハードマクロをまとめ、次の階層における第２のグループとし、そのグループの前段に中継バッファを追加している。以後は追加した中継バッファに対し、同様のグループ化処理を繰り返し行っているので、信号接続が多い、またはタイミング余裕度の小さいグループ間のＦＦとハードマクロについては、クロック信号の分岐点からＦＦ、ハードマクロ等のセルまでの距離が、第２のクロックツリーの中では短く抑えられる。したがって、トランジスタ特性のばらつきの影響を受けにくい構成とすることができる効果がある。
【００６９】
また第１及び第２のクロックツリー生成において、クロックツリーを構成する中継バッファの段数の範囲を設定しているので、クロックソースからＦＦ、ハードマクロ等の全セルまでのバッファの段数は所定の制限の範囲内となっており、伝播遅延時間は比較的近い値になりやすい。したがって全セルまでの伝播遅延時間を調整する際に、各遅延素子の遅延値には近い値を設定しての調整が可能となり、配線容量、配線抵抗のばらつきの影響を受けにくい構成とすることができる効果がある。
【００７０】
また１本のスキャンチェーンを構成するＦＦ群を１つの第１のグループ内に含まれるＦＦに限定するか、あるいは１本のスキャンチェーンを構成するＦＦ群が複数の第１のグループにまたがる場合に第１のグループ内のＦＦを全て連続して接続するとともに同一の第１のグループ間を複数回通らないようにスキャンチェーンを接続変更するようにしているため、スキャンチェーンにおいてクロックの分岐点からセルまでの距離が長くなることを抑制しており、スキャンチェーンを配線容量、配線抵抗のばらつきの影響を受けにくい構成とする効果がある。
【００７１】
（実施の形態２）
図８は本発明を実施の形態２に係る半導体集積回路設計方法を示すフローチャートである。実施の形態１との違いは、工程Ｓ１０５において、ＦＦ間のクロック以外の信号接続とタイミング余裕度を調べるようにし、工程Ｓ１０６ａにおいてその情報を基に第１のグループ化を行うようにしたことである。図８において、図１と同一符号は同一または相当する部分を示している。
【００７２】
図９、図１０は、図８の工程Ｓ１０６ａにおいて工程Ｓ１０５で得られた情報を基に第１のグループ化を実施する処理を示す図であり、図において、図２と同一符号は同一または相当する部分を示している。ＦＦ群１０１〜１０７は、信号接続の多いＦＦをまとめて作成したものである。領域２０１ないし２０３及び領域２０５はタイミング余裕度の大きい領域である。領域２０４はタイミング余裕度の小さい領域である。
【００７３】
以下、図８、図９、図１０を用いて本発明の実施の形態２に係る半導体集積回路設計方法について説明する。なお、工程Ｓ１０１〜Ｓ１０３と工程Ｓ１０７以降の工程においては、実施の形態１と同様に処理を行うため、ここでの説明は省略する。
【００７４】
工程Ｓ１０５では、まず工程Ｓ１０１で入力されたネットリストのＦＦ間、またはＦＦとハードマクロ間の接続とタイミング制約に対するタイミング余裕度を調べる。次に工程Ｓ１０６ａにおいて、工程Ｓ１０５で得られた情報を基に、接続の多いＦＦ、あるいはタイミング余裕度の小さいＦＦができるだけ同一の第１のグループに属するようにＦＦの分割領域を決定し、かつ実施の形態１と同様に、工程Ｓ１０３で配置されたＦＦ２０の配置情報に基づいて、工程Ｓ１０２で設定したクロックスキューの目標値に収束することが推定される回路規模と形状にＦＦ群を調整して複数に分割し、第１のグループ化を行う。例として図９では、工程Ｓ１０５で得られたＦＦ間の接続情報を基に、接続の多いＦＦをＦＦ群１０１〜１０７にまとめている。実施の形態２では、このＦＦ群１０１〜１０７の領域を基準に、オンチップ変動の影響を受けにくいと考えられるタイミング余裕度の大きいＦＦを他のＦＦ群と組み合わせることにより、クロックスキューが所定値以下になるようにＦＦの分割領域を調整し、図１０に示すように、第１のグループ１〜８を決定する。図１０の第１のグループ２は、図９のＦＦ群１０２と、ＦＦ群１０１中のタイミング余裕度の大きいＦＦを含む領域２０１をまとめて作成されており、同じく図１０の第１のグループ３は、図９のＦＦ群１０３と、ＦＦ群１０１中のタイミング余裕度の大きいＦＦを含む領域２０２とから作成され、図１０の第１のグループ４は、図９のＦＦ群１０４と、ＦＦ群１０６中のタイミング余裕度の大きいＦＦを含む領域２０３とから、それぞれ作成されている。また、図１０の第１のグループ１は、図９のＦＦ群１０１から領域２０１、２０２を除いた領域である。また第１のグループ５，７は、図１０のＦＦ群１０５を、タイミング余裕度の小さい領域２０４とタイミング余裕度の大きい領域２０５に分割し作成したものである。
【００７５】
以上のように本実施の形態２では、入力されたネットリストのＦＦ間、またはＦＦとハードマクロ間の接続とタイミング制約に対するタイミング余裕度を調べ、得られた情報を基に、接続の多いＦＦ、あるいはタイミング余裕度の小さいＦＦが同一の第１のグループに属するようにＦＦの分割領域を調整し、第１のグループ化を行っている。したがって接続の多い、あるいはタイミング余裕度の小さいデータパスのＦＦはクロックの分岐点からセルまでの距離が短くなるため、オンチップ変動の影響によるタイミング制約違反発生を抑制できるという効果がある。
【産業上の利用可能性】
【００７６】
本発明に係る半導体集積回路設計方法は、クロックスキューが小さく、トランジスタ特性のばらつきの影響を受けにくいクロックツリーを生成することを可能とするものであり、ＡＳＩＣやシステムＬＳＩ等の大規模な半導体集積回路のレイアウト設計方法等として有用である。
【図面の簡単な説明】
【００７７】
【図１】本発明の実施の形態１に係る半導体集積回路設計方法のフローチャートである。
【図２】本発明の実施の形態１に係る半導体集積回路設計方法を説明するための、半導体集積回路のフロアプランである。
【図３】本発明の実施の形態１に係る半導体集積回路設計方法を説明するための、回路のグループ化前の構成を示す図である。
【図４（ａ）】本発明の実施の形態１に係る半導体集積回路設計方法を説明するための、回路の第１のグループ化を示す図である。
【図４（ｂ）】本発明の実施の形態１に係る半導体集積回路設計方法を説明するための、回路の第１のグループ化を示す図である。
【図５】本発明の実施の形態１に係る半導体集積回路設計方法を説明するための、回路の第２のグループ化を示す図である。
【図６（ａ）】従来の半導体集積回路設計方法を説明するための図である。
【図６（ｂ）】従来の半導体集積回路設計方法を説明するための図である。
【図７（ａ）】本発明の実施の形態１に係る半導体集積回路設計方法を説明するための、スキャンチェーンの接続を示す図である。
【図７（ｂ）】本発明の実施の形態１に係る半導体集積回路設計方法を説明するための、スキャンチェーンの接続を示す図である。
【図８】本発明の実施の形態２に係る半導体集積回路設計方法のフローチャートである。
【図９】本発明の実施の形態２に係る半導体集積回路設計方法を説明するための、回路のグループ化前の構成を示す図である。
【図１０】本発明の実施の形態２に係る半導体集積回路設計方法を説明するための、回路の第１のグループ化を示す図である。
【符号の説明】
【００７８】
１〜８  第１のグループ
９，６４  クロック入力端子
１０〜１５  ハードマクロ
２０  フリップフロップ
２１  中継バッファ
２２  遅延素子
２３  中継バッファ
２４  中継バッファ
ＳＩ０〜ＳＩ６  スキャン入力端子
ＳＯ０〜ＳＯ６  スキャン出力端子
【図１】
2006107206.tif 000003
【図２】
2006107206.tif 000004
【図３】
2006107206.tif 000005
【図４（ａ）】
2006107206.tif 000006
【図４（ｂ）】
2006107206.tif 000007
【図５】
2006107206.tif 000008
【図６（ａ）】
2006107206.tif 000009
【図６（ｂ）】
2006107206.tif 000010
【図７（ａ）】
2006107206.tif 000011
【図７（ｂ）】
2006107206.tif 000012
【図８】
2006107206.tif 000013
【図９】
2006107206.tif 000014
【図１０】
2006107206.tif 000015