特許第6070100号(P6070100)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社ソシオネクストの特許一覧

特許6070100回路設計方法、回路設計プログラムおよび回路設計装置
<>
  • 特許6070100-回路設計方法、回路設計プログラムおよび回路設計装置 図000002
  • 特許6070100-回路設計方法、回路設計プログラムおよび回路設計装置 図000003
  • 特許6070100-回路設計方法、回路設計プログラムおよび回路設計装置 図000004
  • 特許6070100-回路設計方法、回路設計プログラムおよび回路設計装置 図000005
  • 特許6070100-回路設計方法、回路設計プログラムおよび回路設計装置 図000006
  • 特許6070100-回路設計方法、回路設計プログラムおよび回路設計装置 図000007
  • 特許6070100-回路設計方法、回路設計プログラムおよび回路設計装置 図000008
  • 特許6070100-回路設計方法、回路設計プログラムおよび回路設計装置 図000009
  • 特許6070100-回路設計方法、回路設計プログラムおよび回路設計装置 図000010
  • 特許6070100-回路設計方法、回路設計プログラムおよび回路設計装置 図000011
  • 特許6070100-回路設計方法、回路設計プログラムおよび回路設計装置 図000012
  • 特許6070100-回路設計方法、回路設計プログラムおよび回路設計装置 図000013
  • 特許6070100-回路設計方法、回路設計プログラムおよび回路設計装置 図000014
  • 特許6070100-回路設計方法、回路設計プログラムおよび回路設計装置 図000015
  • 特許6070100-回路設計方法、回路設計プログラムおよび回路設計装置 図000016
  • 特許6070100-回路設計方法、回路設計プログラムおよび回路設計装置 図000017
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6070100
(24)【登録日】2017年1月13日
(45)【発行日】2017年2月1日
(54)【発明の名称】回路設計方法、回路設計プログラムおよび回路設計装置
(51)【国際特許分類】
   G06F 17/50 20060101AFI20170123BHJP
   H01L 21/82 20060101ALI20170123BHJP
【FI】
   G06F17/50 658A
   H01L21/82 C
   G06F17/50 658U
【請求項の数】6
【全頁数】17
(21)【出願番号】特願2012-253541(P2012-253541)
(22)【出願日】2012年11月19日
(65)【公開番号】特開2014-102640(P2014-102640A)
(43)【公開日】2014年6月5日
【審査請求日】2015年7月29日
(73)【特許権者】
【識別番号】514315159
【氏名又は名称】株式会社ソシオネクスト
(74)【代理人】
【識別番号】100090273
【弁理士】
【氏名又は名称】國分 孝悦
(72)【発明者】
【氏名】ト部 潤
(72)【発明者】
【氏名】▲高▼野 亨
【審査官】 松浦 功
(56)【参考文献】
【文献】 特開2002−267719(JP,A)
【文献】 特開2003−316843(JP,A)
【文献】 特開2012−174226(JP,A)
【文献】 特開2006−154996(JP,A)
【文献】 特開2007−128429(JP,A)
【文献】 特開2007−300067(JP,A)
【文献】 特開2009−188093(JP,A)
【文献】 米国特許出願公開第2008/0148203(US,A1)
【文献】 米国特許第08539414(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/50
H01L 21/82
(57)【特許請求の範囲】
【請求項1】
コンピュータが実行する回路設計方法であって、
複数の第1フリップフロップを、クロック周波数ごとに複数の第1グループにグループ分けするステップと、
前記複数の第1グループごとに、前記複数の第1フリップフロップにリセット信号を供給する第2フリップフロップを配置するステップと、
前記第2フロップフリップから対応する第1グループに含まれる前記複数の第1フリップフロップへの前記リセット信号の遅延時間が所望値を満足しない場合、前記対応する第1グループを複数の第2グループにグループ分けするステップと、
前記複数の第2グループごとに、前記第2フリップフロップを配置するステップと、
を含むことを特徴とする回路設計方法。
【請求項2】
前記第2フリップフロップを配置するステップは、前記複数の第1グループのうち少なくとも一つの第1グループに含まれる前記複数の第1フリップフロップの座標に基づき、前記少なくとも一つの第1グループに対応する前記第2フリップフロップを配置するステップを含むことを特徴とする請求項1記載の回路設計方法。
【請求項3】
前記第2フリップフロップを配置するステップは、前記少なくとも一つの第1グループに含まれる前記複数の第1フリップフロップの平均座標に、前記少なくとも一つの第1グループに対応する前記第2フリップフロップを配置するステップを含むことを特徴とする請求項2記載の回路設計方法。
【請求項4】
前記第2フリップフロップに前記リセット信号を供給する第3フリップフロップから前記第2フリップフロップへの前記リセット信号の遅延時間が所望値を満足しない場合、前記第2フリップフロップの配置位置を前記第3フリップフロップに近づけるステップを含むことを特徴とする請求項2または3記載の回路設計方法。
【請求項5】
コンピュータに、
複数の第1フリップフロップを、クロック周波数ごとに複数の第1グループにグループ分けさせ、
前記複数の第1グループごとに、前記複数の第1フリップフロップにリセット信号を供給する第2フリップフロップを配置させ
前記第2フロップフリップから対応する第1グループに含まれる前記複数の第1フリップフロップへの前記リセット信号の遅延時間が所望値を満足しない場合、前記対応する第1グループを複数の第2グループにグループ分けさせ、
前記複数の第2グループごとに、前記第2フリップフロップを配置させることを特徴とする回路設計プログラム。
【請求項6】
複数の第1フリップフロップを、クロック周波数ごとに複数の第1グループにグループ分けする第1ユニットと、
前記複数の第1グループごとに、前記複数の第1フリップフロップにリセット信号を供給する第2フリップフロップを配置する第2ユニットと、
前記第2フロップフリップから対応する第1グループに含まれる前記複数の第1フリップフロップへの前記リセット信号の遅延時間が所望値を満足しない場合、前記対応する第1グループを複数の第2グループにグループ分けする第3ユニットと、
前記複数の第2グループごとに、前記第2フリップフロップを配置する第4ユニットと、
を具備することを特徴とする回路設計装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、回路設計方法、回路設計プログラムおよび回路設計装置に関し、例えば、フリップフロップを配置する回路設計方法、回路設計プログラムおよび回路設計装置に関する。
【背景技術】
【0002】
高集積回路には、複数のクロック周波数で動作する複数のフリップフロップ(FF:Flip Flop)が用いられている。FFはリセット信号によりリセットされる。FFを複数のグループに分けて配置することが知られている(例えば、特許文献1から3)
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平3−43811号公報
【特許文献2】特開2005−182378号公報
【特許文献3】特開平7−142963号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
異なるクロック周波数が供給される複数のFFにリセット信号を分配すると、クロックスキューが生じることがある。例えば、クロックスキューがクロック周期を越えてしまうと、FFが正常に動作しない。このように、クロックスキューがクロック周期を越えないように、集積回路上のFFの配置を行なう。しかしながら、クロックスキューを所定内に収めるようにFFを配置することが難しくなることがある。
【0005】
本回路設計方法、回路設計プログラムおよび回路設計装置は、FFを容易に配置することを目的とする。
【課題を解決するための手段】
【0006】
複数の第1フリップフロップを、クロック周波数ごとに複数の第1グループにグループ分けするステップと、前記複数の第1グループごとに、前記複数の第1フリップフロップにリセット信号を供給する第2フリップフロップを配置するステップと、前記第2フロップフリップから対応する第1グループに含まれる前記複数の第1フリップフロップへの前記リセット信号の遅延時間が所望値を満足しない場合、前記対応する第1グループを複数の第2グループにグループ分けするステップと、前記複数の第2グループごとに、前記第2フリップフロップを配置するステップと、を含むことを特徴とする回路設計方法、回路設計プログラムおよび回路設計装置を用いる。
【発明の効果】
【0007】
本回路設計方法、回路設計プログラムおよび回路設計装置によれば、FFを容易に配置することができる。
【図面の簡単な説明】
【0008】
図1図1は、クロックツリーについて説明する図である。
図2図2は、同期リセット回路について説明する図である。
図3図3は、実施例1に係る回路設計装置として機能するコンピュータのブロック図である。
図4図4は、実施例1が用いられる集積回路の設計フローを示すフローチャートである。
図5図5は、実施例1に係る回路設計方法を示すフローチャートである。
図6図6は、実施例1に係る回路設計方法により配置されたFFの同期リセット回路を示す図である。
図7図7は、実施例2に係る回路設計方法を示すフローチャートである。
図8図8(a)から図8(f)は、データ構造を示す図である。
図9図9(a)から図9(c)は、FFの配置を示す図である。
図10図10は、余裕時間を説明する図である。
図11図11は、図7のステップS42における回路設計方法を示すフローチャートである。
図12図12(a)から図12(c)は、FFの配置を示す図である。
図13図13は、データ構造を示す図である。
図14図14は、図11のステップS60における回路設計方法を示すフローチャートである。
図15図15(a)から図15(c)は、FFの配置を示す図である。
図16図16は、データ構造を示す図である。
【発明を実施するための形態】
【0009】
図1は、クロックツリーについて説明する図である。図1を参照し、1つの集積回路100には、例えば数万から数百万個の第1FF31および32が配置される。PLL(Phase
Locked Loop)等の発振器39は、クロックを出力する。FF34は、第1FF31に高周波数クロック信号CKHを供給するFFである。FF34のクロック端子CKにクロックが入力する。FF34の出力端子Qから出力された信号はインバータ37を介しFF34のデータ端子Dに入力する。これにより、FF34は、発振器39の出力信号を1回分周して出力する。FF34の出力は、各第1FF31のクロック端子CKに入力する。FF35は、第1FF32に低周波数クロック信号CKLを供給するFFである。FF35のクロック端子CKにFF34の出力が入力する。FF35の出力端子Qから出力された信号はインバータ37を介しFF35のデータ端子Dに入力する。これにより、FF35は、FF34の出力信号を1回分周して出力する。FF35の出力は、各第1FF32のクロック端子CKに入力する。バッファ38は、クロック信号の駆動能力を向上させる。
【0010】
以上により、第1FF31には、発振器39の発振周波数の1/2の周波数の高周波数クロック信号CKHが入力する。第1FF32には、発振器39の発振周波数の1/4の低周波数クロック信号CKLが入力する。集積回路100には、発振器39の発振周波数の1/8、1/16等の3以上の周波数のクロック信号が用いられる場合もある。しかしながら、簡単に説明するため、以下の実施例においては、2つのクロック周波数の場合を例に説明する。
【0011】
図2は、同期リセット回路について説明する図である。図1において説明したように第1FF31および32は、クロック周波数が異なる。図2を参照し、第1FF31は高周波数クロック信号CKHで動作し、第1FF32は低周波数クロック信号CKLで動作する。第2FF33は、クロック端子CKに高周波数クロック信号CKHが入力し、第1FF31および32のリセット端子Rにリセット信号Resetを供給する。リセット信号Resetは、FF間のリセットの同期をとるための同期リセット信号である。バッファ35は、リセット信号Resetの駆動能力を向上させる。
【0012】
図1のように、周波数の異なるクロック信号は、クロック信号の生成場所が異なる。また、駆動する第1FF31および32の数が異なる。また、低周波数クロック信号CKLは、高周波数クロック信号CKHから生成される。これらにより、周波数の異なるクロック信号間でクロックスキューが発生し易くなる。これにより、FFを集積回路に配置する際に、クロック信号のタイミング収束が難しくなる。例えば、クロック信号のタイミングが規定内に収まるようFFを配置することが難しくなる。さらに、リセット信号の収束も難しくなる。例えば、リセット信号のタイミングが規定内に収まるようFFを配置することが難しくなる。よって、集積回路上へのFFの配置が難しくなる
【0013】
以下に、集積回路上へのFFの配置を容易とする実施例について説明する。
【実施例1】
【0014】
図3は、実施例1に係る回路設計装置として機能するコンピュータのブロック図である。コンピュータ10は、回路設計方法および回路設計プログラムを実行する。コンピュータ10は、プロセッサであるCPU(Central
Processing Unit)11、表示装置12、入力装置13および出力装置14を備えている。さらに、コンピュータ10は、主記憶装置15、ハードディスクドライブ(HDD)16、記憶媒体用ドライブ17、通信インターフェース18および内部バス19を備えている。表示装置12は、例えば液晶パネル等の表示パネルを含み、処理結果等を表示する。入力装置13は、例えばキーボード、マウスおよびタッチパネル等であり、処理データ等を入力する。出力装置14は、例えばプリンタであり、処理結果等を出力する。主記憶装置15は、例えばDRAM(Dynamic
Random Access Memory)等の揮発性メモリであり、処理中のデータを記憶する。HDD16は、例えば処理中または処理後のデータを記憶する。記憶媒体用ドライブ17は、記憶媒体21に格納されたプログラムをインストールする際に用いる。または、処理後のデータを記憶媒体21に記憶させる。通信インターフェース18は、他のコンピュータ20と接続し、他のコンピュータ20とデータの送受信を行なう。内部バス19は、コンピュータ10内の各装置を接続する。コンピュータ10は、ソフトウエアと協働し、第1ユニットおよび第2ユニットとして機能する。
【0015】
プログラムを格納するコンピュータ10が読み取り可能な記憶媒体21として可搬型記憶媒体を用いることができる。可搬型記憶媒体としては、例えば、CD−ROM(Compact
Disc Read Only Memory)ディスク、DVD(Digital Video Disc)ディスク、ブルーレイディスクまたはUSB(Universal
Serial Bus)メモリ等を用いることができる。記憶媒体21として、フラッシュメモリまたはHDD等を用いてもよい。
【0016】
図4は、実施例1が用いられる集積回路の設計フローを示すフローチャートである。図4を参照し、FFのネットワークを示すネットリストと、FFのクロック周波数および位置情報を含むSDC(Synopsys
Design Constraints)等を用い初期のFF配置を行なう(ステップS10)。例えば、フロアプランを用い、ハードマクロの位置を検証し、ネットリスト上の全てのセルの配置をフレーム上に実施する。次に、CTS(Clock
Tree Synthesys)前のFF配置の最適化を行なう(ステップS12)。例えば、クロックが同期したレジスタおよびハードマクロにクロック信号のスキューが0として、DRC(Design
Rule Check)のエラー修正、タイミングの最適化、面積の削減および消費電力ー削減を行なう。次に、クロックツリーを作成する(ステップS14)。例えば、クロック信号用のバッファ等を配置する。
【0017】
次に、CTS後のデータに最適化を行なう(ステップS16)。クロック信号のスキューは実際の値となる。この状態で、DRCのエラー修正、タイミングの最適化、面積の削減および消費電力ー削減を行なう。次に、データに対して配線処理を行なう(ステップS18)。例えば、各セルおよび各ハードマクロのデジタル信号端子に対し、タイミングを考慮しながら、配線処理を行なう。これにより、ソフトウエア上において各セルおよび各ハードマクロが物理的な配線で繋がる。
【0018】
実施例1および2は、例えばステップS12および/またはS16におけるタイミングの最適化において用いられる。
【0019】
図5は、実施例1に係る回路設計方法を示すフローチャートである。図6は、実施例1に係る回路設計方法により配置されたFFの同期リセット回路を示す図である。複数の第1FF31が配置されている。図5および図6に示すように、第1ユニットは、配置された複数の第1FF31および32を、クロック周波数ごとの第1グループ41および42にグループ分けする(ステップS20)。例えば第1グループ41内の第1FF31は、高周波数クロック動作するFFであり、第1グループ42内の第1FF32は、低周波数クロック動作するFFである。第2ユニットは、第1グループ41および42ごとに複数の第1FF31および32にリセット信号Resetを供給する第2FF33aから33cを配置する(ステップS22)。例えば、第1グループ41は、さらに第2グループ43および44に分割されている。第2グループ43内の第1FF31は、第2FF33aの出力端子からリセット信号Resetの供給を受ける。第2グループ44内の第1FF31は、第2FF33bの出力端子からリセット信号Resetの供給を受ける。第1グループ42内の第1FF32は、第2FF33cの出力端子からリセット信号Resetの供給を受ける。
【0020】
実施例1によれば、クロック周波数ごとに複数の第1FF31および32にリセット信号Resetを供給する第2FF33aから33cを配置する。これにより、リセット信号のタイミングが収束しやすくなる。よって、第2FF33aから33cの配置が容易となる。
【実施例2】
【0021】
実施例2は、実施例1の具体例である。実施例2として機能するコンピュータは、実施例1の図3と同じであり説明を省略する。実施例2が用いられる集積回路の設計フローを示すフローチャートは、実施例1の図4と同じであり説明を省略する。
【0022】
図7は、実施例2に係る回路設計方法を示すフローチャートである。図8(a)から図8(f)は、データ構造を示す図である。図9(a)から図9(c)は、FFの配置を示す図である。図7を参照し、コンピュータ10はネットリスト、SDC、DEF(Definition)、Lib(Library)を用い、以下のフローを行なう。DEFは、セルの配置座標、電源配線、信号配線の情報を含む。Libは、セルの遅延時間、セットアップおよびホールド等の規格値、電力情報を含む。コンピュータ10は、第1FF31および32並びに第2FF33を配置する(ステップS30)。例えば、図8(a)に示すように、コンピュータ10は、集積回路全体のリセットおよびプリセット付き第1FFを抽出する。図8(a)の例では、第1FF31は、Reg1からReg4であり、それぞれのクロック周波数は270MHz、270MHz、60MHzおよび60MHzである。位置情報は、各第1FF31が配置される座標を示しており、例えばX座標およびY座標を示している。コンピュータ10は、第1FF、周波数及び位置情報を例えばHDD16内のデータベースに記憶する。図8(b)に示すように、第1FF31にリセット信号を供給する第2FF33を抽出する。第2FF33は、Reg01であり、クロック周波数は270MHzである。コンピュータ10は、第2FF、周波数及び位置情報をデータベースに記憶する。図9(a)に示すように、第1FF31および第2FF33を配置する。第2FF33の前段のFFは第3FF50である。
【0023】
コンピュータ10は、第1FF31と第2FF33との位置情報と、ファンアウト(F/O)数と、から、バッファ36を配置した後の遅延時間を予想する。図8(c)は、遅延時間の予想のためのテーブル例である。図8(c)に示すように、第2FF33から第1FF31を接続する配線の総配線長と第2FF33のファンアウト数と、リセット信号Resetの遅延時間と、が対応付けられている。図8(c)のテーブルは、例えばHDD16にデータベースとして記憶されている。これにより、第2FF33に接続される総配線長およびファンアウト数が決まれば、遅延時間が予想できる。なお、図8(c)のテーブルは、例えばバッファ36を配置した後のものである。図8(d)に示すように、第2FF33であるReg01から第1FF31であるReg1からReg4へのリセット信号の遅延時間はそれぞれ8nsと予想される。コンピュータ10は、遅延時間をデータベースに記憶する。
【0024】
図7を参照し、コンピュータ10は、各第1FF31における遅延時間が所望値を満足するかを判断する(ステップS32)。例えば、コンピュータ10は、予想した各第1FF31の予想遅延時間がタイミングコンストレイントに違反するかを判断する。違反する場合Noと判断する。違反しない場合Yesと判断する。ここで、タイミングコンストレイントは、各FFにおけるリセット信号等のタイミングの許容範囲を規定したものである。Yesの場合、終了する。Noの場合、コンピュータ10は、再度、第2FF33を配置する(ステップS34)。
【0025】
例えば、コンピュータ10は、第2FF33の第3FF50とのタイミングの余裕時間を取得する。図10は、余裕時間を説明する図である。図10に示すように、第1FF31にリセット信号Resetを供給する第2FF33のデータ端子Dには、前段の第3FF50の出力端子Qからの信号が入力する。コンピュータ10は、第3FF50と第2FF33とを接続する配線長T1から信号の遅延時間を算出する。コンピュータ10は、第2FF33に許容されるタイミングとの余裕時間を算出する。余裕時間は、第3FF50から第2FF33への信号がさらに余裕時間以上遅延すると許容できないことを示している。図10のように、第3FF50から第2FF33までの経路が複数ある場合は、最も余裕時間の小さい時間を余裕時間とする。図8(e)に示すように、第2FF33であるReg01の余裕時間は、例えば1.2nsである。コンピュータ10は、余裕時間をデータベースに記憶する。
【0026】
コンピュータ10は、図9(b)に示すように、第2FF33を第1FF31の平均座標55に配置する。例えば第1FF31のX座標およびY座標のそれぞれの平均を平均座標55とする。図8(f)に示すように、第2FF33の位置情報は、第1FF31であるReg1からReg4の平均座標となる。コンピュータ10は、余裕時間を算出する。図9(b)においては、図9(a)に比べ、第2FF33と第3FF50との距離が長くなる。よって、図8(e)に比べ図8(f)は、余裕時間が短くなる。コンピュータ10は、余裕時間をデータベースに記憶する。
【0027】
図7を参照し、コンピュータ10は、余裕時間が所望値を満足するかを判断する(ステップS36)。すなわち、コンピュータ10は、第3FF50から第2FF33への遅延時間が所望値を満足するか判断する。例えば、コンピュータ10は、余裕時間がタイミングコンストレイントに違反する場合、Noと判断する。違反しない場合、Yesと判断する。Yesの場合ステップS40に進む。Noの場合、コンピュータ10は、第2FF33を移動する(ステップS38)。ステップS36に戻る。図9(c)に示すように、例えば、コンピュータ10は、第2FF33を、余裕時間が改善するように、所定距離移動させる。例えば最小グリッド移動させる。これにより、第2FF33は、余裕時間が所望値を満足する程度まで、第3FF50に近づく。第3FF50から第2FF33に接続する配線長が短くなる。図9(c)に示すように、第2FF33の座標は、平均座標55から座標56に移動する。ステップS38を複数回実行しても余裕時間が所望値を満足しない場合は、図9(b)の第2FF33の位置に戻ることもある。
【0028】
ステップS40において、コンピュータ10は、各第1FF31における遅延時間が所望値を満足するかを判断する。例えば、コンピュータ10は、第2FF33が第1FF31を接続する総配線長および第2FF33のファンアウト数から各第1FF31の遅延時間を予想する。コンピュータ10は、予想した各第1FF31の予想遅延時間がタイミングコンストレイントに違反するかを判断する。違反する場合Noと判断する。違反しない場合Yesと判断する。Yesの場合、終了する。Noの場合、ステップS42に進む。
【0029】
ステップS42において、コンピュータ10はクロック周波数ごとに第2FF33を配置する。その後終了する。
【0030】
図11は、図7のステップS42における回路設計方法を示すフローチャートである。図12(a)から図12(c)は、FFの配置を示す図である。図13は、データ構造を示す図である。図11を参照し、コンピュータ10は、第1FFをクロック周波数ごとに第1グループに分割する(ステップS50)。例えば、図12(a)に示すように、第1FFとして、高周波数クロック動作するFF31と低周波数クロック動作するFF32とが配置されている。第1FF31および32には、同じ第2FF33からリセット信号が供給されている。コンピュータ10は、第1FFをFF31を含む第1グループ41とFF32を含む第1グループ42とに分割する。
【0031】
図11を参照し、ステップS52からS60は、第1グループごとに行なうが、以下の説明では、第1グループ41および42についてまとめて説明する。また、第1グループの数が2つの場合を例に説明するが、第1グループの数は3以上でもよい。コンピュータ10は、第2FF33aおよび33cを配置する(ステップS52)。図12(b)に示すように、コンピュータ10は、第1グループ41に対応し第2FF33aを配置し、第1グループ42に対応し第2FF33cを配置する。第2FF33cは、第2FF33aのクローンである。例えば、第2FF33cは第2FF33aと同じ仕様のFFである。第2FF33aおよび33cは、それぞれ第1FF31および32にリセット信号を供給する。コンピュータ10は、第2FF33aおよび33cを、例えばそれぞれ第1FF31および32の平均座標57および58に配置する。コンピュータ10は、第2FF33aおよび33cの余裕時間を算出する。
【0032】
図11を参照し、コンピュータ10は、余裕時間が所望値を満足するかを判断する(ステップS54)。すなわち、第3FF50から第2FF33aおよび33cへの遅延時間が所望値を満足するか判断する。例えば、コンピュータ10は、余裕時間がタイミングコンストレイントに違反する場合、Noと判断する。違反しない場合、Yesと判断する。Yesの場合ステップS58に進む。Noの場合、コンピュータ10は、第2FF33aおよび33cを移動する(ステップS56)。ステップS54に戻る。図12(c)に示すように、例えば、コンピュータ10は、第2FF33aおよび33cを余裕時間が改善するように、所定距離移動させる。例えば最小グリッド移動させる。これにより、第2FF33aおよび33cは、余裕時間が所望値を満足する程度まで、第3FF50に近づく。図12(c)に示すように、第2FF33aおよび33cの座標は、それぞれ平均座標57および58から座標59および60に移動する。ステップS56を複数回実行しても余裕時間が所望値を満足しない場合は、図12(b)の第2FF33aおよび33cの位置に戻ることもある。
【0033】
ステップS58において、コンピュータ10は、各第1FF31および32における遅延時間が所望値を満足するかを判断する。例えば、コンピュータ10は、各第2FF33aおよび33cが各第1FF31および32を接続する総配線長および各第2FF33aおよび33cのファンアウト数から各第1FF31および32の遅延時間を予想する。コンピュータ10は、予想した各第1FF31および32の予想遅延時間がタイミングコンストレイントに違反するかを判断する。違反する場合Noと判断する。違反しない場合Yesと判断する。Yesの場合、ステップS62に進む。Noの場合、ステップS60に進む。
【0034】
ステップS60において、コンピュータ10は、第1グループ41および42を第2グループに分割し、第2グループごとに第2FFを配置する。その後、ステップS62に進む。
【0035】
ステップS62において、コンピュータ10は、最後の第1グループか判断する。例えば、全ての第1グループ(クロック周波数)の第2FFの配置が終了した場合、Yesと判断する。Yesの場合終了し、図7に戻る。Noの場合、次の第1グループとする(ステップS64)。例えば、コンピュータ10は、次のクロック周波数の第1グループに対しステップS52からS60を実行する。
【0036】
図13に示すように、クロック周波数が270MHzのReg1からReg3にリセット信号を供給する第2FF33aであるReg01が設けられる。さらに、クロック周波数が66MHzのReg4から6にリセット信号を供給するReg02とが設けられる。Reg1からReg3は第1FF31であり、Reg4からReg6は第1FF32である。Reg01は第2FF33aであり、Reg02は第2FF33cである。コンピュータ10は、第2FF33aおよび33cの位置情報、余裕時間、各第1FFの遅延時間をデータベースに記憶する。
【0037】
図14は、図11のステップS60における回路設計方法を示すフローチャートである。図15(a)から図15(c)は、FFの配置を示す図である。図16は、データ構造を示す図である。図15(a)から図15(c)および図16は、第1グループ42の第1FF32については記載を省略している。図14を参照し、コンピュータ10は、第1FF31を座標に基づき複数の第2グループ43および44に分割する(ステップS70)。例えば、図15(a)に示すように、複数の第1FF31と、複数の第1FF31にリセット信号を供給する1つの第2FF33が配置されている。コンピュータ10は、第1FF31の座標に基づき第1FF31が含まれる第1グループ41を複数の第2グループ43および44に分割する。例えば、コンピュータ10は、第1FF31の平均座標(Xa、Ya)を算出する。コンピュータ10は、Y座標がYaより大きい第1FF31を第2グループ43とし、Y座標がYaより小さい第1FF31を第2グループ44とする。
【0038】
図14を参照し、ステップS72からS80は、第2グループ43および44ごとに行なうが、以下の説明では、第2グループ43および44についてまとめて説明する。また、第2グループの数が2つの場合について説明するが、第2グループの数は3以上でもよい。コンピュータ10は、第2FF33aおよび33bを配置する(ステップS72)。図15(b)に示すように、第2グループ43に対応し第2FF33aを配置し、第2グループ44に対応し第2FF33bを配置する。第2FF33bは、第2FF33aのクローンである。例えば、第2FF33bは第2FF33aと同じ仕様のFFである。コンピュータ10は、第2FF33aおよび33bを、例えばそれぞれ第2グループ43および44に含まれる第1FF31の平均座標62および63に配置する。コンピュータ10は、余裕時間を算出する。
【0039】
図14を参照し、コンピュータ10は、余裕時間が所望値を満足するかを判断する(ステップS74)。すなわち、第3FF50から第2FF33aおよび33bへの遅延時間が所望値を満足するか判断する。例えば、コンピュータ10は、余裕時間がタイミングコンストレイントに違反する場合、Noと判断する。違反しない場合、Yesと判断する。Yesの場合ステップS78に進む。Noの場合、コンピュータ10は、第2FF33aおよび33bを移動する(ステップS76)。ステップS74に戻る。図15(c)に示すように、例えば、コンピュータ10は、第2FF33aおよび33bを余裕時間が改善するように、所定距離移動させる。例えば最小グリッド移動させる。これにより、第2FF33aおよび33bは、余裕時間が所望値を満足する程度まで、第3FF50に近づく。図15(c)に示すように、第2FF33aおよび33bの座標は、それぞれ平均座標62および63から座標64および65に移動する。ステップS76を複数回実行しても余裕時間が所望値を満足しない場合は、図15(b)の第2FF33aおよび33bの位置に戻ることもある。
【0040】
ステップS78において、コンピュータ10は、各第1FF31における遅延時間が所望値を満足するかを判断する。例えば、コンピュータ10は、各第2FF33aおよび33bが各第1FF31を接続する総配線長および各第2FF33aおよび33bのファンアウト数から各第1FF31の遅延時間を予想する。コンピュータ10は、予想した各第1FF31の予想遅延時間がタイミングコンストレイントに違反するかを判断する。違反する場合Noと判断する。違反しない場合Yesと判断する。Yesの場合、ステップS82に進む。Noの場合、ステップS80に進む。
【0041】
ステップS80において、コンピュータ10は、FFの配置が難しくフロアプラン等の見直しを推奨する報告を行なう。その後、終了する。
【0042】
ステップS82において、コンピュータ10は、最後の第2グループか判断する。例えば、全ての第2グループの第2FFの配置が終了した場合、Yesと判断する。Yesの場合終了し、図12に戻る。Noの場合、次の第2グループとする(ステップS84)。例えば、コンピュータ10は、次の第2グループに対しステップS52からS60を実行する。
【0043】
図16に示すように、第1グループ41に含まれるクロック周波数が270MHzのReg1からReg4を第2グループ43および44に分割する。第2グループ43にはReg03を設け、第2グループ44にはReg04を設ける。Reg1からReg4は第1FF31であり、Reg03は第2FF33aであり、Reg04は第2FF33bである。コンピュータ10は、第2FF33aおよび33bの位置情報、余裕時間、各第1FFの遅延時間およびグループをデータベースに記憶する。
【0044】
実施例2によれば、図11のステップS50のように配置された複数の第1FF31および32を、クロック周波数ごとに複数の第1グループ41および42にグループ分けする。ステップS52のように複数の第1グループ41および42ごとに複数の第1FF31および32にリセット信号を供給する第2FF33aおよび33cを配置する。これにより、実施例1と同様に、クロック周波数ごとに、リセット信号のタイミングが収束しやすくなる。
【0045】
また、図12(b)に示すように、第1グループ41および42に含まれる複数の第1FF31および32の座標に基づき、それぞれ第1グループ41および42に対応する第2FF33aおよび33cを配置する。なお、複数の第1グループの少なくとも一つの第1グループ41または42について、第1FF31または32に基づき、第2FF33aまたは33cを配置してもよい。これにより、第2FFから第1FFへのリセット信号の遅延時間を短くできる。例えば、少なくとも一つの第1グループ41または42に含まれる複数の第1FF31または32の平均座標に、少なくとも一つの第1グループ41または42に対応する第2FF33aまたは33cを配置する。
【0046】
さらに、図12(c)に示すように、第3FF50から第2FF33aおよび33cへのリセット信号の遅延時間が所望値を満足しない場合、第2FF33aおよび33cの配置位置を第3FF50に近づける。これにより、第3FF50から第2FF33aおよび33cへのリセット信号の遅延時間を短くできる。
【0047】
さらに、図14のステップS70のように、第2FF33から第1グループ41に含まれる複数の第1FF31へのリセット信号の遅延時間が所望値を満足しない場合、第1グループ41を複数の第2グループ43および44にグループ分けする。これにより、第2FF33から第1FF41へのリセット信号の遅延時間をより短くできる。例えば、対応する第1グループ41に含まれる複数の第1FF31の座標に基づき、複数の第2グループ43および44にグループ分けする。第2グループ43および44のグループ分けは、例えば第1FF31の平均座標に基づき行なうことができる。
【0048】
さらに、図15(b)に示すように、第2グループ43および44ごとに、第2FF33aおよび33bを配置する。これにより、第2FFから第1FFへのリセット信号の遅延時間を短くできる。例えば、複数の第2グループ43および44に含まれる複数の第1FF31の座標に基づき、それぞれ第2グループ43および44に対応する第2FF33aまたは33bを配置する。なお、複数の第2グループの少なくとも一つの第1グループ43または44について、第1FF31の座標に基づき、第2FF33aまたは33bを配置してもよい。例えば、少なくとも一つの第2グループ43または44に含まれる複数の第1FF31の平均座標に、少なくとも一つの第2グループ43または44に対応する第2FF33aまたは33bを配置する。
【0049】
さらに、図15(c)に示すように、第3FF50から第2FF33aおよび33bへのリセット信号の遅延時間が所望値を満足しない場合、第2FF33aおよび33bの配置位置を第3FF50に近づける。これにより、第3FFから第2FFへのリセット信号の遅延時間を短くできる。
【0050】
以上、発明の好ましい実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【0051】
なお、以上の説明に関して更に以下の付記を開示する。
(付記1):コンピュータが実行する回路設計方法であって、複数の第1フリップフロップを、クロック周波数ごとに複数の第1グループにグループ分けするステップと、前記複数の第1グループごとに、前記複数の第1フリップフロップにリセット信号を供給する第2フリップフロップを配置するステップと、を含むことを特徴とする回路設計方法。
(付記2):前記第2フリップフロップを配置するステップは、前記複数の第1グループのうち少なくとも一つの第1グループに含まれる前記複数の第1フリップフロップの座標に基づき、前記少なくとも一つの第1グループに対応する前記第2フリップフロップを配置するステップを含むことを特徴とする付記1記載の回路設計方法。
(付記3):前記第2フリップフロップを配置するステップは、前記少なくとも一つの第1グループに含まれる前記複数の第1フリップフロップの平均座標に、前記少なくとも一つの第1グループに対応する前記第2フリップフロップを配置するステップを含むことを特徴とする付記2記載の回路設計方法。
(付記4):前記第2フリップフロップに前記リセット信号を供給する第3フリップフロップから前記第2フリップフロップへの前記リセット信号の遅延時間が所望値を満足しない場合、前記第2フリップフロップの配置位置を前記第3フリップフロップに近づけるステップを含むことを特徴とする付記2または3記載の回路設計方法。
(付記5):前記第2フロップフリップから対応する第1グループに含まれる前記複数の第1フリップフロップへの前記リセット信号の遅延時間が所望値を満足しない場合、前記対応する第1グループを複数の第2グループにグループ分けするステップと、前記複数の第2グループごとに、前記第2フリップフロップを配置するステップと、を含むことを特徴とする付記1から4のいずれか一項記載の回路設計方法。
(付記6):前記対応する第1グループを複数の第2グループにグループ分けするステップは、前記対応する第1グループに含まれる前記複数の第1フリップフロップの座標に基づき、前記複数の第2グループにグループ分けするステップを含むことを特徴とする付記5記載の回路設計方法。
(付記7):前記複数の第2グループごとに、前記第2フリップフロップを配置するステップは、前記複数の第2グループのうち少なくとも一つの第2グループに含まれる前記複数の第1フリップフロップの座標に基づき、前記少なくとも一つの第2グループに対応する前記第2フリップフロップを配置するステップを含むことを特徴とする付記5または6記載の回路設計方法。
(付記8):コンピュータに、複数の第1フリップフロップを、クロック周波数ごとに複数の第1グループにグループ分けさせ、前記複数の第1グループごとに、前記複数の第1フリップフロップにリセット信号を供給する第2フリップフロップを配置させることを特徴とする回路設計プログラム。
(付記9):複数の第1フリップフロップを、クロック周波数ごとに複数の第1グループにグループ分けする第1ユニットと、前記複数の第1グループごとに、前記複数の第1フリップフロップにリセット信号を供給する第2フリップフロップを配置する第2ユニットと、を具備することを特徴とする回路設計装置。
【符号の説明】
【0052】
10 コンピュータ
31、32 第1FF
33 第2FF
41、42 第1グループ
43、44 第2グループ
50 第3FF
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16