本発明は、半導体集積回路の設計を支援する設計支援装置、設計支援方法および設計支援プログラムに関し、特に、半導体集積回路におけるパスの遅延劣化を検証する設計支援装置、設計支援方法および設計支援プログラムに関する。
半導体集積回路の設計動作の一例として、システムLSIの設計フローが非特許文献1に示されている。図9は、非特許文献1に記載されている設計フローを概略化したフローチャートである。図9に示すように、一般的には、半導体集積回路の設計は次のように行われる。まず、LSIの仕様に基づいて、RTL(Register Transfer Level )記述を作成する(ステップS901)。次に、作成したRTL記述と、タイミング制約やセルの内部情報等に基づいて論理合成を行い、ネットリストを生成する(ステップS902)。ネットリストとは、ゲートレベルの設計情報であって、回線接続に関する情報である。
次に、作成したネットリストに基づいて、wire load model等を用いた仮の配線負荷による遅延検証を行う(ステップS903)。以下、仮の配線負荷による遅延検証を仮負荷遅延検証という。仮負荷遅延検証の結果、問題が発見された場合には、遅延が改善されるようネットリストを修正する。ここでいう”問題”とは、遅延によって入出力信号の転送タイミングが制限時間内に収まらない(またはその可能性が高い)ことをいう。ネットリストの修正は、例えば、論理合成の制約を変更することによって行う(ステップS902に戻る)。また、例えば、順序回路素子間の段数が減るようRTL記述を修正することによって行う(ステップS901に戻る)。
また、問題が発見されなかった場合やネットリストを修正して問題がなくなった場合には、生成したネットリストに基づいて、セルの配置やセル間の配線を行うレイアウト設計を行う(ステップS904)。レイアウト後は、ネットリスト及びレイアウト情報から抽出される配線の抵抗及び容量に基づく配線遅延およびセル遅延を用いた実負荷による遅延検証を行う(ステップS905)。以下、レイアウト後の実負荷による遅延検証を実負荷遅延検証という。
実負荷遅延検証の結果、問題が発見された場合には、遅延が改善されるようレイアウトを修正するか(ステップS904に戻る)、レイアウトを修正しても遅延が改善されない場合などには、再度ネットリストを修正する(ステップS901またはステップS902に戻る)。
このように、従来の設計フローにおいて、レイアウト後の実負荷遅延検証で問題が発見された場合には、遅延の改善をレイアウト修正またはネットリスト修正によって行っている。しかし、近年、プロセスの微細化が進み、遅延時間に占める配線遅延の割合が増しているのに対して、レイアウト前の仮負荷遅延検証の段階で実負荷遅延検証で発見される問題を予見できるケースは多くない。従って、プロセスの微細化が進むにつれて、レイアウトを開始して以後に発生する実負荷遅延検証で発見された問題による工程の後戻り回数が増え、遅延時間を目標値に納める遅延収束のために多くの工数がかかっている。
ここで、レイアウト後の遅延収束の過程を見てみると、まず、レイアウトを開始した初期の段階では、極端に遅延が悪いエラーを修正することが行われる。例えば、論理回路の段数が多く配線遅延をゼロとしても遅延時間が制限時間に近いもの、または、段数は少ないが経路が非常に長距離でリピータを入れても遅延時間が制限時間を超えているもの等が挙げられる。このようなエラーは、改善すべき遅延量が大きいので、レジスタの追加・除去等の論理構成の変更や、フロアプラン単位の変更等の大きな変更を伴う。
こうして極端に遅延が悪いエラーを修正していくと、段数と距離、またはそのいずれかに少し問題があるエラーが顕在化してくる。この段階では、改善すべき遅延量も少なくなってきているので、レジスタ間の段数の削減や、フロアプランの微調整、配置の移動、リピータの最適化等の小さな変更で対処できることが多い。
ここで、レジスタ間の段数の削減は、ネットリストを修正することによって実現される。しかし、システムLSI、特にASIC(オーダーメイドLSI)と呼ばれる回路においては、RTL記述から論理合成を行うことによってネットリストを生成することが多い。そのために、ネットリストの修正にかかる工数は少ないが、段数をきめ細かくコントロールすることが難しく、また、実際に合成してみないと結果が分からない。
また、フロアプランの調整、配置の移動、リピータの最適化などのレイアウト修正は、人手によって行われるので、工数を要するが、時間をかければ改善の見込みが大きい。ただし、遅延収束の工程が進み、エラーの数も改善すべき遅延量も少なくなってくると、これまでの修正によって目標値を達成した経路を悪化させないように修正しなけらばならず、より工数がかかってしまう。
また、遅延収束の最終段階になって、ネットリスト修正が必要となった場合には、レイアウトのやり直しとなる。従って、修正したネットリストに対して、前回のレイアウト時に作成したフロアプランを用いて初期配置を行い、修正個所以外で前回と同じ遅延値に達するよう、配置の移動やリピータの最適化などを繰り返して、やっと修正箇所の改善有無を確認することになり、設計工程に与える影響は大きい。
また、既に説明したように、ネットリスト修正は、論理合成によって行うことが多く、ゲートレベルの論理の変更範囲を完全には把握できないため、段数を減らしたい経路以外の箇所で段数の増加が起こっているかもしれず、さらには、接続関係の構造が変化した場合には、前回作成したフロアプランを適用しても配置変動が生じ、前回と同じ遅延値を達成することが難しくなる、またはできなくなる可能性も含まれている。
特許文献1には、ディレイ不良による設計の後戻りや無駄な繰り返しを低減するために、論理合成や配置配線をしなくてもパスディレイが目標パスディレイ以内に収束可能かを診断する半導体集積回路の設計方法が記載されている。特許文献1に記載の設計方法は、まず、ブロック同士の接続情報を含むレジスタ転送レベル論理情報とフロアプラン情報とに基づいて、パスの論理段数とブロック間距離とを算出する。次に、パスの論理段数とゲート単価ディレイからブロック内ディレイを算出し、ブロック間距離と配線単価ディレイからブロック間ディレイを算出する。特許文献1には、ブロック内ディレイおよびブロック間ディレイを用いてパスディレイが目標パスディレイ以内に収束可能かを判断することができると記載されている。
また、特許文献2には、早い段階で論理設計の不具合のチェックを可能にするための回路設計装置が記載されている。特許文献2に記載の回路設計装置は、論理設計後に、設計対象の全てのセルに単位ディレイ値を割り付けた状態で、論理設計結果に対してパストレースを行いながら積算ディレイ値の最大値または最小値を算出する。そして、算出した積算ディレイ値の最大値または最小値に基づいて、設計対象回路における順序回路セル間もしくは入出力ピンと順序回路セル間のゲート段数を算出する。
特許文献2には、算出したゲート段数をチェックすることで、早い時点で論理設計の不具合をチェックすることができ、大規模化したLSI等の設計初期段階で設計回路におけるタイミング的に問題のあるパスを早期に発見することができると記載されている。
特開2003−281215号公報(段落0015、図1)
特開2003−223479号公報(段落0039−0042、図1)
鈴木五郎、「システムLSI設計入門」、コロナ社、2003年3月20日、p.22−28,32−34
しかしながら、特許文献1に記載の設計方法では、ブロック内ディレイとブロック間ディレイとに分けて算出した予測ディレイを用いて遅延検証を行っているため、ブロック内での配置変動が予測ディレイに反映されないという問題点がある。なお、特許文献1においてブロック内ディレイは、論理段数とゲート単価遅延とを用いて、ブロック間ディレイ値は、ブロック間距離と配線単価遅延とを用いて算出されている。例えば、ある制限によってブロック内の配置が変化しブロック内距離が長くなったことによる遅延悪化の可能性を検出することができない。特に、ブロックが大きければ大きいほど、配置変動も大きく予測ディレイの算出精度は悪くなる。
予測ディレイの算出精度によっては、背景技術で示したような遅延収束の最終段階まで残るような問題が検出されない。その結果、レイアウト後の実負荷遅延検証によって発見されてしまい、遅延収束に工数がかかってしまう可能性がある。
また、例えば、特許文献2に記載の回路設計装置を、修正前と修正後のネットリストに適用することによって、論理段数の増減から遅延値の増減が予測できる。しかし、特許文献2に記載の回路設計装置は、論理段数の変化のみによる遅延値の劣化判断であるので、例えば、論理合成によって修正したい箇所以外で論理段数が増えたことによる遅延劣化を検出することはできても、接続関係の構造が変化したことによる遅延劣化を検出することができない。このため、接続関係の構造変化によって、例えば、レイアウト時に配置変動が生じ、遅延が劣化する可能性を見つけられない。結果、このような遅延劣化は、初期配置後に配置の移動やリピータの挿入などレイアウトをある程度進めてから実負荷遅延検証を行って発見されることになる。
そこで、本発明は、ネットリスト修正による遅延劣化の有無、特に、一度レイアウト設計を行った後のネットリスト修正による遅延劣化の有無を早期に発見できる設計支援装置、設計支援方法および設計支援プログラムを提供することを目的とする。
本発明による設計支援装置は、半導体集積回路の設計を支援する設計支援装置であって、半導体集積回路を構成する素子の接続情報を示すネットリストおよび回路上の所定の素子を始点または終点とする経路であるパスの回路上の位置を示す配置情報を記憶する記憶手段(例えば、ネットリスト記憶部31および配置情報記憶部32)と、記憶手段に記憶されているネットリストからパスの始終点を抽出し、抽出した始点と終点との間の最大段数を該パスの段数として抽出するパス段数抽出手段(例えば、パス段数抽出手段21)と、記憶手段に記憶されているパスの始点および終点となった素子の回路上の位置を示す配置情報に基づいて、パスのパス長を算出するパス長算出手段(例えば、パス長抽出手段22)と、パス段数抽出手段が抽出した段数と、パス長算出手段が算出したパス長とに基づいて、パスの遅延時間の改善の難しさを示す遅延難易度を算出する遅延難易度算出手段(例えば、遅延難易度算出手段23)と、修正前のネットリストおよび該ネットリストでの初期配置の配置情報を用いて遅延難易度算出手段によって算出された修正前のパスの遅延難易度と、修正後のネットリストおよび該ネットリストでの初期配置の配置情報を用いて遅延難易度算出手段によって算出された修正後のパスの遅延難易度との差分を、遅延劣化を示す指標として出力する出力手段(例えば、レポート出力手段25)とを備え、遅延難易度算出手段は、半導体集積回路における平均的な段数で正規化された段数の大きさを表す値に、半導体集積回路における平均的なパス長に対するパス長の大きさを表す値を加算または減算することによって、遅延難易度を算出することを特徴とする。
また、本発明による設計支援方法は、半導体集積回路の設計を支援する設計支援方法であって、半導体集積回路を構成する素子の接続情報を示すネットリストであって修正前のネットリストおよび回路上の所定の素子を始点または終点とする経路であるパスの回路上の位置を示す配置情報であって該ネットリストでの初期配置の配置情報を用いて、ネットリストからパスの始終点を抽出し、抽出した始点と終点との間の最大段数を該パスの段数として抽出するとともに、パスの始点および終点となった素子の回路上の位置を示す配置情報に基づいてパスのパス長を算出し、抽出した段数と算出したパス長とに基づいて、半導体集積回路における平均的な段数で正規化された段数の大きさを表す値に半導体集積回路における平均的なパス長に対するパス長の大きさを表す値を加算または減算することによって、修正前のパスの遅延時間の改善の難しさを示す遅延難易度を算出し、修正後のネットリストおよび該ネットリストでの初期配置の配置情報を用いて、ネットリストからパスの始終点を抽出し、抽出した始点と終点との間の最大段数を該パスの段数として抽出するとともに、パスの始点および終点となった素子の回路上の位置を示す配置情報に基づいてパスのパス長を算出し、抽出した段数と算出したパス長とに基づいて、修正後のパスの遅延時間の改善の難しさを示す遅延難易度を算出し、算出された修正前のパスの遅延難易度と修正後のパスの遅延難易度との差分を、遅延劣化を示す指標として出力することを特徴とする。
また、本発明による設計支援プログラムは、半導体集積回路の設計を支援するための設計支援プログラムであって、半導体集積回路を構成する素子の接続情報を示すネットリストおよび回路上の所定の素子を始点または終点とする経路であるパスの回路上の位置を示す配置情報を記憶する記憶手段を有するコンピュータに、記憶手段に記憶されているネットリストからパスの始終点を抽出し、抽出した始点と終点との間の最大段数を該パスの段数として抽出するパス段数抽出処理、記憶手段に記憶されているパスの始点および終点となった素子の回路上の位置を示す配置情報に基づいて、パスのパス長を算出するパス長算出処理、パス段数抽出手段が抽出した段数と、パス長算出手段が算出したパス長とに基づいて、半導体集積回路における平均的な段数で正規化された段数の大きさを表す値に、半導体集積回路における平均的なパス長に対するパス長の大きさを表す値を加算または減算することによって、パスの遅延時間の改善の難しさを示す遅延難易度を算出する遅延難易度算出処理、および修正前のネットリストおよび該ネットリストでの初期配置の配置情報を用いて遅延難易度算出手段によって算出された修正前のパスの遅延難易度と、修正後のネットリストおよび該ネットリストでの初期配置の配置情報を用いて遅延難易度算出手段によって算出された修正後のパスの遅延難易度との差分を、遅延劣化を示す指標として出力する出力処理を実行させることを特徴とする。
本発明によれば、パスの段数およびパス長に基づいて修正前のパスの遅延難易度および修正後のパスの遅延難易度を算出し、算出した修正前の遅延難易度と修正後の遅延難易度の差分を遅延劣化を示す指標を出力するので、レイアウト結果のフィードバックによる検証よりも早期に、また、論理段数のみを用いて検証する場合よりも精度よく、ネットリスト修正による遅延劣化の可能性を検出することができる。従って、ネットリスト修正による遅延劣化の有無、特に、一度レイアウト設計を行った後のネットリスト修正による遅延遅延劣化の有無を早期に発見することができる。
まず、本発明の概要を説明する。本発明による設計支援装置は、修正前のネットリストおよび修正後のネットリストに対して、ネットリストから抽出されるパスの段数とパス長とを求め、求めた段数とパス長とに基づいて、遅延改善の難しさを示す遅延難易度を算出する。そして、修正前のネットリストにおけるパスの遅延難易度と修正後のネットリストにおけるパスの遅延難易度とを比較することによって実負荷遅延検証での遅延時間の増減を予測する。本発明において、パスとは、フリップフロップなどの順序回路素子または端子を始点とし論理回路網を通過して次の順序回路素子または端子に至る経路であって、回路設計において遅延検証の単位となる経路をいう。また、段数とは、パス上にある素子数をいう。
なお、以下、評価対象とする修正後のネットリストを評価対象ネットリストといい、評価対象ネットリストとの比較対象のネットリストであって、評価対象ネットリストよりも前の版数のネットリストを試行ネットリストという。
本発明によれば、例えば、試行ネットリストの初期配置時の配置情報を与えることによって、評価対象ネットリストの初期配置を行った段階で、段数変化による遅延劣化だけでなく、パス長変化による遅延劣化の可能性も検出することが可能である。
以下、本発明の実施の形態を図面を参照して説明する。図1は、本発明による設計支援装置の構成例を示すブロック図である。図1に示す設計支援装置は、キーボード等の入出力装置1と、プログラムに従って動作するCPU等のデータ処理装置2と、情報を記憶するメモリやハードディスク装置等の記憶装置3と、ディスプレイ装置等の出力装置4とを備える。
また、データ処理装置2は、パス段数抽出手段21と、パス長抽出手段22と、遅延難易度算出手段23と、遅延予測手段24と、レポート出力手段25とを備える。また、記憶装置3は、ネットリスト記憶部31と、配置記憶部32と、パス情報記憶部33とを備える。なお、図示していないが、データ処理装置2には、入力装置1を用いてデータを入力させる入力手段を備える。
入力手段は、入力装置1を用いて、評価対象ネットリストとその配置情報、および試行ネットリストとその配置情報と遅延実績値とを入力する。本実施の形態において、ネットリストとは、回路上のセルの接続状態を示す情報であって、少なくとも、回路を構成する全セルについて、セルの種類と、識別子と、接続先を示す情報とを含む情報である。ここで、セルの種類とは、セルがフリップフロップ(以下、FFという。)等の順序回路素子か、端子等の論理回路素子か、またはそのいずれでもないかを示す情報である。また、セルの識別子とは、セルを識別するために用いるID等のセル固有の情報である。また、接続先を示す情報は、例えば、当該セルと接続されるセルの識別子である。
また、配置情報は、ネットリストに含まれるセルの座標や反転等の回路上の位置を示す情報である。なお、ネットリストは、例えば、論理合成ツールや回路図エディタ等により作成され、配置情報は、例えば、ネットリストの自動配置ツールやレイアウトエディタ等により作成される。
ネットリスト記憶部31は、入力装置1より入力されたネットリストを記憶する。また、配置記憶部32は、入力装置1より入力された配置情報を記憶する。パス情報記憶部33は、評価対象ネットリストおよび試行ネットリストのパスに関する情報であるパス情報を記憶する。パス情報は、ネットリストから抽出されるパスについて、パスの始終点情報と、段数と、パス長と、遅延難易度とを含む情報である。なお、試行ネットリストのパス情報には、遅延実績値を含んでいてもよい。
ここで、パスの始終点情報には、パスの始点および終点となるセルを示す情報であるとともに、評価対象ネットリストと試行ネットリストとで同一のパスであることを認識可能とするパス固有の識別子情報としての意味合いも持つものとする。また、パスの遅延実績値とは、評価対象ネットリストにおけるパスの予測遅延値の基準とする遅延値であって、例えば、試行ネットリストのレイアウト後の実負荷遅延値であってもよい。ここで、実負荷遅延値とは、ネットリストのレイアウトが完了した後に、レイアウトから寄生容量抵抗を抽出して遅延計算を行うことによって算出される値をいう。
パス段数抽出手段21は、ネットリスト記憶部31に記憶されているネットリストからパスとなる始終点および始終点間の最大段数を抽出し、パス長としてパスの始終点情報とともにパス情報記憶部33に記憶する。パス長抽出手段22は、パス段数抽出手段21が抽出した全パスについて、配置記憶部32に記憶されているパスの始終点情報および始終点となるセルの配置情報に基づいて、始終点間の距離を算出し、パス長としてパス情報記憶部33に記憶する。遅延難易度算出手段23は、パス段数抽出手段21が抽出した全パスについて、最大段数およびパス長に基づいて遅延難易度を算出し、パス情報記憶部33に記憶する。
遅延予測手段24は、評価対象ネットリストと試行ネットリストとで同一の始終点を持つパスについて、試行ネットリストにおける遅延難易度と評価対象ネットリストにおける遅延難易度との差分から、評価対象ネットリストにおけるパスの遅延値の増減を予測する。なお、評価ネットリストにおける遅延実績値が入力されている場合には、予測した増減に基づいて、評価対象ネットリストにおける予測遅延値を算出してもよい。
レポート出力手段25は、遅延難易度算出手段23が算出した遅延難易度や、遅延予測手段24が予測した遅延値の増減、予測遅延値等、評価対象ネットリストにおけるパスの遅延劣化の有無を検証するための検証材料となる情報を出力装置4に出力する。
次に、図2のフローチャートを参照して本実施の形態における設計支援装置の動作について説明する。図2は、本実施の形態における設計支援装置の動作例を示すフローチャートである。本実施の形態の動作を始める前に、予め、試行ネットリストに対してレイアウト設計および実負荷遅延検証を行い、遅延改善のための配置変更やリピータ挿入などのレイアウト修正後の配線および寄生容量抵抗に基づく遅延実績値を求めておく。ここで、例えば、パスの始終点を結ぶ経路が複数ある場合には、パスの遅延実績値として、遅延時間が最も長い値を用いるものとする。
まず、入力手段は、劣化判断の基準とする試行ネットリストのネットリストおよび配置情報を入力する(ステップS1)。入力手段は、例えば、ファイルとして用意されているネットリストおよび配置情報を、利用者の入力装置1からの指示に従って、フィル入力装置から読み込み、試行ネットリストのネットリストおよび配置情報として、ネットリスト記憶部31と配置記憶部32とに格納する。ここで、入力手段が入力する試行ネットリストの配置情報は、遅延改善のための配置改善を行う前の初期配置の状態を示す情報を用いる。
なお、入力手段は、設計支援装置がネットリストや配置情報を生成する各種ツール(例えば、論理合成ツールや回路図エディタ、自動配置ツール、レイアウトエディタ等)と組み合わされ、一つの装置として構成されている場合には、設計支援装置が備える各種ツールが出力したネットリストおよび配置情報を直接受け取ってもよい。
次に、ステップS2からS4までの手順で、入力された試行ネットリストの各パスについて、段数とパス長とに基づく遅延難易度を算出する。まず、パス段数抽出手段21は、ネットリスト記憶部31から試行ネットリストのネットリストを読み込み、フリップフロップまたは端子を始点または終点とし、始点から終点までの経路を追跡しながら経路上のセル数を数えあげる。パス段数抽出手段は、ネットリストから接続先が示されているフリップフロップまたは端子を始点とし、接続先情報を追跡しながらフリップフロップまたは端子を終点とする経路をパスとして抽出するとともに、経路上のセル数を段数として抽出する(ステップS2)。
パス段数抽出手段21は、抽出したパスの始終点情報と最大段数とをパス情報記憶部33に格納する。なお、最大段数には、抽出したパスがとりうる経路においてセル数が最も多かった経路上のセル数を登録する。
次に、パス長抽出手段22は、パス情報記憶部33から各パスの始終点情報を読み取り、読み取った始終点情報に基づいて、パスの始点および終点となったセルの配置情報を配置情報記憶部32から読み込む。パス長抽出手段22は、読み込んだパスの始点および終点の配置情報に基づいて、2点間の距離を求める。パス長抽出手段22は、例えば、始終点の配置情報として各セルの座標(例えば、フリップフロップの原点座標や、端子図形の原点座標)を読み込み、2点間のマンハッタン長を求める(ステップS3)。
また、パス長抽出手段は、始終点間のマンハッタン長の代わりに、経路上の全セル間のマンハッタン長や直線距離からの最長経路長を求めてもよい。パス長抽出手段22は、求めたパス長を、パスの始終点情報に対応付けてパス情報記憶部33に格納する。
次に、遅延難易度算出手段23は、パス情報記憶部33から各パスの段数とパス長とを読み取り、予め定義しておいた遅延難易度算出式f(段数,パス長)に代入して遅延難易度を算出する(ステップS4)。遅延難易度算出手段23は、算出した遅延難易度を、パスの始終点情報と対応付けてパス情報記憶部33に格納する。以下に遅延難易度算出式f(段数,パス長)の一例を示す。なお、式(1)において、α=1または−1とする。
f(段数,パス長)=(段数/平均段数)+α×(パス長/平均パス長) 式(1)
ここで、αは、パス長の増加もしくは減少による遅延難易度の変化の方向を示すパラメータである。α、平均段数、平均パス長は全パスに共通の値を設定しても、個別に設定してもよく、また、予め設計支援装置の記憶装置に記憶しておいても、利用者に設定させてもよい。
また、入力手段は、劣化判断の対象とする評価対象ネットリストのネットリストおよび配置情報を入力する(ステップS5)。入力手段は、試行ネットリストのネットリストおよび配置情報と同様にして、評価対象ネットリストのネットリストおよび配置情報を入力する。ここで、入力手段が入力する評価対象ネットリストの配置情報は、試行ネットリストと同じフロアプランで初期配置を行った状態を示す情報を用いる。
次に、ステップS6からS8までの手順で、入力された評価対象ネットリストの各パスについて、段数とパス長とに基づく遅延難易度を算出する。ここで、ステップS6からS8までの手順は、ステップS2からS4までで示した試行ネットリストの遅延難易度を算出する手順と同様のため、説明省略する。なお、パス段数抽出手段21が抽出した評価対象ネットリストの各パスの始終点情報と段数、パス長抽出手段22が抽出した各パスのパス長および遅延難易度算出手段23が算出した各パスの遅延難易度は、それぞれ評価対象ネットリストのパス情報として、パスの始終点情報と対応づけてパス情報記憶部33に記憶される。
また、入力手段は、予測遅延値の基準とする試行ネットリストの遅延実績値を入力する(ステップS9)。入力手段は、例えば、ファイルとして用意されているネットリストの遅延検証結果である遅延実績値を、利用者の指示に従って、ファイル入力装置から読み込み、パスの始終点情報と対応づけてパス情報記憶部33に格納する。また、入力手段は、例えば、パス情報記憶部33に格納されているパスの始終点情報を表示し、表示したパスの遅延実績値を入力させる入力画面を用意して、利用者にキーボード等の入力装置1から入力させてもよい。また、設計支援装置が遅延検証を行い遅延実績値を出力するツール(例えば、検証機能付き自動レイアウトツール)と組み合わされ、1つの装置として構成されている場合には、設計支援装置が備えるツールが出力した遅延実績値を直接受け取ってもよい。
次に、遅延予測手段24は、試行ネットリストのパスの遅延難易度と、評価対象ネットリストのパスの遅延難易度とに基づいて、予測遅延増減値および予測遅延値を算出する。遅延予測手段24は、例えば、パス情報記憶部33に記憶されているパスの始終点情報に基づいて、試行ネットリストと評価対象ネットリストとで同一パスを検出し、該パスの試行ネットリストにおける遅延難易度と評価対象ネットリストにおける遅延難易度を読み込む。遅延予測手段24は、読み込んだ2つの遅延難易度から差分を求め、求めた差分に対し、予め定義しておいた係数をかけて予測遅延増減値を算出する。次に、遅延予測手段24は、算出した予測遅延増減値に試行ネットリストにおける遅延実績値を加算して予測遅延値を算出する。つまり、遅延予測手段24は、式(2)を用いて予測遅延増減値および予測遅延値を算出する。
予測遅延値=試行ネットリストにおける遅延実績値+予測遅延増減値
予測遅延増減値=(遅延難易度差分)×係数 式(2)
ここで、予測遅延増減値を求めるための係数は、遅延難易度の尺度を実レイアウト後の遅延時間の増減値に変換するために用いる係数でる。その係数は、例えば、評価対象ネットリストよりも前の版数等を用いて、予測遅延値を求めた後にレイアウト後の遅延実績値を求め、予測遅延値と遅延実績値とが概ね合うように調整すること等によって、予め設定されているものとする。また、係数は、全パスに共通の値を設定することも、個別に設定することも可能である。なお、予測遅延増減値を遅延時間の増減値と解釈せずに、遅延の劣化を示す指標として利用するだけの場合には、係数を用いる必要はない。このような場合には、予測遅延値の算出処理は省略される。
遅延予測手段24は、算出した予測遅延増減値および予測遅延値を、パスの始終点情報と対応づけてパス情報記憶部33に格納する。次に、レポート出力手段25は、パス情報記憶部33に記憶されているパス情報を読み取り、出力装置4に出力する(ステップS10)。
なお、試行ネットリストの入力動作および遅延難易度算出動作(ステップS1〜S4)、評価対象ネットリストの入力動作および遅延難易度算出動作(ステップS5〜S8)、試行ネットリストの遅延実績値の入力動作(ステップS9)は、独立して動作させることが可能であり、各動作を行う順序は任意である。例えば、試行ネットリストの遅延実績値の入力動作を行った後で、試行ネットリストの入力動作および遅延難易度算出動作を行ってもよいし、評価対象ネットリストの入力動作および遅延難易度算出動作を先に行うことも可能である。
以上のように、本実施の形態によれば、従来のレイアウト結果のフィードバックによる検証よりも早期に、また、従来の論理段数のみによる検証よりも精度よく、ネットリスト修正による遅延劣化の可能性を検出することができる。つまり、配置の変化をパス長の変化によって検出し、遅延劣化を予測するための指標を段数とパス長とに基づいて算出するので、段数の変化のみでは見つけられなかった遅延劣化の可能性を指摘することができる。また、修正したネットリストの遅延劣化の可能性を、初期配置直後に、レイアウト完了後の予測遅延値とともに提供することができるため、従来のレイアウトを進めてからの実遅延検証によるフィードバックよりも早い時点で見直しをすることができる。
図3は、本発明を適用した場合のシステムLSIの設計フローを示すフローチャートである。図3に示すように、本発明による設計支援方法を設計フローに組み込むことによって、早期にネットリストの遅延上の問題点を洗い出すことができる。つまり、ステップS103においてレイアウト設計のうち、初期の配置工程のみを独立して行い、レイアウト設計の残りの工程(ステップS105)に進む前に、本発明による遅延劣化の有無の検証を行うことによって、レイアウト設計(ステップS105)からのネットリスト修正を伴う後戻り(ステップS101,S102への戻り)の発生を少なくし、結果、遅延収束にかかる期間を短縮することができる。特に、初期の大きなエラーを改善した後に、ネットリストの修正が段数変更にとどまるようになった時点以降の設計期間を短縮できる。
また、仮負荷遅延検証を終えてすぐのような初期の版数のネットリストに対して、初期配置段階で遅延難易度を求めることによって、例えば、パス長が短くて遅延難易度が高いようなレイアウト後に段数の削減が必要になりそうなエラーの可能性を早期に発見できるため、遅延収束の最終段階においてレイアウト修正を行う事態を防ぐことができる。
なお、本実施の形態では、初期配置の状態の配置情報を入力する場合を例にとって説明したが、例えば、より精度を上げるために、大きなエラーを取り除くまでのレイアウト修正(例えば、リピータの最適化等)を行った後、小さなエラーを取り除くための人手によるレイアウト設計の前に実施することも可能である。
次に、具体的な実施例を用いて本発明を実施するための形態の動作を説明する。図4は、本実施例における半導体集積回路の試行ネットリストに対して初期配置を行った結果を示すレイアウト模式図である。A,Bは、それぞれフロアプランの配置領域を示している。また、A1,A2,A3,A4は、フロアプランでの配置領域Aに所属するフリップフロップを示し、B1,B2は、フロアプランでの配置領域Bに所属するフリップフロップを示している。なお、各フリップフロップは、パスの始終点となる要素である。また、図4では、経路上の論理回路は雲形で示され記載省略されている。また、2点間に経路が存在するフリップフロップを線分(間に雲形を含む)で接続している。図4では、A1−A4,A2−A4,A3−A4,A4−B1,B1−B2が経路を持つ。
また、図5は、本実施例における半導体集積回路の評価対象ネットリストに対して初期配置を行った結果を示すレイアウト模式図である。ここでは、評価対象ネットリストは、試行ネットリストから段数の減少を試みて修正されたネットリストとする。図5では、評価対象ネットリストに対して、試行ネットリストと同じフロアプランを用いて初期配置した結果、セルA3,B1の配置が少し変動したことを示している。
まず、入力手段は、入力装置1を用いて、図4に示すような試行ネットリストのネットリストおよび配置情報を入力し(ステップS1)、それぞれネットリスト記憶部31と配置記憶部32に格納する。また、入力手段は、試行ネットリストのレイアウト完了後の実負荷遅延検証を行った結果を入力し、実負荷遅延検証の結果に基づいて、遅延実績値をパスの始終点情報と対応づけてパス情報記憶部33に格納する(ステップS9)。また、入力手段は、図5に示すような評価対象ネットリストのネットリストおよび配置情報を入力し(ステップS5)、それぞれネットリスト記憶部31と配置記憶部32に格納する。
次に、パス段数抽出手段21は、ネットリスト記憶部31から試行ネットリストのネットリストを読み込み、セルの種別に基づいてフリップフロップと端子とを認識し、パスの始終点候補としてA1,A2,A3,A4,B1,B2を抽出する。また、パス段数抽出手段21は、抽出した各セルを始点として、段数を元に最長経路探索の方法で終点までの最大段数の経路を得る(ステップS2)。ここで、同時に終点も判明するので、パスの始終点名に対応づけて、抽出した最大段数をパス情報記憶部33の試行ネットリストのパス情報に格納する。
図6は、試行ネットリスト上のパスの始終点間の経路を示す説明図である。例えば、始終点上の経路が、図6に示すように、P1〜P3の3つの経路を持つ場合には、パス段数抽出手段21は、ネットリスト上の素子数に基づいて、P2の13段を段数として抽出する。なお、段数の抽出は、P1の素子数(10)、P2の素子数(13)、P1の素子数(11)に基づく。ここで、レイアウト時に長配線の遅延値を抑えるために挿入されたバッファ等(例えば、リピータ素子)は、数え上げ対象外とする。パス段数抽出手段21は、例えば、レイアウト時にネットリストに新たに追加されるセルの種類によって認識する。
次に、パス長抽出手段22は、パス情報記憶部33から1つのパス始終点名、例えばA1−A4を読み取り、また、配置記憶部32から試行ネットリストの始終点の配置情報を読み取り、図7に示すように、始点セルの原点の配置座標と、終点セルの原点の配置座標とから、マンハッタン長=dx+dyを求める(ステップS3)。パス長抽出手段22は、求めたマンハッタン長をパス長として、パスの始終点情報と対応づけて、パス情報記憶部33の試行ネットリストのパス情報に格納する。また、パス長抽出手段22は、パス情報記憶部33に登録されているパスに対して、同様の処理を行う。
図7は、パス情報記憶部33に記憶するパス情報のデータ構造の一例を示す説明図である。パス情報は、例えば、図7に示すように、パスの始終点情報に対応づけて、試行ネットリストのパス情報(段数と、パス長と、遅延実績値と、遅延難易度)と、評価対象ネットリストのパス情報(段数と、パス長と、遅延難易度)とを含んでいてもよい。なお、本実施例では、パス始終点情報として、パスの始終点をなすセルの識別子を結んで表現したパスの始終点名(例えば、A1−A4)を用いるものとする。
次に、遅延難易度算出手段23は、パス情報記憶部33から1つのパス始終点名、例えば、A1−A4について、段数=20段とパス長=2mmとを読み出し、予め定義されている遅延難易度算出式に代入して、遅延難易度を求める(ステップS4)。ここで、例えば、遅延難易度算出式において、α=1,平均段数=20,平均パス長=2mmと定義されていた場合、A1−A4の遅延難易度は、段数=20段,パス長=2.0mmを代入して、2となる。また、遅延難易度算出手段23は、パス情報記憶部33に登録されているパスに対して、同様の処理を行う。
なお、平均段数および平均パス長の値は、例えば、これまでの試行ネットリストにおける平均的な段数(リピータ挿入前の段数)、パス長を統計的に求めた値を設定し、さらに、レイアウトでの遅延対策が難しいと思われるパスについては、統計的に求めた段数よりも小さめに設定する。また、αの値は、例えば、パス長が試行ネットリストのレイアウト時よりも長くなると遅延難易度が高くなるパスに対しては+1を、逆に、パス長が長くなると遅延難易度が低くなるパスに対しては−1を設定する。
本実施例では、全パスに対して平均段数=20、平均パス長=2mmが設定され、また、パス長が長くなると遅延難易度が高くなると考えられるが、図7に示すように、A3−4は段数に対してパス長が相対的に短いのでパス長が長くなると遅延難易度が低くなると考えられ、A3−A4を除くパスに対してα=1、A3−A4に対してのみα=−1が設定されているものとする。図7には、このような設定の元、全パスに対して算出された遅延難易度が示されている。
次に、評価対象ネットリストのパスの遅延難易度を算出する。パス段数抽出手段21は、ネットリスト記憶部31から評価対象ネットリストのネットリストを読み込み、試行ネットリストと同様にして、全パスの始終点と最大段数を抽出する(ステップS6)。パス段数抽出手段21は、抽出した最大段数を、パスの始終点名に対応づけてパス情報記憶部33の評価対象ネットリストのパス情報に格納する。なお、ここでは、試行ネットリストと同一のパスの始終点が抽出されるものとする。また、抽出した結果、図7に示すように、A4−B1の段数の減少(10から5)、A2−A4の段数の増加(20から22)が起きていたものとする。
次に、パス長抽出手段22は、パス情報記憶部33から1つのパス始終点名、例えばA1−A4を読み取り、また、配置記憶部32から評価対象ネットリストの始終点の配置情報を読み取り、試行ネットリストの場合と同様にして、始終点間のマンハッタン長を求める(ステップS7)。パス長抽出手段22は、求めたマンハッタン長をパス長として、パスの始終点名に対応づけて、パス情報記憶部33の評価対象ネットリストのパス情報に格納する。また、パス長抽出手段22は、パス情報記憶部33に登録されているパスに対して、同様の処理を行う。
なお、ここでは、既に説明したように、ネットリストの修正によってセルA3,B1の配置が変動したことにより、図7に示すように、A3−A4、A4−B1、およびB1−B2のパス長が変化したものとする。
次に、遅延難易度算出手段23は、パス情報記憶部33から1つのパス始終点名、例えば、A1−A4について、段数=20段とパス長=2mmとを読み出し、予め定義されている遅延難易度算出式に代入して、遅延難易度を求める(ステップS4)。ここで、例えば、遅延難易度算出式において、α=1,平均段数=20,平均パス長=2mmと定義されていた場合、A1−A4の遅延難易度は、2となる。また、遅延難易度算出手段23は、パス情報記憶部33にに登録されているパスに対して、同様の処理を行う。
なお、遅延難易度算出手段23は、試行ネットリストのパス情報と比較し、段数またはパス長に変化のあった始終点に対してのみ、遅延難易度を求めてもよい。
これまでの処理によって、パス情報記憶部33には、図7に示すような情報が得られる。即ち、始終点A1−A4については、試行ネットリストにおける段数=20段,パス長=2.0mmに基づく遅延難易度=2.0、および評価対象ネットリストにおける段数=20段,パス長=2.0mmに基づく遅延難易度=2.0が得られる。また、始終点A2−A4については、試行ネットリストにおける段数=20段,パス長=2.0mmに基づく遅延難易度=2.0、および評価対象ネットリストにおける段数=22段,パス長=2.0mmに基づく遅延難易度=2.1が得られる。また、始終点A3−A4については、試行ネットリストにおける段数=30段,パス長=2.0mmに基づく遅延難易度=0.5、および評価対象ネットリストにおける段数=30段,パス長=1.8mmに基づく遅延難易度=2.6が得られる。また、始終点A4−B1については、試行ネットリストにおける段数=10段,パス長=5.0mmに基づく遅延難易度=3.0、および評価対象ネットリストにおける段数=5段,パス長=3.5mmに基づく遅延難易度=−0.5が得られる。
次に、遅延予測手段24は、パス情報記憶部33からパス情報を1つずつ読み込み、試行ネットリストにおける遅延難易度と評価対象ネットリストにおける遅延難易度との差分を求める。また、遅延予測手段24は、求めた差分に対し、予め定義された係数、本実施例においては0.5を掛けた値を予測遅延増減値としてパス情報記憶部33に格納する。ここで求めた予測遅延増減値とは、試行ネットリストにおける遅延実績値からの遅延時間の増減値を予測した値である。また、遅延予測手段24は、求めた予測遅延増減値に、試行ネットリストの遅延実績値を加算して、予測遅延値を求める。遅延予測手段24は、求めた予測遅延値もパス情報記憶部33に格納する。
次に、レポート出力手段25は、パス情報記憶部33に格納された各パスの予測結果を出力装置4に出力する(ステップS10)。レポート出力手段25は、予測結果だけでなく、各パスの試行ネットリストのパス情報と、評価対象ネットリストのパス情報とを含め、段数の変化やパス長の変化等がわかるように出力してもよい。また、各パスのα値や平均段数や、平均パス長、係数等、予測結果を求める際に用いたパラメータも合わせて出力してもよい。図8は、レポート出力手段25の出力例を示す説明図である。図8では、試作ネットリストがネットリスト版数R1、評価対象ネットリストがネットリスト版数R2である場合の出力例を示している。なお、遅延予測手段24は、遅延劣化の可能性のある始終点がわかるよう、予測遅延値が増加した場合には色分けして表示するようにしてもよい。
本実施例の出力結果によって、例えば、始終点A4−B1の段数を変更しようとネットリストを修正したことによって、始終点A4−B1の遅延が改善される可能性があることがわかるが、合わせて、始終点A2−A4の段数が増加したことによる遅延劣化の可能性、始終点A3−A4のパス長が短縮したことによる遅延劣化の可能性、および始終点B1−B2のパス長が伸びたことによる遅延劣化の可能性があることがわかる。
本発明によれば、半導体集積回路の設計を情報処理装置を用いて行う設計支援装置に適用できる。
本発明による設計支援装置の構成例を示すブロック図。
本実施の形態における設計支援装置の動作例を示すフローチャート。
本発明を適用した場合のシステムLSIの設計フローを示すフローチャート。
本実施例における試行ネットリストに対して初期配置を行った結果を示すレイアウト模式図。
本実施例における評価対象ネットリストに対して初期配置を行った結果を示すレイアウト模式図
試行ネットリスト上のパスの始終点間の経路を示す説明図。
パス情報記憶部33に記憶するパス情報のデータ構造の一例を示す説明図。
レポート出力手段25の出力例を示す説明図。
従来のシステムLSIの設計フローを示すフローチャート。
符号の説明
1 入力装置
2 データ処理装置
21 パス段数抽出手段
22 パス長抽出手段
23 遅延難易度算出手段
24 遅延予測手段
3 記憶装置
31 ネットリスト記憶部
32 配置記憶部
33 パス情報記憶部
4 出力装置