(57)【要約】【課題】  本発明の課題は、データ転送の複数の信号線における最大遅延時間を低減することを目的とする。【解決手段】  上記課題は、低抵抗配線層で構成されｍ個の第１のバッファが挿入された第１の信号線を含む第１の信号経路と、前記低抵抗配線層より抵抗が高い高抵抗配線層で構成され少なくとも前記ｍ個の第１のバッファに隣接して配置されたｍ個の第２のバッファを含むｎ個（ｎ≧ｍ）の第３のバッファが挿入された第２の信号線を含む第２の信号経路と、を有する半導体装置のタイミング検証を実施し、前記第１の信号経路に規定のタイミング余裕があり、前記第２の信号経路にタイミング違反がある場合、前記第１の信号経路の少なくとも一部の前記第１のバッファ間の信号線を前記第２の信号経路の一部の信号線と交換する処理をコンピュータが行う半導体装置の設計方法により達成される。【選択図】  図１４
2016206961.tif 000002
【特許請求の範囲】
【請求項１】
低抵抗配線層で構成されｍ個の第１のバッファが挿入された第１の信号線を含む第１の信号経路と、前記低抵抗配線層より抵抗が高い高抵抗配線層で構成され少なくとも前記ｍ個の第１のバッファに隣接して配置されたｍ個の第２のバッファを含むｎ個（ｎ≧ｍ）の第３のバッファが挿入された第２の信号線を含む第２の信号経路と、を有する半導体装置のタイミング検証を実施し、
前記第１の信号経路に規定のタイミング余裕があり、前記第２の信号経路にタイミング違反がある場合、前記第１の信号経路の少なくとも一部の前記第１のバッファ間の信号線を前記第２の信号経路の一部の信号線と交換する
処理をコンピュータが行う半導体装置の設計方法。
【請求項２】
前記コンピュータは、
前記第１のバッファ間の区間の開始点となる前記第１のバッファに対応して設けられた前記第２のバッファで、前記第２の信号経路を前記第１の信号経路と交換し、前記区間の終了点となる前記第１のバッファに対応して設けられた前記第２のバッファで、前記第１の信号経路を前記第２の信号経路と交換する
ことを特徴とする請求項１記載の半導体装置の設計方法。
【請求項３】
前記コンピュータは、
前記低抵抗配線層の隣り合う前記第１のバッファ間をセグメントとし、前記セグメント単位で、第１の回路ブロックと第２の回路ブロックの間を伝送する複数のビットを前記高抵抗配線層の信号線に均等に割り当てて、割り当て結果に基づいて、１以上のセグメントによる前記区間で、前記第１の信号経路と前記第２の信号経路とを交換する第１の配線入替処理を行う
ことを特徴とする請求項２記載の半導体装置の設計方法。
【請求項４】
前記コンピュータは、
前記第１の配線入替処理によっても前記タイミング違反が少なくとも前記第１の信号経路又は前記第２の信号経路のいずれかにある場合、前記低抵抗配線層に前記複数のビットのデータ以外を伝送し、前記低抵抗配線層への割り当てを制限する妨害配線と、前記第２の信号経路の少なくとも一部の信号線とを交換する第２の配線入替処理を行う
ことを特徴とする請求項３記載の半導体装置の設計方法。
【請求項５】
前記コンピュータは、
前記第１の信号線及び前記第２の信号線の初期配線で前記タイミング違反が生じた場合、前記第１の配線入替処理を行い、前記第１の配線入替処理後においても前記タイミング違反を回避できない場合、前記第２の配線入替処理を行う
ことを特徴とする請求項４記載の半導体装置の設計方法。
【請求項６】
前記コンピュータは、
複数のバスのうちスラックの少ないバスから、前記低抵抗配線層に配線し前記タイミング検証を行い、配線した前記バスにおいて、前記第１の信号経路に規定のタイミング余裕があり、前記第２の信号経路に前記タイミング違反がある場合、前記第１の配線入替処理を行い、前記第１の配線入替処理後においても前記タイミング違反を回避できない場合、前記第２の配線入替処理を行う
ことを特徴とする請求項４又は５記載の半導体装置の設計方法。
【請求項７】
前記コンピュータは、
前記低抵抗配線層の前記第１のバッファの第１の間隔を、前記高抵抗配線層の前記第３のバッファの第２の間隔の整数倍であるようにしたバッファリングを行う
ことを特徴とする請求項１乃至６のいずれか一項記載の半導体装置の設計方法。
【請求項８】
低抵抗配線層で構成されｍ個の第１のバッファが挿入された第１の信号線を含む第１の信号経路と、前記低抵抗配線層より抵抗が高い高抵抗配線層で構成され少なくとも前記ｍ個の第１のバッファに隣接して配置されたｍ個の第２のバッファを含むｎ個（ｎ≧ｍ）の第３のバッファが挿入された第２の信号線を含む第２の信号経路と、を有する半導体装置のタイミング検証を実施し、
前記第１の信号経路に規定のタイミング余裕があり、前記第２の信号経路にタイミング違反がある場合、前記第１の信号経路の少なくとも一部の前記第１のバッファ間の信号線を前記第２の信号経路の一部の信号線と交換する
処理をコンピュータに行わせる半導体装置の設計プログラム。
【請求項９】
低抵抗配線層で構成されｍ個の第１のバッファが挿入された第１の信号線を含む第１の信号経路と、前記低抵抗配線層より抵抗が高い高抵抗配線層で構成され少なくとも前記ｍ個の第１のバッファに隣接して配置されたｍ個の第２のバッファを含むｎ個（ｎ≧ｍ）の第３のバッファが挿入された第２の信号線を含む第２の信号経路と、を有する半導体装置のタイミング検証を行ってタイミング違反があるか否かを判断する判断部と、
前記第１の信号経路に規定のタイミング余裕があり、前記第２の信号経路にタイミング違反がある場合、前記第１の信号経路の少なくとも一部の前記第１のバッファ間の信号線を前記第２の信号経路の一部の信号線と交換する交換部と
を有する半導体装置の設計装置。
【請求項１０】
ｍ個の第１のバッファが挿入された第１の信号線を伝播する第１の信号経路を含む第１の配線層と、
前記ｍ個の第１のバッファに隣接して配置されたｍ個の第２のバッファを含むｎ個（ｎ≧ｍ）の第３のバッファが挿入された第２の信号線を伝播する第２の信号経路を含む、前記第１の配線層より抵抗が高い第２の配線層と、を有し、
前記第１の配線層の２以上の前記第１のバッファ間の１又は２以上の区間において、前記第１の信号線の前記第１の信号経路は前記第２の配線層に、また、前記第２の信号線の前記第２の信号経路は前記第１の配線層に夫々部分的に切り替えられていることを特徴とする半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置の設計技術に関する。
【背景技術】
【０００２】
従来より、半導体装置の設計における信号線の配線では、タイミングに余裕のない経路を低抵抗配線の上層に配線し、タイミングの余裕のある経路を高抵抗配線の下層に配線することが行われている。
【０００３】
配線後に、セル間の接続配線における低抵抗配線の経路を高抵抗配線に置き換える技術、タイミング違反の配線について、駆動力が相対的に高いネットを優先的に選択して、上層に指定変更する技術、下層配線のうちで上層配線で置換できる箇所であって信号の伝達速度に関わる配線について上層配線を用いる技術等が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−２３４８９２号公報
【特許文献２】特開２００３−４４５３５号公報
【特許文献３】特開平２−２４８０７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、近年の半導体プロセスの微細化に伴い、配線抵抗が高抵抗化している。また、下層の配線抵抗に対して上層は相対的に低抵抗となる。また、半導体装置をより小さくするため、複数の回路ブロックを回路ブロック間をより狭くして配置するようになっており、上層で全ビット分の信号配線を行えない場合には、下層で配線することになる。
【０００６】
このような状況において、上述した技術を用いた場合には、バス内の高抵抗の下層の信号配線の最大遅延時間がボトルネックとなる場合がある。
【０００７】
したがって、１つの側面では、本発明は、データ転送の複数の信号線における最大遅延時間を低減することを目的とする。
【課題を解決するための手段】
【０００８】
一態様によれば、低抵抗配線層で構成されｍ個の第１のバッファが挿入された第１の信号線を含む第１の信号経路と、前記低抵抗配線層より抵抗が高い高抵抗配線層で構成され少なくとも前記ｍ個の第１のバッファに隣接して配置されたｍ個の第２のバッファを含むｎ個（ｎ≧ｍ）の第３のバッファが挿入された第２の信号線を含む第２の信号経路と、を有する半導体装置のタイミング検証を実施し、前記第１の信号経路に規定のタイミング余裕があり、前記第２の信号経路にタイミング違反がある場合、前記第１の信号経路の少なくとも一部の前記第１のバッファ間の信号線を前記第２の信号経路の一部の信号線と交換する処理をコンピュータが行う半導体装置の設計方法が提供される。
【０００９】
一態様によれば、ｍ個の第１のバッファが挿入された第１の信号線を伝播する第１の信号経路を含む第１の配線層と、前記ｍ個の第１のバッファに隣接して配置されたｍ個の第２のバッファを含むｎ個（ｎ≧ｍ）の第３のバッファが挿入された第２の信号線を伝播する第２の信号経路を含む、前記第１の配線層より抵抗が高い第２の配線層と、を有し、前記第１の配線層の２以上の前記第１のバッファ間の１又は２以上の区間において、前記第１の信号線の前記第１の信号経路は前記第２の配線層に、また、前記第２の信号線の前記第２の信号経路は前記第１の配線層に夫々部分的に切り替えられた半導体装置が提供される。
【発明の効果】
【００１０】
データ転送の複数の信号線における最大遅延時間を低減することができる。
【図面の簡単な説明】
【００１１】
【図１】半導体装置の設計処理の概要を説明するためのフローチャート図である。
【図２】半導体装置内の信号配線モデルの例を示す図である。
【図３】遅延時間の検証例を説明するための図である。
【図４】配線抵抗とバッファリングとの関係を説明するための図である。
【図５】凡例を説明する図である。
【図６】バス配線の例を示す図である。
【図７】配線層制御による遅延時間の変化を説明するための図である。
【図８】ブロック間の幅の例を示す図である。
【図９】設計装置のハードウェア構成を示す図である。
【図１０】設計装置の第一の機能構成を示す図である。
【図１１】バッファリングデータの例を示す図である。
【図１２】バッファリング部によるバッファリング処理を説明するための図である。
【図１３】バス内配線入替部によるバス内配線入替処理を説明するための図である。
【図１４】配線入替例を説明するための図である。
【図１５】妨害配線について説明するための図である。
【図１６】設計装置の第二の機能構成を示す図である。
【図１７】妨害配線との配線入替を説明するための図である。
【図１８】妨害配線入替部による妨害配線入替処理を説明するためのフローチャート図である。
【図１９】設計装置の第三の機能構成を示す図である。
【図２０】ＥＣＯ配線部によるＥＣＯ配線処理を説明するためのフローチャート図である。
【図２１】着目バスの配線例を示す図である。
【図２２】設計装置の第四の機能構成を示す図である。
【図２３】バス情報テーブル作成部によるバス情報テーブル作成処理を説明するためのフローチャート図である。
【図２４】バス情報テーブルのデータ構成例を示す図である。
【図２５】バスプランニング部によるバスプランニング処理を説明するためのフローチャート図である。
【図２６】着目バスの信号線の配分例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態を図面に基づいて説明する。半導体装置の設計処理について概要を説明する。半導体装置の設計処理では、物理的に半導体装置のレイアウトを作成し、検証する。
【００１３】
図１は、半導体装置の設計処理の概要を説明するためのフローチャート図である。図１において、設計処理では、各セルを配置して、レイアウトデータ３３を作成し（ステップＳ１１）、クロックを生成する（ステップＳ１２）。
【００１４】
そして、タイミング最適化が行われ（ステップＳ１３）、配置したセルに対して信号線を配線する（ステップＳ１４）。その後、配線後のタイミング最適化が行われ（ステップＳ１５）、この設計処理は終了する。本実施の形態は、設計処理のうちステップＳ１４の信号配線に関する。
【００１５】
発明者等は、半導体装置において信号線が配線される各層の遅延時間について、以下に説明するような検証を行った。図２は、半導体装置内の信号配線モデルの例を示す図である。
【００１６】
図２に例示する信号配線モデル２は、入力波形生成部３と、リピータモデル４と、負荷５とを有する。モデル３ｂ、４ａ、及び５ａは、単位配線長毎の抵抗及び容量によって表されたモデルである。電圧源モデル３ａ及びモデル３ｂが入力波形生成部３を表し、直列に接続された８個のモデル４ａがリピータモデル４を表す。各モデル４ａは、バッファを表し、このリピータモデル４ではバッファが８段の例を示している。また、モデル５ａは負荷５を表す。
【００１７】
この信号配線モデル２を用いて、上層程抵抗が低く、下層程抵抗が高い、階層化された配線層における遅延時間が検証された。図３は、遅延時間の検証例を説明するための図である。
【００１８】
図３（Ａ）では、層毎の抵抗比の例を示している。検証では、４層とし、抵抗比を下層（最下層）Ｍ１を１とした場合に、中下層Ｍ２は１／３、中上層Ｍ３は１／１０、上層（最上層）Ｍ４は１／１００とした。
【００１９】
図３（Ｂ）は、駆動力と遅延時間との関係を示すグラフである。図３（Ｂ）を参照すると、駆動力を３２から１２８へと上げたとしても中上層Ｍ３及び上層Ｍ４では遅延時間に変化はない。しかしながら、信号配線を微細化するテクノロジでは下層Ｍ１は高抵抗化するため、下層Ｍ１及び中下層Ｍ２では駆動力が上がる程、遅延時間が大きくなっている。発明者等によるこの検証は、駆動力を上げても、遅延解消にはならないことを示している。
【００２０】
図３（Ｃ）では、配線長と遅延時間との関係を示すグラフである。図３（Ｃ）を参照すると、配線長を０．５から２．０へと長くしたとしても中上層Ｍ３及び上層Ｍ４では遅延時間に大きな変化はない。しかしながら、信号配線を微細化するテクノロジでは下層Ｍ１は高抵抗化するため、下層Ｍ１及び中下層Ｍ２では配線長が長くなる程、遅延時間が大きくなっている。
【００２１】
この検証は、配線長が長い場合、下層になるほど遅延が増大することを示している。発明者等は、半導体装置内のバス配線において、下層Ｍ１及び中下層Ｍ２の信号線の太幅化及び／又は信号線を割り当てる配線層制御が重要であると判断した。
【００２２】
図４は、配線抵抗とバッファリングとの関係を説明するための図である。図４（Ａ）では、半導体装置の配線プロセスの違いによるバッファリング例を示している。半導体装置内を横断する信号配線長はスケーリング則に従わない。
【００２３】
６５ｎｍプロセス１ａの信号配線を２８ｎｍプロセス１ｂの信号配線にした場合、６５ｎｍプロセス１ａの信号配線に比べて、２８ｎｍプロセス１ｂの信号配線では、配線抵抗が大きくなり、信号伝播はその影響を受け遅延する。
【００２４】
同様の配線領域において、同様のパターンの配線を行った場合、６５ｎｍプロセス１ａに比べ、２８ｎｍプロセス１ｂによる信号配線では、信号品質を保持するために、バッファ１ｐがより多く配置される。
【００２５】
図４（Ｂ）では、配線抵抗の違いによるバッファリング例を示している。半導体装置は回路ブロック間の配線及びオンチップバスを多数搭載する一方で、配線経路の最適化及び高い信号品質の要求を満たす必要がある。
【００２６】
図４（Ｂ）では、高抵抗配線のバッファリング７ａと低抵抗配線のバッファリング７ｂとの比較を示している。ある信号配線が、他の信号配線より抵抗が高い場合、高抵抗配線と呼び、他の信号配線をある信号配線との比較において低抵抗配線と呼ぶ。
【００２７】
同様の信号配線であっても、高抵抗配線のバッファリング７ａから低抵抗配線バッファリング７ｂにした場合、バッファ１ｐの間隔を長くできるため、バッファ１ｐの個数を少なくできる。
【００２８】
この例では、バッファ１ｐ間の長さ、即ち、バッファ間隔を４倍にした場合を示している。バッファ間隔を４倍にすることで、低抵抗配線のバッファリング７ｂは、高抵抗配線のバッファリング７ａより、スラックが改善される。
【００２９】
上述したような高抵抗配線及び低抵抗配線の考察に基づき、全ビットの信号配線を含むバスにおいて、全ビットを上層Ｍ４で信号配線した理想配線と、上層Ｍ４と下層Ｍ１とにビットの信号線を配分して配線する配分配線とについて説明する。
【００３０】
先ず、後述する図中で用いられる記号について凡例を示す。図５は、凡例を説明する図である。図５において、上層Ｍ４の信号配線９ａのバッファ１ｐ間の１つのバッファ間隔Ｄｕにおける、下層Ｍ１の信号配線９ｂのバッファリングの例を示している。信号配線９ａ及び信号配線９ｂは、夫々１ビットの信号を伝送する信号配線である。また、信号配線９ａ及び信号配線９ｂを、総称して、信号配線９０と呼ぶ。
【００３１】
本実施例では、上層Ｍ４の信号配線９ａのバッファ間隔Ｄｕは、下層Ｍ１の信号配線９ｂのバッファ間隔の整数倍に相当し、上層Ｍ４のバッファ間隔Ｄｕの両端で、上層Ｍ４及び下層Ｍ１においてバッファ１ｐが配置されるように設計される。詳細は後述される。
【００３２】
この例では、上層Ｍ４のバッファ間隔Ｄｕにおいて、下層Ｍ１では、信号配線９ｂに対して４つのバッファ１ｐがリピータとして等間隔で配置される。
【００３３】
上層Ｍ４の信号配線９ａは、低抵抗の配線であり、バッファ間隔Ｄｕでの遅延時間ｄｕは２５０ｐｓである。また、下層Ｍ１の信号配線９ｂは高抵抗の配線であり、上層Ｍ４のバッファ間隔Ｄｕでの遅延時間ｄｂは３３０ｐｓである。
【００３４】
以下、上述をバッファリングの一例として種々の説明を行うが、図５に示すバッファリングの例に限定されない。上層Ｍ４のバッファ間隔Ｄｕは、下層Ｍ１のバッファ間隔の２倍以上であればよい。
【００３５】
図６は、バス配線の例を示す図である。図６において、半導体装置１のバス６がオンチップバスの場合、信号配線９ａ及び信号配線９ｂを含む信号配線９０は、半導体装置１内の回路ブロックを接続し、通常、数本から数百本の信号配線９０が束になっている。
【００３６】
図６では、信号配線９０の束はブロックＤに接続される例を示している。これらの信号配線９０の束は、一般的に同じ経路に配線される。また、各信号配線９０の論理構造に大きな差はない。
【００３７】
信号配線設計における、信号線の複数の層への割り当てに係る配線層制御による遅延時間の変化について図７で説明する。図７は、配線層制御による遅延時間の変化を説明するための図である。図７において、全ビットを５ビットとして説明するが、ビット総数を５ビットに制限するものではない。
【００３８】
図７（Ａ）では、全ビットをバス６の上層Ｍ４で伝送するように信号配線９ａを設計した理想形を示す。上層Ｍ４の信号配線９ａの全体を示す代わりに、５個のバッファ１ｐを配置した部分で説明する。
【００３９】
各信号配線９ａの遅延時間は、図５を参照することで、２５０ｐｓを４倍した１０００ｐｓとなる。
【００４０】
図７（Ａ）に示されるように、全てのビットに対して遅延時間の短い上層Ｍ４の信号配線９ａを利用することが望ましいが、実際の信号配線設計で、設計上の制約がある場合、下層Ｍ１に信号配線９ｂを形成し、全ビットのうちの数ビットを伝送するように設計される。
【００４１】
図８は、ブロック間の幅の例を示す図である。図８（Ａ）は、全５ビットをバス６の上層Ｍ４に割り当て可能なブロックＢ及びＣ間の幅Ｘ１を示す。
【００４２】
しかしながら、図８（Ｂ）に示すように、ブロックＢ及びＣ間の幅Ｘ２が図８（Ａ）の幅Ｘ１より狭く、上層Ｍ４に５本の信号配線９ａを形成できない場合、下層Ｍ１の信号配線９ｂを利用する。この例では、幅Ｘ２内の上層Ｍ４の信号配線９ａの最大本数は、３本であるとする。
【００４３】
全５ビットのうち、３ビットを上層Ｍ４の信号配線９ａに割り当て、残りの２ビットを下層Ｍ１の信号配線９ｂに割り当てる。
【００４４】
図７（Ｂ）が、バス６において、３ビットを上層Ｍ４の信号配線９ａに割り当て、残りの２ビットを下層Ｍ１の信号配線９ｂに割り当てた配線配分例を示している。図７（Ｂ）において、上層Ｍ４の３本の各信号配線９ａの遅延時間は、図７（Ａ）の配線配分と同様に１０００ｐｓである。
【００４５】
一方、下層Ｍ１の２本の各信号配線９ｂは、図５を参照することで、３３０ｐｓを４倍した１３２０ｐｓとなる。各信号配線９ｂは、図７（Ａ）の配線配分による信号配線９ａの遅延時間１０００ｐｓに比べて、更に３２０ｐｓ遅延する。このように、下層Ｍ１の信号配線９ｂの最大遅延時間がボトルネックとなる。
【００４６】
図７（Ｂ）の配線配分例では、あるビットは、バス６の全長に渡って、複数の信号配線９ａ及び９ｂのうち同一の信号線で伝播される。
【００４７】
本実施例では、複数の配線層を有するバス６内において、全ビットを２以上の配線層の信号配線９ａ及び９ｂに割り当てる際に、ビットのデータが伝播する経路を上層Ｍ４又は下層Ｍ１に固定せず、上層Ｍ４のバッファ間隔Ｄｕの単位で、上層Ｍ４の信号配線９ａから下層Ｍ１の信号配線９ｂへと切り替える、また、下層Ｍ１の信号配線９ｂから上層Ｍ４の信号配線９ａへと切り替える、即ち、信号配線９ａと信号配線９ｂとを交換することで、最大遅延時間を低減する。
【００４８】
本実施例に係る設計装置１００は、図９に示すようなハードウェア構成を有する。図９は、設計装置のハードウェア構成を示す図である。図９において、設計装置１００は、コンピュータであって、ＣＰＵ（Central Processing Unit）１１と、主記憶装置１２と、補助記憶装置１３と、入力装置１４と、表示装置１５と、通信Ｉ／Ｆ（インターフェース）１７と、ドライブ装置１８とを有し、バスＢに接続される。
【００４９】
ＣＰＵ１１は、プロセッサであり、主記憶装置１２に格納されたプログラムに従って設計装置１００を制御する。主記憶装置１２には、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）等が用いられ、ＣＰＵ１１にて実行されるプログラム、ＣＰＵ１１での処理に必要なデータ、ＣＰＵ１１での処理にて得られたデータ等を記憶又は一時保存する。
【００５０】
補助記憶装置１３には、ＨＤＤ（Hard Disk Drive）等が用いられ、各種処理を実行するためのプログラム等のデータを格納する。補助記憶装置１３に格納されているプログラムの一部が主記憶装置１２にロードされ、ＣＰＵ１１に実行されることによって、各種処理が実現される。記憶部１３０は、主記憶装置１２及び補助記憶装置１３に相当する。
【００５１】
入力装置１４は、マウス、キーボード等を有し、設計者が設計装置１００による処理に必要な各種情報を入力するために用いられる。表示装置１５は、ＣＰＵ１１の制御のもとに必要な各種情報を表示する。入力装置１４と表示装置１５とは、一体化したタッチパネル等によるユーザインタフェースであってもよい。通信Ｉ／Ｆ１７は、有線又は無線などのネットワークを通じて通信を行う。通信Ｉ／Ｆ１７による通信は無線又は有線に限定されるものではない。
【００５２】
設計装置１００によって行われる処理を実現するプログラムは、例えば、ＣＤ−ＲＯＭ（Compact Disc Read-Only Memory）等の記憶媒体１９によって設計装置１００に提供される。
【００５３】
ドライブ装置１８は、ドライブ装置１８にセットされた記憶媒体１９（例えば、ＣＤ−ＲＯＭ等）と設計装置１００とのインターフェースを行う。
【００５４】
また、記憶媒体１９に、後述される本実施の形態に係る種々の処理を実現するプログラムを格納し、この記憶媒体１９に格納されたプログラムは、ドライブ装置１８を介して設計装置１００にインストールされる。インストールされたプログラムは、設計装置１００により実行可能となる。
【００５５】
尚、プログラムを格納する記憶媒体１９はＣＤ−ＲＯＭに限定されず、コンピュータが読み取り可能な、構造（structure）を有する１つ以上の非一時的（non-transitory）な、有形（tangible）な媒体であればよい。コンピュータ読取可能な記憶媒体として、ＣＤ−ＲＯＭの他に、ＤＶＤディスク、ＵＳＢメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリであっても良い。
【００５６】
先ず、バスプランニング後に、バス６内の信号配線９ａと９ｂとを入れ替える方法について、第一の機能構成から第三の機能構成で説明する。バスプランニング後の第一の機能構成から第三の機能構成では、バス６の複数の信号線は、上層Ｍ４又は下層Ｍ１のいずれかに配線され、信号配線９ａと９ｂとに配分される。信号配線９ａ及び９ｂは、本実施例に係るバッファリングにより配線される。
【００５７】
図１０は、設計装置の第一の機能構成を示す図である。図１０において、設計装置１００は、バッファリング部４１と、バス内配線入替部４２とを有し、記憶部１３０には、バッファリングデータ３１、レイアウトデータ３３等が記憶される。
【００５８】
バッファリング部４１は、上層Ｍ４のバッファ間隔を下層Ｍ１のバッファ間隔の整数倍（α）になるようにバッファリングを行う。バッファリングに係るバッファリングデータ３１は、記憶部１３０に記憶される。
【００５９】
バッファリングによってレイアウトデータ３３にバッファ１ｐに関するデータが追加される。本実施例に係るバッファリング部４１によるバッファリングによって、バス内配線入替部４２による信号配線の入れ替えが容易に行なえる。
【００６０】
バス内配線入替部４２は、バス６内の下層Ｍ１でタイミング遅延がある場合に、上層Ｍ４のバッファ１ｐの位置に対応する下層Ｍ１のバッファ１ｐの区間で、下層Ｍ１において信号配線９ｂを信号配線９ａへと入れ替え、上層Ｍ４において信号配線９ａから信号配線９ｂへと入れ替えられる。この区間において、上層Ｍ４の信号配線９ａと下層Ｍ１の信号配線９ｂとが交換される。
【００６１】
図１１は、バッファリングデータの例を示す図である。図１１（Ａ）では、バッファリング部４１が扱う変数と、計算式とによってバッファリングデータ３１を示している。
【００６２】
上層Ｍ４のビット数Ｎｕ、下層Ｍ１のビット数Ｎｂ、下層Ｍ１のバッファ間隔Ｄｂ、整数倍α、バス６の全長Ｌ、上層Ｍ４の一段分における上層Ｍ４の遅延ｄｕ、及び上層Ｍ４の一段分における下層Ｍ１の遅延ｄｂが与えることで、上層Ｍ４のバッファ間隔Ｄｕ、上層Ｍ４のバッファ段数Ｂｕ、下層Ｍ１のバッファ段数Ｂｂ、上層Ｍ４の全体の遅延Ｔｕ、及び下層Ｍ１の全体の遅延Ｔｂが算出される。
【００６３】
上層Ｍ４のバッファ間隔Ｄｕは、下層Ｍ１のバッファ間隔Ｄｂを整数倍αすることで得られる。上層Ｍ４のバッファ段数Ｂｕは、バス６の全長Ｌを上層Ｍ４のバッファ間隔Ｄｕで除算することで得られる。
【００６４】
下層Ｍ１のバッファ段数Ｂｂは、バス６の全長Ｌを下層Ｍ１のバッファ間隔Ｄｂで除算することで得られる。上層Ｍ４の全体の遅延Ｔｕは、上層Ｍ４のバッファ段数Ｂｕと上層Ｍ４における一段分の遅延ｄｕとを乗算することで得られる。また、下層Ｍ１の全体の遅延Ｔｂは、上層Ｍ４のバッファ段数Ｂｕと上層Ｍ４における一段分の下層Ｍ１の遅延ｄｂとを乗算することで得られる。
【００６５】
図１１（Ｂ）では、バッファリングデータ３１の値の一例を示している。以下のデータが与えられる。
【００６６】
上層Ｍ４のビット数Ｎｕには３、下層Ｍ１のビット数Ｎｂには２、下層Ｍ１のバッファ間隔Ｄｂには１００μｍ、整数倍αには４、バス６の全長Ｌには１６００μｍ、上層Ｍ４における一段分の遅延ｄｕには２５０ｐｓ、及び上層Ｍ４における一段分の下層Ｍ１の遅延ｄｂには３３０ｐｓが与えられる。
【００６７】
その結果、上層Ｍ４のバッファ間隔Ｄｕとして４００μｍを取得し、上層Ｍ４のバッファ段数Ｂｕとして４段を取得し、下層Ｍ１のバッファ段数Ｂｂとして１６段を取得する。また、上層Ｍ４の全体の遅延Ｔｕとして１０００ｐｓを取得し、下層Ｍ１の全体の遅延Ｔｂとして１３２０ｐｓを取得する。
【００６８】
バッファリング部４１によってバッファリングデータ３１を得てもよいし、図１１（Ａ）に示すような表計算用のテーブルにおいて、設計者が上層Ｍ４のビット数Ｎｕ、下層Ｍ１のビット数Ｎｂ、下層Ｍ１のバッファ間隔Ｄｂ、整数倍α、バス６の全長Ｌ、上層Ｍ４における一段分の上層Ｍ４の遅延ｄｕ、及び上層Ｍ４における一段分の下層Ｍ１の遅延ｄｂを設定することで、上層Ｍ４のバッファ間隔Ｄｕ、上層Ｍ４のバッファ段数Ｂｕ、下層Ｍ１のバッファ段数Ｂｂ、上層Ｍ４の全体の遅延Ｔｕ、及び下層Ｍ１の全体の遅延Ｔｂが算出されるようにしてもよい。その結果、図１１（Ｂ）に示すような値を示すバッファリングデータ３１を取得できる。
【００６９】
図１１（Ｂ）のバッファリングデータに基づいて行われる、バッファリング部４１によるバッファリング処理について説明する。図１２は、バッファリング部によるバッファリング処理を説明するための図である。
【００７０】
図１２において、バッファリング部４１は、全長Ｌが１６００μｍであるバス６において、全５ビットのうち、３ビットを上層Ｍ４の３本の信号配線９ａに割り当て、２ビットを下層Ｍ１の２本の信号配線９ｂに割り当てる。
【００７１】
バッファリング部４１は、信号配線９ａ及び９ｂの各々の両端にバッファ１ｐを配置する。また、バッファリング部４１は、下層Ｍ１ではバッファ間隔Ｄｂ「１００μｍ」でバッファ１ｐを配置する。更に、バッファリング部４１は、上層Ｍ４では、下層Ｍ１のバッファ間隔Ｄｂ「１００μｍ」の４倍のバッファ間隔Ｄｕ「４００μｍ」でバッファ１ｐを配置する。
【００７２】
各信号配線９ａ及び９ｂの全長Ｌにおける遅延時間は、前述した通り、それぞれ１０００ｐｓ及び１３２０ｐｓである。上層Ｍ４の信号配線９ａの各バッファ間隔Ｄｕを１セグメントという。
【００７３】
次に、バス内配線入替部４２によって行われるバス内配線入替処理について説明する。図１３は、バス内配線入替部によるバス内配線入替処理を説明するための図である。図１３において、バス内配線入替部４２は、下層Ｍ１のセグメント数８（＝２ビット×４セグメント）を全５ビットで均等分配する。
【００７４】
分配の一例として、
・３ビットの各々に下層Ｍ１の２セグメントを割り当てる。下層Ｍ１の信号配線９ｂにおいて、合計６セグメント（＝３ビット×２セグメント）を利用する。
・２ビットの各々に下層Ｍ１の１セグメントを割り当てる。下層Ｍ１の信号配線９ｂにおいて、合計２セグメント（＝２ビット×１セグメント）を利用する。
【００７５】
各信号配線９ａ及び９ｂは、４セグメントを有することから、バス内配線入替部４２は、上下層Ｍ１を入れ替えて各ビットに均等分配した下層Ｍ１を割り当てる。
・３ビットの各々には、上層Ｍ４の２セグメント、及び下層Ｍ１の２セグメントを割り当てる。
・２ビットの各々には、上層Ｍ４の３セグメント、及び下層Ｍ１の１セグメントを割り当てる。
【００７６】
次に、バス内配線入替部４２は、信号配線９ａ及び９ｂの各々の遅延時間を算出する。この場合、全５ビットのうち、ビット１、３、及び５が上層Ｍ４の信号配線９ａに割り当てられ、ビット２及び４が下層Ｍ１の信号配線９ｂに割り当てられる。
【００７７】
ビット１のデータが伝播する経路は、ビット１の上層Ｍ４の信号配線９ａの最初のセグメント、ビット２の下層Ｍ１の信号配線９ｂの２番目及び３番目のセグメント、そして、ビット１の上層Ｍ４の信号配線９ａの最後のセグメントである。ビット１の経路の遅延時間は１１６０ｐｓである。
【００７８】
ビット２のデータが伝播する経路は、ビット２の下層Ｍ１の信号配線９ｂの最初のセグメント、ビット１の上層Ｍ４の信号配線９ａの２番目及び３番目のセグメント、そして、ビット２の下層Ｍ１の信号配線９ｂの最後のセグメントである。ビット２の経路の遅延時間は１１６０ｐｓである。
【００７９】
ビット３のデータが伝播する経路は、ビット３の上層Ｍ４の信号配線９ａの最初のセグメント、ビット４の下層Ｍ１の信号配線９ｂの２番目、そして、ビット３の上層Ｍ４の信号配線９ａの３番目及び最後のセグメントである。ビット３の経路の遅延時間は１０６０ｐｓである。
【００８０】
ビット４のデータが伝播する経路は、ビット４の下層Ｍ１の信号配線９ｂの最初のセグメント、ビット５の上層Ｍ４の信号配線９ａの２番目及び３番目のセグメント、そして、ビット４の下層Ｍ１の信号配線９ｂの最後のセグメントである。ビット４の経路の遅延時間は１１６０ｐｓである。
【００８１】
ビット５のデータが伝播する経路は、ビット５の上層Ｍ４の信号配線９ａの最初のセグメント、ビット３の上層Ｍ４の信号配線９ａの２番目のセグメント、ビット４の下層Ｍ１の信号配線９ｂの３番目のセグメント、そして、ビット５の上層Ｍ４の信号配線９ａの最後のセグメントである。ビット５の経路の遅延時間は１０６０ｐｓである。
【００８２】
バス内配線入替部４２は、５経路のうち最大遅延時間「１１６０ｐｓ」がタイミング違反か否かを判定し、タイミング違反がない場合には、上述した分配に基づくレイアウトデータ３３が出力され記憶部１３０に記憶される。
【００８３】
図１４は、配線入替例を説明するための図である。図１４中、バス６の配線方向をＸ方向とし、バス６の配線層方向をＹ方向とし、バス６の幅方向をＺ方向とする。図１４（Ａ）は、バッファリング後のバス内配線入替前の、２セグメント間における、上層Ｍ４の低抵抗の信号配線９ａと下層Ｍ１の高抵抗の信号配線９ｂの配線例を示している。
【００８４】
上層Ｍ４の低抵抗の信号配線９ａは、バッファ１ｐ−１１、１ｐ−１２、及び１ｐ−１３をリピータとし、２セグメントを形成する。下層Ｍ１の高抵抗の信号配線９ｂは、バッファ１ｐ−２１、バッファ１ｐ−２２、バッファ１ｐ−２３、バッファ１ｐ−２４、バッファ１ｐ−２５、バッファ１ｐ−２６、バッファ１ｐ−２７、バッファ１ｐ−２８、及びバッファ１ｐ−２９をリピータとし、２セグメントを形成する。
【００８５】
各セグメントの区切りとなる、上層Ｍ４の信号配線９ａのバッファ１ｐ−１１、１ｐ−１２、及び１ｐ−１３が位置する同じＸ座標に、下層Ｍ１の信号配線９ｂのバッファ１ｐ−２１、１ｐ−２５、及び１ｐ−２９が位置する。バッファ１ｐ−１１とバッファ１ｐ−２１とが対応し、バッファ１ｐ−１２とバッファ１ｐ−２５とが対応し、バッファ１ｐ−１３とバッファ１ｐ−２９とが対応する。
【００８６】
バス内配線入替部４２によるバス内配線入替処理は行われていない。従って、経路７１は、常に、同じ信号配線９ａに存在する。同様に、経路７２も、常に、同じ信号配線９ｂに存在する。
【００８７】
バス内配線入替部４２によるバス内配線入替処理が実施され、セグメントの区切りで、信号配線９ａと９ｂとが入れ替えられた入替例を図１４（Ｂ）で示す。図１４（Ｂ）において、セグメントの区切り位置のバッファ１ｐ−１２で、経路７１の信号配線は、信号配線９ａから信号配線９ｂへと入れ替えられる。
【００８８】
信号配線９ａにおけるバッファ１ｐ−１１からバッファ１ｐ−１２への接続は、下層Ｍ１のバッファ１ｐ−２５へと接続される。よって、経路７１の信号配線は、信号配線９ａから信号配線９ｂに入れ替えられる。
【００８９】
また、信号配線９ｂにおけるバッファ１ｐ−２４からバッファ１ｐ−２５への接続は、上層Ｍ４のバッファ１ｐ−１２へと接続される。よって、経路７２の信号配線は、信号配線９ｂから信号配線９ａに入れ替えられる。下層Ｍ１においては、セグメントの区切り位置のバッファ１ｐ−２５の１段前のバッファ１ｐ−２４から上層Ｍ４の信号配線９ａのバッファ１ｐ−１２に接続される。
【００９０】
上述した第一の機能構成において、バス内配線入替部４２によるバス内配線入替処理によっても最大遅延時間がタイミング違反となる場合が考えられる。その場合、第一の機能構成例では、設計者が配置を見直したのち、再度、上述したような信号配線を繰り返す。
【００９１】
上述した第一の機能構成において最大遅延時間がタイミング違反となった場合に、更に、遅延時間を改善する第二の機能構成について以下に説明する。第二の機能構成では、上層Ｍ４に存在する妨害配線９１（図１５）に着目し、上述同様にセグメント単位で信号配線９１及び９ｂ間の切り替えを行う。
【００９２】
図１５は、妨害配線について説明するための図である。図１５において、妨害配線９１は、バス６の信号配線９０の束とは別に、上層Ｍ４に設計され、ビット数に応じてバス６の信号配線９０を複数層に配分する際に、上層Ｍ４への配分を制限する信号配線である。
【００９３】
図１５では、バス６の全長Ｌのうち、ブロックＡとブロックＢとの間の経路９ｆを含む、バス６の信号配線９０の束とは別の信号配線が、妨害配線９１として示されている。
【００９４】
図１６は、設計装置の第二の機能構成を示す図である。図１６において、設計装置１００は、図１０に示す第一の機能構成に、更に、妨害配線入替部４３を有する。図１６中、図１０に示す第一の機能構成と同様の処理部には同一の符号を付し、その説明を省略する。ここでは、妨害配線入替部４３について説明する。
【００９５】
妨害配線入替部４３は、バス内配線入替部４２によるバス内配線入替処理を行っても、タイミング違反が回避できない場合に、上層Ｍ４の妨害配線９１と、下層Ｍ１のバス６の信号配線９ｂとを入れ替える。上層Ｍ４の妨害配線９１にタイミング違反を回避できる分のセグメントが存在する場合に、妨害配線９１と信号配線９ｂとの入れ替えが行われる。妨害配線９１と信号配線９ｂとの入れ替えにより、記憶部１３０内のレイアウトデータ３３は更新される。
【００９６】
図１７は、妨害配線との配線入替を説明するための図である。図１７中、経路９ｆ内の３セグメントにおける信号線の配線例を用いて、妨害配線９１との配線入替を説明する。図１７（Ａ）では、バス６において下層Ｍ１の２本の信号配線９ｂがタイミング違反となった場合であり、且つ、２本の妨害配線９１が存在する場合で示している。バス６内のタイミング違反のない信号配線９ａ又は９ｂについては省略している。
【００９７】
各妨害配線９１の遅延時間は７５０ｐｓであり、ターゲットタイミングの９００ｐｓを満たしている。バス６の各信号配線９ｂの遅延時間は９９０ｐｓであり、ターゲットタイミングの９５０ｐｓを超えている。
【００９８】
妨害配線入替部４３は、経路９ｆ内の１つのセグメント１７ｇにおいて、バス６のタイミング違反の２本の信号配線９ｂを２本の妨害配線９１へと入れ替える。図１７（Ｂ）は、妨害配線入替処理後の経路を示している。
【００９９】
セグメント１７ｇにおいて、上層Ｍ４の２本の妨害配線９１の各々の経路は、下層Ｍ１の高抵抗の信号配線９ｂに入れ替えられている。また、下層Ｍ１の２本の信号配線９ｂの各々の経路は、セグメント１７ｇにおいて、上層Ｍ４の低抵抗の妨害配線９１と入れ替えられている。
【０１００】
このような配線入替により、タイミング違反のあった２本の信号配線９ｂの遅延時間は、９１０ｐｓに改善され、ターゲットタイミングの９５０ｐｓを満たしている。また、２本の妨害配線９１の遅延時間は、８３０ｐｓになったが、ターゲットタイミングの９００ｐｓを満たしている。
【０１０１】
このように、バス内配線入替部４２でのバス内配線入替処理によってもタイミング違反が発生する場合に、タイミング違反のあるバス６と妨害配線９１と共に、タイミング違反が発生しないように上層Ｍ４の信号配線９ａと下層Ｍ１の信号配線９ｂとをセグメント単位で入れ替えることで、半導体装置１の全体において最大遅延によるボトルネックを改善することができる。
【０１０２】
上述では、バス６の下層Ｍ１のタイミング違反のある信号配線９ｂと妨害配線９１とを、セグメント単位で入れ替える例を示している。上述した妨害配線入替処理は、上層Ｍ４のタイミング違反のある信号配線９ａと妨害配線９１とを、セグメント単位で入れ替える場合にも適用可能である。
【０１０３】
図１８は、妨害配線入替部による妨害配線入替処理を説明するためのフローチャート図である。図１８において、タイミング違反のあるバス６を着目バスとして、以下の妨害配線入替処理が行われる。妨害配線入替部４３は、着目バスの違反配線を１本選択する（ステップＳ２１）。違反配線とは、下層Ｍ１のタイミング違反のある信号配線９ｂである。
【０１０４】
妨害配線入替部４３は、違反回避に必要な上層Ｍ４のセグメント数を計算し（ステップＳ２２）、着目バスの上層Ｍ４にセグメント数分の長さを満たすだけの妨害配線９１が存在するか否かを判断する（ステップＳ２３）。妨害配線９１の存在判断は、レイアウトデータ３３を参照して、着目バスの下層Ｍ１の信号配線９ｂと並行である上層Ｍ４の着目バスに含まれない信号配線を妨害配線９１と見なせばよい。
【０１０５】
妨害配線９１が存在しない場合（ステップＳ２３のＮｏ）、妨害配線入替部４３は、配置の見直し通知を表示装置１５に表示して、設計者に配置の見直しを促す（ステップＳ２４）、この妨害配線入替処理を終了する。
【０１０６】
一方、妨害配線９１が存在する場合（ステップＳ２３のＹｅｓ）、妨害配線入替部４３は、変数ｉを初期化してセロに設定する（ステップＳ２５）。
【０１０７】
妨害配線入替部４３は、変数ｉがステップＳ２２で計算したセグメント数を超えるか否かを判断する（ステップＳ２６）。変数ｉがセグメント数以下である場合（ステップＳ２６のＮｏ）、妨害配線入替部４３は、妨害配線９１のスラック（slack）に基づいて、最もタイミング余裕のある上層Ｍ４の妨害配線９１からセグメントを１つ選択する（ステップＳ２７）。
【０１０８】
そして、妨害配線入替部４３は、ステップＳ２７で選択したセグメントにおいて、上層Ｍ４の妨害配線９１と下層Ｍ１の信号配線９ｂとを入れ替える（ステップＳ２８）。
【０１０９】
具体的には、妨害配線入替部４３は、信号の伝播方向において、選択したセグメントの１段前のセグメントの上層Ｍ４の妨害配線９１を、選択したセグメントの開始点に位置する下層Ｍ１のバッファ１ｐ（図１４（Ｂ）のバッファ１ｐ−２５に相当）に接続する。また、妨害配線入替部４３は、１段前のセグメントの下層Ｍ１の信号配線９ｂを選択したセグメントの開始点に位置する上層Ｍ４のバッファ１ｐ（図１４（Ｂ）のバッファ１ｐ−１２に相当）に接続する。
【０１１０】
妨害配線入替部４３は、同様の接続の変更を、選択したセグメントの終了点に位置する下層Ｍ１のバッファ１ｐ（図１４（Ｂ）のバッファ１ｐ−２９に相当）及び上層Ｍ４のバッファ１ｐ（図１４（Ｂ）のバッファ１ｐ−１３に相当）に対しても行う。よって、選択したセグメントにおいて、上層Ｍ４の妨害配線９１と下層Ｍ１の信号配線９ｂとが入れ替えられる。
【０１１１】
その後、妨害配線入替部４３は、部分的に下層Ｍ１の信号配線９ｂと入れ替えられた妨害配線９１でタイミング違反があるか否かを判断する（ステップＳ２９）。タイミング違反がない場合（ステップＳ２９のＮｏ）、妨害配線入替部４３は、変数ｉを１インクリメントして（ステップＳ３０）、ステップＳ２６へと戻り、上述同様の処理を繰り返す。
【０１１２】
一方、妨害配線でタイミング違反がある場合（ステップＳ２９のＹｅｓ）、妨害配線入替部４３は、配置の見直し通知を表示装置１５に表示して、設計者に配置の見直しを促し（ステップＳ２４）、この妨害配線入替処理を終了する。
【０１１３】
変数ｉがセグメント数を超える場合（ステップＳ２６のＹｅｓ）、妨害配線入替部４３は、着目バスにタイミング違反の信号配線９ｂが未だ残っているか否かを判断する（ステップＳ３１）。タイミング違反の信号配線９ｂが未だ残っている場合（ステップＳ３１のＹｅｓ）、妨害配線入替部４３は、ステップＳ２１へと戻り、上述同様の処理を繰り返す。一方、タイミング違反の信号配線９ｂが残っていない場合（ステップＳ３１のＮｏ）、妨害配線入替部４３は、この妨害配線入替処理を終了する。
【０１１４】
上述した第一の機能構成及び第二の機能構成では、配線前の段階で配線入替を行うことを前提としている。以下、初期配線後であってバッファリング済みの段階において、同様の手法を用いて配線入替を行う第三の機能構成について説明する。
【０１１５】
図１９は、設計装置の第三の機能構成を示す図である。図１９において、設計装置１００は、バッファリング部４１と、バス内配線入替部４２と妨害配線入替部４３とを有するＥＣＯ（Engineering Change Order）配線部４４とを有する。
【０１１６】
バッファリング部４１、バス内配線入替部４２、及び妨害配線入替部４３は、第一の機能構成及び第二の機能構成と同様であるので、その説明を省略する。
【０１１７】
バッファリング部４１は、バス配線を行う。バッファリング部４１は、バス６の信号線を初期配線し、バッファリングデータ３１に基づいて、層毎に、配線した信号線に対して、各層のバッファ間隔でバッファ１ｐを配置してバッファリングする。
【０１１８】
ＥＣＯ配線部４４は、初期配線でタイミング違反が発生したバス６の信号経路に対して、配置されたＥＣＯセルを用いて信号経路の配線を変更するＥＣＯ配線処理を行い、タイミング違反を回避する。
【０１１９】
第三の機能構成では、ＥＣＯ配線部４４は、第二の機能構成におけるバス内配線入替部４２と、妨害配線入替部４３とを含み、上層Ｍ４のセグメント単位の区間で、下層Ｍ３のタイミング違反を回避し、更には、上層Ｍ４の妨害配線９１を利用することで、バス６内の上層Ｍ４及び下層Ｍ３のタイミング違反を回避する。
【０１２０】
また、バッファリング部４１によるバッファリング処理後のＥＣＯ配線部４４によるＥＣＯ配線処理において、少なくともバス内配線入替部４２によるバス内配線入替処理が行われ、バス内配線入替処理によってもタイミング違反が回避されない場合に、妨害配線入替部４３による妨害配線入替処理が行われる。配線入替後のレイアウトデータ３３が記憶部１３０に記憶される。
【０１２１】
ＥＣＯ配線処理内で、バス内配線入替部４２によるバス内配線入替処理と、妨害配線入替部４３による妨害配線入替処理とを行うことで、配線済みのリソース内で配線入替を行うことで、余分な配線を準備してレイアウトを変更する必要がない。
【０１２２】
図２０は、ＥＣＯ配線部によるＥＣＯ配線処理を説明するためのフローチャート図である。図２０において、ＥＣＯ配線部４４は、各バスの長さＬ、幅Ｘ、全ビット数Ｎ、セグメント数、スラックを入力する（ステップＳ７１）。長さＬ、幅Ｘ、全ビット数Ｎ、セグメント数、スラックの各値は、予め記憶部１３０に記憶され、ＥＣＯ配線部４４は、これらの値を読み込む。或いは、ＥＣＯ配線部４４は、表示装置１５にこれら値を入力するための画面を表示、設計者から取得するようにしてもよい。
【０１２３】
ＥＣＯ配線部４４は、着目バス６'（図２１）として、タイミング違反のバス６を選択する（ステップＳ７２）。ＥＣＯ配線部４４は、着目バス６'の信号線の総数Ｎ本に対して、上層Ｍ４に信号線Ｎｕ本が配線され、及び、下層Ｍ１に信号線Ｎｂ本が配線されている初期配線情報を取得する（ステップＳ７３）。信号線の総数Ｎ本は、着目バス６'が伝送するデータのビット総数に相当する。
【０１２４】
図２１は、着目バスの配線例を示す図である。図２１において、ＥＣＯ配線部４４によって、幅Ｘの着目バス６'に対して、上層Ｍ４にＮｕ本の信号配線ＳＵ＿１、・・・ＳＵ＿Ｎｕ（総称して、信号配線ＳＵと言う）が配線され、下層Ｍ１にＮｂ本の信号配線ＳＬ＿１、ＳＬ＿２、・・・ＳＬ＿Ｎｂ（総称して、信号配線ＳＬと言う）が配線される。
【０１２５】
図２０に戻り、ＥＣＯ配線部４４は、着目バス６'の各信号配線ＳＵ及びＳＬの遅延時間を計算し（ステップＳ７４）、タイミング違反は下層Ｍ１のみに存在するか否かを判断する（ステップＳ７５）。下層Ｍ１のみに存在する場合（ステップＳ７５）、ＥＣＯ配線部４４は、バス内配線入替部４２にバス内配線入替処理を行わせる（ステップＳ７６）。
【０１２６】
ステップＳ７６のバス内配線入替処理において、バス内配線入替部４２は、下層Ｍ１の１以上の信号配線９ｂにおけるセグメント数Ｓｂを計算して（ステップＳ７６−２）、セグメント数Ｓｂを全体のＮビットで均等に分配する（ステップＳ７６−４）。
【０１２７】
図１２の例のように、２本の信号配線９ｂからセグメント数Ｓｂが８個となる場合、図１３の例のように、３ビットの各々には、上層Ｍ４の２セグメント、及び下層Ｍ１の２セグメントが割り当てられ、２ビットの各々には、上層Ｍ４の３セグメント、及び下層Ｍ１の１セグメントが割り当てられる。
【０１２８】
バス内配線入替部４２は、上層Ｍ４のセグメント単位で、下層Ｍ１の信号配線９ｂを各ビットに割り当てて、上層Ｍ４の信号配線９ａと下層Ｍ１の信号配線９ｂとを入れ替えて（ステップＳ７６−６）、バス６においてタイミング違反がないか否かを判断する（ステップＳ７６−８）。バス内配線入替部４２によってタイミング違反がないと判断された場合（ステップＳ７６−８のＮｏ）、ＥＣＯ配線部４４は、このＥＣＯ配線処理を終了する。
【０１２９】
一方、バス内配線入替部４２によってタイミング違反があると判断された場合（ステップＳ７６−８のＹｅｓ）、ＥＣＯ配線部４４は、妨害配線入替部４３に妨害配線入替処理を行わせる（ステップＳ７７）。妨害配線入替部４３による妨害配線入替処理は、図１８に示す通りであるため、詳細な説明は省略し、処理分岐についてのみ簡単に説明する。
【０１３０】
妨害配線入替部４３は、妨害配線９１と、上層Ｍ４の信号配線９ａ又は下層Ｍ１の信号配線９ｂとの配線入替によりタイミング違反を回避できたか否かを判断する（ステップＳ７７−２）。タイミング違反を回避できなかった場合（ステップＳ７７−２のＮｏ）、妨害配線入替部４３は、配置の見直し通知を表示装置１５に表示して、設計者に配置の見直しを促す（ステップＳ７７−４）、この妨害配線入替処理を終了する。その後、ＥＣＯ配線部４４は、このＥＣＯ配線処理を終了する。
【０１３１】
一方、タイミング違反を回避できた場合（ステップＳ７７−２のＹｅｓ）、妨害配線入替部４３による妨害配線入替処理は終了し、ＥＣＯ配線部４４は、このＥＣＯ配線処理を終了する。
【０１３２】
上述した第一の機能構成から第三の機能構成までは、バスプランニング後の複数のバス６のうち、タイミング違反のあるバス６を着目バス６'とし、本実施例に係るバス内配線入替処理（及び妨害配線入替処理）を行う構成である。
【０１３３】
次に、バスプランニングにおいて各バス６を配線する際に、タイミング違反を回避する第四の機能構成を説明する。図２２は、設計装置の第四の機能構成を示す図である。図２２において、設計装置１００は、バス情報テーブル作成部４５と、バスプランニング部４６とを有し、記憶部１３０には、バス情報テーブル３５、レイアウトデータ３３等が記憶される。
【０１３４】
バス情報テーブル作成部４５は、バス配線に係るバス情報を算出し、バス６毎のバス情報を示すバス情報テーブル３５を作成する。作成されたバス情報テーブル３５は、記憶部１３０に記憶される。
【０１３５】
バスプランニング部４６は、バス情報テーブル１３０を参照して、バッファリングを行い、半導体装置１に複数のバス６を配線するバス配線処理を行う。複数のバス６を配線する際には、各バス６にタイミング違反が発生しないように、本実施例に係るバス内配線入替処理（及び妨害配線入替処理）を実施する。
【０１３６】
従って、バスプランニング部４６は、バッファリング部４１と、バス内配線入替部４２と、妨害配線入替部４３とを有する。バッファリング部４１、バス内配線入替部４２、及び妨害配線入替部４３については、上述した通りであるので、詳細な説明を省略する。
【０１３７】
図２３は、バス情報テーブル作成部によるバス情報テーブル作成処理を説明するためのフローチャート図である。図２３において、バス情報テーブル作成部４５は、各バス６の長さを見積もり（ステップＳ１５１）、各バス６の長さに対して、配線層毎の遅延時間を計算する（ステップＳ１５２）。
【０１３８】
そして、バス情報テーブル作成部４５は、各バス６のターゲットタイミングと遅延時間からスラックを計算し（ステップＳ１５３）、上層優先順序を計算する（ステップＳ１５４）。スラックは、遅延時間からターゲットタイミングを減算して求められる。各バス６は、スラックの余裕のないバス６から順に上層Ｍ４へ優先的に配線されるように順位付けされる。
【０１３９】
バス情報テーブル作成部４５は、上述したステップＳ１５１〜Ｓ１５４で得られた値を示すバス情報テーブル３５を記憶部１３０に記憶する（ステップＳ１５５）。
【０１４０】
図２４は、バス情報テーブルのデータ構成例を示す図である。図２４において、バス情報テーブル３５は、バスＡ、Ｂ、Ｃ、・・・等のバス６毎のバス情報を示すテーブルであって、バス識別情報、バス長、タイミングターゲット、第１層（下層）、第２層（中層）、第３層（上層）、上層優先順序等の項目を有する。
【０１４１】
バス識別情報は、各バス６を識別するバス名等の識別情報を示す。バス長は、各バス６の長さを示す。タイミングターゲットは、タイミング制約に基づく許容される遅延時間を示す。
【０１４２】
第１層（下層）は、上述した下層Ｍ１に相当し、その遅延時間及びスラックを示す。第２層（中層）は、上述した中下層Ｍ２又は中上層Ｍ３に相当し、その遅延時間及びスラックを示す。第３層（上層）は、上述した上層Ｍ４に相当し、その遅延時間及びスラックを示す。
【０１４３】
上層優先順序は、上層Ｍ４へ配線する優先順序を示す。優先順序が１の場合に最も優先的に上層Ｍ４へ配線される。優先順序が２、３、・・・の順に低くなる。
【０１４４】
図２５は、バスプランニング部によるバスプランニング処理を説明するためのフローチャート図である。図２５において、バスプランニング部４６は、各バスの長さＬ、幅Ｘ、層毎のスラック、及び全ビット数Ｎと、各層の配線幅Ｗ、及び配線間隔Ｓｐとを入力する（ステップＳ１６１）。各バスの長さＬ、幅Ｘ、層毎のスラック、及び全ビット数Ｎと、各層の配線幅Ｗ、及び配線間隔Ｓｐの値は、予め記憶部１３０に記憶され、バスプランニング部４６は、これらの値を読み込む。或いは、バスプランニング部４６は、表示装置１５にこれら値を入力するための画面を表示、設計者から取得するようにしてもよい。
【０１４５】
バスプランニング部４６は、着目バス６'（図２６）として、スラックの余裕のないバス６を選択する（ステップＳ１６２）。バスプランニング部４６は、上層のスラックに基づいて、Ｎビット分の配線が可能か否かを判断する（ステップＳ１６４）。Ｎビット分の配線が可能な場合（ステップＳ１６４のＹｅｓ）、上層５１に着目バス６'を配線して（ステップＳ１６５）、ステップＳ１６７へと進む。
【０１４６】
一方、Ｎビット分の配線ができない場合（ステップＳ１６４のＮｏ）、バスプランニング部４６は、着目バス６'の信号線の総数Ｎ本のうち、上層Ｍ４に配線可能な信号線Ｎｕ本を配線し、残りの信号線Ｎｂ本を下層Ｍ１に配線する（ステップＳ１６６）。
【０１４７】
図２６は、着目バスの信号線の配分例を示す図である。図２６（Ａ）は、着目バス６'の信号線の配線ルールを示している。Ｎ本の信号線の配線幅はＷであり、Ｎ本の信号線の各々は配線間隔Ｓｐの余裕を持たせて配線される。
【０１４８】
図２６（Ｂ）は、上層Ｍ４に優先してバス配線した場合の例を示している。図２６（Ｂ）において、着目バス６'の信号線の総数Ｎ本は、Ｎｕ本とＮｂ本の合計で表される（Ｎ＝Ｎｕ＋Ｎｂ）。上層Ｍ４は、信号線Ｎｕ本の配線が可能である場合、着目バス６'のＮ本の信号線のうち、Ｎｕ本が優先的に上層Ｍ４に配線される。上層Ｍ４に配線された信号線は、信号配線ＳＵ＿１、・・・ＳＵ＿Ｎｕで示される。
【０１４９】
上層Ｍ４に配線しきれなかった着目バス６'の残りのＮｕ本の信号線は、下層Ｍ１に配線される。下層Ｍ１に配線された信号線は、信号配線ＳＬ＿１、ＳＬ＿２、・・・ＳＬ＿Ｎｂで示される。
【０１５０】
図２５に戻り、ステップＳ１６５又はＳ１６６での処理後、バスプランニング部４６のバッファリング部４１が上述したように配線入れ替え容易なバッファリングを着目バス６'に行う（ステップＳ１６７）。
【０１５１】
バスプランニング部４６は、着目バス６'にタイミング違反があるか否かを判断する（ステップＳ１６８）。タイミング違反がない場合（ステップＳ１６８のＮｏ）、バスプランニング部４６は、未配線のバス６があるか否かを判断する（ステップＳ１７０）。未配線のバス６がある場合（ステップＳ１７０のＹｅｓ）、バスプランニング部４６は、ステップＳ１６１へと進み、上述同様の処理を繰り返す。一方、未配線のバス６がない場合（ステップＳ１７０のＮｏ）、バスプランニング部４６は、このバスプランニング処理を終了する。
【０１５２】
一方、タイミング違反がある場合（ステップＳ１６８のＹｅｓ）、バスプランニング部４６は、第三の機能構成におけるバス内配線入替部４２によるバス内配線入替処理及び／又は妨害配線入替部４３による妨害配線入替処理を行う。ステップＳ７５からステップＳ７７は、図２０と同様であるため、それらの説明を省略する。
【０１５３】
ステップＳ７６において、バス内配線入替部４２がタイミング違反がないと判断し（ステップＳ７６−８のＮｏ）、バス内配線入替処理が終了すると、バスプランニング部４６は、未配線のバス６が残っているか否かを判断する（ステップＳ１７０）。未配線のバス６がある場合（ステップＳ１７０のＹｅｓ）、バスプランニング部４６は、ステップＳ１６１へと進み、上述同様の処理を繰り返す。一方、未配線のバス６がない場合（ステップＳ１７０のＮｏ）、バスプランニング部４６は、このバスプランニング処理を終了する。
【０１５４】
また、ステップＳ７７において、妨害配線入替部４３が、タイミング違反を回避できた場合（ステップＳ７７−２のＹｅｓ）、上述同様にステップＳ１７０での判断処理が行われる。全てのバス６の配線を終了すると、バスプランニング部４６は、このバスプランニング処理を終了する。妨害配線入替部４３が、タイミング違反を回避でず（ステップＳ７７−２のＮｏ）、設計者に配置の見直しを促した場合（ステップＳ７７−４）、この妨害配線入替処理を終了する。
【０１５５】
上述したように、本実施例では、バス配線において、各ビットのデータ転送の経路において、部分的に上層Ｍ４の信号配線９ａと下層Ｍ１の信号配線９ｂとを交換するため、バス配線内の最大遅延を低減することができる。本実施例は、特に、高速かつバス配線長の長いバス６に対して、最大遅延時間を低減する効果がある。
【０１５６】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、主々の変形や変更が可能である。
【０１５７】
以上の第１の機能構成から第４の機能構成を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
低抵抗配線層で構成されｍ個の第１のバッファが挿入された第１の信号線を含む第１の信号経路と、前記低抵抗配線層より抵抗が高い高抵抗配線層で構成され少なくとも前記ｍ個の第１のバッファに隣接して配置されたｍ個の第２のバッファを含むｎ個（ｎ≧ｍ）の第３のバッファが挿入された第２の信号線を含む第２の信号経路と、を有する半導体装置のタイミング検証を実施し、
前記第１の信号経路に規定のタイミング余裕があり、前記第２の信号経路にタイミング違反がある場合、前記第１の信号経路の少なくとも一部の前記第１のバッファ間の信号線を前記第２の信号経路の一部の信号線と交換する
処理をコンピュータが行う半導体装置の設計方法。
（付記２）
前記コンピュータは、
前記第１のバッファ間の区間の開始点となる前記第１のバッファに対応して設けられた前記第２のバッファで、前記第２の信号経路を前記第１の信号経路と交換し、前記区間の終了点となる前記第１のバッファに対応して設けられた前記第２のバッファで、前記第１の信号経路を前記第２の信号経路と交換する
ことを特徴とする付記１記載の半導体装置の設計方法。
（付記３）
前記コンピュータは、
前記低抵抗配線層の隣り合う前記第１のバッファ間をセグメントとし、前記セグメント単位で、第１の回路ブロックと第２の回路ブロックの間を伝送する複数のビットを前記高抵抗配線層の信号線に均等に割り当てて、割り当て結果に基づいて、１以上のセグメントによる前記区間で、前記第１の信号経路と前記第２の信号経路とを交換する第１の配線入替処理を行う
ことを特徴とする付記２記載の半導体装置の設計方法。
（付記４）
前記コンピュータは、
前記第１の配線入替処理によっても前記タイミング違反が少なくとも前記第１の信号経路又は前記第２の信号経路のいずれかにある場合、前記低抵抗配線層に前記複数のビットのデータ以外を伝送し、前記低抵抗配線層への割り当てを制限する妨害配線と、前記第２の信号経路の少なくとも一部の信号線とを交換する第２の配線入替処理を行う
ことを特徴とする付記３記載の半導体装置の設計方法。
（付記５）
前記コンピュータは、
前記第１の信号線及び前記第２の信号線の初期配線で前記タイミング違反が生じた場合、前記第１の配線入替処理を行い、前記第１の配線入替処理後においても前記タイミング違反を回避できない場合、前記第２の配線入替処理を行う
ことを特徴とする付記４記載の半導体装置の設計方法。
（付記６）
前記コンピュータは、
複数のバスのうちスラックの少ないバスから、前記低抵抗配線層に配線し前記タイミング検証を行い、配線した前記バスにおいて、前記第１の信号経路に規定のタイミング余裕があり、前記第２の信号経路に前記タイミング違反がある場合、前記第１の配線入替処理を行い、前記第１の配線入替処理後においても前記タイミング違反を回避できない場合、前記第２の配線入替処理を行う
ことを特徴とする付記４又は５記載の半導体装置の設計方法。
（付記７）
前記コンピュータは、
前記複数のバスの各バス毎に、前記低抵抗配線層と前記高抵抗配線層の各々のスラックを計算し、前記スラックの少ないバスから、前記低抵抗配線層から配線する優先度を決定し、前記優先度に基づいて前記各バスを配線するバスプランニングを行う
ことを特徴とする付記６記載の半導体装置の設計方法。
（付記８）
前記コンピュータは、
前記低抵抗配線層の前記第１のバッファの第１の間隔を、前記高抵抗配線層の前記第３のバッファの第２の間隔の整数倍であるようにしたバッファリングを行う
ことを特徴とする付記１乃至７いずれか一項記載の半導体装置の設計方法。
（付記９）
低抵抗配線層で構成されｍ個の第１のバッファが挿入された第１の信号線を含む第１の信号経路と、前記低抵抗配線層より抵抗が高い高抵抗配線層で構成され少なくとも前記ｍ個の第１のバッファに隣接して配置されたｍ個の第２のバッファを含むｎ個（ｎ≧ｍ）の第３のバッファが挿入された第２の信号線を含む第２の信号経路と、を有する半導体装置のタイミング検証を実施し、
前記第１の信号経路に規定のタイミング余裕があり、前記第２の信号経路にタイミング違反がある場合、前記第１の信号経路の少なくとも一部の前記第１のバッファ間の信号線を前記第２の信号経路の一部の信号線と交換する
処理をコンピュータに行わせる半導体装置の設計プログラム。
（付記１０）
低抵抗配線層で構成されｍ個の第１のバッファが挿入された第１の信号線を含む第１の信号経路と、前記低抵抗配線層より抵抗が高い高抵抗配線層で構成され少なくとも前記ｍ個の第１のバッファに隣接して配置されたｍ個の第２のバッファを含むｎ個（ｎ≧ｍ）の第３のバッファが挿入された第２の信号線を含む第２の信号経路と、を有する半導体装置のタイミング検証を行ってタイミング違反があるか否かを判断する判断部と、
前記第１の信号経路に規定のタイミング余裕があり、前記第２の信号経路にタイミング違反がある場合、前記第１の信号経路の少なくとも一部の前記第１のバッファ間の信号線を前記第２の信号経路の一部の信号線と交換する交換部と
を有する半導体装置の設計装置。
（付記１１）
ｍ個の第１のバッファが挿入された第１の信号線を伝播する第１の信号経路を含む第１の配線層と、
前記ｍ個の第１のバッファに隣接して配置されたｍ個の第２のバッファを含むｎ個（ｎ≧ｍ）の第３のバッファが挿入された第２の信号線を伝播する第２の信号経路を含む、前記第１の配線層より抵抗が高い第２の配線層と、を有し、
前記第１の配線層の２以上の前記第１のバッファ間の１又は２以上の区間において、前記第１の信号線の前記第１の信号経路は前記第２の配線層に、また、前記第２の信号線の前記第２の信号経路は前記第１の配線層に夫々部分的に切り替えられていることを特徴とする半導体装置。
（付記１２）
前記第１の配線層の前記第１のバッファの第１の間隔は、前記第２の配線層の前記第３のバッファの第２の間隔の整数倍であることを特徴とする付記１１記載の半導体装置。
【符号の説明】
【０１５８】
１ｐ          バッファ
６            バス
６'          着目バス
９ａ、９ｂ、９０  信号配線
９ｆ          経路
１１          ＣＰＵ
１２          主記憶装置
１３          補助記憶装置
１４          入力装置
１５          表示装置
１７          通信Ｉ／Ｆ
１８          ドライブ装置
１９          記憶媒体
２１          入替箇所
３１          バッファリングデータ
３３          レイアウトデータ
３５          バス情報テーブル
４１          バッファリング部
４２          バス内配線入替部
４３          妨害配線入替部
４４          ＥＣＯ配線部
４５          バス情報テーブル作成部
４６          バスプランニング部
７１、７２    経路
１００        設計装置
１３０        記憶部
Ｂ            バス
Ｍ１          下層
Ｍ２          中下層
Ｍ３          中上層
Ｍ４          上層
【図１】
2016206961.tif 000003
【図２】
2016206961.tif 000004
【図３】
2016206961.tif 000005
【図４】
2016206961.tif 000006
【図５】
2016206961.tif 000007
【図６】
2016206961.tif 000008
【図７】
2016206961.tif 000009
【図８】
2016206961.tif 000010
【図９】
2016206961.tif 000011
【図１０】
2016206961.tif 000012
【図１１】
2016206961.tif 000013
【図１２】
2016206961.tif 000014
【図１３】
2016206961.tif 000015
【図１４】
2016206961.tif 000016
【図１５】
2016206961.tif 000017
【図１６】
2016206961.tif 000018
【図１７】
2016206961.tif 000019
【図１８】
2016206961.tif 000020
【図１９】
2016206961.tif 000021
【図２０】
2016206961.tif 000022
【図２１】
2016206961.tif 000023
【図２２】
2016206961.tif 000024
【図２３】
2016206961.tif 000025
【図２４】
2016206961.tif 000026
【図２５】
2016206961.tif 000027
【図２６】
2016206961.tif 000028