(57)【要約】【課題】バッファの数を増加させることなく半導体集積回路のピーク電力を削減可能な半導体集積回路の設計方法を提供することである。【解決手段】本発明にかかる半導体集積回路の設計方法は、配置領域を複数の領域に分割し、複数の領域に配置されている各クロック素子間の遅延余裕度の初期値を計算し、領域毎に相対遅延目標値を設定し、領域毎に設定されている相対遅延目標値に近くなるように、各クロック素子に相対遅延値を割り当て、各クロック素子の位置と各クロック素子に割り当てられた相対遅延値とに基づきクロック素子を含むクラスタを生成し、クラスタ毎にバッファを挿入し、クラスタに含まれるクロック素子に割り当てられた相対遅延値に基づく値をバッファに割り当て、バッファに割り当てられた相対遅延値に基づく値を満たすようにバッファの配線を実施する。【選択図】図１
2012160100.tif 000002
【特許請求の範囲】
【請求項１】
配置領域を複数の領域に分割し、
前記複数の領域に配置されている各クロック素子間の遅延余裕度の初期値を計算し、
前記領域毎に相対遅延目標値を設定し、
前記領域毎に設定されている前記相対遅延目標値に近くなるように、前記各クロック素子に相対遅延値を割り当て、
前記各クロック素子の位置と前記各クロック素子に割り当てられた前記相対遅延値とに基づき前記クロック素子を含むクラスタを生成し、
前記クラスタ毎にバッファを挿入し、
前記クラスタに含まれる前記クロック素子に割り当てられた前記相対遅延値に基づく値を、前記クラスタに挿入された前記バッファに割り当て、
前記バッファに割り当てられた前記相対遅延値に基づく値を満たすように前記バッファの配線を実施する、
半導体集積回路の設計方法。
【請求項２】
前記各クロック素子に割り当てられた相対遅延値と、当該クロック素子が配置されている領域に設定されている相対遅延目標値との差が閾値以下となるまで、前記相対遅延目標値の設定および前記相対遅延値の割り当てを繰り返す、請求項１に記載の半導体集積回路の設計方法。
【請求項３】
前記各クロック素子に割り当てられた相対遅延値と、当該クロック素子が配置されている領域に設定されている相対遅延目標値との差が前記閾値よりも大きく、且つ前記相対遅延目標値の設定および前記相対遅延値の割り当ての繰り返し回数が所定の回数を超えた場合、再度、前記配置領域を複数の領域に分割する、請求項２に記載の半導体集積回路の設計方法。
【請求項４】
前記相対遅延目標値の設定および前記相対遅延値の割り当てを所定の回数繰り返す、請求項１に記載の半導体集積回路の設計方法。
【請求項５】
前記相対遅延値を割り当てる際に、タイミング違反を起こさない範囲で、ｄｎ＋１＝ｄ'ｎ＋（ｔｎ−ｄ'ｎ）×α（ここで、ｔｎ（ｎは繰り返しの回数を示し、初期値はｎ＝０とする）は前記領域に割り当てられた相対遅延目標値、ｄ'ｎは前記領域に配置された各クロック素子の平均相対遅延値、αは０以上のパラメータである）の式で算出されるｄｎ＋１に近い値を割り当てる、請求項１乃至４のいずれか一項に記載の半導体集積回路の設計方法。
【請求項６】
前記相対遅延目標値を再設定する際に、ｔｎ＋１＝ｔｎ＋（ｄ'ｎ＋１×β−ｔｎ）×γ（ここで、ｔｎ（ｎは繰り返しの回数を示し、初期値はｎ＝０とする）は前記領域に割り当てられた相対遅延目標値、ｄ'ｎ＋１は前記領域に配置された各クロック素子の平均相対遅延値、βは１以上のパラメータ、γは０以上のパラメータである）の式で算出された値を前記相対遅延目標値として再設定する、請求項１乃至５のいずれか一項に記載の半導体集積回路の設計方法。
【請求項７】
前記相対遅延値を割り当てる際に、
前記クロック素子が配置されている前記領域の前記相対遅延目標値に基づき、当該クロック素子に相対遅延値を割り当て、
前記クロック素子に前記相対遅延値を割り当てた後に、各クロック素子間の遅延余裕度を再計算し、
当該遅延余裕度の値に基づき前記相対遅延値の割り当てがタイミング違反を起こしていないか検証する、
請求項１乃至６のいずれか一項に記載の半導体集積回路の設計方法。
【請求項８】
前記タイミング違反の検証は、前記再計算された遅延余裕度の値が所定の値以上であるか検証することで実施される、請求項７に記載の半導体集積回路の設計方法。
【請求項９】
前記クラスタ毎にバッファを挿入する際、前記各クラスタの重心にバッファを挿入する、請求項１乃至８のいずれか一項に記載の半導体集積回路の設計方法。
【請求項１０】
前記バッファに、前記相対遅延値に基づく値として、前記クラスタに含まれる前記クロック素子に割り当てられた前記相対遅延値の平均値を割り当てる、請求項１乃至９のいずれか一項に記載の半導体集積回路の設計方法。
【請求項１１】
前記バッファの配線を実施する際に、前記バッファに割り当てられた前記相対遅延値に基づく値を満たすように新たにバッファを挿入する、請求項１乃至１０のいずれか一項に記載の半導体集積回路の設計方法。
【請求項１２】
前記バッファの配線を実施した後に、前記各クロック素子間のデータ転送タイミングに違反がないか検証し、タイミング違反が存在する場合は前記バッファのサイズを調整する、請求項１乃至１１のいずれか一項に記載の半導体集積回路の設計方法。
【請求項１３】
配置領域を複数の領域に分割する配置領域分割部と、
前記複数の領域に配置されている各クロック素子間の遅延余裕度の初期値を計算する遅延余裕度計算部と、
前記領域毎に相対遅延目標値を設定する相対遅延目標値設定部と、
前記領域毎に設定されている前記相対遅延目標値に近くなるように、前記各クロック素子に相対遅延値を割り当てる相対遅延値割り当て部と、
前記各クロック素子の位置と前記各クロック素子に割り当てられた前記相対遅延値とに基づき前記クロック素子を含むクラスタを生成するクラスタ生成部と、
前記クラスタ毎にバッファを挿入するバッファ挿入部と、
前記クラスタに含まれる前記クロック素子に割り当てられた前記相対遅延値に基づく値を、前記クラスタに挿入された前記バッファに割り当てるバッファ設定部と、
前記バッファに割り当てられた前記相対遅延値に基づく値を満たすように前記バッファの配線を実施するバッファ配線部と、
を備える半導体集積回路の設計装置。
【請求項１４】
前記半導体集積回路の設計装置の設計対象となる、クロック素子と論理ゲートとを含む半導体集積回路の設計情報を受け付ける半導体集積回路情報受付部を更に備える、請求項１３に記載の半導体集積回路の設計装置。
【請求項１５】
前記バッファの配線を実施した後に、前記各クロック素子間のデータ転送タイミングに違反がないか検証し、タイミング違反が存在する場合は前記バッファのサイズを調整するバッファサイズ調整部を更に備える、請求項１３または１４に記載の半導体集積回路の設計装置。
【請求項１６】
配置領域を複数の領域に分割し、
前記複数の領域に配置されている各クロック素子間の遅延余裕度の初期値を計算し、
前記領域毎に相対遅延目標値を設定し、
前記領域毎に設定されている前記相対遅延目標値に近くなるように、前記各クロック素子に相対遅延値を割り当て、
前記各クロック素子の位置と前記各クロック素子に割り当てられた前記相対遅延値とに基づき前記クロック素子を含むクラスタを生成し、
前記クラスタ毎にバッファを挿入し、
前記クラスタに含まれる前記クロック素子に割り当てられた前記相対遅延値に基づく値を、前記クラスタに挿入された前記バッファに割り当て、
前記バッファに割り当てられた前記相対遅延値に基づく値を満たすように前記バッファの配線を実施する、処理をコンピュータに実行させるための半導体集積回路の設計プログラム。
【請求項１７】
前記バッファの配線を実施した後に、前記各クロック素子間のデータ転送タイミングに違反がないか検証し、タイミング違反が存在する場合は前記バッファのサイズを調整する、請求項１６に記載の半導体集積回路の設計プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体集積回路の設計方法、設計装置、およびプログラムに関し、特に半導体集積回路に含まれる各クロック素子にクロックを供給するための設計方法、設計装置、およびプログラムに関する。
【背景技術】
【０００２】
同期式回路のクロック設計においては、基本的にクロックソースから全てのクロック素子への遅延が同一になるようにクロック分配回路の配置配線が行われる。ここで、クロックソースから各クロック素子への遅延の差をクロックスキューと呼ぶ。また、クロック素子とは、クロックソースから供給されるクロックに同期して動作する素子であり、例えばフリップフロップである。特許文献１乃至３には、クロック素子間のタイミング設計が厳しい場合、クロック素子間のデータ転送遅延に基づきクロックスキューを意図的に設定することにより、タイミング設計を容易にする技術が開示されている。この意図的なクロックスキューの設定は、クロックスケジューリング、スキュースケジューリング、ユースフルスキュー、タイムボロー、タイムボローイング等と称される。
【０００３】
特許文献１には、クロックスキューを均一に抑える必要なく、クロックの位相を制御し、各フリップフロップに最適なクロックスキューを与えることで、タイミング違反のパスのタイミングを改善することができるクロックスキュー制御設計方法に関する技術が開示されている。特許文献１にかかるクロックスキュー制御設計方法は、回路のクロックスキューを解析する処理と、タイミング違反の情報を解析する処理と、各フリップフロップの出力遅延の情報を解析する処理と、セル特性の情報を解析する処理と、クロックスキューの値を最適化する処理と、クロックラインに遅延を追加する処理と、変更された配線パス、論理の情報を出力する処理とで構成される。
【０００４】
特許文献２には、ユースフルスキューを利用して最適なクロックスキューを割り当てることにより、回路の歩留まりの最大化、クロック周波数の最大化を図ることができるクロック分配方法に関する技術が開示されている。
【０００５】
特許文献３には、スキュースケジューリングを効率的に行なえるようにすると共にスキュースケジューリングの結果を満たすクロック回路を実現可能な技術が開示されている。特許文献３にかかる技術では、第１のステップで、集積回路における複数の同期素子の配置又はタイミング制約に基づき、各同期素子にクロック遅延値として割り付けることができる有限個の離散値からなる離散クロック遅延値群を決定する。その後、第２のステップにおいて、各同期素子に離散クロック遅延値群のうちから選択されたクロック遅延値を割り付けクロック遅延値として、集積回路の動作保証を保ちつつ割り付ける。その後、第３のステップにおいて、割り付けクロック遅延値に従って各同期素子にクロック信号を供給するクロック回路を設計する。
【０００６】
非特許文献１には、設定されたクロックスケジュール（すなわち、割り当てられたクロック相対遅延）が近いクロック素子をクラスタリングし、そのクラスタを駆動するバッファの駆動能力を調整することにより、各フリップフロップへのクロック遅延を制御する技術が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−３３４４６８号公報
【特許文献２】特許第４１１８５３６号公報
【特許文献３】特開２００１−３３８９８５号公報
【非特許文献】
【０００８】
【非特許文献１】"Multi-level clustering for clock skew optimization", International Conference on Computer-Aided-Design 2009
【発明の概要】
【発明が解決しようとする課題】
【０００９】
半導体集積回路では、同じタイミングで動作するクロック素子、つまりクロック供給源（クロックソース）からの遅延が同じクロック素子の数が多いと、半導体集積回路におけるピーク電力が増加する。このピーク電力を削減するためには、タイミング制約を満たした範囲で、クロック供給源から各クロック素子への遅延をばらつかせる必要がある。
【００１０】
しかしながら、半導体集積回路のピーク電力を削減するためにクロックスキューを意図的に設定するためには、クロック供給源と各クロック素子との間にバッファ（遅延調整素子）を設ける必要がある。このバッファの数は、クロックスキューを調整するクロック素子の数が多くなると増加するという問題があった。
【課題を解決するための手段】
【００１１】
本発明にかかる半導体集積回路の設計方法は、配置領域を複数の領域に分割し、前記複数の領域に配置されている各クロック素子間の遅延余裕度の初期値を計算し、前記領域毎に相対遅延目標値を設定し、前記領域毎に設定されている前記相対遅延目標値に近くなるように、前記各クロック素子に相対遅延値を割り当て、前記各クロック素子の位置と前記各クロック素子に割り当てられた前記相対遅延値とに基づき前記クロック素子を含むクラスタを生成し、前記クラスタ毎にバッファを挿入し、前記クラスタに含まれる前記クロック素子に割り当てられた前記相対遅延値に基づく値を、前記クラスタに挿入された前記バッファに割り当て、前記バッファに割り当てられた前記相対遅延値に基づく値を満たすように前記バッファの配線を実施する。
【００１２】
本発明にかかる半導体集積回路の設計装置は、配置領域を複数の領域に分割する配置領域分割部と、前記複数の領域に配置されている各クロック素子間の遅延余裕度の初期値を計算する遅延余裕度計算部と、前記領域毎に相対遅延目標値を設定する相対遅延目標値設定部と、前記領域毎に設定されている前記相対遅延目標値に近くなるように、前記各クロック素子に相対遅延値を割り当てる相対遅延値割り当て部と、前記各クロック素子の位置と前記各クロック素子に割り当てられた前記相対遅延値とに基づき前記クロック素子を含むクラスタを生成するクラスタ生成部と、前記クラスタ毎にバッファを挿入するバッファ挿入部と、前記クラスタに含まれる前記クロック素子に割り当てられた前記相対遅延値に基づく値を、前記クラスタに挿入された前記バッファに割り当てるバッファ設定部と、前記バッファに割り当てられた前記相対遅延値に基づく値を満たすように前記バッファの配線を実施するバッファ配線部と、を備える。
【００１３】
本発明にかかる半導体集積回路の設計プログラムは、配置領域を複数の領域に分割し、  前記複数の領域に配置されている各クロック素子間の遅延余裕度の初期値を計算し、前記領域毎に相対遅延目標値を設定し、前記領域毎に設定されている前記相対遅延目標値に近くなるように、前記各クロック素子に相対遅延値を割り当て、前記各クロック素子の位置と前記各クロック素子に割り当てられた前記相対遅延値とに基づき前記クロック素子を含むクラスタを生成し、前記クラスタ毎にバッファを挿入し、前記クラスタに含まれる前記クロック素子に割り当てられた前記相対遅延値に基づく値を、前記クラスタに挿入された前記バッファに割り当て、前記バッファに割り当てられた前記相対遅延値に基づく値を満たすように前記バッファの配線を実施する、処理をコンピュータに実行させるための半導体集積回路の設計プログラムである。
【００１４】
本実施の形態にかかる半導体集積回路の設計方法、設計装置、およびプログラムでは、配置領域を複数の領域に分割し、領域毎に相対遅延目標値を設定し、この相対遅延目標値に近くなるように、各クロック素子に相対遅延値を割り当てている。よって、位置的に近いクロック素子に、近い相対遅延値を割り当てることができるため、クロックスケジューリングを少ないバッファで実現することができる。
【発明の効果】
【００１５】
本発明により、バッファの数を増加させることなく半導体集積回路のピーク電力を削減可能な半導体集積回路の設計方法、設計装置、およびプログラムを提供することができる。
【図面の簡単な説明】
【００１６】
【図１】実施の形態１にかかる半導体集積回路の設計方法を説明するためのフローチャートである。
【図２】実施の形態１にかかる半導体集積回路の設計方法を実施する前におけるクロック素子の配置を示す図である。
【図３】実施の形態１にかかる半導体集積回路の設計方法のステップＳ１（配置領域の分割）を説明するための図である。
【図４】実施の形態１にかかる半導体集積回路の設計方法のステップＳ３（相対遅延目標値の設定）を説明するための図である。
【図５】実施の形態１にかかる半導体集積回路の設計方法のステップＳ４（相対遅延値の割り当て）を説明するための図である。
【図６】実施の形態１にかかる半導体集積回路の設計方法のステップＳ４（相対遅延値の割り当て）を説明するための図である。
【図７】実施の形態１にかかる半導体集積回路の設計方法のステップＳ３（相対遅延目標値の再設定）を説明するための図である。
【図８】実施の形態１にかかる半導体集積回路の設計方法のステップＳ４（相対遅延値の再割り当て）を説明するための図である。
【図９】実施の形態１にかかる半導体集積回路の設計方法のステップＳ６（クラスタ生成）を説明するための図である。
【図１０】実施の形態１にかかる半導体集積回路の設計方法のステップＳ７（バッファの挿入）を説明するための図である。
【図１１】実施の形態１にかかる半導体集積回路の設計方法のステップＳ９（バッファの配線）を説明するための図である。
【図１２】実施の形態１にかかる半導体集積回路の設計方法のステップＳ１０（バッファサイズの調整）を説明するための図である。
【図１３】実施の形態１にかかる半導体集積回路の設計装置を示す図である。
【図１４】実施の形態２にかかる半導体集積回路の設計方法を説明するためのフローチャートである。
【発明を実施するための形態】
【００１７】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。
図１は、本発明の実施の形態１にかかる半導体集積回路の設計方法を説明するためのフローチャートである。
【００１８】
背景技術で説明したように、半導体集積回路のピーク電力を削減するためにクロックスキューを意図的に設定する（つまり、各クロック素子における遅延をばらつかせる）ためには、クロック供給源（クロックソース）と各クロック素子との間にバッファ（遅延調整素子）を設ける必要がある。このバッファの数は、クロックスキューを調整するクロック素子の数が多くなると増加するという問題があった。
【００１９】
本実施の形態にかかる半導体集積回路の設計方法では、配置領域を複数の領域に分割し（ステップＳ１）、複数の領域に配置されている各クロック素子間の遅延余裕度の初期値を計算し（ステップＳ２）、領域毎に相対遅延目標値を設定し（ステップＳ３）、領域毎に設定されている相対遅延目標値に近くなるように、各クロック素子に相対遅延値を割り当て（ステップＳ４）、各クロック素子の位置と各クロック素子に割り当てられた相対遅延値とに基づきクロック素子を含むクラスタを生成し（ステップＳ６）、クラスタ毎にバッファを挿入し（ステップＳ７）、クラスタに含まれるクロック素子に割り当てられた相対遅延値に基づく値を、クラスタに挿入されたバッファに割り当て（ステップＳ８）、バッファに割り当てられた相対遅延値に基づく値を満たすようにバッファの配線を実施している（ステップＳ９）。
【００２０】
このように、本実施の形態にかかる半導体集積回路の設計方法では、配置領域を複数の領域に分割し、領域毎に相対遅延目標値を設定し、この相対遅延目標値に近くなるように、各クロック素子に相対遅延値を割り当てている。よって、位置的に近いクロック素子に、近い相対遅延値を割り当てることができるため、クロックスケジューリングを少ないバッファで実現することができる。したがって、バッファの数を増加させることなく半導体集積回路のピーク電力を削減可能な半導体集積回路の設計方法を提供することができる。以下で、本実施の形態にかかる発明について詳細に説明する。
【００２１】
本実施の形態にかかる半導体集積回路の設計方法では、図１に示す処理を開始するまでに、クロック素子と論理ゲートとを含む半導体集積回路の配置配線設計が一旦完了しており（ただし、タイミング制約違反が存在する可能性はある）、各クロック素子の配置が確定または推定可能な状況にあるものとする。図２は、本実施の形態にかかる半導体集積回路の設計方法を実施する前におけるクロック素子の配置を示す図であり、本実施の形態における設計対象を示している。本実施の形態では、クロック素子として１２個のフリップフロップ（ＦＦ１〜ＦＦ１２）が配置されている場合を例に説明するが、クロック素子の数は任意に設定することができる。
【００２２】
図２に示すように、クロック素子ＦＦ１〜ＦＦ１２は配置領域１０に配置されている。また、各クロック素子ＦＦ１〜ＦＦ１２は、１つ以上のクロック素子と互いに、直接、あるいは、論理ゲート群を介して、データ転送可能に接続されている。なお、各クロック素子ＦＦ１〜ＦＦ１２間の接続については、図示を省略している。本実施の形態では、図１に示す半導体集積回路の設計方法を用いて、配置領域１０に配置されているクロック素子ＦＦ１〜ＦＦ１２に対してクロックスケジューリングを実施する。
【００２３】
まず、図３に示すように、配置領域１０を複数の領域１１〜１４に分割する（ステップＳ１）。分割された領域１１にはＦＦ１〜ＦＦ３が含まれ、分割された領域１２にはＦＦ４〜ＦＦ６が含まれ、分割された領域１３にはＦＦ７〜ＦＦ９が含まれ、分割された領域１４にはＦＦ１０〜ＦＦ１２が含まれている。図３に示す例では、配置領域１０を格子状に分割しているが、配置領域１０を分割する際の形状はどのような形状であってもよい。
【００２４】
次に、複数の領域１１〜１４に配置されている各クロック素子ＦＦ１〜ＦＦ１２間の遅延余裕度の初期値を計算する（ステップＳ２）。遅延余裕度（ｓｌａｃｋ）の初期値は下記を用いて計算することができる。
【００２５】
ｓｌａｃｋ（ｕ→ｖ）＝Ｔｃｙｃｌｅ＋Ｉ（ｖ）−（Ｉ（ｕ）＋ｍａｘ（Ｔｐｄ（ｕ→ｖ）））    ・・・式１
【００２６】
ここで、ｓｌａｃｋ（ｕ→ｖ）はクロック素子（ｕ）とクロック素子（ｖ）との間の遅延余裕度、Ｔｃｙｃｌｅは供給されるクロックの周期、Ｉ（ｕ）はクロック素子（ｕ）に割り当てられる相対遅延値、Ｉ（ｖ）はクロック素子（ｖ）に割り当てられる相対遅延値、Ｔｐｄ（ｕ→ｖ）はクロック素子（ｕ）とクロック素子（ｖ）との間の遅延（データ転送遅延）、ｍａｘ（Ｔｐｄ（ｕ→ｖ））はＴｐｄ（ｕ→ｖ）の最大値である。なお、クロック素子に相対遅延を割り当てるとは、クロック供給源から出力されたクロックがクロック素子に到達するタイミングを所定時間遅らせることを意味しており、相対遅延値とはその遅延値を示している。
【００２７】
例えば、Ｔｃｙｃｌｅ＝１０ｎｓｅｃ、Ｉ（ｕ）とＩ（ｖ）の初期値を０、Ｔｐｄ（ｕ→ｖ）を８ｎｓｅｃとした場合、クロック素子（ｕ）とクロック素子（ｖ）との間の遅延余裕度の初期値は、式１よりｓｌａｃｋ（ｕ→ｖ）＝２となる。
【００２８】
このようにして、互いに接続されている各クロック素子ＦＦ１〜ＦＦ１２間の遅延余裕度の初期値を計算する。なお、以下に示す例では、クロックの周期Ｔｃｙｃｌｅ＝１０ｎｓｅｃとして説明する。
【００２９】
次に、各領域１１〜１４に相対遅延目標値を設定する（ステップＳ３）。ここで、相対遅延目標値とは、各領域１１〜１４に存在するクロック素子に割り当てられる相対遅延値の目標値である。この相対遅延目標値を設定することで、位置的に近いクロック素子に、近い相対遅延値を割り当てることができる。相対遅延目標値の初期値は、全てのクロック素子ＦＦ１〜ＦＦ１２間の最大遅延余裕度をｓとした時に、｛−ｓ、＋ｓ｝の範囲内でランダムに割り当てることができる。図４は、各領域１１〜１４に相対遅延目標値（図では、目標値と記載する）を設定した一例を示す図である。図４に示すように、領域１１と領域１４には相対遅延目標値として＋１ｎｓｅｃを設定し、領域１２と領域１３には相対遅延目標値として−１ｎｓｅｃを設定している。なお、図４では単位ｎｓｅｃを省略して示しており、以降の図とその説明においても適宜単位ｎｓｅｃを省略する。
【００３０】
次に、各領域１１〜１４に設定されている相対遅延目標値に近くなるように、各クロック素子ＦＦ１〜ＦＦ１２に相対遅延値を割り当てる（ステップＳ４）。例えば、各クロック素子ＦＦ１〜ＦＦ１２に割り当てられる相対遅延値として、タイミング違反を起こさない範囲で以下の式２のｄｎ＋１に近い値が割り当てられる。
【００３１】
ｄｎ＋１＝ｄ'ｎ＋（ｔｎ−ｄ'ｎ）×α  ・・・式２
【００３２】
ここで、ｔｎ（ｎは繰り返しの回数を示し、初期値はｎ＝０とする）は属する領域に割り当てられた相対遅延目標値、ｄ'ｎは属する領域に配置された各クロック素子の平均相対遅延値、αは０以上のパラメータである。なお、ｄはクロック素子に割り当てられる相対遅延値そのものを意味し、ｄ'は同一領域に配置されたクロック素子の相対遅延値の平均値を意味するものとする。また、各クロック素子ＦＦ１〜ＦＦ１２に相対遅延値を割り当てる順序は任意である。
【００３３】
例えば、領域１１に配置されている各クロック素子ＦＦ１〜３に相対遅延値を割り当てる場合、ｔ０＝＋１、ｄ'０＝０（各クロック素子の相対遅延値の初期値は０であるため、平均相対遅延値も０となる）であるので、式２より、ｄ１＝αとなる。よって、領域１１に配置されている各クロック素子ＦＦ１〜３には、タイミング違反を起こさない範囲でｄ１＝αに近い値が割り当てられる。ここで、αは０以上のパラメータであり、換言するとｄ１の値の範囲を決定するためのパラメータである。すなわち、αの値が大きい程、ｄ１の値の範囲が広くなる。
【００３４】
また、タイミング違反を起こさないように相対遅延値を割り当てる場合について、図５を用いて説明する。図５では、領域１１に配置されているクロック素子ＦＦ１、領域１２に配置されているクロック素子ＦＦ６、領域１３に配置されているクロック素子ＦＦ８、および領域１４に配置されているクロック素子ＦＦ１０を例に説明する。ここで、例えばＦＦ１→ＦＦ６→ＦＦ１０→ＦＦ８の順にデータが転送され、また、ＦＦ１→ＦＦ８の順にデータが転送されるものとする。
【００３５】
図５（ａ）に示すように、初期状態においてＦＦ１、ＦＦ６、ＦＦ８、およびＦＦ１０の相対遅延値はそれぞれ０に設定されている。また、ＦＦ１とＦＦ６との間の遅延余裕度（ｓｌａｃｋ）、ＦＦ１とＦＦ８との間の遅延余裕度、ＦＦ６とＦＦ１０との間の遅延余裕度、ＦＦ１０とＦＦ８との間の遅延余裕度は、それぞれｓｌａｃｋ＝２である。各遅延余裕度は上記の式１を用いて求めることができる。なお、この場合もＴｃｙｃｌｅ＝１０ｎｓｅｃとし、各クロック素子間のデータ転送遅延をＴｐｄ＝８ｎｓｅｃとする。
【００３６】
タイミング違反を起こさないように相対遅延値を割り当てるとは、各クロック素子間の遅延余裕度（ｓｌａｃｋ）が０よりも小さくならないように各クロック素子に相対遅延値を割り当てることを意味する。
【００３７】
ＦＦ１が配置されている領域１１の相対遅延目標値は＋１である。よって、図５（ａ）におけるＦＦ１の相対遅延値（０）は、相対遅延目標値（＋１）よりも小さい。また、上記式２よりｄ１＝α（αは０以上）である。よって、図５（ｂ）に示すように、ＦＦ１の相対遅延値としてｄ＝＋１を割り当てる。このとき、ＦＦ１とＦＦ６との間の遅延余裕度は、式１よりｓｌａｃｋ＝１となる。同様に、ＦＦ１とＦＦ８との間の遅延余裕度は、式１よりｓｌａｃｋ＝１となる。
【００３８】
ＦＦ６が配置されている領域１２の相対遅延目標値は−１である。よって、図５（ｂ）におけるＦＦ６の相対遅延値（０）は、相対遅延目標値（−１）よりも大きい。また、上記式２よりｄ１＝−α（αは０以上）である。よって、図５（ｃ）に示すように、ＦＦ６の相対遅延値としてｄ＝−１を割り当てる。このとき、ＦＦ１とＦＦ６との間の遅延余裕度は、式１よりｓｌａｃｋ＝０となる。同様に、ＦＦ６とＦＦ１０との間の遅延余裕度は、式１よりｓｌａｃｋ＝３となる。
【００３９】
ＦＦ１０が配置されている領域１４の相対遅延目標値は＋１である。よって、図５（ｃ）におけるＦＦ１０の相対遅延値（０）は、相対遅延目標値（＋１）よりも小さい。また、上記式２よりｄ１＝α（αは０以上）である。よって、図５（ｄ）に示すように、ＦＦ１０の相対遅延値としてｄ＝＋１を割り当てる。このとき、ＦＦ６とＦＦ１０との間の遅延余裕度は、式１よりｓｌａｃｋ＝４となる。同様に、ＦＦ１０とＦＦ８との間の遅延余裕度は、式１よりｓｌａｃｋ＝１となる。
【００４０】
ＦＦ８が配置されている領域１３の相対遅延目標値は−１である。よって、図５（ｄ）におけるＦＦ８の相対遅延値（０）は、相対遅延目標値（−１）よりも大きい。また、上記式２よりｄ１＝−α（αは０以上）である。よって、図５（ｅ）に示すように、ＦＦ８の相対遅延値としてｄ＝−１を割り当てる。このとき、ＦＦ１とＦＦ８との間の遅延余裕度は、式１よりｓｌａｃｋ＝０となる。同様に、ＦＦ１０とＦＦ８との間の遅延余裕度は、式１よりｓｌａｃｋ＝０となる。
【００４１】
このように、（１）クロック素子が配置されている領域の相対遅延目標値に基づき、当該クロック素子に相対遅延値を割り当て、（２）クロック素子に相対遅延値を割り当てた後に、各クロック素子間の遅延余裕度（ｓｌａｃｋ）を再計算し、（３）当該遅延余裕度の値に基づき相対遅延値の割り当てがタイミング違反を起こしていないか検証することで、タイミング違反を起こさないように相対遅延値を割り当てることができる。ここで、タイミング違反の検証は、例えば遅延余裕度（ｓｌａｃｋ）の値が所定の値（例えば０）以上であるか判断することで検証することができる。
【００４２】
図６は、上記方法を用いて各領域１１〜１４に配置されている各クロック素子ＦＦ１〜ＦＦ１２に相対遅延値を割り当てた例を示す図である。図６に示すように、各領域１１〜１４に配置されている各クロック素子ＦＦ１〜ＦＦ１２に割り当てられた相対遅延値は、各領域１１〜１４に設定された相対遅延目標値に近い値となっている。
【００４３】
次に、各クロック素子に割り当てられた相対遅延値と、当該クロック素子が配置されている領域に設定されている相対遅延目標値との差が閾値以下であるか検証する（ステップＳ５）。例えば、図６の領域１１に配置されたクロック素子ＦＦ１の相対遅延値はｄ＝＋１である。このとき、相対遅延目標値（＋１）との差は０となり、この差が設定された閾値と比較される。また、領域１１に配置されたクロック素子ＦＦ２の相対遅延値はｄ＝＋０である。このとき、相対遅延目標値（＋１）との差は１となり、この差が設定された閾値と比較される。以降、同様に各クロック素子に割り当てられた相対遅延値と、当該クロック素子が配置されている領域に設定されている相対遅延目標値との差が各々、閾値と比較される。
【００４４】
このとき、相対遅延値として、領域内に配置された各クロック素子に割り当てられた相対遅延値の平均値を用いてもよい。例えば、図６の領域１１に配置された各クロック素子の相対遅延値の平均値は、ｄ'＝０．３３である。このとき、相対遅延目標値（＋１）との差は０．６７となり、この差と設定された閾値とを比較してもよい。
【００４５】
割り当てられた相対遅延値と、設定された相対遅延目標値との差が閾値以下である場合（ステップＳ５、Ｙｅｓ）は、ステップ６へ進む。一方、割り当てられた相対遅延値と、設定された相対遅延目標値との差が閾値以下でない場合（ステップＳ５、Ｎｏ）は、相対遅延目標値の設定（ステップＳ３）および相対遅延値の割り当て（ステップＳ４）を繰り返す。
【００４６】
ここで、閾値は任意に設定することができる。例えば、閾値を小さい値に設定すると相対遅延値と相対遅延目標値との差が小さくなり、回路設計の精度が向上する。一方、閾値を比較的大きい値に設定すると相対遅延値と相対遅延目標値との差が比較的大きくなり回路設計の精度は低下するが、相対遅延目標値の設定（ステップＳ３）および相対遅延値の割り当て（ステップＳ４）の繰り返し回数を少なくすることができる。
【００４７】
なお、ステップ５は、例えば、相対遅延目標値の設定（ステップＳ３）および相対遅延値の割り当て（ステップＳ４）を所定の回数繰り返したか否かを判断するステップであってもよい。このように、ステップ３とステップ４の繰り返し回数で判断することで、相対遅延目標値の設定（ステップＳ３）および相対遅延値の割り当て（ステップＳ４）の繰り返し回数を所定の回数で終了することができる。
【００４８】
次に、相対遅延目標値の設定（ステップＳ３）および相対遅延値の割り当て（ステップＳ４）を繰り返す場合について説明する。相対遅延目標値を再設定する場合（ステップＳ３）、例えば次の式３を用いて各領域の相対遅延目標値を再設定する。
【００４９】
ｔｎ＋１＝ｔｎ＋（ｄ'ｎ＋１×β−ｔｎ）×γ  ・・・式３
【００５０】
ここで、ｔｎ（ｎは繰り返しの回数を示し、初期値はｎ＝０とする）は属する領域に割り当てられた相対遅延目標値、ｄ'ｎ＋１は属する領域に配置された各クロック素子の平均相対遅延値、βは１以上のパラメータ、γは０以上のパラメータである。
【００５１】
βは１以上のパラメータであり、ステップＳ３とステップＳ４の繰り返し回数が増えるにつれて１に近づく。換言すると、βはｔｎ＋１のγに対する変化量を決定するパラメータであり、βの値が大きい程、γに対するｔｎ＋１の変化量が大きくなる。また、γは０以上のパラメータであり、換言するとｔｎ＋１の値の大きさを決定するためのパラメータである。すなわち、γの値が大きい程、ｔｎ＋１の値が大きくなる。
【００５２】
例えば、領域１３の相対遅延目標値を再設定する場合、現在の相対遅延目標値はｔ０＝−１、ｄ'１＝（（−２）＋（−１）＋（−２））／３＝−１．７であるので、式３より（ｎ＝０とする）、ｔ１＝−１＋（−１．７×β＋１）×γとなる。よって、式３から求めたｔ１の値を考慮し、領域１３の相対遅延目標値を−３に再設定することができる。他の領域についても同様に式３を用いて相対遅延目標値を再設定することができる。
【００５３】
図７は、各領域１１〜１４に相対遅延目標値を再設定した一例を示す図である。図７に示すように、領域１１の相対遅延目標値は＋１ｎｓｅｃのままである。一方、領域１２の相対遅延目標値は−１ｎｓｅｃから−２ｎｓｅｃに再設定されている。領域１３の相対遅延目標値は−１ｎｓｅｃから−３ｎｓｅｃに再設定されている。領域１４の相対遅延目標値は＋１ｎｓｅｃから＋２ｎｓｅｃに再設定されている。
【００５４】
相対遅延目標値を再設定した後、各クロック素子に相対遅延値を再度割り当てる（ステップＳ４）。相対遅延値を再度割り当てる方法については、上記で説明したステップＳ４の場合と同様であるので重複した説明は省略する。
【００５５】
図８は、各領域１１〜１４に配置されている各クロック素子ＦＦ１〜ＦＦ１２に相対遅延値を再度割り当てた例を示す図である。図８に示した、各領域１１〜１４に配置されている各クロック素子ＦＦ１〜ＦＦ１２に割り当てられた相対遅延値は、図６に示した場合よりも、各領域１１〜１４に設定された相対遅延目標値に近い値となっている。例えば、図８では、ＦＦ２の相対遅延値が相対遅延目標値と同一の値（＋１）となっている。また、ＦＦ７〜ＦＦ９の相対遅延値が相対遅延目標値と同一の値（−３）となっている。
【００５６】
次に、各クロック素子の位置と各クロック素子に割り当てられた相対遅延値とに基づきクロック素子を含むクラスタを生成する（ステップＳ６）。図９は、クラスタ生成の一例を示す図である。図９に示すように、比較的位置が近く、且つ相対遅延値が同一のクロック素子同士がクラスタを形成している。つまり、ＦＦ１およびＦＦ２がクラスタ２１を形成し、ＦＦ４およびＦＦ５がクラスタ２２を形成し、ＦＦ３、ＦＦ６、およびＦＦ１０がクラスタ２３を形成し、ＦＦ７、ＦＦ８、およびＦＦ９がクラスタ２４を形成し、ＦＦ１１およびＦＦ１２がクラスタ２５を形成している。
【００５７】
次に、ステップＳ６で生成されたクラスタ毎にバッファを挿入する（ステップＳ７）。図１０は、バッファ挿入の一例を示す図である。図１０に示すように、各クラスタ２１〜２５にバッファ３１〜３５がそれぞれ挿入される。クラスタにバッファを挿入する際、クラスタの重心にバッファを挿入してもよい。ここでクラスタの重心とは、例えば、クラスタを構成するクロック素子が２つの場合は、クロック素子同士を結んだ直線の中心点である。また、クラスタを構成するクロック素子が３つの場合は、３つのクロック素子を頂点とした三角形の重心である。
【００５８】
次に、クラスタに含まれるクロック素子に割り当てられた相対遅延値に基づく値を、クラスタに挿入されたバッファに割り当てる（ステップＳ８）。ここで、クラスタに含まれるクロック素子に割り当てられた相対遅延値に基づく値とは、クラスタに含まれるクロック素子に割り当てられた相対遅延値の平均値や当該平均値近傍の値である。
【００５９】
例えば、図１０に示したクラスタ２１に挿入されたバッファ３１には、クラスタ２１に含まれるＦＦ１とＦＦ２の相対遅延値の平均値であるｄ'＝＋１が割り当てられる。クラスタ２２に挿入されたバッファ３２には、クラスタ２２に含まれるＦＦ４とＦＦ５の相対遅延値の平均値であるｄ'＝−２が割り当てられる。クラスタ２３に挿入されたバッファ３３には、クラスタ２３に含まれるＦＦ３、ＦＦ６、およびＦＦ１０の相対遅延値の平均値であるｄ'＝０が割り当てられる。クラスタ２４に挿入されたバッファ３４には、クラスタ２４に含まれるＦＦ７、ＦＦ８、およびＦＦ９の相対遅延値の平均値であるｄ'＝−３が割り当てられる。クラスタ２５に挿入されたバッファ３５には、クラスタ２５に含まれるＦＦ１１とＦＦ１２の相対遅延値の平均値であるｄ'＝＋２が割り当てられる。
【００６０】
次に、バッファ３１〜３５に割り当てられた相対遅延値に基づく値を満たすようにバッファの配線を実施する（ステップＳ９）。図１１は、バッファ３１〜３５の配線を実施した場合の例を示す図である。図１１に示すように、クロック供給源４１から供給されたクロックは、バッファ３６、３７、３１を介してクロック素子ＦＦ１およびＦＦ２に供給される。クロック供給源４１から供給されたクロックは、バッファ３６、３２を介してクロック素子ＦＦ４およびＦＦ５に供給される。クロック供給源４１から供給されたクロックは、バッファ３６、３３を介してクロック素子ＦＦ３、ＦＦ６、およびＦＦ１０に供給される。クロック供給源４１から供給されたクロックは、バッファ３６、３４を介してクロック素子ＦＦ７、ＦＦ８、およびＦＦ９に供給される。クロック供給源４１から供給されたクロックは、バッファ３６、３８、３５を介してクロック素子ＦＦ１１およびＦＦ１２に供給される。
【００６１】
図１１では、バッファ３１〜３５の配線を実施する際に、新たにバッファ３６、３７、３８を配置している。このように、新たにバッファ３６、３７、３８を配置することでバッファ３１〜３５に到達するクロックのタイミングを調整することができ、バッファ３１〜３５に割り当てられた相対遅延値に基づく値を満たすようにバッファ３１〜３５の配線を実施することができる。なお、相対遅延値に基づく値を満たすようにバッファ３１〜３５の配線を実施することができる場合は、新たにバッファを配置する必要はない。
【００６２】
次に、各クロック素子ＦＦ１〜ＦＦ１２間のデータ転送タイミングに違反がないか検証し、タイミング違反が存在する場合はバッファ３１〜３８のサイズを調整する（ステップ１０）。なお、ステップ１０は必須のステップではなく、適宜省略してもよい。
【００６３】
図１２は、バッファサイズの調整を実施した場合の例を示す図である。図１１において、例えばバッファ３４の駆動能力が小さすぎるためクロック素子ＦＦ７〜ＦＦ９に供給されるクロックに遅延が生じてタイミング違反が発生していたとする。この場合、図１２に示すようにバッファ３４の駆動能力を強化することで、クロック素子ＦＦ７〜ＦＦ９におけるタイミング違反を解消することができる。
【００６４】
また、図１１において、例えばバッファ３５の駆動能力が大きすぎるためクロック素子ＦＦ１１、ＦＦ１２に供給されるクロックにタイミング違反が発生していたとする。この場合、図１２に示すようにバッファ３５の駆動能力を低減することで、クロック素子ＦＦ１１、ＦＦ１２におけるタイミング違反を解消することができる。なお、この場合はバッファ３５の代わりにバッファ３８の駆動能力を低減してもタイミング違反を解消することができる。
【００６５】
以上で説明したように、本実施の形態にかかる半導体集積回路の設計方法では、配置領域を複数の領域に分割し、領域毎に相対遅延目標値を設定し、この相対遅延目標値に近くなるように、各クロック素子に相対遅延値を割り当てている。よって、位置的に近いクロック素子に、近い相対遅延値を割り当てることができるため、クロックスケジューリングを少ないバッファで実現することができる。
【００６６】
特に、本実施の形態にかかる半導体集積回路の設計方法では、相対遅延目標値の設定（ステップＳ３）と相対遅延値の割り当て（ステップＳ４）を、双方の結果を参照しながら繰り返している。つまり、相対遅延目標値の設定（ステップＳ３）では、上記式３に示したように各クロック素子の平均相対遅延値ｄ'ｎ＋１を参照し、相対遅延値の割り当て（ステップＳ４）では、上記式２に示したように相対遅延目標値ｔｎを参照している。これにより、割り当てられた相対遅延値と設定された相対遅延目標値との差が小さくなるようにクロックスケジューリングを実施することができる。
【００６７】
次に、本実施の形態にかかる半導体集積回路の設計装置について説明する。図１３は、本実施の形態にかかる半導体集積回路の設計装置を示す図である。図１３に示すように半導体集積回路の設計装置は、半導体集積回路の設計装置の設計対象となる、クロック素子と論理ゲートとを含む半導体集積回路の設計情報（チップ情報）を受け付ける半導体集積回路情報受付部５１を備える。半導体集積回路情報受付部５１はチップ情報記憶部５０に、クロック素子と論理ゲートとを含む半導体集積回路の設計情報を出力する。チップ情報記憶部５０は、半導体集積回路情報受付部５１から出力されたクロック素子と論理ゲートとを含む半導体集積回路の設計情報を格納する。
【００６８】
本実施の形態にかかる半導体集積回路の設計装置は、チップ情報記憶部５０に格納されている半導体集積回路の設計情報に対して処理を行なう下記の構成要素を備える。すなわち、本実施の形態にかかる半導体集積回路の設計装置は、配置領域を複数の領域に分割する配置領域分割部５２と、複数の領域に配置されている各クロック素子間の遅延余裕度の初期値を計算する遅延余裕度計算部５３と、領域毎に相対遅延目標値を設定する相対遅延目標値設定部５４と、領域毎に設定されている相対遅延目標値に近くなるように、各クロック素子に相対遅延値を割り当てる相対遅延値割り当て部５５と、各クロック素子の位置と各クロック素子に割り当てられた相対遅延値とに基づきクロック素子を含むクラスタを生成するクラスタ生成部５６と、クラスタ毎にバッファを挿入するバッファ挿入部５７と、クラスタに含まれる前記クロック素子に割り当てられた相対遅延値に基づく値を、クラスタに挿入されたバッファに割り当てるバッファ設定部５８と、バッファに割り当てられた相対遅延値に基づく値を満たすようにバッファの配線を実施するバッファ配線部５９と、を備える。
【００６９】
本実施の形態にかかる半導体集積回路の設計装置は更に、バッファの配線を実施した後に、各クロック素子間のデータ転送タイミングに違反がないか検証し、タイミング違反が存在する場合はバッファのサイズを調整するバッファサイズ調整部６０を備えていてもよい。
【００７０】
例えば、チップ情報記憶部５０としてコンピュータが備えるメモリを用いることができる。また、上記処理（図１の各ステップに示した処理）を実施するためのプログラムを、コンピュータが備えるＣＰＵで動作させることで、上記半導体集積回路の設計装置を構成することができる。
【００７１】
なお、本実施の形態にかかる半導体集積回路の設計装置およびプログラムの詳細については、上記で説明した半導体集積回路の設計方法と同様であるので重複した説明は省略する。
【００７２】
以上で説明したように、本実施の形態にかかる発明により、バッファの数を増加させることなく半導体集積回路のピーク電力を削減可能な半導体集積回路の設計方法、設計装置、およびプログラムを提供することができる。
【００７３】
実施の形態２
次に、本発明の実施の形態２について説明する。図１４は、本実施の形態にかかる半導体集積回路の設計方法を説明するためのフローチャートである。本実施の形態では、図１４におけるステップＳ５'が実施の形態１（図１参照）の場合と異なる。これ以外は実施の形態１の場合と同様であるので、同一の構成要素については同一の符号を付し重複した説明は省略する。
【００７４】
本実施の形態にかかる半導体集積回路の設計方法では、ステップ５'において、各クロック素子に割り当てられた相対遅延値と、当該クロック素子が配置されている領域に設定されている相対遅延目標値との差が閾値以下であるか検証する。
【００７５】
そして、割り当てられた相対遅延値と、設定された相対遅延目標値との差が閾値以下である場合（ステップＳ５、Ｙｅｓ）は、実施の形態１と同様にステップ６へ進む。
【００７６】
一方、割り当てられた相対遅延値と、設定された相対遅延目標値との差が閾値以下でない場合（ステップＳ５、Ｎｏ）は、ステップＳ１に戻り、再度、配置領域を複数の領域に分割する。この場合、例えばステップＳ４で割り当てられた相対遅延値が比較的近いクロック素子同士が同一の領域に含まれるように配置領域を分割する。
【００７７】
また、再度配置領域を分割した後のステップＳ２については、最初のステップＳ２の処理において既に各クロック素子間の遅延余裕度の初期値が得られているので適宜省略してもよい。
【００７８】
その後、相対遅延目標値の設定（ステップＳ３）および相対遅延値の割り当て（ステップＳ４）を繰り返す。各ステップの詳細については、実施の形態１の場合と同様であるので重複した説明は省略する。
【００７９】
なお、本実施の形態にかかる半導体集積回路の設計方法と実施の形態１にかかる半導体集積回路の設計方法とを組み合わせてもよい。例えば、実施の形態１のように、割り当てられた相対遅延値と、設定された相対遅延目標値との差が閾値よりも大きく（ステップＳ５、Ｎｏ）、且つ、相対遅延目標値の設定（ステップＳ３）および相対遅延値の割り当て（ステップＳ４）の繰り返し回数が所定の回数を超えた場合に、ステップＳ１に戻り、再度、配置領域を複数の領域に分割してもよい。
【００８０】
実施の形態１において、相対遅延目標値の設定（ステップＳ３）および相対遅延値の割り当て（ステップＳ４）の繰り返し回数が所定の回数を超えていることは、割り当てられた相対遅延値が相対遅延目標値に収束していないことを意味する。この場合は、本実施の形態のように、ステップＳ１に戻り、再度、配置領域を複数の領域に分割し直すことで、クロック素子に割り当てられる相対遅延値を相対遅延目標値に収束させることができる。
【００８１】
本実施の形態にかかる発明においても、バッファの数を増加させることなく半導体集積回路のピーク電力を削減可能な半導体集積回路の設計方法、設計装置、およびプログラムを提供することができる。
【００８２】
以上、本発明を上記実施形態に即して説明したが、上記実施形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得る各種変形、修正、組み合わせを含むことは勿論である。
【符号の説明】
【００８３】
１０  配置領域
１１、１２、１３、１４  領域
２１、２２、２３、２４  クラスタ
３１、３２、３３、３４、３５、３６、３７、３８  バッファ
４１  クロック供給源
５０  チップ情報記憶部
５１  半導体集積回路情報受付部
５２  配置領域分割部
５３  遅延余裕度計算部
５４  相対遅延目標値設定部
５５  相対遅延値割り当て部
５６  クラスタ生成部
５７  バッファ挿入部
５８  バッファ設定部
５９  バッファ配線部
６０  バッファサイズ調整部
【図１】
2012160100.tif 000003
【図２】
2012160100.tif 000004
【図３】
2012160100.tif 000005
【図４】
2012160100.tif 000006
【図５】
2012160100.tif 000007
【図６】
2012160100.tif 000008
【図７】
2012160100.tif 000009
【図８】
2012160100.tif 000010
【図９】
2012160100.tif 000011
【図１０】
2012160100.tif 000012
【図１１】
2012160100.tif 000013
【図１２】
2012160100.tif 000014
【図１３】
2012160100.tif 000015
【図１４】
2012160100.tif 000016