JP4973561B2 - 半導体集積回路の設計方法。 - Google Patents

半導体集積回路の設計方法。 Download PDF

Info

Publication number
JP4973561B2
JP4973561B2 JP2008080732A JP2008080732A JP4973561B2 JP 4973561 B2 JP4973561 B2 JP 4973561B2 JP 2008080732 A JP2008080732 A JP 2008080732A JP 2008080732 A JP2008080732 A JP 2008080732A JP 4973561 B2 JP4973561 B2 JP 4973561B2
Authority
JP
Japan
Prior art keywords
variation
value
timing
slack
flip
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.)
Expired - Fee Related
Application number
JP2008080732A
Other languages
English (en)
Other versions
JP2009237727A (ja
Inventor
信昭 野中
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.)
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor Ltd
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 Fujitsu Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2008080732A priority Critical patent/JP4973561B2/ja
Publication of JP2009237727A publication Critical patent/JP2009237727A/ja
Application granted granted Critical
Publication of JP4973561B2 publication Critical patent/JP4973561B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Design And Manufacture Of Integrated Circuits (AREA)

Description

本願の開示は、一般に計算機利用設計に関し、詳しくは計算機を用いた半導体集積回路の設計方法に関する。
半導体集積回路の設計工程においては、まずRTL(Register Transfer Level)等のハードウェア記述言語により回路を記述し、そのRTL等の回路記述に基づいて論理合成し、更に論理合成により生成されたネットリストに基づいてレイアウト設計を行なう。このレイアウト設計の後に、各ゲートのタイミングのバラツキを考慮したタイミング検証を行なうことにより、最終的な動作検証が行なわれる。このレイアウト後のタイミング検証によりタイミング違反が検出されると、レイアウトを変更することによりタイミング違反の解消を図る。またレイアウト変更してもタイミング違反が解消されない場合には、論理合成を再度実行してネットリストを変更する。しかし論理合成段階ではゲートのタイミングのバラツキを考慮していないので、論理合成を再度実行してネットリストを変更しても、レイアウト設計後のタイミング検証で再度タイミング違反が発生してしまう可能性が十分にある。このような理由により、設計工程が収束しにくいという問題があった。
図1は、従来の設計工程の概略を示すフローチャートである。図1のステップS1で、RTL記述をゲートにマッピングすることにより論理合成を行なう。即ち、RTL記述から、論理合成ツールを用いることにより、論理ゲート回路を示すネットリストを自動的に生成する。この際、面積や消費電力などの設計制約条件を満たすように回路の自動生成が実行される。
ステップS2で、タイミング解析によるタイミング最適化を実行する。ステップS1で生成された回路の各論理ゲートはそれぞれ固有の遅延値を有する。ステップS2では、各論理ゲートの遅延値を加算していくことにより論理ゲート回路の遅延値を求める。この遅延値に基づいて、各フリップフロップ入力端でのセットアップ時間やホールド時間などの要求されるタイミング条件が満たされているか否かを確認する。確認した結果、タイミング条件が満たされていない箇所については、回路の組み替えや論理ゲート素子の入れ替え等を実行する。これにより、タイミングが最適化されたネットリストが生成される。
以上のステップS1及びS2が論理合成工程に相当する。この論理合成工程の後に物理合成工程が実行される。
この物理合成工程におけるステップS3で、論理合成工程により生成されたネットリストに基づいてレイアウト設計(プレース&ルート:配置&配線)を行なうとともに、レイアウトを考慮したタイミング最適化を実行する。レイアウト設計においては、論理ゲート回路のネットリストに従ってチップ上にセル(論理ゲート)を自動的に配置するとともに、セル間を結合する配線を引く。タイミング最適化においては、配線の抵抗R、インダクタL、及び容量Cに基づいてタイミング検証を行い、タイミング違反部分のレイアウトを変更することで、タイミングが最適化されたレイアウトを生成する。
以上のステップS3の物理合成工程の後にサインオフ検証工程が実行される。サインオフ(Sign-off)検証とは、レイアウト設計終了後に行なう検証であり、半導体集積回路が所望の機能やタイミング仕様を満足しているか否かの最終的な確認作業である。
このサインオフ検証工程におけるステップS4で、バラツキを考慮したタイミング検証が実行される。即ち、各論理ゲートの遅延のバラツキ及び配線RLC値のバラツキを規定したライブラリに基づいてタイミングを計算することにより、バラツキの存在する条件の下で所望のタイミング条件が満たされるか否かを検証する。このタイミング検証の結果、タイミング違反が検出されると、ステップS3に戻りレイアウトを変更する。また図1には示されていないが、前述のように、レイアウト変更してもタイミング違反が解消されない場合には、論理合成を再度実行してネットリストを変更する処理が行なわれる。
図1に示す設計工程では、論理合成工程の段階(S1,S2)において全くバラツキが考慮されていないために、その後のバラツキを考慮したタイミング検証(S4)における収束が悪いという問題がある。即ち、S4でのタイミング違反検出に応じたS3でのレイアウト変更が繰り返し何度も実行されたり、更にはS4でのタイミング違反検出に応じた論理合成の再度実行が繰り返し何度も実行されたりする場合がある。
特開平7−334530号公報
以上を鑑みると、論理合成工程においてバラツキを考慮した半導体集積回路の設計方法が望まれる。
半導体集積回路の設計方法は、セルの遅延時間のバラツキを示す数値であるバラツキ値をセルの種類毎に規定し、回路記述から論理合成によりネットリストを生成し、該ネットリストにおける着目フリップフロップの入力端に至る複数のパス毎に、パスを構成するセルの該バラツキ値を合計してバラツキ合計を算出し、該複数のパスの該バラツキ合計のうちで最大のものを最大バラツキ合計として選択し、該複数のパスのタイミングスラックのうちで最悪のものをワーストタイミングスラックとして、該ワーストタイミングスラックが所定のスラック値よりも悪くならない範囲で該最大バラツキ合計を減少させるように該ネットリストのセルを入れ替える各段階を含む。
少なくとも1つの実施例によれば、複数のパスのバラツキ合計のうちで最大のものを最大バラツキ合計として、ワーストタイミングスラックが所定のスラック値よりも悪くならない範囲で最大バラツキ合計を減少させる。これにより、論理合成工程においてバラツキを考慮したタイミング最適化処理を実現することができる。
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
図2は、論理合成工程においてバラツキを考慮した半導体集積回路の設計方法を示すフローチャートである。図2のフローチャートに示す処理は、後ほど説明するようにコンピュータにより実行される。
図2のステップS1で、RTL記述をゲートにマッピングすることにより論理合成を行なう。即ち、RTL記述から、論理合成ツールを用いることにより、論理ゲート回路を示すネットリストを自動的に生成する。この際、面積や消費電力などの設計制約条件を満たすように回路の自動生成が実行される。
ステップS2で、全フリップフロップ(FF)の最大バラツキ合計を算出する。この最大バラツキ合計は、セルの遅延時間のバラツキを示す数値であるバラツキ値をセルの種類毎に規定したセル種毎バラツキデータベース10を参照して計算される。
図3は、最大バラツキ合計の算出について説明するための図である。図3には、論理合成により生成されたネットリストに対応する回路が示される。図3の回路は、フリップフロップ11乃至16、NAND回路20乃至23、及びインバータ24及び25が含まれる。NAND回路やインバータである各ゲート素子の下に示される「NAND3」や「INV3」等の記述は、それぞれ対応するゲート素子の種類を示す。
図4は、セル種毎バラツキデータベース10におけるNAND回路についてのセル種毎バラツキデータ31を示す図である。セル種毎バラツキデータ31には、3つの種類のNAND回路NAND1、NAND2、及びNAND3について、相対的なバラツキ値が示される。これらの相対バラツキ値は、値が大きいほど当該ゲートにおける遅延時間のバラツキが大きいことを示す。相対バラツキ値同士の比率は、遅延時間のバラツキの比率であってよい。例えば、相対バラツキ値が4であるNAND1の遅延時間のバラツキは±2nsであり、相対バラツキ値が5であるNAND2の遅延時間のバラツキは±2.5nsであってよい。このように相対バラツキ値は、基準となる遅延時間のバラツキを1としたときに、当該ゲート素子の遅延時間のバラツキを相対的に示した値である。例えば、遅延時間のバラツキが最小の素子がある種のインバータであり、このインバータの遅延時間のバラツキDを基準として使用するとする。この場合、あるゲート素子の相対バラツキ値は、そのゲート素子の遅延時間のバラツキをDで割った値であってよい。
セル種毎バラツキデータ31には更に、3つの種類のNAND回路について、相対的な遅延時間である相対遅延値が示される。これらの相対遅延値は、値が大きいほど当該ゲートにおける遅延時間が大きいことを示す。相対遅延値同士の比率は、遅延時間の比率であってよい。例えば、相対遅延値が4であるNAND1の遅延時間は±2nsであり、相対遅延値が3であるNAND2の遅延時間は±1.5nsであってよい。このように相対遅延値は、基準となる時間を1としたときに、当該ゲート素子の遅延時間を相対的に示した値である。例えば、遅延時間が最小の素子がある種のインバータであり、このインバータの遅延時間Dを基準として使用するとする。この場合、あるゲート素子の相対遅延値は、そのゲート素子の遅延時間をDで割った値であってよい。また例えば、基準となる時間をクロックの1サイクルとすれば、相対遅延値は遅延時間をクロックサイクル数で計った値となる。
図5は、セル種毎バラツキデータベース10におけるインバータについてのセル種毎バラツキデータ32を示す図である。セル種毎バラツキデータ32には、3つの種類のインバータINV1、INV2、及びINV3について、相対バラツキ値及び相対遅延値が示される。相対バラツキ値及び相対遅延値の意味はNAND回路の場合と同様である。
図3において、各ゲート素子の内部に示される数値は、図4又は図5に示される相対バラツキ値である。即ち例えばNAND回路21は、種類がNAND3であるので、図4から相対バラツキ値が10であることが分かる。この値10がNAND回路21の回路シンボル内に記されている。
図2のステップS2における最大バラツキ合計の算出においては、ネットリストにおける着目フリップフロップの入力端に至る複数のパス毎に、パスを構成するセルのバラツキ値を合計してバラツキ合計を算出し、複数のパスのバラツキ合計のうちで最大のものを最大バラツキ合計として選択する。フリップフロップ11を着目フリップフロップとすると、その入力端に至るパスは5つある。即ち、フリップフロップ12の出力からフリップフロップ11の入力に至る第1のパス、フリップフロップ13の出力からフリップフロップ11の入力に至る第2のパス、フリップフロップ14の出力からフリップフロップ11の入力に至る第3のパス、フリップフロップ15の出力からフリップフロップ11の入力に至る第4のパス、フリップフロップ16の出力からフリップフロップ11の入力に至る第5のパスである。これらの5つのパスの各々についてパスを構成するセルのバラツキ値を合計すると、第1のパスについては32、第2のパスについては42、第3のパスについても42、第4のパスについては20、第5のパスについても20となる。これらの5つのパスのバラツキ合計32、42、42、20、及び20のうちで最大の値42を最大バラツキ合計として選択する。同様にして、ネットリストに関係する全てのフリップフロップについて最大バラツキ合計を求める。
次に図2のステップS3で、タイミング解析によるタイミング最適化を実行する。ステップS1で生成された回路の各論理ゲートはそれぞれ固有の遅延値を有する。ステップS2では、各論理ゲートの遅延値を加算していくことにより論理ゲート回路の遅延値を求める。この遅延値に基づいて、各フリップフロップ入力端でのセットアップ時間やホールド時間などの要求されるタイミング条件が満たされているか否かを確認する。確認した結果、タイミング条件が満たされていない箇所については、回路の組み替えや論理ゲート素子の入れ替え等を実行する。これにより、タイミングが最適化されたネットリストが生成される。
ステップS4で、最大バラツキ合計を改善するバラツキ最適化処理を実行する。具体的には、着目フリップフロップについて、上記の複数のパスのタイミングスラックのうちで最悪のものをワーストタイミングスラックとする。そして、ワーストタイミングスラックが所定のスラック値よりも悪くならない範囲で最大バラツキ合計を減少させるようにネットリストのセルを入れ替える。
図6は、ワーストタイミングスラックについて説明するための図である。図6には図3と同一の回路が示され、図3と同一の構成要素は同一の番号で参照し、その説明は省略する。図6において、NAND回路やインバータである各ゲート素子の上に示される数値は、図4又は図5に示される相対遅延値である。即ち例えばNAND回路21は、種類がNAND3であるので、図4から相対遅延値が2であることが分かる。この値2がNAND回路21の回路シンボルの上に記されている。
前述した第1乃至第5のパスのそれぞれについて、相対遅延値の合計値は6、8、8、4、及び4である。あるパスのタイミングスラックとは、そのパスの終点における信号の実際の到達時間と要求到達時間との差である。即ち、タイミングスラックとは、そのパスの終点に信号が到達する時間とタイミング要件を満たすために当該信号が当該終点に到達すべき最も遅い時間との差分である。例えば、フリップフロップ12乃至16が同一のタイミング(時間T=0とする)で信号を出力し、フリップフロップ11の入力端で信号が到達しているべき要求到達時間はT=13であるとする。このT=13は、相対遅延値と同一の単位で時間を表現した数値である。即ち、例えば基準となる遅延時間がDである場合、信号出力タイミングの時間(T=0)から要求到達時間までの時間間隔をDで割ると13になるということである。この場合、フリップフロップ12の出力からフリップフロップ11の入力に至る第1のパスのタイミングスラックは7(=13−6)である。同様にして、フリップフロップ13の出力からフリップフロップ11の入力に至る第2のパスのタイミングスラックは5(=13−8)である。またフリップフロップ14の出力からフリップフロップ11の入力に至る第3のパスのタイミングスラックは5(=13−8)である。フリップフロップ15の出力からフリップフロップ11の入力に至る第4のパスのタイミングスラックは9(=13−4)である。更に、フリップフロップ16の出力からフリップフロップ11の入力に至る第5のパスのタイミングスラックは9(=13−4)である。
前述のように図2のステップS4のバラツキ最適化処理では、上記の複数のパスのタイミングスラックのうちで最悪のものをワーストタイミングスラックとする。5つのパスのタイミングスラックは、7、5、5、9、及び9である。タイミングスラックは値が小さいほどタイミングに余裕が無いことを意味するので、5つのタイミングスラックのうちで最悪のタイミングスラックは5となる。ステップS4のバラツキ最適化処理では、このワーストタイミングスラックが所定のスラック値よりも悪くならない範囲で最大バラツキ合計を減少させるようにネットリストのセルを入れ替える。例えば、ワーストタイミングスラックが0よりも小さくならない範囲でネットリストのセルを入れ替える。ワーストタイミングスラックが0以上であれば、要求されるタイミング要件を満たしているが、ワーストタイミングスラックが負になると、要求されるタイミング要件が満たされない。従って、ワーストタイミングスラックが0よりも小さくならない範囲でネットリストのセルを入れ替えるということは、要求されるタイミング要件が満たされる範囲で最大バラツキ合計を減少させることを意味する。また例えば、余裕を見て、ワーストタイミングスラックが1よりも小さくならない範囲でネットリストのセルを入れ替えるようにしてもよい。ネットリストのセルの入れ替えについては後ほど詳細に説明する。
図2において以上説明したステップS1乃至S4が論理合成工程に相当する。この論理合成工程の後に物理合成工程が実行される。
この物理合成工程におけるステップS5で、論理合成工程により生成されたネットリストに基づいてレイアウト設計(プレース&ルート:配置&配線)を行なうとともに、レイアウトを考慮したタイミング最適化を実行する。レイアウト設計においては、論理ゲート回路のネットリストに従ってチップ上にセル(論理ゲート)を自動的に配置するとともに、セル間を結合する配線を引く。タイミング最適化においては、配線の抵抗R、インダクタL、及び容量Cに基づいてタイミング検証を行い、タイミング違反部分のレイアウトを変更することで、タイミングが最適化されたレイアウトを生成する。
以上のステップS5の物理合成工程の後にサインオフ検証工程が実行される。このサインオフ検証工程におけるステップS6で、バラツキを考慮したタイミング検証が実行される。即ち、各論理ゲートの遅延のバラツキ及び配線RLC値のバラツキを規定したライブラリに基づいてタイミングを計算することにより、バラツキの存在する条件の下で所望のタイミング条件が満たされるか否かを検証する。このタイミング検証の結果、タイミング違反が検出されると、ステップS5に戻りレイアウトを変更する。また図2には示されていないが、レイアウト変更してもタイミング違反が解消されない場合には、論理合成を再度実行してネットリストを変更する処理を行なってよい。
以下に、ワーストタイミングスラックが所定のスラック値よりも悪くならない範囲で最大バラツキ合計を減少させるようにネットリストのセルを入れ替える処理について説明する。この処理では、フリップフロップの入力端から複数のパスを上流に向かいトレースしていくことにより順次見つかったセルを入れ替えるようにしてよい。
図6の回路を例にとると、フリップフロップ11の入力端からパスを上流に向かいトレースしていくと、まず最初にNAND回路23が見つかる。従って、このNAND回路23がセル入れ替え処理の対象となる。NAND回路23の種類はNAND3であり、図4を参照すると、NAND3よりも相対バラツキ値が小さなNAND回路としてNAND1及びNAND2が利用できることが分かる。この場合、NAND1の方が相対バラツキ値が小さいので、まずNAND回路23をNAND1に入れ替えることを検討する。この際、着目セルをバラツキ値がより小さな別の種類のセルに入れ替えた場合のワーストタイミングスラックを算出し、算出されたワーストタイミングスラックが所定のスラック値よりも悪いか否かを判断する。
図7は、セルの入れ替えを説明するための図である。図7において、図6と同一の構成要素は同一の番号で参照し、その説明は省略する。
図7に示す回路は、図6に示す回路と比較して、種類がNAND3であるNAND回路23が、種類がNAND1であるNAND回路23Aに入れ替えられていることが異なる。NAND回路23の相対バラツキ値が10で相対遅延値が2であるのに対して、NAND回路23Aの相対バラツキ値は4で相対遅延値が4である。このセル入れ替えにより、最大バラツキ合計が42から36に減少(向上)し、ワーストタイミングスラックが5から3(=13−10)に減少(悪化)している。即ち、着目セルをバラツキ値がより小さな別の種類のセルに入れ替えた場合のワーストタイミングスラックは3である。所定のスラック値を0とすれば、このワーストタイミングスラックは所定のスラック値よりも良好である(大きい)。従って、種類がNAND3であるNAND回路23を種類がNAND1であるNAND回路23Aに入れ替える処理は、ワーストタイミングスラックが所定のスラック値よりも悪くならない範囲で最大バラツキ合計を減少させる。従って、この入れ替え処理を有効な処理として実行し、ネットリストを変更する。
その後更に、フリップフロップ11の入力端からパスを上流に向かいトレースしていくと、例えば次にNAND回路22が見つかる。従って、このNAND回路22がセル入れ替え処理の対象となる。なお上流に行くにつれて複数のパスに分岐する場合には、複数のパスの各々を順番にチェックすればよい。なおこの際、最大バラツキ合計に対応するパスを記憶しておき、このパス上にないセルは入れ替えの対象から外すように処理を構成してもよい。
NAND回路22の種類はNAND3であり、図4を参照すると、NAND3よりも相対バラツキ値が小さなNAND回路としてNAND1及びNAND2が利用できることが分かる。この場合、NAND1の方が相対バラツキ値が小さいので、まずNAND回路22をNAND1に入れ替えることを検討する。
図8は、セルの入れ替えを説明するための図である。図8において、図7と同一の構成要素は同一の番号で参照し、その説明は省略する。
図8に示す回路は、図7に示す回路と比較して、種類がNAND3であるNAND回路22が、種類がNAND1であるNAND回路22Aに入れ替えられていることが異なる。このセル入れ替えにより、最大バラツキ合計は36のままであり、ワーストタイミングスラックも3のままである。従って、種類がNAND3であるNAND回路22を種類がNAND1であるNAND回路22Aに入れ替える処理は、ワーストタイミングスラックが所定のスラック値(この例では0)よりも悪くならない範囲の処理である。従って、この入れ替え処理を有効な処理として実行し、ネットリストを変更する。なお、このセル入れ替え処理では、ワーストタイミングスラックが所定のスラック値よりも悪くならない範囲ではあるが、最大バラツキ合計36が減少していない。このような場合には、ネットリストを変更しないような手順としてもよい。
その後更に、フリップフロップ11の入力端からパスを上流に向かいトレースしていくと、例えば次にインバータ25が見つかる。従って、このインバータ25がセル入れ替え処理の対象となる。
インバータ25の種類はINV3であり、図5を参照すると、INV3よりも相対バラツキ値が小さなインバータとしてINV1及びINV2が利用できることが分かる。この場合、INV1の方が相対バラツキ値が小さいので、まずインバータ25をINV1に入れ替えることを検討する。
図9は、セルの入れ替えを説明するための図である。図9において、図8と同一の構成要素は同一の番号で参照し、その説明は省略する。
図9に示す回路は、図8に示す回路と比較して、種類がINV3であるインバータ25が、種類がINV1であるインバータ25Aに入れ替えられていることが異なる。このセル入れ替えにより、最大バラツキ合計は36から32になり、ワーストタイミングスラックは3から1(=13−12)になる。従って、種類がINV3であるインバータ25を種類がINV1であるインバータ25Aに入れ替える処理は、ワーストタイミングスラックが所定のスラック値(この例では0)よりも悪くならない範囲の処理で最大バラツキ合計を減少させる。従って、この入れ替え処理を有効な処理として実行し、ネットリストを変更する。
その後更に、フリップフロップ11の入力端からパスを上流に向かいトレースしていくと、例えば次にインバータ24が見つかる。従って、このインバータ24がセル入れ替え処理の対象となる。
インバータ24の種類はINV3であり、図5を参照すると、INV3よりも相対バラツキ値が小さなインバータとしてINV1及びINV2が利用できることが分かる。この場合、INV1の方が相対バラツキ値が小さいので、まずインバータ24をINV1に入れ替えることを検討する。
図10は、セルの入れ替えを説明するための図である。図10において、図9と同一の構成要素は同一の番号で参照し、その説明は省略する。
図10に示す回路は、図9に示す回路と比較して、種類がINV3であるインバータ24が、種類がINV1であるインバータ24Aに入れ替えられていることが異なる。このセル入れ替えにより、最大バラツキ合計は32から28になり、ワーストタイミングスラックは1から−1(=13−14)になる。従って、種類がINV3であるインバータ24を種類がINV1であるインバータ24Aに入れ替える処理は、ワーストタイミングスラックが所定のスラック値(この例では0)よりも悪くなる処理である。従って、この入れ替え処理は無効な処理であり、ネットリストの変更はしない。
再び図5を参照し、INV3よりも相対バラツキ値が小さなインバータとして利用できるINV1及びINV2のうち、INV1が利用できないことが分かったので、次にINV2が利用できるか否かを検討する。
図11は、セルの入れ替えを説明するための図である。図11において、図9と同一の構成要素は同一の番号で参照し、その説明は省略する。
図11に示す回路は、図9に示す回路と比較して、種類がINV3であるインバータ24が、種類がINV2であるインバータ24Bに入れ替えられていることが異なる。このセル入れ替えにより、最大バラツキ合計は32から29になり、ワーストタイミングスラックは1から0(=13−13)になる。従って、種類がINV3であるインバータ24を種類がINV2であるインバータ24Bに入れ替える処理は、ワーストタイミングスラックが所定のスラック値(この例では0)よりも悪くならない範囲の処理で最大バラツキ合計を減少させる。従って、この入れ替え処理を有効な処理として実行し、ネットリストを変更する。
以上のようにして、フリップフロップの入力端から複数のパスを上流に向かいトレースしていくことにより順次見つかったセルを入れ替え対象として検討する。入れ替えにより、ワーストタイミングスラックが所定のスラック値よりも悪くならない範囲で最大バラツキ合計を減少させるようにネットリストを変更する。例えば、入れ替え対象のセルがなくなるか又は更なる有効な入れ替え処理が不可能となるまで処理を繰り返して、最大バラツキ合計を減少させてよい。また或いは、最大バラツキ合計が所定の値以下になった時点で処理を終了させるようにしてもよい。
以下に、図1に示す半導体集積回路の設計方法と図2に示す半導体集積回路の設計手法との相違点について説明する。図12は、設計対象の回路の一例を示す図である。図12に示す回路は、フリップフロップ41及び42並びに40個のインバータ43−1乃至43−40を含む。フリップフロップ41の出力端から出力される信号が、直列接続された40段のインバータ43−1乃至43−40を伝搬して、フリップフロップ42の入力端に到達する。
図13は、フリップフロップ42のデータ取り込みタイミングについて説明するための図である。図13(a)において、フリップフロップ41の出力端から時間T=0でデータ信号dataを出力し、フリップフロップ42の入力端において時間T=10でクロック信号clkの立ち上がりエッジに同期してデータ信号を取り込む。図13(a)において、データ信号dataの欄に示す斜線でハッチされたバー51の長さは、フリップフロップ41の出力端からフリップフロップ42の入力端までのデータ信号dataの伝搬時間(遅延時間)を示したものである。即ち、T=0でフリップフロップ41の出力端から出力されたデータは、T=5でフリップフロップ42の入力端に到達する。データ信号dataの欄に示すハッチ無しのバー52は、フリップフロップ42の入力端においてデータ信号dataが有効である時間を示す。また矢印53は、フリップフロップ42のセットアップタイムを示す。従って、例えば矢印の長さを2.5とすると、フリップフロップ42の入力端でデータ信号が到達しているべき要求到達時間はT=7.5である。データ信号dataは、要求到達時間T=7.5の前にフリップフロップ42の入力端に到達しているので、要求タイミングは満たされている。
図1の半導体集積回路の設計方法における論理合成工程は、バラツキは考慮することなく、要求タイミングが満たされることのみを考慮している。従って、図13(a)に示すようなタイミング関係が満たされれば、論理合成工程は終了する。しかしその後、サインオフ工程でバラツキを考慮したタイミング検証を実行すると、例えば図13(b)のようなタイミング違反が検出される。図13(b)では、バー54がデータ信号dataの到達時間のバラツキを示している。バー54の右端が矢印53の左端よりも時間的に後に位置しているので、最悪の条件では、要求タイミングが満たされないことになる。このようなタイミング違反を収束させるためにレイアウト変更或いは更に論理合成のやり直しが必要になり、設計処理の収束が悪い。
図14は、図2の半導体集積回路の設計工程によるタイミング最適化を説明するための図である。図14において、図13と同一の部分は同一の番号で参照し、その説明は省略する。図14(a)は、図13(b)と同様の図であり、斜線でハッチされたバー51の長さは、フリップフロップ41の出力端からフリップフロップ42の入力端までのデータ信号dataの伝搬時間(遅延時間)を示したものである。またハッチ無しのバー52は、フリップフロップ42の入力端においてデータ信号dataが有効である時間を示す。また矢印53は、フリップフロップ42のセットアップタイムを示す。データ信号dataの到達時間のバラツキを示しているバー54の右端が、矢印53の左端よりも時間的に後に位置しているので、最悪の条件では、要求タイミングが満たされないことになる。
図2の半導体集積回路の設計方法における論理合成工程は、バラツキを考慮してタイミング最適化を行なっている。従って、図14(a)に示すような違法なタイミング関係を、論理合成工程において、図14(b)に示すようなタイミング関係に修正することができる。即ち、図12に示す回路において、最大バラツキ合計が減少するようにセル(インバータ)の入れ替えを行なう。この際、ワーストタイミングスラックが所定のスラック値よりも悪くならない範囲でセルの入れ替えが実行される。図14(b)では、斜線でハッチされたバー61の長さは、セル入れ替えにより増大したデータ信号dataの伝搬時間(遅延時間)を示す。ハッチ無しのバー62は、フリップフロップ42の入力端においてデータ信号dataが有効である時間を示す。ワーストタイミングスラックが所定のスラック値(例えば0)よりも悪くならない範囲でセルの入れ替えを実行するので、要求到達時間T=7.5の前にデータ信号dataがフリップフロップ42の入力端に到達していることが保証される。
また図14(b)では、バー64がデータ信号dataの到達時間のバラツキを示している。セルの入れ替え処理により、図14(a)のバー54の幅に比較して図14(b)のバー64の幅は減少している。即ち、最大バラツキ合計が減少している。この結果、バー64の右端が矢印53の左端よりも時間的に前に位置しているので、最悪の条件でも、要求タイミングが満たされることになる。このように論理合成工程においてバラツキを考慮してタイミング最適化を実行するので、その後のサインオフ工程でのバラツキを考慮したタイミング検証において、タイミング違反の収束性が向上する。
図15は、本発明による半導体集積回路の設計方法を実行する装置の構成を示す図である。
図15に示されるように、半導体集積回路の設計方法を実行する装置は、例えばパーソナルコンピュータやエンジニアリングワークステーション等のコンピュータにより実現される。図15の装置は、コンピュータ510と、コンピュータ510に接続されるディスプレイ装置520、通信装置523、及び入力装置よりなる。入力装置は、例えばキーボード521及びマウス522を含む。コンピュータ510は、CPU511、RAM512、ROM513、ハードディスク等の二次記憶装置514、可換媒体記憶装置515、及びインターフェース516を含む。
キーボード521及びマウス522は、ユーザとのインターフェースを提供するものであり、コンピュータ510を操作するための各種コマンドや要求されたデータに対するユーザ応答等が入力される。ディスプレイ装置520は、コンピュータ510で処理された結果等を表示すると共に、コンピュータ510を操作する際にユーザとの対話を可能にするために様々なデータ表示を行う。通信装置523は、遠隔地との通信を行なうためのものであり、例えばモデムやネットワークインターフェース等よりなる。
半導体集積回路の設計方法は、コンピュータ510が実行可能なコンピュータプログラムとして提供される。このコンピュータプログラムは、可換媒体記憶装置515に装着可能な記憶媒体Mに記憶されており、記憶媒体Mから可換媒体記憶装置515を介して、RAM512或いは二次記憶装置514にロードされる。或いは、このコンピュータプログラムは、遠隔地にある記憶媒体(図示せず)に記憶されており、この記憶媒体から通信装置523及びインターフェース516を介して、RAM512或いは二次記憶装置514にロードされる。
キーボード521及び/又はマウス522を介してユーザからプログラム実行指示があると、CPU511は、記憶媒体M、遠隔地記憶媒体、或いは二次記憶装置514からプログラムをRAM512にロードする。CPU511は、RAM512の空き記憶空間をワークエリアとして使用して、RAM512にロードされたプログラムを実行し、適宜ユーザと対話しながら処理を進める。なおROM513は、コンピュータ510の基本動作を制御するための制御プログラムが格納されている。
上記コンピュータプログラムを実行することにより、コンピュータ510が、上記各実施例で説明されたように半導体集積回路の設計方法を実行する。
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
従来の設計工程の概略を示すフローチャートである。 論理合成工程においてバラツキを考慮した半導体集積回路の設計方法を示すフローチャートである。 最大バラツキ合計の算出について説明するための図である。 セル種毎バラツキデータベースにおけるNAND回路についてのセル種毎バラツキデータを示す図である。 セル種毎バラツキデータベースにおけるインバータについてのセル種毎バラツキデータを示す図である。 ワーストタイミングスラックについて説明するための図である。 セルの入れ替えを説明するための図である。 セルの入れ替えを説明するための図である。 セルの入れ替えを説明するための図である。 セルの入れ替えを説明するための図である。 セルの入れ替えを説明するための図である。 設計対象の回路の一例を示す図である。 フリップフロップのデータ取り込みタイミングについて説明するための図である。 図2の半導体集積回路の設計工程によるタイミング最適化を説明するための図である。 本発明による半導体集積回路の設計方法を実行する装置の構成を示す図である。
符号の説明
10 セル種毎バラツキデータベース
11〜16 フリップフロップ
20〜23 NAND回路
24、25 インバータ
31 セル種毎バラツキデータ
32 セル種毎バラツキデータ
510 コンピュータ
511 CPU
512 RAM
513 ROM
514 二次記憶装置
515 可換媒体記憶装置
516 インターフェース
520 ディスプレイ装置
521 キーボード
522 マウス
523 通信装置

