(57)【要約】【課題】半導体装置の回路面積の増加を抑制する。【解決手段】半導体装置に含まれる複数のフリップフロップ（ＦＦ１，２、ＦＦ２，３、…）によるデータパスのタイミングマージンを解析し（ステップＳ１）、タイミングマージンが閾値より小さい値を有するデータパスが連続するデータパスに含まれるフリップフロップ群（ＦＦ１〜１１）を、同一のクロックバッファＢｆａ，Ｂｆｂで駆動される複数のフリップフロップのグループＧａ，Ｇｂとして、クロックバッファＢｆａ，Ｂｆｂの電気的特性を満たす範囲でグループ化する。【選択図】図１
2014235642.tif 000002
【特許請求の範囲】
【請求項１】
半導体装置に含まれる複数のフリップフロップによるデータパスのタイミングマージンを解析し、
前記タイミングマージンが閾値より小さい値を有するデータパスが連続するデータパスに含まれるフリップフロップ群を、同一のクロックバッファで駆動される複数のフリップフロップのグループとして、前記クロックバッファの電気的特性を満たす範囲でグループ化する、
ことを特徴とする半導体装置の設計方法。
【請求項２】
前記半導体装置に含まれる前記複数のフリップフロップの配置情報に基づき、前記グループ化された前記フリップフロップ群の位置と配置位置が近いフリップフロップを、前記電気的特性を満たす範囲で前記グループに含ませることを特徴とする請求項１に記載の半導体装置の設計方法。
【請求項３】
階層的に複数配置されるクロックバッファのうち、第１の階層の複数のクロックバッファによって駆動される複数の前記グループの間のタイミングマージンを解析し、
前記タイミングマージンが閾値より小さい値を有するグループのそれぞれを駆動する前記第１の階層の複数のクロックバッファを、同一の第２の階層のクロックバッファで駆動される複数のクロックバッファのグループとして、前記第２の階層のクロックバッファの電気的特性を満たす範囲でグループ化する、
ことを特徴とする請求項１または２に記載の半導体装置の設計方法。
【請求項４】
第Ｎ（Ｎは２以上の自然数）の階層の１つのクロックバッファで駆動される第Ｎ−１の階層のクロックバッファによるグループに、前記第Ｎの階層のクロックバッファの電気的特性を満たす範囲で、前記Ｎ−１の階層の他のクロックバッファを含ませることを特徴とする請求項３に記載の半導体装置の設計方法。
【請求項５】
前記第Ｎの階層の複数のクロックバッファを駆動する、第Ｎ＋１の階層の複数のクロックバッファを、前記グループ間のタイミングマージンの解析結果に基づいたＨツリー型に配置する、ことを特徴とする請求項４に記載の半導体装置の設計方法。
【請求項６】
半導体装置に含まれる複数のフリップフロップによるデータパスのタイミングマージンを解析し、
前記タイミングマージンが閾値より小さい値を有するデータパスが連続するデータパスに含まれるフリップフロップ群を、同一のクロックバッファで駆動される複数のフリップフロップのグループとして、前記クロックバッファの電気的特性を満たす範囲でグループ化する、
処理をコンピュータに実行させるプログラム。
【請求項７】
半導体装置の設計処理を行う演算処理部を有し、
前記演算処理部は、
前記半導体装置に含まれる複数のフリップフロップによるデータパスのタイミングマージンを解析し、
前記タイミングマージンが閾値より小さい値を有するデータパスが連続するデータパスに含まれるフリップフロップ群を、同一のクロックバッファで駆動される複数のフリップフロップのグループとして、前記クロックバッファの電気的特性を満たす範囲でグループ化する、
ことを特徴とする設計装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置の設計方法、プログラム及び設計装置に関する。
【背景技術】
【０００２】
半導体装置内の同期回路に対して、クロック信号生成部で生成したクロック信号を分配するクロックツリーを生成する方法として、各種の技術がある。
たとえば、タイミングマージンの小さいフリップフロップ（以下ＦＦと略す）群や、クロック信号以外の信号接続の多いＦＦ群を同じグループとし、そのグループの前段にグループ内のＦＦを駆動するクロックバッファを配置する技術があった。これにより、クロックツリーの分岐点からＦＦまでの距離が短く抑えられ、配線遅延などの製造ばらつきによるクロックスキューの変動に起因する誤作動が抑えられる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−１０７２０６号公報
【特許文献２】特開２００３−１６１３０号公報
【特許文献３】特開２００５−４４９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、従来の技術では、信号接続の多いＦＦと信号接続の少ないＦＦ間に論理接続関係があり、これらのＦＦのタイミングマージンが小さい場合、同一のグループに属することができず、信号接続の少ないＦＦではタイミングマージンが悪化する可能性がある。
【０００５】
そのため、信号接続の少ないＦＦにおいてタイミングマージンが増えるように、スキュー調整を行うためのクロックバッファを追加することが考えられるが、その場合、半導体装置の回路面積が増加してしまう。
【課題を解決するための手段】
【０００６】
発明の一観点によれば、半導体装置に含まれる複数のフリップフロップによるデータパスのタイミングマージンを解析し、前記タイミングマージンが閾値より小さい値を有するデータパスが連続するデータパスに含まれるフリップフロップ群を、同一のクロックバッファで駆動される複数のフリップフロップのグループとして、前記クロックバッファの電気的特性を満たす範囲でグループ化する、半導体装置の設計方法が提供される。
【０００７】
また、発明の一観点によれば、半導体装置に含まれる複数のフリップフロップによるデータパスのタイミングマージンを解析し、前記タイミングマージンが閾値より小さい値を有するデータパスが連続するデータパスに含まれるフリップフロップ群を、同一のクロックバッファで駆動される複数のフリップフロップのグループとして、前記クロックバッファの電気的特性を満たす範囲でグループ化する、処理をコンピュータに実行させるプログラムが提供される。
【０００８】
また、発明の一観点によれば、半導体装置の設計処理を行う演算処理部を有し、前記演算処理部は、前記半導体装置に含まれる複数のフリップフロップによるデータパスのタイミングマージンを解析し、前記タイミングマージンが閾値より小さい値を有するデータパスが連続するデータパスに含まれるフリップフロップ群を、同一のクロックバッファで駆動される複数のフリップフロップのグループとして、前記クロックバッファの電気的特性を満たす範囲でグループ化する、設計装置が提供される。
【発明の効果】
【０００９】
開示の半導体装置の設計方法、プログラム及び設計装置によれば、半導体装置の回路面積の増加を抑制できる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態の半導体装置の設計方法の一例を説明する図である。
【図２】第１の実施の形態の半導体装置の設計方法を実行する設計装置の一例を示す図である。
【図３】本実施の形態の半導体装置の設計方法を実行する設計装置（コンピュータ）のハードウェア例を示す図である。
【図４】第２の実施の形態の半導体装置の設計方法におけるクロックツリーの生成処理の一例の流れを示すフローチャートである。
【図５】タイミング解析対象の回路例を説明する図である。
【図６】タイミング解析結果の一例を示す図である。
【図７】ＦＦ補助グループの作成例を示す図である。
【図８】第１次ＦＦグループの作成例を示す図である。
【図９】第１次ＦＦグループのマージの一例を示す図である。
【図１０】タイミングマージンが閾値以上のデータパスのＦＦがマージされる例を示す図である。
【図１１】第１次ＦＦグループバッファの配置例を示す図である。
【図１２】Ｎ次のＦＦグループツリーの一例を示す図である。
【図１３】第Ｎ次ＦＦグループ間の接続例を示す図である。
【図１４】各第Ｎ次ＦＦグループ間タイミングマージンとＦＦまでの遅延情報の一例を示す図である。
【図１５】生成されるＨツリー型のクロックツリーの一例を示す図である。
【図１６】Ｈツリー型に配置されるクロックバッファを含むクロックツリーの一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
（第１の実施の形態）
図１は、第１の実施の形態の半導体装置の設計方法の一例を説明する図である。
【００１２】
また、図２は、第１の実施の形態の半導体装置の設計方法を実行する設計装置の一例を示す図である。
設計装置２０は、演算処理部２１、記憶部２２を有する。演算処理部２１は、記憶部２２に格納されているプログラムやデータをもとに、図１に示すような半導体装置の設計方法を実行する。演算処理部２１は、たとえば、後述するようなプロセッサである。
【００１３】
図１に示されている半導体装置の設計方法では、まず、タイミング解析処理が行われる（ステップＳ１）。タイミング解析処理では、半導体装置に含まれる複数のＦＦによるデータパスのタイミングマージン（セットアップタイミングマージン及びホールドタイミングマージン）などが解析される。
【００１４】
次に、グループ化処理が行われる（ステップＳ２）。図１には、複数のＦＦ対によるデータパスの例が示されている。点線のデータパスは、タイミングマージンが閾値未満（たとえば、０ｎｓ未満）となるデータパスであり、実線のデータパスは、タイミングマージンが閾値以上となるデータパスである。
【００１５】
ステップＳ２の処理では、タイミングマージンが閾値未満となる連続するデータパスに含まれるフリップフロップ群が、同一のクロックバッファで駆動されるグループとして、クロックバッファの電気的特性を満たす範囲でグループ化される。クロックバッファの電気的特性とは、たとえば、そのクロックバッファにより、正常に駆動できるＦＦの個数である。
【００１６】
図１の例では、タイミングマージンが閾値未満となる連続するデータパスには、ＦＦ１，２，３，４，５，６，７，８，９，１０，１１が含まれる。適用するクロックバッファＢｆａが、たとえば、８個のＦＦを駆動できるという電気的特性の場合、タイミングマージンが閾値未満となる連続するデータパスに含まれるＦＦ１〜１１のうち、たとえば、ＦＦ１〜８が同一のグループＧａにグループ化される。また、残りのＦＦ９〜１１が同一のグループＧｂにグループ化される。なお、このときＦＦの配置情報に基づき、配置位置が離れているＦＦについては、同じグループに含まれないようにしてもよい。
【００１７】
次に、マージ処理が行われる（ステップＳ３）。マージ処理では、ＦＦの配置情報に基づき、グループに含まれるＦＦ群と配置位置が近いＦＦが、適用するクロックバッファの電気的特性を満たす範囲でグループにマージされる。
【００１８】
たとえば、グループＧｂのＦＦ群を駆動するクロックバッファＢｆｂが、８個のＦＦを駆動できる場合、グループＧｂには、３つのＦＦ９〜１１しか含まれていないため、余裕がある。そのため、たとえば、ＦＦ９〜１１に近い位置に配置されている５つのＦＦ１２，１３，１４，１５，１６がグループＧｂにマージされる。
【００１９】
その後、クロックバッファ配置処理が行われる（ステップＳ４）。クロックバッファ配置処理では、各グループのＦＦ群を駆動するクロックバッファの配置が行われる。たとえば、図１に示すように、グループＧａのＦＦ群を駆動するクロックバッファＢｆａは、ＦＦ１〜８の重心の位置に配置される。グループＧｂのＦＦ群を駆動するクロックバッファＢｆｂは、ＦＦ９〜１６の重心の位置に配置される。
【００２０】
以上のような、第１の実施の形態の半導体装置の設計方法によれば、タイミングマージンの小さい連続するデータパスに含まれるＦＦ群を、クロックバッファの電気的特性を満たせる範囲で同じグループにすることができる。そのため、信号接続の多いＦＦと信号接続の少ないＦＦ間に論理接続関係があっても、これらのＦＦのタイミングマージンが閾値以下であれば同一のグループに含ませることができる。これにより、クロックバッファを追加せずに済み、半導体装置の回路面積（チップ面積）の増加を抑制できる。
【００２１】
さらに、タイミングマージンの小さいデータパスに含まれるＦＦ群に、同一のクロックバッファからクロックを供給することで、プロセスばらつきによるタイミングマージンの悪化を抑制できる。そのため、タイミング収束が容易になり、開発期間の短ＴＡＴ（Turn Around Time）化が期待できる。
【００２２】
また、クロックバッファの電気的特性を満たす範囲で、グループ内のＦＦ群の配置位置に近いＦＦもグループ内に含ませ、同じクロックバッファで動作できるようにしたので、クロックバッファをクロックツリー上で最適に配置することが可能となり、さらに半導体装置の回路面積の増加を抑えられる。
【００２３】
（第２の実施の形態）
以下、半導体装置の設計方法をより詳細に説明する。
図３は、本実施の形態の半導体装置の設計方法を実行する設計装置（コンピュータ）のハードウェア例を示す図である。
【００２４】
コンピュータ３０は、プロセッサ３１によって装置全体が制御されている。プロセッサ３１には、バス３９を介してＲＡＭ（Random Access Memory）３２と複数の周辺機器が接続されている。プロセッサ３１は、マルチプロセッサであってもよい。プロセッサ３１は、たとえばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。またプロセッサ３１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００２５】
ＲＡＭ３２は、コンピュータ３０の主記憶装置として使用される。ＲＡＭ３２には、プロセッサ３１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ３２には、プロセッサ３１による処理に必要な各種データが格納される。
【００２６】
バス３９に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）３３、グラフィック処理装置３４、入力インタフェース３５、光学ドライブ装置３６、機器接続インタフェース３７及びネットワークインタフェース３８がある。
【００２７】
ＨＤＤ３３は、内蔵したディスクに対して、磁気的にデータの書き込み及び読み出しを行う。ＨＤＤ３３は、コンピュータ３０の補助記憶装置として使用される。ＨＤＤ３３には、ＯＳのプログラム、アプリケーションプログラム、及び各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【００２８】
グラフィック処理装置３４には、モニタ３４ａが接続されている。グラフィック処理装置３４は、プロセッサ３１からの命令に従って、画像をモニタ３４ａの画面に表示させる。モニタ３４ａとしては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００２９】
入力インタフェース３５には、キーボード３５ａとマウス３５ｂとが接続されている。入力インタフェース３５は、キーボード３５ａやマウス３５ｂから送られてくる信号をプロセッサ３１に送信する。なお、マウス３５ｂは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３０】
光学ドライブ装置３６は、レーザ光などを利用して、光ディスク３６ａに記録されたデータの読み取りを行う。光ディスク３６ａは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク３６ａには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００３１】
機器接続インタフェース３７は、コンピュータ３０に周辺機器を接続するための通信インタフェースである。たとえば機器接続インタフェース３７には、メモリ装置３７ａやメモリリーダライタ３７ｂを接続することができる。メモリ装置３７ａは、機器接続インタフェース３７との通信機能を搭載した記録媒体である。メモリリーダライタ３７ｂは、メモリカード３７ｃへのデータの書き込み、またはメモリカード３７ｃからのデータの読み出しを行う装置である。メモリカード３７ｃは、カード型の記録媒体である。
【００３２】
ネットワークインタフェース３８は、ネットワーク３８ａに接続されている。ネットワークインタフェース３８は、ネットワーク３８ａを介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００３３】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。なお、第１の実施の形態に示した設計装置２０（図２参照）も、図３に示したコンピュータ３０と同様のハードウェアにより実現することができる。
【００３４】
コンピュータ３０は、たとえばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。コンピュータ３０に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。たとえば、コンピュータ３０に実行させるプログラムをＨＤＤ３３に格納しておくことができる。プロセッサ３１は、ＨＤＤ３３内のプログラムの少なくとも一部をＲＡＭ３２にロードし、プログラムを実行する。またコンピュータ３０に実行させるプログラムを、光ディスク３６ａ、メモリ装置３７ａ、メモリカード３７ｃなどの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、たとえばプロセッサ３１からの制御により、ＨＤＤ３３にインストールされた後、実行可能となる。またプロセッサ３１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００３５】
図４は、第２の実施の形態の半導体装置の設計方法におけるクロックツリーの生成処理の一例の流れを示すフローチャートである。
以下に示す各ステップは、たとえば、図３に示したコンピュータ３０において、プロセッサ３１が、ＨＤＤ３３内に格納されている半導体装置の設計プログラムを読み出して実行することによって行われる。
【００３６】
ステップＳ１０の処理では、半導体装置に含まれる複数のＦＦ対によるデータパスのタイミング解析が行われる。
図５は、タイミング解析対象の回路例を説明する図である。図５には、ＦＦ４０，４１，４２，４３，４４，４５、組み合わせ回路４６，４７が示されている。各ＦＦ４０〜４５のクロック端子に接続されるクロック配線については図示が省略されている。
【００３７】
ＦＦ４０，４１の出力端子は、組み合わせ回路４６を介してＦＦ４２の入力端子に接続されている。ＦＦ４２〜４４の出力端子は、組み合わせ回路４７を介して、ＦＦ４５の入力端子に接続されている。図５に示すような回路の場合、たとえば、ＦＦ４０，４２のＦＦ対によるデータパスとＦＦ４１，４２のＦＦ対によるデータパスが解析対象となる。さらに、ＦＦ４２，４５のＦＦ対によるデータパス、ＦＦ４３，４５のＦＦ対によるデータパス、ＦＦ４４，４５のＦＦ対によるデータパスが解析対象となる。
【００３８】
図６は、タイミング解析結果の一例を示す図である。
図６のタイミング解析結果の例には、各データパスのタイミングマージンと、タイミングマージンがないパス（データパス）の順位が示されている。“ｓｔａｒｔ  ＦＦ”は、各データパスのデータの出力側のＦＦを示しており、“ｅｎｄ  ＦＦ”は、各データパスのデータの入力側のＦＦを示している。タイミングマージンとして、セットアップタイミングマージンと、ホールドタイミングマージンの解析結果の例が示されている。
【００３９】
タイミングマージンがないパスの順位とは、本実施の形態の例では、最も小さいセットアップタイミングマージンまたはホールドタイミングマージンの値を有するデータパスを、最も小さい番号の順位、すなわち第１位として示したものである。本実施の形態の例では、セットアップタイミングマージン及びホールドタイミングマージンの値が、両方０ｎｓ以上である場合には、順位付けは行われない。
【００４０】
たとえば、図６の例では、ＦＦ４０，４２のＦＦ対によるデータパスのセットアップタイミングマージンが−５ｎｓで最も小さいため、第１位に順位付けられている。また、ＦＦ４１，４２のＦＦ対によるデータパス及びＦＦ４３，４５のＦＦ対によるデータパスもマイナスのタイミングマージンの値をもつので順位付けが行われている。これに対してプラスのタイミングマージンをもつＦＦ４１，４５のＦＦ対によるデータパスと、ＦＦ４４，４５のＦＦ対によるデータパスについては、順位付けは行われていない。
【００４１】
次に、ステップＳ１１の処理が行われる。
ステップＳ１１の処理では、ＦＦ群によるグループが作成される。ステップＳ１１の処理で作成されるグループを、以下ではＦＦ補助グループと呼ぶ。
【００４２】
ＦＦ補助グループは、タイミングマージンが閾値未満（たとえば、０ｎｓ未満）となる連続するデータパスに含まれるフリップフロップ群によるグループである。
図７は、ＦＦ補助グループの作成例を示す図である。
【００４３】
点線のデータパスは、タイミングマージンが閾値未満となるデータパスであり、実線のデータパスは、タイミングマージンが閾値以上となるデータパスである。各データパスはＦＦ対を含む。
【００４４】
ＦＦ補助グループの作成の際には、図６に示したようなタイミング解析結果が参照される。たとえば、タイミング解析結果に基づき、タイミングマージンがないパスの順位が１位のデータパスと、そのデータパスに接続されるタイミングマージンが閾値未満のデータパスと、に含まれるＦＦ群により１つのＦＦ補助グループが作成される。
【００４５】
図７の例において、たとえば、ＦＦ５０，５１のＦＦ対によるデータパスの上記の順位が第１位であるとする。その場合、ＦＦ５０，５１のＦＦ対によるデータパスと、そのデータパスに接続されるタイミングマージンが閾値未満となるデータパスに含まれるＦＦ群により、１つのＦＦ補助グループＧｓ１が作成される。図７の例では、ＦＦ補助グループＧｓ１には、ＦＦ５０，５１，５２，５３，５４，５５，５６，５７，５８，５９，６０，６１，６２，６３，６４，６５，６６が含まれる。
【００４６】
以下の説明では、まずＦＦ補助グループは１つ作成されるものとするが、ステップＳ１１の処理で、複数のＦＦ補助グループを作成してもよい。その場合、ＦＦ補助グループＧｓ１に含まれないＦＦ対によるデータパスのうちで、最も順位の高いデータパスに接続されるタイミングマージンが閾値未満となるデータパスに含まれるＦＦ群により、ＦＦ補助グループが作成される。たとえば、ＦＦ６７，６８，６９，７０，７１によりＦＦ補助グループＧｓ２が作成され、ＦＦ７２，７３によりＦＦ補助グループＧｓ３が作成される。
【００４７】
次に、ステップＳ１２の処理が行われる。
ステップＳ１２の処理では、ＦＦ補助グループＧｓ２に含まれるＦＦ群のうちで、クロックバッファの電気的特性を満たす範囲のＦＦ群によりグループが作成される。ステップＳ１２の処理で作成されるグループを、以下では第１次ＦＦグループと呼ぶ。
【００４８】
たとえば、適用するクロックバッファの電気的特性が、ＦＦを８つまで駆動できるものである場合には、第１次ＦＦグループに含まれるＦＦの最大数は８となる。
図８は、第１次ＦＦグループの作成例を示す図である。
【００４９】
図８の例では、適用するクロックバッファの電気的特性が、ＦＦを８つまで駆動できるものであるとしている。ＦＦ補助グループＧｓ１には、１７個のＦＦが含まれるため、クロックバッファの電気的特性を満たさない。たとえば、ＦＦ５０，５１のＦＦ対によるデータパスの上記順位が第１位である場合、このデータパスに接続されるＦＦ補助グループＧｓ１内のＦＦ群のうち、ＦＦ５２〜５７までがＦＦ５０，５１とグループ化されて第１次ＦＦグループＧ１が作成される。
【００５０】
なお、第１次ＦＦグループの作成の際には、ＦＦの配置位置の情報も参照され、配置位置が離れているＦＦについては、別の第１次ＦＦグループにグループ化される。たとえば、ＦＦ補助グループＧｓ１内のＦＦ５８〜６０と、ＦＦ６１〜６６は、配置位置が離れているため別の第１次ＦＦグループＧ２，Ｇ３にグループ化される。ＦＦの配置位置の情報は、半導体装置の設計工程において、ＦＦの配置位置が決定したときに取得され、たとえば、ＨＤＤ３３などに記憶されている。
【００５１】
図８の例では、ＦＦ補助グループＧｓ２，Ｇｓ３内のＦＦ６７〜７３に関しても同様にグループ化が行われ、第１次ＦＦグループＧ４，Ｇ５が作成されている。
ステップＳ１３の処理では、タイミングマージンが閾値未満のデータパスに含まれる全ＦＦが第１次ＦＦグループ内に含まれているか否かが判定される。タイミングマージンが閾値未満のデータパスに含まれる全ＦＦが第１次ＦＦグループ内に含まれていない場合には、ステップＳ１２の処理が繰り返される。タイミングマージンが閾値未満のデータパスに含まれる全ＦＦが第１次ＦＦグループ内に含まれている場合には、ステップＳ１４の処理が行われる。
【００５２】
ステップＳ１４の処理では、マージ処理が行われる。ステップＳ１４の処理では、まず、クロックバッファの電気的特性を満たせる範囲で、第１次ＦＦグループのマージが行われる。
【００５３】
図９は、第１次ＦＦグループのマージの一例を示す図である。
図８に示した第１次ＦＦグループＧ４は、ＦＦ６７〜７１を含み、第１次ＦＦグループＧ５は、ＦＦ７２，７３を含み、合計７つであるので、１つのクロックバッファで駆動できる。そのため、第１次ＦＦグループＧ４，Ｇ５がマージされて新たな第１次ＦＦグループＧ６が作成される。なお、グループ化の際には各第１次ＦＦグループに含まれるＦＦの配置情報も考慮され、第１次ＦＦグループ間の距離が離れている場合には、マージされない。たとえば、ある第１次ＦＦグループと他の第１次ＦＦグループ内で、最も離れているＦＦ間の距離が所定値を超える場合には、それらの第１次ＦＦグループのマージは行われない。
【００５４】
次に、タイミングマージンが閾値以上のデータパスのＦＦについても、クロックバッファの電気的特性を満たせる範囲で、第１次ＦＦグループにマージされる。
図１０は、タイミングマージンが閾値以上のデータパスのＦＦがマージされる例を示す図である。
【００５５】
ＦＦ５９，７４、ＦＦ７４，７５、ＦＦ６０，７６、ＦＦ７６，７７、ＦＦ７６，７８、ＦＦ７９，８０、ＦＦ５５，８０、ＦＦ８０，８１、ＦＦ８１，８２のＦＦ対によるデータパスは、いずれもタイミングマージンが閾値以上である。
【００５６】
ＦＦ５９，６０は、図９に示したように、すでに第１次ＦＦグループＧ２に含まれている。第１次ＦＦグループＧ２に含まれているＦＦ数は３つであり、８つのＦＦを駆動できるクロックバッファを用いた場合、あと５つ第１次ＦＦグループＧ２に含ませることができる。そこで、ＦＦの配置情報も考慮され、第１次ＦＦグループＧ２に含まれるＦＦ５８〜６０と配置位置が近いＦＦ７４〜７８についても、第１次ＦＦグループＧ２に含ませた、新たな第１次ＦＦグループＧ７が作成される。
【００５７】
図９に示したように、第１次ＦＦグループＧ３に含まれているＦＦ数は６つであり、８つのＦＦを駆動できるクロックバッファを用いた場合、あと２つ第１次ＦＦグループＧ３に含ませることができる。そこで、ＦＦの配置情報も考慮され、第１次ＦＦグループＧ３に含まれるＦＦ６１〜６６と配置位置が近いＦＦ７９についても、第１次ＦＦグループＧ３に含ませた、新たな第１次ＦＦグループＧ８が作成される。ＦＦ８０〜８２については、たとえば、ＦＦ６４からの距離が所定値以上であるため、第１次ＦＦグループＧ８には含まれていない。
【００５８】
ＦＦ６９，７３は、図９に示したように、すでに第１次ＦＦグループＧ６に含まれている。第１次ＦＦグループＧ６に含まれているＦＦ数は７つであり、８つのＦＦを駆動できるクロックバッファを用いた場合、あと１つ第１次ＦＦグループＧ６に含ませることができる。そこで、ＦＦの配置情報も考慮され、図１０に示されているように、ＦＦ８３についても、第１次ＦＦグループＧ６に含ませた、新たな第１次ＦＦグループＧ９が作成される。
【００５９】
その後、ステップＳ１５の処理が行われる。ステップＳ１５の処理では、クロックバッファの配置が行われる。ここで配置されるクロックバッファのことを、以下では第１次ＦＦグループバッファという。
【００６０】
ステップＳ１５の処理では、第１次ＦＦグループに含まれなかった、タイミングマージンが閾値以上のデータパスに含まれるＦＦ群についても、クロックバッファの電気的特性を満たす範囲でグループ化された第１次ＦＦグループが生成される。そして、たとえば、各第１次ＦＦグループに含まれるＦＦ群の重心の位置に、第１次ＦＦグループバッファが配置される。
【００６１】
図１１は、第１次ＦＦグループバッファの配置例を示す図である。
図１１の第１次ＦＦグループＧ１０，Ｇ１１，Ｇ１２は、これまでの処理では第１次ＦＦグループに含まれなかった、タイミングマージンが閾値以上のデータパスに含まれるＦＦ群を、クロックバッファの電気的特性を満たす範囲でグループ化したものである。
【００６２】
第１次ＦＦグループＧ１，Ｇ７，Ｇ８，Ｇ９，Ｇ１０，Ｇ１１，Ｇ１２ごとに、グループバッファＢｆ１，Ｂｆ２，Ｂｆ３，Ｂｆ４，Ｂｆ５，Ｂｆ６，Ｂｆ７が配置される。グループバッファＢｆ１〜Ｂｆ７は、各第１次ＦＦグループのＦＦ群の重心に配置されることにより、各グループバッファＢｆ１〜Ｂｆ７が駆動する第１次ＦＦグループ内の各ＦＦに均等に負荷がかかる。
【００６３】
その後、ステップＳ１６の処理が行われる。ステップＳ１６の処理では、全ＦＦが第１次ＦＦグループ内に含まれたか否かが判定される。全ＦＦが第１次ＦＦグループ内に含まれていない場合には、ステップＳ１１からの処理が繰り返される。全ＦＦが第１次ＦＦグループ内に含まれている場合には、ステップＳ１７の処理が行われる。
【００６４】
ステップＳ１７以降の処理では、ＦＦではなく、グループバッファのグループ化が高次の階層に向かって（クロックの供給源に向かって）行われていき、クロックツリーが生成されていく。
【００６５】
ステップＳ１７の処理では、第Ｎ−１次ＦＦグループ間のタイミング解析が行われる。ステップＳ１６の処理が終了した直後では、Ｎ＝２である。そのため、まずは、第１次ＦＦグループ間のタイミング解析が行われる。
【００６６】
たとえば、図１１に示したような各第１次ＦＦグループＧ１，Ｇ７〜Ｇ１２間のタイミング解析が行われる。たとえば、第１次ＦＦグループＧ１と第１次ＦＦグループＧ７間のタイミング解析では、ＦＦ５４，５８のＦＦ対によるデータパスのタイミング解析が行われる。また、第Ｎ次ＦＦグループ間のタイミングマージンは、グループ間で最もタイミングマージンがないパスのマージンである（後述の図１４参照）。なお、第１次ＦＦグループ間のタイミング解析を行う場合には、ステップＳ１０の処理のタイミング解析の結果を用いてもよい。
【００６７】
その後、ステップＳ１８の処理が行われる。ステップＳ１８の処理では、第Ｎ次ＦＦグループの作成が行われる。第Ｎ次ＦＦグループの作成にあたって、まず、ステップＳ１７の処理で得られたタイミング解析結果をもとに、最もタイミングマージンが小さい第Ｎ−１次ＦＦグループ間が検出される。そしてその２つの第Ｎ−１次ＦＦグループのＦＦ群を駆動する第Ｎ−１次のグループバッファ対が選択され、そのグループバッファ対を含む第Ｎ次ＦＦグループが作成される。
【００６８】
たとえば、図１１に示した第１次ＦＦグループＧ１と第１次ＦＦグループＧ７間のタイミングマージンが最も小さい場合には、第１次のグループバッファＢｆ１，Ｂｆ２が選択され、グループバッファＢｆ１，Ｂｆ２を含む第２次ＦＦグループが作成される。
【００６９】
次にステップＳ１９の処理が行われる。ステップＳ１９の処理では、タイミングマージンが閾値未満の第Ｎ−１次ＦＦグループ間のＦＦを駆動する第Ｎ−１次ＦＦグループバッファが、全て第Ｎ次ＦＦグループ内に含まれたか判定される。なお、図４では略してタイミングマージンが閾値未満の第Ｎ−１次ＦＦグループバッファと表記している。
【００７０】
タイミングマージンが閾値未満の第Ｎ−１次ＦＦグループ間のＦＦを駆動する第Ｎ−１次ＦＦグループバッファが、全て第Ｎ次ＦＦグループ内に含まれていない場合には、ステップＳ１８の処理が繰り返される。
【００７１】
たとえば、ある２つの第Ｎ−１次ＦＦグループの間が最もタイミングマージンが小さく、２つの第Ｎ−１次ＦＦグループの少なくとも一方と他の第Ｎ−１次ＦＦグループが接続されている場合を考える。以下ではその２つの第Ｎ−１次ＦＦグループを、ＦＦグループＡ，Ｂ、上記他の第Ｎ−１次ＦＦグループをＦＦグループＣとし、ＦＦグループＡ，Ｃが接続されているとする。ここで、ＦＦグループＡ，Ｃ間のタイミングマージンが閾値未満である場合、ＦＦグループＣのＦＦ群を駆動する第Ｎ−１次ＦＦグループバッファについても、ＦＦグループＡ，Ｂを駆動する第Ｎ−１次ＦＦグループバッファと同じ第Ｎ次ＦＦグループ内に含まれる。さらに、ＦＦグループＣに接続される第Ｎ−１次ＦＦグループのＦＦグループＤがあり、ＦＦグループＤには、第Ｎ−１次ＦＦグループのＦＦグループＥが接続されているとする。ここで、ＦＦグループＣ，Ｄ間のタイミングマージンが閾値以上であり、ＦＦグループＤ，Ｅ間のタイミングマージンが閾値未満であるとする。この場合、ＦＦグループＤ，ＥのＦＦ群を駆動する第Ｎ−１次ＦＦグループバッファは、ＦＦグループＡ〜ＣのＦＦ群を駆動する第Ｎ−１次ＦＦグループバッファとは、別の第Ｎ次ＦＦグループ内に入るように、新たな第Ｎ次ＦＦグループが作成される。
【００７２】
タイミングマージンが閾値未満の第Ｎ−１次ＦＦグループ間のＦＦを駆動する第Ｎ−１次ＦＦグループバッファが、全て第Ｎ次ＦＦグループ内に含まれている場合には、ステップＳ２０の処理が行われる。
【００７３】
ステップＳ２０の処理では、マージ処理が行われる。ここでのマージ処理は、第Ｎ次ＦＦグループに含まれなかった第Ｎ−１次ＦＦグループバッファを、配置情報に基づき、第Ｎ次ＦＦグループバッファの電気的特性を満たす範囲で、近くの第Ｎ次ＦＦグループに含ませる。これにより、タイミングマージンが閾値以上であったＦＦグループ間における、各ＦＦグループを駆動する第Ｎ−１次ＦＦグループバッファについても、第Ｎ次ＦＦグループバッファの電気的特性を満たす範囲で、近くの第Ｎ次ＦＦグループに含まれるようになる。
【００７４】
また、配置情報に基づき、第Ｎ次ＦＦグループバッファの電気的特性を満たす範囲で、近くの第Ｎ次ＦＦグループ同士をマージするようにしてもよい。
その後、ステップＳ２１の処理が行われる。
【００７５】
ステップＳ２１の処理では、第Ｎ次ＦＦグループバッファが、第Ｎ次ＦＦグループ内の第Ｎ−１次ＦＦグループバッファの重心に配置される。
次に、ステップＳ２２の処理が行われ、全てのＮ−１次ＦＦグループバッファが第Ｎ次ＦＦグループ内に含まれているか否かが判定される。全てのＮ−１次ＦＦグループバッファが第Ｎ次ＦＦグループ内に含まれていない場合には、ステップＳ１８からの処理が繰り返される。全てのＮ−１次ＦＦグループバッファが第Ｎ次ＦＦグループ内に含まれている場合には、ステップＳ２３の処理が行われる。
【００７６】
ステップＳ２３の処理では、複数の第Ｎ−１次ＦＦグループバッファに対して、電気的特性を満たせる位置に第Ｎ次ＦＦグループバッファが配置されているか否かが判定される。複数の第Ｎ−１次ＦＦグループバッファに対して、電気的特性を満たせる位置に第Ｎ次ＦＦグループバッファが配置されている場合には、Ｎ＝Ｎ＋１としてステップＳ１７からの処理が繰り返される。階層が多くなり、複数の第Ｎ−１次ＦＦグループバッファに対して、電気的特性を満たせる位置に第Ｎ次ＦＦグループバッファが配置されていないと判定された場合には、ステップＳ２４の処理が行われる。
【００７７】
ステップＳ２３までの処理で、作成されるＮ次のＦＦグループツリーの例を示す。
図１２は、Ｎ次のＦＦグループツリーの一例を示す図である。
図１２では、Ｎ＝３次までのＦＦグループツリーの一例が示されている。たとえば、第１次ＦＦグループバッファＢｆ１１が、９つのＦＦを駆動できる場合、第１次ＦＦグループＧ１１には、９つのＦＦ９０，９１，９２，９３，９４，９５，９６，９７，９８を含めることができる。第１次ＦＦグループＧ１２にも同様にＦＦ９９，１００，１０１，１０２が含まれている。なお、各ＦＦ９０〜１０２の出力端子は、たとえば、組み合わせ回路１１０，１１１，１１２，１１３，１１４，１１５，１１６，１１７，１１８，１１９，１２０を介して、他のＦＦの入力端子に接続されている。
【００７８】
第１次ＦＦグループバッファＢｆ１１は、第１次ＦＦグループＧ１１のＦＦ９０〜９８のクロック端子に接続されている。第１次ＦＦグループバッファＢｆ１２は、第１次ＦＦグループＧ１２のＦＦ９９〜１０２のクロック端子に接続されている。
【００７９】
図１２の例では、第１次ＦＦグループバッファＢｆ１１，Ｂｆ１２は、同じ第２次ＦＦグループに含まれるため、同じ第２次ＦＦグループバッファＢｆ２１からクロック信号が供給される。すなわち、第１次ＦＦグループバッファＢｆ１１，Ｂｆ１２の入力端子は、第２次ＦＦグループバッファＢｆ２１の出力端子に接続されている。第２次ＦＦグループバッファＢｆ２２は、図示しない他の第１次ＦＦグループバッファにクロック信号を供給する。
【００８０】
また、図１２の例では、第２次ＦＦグループバッファＢｆ２１，Ｂｆ２２は、同じ第３次ＦＦグループに含まれるため、同じ第３次ＦＦグループバッファＢｆ３１からクロック信号が供給される。すなわち、第２次ＦＦグループバッファＢｆ２−１，Ｂｆ２−２の入力端子は、第３次ＦＦグループバッファＢｆ３１の出力端子に接続されている。第３次ＦＦグループバッファＢｆ３２は、図示しない他の第２次ＦＦグループバッファにクロック信号を供給する。
【００８１】
続いてステップＳ２４の処理について説明する。
ステップＳ２４の処理では、各第Ｎ次ＦＦグループ間タイミングマージンとＦＦまでの遅延情報の登録が行われる。
【００８２】
図１３は、第Ｎ次ＦＦグループ間の接続例を示す図である。
図１３では、４つの第Ｎ次ＦＦグループＧｎ１，Ｇｎ２，Ｇｎ３，Ｇｎ４の接続例が示されている。第Ｎ次ＦＦグループＧｎ１は、第Ｎ−１次ＦＦグループバッファＢｆｎ−１１，Ｂｆｎ−１２，Ｂｆｎ−１３，Ｂｆｎ−１４，Ｂｆｎ−１５，Ｂｆｎ−１６，Ｂｆｎ−１７を含み、第Ｎ次ＦＦグループバッファＢｆｎ１で駆動される。第Ｎ次ＦＦグループＧｎ２は、第Ｎ−１次ＦＦグループバッファＢｆｎ−２１，Ｂｆｎ−２２，Ｂｆｎ−２３，Ｂｆｎ−２４，Ｂｆｎ−２５，Ｂｆｎ−２６を含み、第Ｎ次ＦＦグループバッファＢｆｎ２で駆動される。第ｎ次ＦＦグループＧｎ３は、第Ｎ−１次ＦＦグループバッファＢｆｎ−３１，Ｂｆｎ−３２，Ｂｆｎ−３３，Ｂｆｎ−３４，Ｂｆｎ−３５，Ｂｆｎ−３６を含み、第Ｎ次ＦＦグループバッファＢｆｎ３で駆動される。第Ｎ次ＦＦグループＧｎ４は、第Ｎ−１次ＦＦグループバッファＢｆｎ−４１，Ｂｆｎ−４２，Ｂｆｎ−４３，Ｂｆｎ−４４を含み、第Ｎ次ＦＦグループバッファＢｆｎ４で駆動される。
【００８３】
矢印Ａ１は、第Ｎ次ＦＦグループＧｎ１から第Ｎ次ＦＦグループＧｎ２へデータが伝達されることを示している。矢印Ａ２は、第Ｎ次ＦＦグループＧｎ４から第Ｎ次ＦＦグループＧｎ２へデータが伝達されることを示している。矢印Ａ３は、第Ｎ次ＦＦグループＧｎ４から第Ｎ次ＦＦグループＧｎ３へデータが伝達されることを示している。
【００８４】
ステップＳ２４の処理では、タイミング解析の結果に基づいて、このような関係の第Ｎ次ＦＦグループＧｎ１〜Ｇｎ４間のタイミングマージンとＦＦまでの遅延情報の登録が行われる。
【００８５】
図１４は、各第Ｎ次ＦＦグループ間タイミングマージンとＦＦまでの遅延情報の一例を示す図である。
スタートグループは、データの送り元の第Ｎ次ＦＦグループであり、エンドグループは、データの送り先の第Ｎ次ＦＦグループである。図１４では、第Ｎ次ＦＦグループＧｎ１〜Ｇｎ４が、番号１〜４で示されている。図１４の例では、遅延情報として、各第Ｎ次ＦＦグループＧｎ１〜Ｇｎ４ごとに、第Ｎ次ＦＦグループバッファＢｆｎ１〜Ｂｆｎ４から、各第Ｎ次ＦＦグループＧｎ１〜Ｇｎ４内のＦＦまでの最大遅延値が登録されている。
【００８６】
また、スタートグループと、エンドグループ間のセットアップタイミングマージンとホールドタイミングマージンが登録されている。
続いて、ステップＳ２５の処理が行われる。ステップＳ２５の処理では、Ｈツリー型のクロックツリーが生成され、クロックツリーの生成処理が終了する。
【００８７】
たとえば、図１３に示されているように、クロックバッファＢｆｈ１，Ｂｆｈ２，Ｂｆｈ３，Ｂｆｈ４が第Ｎ＋１次のクロックバッファとして設けられる。クロックバッファＢｆｈ１は、第Ｎ次ＦＦグループバッファＢｆｎ１，Ｂｆｎ２の中間に設けられ、これらにクロック信号を供給する。クロックバッファＢｆｈ３は、第Ｎ次ＦＦグループバッファＢｆｎ３，Ｂｆｎ４の中間に設けられ、これらにクロック信号を供給する。クロックバッファＢｆｈ２は、クロックバッファＢｆｈ１，Ｂｆｈ３の中間に設けられ、クロックバッファＢｆｈ３から出力されるクロック信号を、クロックバッファＢｆｈ１に供給する。クロックバッファＢｆｈ４は、クロック信号のソース側から供給されるクロック信号を、クロックバッファＢｆｈ３に供給する。
【００８８】
Ｈツリー型のクロックツリーの生成の際、ステップＳ２４の処理で登録された、各第Ｎ次ＦＦグループ間タイミングマージンとＦＦまでの遅延情報が参照される。たとえば、Ｈツリー型のクロックツリーの生成の際、クロックドメイン内の合計のタイミングマージンが増えるように、タイミングマージンが小さい第Ｎ次ＦＦグループにおいて、タイミングマージンが増えるようなＨツリー型のクロックツリーの生成が行われる。
【００８９】
図１４に示したように、第Ｎ次ＦＦグループＧｎ１から第Ｎ次ＦＦグループＧｎ２へデータを送るときのセットアップタイミングマージンはマイナスの値となり、小さい。また、第Ｎ次ＦＦグループＧｎ４から第Ｎ次ＦＦグループＧｎ２へデータを送るときのセットアップタイミングマージンもマイナスの値となっている。
【００９０】
図１３に示したＨツリー型のクロックツリーでは、クロックツリーの分岐点であるクロックバッファＢｆｈ３から、第Ｎ次ＦＦグループバッファＢｆｎ２までの配線長と、第Ｎ次ＦＦグループバッファＢｆｎ４までの配線長が大きく異なる。配線長が長い方は配線遅延などの製造ばらつきの影響をより多く受け、配線長が短い方は配線遅延などの製造ばらつきの影響が、配線長が長い方より小さい。この違いにより、第Ｎ次ＦＦグループＧｎ４から第Ｎ次ＦＦグループＧｎ２へのデータの送信の際のセットアップタイミングマージンが更に悪化する懸念がある。
【００９１】
そこで、図１３に示したような４つの第Ｎ次ＦＦグループＧｎ１〜Ｇｎ４において、図１４に示したような各第Ｎ次ＦＦグループ間タイミングマージンが得られた場合、たとえば、以下のようなＨツリー型のクロックツリーが生成される。
【００９２】
図１５は、生成されるＨツリー型のクロックツリーの一例を示す図である。
図１５に示されているＨツリー型のクロックツリーの例では、クロックバッファＢｆｈ５は、第Ｎ次ＦＦグループバッファＢｆｎ１，Ｂｆｎ３の中間に設けられており、これらにクロック信号を供給する。また、クロックバッファＢｆｈ６は、第Ｎ次ＦＦグループバッファＢｆｎ２，Ｂｆｎ４の中間に設けられており、これらにクロック信号を供給する。また、クロックバッファＢｆｈ７は、クロックバッファＢｆｈ５，Ｂｆｈ６の中間に設けられており、これらにクロック信号を供給する。また、クロックバッファＢｆｈ８は、クロック信号のソース側から供給されるクロック信号を、クロックバッファＢｆｈ７に供給する。
【００９３】
このような、クロックツリーでは、クロックツリーの分岐点であるクロックバッファＢｆｈ７から第Ｎ次ＦＦグループバッファＢｆｎ２，Ｂｆｎ４までの配線長がほぼ等しくなる。また、クロックバッファＢｆｈ７から第Ｎ次ＦＦグループバッファＢｆｎ１，Ｂｆｎ２までの配線長も、同程度にすることができる。そのため、タイミングマージンの悪化を抑制することができる。
【００９４】
なお、上記のようにＨツリー型に配置されるクロックバッファは、さらに上位の階層においてＨツリー型に配置されるクロックバッファに接続されるようにしてもよい。
図１６は、Ｈツリー型に配置されるクロックバッファを含むクロックツリーの一例を示す図である。
【００９５】
図１２に示した要素と同じものについては同一符号が付されている。
クロックバッファＢｆｈ１１，Ｂｆｈ１２，Ｂｆｈ２１，Ｂｆｈ２２，Ｂｆｈ３１は、Ｈツリー型に配置されるクロックバッファである。クロックバッファＢｆｈ１１は、第３次ＦＦグループバッファＢｆ３１にクロック信号を供給する。クロックバッファＢｆｈ１２は、図示しない他の第３次ＦＦグループバッファにクロック信号を供給する。クロックバッファＢｆｈ２１は、クロックバッファＢｆｈ１１，Ｂｆｈ１２にクロック信号を供給する。クロックバッファＢｆｈ２２は、クロックバッファＢｆｈ１１，Ｂｆｈ１２と同じ階層の、図示しない他のクロックバッファにクロック信号を供給する。クロックバッファＢｆｈ３１は、クロックバッファＢｆｈ２１，Ｂｆｈ２２にクロック信号を供給する。
【００９６】
クロックバッファＢｆｈ３１には、クロック信号生成部（たとえば、ＰＬＬ（Phase Looked Loop）回路からクロック信号が供給される。
なお、上記のクロックツリーの例では、Ｈツリー型に配置されるクロックバッファについても３階層にしているが、さらに多階層にしてもよい。
【００９７】
以上のようにクロックツリーを生成する半導体装置の設計方法によれば、タイミングマージンの小さい連続するデータパスに含まれるＦＦ群やクロックバッファを、クロックバッファの電気的特性を満たせる範囲で同じグループにすることができる。そのため、信号接続の多いＦＦと信号接続の少ないＦＦ間に論理接続関係があっても、これらのＦＦのタイミングマージンが閾値以下であれば同一のグループに含ませることができる。これにより、クロックバッファを追加せずに済み、半導体装置の回路面積（チップ面積）の増加を抑制できる。また、クロックバッファを効率よく配置することができ、チップ面積の削減につながる。また、クロックバッファを追加せずに済むことから、消費電力も抑えられる。
【００９８】
また、タイミングマージンの小さいデータパスに含まれるＦＦ群や、タイミングマージンの小さいＦＦグループ間に含まれるＦＦ群を駆動するクロックバッファ群に、同一のクロックバッファからクロックを供給することで、プロセスばらつきによるタイミングマージンの悪化を抑制できる。そのため、タイミング収束が容易になり、開発期間の短ＴＡＴ化が期待できる。また、タイミングマージンが増えるため、データパスの駆動能力を上げられ、高速にデータを送受信できるようになる。
【００９９】
さらに、クロックバッファの電気的特性を満たす範囲で、グループ内のＦＦ群やクロックバッファの配置位置に近いＦＦやクロックバッファもグループ内に含ませ、同じクロックバッファで動作できるようにした。これにより、クロックバッファをクロックツリー上で効率よく、最適に配置することが可能となり、さらに半導体装置の回路面積の増加を抑えられる。
【０１００】
以上、実施の形態に基づき、本発明の半導体装置の設計方法、プログラム及び設計装置の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【０１０１】
以上説明した複数の実施の形態に関し、さらに以下の付記を開示する。
（付記１）半導体装置に含まれる複数のフリップフロップによるデータパスのタイミングマージンを解析し、
前記タイミングマージンが閾値より小さい値を有するデータパスが連続するデータパスに含まれるフリップフロップ群を、同一のクロックバッファで駆動される複数のフリップフロップのグループとして、前記クロックバッファの電気的特性を満たす範囲でグループ化する、
ことを特徴とする半導体装置の設計方法。
【０１０２】
（付記２）前記半導体装置に含まれる前記複数のフリップフロップの配置情報に基づき、前記グループ化された前記フリップフロップ群の位置と配置位置が近いフリップフロップを、前記電気的特性を満たす範囲で前記グループに含ませることを特徴とする付記１に記載の半導体装置の設計方法。
【０１０３】
（付記３）前記タイミングマージンの解析結果に基づき、前記タイミングマージンが前記閾値より小さい第１のデータパスと、前記第１のデータパスから連続する前記タイミングマージンが前記閾値より小さいデータパスと、に含まれるフリップフロップ群による第１のグループを生成し、
前記第１のグループに含まれるフリップフロップ群から、前記クロックバッファの電気的特性を満たす範囲で、前記クロックバッファにより駆動される第２のグループを生成する、
ことを特徴とする付記１または２に記載の半導体装置の設計方法。
【０１０４】
（付記４）前記第１のグループとは異なる他の第１のグループに含まれるフリップフロップを、前記電気的特性を満たす範囲で、前記第２のグループに含ませることを特徴とする付記３に記載の半導体装置の設計方法。
【０１０５】
（付記５）前記タイミングマージンが前記閾値以上のデータパスに含まれるフリップフロップを、前記電気的特性を満たす範囲で、前記第２のグループに含ませることを特徴とする付記３または４に記載の半導体装置の設計方法。
【０１０６】
（付記６）階層的に複数配置されるクロックバッファのうち、第１の階層の複数のクロックバッファによって駆動される複数の前記グループの間のタイミングマージンを解析し、
前記タイミングマージンが閾値より小さい値を有するグループのそれぞれを駆動する前記第１の階層の複数のクロックバッファを、同一の第２の階層のクロックバッファで駆動される複数のクロックバッファのグループとして、前記第２の階層のクロックバッファの電気的特性を満たす範囲でグループ化する、
ことを特徴とする付記１または２に記載の半導体装置の設計方法。
【０１０７】
（付記７）第Ｎ（Ｎは２以上の自然数）の階層の１つのクロックバッファで駆動される第Ｎ−１の階層のクロックバッファによるグループに、前記第Ｎの階層のクロックバッファの電気的特性を満たす範囲で、前記Ｎ−１の階層の他のクロックバッファを含ませることを特徴とする付記６に記載の半導体装置の設計方法。
【０１０８】
（付記８）前記第Ｎの階層の複数のクロックバッファを駆動する、第Ｎ＋１の階層の複数のクロックバッファを、前記グループ間のタイミングマージンの解析結果に基づいたＨツリー型に配置する、ことを特徴とする付記７に記載の半導体装置の設計方法。
【０１０９】
（付記９）半導体装置に含まれる複数のフリップフロップによるデータパスのタイミングマージンを解析し、
前記タイミングマージンが閾値より小さい値を有するデータパスが連続するデータパスに含まれるフリップフロップ群を、同一のクロックバッファで駆動される複数のフリップフロップのグループとして、前記クロックバッファの電気的特性を満たす範囲でグループ化する、
処理をコンピュータに実行させるプログラム。
【０１１０】
（付記１０）半導体装置の設計処理を行う演算処理部を有し、
前記演算処理部は、
前記半導体装置に含まれる複数のフリップフロップによるデータパスのタイミングマージンを解析し、
前記タイミングマージンが閾値より小さい値を有するデータパスが連続するデータパスに含まれるフリップフロップ群を、同一のクロックバッファで駆動される複数のフリップフロップのグループとして、前記クロックバッファの電気的特性を満たす範囲でグループ化する、
ことを特徴とする設計装置。
【符号の説明】
【０１１１】
１〜１６  ＦＦ（フリップフロップ）
Ｂｆａ，Ｂｆｂ  クロックバッファ
グループ  Ｇａ，Ｇｂ
２０  設計装置
２１  演算処理部
２２  記憶部
【図１】
2014235642.tif 000003
【図２】
2014235642.tif 000004
【図３】
2014235642.tif 000005
【図４】
2014235642.tif 000006
【図５】
2014235642.tif 000007
【図６】
2014235642.tif 000008
【図７】
2014235642.tif 000009
【図８】
2014235642.tif 000010
【図９】
2014235642.tif 000011
【図１０】
2014235642.tif 000012
【図１１】
2014235642.tif 000013
【図１２】
2014235642.tif 000014
【図１３】
2014235642.tif 000015
【図１４】
2014235642.tif 000016
【図１５】
2014235642.tif 000017
【図１６】
2014235642.tif 000018