(57)【要約】【課題】  予めオンチップキャパシタを近傍に配置したいファンクションブロックを指定し、その近辺に散在する小さな空き地を配置したいファンクションブロックの近傍に移動・合成することにより、オンチップキャパシタをより効果的に配置すること。【解決手段】  ファンクションブロックを配置するための配置情報を記憶する配置配線用ライブラリ２０２と、近傍にキャパシタを配置するように指定された指定ファンクションブロックに関する情報を記憶する配置改良用ライブラリ２０３と、入力データ２０１と前記配置情報とに従ってファンクションブロックを配置する配置部１０１と、配置結果に対して指定ファンクションブロックの近傍に空き地を集めるようにファンクションブロックを移動する配置改良部１０２と、配置改良後に配線を実行する配線部１０３と、集められた空き地にキャパシタを配置するキャパシタ発生部１０５とを有する。【選択図】      図１
2006031174.tif 000002
【特許請求の範囲】
【請求項１】
配置する論理素子に関する素子情報と論理素子を配置可能な領域の領域情報を含む配置情報と配線を実行するために必要な配線情報とを記憶する配置配線用ライブラリと、
近傍にキャパシタを配置するように指定された論理素子である指定論理素子に関する指定素子情報を記憶する配置改良用ライブラリと、
論理素子間の接続データを含む入力データと前記配置配線用ライブラリに記憶された前記配置情報とに従って論理素子の配置を実行する配置部と、
前記配置部による配置結果に対して配置改良用ライブラリに記憶された指定論理素子の近傍に空き地を集めるように指定論理素子以外の論理素子を移動する配置改良部と、
前記配置改良部による配置改良後の論理素子に対して前記入力データに基づいて配線を実行する配線部と、
前記集められた空き地にキャパシタを配置するキャパシタ発生部と
を有することを特徴とする素子配置システム。
【請求項２】
前記配置改良部は、指定論理素子以外の論理素子の移動の後に、さらに空き地を集めるために指定論理素子を移動することを特徴とする請求項１の素子配置システム。
【請求項３】
前記配置改良用ライブラリに記憶される指定素子情報は、指定論理素子の名称と、指定論理素子の近傍に配置すべきキャパシタの大きさと、配置すべきキャパシタを指定論理素子の一方の側のみにみに配置すべきか或いは両方の側に配置すべきかを指定する配置側情報とを有し、前記配置改良部は前記配置側情報に従って指定論理素子の一方又は両方の側に空き地を集めることを特徴とする請求項１又は２の素子配置システム。
【請求項４】
前記配線部による配線結果が予め決められた条件を満たさない配線に対して中継用のバッファである論理素子を挿入する処理を含む論理素子の追加又は変更を実行する配置追加部を有し、
配置追加部による論理素子の追加又は変更後に、前記配置改良部は追加又は変更された論理素子に対して移動を実行し、配線部は論理素子の追加又は変更により再配線が必要となった部分の配線をすることを特徴とする請求項１、２、又は３の素子配置システム。
【請求項５】
前記キャパシタは大きさの異なる複数のキャパシタを有し、前記キャパシタ発生部はキャパシタを配置する空き地の大きさに対して実装可能な最大のキャパシタを選択して配置することを特徴とする請求項１、２、３、又は４の素子配置システム。
【請求項６】
前記論理素子は半導体集積回路に実装する基本的な動作を行う小さな回路であるファンクションブロックであることを特徴とする請求項１、２、３、４、又は５の素子配置システム。
【請求項７】
半導体集積回路に実装する論理素子の配置処理の後に、論理素子の中で近傍にキャパシタを配置すべきであることを予め指定された各指定論理素子に対して、配置された指定論理素子の近傍に配置された指定論理素子以外の論理素子を移動して指定論理素子の近傍に空き地を集め、集めた空き地にキャパシタを配置することを特徴とする素子配置方法。
【請求項８】
前記指定論理素子以外の論理素子を移動した後に、さらに空き地を集めるために指定論理素子を移動することを特徴とする請求項７の素子配置方法。
【請求項９】
配置する論理素子に関する情報と論理素子を配置可能な領域の情報を含む配置情報と配線を実行するために必要な配線情報とを記憶する配置配線用ライブラリと、
論理素子の中で近傍にキャパシタを配置するように指定された指定論理素子に関する指定素子情報を記憶する配置改良用ライブラリとを有し、
論理素子間の接続データを含む入力データと前記配置配線用ライブラリに記憶された前記配置情報とに従って論理素子の配置を実行し、
前記配置実行の結果に対して配置改良用ライブラリに記憶された指定論理素子が配置された近傍に空き地を集めるように指定論理素子以外の論理素子を移動し、
前記移動後の各論理素子に対して前記入力データに基づいて配線を実行し、
前記集められた空き地にキャパシタを配置することを特徴とする素子配置方法。
【請求項１０】
前記指定論理素子以外の論理素子の移動の後に、さらに空き地を集めるために指定論理素子を移動することを特徴とする請求項９の素子配置方法。
【請求項１１】
前記配置改良用ライブラリに記憶される指定素子情報は、指定論理素子の名称と、指定論理素子の近傍に配置すべきキャパシタの大きさと、配置すべきキャパシタを指定論理素子の一方の側のみに配置するか或いは両方の側に配置するかを指定する配置側情報とを有し、前記配置側情報に従って指定論理素子の一方又は両方の側に空き地を集めるように指定論理素子或いはそれ以外の論理素子を移動することを特徴とする請求項９又は１０の素子配置方法。
【請求項１２】
前記配線した結果が予め決められた条件を満たさない配線に対して中継用のバッファである論理素子を挿入する処理を含む論理素子の追加又は変更を実行し、
前記論理素子の追加又は変更後に、追加又は変更された論理素子に対して指定論理素子が配置された近傍に空き地を集めるように移動し、前記配線結果に対して論理素子の追加又は変更により再配線が必要となった部分の配線をすることを特徴とする請求項９、１０、又は１１の素子配置方法。
【請求項１３】
前記キャパシタは大きさの異なる複数のキャパシタを有し、前記集められた空き地にキャパシタを配置する際にキャパシタを配置する空き地の大きさに対して実装可能な最大のキャパシタを選択して配置することを特徴とする請求項９、１０、１１、又は１２の素子配置方法。
【請求項１４】
前記論理素子は半導体集積回路に実装する基本的な動作を行う小さな回路であるファンクションブロックであることを特徴とする請求項９、１０、１１、１２、又は１３の素子配置方法。
【請求項１５】
論理素子間の接続データを含む入力データと配置配線用ライブラリに記憶された配置する論理素子に関する情報と論理素子を配置可能な領域の情報を含む配置情報とに従って論理素子の配置を実行する手順と、
前記配置実行の結果に対して論理素子の中で近傍にキャパシタを配置するように指定された指定論理素子に関する指定素子情報を記憶する配置改良用ライブラリを参照して指定論理素子が配置された近傍に空き地を集めるように指定論理素子以外の論理素子を移動する手順と、
前記移動後の各論理素子に対して前記入力データと配置配線用ライブラリに記憶された配線を実行するために必要な配線情報に基づいて配線を実行する手順と、
前記集められた空き地にキャパシタを配置する手順をコンピュータに実行させるプログラム。
【請求項１６】
前記指定論理素子以外の論理素子を移動する手順において、前記指定論理素子以外の論理素子を移動した後に、さらに空き地を集めるために指定論理素子を移動する手順を有することを特徴とする請求項１７のプログラム。
【請求項１７】
前記配置改良用ライブラリに記憶される指定素子情報は、指定論理素子の名称と、指定論理素子の近傍に配置すべきキャパシタの大きさと、配置すべきキャパシタを指定論理素子の一方の側のみに配置するか或いは両方の側に配置するかを指定する配置側情報とを有し、前記論理素子を移動する手順において、前記配置側情報に従って指定論理素子の一方又は両方の側に空き地を集めるように指定論理素子或いはそれ以外の論理素子を移動することを特徴とする請求項１６又は１７のプログラム。
【請求項１８】
前記配線を実行する手順の後に、配線した結果が予め決められた条件を満たさない配線に対して中継用のバッファである論理素子を挿入する処理を含む論理素子の追加又は変更を実行する手順と、
前記追加又は変更された論理素子に対して指定論理素子が配置された近傍に空き地を集めるように移動する手順と、前記配線した結果に対して論理素子の追加又は変更により再配線が必要となった部分の配線をする手順をコンピュータに実行させることを特徴とする請求項１５、１６、又は１７のプログラム。
【請求項１９】
前記キャパシタは大きさの異なる複数のキャパシタを有し、前記集められた空き地にキャパシタを配置する手順において、キャパシタを配置する空き地の大きさに対して実装可能な最大のキャパシタを選択して配置することを特徴とする請求項１５、１６、１７、又は１８のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体集積回路、半導体集積回路の素子配置方法、及びプログラムに関し、特に、ＬＳＩ設計用ＣＡＤの配置設計におけてノイズの影響を抑えるためのオンチップキャパシタを配置する技術に関する。
【背景技術】
【０００２】
半導体集積回路（ＬＳＩともいう）の設計ではファンクションブロックと呼ばれるＮＡＮＤ回路やＮＯＲ回路やＩｎｖｅｒｔｅｒ回路等の基本的な動作を行う小さな回路を、コンピュータのプログラム上で作成対象のＬＳＩの中に配置し、その間の配線の接続を行うことによって、半導体上で製造に使用するマスクの基礎となるデータを作成する。この過程を配置配線処理と呼ぶ。
【０００３】
配置配線処理は、大きく分けて、配線プログラムと配置プログラムによって実行される。従来の配置プログラムは配線による遅延と面積を目標値内に入れることを目的として配置を行っている。
【０００４】
ところが、近年超高速のＬＳＩではファンクションブロックが動作することに伴うノイズの発生が問題になっている。ノイズの影響を抑えるためにはＬＳＩ内部の空き地にオンチップキャパシタを配置することが有効である。オンチップキャパシタとは、ＬＳＩ内部にＰＮ接合容量やゲート容量を利用した蓄電器であるキャパシタ（コンデンサともいう）のことである。
【０００５】
ＬＳＩ設計におけるオンチップキャパシタの配置方法が特開平１１−１６８１７７号公報の発明（図１、図２）に示されている。この発明で生成されたオンチップキャパシタは、遅延制約のみで決定された配置結果の隙間に配置されているが、ノイズを発生するファンクションブロックやノイズに弱いファンクションブロックに配慮した配置はしていない。
【０００６】
【特許文献１】特開平１１−１６８１７７号公報（図１、図２）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
オンチップキャパシタは、ノイズの発生源の近傍やノイズに弱いファンクションブロックの近傍に配置するほどその効果が高いが、従来の配置プログラムはノイズの発生をまったく考慮していないため、ノイズの発生源やノイズに弱いファンクションブロックの近傍に効果的にオンチップキャパシタを配置することができなかった。
【０００８】
また、この特許文献１の発明では配置対象のエリアに対するファンクションブロックの敷き詰め度合いが高まるにつれ、非常に小さな空き地がファンクションブロック間に散在するようになる。オンチップキャパシタはある程度の幅の空き地を必要とするため、小さな空き地が散在するような環境では、効果的にオンチップキャパシタが配置されにくくなる。
【０００９】
本発明の目的は、予めオンチップキャパシタを近傍に配置したいファンクションブロックを指定し、その近辺に散在する小さな空き地を配置したいファンクションブロックの近傍に移動・合成することにより、オンチップキャパシタをより効果的に配置できるようにした半導体集積回路、半導体集積回路の素子配置方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
本発明の第１の素子配置システムは、配置する論理素子に関する素子情報と論理素子を配置可能な領域の領域情報を含む配置情報と配線を実行するために必要な配線情報とを記憶する配置配線用ライブラリと、近傍にキャパシタを配置するように指定された論理素子である指定論理素子に関する指定素子情報を記憶する配置改良用ライブラリと、論理素子間の接続データを含む入力データと前記配置配線用ライブラリに記憶された前記配置情報とに従って論理素子の配置を実行する配置部と、前記配置部による配置結果に対して配置改良用ライブラリに記憶された指定論理素子の近傍に空き地を集めるように指定論理素子以外の論理素子を移動する配置改良部と、前記配置改良部による配置改良後の論理素子に対して前記入力データに基づいて配線を実行する配線部と、前記集められた空き地にキャパシタを配置するキャパシタ発生部とを有することを特徴とする。
【００１１】
本発明の第２の素子配置システムは、本発明の第１の素子配置システムにおいて、前記配置改良部は、指定論理素子以外の論理素子の移動の後に、さらに空き地を集めるために指定論理素子を移動することを特徴とする。
【００１２】
本発明の第３の素子配置システムは、本発明の第１又は第２の素子配置システムにおいて、前記配置改良用ライブラリに記憶される指定素子情報は、指定論理素子の名称と、指定論理素子の近傍に配置すべきキャパシタの大きさと、配置すべきキャパシタを指定論理素子の一方の側のみにみに配置すべきか或いは両方の側に配置すべきかを指定する配置側情報とを有し、前記配置改良部は前記配置側情報に従って指定論理素子の一方又は両方の側に空き地を集めることを特徴とする。
【００１３】
本発明の第４の素子配置システムは、本発明の第１、第２、又は第３の素子配置システムにおいて、前記配線部による配線結果が予め決められた条件を満たさない配線に対して中継用のバッファである論理素子を挿入する処理を含む論理素子の追加又は変更を実行する配置追加部を有し、
配置追加部による論理素子の追加又は変更後に、前記配置改良部は追加又は変更された論理素子に対して移動を実行し、配線部は論理素子の追加又は変更により再配線が必要となった部分の配線をすることを特徴とする。
【００１４】
本発明の第５の素子配置システムは、本発明の第１、第２、第３、又は第４の素子配置システムにおいて、前記キャパシタは大きさの異なる複数のキャパシタを有し、前記キャパシタ発生部はキャパシタを配置する空き地の大きさに対して実装可能な最大のキャパシタを選択して配置することを特徴とする。
【００１５】
本発明の第６の素子配置システムは、本発明の第１、第２、第３、第４、又は第５の素子配置システムにおいて、前記論理素子は半導体集積回路に実装する基本的な動作を行う小さな回路であるファンクションブロックであることを特徴とする。
【００１６】
本発明の第１の素子配置方法は、半導体集積回路に実装する論理素子の配置処理の後に、論理素子の中で近傍にキャパシタを配置すべきであることを予め指定された各指定論理素子に対して、配置された指定論理素子の近傍に配置された指定論理素子以外の論理素子を移動して指定論理素子の近傍に空き地を集め、集めた空き地にキャパシタを配置することを特徴とする。
【００１７】
本発明の第２の素子配置方法は、本発明の第１の素子配置方法において、前記指定論理素子以外の論理素子を移動した後に、さらに空き地を集めるために指定論理素子を移動することを特徴とする。
【００１８】
本発明の第３の素子配置方法は、配置する論理素子に関する情報と論理素子を配置可能な領域の情報を含む配置情報と配線を実行するために必要な配線情報とを記憶する配置配線用ライブラリと、論理素子の中で近傍にキャパシタを配置するように指定された指定論理素子に関する指定素子情報を記憶する配置改良用ライブラリとを有し、
論理素子間の接続データを含む入力データと前記配置配線用ライブラリに記憶された前記配置情報とに従って論理素子の配置を実行し、前記配置実行の結果に対して配置改良用ライブラリに記憶された指定論理素子が配置された近傍に空き地を集めるように指定論理素子以外の論理素子を移動し、前記移動後の各論理素子に対して前記入力データに基づいて配線を実行し、前記集められた空き地にキャパシタを配置することを特徴とする。
【００１９】
本発明の第４の素子配置方法は、本発明の第３の素子配置方法において、前記指定論理素子以外の論理素子の移動の後に、さらに空き地を集めるために指定論理素子を移動することを特徴とする。
【００２０】
本発明の第５の素子配置方法は、本発明の第３又は第４の素子配置方法において、前記配置改良用ライブラリに記憶される指定素子情報は、指定論理素子の名称と、指定論理素子の近傍に配置すべきキャパシタの大きさと、配置すべきキャパシタを指定論理素子の一方の側のみに配置するか或いは両方の側に配置するかを指定する配置側情報とを有し、前記配置側情報に従って指定論理素子の一方又は両方の側に空き地を集めるように指定論理素子或いはそれ以外の論理素子を移動することを特徴とする。
【００２１】
本発明の第６の素子配置方法は、本発明の第３、第４、又は第５の素子配置方法において、前記配線した結果が予め決められた条件を満たさない配線に対して中継用のバッファである論理素子を挿入する処理を含む論理素子の追加又は変更を実行し、
前記論理素子の追加又は変更後に、追加又は変更された論理素子に対して指定論理素子が配置された近傍に空き地を集めるように移動し、前記配線結果に対して論理素子の追加又は変更により再配線が必要となった部分の配線をすることを特徴とする。
【００２２】
本発明の第７の素子配置方法は、本発明の第３、第４、第５、又は第６の素子配置方法において、前記キャパシタは大きさの異なる複数のキャパシタを有し、前記集められた空き地にキャパシタを配置する際にキャパシタを配置する空き地の大きさに対して実装可能な最大のキャパシタを選択して配置することを特徴とする。
【００２３】
本発明の第８の素子配置方法は、本発明の第３、第４、第５、第６、又は第７の素子配置方法において、前記論理素子は半導体集積回路に実装する基本的な動作を行う小さな回路であるファンクションブロックであることを特徴とする。
【００２４】
本発明の第１のプログラムは、論理素子間の接続データを含む入力データと配置配線用ライブラリに記憶された配置する論理素子に関する情報と論理素子を配置可能な領域の情報を含む配置情報とに従って論理素子の配置を実行する手順と、前記配置実行の結果に対して論理素子の中で近傍にキャパシタを配置するように指定された指定論理素子に関する指定素子情報を記憶する配置改良用ライブラリを参照して指定論理素子が配置された近傍に空き地を集めるように指定論理素子以外の論理素子を移動する手順と、前記移動後の各論理素子に対して前記入力データと配置配線用ライブラリに記憶された配線を実行するために必要な配線情報に基づいて配線を実行する手順と、前記集められた空き地にキャパシタを配置する手順をコンピュータに実行させる。
【００２５】
本発明の第２のプログラムは、本発明の第１のプログラムにおいて、前記指定論理素子以外の論理素子を移動する手順において、前記指定論理素子以外の論理素子を移動した後に、さらに空き地を集めるために指定論理素子を移動する手順を有することを特徴とする。
【００２６】
本発明の第３のプログラムは、本発明の第１又は第２のプログラムにおいて、前記配置改良用ライブラリに記憶される指定素子情報は、指定論理素子の名称と、指定論理素子の近傍に配置すべきキャパシタの大きさと、配置すべきキャパシタを指定論理素子の一方の側のみに配置するか或いは両方の側に配置するかを指定する配置側情報とを有し、前記論理素子を移動する手順において、前記配置側情報に従って指定論理素子の一方又は両方の側に空き地を集めるように指定論理素子或いはそれ以外の論理素子を移動することを特徴とする。
【００２７】
本発明の第４のプログラムは、本発明の第１、第２、又は第３のプログラムにおいて、前記配線を実行する手順の後に、配線した結果が予め決められた条件を満たさない配線に対して中継用のバッファである論理素子を挿入する処理を含む論理素子の追加又は変更を実行する手順と、前記追加又は変更された論理素子に対して指定論理素子が配置された近傍に空き地を集めるように移動する手順と、前記配線した結果に対して論理素子の追加又は変更により再配線が必要となった部分の配線をする手順をコンピュータに実行させることを特徴とする。
【００２８】
本発明の第５のプログラムは、本発明の第１、第２、第３、又は第４のプログラムにおいて、前記キャパシタは大きさの異なる複数のキャパシタを有し、前記集められた空き地にキャパシタを配置する手順において、キャパシタを配置する空き地の大きさに対して実装可能な最大のキャパシタを選択して配置することを特徴とする。
【発明の効果】
【００２９】
本発明はＬＳＩ内部のノイズを抑えるのに効果的な場所を選んで空き地を用意しオンチップキャパシタを配置するようにしたので、ＬＳＩの発生ノイズを抑制できるという効果がある。
【発明を実施するための最良の形態】
【００３０】
次に、本発明を実施するための最良の形態について図面を参照して詳細に説明する。
本発明の第１の形態の素子配置システム（以降第１の素子配置システムともいう）は、コンピュータで実現され、コンピュータはプログラムを実行するＣＰＵ、データやプログラムを記憶する記憶手段、データの入力や出力を行う入出力手段を有する。
【００３１】
図１を参照すると、第１の素子配置システム１００は、配置部１０１と、第１配置改良部１０２と、第１配線部１０３と、配置追加部１０４と、第２配置改良部１０２と、第２配線部１０３と、キャパシタ発生部１０５とを含み、これらはそれぞれプログラムで実現される。また。第１の素子配置システム１００は、記憶手段に入力データ２０１と、配置配線用ライブラリ２０２と、配置改良用ライブラリ２０３と、出力データ２０４を必要に応じて一時的又は長期的に保持する。
【００３２】
入力データ２０１（ネットリスト２０１ともいう）は一般にネットリストと呼ばれるファンクションブロック間の接続を示したデータからなり、処理に先立ってコンピュータの記憶手段に読み込まれ保持される。出力データ２０４は配置配線結果で、一般的にはマスクデータと呼ばれるものと等価であり、処理後にコンピュータ外部に出力されるが、処理中はコンピュータの記憶手段に一時的に保持される。
【００３３】
配置配線用ライブラリ２０２は、配置配線プログラムが一般的に必要とするライブラリであり、配置部１０１が配置を実行したり配線部１０３が配線を実行したりする際に参照する情報を登録したものである。登録された情報は、例えば、各ファンクションブロックの大きさやピン位置等のファンクションブロックに関する情報や、ＬＳＩ上の電源や接地の配置やファンクションブロックを実装可能な位置等のＬＳＩに関する情報や、配線を実行可能な領域の情報である。各ファンクションブロックの大きさやファンクションブロックを実装可能な位置に関する情報は配置情報として利用され、各ファンクションブロックのピン位置や配線を実行可能な領域の情報は配線情報として利用される。
【００３４】
配置改良用ライブラリ２０３は、本発明で特徴とするライブラリであり、ノイズを受けやすく近傍にオンチップキャパシタを配置するのが望ましいファンクションブロックや、ノイズを出しやすく近傍にオンチップキャパシタを配置するのが望ましいファンクションブロックや、配置改良するためのモードの指定や優先順を登録したライブラリである。
【００３５】
図２は、配置改良用ライブラリ２０３の登録内容の一例を示した図である。配置改良用ライブラリ２０３は、対象ファンクションブロックが隙間をはさんでおかれている場合の隙間の割り当て方式、隙間に対する制限の優先順位、対象となるファンクションブロック種類及びそのファンクションブロックに対する指定を含んでいる。
【００３６】
ファンクションブロックに対する指定は、そのファンクションブロックの相対的な重要度を示すための相対的重み、左右いずれかに最低限必要な隙間のサイズ、隙間が左右に必要かそれとも片方でよいのか、そのファンクションブロックがノイズを出すのかそれともノイズに弱いのかを含んでいる。
【００３７】
隙間割り当てモードは、相対的重み付けに基づいて隙間を分割するのか、それとも均等に分割するのかを示している。図２では相対重み付けが優先される。優先モードではどの順で隙間の割り当てを決定するかを示している。図２では、相対的重み付けが最優先で、左右の最低限の隙間は一番低い優先度で、優先度の低い項目ほど満足できなくてもよいという指定になっている。
【００３８】
図２では、ファンクションブロックとして“InverterX10”と“FlipFlopX1”が登録されている様子を示している。例えば“Inverterx10”は、ノイズを発生しやすいファンクションブロック“Aggressor”であり、最低限必要な隙間が決められた単位で“１０”必要であり、さらに左右に隙間が必要なことを示している。“FlipFlopX1”は、ノイズに弱いファンクションブロックであり、最低限必要な隙間が“２０”で片側だけでよいことを示している。
【００３９】
配置部１０１は、ネットリスト２０１に記述されたファンクションブロック間の結合情報に基づいて、ファンクションブロック間の遅延や配線の混雑度等に配慮してファンクションブロックを配置する。
【００４０】
配置改良部１０２は、配置部１０１によって配置されたファンクションブロックの隙間の領域を、配置改良用ライブラリ２０３の情報に基づいて、空き地が必要なファンクションブロックの近傍に集めるために、ファンクションブロックの配置を移動する。
【００４１】
配線部１０３は、ネットリスト２０１に記述されたファンクションブロック間の結合情報に基づいて、ファンクションブロック間を配線する。
【００４２】
配置追加部１０４は、配線結果によって配線が長すぎて遅延が入らなかったり伝播波形が鈍りすぎたりすると判定される場合等に、配線長を短くするために新たなファンクションブロックの追加を行う。この機能は本発明では主たる機能ではないので詳しい説明は省略する。
【００４３】
キャパシタ発生部１０５は、ファンクションブロックを移動した後の空き地にオンチップキャパシタ（キャパシタともいう）を配置し、結果を出力データ２０４として出力する。
【００４４】
次に、本発明の第１の形態の動作について図面を参照して説明する。
図３はファンクションブロックを移動して空き地を作成する様子を説明するための配置図である。図４は第１の形態の動作を示したフローチャートである。図３、図４を参照して動作を説明する。
【００４５】
まず、ネットリスト２０１が入力されると、配置部１０１は、ネットリスト２０１に記述されたファンクションブロック間の結合情報に基づいて、ファンクションブロック間の遅延や配線の混雑度等に配慮してファンクションブロックを配置する配置処理を行う（Ｓ６０１）。
【００４６】
この結果の配置例を説明しやすい形で示した図が図３の（Ａ）である。図３（Ａ）を参照すると、５つのファンクションブロック３０１〜３０５が配置され、ノイズを発生しやすいファンクションブロック３０２とノイズに弱いファンクションブロック３０５が含まれている。以降の説明では、ファンクションブロック３０２は片側に空き地を必要とし、ファンクションブロック３０５は両側に空き地を必要とするものとする。
【００４７】
また、縦方向の電源（ＶＤＤ）と接地（ＧＮＤ）はＶＩＡによって横方向のＶＤＤとＧＮＤと接続している。図３で縦方向のＶＤＤ・ＧＮＤと横方向のＶＤＤと横方向のＧＮＤに囲まれた領域である行エリア（フローチャートではＲＯＷと表示する）にはファンクションブロックが配置されない空き地３１１〜３１５が散在している。
【００４８】
続いて、配置改良部１０２は、配置改良用ライブラリ２０３を参照し、配置されたファンクションブロックがノイズに弱いか又はノイズを発生しやすいファンクションブロックとして登録されている場合、配置改良用ライブラリ２０３に従ってそのファンクションブロックの両側あるいは片側に空き地を発生する隙間生成処理を実行する（Ｓ６０２）。
【００４９】
図３と図４を参照して第１の形態の隙間生成処理について詳細に説明する。配置改良部１０２は、最初に配置改良用ライブラリ２０３で指定されたノイズを発生しやすいファンクションブロックやノイズに弱いファンクションブロックの配置されている場所を探す（Ｓ７０１）。
【００５０】
次に、配置改良部１０２は、探し出した指定ファンクションブロックが配置されている行エリアの近傍に、ファンクションブロックが配置されていない隙間（空き地ともいう）があるかチェックする（Ｓ７０２）。次に隙間があった場合、配置改良部１０２は、指定ファンクションブロックの隣に隙間を移動するため、又は隙間を移動して隙間を結合するために、指定ファンクションブロック以外のファンクションブロックを移動する（Ｓ７０３）。
【００５１】
一例を図３に示す。図３（Ａ）は探し出した指定ファンクションブロックが配置されている行エリアの様子を示している。図３では同じ行エリア内で隙間を移動しているが、配置改良用ライブラリ２０３に隙間の検索・移動範囲を指定して、例えば、隣接する行エリアも含めた領域内で移動するようにしてもよい（以降に第２の形態として示す）。
【００５２】
図３（Ａ）の場合、ステップＳ７０１によって、ノイズを発生しやすいファンクションブロック３０２と、ノイズに弱いファンクションブロック３０４が探し出される。配置改良部１０２は、図３（Ａ）の行エリアを調べ、ファンクションブロック３０２の近傍に空き地３１１、空き地３１２、空き地３１３を発見する。同様にして、配置改良部１０２は、ファンクブロック３０５の近傍に空き地３１３、空き地３１４、空き地３１５を発見する。
【００５３】
図３（Ａ）のように行エリアに、３０２と３０５のように複数の指定されたファンクションブロックが含まれる場合の空き地の生成方法としては、指定ファンクションブロック間の隙間を均等に分割して割り当てる方法、ファンクションブロック毎に配置改良用ライブラリ２０３に重み付けをしておき、それに従って隙間を割り当てる方法などがある。隙間の割り当て方法は配置改良用ライブラリ２０３によって指定する。
【００５４】
配置改良部１０２は、隙間を指定ファンクションブロックの隣に移動するために、指定されていないファンクションブロックを移動する。図３（Ｂ）は、図３（Ａ）の配置からファンクションブロック３０１を左に、ファンクションブロック３０３を右に、ファンクションブロック３０４を左にそれぞれ移動した後の配置を示している。この結果、空き地３１１が空き地３１２と合成（マージともいう）されて空き地３２１に広がり、空き地３１３が空き地３２２と空き地３２３の一部になる。この移動によって、指定されたファンクションブロック３０２及び３０５に隣接する空き地を拡げている。
【００５５】
次に、配置改良部１０２は、行エリアにおいて指定ファンクションブロックも含めて移動することにより空き地の合成ができるかを判断し（Ｓ７０４）、可能ならばファンクションブロックを移動して空き地のマージを行う（Ｓ７０５）。具体的に説明すると、配置改良部１０２は配置改良用ライブラリ２０３を参照して、指定ファンクションブロックの両側に空き地が必要か、それとも片側のみに必要かという情報に基づいて生成された空き地が指定ファンクションブロックの移動によりマージ可能かどうか調査・判定する（Ｓ７０４）。
【００５６】
図３の場合、ファンクションブロック３０２は片側に空き地が必要で、ファンクションブロック３０５は両側に空き地が必要であり、空き地３２３と空き地３１５とも十分必要なサイズの空き地になっているとする。この場合、ファンクションブロック３０２を移動することにより空き地３２１と空き地３２２とがマージ可能であり、マージされて大きな空き地３３１が生成される（Ｓ７０５）。図３（Ｃ）にマージ後の配置を示している。
【００５７】
またファンクションブロック３０５の両側の空き地３２３と空き地３１５は、幅を調整され同じ幅の空き地３３２と空き地３３３になる。ファンクションブロック３０５が両側に空き地が必要な指定で、かつ均等化後の空き地がそれぞれ必要量に満たない場合は空き地の均等化処理は行わない。
【００５８】
第１の隙間生成処理ではこのように空き地のマージを行っているが、本発明を実施する上でマージは必須ではなく、実行しなくとも本発明を実施可能である。
【００５９】
隙間生成処理が終わり空き地を含めた配置が終わると、配線部１０３は、配置された各ファンクションブロック間をネットリスト２０１と配置配線用ライブラリ２０２に従って、配線する（Ｓ６０３）。
【００６０】
次に、配置追加部１０４は、配線結果を予め決められた制限値と比較し、例えば、信号の伝播遅延が制限値よりも大きい場合や、伝播する波形の鈍りが制限よりも大きい場合や、隣接する配線間のクロストーク量が大きい場合に、配線の途中にバッファ要のファンクションブロックを挿入したり、配線を駆動するファンクションブロックを駆動力の異なるファンクションブロックに変更したりといった処理を行う（Ｓ６０４）。一般にこのような手法は一般に既知の技術であるので詳細な説明は省略する。
【００６１】
配置追加部１０４によってステップＳ６０２で作成・合成した空き地が使用されてしまう場合があるので、ここで再度配置改良部１０２は隙間生成処理を実行する（Ｓ６０５）。隙間生成処理はすでに説明したステップＳ７０１〜Ｓ７０５の処理と同じである。
【００６２】
次に、配線部１０３は、配置追加部１０４によって追加されたファンクションブロックやステップＳ６０５で移動したファンクションブロック間等の配線が完了していない箇所を対象としてステップＳ６０３と同様に配線を追加する（Ｓ６０６）。
【００６３】
次に、キャパシタ発生部１０５は、ファンクションブロックのおかれていない空き地でキャパシタが実装可能でかつキャパシタを必要とする空き地にキャパシタを追加する（Ｓ６０７）。次に、残った空き地に対してフィルセルと呼ぶ空き地を埋めるためのファンクションブロックを配置する（Ｓ６０８）。キャパシタ発生部１０５は、フィルセルを配置した後の結果データを出力データ２０４として記憶手段に一時的に保持し、要求に応じて出力データ２０４を出力する。
【００６４】
ここでフィルセルとは、一般にスタンダードセルなどを使用したＬＳＩ設計でファンクションブロック間の空き地を埋めるための構造物をＬＳＩ基板上に作るために用意された便宜上のファンクションブロックであり、オンチップキャパシタの素子を含んだキャパシタもフィルセルの一種ともいえる。
【００６５】
フィルセルは、一般的にサイズの違う複数のファンクションブロックを用意して、大きい順に空き地に入るかどうかチェックして、空き地に入る場合はそのフィルセルを生成して、入らない場合は小さいサイズのものが入るかどうかを試す、という処理を実行する。本発明ではキャパシタもサイズの異なる複数のファンクションブロックを用意する。また、キャパシタのサイズはフィルセルのサイズより大きいものとする。
【００６６】
キャパシタ発生部１０５は、空き地に対してキャパシタの大きいものから順に実装可能か調べ、実装可能で一番大きなキャパシタを空き地に追加する。キャパシタの実装ができない場合キャパシタ発生部１０５は、フィルセルの大きいものから順に実装可能か調べ、実装可能で一番大きなキャパシタを空き地に追加する。
【００６７】
本発明では、このようにキャパシタとフィルセルを配置するが、キャパシタが不要な空き地やキャパシタを配置するのに適さない条件等があればキャパシタの代わりにフィルセルを配置するようにしてもよく、キャパシタとフィルセルの配置関係は特に限定しない。
【００６８】
また、以上の説明ではステップＳ６０３の後にステップＳ６０４〜Ｓ６０６を実行し配置追加処理を組み込んでいるが、配置追加処理が不要であれば、ステップＳ６０３の後にステップＳ６０４〜Ｓ６０６をスキップしてステップＳ６０７のキャパシタ配置処理に続けるようにしてもかまわない。
【００６９】
このように、第１の形態では、ノイズを発生しやすいファンクションブロックやノイズに弱いファンクションブロックの近傍にキャパシタを実装可能なまとまった空き地を確保する可能性を高められるので、ノイズを発生しやすいファンクションブロックやノイズに弱いファンクションブロックの隣により大きなオンチップキャパシタを配置出来るようになり、ＬＳＩ内部のノイズの発生や影響を大幅に低減できる。
【００７０】
次に、本発明の第２の形態について説明する。第２の形態は第１の形態と比べて隙間生成処理が異なるが、その他は第１の形態と同じであるので、隙間生成処理について説明する。第２の形態の隙間生成処理は、ファンクションブロックの移動範囲を上下の行エリアに拡げている点に特徴がある。
【００７１】
第２の形態の構成は第１の形態の構成と同じであるが、配置改良部１０２が実行するファンクションブロックの移動範囲が異なっている。配置改良部１０２の機能の差分については以降の動作の説明にて説明を行う。
【００７２】
次に図５と図６を参照して第２の形態の隙間生成処理の動作を説明する。図５は第２の形態の隙間生成処理を説明するための配置図であり、図６は第２の形態の隙間生成処理の動作を示したフローチャートである。なお、隙間生成処理以外の第２の形態の処理手順は第１の形態と同じ（図４のステップＳ６０１〜Ｓ６０７）であるので説明は省略する。
【００７３】
配置改良部１０２は、ステップＳ７０１〜Ｓ７０３と同様にしてステップＳ７１１〜Ｓ７１３を実行し、指定ファンクションブロック以外のファンクションブロックを移動して、まとまった空き地を生成する。図５（Ａ）はファンクションブロック移動前の配置を表しており、隣接する上下の行エリアが移動対象範囲となっているがここでは空き地を多く含んだ下段の行エリアのみを示している。
【００７４】
図５では、ファンクションブロック４０２はノイズを発生しやすいファンクションブロックとして指定されており、ファンクションブロック４０５はノイズに弱いファンクションブロックとして指定されている。なお、図５の上段の行エリアの配置は図３の行エリアの配置と同じである。従って、ステップＳ７１３までの処理によって、ステップＳ７１１上段の行エリアの配置は図３（Ｂ）のように変更される。
【００７５】
次に、第２の形態では、配置改良部１０２は、隣接する行エリアにファンクションブロックを移動できる隙間があるかを調査・判定する（Ｓ７１４）。図５では、下段の行エリアに隙間があるので、配置改良部１０２は、ファンクションブロック４０１とファンクションブロック４０３とファンクションブロック４０４とが移動可能と判定する。  次に、配置改良部１０２は、移動可能なファンクションブロックを別の行エリアに移動する（Ｓ７１５）。図５の例で配置改良部１０２は、ファンクションブロック４０１をファンクションブロック４０６の左に、ファンクションブロック４０３をファンクションブロック４０７とファンクションブロック４０８の間に、ファンクションブロック４０４をファンクションブロック４０８の右にそれぞれ移動する。移動後の配置は図５（Ｂ）のようになる。
【００７６】
さらに、配置改良部１０２は、ステップＳ７０４と同様に指定ファンクションブロックの移動により空き地のマージが可能か判定し（Ｓ７１６）、可能であればステップＳ７０５と同様に指定ファンクションブロックの移動により空き地のマージを実行する（Ｓ７１７）。この結果は図示しないが、図５（Ｂ）でファンクションブロック４０５が両側に空き地を必要とし空き地４１５の大きさが十分でない場合はファンクションブロック４０５を左に移動して空き地４１５の大きさを確保したり、空き地４２１や空き地４２２の大きさを用意されたキャパシタの大きさに適合させるようにファンクションブロック４０２を移動したりする。
【００７７】
このように、第２の形態では、指定ファンクションブロックが配置された行エリアだけでなく、隣接する行エリアまでファンクションブロックの移動範囲を拡げることにより、より効果的にキャパシタを配置するための空き地を確保することが可能となるので、ＬＳＩ内のノイズの発生や影響を大幅に低減できる。
【００７８】
以上の説明では、指定ファンクションブロックが配置された行エリア内でファンクションブロックを移動して空き地を確保する方法と、指定ファンクションブロックが配置された行エリアに隣接する上下の行エリアまで範囲を拡げてファンクションブロックを移動して空き地を確保する方法を説明したが、さらに左右の行エリアやさらに多くの上下の行エリアまでをファンクションブロックの移動範囲として調整するようにしてもかまわない。
【産業上の利用可能性】
【００７９】
ＬＳＩの配置の他にも、プリント板にＩＣやＬＳＩや電気素子を実装配置する際にも、ノイズを発生したりノイズに弱いＩＣやＬＳＩや電気素子が含まれていれば、本発明を適用してノイズを発生したりノイズに弱いＩＣやＬＳＩや電子素子の周辺にキャパシタ（コンデンサ）を実装するための領域を自動的に確保して、プリント板内のノイズの発生や影響を低減することが可能となる。
【図面の簡単な説明】
【００８０】
【図１】本発明の素子配置システムの構成を示した図である。
【図２】本発明の配置改良用ライブラリの一例を示した図である。
【図３】本発明の第１の形態の隙間生成処理を説明するための配置図である。
【図４】本発明の第１の形態の動作を示したフローチャートである。
【図５】本発明の第２の形態の隙間生成処理を説明するための配置図である。
【図６】本発明の第２の形態の隙間生成処理の動作を示したフローチャートである。
【符号の説明】
【００８１】
１００    素子配置システム
１０１    配置部
１０２    配置改良部
１０３    配線部
１０４    配置追加部
１０５    キャパシタ発生部
２０１    入力データ
２０２    配置配線用ライブラリ
２０３    配置改良用ライブラリ
２０４    出力データ
【図１】
2006031174.tif 000003
【図２】
2006031174.tif 000004
【図３】
2006031174.tif 000005
【図４】
2006031174.tif 000006
【図５】
2006031174.tif 000007
【図６】
2006031174.tif 000008