(57)【要約】【課題】クロックスキューの調整を容易にする。【解決手段】設計装置１が、クロックスキューの調整を行うときに、クロック信号に同期して動作する回路部１０，１１の電源電流Ｉａ，Ｉｂをそれぞれ周波数成分で分解し、回路部１０，１１に到達するクロック信号のスキュー値Δｔを設定し、周波数成分での分解によって得られる各周波数成分の回路部１０，１１の電源電流Ｉａ，Ｉｂを、回路部１０、１１の間で周波数成分毎に合成することにより、合成振幅を算出する処理を、スキュー値Δｔを変更することで繰り返し、合成振幅のスキュー依存性を求める。【選択図】図１
2015194904.tif 000002
【特許請求の範囲】
【請求項１】
設計装置が、
クロックスキューの調整を行うときに、
クロック信号に同期して動作する複数の回路部の電源電流をそれぞれ周波数成分で分解し、
前記複数の回路部に到達する前記クロック信号のスキュー値を設定し、
周波数成分での分解によって得られる各周波数成分の前記複数の回路部の前記電源電流を、前記複数の回路部間で周波数成分毎に合成することにより、合成振幅を算出する処理を、前記スキュー値を変更することで繰り返し、前記合成振幅のスキュー依存性を求める、
ことを特徴とする設計方法。
【請求項２】
周波数成分での分解によって得られる複数の周波数成分の前記電源電流のうち、抑制対象の周波数成分の前記電源電流を、前記複数の回路部間で合成することにより算出された合成振幅が、第１の値よりも小さい値となるときのスキュー値を選択してクロックツリーの設計を行う、ことを特徴とする請求項１に記載の設計方法。
【請求項３】
前記合成振幅が前記第１の値よりも小さい値となるときの前記スキュー値が複数あるとき、最も小さなスキュー値、または前記合成振幅が最も小さくなるスキュー値を選択することを特徴とする請求項２に記載の設計方法。
【請求項４】
前記複数の回路部の中で前記電源電流のピークが他の回路部よりも大きい回路部、または前記複数の回路部の中でセットアップおよびホールドのタイミング制約が他の回路部よりも緩い回路部に対して供給する前記クロック信号に優先的に、前記スキュー値を適用することを特徴とする請求項１乃至３の何れか一項に記載の設計方法。
【請求項５】
プロセッサを有し、
前記プロセッサは、
クロックスキューの調整を行うときに、
クロック信号に同期して動作する複数の回路部の電源電流をそれぞれ周波数成分で分解し、
前記複数の回路部に到達する前記クロック信号のスキュー値を設定し、
周波数成分での分解によって得られる各周波数成分の前記複数の回路部の前記電源電流を、前記複数の回路部間で周波数成分毎に合成することにより、合成振幅を算出する処理を、前記スキュー値を変更することで繰り返し、前記合成振幅のスキュー依存性を求める、
処理を実行することを特徴とする設計装置。
【請求項６】
クロックスキューの調整を行うときに、
クロック信号に同期して動作する複数の回路部の電源電流をそれぞれ周波数成分で分解し、
前記複数の回路部に到達する前記クロック信号のスキュー値を設定し、
周波数成分での分解によって得られる各周波数成分の前記複数の回路部の前記電源電流を、前記複数の回路部間で周波数成分毎に合成することにより、合成振幅を算出する処理を、前記スキュー値を変更することで繰り返し、前記合成振幅のスキュー依存性を求める、
処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、設計方法、設計装置およびプログラムに関する。
【背景技術】
【０００２】
トランジスタの微細化プロセスの進展に伴い、近年の半導体集積回路は、動作周波数の高速化、大規模化が進んでおり、電源・ＧＮＤを流れる電流も大きく急峻になっている。このような状況において、この電流によって発生するノイズ（同時スイッチングノイズや輻射ノイズなど）の影響も著しく、効果的なノイズ低減化の対策が求められている。
【０００３】
ノイズ低減化対策としては、半導体集積回路内の各回路部におけるクロックスキューを分散させるようにクロックツリーの設計を行う方法（スキュー分散方法）がある。
スキュー分散方法は、回路部毎に供給するクロック信号にスキューを発生させて、回路部への到達時間を意図的にずらし、回路部間の動作を時間的に分散させることで、電流ピークを抑えてノイズの低減を図るものである。
【０００４】
従来、セルの配置配線情報から遅延情報を抽出し、遅延情報にもとづき算出したスキュー値の許容範囲内でスキューを拡大する手法が提案されている。この手法では、各回路ブロックに流れる電流を時間軸上で合成した合成電流のピークを低減するためのスキュー値を求めてノイズを抑制している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−２６７７５２号公報
【特許文献２】国際公開第００／６５６５１号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、ノイズは複数の周波数を含むため、スキュー値の設定によっては、ある周波数のノイズは低減できるが他の周波数では逆に増加させてしまう可能性があり、ノイズ抑制のためのクロックスキューの調整は難しかった。
【課題を解決するための手段】
【０００７】
発明の一観点によれば、設計装置が、クロックスキューの調整を行うときに、クロック信号に同期して動作する複数の回路部の電源電流をそれぞれ周波数成分で分解し、前記複数の回路部に到達する前記クロック信号のスキュー値を設定し、周波数成分での分解によって得られる各周波数成分の前記複数の回路部の前記電源電流を、前記複数の回路部間で周波数成分毎に合成することにより、合成振幅を算出する処理を、前記スキュー値を変更することで繰り返し、前記合成振幅のスキュー依存性を求める、設計方法が提供される。
【発明の効果】
【０００８】
開示の設計方法、設計装置およびプログラムによれば、クロックスキューの調整が容易になる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施の形態の設計方法および設計装置の一例を示す図である。
【図２】第２の実施の形態の設計装置の一例を示す図である。
【図３】設計対象のクロックツリーの一例を示す図である。
【図４】第２の実施の形態の設計方法の一例の流れを示すフローチャートである。
【図５】第２の実施の形態の設計方法の一例の流れを示すフローチャートである。
【図６】三角波電流波形の例を示す図である。
【図７】正弦波関数テーブルの一例を示す図である。
【図８】クロックスキュー設定テーブルの一例を示す図である。
【図９】着目周波数設定テーブルの一例を示す図である。
【図１０】クロックスキュースイープテーブルの一例を示す図である。
【図１１】正弦波合成処理時の着目周波数およびクロックスキュー候補値の可変設定の一例の流れを示すフローチャートである。
【図１２】合成正弦波の一例を示す図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態を図面を参照して説明する。
（第１の実施の形態）
図１は、第１の実施の形態の設計方法および設計装置の一例を示す図である。
【００１１】
設計装置１は、プロセッサ２と記憶部３を有している。
プロセッサ２は、記憶部３に記憶されているデータおよびプログラムに基づき、以下のような処理を実行する。
【００１２】
なお、以下に示す処理は、例えば、半導体集積回路の設計工程のうち、クロックツリーの設計の際に行われる。図１にはクロック信号に同期して動作する回路部１０，１１にクロック信号を供給するクロックツリーの一例が示されている。回路部１０，１１には電源電圧ＶＤＤが供給されている。クロック信号は、クロック生成部１２によって生成され、クロックバッファ１３を介して回路部１０に供給され、クロックバッファ１４，１５を介して回路部１１に供給される。クロックバッファ１３，１５でクロック信号に生じる遅延時間が等しい場合、クロックバッファ１４による遅延時間により、回路部１０，１１に到達するクロック信号にΔｔ分の時間差（スキュー）が生じる。スキューを意図的に発生させることで、回路部１０，１１が同じタイミングで動作しないようになり、電源ノイズの発生が抑制される。
【００１３】
ただ、前述のように、ノイズは複数の周波数を含むため、スキュー値の設定によっては、ある周波数のノイズは低減できるが他の周波数では逆に増加させてしまう可能性がありスキュー値の調整は難しい。そのため、本実施の形態の設計方法では、クロックスキューの調整を行うときに、以下の処理を行うことによって、調整を容易にする。
【００１４】
まず、プロセッサ２は回路部１０，１１の電源電流Ｉａ，Ｉｂをそれぞれ周波数成分で分解する（ステップＳ１）。図１には、電源電流Ｉａ，Ｉｂが、周波数ｆ１，ｆ２，ｆ３を含む周波数成分に分解された例が示されている。周波数分解の例については後述する。
【００１５】
また、プロセッサ２は、回路部１０，１１に到達するクロック信号のスキュー値（Δｔ）を設定する（ステップＳ２）。そして、プロセッサ２は、各周波数での回路部１０，１１の電源電流Ｉａ，Ｉｂの振幅を合成する処理（ステップＳ３）を、スキュー値を変更することで繰り返し、合成した振幅のスキュー依存性を求める。なお、スキュー値の設定は、ステップＳ１の処理の前に行ってもよい。
【００１６】
図１には、電源電流Ｉａ，Ｉｂを各周波数で合成したときの合成振幅の例と、抑制したい（抑制対象の）周波数ｆ１，ｆ２，ｆ３の電源電流の合成振幅のスキュー依存性の例が示されている。合成振幅はノイズ（電源ノイズ）の元となる電源電流の大きさを表している。合成振幅のスキュー依存性を求めることで、各周波数のノイズを効果的に抑制できるスキュー値がわかり、スキュー値の調整が容易になる。
【００１７】
例えば、図１の例のように、ある閾値ＴＨよりも周波数ｆ１，ｆ２，ｆ３のノイズを抑えたいときには、スキュー値をΔｔ１〜Δｔ２の間に設定すればよいことが分かる。
プロセッサ２１は、例えば、そのスキュー値の範囲の遅延時間をもつクロックバッファ１４を使用してクロックツリーの設計を行う。スキュー値の調整および決定が容易になることで、設計時間の短縮も期待できる。
【００１８】
（第２の実施の形態）
以下、第２の実施の形態の設計方法および設計装置の一例を示す。
図２は、第２の実施の形態の設計装置の一例を示す図である。
【００１９】
設計装置は、例えば、コンピュータ２０であり、プロセッサ２１によって装置全体が制御されている。プロセッサ２１には、バス２９を介してＲＡＭ（Random Access Memory）２２と複数の周辺機器が接続されている。プロセッサ２１は、マルチプロセッサであってもよい。プロセッサ２１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。またプロセッサ２１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００２０】
ＲＡＭ２２は、コンピュータ２０の主記憶装置として使用される。ＲＡＭ２２には、プロセッサ２１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ２２には、プロセッサ２１による処理に必要な各種データが格納される。
【００２１】
バス２９に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）２３、グラフィック処理装置２４、入力インタフェース２５、光学ドライブ装置２６、機器接続インタフェース２７およびネットワークインタフェース２８がある。
【００２２】
ＨＤＤ２３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ２３は、コンピュータ２０の補助記憶装置として使用される。ＨＤＤ２３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【００２３】
グラフィック処理装置２４には、モニタ２４ａが接続されている。グラフィック処理装置２４は、プロセッサ２１からの命令にしたがって、画像をモニタ２４ａの画面に表示させる。モニタ２４ａとしては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００２４】
入力インタフェース２５には、キーボード２５ａとマウス２５ｂとが接続されている。入力インタフェース２５は、キーボード２５ａやマウス２５ｂから送られてくる信号をプロセッサ２１に送信する。なお、マウス２５ｂは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００２５】
光学ドライブ装置２６は、レーザ光などを利用して、光ディスク２６ａに記録されたデータの読み取りを行う。光ディスク２６ａは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２６ａには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００２６】
機器接続インタフェース２７は、コンピュータ２０に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース２７には、メモリ装置２７ａやメモリリーダライタ２７ｂを接続することができる。メモリ装置２７ａは、機器接続インタフェース２７との通信機能を搭載した記録媒体である。メモリリーダライタ２７ｂは、メモリカード２７ｃへのデータの書き込み、またはメモリカード２７ｃからのデータの読み出しを行う装置である。メモリカード２７ｃは、カード型の記録媒体である。
【００２７】
ネットワークインタフェース２８は、ネットワーク２８ａに接続されている。ネットワークインタフェース２８は、ネットワーク２８ａを介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００２８】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。なお、第１の実施の形態に示した設計装置１も、図２に示したコンピュータ２０と同様のハードウェアにより実現することができる。
【００２９】
コンピュータ２０は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。コンピュータ２０に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、コンピュータ２０に実行させるプログラムをＨＤＤ２３に格納しておくことができる。プロセッサ２１は、ＨＤＤ２３内のプログラムの少なくとも一部をＲＡＭ２２にロードし、プログラムを実行する。またコンピュータ２０に実行させるプログラムを、光ディスク２６ａ、メモリ装置２７ａ、メモリカード２７ｃなどの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ２１からの制御により、ＨＤＤ２３にインストールされた後、実行可能となる。またプロセッサ２１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００３０】
（設計方法（スキュー値の設定処理）の一例）
図３は、設計対象のクロックツリーの一例を示す図である。
図３には回路部ｂ１〜ｂｎにクロック信号を供給するクロックツリーの一例が示されている。回路部ｂ１〜ｂｎは、クロック信号に同期して動作するフリップフロップ回路などを含んでいる。ＰＬＬ（Phase Locked Loop）３０から出力されるクロック信号は、クロックバッファｃｂ１〜ｃｂｎを介して回路部ｂ１〜ｂｎに供給される。なお、クロックバッファｃｂ１〜ｃｂｎによる遅延時間差は抑えて、回路部ｂ１〜ｂｎに到達するクロック信号には、スキューが発生しないように設計されているものとする。
【００３１】
このようなクロックツリーに対して、更にクロックバッファ（遅延素子）を追加することで、回路部ｂ１〜ｂｎに含まれる回路部間でのクロックスキューを拡大させる処理が行われる。このとき追加されるクロックバッファの特性（サイズなど）は、以下の処理で算出されるスキュー値に基づき決定される。
【００３２】
なお、図示を省略しているが、回路部ｂ１〜ｂｎには電源電圧ＶＤＤが供給されている。
図４、図５は、第２の実施の形態の設計方法の一例の流れを示すフローチャートである。
【００３３】
なお、以下では、図３に示した回路部ｂ１〜ｂｎそれぞれに到達するクロック信号のいずれかの遅延時間を増加させることで、クロックスキューを拡大するものとする。なお、各回路部ｂ１〜ｂｎに供給されるクロック信号の周波数、位相および振幅などは、回路部ｂ１〜ｂｎの規模や動作に応じて、任意に設定されるものである。また、以下では、図２に示したコンピュータ２０（設計装置）を用いて処理が実行されるものとして説明する。
【００３４】
まず、プロセッサ２１は、回路部ｂ１〜ｂｎへクロック信号が供給された際に、回路部ｂ１〜ｂｎに流れる電源電流（消費電流）を近似した三角波電流（三角波電流Ａ１〜Ａｎとする）を推定して生成する（ステップＳ１０）。
【００３５】
プロセッサ２１は、三角波電流Ａ１〜Ａｎの波形を回路部ｂ１〜ｂｎ毎に、例えば、ＲＡＭ２２またはＨＤＤ２３に記憶する（ステップＳ１１）。
プロセッサ２１は、ＲＡＭ２２またはＨＤＤ２３に記憶された三角波電流Ａ１〜Ａｎを読み出して、それぞれ周波数成分に分解する（ステップＳ１２）。この場合、１つの三角波電流を周波数分解するならば、基本周波数と、その基本周波数の整数倍の周波数である複数の高調波とに分解できる。なお、基本周波数とは、ここではクロック信号の周波数に相当する。
【００３６】
プロセッサ２１は、三角波電流Ａ１〜Ａｎそれぞれに含まれている周波数を、ｍ次まで回路部ｂ１〜ｂｎ毎にデータベース化して、例えば、ＲＡＭ２２またはＨＤＤ２３に記憶する（ステップＳ１３）。
【００３７】
例えば、回路部ｂ１の三角波電流Ａ１の高調波周波数として、以下の正弦波を、回路部ｂ１の三角波電流Ａ１における周波数成分として登録する。
正弦波ｂ１（ｆ１）＝Ａb1(f1)ｃｏｓ（ω1（ｔ＋ｔ０））、正弦波ｂ１（ｆ２）＝Ａb1(f2)ｃｏｓ（ω2（ｔ＋ｔ０））、・・・、正弦波ｂ１（ｆｍ）＝Ａb1(fm)ｃｏｓ（ωm（ｔ＋ｔ０））である。ここで、Ａb1(fk)は回路部ｂ１における三角波電流Ａ１に含まれている周波数ｆｋの振幅、ωは角周波数、ｔ０は初期位相時間である。
【００３８】
なお、周波数成分の表現方法の１つとして、上記の例では正弦波で表現した場合を示したが、振幅および位相情報を含んでいれば、その他の表現方法であってもよい。
次にプロセッサ２１は、三角波電流に含まれている複数の周波数の中で、特定の周波数のノイズ電流の抑制を図るために、その特定の周波数を着目周波数として選定する（ステップＳ１４）。
【００３９】
例えば、三角波電流に含まれている周波数の中でも特に３次高調波によって発生するノイズ電流を抑制したいのであれば、３次高調波の周波数を着目周波数と選定することになる。なお、着目周波数は、１つとは限らず、複数の特定の周波数に対するノイズ電流の抑制を図る場合は、複数個選定することになる。
【００４０】
プロセッサ２１は、着目周波数を、例えば、ＲＡＭ２２またはＨＤＤ２３に記憶する（ステップＳ１５）。
プロセッサ２１は、回路部ｂ１〜ｂｎの中から到達するクロック信号の遅延時間を増加させる回路部（以下、クロックスキュー適用回路とも呼ぶ）を選定する（ステップＳ１６）。
【００４１】
プロセッサ２１は、クロックスキュー適用回路に対して、どれだけのクロックスキューを与えるかのクロックスキュー候補値を生成し（ステップＳ１７）、クロックスキュー候補値を、例えば、ＲＡＭ２２またはＨＤＤ２３に記憶する（ステップＳ１８）。
【００４２】
その後、プロセッサ２１は、クロック信号に適用するスキュー値の候補値（以下クロックスキュー候補値と呼ぶ）でクロックスキュー適用回路毎に複数の着目周波数の正弦波の位相を変え、着目周波数毎に電源電流の正弦波を複数の回路部間で合成する。この作業をクロックスキュー候補値のバリエーション分繰り返す。（ステップＳ１９）。
【００４３】
例えば、回路部ｂ１〜ｂｎのうち、回路部ｂ１に到達するクロック信号を基準にしたときの、回路部ｂ２〜ｂｎに到達するクロック信号に適用するクロックスキュー候補値をｔsb2〜ｔsbnとする。また、着目周波数を周波数ｆ１とする。
【００４４】
この場合、回路部ｂ１の着目周波数ｆ１の正弦波ｂ１（ｆ１）は、振幅をＡb1(f1)、初期位相時間をｔ０b1とすれば、正弦波ｂ１（ｆ１）は以下の式（１）となる。
正弦波ｂ１（ｆ１）＝Ａb1(f1)ｃｏｓ（ω1（ｔ＋ｔ０b1））・・・（１）
また、回路部ｂ２の着目周波数ｆ１の正弦波ｂ２（ｆ１）は、クロックスキュー候補値＝ｔsb2の分位相がずれるので、振幅をＡb2(f1)、初期位相時間をｔ０b2とすれば、正弦波ｂ２（ｆ１）は以下の式（２）となる。
【００４５】
正弦波ｂ２（ｆ１）＝Ａb2(f1)ｃｏｓ（ω1（ｔ＋ｔ０b2＋ｔsb2））
・・・（２）
同様に、回路部ｂｎの着目周波数ｆ１の正弦波ｂｎ（ｆ１）は、クロックスキュー候補値＝ｔsbnの分位相がずれるので、振幅をＡbn(f1)、初期位相時間をｔ０bnとすれば、正弦波ｂｎ（ｆ１）は以下の式（３）となる。
【００４６】
正弦波ｂｎ（ｆ３）＝Ａbn(f1)ｃｏｓ（ω1（ｔ＋ｔ０bn＋ｔsbn））
・・・（３）
したがって、これら正弦波の合成波（合成正弦波）Ｉ（ｆ１）は、以下の式（４）となる。
【００４７】
Ｉ（ｆ１）＝Ａb1(f1)ｃｏｓ（ω1（ｔ＋ｔ０b1））
＋Ａb2(f1)ｃｏｓ（ω1（ｔ＋ｔ０b2＋ｔsb2））
＋・・・
＋Ａbn(f1)ｃｏｓ（ω1（ｔ＋ｔ０bn＋ｔsbn））・・・（４）
なお、実際には、クロックスキュー候補値ｔsb2〜ｔsbnを調整しながら（例えば、低い値から高い値へ徐々に増加させながら）、着目周波数の正弦波の位相をずらし、位相をずらした複数の着目周波数の正弦波を合成することになる。
【００４８】
次にプロセッサ２１は、着目周波数毎に求めた合成正弦波を、例えば、ＲＡＭ２２またはＨＤＤ２３に記憶する（ステップＳ２０）。
なお、着目周波数ｆ１のクロックスキュー候補値がｐ個あるとすれば、図５中の合成正弦波Ｉ（ｆ１）-1は、１個目のクロックスキュー候補値が割り当てられた着目周波数ｆ１における合成正弦波であることを示している。また、合成正弦波Ｉ（ｆ１）-pは、ｐ個目のクロックスキュー候補値が割り当てられた着目周波数ｆ１における合成正弦波であることを示している。
【００４９】
そして、プロセッサ２１は、合成正弦波の振幅（合成振幅）の値が所定値を下回っているか否かを判別する（ステップＳ２１）。合成正弦波の振幅（合成振幅）の値が所定値を下回っていればステップＳ２２の処理が行われ、所定値を超えている場合はステップＳ１７からの処理が繰り返される。
【００５０】
ステップＳ２２の処理では、プロセッサ２１は、ステップＳ１７の処理で生成したクロックスキュー候補値をスキュー値として決定する。なお、クロックスキュー候補値が複数出現した場合は、プロセッサ２１は、後述する規定にもとづいてその中からスキュー値を選択することになる。
【００５１】
次に上記のステップＳ１０の処理で生成される三角波電流の一例を説明する。
（三角波電流の生成例）
図６は三角波電流波形の例を示す図である。
【００５２】
回路部ｂ１〜ｂ４に流れる三角波電流波形Ｗ１１〜Ｗ１４が示されている。横軸は時間（ｓｅｃ）、縦軸は電流（ｍＡ）である。図６に示すように、三角波電流波形Ｗ１１〜Ｗ１４は、回路部ｂ１〜ｂ４の回路規模に応じて、周波数や電流量がそれぞれ異なる。
【００５３】
三角波電流波形は、各回路部の平均消費電流、動作周波数に基づき生成することができる。
次にステップＳ１２の周波数分解処理の一例について説明する。
【００５４】
（周波数分解処理例）
三角波電流波形の周波数分解には、例えば、以下の式（５）に示すようなフーリエ級数式を使用することができる。式（５）において、Ａは振幅、Ｔは周期、τは波形幅（パルス幅）、ｘは次数（高調波の次数）、ω0は初期角周波数である。
【００５５】
【数１】
2015194904.tif 000003
【００５６】
また、式（５）の第１項のＡτ／２Ｔの項は、ＤＣ（Direct Current）成分であり、第２項は周波数成分である。本実施の形態では、周波数スペクトラムを評価指標とするため、式（５）の中の右辺第２項の周波数成分が使用される。
【００５７】
なお、式（５）第２項の（Ａτ／Ｔ）・｛（ｓｉｎ（ｘπτ／２Ｔ））／（ｘπτ／２Ｔ））｝2は、ｘ次高調波の振幅（定数）である。
図７は正弦波関数テーブルの一例を示す図である。
【００５８】
正弦波関数テーブルＴ１は、各回路部の高調波周波数の正弦波関数を示すテーブルであり、例えば、ＲＡＭ２２またはＨＤＤ２３で記憶される。なお、図中のＡbk(fb)（ｋ＝１〜ｎ）は、回路部ｂｋの周波数ｆｂの三角波電流振幅、ｔ０bkは、回路部ｂｋの初期位相時間である。
【００５９】
次にステップＳ１４の着目周波数の選定処理について説明する。
（着目周波数の選定処理例）
三角波電流に含まれている複数の周波数のうち、どの高調波周波数を着目周波数として選定するかは、以下のような指標にもとづいて決定される。
【００６０】
（１）プロセッサ２１は、各回路部の動作周波数の整数倍高調波が重なる周波数を着目周波数として設定する。例えば、図７で示した周波数ｆｊは、回路部ｂ１，ｂ２，ｂ３，ｂｎのすべてにおいて重なる周波数である場合、周波数ｆｊの電流ピークは大きいとみなせるので、プロセッサ２１は、周波数ｆｊを着目周波数として設定する。
【００６１】
このように、プロセッサ２１は、回路部毎の三角波電流を周波数分解して得られた複数の周波数の中から、複数の回路部に渡って（少なくとも２つ以上の回路部に渡って）、同一時間帯で複数重なる周波数を着目周波数に設定する。例えば、図１に示したような周波数ｆ１，ｆ２，ｆ３は、回路部１０，１１間で重なっているため、これらは着目周波数に設定される。これにより、ノイズ電流が大きいとみなせる特定の周波数に対して、ノイズ低減化を図ることが可能になる。
【００６２】
（２）最終の製品または半導体素子では、ＥＭＩ（Electro Magnetic Interference：電磁妨害波）規格として考慮すべき周波数帯域が定められている。このため、プロセッサ２１は、ＥＭＩ規格で要求される周波数帯域の範囲に含まれる、各回路部の動作周波数および高調波周波数を着目周波数として設定する。
【００６３】
次にステップＳ１６の、クロックスキュー適用回路の選定処理の一例を説明する。
（クロックスキュー適用回路の選定例）
クロックスキュー適用回路を選定する場合、プロセッサ２１は、例えば、消費電流またはタイミング制約にもとづいて選定する。
【００６４】
消費電流にもとづいて選定する場合、プロセッサ２１は、回路部ｂ１〜ｂｎのうち、三角波電流ピークの大きい上位ｋ（＝１、２、・・・）個の回路部をクロックスキュー適用回路と選定する。
【００６５】
また、タイミング制約にもとづいて選定する場合は、プロセッサ２１は、回路部ｂ１〜ｂｎに対してクロック信号ｃ１〜ｃｎが与えられた際に、セットアップ／ホールドタイミングの制約が緩い上位ｋ個の回路部をクロックスキュー適用回路と選定する。
【００６６】
回路部に与えるクロックスキューは、その回路部のセットアップ／ホールドタイミングを満たす範囲内で設定することが可能であるから、セットアップ／ホールドタイミングの制約が緩い回路部には、クロックスキューの許容値も大きくすることができる。
【００６７】
なお、クロックスキュー適用回路の個数ｋを多くするほど、許容されるタイミング制約内で、クロックスキュー分散効果を細かく評価できるため、状況に応じてｋの値は増減すればよい。
【００６８】
このように、プロセッサ２１は、複数の回路部の中で消費電流（電源電流）のピークが他の回路部よりも大きいもの、または複数の回路部の中でセットアップおよびホールドのタイミング制約が他の回路部よりも緩いものを優先的にクロックスキュー適用回路とする。これにより、クロックスキューを与えるべき回路部を適切に選択することが可能になる。
【００６９】
次にステップＳ１７のクロックスキュー候補値の生成処理の一例を説明する。
（クロックスキュー候補値の生成処理例）
スキュー値は、回路部に対するタイミング制約で規定された値（タイミング制約値）を最大値とするので、プロセッサ２１は、その最大値を分割した値（例えば、等分割した値）をスイープ（sweep）して、複数のクロックスキュー候補値を生成する。
【００７０】
図８はクロックスキュー設定テーブルの一例を示す図である。
クロックスキュー設定テーブルＴ２は、クロックスキュー候補値を生成する際に利用されるテーブルであり、例えば、ＲＡＭ２２またはＨＤＤ２３で記憶される。
【００７１】
クロックスキュー設定テーブルＴ２は、クロックスキュー適用／非適用、クロックスキュー最大値およびクロックスキュースイープステップの項目を有している。なお、クロックスキュー適用回路毎に、セットアップ／ホールドタイミングの制約は異なるので、クロックスキュー適用回路に与えるクロックスキューの最大値も異なっている。
【００７２】
ここで、回路部ｂ１は、クロックスキュー適用回路であり、クロックスキューの最大値が５００ｐｓ、スイープステップが５０ｐｓとなっている。したがって、回路部ｂ１へ与えるクロックスキュー候補値は、５０ｐｓ、１００ｐｓ、１５０ｐｓ、・・・、４５０ｐｓ、５００ｐｓとなる。
【００７３】
なお、回路部ｂ３は、電源電流のピークが他の回路部ｂ１，ｂ２，ｂｎよりも小さい、またはタイミング制約が他の回路部ｂ１，ｂ２，ｂｎよりも厳しいため、クロックスキュー非適用となっている。
【００７４】
このように、プロセッサ２１は、回路部のセットアップおよびホールドのタイミング制約値を最大値とし、最大値を所定数に分割したステップ値を整数倍してスキュー候補値を生成する。これにより、回路部のタイミング制約の範囲内で適切な複数のクロックスキュー候補値を生成することが可能になる。
【００７５】
次にステップＳ１９の正弦波合成処理の一例について、図８に示した正弦波関数テーブルＴ１の例を用いて説明する。
（正弦波合成処理例）
正弦波関数テーブルＴ１において、プロセッサ２１が、ノイズ電流の抑制対象の着目周波数として周波数ｆ２，ｆ３，ｆｊを設定したとする。
【００７６】
また、プロセッサ２１は、正弦波関数テーブルＴ１中の回路部ｂ１〜ｂｎの中で、クロックスキュー適用回路を回路部ｂ１，ｂ２，ｂｎと選定する。そして、プロセッサ２１は、回路部ｂ１，ｂ２，ｂｎに対して、クロックスキュー候補値ｔsb1，ｔsb2，ｔsbnを可変させながら割り当てていくものとする。
【００７７】
この場合、着目周波数ｆ２，ｆ３，ｆｊの各正弦波合成波Ｉ（ｆ２），Ｉ（ｆ３），Ｉ（ｆｊ）は、以下の式（６）〜（８）となる。
【００７８】
【数２】
2015194904.tif 000004
【００７９】
【数３】
2015194904.tif 000005
【００８０】
【数４】
2015194904.tif 000006
【００８１】
図９は着目周波数設定テーブルの一例を示す図である。
着目周波数設定テーブルＴ３は、ｘを次数にして、着目周波数を可変的に設定するためのテーブルであり、例えば、ＲＡＭ２２またはＨＤＤ２３で記憶される。
【００８２】
図９の例では、着目周波数設定テーブルＴ３は、３０ＭＨｚを起点にして、３０ＭＨｚの整数倍の３０ＭＨｚ、６０ＭＨｚ、・・・、ｆｍａｘまで順に、着目周波数を増加させるテーブル構成となっている。
【００８３】
図１０はクロックスキュースイープテーブルの一例を示す図である。
クロックスキュースイープテーブルＴ４は、ｙをスイープステップ番号にして、クロックスキュー候補値を可変的に設定するためのテーブルであり、例えば、ＲＡＭ２２またはＨＤＤ２３で記憶される。
【００８４】
図１０の例では、クロックスキュースイープテーブルＴ４は、１ステップを５０ｐｓとしたスイープステップであって、０ｐｓ、５０ｐｓ、・・・、ｔｓｍａｘまで順に、クロックスキュー候補値を増加させるテーブル構成となっている。
【００８５】
図１１は正弦波合成処理時の着目周波数およびクロックスキュー候補値の可変設定の一例の流れを示すフローチャートである。
プロセッサ２１は、次数ｘがＭを超えるか否かを判別する（ステップＳ３０）。次数ｘがＭを超えなければステップＳ３１の処理が行われ、Ｍを超えたら処理が終了される。
【００８６】
ステップＳ３１の処理では、プロセッサ２１は、着目周波数設定テーブルＴ３を利用して、着目周波数ｆｘを設定する。
その後、プロセッサ２１は、スイープステップ番号ｙがＮを超えるか否かを判別する（ステップＳ３２）。スイープステップ番号ｙがＮを超えなければステップＳ３３の処理が行われ、Ｎを超えたらステップＳ３６の処理が行われる。
【００８７】
ステップＳ３３の処理では、プロセッサ２１は、クロックスキュースイープテーブルＴ４を利用して、クロックスキュー候補値を生成する。クロックスキュー候補値ｔｓは、スイープステップをｔステップとすれば、ｔｓ＝ｔ×ｙで算出される。
【００８８】
その後、プロセッサ２１は、着目周波数ｆｘにおけるクロックスキュー毎の正弦波の合成を行い（ステップＳ３４）、スイープステップ番号ｙをインクリメントする（ｙ＝ｙ＋１）（ステップＳ３５）。その後ステップＳ３２からの処理が繰り返される。
【００８９】
ステップＳ３６の処理では、プロセッサ２１は、次数ｘをインクリメントする（ｘ＝ｘ＋１）。その後、ステップＳ３０からの処理が繰り返される。
図１２は合成正弦波の一例を示す図である。
【００９０】
横軸はスキュー値（ｎｓ）、縦軸は電流（合成正弦波の振幅）（ｍＡ）である。クロックスキュー候補値をスイープしながら正弦波を合成した際の、式（６）〜（８）における合成正弦波Ｉ（ｆ２）、Ｉ（ｆ３）、Ｉ（ｆｊ）の振幅変動が示されている。
【００９１】
Ｉ（ｆ２）は着目周波数ｆ２の合成正弦波、Ｉ（ｆ３）は着目周波数ｆ３の合成正弦波、Ｉ（ｆｊ）は着目周波数ｆｊの合成正弦波である。
なお、単純化のため、回路部ｂ１へ与えるクロックスキュー候補値ｔsb1は固定とする。さらに、回路部ｂ２へ与えるクロックスキュー候補値ｔsb2と、回路部ｂｎへ与えるクロックスキュー候補値ｔsbnとを等しい値でスイープしたものを想定している。なお、クロックスキュー候補値ｔsb1，ｔsb2，ｔsbnを個別に任意に設定する場合、図１１のステップＳ３３の手順を所定回数行えばよい。
【００９２】
このように、プロセッサ２１は、着目周波数すべてについて合成正弦波を算出すると、合成正弦波電流の振幅値が、例えば、閾値ｔｈ以下となるクロックスキュー候補値の中から、実際に設定すべきスキュー値を選択する。
【００９３】
例えば、図１２において、領域ｒ１，ｒ２は、合成正弦波電流の振幅値が閾値ｔｈ以下であり、さらにクロックスキューの許容範囲（criteria）内の領域を示すものとする。したがって、プロセッサ２１は、領域ｒ１，ｒ２の中のクロックスキュー候補値を、実際に設定すべきスキュー値として選択することになる。ただし、領域ｒ１，ｒ２には、複数のクロックスキュー候補値が含まれている。
【００９４】
このような場合、プロセッサ２１は、回路部のタイミング制約を考慮して、タイミング制約が厳しいようなクロックスキュー適用回路には、許容範囲内で小さなクロックスキュー候補値を選択する。図１２の例では、領域ｒ１内のクロックスキュー候補値の最小値は９ｎｓであるから、プロセッサ２１は、スキュー値＝９ｎｓを採用することになる。
【００９５】
また、電流強度を抑えることを優先する場合は、プロセッサ２１は、許容範囲内で、振幅値が小さいクロックスキュー候補値を選択する。図１２の例では、領域ｒ２内で振幅値が小さいクロックスキュー候補値は１６ｎｓであるから、プロセッサ２１は、スキュー値＝１６ｎｓを採用することになる。
【００９６】
このように、プロセッサ２１は、クロックスキューの設定許容範囲内に複数のクロックスキュー候補が存在する場合、設定許容範囲内で最も小さなクロックスキュー候補をスキュー値として採用する。これにより、回路部のタイミング制約にマージンを持たせることができ、回路部の安定動作を実現しながらノイズ低減化を図ることが可能になる。
【００９７】
または、プロセッサ２１は、クロックスキューの設定許容範囲内に複数のクロックスキュー候補が存在する場合、設定許容範囲内で合成周波数の振幅が最も小さくなるクロックスキュー候補をスキュー値として採用する。これにより、ノイズ電流強度の制約を満たすことが可能になる。
【００９８】
このようにして採用された、スキュー値に基づき、クロックツリーにクロックバッファが追加され、クロックスキューの拡大が行われる。
以上説明したように、本実施の形態の設計方法及び設計装置によれば、合成振幅のスキュー依存性を求めることで、各周波数のノイズを抑制できるスキュー値がわかる。つまり、設定したスキュー値によってどの周波数ではノイズが抑制され、どの周波数では悪化してしまうかが明瞭に評価することも可能になる。そのためスキュー値の調整が容易になり、所望の周波数のノイズを抑制できる高精度なスキュー値の設定と、ＴＡＴ（Turn Around Time）の短縮化が可能となる。
【００９９】
以上、実施の形態に基づき、本発明の設計方法、設計装置及びプログラムの一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【０１００】
１  設計装置
２  プロセッサ
３  記憶部
１０，１１  回路部
１２  クロック生成部
１３，１４，１５  クロックバッファ
【図１】
2015194904.tif 000007
【図２】
2015194904.tif 000008
【図３】
2015194904.tif 000009
【図４】
2015194904.tif 000010
【図５】
2015194904.tif 000011
【図６】
2015194904.tif 000012
【図７】
2015194904.tif 000013
【図８】
2015194904.tif 000014
【図９】
2015194904.tif 000015
【図１０】
2015194904.tif 000016
【図１１】
2015194904.tif 000017
【図１２】
2015194904.tif 000018