(57)【特許請求の範囲】
【請求項１】
半導体集積回路の電子部品の自動配置方法において、半導体集積回路の論理式が格納されている論理ファイル装置から論理式を入力するステップ、使用可能なゲートの特性を格納したライブラリ装置から各ゲートの特性を入力するステップ、概略位置指定手段が、前記入力した論理を複数の論理ブロックに分割して概略の位置関係を決める概略位置指定ステップ、仮想配線長算出手段が、前記概略位置指定手段が決めた概略位置指定情報から論理ブロック間の仮想配線長を算出するステップ、ディレイ値算出手段が、前記仮想配線長算出手段が算出した論理ブロック間の仮想配線長と論理ブロック間を転送するネットのソース・ゲートのディレイ特性から論理ブロック間のディレイ値を算出するステップ、ディレイ予算値算出手段が、前記ディレイ値算出手段が算出した論理ブロック間のディレイ値と目標マシンサイクルと論理ブロック内の論理ゲート段数とから論理ブロック内のゲート１段あたりのディレイ予算値を算出するステップ、配線長制限値算出手段が、前記ディレイ予算値算出手段が算出したディレイ予算値と各段のゲートのディレイ特性から各段のネットの配線長制限値を算出するステップ、前記配線長制限値算出手段が算出した配線長制限値を記憶手段に格納するステップ、及び前記記憶手段に格納された配線長制限値を守りながらゲートを配置するステップ、からなる電子部品の配置方法。
【請求項２】
半導体集積回路の電子部品の自動配置をするためにコンピュータを、半導体集積回路の論理式が格納されている論理ファイル装置から論理式を入力する手段、使用可能なゲートの特性を格納したライブラリ装置から各ゲートの特性を入力する手段、前記入力した論理を複数の論理ブロックに分割して概略の位置関係を決める概略位置指定手段、前記概略位置指定手段で決められた概略位置指定情報から論理ブロック間の仮想配線長を算出する手段、前記算出した論理ブロック間の仮想配線長と論理ブロック間を転送するネットのソース・ゲートのディレイ特性から論理ブロック間のディレイ値を算出する手段、前記算出した論理ブロック間のディレイ値と目標マシンサイクルと論理ブロック内の論理ゲート段数とから論理ブロック内のゲート１段あたりのディレイ予算値を算出する手段、前記算出したディレイ予算値と各段のゲートのディレイ特性から各段のネットの配線長制限値を算出する手段、前記算出した配線長制限値を記憶手段に格納する手段、及び前記記憶手段に格納された配線長制限値を守りながらゲートを配置する手段、として機能させるための電子部品の配置プログラムを記録したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半導体集積回路の実装における遅延を考慮した電子部品の配置方法に関する。
【０００２】
【従来の技術】
従来、半導体集積回路の実装設計における配置処理において、仮想配線長の合計が最小になることを目的関数として配置処理が行われていた。この半導体集積回路の実装方法に関する従来技術として、例えば、特開平８−３０５７４５号公報に記載された技術が知られている。この従来技術は、ゲートを配置する領域を複数の部分に分割し、各分割領域へのゲートの割当てを決定する際に、前記各ゲートに属する端子間の配線長が最小になることを目的関数として、ゲートの割当て問題を線形計画問題として定式化し、整数計画法を用いて最適なゲートの割当てを決定するものである。
【０００３】
【発明が解決しようとする課題】
上記従来技術では、ゲートのディレイ特性の違いにより必ずしもパスディレイが最小にはならなかった。ここで、パスディレイとは始点フリップフロップから終点フリップフロップの前までのディレイをいう。
【０００４】
本発明の目的は、前記従来技術の問題点に鑑み、パスディレイをより適正なものとするような電子部品の配置方法を提供することにある。
【０００５】
【課題を解決するための手段】
本発明によれば、上記目的は目標マシンサイクルとパス内の論理段数からゲート1段あたりのディレイ予算値を算出し、このディレイ値と各段のゲートのディレイ特性から各段のネットの配線長制限値を算出し、その制限値を配置の目的関数とすることにより達成される。
【０００６】
【発明の実施の形態】
図１にパスの構成例を示す。図１において、１０１、１０２はフリップフロップ、１０３、１０４、１０５は電子部品であるゲート、１０６、１０７はネット、１０８、１０９、１１０、１１１はネットの配線長を示す。図１（Ａ）と図１（Ｂ）のパスを構成する要素は同じであるが、ゲートＢの配置位置、ネットＡの配線長、ネットＢの配線長が異なる。図１（Ａ）のネットＡの配線長Ｌ１と図１（Ｂ）のネットＢ配線長Ｌ４は同じ長さである（Ｌ１＝Ｌ４）。図１（Ａ）のネットＢの配線長Ｌ２と図１（Ｂ）のネットＡ配線長Ｌ３は同じ長さである（Ｌ２＝Ｌ３）。
【０００７】
図２に、図１で示したゲートＡとゲートＢのディレイ特性の例を示している。図２において、２０１はゲートＡのディレイ特性、２０２はゲートＢのディレイ特性を示している。ここに示すように、ゲートの種類によって配線長に対するディレイの特性が違っている。ゲートＡのディレイ特性を見ると初期値即ち配線長がゼロのときの値はゲートＡ自身の素子ディレイである。配線長が長くなるにつれてディレイは大きくなっていく。一方、ゲートＢのディレイ特性を見ると、初期値はゲートＢ自身の素子ディレイであり、その後同様に配線長が長くなるにつれてディレイは大きくなる。しかしながら、これらを比較してみるとゲートＢのディレイの特性の方がより急峻である。これは素子自体の特性によるもので、素子によって信号の駆動力、即ち信号を押し出す力が異なるからである。このような特性は素子毎に違い、その特性はわかっている。図２のグラフからは配線長からディレイ値がわかり、また、逆にディレイ値から配線長を知ることも出来る。
【０００８】
図１（Ａ）、（Ｂ）ともにゲートＡ−ゲートＣ間の仮想配線長は同じである（Ｌ１+Ｌ２＝Ｌ３+Ｌ４）。しかし、ゲートのディレイ特性からゲートＡとゲートＣ間のディレイ値を計算すると図１（Ａ）はＤａ１+Ｄｂ２、図１（Ｂ）はＤａ２+Ｄｂ１となり、図１（Ａ）の方がパスのディレイ値が大きくなってしまうという現象が生じる。即ち、配線長を最小にしようとしても、それが必ずしもディレイ値を小さくすることにはつながっていない。
【０００９】
近年の情報処理装置の処理速度は急速に速くなってきている。今までは基準が緩かった(余裕があった)と言える。しかしながら、処理速度が速くなったことに対応するには今までは考慮に入れなくとも良かった上記現象も考慮して素子の配置を決めなくてはならなくなったことに想到したのである。
以下、本発明による配置決定方法の一実施例を図３〜図８を用いて詳細に説明する。
【００１０】
図３、図４は本発明の一実施例による配置決定方法の処理動作を説明するフローチャート、図５は処理対象となるパスの一例を説明する図、図６は論理ブロック間ネットの仮想配線長を求める説明をする図、図７は論理ブロック間ネットのディレイ値の算出を説明する図、図８は各段のネットのディレイ予算値の算出を説明する図である。
【００１１】
まず、図３、図４に示す処理フローを参照して、本発明の実施例による処理を説明する。図３を参照して、論理ブロックの概略位置指定からチップの実装（配置）までの全体の処理フローの概略を説明する。
【００１２】
論理ファイル３１０は素子の配置によって実現しようとしている論理式が格納されている。ライブラリ３２０は論理を素子の組合せで実現するために、使用可能な各素子の特性が格納されたものである。始めに、論理ファイル３１０、ライブラリ３２０の内容をプログラムに入力した後、概略位置指定を行なう（ステップ３０１）。概略位置指定とは、ＬＳＩを複数の機能毎に分割し(論理ブロック)、これを経験的に収まりの良いように概略の互いの位置関係を決めるものである。例えば互いにブロック間の配線の多いものを隣に配置するなどである。
【００１３】
次に論理ブロックの概略位置指定の結果とライブラリを参照して素子の配置制約を決定する（ステップ３０２）。詳細説明については図４を用いて後述する。次に配置制約を守りながら配置処理を行う（ステップ３０３）。これは既存のアルゴリズムを使って実現出来ここではこれ以上の説明を省略する。
【００１４】
次にステップ３０２の配置制約決定方法について図４を参照して説明する。
まず、図５で処理対象とするパスの一例を示し、その構成について説明する。
図５のパスは２つのフリップフロップ、５つのゲート、それぞれの素子をつなぐ６つのネット（ブロック内ネット：５ネット、論理ブロック間ネット：1ネット）から構成されている。また５０１で示した論理ブロック１は１つのフリップフロップ、２つのゲート、ブロック内ネット２ネット、５０２で示した論理ブロック２は１つのフリップフロップ、３つのゲート、ブロック内ネット３ネットを含んでいる。ここで、Ｄ１はブロック内1段あたりの平均ディレイ予算値、Ｄ２はブロック間ディレイを示している。
【００１５】
図５の処理対象とするパスの一例をもとに図４の配置制約決定方法フローを説明する。
論理ブロックの概略位置指定情報から論理ブロック間の仮想配線長を求める（４０１）。
ここで、論理ブロック間の配線長について、図６により説明する。図６の６０１で示す論理ブロック１と６０２で示す論理ブロック２間を結ぶ論理ブロック間ネット６０３の長さをL５とする。ここで、パスを構成する要素（フリップフロップ、ゲート）は配置処理が行われていないので配置位置が決まっておらず、論理ブロック間の距離を求めることができない。そこでまず、論理ブロック間ネット６０３の両端を決定する。論理ブロック間ネット６０３の両端の決定法には、例えば問題を単純化するために各論理ブロックの中心点を論理ブロック間ネットの両端と仮定するという方法があるが、これ以外の方法でもよいものである。次にこのようにして求まった２点間の仮想配線長Ｌ５を求める。仮想配線長の算出法には、例えばスタイナー・ツリー法を用いることができるが、これ以外の方法でもよいものである。
【００１６】
次に論理ブロック間のディレイ値を算出する（４０２）。
図７に、図５、図６内のゲートＤのディレイ特性の例を示す。ディレイ特性は図３のライブラリ３２０より算出したものである。ゲートＤのディレイ特性とステップ４０１で求めた論理ブロック間ネットの仮想配線長Ｌ５からゲートＤのディレイ値を求め、それをブロック間ディレイ値Ｄ３とする。ブロック間ネットが複数ある場合は、この処理をブロック間ネット数回繰り返し、それぞれのディレイ値の和をブロック間ディレイ値とする。
【００１７】
論理ブロック間ディレイ値、目標マシンサイクル、パスのブロック内論理段数より論理ブロック内1段あたりの平均ディレイ予算値を算出する（４０３）。ブロック間ディレイ値をＤｂ、目標マシンサイクルをＴｍ、ブロック内論理段数をｎ、論理ブロック内1段あたりの平均ディレイ予算値をＤｉｎとするとＤｉｎは次式で与えられる。
Ｄｉｎ ＝ （Ｔｍ−Ｄｂ）/ ｎ
この式にステップ２で算出したブロック間ディレイ値Ｄｂ＝Ｄ３、目標マシンサイクルＴｍ、図５に示したパスのブロック内論理段数n＝５を代入すると図５のパスでの論理ブロック内1段あたりの平均ディレイ予算値Ｄｉｎは
Ｄｉｎ ＝ （Ｔｍ−Ｄ３） / ５
となる。この例での論理ブロック内1段あたりの平均ディレイ予算値をＤ４とする。
【００１８】
ここで、求まった論理ブロック内1段あたりの平均ディレイ予算値がある基準値以下の場合にこの論理はディレイ計算収束不可能であることを指摘する。例えば、求まった論理ブロック内1段あたりの平均ディレイ予算値が、図２のディレイ特性におけるゲートのゲートディレイ値（ディレイ特性とｙ軸が交わる点）以下の場合、このパスのゲートはどのような配置を行ってもディレイ収束が不可能であり、配置処理の前段階で論理不良を指摘し、論理設計にフィードバックすることが可能である。
【００１９】
別のパスでの計算によって求められたネットの持つディレイ予算値より、ステップ４０３で算出した平均ディレイ予算値のほうが小さいか判定する（４０４）。小さければ、算出した平均ディレイ予算値をそのネットのディレイ予算値としてセットする（４０５）。大きければステップ４０５の処理をスキップして次へ進む。これはネットが枝分かれしているときを考慮したもので図８で具体的に説明する。
【００２０】
図８において、ネットＣはパスＡ、パスＢの両方のパスに含まれる。まず、パスＡで算出された平均ディレイ予算値をＤＡとし、これをネットＣの持つディレイ予算値とする。次に、パスＢで算出された平均ディレイ予算値をＤＢとすると、図８ではＤＡ＞ＤＢとなり、ＤＢをネットＣの持つディレイ予算値としてセットし、仮にＤＡ<ＤＢの場合はＤＡをそのままネットＣの持つディレイ予算値としてステップ５の処理を行う。
【００２１】
全パスについてステップ４０１〜ステップ４０５を実施したかを判定する（４０６）。実施していなければ、未処理のパスに対して上記の処理を繰り返す。実施していればステップ４０７の処理を行う。ステップ４０７では各段のゲートディレイ特性より配線長の制限値を求め、次の処理のためセットする。これについて図９を使って説明する。
【００２２】
図９に、ある段のゲートディレイ特性の例を示す。ディレイ特性は図３の３２０ライブラリより算出したものである。上記ステップで算出されたこのゲートをソースとするネットのディレイ予算値をＤ４とする。図９のディレイ特性とネットのディレイ予算値Ｄ４から、ディレイ値Ｄ４としたときの配線長を算出し、配線長Ｌ６を求める。これをネットの配線長制限値としてネットにセットする。即ち、ディレイ予算値を求め、これから各ネット毎に許される配線長を求める。このとき、もし各ネット毎に求められた配線長で配線が不可能なものがあれば論理設計まで遡って設計をやり直すことになる。
【００２３】
次に全ネットについてステップ４０７の処理を実施したか判定する（４０８）。実施していなければ、未処理のネットに対してステップ４０７の処理を行う。実施していれば、図３の配置処理３０３を実施する。
【００２４】
これにより、チップ６００上の全てのネットに対してディレイ値を考慮した配線長制限値がつけられ、この制約を守りながら配置処理を行うことにより、チップ上のすべてのゲートが目標マシンサイクルを満足する配置を行うことができる。
【００２５】
【発明の効果】
以上説明したように本発明によれば、目標マシンサイクルを実現しながらディレイ値を好適なものとした素子の配置を行うことができる。
【図面の簡単な説明】
【図１】本発明が解決しようとする問題点を説明する図である。
【図２】ゲートのディレイ特性の一例である。
【図３】本発明の一実施例による論理ブロックの概略位置指定からチップの実装（配置）までの処理フローを説明するフローチャートである。
【図４】本発明の一実施例による配置制約決定方法の処理動作を説明するフローチャートである。
【図５】本発明の一実施例で処理対象とするパスの構成を説明する図である。
【図６】論理ブロック間ネットの仮想配線長算出を説明する図である。
【図７】論理ブロック間ディレイ値の算出を説明する図である。
【図８】ネットのディレイ予算値をセットする処理を説明する図である。
【図９】ネットの配線長制限値の算出を説明する図である。
【符号の説明】
１０１、 １０２ フリップフロップ
１０３、１０４、１０５ ゲート
１０６、１０７ ネット
１０８、１０９、１１０、１１１ 配線長
２００、２０１、７０１、９０１ ゲートのディレイ特性
５０１、５０２、６０１、６０２ 論理ブロック
５０３ 論理ブロック内1段あたりのディレイ値
５０４ 論理ブロック間ディレイ値
６００ チップ
６０３  論理ブロック間ネット
８００、８０１ パス
【図１】
0003884892.tif 000002
【図２】
0003884892.tif 000003
【図３】
0003884892.tif 000004
【図４】
0003884892.tif 000005
【図５】
0003884892.tif 000006
【図６】
0003884892.tif 000007
【図７】
0003884892.tif 000008
【図８】
0003884892.tif 000009
【図９】
0003884892.tif 000010