Claims (5)

  1. セルの遅延時間のバラツキを示す数値であるバラツキ値をセルの種類毎に規定し、
    回路記述から論理合成によりネットリストを生成し、
    該ネットリストにおける着目フリップフロップの入力端に至る複数のパス毎に、パスを構成するセルの該バラツキ値を合計してバラツキ合計を算出し、該複数のパスの該バラツキ合計のうちで最大のものを最大バラツキ合計として選択し、
    該複数のパスのタイミングスラックのうちで最悪のものをワーストタイミングスラックとして、該ワーストタイミングスラックが所定のスラック値よりも悪くならない範囲で該最大バラツキ合計を減少させるように該ネットリストのセルを入れ替える
    各段階を含む半導体集積回路の設計方法。
  2. 該セルを入れ替えた該ネットリストに基づいてレイアウト設計し、
    該レイアウト設計により生成されたレイアウトの回路に対してバラツキを考慮したタイミング検証を実行する
    各段階を更に含む請求項1記載の半導体集積回路の設計方法。
  3. 該セルを入れ替える段階は、該入力端から該複数のパスを上流に向かいトレースしていくことにより順次見つかったセルを入れ替える段階である請求項1記載の半導体集積回路の設計方法。
  4. 該セルを入れ替える段階は、
    着目セルを該バラツキ値がより小さな別の種類のセルに入れ替えた場合の該ワーストタイミングスラックを算出し、
    該算出されたワーストタイミングスラックが該所定のスラック値よりも悪いか否かを判断する
    各段階を含む請求項1記載の半導体集積回路の設計方法。
  5. 該所定のスラック値はゼロである請求項1記載の半導体集積回路の設計方法。
