説明

レイアウト支援プログラム、レイアウト支援装置およびレイアウト支援方法

【課題】レイアウト済みのセルのタイミング関係を崩すことなく所望のセルを追加配置可能なレイアウトを行う。
【解決手段】あらたなセル(追加セル)を追加する際に、配置可能な空き領域が無い場合には、レイアウト済みのセルの中から、最も信号伝搬のタイミングに影響しないセルを、あらたなセルを配置するための空き領域を用意するための移動対象セルとして選択する。選択されたセルを移動させた空き領域にあらたなセルを配置することによって、追加セルの挿入に伴うタイミング調整を不要もしくは必要最低限に留めることができる。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、ポストレイアウトECO(Engineering Change Ordering)処理におけるレイアウト支援プログラム、レイアウト支援装置およびレイアウト支援方法に関する。
【背景技術】
【0002】
従来より、すでに各セルが所定のタイミングを保つようにレイアウトされた半導体回路に対して、回路機能を拡張するために、あらたなセルを追加するポストレイアウトECO処理が提案されている。ポストレイアウトECO処理では、レイアウト済みの各セルに対する信号伝搬までのタイミングの余裕値を参照して、あらたなセルを挿入可能な領域を抽出する技術が開示されている(たとえば、下記特許文献1参照。)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2001−188818号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上述したような従来技術の場合、あらたなセルを挿入可能な領域が無い場合には、レイアウトされた各セルのタイミングを保持できないことがある。たとえば、あらたなセルを挿入するために、レイアウト済みのセルのうち、いずれかのセルを移動させて空き領域を用意しなければならない。
【0005】
このとき、移動させるセルによっては、論理変更に関係のないセル同士のタイミングを崩してしまうことがあった。一旦、レイアウト済みのセルのタイミングが崩れてしまうと、各セルに対して再度タイミング調整が必要になり、調整処理のために多大な負荷と時間を費やしてしまうという問題があった。
【0006】
この発明は、上述した従来技術による問題点を解消するため、レイアウト済みのセルのタイミング関係を崩すことなく所望のセルを追加配置することができるレイアウト支援プログラム、レイアウト支援装置およびレイアウト支援方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
上述した課題を解決し、目的を達成するため、このレイアウト支援プログラム、レイアウト支援装置およびレイアウト支援方法は、コンピュータが、半導体回路を構成するセル群の配置状態を表すレイアウト情報と、前記セル群に含まれるセルの種類に応じて設定された優先度情報と、を取得する処理と、前記レイアウト情報に含まれるセル群の中の任意のセルに対応して配置させる追加セルの情報を受け付ける処理と、前記追加セルを配置可能な空き領域があるか否かを判断する処理と、前記追加セルを配置可能な空き領域がないと判断された場合、前記任意のセルからの距離と、前記優先度情報とに基づいて移動対象セルを抽出する処理と、抽出された移動対象セルを配置可能な空き領域を探索する処理と、空き領域が探索された場合、前記移動対象セルを前記空き領域に移動させる処理と、前記空き領域に移動された移動対象セルが配置されていた位置に、前記追加セルを配置する処理と、追加セルが配置された前記半導体回路のレイアウト情報を出力する処理と、を含むことを要件とする。
【0008】
このレイアウト支援プログラム、レイアウト支援装置およびレイアウト支援方法によれば、追加セルを配置可能な空き領域が無い場合には、タイミングに影響を与える可能性の低いセルを抽出して、他の空き領域に移動させることによって、追加セルを対象セルの近傍に配置したレイアウトを実現することができる。
【発明の効果】
【0009】
本発明にかかるレイアウト支援プログラム、レイアウト支援装置およびレイアウト支援方法によれば、レイアウト済みのセルのタイミング関係を崩すことなく所望のセルを追加配置することができるという効果を奏する。
【図面の簡単な説明】
【0010】
【図1】本実施の形態にかかるレイアウト支援処理の概要を示す説明図である。
【図2】本実施の形態にかかるレイアウト支援装置のハードウェア構成を示すブロック図である。
【図3】本実施の形態にかかるレイアウト支援装置の機能的構成を示す説明図である。
【図4】レイアウト設計対象となる半導体回路の一例を示す回路図である。
【図5】図4に示した半導体回路の各セルのレイアウト情報を示す説明図である。
【図6】セルの種類に応じた優先度を示す説明図である。
【図7】追加セルをオーバーラップして配置する手順を示す説明図である。
【図8】実施の形態1におけるレイアウト支援処理を用いた追加セルの配置を示す説明図である。
【図9】実施の形態1におけるレイアウト支援処理の手順を示すフローチャートである。
【図10】実施の形態2におけるレイアウト支援処理を用いた追加セルの配置を示す説明図である。
【図11】実施の形態2におけるレイアウト支援処理の手順を示すフローチャートである。
【図12】実施の形態3におけるレイアウト支援処理を用いた追加セルの配置を示す説明図である。
【図13】実施の形態3におけるレイアウト支援処理の手順を示すフローチャートである。
【図14】実施の形態4におけるレイアウト支援処理を用いた追加セルの配置を示す説明図である。
【発明を実施するための形態】
【0011】
以下に添付図面を参照して、このレイアウト支援プログラム、レイアウト支援装置およびレイアウト支援方法の好適な実施の形態を詳細に説明する。このレイアウト支援プログラム、レイアウト支援装置およびレイアウト支援方法では、あらたなセルを追加する際に、配置可能な空き領域が無い場合には、レイアウト済みのセルの中から、最も信号伝搬のタイミングに影響しないセルを、あらたなセルを配置するための空き領域を用意するための移動対象セルとして選択する。選択されたセルを移動させた空き領域にあらたなセルを配置することによって、追加セルの挿入に伴うタイミング調整を不要もしくは必要最低限に留めることができる。そこで、以下には上述した処理を実現するためのレイアウト支援処理について説明する。
【0012】
(レイアウト支援処理の概要)
まず、本実施の形態にかかるレイアウト支援処理の概要について説明する。図1は、本実施の形態にかかるレイアウト支援処理の概要を示す説明図である。図1のように、レイアウト例Aのように複数のセル群が配置された半導体回路において、対象セルの近傍に追加セルを挿入して機能を拡張しなければならないとする。
【0013】
まず、対象セルから所定の範囲内に(たとえば、図1の領域R)追加セルを挿入できる空き領域があるか否かを判断する。ここで、空き領域があると判断されれば、その空き領域に追加セルを挿入すればよい。しかしながら図1のレイアウト例Aの場合、追加セルを挿入できる空き領域は存在しない。
【0014】
そこで、つぎに領域R内に配置されているセルの優先度を参照する。優先度とは、追加セルを挿入するために空き領域を用意しなければならない場合に、優先的に移動させる度合いを示した値である。図1のレイアウト例Aでは、優先度1〜4の設定が施されており、優先度の値が小さいセルを優先的に移動させるセルと判断する。ここで優先的に移動させるセルとは、移動によってタイミングへ及ぼす影響が小さいセルである。したがって、タイミングへ及ぼす影響が小さいほど優先度の値が小さく、タイミングへ及ぼす影響が大きいほど優先度の値が大きく設定されている。したがって、優先度はセルの種類に応じて設定されている。
【0015】
そして、レイアウト例Aの場合には、対象セルの上段に優先度1のセルが隣接している。したがって、レイアウト例Bのように、優先度1のセルを移動対象セルとして、隣接する空き領域へ移動させる。その後、優先度1のセルの移動によって生じた空き領域に追加セルを配置することによって、追加セルを追加した再配置レイアウトが生成される。
【0016】
このように本実施の形態では、優先度に基づいて、セル群の中から移動によるタイミングへの影響が最も少ないセルを選択する。そして、選択されたセルの移動によって生じた空き領域に追加セルを配置することによって半導体回路の機能を拡張することができる。以下、上述したレイアウト支援処理を実現するための具体的な構成について説明する。
【0017】
(レイアウト支援装置のハードウェア構成)
図2は、実施の形態にかかるレイアウト支援装置のハードウェア構成を示すブロック図である。図2において、レイアウト支援装置100は、CPU(Central Processing Unit)201と、ROM(Read‐Only Memory)202と、RAM(Random Access Memory)203と、磁気ディスクドライブ204と、磁気ディスク205と、通信I/F(Interface)206と、入力デバイス207と、出力デバイス208と、を備えている。また、各構成部はバス210によってそれぞれ接続されている。
【0018】
ここで、CPU201は、レイアウト支援装置100の全体の制御を司る。ROM202は、ブートプログラムや、本実施の形態にかかるレイアウト支援処理を実現するレイアウト支援プログラムなどの各種プログラムを記憶している。RAM203は、CPU201のワークエリアとして使用される。磁気ディスクドライブ204は、CPU201の制御にしたがって磁気ディスク205に対するデータの更新/参照を制御する。磁気ディスク205は、磁気ディスクドライブ204の制御で書き込まれたデータを記憶する。なお、図2のハードウェア構成では、磁気ディスク205を用いているが、光ディスクや、フラッシュメモリなど他の記録媒体を利用してもよい。
【0019】
通信I/F206は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク(NET)209に接続され、このネットワーク209を介して他のレイアウト支援装置100に接続される。そして、通信I/F206は、ネットワーク209と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。通信I/F206の構成例としては、たとえばモデムやLANアダプタなどを採用することができる。
【0020】
入力デバイス207は、レイアウト支援装置100に対しての外部からの入力を受け付ける。入力デバイス207としては、具体的には、キーボード、マウスなどが挙げられる。
【0021】
キーボードの場合、たとえば、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウスの場合、たとえば、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。また、ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【0022】
出力デバイス208は、レイアウト支援装置100が取得したレイアウト情報や、レイアウト支援処理によって生成されたレイアウト情報を出力する。出力デバイス208としては、具体的には、ディスプレイ、プリンタなどが挙げられる。
【0023】
ディスプレイの場合、たとえば、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイとしてさらに、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。また、プリンタの場合、たとえば、画像データや文書データを印刷する。さらに、レーザプリンタやインクジェットプリンタを採用することができる。
【0024】
(レイアウト支援装置の機能的構成)
つぎに、レイアウト支援装置100の機能的構成について説明する。図3は、レイアウト支援装置の機能的構成を示すブロック図である。レイアウト支援装置100は、取得部301と、受付部302と、判断部303と、抽出部304と、探索部305と、移動部306と、再配置部307と、出力部308と、を含む構成である。この制御部となる機能(取得部301〜出力部308)は、具体的には、たとえば、図2に示したROM202、RAM203、磁気ディスク205などの記憶領域に記憶されたレイアウト支援プログラムをCPU201に実行させることにより、または、通信I/F206により、その機能を実現する。
【0025】
取得部301は、半導体回路を構成するセル群の配置状態を表すレイアウト情報101と、セル群に含まれるセルの種類に応じて設定された優先度情報102とを取得する機能を有する。具体的には、レイアウト情報101とは、処理対象となる半導体回路を構成するセル群がそれぞれ、どのような種類のセルであり、たとえばROW上にどのような間隔で配置されているかを表す情報である。
【0026】
ここで、図4は、レイアウト支援対象となる半導体回路の一例を示す回路図である。図4のように、半導体回路400は、3つのFF(Flip Flop)回路1,9,10と、2つのインバータ回路2,3と、4つのバッファ回路4,5,6,7と、1つのAND回路8と、1つのOR回路12と、1つのクロックドライバ11とを備えている。
【0027】
そして、図5は、図4に示した半導体回路の各セルのレイアウト情報を示す説明図である。レイアウト支援装置100が、半導体回路400のレイアウト支援をおこなう場合、取得部301は、図5の示したレイアウト情報500を取得して、後段の処理に利用させる。なお、本実施の形態では、以下レイアウト情報500を用いてレイアウト支援処理を説明する。
【0028】
また、図6は、セルの種類に応じた優先度を示す説明図である。取得部301では、上述したレイアウト情報500とともに、半導体回路400を構成する各セルの種類に応じて設定された優先度が取得される。図6に示すように、半導体回路400を構成するセルの場合、優先度1:インバータ(インバータ回路2,3)→優先度2:バッファ(バッファ回路4,5,6,7)→優先度3:論理素子(AND回路8、OR回路12)→優先度4:クロックドライバ(クロックドライバ11)→優先度5:記憶素子(FF回路1,9,10)の順番で優先度が設定されている。これらの優先度は、入出力が少ないセルほど、他のセルのタイミングへの影響が少ないものとして設定している。また、記録素子は複数のセルのタイミングに影響する可能性が高いため、最も移動させたくないセルとして優先度を最低値に設定している。
【0029】
なお、本実施の形態では、値が低いほど優先度が高いと判断されるように設定しているが(優先度1>優先度5)、優先度値の取り扱いについては適宜設定することができる。そして、取得部301によって取得されたレイアウト情報101および優先度情報102は、RAM203、磁気ディスク205などの記憶領域に記憶される。
【0030】
図3の説明に戻り、続いて受付部302は、レイアウト情報101に含まれるセル群の中の任意のセルに対応して配置させる追加セル情報103を受け付ける。追加セル情報103には、レイアウト情報500によって表されたセル群の中のいずれのセルに対応したどのような種類のセルであるか設定されている。具体的には、レイアウト情報500によって表されたセル群の中のFF回路1に対応したバッファ回路であるというような設定がなされている。なお、受付部302によって受付けられた追加セル情報103は、RAM203、磁気ディスク205などの記憶領域に記憶される。
【0031】
判断部303は、受付部302によって受け付けた追加セル情報103を参照して、レイアウト情報500内に追加セルを配置可能な空き領域があるか否かを判断する機能を有する。このとき、空き領域の有無を判断する対象領域は、レイアウト情報500全体でもよいし、対象セルを基準とした所定範囲内であってもよい。特に、対象セルと追加セルとの信号伝搬時間が短く余裕がない場合には、対象セルと追加セルとのタイミングを崩さないような範囲内に空き領域があるか否かを判断しなければならない。なお、判断部303による判断結果は、RAM203、磁気ディスク205などの記憶領域に記憶される。
【0032】
抽出部304は、判断部303によって、追加セルを配置可能な空き領域がないと判断された場合に、対象セルからの距離と、優先度情報102とに基づいて移動対象セルを抽出する機能を有する。移動対象セルとは、追加セルを配置するための空き領域を確保するために、移動させるセルである。したがって、対象セルの近くに配置されており、なおかつ、優先度が高く設定されているセルが移動対象セルとして抽出される。なお、抽出部304による抽出結果は、RAM203、磁気ディスク205などの記憶領域に記憶される。また、判断部303によって、追加セルを配置可能な空き領域があると判断された場合には、この空き領域に追加セルを配置すればよい。
【0033】
探索部305は、抽出部304によって抽出された移動対象セルを配置可能な空き領域を探索する機能を有する。ここでも、探索部305による空き領域の探索範囲は、レイアウト情報500によって表される全域としてもよいし、移動対象セルの種類に応じて適宜設定してもよい。探索範囲の設定例としては、1)抽出部304によって抽出された移動対象セルから所定の範囲内を対象として、移動対象セルを配置可能な空き領域を探索する。2)移動対象セルを配置可能な空き領域が探索されなかった場合、空き領域が探索されるまで、所定の範囲を特定のサイズごとに拡大する。3)移動対象セルの前段に接続されたセルからの伝搬時間に比例した範囲の中から移動対象セルを配置可能な空き領域を探索するなどの例が挙げられる。
【0034】
移動部306は、探索部305によって空き領域が探索された場合、移動対象セルを探索された空き領域に移動させる機能を有する。なお、ここで説明する移動の処理対象は、レイアウト情報101である。すなわち、実際に移動対象セルを移動させるのではなく、レイアウト情報101の設定値の変更に過ぎない。したがって、移動部306によって、レイアウト情報101に設定された移動対象セルの配置位置のアドレスは、探索された空き領域のアドレスに変更される。なお、移動部306によって移動対象セルが移動されたレイアウト情報101は、RAM203、磁気ディスク205などの記憶領域に記憶される。
【0035】
また、上述した抽出部304では同一の条件を満たすセルが複数存在する場合(たとえば、対象セルからの距離もセルの種類も同じセルなど)がある。このような場合には、抽出部304によって複数の移動対象セルが抽出されてしまうため、移動部306では、これら複数の移動対象セルを比較して、特定の条件を満たすセルを移動対象セルとして移動させる。
【0036】
たとえば、移動部306は、抽出部304によって抽出された複数の移動対象セルのうち、最も入出力数が少ないセルを他のセルのタイミングに影響を与える可能性の低いセルとして空き領域に移動させる。なお、入出力数は、各セルのファインアウトを参照することによって確認できる。
【0037】
また、移動部306は、抽出部304によって抽出された複数の移動対象セルのうち、接続された他のセルへの駆動電流が大きいセルを他のセルのタイミングに影響を与える可能性の低いセルとして空き領域に移動させてもよい。なお、他のセルへの駆動電流の大小は、各セルのドライブ能力を参照することによって確認できる。
【0038】
また、移動部306は、抽出部304によって抽出された複数の移動対象セルのうち、前段に接続されたセルからの信号伝搬時間が最も長いセルを他のセルのタイミングに影響を与える可能性の低いセルとして空き領域に移動させてもよい。なお、前段に接続されたセルからの信号伝搬時間は、各セルのパスのタイミングの余裕値(スラック)を参照することによって確認できる。
【0039】
つぎに、再配置部307は、移動部306によって空き領域に移動された移動対象セルが配置されていた位置に、追加セルを配置する。なお、上述した移動部306の処理と同様に、再配置の処理対象は、レイアウト情報101である。したがって、再配置部307によって、レイアウト情報101に替わって、追加セル情報103を含んだあらたなレイアウト情報104が生成される。なお、再配置部307によって生成されたレイアウト情報104は、RAM203、磁気ディスク205などの記憶領域に記憶される。
【0040】
また、上述した探索部305によって空き領域が探索されなかった場合、抽出部304によって、再度、移動対象セルからの距離と、優先度情報102とに基づいてあらたな移動対象セルを抽出してもよい。この抽出処理によってあらたな移動対象セルが抽出された場合、探索部305は、このあらたな移動対象セルを配置可能な空き領域を探索する。そして、探索部305によって空き領域が探索された後、移動部306によって探索された空き領域にあらたな移動対象セルを移動させる。
【0041】
上述の処理によって、あらたな移動対象セルが配置されていた領域は、抽出部304によって最初に抽出された移動対象セルを移動するため空き領域として提供される。そして、移動部306は、あらたな移動対象セルを空き領域に移動させた後、最初に抽出された移動対象セルをあらたな移動対象セルが配置されていた位置に移動させることができる。すなわち、最初に抽出された移動対象セルは、玉突きのように、あらたな移動対象セルを押し出して配置領域を入れ替える。この入れ替えによって生じた空き領域が追加セルの再配置領域として確保される。
【0042】
最後に出力部308は、再配置部307によって追加セルが配置された半導体回路400のレイアウト情報104を出力する機能を有する。出力形式としては、たとえば、出力デバイス208のディスプレイへの表示、プリンタへの印刷出力、通信I/F206による外部装置への送信がある。また、RAM203、磁気ディスク205などの記憶領域に記憶されてもよい。
【0043】
このように、本実施の形態にかかるレイアウト支援処理では、ポストレイアウトECO処理によって、追加セルを挿入する際に、空き領域が無い場合であっても、他のセルのタイミングへの影響が最小になるように追加セルを挿入することができる。具体的には、各セルに設定された優先度や入出力条件に基づいて抽出した他のセルのタイミングへの影響が最も少ないセルを移動して、追加セルを挿入するための空き領域を確保することができる。したがって、レイアウト済みのセルのタイミング関係を崩すことなく追加セルを挿入したレイアウトを生成することができる。
【0044】
つぎに、上述したレイアウト支援処理の具体的な4種類の実施の形態(実施の形態1〜実施の形態4)について説明する。
【0045】
(実施の形態1)
実施の形態1は、図6にて説明した優先度に基づいて、移動による他のセルのタイミングへの影響が小さいセルを移動対象セルとして抽出して、追加セルを配置する領域を確保する。この移動対象セルの抽出処理は、本実施の形態の最も基本となる処理である。なお、後述する実施の形態2〜実施の形態4も、実施の形態1にて説明する移動対象セルの抽出処理に、抽出処理の精度や効率を上げるための処理を追加した構成になっている。
【0046】
ここで、まず、従来の追加セルの挿入例について説明する。図7は、追加セルをオーバーラップして配置する手順を示す説明図である。図7では、レイアウト情報500において、対象セルであるFF回路1に対応した追加セルを挿入する処理を示している。FF回路1と、バッファ回路7との間の領域710に追加セル(バッファ)が追加される。このとき、領域710は、追加セルの面積よりも小さいため、追加セルは、FF回路1とオーバーラップしている(STEP1)。
【0047】
その後、追加セルとFF回路1とのオーバーラップを解消するために、まず、FF回路1を右に移動する。すると、この移動によって今度はFF回路1と、後段に配置されたFF回路9との間の領域720がオーバーラップしてしまう(STEP2)。
【0048】
したがって、今度はFF回路1とFF回路9とのオーバーラップを解消するために、FF回路9を右の領域730に移動する(STEP3)。このように、STEP1〜STEP3の処理によって、一見問題なく追加セルが挿入されたようにみえるが、実際には、FF回路1とFF回路9とが移動したため、多数のセルのタイミングに影響を与えてしまっている可能性が高い。一般的にFF回路のクロック信号端子に接続されているクロック信号伝搬時の遅延値が変化してしまうクロック信号の遅延値の変化は、クロック信号が伝搬されるすべてのFF回路に影響を与えてしまうため、多くのタイミングポイントにおいてタイミングエラーの発生を招いてしまう。
【0049】
そこで、本実施の形態1では、他のセルのタイミングに影響を及ぼさないセルを抽出して、効率的に追加セルを挿入する。図8は、実施の形態1におけるレイアウト支援処理を用いた追加セルの配置を示す説明図である。図8でも、図7と同様に、対象セルであるFF回路1に対応した追加セルを挿入する処理を示している。
【0050】
レイアウト情報500では、FF回路1の近傍に追加セルを挿入する空き領域がないため、優先度に基づいて、バッファ回路4を移動対象セル810として抽出する(STEP1)。つぎに、移動対象セル810が、近傍の空き領域820に移動されたため、バッファ回路4が配置されていた領域が空き領域となる(STEP2)。したがって、空き領域830に追加セルが挿入され、あたらしいレイアウトとなる(STEP3)。
【0051】
図8にて説明した処理の場合、図7の処理とは異なり、バッファ回路4が移動されているため、このセルに関して他のセルへのタイミングの影響を考慮すればよい。しかしながら、バッファ回路4は、レイアウト情報500に配置されたセルのうち、最も他のセルのタイミングへの影響が少ないため、たとえ、他のセルへのタイミングに何らかの影響を与えていたとしても、必要最低限のタイミング調整のみ行なえばよい。
【0052】
つぎに、上述した実施の形態1におけるレイアウト支援処理の手順について説明する。図9は、実施の形態1におけるレイアウト支援処理の手順を示すフローチャートである。図9のフローチャートにおいて、まず、対象FF回路1に隣接するセルのうち最も優先度が高いインバータを抽出し(ステップS901)、このステップS901によってインバータが抽出されたか否かを判断する(ステップS902)。
【0053】
上述のステップS902において、インバータが抽出された場合(ステップS902:Yes)、抽出されたインバータを移動することによって追加セルを配置できるか否かを判断する(ステップS903)。このステップS903によって、インバータの移動によって追加セルを配置できると判断された場合は(ステップS903:Yes)、インバータを移動して(ステップS904)、移動後の空き領域に追加セルを配置して(ステップS915)、一連の処理を終了する。
【0054】
一方、インバータが抽出されなかった場合(ステップS902:No)または、インバータを移動しても追加セルを配置できないと判断された場合は(ステップS903:No)、続いて、対象FF回路1に隣接するセルのうち2番目に優先度が高いバッファを抽出する(ステップS905)。そして、このステップS905によってバッファが抽出されたか否かを判断する(ステップS906)。
【0055】
上述のステップS906において、バッファが抽出された場合(ステップS906:Yes)、抽出されたバッファを移動することによって追加セルを配置できるか否かを判断する(ステップS907)。そして、ステップS906において、バッファが抽出されなかった場合(ステップS906:No)、または、ステップS907において、追加セルを配置できないと判断された場合(ステップS907:No)、3番目に優先度が高い論理素子を移動して(ステップS908)、移動後の空き領域に追加セルを配置して(ステップS915)、一連の処理を終了する。
【0056】
一方、ステップS907において、追加セルを配置できると判断された場合(ステップS907:Yes)、さらに各バッファのファインアウトを確認する(ステップS909)。そして、他のセルへの影響が小さいファインアウト1対1のバッファが複数あるか否かを判断する(ステップS910)。このステップS910において、ファインアウト1対1のバッファが1つのみと判断された場合(ステップS910:No)、このバッファを移動して(ステップS911)、移動後の空き領域に追加セルを配置して(ステップS915)、一連の処理を終了する。
【0057】
一方、ステップS910において、ファインアウト1対1のバッファが複数あると判断された場合(ステップS910:Yes)、さらに、他のセルへの影響が小さいバッファを抽出するため、対象FFに影響しないバッファの中にドライブ能力が高いバッファがあるか否かを判断する(ステップS912)。このステップS912におけるドライブ能力の高低は、基準値以上か未満かに基づいて判断される。
【0058】
したがって、このステップS912において、ドライブ能力が高いバッファがあると判断された場合(ステップS912:Yes)、このドライブ能力の高いバッファを移動して(ステップS913)、移動後の空き領域に追加セルを配置して(ステップS915)、一連の処理を終了する。
【0059】
そして、このステップS912において、ドライブ能力が高いバッファがないと判断された場合(ステップS912:No)、タイミング余裕値の高いセルを移動して(ステップS914)、移動後の空き領域に追加セルを配置して(ステップS915)、一連の処理を終了する。タイミング余裕値(スラック)とは、セルに接続されたパスからの信号伝搬を受付けるタイミングの猶予時間を表す値であり。500psecなど実際の猶予時間によって表現される。
【0060】
このように、実施の形態1では、優先度や、バッファの条件に基づいて移動対象セルを抽出して、追加セルの挿入先に設定する。この処理によって、従来の挿入処理と異なり、オーバーラップの発生を防ぐことが可能となり、クロック信号伝搬に関する遅延時間の変化を抑えることができる。したがって、論理変更部分以外のタイミング違反の発生を抑制することができる。
【0061】
(実施の形態2)
実施の形態2では、実施の形態1のレイアウト支援処理の中で、移動対象セルを抽出する際に、抽出対象領域を限定し、抽出結果に応じて抽出対象領域を段階的に拡大することによって効率的に移動対象セルを抽出することができる。
【0062】
図10は、実施の形態2におけるレイアウト支援処理を用いた追加セルの配置を示す説明図である。図10のように、実施の形態2では、移動対象セルを抽出する際には、まず、第一セル選択領域を対象とする。そして、第一セル選択領域の中から移動対象セルが抽出されなかった場合、より領域を拡大した第二セル選択領域の中から移動対象セルを抽出する。
【0063】
つぎに、上述した実施の形態2におけるレイアウト支援処理の手順について説明する。図11は、実施の形態2におけるレイアウト支援処理の手順を示すフローチャートである。図11のフローチャートにおいて、まず、追加セルの挿入を受付けると、移動対象セルの選択領域を作成する(ステップS1101)。移動対象セルの選択領域とは、図10に示したような第一セル選択領域や第二セル選択領域を意味する。また、ステップS1101の処理において、どの程度のサイズの選択領域を作成するかは、任意に設定することができる。
【0064】
つぎに、上述の選択領域に追加セルの挿入領域が有るか否かを判断する(ステップS1102)。すなわち、第一セル選択領域内に移動対象セルを挿入可能な空き領域が有るか否かを判断している。このステップS1102において、追加セルの挿入領域が有ると判断された場合(ステップS1102:Yes)、挿入領域に、追加セルを挿入して(ステップS1106)、一連の処理を終了する。
【0065】
一方、ステップS1102において、追加セルの挿入領域が無いと判断された場合(ステップS1102:No)、追加セルの挿入先を確保するために、選択領域の中から移動対象セルを選択する(ステップS1103)。そして、選択された移動対象セルのタイミング余裕値(スラック)が基準値よりも大きいか否かを判断する(ステップS1104)。
【0066】
ステップS1104において、タイミング余裕値(スラック)が基準値よりも大きいと判断された場合(ステップS1104:Yes)、選択領域を移動して(ステップS1105)、あらたな選択領域にて追加セルの挿入領域が有るか否かを判断する(ステップS1102)。ステップS1105の選択領域を移動とは、たとえば、図10の例では、第一セル選択領域から第二セル選択領域への移動を意味する。
【0067】
一方、ステップS1104において、タイミング余裕値(スラック)が基準値に満たないと判断された場合(ステップS1104:No)、ステップS1101によって作成された選択領域の中から移動対象セルを選択する。すなわち、移動対象セルのタイミング余裕値の値が小さいため、選択領域を広げるとタイミングに影響を及ぼしてしまう。したがって、ステップS1103に戻って最初に作成した選択領域内で最適な移動対象セルを選択する。
【0068】
このように、実施の形態2では、移動対象セルを特定の領域に絞って探索する。移動対象セルが探索されなかった場合には、探索範囲をタイミング余裕値に基づいた制限範囲まで、段階的に拡大していく。したがって、必要最低限の領域から探索を開始するため、効率的な探索が可能となる。
【0069】
(実施の形態3)
実施の形態3では、移動対象セルを特定の領域に絞って探索する際に、上述したタイミング余裕値(スラック)から移動可能な距離を算出し、算出されたエリア内に対して空き領域があるか否かを判断する。
【0070】
図12は、実施の形態3におけるレイアウト支援処理を用いた追加セルの配置を示す説明図である。たとえば、対象セルがインバータ2の場合、インバータ2のタイミング余裕値からマンハッタン長ベースの遅延や、ワイヤ・ロード(Wire Load)モデルを用いて移動可能な距離を算出する。したがって、インバータ2の場合、円1210が移動可能な範囲となり、円1210内で移動対象セルを探索する。同様に、インバータ3の場合も、タイミング余裕値から求まった移動可能な範囲は円1220となる。そして、この範囲内で移動対象セルを探索する。
【0071】
図13は、実施の形態3におけるレイアウト支援処理の手順を示すフローチャートである。図13のフローチャートにおいて、追加セルの挿入を受付けると、移動対象セルの選択領域を作成する(ステップS1301)。移動対象セルの選択領域とは、図12に示したような円1210や円1220を意味する。また、ステップS1301の処理において、どの程度のサイズの選択領域を作成するかは、任意に設定することができる。
【0072】
つぎに、上述の選択領域に追加セルの挿入領域が有るか否かを判断する(ステップS1302)。すなわち、円1210内に移動対象セルを挿入可能な空き領域が有るか否かを判断している。このステップS1302において、追加セルの挿入領域が有ると判断された場合(ステップS1302:Yes)、挿入領域に、追加セルを挿入して(ステップS1308)、一連の処理を終了する。
【0073】
一方、ステップS1302において、追加セルの挿入領域が無いと判断された場合(ステップS1302:No)、追加セルの挿入先を確保するために、選択領域の中から移動対象セルを選択する(ステップS1303)。そして、選択された移動対象セルのタイミング余裕値(スラック)を確認して(ステップS1304)、移動可能領域を算出する(ステップS1305)。
【0074】
そして、算出された移動可能領域にて移動対象セルの挿入領域nが有るか否かを判断する(ステップS1306)。ステップS1306において追加セルの挿入領域nが有ると判断された場合(ステップS1306:Yes)、ステップS1303に戻り、移動対象セルの挿入領域nが無くなったと判断されるまで、ステップS1303から1306の処理を繰り返す。一方、ステップS1306において、移動対象セルの挿入領域nが無くなったと判断されると(ステップS1306:No)、移動対象セルを移動させ(ステップS1307)、ステップS1302の処理に戻る。
【0075】
このように、実施の形態3では、タイミング余裕値に基づいて、移動可能な距離を算出して得られた範囲内で、移動対象セルを選択するため、タイミングの遅延が発生しないセルのみを移動対象セルとして選択することができる。
【0076】
(実施の形態4)
実施の形態4は、移動対象セルを挿入する空き領域が探索されなかった場合に、まず、移動対象セルを挿入するための空き領域を用意する。そして、用意された空き領域に、移動対象セルを挿入し、移動対象セルが配置されていた領域に、追加セルを挿入する。すなわち、順番に空き領域を用意して、セルを移動させていく。
【0077】
図14は、実施の形態4におけるレイアウト支援処理を用いた追加セルの配置を示す説明図である。図14では、まずインバータ回路3が移動対象セルとして選択されたが、インバータ回路3の選択可能範囲1410にはインバータ回路3を挿入可能な空き領域がない。そこで、インバータ回路3を対象セルとして、移動対象セルを選択する。すると、移動対象セルとしてFF回路9が選択される。したがって、FF回路9が選択可能範囲1420の空き領域に移動されると、FF回路9の空き領域にインバータ回路3を挿入して、追加セルを挿入可能な空き領域が確保される。
【0078】
このように、実施の形態4では、玉突きのように、あらたな移動対象セルを押し出して配置領域を入れ替える。この入れ替えによって生じた空き領域が追加セルの再配置領域として確保される。
【0079】
以上説明したように、本実施の形態によれば、追加セルを配置可能な空き領域が無い場合には、タイミングに影響を与える可能性の低いセルを抽出して、他の空き領域に移動させることによって、追加セルを対象セルの近傍に配置したレイアウトを実現することができる。したがって、レイアウト済みのセルのタイミング関係を崩すことなく所望のセルを追加配置することができ、レイアウト設計者の処理負担を大幅に軽減することができる。
【0080】
なお、本実施の形態で説明したレイアウト支援方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、このプログラムは、インターネットなどのネットワークを介して配布することが可能な媒体であってもよい。
【0081】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0082】
(付記1)コンピュータを、
半導体回路を構成するセル群の配置状態を表すレイアウト情報と、前記セル群に含まれるセルの種類に応じて設定された優先度情報と、を取得する取得手段、
前記レイアウト情報に含まれるセル群の中の任意のセルに対応して配置させる追加セルの情報を受け付ける受付手段、
前記追加セルを配置可能な空き領域があるか否かを判断する判断手段、
前記判断手段によって、前記追加セルを配置可能な空き領域がないと判断された場合、前記任意のセルからの距離と前記優先度情報とに基づいて、移動対象セルを抽出する抽出手段、
前記抽出手段によって抽出された移動対象セルを配置可能な空き領域を探索する探索手段、
前記探索手段によって空き領域が探索された場合、前記移動対象セルを前記空き領域に移動させる移動手段、
前記移動手段によって前記空き領域に移動された移動対象セルが配置されていた位置に、前記追加セルを配置する再配置手段、
前記再配置手段によって追加セルが配置された前記半導体回路のレイアウト情報を出力する出力手段、
として機能させることを特徴とするレイアウト支援プログラム。
【0083】
(付記2)前記移動手段は、前記抽出手段によって複数の移動対象セルが抽出された場合、当該複数の移動対象セルのうち、最も入出力数が少ないセルを前記空き領域に移動させることを特徴とする付記1に記載のレイアウト支援プログラム。
【0084】
(付記3)前記移動手段は、前記抽出手段によって複数の移動対象セルが抽出された場合、当該複数の移動対象セルのうち、他のセルへの駆動電流が大きいセルを前記空き領域に移動させることを特徴とする付記1または2に記載のレイアウト支援プログラム。
【0085】
(付記4)前記移動手段は、前記抽出手段によって複数の移動対象セルが抽出された場合、当該複数の移動対象セルのうち、前段に接続されたセルからの信号伝搬時間が最も長いセルを前記空き領域に移動させることを特徴とする付記1〜3のいずれか一つに記載のレイアウト支援プログラム。
【0086】
(付記5)前記探索手段は、前記抽出手段によって抽出された移動対象セルから所定の範囲内を対象に当該移動対象セルを配置可能な空き領域を探索することを特徴とする付記1〜4のいずれか一つに記載のレイアウト支援プログラム。
【0087】
(付記6)前記探索手段は、前記移動対象セルを配置可能な空き領域が探索されなかった場合、当該空き領域が探索されるまで、前記所定の範囲を特定のサイズごとに拡大することを特徴とする付記5に記載のレイアウト支援プログラム。
【0088】
(付記7)前記探索手段は、前記移動対象セルの前段に接続されたセルからの伝搬時間に比例した範囲の中から前記移動対象セルを配置可能な空き領域を探索することを特徴とする付記1〜5のいずれか一つに記載のレイアウト支援プログラム。
【0089】
(付記8)前記抽出手段は、前記探索手段によって空き領域が探索されなかった場合、さらに、前記抽出された移動対象セルからの距離と、前記優先度情報とに基づいてあらたな移動対象セルを抽出し、
前記探索手段は、前記抽出手段によって抽出されたあらたな移動対象セルを配置可能な空き領域を探索し、
前記移動手段は、前記探索手段によって前記あらたな移動対象セルを配置可能な空き領域が探索された場合、前記あらたな移動対象セルを前記空き領域に移動させ、前記移動対象セルを前記あらたな移動対象セルが配置されていた位置に移動させることを特徴とする付記5〜7のいずれか一つに記載のレイアウト支援プログラム。
【0090】
(付記9)半導体回路を構成するセル群の配置状態を表すレイアウト情報と、前記セル群に含まれるセルの種類に応じて設定された優先度情報と、を取得する取得手段と、
前記レイアウト情報に含まれるセル群の中の任意のセルに対応して配置させる追加セルの情報を受け付ける受付手段と、
前記追加セルを配置可能な空き領域があるか否かを判断する判断手段と、
前記判断手段によって、前記追加セルを配置可能な空き領域がないと判断された場合、前記任意のセルからの距離と前記優先度情報とに基づいて、移動対象セルを抽出する抽出手段と、
前記抽出手段によって抽出された移動対象セルを配置可能な空き領域を探索する探索手段と、
前記探索手段によって空き領域が探索された場合、前記移動対象セルを前記空き領域に移動させる移動手段と、
前記移動手段によって前記空き領域に移動された移動対象セルが配置されていた位置に、前記追加セルを配置する再配置手段と、
前記再配置手段によって追加セルが配置された前記半導体回路のレイアウト情報を出力する出力手段と、
を備えることを特徴とするレイアウト支援装置。
【0091】
(付記10)コンピュータが、
半導体回路を構成するセル群の配置状態を表すレイアウト情報と、前記セル群に含まれるセルの種類に応じて設定された優先度情報と、を取得する取得工程と、
前記レイアウト情報に含まれるセル群の中の任意のセルに対応して配置させる追加セルの情報を受け付ける受付工程と、
前記追加セルを配置可能な空き領域があるか否かを判断する判断工程と、
前記判断工程によって、前記追加セルを配置可能な空き領域がないと判断された場合、前記任意のセルからの距離と前記優先度情報とに基づいて、移動対象セルを抽出する抽出工程と、
前記抽出工程によって抽出された移動対象セルを配置可能な空き領域を探索する探索工程と、
前記探索工程によって空き領域が探索された場合、前記移動対象セルを前記空き領域に移動させる移動工程と、
前記移動工程によって前記空き領域に移動された移動対象セルが配置されていた位置に、前記追加セルを配置する再配置工程と、
前記再配置工程によって追加セルが配置された前記半導体回路のレイアウト情報を出力する出力工程と、
を実行することを特徴とするレイアウト支援方法。
【符号の説明】
【0092】
100 レイアウト支援装置
101 レイアウト情報
102 優先度情報
103 追加セル情報
104 レイアウト情報(追加セルを含む)
301 取得部
302 受付部
303 判断部
304 抽出部
305 探索部
306 移動部
307 再配置部
308 出力部

