(57)【特許請求の範囲】
【請求項１】
ネットリストアブストラクションを作成するための、コンピュータによって実行される方法であって、前記方法は、
回路設計のためのネットリストを受取ることを含み、前記回路設計における回路素子は論理階層（ＬＨ）に組織化され、さらに、
前記ＬＨにおけるＬＨノードの組を受取ることと、
前記ＬＨノードの組における各ＬＨノードについて、前記ＬＨ内の前記ＬＨノードより下方にある前記ネットリストの一部分をスターネットリストで置換することによって前記ネットリストアブストラクションを作成することとを含み、前記スターネットリストは、サテライトオブジェクトの組に電気的に接続される中心オブジェクトを含み、各サテライトオブジェクトは前記ＬＨノードのポートに対応する、方法。
【請求項２】
前記ネットリストアブストラクション上で配置を行ない、配置されたネットリストアブストラクションを得ることをさらに含む、請求項１に記載の方法。
【請求項３】
前記配置されたネットリストアブストラクションをシードとして使用することによって、前記回路設計についてブロック形成を行うことをさらに含む、請求項２に記載の方法。
【請求項４】
前記配置されたネットリストアブストラクションをシードとして使用することによって、前記回路設計についてマクロ配置を行うことをさらに含む、請求項２に記載の方法。
【請求項５】
中心オブジェクトをサテライトオブジェクトに電気的に接続するネットは、サテライトオブジェクトを互いに電気的に接続するネットよりも大きなウェイトが割り当てられる、請求項１に記載の方法。
【請求項６】
各スターネットリストは、前記サテライトオブジェクトの組を互いに電気的に相互接続するネットを含む、請求項１に記載の方法。
【請求項７】
各スターネットリストにおける前記中心オブジェクトおよび前記サテライトオブジェクトの組の面積の和は、前記スターネットリストに対応する前記ＬＨノードの面積と等しい、請求項１に記載の方法。
【請求項８】
各スターネットリストにおいて、前記中心オブジェクトの面積は各サテライトオブジェクトの面積よりも大きい、請求項７に記載の方法。
【請求項９】
コンピュータによって実行されるとネットリストアブストラクションを作成するための方法をコンピュータに行なわせる命令を格納する非一時的なコンピュータ読取り可能な記憶媒体であって、前記方法は、
回路設計のためのネットリストを受取ることを含み、前記回路設計における回路素子は論理階層（ＬＨ）に組織化され、さらに、
前記ＬＨにおけるＬＨノードの組を受取ることと、
前記ＬＨノードの組における各ＬＨノードについて、前記ＬＨ内の前記ＬＨノードより下方にある前記ネットリストの一部分をスターネットリストで置換することによって前記ネットリストアブストラクションを作成することとを含み、前記スターネットリストは、サテライトオブジェクトの組に電気的に接続される中心オブジェクトを含み、各サテライトオブジェクトは前記ＬＨノードのポートに対応する、非一時的なコンピュータ読取り可能な記憶媒体。
【請求項１０】
前記方法は、前記ネットリストアブストラクション上で配置を行ない、配置されたネットリストアブストラクションを得ることをさらに含む、請求項９に記載の非一時的なコンピュータ読取可能な記憶媒体。
【請求項１１】
前記方法は、前記配置されたネットリストアブストラクションをシードとして使用することによって、前記回路設計についてブロック形成を行うことをさらに含む、請求項１０に記載の非一時的なコンピュータ読取可能な記憶媒体。
【請求項１２】
前記方法は、前記配置されたネットリストアブストラクションをシードとして使用することによって、前記回路設計についてマクロ配置を行うことをさらに含む、請求項１０に記載の非一時的なコンピュータ読取可能な記憶媒体。
【請求項１３】
中心オブジェクトをサテライトオブジェクトに電気的に接続するネットは、サテライトオブジェクトを互いに電気的に接続するネットよりも大きなウェイトが割り当てられる、請求項９に記載の非一時的なコンピュータ読取可能な記憶媒体。
【請求項１４】
各スターネットリストは、前記サテライトオブジェクトの組を互いに電気的に相互接続するネットを含む、請求項９に記載の非一時的なコンピュータ読取可能な記憶媒体。
【請求項１５】
各スターネットリストにおける前記中心オブジェクトおよび前記サテライトオブジェクトの組の面積の和は、前記スターネットリストに対応する前記ＬＨノードの面積と等しい、請求項９に記載の非一時的なコンピュータ読取可能な記憶媒体。
【請求項１６】
各スターネットリストにおいて、前記中心オブジェクトの面積は各サテライトオブジェクトの面積よりも大きい、請求項１５に記載の非一時的なコンピュータ読取可能な記憶媒体。
【請求項１７】
システムであって、
プロセッサと、
プロセッサによって実行されると、ネットリストアブストラクションを作成するための方法を前記システムに行なわせる命令を格納する記憶媒体とを備え、前記方法は、
回路設計のためのネットリストを受取ることを含み、前記回路設計における回路素子は論理階層（ＬＨ）に組織化され、さらに、
前記ＬＨにおけるＬＨノードの組を受取ることと、
前記ＬＨノードの組における各ＬＨノードについて、前記ＬＨ内の前記ＬＨノードより下方にある前記ネットリストの一部分をスターネットリストで置換することによって前記ネットリストアブストラクションを作成することとを含み、前記スターネットリストは、サテライトオブジェクトの組に電気的に接続される中心オブジェクトを含み、各サテライトオブジェクトは前記ＬＨノードのポートに対応する、システム。
【請求項１８】
前記ネットリストアブストラクション上で配置を行ない、配置されたネットリストアブストラクションを得ることと、
前記配置されたネットリストアブストラクションをシードとして使用することによって、前記回路設計についてマクロ配置およびブロック形成を行うこととをさらに含む、請求項１７に記載のシステム。
【請求項１９】
中心オブジェクトをサテライトオブジェクトに電気的に接続するネットは、サテライトオブジェクトを互いに電気的に接続するネットよりも大きなウェイトが割り当てられる、請求項１７に記載のシステム。
【請求項２０】
各スターネットリストにおける前記中心オブジェクトおよび前記サテライトオブジェクトの組の面積の和は、前記スターネットリストに対応する前記ＬＨノードの面積と等しい、請求項１７に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
背景
技術分野
本開示は、電子設計自動化（ＥＤＡ）に関する。より具体的には、本開示は、ネットリストアブストラクションを作成し、使用することに関する。
【背景技術】
【０００２】
関連技術
プロセス技術の進歩および消費者電子機器に対する実質的に制限のない需要は、集積回路（ＩＣ）設計のサイズおよび複雑性の急速な増大に拍車を掛けている。ＩＣ設計についてマーケティングする時間が短縮されることから、ＥＤＡツールの性能は非常に重要である。フロアプランニングは、ＩＣレイアウトにおける様々なオブジェクト（ブロック、モジュール、回路素子等）の位置を決定することを含むＥＤＡ設計フローにおける重要な段階である。フロアプランの品質は、最終的なＩＣレイアウトの品質全体に大きく影響を与え得る。
【０００３】
あいにく、ＩＣ設計のサイズおよび複雑性の急速な増大により、従来のフロアプランニングツールでは、フロアプランを生成するのに非常に長い時間がかかり、かつ／または低品質なフロアプランが生じ得る。
【発明の概要】
【課題を解決するための手段】
【０００４】
概要
本明細書に記載されるいくつかの実施形態は、ネットリストアブストラクションを作成するための方法およびシステムを提供する。さらに、ネットリストアブストラクションを用いて、性能と、フロアプランニング動作の結果の品質とを実質的に向上させることができる。
【０００５】
具体的には、一実施形態は、回路設計のためのネットリストを受取ることができ、回路設計における回路素子は論理階層に組織化される。次に、実施形態は、論理階層において論理階層ノードの組を受取ることができる。実施形態は次いで、論理階層ノードの組における各論理階層ノードについて以下の動作を行なうことにより、ネットリストアブストラクションを作成することができる。論理階層ノードより下方にあるネットリストの一部分をスターネットリストで置換する。スターネットリストは、サテライトオブジェクトの組に電気的に接続される中心オブジェクトを含み、各サテライトオブジェクトは論理階層ノードのポートに対応する。
【０００６】
いくつかの実施形態では、中心オブジェクトをサテライトオブジェクトに電気的に接続するネットは、サテライトオブジェクトを互いに電気的に接続するネットよりも大きなウェイトが割り当てられる。いくつかの実施形態では、各スターネットリストは、サテライトオブジェクトの組を互いに電気的に相互接続するネットを含む。いくつかの実施形態では、各スターネットリストにおける中心オブジェクトおよびサテライトオブジェクトの組の面積の和は、スターネットリストに対応する論理階層ノードの面積と実質的に等しい。いくつかの実施形態では、各スターネットリストにおいて、中心オブジェクトの面積は、スターネットリストにおける各サテライトオブジェクトの面積よりも大きい。
【０００７】
ネットリストアブストラクションが作成されると、ネットリストアブストラクション上で配置を行い、配置されたネットリストアブストラクションを得ることができる。ネットリストアブストラクションのサイズを当初のネットリスト（つまり非抽象的なネットリスト）よりも実質的に小さくすることができるため、配置動作によって、配置されたネットリストアブストラクションをネットリストアブストラクションから迅速に作成することができる。次いで、配置されたネットリストアブストラクションを１つ以上のフロアプランニング動作のためのシードとして使用することができる。たとえば、実施形態は、配置されたネットリストアブストラクションをシードとして使用して、回路設計上でブロック形成および／またはマクロ配置を行なうことができる。このようにネットリストアブストラクションを作成し使用すると、フロアプランニング動作の結果の全体的な性能および品質を実質的に向上させることができる。
【図面の簡単な説明】
【０００８】
【図１】本明細書に記載されるいくつかの実施形態に係るフロアプランニング動作の性能を向上させるためにどのようにネットリストアブストラクションを使用することができるかを例示するフローチャートである。
【図２】本明細書に記載されるいくつかの実施形態に係るネットリストアブストラクションを作成するためのプロセスを例示するフローチャートである。
【図３】本明細書に記載されるいくつかの実施形態に係る回路設計の論理階層を例示する図である。
【図４Ａ】本明細書に記載されるいくつかの実施形態に係るネットリストの図である。
【図４Ｂ】本明細書に記載されるいくつかの実施形態に従って、ネットリストからどのようにネットリストアブストラクションを作成することができるかを例示する図である。
【図４Ｃ】本明細書に記載されるいくつかの実施形態に従って、スターネットリストにおけるサテライトオブジェクトの組を互いに電気的に相互接続するネットを例示する図である。
【図５Ａ】本明細書に記載されるいくつかの実施形態に従って、ネットリストアブストラクションをどのように配置およびブロック形成に使用することができるかを例示する図である。
【図５Ｂ】本明細書に記載されるいくつかの実施形態に従って、ネットリストアブストラクションをどのように配置およびブロック形成に使用することができるかを例示する図である。
【図５Ｃ】本明細書に記載されるいくつかの実施形態に従って、ネットリストアブストラクションをどのように配置およびブロック形成に使用することができるかを例示する図である。
【図６】本開示において記載されるいくつかの実施形態に係るコンピュータシステムを例示する図である。
【発明を実施するための形態】
【０００９】
詳細な説明
以下の説明は、当業者が本発明を為しかつ使用することが可能となるように提示され、また、特定の用途およびその要件に関連して設けられる。開示される実施形態のさまざまな変更は、当業者に容易に明らかであり、本明細書に規定される一般的な原則は、本発明の要旨および範囲から逸脱することなく他の実施形態および用途に適用されてもよい。したがって、本明細書に開示される１つ以上の発明は、示される実施形態に限定されず、本明細書に開示される原則および特徴と一致した最も広い範囲が付与されるべきである。
【００１０】
ＥＤＡフローの概略
回路設計を生成するために、ＥＤＡフローが使用可能である。一旦回路設計が完成されると、製作、パッケージング、および組立が行なわれて、集積回路チップを製造することができる。ＥＤＡフローは複数のステップを含むことができ、各ステップは、１つ以上のＥＤＡソフトウェアツールの使用を含むことができる。一部のＥＤＡステップおよびソフトウェアツールを以下に説明する。これらのＥＤＡステップおよびソフトウェアツールの例は、例示目的に過ぎず、実施形態を開示される形態に限定することを意図するものではない。
【００１１】
一部のＥＤＡソフトウェアツールにより、回路設計者は、実施されたい機能性を表わすことができる。さらに、これらのツールにより、回路設計者は、もしもの場合のプラニングを行なって、機能性を改良する、コストを確認するなどを行なうことができる。論理設計および機能検証中には、たとえば、System VerilogなどのＨＤＬ（ハードウェア記述言語）コードが書込まれ、設計の機能精度を確認することができ、たとえば、設計が正確な出力を生成することが確実であることを確認することができる。
【００１２】
試験用の合成および設計中には、ＨＤＬコードは、１つ以上のＥＤＡソフトウェアツールを用いてネットリストに翻訳されることができる。ネットリストは、目標の技術のために最適化されることができ、試験は、完成されたチップを確認するために設計され、実施されることができる。ネットリスト検証中には、ネットリストをタイミング制約の順守およびＨＤＬコードとの対応について確認することができる。
【００１３】
設計プラニング中には、チップ用のフロアプラン全体を構築し、これをタイミングおよびトップレベル配線について分析することができる。物理的実施中には、回路要素は、レイアウトに位置付けられることができ、電気的に結合されることができる。
【００１４】
分析および抽出中には、回路の機能性をトランジスタレベルで検証することができ、寄生要素を抽出することができる。物理的検証中には、設計の製造、電気的事項、リソグラフィ事項、および回路系についての正確さが確保されることを確認することができる。
【００１５】
解像度向上中には、レイアウト上で幾何学的操作を行ない、設計の製造しやすさを改善することができる。マスクデータの作成中には、設計は、製造中に使用されるマスクを生成するように完成されることができる。
【００１６】
ネットリストアブストラクション
回路アブストラクションは、回路設計の詳細のすべてを含むとは限らない回路設計の表現である。本明細書に記載されるいくつかの実施形態は、フロアプランニング動作の性能を実質的に向上させる回路アブストラクションを作成する。
【００１７】
図１は、本明細書に記載されるいくつかの実施形態に係るフロアプランニング動作の性能を向上させるためにどのようにネットリストアブストラクションを使用することができるかを例示するフローチャートを示す。ネットリスト１０２は、回路設計の異なる回路素子がどのように互いに電気的に接続されるかを記述する。ネットリストは、１組のインスタンスおよび１組のネットを有するものとして考察することができる。各インスタンスは１本以上のピンを含むことができ、各ネットは、ネットリスト中の２本以上のピンを電気的に接続することができる。インスタンスは、いずれかのアブストラクションレベルで回路エンティティを表すことができる。たとえば、インスタンスは、電気部品（たとえばトランジスタ、レジスタ等）、ゲート（たとえば「ＡＮＤ」ゲート、「ＯＲ」ゲート等）、モジュール（たとえば加算器、メモリブロック等）、またはいずれかの他のアブストラクションレベルにおけるいずれかの他の回路エンティティであり得る。
【００１８】
ネットリストアブストラクション１０６は、ネットリスト１０２に基づいて作成することができる（動作１０４）。具体的には、ネットリストアブストラクション１０６はネットリスト１０２に関連付けられた論理階層に基づいて作成することができる。次に、ネットリストアブストラクション１０６上で配置を行ない（動作１０８）、配置されたネットリストアブストラクション１１０を得ることができる。配置動作中、ネットリストアブストラクション１０６内の配置可能なオブジェクトは、回路設計フロアプランにおける位置が割り当てられる。なお、ネットリストアブストラクション１０６はネットリスト１０２よりもサイズを著しく小さくすることができる。したがって、フロアプランニング動作（たとえば配置）は、ネットリスト１０２上でよりもネットリストアブストラクション１０６上での方が著しく速く行なうことができる。
【００１９】
次いで、配置されたネットリストアブストラクション１１０をシードとして使用することによって、ブロック形成および／またはマクロ配置を回路設計（たとえばネットリスト１０２）上で行なうことができる（動作１１２）。たとえば、配置されたネットリストアブストラクション１１０に基づいて回路素子をネットリスト１０２に配置することによって、ブロック形成および／またはマクロ配置のための初期解を迅速に生成することができる。次に、初期解をさらに最適化して、配置され形成された回路設計１１４を生成することができる。ネットリストアブストラクション１０６をこのように作成し使用することで、ネットリスト１０２上で行なわれるフロアプランニング動作の結果の全体的な性能および品質を実質的に向上させることができる。
【００２０】
図２は、本明細書に記載されるいくつかの実施形態に係るネットリストアブストラクションを作成するためのプロセスを例示するフローチャートを表す。当該プロセスは、回路設計のためのネットリストを受取ることで開始することができ、回路設計における回路素子が論理階層に組織化される（動作２０２）。次に、当該プロセスは、論理階層における論理階層ノードの組を受取ることができる（動作２０４）。
【００２１】
たとえばユーザは、たとえばグラフィカルユーザインターフェースを用いて回路ブロックを選択すること、論理階層ノード識別子のリストをファイルで提供することなどによって、論理階層ノードの組をネットリストアブストラクションツールに提供してもよい。代替的に、ネットリストアブストラクションツールは、たとえば面積しきい値（たとえばツールは、その面積が面積しきい値よりも大きい最も低い論理階層ノードを自動的に選択してもよい）、セル数しきい値（たとえばツールは、そのセル数がセル数しきい値よりも大きい最も低い論理階層ノードを自動的に選択してもよい）、マクロ数しきい値（たとえばツールは、そのマクロ数がマクロ数しきい値よりも大きい最も低い論理階層ノードを自動的に選択してもよい）等に基づいて、自動的に（つまりユーザ入力なしに）論理階層ノードの組を選択してもよい。
【００２２】
プロセスは次いで、論理階層ノードの組における各論理階層ノードについて、論理階層ノードより低いネットリストの部分をスターネットリストで置換することによって、ネットリストアブストラクションを作成することができる。スターネットリストは、サテライトオブジェクトの組に電気的に接続される中心オブジェクトを含み、各サテライトオブジェクトは、論理階層ノードのポートに対応する（動作２０６）。
【００２３】
図３は、本明細書に記載されるいくつかの実施形態に係る回路設計の論理階層を例示する。論理階層３００は、論理階層ノード３０２〜３１４を含む。論理階層ノード３０２は、回路設計全体、または回路設計内の物理ブロック（たとえばメモリブロック、プロセッサブロック等）のいずれかに対応することができる最上位レベルノードであり得る。論理階層ノード３０４〜３１２は論理階層３００における中間ノードに対応することができ、論理階層ノード３１４は論理階層３００におけるリーフノードに対応することができる。論理階層３００における中間レベルノードは、回路設計内の中間レベルエンティティ（たとえばマルチプレクサ、加算器、レジスタバンク等）に対応することができる。具体的には、中間レベルノードは、回路設計を記述するＨＤＬ（たとえばSystemVerilog）ファイルにおけるモジュールに対応することができる。リーフノード、たとえば論理階層ノード３１４は、回路設計の基本コンポーネント（たとえばインバータ）に対応することができる。
【００２４】
論理階層ノード３０４〜３１２下の陰影を付けた領域は、それらの論理階層ノードの各々内にある回路設計ネットリストの部分に対応する。たとえば、陰影を付けた領域３１６は、論理階層ノード３０４より下方にある回路設計ネットリストの部分に対応する。陰影を付けた領域３１６内のノードは、論理階層ノード３０４についての回路系の一部であるエンティティに対応する。たとえば、論理階層ノード３０４が加算器モジュールに対応する場合、陰影を付けた領域３１６は加算器モジュールのためのネットリストに対応することができ、陰影を付けた領域３１６内にある論理階層ノード３１４は、加算器モジュールネットリスト中の回路素子（たとえばインバータ）に対応することができる。論理階層３００における陰影を付けていない領域は、論理階層ノード３０４〜３１２内にないネットリストの部分に対応する。たとえば、陰影を付けていない領域３１８は、階層ノード３０４における第１の回路素子を階層ノード３０６における第２の回路素子に電気的に相互接続する回路系を含むことができる。
【００２５】
図４Ａは、本明細書に記載されるいくつかの実施形態に係るネットリストの図を例示する。図４Ａに示される楕円形は、論理階層ノード４０２〜４０６に対応するネットリストの部分を表す。図４Ａ中の各楕円形は、楕円形の境界上に１つ以上の黒い正方形を含む。これらの正方形の各々は、論理階層ノードのポートを表す。ポートは、論理階層ノード内にない回路素子から信号を受取るかまたは、論理階層ノード内にない回路素子に信号を供給するために使用することができる。ポートで受取ることができるかまたはポートによって供給されることができる信号の例は、クロック、データ、およびアドレス信号を含むが、これらに限定されない。なお、論理階層ノードのポートは、論理階層における論理階層ノードより下方にある回路素子の入力ピンまたは出力ピンに対応することができる。
【００２６】
論理階層ノードのポートは、他の論理階層ノードのポートに、および／または回路設計の他の回路素子に、電気的に接続されることができる。たとえば、論理階層ノード４０２のポート４０８は、論理階層ノード４０４のポート４１８に電気的に接続されることができる。同様に、ネット４１０を用いて、論理階層ノード４０２、４０４および４０６のポート４１２、４１４および４１６をそれぞれ電気的に接続することができる。ポート４２０は、図４Ａに示される論理階層ノードにない１つ以上の回路素子に電気的に接続されてもよい。
【００２７】
図４Ｂは、本明細書に記載されるいくつかの実施形態に係るネットリストからどのようにネットリストアブストラクションを作成することができるかを例示する。回路設計ネットリストに１組の論理階層ノードがあるとすると、階層ノードの組における各論理階層ノードについて以下の動作を行なうことによって、ネットリストアブストラクションを作成することができる。（１）論理階層ノードについてスターネットリストを作成する。各スターネットリストは、１つ以上のサテライトオブジェクトに電気的に接続される中心オブジェクトを含み、各サテライトオブジェクトは、論理階層ノードにおけるポートに対応する。（２）論理階層ノードより下方のネットリストの部分をスターネットリストで置換する。なお、スターネットリストは、スターネットリストが置換するネットリストの部分よりもサイズを実質的に小さくすることができる。
【００２８】
図４Ｂに示されるネットリストアブストラクションは、図４Ａに示されるネットリストに対応する。スターネットリスト４７２、４７４および４７６は、論理階層ノード４０２、４０４および４０６にそれぞれ対応する。各スターネットリストは、１つ以上のサテライトオブジェクト（図４Ｂでは陰影を付けていない正方形として示される）に電気的に接続される中心オブジェクト（図４Ｂでは陰影を付けた正方形として示される）を含む。たとえば、中心オブジェクト４５２は、サテライトオブジェクト４５８、４６６および５つの他のサテライトオブジェクトに電気的に接続される。当初のネットリストは、論理階層ノード４０２は数千個または数百万個の回路素子を含んでいた場合がある。なお、図４Ｂに示されるネットリストアブストラクションでは、論理階層ノード４０２における（数千個または数百万であり得る）回路素子が（８個のオブジェクトのみを含む）スターネットリスト４７２と置換されている。
【００２９】
当初のネットリストにおいて論理階層ノードのポートと他のポートまたは回路素子との間に存在していた電気接続をネットリストアブストラクションにおいて維持することができる。たとえば、図４Ａに示される当初のネットリストにおいて、ポート４０８とポート４１８との間に電気接続が存在していた。この電気接続は、（ポート４０８に対応する）サテライトオブジェクト４５８が（ポート４１８に対応する）サテライトオブジェクト４６８に電気的に接続されるように、図４Ｂに示されるネットリストアブストラクションにおいて維持される。
【００３０】
いくつかの実施形態では、配置中に配置エンジンが中心オブジェクトとサテライトオブジェクトとを互いに近接して保持するように、中心オブジェクトとサテライトオブジェクトとの間の電気接続に十分高いウェイトを割り当てることができる。たとえば、サテライトオブジェクト４５８と４６８との間の電気接続のウェイトよりも大きいウェイトを、中心オブジェクト４５２とサテライトオブジェクト４５８との間の電気接続に割当てることができる（なお、サテライトオブジェクト４５８と４６８との間の電気接続のウェイトは、当初のネットリストにおいて存在していたウェイトと同じであり得る）。
【００３１】
配置エンジンは、典型的に費用関数を用いて、回路素子の配置を最適化する。通常、費用関数におけるコンポーネントの１つは、電気接続長さの加重和（たとえばネットの配線長の加重和）である。したがって、中心オブジェクトとサテライトオブジェクトとの間の電気接続により大きなウェイトが割り当てられた場合、配置エンジンは、それらのオブジェクトを互いに接近して保持しようとすることになる。なぜなら、そうすることが費用関数を最小化するのに役立つことになるからである。
【００３２】
本明細書に記載されるいくつかの実施形態では、スターネットリストにおけるサテライトオブジェクトを互いに電気的に相互接続するネットリストアブストラクションにネットを追加することができる。そのようなネットを追加することで、配置エンジンが配置中に中心オブジェクトとサテライトオブジェクトとを互いに近くに保持することを確実にすることができる。図４Ｃは、本明細書に記載されるいくつかの実施形態に従って、スターネットリストにおけるサテライトオブジェクトの組を互いに電気的に相互接続するネットを例示する。図４Ｃに示されるように、ネット４７０をスターネットリスト４７２に追加して、配置エンジンが配置中に中心オブジェクト４５２とサテライトオブジェクト（たとえばサテライトオブジェクト４５８および４６６）とを互いに近くに保持することを確実にすることができる。なお、ネット４７０（図４Ｃでは点線で示される）はサテライトオブジェクトのすべてを互いに電気的に相互接続する。
【００３３】
本明細書に記載されるいくつかの実施形態では、各スターネットリストにおける中心オブジェクトおよびサテライトオブジェクトの面積の和は、スターネットリストに対応する論理階層ノードの面積と実質的に等しい。配置エンジンがスターネットリストを配置する（つまり、スターネットリストにおいて中心オブジェクトおよびサテライトオブジェクトを配置する）と、スターネットリストによって包含される総面積は、スターネットリストが表す回路系の総面積に対応するはずである。そうでなければ、配置エンジンがネットリストアブストラクション上で配置を行なった時に、配置エンジンが有意味の出力を生成しない場合がある。
【００３４】
本明細書に記載されるいくつかの実施形態では、中心オブジェクトの面積は、各スターネットリストにおける各サテライトオブジェクトの面積よりも大きい。このように中心オブジェクトおよびサテライトオブジェクトに面積値を割当てることで、グラフィカルユーザインターフェース上でスターネットリストを視覚化することをより容易にすることができる。
【００３５】
本明細書に記載されるいくつかの実施形態では、中心オブジェクトおよびサテライトオブジェクトは、フロアプランニングツールにとって「通常の」配置可能なオブジェクトとして出現する。換言すると、フロアプランニングツールは、ネットリストアブストラクションを単にいずれかの他の「通常の」ネットリストのように扱う場合があり、ネットリストアブストラクションを取扱うためにフロアプランニングツールに対する変更が必要とされない場合がある。
【００３６】
本明細書に記載されるネットリストアブストラクション装置およびプロセスは、フロアプランの最上位レベルにおける、またはフロアプランにおける物理ブロック内での配置およびブロック形成中に使用することができる。いくつかの実施形態では、本明細書に記載されるネットリストアブストラクション装置およびプロセスは再帰的に使用することができる。たとえば、ネットリストアブストラクション装置およびプロセスは、フロアプランの最上位レベルにおける配置およびブロック形成中に使用することができる。次に、結果として生じる最上位レベルフロアプランの各ブロック内において、本明細書に記載されるネットリストアブストラクション装置およびプロセスを使用することによって配置およびブロック形成を行なうことができる。このプロセスは次いで、各ブロック内の各サブブロックなどについて繰り返すことができる。いくつかの実施形態では、本明細書に記載されるネットリストアブストラクション装置およびプロセスを用いて、複数レベルにおいて同時にネットリストアブストラクションを作成することができる、つまり、最上位レベル、ブロックレベル、サブブロックレベル等において同時にネットリストアブストラクションを作成することができる。作成されると、複数レベルのネットリストアブストラクションを用いて、複数レベルにおける配置およびブロック形成を同時に行なうことができる。
【００３７】
図５Ａ〜図５Ｃは、本明細書に記載されるいくつかの実施形態に係る配置およびブロック形成のためにネットリストアブストラクションをどのように使用することができるかを例示する。図５Ａは、論理階層ノード５０２〜５０６、マクロセル５０８〜５１０および複数のＩ／Ｏセル（たとえばＩ／Ｏセル５８０）を含む回路設計のネットリスト５００を例示する。図５Ｂは、ネットリスト５００に対応する、配置されたネットリストアブストラクション５３０を例示する。配置されたネットリストアブストラクション５３０は、ネットリスト５００に基づいてネットリストアブストラクションが作成され、ネットリストアブストラクション上で配置が行なわれた後で得られる。配置されたネットリストアブストラクション５３０の中心オブジェクト５３２、５３４および５３６は、ネットリスト５００の論理階層ノード５０２、５０４および５０６にそれぞれ対応するスターネットリストの一部である。次いで、配置されたネットリストアブストラクション５３０をネットリスト５００上でブロック形成を行なうためのシードとして使用することができる。フロアプラン５６０は、配置されたネットリストアブストラクション５３０をシードとして使用することによってネットリスト５００上でブロック形成を行なった結果を例示するブロック５６２、５６４および５６６を含む。
【００３８】
コンピュータシステム
図６は、本開示に記載される一部の実施形態に従ったコンピュータシステムを示す。コンピュータシステム６０２は、プロセッサ６０４、メモリ６０６、および記憶装置６０８を含むことができる。コンピュータシステム６０２は、表示装置６１４、キーボード６１０、およびポインティングデバイス６１２に結合されることができる。記憶装置６０８は、オペレーティングシステム６１６、アプリケーション６１８、およびデータ６２０を格納することができる。データ６２０は、アプリケーション６１８によって必要とされる入力および／またはアプリケーション６１８によって生成される出力を含むことができる。
【００３９】
コンピュータシステム６０２は、本開示に暗示的または明示的に記載される１つ以上のプロセスを自動的に（またはユーザの介入により）行なってもよい。たとえば、コンピュータシステム６０２は、アプリケーション６１８をメモリ６０６にロードすることができ、アプリケーション６１８は、ネットリストアブストラクションを作成し、かつネットリストアブストラクションをシードとして使用する１つ以上のフロアプランニング動作を行なうことができ、それによって性能を実質的に向上させる。
【００４０】
結論
上記の説明は、当業者が本実施形態を為しかつ使用することが可能となるように提示される。開示された実施形態のさまざまな改良が当業者に容易に明らかとなり、本明細書に規定された一般的な原則は、本開示の要旨および範囲から逸脱することなく他の実施形態および用途に適用可能である。したがって、本発明は、示された実施形態に限定されず、本明細書に開示された原則および特徴と一致した最も広い範囲が付与されるべきである。
【００４１】
本開示に記載されたデータ構造およびコードは、コンピュータ読取可能記憶媒体および／またはハードウェアモジュールおよび／またはハードウェア装置に一部または完全に格納されることができる。コンピュータ読取可能記憶媒体としては、揮発性メモリ、不揮発性メモリ、ディスクドライブ、磁気テープ、ＣＤ（コンパクトディスク）、ＤＶＤ（デジタル汎用ディスクまたはデジタルビデオディスク）などの磁気および光学記憶装置、または、コードおよび／もしくはデータを格納することの可能な、現在知られているもしくは後に開発される他の媒体が含まれるが、これらに限定されない。本開示に記載されるハードウェアモジュールまたは装置としては、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、専用もしくは共有プロセッサ、および／または、現在知られているもしくは後に開発される他のハードウェアモジュールもしくは装置が含まれるが、これらに限定されない。
【００４２】
本開示に記載される方法およびプロセスは、コンピュータシステムがコードおよび／またはデータを読出し、実行すると、コンピュータシステムが関連の方法およびプロセスを実施するように、コンピュータ読取可能記憶媒体または装置に格納されたコードおよび／またはデータとして一部または完全に具現化されることができる。さらに、方法およびプロセスは、ハードウェアモジュールまたは装置が作動されると、関連の方法およびプロセスを実施するように、ハードウェアモジュールまたは装置において一部または完全に具現化されることもできる。なお、方法およびプロセスは、コード、データ、およびハードウェアモジュールまたは装置の組合せを用いて具現化されることができる。
【００４３】
本発明の実施形態の上記の説明は、例示および説明の目的のためだけに提示される。これらは網羅的であることまたは本発明を開示された形態に限定することを意図するものではない。したがって、多くの改良および変形が当業者に明らかとなるであろう。さらに、上記の開示は本発明を限定することを意図するものではない。本発明の範囲は、添付の請求項によって規定される。
【図１】
0006282285.tif 000002
【図２】
0006282285.tif 000003
【図３】
0006282285.tif 000004
【図４Ａ】
0006282285.tif 000005
【図４Ｂ】
0006282285.tif 000006
【図４Ｃ】
0006282285.tif 000007
【図５Ａ】
0006282285.tif 000008
【図５Ｂ】
0006282285.tif 000009
【図５Ｃ】
0006282285.tif 000010
【図６】
0006282285.tif 000011