JP2008080732A 2008-03-26 2008-03-26 半導体集積回路の設計方法。 Expired - Fee Related JP4973561B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008080732A JP4973561B2 (ja) 2008-03-26 2008-03-26 半導体集積回路の設計方法。

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008080732A JP4973561B2 (ja) 2008-03-26 2008-03-26 半導体集積回路の設計方法。

Publications (2)

Publication Number Publication Date
JP2009237727A JP2009237727A (ja) 2009-10-15
JP4973561B2 true JP4973561B2 (ja) 2012-07-11

Family

ID=41251623

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008080732A Expired - Fee Related JP4973561B2 (ja) 2008-03-26 2008-03-26 半導体集積回路の設計方法。

Country Status (1)

Country Link
JP (1) JP4973561B2 (ja)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08221456A (ja) * 1995-02-17 1996-08-30 Hitachi Ltd タイミング検証方法及びタイミング検証システム
JP2000082092A (ja) * 1998-06-29 2000-03-21 Matsushita Electric Ind Co Ltd 集積回路設計方法
JP2000183171A (ja) * 1998-12-14 2000-06-30 Hitachi Ltd 論理集積回路の設計方法と論理回路
US7428716B2 (en) * 2003-09-19 2008-09-23 International Business Machines Corporation System and method for statistical timing analysis of digital circuits
JP2007173509A (ja) * 2005-12-22 2007-07-05 Renesas Technology Corp 半導体集積回路装置と設計方法
JP2007280222A (ja) * 2006-04-10 2007-10-25 Toshiba Corp 半導体集積回路の設計システム
JP2009075822A (ja) * 2007-09-20 2009-04-09 Toshiba Corp 半導体回路設計装置

