JP2012160100A - 半導体集積回路の設計方法、設計装置、およびプログラム - Google Patents

半導体集積回路の設計方法、設計装置、およびプログラム Download PDF

Info

Publication number
JP2012160100A
JP2012160100A JP2011020434A JP2011020434A JP2012160100A JP 2012160100 A JP2012160100 A JP 2012160100A JP 2011020434 A JP2011020434 A JP 2011020434A JP 2011020434 A JP2011020434 A JP 2011020434A JP 2012160100 A JP2012160100 A JP 2012160100A
Authority
JP
Japan
Prior art keywords
relative delay
value
clock
buffer
semiconductor integrated
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.)
Withdrawn
Application number
JP2011020434A
Other languages
English (en)
Inventor
Takumi Okamoto
匠 岡本
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2011020434A priority Critical patent/JP2012160100A/ja
Publication of JP2012160100A publication Critical patent/JP2012160100A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

【課題】バッファの数を増加させることなく半導体集積回路のピーク電力を削減可能な半導体集積回路の設計方法を提供することである。
【解決手段】本発明にかかる半導体集積回路の設計方法は、配置領域を複数の領域に分割し、複数の領域に配置されている各クロック素子間の遅延余裕度の初期値を計算し、領域毎に相対遅延目標値を設定し、領域毎に設定されている相対遅延目標値に近くなるように、各クロック素子に相対遅延値を割り当て、各クロック素子の位置と各クロック素子に割り当てられた相対遅延値とに基づきクロック素子を含むクラスタを生成し、クラスタ毎にバッファを挿入し、クラスタに含まれるクロック素子に割り当てられた相対遅延値に基づく値をバッファに割り当て、バッファに割り当てられた相対遅延値に基づく値を満たすようにバッファの配線を実施する。
【選択図】図1

Description

