【解決手段】設計装置1が、クロックスキューの調整を行うときに、クロック信号に同期して動作する回路部10,11の電源電流Ia,Ibをそれぞれ周波数成分で分解し、回路部10,11に到達するクロック信号のスキュー値Δtを設定し、周波数成分での分解によって得られる各周波数成分の回路部10,11の電源電流Ia,Ibを、回路部10、11の間で周波数成分毎に合成することにより、合成振幅を算出する処理を、スキュー値Δtを変更することで繰り返し、合成振幅のスキュー依存性を求める。
周波数成分での分解によって得られる複数の周波数成分の前記電源電流のうち、抑制対象の周波数成分の前記電源電流を、前記複数の回路部間で合成することにより算出された合成振幅が、第1の値よりも小さい値となるときのスキュー値を選択してクロックツリーの設計を行う、ことを特徴とする請求項1に記載の設計方法。
前記合成振幅が前記第1の値よりも小さい値となるときの前記スキュー値が複数あるとき、最も小さなスキュー値、または前記合成振幅が最も小さくなるスキュー値を選択することを特徴とする請求項2に記載の設計方法。
前記複数の回路部の中で前記電源電流のピークが他の回路部よりも大きい回路部、または前記複数の回路部の中でセットアップおよびホールドのタイミング制約が他の回路部よりも緩い回路部に対して供給する前記クロック信号に優先的に、前記スキュー値を適用することを特徴とする請求項1乃至3の何れか一項に記載の設計方法。
【発明を実施するための形態】
【0010】
以下、本発明の実施の形態を図面を参照して説明する。
(第1の実施の形態)
図1は、第1の実施の形態の設計方法および設計装置の一例を示す図である。
【0011】
設計装置1は、プロセッサ2と記憶部3を有している。
プロセッサ2は、記憶部3に記憶されているデータおよびプログラムに基づき、以下のような処理を実行する。
【0012】
なお、以下に示す処理は、例えば、半導体集積回路の設計工程のうち、クロックツリーの設計の際に行われる。
図1にはクロック信号に同期して動作する回路部10,11にクロック信号を供給するクロックツリーの一例が示されている。回路部10,11には電源電圧VDDが供給されている。クロック信号は、クロック生成部12によって生成され、クロックバッファ13を介して回路部10に供給され、クロックバッファ14,15を介して回路部11に供給される。クロックバッファ13,15でクロック信号に生じる遅延時間が等しい場合、クロックバッファ14による遅延時間により、回路部10,11に到達するクロック信号にΔt分の時間差(スキュー)が生じる。スキューを意図的に発生させることで、回路部10,11が同じタイミングで動作しないようになり、電源ノイズの発生が抑制される。
【0013】
ただ、前述のように、ノイズは複数の周波数を含むため、スキュー値の設定によっては、ある周波数のノイズは低減できるが他の周波数では逆に増加させてしまう可能性がありスキュー値の調整は難しい。そのため、本実施の形態の設計方法では、クロックスキューの調整を行うときに、以下の処理を行うことによって、調整を容易にする。
【0014】
まず、プロセッサ2は回路部10,11の電源電流Ia,Ibをそれぞれ周波数成分で分解する(ステップS1)。
図1には、電源電流Ia,Ibが、周波数f1,f2,f3を含む周波数成分に分解された例が示されている。周波数分解の例については後述する。
【0015】
また、プロセッサ2は、回路部10,11に到達するクロック信号のスキュー値(Δt)を設定する(ステップS2)。そして、プロセッサ2は、各周波数での回路部10,11の電源電流Ia,Ibの振幅を合成する処理(ステップS3)を、スキュー値を変更することで繰り返し、合成した振幅のスキュー依存性を求める。なお、スキュー値の設定は、ステップS1の処理の前に行ってもよい。
【0016】
図1には、電源電流Ia,Ibを各周波数で合成したときの合成振幅の例と、抑制したい(抑制対象の)周波数f1,f2,f3の電源電流の合成振幅のスキュー依存性の例が示されている。合成振幅はノイズ(電源ノイズ)の元となる電源電流の大きさを表している。合成振幅のスキュー依存性を求めることで、各周波数のノイズを効果的に抑制できるスキュー値がわかり、スキュー値の調整が容易になる。
【0017】
例えば、
図1の例のように、ある閾値THよりも周波数f1,f2,f3のノイズを抑えたいときには、スキュー値をΔt1〜Δt2の間に設定すればよいことが分かる。
プロセッサ21は、例えば、そのスキュー値の範囲の遅延時間をもつクロックバッファ14を使用してクロックツリーの設計を行う。スキュー値の調整および決定が容易になることで、設計時間の短縮も期待できる。
【0018】
(第2の実施の形態)
以下、第2の実施の形態の設計方法および設計装置の一例を示す。
図2は、第2の実施の形態の設計装置の一例を示す図である。
【0019】
設計装置は、例えば、コンピュータ20であり、プロセッサ21によって装置全体が制御されている。プロセッサ21には、バス29を介してRAM(Random Access Memory)22と複数の周辺機器が接続されている。プロセッサ21は、マルチプロセッサであってもよい。プロセッサ21は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)である。またプロセッサ21は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
【0020】
RAM22は、コンピュータ20の主記憶装置として使用される。RAM22には、プロセッサ21に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM22には、プロセッサ21による処理に必要な各種データが格納される。
【0021】
バス29に接続されている周辺機器としては、HDD(Hard Disk Drive)23、グラフィック処理装置24、入力インタフェース25、光学ドライブ装置26、機器接続インタフェース27およびネットワークインタフェース28がある。
【0022】
HDD23は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD23は、コンピュータ20の補助記憶装置として使用される。HDD23には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【0023】
グラフィック処理装置24には、モニタ24aが接続されている。グラフィック処理装置24は、プロセッサ21からの命令にしたがって、画像をモニタ24aの画面に表示させる。モニタ24aとしては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
【0024】
入力インタフェース25には、キーボード25aとマウス25bとが接続されている。入力インタフェース25は、キーボード25aやマウス25bから送られてくる信号をプロセッサ21に送信する。なお、マウス25bは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【0025】
光学ドライブ装置26は、レーザ光などを利用して、光ディスク26aに記録されたデータの読み取りを行う。光ディスク26aは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク26aには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
【0026】
機器接続インタフェース27は、コンピュータ20に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース27には、メモリ装置27aやメモリリーダライタ27bを接続することができる。メモリ装置27aは、機器接続インタフェース27との通信機能を搭載した記録媒体である。メモリリーダライタ27bは、メモリカード27cへのデータの書き込み、またはメモリカード27cからのデータの読み出しを行う装置である。メモリカード27cは、カード型の記録媒体である。
【0027】
ネットワークインタフェース28は、ネットワーク28aに接続されている。ネットワークインタフェース28は、ネットワーク28aを介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【0028】
以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。なお、第1の実施の形態に示した設計装置1も、
図2に示したコンピュータ20と同様のハードウェアにより実現することができる。
【0029】
コンピュータ20は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。コンピュータ20に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、コンピュータ20に実行させるプログラムをHDD23に格納しておくことができる。プロセッサ21は、HDD23内のプログラムの少なくとも一部をRAM22にロードし、プログラムを実行する。またコンピュータ20に実行させるプログラムを、光ディスク26a、メモリ装置27a、メモリカード27cなどの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ21からの制御により、HDD23にインストールされた後、実行可能となる。またプロセッサ21が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【0030】
(設計方法(スキュー値の設定処理)の一例)
図3は、設計対象のクロックツリーの一例を示す図である。
図3には回路部b1〜bnにクロック信号を供給するクロックツリーの一例が示されている。回路部b1〜bnは、クロック信号に同期して動作するフリップフロップ回路などを含んでいる。PLL(Phase Locked Loop)30から出力されるクロック信号は、クロックバッファcb1〜cbnを介して回路部b1〜bnに供給される。なお、クロックバッファcb1〜cbnによる遅延時間差は抑えて、回路部b1〜bnに到達するクロック信号には、スキューが発生しないように設計されているものとする。
【0031】
このようなクロックツリーに対して、更にクロックバッファ(遅延素子)を追加することで、回路部b1〜bnに含まれる回路部間でのクロックスキューを拡大させる処理が行われる。このとき追加されるクロックバッファの特性(サイズなど)は、以下の処理で算出されるスキュー値に基づき決定される。
【0032】
なお、図示を省略しているが、回路部b1〜bnには電源電圧VDDが供給されている。
図4、
図5は、第2の実施の形態の設計方法の一例の流れを示すフローチャートである。
【0033】
なお、以下では、
図3に示した回路部b1〜bnそれぞれに到達するクロック信号のいずれかの遅延時間を増加させることで、クロックスキューを拡大するものとする。なお、各回路部b1〜bnに供給されるクロック信号の周波数、位相および振幅などは、回路部b1〜bnの規模や動作に応じて、任意に設定されるものである。また、以下では、
図2に示したコンピュータ20(設計装置)を用いて処理が実行されるものとして説明する。
【0034】
まず、プロセッサ21は、回路部b1〜bnへクロック信号が供給された際に、回路部b1〜bnに流れる電源電流(消費電流)を近似した三角波電流(三角波電流A1〜Anとする)を推定して生成する(ステップS10)。
【0035】
プロセッサ21は、三角波電流A1〜Anの波形を回路部b1〜bn毎に、例えば、RAM22またはHDD23に記憶する(ステップS11)。
プロセッサ21は、RAM22またはHDD23に記憶された三角波電流A1〜Anを読み出して、それぞれ周波数成分に分解する(ステップS12)。この場合、1つの三角波電流を周波数分解するならば、基本周波数と、その基本周波数の整数倍の周波数である複数の高調波とに分解できる。なお、基本周波数とは、ここではクロック信号の周波数に相当する。
【0036】
プロセッサ21は、三角波電流A1〜Anそれぞれに含まれている周波数を、m次まで回路部b1〜bn毎にデータベース化して、例えば、RAM22またはHDD23に記憶する(ステップS13)。
【0037】
例えば、回路部b1の三角波電流A1の高調波周波数として、以下の正弦波を、回路部b1の三角波電流A1における周波数成分として登録する。
正弦波b1(f1)=A
b1(f1)cos(ω
1(t+t0))、正弦波b1(f2)=A
b1(f2)cos(ω
2(t+t0))、・・・、正弦波b1(fm)=A
b1(fm)cos(ω
m(t+t0))である。ここで、A
b1(fk)は回路部b1における三角波電流A1に含まれている周波数fkの振幅、ωは角周波数、t0は初期位相時間である。
【0038】
なお、周波数成分の表現方法の1つとして、上記の例では正弦波で表現した場合を示したが、振幅および位相情報を含んでいれば、その他の表現方法であってもよい。
次にプロセッサ21は、三角波電流に含まれている複数の周波数の中で、特定の周波数のノイズ電流の抑制を図るために、その特定の周波数を着目周波数として選定する(ステップS14)。
【0039】
例えば、三角波電流に含まれている周波数の中でも特に3次高調波によって発生するノイズ電流を抑制したいのであれば、3次高調波の周波数を着目周波数と選定することになる。なお、着目周波数は、1つとは限らず、複数の特定の周波数に対するノイズ電流の抑制を図る場合は、複数個選定することになる。
【0040】
プロセッサ21は、着目周波数を、例えば、RAM22またはHDD23に記憶する(ステップS15)。
プロセッサ21は、回路部b1〜bnの中から到達するクロック信号の遅延時間を増加させる回路部(以下、クロックスキュー適用回路とも呼ぶ)を選定する(ステップS16)。
【0041】
プロセッサ21は、クロックスキュー適用回路に対して、どれだけのクロックスキューを与えるかのクロックスキュー候補値を生成し(ステップS17)、クロックスキュー候補値を、例えば、RAM22またはHDD23に記憶する(ステップS18)。
【0042】
その後、プロセッサ21は、クロック信号に適用するスキュー値の候補値(以下クロックスキュー候補値と呼ぶ)でクロックスキュー適用回路毎に複数の着目周波数の正弦波の位相を変え、着目周波数毎に電源電流の正弦波を複数の回路部間で合成する。この作業をクロックスキュー候補値のバリエーション分繰り返す。(ステップS19)。
【0043】
例えば、回路部b1〜bnのうち、回路部b1に到達するクロック信号を基準にしたときの、回路部b2〜bnに到達するクロック信号に適用するクロックスキュー候補値をt
sb2〜t
sbnとする。また、着目周波数を周波数f1とする。
【0044】
この場合、回路部b1の着目周波数f1の正弦波b1(f1)は、振幅をA
b1(f1)、初期位相時間をt0
b1とすれば、正弦波b1(f1)は以下の式(1)となる。
正弦波b1(f1)=A
b1(f1)cos(ω
1(t+t0
b1))・・・(1)
また、回路部b2の着目周波数f1の正弦波b2(f1)は、クロックスキュー候補値=t
sb2の分位相がずれるので、振幅をA
b2(f1)、初期位相時間をt0
b2とすれば、正弦波b2(f1)は以下の式(2)となる。
【0045】
正弦波b2(f1)=A
b2(f1)cos(ω
1(t+t0
b2+t
sb2))
・・・(2)
同様に、回路部bnの着目周波数f1の正弦波bn(f1)は、クロックスキュー候補値=t
sbnの分位相がずれるので、振幅をA
bn(f1)、初期位相時間をt0
bnとすれば、正弦波bn(f1)は以下の式(3)となる。
【0046】
正弦波bn(f3)=A
bn(f1)cos(ω
1(t+t0
bn+t
sbn))
・・・(3)
したがって、これら正弦波の合成波(合成正弦波)I(f1)は、以下の式(4)となる。
【0047】
I(f1)=A
b1(f1)cos(ω
1(t+t0
b1))
+A
b2(f1)cos(ω
1(t+t0
b2+t
sb2))
+・・・
+A
bn(f1)cos(ω
1(t+t0
bn+t
sbn))・・・(4)
なお、実際には、クロックスキュー候補値t
sb2〜t
sbnを調整しながら(例えば、低い値から高い値へ徐々に増加させながら)、着目周波数の正弦波の位相をずらし、位相をずらした複数の着目周波数の正弦波を合成することになる。
【0048】
次にプロセッサ21は、着目周波数毎に求めた合成正弦波を、例えば、RAM22またはHDD23に記憶する(ステップS20)。
なお、着目周波数f1のクロックスキュー候補値がp個あるとすれば、
図5中の合成正弦波I(f1)
-1は、1個目のクロックスキュー候補値が割り当てられた着目周波数f1における合成正弦波であることを示している。また、合成正弦波I(f1)
-pは、p個目のクロックスキュー候補値が割り当てられた着目周波数f1における合成正弦波であることを示している。
【0049】
そして、プロセッサ21は、合成正弦波の振幅(合成振幅)の値が所定値を下回っているか否かを判別する(ステップS21)。合成正弦波の振幅(合成振幅)の値が所定値を下回っていればステップS22の処理が行われ、所定値を超えている場合はステップS17からの処理が繰り返される。
【0050】
ステップS22の処理では、プロセッサ21は、ステップS17の処理で生成したクロックスキュー候補値をスキュー値として決定する。なお、クロックスキュー候補値が複数出現した場合は、プロセッサ21は、後述する規定にもとづいてその中からスキュー値を選択することになる。
【0051】
次に上記のステップS10の処理で生成される三角波電流の一例を説明する。
(三角波電流の生成例)
図6は三角波電流波形の例を示す図である。
【0052】
回路部b1〜b4に流れる三角波電流波形W11〜W14が示されている。横軸は時間(sec)、縦軸は電流(mA)である。
図6に示すように、三角波電流波形W11〜W14は、回路部b1〜b4の回路規模に応じて、周波数や電流量がそれぞれ異なる。
【0053】
三角波電流波形は、各回路部の平均消費電流、動作周波数に基づき生成することができる。
次にステップS12の周波数分解処理の一例について説明する。
【0054】
(周波数分解処理例)
三角波電流波形の周波数分解には、例えば、以下の式(5)に示すようなフーリエ級数式を使用することができる。式(5)において、Aは振幅、Tは周期、τは波形幅(パルス幅)、xは次数(高調波の次数)、ω
0は初期角周波数である。
【0056】
また、式(5)の第1項のAτ/2Tの項は、DC(Direct Current)成分であり、第2項は周波数成分である。本実施の形態では、周波数スペクトラムを評価指標とするため、式(5)の中の右辺第2項の周波数成分が使用される。
【0057】
なお、式(5)第2項の(Aτ/T)・{(sin(xπτ/2T))/(xπτ/2T))}
2は、x次高調波の振幅(定数)である。
図7は正弦波関数テーブルの一例を示す図である。
【0058】
正弦波関数テーブルT1は、各回路部の高調波周波数の正弦波関数を示すテーブルであり、例えば、RAM22またはHDD23で記憶される。なお、図中のA
bk(fb)(k=1〜n)は、回路部bkの周波数fbの三角波電流振幅、t0
bkは、回路部bkの初期位相時間である。
【0059】
次にステップS14の着目周波数の選定処理について説明する。
(着目周波数の選定処理例)
三角波電流に含まれている複数の周波数のうち、どの高調波周波数を着目周波数として選定するかは、以下のような指標にもとづいて決定される。
【0060】
(1)プロセッサ21は、各回路部の動作周波数の整数倍高調波が重なる周波数を着目周波数として設定する。例えば、
図7で示した周波数fjは、回路部b1,b2,b3,bnのすべてにおいて重なる周波数である場合、周波数fjの電流ピークは大きいとみなせるので、プロセッサ21は、周波数fjを着目周波数として設定する。
【0061】
このように、プロセッサ21は、回路部毎の三角波電流を周波数分解して得られた複数の周波数の中から、複数の回路部に渡って(少なくとも2つ以上の回路部に渡って)、同一時間帯で複数重なる周波数を着目周波数に設定する。例えば、
図1に示したような周波数f1,f2,f3は、回路部10,11間で重なっているため、これらは着目周波数に設定される。これにより、ノイズ電流が大きいとみなせる特定の周波数に対して、ノイズ低減化を図ることが可能になる。
【0062】
(2)最終の製品または半導体素子では、EMI(Electro Magnetic Interference:電磁妨害波)規格として考慮すべき周波数帯域が定められている。このため、プロセッサ21は、EMI規格で要求される周波数帯域の範囲に含まれる、各回路部の動作周波数および高調波周波数を着目周波数として設定する。
【0063】
次にステップS16の、クロックスキュー適用回路の選定処理の一例を説明する。
(クロックスキュー適用回路の選定例)
クロックスキュー適用回路を選定する場合、プロセッサ21は、例えば、消費電流またはタイミング制約にもとづいて選定する。
【0064】
消費電流にもとづいて選定する場合、プロセッサ21は、回路部b1〜bnのうち、三角波電流ピークの大きい上位k(=1、2、・・・)個の回路部をクロックスキュー適用回路と選定する。
【0065】
また、タイミング制約にもとづいて選定する場合は、プロセッサ21は、回路部b1〜bnに対してクロック信号c1〜cnが与えられた際に、セットアップ/ホールドタイミングの制約が緩い上位k個の回路部をクロックスキュー適用回路と選定する。
【0066】
回路部に与えるクロックスキューは、その回路部のセットアップ/ホールドタイミングを満たす範囲内で設定することが可能であるから、セットアップ/ホールドタイミングの制約が緩い回路部には、クロックスキューの許容値も大きくすることができる。
【0067】
なお、クロックスキュー適用回路の個数kを多くするほど、許容されるタイミング制約内で、クロックスキュー分散効果を細かく評価できるため、状況に応じてkの値は増減すればよい。
【0068】
このように、プロセッサ21は、複数の回路部の中で消費電流(電源電流)のピークが他の回路部よりも大きいもの、または複数の回路部の中でセットアップおよびホールドのタイミング制約が他の回路部よりも緩いものを優先的にクロックスキュー適用回路とする。これにより、クロックスキューを与えるべき回路部を適切に選択することが可能になる。
【0069】
次にステップS17のクロックスキュー候補値の生成処理の一例を説明する。
(クロックスキュー候補値の生成処理例)
スキュー値は、回路部に対するタイミング制約で規定された値(タイミング制約値)を最大値とするので、プロセッサ21は、その最大値を分割した値(例えば、等分割した値)をスイープ(sweep)して、複数のクロックスキュー候補値を生成する。
【0070】
図8はクロックスキュー設定テーブルの一例を示す図である。
クロックスキュー設定テーブルT2は、クロックスキュー候補値を生成する際に利用されるテーブルであり、例えば、RAM22またはHDD23で記憶される。
【0071】
クロックスキュー設定テーブルT2は、クロックスキュー適用/非適用、クロックスキュー最大値およびクロックスキュースイープステップの項目を有している。なお、クロックスキュー適用回路毎に、セットアップ/ホールドタイミングの制約は異なるので、クロックスキュー適用回路に与えるクロックスキューの最大値も異なっている。
【0072】
ここで、回路部b1は、クロックスキュー適用回路であり、クロックスキューの最大値が500ps、スイープステップが50psとなっている。したがって、回路部b1へ与えるクロックスキュー候補値は、50ps、100ps、150ps、・・・、450ps、500psとなる。
【0073】
なお、回路部b3は、電源電流のピークが他の回路部b1,b2,bnよりも小さい、またはタイミング制約が他の回路部b1,b2,bnよりも厳しいため、クロックスキュー非適用となっている。
【0074】
このように、プロセッサ21は、回路部のセットアップおよびホールドのタイミング制約値を最大値とし、最大値を所定数に分割したステップ値を整数倍してスキュー候補値を生成する。これにより、回路部のタイミング制約の範囲内で適切な複数のクロックスキュー候補値を生成することが可能になる。
【0075】
次にステップS19の正弦波合成処理の一例について、
図8に示した正弦波関数テーブルT1の例を用いて説明する。
(正弦波合成処理例)
正弦波関数テーブルT1において、プロセッサ21が、ノイズ電流の抑制対象の着目周波数として周波数f2,f3,fjを設定したとする。
【0076】
また、プロセッサ21は、正弦波関数テーブルT1中の回路部b1〜bnの中で、クロックスキュー適用回路を回路部b1,b2,bnと選定する。そして、プロセッサ21は、回路部b1,b2,bnに対して、クロックスキュー候補値t
sb1,t
sb2,t
sbnを可変させながら割り当てていくものとする。
【0077】
この場合、着目周波数f2,f3,fjの各正弦波合成波I(f2),I(f3),I(fj)は、以下の式(6)〜(8)となる。
【0081】
図9は着目周波数設定テーブルの一例を示す図である。
着目周波数設定テーブルT3は、xを次数にして、着目周波数を可変的に設定するためのテーブルであり、例えば、RAM22またはHDD23で記憶される。
【0082】
図9の例では、着目周波数設定テーブルT3は、30MHzを起点にして、30MHzの整数倍の30MHz、60MHz、・・・、fmaxまで順に、着目周波数を増加させるテーブル構成となっている。
【0083】
図10はクロックスキュースイープテーブルの一例を示す図である。
クロックスキュースイープテーブルT4は、yをスイープステップ番号にして、クロックスキュー候補値を可変的に設定するためのテーブルであり、例えば、RAM22またはHDD23で記憶される。
【0084】
図10の例では、クロックスキュースイープテーブルT4は、1ステップを50psとしたスイープステップであって、0ps、50ps、・・・、tsmaxまで順に、クロックスキュー候補値を増加させるテーブル構成となっている。
【0085】
図11は正弦波合成処理時の着目周波数およびクロックスキュー候補値の可変設定の一例の流れを示すフローチャートである。
プロセッサ21は、次数xがMを超えるか否かを判別する(ステップS30)。次数xがMを超えなければステップS31の処理が行われ、Mを超えたら処理が終了される。
【0086】
ステップS31の処理では、プロセッサ21は、着目周波数設定テーブルT3を利用して、着目周波数fxを設定する。
その後、プロセッサ21は、スイープステップ番号yがNを超えるか否かを判別する(ステップS32)。スイープステップ番号yがNを超えなければステップS33の処理が行われ、Nを超えたらステップS36の処理が行われる。
【0087】
ステップS33の処理では、プロセッサ21は、クロックスキュースイープテーブルT4を利用して、クロックスキュー候補値を生成する。クロックスキュー候補値tsは、スイープステップをtステップとすれば、ts=t×yで算出される。
【0088】
その後、プロセッサ21は、着目周波数fxにおけるクロックスキュー毎の正弦波の合成を行い(ステップS34)、スイープステップ番号yをインクリメントする(y=y+1)(ステップS35)。その後ステップS32からの処理が繰り返される。
【0089】
ステップS36の処理では、プロセッサ21は、次数xをインクリメントする(x=x+1)。その後、ステップS30からの処理が繰り返される。
図12は合成正弦波の一例を示す図である。
【0090】
横軸はスキュー値(ns)、縦軸は電流(合成正弦波の振幅)(mA)である。クロックスキュー候補値をスイープしながら正弦波を合成した際の、式(6)〜(8)における合成正弦波I(f2)、I(f3)、I(fj)の振幅変動が示されている。
【0091】
I(f2)は着目周波数f2の合成正弦波、I(f3)は着目周波数f3の合成正弦波、I(fj)は着目周波数fjの合成正弦波である。
なお、単純化のため、回路部b1へ与えるクロックスキュー候補値t
sb1は固定とする。さらに、回路部b2へ与えるクロックスキュー候補値t
sb2と、回路部bnへ与えるクロックスキュー候補値t
sbnとを等しい値でスイープしたものを想定している。なお、クロックスキュー候補値t
sb1,t
sb2,t
sbnを個別に任意に設定する場合、
図11のステップS33の手順を所定回数行えばよい。
【0092】
このように、プロセッサ21は、着目周波数すべてについて合成正弦波を算出すると、合成正弦波電流の振幅値が、例えば、閾値th以下となるクロックスキュー候補値の中から、実際に設定すべきスキュー値を選択する。
【0093】
例えば、
図12において、領域r1,r2は、合成正弦波電流の振幅値が閾値th以下であり、さらにクロックスキューの許容範囲(criteria)内の領域を示すものとする。したがって、プロセッサ21は、領域r1,r2の中のクロックスキュー候補値を、実際に設定すべきスキュー値として選択することになる。ただし、領域r1,r2には、複数のクロックスキュー候補値が含まれている。
【0094】
このような場合、プロセッサ21は、回路部のタイミング制約を考慮して、タイミング制約が厳しいようなクロックスキュー適用回路には、許容範囲内で小さなクロックスキュー候補値を選択する。
図12の例では、領域r1内のクロックスキュー候補値の最小値は9nsであるから、プロセッサ21は、スキュー値=9nsを採用することになる。
【0095】
また、電流強度を抑えることを優先する場合は、プロセッサ21は、許容範囲内で、振幅値が小さいクロックスキュー候補値を選択する。
図12の例では、領域r2内で振幅値が小さいクロックスキュー候補値は16nsであるから、プロセッサ21は、スキュー値=16nsを採用することになる。
【0096】
このように、プロセッサ21は、クロックスキューの設定許容範囲内に複数のクロックスキュー候補が存在する場合、設定許容範囲内で最も小さなクロックスキュー候補をスキュー値として採用する。これにより、回路部のタイミング制約にマージンを持たせることができ、回路部の安定動作を実現しながらノイズ低減化を図ることが可能になる。
【0097】
または、プロセッサ21は、クロックスキューの設定許容範囲内に複数のクロックスキュー候補が存在する場合、設定許容範囲内で合成周波数の振幅が最も小さくなるクロックスキュー候補をスキュー値として採用する。これにより、ノイズ電流強度の制約を満たすことが可能になる。
【0098】
このようにして採用された、スキュー値に基づき、クロックツリーにクロックバッファが追加され、クロックスキューの拡大が行われる。
以上説明したように、本実施の形態の設計方法及び設計装置によれば、合成振幅のスキュー依存性を求めることで、各周波数のノイズを抑制できるスキュー値がわかる。つまり、設定したスキュー値によってどの周波数ではノイズが抑制され、どの周波数では悪化してしまうかが明瞭に評価することも可能になる。そのためスキュー値の調整が容易になり、所望の周波数のノイズを抑制できる高精度なスキュー値の設定と、TAT(Turn Around Time)の短縮化が可能となる。
【0099】
以上、実施の形態に基づき、本発明の設計方法、設計装置及びプログラムの一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。