Also Published As

Publication number Publication date
JP2009237727A (ja) 2009-10-15

Similar Documents

Publication Publication Date Title
US9251300B2 (en) Methods and tools for designing integrated circuits with auto-pipelining capabilities
CN101796520B (zh) 用于序向单元的贴近布局的方法和设备
US7552409B2 (en) Engineering change order process optimization
JP2004502259A (ja) 階層型金属末端、包囲、および曝露をチェックする方法およびシステム
US11574101B2 (en) Techniques for providing optimizations based on categories of slack in timing paths
US11651131B2 (en) Glitch source identification and ranking
US20080301603A1 (en) Clock-gated model transformation for asynchronous testing of logic targeted for free-running, data-gated logic
US11681842B2 (en) Latency offset in pre-clock tree synthesis modeling
US20080301598A1 (en) method for checking constraints equivalence of an integrated circuit design
CN114586036A (zh) 利用寄存器传输级矢量的毛刺功率分析
US11042678B2 (en) Clock gate latency modeling based on analytical frameworks
Papa et al. RUMBLE: an incremental, timing-driven, physical-synthesis optimization algorithm
JP2010257164A (ja) 半導体集積回路装置の設計方法およびプログラム
US10540464B1 (en) Critical path aware voltage drop analysis of an integrated circuit
JP5444985B2 (ja) 情報処理装置
JP4973561B2 (ja) 半導体集積回路の設計方法。
CN118103846A (zh) 用于准确上下文感知时序建模的统一框架及方法
US8959467B2 (en) Structural rule analysis with TCL scripts in synthesis or STA tools and integrated circuit design tools
US8689161B2 (en) Methods for designing integrated circuits employing pre-determined timing-realizable clock-insertion delays and integrated circuit design tools
JP6089627B2 (ja) 消費電力見積り装置および消費電力見積り方法
CN113536726A (zh) 用于最大瞬时峰值功率的矢量生成
JP5309538B2 (ja) 半導体集積回路の設計方法
US11087059B2 (en) Clock domain crossing verification of integrated circuit design using parameter inference
JP5929367B2 (ja) 半導体設計装置および半導体設計方法
Lee et al. Eco cost measurement and incremental gate sizing for late process changes

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101117

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120221

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120313

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120326

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150420

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees