JP2006134215A - クロックツリー生成装置、クロックツリー生成方法、クロックツリー生成プログラムおよび記録媒体 - Google Patents

クロックツリー生成装置、クロックツリー生成方法、クロックツリー生成プログラムおよび記録媒体 Download PDF

Info

Publication number
JP2006134215A
JP2006134215A JP2004324891A JP2004324891A JP2006134215A JP 2006134215 A JP2006134215 A JP 2006134215A JP 2004324891 A JP2004324891 A JP 2004324891A JP 2004324891 A JP2004324891 A JP 2004324891A JP 2006134215 A JP2006134215 A JP 2006134215A
Authority
JP
Japan
Prior art keywords
clock
clock tree
tree
delay adjustment
circuit element
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2004324891A
Other languages
English (en)
Other versions
JP4231837B2 (ja
Inventor
Yuji Kanazawa
裕治 金澤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2004324891A priority Critical patent/JP4231837B2/ja
Publication of JP2006134215A publication Critical patent/JP2006134215A/ja
Application granted granted Critical
Publication of JP4231837B2 publication Critical patent/JP4231837B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

【課題】複雑化したタイミング制約を満足するシステムLSIの設計を、容易かつ効率的におこない、システムLSI設計の簡素化・設計期間の短縮化を図ること。
【解決手段】クロックツリー生成装置200は、取得部201により、クロックツリー300のネットリスト、同期グループ情報、およびFFなどの回路素子の配置情報を取得し、同期グループAまたはB内に、クロックパス途中に存在するピンがあるか否かを判定する。当該ピンが存在しない場合、従来と同様なクロック合成をおこなう。クロックゲート303の入力ピン304がクロックパス途中に存在するピンに該当するため、指定部202によりクロックゲート303の入力ピン304が指定されると、クロックツリー300を分割する。具体的には、この入力ピン304が指定されたクロックゲート303をサブルートとし、クロックゲート303に直結している回路素子群311を終端とする第1のサブツリー321を、クロックツリー300から分割する。
【選択図】 図3

Description

この発明は、クロックツリーを生成するクロックツリー生成装置、クロックツリー生成方法、クロックツリー生成プログラムおよび記録媒体に関する。
タイミング設計とは、システムLSIの回路遅延を見積もり、最適化をおこなって遅延がシステムLSIの正常動作に必要な範囲内にあることを確認する工程のことである。タイミング設計は、製造したシステムLSIが正しく動作することを保証するために必要不可欠であると同時に、作業量が多く、システムLSI設計工数の中でも大きな割合を占めているため非常に重要である。システムLSI設計期間の短縮のためには、まず、タイミング設計工数の削減を図る必要がある。
近年のシステムLSI設計では、低消費電力化、モジュール再利用などの理由により、複雑なタイミング設計上の制約が要求されることが多い。例えば、速く動く必要がない部分は分周して低いクロック周波数を使用したり、クロックゲートを入れて不要なクロックの供給を停止したりすることによって低消費電力化を図ることが一般的に行われている。また、一つのシステムLSIを複数の機器に使うため、タイミング条件が異なる複数の動作モードを用意することもある。このため、システムLSI設計のタイミング制約は複雑になることが多い。
システムLSIがターゲット周波数で動作するためには、セットアップ制約とホールド制約の2種類のタイミング制約を満たす必要がある。一般的に、送り側のFF(フリップフロップ)から出た信号が、受け側のFFに到達するタイミングは、現クロックの後、つぎのクロックの前になければならない。信号の到達が現在のクロックよりも後に届くことを保証するのがホールド制約、つぎのクロックよりも前に届くことを保証するのがセットアップ制約であり、それぞれ信号の伝播時間の最小限、最大限の値を定める。
そして、従来の一般的な設計フローでは、全FFが同一時刻にクロックを受けるものと仮定してFF間のタイミング制約を導き出し、タイミング最適化配置を行った後、スキュー(FF間のクロック到達時刻の差)を最小化するようにクロックツリーを構築していた。図11は、従来の一般的な設計フローによって構築されたクロックツリーを示す説明図である。
図11において、クロック制御回路を制御するFF1と、サブツリーST1の末端のFFと、サブツリーST2の末端のFFは、クロックソースからのクロックによって同期するFFである。また、サブツリーST1のルートにあるFF2は、分周クロック生成用のFF(分周FF)やクロックゲートである。そして、最後に正確なクロック到達時刻を求めた後、前述の制約に違反するエラーが残っている部分を遅延最適化することによって対処してきた。なお、このような従来の一般的な設計フローによって構築されたクロックツリーのほか、クロックツリーに関する技術は下記特許文献に開示されている。
特開2001−14058号公報 特開2001−22816号公報
しかしながら、システムLSIは、モジュールの再利用に伴うクロックソースの数の増加やクロック間の乗り換え、低消費電力化のためのクロックゲートの挿入、分周FFの使用などにより、クロックが複雑化している。したがって、タイミング制約、具体的には、図11に示したFF1とFF2との間のパスのタイミング制約が厳しくなってシステムLSI設計が困難になり、設計期間の長期化を招くという問題があった。
例としてクロックゲートについて説明する。クロックゲートとは、低消費電力化のため、動作する必要がないと分かっているモジュールへ到達するクロックの伝播を止めるための素子である。クロックゲートにクロックが到達する時刻は、クロックゲートから最終段のFFに到達するのにかかる遅延の分だけ、通常のクロックよりも速いことになる。
図12は、クロックゲートを利用したタイミング制約を示す説明図である。図12のようにクロックサイクル5[ns]のLSIで、クロックゲートから最終段のFFまでクロックが到達するのに1[ns]かかるとすれば、クロックゲートを制御するためのenable信号は、送り側FFから最大でも4[ns]以内に到達しなければならない。それ以上時間がかかると、止めなければいけないクロックが通過してしまう。
すなわち、クロックゲートを制御するenable信号を終点とするパスがある場合、タイミング制約は、クロックゲートから最終段のFFまでクロック信号が伝播するのに要する時間によって決まる。このようなパスを多く持っているLSIでは、配置後にスキューを最小化するクロック合成では不十分であり、システムLSI設計の困難かつ長期化を招くという問題となった。同様の問題は、クロックゲートだけでなく、分周クロック生成用の回路でも発生していた。
一方、クロックソース内のFFは、分周FFやクロックゲートが、クロックを受けるタイミングと同期してクロックを受ける方が好ましい。しかしながら、上述した従来技術では、クロックソースが末端のFFと同期しているために設計者が手作業でクロックツリーを分割し、何回もクロックツリー生成プログラムを走らせる必要がある。したがって、従来のように配置後にスキューを最小化するクロック合成では、設計作業に手間がかかってクロックツリー構築が難しくなり、設計期間の長期化を招くという問題があった。
この発明は、上述した従来技術による問題点を解消するため、複雑化したタイミング制約を満足するシステムLSIの設計を、容易かつ効率的におこなうことによって、システムLSI設計の簡素化および設計期間の短縮化を図ることができるクロックツリー生成装置、クロックツリー生成方法、およびクロックツリー生成プログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するため、この発明にかかるクロックツリー生成装置、クロックツリー生成方法、およびクロックツリー生成プログラムは、クロックソースから末端の回路素子群までのクロックツリーに関するネットリストと、前記クロックツリーのクロックが同期する同期グループに関する情報とを取得し、取得されたネットリストおよび同期グループに関する情報に基づいて、前記クロックツリーの途中のパスに存在する回路素子のピンの指定を受け付け、指定された回路素子のピンに基づいて、前記クロックツリーを複数のサブツリーに分割し、分割された複数のサブツリーの遅延調整をおこない、遅延調整の結果を用いて、前記クロックツリーの遅延調整をおこなうことを特徴とする。
また、前記クロックツリーから、前記ピンが指定された回路素子をサブルートとし、前記末端の回路素子群のうち一部の回路素子を終端とする第1のサブツリーを分割するとともに、前記クロックツリーのうち前記第1のサブツリーを除いた残余のツリーから、前記ピンが指定された回路素子を終端とする第2のサブツリーと、前記末端の回路素子群のうち前記一部の回路素子以外の他の回路素子を終端とする第3のサブツリーと、を分割することとしてもよい。
さらに、前記同期グループが、前記第1のサブツリーの終端の回路素子と、前記第3のサブツリーの終端の回路素子を含む場合、前記クロックツリーの遅延調整をおこなうこととしてもよい。
これらに発明によれば、クロックツリーにクロック制御回路が含まれている場合であっても、スキューを最小化したクロックツリーをあらたに生成することができる。また、クロックパス途中のピンを基準にしてクロックツリーを分割することにより、従来手作業によっておこなっていたサブツリーの分割を自動化でき、作業効率の大幅な向上を図ることができる。
本発明にかかるクロックツリー生成装置、クロックツリー生成方法、およびクロックツリー生成プログラムによれば、複雑化したタイミング制約を満足するシステムLSIの設計を、容易かつ効率的におこなうことによって、システムLSI設計の簡素化および設計期間の短縮化を図ることができるという効果を奏する。
以下に添付図面を参照して、この発明にかかるクロックツリー生成装置、クロックツリー生成方法、およびクロックツリー生成プログラムの好適な実施の形態を詳細に説明する。
(クロックツリー生成装置のハードウェア構成)
まず、この発明の実施の形態にかかるクロックツリー生成装置のハードウェア構成について説明する。図1は、この発明の実施の形態にかかるクロックツリー生成装置のハードウェア構成を示すブロック図である。
図1において、クロックツリー生成装置は、CPU101と、ROM102と、RAM103と、HDD(ハードディスクドライブ)104と、HD(ハードディスク)105と、FDD(フレキシブルディスクドライブ)106と、着脱可能な記録媒体の一例としてのFD(フレキシブルディスク)107と、ディスプレイ108と、I/F(インターフェース)109と、キーボード110と、マウス111と、スキャナ112と、プリンタ113と、を備えている。また、各構成部はバス100によってそれぞれ接続されている。
ここで、CPU101は、クロックツリー生成装置の全体の制御を司る。ROM102は、ブートプログラムなどのプログラムを記憶している。RAM103は、CPU101のワークエリアとして使用される。HDD104は、CPU101の制御にしたがってHD105に対するデータのリード/ライトを制御する。HD105は、HDD104の制御で書き込まれたデータを記憶する。
FDD106は、CPU101の制御にしたがってFD107に対するデータのリード/ライトを制御する。FD107は、FDD106の制御で書き込まれたデータを記憶したり、FD107に記憶されたデータをクロックツリー生成装置に読み取らせたりする。
また、着脱可能な記録媒体として、FD107のほか、CD−ROM(CD−R、CD−RW)、MO、DVD(Digital Versatile Disk)、メモリーカードなどであってもよい。ディスプレイ108は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ108は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
I/F109は、通信回線を通じてインターネットなどのネットワーク114に接続され、このネットワーク114を介して他の装置に接続される。そして、I/F109は、ネットワーク114と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F109には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード110は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス111は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
スキャナ112は、画像を光学的に読み取り、クロックツリー生成装置内に画像データを取り込む。なお、スキャナ112は、OCR機能を持たせてもよい。また、プリンタ113は、画像データや文書データを印刷する。プリンタ113には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
(クロックツリー生成装置の機能的構成)
つぎに、この発明の実施の形態にかかるクロックツリー生成装置200の機能的構成について説明する。図2は、この発明の実施の形態にかかるクロックツリー生成装置200の機能的構成を示すブロック図である。クロックツリー生成装置200は、取得部201と、指定部202と、分割部203と、サブツリー遅延調整部204と、クロックツリー遅延調整部205と、から構成される。
取得部201は、クロックソースから末端の回路素子群までのクロックツリーに関するネットリストと、クロックツリーのクロックが同期する同期グループに関する情報(同期グループ情報)と、回路素子の配置情報とを取得する。ここで、クロックツリーおよび同期グループについて説明する。図3は、この発明の実施の形態にかかるクロックツリーおよび同期グループを示す説明図である。
図3において、クロックツリー300は、クロックを生成するクロックソース301をルートとし、複数のFFなどの末端の回路素子群310(311、312)にまでクロックを伝搬する。また、クロックソース301から回路素子群311までのクロックパスの途中には、クロック制御回路302とクロックゲート(分周クロック生成用FFでもよい)303が接続されている。クロック制御回路302は、クロックソース301からのクロックに応じてクロックゲート303を制御する。一方、回路素子群312は、クロックソース301から直接接続されている。
なお、回路素子群311と回路素子群312は、クロックソース301から同一時刻にクロックを受ける回路素子の集合である。このような回路素子の集合を同期グループと呼ぶ。したがって、回路素子群311と回路素子群312は、同期グループAに属することとなる。同様に、クロック制御回路302とクロックゲート303も、クロックソース301から同一時刻にクロックを受ける回路素子の集合であるため、同期グループBに属することとなる。
また、クロックツリー300に関するネットリストとは、クロックツリー300を構成するクロックソース301、回路素子群310を構成するFF、クロック制御回路302、クロックゲート(または分周クロック生成用FF)303などの回路素子や、回路素子間の接続情報であり、初期状態では、バッファは存在しないものとする。したがって、図3に示したクロックツリー300にもバッファは存在せず、FFのクロックピンやクロックゲート303の入力ピン304が、クロックソース301に直結している。
また、同期グループ情報とは、同期グループに属する回路素子のピン名、たとえば、回路素子がFFであればクロックピン名、回路素子がクロックゲート303であれば入力ピン名である。また、回路素子の配置情報とは、チップ上における回路素子の座標位置である。なお、一般的に、クロックツリーには、テストモードと通常動作モードを切り替えるためのセレクタなど、様々な回路素子が入っているが、図3では説明を簡単にするため、クロックツリーの途中には、クロックゲート(または分周クロック生成用FF)303以外の論理は存在しないものとしている。
また、上述したネットリスト、同期グループ情報、配置情報は、図示しない外部装置からの受信、ユーザの操作入力、図示しないデータベースやライブラリからの抽出によって取得することができる。なお、この取得部201は、具体的には、たとえば、図1に示した入力I/F109によって、または、図1に示したROM102、RAM103、HD105、FD107等に記録されたプログラムを、CPU101が実行することによってその機能を実現する。
指定部202は、取得部201によって取得されたネットリストに基づいて、クロックツリー300の途中のクロックパスに存在する回路素子の指定を受け付ける。具体的には、図3に示したクロックツリー300の途中のクロックパスに存在するクロックゲート303の入力ピン304の指定を受け付ける。
入力ピン304の指定は、図1に示したキーボード110またはマウス111などの入力デバイスを操作することによっておこなうことができる。より具体的には、同期グループ内に、クロックツリー300の途中のクロックパスに存在するクロックゲート303がある場合に、その入力ピン304を指定することができる。この指定部202は、具体的には、たとえば、図1に示した入力I/F109によって、または、図1に示したROM102、RAM103、HD105、FD107等に記録されたプログラムを、CPU101が実行することによってその機能を実現する。
また、分割部203は、指定部202によって指定された回路素子のピンに基づいて、クロックツリーを複数のサブツリーに分割する。具体的には、図3において、クロックツリー300から、指定部202によって指定されたクロックゲート303の入力ピン304をサブルートとし、末端の回路素子群310のうち一部の回路素子群311を終端とする第1のサブツリー321を分割する。
また、分割部203は、クロックツリー300のうち第1のサブツリー321を除いた残余のツリーから、指定部202によってピンが指定された回路素子を終端とする第2のサブツリーと、クロックツリー末端の回路素子群のうち一部の回路素子以外の他の回路素子を終端とする第3のサブツリーと、を分割する。具体的には、分割部203は、残余のツリーに、異なる同期グループが混在している場合に分割処理を実行する。
図4は、分割部203によって分割されたサブツリーを示す説明図である。図4において、たとえば、残余のツリー(クロックツリー300から第1のサブツリー321を除いたツリー)に、同期グループBの回路素子(クロック制御回路302、クロックゲート303)と、同期グループAの回路素子(回路素子群312)が存在しているため、同期グループごとに分割して第2のサブツリー322および第3のサブツリー323を生成する。
より具体的には、同期グループBの回路素子(クロック制御回路302、クロックゲート303)に関しては、クロックソース301の下にあらたにバッファ305を挿入し、この挿入されたバッファ305をサブルートとし、このバッファ305に直結するクロックゲート303の入力ピン304を終端とする第2のサブツリー322を生成する。
また、同期グループAに関しては、クロックソース301の下にあらたにバッファ306を挿入し、この挿入されたバッファ306をサブルートとし、このバッファ306に直結する回路素子群312を終端とする第3のサブツリー323を生成する。この分割部203は、具体的には、たとえば、図1に示したROM102、RAM103、HD105、FD107等に記録されたプログラムを、CPU101が実行することによってその機能を実現する。
また、サブツリー遅延調整部204は、分割部203によって分割されたサブツリー321〜323の遅延調整をおこなう。具体的には、サブツリー321〜323ごとに遅延調整をおこなう。図5は、サブツリー321〜323の遅延調整を示す概略図である。図5において、チップ500上には、各サブツリー321〜323の末端の回路素子のクロックピンpを配置する((a)初期状態)。回路素子のクロックピンpの配置位置は、取得部201によって取得された配置位置情報、すなわち、チップ500上の座標位置で設定することができる。
つぎに、一定以上近くにあるクロックピンpをまとめてクラスタ501〜504を作成する((b)クラスタリング)。そして、各クラスタ501〜504の中心にバッファ511〜514を配置する((c)バッファ配置)。そして、遅延調整をおこなう((d)遅延調整)。バッファ511〜514の数が2以上であれば、(a)初期状態に戻り、バッファをクラスタリングする((b)クラスタリング)。バッファの数が1、すなわち、クラスタが1個の場合、処理を終了する。
また、(d)遅延調整において、クラスタ501〜504中央に置いた各バッファ511〜514に対して、当該バッファ511〜514がドライブしている入力ピンをサブツリー遅延調整処理対象ピン、当該バッファ511〜514の出力ピンをサブルートとして、サブツリー遅延調整処理を実行する。
このサブツリー遅延調整処理については、後述するクロックツリー遅延調整処理と同じ処理であるため後述する。このサブツリー遅延調整処理により、サブツリーのサブルートとなるバッファと、終端となる回路素子との間に適宜バッファが挿入されることになり、サブツリー内においてスキューを最小化することができる。
また、クロックパスの途中のピンが同期グループに指定されている場合は、その点で分割されているので、処理対象のサブツリーから見ると、末端のピンになっている。したがって、第2のサブツリー322についてもこの方式を適用することができる。このサブツリー遅延調整部204は、具体的には、たとえば、図1に示したROM102、RAM103、HD105、FD107等に記録されたプログラムを、CPU101が実行することによってその機能を実現する。
また、クロックツリー遅延調整部205は、サブツリー遅延調整部204によっておこなわれた遅延調整の結果を用いて、クロックツリー300の遅延調整をおこなう。具体的には、同期グループが2つ以上のサブツリーにまたがっている場合、サブルートを通るパスの遅延を調整してスキューを最小化する。すなわち、クロックソース301から各サブツリーのサブルートまでの遅延時間と、サブツリーのサブルートから末端の各FFまでの遅延時間を計算して合計する。これにより、各サブツリーに対し、クロックソース301から末端の各FFまでの遅延時間の最大値と最小値を算出することができる。
そして、クロックソース301から末端の各FFまでの遅延の最大値が最も大きいサブツリーに対しては、ルートを通るパスの遅延を速くする。一方、クロックソース301から末端の各FFまでの遅延時間の最小値が最も小さいサブツリーに対しては、ルートを通るパスの遅延を遅くする。これにより、クロック信号の到達時間(伝搬時間ともいう)の最大値と最小値の差(=スキュー)が小さくなる。
スキューが十分小さくなるか、遅延調整ができなくなるまでこの処理を繰り返す。このクロックツリー遅延調整部205は、具体的には、たとえば、図1に示したROM102、RAM103、HD105、FD107等に記録されたプログラムを、CPU101が実行することによってその機能を実現する。
(クロックツリー生成処理手順)
つぎに、この発明の実施の形態にかかるクロックツリー生成処理手順について説明する。図6は、この発明の実施の形態にかかるクロックツリー生成処理手順を示すフローチャートである。まず、取得部201により、クロックツリーのネットリスト、同期グループ情報、およびFFなどの回路素子の配置情報を取得する(ステップS601)。
つぎに、同期グループAまたはB内に、クロックパス途中に存在するピンがあるか否かを判定する(ステップS602)。当該ピンが存在しない場合(ステップS602:No)、従来と同様なクロック合成をおこなって(ステップS603)、処理を終了する。
一方、図3においては、クロックゲート303の入力ピン304がクロックパス途中に存在するピンに該当する。このように、当該ピンが存在する場合(ステップS602:Yes)、クロックゲート303の入力ピン304が指定されると(ステップS604:Yes)、クロックツリー300を分割する(ステップS605)。具体的には、この入力ピン304が指定されたクロックゲート303をサブルートとし、クロックゲート303に直結している回路素子群311を終端とする第1のサブツリー321を、クロックツリー300から分割する。
また、残余のツリーに、異なる同期グループA、Bが混在している場合、当該残余のツリーから、指定部202によってピン(入力304)が指定された回路素子(クロックゲート303)を終端とする第2のサブツリー322と、クロックツリー300の末端の回路素子群310のうち一部の回路素子群311以外の他の回路素子312を終端とする第3のサブツリー323と、を分割する。
つぎに、サブツリー遅延調整処理を実行する(ステップS606)。具体的には、図5に示したクラスタ501〜504の中央に置いた各バッファ511〜514に対して、そのバッファ511〜514がドライブしている入力ピンを遅延調整処理対象ピン、バッファ511〜514の出力ピンをサブルートとして、サブツリー遅延調整処理をおこなう。
より具体的には、遅延調整処理対象ピンリスト内の各ピンに対し、時刻0に出発したクロック信号が、サブツリーの末端の各ピンに到達する時刻を算出し、時刻の最大値と最小値を記憶する。実際は、末端のピンまでのクロック信号の到達時間の最大値および最小値の計算は、毎回算出しなおす必要はなく、ピンごとに時刻の最大値および最小値を記憶することによって効率的な計算が可能である。
そして、遅延調整処理ルートから各遅延調整処理対象ピンにクロック信号が到達するまでの時間を算出し、時刻の最大値および最小値に加え、時刻の最大値で遅延調整処理対象ピンをソートする。このあと、各ピンpに対し時刻の最大値が小さい順に以下の処理をおこなう。
ピンpの直前にバッファを挿入したと仮定して、クロック信号がバッファを通過するのにかかる時間tを、下記式(1)により算出する。
|(全ピンの時刻の最大値の中の最大値)−((pの時刻の最大値)+t)|
<|(全ピンの時刻の最大値の中の最大値)−(pの時刻の最大値)|・・・(1)
上記式(1)を満たす場合、すなわち、バッファを入れるとスキューが小さくなる場合、ピンpの直前にバッファを挿入する。このあと、遅延調整処理対象ピンリストの記述内容を各クラスタの中央に置いたバッファの入力ピンで置換える。
このサブツリー遅延調整処理のあと、クロックツリー遅延調整処理をおこなう(ステップS607)。クロックソース301をチップの中心に置き、クロックソース301を時刻0に信号が出発したと仮定して、クロックツリー300内の各ピンにクロック信号が到達する時刻を算出する。
すなわち、図3に示したように、複数のサブツリー321、323にまたがった同期グループAが存在した場合、その同期グループAに属するサブツリー321、323のルートピンのリストを遅延調整処理対象ピンリスト、クロックツリー300全体のソースを遅延調整処理対象ルートとして、クロックツリー遅延調整処理を実行する。図7は、クロックツリー遅延調整処理の処理開始状態を示す説明図である。図7において、サブツリー701〜704のサブルート711〜714の入力ピン721〜724が、遅延調整処理対象ピンとされている。また、各サブツリー701〜704は、上述したサブツリー遅延調整処理によって調整済みのサブツリーである。
そして、遅延調整処理対象ピン(入力ピン721〜724)に対し、時刻0に出発したクロック信号が、クロックツリー300の末端の回路素子の各ピンに到達する時刻を算出し、算出時刻の最大値と最小値を記憶する。なお、実際には、末端の回路素子のピンまでのクロック到達時刻の最大値および最小値の算出は、毎回算出しなおす必要はなく、ピンごとに時刻の最大値および最小値を記憶することによって効率的に算出処理をおこなうことができる。
さらに、遅延調整処理ルートから各遅延調整処理対象ピンにクロック信号が到達するまでの時刻を算出して、算出された遅延時刻の最大値および最小値に加算し、その最大値で遅延調整処理対象ピンをソートする。このあと、各ピンpに対し時刻の最大値が小さい順に以下の処理をおこなう。図8は、クロックツリー遅延調整処理において遅延時刻を算出した状態を示す説明図である。
図8では、一例として、処理ルート801における遅延時刻の最大値は4[ns]で最小値は3.5[ns]、処理ルート802における遅延時刻の最大値は4.5[ns]で最小値は3.8[ns]となっている。そして、ピンpの直前にバッファを挿入したと仮定して、バッファをクロック信号が通過するのにかかる時間tを下記式(2)により算出する。
|(全ピンの時刻の最大値の中の最大値)−((pの時刻の最大値)+t)|
<|(全ピンの時刻の最大値の中の最大値)−(pの時刻の最大値)|・・・(2)
図9は、クロックツリー遅延調整処理においてバッファを挿入した状態を示す説明図である。上記式(2)を満たす場合、すなわち、バッファを入れるとスキューが小さくなる場合、図9に示すように、ピンpの直前にバッファ900を挿入する。このように、上述したクロックツリー遅延調整処理(ステップS607)を実行することにより、クロックツリー生成結果(挿入したバッファの接続関係およびレイアウト位置)を出力することができる。
図10は、クロックツリー生成結果を論理的に示した説明図である。図10において、あらたに生成されたクロックツリー1000は、図4に示したクロックツリー300のサブツリー321、323に、それぞれバッファ1001、1002、1003が挿入されたツリーである。このバッファ1001〜1003の挿入により、スキューが最小化されている。
以上説明したように、クロックツリー生成装置、クロックツリー生成方法、およびクロックツリー生成プログラムによれば、クロックツリー300にクロック制御回路302が含まれている場合であっても、スキューを最小化したクロックツリー1000を生成することができる。また、分割部203による分割処理により、従来手作業によっておこなっていたサブツリーの分割を自動化でき、作業効率の大幅な向上を図ることができる。
なお、本実施の形態で説明したクロックツリー生成方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
(付記1)クロックソースから末端の回路素子群までのクロックツリーに関するネットリストと、前記クロックツリーのクロックが同期する同期グループに関する情報とを取得する取得手段と、
前記取得手段によって取得されたネットリストおよび同期グループに関する情報に基づいて、前記クロックツリーの途中のパスに存在する回路素子のピンの指定を受け付ける指定手段と、
前記指定手段によって指定された回路素子のピンに基づいて、前記クロックツリーを複数のサブツリーに分割する分割手段と、
前記分割手段によって分割された複数のサブツリーの遅延調整をおこなうサブツリー遅延調整手段と、
前記サブツリー遅延調整手段によっておこなわれた遅延調整の結果を用いて、前記クロックツリーの遅延調整をおこなうクロックツリー遅延調整手段と、
を備えることを特徴とするクロックツリー生成装置。
(付記2)前記分割手段は、
前記クロックツリーから、前記指定手段によってピンが指定された回路素子をサブルートとし、前記末端の回路素子群のうち一部の回路素子を終端とする第1のサブツリーを分割するとともに、前記クロックツリーのうち前記第1のサブツリーを除いた残余のツリーから、前記指定手段によってピンが指定された回路素子を終端とする第2のサブツリーと、前記末端の回路素子群のうち前記一部の回路素子以外の他の回路素子を終端とする第3のサブツリーと、を分割することを特徴とする付記1に記載のクロックツリー生成装置。
(付記3)前記クロックツリー遅延調整手段は、
前記同期グループが、前記第1のサブツリーの終端の回路素子と、前記第3のサブツリーの終端の回路素子を含む場合、前記クロックツリーの遅延調整をおこなうことを特徴とする付記1または2に記載のクロックツリー生成装置。
(付記4)クロックソースから末端の回路素子群までのクロックツリーに関するネットリストと、前記クロックツリーのクロックが同期する同期グループに関する情報とを取得する取得工程と、
前記取得工程によって取得されたネットリストおよび同期グループに関する情報に基づいて、前記クロックツリーの途中のパスに存在する回路素子のピンを指定する指定工程と、
前記指定工程によって指定された回路素子のピンに基づいて、前記クロックツリーを複数のサブツリーに分割する分割工程と、
前記分割工程によって分割された複数のサブツリーの遅延調整をおこなうサブツリー遅延調整工程と、
前記サブツリー遅延調整工程によっておこなわれた遅延調整の結果を用いて、前記クロックツリーの遅延調整をおこなうクロックツリー遅延調整工程と、
を含んだことを特徴とするクロックツリー生成方法。
(付記5)前記分割工程は、
前記クロックツリーから、前記指定工程によってピンが指定された回路素子をサブルートとし、前記末端の回路素子群のうち一部の回路素子を終端とする第1のサブツリーを分割するとともに、前記クロックツリーのうち前記第1のサブツリーを除いた残余のツリーから、前記指定工程によってピンが指定された回路素子を終端とする第2のサブツリーと、前記末端の回路素子群のうち前記一部の回路素子以外の他の回路素子を終端とする第3のサブツリーと、を分割することを特徴とする付記4に記載のクロックツリー生成方法。
(付記6)前記クロックツリー遅延調整工程は、
前記同期グループが、前記第1のサブツリーの終端の回路素子と、前記第3のサブツリーの終端の回路素子を含む場合、前記クロックツリーの遅延調整をおこなうことを特徴とする付記4または5に記載のクロックツリー生成方法。
(付記7)クロックソースから末端の回路素子群までのクロックツリーに関するネットリストと、前記クロックツリーのクロックが同期する同期グループに関する情報とを取得させる取得工程と、
前記取得工程によって取得されたネットリストおよび同期グループに関する情報に基づいて、前記クロックツリーの途中のパスに存在する回路素子のピンを指定させる指定工程と、
前記指定工程によって指定された回路素子のピンに基づいて、前記クロックツリーを複数のサブツリーに分割させる分割工程と、
前記分割工程によって分割された複数のサブツリーの遅延調整をおこなわせるサブツリー遅延調整工程と、
前記サブツリー遅延調整工程によっておこなわれた遅延調整の結果を用いて、前記クロックツリーの遅延調整をおこなわせるクロックツリー遅延調整工程と、
をコンピュータに実行させることを特徴とするクロックツリー生成プログラム。
(付記8)前記分割工程は、
前記クロックツリーから、前記指定工程によってピンが指定された回路素子をサブルートとし、前記末端の回路素子群のうち一部の回路素子を終端とする第1のサブツリーを分割させるとともに、前記クロックツリーのうち前記第1のサブツリーを除いた残余のツリーから、前記指定工程によってピンが指定された回路素子を終端とする第2のサブツリーと、前記末端の回路素子群のうち前記一部の回路素子以外の他の回路素子を終端とする第3のサブツリーと、を分割させることを特徴とする付記7に記載のクロックツリー生成プログラム。
(付記9)前記クロックツリー遅延調整工程は、
前記同期グループが、前記第1のサブツリーの終端の回路素子と、前記第3のサブツリーの終端の回路素子を含む場合、前記クロックツリーの遅延調整をおこなわせることを特徴とする付記7または8に記載のクロックツリー生成プログラム。
(付記10)付記7〜9のいずれか一つに記載のクロックツリー生成プログラムを記録したコンピュータ読み取り可能な記録媒体。
以上のように、本発明にかかるクロックツリー生成装置、クロックツリー生成方法、およびクロックツリー生成プログラムは、システムLSI設計で使用するCADツールとして利用することができる。
この発明の実施の形態にかかるクロックツリー生成装置のハードウェア構成を示すブロック図である。 この発明の実施の形態にかかるクロックツリー生成装置の機能的構成を示すブロック図である。 この発明の実施の形態にかかるクロックツリーおよび同期グループを示す説明図である。 分割部によって分割されたサブツリーを示す説明図である。 サブツリーの遅延調整を示す概略図である。 この発明の実施の形態にかかるクロックツリー生成処理手順を示すフローチャートである。 クロックツリー遅延調整処理の処理開始状態を示す説明図である。 クロックツリー遅延調整処理において遅延時刻を算出した状態を示す説明図である。 クロックツリー遅延調整処理においてバッファを挿入した状態を示す説明図である。 クロックツリー生成結果を論理的に示した説明図である。 従来の一般的な設計フローによって構築されたクロックツリーを示す説明図である。 クロックゲートを利用したタイミング制約を示す説明図である。
符号の説明
200 クロックツリー生成装置
201 取得部
202 指定部
203 分割部
204 サブツリー遅延調整部
205 クロックツリー遅延調整部
300 クロックツリー
301 クロックソース
302 クロック制御回路
303 クロックゲート
304 入力ピン
305、306 バッファ
312 回路素子群
321 第1のサブツリー
322 第2のサブツリー
323 第3のサブツリー

Claims (5)

  1. クロックソースから末端の回路素子群までのクロックツリーに関するネットリストと、前記クロックツリーのクロックが同期する同期グループに関する情報とを取得する取得手段と、
    前記取得手段によって取得されたネットリストおよび同期グループに関する情報に基づいて、前記クロックツリーの途中のパスに存在する回路素子のピンの指定を受け付ける指定手段と、
    前記指定手段によって指定された回路素子のピンに基づいて、前記クロックツリーを複数のサブツリーに分割する分割手段と、
    前記分割手段によって分割された複数のサブツリーの遅延調整をおこなうサブツリー遅延調整手段と、
    前記サブツリー遅延調整手段によっておこなわれた遅延調整の結果を用いて、前記クロックツリーの遅延調整をおこなうクロックツリー遅延調整手段と、
    を備えることを特徴とするクロックツリー生成装置。
  2. 前記分割手段は、
    前記クロックツリーから、前記指定手段によってピンが指定された回路素子をサブルートとし、前記末端の回路素子群のうち一部の回路素子を終端とする第1のサブツリーを分割するとともに、前記クロックツリーのうち前記第1のサブツリーを除いた残余のツリーから、前記指定手段によってピンが指定された回路素子を終端とする第2のサブツリーと、前記末端の回路素子群のうち前記一部の回路素子以外の他の回路素子を終端とする第3のサブツリーと、を分割することを特徴とする請求項1に記載のクロックツリー生成装置。
  3. クロックソースから末端の回路素子群までのクロックツリーに関するネットリストと、前記クロックツリーのクロックが同期する同期グループに関する情報とを取得する取得工程と、
    前記取得工程によって取得されたネットリストおよび同期グループに関する情報に基づいて、前記クロックツリーの途中のパスに存在する回路素子のピンを指定する指定工程と、
    前記指定工程によって指定された回路素子のピンに基づいて、前記クロックツリーを複数のサブツリーに分割する分割工程と、
    前記分割工程によって分割された複数のサブツリーの遅延調整をおこなうサブツリー遅延調整工程と、
    前記サブツリー遅延調整工程によっておこなわれた遅延調整の結果を用いて、前記クロックツリーの遅延調整をおこなうクロックツリー遅延調整工程と、
    を含んだことを特徴とするクロックツリー生成方法。
  4. クロックソースから末端の回路素子群までのクロックツリーに関するネットリストと、前記クロックツリーのクロックが同期する同期グループに関する情報とを取得させる取得工程と、
    前記取得工程によって取得されたネットリストおよび同期グループに関する情報に基づいて、前記クロックツリーの途中のパスに存在する回路素子のピンを指定させる指定工程と、
    前記指定工程によって指定された回路素子のピンに基づいて、前記クロックツリーを複数のサブツリーに分割させる分割工程と、
    前記分割工程によって分割された複数のサブツリーの遅延調整をおこなわせるサブツリー遅延調整工程と、
    前記サブツリー遅延調整工程によっておこなわれた遅延調整の結果を用いて、前記クロックツリーの遅延調整をおこなわせるクロックツリー遅延調整工程と、
    をコンピュータに実行させることを特徴とするクロックツリー生成プログラム。
  5. 請求項4に記載のクロックツリー生成プログラムを記録したコンピュータ読み取り可能な記録媒体。
JP2004324891A 2004-11-09 2004-11-09 クロックツリー生成装置、クロックツリー生成方法、クロックツリー生成プログラムおよび記録媒体 Expired - Fee Related JP4231837B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004324891A JP4231837B2 (ja) 2004-11-09 2004-11-09 クロックツリー生成装置、クロックツリー生成方法、クロックツリー生成プログラムおよび記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004324891A JP4231837B2 (ja) 2004-11-09 2004-11-09 クロックツリー生成装置、クロックツリー生成方法、クロックツリー生成プログラムおよび記録媒体

Publications (2)

Publication Number Publication Date
JP2006134215A true JP2006134215A (ja) 2006-05-25
JP4231837B2 JP4231837B2 (ja) 2009-03-04

Family

ID=36727685

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004324891A Expired - Fee Related JP4231837B2 (ja) 2004-11-09 2004-11-09 クロックツリー生成装置、クロックツリー生成方法、クロックツリー生成プログラムおよび記録媒体

Country Status (1)

Country Link
JP (1) JP4231837B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007329586A (ja) * 2006-06-06 2007-12-20 Sanyo Electric Co Ltd 半導体集積回路装置並びにその設計装置及び設計方法
JP2008028930A (ja) * 2006-07-25 2008-02-07 Toshiba Corp 半導体集積回路及びその設計方法
US7791381B2 (en) 2008-02-04 2010-09-07 Panasonic Corporation Semiconductor integrated circuit
JP2012094065A (ja) * 2010-10-28 2012-05-17 Fujitsu Semiconductor Ltd クロックツリー生成装置及びクロックツリー生成方法
US9348357B2 (en) 2014-06-30 2016-05-24 International Business Machines Corporation Stitchable global clock for 3D chips
CN116956804A (zh) * 2023-06-20 2023-10-27 合芯科技有限公司 一种缓冲器的版图构造方法、时钟树生成方法及装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007329586A (ja) * 2006-06-06 2007-12-20 Sanyo Electric Co Ltd 半導体集積回路装置並びにその設計装置及び設計方法
JP2008028930A (ja) * 2006-07-25 2008-02-07 Toshiba Corp 半導体集積回路及びその設計方法
US7791381B2 (en) 2008-02-04 2010-09-07 Panasonic Corporation Semiconductor integrated circuit
JP2012094065A (ja) * 2010-10-28 2012-05-17 Fujitsu Semiconductor Ltd クロックツリー生成装置及びクロックツリー生成方法
US9348357B2 (en) 2014-06-30 2016-05-24 International Business Machines Corporation Stitchable global clock for 3D chips
US9800232B2 (en) 2014-06-30 2017-10-24 International Business Machines Corporation Stitchable global clock for 3D chips
CN116956804A (zh) * 2023-06-20 2023-10-27 合芯科技有限公司 一种缓冲器的版图构造方法、时钟树生成方法及装置
CN116956804B (zh) * 2023-06-20 2024-04-05 合芯科技有限公司 一种缓冲器的版图构造方法、时钟树生成方法及装置

Also Published As

Publication number Publication date
JP4231837B2 (ja) 2009-03-04

Similar Documents

Publication Publication Date Title
JP4314233B2 (ja) 設計支援装置、設計支援方法、設計支援プログラム、および記録媒体
US7401308B2 (en) Timing analysis apparatus, timing analysis method, and computer product
JP4231837B2 (ja) クロックツリー生成装置、クロックツリー生成方法、クロックツリー生成プログラムおよび記録媒体
KR101117397B1 (ko) Lsi 시험 장치, lsi 시험 방법, 및 lsi 시험 프로그램을 기록한 기록 매체
JP4747034B2 (ja) 検証シナリオ作成プログラム、記録媒体、検証シナリオ作成装置および検証シナリオ作成方法
US6487707B1 (en) Layout design system of semiconductor ic device, layout design method of semiconductor ic device and computer-readable recording medium on which programs for allowing computer to execute respective means in the system or respective steps in the method are recorded
JP5167740B2 (ja) 設計支援プログラム、設計支援装置、および設計支援方法
US6704916B1 (en) Method and apparatus for optimizing placement and routing and recording medium for recording program for optimizing placement and routing
US20080209368A1 (en) Layout design method, layout design apparatus, and computer product
JP4388847B2 (ja) レイアウト設計装置、レイアウト設計プログラム、および記録媒体
JP2008004024A (ja) レイアウト設計プログラム、該プログラムを記録した記録媒体、レイアウト設計装置、およびレイアウト設計方法
JP5263393B2 (ja) 設計支援方法、設計支援装置、および設計支援プログラム
JP5050865B2 (ja) セルライブラリ検証プログラム、該プログラムを記録した記録媒体、セルライブラリ検証装置、およびセルライブラリ検証方法
JP4825905B2 (ja) レイアウト設計装置、レイアウト設計プログラム、および記録媒体
US20080005714A1 (en) Logic diagram display method, program, and apparatus
JP5533564B2 (ja) クロックツリー生成装置及びクロックツリー生成方法
JP4783712B2 (ja) レイアウト設計方法、レイアウト設計プログラムおよびレイアウト設計装置
JP2008071000A (ja) 半導体集積回路の設計装置、設計方法、設計プログラムおよび該プログラムを記録した記録媒体
JP2007257375A (ja) 遅延解析プログラム、記録媒体、遅延解析方法、および遅延解析装置
JP4968294B2 (ja) レイアウト設計装置、レイアウト設計プログラム、および記録媒体
US7080338B2 (en) Method and apparatus for designing layout, and computer product
JP4275639B2 (ja) レイアウト設計装置、およびレイアウト設計プログラム
JP2008117136A (ja) 検証支援プログラム、記録媒体、検証支援装置および検証支援方法
JP2010231631A (ja) 設計支援プログラム、設計支援装置、および設計支援方法
JP2006058932A (ja) クロック変換方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060222

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080805

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081006

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20081202

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081208

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111212

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111212

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121212

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121212

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131212

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees