(57)【要約】【課題】ＦＦを容易に配置すること。【解決手段】本発明は、コンピュータが実行する回路設計方法、回路設計プログラムおよび回路設計装置であって、複数の第１フリップフロップを、クロック周波数ごとに複数の第１グループにグループ分けするステップＳ２０と、前記複数の第１グループごとに、前記複数の第１フリップフロップにリセット信号を供給する第２フリップフロップを配置するステップＳ２２と、を含む回路設計方法、回路設計プログラムおよび回路設計装置である。【選択図】図５
2014102640.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが実行する回路設計方法であって、
複数の第１フリップフロップを、クロック周波数ごとに複数の第１グループにグループ分けするステップと、
前記複数の第１グループごとに、前記複数の第１フリップフロップにリセット信号を供給する第２フリップフロップを配置するステップと、
を含むことを特徴とする回路設計方法。
【請求項２】
前記第２フリップフロップを配置するステップは、前記複数の第１グループのうち少なくとも一つの第１グループに含まれる前記複数の第１フリップフロップの座標に基づき、前記少なくとも一つの第１グループに対応する前記第２フリップフロップを配置するステップを含むことを特徴とする請求項１記載の回路設計方法。
【請求項３】
前記第２フリップフロップを配置するステップは、前記少なくとも一つの第１グループに含まれる前記複数の第１フリップフロップの平均座標に、前記少なくとも一つの第１グループに対応する前記第２フリップフロップを配置するステップを含むことを特徴とする請求項２記載の回路設計方法。
【請求項４】
前記第２フリップフロップに前記リセット信号を供給する第３フリップフロップから前記第２フリップフロップへの前記リセット信号の遅延時間が所望値を満足しない場合、前記第２フリップフロップの配置位置を前記第３フリップフロップに近づけるステップを含むことを特徴とする請求項２または３記載の回路設計方法。
【請求項５】
前記第２フロップフリップから対応する第１グループに含まれる前記複数の第１フリップフロップへの前記リセット信号の遅延時間が所望値を満足しない場合、前記対応する第１グループを複数の第２グループにグループ分けするステップと、
前記複数の第２グループごとに、前記第２フリップフロップを配置するステップと、
を含むことを特徴とする請求項１から４のいずれか一項記載の回路設計方法。
【請求項６】
コンピュータに、
複数の第１フリップフロップを、クロック周波数ごとに複数の第１グループにグループ分けさせ、
前記複数の第１グループごとに、前記複数の第１フリップフロップにリセット信号を供給する第２フリップフロップを配置させることを特徴とする回路設計プログラム。
【請求項７】
複数の第１フリップフロップを、クロック周波数ごとに複数の第１グループにグループ分けする第１ユニットと、
前記複数の第１グループごとに、前記複数の第１フリップフロップにリセット信号を供給する第２フリップフロップを配置する第２ユニットと、
を具備することを特徴とする回路設計装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回路設計方法、回路設計プログラムおよび回路設計装置に関し、例えば、フリップフロップを配置する回路設計方法、回路設計プログラムおよび回路設計装置に関する。
【背景技術】
【０００２】
高集積回路には、複数のクロック周波数で動作する複数のフリップフロップ（ＦＦ：Flip Flop）が用いられている。ＦＦはリセット信号によりリセットされる。ＦＦを複数のグループに分けて配置することが知られている（例えば、特許文献１から３）
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平３−４３８１１号公報
【特許文献２】特開２００５−１８２３７８号公報
【特許文献３】特開平７−１４２９６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
異なるクロック周波数が供給される複数のＦＦにリセット信号を分配すると、クロックスキューが生じることがある。例えば、クロックスキューがクロック周期を越えてしまうと、ＦＦが正常に動作しない。このように、クロックスキューがクロック周期を越えないように、集積回路上のＦＦの配置を行なう。しかしながら、クロックスキューを所定内に収めるようにＦＦを配置することが難しくなることがある。
【０００５】
本回路設計方法、回路設計プログラムおよび回路設計装置は、ＦＦを容易に配置することを目的とする。
【課題を解決するための手段】
【０００６】
複数の第１フリップフロップを、クロック周波数ごとに複数の第１グループにグループ分けするステップと、前記複数の第１グループごとに、前記複数の第１フリップフロップにリセット信号を供給する第２フリップフロップを配置するステップと、を含むことを特徴とする回路設計方法、回路設計プログラムおよび回路設計方法を用いる。
【発明の効果】
【０００７】
本回路設計方法、回路設計プログラムおよび回路設計装置によれば、ＦＦを容易に配置することができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、クロックツリーについて説明する図である。
【図２】図２は、同期リセット回路について説明する図である。
【図３】図３は、実施例１に係る回路設計装置として機能するコンピュータのブロック図である。
【図４】図４は、実施例１が用いられる集積回路の設計フローを示すフローチャートである。
【図５】図５は、実施例１に係る回路設計方法を示すフローチャートである。
【図６】図６は、実施例１に係る回路設計方法により配置されたＦＦの同期リセット回路を示す図である。
【図７】図７は、実施例２に係る回路設計方法を示すフローチャートである。
【図８】図８（ａ）から図８（ｆ）は、データ構造を示す図である。
【図９】図９（ａ）から図９（ｃ）は、ＦＦの配置を示す図である。
【図１０】図１０は、余裕時間を説明する図である。
【図１１】図１１は、図７のステップＳ４２における回路設計方法を示すフローチャートである。
【図１２】図１２（ａ）から図１２（ｃ）は、ＦＦの配置を示す図である。
【図１３】図１３は、データ構造を示す図である。
【図１４】図１４は、図１１のステップＳ６０における回路設計方法を示すフローチャートである。
【図１５】図１５（ａ）から図１５（ｃ）は、ＦＦの配置を示す図である。
【図１６】図１６は、データ構造を示す図である。
【発明を実施するための形態】
【０００９】
図１は、クロックツリーについて説明する図である。図１を参照し、１つの集積回路１００には、例えば数万から数百万個の第１ＦＦ３１および３２が配置される。ＰＬＬ（Phase
Locked Loop）等の発振器３９は、クロックを出力する。ＦＦ３４は、第１ＦＦ３１に高周波数クロック信号ＣＫＨを供給するＦＦである。ＦＦ３４のクロック端子ＣＫにクロックが入力する。ＦＦ３４の出力端子Ｑから出力された信号はインバータ３７を介しＦＦ３４のデータ端子Ｄに入力する。これにより、ＦＦ３４は、発振器３９の出力信号を１回分周して出力する。ＦＦ３４の出力は、各第１ＦＦ３１のクロック端子ＣＫに入力する。ＦＦ３５は、第１ＦＦ３２に低周波数クロック信号ＣＫＬを供給するＦＦである。ＦＦ３５のクロック端子ＣＫにＦＦ３４の出力が入力する。ＦＦ３５の出力端子Ｑから出力された信号はインバータ３７を介しＦＦ３５のデータ端子Ｄに入力する。これにより、ＦＦ３５は、ＦＦ３４の出力信号を１回分周して出力する。ＦＦ３５の出力は、各第１ＦＦ３２のクロック端子ＣＫに入力する。バッファ３８は、クロック信号の駆動能力を向上させる。
【００１０】
以上により、第１ＦＦ３１には、発振器３９の発振周波数の１／２の周波数の高周波数クロック信号ＣＫＨが入力する。第１ＦＦ３２には、発振器３９の発振周波数の１／４の低周波数クロック信号ＣＫＬが入力する。集積回路１００には、発振器３９の発振周波数の１／８、１／１６等の３以上の周波数のクロック信号が用いられる場合もある。しかしながら、簡単に説明するため、以下の実施例においては、２つのクロック周波数の場合を例に説明する。
【００１１】
図２は、同期リセット回路について説明する図である。図１において説明したように第１ＦＦ３１および３２は、クロック周波数が異なる。図２を参照し、第１ＦＦ３１は高周波数クロック信号ＣＫＨで動作し、第１ＦＦ３２は低周波数クロック信号ＣＫＬで動作する。第２ＦＦ３３は、クロック端子ＣＫに高周波数クロック信号ＣＫＨが入力し、第１ＦＦ３１および３２のリセット端子Ｒにリセット信号Ｒｅｓｅｔを供給する。リセット信号Ｒｅｓｅｔは、ＦＦ間のリセットの同期をとるための同期リセット信号である。バッファ３５は、リセット信号Ｒｅｓｅｔの駆動能力を向上させる。
【００１２】
図１のように、周波数の異なるクロック信号は、クロック信号の生成場所が異なる。また、駆動する第１ＦＦ３１および３２の数が異なる。また、低周波数クロック信号ＣＫＬは、高周波数クロック信号ＣＫＨから生成される。これらにより、周波数の異なるクロック信号間でクロックスキューが発生し易くなる。これにより、ＦＦを集積回路に配置する際に、クロック信号のタイミング収束が難しくなる。例えば、クロック信号のタイミングが規定内に収まるようＦＦを配置することが難しくなる。さらに、リセット信号の収束も難しくなる。例えば、リセット信号のタイミングが規定内に収まるようＦＦを配置することが難しくなる。よって、集積回路上へのＦＦの配置が難しくなる
【００１３】
以下に、集積回路上へのＦＦの配置を容易とする実施例について説明する。
【実施例１】
【００１４】
図３は、実施例１に係る回路設計装置として機能するコンピュータのブロック図である。コンピュータ１０は、回路設計方法および回路設計プログラムを実行する。コンピュータ１０は、プロセッサであるＣＰＵ（Central
Processing Unit）１１、表示装置１２、入力装置１３および出力装置１４を備えている。さらに、コンピュータ１０は、主記憶装置１５、ハードディスクドライブ（ＨＤＤ）１６、記憶媒体用ドライブ１７、通信インターフェース１８および内部バス１９を備えている。表示装置１２は、例えば液晶パネル等の表示パネルを含み、処理結果等を表示する。入力装置１３は、例えばキーボード、マウスおよびタッチパネル等であり、処理データ等を入力する。出力装置１４は、例えばプリンタであり、処理結果等を出力する。主記憶装置１５は、例えばＤＲＡＭ（Dynamic
Random Access Memory）等の揮発性メモリであり、処理中のデータを記憶する。ＨＤＤ１６は、例えば処理中または処理後のデータを記憶する。記憶媒体用ドライブ１７は、記憶媒体２１に格納されたプログラムをインストールする際に用いる。または、処理後のデータを記憶媒体２１に記憶させる。通信インターフェース１８は、他のコンピュータ２０と接続し、他のコンピュータ２０とデータの送受信を行なう。内部バス１９は、コンピュータ１０内の各装置を接続する。コンピュータ１０は、ソフトウエアと協働し、第１ユニットおよび第２ユニットとして機能する。
【００１５】
プログラムを格納するコンピュータ１０が読み取り可能な記憶媒体２１として可搬型記憶媒体を用いることができる。可搬型記憶媒体としては、例えば、ＣＤ−ＲＯＭ（Compact
Disc Read Only Memory）ディスク、ＤＶＤ（Digital Video Disc）ディスク、ブルーレイディスクまたはＵＳＢ（Universal
Serial Bus）メモリ等を用いることができる。記憶媒体２１として、フラッシュメモリまたはＨＤＤ等を用いてもよい。
【００１６】
図４は、実施例１が用いられる集積回路の設計フローを示すフローチャートである。図４を参照し、ＦＦのネットワークを示すネットリストと、ＦＦのクロック周波数および位置情報を含むＳＤＣ（Synopsys
Design Constraints）等を用い初期のＦＦ配置を行なう（ステップＳ１０）。例えば、フロアプランを用い、ハードマクロの位置を検証し、ネットリスト上の全てのセルの配置をフレーム上に実施する。次に、ＣＴＳ（Clock
Tree Synthesys）前のＦＦ配置の最適化を行なう（ステップＳ１２）。例えば、クロックが同期したレジスタおよびハードマクロにクロック信号のスキューが０として、ＤＲＣ（Design
Rule Check）のエラー修正、タイミングの最適化、面積の削減および消費電力ー削減を行なう。次に、クロックツリーを作成する（ステップＳ１４）。例えば、クロック信号用のバッファ等を配置する。
【００１７】
次に、ＣＴＳ後のデータに最適化を行なう（ステップＳ１６）。クロック信号のスキューは実際の値となる。この状態で、ＤＲＣのエラー修正、タイミングの最適化、面積の削減および消費電力ー削減を行なう。次に、データに対して配線処理を行なう（ステップＳ１８）。例えば、各セルおよび各ハードマクロのデジタル信号端子に対し、タイミングを考慮しながら、配線処理を行なう。これにより、ソフトウエア上において各セルおよび各ハードマクロが物理的な配線で繋がる。
【００１８】
実施例１および２は、例えばステップＳ１２および／またはＳ１６におけるタイミングの最適化において用いられる。
【００１９】
図５は、実施例１に係る回路設計方法を示すフローチャートである。図６は、実施例１に係る回路設計方法により配置されたＦＦの同期リセット回路を示す図である。複数の第１ＦＦ３１が配置されている。図５および図６に示すように、第１ユニットは、配置された複数の第１ＦＦ３１および３２を、クロック周波数ごとの第１グループ４１および４２にグループ分けする（ステップＳ２０）。例えば第１グループ４１内の第１ＦＦ３１は、高周波数クロック動作するＦＦであり、第１グループ４２内の第１ＦＦ３２は、低周波数クロック動作するＦＦである。第２ユニットは、第１グループ４１および４２ごとに複数の第１ＦＦ３１および３２にリセット信号Ｒｅｓｅｔを供給する第２ＦＦ３３ａから３３ｃを配置する（ステップＳ２２）。例えば、第１グループ４１は、さらに第２グループ４３および４４に分割されている。第２グループ４３内の第１ＦＦ３１は、第２ＦＦ３３ａの出力端子からリセット信号Ｒｅｓｅｔの供給を受ける。第２グループ４４内の第１ＦＦ３１は、第２ＦＦ３３ｂの出力端子からリセット信号Ｒｅｓｅｔの供給を受ける。第１グループ４２内の第１ＦＦ３２は、第２ＦＦ３３ｃの出力端子からリセット信号Ｒｅｓｅｔの供給を受ける。
【００２０】
実施例１によれば、クロック周波数ごとに複数の第１ＦＦ３１および３２にリセット信号Ｒｅｓｅｔを供給する第２ＦＦ３３ａから３３ｃを配置する。これにより、リセット信号のタイミングが収束しやすくなる。よって、第２ＦＦ３３ａから３３ｃの配置が容易となる。
【実施例２】
【００２１】
実施例２は、実施例１の具体例である。実施例２として機能するコンピュータは、実施例１の図３と同じであり説明を省略する。実施例２が用いられる集積回路の設計フローを示すフローチャートは、実施例１の図４と同じであり説明を省略する。
【００２２】
図７は、実施例２に係る回路設計方法を示すフローチャートである。図８（ａ）から図８（ｆ）は、データ構造を示す図である。図９（ａ）から図９（ｃ）は、ＦＦの配置を示す図である。図７を参照し、コンピュータ１０はネットリスト、ＳＤＣ、ＤＥＦ（Definition）、Ｌｉｂ（Library）を用い、以下のフローを行なう。ＤＥＦは、セルの配置座標、電源配線、信号配線の情報を含む。Ｌｉｂは、セルの遅延時間、セットアップおよびホールド等の規格値、電力情報を含む。コンピュータ１０は、第１ＦＦ３１および３２並びに第２ＦＦ３３を配置する（ステップＳ３０）。例えば、図８（ａ）に示すように、コンピュータ１０は、集積回路全体のリセットおよびプリセット付き第１ＦＦを抽出する。図８（ａ）の例では、第１ＦＦ３１は、Ｒｅｇ１からＲｅｇ４であり、それぞれのクロック周波数は２７０ＭＨｚ、２７０ＭＨｚ、６０ＭＨｚおよび６０ＭＨｚである。位置情報は、各第１ＦＦ３１が配置される座標を示しており、例えばＸ座標およびＹ座標を示している。コンピュータ１０は、第１ＦＦ、周波数及び位置情報を例えばＨＤＤ１６内のデータベースに記憶する。図８（ｂ）に示すように、第１ＦＦ３１にリセット信号を供給する第２ＦＦ３３を抽出する。第２ＦＦ３３は、Ｒｅｇ０１であり、クロック周波数は２７０ＭＨｚである。コンピュータ１０は、第２ＦＦ、周波数及び位置情報をデータベースに記憶する。図９（ａ）に示すように、第１ＦＦ３１および第２ＦＦ３３を配置する。第２ＦＦ３３の前段のＦＦは第３ＦＦ５０である。
【００２３】
コンピュータ１０は、第１ＦＦ３１と第２ＦＦ３３との位置情報と、ファンアウト（Ｆ／Ｏ）数と、から、バッファ３６を配置した後の遅延時間を予想する。図８（ｃ）は、遅延時間の予想のためのテーブル例である。図８（ｃ）に示すように、第２ＦＦ３３から第１ＦＦ３１を接続する配線の総配線長と第２ＦＦ３３のファンアウト数と、リセット信号Ｒｅｓｅｔの遅延時間と、が対応付けられている。図８（ｃ）のテーブルは、例えばＨＤＤ１６にデータベースとして記憶されている。これにより、第２ＦＦ３３に接続される総配線長およびファンアウト数が決まれば、遅延時間が予想できる。なお、図８（ｃ）のテーブルは、例えばバッファ３６を配置した後のものである。図８（ｄ）に示すように、第２ＦＦ３３であるＲｅｇ０１から第１ＦＦ３１であるＲｅｇ１からＲｅｇ４へのリセット信号の遅延時間はそれぞれ８ｎｓと予想される。コンピュータ１０は、遅延時間をデータベースに記憶する。
【００２４】
図７を参照し、コンピュータ１０は、各第１ＦＦ３１における遅延時間が所望値を満足するかを判断する（ステップＳ３２）。例えば、コンピュータ１０は、予想した各第１ＦＦ３１の予想遅延時間がタイミングコンストレイントに違反するかを判断する。違反する場合Ｎｏと判断する。違反しない場合Ｙｅｓと判断する。ここで、タイミングコンストレイントは、各ＦＦにおけるリセット信号等のタイミングの許容範囲を規定したものである。Ｙｅｓの場合、終了する。Ｎｏの場合、コンピュータ１０は、再度、第２ＦＦ３３を配置する（ステップＳ３４）。
【００２５】
例えば、コンピュータ１０は、第２ＦＦ３３の第３ＦＦ５０とのタイミングの余裕時間を取得する。図１０は、余裕時間を説明する図である。図１０に示すように、第１ＦＦ３１にリセット信号Ｒｅｓｅｔを供給する第２ＦＦ３３のデータ端子Ｄには、前段の第３ＦＦ５０の出力端子Ｑからの信号が入力する。コンピュータ１０は、第３ＦＦ５０と第２ＦＦ３３とを接続する配線長Ｔ１から信号の遅延時間を算出する。コンピュータ１０は、第２ＦＦ３３に許容されるタイミングとの余裕時間を算出する。余裕時間は、第３ＦＦ５０から第２ＦＦ３３への信号がさらに余裕時間以上遅延すると許容できないことを示している。図１０のように、第３ＦＦ５０から第２ＦＦ３３までの経路が複数ある場合は、最も余裕時間の小さい時間を余裕時間とする。図８（ｅ）に示すように、第２ＦＦ３３であるＲｅｇ０１の余裕時間は、例えば１．２ｎｓである。コンピュータ１０は、余裕時間をデータベースに記憶する。
【００２６】
コンピュータ１０は、図９（ｂ）に示すように、第２ＦＦ３３を第１ＦＦ３１の平均座標５５に配置する。例えば第１ＦＦ３１のＸ座標およびＹ座標のそれぞれの平均を平均座標５５とする。図８（ｆ）に示すように、第２ＦＦ３３の位置情報は、第１ＦＦ３１であるＲｅｇ１からＲｅｇ４の平均座標となる。コンピュータ１０は、余裕時間を算出する。図９（ｂ）においては、図９（ａ）に比べ、第２ＦＦ３３と第３ＦＦ５０との距離が長くなる。よって、図８（ｅ）に比べ図８（ｆ）は、余裕時間が短くなる。コンピュータ１０は、余裕時間をデータベースに記憶する。
【００２７】
図７を参照し、コンピュータ１０は、余裕時間が所望値を満足するかを判断する（ステップＳ３６）。すなわち、コンピュータ１０は、第３ＦＦ５０から第２ＦＦ３３への遅延時間が所望値を満足するか判断する。例えば、コンピュータ１０は、余裕時間がタイミングコンストレイントに違反する場合、Ｎｏと判断する。違反しない場合、Ｙｅｓと判断する。Ｙｅｓの場合ステップＳ４０に進む。Ｎｏの場合、コンピュータ１０は、第２ＦＦ３３を移動する（ステップＳ３８）。ステップＳ３６に戻る。図９（ｃ）に示すように、例えば、コンピュータ１０は、第２ＦＦ３３を、余裕時間が改善するように、所定距離移動させる。例えば最小グリッド移動させる。これにより、第２ＦＦ３３は、余裕時間が所望値を満足する程度まで、第３ＦＦ５０に近づく。第３ＦＦ５０から第２ＦＦ３３に接続する配線長が短くなる。図９（ｃ）に示すように、第２ＦＦ３３の座標は、平均座標５５から座標５６に移動する。ステップＳ３８を複数回実行しても余裕時間が所望値を満足しない場合は、図９（ｂ）の第２ＦＦ３３の位置に戻ることもある。
【００２８】
ステップＳ４０において、コンピュータ１０は、各第１ＦＦ３１における遅延時間が所望値を満足するかを判断する。例えば、コンピュータ１０は、第２ＦＦ３３が第１ＦＦ３１を接続する総配線長および第２ＦＦ３３のファンアウト数から各第１ＦＦ３１の遅延時間を予想する。コンピュータ１０は、予想した各第１ＦＦ３１の予想遅延時間がタイミングコンストレイントに違反するかを判断する。違反する場合Ｎｏと判断する。違反しない場合Ｙｅｓと判断する。Ｙｅｓの場合、終了する。Ｎｏの場合、ステップＳ４２に進む。
【００２９】
ステップＳ４２において、コンピュータ１０はクロック周波数ごとに第２ＦＦ３３を配置する。その後終了する。
【００３０】
図１１は、図７のステップＳ４２における回路設計方法を示すフローチャートである。図１２（ａ）から図１２（ｃ）は、ＦＦの配置を示す図である。図１３は、データ構造を示す図である。図１１を参照し、コンピュータ１０は、第１ＦＦをクロック周波数ごとに第１グループに分割する（ステップＳ５０）。例えば、図１２（ａ）に示すように、第１ＦＦとして、高周波数クロック動作するＦＦ３１と低周波数クロック動作するＦＦ３２とが配置されている。第１ＦＦ３１および３２には、同じ第２ＦＦ３３からリセット信号が供給されている。コンピュータ１０は、第１ＦＦをＦＦ３１を含む第１グループ４１とＦＦ３２を含む第１グループ４２とに分割する。
【００３１】
図１１を参照し、ステップＳ５２からＳ６０は、第１グループごとに行なうが、以下の説明では、第１グループ４１および４２についてまとめて説明する。また、第１グループの数が２つの場合を例に説明するが、第１グループの数は３以上でもよい。コンピュータ１０は、第２ＦＦ３３ａおよび３３ｃを配置する（ステップＳ５２）。図１２（ｂ）に示すように、コンピュータ１０は、第１グループ４１に対応し第２ＦＦ３３ａを配置し、第１グループ４２に対応し第２ＦＦ３３ｃを配置する。第２ＦＦ３３ｃは、第２ＦＦ３３ａのクローンである。例えば、第２ＦＦ３３ｃは第２ＦＦ３３ａと同じ仕様のＦＦである。第２ＦＦ３３ａおよび３３ｃは、それぞれ第１ＦＦ３１および３２にリセット信号を供給する。コンピュータ１０は、第２ＦＦ３３ａおよび３３ｃを、例えばそれぞれ第１ＦＦ３１および３２の平均座標５７および５８に配置する。コンピュータ１０は、第２ＦＦ３３ａおよび３３ｃの余裕時間を算出する。
【００３２】
図１１を参照し、コンピュータ１０は、余裕時間が所望値を満足するかを判断する（ステップＳ５４）。すなわち、第３ＦＦ５０から第２ＦＦ３３ａおよび３３ｃへの遅延時間が所望値を満足するか判断する。例えば、コンピュータ１０は、余裕時間がタイミングコンストレイントに違反する場合、Ｎｏと判断する。違反しない場合、Ｙｅｓと判断する。Ｙｅｓの場合ステップＳ５８に進む。Ｎｏの場合、コンピュータ１０は、第２ＦＦ３３ａおよび３３ｃを移動する（ステップＳ５６）。ステップＳ５４に戻る。図１２（ｃ）に示すように、例えば、コンピュータ１０は、第２ＦＦ３３ａおよび３３ｃを余裕時間が改善するように、所定距離移動させる。例えば最小グリッド移動させる。これにより、第２ＦＦ３３ａおよび３３ｃは、余裕時間が所望値を満足する程度まで、第３ＦＦ５０に近づく。図１２（ｃ）に示すように、第２ＦＦ３３ａおよび３３ｃの座標は、それぞれ平均座標５７および５８から座標５９および６０に移動する。ステップＳ５６を複数回実行しても余裕時間が所望値を満足しない場合は、図１２（ｂ）の第２ＦＦ３３ａおよび３３ｃの位置に戻ることもある。
【００３３】
ステップＳ５８において、コンピュータ１０は、各第１ＦＦ３１および３２における遅延時間が所望値を満足するかを判断する。例えば、コンピュータ１０は、各第２ＦＦ３３ａおよび３３ｃが各第１ＦＦ３１および３２を接続する総配線長および各第２ＦＦ３３ａおよび３３ｃのファンアウト数から各第１ＦＦ３１および３２の遅延時間を予想する。コンピュータ１０は、予想した各第１ＦＦ３１および３２の予想遅延時間がタイミングコンストレイントに違反するかを判断する。違反する場合Ｎｏと判断する。違反しない場合Ｙｅｓと判断する。Ｙｅｓの場合、ステップＳ６２に進む。Ｎｏの場合、ステップＳ６０に進む。
【００３４】
ステップＳ６０において、コンピュータ１０は、第１グループ４１および４２を第２グループに分割し、第２グループごとに第２ＦＦを配置する。その後、ステップＳ６２に進む。
【００３５】
ステップＳ６２において、コンピュータ１０は、最後の第１グループか判断する。例えば、全ての第１グループ（クロック周波数）の第２ＦＦの配置が終了した場合、Ｙｅｓと判断する。Ｙｅｓの場合終了し、図７に戻る。Ｎｏの場合、次の第１グループとする（ステップＳ６４）。例えば、コンピュータ１０は、次のクロック周波数の第１グループに対しステップＳ５２からＳ６０を実行する。
【００３６】
図１３に示すように、クロック周波数が２７０ＭＨｚのＲｅｇ１からＲｅｇ３にリセット信号を供給する第２ＦＦ３３ａであるＲｅｇ０１が設けられる。さらに、クロック周波数が６６ＭＨｚのＲｅｇ４から６にリセット信号を供給するＲｅｇ０２とが設けられる。Ｒｅｇ１からＲｅｇ３は第１ＦＦ３１であり、Ｒｅｇ４からＲｅｇ６は第１ＦＦ３２である。Ｒｅｇ０１は第２ＦＦ３３ａであり、Ｒｅｇ０２は第２ＦＦ３３ｃである。コンピュータ１０は、第２ＦＦ３３ａおよび３３ｃの位置情報、余裕時間、各第１ＦＦの遅延時間をデータベースに記憶する。
【００３７】
図１４は、図１１のステップＳ６０における回路設計方法を示すフローチャートである。図１５（ａ）から図１５（ｃ）は、ＦＦの配置を示す図である。図１６は、データ構造を示す図である。図１５（ａ）から図１５（ｃ）および図１６は、第１グループ４２の第１ＦＦ３２については記載を省略している。図１４を参照し、コンピュータ１０は、第１ＦＦ３１を座標に基づき複数の第２グループ４３および４４に分割する（ステップＳ７０）。例えば、図１５（ａ）に示すように、複数の第１ＦＦ３１と、複数の第１ＦＦ３１にリセット信号を供給する１つの第２ＦＦ３３が配置されている。コンピュータ１０は、第１ＦＦ３１の座標に基づき第１ＦＦ３１が含まれる第１グループ４１を複数の第２グループ４３および４４に分割する。例えば、コンピュータ１０は、第１ＦＦ３１の平均座標（Ｘａ、Ｙａ）を算出する。コンピュータ１０は、Ｙ座標がＹａより大きい第１ＦＦ３１を第２グループ４３とし、Ｙ座標がＹａより小さい第１ＦＦ３１を第２グループ４４とする。
【００３８】
図１４を参照し、ステップＳ７２からＳ８０は、第２グループ４３および４４ごとに行なうが、以下の説明では、第２グループ４３および４４についてまとめて説明する。また、第２グループの数が２つの場合について説明するが、第２グループの数は３以上でもよい。コンピュータ１０は、第２ＦＦ３３ａおよび３３ｂを配置する（ステップＳ７２）。図１５（ｂ）に示すように、第２グループ４３に対応し第２ＦＦ３３ａを配置し、第２グループ４４に対応し第２ＦＦ３３ｂを配置する。第２ＦＦ３３ｂは、第２ＦＦ３３ａのクローンである。例えば、第２ＦＦ３３ｂは第２ＦＦ３３ａと同じ仕様のＦＦである。コンピュータ１０は、第２ＦＦ３３ａおよび３３ｂを、例えばそれぞれ第２グループ４３および４４に含まれる第１ＦＦ３１の平均座標６２および６３に配置する。コンピュータ１０は、余裕時間を算出する。
【００３９】
図１４を参照し、コンピュータ１０は、余裕時間が所望値を満足するかを判断する（ステップＳ７４）。すなわち、第３ＦＦ５０から第２ＦＦ３３ａおよび３３ｂへの遅延時間が所望値を満足するか判断する。例えば、コンピュータ１０は、余裕時間がタイミングコンストレイントに違反する場合、Ｎｏと判断する。違反しない場合、Ｙｅｓと判断する。Ｙｅｓの場合ステップＳ７８に進む。Ｎｏの場合、コンピュータ１０は、第２ＦＦ３３ａおよび３３ｂを移動する（ステップＳ７６）。ステップＳ７４に戻る。図１５（ｃ）に示すように、例えば、コンピュータ１０は、第２ＦＦ３３ａおよび３３ｂを余裕時間が改善するように、所定距離移動させる。例えば最小グリッド移動させる。これにより、第２ＦＦ３３ａおよび３３ｂは、余裕時間が所望値を満足する程度まで、第３ＦＦ５０に近づく。図１５（ｃ）に示すように、第２ＦＦ３３ａおよび３３ｂの座標は、それぞれ平均座標６２および６３から座標６４および６５に移動する。ステップＳ７６を複数回実行しても余裕時間が所望値を満足しない場合は、図１５（ｂ）の第２ＦＦ３３ａおよび３３ｂの位置に戻ることもある。
【００４０】
ステップＳ７８において、コンピュータ１０は、各第１ＦＦ３１における遅延時間が所望値を満足するかを判断する。例えば、コンピュータ１０は、各第２ＦＦ３３ａおよび３３ｂが各第１ＦＦ３１を接続する総配線長および各第２ＦＦ３３ａおよび３３ｂのファンアウト数から各第１ＦＦ３１の遅延時間を予想する。コンピュータ１０は、予想した各第１ＦＦ３１の予想遅延時間がタイミングコンストレイントに違反するかを判断する。違反する場合Ｎｏと判断する。違反しない場合Ｙｅｓと判断する。Ｙｅｓの場合、ステップＳ８２に進む。Ｎｏの場合、ステップＳ８０に進む。
【００４１】
ステップＳ８０において、コンピュータ１０は、ＦＦの配置が難しくフロアプラン等の見直しを推奨する報告を行なう。その後、終了する。
【００４２】
ステップＳ８２において、コンピュータ１０は、最後の第２グループか判断する。例えば、全ての第２グループの第２ＦＦの配置が終了した場合、Ｙｅｓと判断する。Ｙｅｓの場合終了し、図１２に戻る。Ｎｏの場合、次の第２グループとする（ステップＳ８４）。例えば、コンピュータ１０は、次の第２グループに対しステップＳ５２からＳ６０を実行する。
【００４３】
図１６に示すように、第１グループ４１に含まれるクロック周波数が２７０ＭＨｚのＲｅｇ１からＲｅｇ４を第２グループ４３および４４に分割する。第２グループ４３にはＲｅｇ０３を設け、第２グループ４４にはＲｅｇ０４を設ける。Ｒｅｇ１からＲｅｇ４は第１ＦＦ３１であり、Ｒｅｇ０３は第２ＦＦ３３ａであり、Ｒｅｇ０４は第２ＦＦ３３ｂである。コンピュータ１０は、第２ＦＦ３３ａおよび３３ｂの位置情報、余裕時間、各第１ＦＦの遅延時間およびグループをデータベースに記憶する。
【００４４】
実施例２によれば、図１１のステップＳ５０のように配置された複数の第１ＦＦ３１および３２を、クロック周波数ごとに複数の第１グループ４１および４２にグループ分けする。ステップＳ５２のように複数の第１グループ４１および４２ごとに複数の第１ＦＦ３１および３２にリセット信号を供給する第２ＦＦ３３ａおよび３３ｃを配置する。これにより、実施例１と同様に、クロック周波数ごとに、リセット信号のタイミングが収束しやすくなる。
【００４５】
また、図１２（ｂ）に示すように、第１グループ４１および４２に含まれる複数の第１ＦＦ３１および３２の座標に基づき、それぞれ第１グループ４１および４２に対応する第２ＦＦ３３ａおよび３３ｃを配置する。なお、複数の第１グループの少なくとも一つの第１グループ４１または４２について、第１ＦＦ３１または３２に基づき、第２ＦＦ３３ａまたは３３ｃを配置してもよい。これにより、第２ＦＦから第１ＦＦへのリセット信号の遅延時間を短くできる。例えば、少なくとも一つの第１グループ４１または４２に含まれる複数の第１ＦＦ３１または３２の平均座標に、少なくとも一つの第１グループ４１または４２に対応する第２ＦＦ３３ａまたは３３ｃを配置する。
【００４６】
さらに、図１２（ｃ）に示すように、第３ＦＦ５０から第２ＦＦ３３ａおよび３３ｃへのリセット信号の遅延時間が所望値を満足しない場合、第２ＦＦ３３ａおよび３３ｃの配置位置を第３ＦＦ５０に近づける。これにより、第３ＦＦ５０から第２ＦＦ３３ａおよび３３ｃへのリセット信号の遅延時間を短くできる。
【００４７】
さらに、図１４のステップＳ７０のように、第２ＦＦ３３から第１グループ４１に含まれる複数の第１ＦＦ３１へのリセット信号の遅延時間が所望値を満足しない場合、第１グループ４１を複数の第２グループ４３および４４にグループ分けする。これにより、第２ＦＦ３３から第１ＦＦ４１へのリセット信号の遅延時間をより短くできる。例えば、対応する第１グループ４１に含まれる複数の第１ＦＦ３１の座標に基づき、複数の第２グループ４３および４４にグループ分けする。第２グループ４３および４４のグループ分けは、例えば第１ＦＦ３１の平均座標に基づき行なうことができる。
【００４８】
さらに、図１５（ｂ）に示すように、第２グループ４３および４４ごとに、第２ＦＦ３３ａおよび３３ｂを配置する。これにより、第２ＦＦから第１ＦＦへのリセット信号の遅延時間を短くできる。例えば、複数の第２グループ４３および４４に含まれる複数の第１ＦＦ３１の座標に基づき、それぞれ第２グループ４３および４４に対応する第２ＦＦ３３ａまたは３３ｂを配置する。なお、複数の第２グループの少なくとも一つの第１グループ４３または４４について、第１ＦＦ３１の座標に基づき、第２ＦＦ３３ａまたは３３ｂを配置してもよい。例えば、少なくとも一つの第２グループ４３または４４に含まれる複数の第１ＦＦ３１の平均座標に、少なくとも一つの第２グループ４３または４４に対応する第２ＦＦ３３ａまたは３３ｂを配置する。
【００４９】
さらに、図１５（ｃ）に示すように、第３ＦＦ５０から第２ＦＦ３３ａおよび３３ｂへのリセット信号の遅延時間が所望値を満足しない場合、第２ＦＦ３３ａおよび３３ｂの配置位置を第３ＦＦ５０に近づける。これにより、第３ＦＦから第２ＦＦへのリセット信号の遅延時間を短くできる。
【００５０】
以上、発明の好ましい実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【００５１】
なお、以上の説明に関して更に以下の付記を開示する。
（付記１）：コンピュータが実行する回路設計方法であって、複数の第１フリップフロップを、クロック周波数ごとに複数の第１グループにグループ分けするステップと、前記複数の第１グループごとに、前記複数の第１フリップフロップにリセット信号を供給する第２フリップフロップを配置するステップと、を含むことを特徴とする回路設計方法。
（付記２）：前記第２フリップフロップを配置するステップは、前記複数の第１グループのうち少なくとも一つの第１グループに含まれる前記複数の第１フリップフロップの座標に基づき、前記少なくとも一つの第１グループに対応する前記第２フリップフロップを配置するステップを含むことを特徴とする付記１記載の回路設計方法。
（付記３）：前記第２フリップフロップを配置するステップは、前記少なくとも一つの第１グループに含まれる前記複数の第１フリップフロップの平均座標に、前記少なくとも一つの第１グループに対応する前記第２フリップフロップを配置するステップを含むことを特徴とする付記２記載の回路設計方法。
（付記４）：前記第２フリップフロップに前記リセット信号を供給する第３フリップフロップから前記第２フリップフロップへの前記リセット信号の遅延時間が所望値を満足しない場合、前記第２フリップフロップの配置位置を前記第３フリップフロップに近づけるステップを含むことを特徴とする付記２または３記載の回路設計方法。
（付記５）：前記第２フロップフリップから対応する第１グループに含まれる前記複数の第１フリップフロップへの前記リセット信号の遅延時間が所望値を満足しない場合、前記対応する第１グループを複数の第２グループにグループ分けするステップと、前記複数の第２グループごとに、前記第２フリップフロップを配置するステップと、を含むことを特徴とする付記１から４のいずれか一項記載の回路設計方法。
（付記６）：前記対応する第１グループを複数の第２グループにグループ分けするステップは、前記対応する第１グループに含まれる前記複数の第１フリップフロップの座標に基づき、前記複数の第２グループにグループ分けするステップを含むことを特徴とする付記５記載の回路設計方法。
（付記７）：前記複数の第２グループごとに、前記第２フリップフロップを配置するステップは、前記複数の第２グループのうち少なくとも一つの第２グループに含まれる前記複数の第１フリップフロップの座標に基づき、前記少なくとも一つの第２グループに対応する前記第２フリップフロップを配置するステップを含むことを特徴とする付記５または６記載の回路設計方法。
（付記８）：コンピュータに、複数の第１フリップフロップを、クロック周波数ごとに複数の第１グループにグループ分けさせ、前記複数の第１グループごとに、前記複数の第１フリップフロップにリセット信号を供給する第２フリップフロップを配置させることを特徴とする回路設計プログラム。
（付記９）：複数の第１フリップフロップを、クロック周波数ごとに複数の第１グループにグループ分けする第１ユニットと、前記複数の第１グループごとに、前記複数の第１フリップフロップにリセット信号を供給する第２フリップフロップを配置する第２ユニットと、を具備することを特徴とする回路設計装置。
【符号の説明】
【００５２】
１０        コンピュータ
３１、３２  第１ＦＦ
３３        第２ＦＦ
４１、４２  第１グループ
４３、４４  第２グループ
５０        第３ＦＦ
【図１】
2014102640.tif 000003
【図２】
2014102640.tif 000004
【図３】
2014102640.tif 000005
【図４】
2014102640.tif 000006
【図５】
2014102640.tif 000007
【図６】
2014102640.tif 000008
【図７】
2014102640.tif 000009
【図８】
2014102640.tif 000010
【図９】
2014102640.tif 000011
【図１０】
2014102640.tif 000012
【図１１】
2014102640.tif 000013
【図１２】
2014102640.tif 000014
【図１３】
2014102640.tif 000015
【図１４】
2014102640.tif 000016
【図１５】
2014102640.tif 000017
【図１６】
2014102640.tif 000018