(57)【特許請求の範囲】
【請求項１】
セルの遅延時間のバラツキを示す数値であるバラツキ値をセルの種類毎に規定し、
回路記述から論理合成によりネットリストを生成し、
該ネットリストにおける着目フリップフロップの入力端に至る複数のパス毎に、パスを構成するセルの該バラツキ値を合計してバラツキ合計を算出し、該複数のパスの該バラツキ合計のうちで最大のものを最大バラツキ合計として選択し、
該複数のパスのタイミングスラックのうちで最悪のものをワーストタイミングスラックとして、該ワーストタイミングスラックが所定のスラック値よりも悪くならない範囲で該最大バラツキ合計を減少させるように該ネットリストのセルを入れ替える
各段階を含む半導体集積回路の設計方法。
【請求項２】
該セルを入れ替えた該ネットリストに基づいてレイアウト設計し、
該レイアウト設計により生成されたレイアウトの回路に対してバラツキを考慮したタイミング検証を実行する
各段階を更に含む請求項１記載の半導体集積回路の設計方法。
【請求項３】
該セルを入れ替える段階は、該入力端から該複数のパスを上流に向かいトレースしていくことにより順次見つかったセルを入れ替える段階である請求項１記載の半導体集積回路の設計方法。
【請求項４】
該セルを入れ替える段階は、
着目セルを該バラツキ値がより小さな別の種類のセルに入れ替えた場合の該ワーストタイミングスラックを算出し、
該算出されたワーストタイミングスラックが該所定のスラック値よりも悪いか否かを判断する
各段階を含む請求項１記載の半導体集積回路の設計方法。
【請求項５】
該所定のスラック値はゼロである請求項１記載の半導体集積回路の設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願の開示は、一般に計算機利用設計に関し、詳しくは計算機を用いた半導体集積回路の設計方法に関する。
【背景技術】
【０００２】
半導体集積回路の設計工程においては、まずＲＴＬ（Register Transfer Level）等のハードウェア記述言語により回路を記述し、そのＲＴＬ等の回路記述に基づいて論理合成し、更に論理合成により生成されたネットリストに基づいてレイアウト設計を行なう。このレイアウト設計の後に、各ゲートのタイミングのバラツキを考慮したタイミング検証を行なうことにより、最終的な動作検証が行なわれる。このレイアウト後のタイミング検証によりタイミング違反が検出されると、レイアウトを変更することによりタイミング違反の解消を図る。またレイアウト変更してもタイミング違反が解消されない場合には、論理合成を再度実行してネットリストを変更する。しかし論理合成段階ではゲートのタイミングのバラツキを考慮していないので、論理合成を再度実行してネットリストを変更しても、レイアウト設計後のタイミング検証で再度タイミング違反が発生してしまう可能性が十分にある。このような理由により、設計工程が収束しにくいという問題があった。
【０００３】
図１は、従来の設計工程の概略を示すフローチャートである。図１のステップＳ１で、ＲＴＬ記述をゲートにマッピングすることにより論理合成を行なう。即ち、ＲＴＬ記述から、論理合成ツールを用いることにより、論理ゲート回路を示すネットリストを自動的に生成する。この際、面積や消費電力などの設計制約条件を満たすように回路の自動生成が実行される。
【０００４】
ステップＳ２で、タイミング解析によるタイミング最適化を実行する。ステップＳ１で生成された回路の各論理ゲートはそれぞれ固有の遅延値を有する。ステップＳ２では、各論理ゲートの遅延値を加算していくことにより論理ゲート回路の遅延値を求める。この遅延値に基づいて、各フリップフロップ入力端でのセットアップ時間やホールド時間などの要求されるタイミング条件が満たされているか否かを確認する。確認した結果、タイミング条件が満たされていない箇所については、回路の組み替えや論理ゲート素子の入れ替え等を実行する。これにより、タイミングが最適化されたネットリストが生成される。
【０００５】
以上のステップＳ１及びＳ２が論理合成工程に相当する。この論理合成工程の後に物理合成工程が実行される。
【０００６】
この物理合成工程におけるステップＳ３で、論理合成工程により生成されたネットリストに基づいてレイアウト設計（プレース＆ルート：配置＆配線）を行なうとともに、レイアウトを考慮したタイミング最適化を実行する。レイアウト設計においては、論理ゲート回路のネットリストに従ってチップ上にセル（論理ゲート）を自動的に配置するとともに、セル間を結合する配線を引く。タイミング最適化においては、配線の抵抗Ｒ、インダクタＬ、及び容量Ｃに基づいてタイミング検証を行い、タイミング違反部分のレイアウトを変更することで、タイミングが最適化されたレイアウトを生成する。
【０００７】
以上のステップＳ３の物理合成工程の後にサインオフ検証工程が実行される。サインオフ（Sign-off）検証とは、レイアウト設計終了後に行なう検証であり、半導体集積回路が所望の機能やタイミング仕様を満足しているか否かの最終的な確認作業である。
【０００８】
このサインオフ検証工程におけるステップＳ４で、バラツキを考慮したタイミング検証が実行される。即ち、各論理ゲートの遅延のバラツキ及び配線ＲＬＣ値のバラツキを規定したライブラリに基づいてタイミングを計算することにより、バラツキの存在する条件の下で所望のタイミング条件が満たされるか否かを検証する。このタイミング検証の結果、タイミング違反が検出されると、ステップＳ３に戻りレイアウトを変更する。また図１には示されていないが、前述のように、レイアウト変更してもタイミング違反が解消されない場合には、論理合成を再度実行してネットリストを変更する処理が行なわれる。
【０００９】
図１に示す設計工程では、論理合成工程の段階（Ｓ１，Ｓ２）において全くバラツキが考慮されていないために、その後のバラツキを考慮したタイミング検証（Ｓ４）における収束が悪いという問題がある。即ち、Ｓ４でのタイミング違反検出に応じたＳ３でのレイアウト変更が繰り返し何度も実行されたり、更にはＳ４でのタイミング違反検出に応じた論理合成の再度実行が繰り返し何度も実行されたりする場合がある。
【特許文献１】特開平７−３３４５３０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
以上を鑑みると、論理合成工程においてバラツキを考慮した半導体集積回路の設計方法が望まれる。
【課題を解決するための手段】
【００１１】
半導体集積回路の設計方法は、セルの遅延時間のバラツキを示す数値であるバラツキ値をセルの種類毎に規定し、回路記述から論理合成によりネットリストを生成し、該ネットリストにおける着目フリップフロップの入力端に至る複数のパス毎に、パスを構成するセルの該バラツキ値を合計してバラツキ合計を算出し、該複数のパスの該バラツキ合計のうちで最大のものを最大バラツキ合計として選択し、該複数のパスのタイミングスラックのうちで最悪のものをワーストタイミングスラックとして、該ワーストタイミングスラックが所定のスラック値よりも悪くならない範囲で該最大バラツキ合計を減少させるように該ネットリストのセルを入れ替える各段階を含む。
【発明の効果】
【００１２】
少なくとも１つの実施例によれば、複数のパスのバラツキ合計のうちで最大のものを最大バラツキ合計として、ワーストタイミングスラックが所定のスラック値よりも悪くならない範囲で最大バラツキ合計を減少させる。これにより、論理合成工程においてバラツキを考慮したタイミング最適化処理を実現することができる。
【発明を実施するための最良の形態】
【００１３】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【００１４】
図２は、論理合成工程においてバラツキを考慮した半導体集積回路の設計方法を示すフローチャートである。図２のフローチャートに示す処理は、後ほど説明するようにコンピュータにより実行される。
【００１５】
図２のステップＳ１で、ＲＴＬ記述をゲートにマッピングすることにより論理合成を行なう。即ち、ＲＴＬ記述から、論理合成ツールを用いることにより、論理ゲート回路を示すネットリストを自動的に生成する。この際、面積や消費電力などの設計制約条件を満たすように回路の自動生成が実行される。
【００１６】
ステップＳ２で、全フリップフロップ（ＦＦ）の最大バラツキ合計を算出する。この最大バラツキ合計は、セルの遅延時間のバラツキを示す数値であるバラツキ値をセルの種類毎に規定したセル種毎バラツキデータベース１０を参照して計算される。
【００１７】
図３は、最大バラツキ合計の算出について説明するための図である。図３には、論理合成により生成されたネットリストに対応する回路が示される。図３の回路は、フリップフロップ１１乃至１６、ＮＡＮＤ回路２０乃至２３、及びインバータ２４及び２５が含まれる。ＮＡＮＤ回路やインバータである各ゲート素子の下に示される「ＮＡＮＤ３」や「ＩＮＶ３」等の記述は、それぞれ対応するゲート素子の種類を示す。
【００１８】
図４は、セル種毎バラツキデータベース１０におけるＮＡＮＤ回路についてのセル種毎バラツキデータ３１を示す図である。セル種毎バラツキデータ３１には、３つの種類のＮＡＮＤ回路ＮＡＮＤ１、ＮＡＮＤ２、及びＮＡＮＤ３について、相対的なバラツキ値が示される。これらの相対バラツキ値は、値が大きいほど当該ゲートにおける遅延時間のバラツキが大きいことを示す。相対バラツキ値同士の比率は、遅延時間のバラツキの比率であってよい。例えば、相対バラツキ値が４であるＮＡＮＤ１の遅延時間のバラツキは±２ｎｓであり、相対バラツキ値が５であるＮＡＮＤ２の遅延時間のバラツキは±２．５ｎｓであってよい。このように相対バラツキ値は、基準となる遅延時間のバラツキを１としたときに、当該ゲート素子の遅延時間のバラツキを相対的に示した値である。例えば、遅延時間のバラツキが最小の素子がある種のインバータであり、このインバータの遅延時間のバラツキＤを基準として使用するとする。この場合、あるゲート素子の相対バラツキ値は、そのゲート素子の遅延時間のバラツキをＤで割った値であってよい。
【００１９】
セル種毎バラツキデータ３１には更に、３つの種類のＮＡＮＤ回路について、相対的な遅延時間である相対遅延値が示される。これらの相対遅延値は、値が大きいほど当該ゲートにおける遅延時間が大きいことを示す。相対遅延値同士の比率は、遅延時間の比率であってよい。例えば、相対遅延値が４であるＮＡＮＤ１の遅延時間は±２ｎｓであり、相対遅延値が３であるＮＡＮＤ２の遅延時間は±１．５ｎｓであってよい。このように相対遅延値は、基準となる時間を１としたときに、当該ゲート素子の遅延時間を相対的に示した値である。例えば、遅延時間が最小の素子がある種のインバータであり、このインバータの遅延時間Ｄを基準として使用するとする。この場合、あるゲート素子の相対遅延値は、そのゲート素子の遅延時間をＤで割った値であってよい。また例えば、基準となる時間をクロックの１サイクルとすれば、相対遅延値は遅延時間をクロックサイクル数で計った値となる。
【００２０】
図５は、セル種毎バラツキデータベース１０におけるインバータについてのセル種毎バラツキデータ３２を示す図である。セル種毎バラツキデータ３２には、３つの種類のインバータＩＮＶ１、ＩＮＶ２、及びＩＮＶ３について、相対バラツキ値及び相対遅延値が示される。相対バラツキ値及び相対遅延値の意味はＮＡＮＤ回路の場合と同様である。
【００２１】
図３において、各ゲート素子の内部に示される数値は、図４又は図５に示される相対バラツキ値である。即ち例えばＮＡＮＤ回路２１は、種類がＮＡＮＤ３であるので、図４から相対バラツキ値が１０であることが分かる。この値１０がＮＡＮＤ回路２１の回路シンボル内に記されている。
【００２２】
図２のステップＳ２における最大バラツキ合計の算出においては、ネットリストにおける着目フリップフロップの入力端に至る複数のパス毎に、パスを構成するセルのバラツキ値を合計してバラツキ合計を算出し、複数のパスのバラツキ合計のうちで最大のものを最大バラツキ合計として選択する。フリップフロップ１１を着目フリップフロップとすると、その入力端に至るパスは５つある。即ち、フリップフロップ１２の出力からフリップフロップ１１の入力に至る第１のパス、フリップフロップ１３の出力からフリップフロップ１１の入力に至る第２のパス、フリップフロップ１４の出力からフリップフロップ１１の入力に至る第３のパス、フリップフロップ１５の出力からフリップフロップ１１の入力に至る第４のパス、フリップフロップ１６の出力からフリップフロップ１１の入力に至る第５のパスである。これらの５つのパスの各々についてパスを構成するセルのバラツキ値を合計すると、第１のパスについては３２、第２のパスについては４２、第３のパスについても４２、第４のパスについては２０、第５のパスについても２０となる。これらの５つのパスのバラツキ合計３２、４２、４２、２０、及び２０のうちで最大の値４２を最大バラツキ合計として選択する。同様にして、ネットリストに関係する全てのフリップフロップについて最大バラツキ合計を求める。
【００２３】
次に図２のステップＳ３で、タイミング解析によるタイミング最適化を実行する。ステップＳ１で生成された回路の各論理ゲートはそれぞれ固有の遅延値を有する。ステップＳ２では、各論理ゲートの遅延値を加算していくことにより論理ゲート回路の遅延値を求める。この遅延値に基づいて、各フリップフロップ入力端でのセットアップ時間やホールド時間などの要求されるタイミング条件が満たされているか否かを確認する。確認した結果、タイミング条件が満たされていない箇所については、回路の組み替えや論理ゲート素子の入れ替え等を実行する。これにより、タイミングが最適化されたネットリストが生成される。
【００２４】
ステップＳ４で、最大バラツキ合計を改善するバラツキ最適化処理を実行する。具体的には、着目フリップフロップについて、上記の複数のパスのタイミングスラックのうちで最悪のものをワーストタイミングスラックとする。そして、ワーストタイミングスラックが所定のスラック値よりも悪くならない範囲で最大バラツキ合計を減少させるようにネットリストのセルを入れ替える。
【００２５】
図６は、ワーストタイミングスラックについて説明するための図である。図６には図３と同一の回路が示され、図３と同一の構成要素は同一の番号で参照し、その説明は省略する。図６において、ＮＡＮＤ回路やインバータである各ゲート素子の上に示される数値は、図４又は図５に示される相対遅延値である。即ち例えばＮＡＮＤ回路２１は、種類がＮＡＮＤ３であるので、図４から相対遅延値が２であることが分かる。この値２がＮＡＮＤ回路２１の回路シンボルの上に記されている。
【００２６】
前述した第１乃至第５のパスのそれぞれについて、相対遅延値の合計値は６、８、８、４、及び４である。あるパスのタイミングスラックとは、そのパスの終点における信号の実際の到達時間と要求到達時間との差である。即ち、タイミングスラックとは、そのパスの終点に信号が到達する時間とタイミング要件を満たすために当該信号が当該終点に到達すべき最も遅い時間との差分である。例えば、フリップフロップ１２乃至１６が同一のタイミング（時間Ｔ＝０とする）で信号を出力し、フリップフロップ１１の入力端で信号が到達しているべき要求到達時間はＴ＝１３であるとする。このＴ＝１３は、相対遅延値と同一の単位で時間を表現した数値である。即ち、例えば基準となる遅延時間がＤである場合、信号出力タイミングの時間（Ｔ＝０）から要求到達時間までの時間間隔をＤで割ると１３になるということである。この場合、フリップフロップ１２の出力からフリップフロップ１１の入力に至る第１のパスのタイミングスラックは７（＝１３−６）である。同様にして、フリップフロップ１３の出力からフリップフロップ１１の入力に至る第２のパスのタイミングスラックは５（＝１３−８）である。またフリップフロップ１４の出力からフリップフロップ１１の入力に至る第３のパスのタイミングスラックは５（＝１３−８）である。フリップフロップ１５の出力からフリップフロップ１１の入力に至る第４のパスのタイミングスラックは９（＝１３−４）である。更に、フリップフロップ１６の出力からフリップフロップ１１の入力に至る第５のパスのタイミングスラックは９（＝１３−４）である。
【００２７】
前述のように図２のステップＳ４のバラツキ最適化処理では、上記の複数のパスのタイミングスラックのうちで最悪のものをワーストタイミングスラックとする。５つのパスのタイミングスラックは、７、５、５、９、及び９である。タイミングスラックは値が小さいほどタイミングに余裕が無いことを意味するので、５つのタイミングスラックのうちで最悪のタイミングスラックは５となる。ステップＳ４のバラツキ最適化処理では、このワーストタイミングスラックが所定のスラック値よりも悪くならない範囲で最大バラツキ合計を減少させるようにネットリストのセルを入れ替える。例えば、ワーストタイミングスラックが０よりも小さくならない範囲でネットリストのセルを入れ替える。ワーストタイミングスラックが０以上であれば、要求されるタイミング要件を満たしているが、ワーストタイミングスラックが負になると、要求されるタイミング要件が満たされない。従って、ワーストタイミングスラックが０よりも小さくならない範囲でネットリストのセルを入れ替えるということは、要求されるタイミング要件が満たされる範囲で最大バラツキ合計を減少させることを意味する。また例えば、余裕を見て、ワーストタイミングスラックが１よりも小さくならない範囲でネットリストのセルを入れ替えるようにしてもよい。ネットリストのセルの入れ替えについては後ほど詳細に説明する。
【００２８】
図２において以上説明したステップＳ１乃至Ｓ４が論理合成工程に相当する。この論理合成工程の後に物理合成工程が実行される。
【００２９】
この物理合成工程におけるステップＳ５で、論理合成工程により生成されたネットリストに基づいてレイアウト設計（プレース＆ルート：配置＆配線）を行なうとともに、レイアウトを考慮したタイミング最適化を実行する。レイアウト設計においては、論理ゲート回路のネットリストに従ってチップ上にセル（論理ゲート）を自動的に配置するとともに、セル間を結合する配線を引く。タイミング最適化においては、配線の抵抗Ｒ、インダクタＬ、及び容量Ｃに基づいてタイミング検証を行い、タイミング違反部分のレイアウトを変更することで、タイミングが最適化されたレイアウトを生成する。
【００３０】
以上のステップＳ５の物理合成工程の後にサインオフ検証工程が実行される。このサインオフ検証工程におけるステップＳ６で、バラツキを考慮したタイミング検証が実行される。即ち、各論理ゲートの遅延のバラツキ及び配線ＲＬＣ値のバラツキを規定したライブラリに基づいてタイミングを計算することにより、バラツキの存在する条件の下で所望のタイミング条件が満たされるか否かを検証する。このタイミング検証の結果、タイミング違反が検出されると、ステップＳ５に戻りレイアウトを変更する。また図２には示されていないが、レイアウト変更してもタイミング違反が解消されない場合には、論理合成を再度実行してネットリストを変更する処理を行なってよい。
【００３１】
以下に、ワーストタイミングスラックが所定のスラック値よりも悪くならない範囲で最大バラツキ合計を減少させるようにネットリストのセルを入れ替える処理について説明する。この処理では、フリップフロップの入力端から複数のパスを上流に向かいトレースしていくことにより順次見つかったセルを入れ替えるようにしてよい。
【００３２】
図６の回路を例にとると、フリップフロップ１１の入力端からパスを上流に向かいトレースしていくと、まず最初にＮＡＮＤ回路２３が見つかる。従って、このＮＡＮＤ回路２３がセル入れ替え処理の対象となる。ＮＡＮＤ回路２３の種類はＮＡＮＤ３であり、図４を参照すると、ＮＡＮＤ３よりも相対バラツキ値が小さなＮＡＮＤ回路としてＮＡＮＤ１及びＮＡＮＤ２が利用できることが分かる。この場合、ＮＡＮＤ１の方が相対バラツキ値が小さいので、まずＮＡＮＤ回路２３をＮＡＮＤ１に入れ替えることを検討する。この際、着目セルをバラツキ値がより小さな別の種類のセルに入れ替えた場合のワーストタイミングスラックを算出し、算出されたワーストタイミングスラックが所定のスラック値よりも悪いか否かを判断する。
【００３３】
図７は、セルの入れ替えを説明するための図である。図７において、図６と同一の構成要素は同一の番号で参照し、その説明は省略する。
【００３４】
図７に示す回路は、図６に示す回路と比較して、種類がＮＡＮＤ３であるＮＡＮＤ回路２３が、種類がＮＡＮＤ１であるＮＡＮＤ回路２３Ａに入れ替えられていることが異なる。ＮＡＮＤ回路２３の相対バラツキ値が１０で相対遅延値が２であるのに対して、ＮＡＮＤ回路２３Ａの相対バラツキ値は４で相対遅延値が４である。このセル入れ替えにより、最大バラツキ合計が４２から３６に減少（向上）し、ワーストタイミングスラックが５から３（＝１３−１０）に減少（悪化）している。即ち、着目セルをバラツキ値がより小さな別の種類のセルに入れ替えた場合のワーストタイミングスラックは３である。所定のスラック値を０とすれば、このワーストタイミングスラックは所定のスラック値よりも良好である（大きい）。従って、種類がＮＡＮＤ３であるＮＡＮＤ回路２３を種類がＮＡＮＤ１であるＮＡＮＤ回路２３Ａに入れ替える処理は、ワーストタイミングスラックが所定のスラック値よりも悪くならない範囲で最大バラツキ合計を減少させる。従って、この入れ替え処理を有効な処理として実行し、ネットリストを変更する。
【００３５】
その後更に、フリップフロップ１１の入力端からパスを上流に向かいトレースしていくと、例えば次にＮＡＮＤ回路２２が見つかる。従って、このＮＡＮＤ回路２２がセル入れ替え処理の対象となる。なお上流に行くにつれて複数のパスに分岐する場合には、複数のパスの各々を順番にチェックすればよい。なおこの際、最大バラツキ合計に対応するパスを記憶しておき、このパス上にないセルは入れ替えの対象から外すように処理を構成してもよい。
【００３６】
ＮＡＮＤ回路２２の種類はＮＡＮＤ３であり、図４を参照すると、ＮＡＮＤ３よりも相対バラツキ値が小さなＮＡＮＤ回路としてＮＡＮＤ１及びＮＡＮＤ２が利用できることが分かる。この場合、ＮＡＮＤ１の方が相対バラツキ値が小さいので、まずＮＡＮＤ回路２２をＮＡＮＤ１に入れ替えることを検討する。
【００３７】
図８は、セルの入れ替えを説明するための図である。図８において、図７と同一の構成要素は同一の番号で参照し、その説明は省略する。
【００３８】
図８に示す回路は、図７に示す回路と比較して、種類がＮＡＮＤ３であるＮＡＮＤ回路２２が、種類がＮＡＮＤ１であるＮＡＮＤ回路２２Ａに入れ替えられていることが異なる。このセル入れ替えにより、最大バラツキ合計は３６のままであり、ワーストタイミングスラックも３のままである。従って、種類がＮＡＮＤ３であるＮＡＮＤ回路２２を種類がＮＡＮＤ１であるＮＡＮＤ回路２２Ａに入れ替える処理は、ワーストタイミングスラックが所定のスラック値（この例では０）よりも悪くならない範囲の処理である。従って、この入れ替え処理を有効な処理として実行し、ネットリストを変更する。なお、このセル入れ替え処理では、ワーストタイミングスラックが所定のスラック値よりも悪くならない範囲ではあるが、最大バラツキ合計３６が減少していない。このような場合には、ネットリストを変更しないような手順としてもよい。
【００３９】
その後更に、フリップフロップ１１の入力端からパスを上流に向かいトレースしていくと、例えば次にインバータ２５が見つかる。従って、このインバータ２５がセル入れ替え処理の対象となる。
【００４０】
インバータ２５の種類はＩＮＶ３であり、図５を参照すると、ＩＮＶ３よりも相対バラツキ値が小さなインバータとしてＩＮＶ１及びＩＮＶ２が利用できることが分かる。この場合、ＩＮＶ１の方が相対バラツキ値が小さいので、まずインバータ２５をＩＮＶ１に入れ替えることを検討する。
【００４１】
図９は、セルの入れ替えを説明するための図である。図９において、図８と同一の構成要素は同一の番号で参照し、その説明は省略する。
【００４２】
図９に示す回路は、図８に示す回路と比較して、種類がＩＮＶ３であるインバータ２５が、種類がＩＮＶ１であるインバータ２５Ａに入れ替えられていることが異なる。このセル入れ替えにより、最大バラツキ合計は３６から３２になり、ワーストタイミングスラックは３から１（＝１３−１２）になる。従って、種類がＩＮＶ３であるインバータ２５を種類がＩＮＶ１であるインバータ２５Ａに入れ替える処理は、ワーストタイミングスラックが所定のスラック値（この例では０）よりも悪くならない範囲の処理で最大バラツキ合計を減少させる。従って、この入れ替え処理を有効な処理として実行し、ネットリストを変更する。
【００４３】
その後更に、フリップフロップ１１の入力端からパスを上流に向かいトレースしていくと、例えば次にインバータ２４が見つかる。従って、このインバータ２４がセル入れ替え処理の対象となる。
【００４４】
インバータ２４の種類はＩＮＶ３であり、図５を参照すると、ＩＮＶ３よりも相対バラツキ値が小さなインバータとしてＩＮＶ１及びＩＮＶ２が利用できることが分かる。この場合、ＩＮＶ１の方が相対バラツキ値が小さいので、まずインバータ２４をＩＮＶ１に入れ替えることを検討する。
【００４５】
図１０は、セルの入れ替えを説明するための図である。図１０において、図９と同一の構成要素は同一の番号で参照し、その説明は省略する。
【００４６】
図１０に示す回路は、図９に示す回路と比較して、種類がＩＮＶ３であるインバータ２４が、種類がＩＮＶ１であるインバータ２４Ａに入れ替えられていることが異なる。このセル入れ替えにより、最大バラツキ合計は３２から２８になり、ワーストタイミングスラックは１から−１（＝１３−１４）になる。従って、種類がＩＮＶ３であるインバータ２４を種類がＩＮＶ１であるインバータ２４Ａに入れ替える処理は、ワーストタイミングスラックが所定のスラック値（この例では０）よりも悪くなる処理である。従って、この入れ替え処理は無効な処理であり、ネットリストの変更はしない。
【００４７】
再び図５を参照し、ＩＮＶ３よりも相対バラツキ値が小さなインバータとして利用できるＩＮＶ１及びＩＮＶ２のうち、ＩＮＶ１が利用できないことが分かったので、次にＩＮＶ２が利用できるか否かを検討する。
【００４８】
図１１は、セルの入れ替えを説明するための図である。図１１において、図９と同一の構成要素は同一の番号で参照し、その説明は省略する。
【００４９】
図１１に示す回路は、図９に示す回路と比較して、種類がＩＮＶ３であるインバータ２４が、種類がＩＮＶ２であるインバータ２４Ｂに入れ替えられていることが異なる。このセル入れ替えにより、最大バラツキ合計は３２から２９になり、ワーストタイミングスラックは１から０（＝１３−１３）になる。従って、種類がＩＮＶ３であるインバータ２４を種類がＩＮＶ２であるインバータ２４Ｂに入れ替える処理は、ワーストタイミングスラックが所定のスラック値（この例では０）よりも悪くならない範囲の処理で最大バラツキ合計を減少させる。従って、この入れ替え処理を有効な処理として実行し、ネットリストを変更する。
【００５０】
以上のようにして、フリップフロップの入力端から複数のパスを上流に向かいトレースしていくことにより順次見つかったセルを入れ替え対象として検討する。入れ替えにより、ワーストタイミングスラックが所定のスラック値よりも悪くならない範囲で最大バラツキ合計を減少させるようにネットリストを変更する。例えば、入れ替え対象のセルがなくなるか又は更なる有効な入れ替え処理が不可能となるまで処理を繰り返して、最大バラツキ合計を減少させてよい。また或いは、最大バラツキ合計が所定の値以下になった時点で処理を終了させるようにしてもよい。
【００５１】
以下に、図１に示す半導体集積回路の設計方法と図２に示す半導体集積回路の設計手法との相違点について説明する。図１２は、設計対象の回路の一例を示す図である。図１２に示す回路は、フリップフロップ４１及び４２並びに４０個のインバータ４３−１乃至４３−４０を含む。フリップフロップ４１の出力端から出力される信号が、直列接続された４０段のインバータ４３−１乃至４３−４０を伝搬して、フリップフロップ４２の入力端に到達する。
【００５２】
図１３は、フリップフロップ４２のデータ取り込みタイミングについて説明するための図である。図１３（ａ）において、フリップフロップ４１の出力端から時間Ｔ＝０でデータ信号ｄａｔａを出力し、フリップフロップ４２の入力端において時間Ｔ＝１０でクロック信号ｃｌｋの立ち上がりエッジに同期してデータ信号を取り込む。図１３（ａ）において、データ信号ｄａｔａの欄に示す斜線でハッチされたバー５１の長さは、フリップフロップ４１の出力端からフリップフロップ４２の入力端までのデータ信号ｄａｔａの伝搬時間（遅延時間）を示したものである。即ち、Ｔ＝０でフリップフロップ４１の出力端から出力されたデータは、Ｔ＝５でフリップフロップ４２の入力端に到達する。データ信号ｄａｔａの欄に示すハッチ無しのバー５２は、フリップフロップ４２の入力端においてデータ信号ｄａｔａが有効である時間を示す。また矢印５３は、フリップフロップ４２のセットアップタイムを示す。従って、例えば矢印の長さを２．５とすると、フリップフロップ４２の入力端でデータ信号が到達しているべき要求到達時間はＴ＝７．５である。データ信号ｄａｔａは、要求到達時間Ｔ＝７．５の前にフリップフロップ４２の入力端に到達しているので、要求タイミングは満たされている。
【００５３】
図１の半導体集積回路の設計方法における論理合成工程は、バラツキは考慮することなく、要求タイミングが満たされることのみを考慮している。従って、図１３（ａ）に示すようなタイミング関係が満たされれば、論理合成工程は終了する。しかしその後、サインオフ工程でバラツキを考慮したタイミング検証を実行すると、例えば図１３（ｂ）のようなタイミング違反が検出される。図１３（ｂ）では、バー５４がデータ信号ｄａｔａの到達時間のバラツキを示している。バー５４の右端が矢印５３の左端よりも時間的に後に位置しているので、最悪の条件では、要求タイミングが満たされないことになる。このようなタイミング違反を収束させるためにレイアウト変更或いは更に論理合成のやり直しが必要になり、設計処理の収束が悪い。
【００５４】
図１４は、図２の半導体集積回路の設計工程によるタイミング最適化を説明するための図である。図１４において、図１３と同一の部分は同一の番号で参照し、その説明は省略する。図１４（ａ）は、図１３（ｂ）と同様の図であり、斜線でハッチされたバー５１の長さは、フリップフロップ４１の出力端からフリップフロップ４２の入力端までのデータ信号ｄａｔａの伝搬時間（遅延時間）を示したものである。またハッチ無しのバー５２は、フリップフロップ４２の入力端においてデータ信号ｄａｔａが有効である時間を示す。また矢印５３は、フリップフロップ４２のセットアップタイムを示す。データ信号ｄａｔａの到達時間のバラツキを示しているバー５４の右端が、矢印５３の左端よりも時間的に後に位置しているので、最悪の条件では、要求タイミングが満たされないことになる。
【００５５】
図２の半導体集積回路の設計方法における論理合成工程は、バラツキを考慮してタイミング最適化を行なっている。従って、図１４（ａ）に示すような違法なタイミング関係を、論理合成工程において、図１４（ｂ）に示すようなタイミング関係に修正することができる。即ち、図１２に示す回路において、最大バラツキ合計が減少するようにセル（インバータ）の入れ替えを行なう。この際、ワーストタイミングスラックが所定のスラック値よりも悪くならない範囲でセルの入れ替えが実行される。図１４（ｂ）では、斜線でハッチされたバー６１の長さは、セル入れ替えにより増大したデータ信号ｄａｔａの伝搬時間（遅延時間）を示す。ハッチ無しのバー６２は、フリップフロップ４２の入力端においてデータ信号ｄａｔａが有効である時間を示す。ワーストタイミングスラックが所定のスラック値（例えば０）よりも悪くならない範囲でセルの入れ替えを実行するので、要求到達時間Ｔ＝７．５の前にデータ信号ｄａｔａがフリップフロップ４２の入力端に到達していることが保証される。
【００５６】
また図１４（ｂ）では、バー６４がデータ信号ｄａｔａの到達時間のバラツキを示している。セルの入れ替え処理により、図１４（ａ）のバー５４の幅に比較して図１４（ｂ）のバー６４の幅は減少している。即ち、最大バラツキ合計が減少している。この結果、バー６４の右端が矢印５３の左端よりも時間的に前に位置しているので、最悪の条件でも、要求タイミングが満たされることになる。このように論理合成工程においてバラツキを考慮してタイミング最適化を実行するので、その後のサインオフ工程でのバラツキを考慮したタイミング検証において、タイミング違反の収束性が向上する。
【００５７】
図１５は、本発明による半導体集積回路の設計方法を実行する装置の構成を示す図である。
【００５８】
図１５に示されるように、半導体集積回路の設計方法を実行する装置は、例えばパーソナルコンピュータやエンジニアリングワークステーション等のコンピュータにより実現される。図１５の装置は、コンピュータ５１０と、コンピュータ５１０に接続されるディスプレイ装置５２０、通信装置５２３、及び入力装置よりなる。入力装置は、例えばキーボード５２１及びマウス５２２を含む。コンピュータ５１０は、ＣＰＵ５１１、ＲＡＭ５１２、ＲＯＭ５１３、ハードディスク等の二次記憶装置５１４、可換媒体記憶装置５１５、及びインターフェース５１６を含む。
【００５９】
キーボード５２１及びマウス５２２は、ユーザとのインターフェースを提供するものであり、コンピュータ５１０を操作するための各種コマンドや要求されたデータに対するユーザ応答等が入力される。ディスプレイ装置５２０は、コンピュータ５１０で処理された結果等を表示すると共に、コンピュータ５１０を操作する際にユーザとの対話を可能にするために様々なデータ表示を行う。通信装置５２３は、遠隔地との通信を行なうためのものであり、例えばモデムやネットワークインターフェース等よりなる。
【００６０】
半導体集積回路の設計方法は、コンピュータ５１０が実行可能なコンピュータプログラムとして提供される。このコンピュータプログラムは、可換媒体記憶装置５１５に装着可能な記憶媒体Ｍに記憶されており、記憶媒体Ｍから可換媒体記憶装置５１５を介して、ＲＡＭ５１２或いは二次記憶装置５１４にロードされる。或いは、このコンピュータプログラムは、遠隔地にある記憶媒体（図示せず）に記憶されており、この記憶媒体から通信装置５２３及びインターフェース５１６を介して、ＲＡＭ５１２或いは二次記憶装置５１４にロードされる。
【００６１】
キーボード５２１及び／又はマウス５２２を介してユーザからプログラム実行指示があると、ＣＰＵ５１１は、記憶媒体Ｍ、遠隔地記憶媒体、或いは二次記憶装置５１４からプログラムをＲＡＭ５１２にロードする。ＣＰＵ５１１は、ＲＡＭ５１２の空き記憶空間をワークエリアとして使用して、ＲＡＭ５１２にロードされたプログラムを実行し、適宜ユーザと対話しながら処理を進める。なおＲＯＭ５１３は、コンピュータ５１０の基本動作を制御するための制御プログラムが格納されている。
【００６２】
上記コンピュータプログラムを実行することにより、コンピュータ５１０が、上記各実施例で説明されたように半導体集積回路の設計方法を実行する。
【００６３】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【図面の簡単な説明】
【００６４】
【図１】従来の設計工程の概略を示すフローチャートである。
【図２】論理合成工程においてバラツキを考慮した半導体集積回路の設計方法を示すフローチャートである。
【図３】最大バラツキ合計の算出について説明するための図である。
【図４】セル種毎バラツキデータベースにおけるＮＡＮＤ回路についてのセル種毎バラツキデータを示す図である。
【図５】セル種毎バラツキデータベースにおけるインバータについてのセル種毎バラツキデータを示す図である。
【図６】ワーストタイミングスラックについて説明するための図である。
【図７】セルの入れ替えを説明するための図である。
【図８】セルの入れ替えを説明するための図である。
【図９】セルの入れ替えを説明するための図である。
【図１０】セルの入れ替えを説明するための図である。
【図１１】セルの入れ替えを説明するための図である。
【図１２】設計対象の回路の一例を示す図である。
【図１３】フリップフロップのデータ取り込みタイミングについて説明するための図である。
【図１４】図２の半導体集積回路の設計工程によるタイミング最適化を説明するための図である。
【図１５】本発明による半導体集積回路の設計方法を実行する装置の構成を示す図である。
【符号の説明】
【００６５】
１０  セル種毎バラツキデータベース
１１〜１６  フリップフロップ
２０〜２３  ＮＡＮＤ回路
２４、２５  インバータ
３１  セル種毎バラツキデータ
３２  セル種毎バラツキデータ
５１０  コンピュータ
５１１  ＣＰＵ
５１２  ＲＡＭ
５１３  ＲＯＭ
５１４  二次記憶装置
５１５  可換媒体記憶装置
５１６  インターフェース
５２０  ディスプレイ装置
５２１  キーボード
５２２  マウス
５２３  通信装置
【図１】
0004973561.tif 000002
【図２】
0004973561.tif 000003
【図３】
0004973561.tif 000004
【図４】
0004973561.tif 000005
【図５】
0004973561.tif 000006
【図６】
0004973561.tif 000007
【図７】
0004973561.tif 000008
【図８】
0004973561.tif 000009
【図９】
0004973561.tif 000010
【図１０】
0004973561.tif 000011
【図１１】
0004973561.tif 000012
【図１２】
0004973561.tif 000013
【図１３】
0004973561.tif 000014
【図１４】
0004973561.tif 000015
【図１５】
0004973561.tif 000016