【特許請求の範囲】
【請求項1】
コンピュータを、
半導体回路を構成するセル群の配置状態を表すレイアウト情報と、前記セル群に含まれるセルの種類に応じて設定された優先度情報と、を取得する取得手段、
前記レイアウト情報に含まれるセル群の中の任意のセルに対応して配置させる追加セルの情報を受け付ける受付手段、
前記追加セルを配置可能な空き領域があるか否かを判断する判断手段、
前記判断手段によって、前記追加セルを配置可能な空き領域がないと判断された場合、前記任意のセルからの距離と前記優先度情報とに基づいて、移動対象セルを抽出する抽出手段、
前記抽出手段によって抽出された移動対象セルを配置可能な空き領域を探索する探索手段、
前記探索手段によって空き領域が探索された場合、前記移動対象セルを前記空き領域に移動させる移動手段、
前記移動手段によって前記空き領域に移動された移動対象セルが配置されていた位置に、前記追加セルを配置する再配置手段、
前記再配置手段によって追加セルが配置された前記半導体回路のレイアウト情報を出力する出力手段、
として機能させることを特徴とするレイアウト支援プログラム。
【請求項2】
前記探索手段は、前記抽出手段によって抽出された移動対象セルから所定の範囲内を対象に当該移動対象セルを配置可能な空き領域を探索することを特徴とする請求項1に記載のレイアウト支援プログラム。
【請求項3】
前記探索手段は、前記移動対象セルを配置可能な空き領域が探索されなかった場合、当該空き領域が探索されるまで、前記所定の範囲を特定のサイズごとに拡大することを特徴とする請求項2に記載のレイアウト支援プログラム。
【請求項4】
前記探索手段は、前記移動対象セルの前段に接続されたセルからの伝搬時間に比例した範囲の中から前記移動対象セルを配置可能な空き領域を探索することを特徴とする請求項1〜3のいずれか一つに記載のレイアウト支援プログラム。
【請求項5】
前記抽出手段は、前記探索手段によって空き領域が探索されなかった場合、さらに、前記抽出された移動対象セルからの距離と、前記優先度情報とに基づいてあらたな移動対象セルを抽出し、
前記探索手段は、前記抽出手段によって抽出されたあらたな移動対象セルを配置可能な空き領域を探索し、
前記移動手段は、前記探索手段によって前記あらたな移動対象セルを配置可能な空き領域が探索された場合、前記あらたな移動対象セルを前記空き領域に移動させ、前記移動対象セルを前記あらたな移動対象セルが配置されていた位置に移動させることを特徴とする請求項2〜4のいずれか一つに記載のレイアウト支援プログラム。
【請求項6】
半導体回路を構成するセル群の配置状態を表すレイアウト情報と、前記セル群に含まれるセルの種類に応じて設定された優先度情報と、を取得する取得手段と、
前記レイアウト情報に含まれるセル群の中の任意のセルに対応して配置させる追加セルの情報を受け付ける受付手段と、
前記追加セルを配置可能な空き領域があるか否かを判断する判断手段と、
前記判断手段によって、前記追加セルを配置可能な空き領域がないと判断された場合、前記任意のセルからの距離と前記優先度情報とに基づいて、移動対象セルを抽出する抽出手段と、
前記抽出手段によって抽出された移動対象セルを配置可能な空き領域を探索する探索手段と、
前記探索手段によって空き領域が探索された場合、前記移動対象セルを前記空き領域に移動させる移動手段と、
前記移動手段によって前記空き領域に移動された移動対象セルが配置されていた位置に、前記追加セルを配置する再配置手段と、
前記再配置手段によって追加セルが配置された前記半導体回路のレイアウト情報を出力する出力手段と、
を備えることを特徴とするレイアウト支援装置。
【請求項7】
コンピュータが、
半導体回路を構成するセル群の配置状態を表すレイアウト情報と、前記セル群に含まれるセルの種類に応じて設定された優先度情報と、を取得する取得工程と、
前記レイアウト情報に含まれるセル群の中の任意のセルに対応して配置させる追加セルの情報を受け付ける受付工程と、
前記追加セルを配置可能な空き領域があるか否かを判断する判断工程と、
前記判断工程によって、前記追加セルを配置可能な空き領域がないと判断された場合、前記任意のセルからの距離と前記優先度情報とに基づいて、移動対象セルを抽出する抽出工程と、
前記抽出工程によって抽出された移動対象セルを配置可能な空き領域を探索する探索工程と、
前記探索工程によって空き領域が探索された場合、前記移動対象セルを前記空き領域に移動させる移動工程と、
前記移動工程によって前記空き領域に移動された移動対象セルが配置されていた位置に、前記追加セルを配置する再配置工程と、
前記再配置工程によって追加セルが配置された前記半導体回路のレイアウト情報を出力する出力工程と、
を実行することを特徴とするレイアウト支援方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2010−204749(P2010−204749A)
【公開日】平成22年9月16日(2010.9.16)
【国際特許分類】
【出願番号】特願2009−47043(P2009−47043)
【出願日】平成21年2月27日(2009.2.27)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】