(57)【要約】  設計支援装置は、ゲート段数１段の反転論理であるクロックバッファを用いてクロックツリーが構築またはスキューが調整されたレイアウトデータ内から、クロック供給源であるクロック入力端子からのクロック信号を伝播し、当該クロックバッファのみのクロックパス（８０１）を検出し、クロックパス（８０１）に接続されているＦＦ１〜ＦＦ３を順次選択し、クロック供給源から選択されたＦＦの入力元であるクロックバッファまでのゲート段数に基づいて、クロック供給源からのクロック信号を正論理で出力するか反転論理で出力するかを判断し、判断結果に基づいて、選択されたＦＦ１〜ＦＦ３を、クロック信号の立ち上がりエッジでデータを取り込むＦＦか、立ち下がりエッジでデータを取り込むＦＦかに置換する。
2010140216.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータ保持素子と、クロック供給源からのクロック信号を前記複数のデータ保持素子へ伝播するクロックパスと、を備える半導体集積回路を設計する設計支援方法であって、
コンピュータが、
前記半導体集積回路のレイアウトデータ内から、前記クロック信号を伝播し、クロックバッファがゲート段数１段の反転論理であるクロックパスを検出する検出工程、
前記検出工程により検出されたクロックパスに接続されているデータ保持素子を順次選択する選択工程、
前記選択工程によりデータ保持素子が選択される都度、前記データ保持素子の入力元であるクロックバッファを特定する特定工程、
前記クロック供給源から前記特定工程により特定されたクロックバッファまでのゲート段数に基づいて、前記クロックバッファが前記クロック供給源からの前記クロック信号を正論理で出力するか、反転論理で出力するかを判断する判断工程、
前記判断工程により判断された判断結果に基づいて、前記データ保持素子を、前記クロック信号の立ち上がりエッジに同期してデータを取り込む第１のデータ保持素子、または前記クロック信号の立ち下がりエッジに同期してデータを取り込む第２のデータ保持素子に置換する置換工程、
前記置換工程により置換された置換結果を出力する出力工程、
を実行することを特徴とする設計支援方法。
【請求項２】
前記判断工程は、
前記ゲート段数が、偶数段の場合、前記特定工程により特定されたクロックバッファが前記クロック信号を正論理で出力すると判断し、奇数段の場合、反転論理で出力すると判断し、
前記置換工程は、
前記判断工程により正論理で出力すると判断された場合、前記データ保持素子を前記第１のデータ保持素子に置換し、反転論理で出力すると判断された場合、前記第２のデータ保持素子に置換することを特徴とする請求項１に記載の設計支援方法。
【請求項３】
前記コンピュータが、
ゲート段数１段の反転論理であるクロックバッファのみを用いて指定されたクロックパスにクロックツリーを構築することによりレイアウトデータを生成する生成工程、を実行し、
前記検出工程は、
前記生成工程により生成されたレイアウトデータ内から、クロック供給源からのクロック信号を伝播し、クロックバッファがゲート段数１段の反転論理であるクロックパスを検出することを特徴とする請求項２に記載の設計支援方法。
【請求項４】
前記生成工程は、
ゲート段数１段の反転論理であるクロックバッファのみを用いて指定されたクロックパスのスキューを調整することによりレイアウトデータを生成し、
前記検出工程は、
前記生成工程により生成されたレイアウトデータ内から、クロック供給源からのクロック信号を伝播し、クロックバッファがゲート段数１段の反転論理であるクロックパスを検出することを特徴とする請求項３に記載の設計支援方法。
【請求項５】
前記判断工程は、
クロックの起点として指定された箇所が前記クロック供給源からのクロック信号を正論理で出力する場合、前記クロックの起点から前記クロックバッファまでのゲート段数が、偶数段の場合、前記クロックバッファが前記クロック信号を正論理で出力すると判断し、奇数段の場合、反転論理で出力すると判断し、
前記置換工程は、
前記判断工程により正論理で出力すると判断された場合、前記データ保持素子を前記第１のデータ保持素子に置換し、反転論理で出力すると判断された場合、前記第２のデータ保持素子に置換することを特徴とする請求項４に記載の設計支援方法。
【請求項６】
前記判断工程は、
クロックの起点として指定された箇所が前記クロック供給源からのクロック信号を反転論理で伝播している場合、前記クロックの起点から前記クロックバッファまでのゲート段数が、偶数段の場合、前記クロックバッファが前記クロック信号を反転論理で出力すると判断し、奇数段の場合、正論理で出力すると判断し、
前記置換工程は、
前記判断工程により正論理で出力すると判断された場合、前記データ保持素子を前記第１のデータ保持素子に置換し、反転論理で出力すると判断された場合、前記第２のデータ保持素子に置換することを特徴とする請求項５に記載の設計支援方法。
【請求項７】
レイアウトデータ内から、クロック供給源からのクロック信号を伝播し、クロックバッファがゲート段数１段の反転論理であるクロックパスを検出する検出手段と、
前記検出手段により検出されたクロックパスに接続されているデータ保持素子を順次選択する選択手段と、
前記選択手段によりデータ保持素子が選択される都度、前記データ保持素子の入力元であるクロックバッファを特定する特定手段と、
前記クロック供給源から前記特定手段により特定されたクロックバッファまでのゲート段数に基づいて、前記クロックバッファが前記クロック供給源からの前記クロック信号を正論理で出力するか、反転論理で出力するかを判断する判断手段と、
前記判断手段により判断された判断結果に基づいて、前記データ保持素子を、前記クロック信号の立ち上がりエッジに同期してデータを取り込む第１のデータ保持素子、または前記クロック信号の立ち下がりエッジに同期してデータを取り込む第２のデータ保持素子に置換する置換手段と、
前記置換手段により置換された置換結果を出力する出力手段と、
を備えることを特徴とする設計支援装置。
【請求項８】
複数のデータ保持素子と、クロック供給源からのクロック信号を前記複数のデータ保持素子へ伝播するクロックパスと、を備える半導体集積回路を設計する設計支援プログラムであって、
コンピュータを、
レイアウトデータ内から、クロック供給源からのクロック信号を伝播し、クロックバッファがゲート段数１段の反転論理であるクロックパスを検出する検出手段、
前記検出手段により検出されたクロックパスに接続されているデータ保持素子を順次選択する選択手段、
前記選択手段によりデータ保持素子が選択される都度、前記データ保持素子の入力元であるクロックバッファを特定する特定手段、
前記クロック供給源から前記特定手段により特定されたクロックバッファまでのゲート段数に基づいて、前記クロックバッファが前記クロック供給源からの前記クロック信号を正論理で出力するか、反転論理で出力するかを判断する判断手段、
前記判断手段により判断された判断結果に基づいて、前記データ保持素子を、前記クロック信号の立ち上がりエッジに同期してデータを取り込む第１のデータ保持素子、または前記クロック信号の立ち下がりエッジに同期してデータを取り込む第２のデータ保持素子に置換する置換手段、
前記置換手段により置換された置換結果を出力する出力手段、
として機能させることを特徴とする設計支援プログラム。
【請求項９】
クロック供給源からのクロック信号を伝播する半導体集積回路内の少なくとも一部のクロックパスと、
前記クロックパスに接続されているデータ保持素子群と、
前記データ保持素子群の各データ保持素子へ前記クロック信号を出力するゲート段数１段の反転論理であるクロックバッファと、
を備えることを特徴とする半導体集積回路。
【請求項１０】
前記データ保持素子は、
前記クロック供給源から当該データ保持素子の入力元であるクロックバッファまでのゲート段数が、偶数段の場合、前記クロック信号の立ち上がりエッジに同期してデータを取り込み、奇数段の場合、前記クロック信号の立ち下がりエッジに同期してデータを取り込むことを特徴とする請求項９に記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レイアウトデータの設計を支援する設計支援方法、設計支援装置、設計支援プログラム、および半導体集積回路に関する。
【背景技術】
【０００２】
従来、半導体集積回路の消費電力を低減させる技術として、動作に必要ではない回路へのクロック信号または電源電圧の供給を止めるクロックゲーティングやパワーゲーティング（以下、「第１の従来技術」と称す。）が知られている。さらに、半導体集積回路の消費電力を低減させる技術として、低電圧化や多電源化（以下、「第２の従来技術」と称す。）が知られている。【０００３】
また、従来、クロックスキューの低減およびノイズを減少させる技術として、クロック信号の立ち上がりエッジに同期してデータを取り込むデータ保持素子（以下、「第１のＦＦ（Ｆｌｉｐ  Ｆｌｏｐ）」と称す。）やクロック信号の立ち下がりエッジに同期してデータを取り込むデータ保持素子（以下、「第２のＦＦ」と称す。）を用いること（以下、第３の従来技術と称す。）が知られている（たとえば、下記特許文献１〜３を参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−２９５６２号公報
【特許文献２】特開２００３−３４７４０４号公報
【特許文献３】特開２００７−１１０４０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、第１の従来技術では、クロックパスを常時動作させる必要がある回路では適用することが出来ないという問題点があった。また、第２の従来技術では、クロックパスを常に高速で動作させる場合、電源電圧を下げるために半導体集積回路内の動作が遅くなるため、電源電圧を下げることができないという問題点があった。【０００６】
また、第３の従来技術では、ゲート段数が複数段であるクロックバッファを用いて第１のＦＦおよび第２のＦＦに入力されるクロック信号を伝播している。そのため、正論理が必要な場合、必ずゲート段数２段、もしくはゲート段数２段以上の偶数段の正論理であるクロックバッファが挿入されるため、クロックパス上のゲート段数が増大してしまう問題点があった。
【課題を解決するための手段】
【０００７】
上述した課題を解決するため、本発明の一観点によれば、レイアウトデータ内から、クロック供給源からのクロック信号を伝播し、クロックバッファがゲート段数１段の反転論理であるクロックパスを検出する検出手段と、前記検出手段により検出されたクロックパスに接続されているデータ保持素子を順次選択する選択手段と、前記選択手段によりデータ保持素子が選択される都度、前記データ保持素子の入力元であるクロックバッファを特定する特定手段と、前記クロック供給源から前記特定手段により特定されたクロックバッファまでのゲート段数に基づいて前記クロックバッファが前記クロック供給源からの前記クロック信号を正論理で出力するか、反転論理で出力するかを判断する判断手段と、前記判断手段により判断された判断結果に基づいて、前記データ保持素子を、前記クロック信号の立ち上がりに同期してデータを取り込む第１のデータ保持素子、または前記クロック信号の立ち下がりエッジに同期してデータを取り込む第２のデータ保持素子に置換する置換手段と、前記置換手段により置換された置換結果を出力する出力手段と、を備える設計支援方法が提供される。
【発明の効果】
【０００８】
本設計支援方法、設計支援装置、設計支援プログラム、および半導体集積回路によればゲート段数１段のクロックバッファを用いて、クロックパス上のゲート段数を容易に最適化して低消費電力化を図ることができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１にかかる半導体集積回路の一例を示す説明図である。
【図２−１】第１のＦＦの一例を示す説明図である。
【図２−２】第２のＦＦの一例を示す説明図である。
【図３】クロックバッファの例を示す説明図である。
【図４】設計対象のレイアウトデータを示す説明図である。
【図５】実施の形態２にかかる設計支援装置のハードウェア構成例を示すブロック図である。
【図６】実施の形態２にかかる設計支援装置の機能的構成例を示すブロック図である。
【図７】レイアウトデータ４００内のＦＦが置換されて出力された例を示す説明図である。
【図８】スキューを調整済のレイアウトデータを示す説明図である。
【図９】レイアウトデータ８００内のＦＦが置換されて出力された例を示す説明図である。
【図１０】実施の形態２にかかる設計支援装置６００の設計支援処理手順を示すフローチャートである。
【図１１】図１０に示した置換処理（ステップＳ１００３／Ｓ１００６）の詳細な処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、本発明の実施の形態による設計支援方法、設計支援装置、設計支援プログラム、および半導体集積回路について説明する。
【００１１】
本発明の実施形態では、クロック供給源からのクロック信号を伝播するクロックパスに接続されているデータ保持素子の入力元であるクロックバッファが、ゲート段数１段の反転論理により構成されている。なお、本実施の形態ではデータ保持素子としてＦＦを用いて説明する。そして、各ＦＦは、クロック供給源から当該ＦＦの入力元であるクロックバッファまでのゲート段数が偶数段であれば、上述した第１のＦＦであり、奇数段であれば、上述した第２のＦＦである。
【００１２】
まず、実施の形態１では、ゲート段数１段のクロックバッファによりゲート段数が最適化されたクロックパスを有する半導体集積回路について説明する。つぎに、実施の形態２では、上述したクロックパスに接続されているＦＦを、第１のＦＦまたは第２のＦＦに置換する設計支援装置について説明する。まず、図１にて実施の形態１の概要を示す。
【００１３】
（実施の形態１）
図１は、実施の形態１にかかる半導体集積回路の一例を示す説明図である。半導体集積回路１００は、クロック入力端子から入力されるクロック信号を伝播するクロックパス１０１と、クロックパス１０１に接続されているＦＦ１〜ＦＦ３と、ゲート段数１段であり、クロックパス１０１上のＢＵＦ１〜ＢＵＦ５により構成されている。実施の形態１では、クロック入力端子をクロック供給源として説明するが、クロック信号を生成するクロック生成回路などがクロック供給源であってもよい。
【００１４】
ＢＵＦ１〜ＢＵＦ５は、ゲート段数１段の反転論理であるクロックバッファである。半導体集積回路１００では、ＦＦ１〜３の入力元であるクロックバッファがクロック入力端子からのクロック信号を正論理で出力するか否かに応じて、各ＦＦが、クロック信号の立ち上がりエッジに同期してデータを取り込むか、立ち下がりエッジに同期してデータを取り込む。
【００１５】
まず、ＦＦ１を例に挙げると、クロック入力端子からＦＦ１の入力元であるＢＵＦ３までのゲート段数は３段である。したがって、ＦＦ１は、第２のＦＦである。つぎに、ＦＦ２を例に挙げると、クロック入力端子からＦＦ２の入力元であるＢＵＦ４までのゲート段数は４段である。したがって、ＦＦ２は、第１のＦＦである。
【００１６】
最後に、ＦＦ３を例に挙げると、クロック入力端子からＦＦ３の入力元であるＢＵＦ５までのゲート段数は５段である。したがって、ＦＦ３は、第２のＦＦである。これにより、ゲート段数１段のクロックバッファによりクロックパスが構成されることで、最小限のゲート段数でクロックパスが構成される。したがって、半導体集積回路の低消費電力化を図ることができる。
【００１７】
（実施の形態２）
つぎに、実施の形態２では、クロックバッファがゲート段数１段であるクロックパスに接続されているＦＦを、ＦＦの入力元であるクロックバッファがクロック供給源からのクロック信号を正論理で出力するか否かにより第１のＦＦまたは第２のＦＦに置換する。これにより、クロックパス上のゲート段数を可能な限り削減し、低消費電力化を図ることができる。まず、図２−１および図２−２により第１のＦＦおよび第２のＦＦの一例を示す。
【００１８】
図２−１は、第１のＦＦの一例を示す説明図である。＜レイアウトデータ＞では、第１のＦＦ２０１のレイアウトデータを示している。第１のＦＦ２０１は、クロック信号の立ち上がりエッジに同期してデータを取り込むＦＦの一例である。第１のＦＦ２０１は、レイアウトデータであるが、理解の容易化のために回路図で示されている。
【００１９】
第１のＦＦ２０１では、ＣＫに入力されるクロック信号の立ち上がりエッジに同期してＤに入力されるデータを内部に取り込み、Ｑから出力する。＜シンボル＞では、第１のＦＦ２０１のシンボルを示している。後述する半導体集積回路のレイアウトデータ内では、第１のＦＦ２０１をシンボルで表記する。なお、第１のＦＦ２０１は、ライブラリ内に記述され、記憶装置またはアクセス可能な外部のコンピュータの記憶装置に記憶されている。つぎに、図２−２にて第２のＦＦを示す。
【００２０】
図２−２は、第２のＦＦの一例を示す説明図である。＜レイアウトデータ＞では、第２のＦＦ２０２のレイアウトデータを示している。第２のＦＦ２０２は、クロック信号の立ち下がりエッジに同期してデータを取り込むＦＦの一例である。第２のＦＦ２０２は、レイアウトデータであるが、理解の容易化のために回路図で示されている。
【００２１】
第２のＦＦ２０２では、／ＣＫに入力されるクロック信号の立ち下がりエッジに同期してＤに入力されるデータを内部に取り込み、Ｑから出力する。＜シンボル＞では、第２のＦＦ２０２のシンボルを示している。後述する半導体集積回路のレイアウトデータ内では、第２のＦＦ２０２をシンボルで表記する。なお、第２のＦＦ２０２は、ライブラリ内に記述され、記憶装置またはアクセス可能な外部のコンピュータの記憶装置に記憶されている。つぎに、図３にてクロックバッファの例を示す。
【００２２】
図３は、クロックバッファの例を示す説明図である。クロックバッファ３０１は、ゲート段数１段により構成されている。クロックバッファ３０１は、反転論理である。つぎに、クロックバッファ３０２は、ゲート段数２段により構成されている。クロックバッファ３０２は、正論理である。そして、クロックバッファ３０３は、ゲート段数３段により構成されている。クロックバッファ３０３は、反転論理である。
【００２３】
従来では、反転論理が必要な場合、クロックバッファ３０３が利用されていたが、本実施の形態では、クロックバッファ３０１が利用される。したがって、本実施の形態では、クロックバッファ３０１によりクロックツリーが構築またはスキューが調整される。
【００２４】
（設計対象のレイアウトデータ）
図４は、設計対象のレイアウトデータを示す説明図である。レイアウトデータ４００は、クロック入力端子へ入力されるクロック信号を伝播するクロックパス４０１と、クロックパス４０１に接続されているＦＦ１〜ＦＦ３と、組み合わせ回路と、クロックバッファ３０１であるＢＵＦ１〜ＢＵＦ４を含む構成である。
【００２５】
レイアウトデータ４００は、理解の容易化のために回路図で示されているが、実際には、物理情報である。たとえば、ＦＦ１〜ＦＦ３、およびＢＵＦ１〜ＢＵＦ４は、インスタンス名であり、各ＦＦを特定するための名前である。そして、物理情報では、配置位置を示す座標と、セル同士の接続関係と、各セルを構成する層情報と、配線幅などの情報を有している。たとえば、ＦＦ１が第１のＦＦ２０１に置換されることは、実際には、物理情報内のＦＦ１のセル名が書き換えられていることを示す。
【００２６】
まず、レイアウトデータ４００では、ＦＦ１〜ＦＦ３が、第１のＦＦ２０１である。実際には、ＦＦ１〜ＦＦ３は、第１のＦＦ２０１および第２のＦＦ２０２のいずれのＦＦであってもよい。または、たとえば、ＦＦ１〜ＦＦ３は、第１のＦＦ２０１および第２のＦＦ２０２と同一形状、同一面積であるダミーのＦＦであってもよい。
【００２７】
つぎに、ＢＵＦ１〜ＢＵＦ４は、すべて上述したクロックバッファ３０１である。そして、レイアウトデータ４００では、クロック入力端子をクロック供給源として説明するが、これに限らない。たとえば、クロック信号を生成するクロック生成回路をクロック供給源としてもよい。
【００２８】
本実施の形態２にかかる設計支援装置により、ＦＦ１〜ＦＦ３が、第１のＦＦ２０１、または第２のＦＦ２０２に置換される。なお、レイアウトデータ４００は、記憶装置またはアクセス可能な外部のコンピュータの記憶装置に記憶されている。
【００２９】
（設計支援装置のハードウェア構成）
図５は、実施の形態２にかかる設計支援装置のハードウェア構成例を示すブロック図である。図５において、設計支援装置は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）５０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）５０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）５０３と、磁気ディスクドライブ５０４と、磁気ディスク５０５と、光ディスクドライブ５０６と、光ディスク５０７と、ディスプレイ５０８と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）５０９と、キーボード５１０と、マウス５１１と、スキャナ５１２と、プリンタ５１３と、を備えている。また、各構成部はバス５００によってそれぞれ接続されている。
【００３０】
ここで、ＣＰＵ５０１は、設計支援装置の全体の制御を司る。ＲＯＭ５０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ５０３は、ＣＰＵ５０１のワークエリアとして使用される。磁気ディスクドライブ５０４は、ＣＰＵ５０１の制御にしたがって磁気ディスク５０５に対するデータのリード／ライトを制御する。磁気ディスク５０５は、磁気ディスクドライブ５０４の制御で書き込まれたデータを記憶する。
【００３１】
光ディスクドライブ５０６は、ＣＰＵ５０１の制御にしたがって光ディスク５０７に対するデータのリード／ライトを制御する。光ディスク５０７は、光ディスクドライブ５０６の制御で書き込まれたデータを記憶したり、光ディスク５０７に記憶されたデータをコンピュータに読み取らせたりする。
【００３２】
ディスプレイ５０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ５０８は、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００３３】
Ｉ／Ｆ５０９は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク５１４に接続され、このネットワーク５１４を介して他の装置に接続される。そして、Ｉ／Ｆ５０９は、ネットワーク５１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ５０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００３４】
キーボード５１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス５１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００３５】
スキャナ５１２は、画像を光学的に読み取り、設計支援装置内に画像データを取り込む。なお、スキャナ５１２は、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）機能を持たせてもよい。また、プリンタ５１３は、画像データや文書データを印刷する。プリンタ５１３には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
【００３６】
（設計支援装置の機能的構成）
図６は、実施の形態２にかかる設計支援装置の機能的構成例を示すブロック図である。設計支援装置６００は、生成部６０１と、検出部６０２と、選択部６０３と、特定部６０４と、判断部６０５と、置換部６０６と、出力部６０７と、を含む構成である。設計支援装置６００の制御部となる機能（生成部６０１〜出力部６０７）は、具体的には、たとえば、図５に示したＲＯＭ５０２、ＲＡＭ５０３、磁気ディスク５０５、光ディスク５０７などの記憶装置に記憶されたプログラムをＣＰＵ５０１に実行させることにより、または、Ｉ／Ｆ５０９により、その機能を実現する。
【００３７】
まず、生成部６０１は、少なくとも指定されたクロックパスにゲート段数が１段の反転論理であるクロックバッファのセルを用いてクロックツリーを構築することによりレイアウトデータを生成する機能を有する。
【００３８】
具体的には、たとえば、ＣＰＵ５０１が、指定されたクロックパスがクロックバッファ３０１のみでクロックツリーを構築するように指定し、既存のクロックツリーを構築するツールを実行することでクロックツリー構築後のレイアウトデータを生成する。なお、生成結果は、ＲＡＭ５０３、磁気ディスク５０５、光ディスク５０７などの記憶装置に記憶される。
【００３９】
生成結果が、たとえば、上述したレイアウトデータ４００である。これにより、ゲート段数１段のクロックバッファを用いてクロックツリーを構築することで、クロックパス上のゲート段数が最適化される。したがって、クロックパス上のゲート段数を可能な限り削減し、低消費電力化を図ることができる。
【００４０】
つぎに、検出部６０２は、生成部６０１により生成されたレイアウトデータ内から、クロック供給源からのクロック信号を伝播し、クロックバッファがゲート段数１段の反転論理であるクロックパスを検出する。具体的には、たとえば、ＣＰＵ５０１が、記憶装置にアクセスしてレイアウトデータ４００からクロックバッファ３０１のみを使用しているクロックパスを検出する。また、たとえば、予め利用者により指定されているクロックパスを検出することとしてもよい。
【００４１】
レイアウトデータ４００では、クロックバッファがゲート段数１段の反転論理であるクロックパスとして、クロックパス４０１が検出される。なお、検出結果は、一旦ＲＡＭ５０３、磁気ディスク５０５、光ディスク５０７などの記憶装置に記憶される。
【００４２】
そして、選択部６０３は、検出部６０２により検出されたクロックパスに接続されているＦＦを順次選択する機能を有する。具体的には、たとえば、ＣＰＵ５０１が、レイアウトデータ４００からクロックパス４０１に接続されているＦＦを順次選択する。たとえば、まず、ＦＦ１が選択され、つぎに、ＦＦ２が選択され、最後に、ＦＦ３が選択される。
【００４３】
特定部６０４は、選択部６０３により選択されたＦＦの入力元であるクロックバッファを特定する機能を有する。具体的には、たとえば、クロックパス４０１に接続されているＦＦ１を例に挙げると、ＣＰＵ５０１が、レイアウトデータ４００からＦＦ１のＣＫに接続されているネットを検出する。そして、検出したネットが出力先として接続されているクロックバッファをＦＦ１の入力元として特定する。したがって、ＦＦ１の入力元としてＢＵＦ３が特定される。
【００４４】
判断部６０５は、クロック供給源から特定部６０４により特定されたクロックバッファまでのゲート段数に基づいて、当該クロックバッファがクロック供給源からのクロック信号を正論理で出力するか否かを判断する機能を有する。
【００４５】
具体的には、たとえば、ＣＰＵ５０１が、記憶装置にアクセスしてレイアウトデータ４００を読み出し、クロック入力端子から特定されたクロックバッファまでのゲート段数を検出する。そして、検出されたゲート段数が偶数段の場合、特定されたクロックバッファがクロック信号を正論理で出力すると判断し、奇数段の場合、特定されたクロックバッファがクロック信号を反転論理で出力すると判断する。
【００４６】
レイアウトデータ４００内のＦＦ１の入力元であるＢＵＦ３を例に挙げると、クロック入力端子からＢＵＦ３までのゲート段数は、３段である。したがって、ＢＵＦ３は、クロック入力端子からのクロック信号を反転論理で出力すると判断される。なお、判断結果は、一旦、ＲＡＭ５０３、磁気ディスク５０５、光ディスク５０７などの記憶装置に記憶される。
【００４７】
つぎに、置換部６０６は、判断部６０５により正論理で出力すると判断された場合、選択されたＦＦを第１のＦＦに置換し、反転論理で出力すると判断された場合、第２のＦＦに置換する。
【００４８】
具体的には、たとえば、ＣＰＵ５０１が、記憶装置にアクセスしてレイアウトデータ４００と判断結果を読み出す。そして、判断結果が偶数段の場合、レイアウトデータ４００内の選択されたＦＦを第１のＦＦ２０１に置換し、奇数段の場合、レイアウトデータ４００内の選択されたＦＦを第２のＦＦ２０２に置換する。
【００４９】
レイアウトデータ４００内のＦＦ１を例に挙げると、上述したようにＦＦ１の入力元であるＢＵＦ３は、クロック入力端子からのクロック信号を反転論理で出力すると判断されているため、ＦＦ１は第２のＦＦ２０２に置換される。
【００５０】
つぎに、出力部６０７は、置換部６０６により置換された置換結果を出力する。具体的には、たとえば、ＣＰＵ５０１が、レイアウトデータを出力する。出力形式としては、たとえば、ディスプレイ５０８への表示、プリンタ５１３への印刷出力、Ｉ／Ｆ５０９による外部装置への送信がある。また、ＲＡＭ５０３、磁気ディスク５０５、光ディスク５０７などの記憶領域に記憶することとしてもよい。図５にて出力されたレイアウトデータを示す。
【００５１】
図７は、レイアウトデータ４００内のＦＦが置換されて出力された例を示す説明図である。レイアウトデータ７００は、クロック入力端子からのクロック信号を伝播するクロックパス４０１と、クロックパス４０１に接続されている第２のＦＦ２０２であるＦＦ１およびＦＦ２と、クロックパス４０１に接続されている第１のＦＦ２０１であるＦＦ３と、クロックバッファであるＢＵＦ１〜ＢＵＦ４である。
【００５２】
これにより、ゲート段数が最適化されているクロックパスに接続されているＦＦが、クロック信号の波形に応じた適切なＦＦに自動で置換される。したがって、最小限のゲート段数であるクロックパスを有するレイアウトデータを容易に設計でき、低消費電力化を図ることができる。
【００５３】
また、生成部６０１は、ゲート段数１段の反転論理であるクロックバッファのみを用いて少なくとも指定されたクロックパスのスキューを調整することによりレイアウトデータを生成する機能を有する。具体的には、たとえば、ＣＰＵ５０１が、クロックバッファ３０１のみでスキューを調整するように指定し、既存のスキューを調整するツールを実行することでレイアウトデータ７００からスキューを調整済のレイアウトデータを生成する。なお、生成結果は、ＲＡＭ５０３、磁気ディスク５０５、光ディスク５０７などの記憶装置に記憶される。図８にて生成結果を示す。
【００５４】
図８は、スキューを調整済のレイアウトデータを示す説明図である。レイアウトデータ８００は、ＢＵＦ５とＢＵＦ６を含み、その他はレイアウトデータ７００で示した構成と同一構成である。これにより、ゲート段数１段のクロックバッファを用いてスキューが調整されることで、クロックパス上のゲート段数が最適化される。したがって、クロックパス上のゲート段数を可能な限り削減し、低消費電力化を図ることができる。
【００５５】
図６に戻って、検出部６０２は、生成部６０１により生成されたスキューを調整済のレイアウトデータ８００内から、クロック供給源からのクロック信号を伝播し、クロックバッファがゲート段数１段の反転論理であるクロックパスを検出する。具体的には、たとえば、ＣＰＵ５０１が、記憶装置にアクセスしてレイアウトデータ８００からクロックバッファ３０１のみを使用しているクロックパスを検出する。また、たとえば、利用者により予め指定されているクロックパスを検出することとしてもよい。
【００５６】
レイアウトデータ８００では、クロックバッファがゲート段数１段の反転論理であるクロックパスとして、クロックパス８０１が検出される。なお、検出結果は、一旦ＲＡＭ５０３、磁気ディスク５０５、光ディスク５０７などの記憶装置に記憶される。
【００５７】
つぎに、再度、上述した選択部６０３〜出力部６０７の機能により、レイアウトデータ８００内のクロックパス８０１に接続されているＦＦが、第１のＦＦ２０１または第２のＦＦ２０２に置換される。図９にて置換結果を示す。
【００５８】
図９は、レイアウトデータ８００内のＦＦが置換されて出力された例を示す説明図である。レイアウトデータ９００は、クロック入力端子からＦＦ２の入力元であるＢＵＦ５までのゲート段数が、４段である。そのため、ＦＦ２が第１のＦＦ２０１に置換されている。なお、その他の構成は、レイアウトデータ８００と同一構成である。これにより、スキューを調整済のレイアウトデータであってもＦＦを容易に置換することができ、クロックパス上のゲート段数を最小限に抑え低消費電力化を図ることができる。
【００５９】
実施の形態２では、クロック供給源からＦＦの入力元であるクロックバッファまでのゲート段数に基づいて、各ＦＦが第１のＦＦ２０１または第２のＦＦ２０２に決定されている。さらに、たとえば、利用者が指定した箇所からＦＦの入力元であるクロックバッファまでのゲート段数に基づいて、各ＦＦが第１のＦＦ２０１または第２のＦＦ２０２に決定されることとしてもよい。ここで、特製されたクロックバッファがクロック供給源からのクロック信号を反転論理で出力するか正論理で出力かを判断するために利用者が指定した箇所をクロックの起点とする。そして、クロックの起点は、クロック供給源からのクロック信号を正論理で出力するか反転論理で出力するかがあらかじめ決定していることとして説明する。
【００６０】
まず、クロック供給源からのクロック信号を正論理で伝播している箇所が利用者によりクロック起点として指定された場合の判断部６０５の機能について説明する。判断部６０５は、クロックの起点から特定されたクロックバッファまでのゲート段数が偶数段のときにクロック供給源からのクロック信号を正論理で出力すると判断する。そして、判断部６０５は、指定された箇所から特定されたクロックバッファまでのゲート段数が奇数段のときにクロック供給源からのクロック信号を反転論理で出力すると判断する。なお、ゲート段数の検出については、上述した判断部６０５の処理と同一処理であるため詳細な説明を省略する。
【００６１】
つぎに、クロック供給源からのクロック信号を反転論理で伝播している箇所が利用者によりクロック起点として指定された場合の判断部６０５の機能について説明する。判断部６０５は、クロックの起点から特定されたクロックバッファまでのゲート段数が奇数段のときにクロック供給源からのクロック信号を正論理で出力すると判断する。そして、判断部６０５は、指定された箇所から特定されたクロックバッファまでのゲート段数が偶数段のときにクロック供給源からのクロック信号を反転論理で出力すると判断する。なお、ゲート段数の検出については、上述した判断部６０５の処理と同一処理であるため詳細な説明を省略する。
【００６２】
（設計支援装置６００の設計支援処理手順）
図１０は、実施の形態２にかかる設計支援装置６００の設計支援処理手順を示すフローチャートである。まず、レイアウトデータを取得する（ステップＳ１００１）。ここで取得されるレイアウトデータは、初期配置済のレイアウトデータである。つぎに、生成部６０１により、取得されたレイアウトデータにクロックツリーを構築する（ステップＳ１００２）。上述したレイアウトデータ４００が、クロックツリーが構築されたレイアウトデータの例である。
【００６３】
つづいて、検出部６０２〜置換部６０６により、置換処理を実行し（ステップＳ１００３）、出力部６０７により、置換結果を出力する（ステップＳ１００４）。たとえば、上述したレイアウトデータ７００が、置換結果である。そして、生成部６０１により、クロックスキューを調整する（ステップＳ１００５）。上述したレイアウトデータ８００が、レイアウトデータ７００のクロックスキューが調整された例である。つぎに、検出部６０２〜置換部６０６により、置換処理を実行し（ステップＳ１００６）、出力部６０７により、置換結果を出力し（ステップＳ１００７）、一連の処理を終了する。上述したレイアウトデータ９００が、置換結果である。つぎに、図１１にて置換処理（ステップＳ１００３／Ｓ１００６）について説明する。
【００６４】
図１１は、図１０に示した置換処理（ステップＳ１００３／Ｓ１００６）の詳細な処理手順を示すフローチャートである。まず、検出部６０２により、クロックバッファセルがゲート段数１段であるクロックパスを検出する（ステップＳ１１０１）、未選択のクロックパスがあるか否かを判断する（ステップＳ１１０２）。
【００６５】
未選択のクロックパスがあると判断された場合（ステップＳ１１０２：Ｙｅｓ）、未選択のクロックパスを１つ選択し（ステップＳ１１０３）、ｉ＝１とする（ステップＳ１１０４）。つぎに、Ｎ＝クロックパスに接続されているＦＦの総数とし（ステップＳ１１０５）、ｉ≦Ｎであるか否かを判断する（ステップＳ１１０６）。
【００６６】
ｉ≦Ｎであると判断された場合（ステップＳ１１０６：Ｙｅｓ）、選択部６０３により、ｉ番目のＦＦを選択し（ステップＳ１１０７）、特定部６０４により、入力元のクロックバッファを特定する（ステップＳ１１０８）。そして、クロック供給源からクロックバッファまでのゲート段数を検出し（ステップＳ１１０９）、判断部６０５により、クロック供給源からクロックバッファまでのゲート段数が偶数段か否かを判断する（ステップＳ１１１０）。クロック供給源からクロックバッファまでのゲート段数に基づいて、特定されたクロックバッファがクロック信号を正論理で出力するか、反転論理で出力するかが判断される。
【００６７】
偶数段であると判断された場合（ステップＳ１１１０：Ｙｅｓ）、置換部６０６により、ｉ番目のＦＦを第１のＦＦに置換し（ステップＳ１１１１）、ｉ＝ｉ＋１とし（ステップＳ１１１３）、ステップＳ１１０６に戻る。一方、偶数段でない（奇数段である）と判断された場合（ステップＳ１１１０：Ｎｏ）、置換部６０６により、ｉ番目のＦＦを第２のＦＦに置換し（ステップＳ１１１２）、上述したステップＳ１１１３へ移行する。
【００６８】
一方、ｉ≦Ｎでないと判断された場合（ステップＳ１１０６：Ｎｏ）、ステップＳ１１０２へ移行する。さらに、一方、未選択のクロックパスがないと判断された場合（ステップＳ１１０２：Ｎｏ）、ステップＳ１００４（またはステップＳ１００７）へ移行する。
【００６９】
以上説明したように、設計支援方法、設計支援装置、設計支援プログラム、ゲート段数１段のクロックバッファ３０１に構成されているクロックパスに接続されているＦＦが、クロック供給源から入力元であるクロックバッファまでのゲート段数に基づいて第１のＦＦ２０１または第２のＦＦ２０２に置換される。
【００７０】
これにより、ゲート段数が最適化されているクロックパスに接続されているＦＦが、クロック信号の波形に応じた適切なＦＦに自動で置換される。したがって、最小限のゲート段数であるクロックパスを有するレイアウトデータを容易に設計でき、低消費電力化を図ることができる。
【００７１】
また、クロック供給源からＦＦの入力元であるクロックバッファまでのゲート段数が偶数段の場合、第１のＦＦに置換し、奇数段の場合、第２のＦＦに置換する。これにより、ゲート段数に応じて容易にＦＦを置換でき、低消費電力化を図ることができる。
【００７２】
また、ゲート段数１段の反転論理であるクロックバッファのみを用いてクロックツリーが構築されたレイアウトデータを自動生成することにより、最小限のゲート段数によりクロックツリーが構築され、低消費電力化を図ることができる。
【００７３】
また、ゲート段数１段の反転論理であるクロックバッファのみを用いてスキューが調整されたレイアウトデータを自動生成することにより、最小限のゲート段数によりスキューが調整され、低消費電力化を図ることができる。
【００７４】
また、クロック供給源からのクロック信号を正論理で出力すると利用者により指定されたクロックの起点からＦＦの入力元であるクロックバッファまでのゲート段数が偶数段の場合、第１のＦＦに置換し、奇数段の場合、第２のＦＦに置換する。これにより、ゲート段数に応じてクロック供給源からのクロック信号を正論理で出力するか否かが容易に判断できる。したがって、ゲート段数に応じて容易にＦＦを置換でき、低消費電力化を図ることができる。さらに、指定された箇所からのゲート段数を検索するのみであるため、検索時間を短縮することができる。
【００７５】
また、クロック信号を反転論理で出力すると利用者により指定されたクロックの起点からＦＦの入力元であるクロックバッファまでのゲート段数が奇数段の場合、第１のＦＦに置換し、偶数段の場合、第２のＦＦに置換する。これにより、ゲート段数に応じてクロック供給源からのクロック信号を正論理で出力するか否かが容易に判断できる。したがって、ゲート段数に応じて容易にＦＦを置換でき、低消費電力化を図ることができる。さらに、指定された箇所からのゲート段数を検索するのみであるため、検索時間を短縮することができる。
【００７６】
以上説明したように、半導体集積回路によれば、クロックパスと、クロックパスに接続されているＦＦと、ＦＦの入力元であり、ゲート段数１段のクロックバッファとを備えることで、クロックパスが最小限のゲート段数で構成され、低消費電力化を図ることができる。
【００７７】
さらに、ＦＦは、クロック供給源から当該ＦＦの入力元であるクロックバッファまでのゲート段数に基づいてクロック信号の立ち上がりエッジでデータを取り込むか、立ち下がりエッジでデータを取り込むことで、最小限のゲート段数でクロックパスが構成され、低消費電力化を図ることができる。
【００７８】
なお、本実施形態で説明した設計支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本設計支援プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本設計支援プログラムは、インターネット等のネットワークを介して配布してもよい。
【符号の説明】
【００７９】
２０１  第１のＦＦ
２０２  第２のＦＦ
３０１  クロックバッファ
４００，７００，８００，９００  レイアウトデータ
【図１】
2010140216.tif 000003
【図２−１】
2010140216.tif 000004
【図２−２】
2010140216.tif 000005
【図３】
2010140216.tif 000006
【図４】
2010140216.tif 000007
【図５】
2010140216.tif 000008
【図６】
2010140216.tif 000009
【図７】
2010140216.tif 000010
【図８】
2010140216.tif 000011
【図９】
2010140216.tif 000012
【図１０】
2010140216.tif 000013
【図１１】
2010140216.tif 000014
【手続補正書】
【提出日】平成23年11月7日(2011.11.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のデータ保持素子と、クロック供給源からのクロック信号を前記複数のデータ保持素子へ伝播するクロックパスと、を備える半導体集積回路を設計する設計支援方法であって、
コンピュータが、
前記半導体集積回路のレイアウトデータ内から、前記クロック信号を伝播し、クロックバッファがゲート段数１段の反転論理であるクロックパスを検出する検出工程、
前記検出工程により検出されたクロックパスに接続されているデータ保持素子を順次選択する選択工程、
前記選択工程によりデータ保持素子が選択される都度、前記データ保持素子の入力元であるクロックバッファを特定する特定工程、
前記クロック供給源から前記特定工程により特定されたクロックバッファまでのゲート段数に基づいて、前記クロックバッファが前記クロック供給源からの前記クロック信号を正論理で出力するか、反転論理で出力するかを判断する判断工程、
前記判断工程により判断された判断結果に基づいて、前記データ保持素子を、前記クロック信号の立ち上がりエッジに同期してデータを取り込む第１のデータ保持素子、または前記クロック信号の立ち下がりエッジに同期してデータを取り込む第２のデータ保持素子に置換する置換工程、
前記置換工程により置換された置換結果を出力する出力工程、
を実行することを特徴とする設計支援方法。
【請求項２】
前記判断工程は、
前記ゲート段数が、偶数段の場合、前記特定工程により特定されたクロックバッファが前記クロック信号を正論理で出力すると判断し、奇数段の場合、反転論理で出力すると判断し、
前記置換工程は、
前記判断工程により正論理で出力すると判断された場合、前記データ保持素子を前記第１のデータ保持素子に置換し、反転論理で出力すると判断された場合、前記第２のデータ保持素子に置換することを特徴とする請求項１に記載の設計支援方法。
【請求項３】
前記コンピュータが、
ゲート段数１段の反転論理であるクロックバッファのみを用いて指定されたクロックパスにクロックツリーを構築することによりレイアウトデータを生成する生成工程、を実行し、
前記検出工程は、
前記生成工程により生成されたレイアウトデータ内から、クロック供給源からのクロック信号を伝播し、クロックバッファがゲート段数１段の反転論理であるクロックパスを検出することを特徴とする請求項２に記載の設計支援方法。
【請求項４】
前記生成工程は、
ゲート段数１段の反転論理であるクロックバッファのみを用いて指定されたクロックパスのスキューを調整することによりレイアウトデータを生成し、
前記検出工程は、
前記生成工程により生成されたレイアウトデータ内から、クロック供給源からのクロック信号を伝播し、クロックバッファがゲート段数１段の反転論理であるクロックパスを検出することを特徴とする請求項３に記載の設計支援方法。
【請求項５】
レイアウトデータ内から、クロック供給源からのクロック信号を伝播し、クロックバッファがゲート段数１段の反転論理であるクロックパスを検出する検出手段と、
前記検出手段により検出されたクロックパスに接続されているデータ保持素子を順次選択する選択手段と、
前記選択手段によりデータ保持素子が選択される都度、前記データ保持素子の入力元であるクロックバッファを特定する特定手段と、
前記クロック供給源から前記特定手段により特定されたクロックバッファまでのゲート段数に基づいて、前記クロックバッファが前記クロック供給源からの前記クロック信号を正論理で出力するか、反転論理で出力するかを判断する判断手段と、
前記判断手段により判断された判断結果に基づいて、前記データ保持素子を、前記クロック信号の立ち上がりエッジに同期してデータを取り込む第１のデータ保持素子、または前記クロック信号の立ち下がりエッジに同期してデータを取り込む第２のデータ保持素子に置換する置換手段と、
前記置換手段により置換された置換結果を出力する出力手段と、
を備えることを特徴とする設計支援装置。
【請求項６】
複数のデータ保持素子と、クロック供給源からのクロック信号を前記複数のデータ保持素子へ伝播するクロックパスと、を備える半導体集積回路を設計する設計支援プログラムであって、
コンピュータを、
レイアウトデータ内から、クロック供給源からのクロック信号を伝播し、クロックバッファがゲート段数１段の反転論理であるクロックパスを検出する検出手段、
前記検出手段により検出されたクロックパスに接続されているデータ保持素子を順次選択する選択手段、
前記選択手段によりデータ保持素子が選択される都度、前記データ保持素子の入力元であるクロックバッファを特定する特定手段、
前記クロック供給源から前記特定手段により特定されたクロックバッファまでのゲート段数に基づいて、前記クロックバッファが前記クロック供給源からの前記クロック信号を正論理で出力するか、反転論理で出力するかを判断する判断手段、
前記判断手段により判断された判断結果に基づいて、前記データ保持素子を、前記クロック信号の立ち上がりエッジに同期してデータを取り込む第１のデータ保持素子、または前記クロック信号の立ち下がりエッジに同期してデータを取り込む第２のデータ保持素子に置換する置換手段、
前記置換手段により置換された置換結果を出力する出力手段、
として機能させることを特徴とする設計支援プログラム。
【請求項７】
クロック供給源からのクロック信号を伝播する半導体集積回路内の少なくとも一部のクロックパスと、
前記クロックパスに接続されているデータ保持素子群と、
前記データ保持素子群の各データ保持素子へ前記クロック信号を出力するゲート段数１段の反転論理であるクロックバッファと、
を備えることを特徴とする半導体集積回路。
【請求項８】
前記データ保持素子は、
前記クロック供給源から当該データ保持素子の入力元であるクロックバッファまでのゲート段数が、偶数段の場合、前記クロック信号の立ち上がりエッジに同期してデータを取り込み、奇数段の場合、前記クロック信号の立ち下がりエッジに同期してデータを取り込むことを特徴とする請求項７に記載の半導体集積回路。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レイアウトデータの設計を支援する設計支援方法、設計支援装置、設計支援プログラム、および半導体集積回路に関する。
【背景技術】
【０００２】
従来、半導体集積回路の消費電力を低減させる技術として、動作に必要ではない回路へのクロック信号または電源電圧の供給を止めるクロックゲーティングやパワーゲーティング（以下、「第１の従来技術」と称す。）が知られている。さらに、半導体集積回路の消費電力を低減させる技術として、低電圧化や多電源化（以下、「第２の従来技術」と称す。）が知られている。
【０００３】
また、従来、クロックスキューの低減およびノイズを減少させる技術として、クロック信号の立ち上がりエッジに同期してデータを取り込むデータ保持素子（以下、「第１のＦＦ（Ｆｌｉｐ  Ｆｌｏｐ）」と称す。）やクロック信号の立ち下がりエッジに同期してデータを取り込むデータ保持素子（以下、「第２のＦＦ」と称す。）を用いること（以下、第３の従来技術と称す。）が知られている（たとえば、下記特許文献１〜３を参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−２９５６２号公報
【特許文献２】特開２００３−３４７４０４号公報
【特許文献３】特開２００７−１１０４０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、第１の従来技術では、クロックパスを常時動作させる必要がある回路では適用することが出来ないという問題点があった。また、第２の従来技術では、クロックパスを常に高速で動作させる場合、電源電圧を下げるために半導体集積回路内の動作が遅くなるため、電源電圧を下げることができないという問題点があった。
【０００６】
また、第３の従来技術では、ゲート段数が複数段であるクロックバッファを用いて第１のＦＦおよび第２のＦＦに入力されるクロック信号を伝播している。そのため、正論理が必要な場合、必ずゲート段数２段、もしくはゲート段数２段以上の偶数段の正論理であるクロックバッファが挿入されるため、クロックパス上のゲート段数が増大してしまう問題点があった。
【課題を解決するための手段】
【０００７】
上述した課題を解決するため、本発明の一観点によれば、レイアウトデータ内から、クロック供給源からのクロック信号を伝播し、クロックバッファがゲート段数１段の反転論理であるクロックパスを検出する検出手段と、前記検出手段により検出されたクロックパスに接続されているデータ保持素子を順次選択する選択手段と、前記選択手段によりデータ保持素子が選択される都度、前記データ保持素子の入力元であるクロックバッファを特定する特定手段と、前記クロック供給源から前記特定手段により特定されたクロックバッファまでのゲート段数に基づいて前記クロックバッファが前記クロック供給源からの前記クロック信号を正論理で出力するか、反転論理で出力するかを判断する判断手段と、前記判断手段により判断された判断結果に基づいて、前記データ保持素子を、前記クロック信号の立ち上がりに同期してデータを取り込む第１のデータ保持素子、または前記クロック信号の立ち下がりエッジに同期してデータを取り込む第２のデータ保持素子に置換する置換手段と、前記置換手段により置換された置換結果を出力する出力手段と、を備える設計支援方法が提供される。
【発明の効果】
【０００８】
本設計支援方法、設計支援装置、設計支援プログラム、および半導体集積回路によればゲート段数１段のクロックバッファを用いて、クロックパス上のゲート段数を容易に最適化して低消費電力化を図ることができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態１にかかる半導体集積回路の一例を示す説明図である。
【図２−１】図２−１は、第１のＦＦの一例を示す説明図である。
【図２−２】図２−２は、第２のＦＦの一例を示す説明図である。
【図３】図３は、クロックバッファの例を示す説明図である。
【図４】図４は、設計対象のレイアウトデータを示す説明図である。
【図５】図５は、実施の形態２にかかる設計支援装置のハードウェア構成例を示すブロック図である。
【図６】図６は、実施の形態２にかかる設計支援装置の機能的構成例を示すブロック図である。
【図７】図７は、レイアウトデータ４００内のＦＦが置換されて出力された例を示す説明図である。
【図８】図８は、スキューを調整済のレイアウトデータを示す説明図である。
【図９】図９は、レイアウトデータ８００内のＦＦが置換されて出力された例を示す説明図である。
【図１０】図１０は、実施の形態２にかかる設計支援装置６００の設計支援処理手順を示すフローチャートである。
【図１１】図１１は、図１０に示した置換処理（ステップＳ１００３／Ｓ１００６）の詳細な処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、本発明の実施の形態による設計支援方法、設計支援装置、設計支援プログラム、および半導体集積回路について説明する。
【００１１】
本発明の実施形態では、クロック供給源からのクロック信号を伝播するクロックパスに接続されているデータ保持素子の入力元であるクロックバッファが、ゲート段数１段の反転論理により構成されている。なお、本実施の形態ではデータ保持素子としてＦＦを用いて説明する。そして、各ＦＦは、クロック供給源から当該ＦＦの入力元であるクロックバッファまでのゲート段数が偶数段であれば、上述した第１のＦＦであり、奇数段であれば、上述した第２のＦＦである。
【００１２】
まず、実施の形態１では、ゲート段数１段のクロックバッファによりゲート段数が最適化されたクロックパスを有する半導体集積回路について説明する。つぎに、実施の形態２では、上述したクロックパスに接続されているＦＦを、第１のＦＦまたは第２のＦＦに置換する設計支援装置について説明する。まず、図１にて実施の形態１の概要を示す。
【００１３】
（実施の形態１）
図１は、実施の形態１にかかる半導体集積回路の一例を示す説明図である。半導体集積回路１００は、クロック入力端子から入力されるクロック信号を伝播するクロックパス１０１と、クロックパス１０１に接続されているＦＦ１〜ＦＦ３と、ゲート段数１段であり、クロックパス１０１上のＢＵＦ１〜ＢＵＦ５により構成されている。実施の形態１では、クロック入力端子をクロック供給源として説明するが、クロック信号を生成するクロック生成回路などがクロック供給源であってもよい。
【００１４】
ＢＵＦ１〜ＢＵＦ５は、ゲート段数１段の反転論理であるクロックバッファである。半導体集積回路１００では、ＦＦ１〜３の入力元であるクロックバッファがクロック入力端子からのクロック信号を正論理で出力するか否かに応じて、各ＦＦが、クロック信号の立ち上がりエッジに同期してデータを取り込むか、立ち下がりエッジに同期してデータを取り込む。
【００１５】
まず、ＦＦ１を例に挙げると、クロック入力端子からＦＦ１の入力元であるＢＵＦ３までのゲート段数は３段である。したがって、ＦＦ１は、第２のＦＦである。つぎに、ＦＦ２を例に挙げると、クロック入力端子からＦＦ２の入力元であるＢＵＦ４までのゲート段数は４段である。したがって、ＦＦ２は、第１のＦＦである。
【００１６】
最後に、ＦＦ３を例に挙げると、クロック入力端子からＦＦ３の入力元であるＢＵＦ５までのゲート段数は５段である。したがって、ＦＦ３は、第２のＦＦである。これにより、ゲート段数１段のクロックバッファによりクロックパスが構成されることで、最小限のゲート段数でクロックパスが構成される。したがって、半導体集積回路の低消費電力化を図ることができる。
【００１７】
（実施の形態２）
つぎに、実施の形態２では、クロックバッファがゲート段数１段であるクロックパスに接続されているＦＦを、ＦＦの入力元であるクロックバッファがクロック供給源からのクロック信号を正論理で出力するか否かにより第１のＦＦまたは第２のＦＦに置換する。これにより、クロックパス上のゲート段数を可能な限り削減し、低消費電力化を図ることができる。まず、図２−１および図２−２により第１のＦＦおよび第２のＦＦの一例を示す。
【００１８】
図２−１は、第１のＦＦの一例を示す説明図である。＜レイアウトデータ＞では、第１のＦＦ２０１のレイアウトデータを示している。第１のＦＦ２０１は、クロック信号の立ち上がりエッジに同期してデータを取り込むＦＦの一例である。第１のＦＦ２０１は、レイアウトデータであるが、理解の容易化のために回路図で示されている。
【００１９】
第１のＦＦ２０１では、ＣＫに入力されるクロック信号の立ち上がりエッジに同期してＤに入力されるデータを内部に取り込み、Ｑから出力する。＜シンボル＞では、第１のＦＦ２０１のシンボルを示している。後述する半導体集積回路のレイアウトデータ内では、第１のＦＦ２０１をシンボルで表記する。なお、第１のＦＦ２０１は、ライブラリ内に記述され、記憶装置またはアクセス可能な外部のコンピュータの記憶装置に記憶されている。つぎに、図２−２にて第２のＦＦを示す。
【００２０】
図２−２は、第２のＦＦの一例を示す説明図である。＜レイアウトデータ＞では、第２のＦＦ２０２のレイアウトデータを示している。第２のＦＦ２０２は、クロック信号の立ち下がりエッジに同期してデータを取り込むＦＦの一例である。第２のＦＦ２０２は、レイアウトデータであるが、理解の容易化のために回路図で示されている。
【００２１】
第２のＦＦ２０２では、／ＣＫに入力されるクロック信号の立ち下がりエッジに同期してＤに入力されるデータを内部に取り込み、Ｑから出力する。＜シンボル＞では、第２のＦＦ２０２のシンボルを示している。後述する半導体集積回路のレイアウトデータ内では、第２のＦＦ２０２をシンボルで表記する。なお、第２のＦＦ２０２は、ライブラリ内に記述され、記憶装置またはアクセス可能な外部のコンピュータの記憶装置に記憶されている。つぎに、図３にてクロックバッファの例を示す。
【００２２】
図３は、クロックバッファの例を示す説明図である。クロックバッファ３０１は、ゲート段数１段により構成されている。クロックバッファ３０１は、反転論理である。つぎに、クロックバッファ３０２は、ゲート段数２段により構成されている。クロックバッファ３０２は、正論理である。そして、クロックバッファ３０３は、ゲート段数３段により構成されている。クロックバッファ３０３は、反転論理である。
【００２３】
従来では、反転論理が必要な場合、クロックバッファ３０３が利用されていたが、本実施の形態では、クロックバッファ３０１が利用される。したがって、本実施の形態では、クロックバッファ３０１によりクロックツリーが構築またはスキューが調整される。
【００２４】
（設計対象のレイアウトデータ）
図４は、設計対象のレイアウトデータを示す説明図である。レイアウトデータ４００は、クロック入力端子へ入力されるクロック信号を伝播するクロックパス４０１と、クロックパス４０１に接続されているＦＦ１〜ＦＦ３と、組み合わせ回路と、クロックバッファ３０１であるＢＵＦ１〜ＢＵＦ４を含む構成である。
【００２５】
レイアウトデータ４００は、理解の容易化のために回路図で示されているが、実際には、物理情報である。たとえば、ＦＦ１〜ＦＦ３、およびＢＵＦ１〜ＢＵＦ４は、インスタンス名であり、各ＦＦを特定するための名前である。そして、物理情報では、配置位置を示す座標と、セル同士の接続関係と、各セルを構成する層情報と、配線幅などの情報を有している。たとえば、ＦＦ１が第１のＦＦ２０１に置換されることは、実際には、物理情報内のＦＦ１のセル名が書き換えられていることを示す。
【００２６】
まず、レイアウトデータ４００では、ＦＦ１〜ＦＦ３が、第１のＦＦ２０１である。実際には、ＦＦ１〜ＦＦ３は、第１のＦＦ２０１および第２のＦＦ２０２のいずれのＦＦであってもよい。または、たとえば、ＦＦ１〜ＦＦ３は、第１のＦＦ２０１および第２のＦＦ２０２と同一形状、同一面積であるダミーのＦＦであってもよい。
【００２７】
つぎに、ＢＵＦ１〜ＢＵＦ４は、すべて上述したクロックバッファ３０１である。そして、レイアウトデータ４００では、クロック入力端子をクロック供給源として説明するが、これに限らない。たとえば、クロック信号を生成するクロック生成回路をクロック供給源としてもよい。
【００２８】
本実施の形態２にかかる設計支援装置により、ＦＦ１〜ＦＦ３が、第１のＦＦ２０１、または第２のＦＦ２０２に置換される。なお、レイアウトデータ４００は、記憶装置またはアクセス可能な外部のコンピュータの記憶装置に記憶されている。
【００２９】
（設計支援装置のハードウェア構成）
図５は、実施の形態２にかかる設計支援装置のハードウェア構成例を示すブロック図である。図５において、設計支援装置は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）５０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）５０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）５０３と、磁気ディスクドライブ５０４と、磁気ディスク５０５と、光ディスクドライブ５０６と、光ディスク５０７と、ディスプレイ５０８と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）５０９と、キーボード５１０と、マウス５１１と、スキャナ５１２と、プリンタ５１３と、を備えている。また、各構成部はバス５００によってそれぞれ接続されている。
【００３０】
ここで、ＣＰＵ５０１は、設計支援装置の全体の制御を司る。ＲＯＭ５０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ５０３は、ＣＰＵ５０１のワークエリアとして使用される。磁気ディスクドライブ５０４は、ＣＰＵ５０１の制御にしたがって磁気ディスク５０５に対するデータのリード／ライトを制御する。磁気ディスク５０５は、磁気ディスクドライブ５０４の制御で書き込まれたデータを記憶する。
【００３１】
光ディスクドライブ５０６は、ＣＰＵ５０１の制御にしたがって光ディスク５０７に対するデータのリード／ライトを制御する。光ディスク５０７は、光ディスクドライブ５０６の制御で書き込まれたデータを記憶したり、光ディスク５０７に記憶されたデータをコンピュータに読み取らせたりする。
【００３２】
ディスプレイ５０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ５０８は、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００３３】
Ｉ／Ｆ５０９は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク５１４に接続され、このネットワーク５１４を介して他の装置に接続される。そして、Ｉ／Ｆ５０９は、ネットワーク５１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ５０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００３４】
キーボード５１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス５１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００３５】
スキャナ５１２は、画像を光学的に読み取り、設計支援装置内に画像データを取り込む。なお、スキャナ５１２は、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）機能を持たせてもよい。また、プリンタ５１３は、画像データや文書データを印刷する。プリンタ５１３には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
【００３６】
（設計支援装置の機能的構成）
図６は、実施の形態２にかかる設計支援装置の機能的構成例を示すブロック図である。設計支援装置６００は、生成部６０１と、検出部６０２と、選択部６０３と、特定部６０４と、判断部６０５と、置換部６０６と、出力部６０７と、を含む構成である。設計支援装置６００の制御部となる機能（生成部６０１〜出力部６０７）は、具体的には、たとえば、図５に示したＲＯＭ５０２、ＲＡＭ５０３、磁気ディスク５０５、光ディスク５０７などの記憶装置に記憶されたプログラムをＣＰＵ５０１に実行させることにより、または、Ｉ／Ｆ５０９により、その機能を実現する。
【００３７】
まず、生成部６０１は、少なくとも指定されたクロックパスにゲート段数が１段の反転論理であるクロックバッファのセルを用いてクロックツリーを構築することによりレイアウトデータを生成する機能を有する。
【００３８】
具体的には、たとえば、ＣＰＵ５０１が、指定されたクロックパスがクロックバッファ３０１のみでクロックツリーを構築するように指定し、既存のクロックツリーを構築するツールを実行することでクロックツリー構築後のレイアウトデータを生成する。なお、生成結果は、ＲＡＭ５０３、磁気ディスク５０５、光ディスク５０７などの記憶装置に記憶される。
【００３９】
生成結果が、たとえば、上述したレイアウトデータ４００である。これにより、ゲート段数１段のクロックバッファを用いてクロックツリーを構築することで、クロックパス上のゲート段数が最適化される。したがって、クロックパス上のゲート段数を可能な限り削減し、低消費電力化を図ることができる。
【００４０】
つぎに、検出部６０２は、生成部６０１により生成されたレイアウトデータ内から、クロック供給源からのクロック信号を伝播し、クロックバッファがゲート段数１段の反転論理であるクロックパスを検出する。具体的には、たとえば、ＣＰＵ５０１が、記憶装置にアクセスしてレイアウトデータ４００からクロックバッファ３０１のみを使用しているクロックパスを検出する。また、たとえば、予め利用者により指定されているクロックパスを検出することとしてもよい。
【００４１】
レイアウトデータ４００では、クロックバッファがゲート段数１段の反転論理であるクロックパスとして、クロックパス４０１が検出される。なお、検出結果は、一旦ＲＡＭ５０３、磁気ディスク５０５、光ディスク５０７などの記憶装置に記憶される。
【００４２】
そして、選択部６０３は、検出部６０２により検出されたクロックパスに接続されているＦＦを順次選択する機能を有する。具体的には、たとえば、ＣＰＵ５０１が、レイアウトデータ４００からクロックパス４０１に接続されているＦＦを順次選択する。たとえば、まず、ＦＦ１が選択され、つぎに、ＦＦ２が選択され、最後に、ＦＦ３が選択される。
【００４３】
特定部６０４は、選択部６０３により選択されたＦＦの入力元であるクロックバッファを特定する機能を有する。具体的には、たとえば、クロックパス４０１に接続されているＦＦ１を例に挙げると、ＣＰＵ５０１が、レイアウトデータ４００からＦＦ１のＣＫに接続されているネットを検出する。そして、検出したネットが出力先として接続されているクロックバッファをＦＦ１の入力元として特定する。したがって、ＦＦ１の入力元としてＢＵＦ３が特定される。
【００４４】
判断部６０５は、クロック供給源から特定部６０４により特定されたクロックバッファまでのゲート段数に基づいて、当該クロックバッファがクロック供給源からのクロック信号を正論理で出力するか否かを判断する機能を有する。
【００４５】
具体的には、たとえば、ＣＰＵ５０１が、記憶装置にアクセスしてレイアウトデータ４００を読み出し、クロック入力端子から特定されたクロックバッファまでのゲート段数を検出する。そして、検出されたゲート段数が偶数段の場合、特定されたクロックバッファがクロック信号を正論理で出力すると判断し、奇数段の場合、特定されたクロックバッファがクロック信号を反転論理で出力すると判断する。
【００４６】
レイアウトデータ４００内のＦＦ１の入力元であるＢＵＦ３を例に挙げると、クロック入力端子からＢＵＦ３までのゲート段数は、３段である。したがって、ＢＵＦ３は、クロック入力端子からのクロック信号を反転論理で出力すると判断される。なお、判断結果は、一旦、ＲＡＭ５０３、磁気ディスク５０５、光ディスク５０７などの記憶装置に記憶される。
【００４７】
つぎに、置換部６０６は、判断部６０５により正論理で出力すると判断された場合、選択されたＦＦを第１のＦＦに置換し、反転論理で出力すると判断された場合、第２のＦＦに置換する。
【００４８】
具体的には、たとえば、ＣＰＵ５０１が、記憶装置にアクセスしてレイアウトデータ４００と判断結果を読み出す。そして、判断結果が偶数段の場合、レイアウトデータ４００内の選択されたＦＦを第１のＦＦ２０１に置換し、奇数段の場合、レイアウトデータ４００内の選択されたＦＦを第２のＦＦ２０２に置換する。
【００４９】
レイアウトデータ４００内のＦＦ１を例に挙げると、上述したようにＦＦ１の入力元であるＢＵＦ３は、クロック入力端子からのクロック信号を反転論理で出力すると判断されているため、ＦＦ１は第２のＦＦ２０２に置換される。
【００５０】
つぎに、出力部６０７は、置換部６０６により置換された置換結果を出力する。具体的には、たとえば、ＣＰＵ５０１が、レイアウトデータを出力する。出力形式としては、たとえば、ディスプレイ５０８への表示、プリンタ５１３への印刷出力、Ｉ／Ｆ５０９による外部装置への送信がある。また、ＲＡＭ５０３、磁気ディスク５０５、光ディスク５０７などの記憶領域に記憶することとしてもよい。図５にて出力されたレイアウトデータを示す。
【００５１】
図７は、レイアウトデータ４００内のＦＦが置換されて出力された例を示す説明図である。レイアウトデータ７００は、クロック入力端子からのクロック信号を伝播するクロックパス４０１と、クロックパス４０１に接続されている第２のＦＦ２０２であるＦＦ１およびＦＦ２と、クロックパス４０１に接続されている第１のＦＦ２０１であるＦＦ３と、クロックバッファであるＢＵＦ１〜ＢＵＦ４である。
【００５２】
これにより、ゲート段数が最適化されているクロックパスに接続されているＦＦが、クロック信号の波形に応じた適切なＦＦに自動で置換される。したがって、最小限のゲート段数であるクロックパスを有するレイアウトデータを容易に設計でき、低消費電力化を図ることができる。
【００５３】
また、生成部６０１は、ゲート段数１段の反転論理であるクロックバッファのみを用いて少なくとも指定されたクロックパスのスキューを調整することによりレイアウトデータを生成する機能を有する。具体的には、たとえば、ＣＰＵ５０１が、クロックバッファ３０１のみでスキューを調整するように指定し、既存のスキューを調整するツールを実行することでレイアウトデータ７００からスキューを調整済のレイアウトデータを生成する。なお、生成結果は、ＲＡＭ５０３、磁気ディスク５０５、光ディスク５０７などの記憶装置に記憶される。図８にて生成結果を示す。
【００５４】
図８は、スキューを調整済のレイアウトデータを示す説明図である。レイアウトデータ８００は、ＢＵＦ５とＢＵＦ６を含み、その他はレイアウトデータ７００で示した構成と同一構成である。これにより、ゲート段数１段のクロックバッファを用いてスキューが調整されることで、クロックパス上のゲート段数が最適化される。したがって、クロックパス上のゲート段数を可能な限り削減し、低消費電力化を図ることができる。
【００５５】
図６に戻って、検出部６０２は、生成部６０１により生成されたスキューを調整済のレイアウトデータ８００内から、クロック供給源からのクロック信号を伝播し、クロックバッファがゲート段数１段の反転論理であるクロックパスを検出する。具体的には、たとえば、ＣＰＵ５０１が、記憶装置にアクセスしてレイアウトデータ８００からクロックバッファ３０１のみを使用しているクロックパスを検出する。また、たとえば、利用者により予め指定されているクロックパスを検出することとしてもよい。
【００５６】
レイアウトデータ８００では、クロックバッファがゲート段数１段の反転論理であるクロックパスとして、クロックパス８０１が検出される。なお、検出結果は、一旦ＲＡＭ５０３、磁気ディスク５０５、光ディスク５０７などの記憶装置に記憶される。
【００５７】
つぎに、再度、上述した選択部６０３〜出力部６０７の機能により、レイアウトデータ８００内のクロックパス８０１に接続されているＦＦが、第１のＦＦ２０１または第２のＦＦ２０２に置換される。図９にて置換結果を示す。
【００５８】
図９は、レイアウトデータ８００内のＦＦが置換されて出力された例を示す説明図である。レイアウトデータ９００は、クロック入力端子からＦＦ２の入力元であるＢＵＦ５までのゲート段数が、４段である。そのため、ＦＦ２が第１のＦＦ２０１に置換されている。なお、その他の構成は、レイアウトデータ８００と同一構成である。これにより、スキューを調整済のレイアウトデータであってもＦＦを容易に置換することができ、クロックパス上のゲート段数を最小限に抑え低消費電力化を図ることができる。
【００５９】
実施の形態２では、クロック供給源からＦＦの入力元であるクロックバッファまでのゲート段数に基づいて、各ＦＦが第１のＦＦ２０１または第２のＦＦ２０２に決定されている。さらに、たとえば、利用者が指定した箇所からＦＦの入力元であるクロックバッファまでのゲート段数に基づいて、各ＦＦが第１のＦＦ２０１または第２のＦＦ２０２に決定されることとしてもよい。ここで、特製されたクロックバッファがクロック供給源からのクロック信号を反転論理で出力するか正論理で出力かを判断するために利用者が指定した箇所をクロックの起点とする。そして、クロックの起点は、クロック供給源からのクロック信号を正論理で出力するか反転論理で出力するかがあらかじめ決定していることとして説明する。
【００６０】
まず、クロック供給源からのクロック信号を正論理で伝播している箇所が利用者によりクロック起点として指定された場合の判断部６０５の機能について説明する。判断部６０５は、クロックの起点から特定されたクロックバッファまでのゲート段数が偶数段のときにクロック供給源からのクロック信号を正論理で出力すると判断する。そして、判断部６０５は、指定された箇所から特定されたクロックバッファまでのゲート段数が奇数段のときにクロック供給源からのクロック信号を反転論理で出力すると判断する。なお、ゲート段数の検出については、上述した判断部６０５の処理と同一処理であるため詳細な説明を省略する。
【００６１】
つぎに、クロック供給源からのクロック信号を反転論理で伝播している箇所が利用者によりクロック起点として指定された場合の判断部６０５の機能について説明する。判断部６０５は、クロックの起点から特定されたクロックバッファまでのゲート段数が奇数段のときにクロック供給源からのクロック信号を正論理で出力すると判断する。そして、判断部６０５は、指定された箇所から特定されたクロックバッファまでのゲート段数が偶数段のときにクロック供給源からのクロック信号を反転論理で出力すると判断する。なお、ゲート段数の検出については、上述した判断部６０５の処理と同一処理であるため詳細な説明を省略する。
【００６２】
（設計支援装置６００の設計支援処理手順）
図１０は、実施の形態２にかかる設計支援装置６００の設計支援処理手順を示すフローチャートである。まず、レイアウトデータを取得する（ステップＳ１００１）。ここで取得されるレイアウトデータは、初期配置済のレイアウトデータである。つぎに、生成部６０１により、取得されたレイアウトデータにクロックツリーを構築する（ステップＳ１００２）。上述したレイアウトデータ４００が、クロックツリーが構築されたレイアウトデータの例である。
【００６３】
つづいて、検出部６０２〜置換部６０６により、置換処理を実行し（ステップＳ１００３）、出力部６０７により、置換結果を出力する（ステップＳ１００４）。たとえば、上述したレイアウトデータ７００が、置換結果である。そして、生成部６０１により、クロックスキューを調整する（ステップＳ１００５）。上述したレイアウトデータ８００が、レイアウトデータ７００のクロックスキューが調整された例である。つぎに、検出部６０２〜置換部６０６により、置換処理を実行し（ステップＳ１００６）、出力部６０７により、置換結果を出力し（ステップＳ１００７）、一連の処理を終了する。上述したレイアウトデータ９００が、置換結果である。つぎに、図１１にて置換処理（ステップＳ１００３／Ｓ１００６）について説明する。
【００６４】
図１１は、図１０に示した置換処理（ステップＳ１００３／Ｓ１００６）の詳細な処理手順を示すフローチャートである。まず、検出部６０２により、クロックバッファセルがゲート段数１段であるクロックパスを検出する（ステップＳ１１０１）、未選択のクロックパスがあるか否かを判断する（ステップＳ１１０２）。
【００６５】
未選択のクロックパスがあると判断された場合（ステップＳ１１０２：Ｙｅｓ）、未選択のクロックパスを１つ選択し（ステップＳ１１０３）、ｉ＝１とする（ステップＳ１１０４）。つぎに、Ｎ＝クロックパスに接続されているＦＦの総数とし（ステップＳ１１０５）、ｉ≦Ｎであるか否かを判断する（ステップＳ１１０６）。
【００６６】
ｉ≦Ｎであると判断された場合（ステップＳ１１０６：Ｙｅｓ）、選択部６０３により、ｉ番目のＦＦを選択し（ステップＳ１１０７）、特定部６０４により、入力元のクロックバッファを特定する（ステップＳ１１０８）。そして、クロック供給源からクロックバッファまでのゲート段数を検出し（ステップＳ１１０９）、判断部６０５により、クロック供給源からクロックバッファまでのゲート段数が偶数段か否かを判断する（ステップＳ１１１０）。クロック供給源からクロックバッファまでのゲート段数に基づいて、特定されたクロックバッファがクロック信号を正論理で出力するか、反転論理で出力するかが判断される。
【００６７】
偶数段であると判断された場合（ステップＳ１１１０：Ｙｅｓ）、置換部６０６により、ｉ番目のＦＦを第１のＦＦに置換し（ステップＳ１１１１）、ｉ＝ｉ＋１とし（ステップＳ１１１３）、ステップＳ１１０６に戻る。一方、偶数段でない（奇数段である）と判断された場合（ステップＳ１１１０：Ｎｏ）、置換部６０６により、ｉ番目のＦＦを第２のＦＦに置換し（ステップＳ１１１２）、上述したステップＳ１１１３へ移行する。
【００６８】
一方、ｉ≦Ｎでないと判断された場合（ステップＳ１１０６：Ｎｏ）、ステップＳ１１０２へ移行する。さらに、一方、未選択のクロックパスがないと判断された場合（ステップＳ１１０２：Ｎｏ）、ステップＳ１００４（またはステップＳ１００７）へ移行する。
【００６９】
以上説明したように、設計支援方法、設計支援装置、設計支援プログラム、ゲート段数１段のクロックバッファ３０１に構成されているクロックパスに接続されているＦＦが、クロック供給源から入力元であるクロックバッファまでのゲート段数に基づいて第１のＦＦ２０１または第２のＦＦ２０２に置換される。
【００７０】
これにより、ゲート段数が最適化されているクロックパスに接続されているＦＦが、クロック信号の波形に応じた適切なＦＦに自動で置換される。したがって、最小限のゲート段数であるクロックパスを有するレイアウトデータを容易に設計でき、低消費電力化を図ることができる。
【００７１】
また、クロック供給源からＦＦの入力元であるクロックバッファまでのゲート段数が偶数段の場合、第１のＦＦに置換し、奇数段の場合、第２のＦＦに置換する。これにより、ゲート段数に応じて容易にＦＦを置換でき、低消費電力化を図ることができる。
【００７２】
また、ゲート段数１段の反転論理であるクロックバッファのみを用いてクロックツリーが構築されたレイアウトデータを自動生成することにより、最小限のゲート段数によりクロックツリーが構築され、低消費電力化を図ることができる。
【００７３】
また、ゲート段数１段の反転論理であるクロックバッファのみを用いてスキューが調整されたレイアウトデータを自動生成することにより、最小限のゲート段数によりスキューが調整され、低消費電力化を図ることができる。
【００７４】
また、クロック供給源からのクロック信号を正論理で出力すると利用者により指定されたクロックの起点からＦＦの入力元であるクロックバッファまでのゲート段数が偶数段の場合、第１のＦＦに置換し、奇数段の場合、第２のＦＦに置換する。これにより、ゲート段数に応じてクロック供給源からのクロック信号を正論理で出力するか否かが容易に判断できる。したがって、ゲート段数に応じて容易にＦＦを置換でき、低消費電力化を図ることができる。さらに、指定された箇所からのゲート段数を検索するのみであるため、検索時間を短縮することができる。
【００７５】
また、クロック信号を反転論理で出力すると利用者により指定されたクロックの起点からＦＦの入力元であるクロックバッファまでのゲート段数が奇数段の場合、第１のＦＦに置換し、偶数段の場合、第２のＦＦに置換する。これにより、ゲート段数に応じてクロック供給源からのクロック信号を正論理で出力するか否かが容易に判断できる。したがって、ゲート段数に応じて容易にＦＦを置換でき、低消費電力化を図ることができる。さらに、指定された箇所からのゲート段数を検索するのみであるため、検索時間を短縮することができる。
【００７６】
以上説明したように、半導体集積回路によれば、クロックパスと、クロックパスに接続されているＦＦと、ＦＦの入力元であり、ゲート段数１段のクロックバッファとを備えることで、クロックパスが最小限のゲート段数で構成され、低消費電力化を図ることができる。
【００７７】
さらに、ＦＦは、クロック供給源から当該ＦＦの入力元であるクロックバッファまでのゲート段数に基づいてクロック信号の立ち上がりエッジでデータを取り込むか、立ち下がりエッジでデータを取り込むことで、最小限のゲート段数でクロックパスが構成され、低消費電力化を図ることができる。
【００７８】
なお、本実施形態で説明した設計支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本設計支援プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本設計支援プログラムは、インターネット等のネットワークを介して配布してもよい。
【００７９】
上述した実施の形態に関し、さらに以下の付記を開示する。
【００８０】
（付記１）複数のデータ保持素子と、クロック供給源からのクロック信号を前記複数のデータ保持素子へ伝播するクロックパスと、を備える半導体集積回路を設計する設計支援方法であって、
コンピュータが、
前記半導体集積回路のレイアウトデータ内から、前記クロック信号を伝播し、クロックバッファがゲート段数１段の反転論理であるクロックパスを検出する検出工程、
前記検出工程により検出されたクロックパスに接続されているデータ保持素子を順次選択する選択工程、
前記選択工程によりデータ保持素子が選択される都度、前記データ保持素子の入力元であるクロックバッファを特定する特定工程、
前記クロック供給源から前記特定工程により特定されたクロックバッファまでのゲート段数に基づいて、前記クロックバッファが前記クロック供給源からの前記クロック信号を正論理で出力するか、反転論理で出力するかを判断する判断工程、
前記判断工程により判断された判断結果に基づいて、前記データ保持素子を、前記クロック信号の立ち上がりエッジに同期してデータを取り込む第１のデータ保持素子、または前記クロック信号の立ち下がりエッジに同期してデータを取り込む第２のデータ保持素子に置換する置換工程、
前記置換工程により置換された置換結果を出力する出力工程、
を実行することを特徴とする設計支援方法。
【００８１】
（付記２）前記判断工程は、
前記ゲート段数が、偶数段の場合、前記特定工程により特定されたクロックバッファが前記クロック信号を正論理で出力すると判断し、奇数段の場合、反転論理で出力すると判断し、
前記置換工程は、
前記判断工程により正論理で出力すると判断された場合、前記データ保持素子を前記第１のデータ保持素子に置換し、反転論理で出力すると判断された場合、前記第２のデータ保持素子に置換することを特徴とする付記１に記載の設計支援方法。
【００８２】
（付記３）前記コンピュータが、
ゲート段数１段の反転論理であるクロックバッファのみを用いて指定されたクロックパスにクロックツリーを構築することによりレイアウトデータを生成する生成工程、を実行し、
前記検出工程は、
前記生成工程により生成されたレイアウトデータ内から、クロック供給源からのクロック信号を伝播し、クロックバッファがゲート段数１段の反転論理であるクロックパスを検出することを特徴とする付記２に記載の設計支援方法。
【００８３】
（付記４）前記生成工程は、
ゲート段数１段の反転論理であるクロックバッファのみを用いて指定されたクロックパスのスキューを調整することによりレイアウトデータを生成し、
前記検出工程は、
前記生成工程により生成されたレイアウトデータ内から、クロック供給源からのクロック信号を伝播し、クロックバッファがゲート段数１段の反転論理であるクロックパスを検出することを特徴とする付記３に記載の設計支援方法。
【００８４】
（付記５）前記判断工程は、
クロックの起点として指定された箇所が前記クロック供給源からのクロック信号を正論理で出力する場合、前記クロックの起点から前記クロックバッファまでのゲート段数が、偶数段の場合、前記クロックバッファが前記クロック信号を正論理で出力すると判断し、奇数段の場合、反転論理で出力すると判断し、
前記置換工程は、
前記判断工程により正論理で出力すると判断された場合、前記データ保持素子を前記第１のデータ保持素子に置換し、反転論理で出力すると判断された場合、前記第２のデータ保持素子に置換することを特徴とする付記４に記載の設計支援方法。
【００８５】
（付記６）前記判断工程は、
クロックの起点として指定された箇所が前記クロック供給源からのクロック信号を反転論理で伝播している場合、前記クロックの起点から前記クロックバッファまでのゲート段数が、偶数段の場合、前記クロックバッファが前記クロック信号を反転論理で出力すると判断し、奇数段の場合、正論理で出力すると判断し、
前記置換工程は、
前記判断工程により正論理で出力すると判断された場合、前記データ保持素子を前記第１のデータ保持素子に置換し、反転論理で出力すると判断された場合、前記第２のデータ保持素子に置換することを特徴とする付記５に記載の設計支援方法。
【００８６】
（付記７）レイアウトデータ内から、クロック供給源からのクロック信号を伝播し、クロックバッファがゲート段数１段の反転論理であるクロックパスを検出する検出手段と、
前記検出手段により検出されたクロックパスに接続されているデータ保持素子を順次選択する選択手段と、
前記選択手段によりデータ保持素子が選択される都度、前記データ保持素子の入力元であるクロックバッファを特定する特定手段と、
前記クロック供給源から前記特定手段により特定されたクロックバッファまでのゲート段数に基づいて、前記クロックバッファが前記クロック供給源からの前記クロック信号を正論理で出力するか、反転論理で出力するかを判断する判断手段と、
前記判断手段により判断された判断結果に基づいて、前記データ保持素子を、前記クロック信号の立ち上がりエッジに同期してデータを取り込む第１のデータ保持素子、または前記クロック信号の立ち下がりエッジに同期してデータを取り込む第２のデータ保持素子に置換する置換手段と、
前記置換手段により置換された置換結果を出力する出力手段と、
を備えることを特徴とする設計支援装置。
【００８７】
（付記８）複数のデータ保持素子と、クロック供給源からのクロック信号を前記複数のデータ保持素子へ伝播するクロックパスと、を備える半導体集積回路を設計する設計支援プログラムであって、
コンピュータを、
レイアウトデータ内から、クロック供給源からのクロック信号を伝播し、クロックバッファがゲート段数１段の反転論理であるクロックパスを検出する検出手段、
前記検出手段により検出されたクロックパスに接続されているデータ保持素子を順次選択する選択手段、
前記選択手段によりデータ保持素子が選択される都度、前記データ保持素子の入力元であるクロックバッファを特定する特定手段、
前記クロック供給源から前記特定手段により特定されたクロックバッファまでのゲート段数に基づいて、前記クロックバッファが前記クロック供給源からの前記クロック信号を正論理で出力するか、反転論理で出力するかを判断する判断手段、
前記判断手段により判断された判断結果に基づいて、前記データ保持素子を、前記クロック信号の立ち上がりエッジに同期してデータを取り込む第１のデータ保持素子、または前記クロック信号の立ち下がりエッジに同期してデータを取り込む第２のデータ保持素子に置換する置換手段、
前記置換手段により置換された置換結果を出力する出力手段、
として機能させることを特徴とする設計支援プログラム。
【００８８】
（付記９）クロック供給源からのクロック信号を伝播する半導体集積回路内の少なくとも一部のクロックパスと、
前記クロックパスに接続されているデータ保持素子群と、
前記データ保持素子群の各データ保持素子へ前記クロック信号を出力するゲート段数１段の反転論理であるクロックバッファと、
を備えることを特徴とする半導体集積回路。
【００８９】
（付記１０）前記データ保持素子は、
前記クロック供給源から当該データ保持素子の入力元であるクロックバッファまでのゲート段数が、偶数段の場合、前記クロック信号の立ち上がりエッジに同期してデータを取り込み、奇数段の場合、前記クロック信号の立ち下がりエッジに同期してデータを取り込むことを特徴とする付記９に記載の半導体集積回路。
【符号の説明】
【００９０】
２０１  第１のＦＦ
２０２  第２のＦＦ
３０１  クロックバッファ
４００，７００，８００，９００  レイアウトデータ
【国際調査報告】
2010140216.tif 000015
2010140216.tif 000016