説明

半導体集積回路設計方法

【課題】LSIに搭載された複数のマクロ間のクロックスキューを低減する設計方法を提案する。
【解決手段】本発明の半導体集積回路設計方法は、複数の下層回路を含む集積回路の回路情報に基づいて、下層回路に含まれるフリップフロップにクロックを供給する論理回路の出力をクロックポイントとして抽出し、抽出したクロックポイントを出力とする論理回路の回路構成を認識し、抽出したクロックポイントのうち、第1下層回路からクロックポイントを選択し、第2下層回路からクロックポイントを選択し、それぞれのクロックポイントを出力とする論理回路の回路構成を比較し、比較結果が一致した場合、選択された2つクロックポイントを出力する論理回路の一方を削除すると共に、削除した一方のクロックポイントを他方の論理回路の出力とすることにより、2つのクロックポイントを共通化する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体集積回路の設計方法に関し、特に、クロックを供給する配線(クロックライン)の設計方法に関する。
【背景技術】
【0002】
近年、LSI(Large Scale Integration)には多機能を備えることが要求されており、複数の機能マクロが搭載されている。搭載される複数の機能マクロは、設計期間を短縮するために、個々のマクロ内でタイミング設計が行われる。そして、タイミング設計された機能マクロを、そのまま流用してLSIに搭載することが多い。一般的に、各マクロにクロックを供給するクロック経路に、バッファ等の遅延を挿入することで、最大のクロック遅延に合わせ込むようにすることで、LSIに搭載された複数のマクロ間のクロックスキューを合わせている。
【0003】
しかし、近年のLSI設計の規模拡大により、多数のバッファ挿入によるレイアウトへの影響も大きくなっている。更に、プロセスの微細化に伴って、LSI製造時に生じるマスクパターンと実際の形状のずれなどのプロセスばらつきによる遅延への影響が大きくなっており、クロックスキューを遅延で調整することも難しくなってきている。
よって、複数のマクロを搭載するLSIにおいて、マクロ間のクロックスキュー調整を容易に実現できる技術が求められている。
【0004】
特許文献1には、複数の下位階層マクロが、1つのPLL回路を共用する構成の半導体集積回路の設計方法が開示されている。この特許文献1に開示された回路では、PLL回路を、下位階層マクロ内に組み込むことにより、それぞれの下位階層マクロ内における遅延調整処理を容易化し、かつ、プロセスや配線のばらつきを抑制してクロックスキューの低減を可能としている。
【0005】
図12は、特許文献1に開示された半導体集積回路(LSI)100のブロック図である。半導体集積回路100の周辺部には、I/O回路20が配置されている。また、半導体集積回路100の内部回路領域には、4つの下位階層マクロ1、2、3、4が配置されている。各下位階層マクロ1〜4は、ここでは負荷回路として構成されており、複数のFF(フリップフロップ)回路12を含む構成とされている。
【0006】
各下位階層マクロ1〜4には、下位階層CTS(Clock Tree Synthesis)ルートバッファ7、8、9、10と、適宜数のCTSルートバッファ11が組み込まれている。これらのルートバッファにより、各下位階層マクロ1〜4でのクロック伝播遅延が調整されている。そして、下位階層マクロ1〜4で共用化されるPLL回路5は、下位階層マクロ1〜4のうちいずれかのマクロ(特許文献1の実施形態1では、下位階層マクロ1)に組み込まれている。
【0007】
PLL回路5は、I/O回路20から基準クロックを入力する。PLL回路5は、上位階層14に組み込まれている上位階層CTSルートバッファ6及び配線13を介して、各下位階層マクロ1〜4に出力する。また、PLL回路5のPLLループを構成するために、PLL回路5が組み込まれている下位階層マクロ1内のCTSバッファ11の出力側、換言すればFF回路12の入力端側から、PLL回路5にフィードバック入力されている。すなわち、PLL回路5の出力は、上位階層CTSルートバッファ6、下位階層マクロ1内のCTSルートバッファ7、同マクロ内のCTSバッファ11を介してPLL回路5にフィードバック入力され、これによってPLLループが構成されている。
【0008】
このような構成の回路では、回路設計が階層的に行われる。すなわち、回路を上位階層、下位階層に分割し、それぞれの階層内で閉じた形で設計が行われる。したがって、クロック伝播遅延の調整工程についても、上位階層での調整工程と、下位階層での調整工程に分けて行われる。
【0009】
図12に示されるような回路の設計では、下位階層マクロ1〜4内でバッファ挿入、配線長の調整等の処理を行ない、下位階層CTSルートバッファ7〜10からFF回路12までのクロック伝播遅延を合わせ、その遅延値を抽出する。すなわち、まず、下位階層マクロ1において、下位階層CTSルートバッファ7からFF回路12(ここではPLL回路5であってもよい)までの間の配線15上に、適宜の個数のCTSバッファ11を挿入し、あるいは配線長15の調整によりクロック伝播遅延を合わせる。
【0010】
そして、このクロック伝播遅延の調整後に、下位階層CTSルートバッファ7からFF回路12までのクロック伝播遅延値を抽出する。同様に、他の下位階層マクロ2〜4内においても、下位階層CTSルートバッファ8〜10から各下位階層内のFF回路12までの配線15におけるクロック伝播遅延を合わせ、その遅延値を抽出する。これにより、4つの下位階層マクロ1〜4は、全て下位階層CTSルート7〜10からFF回路12までのクロック伝播遅延が一致するように調整される。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特開2002−23886号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
しかしながら、特許文献1に開示された半導体集積回路の設計方法は、下位階層の末端のフリップフロップまでのクロックスキューを低減するものではあるが、複数の同一構成のマクロを搭載する半導体集積回路を設計対象としており、必ずしもスキューを十分に低減することはできない。すなわち、実際には、LSIに搭載するマクロは、同一又は類似の回路構成を有しているとは限らない。そのため、特許文献1に開示された技術では、プロセスばらつきなどによってクロックスキューが大きくなる可能性が高くなるという問題点を有する。
【0013】
図13は、特許文献1に開示された技術の問題点を説明するために今回作成された図である。具体的には、図13に示された回路は、図12の下位階層マクロ3及び下位階層マクロ4に相当する下位階層マクロ33及び下位階層マクロ34を備えている。ここで、図13の下位階層マクロ33では、図12のCTSルートバッファ9が分周回路201に置き換えられている。なお、その他の構成については、図12の下位階層マクロ3の構成とほぼ同じである。
【0014】
一方、図13の下位階層マクロ34は、図12のCTSルートバッファ9が分周回路201に置き換えられ、更にフリップフロップ12の数が増えている。下位階層マクロ33及び下位階層マクロ34には、従来技術を用いた遅延調整が実施されており、増加したフリップフロップ12の数にともない、遅延調整を行うCTSバッファ11の数も増えている。さらに、図13に示された回路では、下位階層マクロ33のフリップフロップ12(FF1)から下位階層マクロ34のフリップフロップ12(FF2)へパス13を介したデータの受け渡しがあるものとする。
【0015】
このように、下位階層マクロ33と下位階層マクロ34の構成が大きく異なる場合には、それぞれのマクロのフリップフロップ12(FF1)とフリップフロップ12(FF2)のクロックスキューは、図12に比べて大きくなるのは必然である。より具体的には、図12では、下位階層マクロ3と下位階層マクロ4は回路構成が同じなので、クロックスキューもほぼ同じと言えるが、図13においては、下位階層マクロ34は、下位階層マクロ33のほぼ2倍のクロックスキューが発生する。
【0016】
更に、クロックスキューが大きくなることで、プロセスばらつきの影響が大きくなり、Setup、Holdのタイミングウィンドウが狭くなってしまう。そのため、特許文献1に開示された技術では、タイミング収束が難しくなる。
近年の半導体集積回路は、微細化や高速化が進んでおり、上述の影響は更に大きくなってきている。
【0017】
また、このようなクロックスキューの問題は、1つのマクロ内においても発生する。すなわち、1つのマクロ内において、クロックスキューが大きくなれば、プロセスばらつきの影響が大きくなり、Setup、Holdのタイミングウィンドウが狭くなる。
【課題を解決するための手段】
【0018】
本発明に係る半導体集積回路設計方法は、設計対象となる集積回路の回路情報に基づいて、当該集積回路に含まれるフリップフロップにクロックを供給する論理回路の出力をクロックポイントとして抽出し、抽出したクロックポイントを出力とする論理回路の回路構成を認識し、抽出したクロックポイントから2つのクロックポイントを選択し、それぞれのクロックポイントを出力とする論理回路の回路構成を比較し、比較結果が一致した場合、前記選択された2つクロックポイントを出力する論理回路の一方を削除すると共に、削除した一方のクロックポイントを他方の論理回路の出力とすることにより、前記2つのクロックポイントを共通化する、ことを特徴とする。
【0019】
このように、フリップフロップにクロックを供給する論理回路が一致した場合に、論理回路を共通化することにより、フリップフロップ間のクロックスキューを低減する事が可能となり、半導体集積回路の品質を向上させることができる。
【発明の効果】
【0020】
本発明に係る半導体集積回路設計方法によれば、マクロ毎に設けられたフリップフロップ間のクロックスキューを低減することにより、半導体集積回路の品質を向上させることができる。
【図面の簡単な説明】
【0021】
【図1】本発明の実施例1に係る半導体集積回路設計方法の処理手順(アルゴリズム)を示すフローチャートである。
【図2】本発明の実施例1に係る半導体集積回路設計方法の設計対象となる回路(LSI)の一例を示す図であり、本発明の実施例1に係る半導体集積回路設計方法を適用する前の、クロックライン構成を示す図である。
【図3】本発明の実施例1に係る半導体集積回路設計方法を適用した後の、クロックライン構成を示す図である。
【図4】本発明の実施例2の処理手順(アルゴリズム)を示すフローチャートである。
【図5】本発明の実施例2に係る半導体集積回路設計方法を適用する前の、クロックラインの回路図である。
【図6】本発明の実施例2に係る半導体集積回路設計方法を適用した後の、クロックラインの回路図である。
【図7】本発明の実施例3に係る半導体集積回路設計方法の処理手順(アルゴリズム)を示すフローチャートである。
【図8】本発明の実施例3に係る半導体集積回路設計方法を適用した後の、クロックラインの回路図である。
【図9】本発明の実施例4に係る半導体集積回路設計方法の処理手順(アルゴリズム)を示すフローチャートである。
【図10】本発明の実施例4に係る半導体集積回路設計方法を適用した後の、クロックラインの回路図である。
【図11】本発明を実施するためのコンピュータシステム構成の一例を示す図である。
【図12】特許文献1の半導体集積回路(LSI)100のブロック図である。
【図13】特許文献1に開示された技術を用いて遅延調整を実施したクロックラインの回路図である。
【発明を実施するための形態】
【0022】
以下、図面を参照して本発明の最良な実施例について説明する。
実施例1.
【0023】
本発明の実施例1に係る半導体集積回路設計方法は、クロックを供給する配線(クロックライン)の設計方法に関するものであり、例えば、図11に示すコンピュータシステムによって実現することができる。
【0024】
図11は、本発明の実施例による半導体集積回路の設計方法を実施するためのコンピュータシステム構成の一例を示す図である。このコンピュータシステム300は、サーバ301と複数のコンピュータ装置306を備えている。サーバ301とコンピュータ装置306とは、ネットワーク305を介して通信することができる。ネットワーク305は、例えば、移動体通信網や、専用線網や、LAN(Local Area Network)といった有線通信や無線通信を含めた各種のネットワーク、あるいはこれらのネットワークが相互に接続されたネットワークとして構成することができる。
【0025】
サーバ301は、処理部302、記録媒体303、入出力インターフェースである入出力部304を備えている。処理部302は、CPU(Central Processing Unit)によって構成される
【0026】
記録媒体303は、実施例1に係る半導体集積回路設計方法を実現するための実行プログラムや、解析データ、入力情報、対応後の出力情報といったデータを記憶する。記録媒体303は、ハードディスクやRAM(Random Access Memory)、又はROM(Read Only Memory)等の記憶装置で構成することができる。
【0027】
処理部302は、記録媒体303に記憶されたサーバ301の機能を実現するための実行プログラムを読み込んで実行することで、サーバ301の機能を実現する。なお、各実行プログラムやデータは、サーバ301の管理者により、キーボードやマウスや、LCD(Liquid Crystal Display)といった入出力部304を用いて外部から記録媒体303へ記憶される。
【0028】
上述の構成により、サーバ301は、実行プログラムやデータを、ネットワーク305を介してコンピュータ装置306へ提供することが可能である。
【0029】
一方、コンピュータ装置306は、通信部307、記録媒体308、処理部309、入出力インターフェースである入出力部310を備えている。処理部309は、CPUによって構成される。コンピュータ装置306は、実施例1に係る半導体集積回路設計方法を実現するための生成システムを実行する。コンピュータ装置306は、例えば、パーソナルコンピュータのような一般的な汎用コンピュータとして構成することができる。
【0030】
コンピュータ装置306は、通信部307を備え、ネットワーク305を介してサーバ301と通信が可能である。コンピュータ装置306は、ネットワーク305を介してサーバ301へ接続して、実施例1に係る半導体集積回路設計方法を実現するための実行プログラムやデータを取得し、記憶部308へ記憶する。
【0031】
処理部309は、記憶部308に記憶されたコンピュータ装置306の機能を実現するための実行プログラムを読み込んで、実行することによりコンピュータ装置306の機能を実現する。
【0032】
入出力部310は、コンピュータ装置306の使用者の操作を受け付ける入出力インターフェースである。入出力部301は、例えば、キーボードやマウスや、LCD(Liquid Crystal Display)によって構成される。コンピュータ装置306は、上述の構成により、サーバ301から取得された実行プログラムを読み込んで実行し、本実施例1に係る半導体集積回路設計方法を実現する。
【0033】
なお、上記の説明では、本実施例1に係る半導体集積回路設計方法の実行プログラムは、サーバ301の記録媒体303に記憶されているが、本発明は、これに限られるものではない。例えば、実行プログラムは、CD(Compact Disk)やフラッシュメモリを搭載したUSB(Universal Serial Bus)メモリといった持ち運び可能な記憶媒体に記録するように構成してもよい。この場合、実行プログラムは、これらの持ち運び可能な記憶媒体から、コンピュータ装置306の備えるCDドライブや、USBポート等を介して導入すればよい。
【0034】
次に、実施例1に係る半導体集積設計方法について説明する。図1は、本発明の実施例1に係る半導体集積回路設計方法の処理手順を示すフローチャートである。これから説明する各処理ステップは、図11に示すコンピュータシステム300において実施される処理ステップであり、各処理ステップに入力するデータや、出力されるデータ等は記憶媒体303、308に記憶されるものとする。
【0035】
続いて、本発明の実施例1に係る半導体集積回路設計方法の処理手順を説明する前に、本実施例1に係る半導体集積回路設計方法の設計対象となる半導体集積回路について説明する。図2は、実施例1に係る半導体集積回路設計方法の設計対象となる回路(LSI)の一例を示す図である。
【0036】
図2に示すように、このLSIは、LSIに搭載される機能を実現するための複数のマクロM1〜M4を有している。マクロM1〜M3には、メインクロックCLKを、分周回路A201にて2分周したクロックポイントC5より、CTSルートバッファ200を経由してクロックが供給されている。マクロM4には、メインクロックCLKを分周回路B201にて2分周したクロックポイントC6より、CTSルートバッファ200を経由してクロックが供給されている。
【0037】
マクロM1は、分周回路201にて2分周したクロックC1を、CTSバッファ203を経由してフリップフロップ202(FF1)へ供給する。
マクロM2は、マクロ1と同じ構成であり、分周回路201にて2分周したクロックC2を、CTSバッファ203を経由してフリップフロップ202(FF2)へ供給する。
マクロM3は、分周回路205にて4分周したクロックC3を、CTSバッファ203を経由してフリップフロップ202(FF3)へ供給する。
マクロM4は、分周回路201にて2分周したクロックC4を、CTSバッファ203を経由してフリップフロップ202(FF4)へ供給する。
【0038】
また、マクロM1とマクロM2には、データの受け渡しがある。具体的には、マクロM1のクロックポイントC1からクロック供給されるフリップフロック202(FF1)の出力データが、マクロM2のクロックポイントC2からクロック供給されるフリップフロック202(FF2)に入力されている。
【0039】
続いて、本発明の実施例1に係る半導体集積回路設計方法の処理手順を説明する。
(ステップS1):はじめに、設計対象となるLSIの回路情報の読み込み、LSIに含まれる各マクロ内のフリップフロップをすべて認識する。
(ステップS2):ステップS1で読み込んだ回路(図2)のすべてのクロックポイントを抽出する。そして、抽出したクロックポイントを出力とする論理回路の構成を認識する。
【0040】
ここで、クロックポイントとは、フリップフロップに入力するクロックラインに存在するバッファ及びCTSバッファ(インバータ偶数段構成を含む)を除いた全ての論理回路の出力であり、クロックの供給源となる外部からのクロック入力端子、又はクロック生成回路(PLL)等から、フリップフロップのクロック入力端子までの経路に存在するものとする。
【0041】
例えば、図2では、読み込んだ回路に存在する全てのフリップフロップ202のクロック入力の端子を基点にトレースバックを行い、クロックポイントC1〜C6を抽出する。
【0042】
なお、抽出したクロックポイントを出力する論理回路の構成を認識する処理は、各クロック分周回路201のデータ入力、クロック入力、セット・リセット入力の端子を基点にトレースバックすることで認識することができる。
【0043】
(ステップS3):ステップS1で読み込んだ回路(図2)のクロックラインの共通化が可能であるかの判定(共通化判定)を行う。具体的には、ステップS301及びS302の処理を実行する。
【0044】
(ステップS301):ステップS2で抽出したクロックポイントから、共通化判定の対象として2つのクロックポイントを任意に選択する。具体的には、異なるマクロM1〜M4のそれぞれから、クロックポイントを1つずつ選択する。
【0045】
例えば、図2では、クロックポイントC1〜C6が抽出されているが、この中からクロックポイントC1とC2や、クロックポイントC1とC3などのクロックポイントを2つ選択する。
【0046】
(ステップS302):ステップS301にて選択した2つのクロックポイントを出力する論理回路の回路構成を比較する。ここでの回路構成の比較は、ステップS2で認識した回路構成を比較することによって行う。この比較結果によってクロックポイントを共通化できるか否か判定を行う。例えば、論理回路の各入力端子(データ入力、クロック入力、セット・リセット入力など)の全てのトレースバック結果を比較することにより、回路構成を比較する。
【0047】
比較した結果が一致した場合、すなわち、2つのクロックポイントを出力する論理回路が一致した場合は、ステップS4へ遷移する。一方、比較結果が一致していない場合、すなわち、2つのクロックポイントを出力する論理回路が一致していない場合は、ステップS5へ遷移する。
【0048】
例えば、選択した2つのクロックポイントがC1とC2であった場合は、クロックポイントC1を出力する分周回路201と、クロックポイントC2を出力する分周回路201の回路構成を比較し、一致したと判断する。このとき、ステップS2においてそれぞれの分周回路201は、2分周回路であり、且つそれぞれの各入力端子(データ入力、クロック入力、セット・リセット入力など)の全てのトレースバック結果が一致していると判断する。
【0049】
また、例えば、選択した2つのクロックポイントがC1とC3であった場合は、クロックポイントC1を出力する分周回路201と、クロックポイントC3を出力する分周回路205の回路構成を比較し、一致していないと判断する。具体的には、分周回路201は2分周回路であり、分周回路205は4分周回路であるため、両者は一致しないと判断する。
【0050】
また、例えば、選択した2つのクロックポイントがC1とC4であった場合は、クロックポイントC1を出力する分周回路201と、クロックポイントC4を出力する分周回路201の回路構成を比較し、一致していないと判断する。このとき、それぞれの分周回路201は2分周回路であるが、それぞれの各入力端子(データ入力、クロック入力、セット・リセット入力など)の全てのトレースバック結果を比較した際に、クロック入力となる前段のクロックポイントが、それぞれC5とC6であるため、異なると判断する。
【0051】
(ステップS4):ステップS302の比較結果が一致した場合、クロックラインを共通化し、回路情報の修正を実施する。
【0052】
回路情報の修正が終了したら、ステップS1に戻り、この修正した回路情報の再読み込みを行って、ステップS1〜ステップS3までの一連の処理を再実行する。
【0053】
例えば、2つのクロックポイントがC1とC2が選択され、マクロM1の分周回路201と、マクロM2の分周回路201の回路構成を比較し、その結果が一致と判断された場合は、マクロM2の分周回路を削除し、マクロM1の分周回路からマクロM1のフリップフロップ202(FF1)とマクロM2のフリップフロップ201(FF2)の両方へクロックを供給する。
【0054】
このとき、マクロM1及びM2の2つのCTSバッファ203の出力は、クロックポイントとして抽出されておらず、新たなクロックポイントは、共通化された分周回路の出力に配置する。
【0055】
(ステップS5):ステップS302で論理回路の構成を比較した結果が不一致であった場合に、比較しうるクロックポイントが他にあるかの判断を実施する。比較するクロックポイントがある場合は、再度ステップS3の処理に遷移し、ステップS3〜S5を繰り返す。一方、比較するクロックポイントがない場合は、処理を終了する。
【0056】
例えば、ステップS2にて抽出されたクロックポイントC1〜C6の任意の2つを選択する全ての組み合わせにて共通化判定を実施する。
【0057】
図3は、図2の回路に対して上述した半導体集積回路設計方法を適用した結果の回路図である。
マクロM11、M21、M31、M41は、それぞれ図2のマクロM1、M2、M3、M4に相当するものである。
【0058】
マクロM11、M31には、メインクロックCLKを分周回路A201にて2分周し、CTSルートバッファ200を経由したクロックが供給される。
マクロM11は、分周回路201にて2分周したクロックを、CTSバッファ203を経由してフリップフロップ202へ供給する。
マクロM21及びマクロM41は、マクロM11のCTSバッファ203から出力するクロックをフリップフロップ202供給する。
マクロM31は、分周回路205にて4分周したクロックを、CTSバッファ203を経由してフリップフロップ202へ供給する。
【0059】
また、マクロM11とマクロM21にはデータの受け渡しがあり、マクロM11のフリップフロック202(FF1)の出力データがマクロM21のフリップフロック202(FF2)に入力されている。
【0060】
図3に示すように、ステップS201において抽出された図2のクロックポイントC1〜C6に対し、クロックポイントC1とC2が一致、C1(またはC2)とC4が一致、C5とC6が一致したと判断され、それ以外の2つのクロックポイントの組み合わせは全て不一致と判断される。この結果、クロックポイントC1とC2とC4が共通化され、クロックポイントC5とC6が共通化されることで、回路修正が実施されている。
【0061】
次に、本実施例1に係る半導体集積回路設計方法の効果について説明する。上記のように、本発明の実施例1に係る半導体集積回路設計方法は、複数のマクロM1〜M4を含む集積回路の回路情報に基づいて、マクロに含まれるフリップフロップにクロックを供給する論理回路の出力をクロックポイントとして抽出し、抽出したクロックポイントを出力とする論理回路の回路構成を認識する。
【0062】
そして、抽出したクロックポイントのうち、第1下層回路からクロックポイントを選択し、第2下層回路からクロックポイントを選択し、それぞれのクロックポイントを出力とする論理回路の回路構成を比較し、比較結果が一致した場合、選択された2つクロックポイントを出力する論理回路の一方を削除すると共に、削除した一方のクロックポイントを他方の論理回路の出力とし、2つのクロックポイントを共通化する。
【0063】
すなわち、実施例1に係る方法は、LSIに含まれる複数のマクロ1〜4が異なる構成を有していたとしても、また、図2に示すようにマクロM1のフリップフロップ202(FF1)とマクロM2のフリップフロップ202(FF2)にてクロック間のデータの受け渡しのある回路を含んでいる場合であっても、一律に、当該LSIに搭載する全てのクロックラインを対象として共通化できる論理回路を検索する。これにより、従来技術に比べて容易にタイミング調整を行うことができる。具体的には、図3に示すように、クロック分周回路201の出力であるクロックポイントC1、C2、C4を共通化することで、マクロM11とマクロM21とマクロM41のクロックスキューを削減することができる。
【0064】
また、回路の共通化にともなって、マクロM2とマクロM4の分周回路201と、上位階層の分周回路B201が削減されるため、回路規模が削減され、消費電力も削減されるという効果も得ることができる。
実施例2.
【0065】
次に、本発明の実施例2に係る半導体集積回路設計方法について説明する。実施例2は、図1の実施例1のフローチャートのステップS3を、図4のステップS31に置き換えたものである。ステップS31は、ステップS3に対し、ステップS302での共通化判定にて一致していないと判定された後に、一致判定の対象となったクロックポイントに前段のクロックポイントも加えて論理が一致しているか否か判断を行う処理手順(ステップS303、S304)が追加されている。
【0066】
次に、実施例2に係る半導体集積回路設計方法について説明する。実施例2に係る半導体集積回路設計方法のフローチャートを図4に示す。ステップS303〜ステップ304以外の処理ステップは実施例1と同様であるため、その説明を省略する。ここで、実施例2に係る半導体集積回路設計方法について説明する前に、実施例2による設計対象の回路について説明する。
【0067】
図5に示すように、この設計対象となる回路のマクロM5には、メインクロックCLKを分周回路A205にて4分周したクロックポイントC11よりCTSルートバッファ200を経由したクロックが供給されている。また、マクロM6にはメインクロックCLKを分周回路B201にて2分周したクロックポイントC12よりCTSルートバッファ200を経由したクロックが供給されている。
【0068】
マクロM5は、分周回路201にて2分周したクロックを、さらに分周回路201にて2分周し、CTSバッファ203を経由してフリップフロップ202(FF5)へ供給する。
マクロM6は、分周回路205にて4分周したクロックを、さらに分周回路201にて2分周し、CTSバッファ203を経由してフリップフロップ202(FF6)へ供給する。
【0069】
また、マクロM5とマクロM6にはデータの受け渡しがあり、マクロM5のクロックポイントC8からクロック供給されるフリップフロック202(FF5)の出力データが、マクロM6のクロックポイントC10からクロック供給されるフリップフロック202(FF6)に入力されている。
【0070】
続いて、図4を用いて、本発明の実施例2に係る半導体集積回路設計方法について説明する。
(ステップS303):ステップS302で比較した結果が不一致であった場合に、2つのクロックポイントを出力する論理回路から、それぞれの前段のクロックポイントが同じであるか、又は同じクロックの供給元(外部端子やPLLの出力など)であるかを判断する。換言すれば、ステップS302において比較した論理回路の出力であるクロックポイントと、その前段のクロックポイントが同じクロックポイントである、又は、同じ供給元であるかを、2つのクロックポイントのそれぞれにおいて比較する。
【0071】
ステップS303において、前段のクロックポイントと同じクロックポイントである、又は、同じ供給元であると判断された場合はステップS5へ遷移する(S303においてYes)。一方、異なるクロックポイントである、又は、異なる供給元であると判断された場合は(S303においてNo)、ステップS304へ遷移する。
【0072】
例えば、図5では、選択した2つのクロックポイントがC8とC10であった場合は、ステップS302において論理回路が一致していないと判断される(S302で不一致)。
次にステップS303では、クロックポイントC8の前段のクロックポイントはC7であり、クロックポイントC10の前段のクロックポイントはC9であるため、それぞれの前段は異なるクロックポイントであると判断し(S303でNo)、ステップS304へ遷移する。
【0073】
(ステップS304):ステップS302にて比較した論理回路と、前段のクロックポイントを出力する論理回路を、それぞれのクロックライン毎に後段の論理回路に前段の論理回路を含めて論理一致するかの比較と、前段のクロックポイントを出力する論理回路の回路構成の比較を行う。
比較した結果が一致した場合は、ステップS4へ、一致していない場合はステップS303へ戻って、更に前段のクロックポイントに対しステップS303の処理を再実施する。
【0074】
ここで、例えば図5では、ステップS303にて前段が異なるクロックポイントC7とC9と判断されたため、クロックポイントC8を出力とする分周回路201にクロックポイントC7を出力とする分周回路201を含めた論理と、クロックポイントC10を出力とする分周回路201にクロックポイントC9を出力とする分周回路205を含めた論理を比較し、且つこの前段のクロックポイントを出力する2つの論理回路のそれぞれの回路構成を比較し、論理が異なると判断する。
【0075】
よって、ステップS303へ戻る。
(ステップS303(2回目)):上記ステップS304での比較結果が異なると判断されたため、前段のクロックポイントC7とC9のそれぞれの更に前段のクロックポイントが同じであるか、又は同じクロックの供給元(外部端子やPLLの出力など)であるかを判断する。ステップS303において、同じクロックポイントである、又は同じ供給元であると判断されたらステップS5へ遷移し、異なると判断されたら、ステップS304へ遷移する。
【0076】
ここで、例えば図5では、クロックポイントC7の前段のクロックポイントはC11であり、クロックポイントC9の前段のクロックポイントはC12であるため、異なると判断し、ステップS304へ遷移する。
【0077】
(ステップS304(2回目)):上記ステップS303(2回目)で、クロックポイントC7とC9の前段のクロックポイントC11とC12が異なると判断される(S304において不一致)。そのため、ステップS303に遷移する。そして、クロックポイントC8を出力とする分周回路201、クロックポイントC7を出力とする分周回路201、及びクロックポイントC11を出力とする分周回路A205の3つの論理を含めた論理と、クロックポイントC10を出力とする分周回路201、クロックポイントC9を出力とする分周回路205、及びクロックポイントC12を出力とする分周回路B201の3つの論理を含めた論理を比較する。そして、クロックポイントC11を出力する分周回路A205と、クロックポイントC12を出力とする分周回路B201の回路構成を比較し、同じ論理であると判断する。
【0078】
よって、ステップS4に遷移し回路修正を行う。
このとき、実施例2のステップS4で以下のように回路修正を行う。実施例2にて回路修正された結果を図6に示す。図6は、クロックポイントC12、C9、C10のそれぞれを出力とする分周回路を削除し、メインクロックCLKをクロックポイントC11、C7、C8のそれぞれを出力とする分周回路を経由して、フリップフロップ202(FF5)とフリップフロップ202(FF6)へ供給する。
【0079】
すなわち、実施例2は、最初のクロックポイントの比較において論理回路が一致していないと判断されても、その前段のクロックポイントを含めた論理比較を行う事で一致と判断し、共通化判定することができる。また、前段のクロックポイントがなくなるまでこの処理を繰り返す事で、共通化判定できる範囲を広くする事ができる。
【0080】
実施例2では、任意に選択した2つクロックポイントのみで共通化判定を行うのではなく、図4に示すようにステップS303〜ステップS304の処理を追加し、一致しなければこの追加ステップを繰り返す。これにより、それぞれのクロックラインにおいて複数のクロックポイントを用いて共通化判定を行う事が可能となるため、共通化できるクロックポイントを増やす事が可能となり、更にタイミング調整を容易に実施する事ができる。また、共通化するクロックポイントが増える事で、更に回路規模が削減され、消費電力も削減される。
【0081】
実施例3.
次に、本発明の実施例3に係る半導体集積回路設計方法について説明する。図7は、本発明の実施例3に係る半導体集積回路設計方法を示すフローチャートである。なお、ステップS308以外の処理ステップは実施例2と同様であり、説明を省略する。実施例3では、図4の実施例2のフローチャートのステップS31が、図7のステップS32に置き換えられている。ステップS32では、ステップS31に対し、ステップS302もしくはステップS304での共通化判定にて一致したと判定された後に、マクロ間にデータの請け渡しがあるかの判断を行なうステップS308が追加されている。
【0082】
(ステップS308):クロック間のデータの受け渡しがあるかを判断し、Yesの場合のみクロックラインの共通化の回路修正を行う。
すなわち、実施例3では、クロック間のデータの受け渡しがある箇所にのみクロックラインの共通化を実施することになる。
【0083】
ここで、図2に示す回路に対して、実施例3に係る半導体集積回路設計方法を適用した場合の、修正後の回路を図8に示す。
【0084】
図8において、マクロM12にはメインクロックCLKを分周回路A201にて2分周したクロックポイントC5よりCTSルートバッファ200を経由したクロックが供給されており、マクロM12のクロックラインにおいて、分周回路201にて2分周されたクロックがクロックポイントC1より供給されCTSバッファ203を経由し複数のフリップフロック202へ接続されている。
【0085】
マクロM12のCTSリーフポイント204より分岐したクロックがM22のすべてのフリップフロップへ供給されている。マクロM32、M42については図2のマクロM3、M4と同じである。
【0086】
よって、クロック間のデータの受け渡しのないマクロについてはクロックライン共通化の対象外となり、実施対象となる回路の範囲が狭くなるので、実施例2よりも実行時間が短縮されることとなる。
【0087】
また、本実施例3は、実施例2に対してステップS308を追加した手順としているが、実施例1に対してステップS308を追加した場合であっても、同様の効果を得ることができる。
【0088】
実施例4.
実施例4は、図4の実施例2のフローチャートのステップS31を、図9のステップS33に置き換えたものである。ステップS33では、ステップS31に対し、ステップS302での共通化判定にて不一致と判定された場合に、前段のクロックポイントまで含めて論理一致を判定する前に、予め、一致判定を延長する前段の段数を指定しておき、その指定の段数に達したかを判断するステップS309が追加されている。
【0089】
実施例4に係る半導体集積回路設計方法のフローチャートを図9に示す。ステップS309以外の処理ステップは実施例2と同様であるため、その説明を省略する。
(ステップS309):指定の段数に達したかを判断し、Yesの場合はステップS5へ遷移し、Noの場合はステップS303へ遷移して、指定の段数に達するまで一致判定を繰り返す。
【0090】
このように、実施例4では、クロックラインを共通化する段数(範囲)を指定できるように構成されている。ここで、指定段数=1とし、図2に示されるLSIに対して、実施例4に係る設計方法を適用した後の回路を図10に示す。
【0091】
図10において、マクロM13にはメインクロックCLKを分周回路A201にて2分周したクロックポイントC5よりCTSルートバッファ200を経由したクロックが供給されている。また、マクロM13内のクロックラインにおいて、分周回路201にて2分周されたクロックがクロックポイントC1より供給され、CTSバッファ203を経由し複数のフリップフロック202へ接続されている。
【0092】
マクロM13のCTSリーフポイント204より分岐したクロックがM23とマクロM33のすべてのフリップフロップへ供給されている。なお、マクロM43については、図2のマクロM4から回路の変更はない。
【0093】
実施例4は、予めクロック間のデータの受け渡し箇所が明確であり、必要とするクロックライン共通化の箇所や段数が明確である場合に用いることができる。それにより実施例2のステップS303〜S304を繰り返す際に、無駄な判定処理の回数を抑える事ができる。これにより、設計に要する時間を短縮することができる。
【0094】
なお、本発明は上記の実施例に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【0095】
たとえば、上述の実施例は、マクロ間のクロックラインを共通化するよう構成されていたが、マクロ内においても、同様の処理を実施することで、マクロ内のクロックラインを共通化するように構成してもよい。これにより、マクロ内のフリップフロップ間のクロックスキューを低減する事が可能となり、半導体集積回路の品質をさらに向上させることができる。
【0096】
たとえば、本発明は、任意の処理を、CPU(Central Processing Unit)にコンピュータプログラムを実行させることにより実現することも可能である。このプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(random access memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【符号の説明】
【0097】
3、4、M1〜M6、M11〜M13,M21〜M23、M31〜M33、M41〜M43、M51、M61: 下位階層ソフトマクロ
6、200: CTSルートバッファ
11、203: CTSバッファ
12、202: フリップフロップ
13: データパス
201、A201、B201: クロック2分周回路
204: CTSリーフポイント
205、A205: クロック4分周回路
C1〜C12: クロックポイント
300: コンピュータシステム
301: サーバ
302、309: CPU
303、308: 記録媒体
304、310: 入出力インターフェース
305: ネットワーク
306: コンピュータ装置
307: 通信部
308: 記録媒体

【特許請求の範囲】
【請求項1】
複数の下層回路を含む集積回路の回路情報に基づいて、当該下層回路に含まれるフリップフロップにクロックを供給する論理回路の出力をクロックポイントとして抽出する第1工程と、
抽出したクロックポイントを出力とする論理回路の回路構成を認識する第2工程と、
抽出したクロックポイントのうち、第1下層回路からクロックポイントを選択し、第2下層回路からクロックポイントを選択し、それぞれのクロックポイントを出力とする論理回路の回路構成を比較する第3工程と、
比較結果が一致した場合、前記選択された2つクロックポイントを出力する論理回路の一方を削除すると共に、削除した一方のクロックポイントを他方の論理回路の出力とすることにより、前記2つのクロックポイントを共通化する第4工程とを有する、半導体集積回路設計方法。
【請求項2】
前記第4工程においてクロックポイントを共通化した場合は、前記回路情報を変更し、
変更した回路情報を用いて、前記第1工程乃至第4工程を繰り返し行う、請求項1に記載の半導体集積回路設計方法。
【請求項3】
前記第3工程において前記比較結果が不一致である場合は、前記回路情報を変更せず、前記第3工程及び第4工程を繰り返す、請求項1又は2に記載の半導体集積回路設計方法。
【請求項4】
前記第3工程は、前記論理回路のデータ入力、クロック入力、セット・リセット入力の端子のうち少なくとも1つを比較することにより、前記論理回路の回路構成を比較する、請求項1乃至3のうちいずれか1項に記載の半導体集積回路設計方法。
【請求項5】
前記第3工程において前記比較結果が不一致の場合には、前記第3工程において比較された2つのクロックポイントに対し、比較されたクロックポイントと、その前段のクロックポイントの論理が同じであるか否かを比較する第5工程と、
前記第5工程において、比較されたクロックポイントと、その前段のクロックポイントの論理が同じでないと判断した場合、前記第3工程で比較した論理回路と、前段のクロックポイントを出力する論理回路の論理が一致するか比較する第6工程と、
前記第6工程の比較結果が一致した場合は、前記第4工程によって比較結果が一致した2つのクロックポイントを共通化する、請求項1乃至4のうちいずれか1項に記載の半導体集積回路設計方法。
【請求項6】
前記第5工程において、比較されたクロックポイントと、その前段のクロックポイントの論理が同じであると判断した場合、前段に延長するクロックポイントが無くなるまで前記第3工程乃至第6工程を繰り返す、請求項5に記載の半導体集積回路設計方法。
【請求項7】
前記第3工程又は第6工程で前記比較結果が一致した場合に、クロック間にデータの受け渡しがあるかの判断を行う第7工程を有し、
前記第7工程で受け渡しがあると判断した場合、前記第4工程において、クロック間にデータの受け渡しがあると判断された箇所の回路修正を行う請求項1乃至6のうちいずれか1項に記載の半導体集積回路設計方法。
【請求項8】
前記第6工程において論理が一致しないと判断された場合に、予め指定された前段に延長する段数に達するまで、前記第4工程に戻って処理を繰り返す、請求項6に記載の半導体集積回路設計方法。
【請求項9】
前記クロックポイントは、フリップフロップにクロックを供給するクロックライン上にある論理回路のCTSバッファ以外の論理回路の出力である、請求項1乃至8のうちいずれか1項に記載の半導体集積回路設計方法。
【請求項10】
前記第2工程において、前記論理回路の構成の認識は、当該論理回路の論理と、当該論理回路の入力をトレースバックすることにより行う、請求項1乃至9のうちいずれか1項に記載の半導体集積回路設計方法。
【請求項11】
前記第3工程における前記論理回路の比較は、前記第2工程で認識された回路の認識結果を用いる、請求項1乃至10のうちいずれか1項に記載の半導体集積回路設計方法。
【請求項12】
請求項1乃至11のうちいずれか1項に記載の方法を、コンピュータに実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2013−45253(P2013−45253A)
【公開日】平成25年3月4日(2013.3.4)
【国際特許分類】
【出願番号】特願2011−181924(P2011−181924)
【出願日】平成23年8月23日(2011.8.23)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】