本発明は半導体集積回路の設計方法、設計装置、およびプログラムに関し、特に半導体集積回路に含まれる各クロック素子にクロックを供給するための設計方法、設計装置、およびプログラムに関する。
同期式回路のクロック設計においては、基本的にクロックソースから全てのクロック素子への遅延が同一になるようにクロック分配回路の配置配線が行われる。ここで、クロックソースから各クロック素子への遅延の差をクロックスキューと呼ぶ。また、クロック素子とは、クロックソースから供給されるクロックに同期して動作する素子であり、例えばフリップフロップである。特許文献1乃至3には、クロック素子間のタイミング設計が厳しい場合、クロック素子間のデータ転送遅延に基づきクロックスキューを意図的に設定することにより、タイミング設計を容易にする技術が開示されている。この意図的なクロックスキューの設定は、クロックスケジューリング、スキュースケジューリング、ユースフルスキュー、タイムボロー、タイムボローイング等と称される。
特許文献1には、クロックスキューを均一に抑える必要なく、クロックの位相を制御し、各フリップフロップに最適なクロックスキューを与えることで、タイミング違反のパスのタイミングを改善することができるクロックスキュー制御設計方法に関する技術が開示されている。特許文献1にかかるクロックスキュー制御設計方法は、回路のクロックスキューを解析する処理と、タイミング違反の情報を解析する処理と、各フリップフロップの出力遅延の情報を解析する処理と、セル特性の情報を解析する処理と、クロックスキューの値を最適化する処理と、クロックラインに遅延を追加する処理と、変更された配線パス、論理の情報を出力する処理とで構成される。
特許文献2には、ユースフルスキューを利用して最適なクロックスキューを割り当てることにより、回路の歩留まりの最大化、クロック周波数の最大化を図ることができるクロック分配方法に関する技術が開示されている。
特許文献3には、スキュースケジューリングを効率的に行なえるようにすると共にスキュースケジューリングの結果を満たすクロック回路を実現可能な技術が開示されている。特許文献3にかかる技術では、第1のステップで、集積回路における複数の同期素子の配置又はタイミング制約に基づき、各同期素子にクロック遅延値として割り付けることができる有限個の離散値からなる離散クロック遅延値群を決定する。その後、第2のステップにおいて、各同期素子に離散クロック遅延値群のうちから選択されたクロック遅延値を割り付けクロック遅延値として、集積回路の動作保証を保ちつつ割り付ける。その後、第3のステップにおいて、割り付けクロック遅延値に従って各同期素子にクロック信号を供給するクロック回路を設計する。
非特許文献1には、設定されたクロックスケジュール(すなわち、割り当てられたクロック相対遅延)が近いクロック素子をクラスタリングし、そのクラスタを駆動するバッファの駆動能力を調整することにより、各フリップフロップへのクロック遅延を制御する技術が開示されている。
特開2004−334468号公報 特許第4118536号公報 特開2001−338985号公報
"Multi-level clustering for clock skew optimization", International Conference on Computer-Aided-Design 2009
半導体集積回路では、同じタイミングで動作するクロック素子、つまりクロック供給源(クロックソース)からの遅延が同じクロック素子の数が多いと、半導体集積回路におけるピーク電力が増加する。このピーク電力を削減するためには、タイミング制約を満たした範囲で、クロック供給源から各クロック素子への遅延をばらつかせる必要がある。
しかしながら、半導体集積回路のピーク電力を削減するためにクロックスキューを意図的に設定するためには、クロック供給源と各クロック素子との間にバッファ(遅延調整素子)を設ける必要がある。このバッファの数は、クロックスキューを調整するクロック素子の数が多くなると増加するという問題があった。
本発明にかかる半導体集積回路の設計方法は、配置領域を複数の領域に分割し、前記複数の領域に配置されている各クロック素子間の遅延余裕度の初期値を計算し、前記領域毎に相対遅延目標値を設定し、前記領域毎に設定されている前記相対遅延目標値に近くなるように、前記各クロック素子に相対遅延値を割り当て、前記各クロック素子の位置と前記各クロック素子に割り当てられた前記相対遅延値とに基づき前記クロック素子を含むクラスタを生成し、前記クラスタ毎にバッファを挿入し、前記クラスタに含まれる前記クロック素子に割り当てられた前記相対遅延値に基づく値を、前記クラスタに挿入された前記バッファに割り当て、前記バッファに割り当てられた前記相対遅延値に基づく値を満たすように前記バッファの配線を実施する。
本発明にかかる半導体集積回路の設計装置は、配置領域を複数の領域に分割する配置領域分割部と、前記複数の領域に配置されている各クロック素子間の遅延余裕度の初期値を計算する遅延余裕度計算部と、前記領域毎に相対遅延目標値を設定する相対遅延目標値設定部と、前記領域毎に設定されている前記相対遅延目標値に近くなるように、前記各クロック素子に相対遅延値を割り当てる相対遅延値割り当て部と、前記各クロック素子の位置と前記各クロック素子に割り当てられた前記相対遅延値とに基づき前記クロック素子を含むクラスタを生成するクラスタ生成部と、前記クラスタ毎にバッファを挿入するバッファ挿入部と、前記クラスタに含まれる前記クロック素子に割り当てられた前記相対遅延値に基づく値を、前記クラスタに挿入された前記バッファに割り当てるバッファ設定部と、前記バッファに割り当てられた前記相対遅延値に基づく値を満たすように前記バッファの配線を実施するバッファ配線部と、を備える。
本発明にかかる半導体集積回路の設計プログラムは、配置領域を複数の領域に分割し、 前記複数の領域に配置されている各クロック素子間の遅延余裕度の初期値を計算し、前記領域毎に相対遅延目標値を設定し、前記領域毎に設定されている前記相対遅延目標値に近くなるように、前記各クロック素子に相対遅延値を割り当て、前記各クロック素子の位置と前記各クロック素子に割り当てられた前記相対遅延値とに基づき前記クロック素子を含むクラスタを生成し、前記クラスタ毎にバッファを挿入し、前記クラスタに含まれる前記クロック素子に割り当てられた前記相対遅延値に基づく値を、前記クラスタに挿入された前記バッファに割り当て、前記バッファに割り当てられた前記相対遅延値に基づく値を満たすように前記バッファの配線を実施する、処理をコンピュータに実行させるための半導体集積回路の設計プログラムである。
本実施の形態にかかる半導体集積回路の設計方法、設計装置、およびプログラムでは、配置領域を複数の領域に分割し、領域毎に相対遅延目標値を設定し、この相対遅延目標値に近くなるように、各クロック素子に相対遅延値を割り当てている。よって、位置的に近いクロック素子に、近い相対遅延値を割り当てることができるため、クロックスケジューリングを少ないバッファで実現することができる。
本発明により、バッファの数を増加させることなく半導体集積回路のピーク電力を削減可能な半導体集積回路の設計方法、設計装置、およびプログラムを提供することができる。
実施の形態1にかかる半導体集積回路の設計方法を説明するためのフローチャートである。 実施の形態1にかかる半導体集積回路の設計方法を実施する前におけるクロック素子の配置を示す図である。 実施の形態1にかかる半導体集積回路の設計方法のステップS1(配置領域の分割)を説明するための図である。 実施の形態1にかかる半導体集積回路の設計方法のステップS3(相対遅延目標値の設定)を説明するための図である。 実施の形態1にかかる半導体集積回路の設計方法のステップS4(相対遅延値の割り当て)を説明するための図である。 実施の形態1にかかる半導体集積回路の設計方法のステップS4(相対遅延値の割り当て)を説明するための図である。 実施の形態1にかかる半導体集積回路の設計方法のステップS3(相対遅延目標値の再設定)を説明するための図である。 実施の形態1にかかる半導体集積回路の設計方法のステップS4(相対遅延値の再割り当て)を説明するための図である。 実施の形態1にかかる半導体集積回路の設計方法のステップS6(クラスタ生成)を説明するための図である。 実施の形態1にかかる半導体集積回路の設計方法のステップS7(バッファの挿入)を説明するための図である。 実施の形態1にかかる半導体集積回路の設計方法のステップS9(バッファの配線)を説明するための図である。 実施の形態1にかかる半導体集積回路の設計方法のステップS10(バッファサイズの調整)を説明するための図である。 実施の形態1にかかる半導体集積回路の設計装置を示す図である。 実施の形態2にかかる半導体集積回路の設計方法を説明するためのフローチャートである。
実施の形態1
以下、図面を参照して本発明の実施の形態について説明する。
図1は、本発明の実施の形態1にかかる半導体集積回路の設計方法を説明するためのフローチャートである。
背景技術で説明したように、半導体集積回路のピーク電力を削減するためにクロックスキューを意図的に設定する(つまり、各クロック素子における遅延をばらつかせる)ためには、クロック供給源(クロックソース)と各クロック素子との間にバッファ(遅延調整素子)を設ける必要がある。このバッファの数は、クロックスキューを調整するクロック素子の数が多くなると増加するという問題があった。
本実施の形態にかかる半導体集積回路の設計方法では、配置領域を複数の領域に分割し(ステップS1)、複数の領域に配置されている各クロック素子間の遅延余裕度の初期値を計算し(ステップS2)、領域毎に相対遅延目標値を設定し(ステップS3)、領域毎に設定されている相対遅延目標値に近くなるように、各クロック素子に相対遅延値を割り当て(ステップS4)、各クロック素子の位置と各クロック素子に割り当てられた相対遅延値とに基づきクロック素子を含むクラスタを生成し(ステップS6)、クラスタ毎にバッファを挿入し(ステップS7)、クラスタに含まれるクロック素子に割り当てられた相対遅延値に基づく値を、クラスタに挿入されたバッファに割り当て(ステップS8)、バッファに割り当てられた相対遅延値に基づく値を満たすようにバッファの配線を実施している(ステップS9)。
このように、本実施の形態にかかる半導体集積回路の設計方法では、配置領域を複数の領域に分割し、領域毎に相対遅延目標値を設定し、この相対遅延目標値に近くなるように、各クロック素子に相対遅延値を割り当てている。よって、位置的に近いクロック素子に、近い相対遅延値を割り当てることができるため、クロックスケジューリングを少ないバッファで実現することができる。したがって、バッファの数を増加させることなく半導体集積回路のピーク電力を削減可能な半導体集積回路の設計方法を提供することができる。以下で、本実施の形態にかかる発明について詳細に説明する。
本実施の形態にかかる半導体集積回路の設計方法では、図1に示す処理を開始するまでに、クロック素子と論理ゲートとを含む半導体集積回路の配置配線設計が一旦完了しており(ただし、タイミング制約違反が存在する可能性はある)、各クロック素子の配置が確定または推定可能な状況にあるものとする。図2は、本実施の形態にかかる半導体集積回路の設計方法を実施する前におけるクロック素子の配置を示す図であり、本実施の形態における設計対象を示している。本実施の形態では、クロック素子として12個のフリップフロップ(FF1〜FF12)が配置されている場合を例に説明するが、クロック素子の数は任意に設定することができる。
図2に示すように、クロック素子FF1〜FF12は配置領域10に配置されている。また、各クロック素子FF1〜FF12は、1つ以上のクロック素子と互いに、直接、あるいは、論理ゲート群を介して、データ転送可能に接続されている。なお、各クロック素子FF1〜FF12間の接続については、図示を省略している。本実施の形態では、図1に示す半導体集積回路の設計方法を用いて、配置領域10に配置されているクロック素子FF1〜FF12に対してクロックスケジューリングを実施する。
まず、図3に示すように、配置領域10を複数の領域11〜14に分割する(ステップS1)。分割された領域11にはFF1〜FF3が含まれ、分割された領域12にはFF4〜FF6が含まれ、分割された領域13にはFF7〜FF9が含まれ、分割された領域14にはFF10〜FF12が含まれている。図3に示す例では、配置領域10を格子状に分割しているが、配置領域10を分割する際の形状はどのような形状であってもよい。
次に、複数の領域11〜14に配置されている各クロック素子FF1〜FF12間の遅延余裕度の初期値を計算する(ステップS2)。遅延余裕度(slack)の初期値は下記を用いて計算することができる。
slack(u→v)=Tcycle+I(v)−(I(u)+max(Tpd(u→v))) ・・・式1
ここで、slack(u→v)はクロック素子(u)とクロック素子(v)との間の遅延余裕度、Tcycleは供給されるクロックの周期、I(u)はクロック素子(u)に割り当てられる相対遅延値、I(v)はクロック素子(v)に割り当てられる相対遅延値、Tpd(u→v)はクロック素子(u)とクロック素子(v)との間の遅延(データ転送遅延)、max(Tpd(u→v))はTpd(u→v)の最大値である。なお、クロック素子に相対遅延を割り当てるとは、クロック供給源から出力されたクロックがクロック素子に到達するタイミングを所定時間遅らせることを意味しており、相対遅延値とはその遅延値を示している。
例えば、Tcycle=10nsec、I(u)とI(v)の初期値を0、Tpd(u→v)を8nsecとした場合、クロック素子(u)とクロック素子(v)との間の遅延余裕度の初期値は、式1よりslack(u→v)=2となる。
このようにして、互いに接続されている各クロック素子FF1〜FF12間の遅延余裕度の初期値を計算する。なお、以下に示す例では、クロックの周期Tcycle=10nsecとして説明する。
次に、各領域11〜14に相対遅延目標値を設定する(ステップS3)。ここで、相対遅延目標値とは、各領域11〜14に存在するクロック素子に割り当てられる相対遅延値の目標値である。この相対遅延目標値を設定することで、位置的に近いクロック素子に、近い相対遅延値を割り当てることができる。相対遅延目標値の初期値は、全てのクロック素子FF1〜FF12間の最大遅延余裕度をsとした時に、{−s、+s}の範囲内でランダムに割り当てることができる。図4は、各領域11〜14に相対遅延目標値(図では、目標値と記載する)を設定した一例を示す図である。図4に示すように、領域11と領域14には相対遅延目標値として+1nsecを設定し、領域12と領域13には相対遅延目標値として−1nsecを設定している。なお、図4では単位nsecを省略して示しており、以降の図とその説明においても適宜単位nsecを省略する。
次に、各領域11〜14に設定されている相対遅延目標値に近くなるように、各クロック素子FF1〜FF12に相対遅延値を割り当てる(ステップS4)。例えば、各クロック素子FF1〜FF12に割り当てられる相対遅延値として、タイミング違反を起こさない範囲で以下の式2のdn+1に近い値が割り当てられる。
n+1=d'+(t−d')×α ・・・式2
ここで、t(nは繰り返しの回数を示し、初期値はn=0とする)は属する領域に割り当てられた相対遅延目標値、d'は属する領域に配置された各クロック素子の平均相対遅延値、αは0以上のパラメータである。なお、dはクロック素子に割り当てられる相対遅延値そのものを意味し、d'は同一領域に配置されたクロック素子の相対遅延値の平均値を意味するものとする。また、各クロック素子FF1〜FF12に相対遅延値を割り当てる順序は任意である。
例えば、領域11に配置されている各クロック素子FF1〜3に相対遅延値を割り当てる場合、t=+1、d'=0(各クロック素子の相対遅延値の初期値は0であるため、平均相対遅延値も0となる)であるので、式2より、d=αとなる。よって、領域11に配置されている各クロック素子FF1〜3には、タイミング違反を起こさない範囲でd=αに近い値が割り当てられる。ここで、αは0以上のパラメータであり、換言するとdの値の範囲を決定するためのパラメータである。すなわち、αの値が大きい程、dの値の範囲が広くなる。
また、タイミング違反を起こさないように相対遅延値を割り当てる場合について、図5を用いて説明する。図5では、領域11に配置されているクロック素子FF1、領域12に配置されているクロック素子FF6、領域13に配置されているクロック素子FF8、および領域14に配置されているクロック素子FF10を例に説明する。ここで、例えばFF1→FF6→FF10→FF8の順にデータが転送され、また、FF1→FF8の順にデータが転送されるものとする。
図5(a)に示すように、初期状態においてFF1、FF6、FF8、およびFF10の相対遅延値はそれぞれ0に設定されている。また、FF1とFF6との間の遅延余裕度(slack)、FF1とFF8との間の遅延余裕度、FF6とFF10との間の遅延余裕度、FF10とFF8との間の遅延余裕度は、それぞれslack=2である。各遅延余裕度は上記の式1を用いて求めることができる。なお、この場合もTcycle=10nsecとし、各クロック素子間のデータ転送遅延をTpd=8nsecとする。
タイミング違反を起こさないように相対遅延値を割り当てるとは、各クロック素子間の遅延余裕度(slack)が0よりも小さくならないように各クロック素子に相対遅延値を割り当てることを意味する。
FF1が配置されている領域11の相対遅延目標値は+1である。よって、図5(a)におけるFF1の相対遅延値(0)は、相対遅延目標値(+1)よりも小さい。また、上記式2よりd=α(αは0以上)である。よって、図5(b)に示すように、FF1の相対遅延値としてd=+1を割り当てる。このとき、FF1とFF6との間の遅延余裕度は、式1よりslack=1となる。同様に、FF1とFF8との間の遅延余裕度は、式1よりslack=1となる。
FF6が配置されている領域12の相対遅延目標値は−1である。よって、図5(b)におけるFF6の相対遅延値(0)は、相対遅延目標値(−1)よりも大きい。また、上記式2よりd=−α(αは0以上)である。よって、図5(c)に示すように、FF6の相対遅延値としてd=−1を割り当てる。このとき、FF1とFF6との間の遅延余裕度は、式1よりslack=0となる。同様に、FF6とFF10との間の遅延余裕度は、式1よりslack=3となる。
FF10が配置されている領域14の相対遅延目標値は+1である。よって、図5(c)におけるFF10の相対遅延値(0)は、相対遅延目標値(+1)よりも小さい。また、上記式2よりd=α(αは0以上)である。よって、図5(d)に示すように、FF10の相対遅延値としてd=+1を割り当てる。このとき、FF6とFF10との間の遅延余裕度は、式1よりslack=4となる。同様に、FF10とFF8との間の遅延余裕度は、式1よりslack=1となる。
FF8が配置されている領域13の相対遅延目標値は−1である。よって、図5(d)におけるFF8の相対遅延値(0)は、相対遅延目標値(−1)よりも大きい。また、上記式2よりd=−α(αは0以上)である。よって、図5(e)に示すように、FF8の相対遅延値としてd=−1を割り当てる。このとき、FF1とFF8との間の遅延余裕度は、式1よりslack=0となる。同様に、FF10とFF8との間の遅延余裕度は、式1よりslack=0となる。
このように、(1)クロック素子が配置されている領域の相対遅延目標値に基づき、当該クロック素子に相対遅延値を割り当て、(2)クロック素子に相対遅延値を割り当てた後に、各クロック素子間の遅延余裕度(slack)を再計算し、(3)当該遅延余裕度の値に基づき相対遅延値の割り当てがタイミング違反を起こしていないか検証することで、タイミング違反を起こさないように相対遅延値を割り当てることができる。ここで、タイミング違反の検証は、例えば遅延余裕度(slack)の値が所定の値(例えば0)以上であるか判断することで検証することができる。
図6は、上記方法を用いて各領域11〜14に配置されている各クロック素子FF1〜FF12に相対遅延値を割り当てた例を示す図である。図6に示すように、各領域11〜14に配置されている各クロック素子FF1〜FF12に割り当てられた相対遅延値は、各領域11〜14に設定された相対遅延目標値に近い値となっている。
次に、各クロック素子に割り当てられた相対遅延値と、当該クロック素子が配置されている領域に設定されている相対遅延目標値との差が閾値以下であるか検証する(ステップS5)。例えば、図6の領域11に配置されたクロック素子FF1の相対遅延値はd=+1である。このとき、相対遅延目標値(+1)との差は0となり、この差が設定された閾値と比較される。また、領域11に配置されたクロック素子FF2の相対遅延値はd=+0である。このとき、相対遅延目標値(+1)との差は1となり、この差が設定された閾値と比較される。以降、同様に各クロック素子に割り当てられた相対遅延値と、当該クロック素子が配置されている領域に設定されている相対遅延目標値との差が各々、閾値と比較される。
このとき、相対遅延値として、領域内に配置された各クロック素子に割り当てられた相対遅延値の平均値を用いてもよい。例えば、図6の領域11に配置された各クロック素子の相対遅延値の平均値は、d'=0.33である。このとき、相対遅延目標値(+1)との差は0.67となり、この差と設定された閾値とを比較してもよい。
割り当てられた相対遅延値と、設定された相対遅延目標値との差が閾値以下である場合(ステップS5、Yes)は、ステップ6へ進む。一方、割り当てられた相対遅延値と、設定された相対遅延目標値との差が閾値以下でない場合(ステップS5、No)は、相対遅延目標値の設定(ステップS3)および相対遅延値の割り当て(ステップS4)を繰り返す。
ここで、閾値は任意に設定することができる。例えば、閾値を小さい値に設定すると相対遅延値と相対遅延目標値との差が小さくなり、回路設計の精度が向上する。一方、閾値を比較的大きい値に設定すると相対遅延値と相対遅延目標値との差が比較的大きくなり回路設計の精度は低下するが、相対遅延目標値の設定(ステップS3)および相対遅延値の割り当て(ステップS4)の繰り返し回数を少なくすることができる。
なお、ステップ5は、例えば、相対遅延目標値の設定(ステップS3)および相対遅延値の割り当て(ステップS4)を所定の回数繰り返したか否かを判断するステップであってもよい。このように、ステップ3とステップ4の繰り返し回数で判断することで、相対遅延目標値の設定(ステップS3)および相対遅延値の割り当て(ステップS4)の繰り返し回数を所定の回数で終了することができる。
次に、相対遅延目標値の設定(ステップS3)および相対遅延値の割り当て(ステップS4)を繰り返す場合について説明する。相対遅延目標値を再設定する場合(ステップS3)、例えば次の式3を用いて各領域の相対遅延目標値を再設定する。
n+1=t+(d'n+1×β−t)×γ ・・・式3
ここで、t(nは繰り返しの回数を示し、初期値はn=0とする)は属する領域に割り当てられた相対遅延目標値、d'n+1は属する領域に配置された各クロック素子の平均相対遅延値、βは1以上のパラメータ、γは0以上のパラメータである。
βは1以上のパラメータであり、ステップS3とステップS4の繰り返し回数が増えるにつれて1に近づく。換言すると、βはtn+1のγに対する変化量を決定するパラメータであり、βの値が大きい程、γに対するtn+1の変化量が大きくなる。また、γは0以上のパラメータであり、換言するとtn+1の値の大きさを決定するためのパラメータである。すなわち、γの値が大きい程、tn+1の値が大きくなる。
例えば、領域13の相対遅延目標値を再設定する場合、現在の相対遅延目標値はt=−1、d'=((−2)+(−1)+(−2))/3=−1.7であるので、式3より(n=0とする)、t=−1+(−1.7×β+1)×γとなる。よって、式3から求めたtの値を考慮し、領域13の相対遅延目標値を−3に再設定することができる。他の領域についても同様に式3を用いて相対遅延目標値を再設定することができる。
図7は、各領域11〜14に相対遅延目標値を再設定した一例を示す図である。図7に示すように、領域11の相対遅延目標値は+1nsecのままである。一方、領域12の相対遅延目標値は−1nsecから−2nsecに再設定されている。領域13の相対遅延目標値は−1nsecから−3nsecに再設定されている。領域14の相対遅延目標値は+1nsecから+2nsecに再設定されている。
相対遅延目標値を再設定した後、各クロック素子に相対遅延値を再度割り当てる(ステップS4)。相対遅延値を再度割り当てる方法については、上記で説明したステップS4の場合と同様であるので重複した説明は省略する。
図8は、各領域11〜14に配置されている各クロック素子FF1〜FF12に相対遅延値を再度割り当てた例を示す図である。図8に示した、各領域11〜14に配置されている各クロック素子FF1〜FF12に割り当てられた相対遅延値は、図6に示した場合よりも、各領域11〜14に設定された相対遅延目標値に近い値となっている。例えば、図8では、FF2の相対遅延値が相対遅延目標値と同一の値(+1)となっている。また、FF7〜FF9の相対遅延値が相対遅延目標値と同一の値(−3)となっている。
次に、各クロック素子の位置と各クロック素子に割り当てられた相対遅延値とに基づきクロック素子を含むクラスタを生成する(ステップS6)。図9は、クラスタ生成の一例を示す図である。図9に示すように、比較的位置が近く、且つ相対遅延値が同一のクロック素子同士がクラスタを形成している。つまり、FF1およびFF2がクラスタ21を形成し、FF4およびFF5がクラスタ22を形成し、FF3、FF6、およびFF10がクラスタ23を形成し、FF7、FF8、およびFF9がクラスタ24を形成し、FF11およびFF12がクラスタ25を形成している。
次に、ステップS6で生成されたクラスタ毎にバッファを挿入する(ステップS7)。図10は、バッファ挿入の一例を示す図である。図10に示すように、各クラスタ21〜25にバッファ31〜35がそれぞれ挿入される。クラスタにバッファを挿入する際、クラスタの重心にバッファを挿入してもよい。ここでクラスタの重心とは、例えば、クラスタを構成するクロック素子が2つの場合は、クロック素子同士を結んだ直線の中心点である。また、クラスタを構成するクロック素子が3つの場合は、3つのクロック素子を頂点とした三角形の重心である。
次に、クラスタに含まれるクロック素子に割り当てられた相対遅延値に基づく値を、クラスタに挿入されたバッファに割り当てる(ステップS8)。ここで、クラスタに含まれるクロック素子に割り当てられた相対遅延値に基づく値とは、クラスタに含まれるクロック素子に割り当てられた相対遅延値の平均値や当該平均値近傍の値である。
例えば、図10に示したクラスタ21に挿入されたバッファ31には、クラスタ21に含まれるFF1とFF2の相対遅延値の平均値であるd'=+1が割り当てられる。クラスタ22に挿入されたバッファ32には、クラスタ22に含まれるFF4とFF5の相対遅延値の平均値であるd'=−2が割り当てられる。クラスタ23に挿入されたバッファ33には、クラスタ23に含まれるFF3、FF6、およびFF10の相対遅延値の平均値であるd'=0が割り当てられる。クラスタ24に挿入されたバッファ34には、クラスタ24に含まれるFF7、FF8、およびFF9の相対遅延値の平均値であるd'=−3が割り当てられる。クラスタ25に挿入されたバッファ35には、クラスタ25に含まれるFF11とFF12の相対遅延値の平均値であるd'=+2が割り当てられる。
次に、バッファ31〜35に割り当てられた相対遅延値に基づく値を満たすようにバッファの配線を実施する(ステップS9)。図11は、バッファ31〜35の配線を実施した場合の例を示す図である。図11に示すように、クロック供給源41から供給されたクロックは、バッファ36、37、31を介してクロック素子FF1およびFF2に供給される。クロック供給源41から供給されたクロックは、バッファ36、32を介してクロック素子FF4およびFF5に供給される。クロック供給源41から供給されたクロックは、バッファ36、33を介してクロック素子FF3、FF6、およびFF10に供給される。クロック供給源41から供給されたクロックは、バッファ36、34を介してクロック素子FF7、FF8、およびFF9に供給される。クロック供給源41から供給されたクロックは、バッファ36、38、35を介してクロック素子FF11およびFF12に供給される。
図11では、バッファ31〜35の配線を実施する際に、新たにバッファ36、37、38を配置している。このように、新たにバッファ36、37、38を配置することでバッファ31〜35に到達するクロックのタイミングを調整することができ、バッファ31〜35に割り当てられた相対遅延値に基づく値を満たすようにバッファ31〜35の配線を実施することができる。なお、相対遅延値に基づく値を満たすようにバッファ31〜35の配線を実施することができる場合は、新たにバッファを配置する必要はない。
次に、各クロック素子FF1〜FF12間のデータ転送タイミングに違反がないか検証し、タイミング違反が存在する場合はバッファ31〜38のサイズを調整する(ステップ10)。なお、ステップ10は必須のステップではなく、適宜省略してもよい。
図12は、バッファサイズの調整を実施した場合の例を示す図である。図11において、例えばバッファ34の駆動能力が小さすぎるためクロック素子FF7〜FF9に供給されるクロックに遅延が生じてタイミング違反が発生していたとする。この場合、図12に示すようにバッファ34の駆動能力を強化することで、クロック素子FF7〜FF9におけるタイミング違反を解消することができる。
また、図11において、例えばバッファ35の駆動能力が大きすぎるためクロック素子FF11、FF12に供給されるクロックにタイミング違反が発生していたとする。この場合、図12に示すようにバッファ35の駆動能力を低減することで、クロック素子FF11、FF12におけるタイミング違反を解消することができる。なお、この場合はバッファ35の代わりにバッファ38の駆動能力を低減してもタイミング違反を解消することができる。
以上で説明したように、本実施の形態にかかる半導体集積回路の設計方法では、配置領域を複数の領域に分割し、領域毎に相対遅延目標値を設定し、この相対遅延目標値に近くなるように、各クロック素子に相対遅延値を割り当てている。よって、位置的に近いクロック素子に、近い相対遅延値を割り当てることができるため、クロックスケジューリングを少ないバッファで実現することができる。
特に、本実施の形態にかかる半導体集積回路の設計方法では、相対遅延目標値の設定(ステップS3)と相対遅延値の割り当て(ステップS4)を、双方の結果を参照しながら繰り返している。つまり、相対遅延目標値の設定(ステップS3)では、上記式3に示したように各クロック素子の平均相対遅延値d'n+1を参照し、相対遅延値の割り当て(ステップS4)では、上記式2に示したように相対遅延目標値tを参照している。これにより、割り当てられた相対遅延値と設定された相対遅延目標値との差が小さくなるようにクロックスケジューリングを実施することができる。
次に、本実施の形態にかかる半導体集積回路の設計装置について説明する。図13は、本実施の形態にかかる半導体集積回路の設計装置を示す図である。図13に示すように半導体集積回路の設計装置は、半導体集積回路の設計装置の設計対象となる、クロック素子と論理ゲートとを含む半導体集積回路の設計情報(チップ情報)を受け付ける半導体集積回路情報受付部51を備える。半導体集積回路情報受付部51はチップ情報記憶部50に、クロック素子と論理ゲートとを含む半導体集積回路の設計情報を出力する。チップ情報記憶部50は、半導体集積回路情報受付部51から出力されたクロック素子と論理ゲートとを含む半導体集積回路の設計情報を格納する。
本実施の形態にかかる半導体集積回路の設計装置は、チップ情報記憶部50に格納されている半導体集積回路の設計情報に対して処理を行なう下記の構成要素を備える。すなわち、本実施の形態にかかる半導体集積回路の設計装置は、配置領域を複数の領域に分割する配置領域分割部52と、複数の領域に配置されている各クロック素子間の遅延余裕度の初期値を計算する遅延余裕度計算部53と、領域毎に相対遅延目標値を設定する相対遅延目標値設定部54と、領域毎に設定されている相対遅延目標値に近くなるように、各クロック素子に相対遅延値を割り当てる相対遅延値割り当て部55と、各クロック素子の位置と各クロック素子に割り当てられた相対遅延値とに基づきクロック素子を含むクラスタを生成するクラスタ生成部56と、クラスタ毎にバッファを挿入するバッファ挿入部57と、クラスタに含まれる前記クロック素子に割り当てられた相対遅延値に基づく値を、クラスタに挿入されたバッファに割り当てるバッファ設定部58と、バッファに割り当てられた相対遅延値に基づく値を満たすようにバッファの配線を実施するバッファ配線部59と、を備える。
本実施の形態にかかる半導体集積回路の設計装置は更に、バッファの配線を実施した後に、各クロック素子間のデータ転送タイミングに違反がないか検証し、タイミング違反が存在する場合はバッファのサイズを調整するバッファサイズ調整部60を備えていてもよい。
例えば、チップ情報記憶部50としてコンピュータが備えるメモリを用いることができる。また、上記処理(図1の各ステップに示した処理)を実施するためのプログラムを、コンピュータが備えるCPUで動作させることで、上記半導体集積回路の設計装置を構成することができる。
なお、本実施の形態にかかる半導体集積回路の設計装置およびプログラムの詳細については、上記で説明した半導体集積回路の設計方法と同様であるので重複した説明は省略する。
以上で説明したように、本実施の形態にかかる発明により、バッファの数を増加させることなく半導体集積回路のピーク電力を削減可能な半導体集積回路の設計方法、設計装置、およびプログラムを提供することができる。
実施の形態2
次に、本発明の実施の形態2について説明する。図14は、本実施の形態にかかる半導体集積回路の設計方法を説明するためのフローチャートである。本実施の形態では、図14におけるステップS5'が実施の形態1(図1参照)の場合と異なる。これ以外は実施の形態1の場合と同様であるので、同一の構成要素については同一の符号を付し重複した説明は省略する。
本実施の形態にかかる半導体集積回路の設計方法では、ステップ5'において、各クロック素子に割り当てられた相対遅延値と、当該クロック素子が配置されている領域に設定されている相対遅延目標値との差が閾値以下であるか検証する。
そして、割り当てられた相対遅延値と、設定された相対遅延目標値との差が閾値以下である場合(ステップS5、Yes)は、実施の形態1と同様にステップ6へ進む。
一方、割り当てられた相対遅延値と、設定された相対遅延目標値との差が閾値以下でない場合(ステップS5、No)は、ステップS1に戻り、再度、配置領域を複数の領域に分割する。この場合、例えばステップS4で割り当てられた相対遅延値が比較的近いクロック素子同士が同一の領域に含まれるように配置領域を分割する。
また、再度配置領域を分割した後のステップS2については、最初のステップS2の処理において既に各クロック素子間の遅延余裕度の初期値が得られているので適宜省略してもよい。
その後、相対遅延目標値の設定(ステップS3)および相対遅延値の割り当て(ステップS4)を繰り返す。各ステップの詳細については、実施の形態1の場合と同様であるので重複した説明は省略する。
なお、本実施の形態にかかる半導体集積回路の設計方法と実施の形態1にかかる半導体集積回路の設計方法とを組み合わせてもよい。例えば、実施の形態1のように、割り当てられた相対遅延値と、設定された相対遅延目標値との差が閾値よりも大きく(ステップS5、No)、且つ、相対遅延目標値の設定(ステップS3)および相対遅延値の割り当て(ステップS4)の繰り返し回数が所定の回数を超えた場合に、ステップS1に戻り、再度、配置領域を複数の領域に分割してもよい。
実施の形態1において、相対遅延目標値の設定(ステップS3)および相対遅延値の割り当て(ステップS4)の繰り返し回数が所定の回数を超えていることは、割り当てられた相対遅延値が相対遅延目標値に収束していないことを意味する。この場合は、本実施の形態のように、ステップS1に戻り、再度、配置領域を複数の領域に分割し直すことで、クロック素子に割り当てられる相対遅延値を相対遅延目標値に収束させることができる。
本実施の形態にかかる発明においても、バッファの数を増加させることなく半導体集積回路のピーク電力を削減可能な半導体集積回路の設計方法、設計装置、およびプログラムを提供することができる。
以上、本発明を上記実施形態に即して説明したが、上記実施形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得る各種変形、修正、組み合わせを含むことは勿論である。
10 配置領域
11、12、13、14 領域
21、22、23、24 クラスタ
31、32、33、34、35、36、37、38 バッファ
41 クロック供給源
50 チップ情報記憶部
51 半導体集積回路情報受付部
52 配置領域分割部
53 遅延余裕度計算部
54 相対遅延目標値設定部
55 相対遅延値割り当て部
56 クラスタ生成部
57 バッファ挿入部
58 バッファ設定部
59 バッファ配線部
60 バッファサイズ調整部

Claims (17)

  1. 配置領域を複数の領域に分割し、
    前記複数の領域に配置されている各クロック素子間の遅延余裕度の初期値を計算し、
    前記領域毎に相対遅延目標値を設定し、
    前記領域毎に設定されている前記相対遅延目標値に近くなるように、前記各クロック素子に相対遅延値を割り当て、
    前記各クロック素子の位置と前記各クロック素子に割り当てられた前記相対遅延値とに基づき前記クロック素子を含むクラスタを生成し、
    前記クラスタ毎にバッファを挿入し、
    前記クラスタに含まれる前記クロック素子に割り当てられた前記相対遅延値に基づく値を、前記クラスタに挿入された前記バッファに割り当て、
    前記バッファに割り当てられた前記相対遅延値に基づく値を満たすように前記バッファの配線を実施する、
    半導体集積回路の設計方法。
  2. 前記各クロック素子に割り当てられた相対遅延値と、当該クロック素子が配置されている領域に設定されている相対遅延目標値との差が閾値以下となるまで、前記相対遅延目標値の設定および前記相対遅延値の割り当てを繰り返す、請求項1に記載の半導体集積回路の設計方法。
  3. 前記各クロック素子に割り当てられた相対遅延値と、当該クロック素子が配置されている領域に設定されている相対遅延目標値との差が前記閾値よりも大きく、且つ前記相対遅延目標値の設定および前記相対遅延値の割り当ての繰り返し回数が所定の回数を超えた場合、再度、前記配置領域を複数の領域に分割する、請求項2に記載の半導体集積回路の設計方法。
  4. 前記相対遅延目標値の設定および前記相対遅延値の割り当てを所定の回数繰り返す、請求項1に記載の半導体集積回路の設計方法。
  5. 前記相対遅延値を割り当てる際に、タイミング違反を起こさない範囲で、dn+1=d'+(t−d')×α(ここで、t(nは繰り返しの回数を示し、初期値はn=0とする)は前記領域に割り当てられた相対遅延目標値、d'は前記領域に配置された各クロック素子の平均相対遅延値、αは0以上のパラメータである)の式で算出されるdn+1に近い値を割り当てる、請求項1乃至4のいずれか一項に記載の半導体集積回路の設計方法。
  6. 前記相対遅延目標値を再設定する際に、tn+1=t+(d'n+1×β−t)×γ(ここで、t(nは繰り返しの回数を示し、初期値はn=0とする)は前記領域に割り当てられた相対遅延目標値、d'n+1は前記領域に配置された各クロック素子の平均相対遅延値、βは1以上のパラメータ、γは0以上のパラメータである)の式で算出された値を前記相対遅延目標値として再設定する、請求項1乃至5のいずれか一項に記載の半導体集積回路の設計方法。
  7. 前記相対遅延値を割り当てる際に、
    前記クロック素子が配置されている前記領域の前記相対遅延目標値に基づき、当該クロック素子に相対遅延値を割り当て、
    前記クロック素子に前記相対遅延値を割り当てた後に、各クロック素子間の遅延余裕度を再計算し、
    当該遅延余裕度の値に基づき前記相対遅延値の割り当てがタイミング違反を起こしていないか検証する、
    請求項1乃至6のいずれか一項に記載の半導体集積回路の設計方法。
  8. 前記タイミング違反の検証は、前記再計算された遅延余裕度の値が所定の値以上であるか検証することで実施される、請求項7に記載の半導体集積回路の設計方法。
  9. 前記クラスタ毎にバッファを挿入する際、前記各クラスタの重心にバッファを挿入する、請求項1乃至8のいずれか一項に記載の半導体集積回路の設計方法。
  10. 前記バッファに、前記相対遅延値に基づく値として、前記クラスタに含まれる前記クロック素子に割り当てられた前記相対遅延値の平均値を割り当てる、請求項1乃至9のいずれか一項に記載の半導体集積回路の設計方法。
  11. 前記バッファの配線を実施する際に、前記バッファに割り当てられた前記相対遅延値に基づく値を満たすように新たにバッファを挿入する、請求項1乃至10のいずれか一項に記載の半導体集積回路の設計方法。
  12. 前記バッファの配線を実施した後に、前記各クロック素子間のデータ転送タイミングに違反がないか検証し、タイミング違反が存在する場合は前記バッファのサイズを調整する、請求項1乃至11のいずれか一項に記載の半導体集積回路の設計方法。
  13. 配置領域を複数の領域に分割する配置領域分割部と、
    前記複数の領域に配置されている各クロック素子間の遅延余裕度の初期値を計算する遅延余裕度計算部と、
    前記領域毎に相対遅延目標値を設定する相対遅延目標値設定部と、
    前記領域毎に設定されている前記相対遅延目標値に近くなるように、前記各クロック素子に相対遅延値を割り当てる相対遅延値割り当て部と、
    前記各クロック素子の位置と前記各クロック素子に割り当てられた前記相対遅延値とに基づき前記クロック素子を含むクラスタを生成するクラスタ生成部と、
    前記クラスタ毎にバッファを挿入するバッファ挿入部と、
    前記クラスタに含まれる前記クロック素子に割り当てられた前記相対遅延値に基づく値を、前記クラスタに挿入された前記バッファに割り当てるバッファ設定部と、
    前記バッファに割り当てられた前記相対遅延値に基づく値を満たすように前記バッファの配線を実施するバッファ配線部と、
    を備える半導体集積回路の設計装置。
  14. 前記半導体集積回路の設計装置の設計対象となる、クロック素子と論理ゲートとを含む半導体集積回路の設計情報を受け付ける半導体集積回路情報受付部を更に備える、請求項13に記載の半導体集積回路の設計装置。
  15. 前記バッファの配線を実施した後に、前記各クロック素子間のデータ転送タイミングに違反がないか検証し、タイミング違反が存在する場合は前記バッファのサイズを調整するバッファサイズ調整部を更に備える、請求項13または14に記載の半導体集積回路の設計装置。
  16. 配置領域を複数の領域に分割し、
    前記複数の領域に配置されている各クロック素子間の遅延余裕度の初期値を計算し、
    前記領域毎に相対遅延目標値を設定し、
    前記領域毎に設定されている前記相対遅延目標値に近くなるように、前記各クロック素子に相対遅延値を割り当て、
    前記各クロック素子の位置と前記各クロック素子に割り当てられた前記相対遅延値とに基づき前記クロック素子を含むクラスタを生成し、
    前記クラスタ毎にバッファを挿入し、
    前記クラスタに含まれる前記クロック素子に割り当てられた前記相対遅延値に基づく値を、前記クラスタに挿入された前記バッファに割り当て、
    前記バッファに割り当てられた前記相対遅延値に基づく値を満たすように前記バッファの配線を実施する、処理をコンピュータに実行させるための半導体集積回路の設計プログラム。
  17. 前記バッファの配線を実施した後に、前記各クロック素子間のデータ転送タイミングに違反がないか検証し、タイミング違反が存在する場合は前記バッファのサイズを調整する、請求項16に記載の半導体集積回路の設計プログラム。
JP2011020434A 2011-02-02 2011-02-02 半導体集積回路の設計方法、設計装置、およびプログラム Withdrawn JP2012160100A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011020434A JP2012160100A (ja) 2011-02-02 2011-02-02 半導体集積回路の設計方法、設計装置、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011020434A JP2012160100A (ja) 2011-02-02 2011-02-02 半導体集積回路の設計方法、設計装置、およびプログラム

Publications (1)

Publication Number Publication Date
JP2012160100A true JP2012160100A (ja) 2012-08-23

Family

ID=46840561

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011020434A Withdrawn JP2012160100A (ja) 2011-02-02 2011-02-02 半導体集積回路の設計方法、設計装置、およびプログラム

Country Status (1)

Country Link
JP (1) JP2012160100A (ja)

Similar Documents

Publication Publication Date Title
US8661374B2 (en) Placement aware clock gate cloning and fanout optimization
US11480993B2 (en) Methods for optimizing circuit performance via configurable clock skews
US8572542B2 (en) Clock-tree structure and method for synthesizing the same
KR102413712B1 (ko) 클록 신호의 레이턴시를 조정하기 위한 방법, 장치, 및 프로그램
US7039891B2 (en) Method of clock driven cell placement and clock tree synthesis for integrated circuit design
JP4719265B2 (ja) 確率的相互接続構造設計のためのシステムおよび方法
US9922157B1 (en) Sector-based clock routing methods and apparatus
US8635568B2 (en) Semiconductor device and designing method of the same
US7917882B2 (en) Automated digital circuit design tool that reduces or eliminates adverse timing constraints due to an inherent clock signal skew, and applications thereof
CN103793483B (zh) 基于时钟节点结群的时钟树生成方法和系统
CN105009076B (zh) 在运行时的软件流水线
TWI797453B (zh) 為積體電路構建階層式時脈樹的方法
CN104268352B (zh) 一种fpga实现中时钟歪斜的快速修复方法
JP2012160100A (ja) 半導体集積回路の設計方法、設計装置、およびプログラム
US20120216166A1 (en) Layout method of semiconductor integrated circuit and program therefor
Joo et al. Managing clock skews in clock trees with local clock skew requirements using adjustable delay buffers
CN117350235A (zh) 降低时钟网络功耗的布线方法、计算机设备及存储介质
Park et al. Mixed allocation of adjustable delay buffers combined with buffer sizing in clock tree synthesis of multiple power mode designs
Wu et al. Asynchronous circuit placement by lagrangian relaxation
US8443327B2 (en) Reassembling scattered logic blocks in integrated circuits
CN110658885B (zh) 时钟树合成方法
Pentapati et al. Tier partitioning and flip-flop relocation methods for clock trees in monolithic 3d ics
JP2004022864A (ja) ツリー構造型回路生成方法およびツリー構造型回路生成プログラム
CN121168368B (zh) 一种时钟树综合的方法、计算机可读存储介质
Liu et al. Incremental layer assignment for timing optimization

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20140513