以下に添付図面を参照して、この発明にかかる設計支援プログラム、設計支援装置、および設計支援方法の好適な実施の形態を詳細に説明する。
(実施の形態)
本実施の形態では、セットアップタイミングの制約に違反しているデータパス内のセルを含む第1のROW領域の中から当該データパス内のセルを除くセルを第1のセルに決定する。そして、セットアップタイミングの制約に違反しているデータパス内のセルを含まない第2のROW領域内のセルを第2のセルに決定する。そして、第2のセルの消費電力値が、第1のセルの消費電力値未満の場合、第1のセルと第2のセルの配置位置を置換することで、第1のROW領域の消費電力値を低くする。これにより、電圧降下によるセットアップタイミングの制約違反を抑制することができる。
図1は、セルの配置位置が置換されたレイアウトデータの一例を示す説明図である。置換済レイアウトデータ100では、INST00B4とINST00A4の配置位置が置換された置換結果を示している。置換済レイアウトデータ100は複数のROW領域を有している。各ROW領域にはセルが配置されている。データパス101が、セットアップタイミングを違反しているデータパスである。
データパス101内のセルであるINST00C3を含むrowX0003Y0003が第1のROW領域に特定され、INST00B4が第1のセルに決定されている。そして、データパス101内のセルを含まないrowX0003Y0002内のINST00A4が第2のセルに決定されている。INST00A4の消費電力値は、INST00B4の消費電力値未満である。
したがって、INST00A4とINST00B4の配置位置が置換されることで、第1のROW領域の消費電力値の合計値を下げることができる。これにより、置換前と比較して電圧降下を抑制することができ、セットアップタイミングの制約違反を抑制することができる。
(設計対象回路のレイアウトデータ)
図2は、設計対象回路のレイアウトデータの一例を示す説明図である。レイアウトデータ200は、設計対象回路の一部のレイアウトデータを示している。レイアウトデータ200は、置換済レイアウトデータ100と同様のROW領域を有している。
単一の半導体集積回路内で複数のROW領域を有する説明と各ROW領域に付されている番号に関する説明は、後述する。rowX0001Y0002〜rowX0004Y0002と、rowX0001Y0003〜rowX0004Y0003と、rowX0001Y0004〜rowX0004Y0004とが、ROW領域である。
INST00A1〜INST00A4と、INST00B1〜INST00B4と、INST00C1〜INST00C4と、INST00D1〜INST00D4とが、セルである。セルは、理解の容易さのために回路記号で表現されているが、実際には、トランジスタや、ビアや、配線層などが具体的に分かるように表現されている。なお、以下、本実施の形態の説明で用いる図面では、セルを回路記号で表現する。
rowX0001Y0002には、INST00A1が配置されている。rowX0002Y0002には、INST00A2が配置されている。rowX0003Y0002には、INST00A3とINST00A4が配置されている。rowX0004Y0002には、INST00A5が配置されている。
rowX0001Y0003には、INST00B1とINST00C1が配置されている。rowX0002Y0003には、INST00B2とINST00C2が配置されている。rowX0003Y0003には、INST00B3と、INST00B4と、INST00C3と、INST00C4が配置されている。rowX0004Y0003には、INST00B5と、INST00C5が配置されている。
rowX0001Y0004には、INST00D1が配置されている。rowX0002Y0004には、INST00D2が配置されている。rowX0003Y0004には、INST00D3とINST00D4が配置されている。rowX0004Y0004には、INST00D5が配置されている。
INST00C1〜INST00C5のデータパス101が、セットアップタイミングを違反しているデータパスである。本実施の形態によりINST00A4とINST00B4の配置位置が置換された置換結果を示している。セルの置換により、Negative SlackであるINST00C3を含むrowX0003Y0003の消費電力値の合計値を低くすることができる。これにより、置換前と比較して電圧降下を抑制することができ、セットアップタイミングの違反を抑制することができる。
データパス201は、INST00A1〜INST00A5により構成されている。データパス202は、INST00B1〜INST00B5により構成されている。データパス103は、INST00C1〜INST00C5により構成されている。データパス203は、INST00D1〜INST00D5により構成されている。
上述したようにデータパス101が、セットアップタイミングの制約に違反しているデータパスである。そして、データパス201と、データパス202と、データパス203は、セットアップタイミングの制約に違反していないデータパスである。したがって、セットアップタイミングの制約に違反しているデータパス内のセルとは、INST00C1〜INST00C5である。
さらに、レイアウトデータ200は、各セルの配置位置情報を有している。具体的には、たとえば、配置位置情報とは、レイアウトデータ200内の座標値である。したがって、各セルの座標値が変更されることにより、セルが置換される。
図3−1は、ROW領域の配置位置を示す設計対象回路のレイアウトデータの説明図である。レイアウトデータ300では、設計対象回路の中でROW領域の配置位置を示している。レイアウトデータ300には、ROW領域301と、I/O(Input/Output)回路302と、マクロが配置されている。ROW領域301には、たとえば、論理回路のなどのスタンダードセルが配置されている。そして、実際には、ROW領域301は、複数のROW領域により形成されている。図3−2にて領域303を用いて各ROW領域を識別するための一例を示す。
図3−2は、各ROW領域を識別するための一例を示す説明図である。領域303には、I/O回路302の一部と、ROW領域301の一部を有している。ROW領域301は、具体的に、複数のROW領域により形成されている。rowX0001Y0001を基準として、各ROW領域に番号が付されている。rowX0001Y0001のX001は、X方向に1番目であることを示している。rowX0001Y0001のY0001は、Y方向に1番目であることを示している。したがって、rowX0003Y0003は、X方向に3番目であり、Y方向に3番目であるROW領域である。つぎに、図3−3を用いてROW領域301が電源配線により区切られている例を示す。
図3−3は、ROW領域の電源配線を示すレイアウトデータの説明図である。レイアウトデータ304は、最下層VDD配線305と、最下層VSS配線306と、上層VDD配線307と、上層VSS配線308と、ビア309と、上層VDD配線310と、上層VSS配線311により形成されている。最下層VDD配線305は、コンタクトを介してセルと接続されてセルに電源電圧を供給する電源配線である。最下層VSS配線306は、コンタクトを介してセルと接続されてセルに接地電圧を供給する電源配線である。なお、電源電圧は、設計対象回路の外部からI/O回路302のVDDおよびI/O回路302のVSSへ入力されて供給される。
そして、上層VDD配線307と最下層VDD配線305とが、ビア309を介して接続されている。上層VSS配線308と最下層VSS配線306とが、ビア309を介して接続されている。
rowX0001Y0001に配置されている最下層VDD配線305とrowX0002Y0001に配置されている最下層VDD配線305は、つながっていない(点線の○の囲い)。本実施の形態では、最下層VDD配線305が独立して配置されている領域ごとに単一のROW領域としている。
したがって、ROW領域ごとに電源配線の経路が異なるため、ROW領域ごとに電圧降下は異なる。さらに、セルごとに電源配線の経路が異なるため、セルごとに電圧降下は異なる。そして、電圧降下は消費電力値により影響されるため、各ROW領域に含まれているセルの消費電力値により各ROW領域の電圧降下は異なる。さらに、セルごとに消費電力値が異なるため、各セルの電圧降下は異なる。
そして、たとえば、ROW領域の面積および形状は、少なくとも設計対象回路に含まれる最大の面積および形状のセルを配置することができる面積および形状である。セルサイズは、たとえば、X軸方向のセルの長さである。セルの種類によらずセルの1方向の長さはすべて同一の長さである。これにより、どのROW領域にどのセルが配置されても最下層VDD配線305と最下層VSS配線306に接続させることができる。したがって、ROW領域のX軸方向の最少の長さは、下記式(1)により決定されている。
ROW領域のX軸方向の長さ>=最大セルサイズ×2+(電源配線幅)
・・・(1)
式(1)の電源配線幅とは、上層VDD配線307の配線幅と、上層VSS配線308の配線幅と、上層VDD配線307と上層VSS配線308の配線間隔の合計値である。式(1)内の電源配線幅は、レイアウトデータ304内のWである。そして、たとえば、上層VDD配線307の補助配線が配線されている場合、さらに補助配線の配線幅と、上層VSS配線308と補助配線の配線間隔が加算された合計値が、式(1)内の電源配線幅である。
式(1)のROW領域のX軸方向の長さとは、レイアウトデータ304内のd1とd2とWの合計値である。レイアウトデータ304では、d1がd2よりも長くなっているが、実際には、d1とd2は同一の長さである。したがって、ROW領域内に電源電圧を均一に供給させるために、上層VDD配線307と上層VSS配線308はROW領域内のX方向の中心に配線されている。
(設計支援装置のハードウェア構成)
図4は、実施の形態にかかる設計支援装置のハードウェア構成を示すブロック図である。図4において、設計支援装置は、CPU(Central Processing Unit)401と、ROM(Read‐Only Memory)402と、RAM(Random Access Memory)403と、磁気ディスクドライブ404と、磁気ディスク405と、光ディスクドライブ406と、光ディスク407と、ディスプレイ408と、I/F(Interface)409と、キーボード410と、マウス411と、スキャナ412と、プリンタ413と、を備えている。また、各構成部はバス400によってそれぞれ接続されている。
ここで、CPU401は、設計支援装置の全体の制御を司る。ROM402は、ブートプログラムなどのプログラムを記憶している。RAM403は、CPU401のワークエリアとして使用される。磁気ディスクドライブ404は、CPU401の制御にしたがって磁気ディスク405に対するデータのリード/ライトを制御する。磁気ディスク405は、磁気ディスクドライブ404の制御で書き込まれたデータを記憶する。
光ディスクドライブ406は、CPU401の制御にしたがって光ディスク407に対するデータのリード/ライトを制御する。光ディスク407は、光ディスクドライブ406の制御で書き込まれたデータを記憶したり、光ディスク407に記憶されたデータをコンピュータに読み取らせたりする。
ディスプレイ408は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ408は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
I/F409は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク414に接続され、このネットワーク414を介して他の装置に接続される。そして、I/F409は、ネットワーク414と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F409には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード410は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス411は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
スキャナ412は、画像を光学的に読み取り、設計支援装置内に画像データを取り込む。なお、スキャナ412は、OCR(Optical Character Reader)機能を持たせてもよい。また、プリンタ413は、画像データや文書データを印刷する。プリンタ413には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
(設計支援装置の機能的構成)
つぎに、設計支援装置の機能的構成について説明する。図5は、設計支援装置の機能的構成を示すブロック図である。設計支援装置500は、消費電力解析部501と、電源網解析部502と、タイミング解析部503と、抽出部504と、第1の特定部505と、第1の決定部506と、第2の特定部507と、算出部508と、第2の決定部509と、判断部510と、置換部511と、出力部512と、を含む構成である。この制御部となる機能(消費電力解析部501〜出力部512)は、具体的には、たとえば、図4に示したROM402、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶されたプログラムをCPU401に実行させることにより、または、I/F409により、その機能を実現する。
まず、消費電力解析部501は、セルの消費電力値を解析する。具体的には、たとえば、消費電力値を解析するツールを用いることで各セルの消費電力値が算出される。なお、算出結果は、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶される。
つぎに、電源網解析部502は、電源配線の抵抗網を生成して電圧降下を解析する。具体的には、たとえば、CPU401が、上述した特許文献1のような電源網解析方法を実行することにより各セルの電圧降下を算出する。なお、解析結果は、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶される。図6にて電源網解析の結果と消費電力値の算出結果を示す。
図6は、設計対象回路内の各セルの消費電力および電圧降下を示す説明図である。各セルの情報600は、インスタンス名601と、セル名602と、セルサイズ603と、消費電力値604と、電圧降下605と、ROW領域の番号606を有している。インスタンス名601とは、設計対象回路内の各セルの固有の名称である。上述したINST00A1などが、インスタンス名601である。
セル名602とは、ライブラリ内に登録されているセルの種類を識別するための情報である。たとえば、FIFO01と、FIFO02と、FIFO03はFF(Flip Flop)を示している。そして、BUF001は、バッファを示している。INV001とINV002は、インバータを示している。
たとえば、INST00A1のセル名602は、FIFO03である。そして、INST00D1のセル名602は、FIFO03である。したがって、INST00A1とINST00D1はセルの種類が同一である。
つぎに、上述したようにセルサイズ603とは、たとえば、X軸方向のセルの長さである。スタンダードセルの種類によらずセルの1方向の長さはすべて同一の長さである。これにより、どのROW領域にどのセルが配置されても最下層VDD配線305と最下層VSS配線306に接続させることができる。セルサイズ603の単位は[grid]である。たとえば、利用者が、具体的に、1gridの長さを設定することができる。消費電力値は、消費電力解析部501により算出された算出結果である。そして、電圧降下605は、電源網解析部502により解析された結果である。
また、図5に戻って、消費電力解析部501は、ROW領域ごとに、ROW領域に含まれているセルの消費電力値の合計値を算出する。具体的には、たとえば、CPU401が、記憶装置にアクセスしてレイアウトデータ200を読み出す。そして、ROW領域の番号順にROW領域を選択してROW領域に含まれているセルを抽出する。つぎに、記憶装置にアクセスして各セルの情報600を読み出し、抽出されたセルのインスタンス名601に基づいて消費電力値を読み出す。そして、読み出された消費電力値を加算してROW領域ごとの消費電力値の合計値を算出する。
たとえば、rowX0003Y0002内のセルの消費電力値の合計値を例に説明する。rowX0003Y0002には、INST00A3とINST00A4が含まれている。たとえば、CPU401が、各セルの情報600にアクセスしてINST00A3の消費電力値である4[μW]を読み出す。つぎに、INST00A4の消費電力値である3[μW]を読み出す。そして、読み出された消費電力値を加算する。したがって、rowX0003Y0002内のセルの消費電力値の合計値は、7[μW]である。
なお、算出結果は、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶される。図7にてROW領域ごとの消費電力値の合計を示す。
図7は、各ROW領域の消費電力値と電圧降下の最大値を示す説明図である。各ROW領域の情報700は、ROW領域の番号606と、消費電力値の合計値701と、電圧降下の最大値702を含んでいる。たとえば、rowX0003Y0002の消費電力値を読み出す場合、CPU401が、記憶装置にアクセスして各ROW領域の情報700を読み出す。つぎに、ROW領域の番号606の中からrowX0003Y0002を検索する。そして、検索されたrowX0003Y0002の消費電力値の合計値701を読み出す。
電圧降下の最大値702は、各ROW領域内のセルの電圧降下の最大値である。各セルの情報600の中からROW領域ごとにROW領域の番号606に基づいて電圧降下605が読み出され、最大の電圧降下605が電圧降下の最大値702に記述されている。
つぎに、図5に戻って、タイミング解析部503は、静的タイミング解析と電圧降下の遅延解析を組み合わせた解析によりタイミングの制約に違反しているパスがあるか否かを解析する。具体的には、たとえば、CPU401が、既存の静的タイミング解析と電圧降下の遅延解析を組み合わせた解析ツールを実行することにより解析することができる。なお、解析結果は、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶される。
本実施の形態の説明で用いるレイアウトデータ200は、静的タイミング解析と電圧降下の遅延解析を組み合わせた解析によりセットアップタイミングの制約に違反しているデータパスを含むレイアウトデータである。たとえば、静的タイミング解析のみでセットアップタイミングの制約に違反しているデータパスを含むレイアウトデータの場合、再度、利用者が初期配置や配線を修正することによりセットアップタイミングの制約違反を解消することとする。
したがって、利用者が、電圧降下の遅延解析を組み合わせない静的タイミング解析をあらかじめ実行してタイミングエラーを含んでいないレイアウトデータであることを確認する。そして、静的タイミング解析のみの解析結果がタイミングエラーを含んでいない場合、本設計支援装置500により静的タイミング解析と電圧降下の遅延解析を組み合わせた解析をレイアウトデータに実施することで本実施の形態の効果を得ることができる。そして、図8にて静的タイミング解析と電圧降下の遅延解析を組み合わせた解析の解析結果を示す。
図8は、タイミング解析の解析結果を示す説明図である。タイミング解析結果800は、インスタンス名601と、入出力名801と、Slack802を含んでいる。入出力名801とは、セルのどの入力部または出力部512であるかを識別する情報である。上述したようにSlackとは、タイミングの余裕度である。本実施の形態では、Slack802は、セットアップタイミングの制約に対する余裕度を示している。
たとえば、インスタンス名601がINST00A5の場合、入出力名801がPinのSlack802は60[ps]である。INST00A5のPinとは、INST00A5のデータ入力部である。したがって、INST00A5に入力されるデータパスは、セットアップタイミングの制約に遵守している。タイミング解析結果800のSlack802によりレイアウトデータ200に含まれているデータパスがセットアップタイミングの制約に遵守しているか否かが判別される。
つぎに、図5に戻って、抽出部504は、レイアウトデータの中から電圧降下によりセットアップタイミングの制約に違反しているデータパス内のセルを抽出する。具体的には、たとえば、CPU401が、記憶装置にアクセスしてタイミング解析結果800から、記述されているインスタンス名601の順にSlack802を読み出す。そして、Slack802がNegative Slackであるインスタンス名601を抽出する。なお、抽出結果は、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶される。
下記に抽出されたNegative Slackのセルを示す。Negative Slackリストには、インスタンス名601が記述されている。
Negative Slackリスト1:INST00C1、INST00C2、INST00C3、INST00C4、INST00C5
つぎに、第1の特定部505は、レイアウトデータ内の複数のROW領域の中から、抽出部504により抽出されたデータパス内のセルを含む第1のROW領域を特定する。具体的には、たとえば、CPU401が、記憶装置にアクセスしてNegative Slackリスト1を読み出す。そして、Negative Slackリスト1内のセルを選択する。
つぎに、たとえば、CPU401が、記憶装置にアクセスして各セルの情報600を読み出す。そして、インスタンス名601に基づいてROW領域の番号606を読み出し、選択されたセルのROW領域の番号606を特定する。なお、特定結果は、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶される。
また、第1の特定部505は、抽出部504により抽出されたデータパス内の複数のセルのタイミングの余裕度の絶対値に基づいて第1のROW領域を特定する。具体的には、たとえば、CPU401が、記憶装置にアクセスしてNegative Slackリストを読み出す。そして、記憶装置にアクセスしてタイミング解析結果800を読み出す。Negative Slackリスト内のインスタンス名601に基づいてタイミング解析結果800内のSlack802を読み出す。
そして、たとえば、CPU401が、Negative Slackリスト内のセルをSlack802の絶対値が大きい順に並び替える。本実施の形態では、Negative Slackリスト1内のセルのSlack802がすべて同一のため、並び替える処理が実行されない。
これにより、タイミングの制約に違反しているセルの中で最もタイミングの制約に遵守することが困難なセルを含む第1のROW領域の消費電力値の低減化を図ることができる。したがって、電圧降下により発生するセットアップタイミング違反を抑制することができる。
また、第1の特定部505は、抽出部504により抽出された複数のセルのタイミングの余裕度の絶対値が同一の場合、電圧降下が大きいセル順に第1のROW領域を特定する。具体的には、たとえば、CPU401が、記憶装置にアクセスして各セルの情報600を読み出す。そして、各セルの情報600からSlack802の絶対値が同一であるセルの電圧降下605を読み出す。つぎに、読み出された電圧降下605を比較して電圧降下605の値が大きいセル順に並び替える。
Negative Slackリスト内のセルをSlack802が同一の場合、電圧降下605順に並び替えた結果を下記に示す。上述したようにセルのSlack802は、すべて同一であったため、Negative Slackリスト1内のセルはすべて電圧降下605順に並び替えられた。なお、電圧降下605が同一の場合、セルはNegative Slackリスト1内の順に記述されている。
Negative Slackリスト2:INST00C1、INST00C3、INST00C5、INST00C2、INST00C4
つぎに、たとえば、CPU401が、Negative Slackリスト2内の1番目のセルを選択する。そして、各セルの情報600から選択されたセルのROW領域の番号606を読み出す。そして、読み出されたROW領域の番号606が、第1のROW領域に特定される。
たとえば、Negative Slackリスト2内の1番目のセルは、INST00C1である。INST00C1を有しているROW領域の番号606は、rowX0001Y0003である。したがって、rowX0001Y0003が第1のROW領域に特定される。
これにより、電圧降下の大きいセルを含むROW領域内のセルを置換対象のセルに自動で特定することができる。したがって、電圧降下により発生するセットアップタイミング違反を抑制することができる。
つぎに、第1の決定部506は、第1の特定部505により特定された第1のROW領域内のセルの内、Negative Slackのセルを除く第1のROW領域内のセルを第1のセルに決定する。
具体的には、たとえば、CPU401が、記憶装置にアクセスしてレイアウトデータ200を読み出す。そして、第1のROW領域内のセルを抽出する。つぎに、記憶装置にアクセスしてタイミング解析結果800を読み出す。そして、タイミング解析結果800から抽出されたセルのSlack802を読み出す。つぎに、読み出されたSlackがNegative SlackであるかPositive Slackであるかを判断する。そして、読み出されたSlack802がPositive Slackであるセルを第1のセルに決定する。
また、第1の決定部506は、第1の特定部505により特定された第1のROW領域内のセルの中から、さらにクロックバッファセルおよびデータ保持素子のセルを除くセルを第1のセルに決定する。具体的には、たとえば、CPU401が、記憶装置にアクセスして各セルの情報600を読み出す。そして、第1のROW領域内のPositive Slackであるセルのセル名602を読み出す。つぎに、読み出されたセル名602がクロックバッファのセル名602またはデータ保持素子のセル名602でないセルを抽出する。そして、抽出されたセルを第1のセルに決定する。
これにより、タイミングに影響の少ないセルを置換対象とすることができる。したがって、セルの置換により他のデータパスにタイミングエラーが発生するのを抑制することができる。
本実施の形態では、データ保持素子とは、FFやラッチの様な順序回路に用いられる素子を示している。さらに、クロックバッファまたはデータ保持素子を少なくとも1つを含む構成のセルは、第1のセルに決定されない。
たとえば、第1のROW領域に決定されたrowX0001Y0003内のセルは、INST00C1とINST00B1である。INST00C1は、Negative Slackであるため第1のセルに決定されない。INST00B1は、Positive Slackである。しかしながら、INST00B1のセル名602はFIFO02である。FIFO02は、FFを示している。したがって、rowX0001Y0003の中から第1のセルは決定されない。
したがって、上述したNegative Slackリスト2の2番目のセルを含む第1のROW領域に特定される。Negative Slackリスト2の2番目のセルは、INST00C3である。INST00C3を有しているROW領域は、rowX0003Y0003である。よって、rowX0003Y0003が第1のROW領域に特定される。
そして、たとえば、CPU401が、レイアウトデータ200からrowX0003Y0003内のセルを抽出する。rowX0003Y0003内のセルは、INST00C3と、INST00C4と、INST00B3と、INST00B4である。そして、たとえば、CPU401が、タイミング解析結果800からrowX0003Y0003内のセルのSlack802を読み出す。つぎに、読み出されたSlack802によりrowX0003Y0003内のセルからPositive Slackのセルを抽出する。INST00B3およびINST00B4のSlack802は、Positive Slackである。したがって、INST00B3とINST00B4が抽出される。
そして、たとえば、CPU401が、各セルの情報600から抽出されたセルのセル名602を読み出す。そして、読み出されたセル名602の中からクロックバッファセルのセル名602またはデータ保持素子のセル名602を除くセルを抽出する。INST00B3のセル名602は、INV001である。INV001とは、インバータを示している。そして、INST00B4のセル名602は、INV002である。INV002とは、インバータを示している。したがって、INST00B3とINST00B4が第1のセルに決定される。なお、決定結果は、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶される。
rowX0003Y0003が第1のROW領域の場合の第1のセルの決定結果を下記に示す。
第1のROW領域:rowX0003Y0003
第1のセルのリスト1:INST00B3、INST00B4
また、第1の決定部506は、第1の特定部505により特定された第1のROW領域内のセルの中から、最も消費電力値が高いセルを第1のセルに決定する。具体的には、たとえば、CPU401が、記憶装置にアクセスして第1のセルのリスト1および各セルの情報600を読み出す。そして、第1のセルのリスト1内のセルの消費電力値を各セルの情報600から読み出す。
つぎに、たとえば、CPU401が、読み出された第1のセルのリスト1内のセルの消費電力値604を比較して消費電力値604が高い順に並び替える。そして、1番目のセル(消費電力値604が最も高いセル)を第1のセルに決定する。なお、決定結果は、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶される。
消費電力値604が高い順に並び替えられた結果を下記に示す。
第1のROW領域:rowX0003Y0003
第1のセルのリスト2:INST00B4、INST00B3
したがって、第1のセルのリスト2の中から1番目のセルであるINST00B4が第1のセルに決定される。これにより、置換後に第1のROW領域内の消費電力値を最も低くすることが可能な置換対象のセルを自動で特定することができる。したがって、第1のROW領域の消費電力値を容易に低くでき、電圧降下により発生するセットアップタイミング違反を効率的に抑制することができる。
つぎに、第2の特定部507は、レイアウトデータ内の複数のROW領域の中から抽出部504により抽出されたセルを含まない第2のROW領域を特定する。具体的には、たとえば、CPU401が、記憶装置にアクセスしてNegative Slackリスト2を読み出す。そして、記憶装置にアクセスしてレイアウトデータ200を読み出す。つぎに、レイアウトデータ200の中からNegative Slackリスト内のセルを含まないROW領域を抽出する。そして、抽出されたROW領域を第2のROW領域に特定する。なお、特定結果は、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶される。
第2のROW領域に特定されたROW領域を下記第2のROW領域リスト1に示す。
第2のROW領域のリスト1:rowX0001Y0002、rowX0002Y0002、rowX0003Y0002、rowX0004Y0002、rowX0001Y0004、rowX0002Y0004、rowX0003Y0004、rowX0004Y0004
また、第2の特定部507は、第1の特定部505により特定された第1のROW領域に隣接しているROW領域の中から、第2のROW領域を特定する。図9にて隣接しているROW領域の例を示す。
図9は、第1のROW領域に隣接しているROW領域を示す説明図である。レイアウトデータ900では、第1のROW領域に隣接しているROW領域を示している。rowX0003Y0003が第1のROW領域である。第2の特定部507は、1の矢印(実線の矢印)の内側のROW領域の中から消費電力値の合計値が最も低い第2のROW領域を特定する。
具体的には、たとえば、CPU401が、記憶装置にアクセスしてタイミング解析結果800と、レイアウトデータ900を読み出す。つぎに、レイアウトデータ900の中に1が付されているrowX0002Y0002から1の矢印の順にROW領域を選択する。そして、選択されたROW領域内のインスタンス名に基づいてタイミング解析結果800内のインスタンス名601にアクセスし、Slack802を読み出す。そして、選択されたROW領域内のすべてのSlack802が、Positive Slackの場合、選択されたROW領域を第2のROW領域に特定する。なお、特定結果は、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶される。
第2のROW領域に特定されたROW領域を下記第2のROW領域リスト2に示す。
第2のROW領域のリスト2:rowX0002Y0002、rowX0002Y0004、rowX0003Y0004、rowX0004Y0004、rowX0004Y0002、rowX0003Y0002
図5に戻って、また、たとえば、第2の特定部507は、1の矢印の内側のROW領域の中から第2のROW領域を特定できなかった場合、1の矢印の外側でかつ2の矢印(点線の矢印)の内側であるROW領域の中から第2のROW領域を特定する。
そして、1の矢印の外側でかつ2の矢印(点線の矢印)の内側であるROW領域の中から第2のROW領域が特定されなかった場合、第2のROW領域が特定されなかった情報を出力する。これにより、第1のROW領域内の第1のセルの近傍のROW領域の中から第2のROW領域を特定することができる。
これにより、第1のセルの配置位置が、置換前の配置位置から離間しにくくすることができ、置換することにより新たにタイミングエラーが発生するのを防止することができる。なお、本実施の形態では、2の矢印の順に基づいて第2のROW領域が特定される説明は省略する。
また、第2のROW領域は複数特定されているが、たとえば、第2のROW領域リスト2内の複数のROW領域から任意のROW領域が第2のROW領域に特定されることとしてもよい。たとえば、各ROW領域700内の消費電力値の合計値701に基づいて、第2のROW領域リスト2内の複数のROW領域から消費電力値の合計値701が最も低いROW領域が第2のROW領域に特定されることとしてもよい。
また、たとえば、各ROW領域700内の電圧降下の最大値702に基づいて、第2のROW領域リスト2内の複数のROW領域から最も電圧降下の低いROW領域が第2のROW領域に特定されることとしてもよい。なお、本実施の形態では、消費電力値の合計値701および電圧降下の最大値702に基づいて第2のROW領域が決定される説明を省略する。そして、第2の決定部509は、任意の第2のROW領域から第2のセルを決定する。
任意のROW領域が第2のROW領域に決定されている場合、第2の特定部507は、すでに第2のROW領域として特定されたROW領域内から第2の決定部509により第2のセルが決定されなかった場合、新たにROW領域を第2のROW領域に特定する。
具体的には、たとえば、CPU401が、記憶装置にアクセスして第2のROW領域リスト2を読み出す。そして、すでに第2のROW領域に特定されたROW領域の次に記述されているROW領域を第2のROW領域に特定する。なお、第2の特定結果は、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶される。本実施の形態では、複数のROW領域から任意のROW領域が第2のROW領域に特定される説明を省略する。そして、本実施の形態では、第2のROW領域リスト2内の複数のROW領域から第2のセルを決定する例を説明する。
つぎに、第2の決定部509は、第2の特定部507により特定された第2のROW領域内のセルを第2のセルに決定する。具体的には、たとえば、CPU401が、記憶装置にアクセスして第2の特定結果(第2のROW領域リスト2)を読み出す。そして、記憶装置にアクセスしてレイアウトデータ200の中から第2のROW領域内のセルを抽出する。つぎに、抽出されたセルを第2のセル候補に決定する。
第2のセル候補とは、セルが複数抽出された場合、第2のセル候補からいずれか1つのセルが第2のセルに決定される。たとえば、第2のセル候補が単一の場合、第2のセル候補が第2のセルに決定される。なお、第2の決定結果は、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶される。
第2の決定結果を下記第2のセル候補リスト1に示す。なお、第2のセル候補リスト1には、インスタンス名601が含まれている。
第2のセル候補リスト1:INST00A2、INST00D2、INST00D3、INST00D4、INST00D5、INST00A5、INST00A3、INST00A4
また、第2の決定部509は、第2の特定部507により特定された第2のROW領域内のセルの中から、第1のセルと同一面積かつ同一形状であるセルを第2のセルに決定する。具体的には、たとえば、CPU401が、記憶装置にアクセスして第2の特定結果を読み出す。そして、記憶装置にアクセスしてレイアウトデータ200から特定された第2のROW内のセルを抽出する。
そして、たとえば、CPU401が、記憶装置にアクセスして各セルの情報600から第1のセルと抽出されたセルのセルサイズ603を読み出す。そして、抽出されたセルの中から読み出された第1のセルのセルサイズ603と同一のセルサイズ603であるセルを第2のセル候補に決定する。第2のセル候補が単一の場合、第2のセル候補が第2のセルに決定される。なお、第2の決定結果は、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶される。
これにより、他のセルを再配置することなく第1のセルと第2のセルを自動で置換することができる。したがって、設計期間の短縮化を図ることができる。
第2の決定結果を下記第2のセル候補リスト2に示す。なお、第2のセル候補リスト2には、インスタンス名601が含まれている。
第2のセル候補リスト2:INST00D3、INST00D4、INST00A3、INST00A4
さらに、第2の決定部509は、第2の特定部507により特定された第2のROW領域内のセルの中から、第1のセルと同一面積かつ同一形状となる複数セルを第2のセルに決定する。具体的には、たとえば、CPU401が、記憶装置にアクセスして第2の特定結果を読み出す。そして、記憶装置にアクセスしてレイアウトデータ200から特定された第2のROW内のセルを抽出する。
そして、たとえば、CPU401が、記憶装置にアクセスして各セルの情報600から第1のセルと抽出されたセルのセルサイズ603を読み出す。そして、抽出されたセルの中から複数のセルのセルサイズ603を足し合わせたセルサイズ603と第1のセルのセルサイズ603とが同一となる複数のセルを第2のセル候補に特定する。なお、第2の決定結果は、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶される。本実施の形態では、第1のセルと同一形状および同一面積である複数のセルが第2のセルに決定される例の説明を省略する。
また、第2の決定部509は、第2の特定部507により特定された第2のROW領域内のセルの中から、クロックバッファとデータ保持素子を除くセルを第2のセル候補に決定する。さらに、クロックバッファおよびデータ保持素子を少なくとも1つ含む構成のセルは、第2のセル候補に決定されない。具体的には、たとえば、CPU401が、記憶装置にアクセスして第2の特定結果を読み出す。そして、記憶装置にアクセスしてレイアウトデータ200の中から第2のROW領域内のセルを抽出する。つぎに、抽出されたセルのインスタンス名601に基づいて記憶装置にアクセスして各セルの情報600からセル名602を読み出す。
そして、たとえば、CPU401が、抽出されたセルごとに、読み出されたセル名602により抽出されたセルがクロックバッファまたはデータ保持素子のセルであるか否かを判断する。つぎに、クロックバッファまたはデータ保持素子でないと判断された場合、抽出されたセルを第2のセル候補に決定する。第2のセル候補が単一の場合、第2のセル候補が第2のセルに決定される。なお、第2の決定結果は、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶される。
たとえば、第2のROW領域のリスト2内のrowX0002Y0002に配置されているINST00A2は、セル名602がBUF001である。したがって、INST00A2は、バッファのセルであるため、第2のセル候補に決定される。第2のROW領域のリスト2内のrowX0004Y0002内のINST00A5は、セル名602がFIFO03である。したがって、INST00A5は、データ保持素子のセルであるため、第2のセル候補に決定されない。
また、具体的には、たとえば、CPU401が、記憶装置にアクセスして上述した第2のセル候補リスト2を読み出す。そして、第2のセル候補リスト2内のセルのインスタンス名601に基づいて各セルの情報600からセル名602を読み出す。読み出されたセル名602により抽出されたセルがクロックバッファまたはデータ保持素子のセルであるか否かを判断する。
つぎに、具体的には、たとえば、CPU401が、クロックバッファまたはデータ保持素子でないと判断された場合、抽出されたセルを第2のセル候補に決定する。なお、第2のセル候補が単一の場合、第2のセル候補が第2のセルに決定される。なお、第2の決定結果は、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶される。
これにより、クロックバッファおよびデータ保持素子のセルを除くセル候補に決定することで、タイミングに影響の少ないセルを置換対象とすることができる。したがって、セルの置換により他のデータパスにタイミングエラーが発生するのを抑制することができる。
なお、第2のセル候補リスト2内のセルは、クロックバッファおよびデータ保持素子のセルでない。本実施の形態では、第2のセル候補リスト2内のセルからクロックバッファおよびデータ保持素子のセルを除くセルが、第2のセル候補に決定される例の説明を省略する。
図5に戻って、また、第2の決定部509は、第2の特定部507により特定された第2のROW領域内のセルの中から、最も消費電力値が低いセルを第2のセルに決定する。本実施の形態では、特定された第2のROW領域内から上述した第2の決定部509により決定された第2のセル候補リスト2の中で最も消費電力値の低いセルが第2のセル候補に決定される例を説明する。なお、第2のセル候補が単一の場合、第2のセル候補が第2のセルに決定される。
具体的には、たとえば、記憶装置にアクセスして第2のセル候補リスト2内のインスタンス名601を読み出す。そして、記憶装置にアクセスして各セルの情報600からインスタンス名601に基づいてセルの消費電力値604を読み出す。つぎに、読み出された消費電力値604を比較して消費電力値604が低いセル順に並び替える。そして、最も消費電力値の低いセルを第2のセル候補に決定する。なお、第2の決定結果は、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶される。
第2の決定結果を下記第2のセル候補リスト3に示す。なお、第2のセル候補リスト3には、インスタンス名601が含まれている。
第2のセル候補リスト3:INST00D4、INST00A4
これにより、最も消費電力値が低いセルを第2のセルに決定することにより、第1のセルを、第1のROW領域の消費電力値を最も低くすることができる第2のROW領域内のセルと置換することができる。したがって、第1のROW領域の消費電力値を容易に低くすることができ、電圧降下により発生するセットアップタイミング違反を効率的に抑制することができる。
また、第2の決定部509は、第2の特定部507により特定された第2のROW領域内の複数のセルの消費電力値が同一の場合、Slackの絶対値に基づいて第2のセルを決定する。具体的には、たとえば、CPU401が、記憶装置にアクセスして第2のセル候補リスト3を読み出す。
そして、たとえば、CPU401が、第2のセル候補リスト3内のインスタンス名601に基づいて、記憶装置にアクセスして各セルの情報600から電圧降下605を読み出す。そして、電圧降下605が最も低いインスタンス名601を、第2のセル候補に決定する。なお、第2の決定結果は、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶される。本実施の形態では、第2のセル候補リスト3内のINST00A4とINST00D4は、同一の電圧降下である。
第2の決定結果を下記第2のセル候補リスト4に示す。なお、第2のセル候補リスト4には、インスタンス名601が含まれている。
第2のセル候補リスト4:INST00D4、INST00A4
つぎに、算出部508は、第2の特定部507により特定された第2のROW領域内のセルごとに第1の決定部506により決定された第1のセルとの距離を算出する。なお、本実施の形態では、第2のセル候補リスト4内のセルごとに、第1のセルとの距離が算出される例を説明する。
具体的には、たとえば、CPU401が、記憶装置にアクセスして第2のセル候補リスト4を読み出す。そして、記憶装置にアクセスしてレイアウトデータ200のから第2のセル候補リスト4内のセルと第1のセルが配置されている座標値を読み出す。そして、第2のセル候補リスト4内のセルごとに、読み出された座標値により第1のセルから第2のセル候補リスト4内のセルとの距離を算出する。なお、算出結果は、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶される。
算出結果を下記算出結果リストに示す。算出結果リストには、(インスタンス名601、距離[grid])が含まれている。
算出結果リスト:(INST00A4、5)、(INSTT00D4、6)
また、第2の決定部509は、算出部508により第2のROW領域内のセルごとに算出された第1のセルとの距離が最も短い第2のROW領域内のセルを第2のセルに決定する。具体的には、たとえば、記憶装置にアクセスして算出結果リストを読み出す。そして、距離が、最も短い値であるインスタンス名601を、第2のセル候補に決定する。なお、第2のセル候補が単一の場合、第2のセル候補が決定される。また、第2のセル候補が複数ある場合、第2のセル候補の中から任意のセルが第2のセルに決定される。なお、決定結果は、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶される。
これにより、第1のセルとの距離を算出し、算出された第1のセルとの距離が最も短い第2のROW領域内のセルを第2のセルに決定することにより、置換処理による第1のセルを含むデータパスと第2のセルを含むデータパスの配線経路の変更を最小限に抑制することができる。本実施の形態では、算出結果リストに基づいてINST00A4が第2のセルに決定される。図10に第1のセルと第2のセルの配置位置を示す。
図10は、第1のセルと第2のセルの配置位置を示す説明図である。レイアウトデータ1000では、第1のセルと第2のセルの配置位置を示している。INST00B4が第1のセルである。そして、INST00A4が第2のセルである。レイアウトデータ1000内の矢印は、第1のセルと第2のセルの配置位置が置換されることを示している。
つぎに、出力部512は、第1の決定部506により決定された第1のセルの消費電力値と第2の決定部509により決定された第2のセルの消費電力値を出力する。具体的には、たとえば、CPU401が、記憶装置にアクセスして各セルの情報600の中から第1のセルおよび第2のセルの消費電力値604を読み出す。そして、読み出された第1のセルおよび第2のセルの消費電力値604を出力する。
出力形式としては、たとえば、ディスプレイ408への表示、プリンタ413への印刷出力、I/F409による外部装置への送信がある。また、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶することとしてもよい。
たとえば、出力結果を下記に示す。下記は(インスタンス名601、消費電力値604)である。
第1のセル:(INST00B4、6)
第2のセル:(INST00A4、3)
これにより、第1のROW領域の消費電力値を低くするための置換対象のセルを自動で特定することができる。利用者が、出力された置換対象のセルの消費電力値を参照するだけで、セルの置換可否を容易に決定することができる。したがって、セルを置換することにより、タイミングの制約に遵守させるためにデータパス内へ新たにセルを追加させることなく、電圧降下により発生するセットアップタイミングの制約違反を効率的に抑制することができる。
つぎに、判断部510は、第2の決定部509により決定された第2のセルの消費電力値が、第1の決定部506により決定された第1のセルの消費電力値未満であるかを判断する。具体的には、たとえば、CPU401が、記憶装置にアクセスして各セルの情報600の中から第1のセルおよび第2のセルの消費電力値604を読み出す。つぎに、読み出された第2のセルの消費電力値604が、第1のセルの消費電力値604未満であるかを判断する。なお、判断結果は、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶される。
たとえば、第1のセルであるINST00B4の消費電力値604は、6である。そして、第2のセルであるINST00A4の消費電力値604は、3である。したがって、第2のセルの消費電力値604は、第1のセルの消費電力値604未満であると判断される。
また、第2の特定部507は、判断部510により第2のセルの消費電力値が、第1のセルの消費電力値未満でないと判断された場合、レイアウトデータ内の複数のROW領域の内、すでに第2のROW領域として特定されたROW領域を除き、かつNegative Slackを含まないROW領域を新たに第2のROW領域に特定する。本実施の形態では、複数の第2のROW領域から第2のセルが決定されているため、あらたに第2のROW領域が特定されない。
たとえば、上述したように複数のROW領域から任意のROW領域が第2のROW領域に特定される場合、あらたに第2のROW領域が特定されることで第1のセルを、消費電力値が低くかつ電圧降下の影響が少ないROW領域内のセルと置換することができる。したがって、セルの置換により第2のROW領域にタイミングエラーを発生するのを抑制することができる。
具体的には、たとえば、CPU401が、記憶装置にアクセスして判断結果を読み出す。そして、第2のセルの消費電力値が、第1のセルの消費電力値未満でないと判断された場合、記憶装置にアクセスして第2のROW領域リスト2を読み出す。そして、第2のROW領域リスト2からすでに第2のROW領域に特定されたROW領域の次に記述されているROW領域を第2のROW領域に特定する。そして、再度、第2の決定部509により第2のセルが実行される。なお、本実施の形態では、複数のROW領域からあらたに任意の第2のROW領域が特定される説明を省略する。
つぎに、置換部511は、判断部510により第2のセルの消費電力値が、第1のセルの消費電力値未満であると判断された場合、第1のセルと第2のセルの配置位置を置換する。具体的には、たとえば、CPU401が、記憶装置にアクセスして判断結果を読み出す。そして、第2のセルの消費電力値604が第1のセルの消費電力値604未満であると判断されている場合、記憶装置にアクセスしてレイアウトデータ200内の第1のセルと第2のセルの座標値を置換する。
また、出力部512は、置換部511により置換された置換結果を出力する。具体的には、たとえば、第1のセルと第2のセルの配置位置が置換されたレイアウトデータを置換済レイアウトデータとして出力する。
出力形式としては、たとえば、ディスプレイ408への表示、プリンタ413への印刷出力、I/F409による外部装置への送信がある。また、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶することとしてもよい。なお、第1のセルと第2のセルが置換された置換結果は、置換済レイアウトデータ100に示す。
これにより、第1のROW領域の消費電力値が置換前よりも低くなるように第1のROW領域内のセルを再配置することができる。したがって、タイミングの制約に遵守させるためにデータパスにセルを追加させることなく電圧降下により発生するセットアップタイミング違反を抑制することができる。
つぎに、たとえば、第1のセルと第2のセルの置換後に配線が行われる。そして、置換済レイアウトデータ100が、上述した電源網解析部502により電源配線の抵抗網を生成して電圧降下が解析される。つぎに、上述したタイミング解析部503によりタイミングの制約に違反しているパスがあるか否かが解析される。
つづいて、タイミング制約に違反しているパスがあると判断された場合、置換済レイアウトデータ100へ上述した上層VDD配線307と同一の層により補助電源配線が配線される。たとえば、ROW領域ごとに、上層VSS配線308が上層VDD配線307と補助電源配線により挟まれるようなレイアウトデータとなる。そして、タイミング制約に違反しているパスのセルを含むROW領域に、当該ROW領域内の補助電源配線と最下層VDD配線305とを接続させるためのビア309が挿入される。これにより、タイミング制約に違反しているパス内のセルの電圧降下が改善され、タイミング違反を抑制することができる。
(設計支援装置500の設計支援処理手順)
実施の形態にかかる設計支援装置500の設計支援処理手順について説明する。図11は、設計支援装置500の設計支援処理手順を示すフローチャートである。まず、レイアウトデータを取得する(ステップS1101)。なお、取得されるレイアウトデータは、あらかじめ補助電源配線が配置されていることとする。つぎに、STA(Static Timing Analysis(静的タイミング解析))を実施し(ステップS1102)、セットアップタイムに違反しているか否かを判断する(ステップS1103)。
つぎに、セットアップタイムに違反していないと判断された場合(ステップS1103:No)、電源網解析部502により、電源網解析を実施する(ステップS1104)。たとえば、ステップS1104の処理結果が各セルの情報600内の電圧降下605に記述されている。
つぎに、タイミング解析部503により、電圧降下の遅延解析とSTAを組み合わせてタイミング解析を実施する(ステップS1105)。ステップS1105の処理結果がタイミング解析結果800内のSlack802に記述されている。そして、セットアップタイムに違反しているか否かを判断する(ステップS1106)。
セットアップタイムに違反していると判断された場合(ステップS1106:Yes)、消費電力解析部501により、消費電力値の算出処理を実行する(ステップS1107)。たとえば、各セルの消費電力値の算出結果が、各セルの情報600内の消費電力値604に記述されている。さらに、各ROW領域の消費電力値の合計値の算出結果が、各ROW領域の情報700内の消費電力値の合計値701に記述されている。
つぎに、第1の特定部505と第1の決定部506により、第1のROW領域の特定処理を実行し(ステップS1108)、第1のROW領域が特定されたか否かを判断する(ステップS1109)。第1のROW領域が特定されたと判断された場合(ステップS1109:Yes)、第2の特定部507と、算出部508と、第2の決定部509と、判断部510と、置換部511と、出力部512により置換処理を実行する(ステップS1110)。つづいて、配線を実施し(ステップS1111)、再度、電圧降下の遅延解析とSTAを組合せタイミング解析し(ステップS1112)、補助電源配線の接続処理を実行し(ステップS1113)、一連の処理を終了する。
一方、第1のROW領域が特定されなかったと判断された場合(ステップS1109:No)、ステップS1111へ移行する。一方、セットアップタイムに違反していないと判断された場合(ステップS1106:No)、ステップS1113へ移行する。そして、一方、セットアップタイムに違反していると判断された場合(ステップS1103:Yes)、一連の処理を終了する。
つぎに、上述した消費電力値の算出処理(ステップS1107)について説明する。図12は、消費電力値の算出処理の処理手順を示すフローチャートである。まず、消費電力解析部501により、消費電力値を算出し(ステップS1201)、セルごとにROW領域と、消費電力値と、電圧降下とを関連づけて保存する(ステップS1202)。保存された保存結果が、各セルの情報600である。つぎに、選択されていないROW領域はあるか否かを判断する(ステップS1203)。
選択されていないROW領域はあると判断された場合(ステップS1203:Yes)、ROW領域を選択し(ステップS1204)、ROW領域内のセルの消費電力値の合計を算出し(ステップS1205)、ROW領域と消費電力値の合計とを関連づけて保存し(ステップS1206)、ステップS1203へ戻る。保存された情報が、各ROW領域の情報700である。一方、選択されていないROW領域はないと判断された場合(ステップS1203:No)、ステップS1108へ移行する。
つぎに、上述した第1のROW領域の特定処理(ステップS1108)について説明する。図13は、第1のROW領域の特定処理の処理手順を示すフローチャートである。まず、Slackがマイナス値のセルを抽出し(ステップS1301)、電圧降下の大きい順に並び替えて保存し(ステップS1302)、j=1とし(ステップS1303)、j<=抽出されたセルの総数であるか否かを判断する(ステップS1304)。
j<=抽出されたセルの総数であると判断された場合(ステップS1304:Yes)、j番目のセルを含むROW領域を抽出(ステップS1305)、クロックバッファとデータ保持素子を除くSlackがプラス値のセルがあるか否かを判断する(ステップS1306)。クロックバッファとデータ保持素子を除くSlackがプラス値のセルがあると判断された場合(ステップS1306:Yes)、第1のROW領域として決定し(ステップS1307)、第1の特定部505により、第1のセルの決定処理を実行する(ステップS1308)。
そして、第1のROW領域と第1のセルとを関連づけて保存し(ステップS1309)、j=j+1とし(ステップS1310)、ステップS1304へ移行する。一方、クロックバッファとデータ保持素子を除くSlackがプラス値のセルがないと判断された場合(ステップS1306:No)、ステップS1310へ移行する。一方、j<=抽出されたセルの総数でないと判断された場合(ステップS1304:No)、ステップS1109へ移行する。
つぎに、上述した第1のセルの決定処理(ステップS1308)について説明する。図14は、第1のセルの決定処理の処理手順を示すフローチャートである。まず、クロックバッファとデータ保持素子を除くSlackがプラス値のセルを抽出し(ステップS1401)、抽出されたセルを第1のセルに決定し(ステップS1402)、抽出されたセルを消費電力値の高い順に並び替え(ステップS1403)、消費電力値が同一のセルはあるか否かを判断する(ステップS1404)。
そして、消費電力値が同一のセルはあると判断された場合(ステップS1404:Yes)、消費電力値が同一のセルのみSlackの絶対値が大きいセル順に並び替え(ステップS1405)、ステップS1309へ移行する。一方、消費電力値が同一のセルはないと判断された場合(ステップS1404:No)、ステップS1309へ移行する。
つぎに、上述した置換処理(ステップS1110)について説明する。図15は、置換処理の処理手順を示すフローチャートである。まず、i=1とし(ステップS1501)、i<=特定された第1のROW領域の総数であるか否かを判断する(ステップS1502)。i<=特定された第1のROW領域の総数であると判断された場合(ステップS1502:Yes)、r=1とし(ステップS1503)、r<=第1のセルの総数であるか否かを判断する(ステップS1504)。
そして、r<=第1のセルの総数であると判断された場合(ステップS1504:Yes)、第2の特定部507により、第2のROW領域の特定処理を実行し(ステップS1505)、第2のROW領域は特定されたか否かを判断する(ステップS1506)。第2のROW領域は特定されたと判断された場合(ステップS1506:Yes)、第2の決定部509により、第2のセルの決定処理を実行し(ステップS1507)、r番目の第1のセルと置換される第2のセルは決定されたか否かを判断する(ステップS1508)。
そして、r番目の第1のセルと置換する第2のセルは決定されたと判断された場合(ステップS1508:Yes)、置換部511により、第1のセルと第2のセルを置換し(ステップS1509)、r=r+1とし(ステップS1510)、ステップS1504に戻る。一方、第2のROW領域は特定されなかったと判断された場合(ステップS1506:No)、またはr番目の第1のセルと置換する第2のセルは決定されなかったと判断された場合(ステップS1508:No)、ステップS1510へ移行する。
一方、r<=第1のセルの総数でないと判断された場合(ステップS1504:No)、i=i+1とし(ステップS1511)、ステップS1502へ戻る。そして、一方、i<=特定された第1のROW領域の総数でないと判断された場合(ステップS1502:No)、ステップS1111へ移行する。
つぎに、上述した第2のROW領域の特定処理(ステップS1505)を説明する。図16は、第2のROW領域の特定処理の処理手順を示すフローチャートである。まず、第1のROW領域に隣接しているROW領域を検索し(ステップS1601)、すべてのセルのSlackがプラス値であるROW領域を抽出し(ステップS1602)、抽出されたROW領域を第2のROW領域に特定し(ステップS1603)、ステップS1506へ移行する。たとえば、特定された第2のROW領域の情報は、上述した第2のROW領域リスト1または2である。
つぎに、上述した第2のセルの決定処理(ステップS1507)を説明する。図17は、第2のセルの決定処理の処理手順を示すフローチャートである。まず、n=1とし(ステップS1701)、n<=特定された第2のROW領域の総数であるか否かを判断する(ステップS1702)。n<=特定された第2のROW領域の総数であると判断された場合(ステップS1702:Yes)、n番目の第2のROW領域内からクロックバッファとデータ保持素子を除くセルを抽出し(ステップS1703)、抽出されたセルはあるか否かを判断する(ステップS1704)。
そして、抽出されたセルはあると判断された場合(ステップS1704:Yes)、セルの並び替え処理を実行し(ステップS1705)、m=1とし(ステップS1706)、m<=抽出されたセルの総数であるか否かを判断する(ステップS1707)。m<=抽出されたセルの総数であると判断された場合(ステップS1707:Yes)、判断部510により、m番目のセルの消費電力値>=第1のセルの消費電力値であるか否かを判断する(ステップS1708)。
そして、m番目のセルの消費電力値>=第1のセルの消費電力値であると判断された場合(ステップS1708:Yes)、m=m+1とし(ステップS1709)、ステップS1707へ戻る(Aで示された箇所)。一方、抽出されたセルはないと判断された場合(ステップS1704:No)、またはm<=抽出されたセルの総数でないと判断された場合(ステップS1707:No)、n=n+1とし(ステップS1710)、ステップS1702へ戻る。
一方、m番目のセルの消費電力値>=第1のセルの消費電力値でないと判断された場合(ステップS1708:No)、n番目のROW領域のm番目のセルを第2のセルに特定し(ステップS1711)、ステップS1508へ移行する。そして、一方、n<=特定された第2のROW領域の総数でないと判断された場合(ステップS1702:No)、第2のセルが特定されなかった情報を付して保存し(ステップS1712)、ステップS1508へ移行する。
つぎに、上述したセルの並び替え処理(ステップS1705)について説明する。図18は、セルの並び替え処理の処理手順を示すフローチャートである。消費電力値の低い順に並び替えし(ステップS1801)、消費電力値が同じセルはあるか否かを判断する。(ステップS1802)、消費電力値が同じセルはあると判断された場合(ステップS1802:Yes)、消費電力値が同じセルのみSlackが最も大きいセル順に並び替え(ステップS1803)。そして、消費電力値およびSlackが同じセルはあるか否かを判断する(ステップS1804)。
消費電力値およびSlackが同じセルはあると判断された場合(ステップS1804:Yes)、算出部508により、消費電力値およびSlackが同じセルのみ第1のセルとの距離を算出し(ステップS1805)、距離が短い順に並び替えし(ステップS1806)、ステップS1706へ移行する。一方、消費電力値が同じセルはないと判断された場合(ステップS1802:No)、または、消費電力値およびSlackが同じセルはないと判断された場合(ステップS1804:No)、ステップS1706へ移行する。
つぎに、上述した補助電源配線の接続処理(ステップS1113)について説明する。図19は、補助電源配線の接続処理の接続手順を示すフローチャートである。まず、セットアップタイムに違反しているか否かが判断される(ステップS1901)。セットアップタイムに違反していると判断された場合(ステップS1901:Yes)、Slackがマイナス値のセルを抽出し(ステップS1902)、抽出したセルを含むROW領域を特定する(ステップS1903)。
つぎに、特定されたROW領域に配置されている最下層VDD配線305と補助電源配線をビアで接続し(ステップS1904)、ビア接続されていない補助電源配線を検索する(ステップS1905)。一方、セットアップタイムに違反していないと判断された場合(ステップS1901:No)、ステップS1905へ移行する。
ステップS1905につづいて、ビア接続されていない補助電源配線があるか否かを判断する(ステップS1906)。まず、ビア接続されていない補助電源配線があると判断された場合(ステップS1906:Yes)、検索された補助電源配線を削除し(ステップS1907)、レイアウトデータを保存し(ステップS1908)、一連の処理を終了する。一方、ビア接続されていない補助電源配線がないと判断された場合(ステップS1906:No)、ステップS1908へ移行する。
以上説明したように、設計支援プログラム、設計支援装置、および設計支援方法によれば、セットアップタイミングの制約に違反しているデータパス内のセルを含む第1のROW領域の中から違反していないデータパス内の第1のセルを自動で特定する。そして、違反しているデータパス内のセルを含まない第2のROW領域内の第2のセルを自動で特定することができる。
これにより、利用者が、出力された置換対象のセルの消費電力値を参照するだけで、セルの置換可否を容易に決定することができる。したがって、セルを置換することにより、タイミングの制約に遵守させるためにデータパス内へ新たにセルを追加させることなく、電圧降下により発生するセットアップタイミングの制約違反を効率的に抑制することができる。
また、セットアップタイミングの制約に違反しているデータパス内の複数のセルのタイミングの余裕度の絶対値に基づいて第1のROW領域を特定することにより、タイミングの制約に違反しているセルの中で最もタイミングの制約に遵守することが困難なセルを含む第1のROW領域の消費電力値の低減化を図ることができる。したがって、電圧降下により発生するセットアップタイミング違反を抑制することができる。
また、セットアップタイミングの制約に違反しているデータパス内の複数のセルのタイミングの余裕度の絶対値が同一の場合、電圧降下が大きいセル順に第1のROW領域を特定する。これにより、電圧降下の大きいセルを含むROW領域内のセルを置換対象のセルに自動で特定することができる。したがって、電圧降下により発生するセットアップタイミング違反を抑制することができる。
また、第1のROW領域内のセルの中から、最も消費電力値が高いセルを第1のセルに決定することで、置換後に第1のROW領域内の消費電力値を最も低くすることが可能な置換対象のセルを自動で特定することができる。したがって、第1のROW領域の消費電力値を容易に低くでき、電圧降下により発生するセットアップタイミング違反を効率的に抑制することができる。
また、第1および2のセルを、クロックバッファセルおよびデータ保持素子を除くセルに決定することで、タイミングに影響の少ないセルを置換対象とすることができる。したがって、セルの置換により他のデータパスにタイミングエラーが発生するのを容易かつ効率的に抑制することができる。
また、第1のセルとの距離を算出し、算出された第1のセルとの距離が最も短い第2のROW領域内のセルを第2のセルに決定することにより、置換処理による第1のセルを含むデータパスと第2のセルを含むデータパスの配線経路の変更を最小限に抑制することができる。
また、第2のROW領域内のセルの中から、最も消費電力値が低いセルを第2のセルに決定することにより、第1のセルを、第1のROW領域の消費電力値を最も低くすることができる第2のROW領域内のセルと置換することができる。したがって、第1のROW領域の消費電力値を容易に低くすることができ、電圧降下により発生するセットアップタイミング違反を効率的に抑制することができる。
また、第2のセルの消費電力値が、第1のセルの消費電力値未満であるかを判断し、第1のセルの消費電力値未満であると判断された場合、第1のセルと第2のセルの配置位置を置換する。これにより、第1のROW領域の消費電力値の合計値が置換前よりも低くなるように第1のROW領域内のセルを再配置することができる。したがって、タイミングの制約に遵守させるためにデータパスにセルを追加させることなく電圧降下により発生するセットアップタイミング違反を抑制することができる。
また、第2のセルの消費電力値が、第1のセルの消費電力値未満でないと判断された場合、複数のROW領域の内、すでに第2のROW領域として特定されたROW領域を除き、かつNegative Slackのセルを含まないROW領域を新たに第2のROW領域に特定する。
これにより、第1のセルを、消費電力値が低くかつ電圧降下の影響が少ないROW領域内のセルと置換することができる。したがって、セルの置換により第2のROW領域にタイミングエラーを発生するのを抑制することができる。
なお、本実施の形態で説明した設計支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本設計支援プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本設計支援プログラムは、インターネット等のネットワークを介して配布してもよい。
また、本実施の形態で説明した設計支援装置500は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けIC(以下、単に「ASIC」と称す。)やFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。具体的には、たとえば、上述した設計支援装置500の機能(消費電力解析部501〜出力部512)をHDL記述によって機能定義し、そのHDL記述を論理合成してASICやPLDに与えることにより、設計支援装置500を製造することができる。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータを、
電圧降下の遅延解析と静的タイミング解析が実行済みの設計対象回路のレイアウトデータの中から前記電圧降下によりセットアップタイミングの制約に違反しているデータパス内のセルを抽出する抽出手段、
前記レイアウトデータ内の複数のROW領域の中から、前記抽出手段により抽出されたデータパス内のセルを含む第1のROW領域を特定する第1の特定手段、
前記第1の特定手段により特定された第1のROW領域内のセルの中から、前記データパス内のセルを除く前記第1のROW領域内のセルを第1のセルに決定する第1の決定手段、
前記複数のROW領域の中から前記データパス内のセルを含まない第2のROW領域を特定する第2の特定手段、
前記第2の特定手段により特定された第2のROW領域内のセルを第2のセルに決定する第2の決定手段、
前記第1の決定手段により決定された第1のセルの消費電力値と第2の決定手段により決定された第2のセルの消費電力値を出力する出力手段、
として機能させることを特徴とする設計支援プログラム。
(付記2)前記第1の特定手段は、
前記抽出手段により抽出されたデータパス内のセルのタイミングの余裕度の絶対値に基づいて第1のROW領域を特定することを特徴とする付記1に記載の設計支援プログラム。
(付記3)前記第1の特定手段は、
前記データパス内のセルの前記余裕度の絶対値が同一の場合、電圧降下が大きいセル順に第1のROW領域を特定することを特徴とする付記1または2に記載の設計支援プログラム。
(付記4)前記第1の決定手段は、
前記第1の特定手段により特定された第1のROW領域内のセルの中から、最も消費電力値が高いセルを第1のセルに決定することを特徴とする付記1〜3のいずれか1つに記載の設計支援プログラム。
(付記5)前記第1の決定手段は、
前記第1の特定手段により特定された第1のROW領域内のセルの中から、クロックバッファのセルおよびデータ保持素子のセルを除く前記第1のROW領域内のセルを第1のセルに決定し、
前記第2の決定手段は、
前記第2の特定手段により特定された第2のROW領域内のセルの中から、クロックバッファのセルおよびデータ保持素子のセルを除く前記第2のROW領域内のセルを第2のセルに決定することを特徴とする付記1〜4のいずれか1つに記載の設計支援プログラム。
(付記6)前記コンピュータを、
前記第2の特定手段により特定された第2のROW領域内のセルごとに、前記第1の決定手段により決定された第1のセルとの距離を算出する算出手段、として機能させ、
前記第2の決定手段は、
前記算出手段により前記第2のROW領域内のセルごとに算出された第1のセルとの距離が最も短い前記第2のROW領域内のセルを第2のセルに決定することを特徴とする付記1〜5のいずれか1つに記載の設計支援プログラム。
(付記7)前記第2の決定手段は、
前記第2の特定手段により特定された第2のROW領域内のセルの中から、最も消費電力値が低いセルを第2のセルに決定することを特徴とする付記1〜6のいずれか1つに記載の設計支援プログラム。
(付記8)前記コンピュータを、
前記第2の決定手段により決定された第2のセルの消費電力値が、前記第1の決定手段により決定された第1のセルの消費電力値未満であるかを判断する判断手段、
前記判断手段により前記第2のセルの消費電力値が、前記第1のセルの消費電力値未満であると判断された場合、前記第1のセルと前記第2のセルの配置位置を置換する置換手段、として機能させ、
前記出力手段は、
前記置換手段により置換された置換結果を出力することを特徴とする付記1〜7のいずれか1つに記載の設計支援プログラム。
(付記9)前記第2の特定手段は、
前記判断手段により第2のセルの消費電力値が、第1のセルの消費電力値未満でないと判断された場合、前記複数のROW領域の内、前記すでに第2のROW領域として特定されたROW領域を除き、かつ前記データパス内のセルを含まないROW領域を新たに第2のROW領域に特定することを特徴とする付記1〜8のいずれか1つに記載の設計支援プログラム。
(付記10)電圧降下の遅延解析と静的タイミング解析が実行済みの設計対象回路のレイアウトデータの中から前記電圧降下によりセットアップタイミングの制約に違反しているデータパス内のセルを抽出する抽出手段と、
前記レイアウトデータ内の複数のROW領域の中から、前記抽出手段により抽出されたデータパス内のセルを含む第1のROW領域を特定する第1の特定手段と、
前記第1の特定手段により特定された第1のROW領域内のセルの中から、前記データパス内のセルを除く前記第1のROW領域内のセルを第1のセルに決定する第1の決定手段と、
前記複数のROW領域の中から前記データパス内のセルを含まない第2のROW領域を特定する第2の特定手段と、
前記第2の特定手段により特定された第2のROW領域内のセルを第2のセルに決定する第2の決定手段と、
前記第1の決定手段により決定された第1のセルの消費電力値と第2の決定手段により決定された第2のセルの消費電力値を出力する出力手段と、
を備えることを特徴とする設計支援装置。
(付記11)コンピュータが、
電圧降下の遅延解析と静的タイミング解析が実行済みの設計対象回路のレイアウトデータの中から前記電圧降下によりセットアップタイミングの制約に違反しているデータパス内のセルを抽出する抽出工程、
前記レイアウトデータ内の複数のROW領域の中から、前記抽出工程により抽出されたデータパス内のセルを含む第1のROW領域を特定する第1の特定工程、
前記第1の特定工程により特定された第1のROW領域内のセルの中から、前記データパス内のセルを除く前記第1のROW領域内のセルを第1のセルに決定する第1の決定工程、
前記複数のROW領域の中から前記データパス内のセルを含まない第2のROW領域を特定する第2の特定工程、
前記第2の特定工程により特定された第2のROW領域内のセルを第2のセルに決定する第2の決定工程、
前記第1の決定工程により決定された第1のセルの消費電力値と第2の決定工程により決定された第2のセルの消費電力値を出力する出力工程、
を実行することを特徴とする設計支援方法。