半導体設計装置
【課題】セットアップ違反やホールド違反を発生させずに、電力を消費するタイミングを分散させることができる半導体設計装置を提供する。
【解決手段】STA部5は、フリップフロップのクロックレイテンシの現在の設計値に基づいて、フリップフロップのセットアップ時間のマージンであるセットアップスラックを算出する。HSLD部6は、算出したセットアップスラックに基づいて、タイミング違反を起こさない範囲で、フリップフロップのクロックレイテンシを現在の設計値よりも早める方向に調整する。PAS部7は、HSLD部6によるレイテンシ制御の結果、クロックレイテンシ分布においてシンク数に閾値以上のピークが残る場合、HSLD部6による再計算後のタイミング情報により、タイミング違反を起こさない範囲で、フリップフロップのクロックレイテンシをスムージングする。
【解決手段】STA部5は、フリップフロップのクロックレイテンシの現在の設計値に基づいて、フリップフロップのセットアップ時間のマージンであるセットアップスラックを算出する。HSLD部6は、算出したセットアップスラックに基づいて、タイミング違反を起こさない範囲で、フリップフロップのクロックレイテンシを現在の設計値よりも早める方向に調整する。PAS部7は、HSLD部6によるレイテンシ制御の結果、クロックレイテンシ分布においてシンク数に閾値以上のピークが残る場合、HSLD部6による再計算後のタイミング情報により、タイミング違反を起こさない範囲で、フリップフロップのクロックレイテンシをスムージングする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体設計装置に関する。
【背景技術】
【0002】
近年のLSI(large-scale integration)設計は同期設計が主流である。同期設計ではすべてのレジスタがフリップフロップで構成され、クロックに同期して動作する。高速化のため、各フリップフロップに供給されるクロックはスキューが抑えられており、同位相で供給されるため、クロックの立ち上がりエッジおよび立下りエッジに電力消費が集中する。電力消費の集中によって、電源のダイナミックドロップやEMI(Electro Magnetic Interference)ノイズの増大を引き起こし、チップの信頼性を低下させるという問題があった。
【0003】
このような問題に対して、たとえば、特許文献1(特開2004−192201号公報)に記載されている装置では、クロックを遅延する複数の遅延回路の異なるノードから、複数のクロックのうちの1つを選択するセレクタを介してフリップフロップへクロックを出力する。セレクタの選択は擬似乱数で制御することによって、電力消費のタイミングを分散させることができる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2004−192201号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1の装置は、フリップフロップへ供給されるクロックは擬似乱数によって選択するものであり、擬似乱数発生のための面積オーバーヘッドが大きく、かつ、十分なクロック分散ができない。
【0006】
それゆえに、本発明の目的は、セットアップ違反やホールド違反を発生させずに、電力を消費するタイミングを分散させることができる半導体設計装置を提供することである。
【課題を解決するための手段】
【0007】
本発明の一実施形態は、論理合成によって設計されたフリップフロップのクロックレイテンシを調整する半導体設計装置である。この半導体設計装置は、フリップフロップのクロックレイテンシの現在の設計値に基づいて、フリップフロップのセットアップ時間のマージンであるセットアップスラックを算出するスラック解析部と、算出したセットアップスラックに基づいて、タイミング違反を起こさない範囲で、フリップフロップのクロックレイテンシを現在の設計値よりも早める方向に調整する第1のクロックレイテンシ調整部とを備える。
【発明の効果】
【0008】
本発明の一実施形態によれば、セットアップ違反やホールド違反を発生させずに、電力を消費するタイミングを分散させることができる。
【図面の簡単な説明】
【0009】
【図1】第1の実施の形態の半導体集積回路の半導体設計装置の構成を表わす図である。
【図2】セットアップスラックSSおよびホールドスラックHSを説明するための図である。
【図3】第1の実施形態の半導体設計装置による設計手順を表わすフローチャートである。
【図4】図3のステップS903の処理手順を表わすフローチャートである。
【図5】図3のステップS904のHSLDの処理手順を表わすフローチャートである。
【図6】HSLDを適用前のクロックレイテンシの例を表わす図である。
【図7】前段のクロックの位相をセットアップスラック分だけ遅らせる手法でのクロック位相の例を表わす図である。
【図8】本実施の形態のHSLDを適用後のクロック位相の例を表わす図である。
【図9】本実施の形態の性能を評価するために用いたデザインの例を説明するための図である。
【図10】本実施の形態のHSLDを適用した場合の電力消費と、HSLDを適用しない従来の場合の電力消費とを比較した図である。
【図11】従来手法で生成されるクロックツリーの例を表わす図である。
【図12】図11のクロックツリーに基づくタイミングチャートを表わす図である。
【図13】本実施の形態で生成されるクロックツリーの例を表わす図である。
【図14】図13のクロックツリーに基づくタイミングチャートを表わす図である。
【図15】図9のDesign2について、本実施の形態のHSLDを適用した場合の電力消費と、HSLDを適用しない従来の場合の電力消費とを比較した図である。
【図16】HSLDを適用前のクロックレイテンシDCの頻度分布(ヒストグラム)を表わす図である。
【図17】HSLDを適用後のクロックレイテンシDCの頻度分布(ヒストグラム)を表わす図である。
【図18】HSLD適用後にセットアップスラックが残存している例を表わす図である。
【図19】図17のピークP1に対するHSLD後のセットアップスラックSSの頻度分布を表わす図である。
【図20】第2の実施の形態の半導体設計装置の構成を表わす図である。
【図21】第2の実施形態の半導体設計装置による設計手順を表わすフローチャートである。
【図22】図21のステップS202のPASの処理手順を表わすフローチャートである。
【図23】図9に示すDesign2について、第1の実施形態のHSLDを適用した場合の電力消費と、第1の実施形態のHSLDに加えて第2の実施形態のPASを適用した場合の電力消費と、HSLDを適用しない従来の場合の電力消費とを比較した図である。
【発明を実施するための形態】
【0010】
以下、本発明の実施形態について図面を参照して説明する。
[第1の実施形態]
本発明の第1の実施形態は、タイミング解析手法によって、スラック(データパス遅延に対するクロックレイテンシのタイミング余裕)を算出し、算出したスラックに基づいてタイミング違反を発生させない範囲で各フリップフロップ(Dラッチ)に供給されるクロック位相を分散させることによって、電力を消費するタイミングを分散させる。
【0011】
(半導体設計装置の構成)
図1は、第1の実施の形態の半導体設計装置の構成を表わす図である。
【0012】
図1を参照して、この半導体設計装置1は、論理合成部2と、レイアウト設計部3と、設計データ記憶部4と、STA(Static Timing Analysis)部と、HSLD(Hold-driven Slack-based Latency Distribution)部6とを備える。
【0013】
論理合成部2は、クロックツリーに関する初期ネットリストを生成して、設計データ記憶部4に記憶する。
【0014】
レイアウト設計部3は、ネットリストに基づいて、初期レイアウトデータを生成して設計データ記憶部4に記憶する。また、レイアウト設計部3は、更新されたネットリストに基づいて、レイアウトデータを更新して設計データ記憶部4に記憶する。また、レイアウト設計部3は、HSLD部6によって新たに算出されたクロックレイテンシに基づいて、クロックツリーを再構築し、ネットリストを更新する。
【0015】
設計データ記憶部4は、論理合成部2で作成されたネットリストと、レイアウト設計部3で作成されたレイアウトデータを記憶する。
【0016】
STA部5は、設計データ記憶部4に記憶されているデータパス遅延と、初期クロックレイテンシと、セットアップ制約と、ホールド制約に基づいて、セットアップスラックSSおよびホールドスラックHSを算出する。
【0017】
ここで、データパス遅延とは、フリップフロップへのデータパスでのデータの伝送遅延であり、以下の3通りがある。
【0018】
(1) プライマリ入力から初段のフリップフロップFFのデータ入力ピンまでのデータパス遅延、
(2) フリップフロップFF間(FFへのクロックが立ち上がって(または立ち下って)からフリップフロップFFのデータ出力ピンを経由して次段のフリップフロップFFのデータ入力ピンまで)のデータパス遅延、
(3) フリップフロップFFへのクロックが立ち上がって(または立ち下って)からプライマリ出力(出力ピン)までのデータパス遅延。
【0019】
クロックレイテンシとは、クロックツリーの起点(origin)からクロックCLKが、クロックパスを経て、フリップフロップFFへ入力されるまでの時間である。
【0020】
フリップフロップFiのセットアップ制約とは、フリップフロップFiに入力されるデータが、フリップフロップFiに入力されるクロックCLKよりもどれだけ早く到達しておかなければならないかを示す値である。
【0021】
フリップフロップFiのホールド制約とは、フリップフロップFiにクロックCLKが入力された後、フリップフロップFiに入力されるデータがどれだけの時間、値を維持しておかなければならないかを示す値である。
【0022】
ここで、セットアップスラックSSとは、セットアップ制約で規定されたタイミングに対するマージン値である。フリップフロップFiのセットアップスラックSSiが正の場合には、フリップフロップFiに入力されるデータのデータパス遅延とフリップフロップFiのクロックレイテンシのタイミング関係は、セットアップ制約のタイミング条件を満たしている。そして、最大でセットアップスラックSSiだけフリップフロップFiに入力されるクロックCLKの位相を早くしたとしても、フリップフロップFiに入力されるデータのデータパス遅延とクロックレイテンシのタイミング関係は、セットアップ制約のタイミング条件を満たしている。一方、セットアップスラックSSiが負の場合には、フリップフロップFiに入力されるデータのデータパス遅延とフリップフロップFiのクロックレイテンシのタイミング関係は、セットアップ制約のタイミング条件を満たしていない(セットアップ違反)。
【0023】
ホールドスラックHSとは、ホールド制約で規定されたタイミングに対するマージン値である。フリップフロップFiのホールドスラックHSiが正の場合には、フリップフロップFiに入力されるデータとフリップフロップFiのクロックレイテンシのタイミング関係は、ホールド制約のタイミング条件を満たしている。そして、最大でホールドスラックHSiだけフリップフロップFiに入力されるクロックCLKの位相を遅くしたとしても、フリップフロップFiに入力されるデータとフリップフロップFiのクロックレイテンシのタイミング関係は、ホールド制約のタイミング条件を満たしている。一方、ホールドスラックHSiが負の場合には、フリップフロップFiに入力されるデータとフリップフロップFiのクロックレイテンシのタイミング関係は、ホールド制約のタイミング条件を満たしていない(ホールド違反)。
【0024】
図2は、セットアップスラックSSおよびホールドスラックHSを説明するための図である。
【0025】
ここでは、フリップフロップFi、Fj、Fkがシリアルに接続されていると仮定する。クロックCLKの周期Pとする。
【0026】
フリップフロップFi、Fj、FkのクロックレイテンシをDCi、DCj、DCkとする。
フリップフロップFjへの最大のデータパス遅延をmax(DLj)、最小のデータパス遅延をmin(DLj)とする。フリップフロップFkへの最大のデータパス遅延をmax(DLk)、最小のデータパス遅延をmin(DLk)とする。
【0027】
フリップフロップFjのセットアップ制約およびホールド制約をそれぞれTSj、THjとする。フリップフロップFkのセットアップ制約およびホールド制約をそれぞれTSk、THkとする。
【0028】
フリップフロップFjおよびFkのセットアップスラックSSj、SSkおよびホールドスラックHSj、HSkは下記の式で表すことができる。
【0029】
SSj=P−DCi−max(DLj)−TSj+DCj ・・・(1)
HSj=DCi+min(DLj)−DCj−THj (2)
SSk=P−DCj−max(DLk)−TSk+DCk (3)
HSk=DCj+min(DLk)−DCk−THk (4)
したがって、STA部5は、図2の場合には、式(1)〜(4)に従って、セットアップスラックSSj、SSk、およびホールドスラックHSj、HSkを算出する。
【0030】
(HSLD)
HSLD部6は、STA部5で算出したセットアップスラックとホールドスラックに基づいて、フリップフロップのクロックレイテンシを調整する。HSLD部6は、フリップフロップのクロックレインテンシを調整するときには、そのフリップフロップのセットアップスラックとそのフリップフロップの後段のフリップフロップのホールドスラックに基づいて、セットアップ違反およびホールド違反を起こさない範囲で、そのフリップフロップのクロックレイテンシを現在の設計値よりも早める方向に調整する。HSLD部6の詳細な処理内容については後述する。
【0031】
(動作手順)
図3は、第1の実施形態の半導体設計装置による設計手順を表わすフローチャートである。
【0032】
まず、論理合成部2は、フリップフロップと組合せ回路で構成するRTL(Register Transfer Level)記述から、クロックソースから末端の回路素子群までのクロックツリーに関する初期ネットリスト(初期クロックレイテンシ、セットアップ制約、ホールド制約、およびデータパス遅延のデータを含む)を生成して、設計データ記憶部4に記憶する(ステップS901)。
【0033】
次に、レイアウト設計部3は、ネットリストに基づいて、各ゲートを隙間無く並べ(Place)、ゲートの端子と端子を接続する(Route)ことによって、初期レイアウトデータを生成して設計データ記憶部4に記憶する(ステップS902)。
【0034】
次に、STA部5は、初期ネットリストに含まれるデータを利用して、フリップフロップFFのセットアップスラックとホールドスラックを算出する(ステップS903)。
【0035】
次に、HSLD部6は、ステップS903で算出されたセットアップスラックとホールドスラックに基づいて、各フリップフロップFFに対する新たなクロックレイテンシを算出する(ステップS904)。
【0036】
次に、レイアウト設計部3は、新たに算出されたクロックレイテンシに基づいて、ステップS901で生成されたクロックツリーを、スキュー付きのクロックツリーに再構築することによってネットリストを更新する(ステップS905)。
【0037】
さらに、レイアウト設計部3は、更新されたネットリストに基づいて、レイアウトデータを更新して設計データ記憶部4に記憶する(ステップS906)。
【0038】
(STAの手順)
図4は、図3のステップS903のセットアップスラックおよびホールドスラックの算出処理の手順を表わす図である。
【0039】
図4を参照して、まず、STA部5は、ネットリスト内のすべてのフリップフロップ(N個あるとする)を任意の順序に番号を付ける(ステップS301)。
【0040】
次に、STA部5は、変数iを「1」に設定する(ステップS302)。
次に、STA部5は、次の式に従って、第i番目のフリップフロップFiのセットアップスラックSSiを算出する。
【0041】
SSi=P−DCp(i)−max(DLi)−TSi+DCi ・・・(5)
ここで、PはクロックCLKの周期である。max(DLi)は、フリップフロップFiへの最大のデータパス遅延である。TSiはフリップフロップFiのセットアップ制約である。DCiはフリップフロップFiの初期クロックレイテンシである。DCp(i)は、フリップフロップFiへデータを出力する1つ前段のフリップフロップFp(i)の初期クロックレイテンシである。ただし、フリップフロップFiが他のフリップフロップからデータを受けない場合(つまり、プライマリ入力からデータを受ける場合)には、STA部5は、DCp(i)を「0」として式(5)を計算する(ステップS303)。
【0042】
次に、STA部5は、次の式に従って、第i番目のフリップフロップのホールドスラックHSiを算出する。
【0043】
HSi=DCp(i)+min(DLi)−DCi−THi ・・・(6)
ここで、min(DLi)は、フリップフロップFiへの最小のデータパス遅延である。THiはフリップフロップFiのホールド制約である。DCiはフリップフロップFiの初期クロックレイテンシである。DCp(i)は、フリップフロップFiへデータを出力する1つ前段のフリップフロップFp(i)の初期クロックレイテンシである。ただし、フリップフロップFiが他のフリップフロップからデータを受けない場合(つまり、プライマリ入力からデータを受ける場合)には、STA部5は、DCp(i)を「0」として式(6)を計算する(ステップS304)。
【0044】
STA部5は、iがNでない場合には(ステップS305でNO)、iを1だけインクリメントして(ステップS306)、ステップS303からの処理を繰り返す。STA部5は、iがNの場合には(ステップS305でYES)、処理を終了する。
【0045】
(HSLDの手順)
図5は、図3のステップS904のHSLDの処理手順を表わすフローチャートである。
【0046】
図5を参照して、HSLD部6は、ネットリスト内のすべてのフリップフロップ(N個とする)をそれらのセットアップスラックSSが大きい方から順番に順序づける。ここでは、j=1〜Nの順番が付けられたとする(ステップS102)。
【0047】
次に、HSLD部6は、変数jを1に設定する(ステップS103)。
次に、HSLD部6は、ステップS102で順序付けられた第j番目のフリップフロップF(Ft(j)とする)を特定し、フリップフロップFt(j)のセットアップスラックSSt(j)を特定する。ここでは、たとえば、j=1のときに、第1番目のフリップフロップがF5の場合には、セットアップスラックSS5が特定されることになる(ステップS104)。
【0048】
次に、HSLD部6は、フリップフロップFt(j)からデータを受ける1段後ろのフリップフロップ(フリップフロップFt(j)の後段のフリップフロップ)を選択する。ここでは、M(j)個のフリップフロップが選択されたとする。HSLD部6は、選択したM(j)個のフリップフロップのホールドスラックの中の最小値HS_MN(j)を特定する。これは、フリップフロップFt(j)のクロックレイテンシを早くすることによって、フリップフロップFt(j)の後段のフリップフロップのうち、最もホールド違反が生じやすいものを特定するためである。ここでは、たとえば、最小値HS_MN(j)としてHS9が特定されたとする。なお、HSLD部6は、フリップフロップFt(j)の後段のフリップフロップが存在しない場合には、最小値HS_MN(j)として十分に大きな値に設定する(ステップS105)。
【0049】
次に、HSLD部6は、セットアップスラックSSt(j)とホールドスラックHS_MN(j)のうちの小さい方をマージンMt(j)として特定する。つまり、セットアップスラックSSt(j)がホールドスラックの最小値HS_MN(j)よりも小さいときには、セットアップスラックSSt(j)だけクロックレイテンシDCt(j)を早めても、後段のフリップフロップにおいて、ホールド違反が生じないからマージンMt(j)をSSt(j)にする。一方、セットアップスラックSSt(j)がホールドスラックの最小値HS_MN(j)よりも大きいときには、セットアップスラックSSt(j)だけクロックレイテンシDCt(j)を早めると、後段のフリップフロップにおいて、ホールド違反が生じる。したがって、HSLD部6は、マージンMt(j)を後段のフリップフロップにおいてホールド違反が生じない限界値であるHS_MN(j)とする。たとえば、SS5<HS9の場合には、SS5がM5として特定される。このようにセットアップ違反およびホールド違反が生じない範囲でマージン(クロックレイテンシを早める量)を最大にとることにしたのは、このようにすることでクロックレイテンシが分散されやすいからである(ステップS106)。
【0050】
次に、HSLD部6は、セットアップスラックおよびホールドスラックを再計算する。すなわち、HSLD部6は、フリップフロップFt(j)のセットアップスラックSSt(j)を現在の値からMt(j)だけ減算した値に更新する。HSLD部6は、フリップフロップFt(j)のホールドスラックHSt(j)を現在の値からMt(j)だけ加算した値に更新する。HSLD部6は、フリップフロップFt(j)の後段のM(j)個のフリップフロップのセットアップスラックSSを現在の値からMt(j)だけ加算した値に更新する。HSLD部6は、フリップフロップFt(j)の後段のM(j)個のフリップフロップのホールドスラックHSを現在の値からMt(j)だけ減算した値に更新する(ステップS107)。
【0051】
HSLD部6は、jがNでない場合(ステップS108でNO)、jを1だけインクリメントして(ステップS109)、ステップS104からの処理を繰り返す。HSLD部6は、jがNの場合(ステップS108でYES)、マージンMt(1)〜Mt(L)の中の最大値を最大クロックレイテンシMAX_CLとして特定する(ステップS110)。
【0052】
次に、HSLD部6は、変数jを1に設定する(ステップS110)。
次に、HSLD部6は、最大クロックレイテンシMAX_CLからマージンMt(j)を減算することによって相対クロックレイテンシDCt(j)′を算出する。このように相対クロックレイテンシを求めることで、その後のクロックツリーの作成、およびクロックツリーに基づく遅延素子の配置設計がより容易になる(ステップS112)。
【0053】
HSLD部6は、jがNでない場合(ステップS113でNO)、jを1だけインクリメントして(ステップS114)、ステップS112からの処理を繰り返す。HSLD部6は、jがNの場合(ステップS113でYES)、処理を終了する。
【0054】
なお、上記のステップS107のセットアップスラックSSおよびホールドスラックHSの再計算は、オプショナルであり、論理合成部2で作成された初期のクロックレイテンシの分散具合によっては、実行しなくてもよい場合がある。
【0055】
(処理結果の例1)
図6は、HSLDを適用前のクロックレイテンシの例を表わす図である。
【0056】
図6を参照して、この例は、5つのフリップフロップF1〜F5のクロックレイテンシを表わす。
【0057】
各フリップフロップF1〜F5をタイミングエンドポイントとした時のセットアップスラック値が示されている。ここでは、周期を「10ns」、フリップフロップF1〜F5内の伝播遅延やタイミングチェック値、クロックスキューを「0ns」と仮定している。
【0058】
HSLD適用前の設計では、各フリップフロップF1〜F5のクロック端子へ位相ばらつきを抑えたクロック信号を供給するため、クロックツリーの起点(origin)に「5ns」の遅延素子を配置して、この遅延素子からの信号が各フリップフロップF1〜F5へ供給される。
【0059】
ここで、ピーク電力を低減するためには、図6に示されているセットアップスラック分だけタイミングに余裕があることを考慮して、前段のフリップフロップへのクロックの位相をセットアップスラック分だけ遅らせる方法が考えられる。
【0060】
図7は、前段のクロックの位相をセットアップスラック分だけ遅らせる手法でのクロック位相の例を表わす図である。本事例にHSLDを適用した場合には、F3→F5→F2→F4→F1の順に評価される。この評価順はそれぞれのクロックレイテンシ決定後の再計算後も変わらない。
【0061】
図7に示すように、フリップフロップF2、F3、F4、F5のセットアップスラックSSは、それぞれ「2ns」、「6ns」、「1ns」、「3ns」であるから、フリップフロップF1、F2、F3、F4へのクロックの位相をそれぞれ「2ns」、「6ns」、「1ns」、「3ns」遅らせている。
【0062】
しかしながら、たとえば、フリップフロップF2をタイミングのスタートポイントとするタイミングパスはF3だけとは限らない。フリップフロップF3のセットアップスラック「6ns」を利用して、フリップフロップF2のクロック位相を「6ns」遅らせた場合に、もし、フリップフロップF3がフリップフロップF2以外にもタイミングスタートポイントを持っていれば、フリップフロップF3のセットアップスラックは「0ns」にはならないどころか、フリップフロップF2を「6ns」遅らせたために、別のエンドポイントがタイミング違反となってしまう。つまり、あるフリップフロップFFをエンドポイントとするセットアップスラックを利用して、そのフリップフロップFFに関連する別のフリップフロップFFのクロックレイテンシを調整することは困難である。
【0063】
これに対して、本実施の形態では、ピーク電力を低減するために、セットアップスラックを有するフリップフロップの前段のフリップフロップへのクロックの位相をセットアップスラック分遅らせるのではなく、セットアップスラックを有するフリップフロップ自体のクロックの位相を早めるものである。
【0064】
図8は、本実施の形態のHSLDを適用後のクロック位相の例を表わす図である。
図8では、図5のステップS106において、セットアップスラックSSt(j)がホールドスラックの最小値HS_MN(j)よりも小さい場合を想定したものである。
【0065】
また、図5のステップS107のセットアップスラックSSおよびホールドスラックHSの再計算は実行していない。
【0066】
図6より、最大クロックレイテンシMAX_CLは「6ns」である。これから、各セットアップスラック値減算することで、フリップフロップF1、F2、F3、F4、F5への相対クロックレイテンシは、それぞれ「6ns」、「4ns」、「0ns」、「5ns」、「3ns」となる。
【0067】
本実施の形態では、このようにして求めた相対クロックレイテンシをクロックパスに割り当てる。図6に示すように、フリップフロップF1、F2、F3、F4へのクロックパスには、それぞれ、「6ns」、「4ns」、「0ns」、「5ns」の遅延素子が設けられる。
【0068】
(性能評価)
図9は、本実施の形態の性能を評価するために用いたデザインの例を説明するための図である。
【0069】
ここで、各デザインともパス数は8本とし、横軸はデータパス遅延[ns]とし、縦軸は当該データパス遅延を持つデータパス数とする。
【0070】
Design1〜Design3は、次のようなタイミング分布をもつデザインであると仮定する。
【0071】
Design1では、データパス遅延が「4〜5ns」、「5〜6ns」、「6〜7ns」、「7〜8ns」のデータパス数は、それぞれ1本である。データパス遅延が「8〜9ns」、「9〜10ns」のデータパス数がそれぞれ2本である。
【0072】
Design2では、8本のデータパスの全てのデータパス遅延が「7〜8ns」に集中している。
【0073】
Design3では、8本のデータバスの全てのパス遅延が「9〜10ns」に集中している。
【0074】
図10は、Design1について、本実施の形態のHSLDを適用した場合の電力消費と、HSLDを適用しない従来の場合の電力消費とを比較した図である。
【0075】
図10において、横軸が時間、縦軸が各時間当たりの消費電力を表わす。また、実線がHSLDを適用しない場合(従来手法)の電力消費、破線がHSLDを適用した場合(第1の実施の形態手法)の電力消費である。
【0076】
図10に示すように、従来手法では、ピーク電力が「12」であるのに対して、第1の実施の形態手法では、ピーク電力が「5.8」に抑えられている。つまり、本実施の形態手法では、従来手法よりも、ピーク電力を「52%」削減できている。
【0077】
この理由は、本実施の形態では、各フリップフロップFFへ到達するクロックの位相をセットアップスラックおよびホールドスラックに応じて可変にしているので、電力消費が分散されたからである。
【0078】
本実施の形態では、このようにピーク電力を低減することができるので、IRドロップやEMI等のノイズを低減することができ、製品の信頼性を向上させることができる。
【0079】
(処理結果の例2)
次に、上記の手法を用いることで、副次的に得られる効果について記載する。
【0080】
図11は、従来手法で生成されるクロックツリーの例を表わす図である。
従来手法では、各フリップフロップFFのクロック端子にクロックツリーが施されていることが多い。ここでクロックツリーのスキューは「0」と仮定し、その「0」を満足し、かつファンアウト分割を実現するためにクロックは「1ns」のレイテンシを要すると仮定する。
【0081】
図12は、図11のクロックツリーに基づくタイミングチャートを表わす図である。
図12に示すように、フリップフロップF2からフリップフロップF3へのデータパス遅延は「11ns」である。フリップフロップF3へ入力されるクロックの立上がりエッジまでに、フリップフロップF3へデータが到着せずに、セットアップ違反を引き起こしている。
【0082】
図13は、本実施の形態で生成されるクロックツリーの例を表わす図である。
図13に示すように、セットアップスラックに基づいて、クロック位相をチューニングするため、前後のクロックパスにセットアップスラックがあれば、負のセットアップスラック(すなわちタイミング違反)を吸収することができる。
【0083】
図14は、図13のクロックツリーに基づくタイミングチャートを表わす図である。
図14に示すように、フリップフロップF1、F2、F3、F4の相対クロックレイテンシ(位相遅延)はそれぞれ「2ns」、「0ns」、「1ns」、「2ns」となる。一方、フリップフロップF2からフリップフロップF3へのデータパス遅延は、「11ns」であり、クロック周期「10ns」を超えている。しかし、次段のフリップフロップF3からフリップフロップF4へのデータパス遅延が「9ns」であるため、フリップフロップF3のクロック位相を「1ns」だけ遅らせることができる。したがって、従来手法のようなセットアップ違反は発生しない。
【0084】
(まとめ)
以上のように、第1の実施形態によれば、各フリップフロップへ到達するクロックの位相をセットアップスラックおよびホールドスラックに応じて可変にしているので、電力消費のタイミングを分散することができる。第1の実施形態では、このように電力消費のタイミングを分散させることができるので、IRドロップやEMI等のノイズを低減することができ、半導体装置の信頼性を向上させることができる。
【0085】
[第2の実施形態]
図15は、図9のDesign2について、本実施の形態のHSLDを適用した場合の電力消費と、HSLDを適用しない従来の場合の電力消費とを比較した図である。
【0086】
DeSign2は、8本すべてのデータパスのセットアップスラックは「3ns」であり、一点に集中している。このような場合に、第1の実施形態のように、セットアップスラックをそのまま位相遅延としてしまうと、クロック位相が、同一の値だけシフトされるだけであって、分散されない。その結果、図15に示すようにピーク電力を削減する効果が得られない。
【0087】
図16は、HSLDを適用前のクロックレイテンシDCの頻度分布(ヒストグラム)を表わす図である。図17は、HSLD適用後のクロックレイテンシDCの頻度分布(ヒストグラム)を表わす図である。
【0088】
図17に示すように、HDLSを適用することによって、頻度のピーク値は低減されているが、P1、P2のようなピークが依然として残っていることがある。
【0089】
HSLDによるクロックレイテンシを分散させた結果、図18に示すように、実際には関連するクロックパスの関係によって、セットアップスラックがまだ残っているクロックパスが多い。たとえば、フリップフロップF4へのクロックパスは、「6ns」のセットアップスラックを有している。
【0090】
図19は、図17のピークP1に対するHSLD後のセットアップスラックSSの頻度分布を表わす図である。
【0091】
図19に示すように、「0.1ns」から「2.4ns」まで一様に分布していることがわかる。このように、同一のクロックレイテンシを保有するクロックパスのセットアップスラックは、HSLD後にバラつくことが多い。第2の実施形態では、このような性質を利用して、HSLD適用後に残存するピークをさらに分散させる(つまりスムージングする)。
【0092】
(半導体設計装置の構成)
図20は、第2の実施の形態の半導体設計装置の構成を表わす図である。
【0093】
図20を参照して、この半導体設計装置10は、さらにPAS(Peak Aware Smoothing)部7を有する。
【0094】
PAS部7は、HSLD部6によるクロックレイテンシの調整の後、クロックレイテンシの頻度分布が第1の値に集中する場合に、第1の値のクロックレイテンシを有する複数個のフリップフロップを選択する。PAS部7は、選択した各フリップフロップのクロックレイテンシの現在の設計値(すなわち、HSLD部6によって算出された相対クロックレイテンシDCt(j)′)と、HSLD部6によるクロックレイテンシの調整によって変化した選択した各フリップフロップのセットアップスラックとホールドスラックに基づいて、セットアップ違反およびホールド違反を起こさない範囲で、選択した各フリップフロップののクロックレイテンシを現在の設計値よりも早める方向に調整する。
【0095】
(動作手順)
図21は、第2の実施形態の半導体設計装置による設計手順を表わすフローチャートである。
【0096】
まず、論理合成部2は、フリップフロップと組合せ回路で構成するRTL(Register Transfer Level)記述から、クロックソースから末端の回路素子群までのクロックツリーに関する初期ネットリスト(初期クロックレイテンシ、セットアップ制約、ホールド制約、データパス遅延のデータを含む)を生成して、設計データ記憶部4に記憶する(ステップS901)。
【0097】
次に、レイアウト設計部3は、ネットリストに基づいて、各ゲートを隙間無く並べ(Place)、ゲートの端子と端子を接続する(Route)ことによって、初期レイアウトデータを生成して設計データ記憶部4に記憶する(ステップS902)。
【0098】
次に、STA部5は、初期ネットリストに含まれるデータを利用して、フリップフロップFFに対するセットアップスラックとホールドスラックを算出する(ステップS903)。
【0099】
次に、HSLD部6は、ステップS903で算出されたセットアップスラックとホールドスラックに基づいて、各フリップフロップFFに対する新たなクロックレイテンシを算出する(ステップS904)。
【0100】
次に、PAS部7は、ステップS904で算出された新たなクロックレイテンシの頻度分布を生成する。PAS部7は、クロックレイテンシの分布にピークがないかどうか、つまりどこかに集中していないかどうかを調べる。具体的には、PAS部7は、クロックレイテンシの頻度が所定の閾値以上となるようなクロックレイテンシがある場合に、ピークがあると判断する。PAS部7は、クロックレイテンシの分布にピークが存在する場合には(ステップS801でYES)、図5のステップS107で再計算されたセットアップスラックとホールドスラックに基づいて、ピークのクロックレイテンシを有するフリップフロップFFに対する新たなクロックレイテンシを再び算出する(ステップS802)。
【0101】
次に、レイアウト設計部3は、再び算出されたクロックレイテンシに基づいて、クロックツリーを再構築し、ネットリストを更新する(ステップS905)。
【0102】
さらに、レイアウト設計部3は、更新されたネットリストに基づいて、レイアウトデータを更新して設計データ記憶部4に記憶する(ステップS906)。
【0103】
(PAS)
図22は、図21のステップS202のPASの処理手順を表わすフローチャートである。
【0104】
図22を参照して、PAS部7は、ピークとして特定されたクロックレイテンシDCを有する全てのフリップフロップを選択する。ここでは、S個のフリップフロップが選択されたとする(ステップS201)。
【0105】
次に、PAS部7は、選択したS個のフリップフロップを、それらのセットアップスラックSSが大きい方から順番に順序づける。ここでは、j=1〜Sの順番が付けられたとする(ステップS202)。
【0106】
次に、PAS部7は、変数jを1に設定する(ステップS203)。
次に、PAS部7は、ステップS202で順序付けられた第j番目のフリップフロップF(Ft(j)とする)を特定し、フリップフロップFt(j)のセットアップスラックSSt(j)を特定する(ステップS204)。
【0107】
次に、PAS部7は、フリップフロップFt(j)からデータを受ける1段後ろのフリップフロップ(フリップフロップFt(j)の後段のフリップフロップ)を選択する。ここでは、M(j)個のフリップフロップが選択されたとする。PAS部7は、選択したM(j)個のフリップフロップのホールドスラックの中の最小値HS_MN(j)を特定する。これは、フリップフロップFt(j)のクロックレイテンシを早くすることによって、フリップフロップFt(j)の後段のフリップフロップのうち、最もホールド違反が生じやすいものを特定するためである。なお、PAS部7は、フリップフロップFt(j)の後段のフリップフロップが存在しない場合には、最小値HS_MN(j)として十分に大きな値に設定する(ステップS205)。
【0108】
次に、PAS部7は、セットアップスラックSSt(j)とホールドスラックの最小値HS_MN(j)のうちの小さい方をマージンMt(j)として特定する。つまり、セットアップスラックSSt(j)がホールドスラックの最小値HS_MN(j)よりも小さいときには、セットアップスラックSSt(j)だけクロックレイテンシDCt(j)を早めても、後段のフリップフロップにおいて、ホールド違反が生じないからマージンMt(j)をSSt(j)にする。一方、セットアップスラックSSt(j)がホールドスラックの最小値HS_MN(j)よりも大きいときには、セットアップスラックSSt(j)だけクロックレイテンシDCt(j)を早めると、後段のフリップフロップにおいて、ホールド違反が生じる。したがって、PAS部7は、マージンMt(j)を後段のフリップフロップにおいてホールド違反が生じない限界値であるHS_MN(j)とする。このようにセットアップ違反およびホールド違反が生じない範囲でマージン(クロックレイテンシを早める量)を最大にとることにしたのは、このようにすることでクロックレイテンシが分散されやすいからである(ステップS206)。
【0109】
次に、PAS部7は、HSLD部6によって算出された相対クロックレイテンシDCt(j)′がマージンMt(j)以上のときには(ステップS207でYES)、相対クロックレイテンシの更新値DCt(j)"をDCt(j)′からマージンMt(j)だけ減算した値とする(ステップS208)。一方、PAS部7は、HSLD部6によって算出された相対クロックレイテンシDCt(j)′がマージンMt(j)未満のときには(ステップS207でNO)、相対クロックレイテンシの更新値DCt(j)"を「0」にする(ステップS209)。
【0110】
次に、PAS部7は、セットアップスラックおよびホールドスラックを再計算する。すなわち、PAS部7は、フリップフロップFt(j)のセットアップスラックSSt(j)を現在の値からMt(j)だけ減算した値に更新する。PAS部7は、フリップフロップFt(j)のホールドスラックHStを現在の値からMt(j)だけ加算した値に更新する。PAS部7は、フリップフロップFt(j)の後段のM(j)個のフリップフロップのセットアップスラックSSを現在の値からMt(j)だけ加算した値に更新する。PAS部7は、フリップフロップFt(j)の後段のM(j)個のフリップフロップのホールドスラックHSを現在の値からMt(j)だけ減算した値に更新する。
【0111】
PAS部7は、jがSでない場合(ステップS211でNO)、jを1だけインクリメントして(ステップS212)、ステップS204からの処理を繰り返す。PAS部7は、jがSの場合(ステップS211でYES)、処理を終了する。
【0112】
(性能評価)
図23は、図9に示すDesign2について、第1の実施形態のHSLDを適用した場合の電力消費と、第1の実施形態のHSLDに加えて第2の実施形態のPASを適用した場合の電力消費と、HSLDを適用しない従来の場合の電力消費とを比較した図である。
【0113】
図23において、横軸が時間、縦軸が各時間当たりの消費電力を表わす。また、実線がHSLDを適用しない場合(従来手法)の電力消費、1点鎖線がHSLDを適用した場合(第1の実施の形態手法)の電力消費、2点鎖線がHSLDを適用した後、さらにPASを適用した場合(第2の実施の形態手法)の電力消費を表わす。
【0114】
図23に示すように、従来手法では、ピーク電力が「12」であるのに対して、第1の実施の形態手法では、ピーク電力が「5.8」であり、第2の実施形態では、ピーク電力が「5.4」である。つまり、第2の実施の形態手法では、従来手法よりも、ピーク電力を「55%」削減できている。
【0115】
この理由は、たとえば、第1の実施形態では、「3ns」のタイミング余裕があったとしても、すべてのクロックパスのクロックレイテンシが「3ns」シフトされるのに対して、第2の実施形態では、第1の実施形態で集中した「3ns」のクロックレイテンシを第1の実施形態で生じたタイミング余裕によって、分散させるからである。
【0116】
(まとめ)
以上のように、第2の実施形態によれば、第1の実施形態によってもクロックレイテンシのピークが残っている場合に、第1の実施形態によって生じたセットアップスラックとホールドスラックに応じて、このピークのクロックレイテンシを分散させることができる。これによって、電力消費のタイミングを分散することができ、IRドロップやEMI等のノイズを低減することができるので、半導体装置の信頼性を向上させることができる。
【0117】
(変形例)
本発明は、上記の実施形態に限定されるものではなく、たとえば以下のような変形例も含む。
【0118】
(1) クロックレイテンシの調整量
本発明の実施形態では、セットアップ違反およびホールド違反を生じない範囲で、最大量だけクロックレインテンシを早めたが、これに限定するものではない。たとえば、セットアップ違反およびホールド違反を生じない範囲で、最大量から所定量減じた値、あるいはランダムな量だけクロックレイテンシを早めることとしてもよい。
【0119】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0120】
1,10 設計装置、2 論理合成部、3 レイアウト設計部、4 設計データ記憶部、5 STA部、6 HSLD部、7 PAS部。
【技術分野】
【0001】
本発明は、半導体設計装置に関する。
【背景技術】
【0002】
近年のLSI(large-scale integration)設計は同期設計が主流である。同期設計ではすべてのレジスタがフリップフロップで構成され、クロックに同期して動作する。高速化のため、各フリップフロップに供給されるクロックはスキューが抑えられており、同位相で供給されるため、クロックの立ち上がりエッジおよび立下りエッジに電力消費が集中する。電力消費の集中によって、電源のダイナミックドロップやEMI(Electro Magnetic Interference)ノイズの増大を引き起こし、チップの信頼性を低下させるという問題があった。
【0003】
このような問題に対して、たとえば、特許文献1(特開2004−192201号公報)に記載されている装置では、クロックを遅延する複数の遅延回路の異なるノードから、複数のクロックのうちの1つを選択するセレクタを介してフリップフロップへクロックを出力する。セレクタの選択は擬似乱数で制御することによって、電力消費のタイミングを分散させることができる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2004−192201号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1の装置は、フリップフロップへ供給されるクロックは擬似乱数によって選択するものであり、擬似乱数発生のための面積オーバーヘッドが大きく、かつ、十分なクロック分散ができない。
【0006】
それゆえに、本発明の目的は、セットアップ違反やホールド違反を発生させずに、電力を消費するタイミングを分散させることができる半導体設計装置を提供することである。
【課題を解決するための手段】
【0007】
本発明の一実施形態は、論理合成によって設計されたフリップフロップのクロックレイテンシを調整する半導体設計装置である。この半導体設計装置は、フリップフロップのクロックレイテンシの現在の設計値に基づいて、フリップフロップのセットアップ時間のマージンであるセットアップスラックを算出するスラック解析部と、算出したセットアップスラックに基づいて、タイミング違反を起こさない範囲で、フリップフロップのクロックレイテンシを現在の設計値よりも早める方向に調整する第1のクロックレイテンシ調整部とを備える。
【発明の効果】
【0008】
本発明の一実施形態によれば、セットアップ違反やホールド違反を発生させずに、電力を消費するタイミングを分散させることができる。
【図面の簡単な説明】
【0009】
【図1】第1の実施の形態の半導体集積回路の半導体設計装置の構成を表わす図である。
【図2】セットアップスラックSSおよびホールドスラックHSを説明するための図である。
【図3】第1の実施形態の半導体設計装置による設計手順を表わすフローチャートである。
【図4】図3のステップS903の処理手順を表わすフローチャートである。
【図5】図3のステップS904のHSLDの処理手順を表わすフローチャートである。
【図6】HSLDを適用前のクロックレイテンシの例を表わす図である。
【図7】前段のクロックの位相をセットアップスラック分だけ遅らせる手法でのクロック位相の例を表わす図である。
【図8】本実施の形態のHSLDを適用後のクロック位相の例を表わす図である。
【図9】本実施の形態の性能を評価するために用いたデザインの例を説明するための図である。
【図10】本実施の形態のHSLDを適用した場合の電力消費と、HSLDを適用しない従来の場合の電力消費とを比較した図である。
【図11】従来手法で生成されるクロックツリーの例を表わす図である。
【図12】図11のクロックツリーに基づくタイミングチャートを表わす図である。
【図13】本実施の形態で生成されるクロックツリーの例を表わす図である。
【図14】図13のクロックツリーに基づくタイミングチャートを表わす図である。
【図15】図9のDesign2について、本実施の形態のHSLDを適用した場合の電力消費と、HSLDを適用しない従来の場合の電力消費とを比較した図である。
【図16】HSLDを適用前のクロックレイテンシDCの頻度分布(ヒストグラム)を表わす図である。
【図17】HSLDを適用後のクロックレイテンシDCの頻度分布(ヒストグラム)を表わす図である。
【図18】HSLD適用後にセットアップスラックが残存している例を表わす図である。
【図19】図17のピークP1に対するHSLD後のセットアップスラックSSの頻度分布を表わす図である。
【図20】第2の実施の形態の半導体設計装置の構成を表わす図である。
【図21】第2の実施形態の半導体設計装置による設計手順を表わすフローチャートである。
【図22】図21のステップS202のPASの処理手順を表わすフローチャートである。
【図23】図9に示すDesign2について、第1の実施形態のHSLDを適用した場合の電力消費と、第1の実施形態のHSLDに加えて第2の実施形態のPASを適用した場合の電力消費と、HSLDを適用しない従来の場合の電力消費とを比較した図である。
【発明を実施するための形態】
【0010】
以下、本発明の実施形態について図面を参照して説明する。
[第1の実施形態]
本発明の第1の実施形態は、タイミング解析手法によって、スラック(データパス遅延に対するクロックレイテンシのタイミング余裕)を算出し、算出したスラックに基づいてタイミング違反を発生させない範囲で各フリップフロップ(Dラッチ)に供給されるクロック位相を分散させることによって、電力を消費するタイミングを分散させる。
【0011】
(半導体設計装置の構成)
図1は、第1の実施の形態の半導体設計装置の構成を表わす図である。
【0012】
図1を参照して、この半導体設計装置1は、論理合成部2と、レイアウト設計部3と、設計データ記憶部4と、STA(Static Timing Analysis)部と、HSLD(Hold-driven Slack-based Latency Distribution)部6とを備える。
【0013】
論理合成部2は、クロックツリーに関する初期ネットリストを生成して、設計データ記憶部4に記憶する。
【0014】
レイアウト設計部3は、ネットリストに基づいて、初期レイアウトデータを生成して設計データ記憶部4に記憶する。また、レイアウト設計部3は、更新されたネットリストに基づいて、レイアウトデータを更新して設計データ記憶部4に記憶する。また、レイアウト設計部3は、HSLD部6によって新たに算出されたクロックレイテンシに基づいて、クロックツリーを再構築し、ネットリストを更新する。
【0015】
設計データ記憶部4は、論理合成部2で作成されたネットリストと、レイアウト設計部3で作成されたレイアウトデータを記憶する。
【0016】
STA部5は、設計データ記憶部4に記憶されているデータパス遅延と、初期クロックレイテンシと、セットアップ制約と、ホールド制約に基づいて、セットアップスラックSSおよびホールドスラックHSを算出する。
【0017】
ここで、データパス遅延とは、フリップフロップへのデータパスでのデータの伝送遅延であり、以下の3通りがある。
【0018】
(1) プライマリ入力から初段のフリップフロップFFのデータ入力ピンまでのデータパス遅延、
(2) フリップフロップFF間(FFへのクロックが立ち上がって(または立ち下って)からフリップフロップFFのデータ出力ピンを経由して次段のフリップフロップFFのデータ入力ピンまで)のデータパス遅延、
(3) フリップフロップFFへのクロックが立ち上がって(または立ち下って)からプライマリ出力(出力ピン)までのデータパス遅延。
【0019】
クロックレイテンシとは、クロックツリーの起点(origin)からクロックCLKが、クロックパスを経て、フリップフロップFFへ入力されるまでの時間である。
【0020】
フリップフロップFiのセットアップ制約とは、フリップフロップFiに入力されるデータが、フリップフロップFiに入力されるクロックCLKよりもどれだけ早く到達しておかなければならないかを示す値である。
【0021】
フリップフロップFiのホールド制約とは、フリップフロップFiにクロックCLKが入力された後、フリップフロップFiに入力されるデータがどれだけの時間、値を維持しておかなければならないかを示す値である。
【0022】
ここで、セットアップスラックSSとは、セットアップ制約で規定されたタイミングに対するマージン値である。フリップフロップFiのセットアップスラックSSiが正の場合には、フリップフロップFiに入力されるデータのデータパス遅延とフリップフロップFiのクロックレイテンシのタイミング関係は、セットアップ制約のタイミング条件を満たしている。そして、最大でセットアップスラックSSiだけフリップフロップFiに入力されるクロックCLKの位相を早くしたとしても、フリップフロップFiに入力されるデータのデータパス遅延とクロックレイテンシのタイミング関係は、セットアップ制約のタイミング条件を満たしている。一方、セットアップスラックSSiが負の場合には、フリップフロップFiに入力されるデータのデータパス遅延とフリップフロップFiのクロックレイテンシのタイミング関係は、セットアップ制約のタイミング条件を満たしていない(セットアップ違反)。
【0023】
ホールドスラックHSとは、ホールド制約で規定されたタイミングに対するマージン値である。フリップフロップFiのホールドスラックHSiが正の場合には、フリップフロップFiに入力されるデータとフリップフロップFiのクロックレイテンシのタイミング関係は、ホールド制約のタイミング条件を満たしている。そして、最大でホールドスラックHSiだけフリップフロップFiに入力されるクロックCLKの位相を遅くしたとしても、フリップフロップFiに入力されるデータとフリップフロップFiのクロックレイテンシのタイミング関係は、ホールド制約のタイミング条件を満たしている。一方、ホールドスラックHSiが負の場合には、フリップフロップFiに入力されるデータとフリップフロップFiのクロックレイテンシのタイミング関係は、ホールド制約のタイミング条件を満たしていない(ホールド違反)。
【0024】
図2は、セットアップスラックSSおよびホールドスラックHSを説明するための図である。
【0025】
ここでは、フリップフロップFi、Fj、Fkがシリアルに接続されていると仮定する。クロックCLKの周期Pとする。
【0026】
フリップフロップFi、Fj、FkのクロックレイテンシをDCi、DCj、DCkとする。
フリップフロップFjへの最大のデータパス遅延をmax(DLj)、最小のデータパス遅延をmin(DLj)とする。フリップフロップFkへの最大のデータパス遅延をmax(DLk)、最小のデータパス遅延をmin(DLk)とする。
【0027】
フリップフロップFjのセットアップ制約およびホールド制約をそれぞれTSj、THjとする。フリップフロップFkのセットアップ制約およびホールド制約をそれぞれTSk、THkとする。
【0028】
フリップフロップFjおよびFkのセットアップスラックSSj、SSkおよびホールドスラックHSj、HSkは下記の式で表すことができる。
【0029】
SSj=P−DCi−max(DLj)−TSj+DCj ・・・(1)
HSj=DCi+min(DLj)−DCj−THj (2)
SSk=P−DCj−max(DLk)−TSk+DCk (3)
HSk=DCj+min(DLk)−DCk−THk (4)
したがって、STA部5は、図2の場合には、式(1)〜(4)に従って、セットアップスラックSSj、SSk、およびホールドスラックHSj、HSkを算出する。
【0030】
(HSLD)
HSLD部6は、STA部5で算出したセットアップスラックとホールドスラックに基づいて、フリップフロップのクロックレイテンシを調整する。HSLD部6は、フリップフロップのクロックレインテンシを調整するときには、そのフリップフロップのセットアップスラックとそのフリップフロップの後段のフリップフロップのホールドスラックに基づいて、セットアップ違反およびホールド違反を起こさない範囲で、そのフリップフロップのクロックレイテンシを現在の設計値よりも早める方向に調整する。HSLD部6の詳細な処理内容については後述する。
【0031】
(動作手順)
図3は、第1の実施形態の半導体設計装置による設計手順を表わすフローチャートである。
【0032】
まず、論理合成部2は、フリップフロップと組合せ回路で構成するRTL(Register Transfer Level)記述から、クロックソースから末端の回路素子群までのクロックツリーに関する初期ネットリスト(初期クロックレイテンシ、セットアップ制約、ホールド制約、およびデータパス遅延のデータを含む)を生成して、設計データ記憶部4に記憶する(ステップS901)。
【0033】
次に、レイアウト設計部3は、ネットリストに基づいて、各ゲートを隙間無く並べ(Place)、ゲートの端子と端子を接続する(Route)ことによって、初期レイアウトデータを生成して設計データ記憶部4に記憶する(ステップS902)。
【0034】
次に、STA部5は、初期ネットリストに含まれるデータを利用して、フリップフロップFFのセットアップスラックとホールドスラックを算出する(ステップS903)。
【0035】
次に、HSLD部6は、ステップS903で算出されたセットアップスラックとホールドスラックに基づいて、各フリップフロップFFに対する新たなクロックレイテンシを算出する(ステップS904)。
【0036】
次に、レイアウト設計部3は、新たに算出されたクロックレイテンシに基づいて、ステップS901で生成されたクロックツリーを、スキュー付きのクロックツリーに再構築することによってネットリストを更新する(ステップS905)。
【0037】
さらに、レイアウト設計部3は、更新されたネットリストに基づいて、レイアウトデータを更新して設計データ記憶部4に記憶する(ステップS906)。
【0038】
(STAの手順)
図4は、図3のステップS903のセットアップスラックおよびホールドスラックの算出処理の手順を表わす図である。
【0039】
図4を参照して、まず、STA部5は、ネットリスト内のすべてのフリップフロップ(N個あるとする)を任意の順序に番号を付ける(ステップS301)。
【0040】
次に、STA部5は、変数iを「1」に設定する(ステップS302)。
次に、STA部5は、次の式に従って、第i番目のフリップフロップFiのセットアップスラックSSiを算出する。
【0041】
SSi=P−DCp(i)−max(DLi)−TSi+DCi ・・・(5)
ここで、PはクロックCLKの周期である。max(DLi)は、フリップフロップFiへの最大のデータパス遅延である。TSiはフリップフロップFiのセットアップ制約である。DCiはフリップフロップFiの初期クロックレイテンシである。DCp(i)は、フリップフロップFiへデータを出力する1つ前段のフリップフロップFp(i)の初期クロックレイテンシである。ただし、フリップフロップFiが他のフリップフロップからデータを受けない場合(つまり、プライマリ入力からデータを受ける場合)には、STA部5は、DCp(i)を「0」として式(5)を計算する(ステップS303)。
【0042】
次に、STA部5は、次の式に従って、第i番目のフリップフロップのホールドスラックHSiを算出する。
【0043】
HSi=DCp(i)+min(DLi)−DCi−THi ・・・(6)
ここで、min(DLi)は、フリップフロップFiへの最小のデータパス遅延である。THiはフリップフロップFiのホールド制約である。DCiはフリップフロップFiの初期クロックレイテンシである。DCp(i)は、フリップフロップFiへデータを出力する1つ前段のフリップフロップFp(i)の初期クロックレイテンシである。ただし、フリップフロップFiが他のフリップフロップからデータを受けない場合(つまり、プライマリ入力からデータを受ける場合)には、STA部5は、DCp(i)を「0」として式(6)を計算する(ステップS304)。
【0044】
STA部5は、iがNでない場合には(ステップS305でNO)、iを1だけインクリメントして(ステップS306)、ステップS303からの処理を繰り返す。STA部5は、iがNの場合には(ステップS305でYES)、処理を終了する。
【0045】
(HSLDの手順)
図5は、図3のステップS904のHSLDの処理手順を表わすフローチャートである。
【0046】
図5を参照して、HSLD部6は、ネットリスト内のすべてのフリップフロップ(N個とする)をそれらのセットアップスラックSSが大きい方から順番に順序づける。ここでは、j=1〜Nの順番が付けられたとする(ステップS102)。
【0047】
次に、HSLD部6は、変数jを1に設定する(ステップS103)。
次に、HSLD部6は、ステップS102で順序付けられた第j番目のフリップフロップF(Ft(j)とする)を特定し、フリップフロップFt(j)のセットアップスラックSSt(j)を特定する。ここでは、たとえば、j=1のときに、第1番目のフリップフロップがF5の場合には、セットアップスラックSS5が特定されることになる(ステップS104)。
【0048】
次に、HSLD部6は、フリップフロップFt(j)からデータを受ける1段後ろのフリップフロップ(フリップフロップFt(j)の後段のフリップフロップ)を選択する。ここでは、M(j)個のフリップフロップが選択されたとする。HSLD部6は、選択したM(j)個のフリップフロップのホールドスラックの中の最小値HS_MN(j)を特定する。これは、フリップフロップFt(j)のクロックレイテンシを早くすることによって、フリップフロップFt(j)の後段のフリップフロップのうち、最もホールド違反が生じやすいものを特定するためである。ここでは、たとえば、最小値HS_MN(j)としてHS9が特定されたとする。なお、HSLD部6は、フリップフロップFt(j)の後段のフリップフロップが存在しない場合には、最小値HS_MN(j)として十分に大きな値に設定する(ステップS105)。
【0049】
次に、HSLD部6は、セットアップスラックSSt(j)とホールドスラックHS_MN(j)のうちの小さい方をマージンMt(j)として特定する。つまり、セットアップスラックSSt(j)がホールドスラックの最小値HS_MN(j)よりも小さいときには、セットアップスラックSSt(j)だけクロックレイテンシDCt(j)を早めても、後段のフリップフロップにおいて、ホールド違反が生じないからマージンMt(j)をSSt(j)にする。一方、セットアップスラックSSt(j)がホールドスラックの最小値HS_MN(j)よりも大きいときには、セットアップスラックSSt(j)だけクロックレイテンシDCt(j)を早めると、後段のフリップフロップにおいて、ホールド違反が生じる。したがって、HSLD部6は、マージンMt(j)を後段のフリップフロップにおいてホールド違反が生じない限界値であるHS_MN(j)とする。たとえば、SS5<HS9の場合には、SS5がM5として特定される。このようにセットアップ違反およびホールド違反が生じない範囲でマージン(クロックレイテンシを早める量)を最大にとることにしたのは、このようにすることでクロックレイテンシが分散されやすいからである(ステップS106)。
【0050】
次に、HSLD部6は、セットアップスラックおよびホールドスラックを再計算する。すなわち、HSLD部6は、フリップフロップFt(j)のセットアップスラックSSt(j)を現在の値からMt(j)だけ減算した値に更新する。HSLD部6は、フリップフロップFt(j)のホールドスラックHSt(j)を現在の値からMt(j)だけ加算した値に更新する。HSLD部6は、フリップフロップFt(j)の後段のM(j)個のフリップフロップのセットアップスラックSSを現在の値からMt(j)だけ加算した値に更新する。HSLD部6は、フリップフロップFt(j)の後段のM(j)個のフリップフロップのホールドスラックHSを現在の値からMt(j)だけ減算した値に更新する(ステップS107)。
【0051】
HSLD部6は、jがNでない場合(ステップS108でNO)、jを1だけインクリメントして(ステップS109)、ステップS104からの処理を繰り返す。HSLD部6は、jがNの場合(ステップS108でYES)、マージンMt(1)〜Mt(L)の中の最大値を最大クロックレイテンシMAX_CLとして特定する(ステップS110)。
【0052】
次に、HSLD部6は、変数jを1に設定する(ステップS110)。
次に、HSLD部6は、最大クロックレイテンシMAX_CLからマージンMt(j)を減算することによって相対クロックレイテンシDCt(j)′を算出する。このように相対クロックレイテンシを求めることで、その後のクロックツリーの作成、およびクロックツリーに基づく遅延素子の配置設計がより容易になる(ステップS112)。
【0053】
HSLD部6は、jがNでない場合(ステップS113でNO)、jを1だけインクリメントして(ステップS114)、ステップS112からの処理を繰り返す。HSLD部6は、jがNの場合(ステップS113でYES)、処理を終了する。
【0054】
なお、上記のステップS107のセットアップスラックSSおよびホールドスラックHSの再計算は、オプショナルであり、論理合成部2で作成された初期のクロックレイテンシの分散具合によっては、実行しなくてもよい場合がある。
【0055】
(処理結果の例1)
図6は、HSLDを適用前のクロックレイテンシの例を表わす図である。
【0056】
図6を参照して、この例は、5つのフリップフロップF1〜F5のクロックレイテンシを表わす。
【0057】
各フリップフロップF1〜F5をタイミングエンドポイントとした時のセットアップスラック値が示されている。ここでは、周期を「10ns」、フリップフロップF1〜F5内の伝播遅延やタイミングチェック値、クロックスキューを「0ns」と仮定している。
【0058】
HSLD適用前の設計では、各フリップフロップF1〜F5のクロック端子へ位相ばらつきを抑えたクロック信号を供給するため、クロックツリーの起点(origin)に「5ns」の遅延素子を配置して、この遅延素子からの信号が各フリップフロップF1〜F5へ供給される。
【0059】
ここで、ピーク電力を低減するためには、図6に示されているセットアップスラック分だけタイミングに余裕があることを考慮して、前段のフリップフロップへのクロックの位相をセットアップスラック分だけ遅らせる方法が考えられる。
【0060】
図7は、前段のクロックの位相をセットアップスラック分だけ遅らせる手法でのクロック位相の例を表わす図である。本事例にHSLDを適用した場合には、F3→F5→F2→F4→F1の順に評価される。この評価順はそれぞれのクロックレイテンシ決定後の再計算後も変わらない。
【0061】
図7に示すように、フリップフロップF2、F3、F4、F5のセットアップスラックSSは、それぞれ「2ns」、「6ns」、「1ns」、「3ns」であるから、フリップフロップF1、F2、F3、F4へのクロックの位相をそれぞれ「2ns」、「6ns」、「1ns」、「3ns」遅らせている。
【0062】
しかしながら、たとえば、フリップフロップF2をタイミングのスタートポイントとするタイミングパスはF3だけとは限らない。フリップフロップF3のセットアップスラック「6ns」を利用して、フリップフロップF2のクロック位相を「6ns」遅らせた場合に、もし、フリップフロップF3がフリップフロップF2以外にもタイミングスタートポイントを持っていれば、フリップフロップF3のセットアップスラックは「0ns」にはならないどころか、フリップフロップF2を「6ns」遅らせたために、別のエンドポイントがタイミング違反となってしまう。つまり、あるフリップフロップFFをエンドポイントとするセットアップスラックを利用して、そのフリップフロップFFに関連する別のフリップフロップFFのクロックレイテンシを調整することは困難である。
【0063】
これに対して、本実施の形態では、ピーク電力を低減するために、セットアップスラックを有するフリップフロップの前段のフリップフロップへのクロックの位相をセットアップスラック分遅らせるのではなく、セットアップスラックを有するフリップフロップ自体のクロックの位相を早めるものである。
【0064】
図8は、本実施の形態のHSLDを適用後のクロック位相の例を表わす図である。
図8では、図5のステップS106において、セットアップスラックSSt(j)がホールドスラックの最小値HS_MN(j)よりも小さい場合を想定したものである。
【0065】
また、図5のステップS107のセットアップスラックSSおよびホールドスラックHSの再計算は実行していない。
【0066】
図6より、最大クロックレイテンシMAX_CLは「6ns」である。これから、各セットアップスラック値減算することで、フリップフロップF1、F2、F3、F4、F5への相対クロックレイテンシは、それぞれ「6ns」、「4ns」、「0ns」、「5ns」、「3ns」となる。
【0067】
本実施の形態では、このようにして求めた相対クロックレイテンシをクロックパスに割り当てる。図6に示すように、フリップフロップF1、F2、F3、F4へのクロックパスには、それぞれ、「6ns」、「4ns」、「0ns」、「5ns」の遅延素子が設けられる。
【0068】
(性能評価)
図9は、本実施の形態の性能を評価するために用いたデザインの例を説明するための図である。
【0069】
ここで、各デザインともパス数は8本とし、横軸はデータパス遅延[ns]とし、縦軸は当該データパス遅延を持つデータパス数とする。
【0070】
Design1〜Design3は、次のようなタイミング分布をもつデザインであると仮定する。
【0071】
Design1では、データパス遅延が「4〜5ns」、「5〜6ns」、「6〜7ns」、「7〜8ns」のデータパス数は、それぞれ1本である。データパス遅延が「8〜9ns」、「9〜10ns」のデータパス数がそれぞれ2本である。
【0072】
Design2では、8本のデータパスの全てのデータパス遅延が「7〜8ns」に集中している。
【0073】
Design3では、8本のデータバスの全てのパス遅延が「9〜10ns」に集中している。
【0074】
図10は、Design1について、本実施の形態のHSLDを適用した場合の電力消費と、HSLDを適用しない従来の場合の電力消費とを比較した図である。
【0075】
図10において、横軸が時間、縦軸が各時間当たりの消費電力を表わす。また、実線がHSLDを適用しない場合(従来手法)の電力消費、破線がHSLDを適用した場合(第1の実施の形態手法)の電力消費である。
【0076】
図10に示すように、従来手法では、ピーク電力が「12」であるのに対して、第1の実施の形態手法では、ピーク電力が「5.8」に抑えられている。つまり、本実施の形態手法では、従来手法よりも、ピーク電力を「52%」削減できている。
【0077】
この理由は、本実施の形態では、各フリップフロップFFへ到達するクロックの位相をセットアップスラックおよびホールドスラックに応じて可変にしているので、電力消費が分散されたからである。
【0078】
本実施の形態では、このようにピーク電力を低減することができるので、IRドロップやEMI等のノイズを低減することができ、製品の信頼性を向上させることができる。
【0079】
(処理結果の例2)
次に、上記の手法を用いることで、副次的に得られる効果について記載する。
【0080】
図11は、従来手法で生成されるクロックツリーの例を表わす図である。
従来手法では、各フリップフロップFFのクロック端子にクロックツリーが施されていることが多い。ここでクロックツリーのスキューは「0」と仮定し、その「0」を満足し、かつファンアウト分割を実現するためにクロックは「1ns」のレイテンシを要すると仮定する。
【0081】
図12は、図11のクロックツリーに基づくタイミングチャートを表わす図である。
図12に示すように、フリップフロップF2からフリップフロップF3へのデータパス遅延は「11ns」である。フリップフロップF3へ入力されるクロックの立上がりエッジまでに、フリップフロップF3へデータが到着せずに、セットアップ違反を引き起こしている。
【0082】
図13は、本実施の形態で生成されるクロックツリーの例を表わす図である。
図13に示すように、セットアップスラックに基づいて、クロック位相をチューニングするため、前後のクロックパスにセットアップスラックがあれば、負のセットアップスラック(すなわちタイミング違反)を吸収することができる。
【0083】
図14は、図13のクロックツリーに基づくタイミングチャートを表わす図である。
図14に示すように、フリップフロップF1、F2、F3、F4の相対クロックレイテンシ(位相遅延)はそれぞれ「2ns」、「0ns」、「1ns」、「2ns」となる。一方、フリップフロップF2からフリップフロップF3へのデータパス遅延は、「11ns」であり、クロック周期「10ns」を超えている。しかし、次段のフリップフロップF3からフリップフロップF4へのデータパス遅延が「9ns」であるため、フリップフロップF3のクロック位相を「1ns」だけ遅らせることができる。したがって、従来手法のようなセットアップ違反は発生しない。
【0084】
(まとめ)
以上のように、第1の実施形態によれば、各フリップフロップへ到達するクロックの位相をセットアップスラックおよびホールドスラックに応じて可変にしているので、電力消費のタイミングを分散することができる。第1の実施形態では、このように電力消費のタイミングを分散させることができるので、IRドロップやEMI等のノイズを低減することができ、半導体装置の信頼性を向上させることができる。
【0085】
[第2の実施形態]
図15は、図9のDesign2について、本実施の形態のHSLDを適用した場合の電力消費と、HSLDを適用しない従来の場合の電力消費とを比較した図である。
【0086】
DeSign2は、8本すべてのデータパスのセットアップスラックは「3ns」であり、一点に集中している。このような場合に、第1の実施形態のように、セットアップスラックをそのまま位相遅延としてしまうと、クロック位相が、同一の値だけシフトされるだけであって、分散されない。その結果、図15に示すようにピーク電力を削減する効果が得られない。
【0087】
図16は、HSLDを適用前のクロックレイテンシDCの頻度分布(ヒストグラム)を表わす図である。図17は、HSLD適用後のクロックレイテンシDCの頻度分布(ヒストグラム)を表わす図である。
【0088】
図17に示すように、HDLSを適用することによって、頻度のピーク値は低減されているが、P1、P2のようなピークが依然として残っていることがある。
【0089】
HSLDによるクロックレイテンシを分散させた結果、図18に示すように、実際には関連するクロックパスの関係によって、セットアップスラックがまだ残っているクロックパスが多い。たとえば、フリップフロップF4へのクロックパスは、「6ns」のセットアップスラックを有している。
【0090】
図19は、図17のピークP1に対するHSLD後のセットアップスラックSSの頻度分布を表わす図である。
【0091】
図19に示すように、「0.1ns」から「2.4ns」まで一様に分布していることがわかる。このように、同一のクロックレイテンシを保有するクロックパスのセットアップスラックは、HSLD後にバラつくことが多い。第2の実施形態では、このような性質を利用して、HSLD適用後に残存するピークをさらに分散させる(つまりスムージングする)。
【0092】
(半導体設計装置の構成)
図20は、第2の実施の形態の半導体設計装置の構成を表わす図である。
【0093】
図20を参照して、この半導体設計装置10は、さらにPAS(Peak Aware Smoothing)部7を有する。
【0094】
PAS部7は、HSLD部6によるクロックレイテンシの調整の後、クロックレイテンシの頻度分布が第1の値に集中する場合に、第1の値のクロックレイテンシを有する複数個のフリップフロップを選択する。PAS部7は、選択した各フリップフロップのクロックレイテンシの現在の設計値(すなわち、HSLD部6によって算出された相対クロックレイテンシDCt(j)′)と、HSLD部6によるクロックレイテンシの調整によって変化した選択した各フリップフロップのセットアップスラックとホールドスラックに基づいて、セットアップ違反およびホールド違反を起こさない範囲で、選択した各フリップフロップののクロックレイテンシを現在の設計値よりも早める方向に調整する。
【0095】
(動作手順)
図21は、第2の実施形態の半導体設計装置による設計手順を表わすフローチャートである。
【0096】
まず、論理合成部2は、フリップフロップと組合せ回路で構成するRTL(Register Transfer Level)記述から、クロックソースから末端の回路素子群までのクロックツリーに関する初期ネットリスト(初期クロックレイテンシ、セットアップ制約、ホールド制約、データパス遅延のデータを含む)を生成して、設計データ記憶部4に記憶する(ステップS901)。
【0097】
次に、レイアウト設計部3は、ネットリストに基づいて、各ゲートを隙間無く並べ(Place)、ゲートの端子と端子を接続する(Route)ことによって、初期レイアウトデータを生成して設計データ記憶部4に記憶する(ステップS902)。
【0098】
次に、STA部5は、初期ネットリストに含まれるデータを利用して、フリップフロップFFに対するセットアップスラックとホールドスラックを算出する(ステップS903)。
【0099】
次に、HSLD部6は、ステップS903で算出されたセットアップスラックとホールドスラックに基づいて、各フリップフロップFFに対する新たなクロックレイテンシを算出する(ステップS904)。
【0100】
次に、PAS部7は、ステップS904で算出された新たなクロックレイテンシの頻度分布を生成する。PAS部7は、クロックレイテンシの分布にピークがないかどうか、つまりどこかに集中していないかどうかを調べる。具体的には、PAS部7は、クロックレイテンシの頻度が所定の閾値以上となるようなクロックレイテンシがある場合に、ピークがあると判断する。PAS部7は、クロックレイテンシの分布にピークが存在する場合には(ステップS801でYES)、図5のステップS107で再計算されたセットアップスラックとホールドスラックに基づいて、ピークのクロックレイテンシを有するフリップフロップFFに対する新たなクロックレイテンシを再び算出する(ステップS802)。
【0101】
次に、レイアウト設計部3は、再び算出されたクロックレイテンシに基づいて、クロックツリーを再構築し、ネットリストを更新する(ステップS905)。
【0102】
さらに、レイアウト設計部3は、更新されたネットリストに基づいて、レイアウトデータを更新して設計データ記憶部4に記憶する(ステップS906)。
【0103】
(PAS)
図22は、図21のステップS202のPASの処理手順を表わすフローチャートである。
【0104】
図22を参照して、PAS部7は、ピークとして特定されたクロックレイテンシDCを有する全てのフリップフロップを選択する。ここでは、S個のフリップフロップが選択されたとする(ステップS201)。
【0105】
次に、PAS部7は、選択したS個のフリップフロップを、それらのセットアップスラックSSが大きい方から順番に順序づける。ここでは、j=1〜Sの順番が付けられたとする(ステップS202)。
【0106】
次に、PAS部7は、変数jを1に設定する(ステップS203)。
次に、PAS部7は、ステップS202で順序付けられた第j番目のフリップフロップF(Ft(j)とする)を特定し、フリップフロップFt(j)のセットアップスラックSSt(j)を特定する(ステップS204)。
【0107】
次に、PAS部7は、フリップフロップFt(j)からデータを受ける1段後ろのフリップフロップ(フリップフロップFt(j)の後段のフリップフロップ)を選択する。ここでは、M(j)個のフリップフロップが選択されたとする。PAS部7は、選択したM(j)個のフリップフロップのホールドスラックの中の最小値HS_MN(j)を特定する。これは、フリップフロップFt(j)のクロックレイテンシを早くすることによって、フリップフロップFt(j)の後段のフリップフロップのうち、最もホールド違反が生じやすいものを特定するためである。なお、PAS部7は、フリップフロップFt(j)の後段のフリップフロップが存在しない場合には、最小値HS_MN(j)として十分に大きな値に設定する(ステップS205)。
【0108】
次に、PAS部7は、セットアップスラックSSt(j)とホールドスラックの最小値HS_MN(j)のうちの小さい方をマージンMt(j)として特定する。つまり、セットアップスラックSSt(j)がホールドスラックの最小値HS_MN(j)よりも小さいときには、セットアップスラックSSt(j)だけクロックレイテンシDCt(j)を早めても、後段のフリップフロップにおいて、ホールド違反が生じないからマージンMt(j)をSSt(j)にする。一方、セットアップスラックSSt(j)がホールドスラックの最小値HS_MN(j)よりも大きいときには、セットアップスラックSSt(j)だけクロックレイテンシDCt(j)を早めると、後段のフリップフロップにおいて、ホールド違反が生じる。したがって、PAS部7は、マージンMt(j)を後段のフリップフロップにおいてホールド違反が生じない限界値であるHS_MN(j)とする。このようにセットアップ違反およびホールド違反が生じない範囲でマージン(クロックレイテンシを早める量)を最大にとることにしたのは、このようにすることでクロックレイテンシが分散されやすいからである(ステップS206)。
【0109】
次に、PAS部7は、HSLD部6によって算出された相対クロックレイテンシDCt(j)′がマージンMt(j)以上のときには(ステップS207でYES)、相対クロックレイテンシの更新値DCt(j)"をDCt(j)′からマージンMt(j)だけ減算した値とする(ステップS208)。一方、PAS部7は、HSLD部6によって算出された相対クロックレイテンシDCt(j)′がマージンMt(j)未満のときには(ステップS207でNO)、相対クロックレイテンシの更新値DCt(j)"を「0」にする(ステップS209)。
【0110】
次に、PAS部7は、セットアップスラックおよびホールドスラックを再計算する。すなわち、PAS部7は、フリップフロップFt(j)のセットアップスラックSSt(j)を現在の値からMt(j)だけ減算した値に更新する。PAS部7は、フリップフロップFt(j)のホールドスラックHStを現在の値からMt(j)だけ加算した値に更新する。PAS部7は、フリップフロップFt(j)の後段のM(j)個のフリップフロップのセットアップスラックSSを現在の値からMt(j)だけ加算した値に更新する。PAS部7は、フリップフロップFt(j)の後段のM(j)個のフリップフロップのホールドスラックHSを現在の値からMt(j)だけ減算した値に更新する。
【0111】
PAS部7は、jがSでない場合(ステップS211でNO)、jを1だけインクリメントして(ステップS212)、ステップS204からの処理を繰り返す。PAS部7は、jがSの場合(ステップS211でYES)、処理を終了する。
【0112】
(性能評価)
図23は、図9に示すDesign2について、第1の実施形態のHSLDを適用した場合の電力消費と、第1の実施形態のHSLDに加えて第2の実施形態のPASを適用した場合の電力消費と、HSLDを適用しない従来の場合の電力消費とを比較した図である。
【0113】
図23において、横軸が時間、縦軸が各時間当たりの消費電力を表わす。また、実線がHSLDを適用しない場合(従来手法)の電力消費、1点鎖線がHSLDを適用した場合(第1の実施の形態手法)の電力消費、2点鎖線がHSLDを適用した後、さらにPASを適用した場合(第2の実施の形態手法)の電力消費を表わす。
【0114】
図23に示すように、従来手法では、ピーク電力が「12」であるのに対して、第1の実施の形態手法では、ピーク電力が「5.8」であり、第2の実施形態では、ピーク電力が「5.4」である。つまり、第2の実施の形態手法では、従来手法よりも、ピーク電力を「55%」削減できている。
【0115】
この理由は、たとえば、第1の実施形態では、「3ns」のタイミング余裕があったとしても、すべてのクロックパスのクロックレイテンシが「3ns」シフトされるのに対して、第2の実施形態では、第1の実施形態で集中した「3ns」のクロックレイテンシを第1の実施形態で生じたタイミング余裕によって、分散させるからである。
【0116】
(まとめ)
以上のように、第2の実施形態によれば、第1の実施形態によってもクロックレイテンシのピークが残っている場合に、第1の実施形態によって生じたセットアップスラックとホールドスラックに応じて、このピークのクロックレイテンシを分散させることができる。これによって、電力消費のタイミングを分散することができ、IRドロップやEMI等のノイズを低減することができるので、半導体装置の信頼性を向上させることができる。
【0117】
(変形例)
本発明は、上記の実施形態に限定されるものではなく、たとえば以下のような変形例も含む。
【0118】
(1) クロックレイテンシの調整量
本発明の実施形態では、セットアップ違反およびホールド違反を生じない範囲で、最大量だけクロックレインテンシを早めたが、これに限定するものではない。たとえば、セットアップ違反およびホールド違反を生じない範囲で、最大量から所定量減じた値、あるいはランダムな量だけクロックレイテンシを早めることとしてもよい。
【0119】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0120】
1,10 設計装置、2 論理合成部、3 レイアウト設計部、4 設計データ記憶部、5 STA部、6 HSLD部、7 PAS部。
【特許請求の範囲】
【請求項1】
論理合成によって設計されたフリップフロップのクロックレイテンシを調整する半導体設計装置であって、
フリップフロップのクロックレイテンシの現在の設計値に基づいて、フリップフロップのセットアップ時間のマージンであるセットアップスラックを算出するスラック解析部と、
前記算出したセットアップスラックに基づいて、タイミング違反を起こさない範囲で、前記フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する第1のクロックレイテンシ調整部とを備えた、半導体設計装置。
【請求項2】
前記スラック解析部は、さらに、前記クロックレイテンシの現在の設計値に基づいて、前記フリップフロップのホールド時間のマージンであるホールドスラックを算出し、
前記第1のクロックレイテンシ調整部は、前記セットアップスラックと前記フリップフロップの後段のフリップフロップのホールドスラックに基づいて、セットアップ違反およびホールド違反を起こさない範囲で、前記フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する、請求項1記載の半導体設計装置。
【請求項3】
前記フリップフロップの後段のフリップフロップが複数個ある場合において、
前記第1のクロックレイテンシ調整部は、前記セットアップスラックと、前記フリップフロップの後段の複数個のフリップフロップのホールドスラックの最小値に基づいて、セットアップ違反およびホールド違反を起こさない範囲で、前記フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する、請求項2記載の半導体設計装置。
【請求項4】
前記フリップフロップの後段のフリップフロップが複数個ある場合に、
前記第1のクロックレイテンシ調整部は、前記セットアップスラックと、前記フリップフロップの後段の複数個のフリップフロップのホールドスラックの最小値のうちの小さい方の値だけ前記フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する、請求項3記載の半導体設計装置。
【請求項5】
前記第1のクロックレイテンシ調整部は、複数個のフリップフロップのクロックレイテンシを調整する場合に、前記複数個のフリップフロップを前記セットアップスラックの大きい方から順番に順序を付けて、
前記セットアップスラックの大きいフリップフロップから順番に前記クロックレイテンシを調整し、各フリップフロップの前記クロックレイテンシを調整するごとに前記セットアップスラックおよび前記ホールドスラックを再計算する、請求項1記載の半導体設計装置。
【請求項6】
前記フリップフロップの後段のフリップフロップが複数個ある場合に、
前記第1のクロックレイテンシ調整部は、前記セットアップスラックと、前記フリップフロップの後段の複数個のフリップフロップのホールドスラックの最小値のうちの小さい方の値をフリップフロップのマージンとし、前記複数個のフリップフロップのマージンの最大値を最大のクロックレイテンシとし、
前記第1のクロックレイテンシ調整部は、前記最大のクロックレイテンシからフリップフロップのマージンを減算することによって、前記フリップフロップの相対的なクロックレイテンシを算出する、請求項5記載の半導体設計装置。
【請求項7】
前記第1のクロックレイテンシ調整部は、前記フリップフロップへのデータパス遅延が、クロックの周期よりも長い場合でも、前記セットアップスラックに基づいて、前記フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する、請求項1記載の半導体設計装置。
【請求項8】
前記半導体設計装置は、さらに、
前記第1のクロックレイテンシ調整部によるクロックレイテンシの調整の後、クロックレイテンシの頻度分布が第1の値に集中する場合に、前記第1の値のクロックレイテンシを有する複数個のフロップフロップを選択し、前記選択した各フリップフロップのクロックレイテンシの現在の設計値と、前記第1のクロックレイテンシ調整部によるクロックレイテンシの調整によって変化した前記選択した各フリップフロップのセットアップスラックに基づいて、タイミング違反を起こさない範囲で、前記選択した各フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する第2のクロックレイテンシ調整部と備えた、請求項1に記載の半導体設計装置。
【請求項9】
前記第2のクロックレイテンシ調整部は、前記選択した各フリップフロップのセットアップスラックと、前記第1のクロックレイテンシ調整部によるクロックレイテンシの調整によって変化した前記選択した各フリップフロップの後段のフリップフロップのホールドスラックに基づいて、セットアップ違反およびホールド違反を起こさない範囲で、前記選択した各フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する、請求項8記載の半導体設計装置。
【請求項10】
前記選択した各フリップフロップの後段のフリップフロップが複数個ある場合において、
前記第2のクロックレイテンシ調整部は、前記選択した各フリップフロップのセットアップスラックと、前記第1のクロックレイテンシ調整部によるクロックレイテンシの調整によって変化した前記選択した各フリップフロップの後段のフリップフロップのホールドスラックの最小値に基づいて、セットアップ違反およびホールド違反を起こさない範囲で、前記選択した各フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する、請求項9記載の半導体設計装置。
【請求項11】
前記選択した各フリップフロップの後段のフリップフロップが複数個ある場合に、
前記第2のクロックレイテンシ調整部は、前記選択した各フリップフロップのセットアップスラックと、前記第1のクロックレイテンシ調整部によるクロックレイテンシの調整によって変化した前記選択した各フリップフロップの後段のフリップフロップのホールドスラックの最小値のうちの小さい方の値だけ前記選択した各フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する、請求項10記載の半導体設計装置。
【請求項12】
前記第2のクロックレイテンシ調整部は、前記選択した複数個のフリップフロップを前記セットアップスラックの大きい方から順番に順序付けて、
前記第2のクロックレイテンシ調整部は、前記選択した複数個のフリップフロップのうち、前記セットアップスラックの大きいフリップフロップから順番に前記クロックレイテンシを調整し、各フリップフロップの前記クロックレイテンシを調整するごとに前記セットアップスラックおよび前記ホールドスラックを再計算する、請求項8記載の半導体設計装置。
【請求項1】
論理合成によって設計されたフリップフロップのクロックレイテンシを調整する半導体設計装置であって、
フリップフロップのクロックレイテンシの現在の設計値に基づいて、フリップフロップのセットアップ時間のマージンであるセットアップスラックを算出するスラック解析部と、
前記算出したセットアップスラックに基づいて、タイミング違反を起こさない範囲で、前記フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する第1のクロックレイテンシ調整部とを備えた、半導体設計装置。
【請求項2】
前記スラック解析部は、さらに、前記クロックレイテンシの現在の設計値に基づいて、前記フリップフロップのホールド時間のマージンであるホールドスラックを算出し、
前記第1のクロックレイテンシ調整部は、前記セットアップスラックと前記フリップフロップの後段のフリップフロップのホールドスラックに基づいて、セットアップ違反およびホールド違反を起こさない範囲で、前記フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する、請求項1記載の半導体設計装置。
【請求項3】
前記フリップフロップの後段のフリップフロップが複数個ある場合において、
前記第1のクロックレイテンシ調整部は、前記セットアップスラックと、前記フリップフロップの後段の複数個のフリップフロップのホールドスラックの最小値に基づいて、セットアップ違反およびホールド違反を起こさない範囲で、前記フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する、請求項2記載の半導体設計装置。
【請求項4】
前記フリップフロップの後段のフリップフロップが複数個ある場合に、
前記第1のクロックレイテンシ調整部は、前記セットアップスラックと、前記フリップフロップの後段の複数個のフリップフロップのホールドスラックの最小値のうちの小さい方の値だけ前記フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する、請求項3記載の半導体設計装置。
【請求項5】
前記第1のクロックレイテンシ調整部は、複数個のフリップフロップのクロックレイテンシを調整する場合に、前記複数個のフリップフロップを前記セットアップスラックの大きい方から順番に順序を付けて、
前記セットアップスラックの大きいフリップフロップから順番に前記クロックレイテンシを調整し、各フリップフロップの前記クロックレイテンシを調整するごとに前記セットアップスラックおよび前記ホールドスラックを再計算する、請求項1記載の半導体設計装置。
【請求項6】
前記フリップフロップの後段のフリップフロップが複数個ある場合に、
前記第1のクロックレイテンシ調整部は、前記セットアップスラックと、前記フリップフロップの後段の複数個のフリップフロップのホールドスラックの最小値のうちの小さい方の値をフリップフロップのマージンとし、前記複数個のフリップフロップのマージンの最大値を最大のクロックレイテンシとし、
前記第1のクロックレイテンシ調整部は、前記最大のクロックレイテンシからフリップフロップのマージンを減算することによって、前記フリップフロップの相対的なクロックレイテンシを算出する、請求項5記載の半導体設計装置。
【請求項7】
前記第1のクロックレイテンシ調整部は、前記フリップフロップへのデータパス遅延が、クロックの周期よりも長い場合でも、前記セットアップスラックに基づいて、前記フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する、請求項1記載の半導体設計装置。
【請求項8】
前記半導体設計装置は、さらに、
前記第1のクロックレイテンシ調整部によるクロックレイテンシの調整の後、クロックレイテンシの頻度分布が第1の値に集中する場合に、前記第1の値のクロックレイテンシを有する複数個のフロップフロップを選択し、前記選択した各フリップフロップのクロックレイテンシの現在の設計値と、前記第1のクロックレイテンシ調整部によるクロックレイテンシの調整によって変化した前記選択した各フリップフロップのセットアップスラックに基づいて、タイミング違反を起こさない範囲で、前記選択した各フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する第2のクロックレイテンシ調整部と備えた、請求項1に記載の半導体設計装置。
【請求項9】
前記第2のクロックレイテンシ調整部は、前記選択した各フリップフロップのセットアップスラックと、前記第1のクロックレイテンシ調整部によるクロックレイテンシの調整によって変化した前記選択した各フリップフロップの後段のフリップフロップのホールドスラックに基づいて、セットアップ違反およびホールド違反を起こさない範囲で、前記選択した各フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する、請求項8記載の半導体設計装置。
【請求項10】
前記選択した各フリップフロップの後段のフリップフロップが複数個ある場合において、
前記第2のクロックレイテンシ調整部は、前記選択した各フリップフロップのセットアップスラックと、前記第1のクロックレイテンシ調整部によるクロックレイテンシの調整によって変化した前記選択した各フリップフロップの後段のフリップフロップのホールドスラックの最小値に基づいて、セットアップ違反およびホールド違反を起こさない範囲で、前記選択した各フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する、請求項9記載の半導体設計装置。
【請求項11】
前記選択した各フリップフロップの後段のフリップフロップが複数個ある場合に、
前記第2のクロックレイテンシ調整部は、前記選択した各フリップフロップのセットアップスラックと、前記第1のクロックレイテンシ調整部によるクロックレイテンシの調整によって変化した前記選択した各フリップフロップの後段のフリップフロップのホールドスラックの最小値のうちの小さい方の値だけ前記選択した各フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する、請求項10記載の半導体設計装置。
【請求項12】
前記第2のクロックレイテンシ調整部は、前記選択した複数個のフリップフロップを前記セットアップスラックの大きい方から順番に順序付けて、
前記第2のクロックレイテンシ調整部は、前記選択した複数個のフリップフロップのうち、前記セットアップスラックの大きいフリップフロップから順番に前記クロックレイテンシを調整し、各フリップフロップの前記クロックレイテンシを調整するごとに前記セットアップスラックおよび前記ホールドスラックを再計算する、請求項8記載の半導体設計装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【公開番号】特開2012−14585(P2012−14585A)
【公開日】平成24年1月19日(2012.1.19)
【国際特許分類】
【出願番号】特願2010−152268(P2010−152268)
【出願日】平成22年7月2日(2010.7.2)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】
【公開日】平成24年1月19日(2012.1.19)
【国際特許分類】
【出願日】平成22年7月2日(2010.7.2)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】
[ Back to top ]