(57)【要約】【課題】遅延解析誤差を増大させることなくブロック内の入出力バッファセル挿入個数を低減する。【解決手段】他のブロック内のフリップフロップから着目ブロックの各入力端子までの信号遅延時間を見積もっておき、着目ブロック内の回路のネットリストから、着目ブロックの複数の入力端子に接続される論理セルを抽出し、抽出した各論理セルについて、該論理セルに接続される着目ブロックの複数の入力端子の間の距離を求め、該距離が設計制約として与えられる距離２００μｍ以上である場合に、該論理セルに接続される着目ブロックの複数の入力端子のうち、該信号遅延時間が最大値である入力端子以外の入力端子のノードにバッファセルを挿入し、該最大値である入力端子のノードにはバッファセルを挿入せずに、該論理セルを、該最大値である入力端子に接近して配置する。【選択図】　　　　　図２
2004038389.tif 000002
【特許請求の範囲】
【請求項１】
フロアプラニングにより複数のブロックの配置、ブロック間の配線及び各ブロックの入出力端子位置が定められた後に、各ブロックの入出力端子のノードにバッファセルを挿入する、半導体集積回路の階層設計におけるブロック内入出力バッファセル挿入方法において、
（ａ）他のブロック内のフリップフロップから着目ブロックの各入力端子までの信号遅延時間を見積もり、
（ｂ）該着目ブロック内の回路のネットリストから、該着目ブロックの複数の入力端子に接続される論理セルを抽出し、
（ｃ）該論理セルに接続される該着目ブロックの複数の入力端子のうち、該信号遅延時間が最大値である入力端子以外の入力端子のノードにバッファセルを挿入し、該最大値である入力端子のノードにはバッファセルを挿入せずに、該論理セルを、該最大値である入力端子に対するバッファセルとしても機能するように配置する、
ことを特徴とする、半導体集積回路の階層設計におけるブロック内入出力バッファセル挿入方法。
【請求項２】
該ステップ（ｂ）と（ｃ）の間にさらに、
（ｄ）抽出した各論理セルについて、該論理セルに接続される該着目ブロックの複数の入力端子の間の距離を求めるステップを有し、
該距離が所定値以上である場合に該ステップ（ｃ）を実行する、
ことを特徴とする請求項１記載の方法。
【請求項３】
該ステップ（ｃ）において、該バッファセルを、該バッファセルに接続される該入力端子に接近して配置し、該論理セルを、該最大値である入力端子に接近して配置することを特徴とする請求項１又は２記載の方法。
【請求項４】
フロアプラニングにより複数のブロックの配置、ブロック間の配線及び各ブロックの入出力端子位置が定められた後に、各ブロックの入出力端子のノードにバッファセルを挿入する、半導体集積回路の階層設計におけるブロック内入出力バッファセル挿入装置において、該装置は、コンピュータと、該コンピュータに接続された記憶装置とを有し、
該記憶装置には、
着目ブロック内の回路のネットリストと、
該着目ブロックの各入出力端子の名前及び位置座標と、
他のブロック内のフリップフロップから該着目ブロックの各入力端子までの信号遅延時間の見積値と、
プログラムとが格納されており、
該プログラムは該コンピュータに対し、
（ａ）該ネットリストから、該着目ブロックの複数の入力端子に接続される論理セルを抽出させ、
（ｂ）該論理セルに接続される該着目ブロックの複数の入力端子のうち、該信号遅延時間が最大値である入力端子以外の入力端子のノードにバッファセルを挿入させ、該最大値である入力端子のノードにはバッファセルを挿入させずに、該論理セルを、該最大値である入力端子に対するバッファセルとしても機能するように配置させる、
ことを特徴とする、半導体集積回路の階層設計におけるブロック内入出力バッファセル挿入装置。
【請求項５】
該ステップ（ｂ）と（ｃ）の間にさらに、該コンピュータに対し、
（ｄ）抽出した各論理セルについて、該論理セルに接続される該着目ブロックの複数の入力端子の間の距離を求めさせるステップを有し、
該距離が所定値以上である場合に該ステップ（ｃ）を実行させる、
ことを特徴とする請求項４記載のブロック内入出力バッファセル挿入装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半導体集積回路の階層設計におけるブロック内入出力バッファセル挿入方法及び装置に関する。
【０００２】
【従来の技術】
半導体集積回路の階層設計では、例えば図８に示す如く、上位階層のブロック１０内のフロアプラニングにより、ブロック１１〜１４が配置され、ブロック１１〜１４間の配線が行なわれる。その後、各ブロック内のセル自動配置及びセル間自動配線が行なわれる。図９は、上位階層のブロック１０Ａ内のフロアプラニングにより、ブロック１２〜１４及び複数のセル１２Ａが配置され、これらの間で配線が行なわれ、その後、各ブロック内のセル自動配置及びセル間自動配線が行なわれる場合を示している。
【０００３】
ブロック間配線を通る信号の波形の鈍りが比較的大きいので、各ブロック内のセル自動配置前に、ブロックの各入出力端子のノードにバッファセルを挿入することにより、遅延解析誤差を少なくして、タイミングエラーの検出と修正の繰り返し処理に要する時間を短縮化している。例えばブロック１１と１２の間を接続する配線１５の一端及び他端にそれぞれバッファセル１６及び１７が接続される。
【０００４】
【発明が解決しようとする課題】
しかしながら、各ブロックの各入出力端子のノードに一律にバッファセルが挿入されるので、必要以上にバッファセルが挿入され、チップ面積が増加する原因となる。
【０００５】
さらに、バッファセルを挿入したことによりフリップフロップ間の信号伝播遅延時間が増加してタイミングエラーが生ずる原因となる。
【０００６】
本発明の目的は、このような問題点に鑑み、遅延解析誤差を増大させることなくブロック内の入出力バッファセル挿入個数を低減し且つクリティカルな遅延パスの信号伝播速度を改善することが可能な半導体集積回路の階層設計におけるブロック内入出力バッファセル挿入方法及び装置を提供することにある。
【０００７】
【課題を解決するための手段及びその作用効果】
本発明の一態様では、フロアプラニングにより複数のブロックの配置、ブロック間の配線及び各ブロックの入出力端子位置が定められた後に、各ブロックの入出力端子のノードにバッファセルを挿入する、半導体集積回路の階層設計におけるブロック内入出力バッファセル挿入方法において、
（ａ）他のブロック内のフリップフロップから着目ブロックの各入力端子までの信号遅延時間を見積もり、
（ｂ）該着目ブロック内の回路のネットリストから、該着目ブロックの複数の入力端子に接続される論理セルを抽出し、
（ｃ）該論理セルに接続される該着目ブロックの複数の入力端子のうち、該信号遅延時間が最大値である入力端子以外の入力端子のノードにバッファセルを挿入し、該最大値である入力端子のノードにはバッファセルを挿入せずに、該論理セルを、該最大値である入力端子に対するバッファセルとしても機能するように配置する。
【０００８】
この構成によれば、該信号遅延時間が最大値である入力端子を通るパスが短くなり、かつ、新たなバッファセルがこのパスに挿入がされずに該論理セルがバッファセルとしても機能するので、バッファセル挿入による遅延が削減されるとともに、挿入されるバッファセルの個数を低減することができる。
【０００９】
本発明の他の態様では、該ステップ（ｂ）と（ｃ）の間にさらに、
（ｄ）抽出した各論理セルについて、該論理セルに接続される該着目ブロックの複数の入力端子の間の距離を求めるステップを有し、
該距離が所定値以上である場合に該ステップ（ｃ）を実行する。
【００１０】
この構成によれば、上記効果がより確実に得られる。
【００１１】
本発明の他の目的、構成及び効果は以下の説明から明らかになる。
【００１２】
【発明の実施の形態】
以下、図面を参照して本発明の一実施形態を説明する。
【００１３】
図１は、本発明の一実施形態のブッロック内セル自動配置装置のハードウエア構成を示す概略ブロック図である。
【００１４】
この装置は、コンピュータ２０に入力装置２１、表示装置２２及び外部記憶装置が接続されたコンピュータシステムである。この外部記憶装置には予め、ブロック内ネットリスト２３、ブロックデータ２４、タイミング制約情報２５及びセルライブラリ２６が格納されている。コンピュータ２０は、後述のようにこれらのデータに基づいてネットリスト２３を修正し、次いでセル配置データ２７を作成して該外部記憶装置に格納する。
【００１５】
例えば図８に示すように、フロアプラニングによりブロック１１〜１４の配置とこれらの間の配線がすでに決定されて、ブロック内ネットリスト２３、ブロックデータ２４及びタイミング制約情報２５が得られているとする。
【００１６】
ブロックデータ２４は、各ブロックのサイズ並びに入出力端子名及びその位置座標を含んでいる。
【００１７】
タイミング制約情報２５は、ブロックの各入出力端子から見た外側の信号遅延時間外部遅延時間Ｔｄ及び容量の値を含んでおり、例えば次のようなデータテーブルをもっている。
2004038389.tif 000003
例えば図３において、ブロック１１の入力端子ＩＮ１の外部遅延時間Ｔｄは、ブロック１２内のＤフリップフロップ３０のクロック入力端Ｃに供給されるクロック信号ＣＬＫが立ち上がってから、Ｄフリップフロップ３０の出力Ｑが変化しこれが組み合わせ回路３１を介してブロック１１の入力端子ＩＮ１に信号ＳＤ１として伝達するまでの時間であり、図４（Ａ）中のＴｄｉである。また、ブロック１１の出力端子ＯＵＴ１の外部遅延時間Ｔｄは、クロック信号ＣＬＫに同期して信号が変化し、信号ＳＤ１としてこの変化がブロック出力端子ＯＵＴ１に到達し、組み合わせ回路３２を介してＤフリップフロップ３３のデータ入力端Ｄに供給されるとき、ブロック出力端子ＯＵＴ１での信号ＳＤ１の変化時点からクロック信号ＣＬＫの立ち上がりまでの時間であり、図４（Ｂ）中のＴｄｏである。
【００１８】
外部遅延時間Ｔｄは見積時間であり、例えば、Ｄフリップフロップ３０及び組み合わせ回路３１がブロック１２内の中心位置に存在し、組み合わせ回路３２及びＤフリップフロップ３３がブロック１４内の中心位置に存在すると仮定し、マンハッタン長経路に信号が伝わると仮定したときの値である。
【００１９】
図２は、コンピュータ２０により実行される、１つのブロック内でのバッファセル挿入及びセル自動配置の処理を示す概略フローチャートである。
【００２０】
ステップＳ１〜Ｓ８の処理により、ブロックの入出力端子のノードに挿入されるバッファが決定され、ステップＳ９においてブロック内における従来のセル自動配置が行なわれる。
【００２１】
（Ｓ１）ブロックデータ２４に格納されている、ブロックの入出力端子名を１つ取り出し、この端子に接続されているセルの名前をブロック内ネットリスト２３から探し、該セル名のセルに接続されたブロック入出力端子の名前をブロック内ネットリスト２３から抽出し、該セル名と該ブロック入出力端子名を１つの組とする。例えば図５において、ブロック１１の入力端子ＩＮ１に着目し、これに接続されているアンドゲート３４を見つけ、アンドゲート３４の他方の入力端子のノードがブロック１１の入力端子に接続されているかどうかを調べる。図５の場合、アンドゲート３４の他方の入力端子がブロック１１の入力端子ＩＮ２に接続されている。この場合、アンドゲート３４とブロック入力端子ＩＮ１及びＩＮ２とブロック出力端子ＯＵＴ１の名前の組を抽出する。
【００２２】
（Ｓ２）ステップＳ１でこのような組が抽出されればステップＳ３へ進み、そうでなければステップＳ９へ進む。
【００２３】
（Ｓ３）該組に複数のブロック入力端子名が存在すればステップＳ４へ進み、そうでなければステップＳ８へ進む。
【００２４】
（Ｓ４）該組について、複数のブロック入力端子間の距離としてマンハッタン長Ｌを求める。図５の場合、点線で示すマンハッタン長経路の長さを求める。
【００２５】
（Ｓ５）マンハッタン長Ｌが大きいほど、アンドゲート３４の配置位置によりブロック入力端子ＩＮ１からアンドゲート３４までとブロック入力端子ＩＮ２からアンドゲート３４までの信号遅延時間の差が大きくなり、タイミングエラーの発生に関係してくる。そこで、マンハッタン長Ｌが所定値以上、例えば２００μｍ以上であれば、ステップＳ６へ進み、そうでなければステップＳ８へ進む。
【００２６】
（Ｓ６）該組について、タイミング制約情報２５を参照し、外部遅延時間Ｔｄが最大値のブロック入力端子をマークする（例えば各ブロック入出力端子名にマーク用フラグを付加しこのフラグを立てる）。図５の場合、ブロック入力端子ＩＮ１及びＩＮ２がそれぞれ０．３００ｎｓｅｃ及び０．８８０ｎｓｅｃであり、この場合、ブロック入力端子ＩＮ２をマークする。
【００２７】
（Ｓ７）　例えば図５において、アンドゲート３４がブロック入力端子ＩＮ１とＩＮ２とから等距離の所に配置された場合には、ブロック１１の外部のＤフリップフロップのデータ出力端からブロック入力端子ＩＮ２、アンドゲート３４及びブロック出力端子ＯＵＴ１を通りブロック１１の外部の他のフリップフロップのデータ入力端までの経路の信号遅延時間が、ブロック入力端子ＩＮ１、アンドゲート３４及びブロック出力端子ＯＵＴ１を通る同様の経路のそれよりも長くなる。
【００２８】
そこで、該組について、マークしたブロック入力端子以外のブロック入出力端子のノードにバッファセルを挿入する。この挿入は、ブロック内ネットリスト２３に対して行われる。図５の場合には、図６に示すようにブロック入力端子ＩＮ１及びブロック出力端子ＯＵＴ１のノードにそれぞれ、セルライブラリ２６から選定したバッファセル３５及び３６を挿入する。バッファセル３５及び３６のサイズは、タイミング制約情報２５に格納されている上記容量値に基づいて決定する。
【００２９】
さらに、マークしたブロック入力端子ＩＮ２のノードにはバッファセルを挿入せずに、図６に示すようにアンドゲート３４をブロック入力端子ＩＮ２に接近させて配置する。
【００３０】
このようにすれば、ブロック入力端子ＩＮ２からアンドゲート３４を通りブロック出力端子ＯＵＴ１までのパスが短くなり、かつ、新たなバッファセルが挿入がされずにアンドゲート３４が入力バッファセルとしても機能するので、バッファセル挿入による遅延が削減されるとともに、挿入されるバッファセルの個数を低減することができる。
【００３１】
次に、ステップＳ１へ戻る。
【００３２】
（Ｓ８）該組の各入出力端子のネットに、セルライブラリ２６から選定したバッファセルを従来と同様に挿入する。この挿入は、ブロック内ネットリスト２３に対して行われる。セルサイズは、タイミング制約情報２５に格納されている上記容量値に基づいて決定する。
【００３３】
例えば図７に示すようにブロック入力端子ＩＮ１とＩＮ２との間のマンハッタン長Ｌが２００μｍ未満である場合、ブロック入力端子ＩＮ１、ＩＮ２及びブロック出力端子ＯＵＴ１にそれぞれバッファセル３５、３７及び３６を挿入する。アンドゲート３４の配置は、ステップＳ９で定められる。次に、ステップＳ１へ戻る。
【００３４】
（Ｓ９）ステップＳ７及びＳ８で配置されたセル以外について、ブロック内ネットリスト２３、ブロックデータ２４、タイミング制約情報２５及びセルライブラリ２６に基づき従来と同様の方法で、ブロック内のセルを自動配置し、その結果をセル配置データ２７として上記外部記憶装置に格納する。
【００３５】
なお、本発明には外にも種々の変形例が含まれる。
【００３６】
例えば、ステップＳ７及びＳ８でセルを配置せずに、ステップＳ９でまとめて配置してもよい。この場合においても、マークされたブロック入力端子には、これに対応するセルを接近させて配置し、また、ステップＳ７及びＳ８で挿入されたバッファセルは、対応するブロック入出力端子に接近して配置する。
【００３７】
さらに、ステップＳ５の所定値、例えば２００μｍは、入力装置２１を介して可変に指定してもよい。
【００３８】
また、本発明は図９に示すような階層構造のブロック１２〜１４にも適用可能である。
【図面の簡単な説明】
【図１】本発明の一実施形態のブッロック内セル自動配置装置のハードウエア構成を示す概略ブロック図である。
【図２】図１中のコンピュータ２０により実行される、１つのブロック内でのバッファセル挿入及びセル自動配置の処理を示す概略フローチャートである。
【図３】外部遅延時間説明のためのブロック図である。
【図４】外部遅延時間説明のためのタイムチャートである。
【図５】図２の処理の説明図である。
【図６】図２のステップＳ７の説明図である。
【図７】図２のステップＳ８の説明図である。
【図８】従来技術の問題点説明図である。
【図９】従来技術の問題点説明図である。
【符号の説明】
１０〜１４　ブロック
１５　配線
１６、１７、３５〜３７　バッファセル
２０　コンピュータ
２１　入力装置
２２　表示装置
２３　ブロック内ネットリスト
２４　ブロックデータ
２５　タイミング制約情報
２６　セルライブラリ
２７　セル配置データ
３０、３３　Ｄフリップフロップ
３１、３２　組み合わせ回路
３４　アンドゲート
ＩＮ１、ＩＮ２　ブロック入力端子
ＯＵＴ１　ブロック出力端子
【図１】
2004038389.tif 000004
【図２】
2004038389.tif 000005
【図３】
2004038389.tif 000006
【図４】
2004038389.tif 000007
【図５】
2004038389.tif 000008
【図６】
2004038389.tif 000009
【図７】
2004038389.tif 000010
【図８】
2004038389.tif 000011
【図９】
2004038389.tif 000012