(57)【要約】ある種のEDAツール設計ビュー内のモジュール名および構造といった、HDLインターフェース論理モデルにおける機微な回路設計情報（８０６）が、設計ビューを回路設計のシミュレーション・モデルの一部として移転するのに先立って、選択されたインスタンスおよびネット名を、無関係な一意的な識別子（８０８）で置き換えることによって消去される。結果として、その情報の許諾されていない使用が避けられる。IC設計の種々の設計ビューにおける信号名をエンコードする方法は、複数の設計データベースに含まれる名前のリストを提供し（８０６）、名前のリスト内の各名前を保護された名前に変え（８０８）、各設計ビュー・データベース中の関連付けられた保護された名前をそれぞれの変更された名前に置き換える（８１０、８１２、８１４、８１６）ことを含む。
2009518717.tif 000002
【特許請求の範囲】
【請求項１】
IC設計の第一のビューをスキャンして名前を探す段階と；
スキャンから見出された一つまたは複数の名前のそれぞれを、関連付けられる名前に似ていない関連付けられた一意的な識別子にマッピングする段階と；
前記第一のビューにおいて、マッピングされた名前の一つまたは複数の生起を、その関連付けられた一意的な識別子で置換し、IC設計の第一の保護されたビューを生成する段階と；
IC設計の第二のまたはより多くのビューにおいて、前記マッピングされた名前の一つまたは複数の生起を、その関連付けられた一意的な識別子で置換し、IC設計の第二の保護されたビューを生成する段階とを有する、
方法。
【請求項２】
前記一つまたは複数の名前が、前記第一のビューにおけるインスタンス名およびネット名のうちから選択される、請求項１記載の方法。
【請求項３】
各名前が、一つまたは複数のインスタンス名と一つまたは複数のネット名との間の階層的関連付けを表現する、請求項１記載の方法。
【請求項４】
前記第一のビューがインターフェース論理モデルである、請求項１記載の方法。
【請求項５】
前記第一のビューおよび第二のビューがネットリストである、請求項１記載の方法。
【請求項６】
前記第一のビューおよび第二のビューがハードウェア記述言語で書かれている、請求項１記載の方法。
【請求項７】
前記第二のビューがVerilogでコーディングされている、請求項１記載の方法。
【請求項８】
前記第一のビューが、標準寄生交換フォーマットでフォーマットされている、請求項１記載の方法。
【請求項９】
請求項１記載の段階を実行するために埋め込まれているプログラム論理を含む機械可読媒体を有する製造物。
【請求項１０】
請求項１記載の段階を実行する手段を有するシステム。
【請求項１１】
種々の情報を含む複数のデータベース中の信号名をエンコードする方法であって：
複数のデータベースに含まれる名前のリストを提供する段階と、ここで、前記複数のデータベースの各データベースはIC設計に関係する異なる情報を有しており；
名前の前記リスト内の各名前を保護された名前に変える段階と；
前記複数のデータベースの各データベース中の関連付けられた保護された名前でそれぞれの変更された名前を置き換える段階とを有する、
方法。
【請求項１２】
前記名前のリストがインスタンス名およびネット名を含む、請求項１１記載の方法。
【請求項１３】
前記名前のリストに含まれる一つまたは複数の名前が、一つまたは複数のインスタンス名と一つまたは複数のネット名との間の階層的関連付けを表現する、請求項１１記載の方法。
【請求項１４】
前記複数のデータベースがインターフェース論理モデルを含む、請求項１１記載の方法。
【請求項１５】
複数のデータベースがネットリストを含む、請求項１１記載の方法。
【請求項１６】
前記複数のデータベースがハードウェア記述言語で書かれている、請求項１１記載の方法。
【請求項１７】
前記複数のデータベースのうち少なくとも一つのデータベースが標準寄生交換フォーマットでフォーマットされている、請求項１１記載の方法。
【請求項１８】
前記複数のデータベースのうち少なくとも一つがVerilogでコーディングされている、請求項１１記載の方法。
【請求項１９】
請求項１１記載の段階を実行するために埋め込まれているプログラム論理を含む機械可読媒体を有する製造物。
【請求項２０】
請求項１１記載の段階を実行する手段を有するシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概括的にはデジタル回路のための計算機援用設計の分野に、より詳細には電子回路設計自動化（EDA:  electronic  design  automation）モデルに含まれる設計情報の保護に関する。
【背景技術】
【０００２】
多層深さのサブミクロンの相補型金属‐酸化物半導体（CMOS）技術のようなシリコン技術における現代の進歩は、より大きくより複雑な設計が単一チップ上に形成されることを許容し、それにより同じシリコン基板上に完全な「システム・オン・チップ（SOC）」設計が配置されることを可能にするのに与っている。これらの複雑な設計は、たとえば、一つまたは複数のプロセッサ・コンポーネント、デジタル信号処理（DSP）コンポーネント、メモリ、いくつかの通信インターフェースおよびグラフィック・サポート・コンポーネントを組み込んでいてもよい。
【０００３】
SOC設計の到来は電子システム産業を、既存の回路ブロックまたは「コア」の使用に基づく新たな設計パラダイムへとシフトさせている。このパラダイムのもとでは、システムは、一つまたは複数の既存の回路ブロックを同じシリコン基板上に統合することによってまとめられる。IC設計者にとって、新しいIC設計のたびに必要なハードウェアすべてを設計し直すよりも、すでに開発されているコンポーネントを組み込むほうが効率的かつ実際的である。このシフトからの自然な帰結として、異なるチップ設計ベンダーが既存の回路ブロックを、システム・オン・チップ（SOC）を開発するシステム・レベルの統合者または製造業者に供給するようになった。しばしばこれらのコアは、IC統合者以外のそのようなベンダーまたはグループによって所有される知的財産（IP）に関わる。
【０００４】
市場の需要により、電子システム製造業者はシステムをより迅速かつ効率的に開発するよう迫られるので、電子システム統合者または製造業者にとって、SOCのシミュレーションおよび設計統合を許容するためにコアの設計モデルを受け取ることが有用である。IC設計シミュレーション・モデルは、IC設計者が、あるコンポーネントが別のコンポーネントと協働して設計者のニーズを達成するかどうかを知ることを許容する。設計および方法論の複雑さが増すにつれ、可用性（usability）と統合（integration）を許容するためには、コア設計へのますます多くの詳細および可視性（visibility）が要求される。残念ながら、SOC統合者に移転されるモデルが精確で詳細になるほど、それらの設計の盗用および不許諾操作といった濫用のリスクが大きくなる。
【０００５】
コア設計およびモデルは、物理的には記憶デバイス上のデータまたはコードとして存在するので、コピー、偽造および再設計するのが比較的簡単である。さらに、コアの存在によってもたらされる効率向上も、それらのアイテムの不許諾使用、再使用、移転または販売の誘因となる。結果として、設計および方法論の複雑さからはSOC設計者によるコアの可用性を許容するための著しい量の情報の移転が要求される一方、SOC設計に参加する顧客、ベンダーおよびサードパーティーに移転されるIPを保護するための努力を払うことがますます重要になっている。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
シミュレーション・モデルが設計の動作および機能に対するそのような貴重な洞察を提供するので、当該設計のIPを保有する者は典型的には、共同する当事者間で念入りに起草された法的合意なしにはシミュレーション・モデルを開示しない。SOC設計者がある設計または発想を試したいとすると、そのような合意を取り付けることが、迅速で、効率的で、コスト効率のよい設計開発の著しい障害となる。さらに、権利保護されたコアの不正なコピー、偽造、移転または再使用を検出することが難しいため、そのような法的手段そのものの有用性も限られている。特定のユーザーによってコアが不正に取得されたかどうか、あるいはある回路設計内のどのような機微な情報がその電子的な形で入手されたのかを判別するのはきわめて困難でありうる。したがって、コアの提供者は、コアの設計、開発および入手に費やされた資源からくる恩恵を奪われることがないよう、自分たちの設計を保護する効果的な方法を必要としている。
【０００７】
本発明について、以下の記述では図面を参照して好ましい実施形態の形で述べる。図面において、同様の番号は同じまたは類似の要素を表す。
【０００８】
本発明の例示的な実施形態の以下の詳細な説明では、該説明の一部をなす付属の図面が参照される。図面は本発明が実施されうる個別的な例示的な実施形態の図解として示される。
【発明を実施するための最良の形態】
【０００９】
本発明の例示的な実施形態の以下の詳細な記述では、本発明が実施されうる個別的な例示的な実施形態が、当業者が本発明を実施できるようにするのに十分な詳細さで記述される。他の実施形態が利用されてもよく、本発明の精神または範囲から外れることなく論理的、アーキテクチャ的、プログラム的、機械的、電気的およびその他の変更がなされてもよいことは理解されるものとする。したがって、以下の詳細な記述は、限定する意味に解釈されるべきではなく、本発明の範囲は付属の請求項によってのみ定義される。特に、当業者には、ハードウェア記述言語（HDL）表現または他の記号表現を使ってIC設計またはIC設計のシミュレーション・モデルIC設計を表現する任意の仕方が、本発明の範囲内で考えられることは明らかであろう。
【００１０】
ここに記載される一つまたは複数の実施形態において、回路設計のシミュレーション・モデルの一部として移転される機微な回路設計情報を保護し、その結果としてその情報の不許諾使用を回避する方法およびプログラム・プロダクトが提供される。ここで、機微な情報とは、ある種のEDAツール設計ビュー（EDA  tool  design  view）内でのモジュール名および構造といったものである。このようにして、本発明の方法およびシステムは、シミュレーション・モデル内に含まれる秘匿情報へのアクセスを許可することなく、SOC設計者が、シミュレーション・モデルのコアおよび諸コンポーネントの動作が該設計者のニーズを満たすかどうかを判別するためにコア設計のシミュレーション・モデルを使うことを可能にする。これは、普通ならシミュレーション・モデルに具現されるかもしれない機微なコア設計情報を保護するためのSOC設計者（または会社）とIP保有者との間の秘匿性合意への依存を、部分的には軽減する
設計プロセスの一部として、典型的には、仮想コンポーネント・ブロックが生成される。設計プロセスは、特定の回路設計のために所望される抽象化のレベルに依存していくつかのステップを含むことができる。チップ設計者はしばしば、設計プロセスを支援し、プロトタイプ作成や生産に先立ってチップ設計のシミュレーションを許容するための電子回路設計自動化（EDA）ソフトウェア・ツールを使用する。EDAソフトウェア・ツールを使ったチップ設計は一般に、チップ設計が徐々に完成されていく逐次過程を含む。典型的には、チップ設計者は、コンピュータ・ワークステーションにおいて情報を入力することによって回路を構築する。コンピュータ・ワークステーションは一般に、必要とされる回路設計の諸部分を表示するよう高品質グラフィック機能を有している。普通、たとえばVerilogまたはVHDLのようなハードウェア記述言語（HDL）を使ってトップダウン式の設計方法論が用いられる。これによると、設計者は回路の機能コンポーネントを階層的に定義することによって集積回路を作成し、各コンポーネントをどんどん小さなコンポーネントに分解していく。
【００１１】
最初に、集積回路のさまざまなコンポーネントが、その機能的な動作ならびに関連する入力および出力によって定義される。これらの設計状態の間、設計者は一般に、かなりの階層情報を使って回路を構築し、典型的には設計において相当な規則性を与える。デジタル回路の設計は、コンピュータ・システムのメモリ内で種々の方法で表現または指定されることができる。デジタル回路表現の各型はビュー（view）と呼ばれる。異なるビューは、回路構造に関する異なる量および型の情報を含む。回路構造に関するより多くの情報を含むビューは、より多くのコンピュータのメモリを必要とし、構築および操作するためにより多くのコンピュータの時間を必要とする。
【００１２】
HDLまたは他の高レベルの記述から、典型的には論理合成によって、実際の論理セル実装が決定される。論理合成は回路の機能的な記述を特定の回路実装に変換する。次いで論理セルは「配置され（placed）」（すなわち、回路レイアウトにおいて特定の座標位置を与えられる）、「経路形成される（routed）」（すなわち、設計者の回路定義に従って結線または相互接続される）。配置および経路形成ソフトウェア・ルーチンは一般に、論理合成プロセスによって生成されたフラットにされたネットリストを入力として受け容れる。このフラットにされたまたは階層的なネットリストが、目標標準セル・ライブラリから特定の論理セル・インスタンスを同定し、特定のセルからセルへの接続性を記述する。
【００１３】
ICチップは、半導体基板の表面上に形成されたセルおよびセル間の接続を含む。セル（cell）とは、トランジスタ、コンデンサおよび他の基本回路素子といった一つまたは複数の回路素子が、ある機能を実行するようにまとめられたグループである。ICは多数のセルを含み、セル間の複雑な接続を要求することもある。ICのセルのそれぞれは、一つまたは複数のピンを有しうる。各ピンは今度はICの一つまたは複数の他のピンに導線で接続されうる。ピンをICに接続する導線も、チップの表面上に形成される。
【００１４】
ネット（net）とは、二つ以上の相互接続されたピンおよび導線の集合であり、それによりピンを有する論理回路を接続する。典型的なチップはさまざまな組み合わせで接続される必要のある何千、何万または何十万のピンを有するので、チップはまた、何千、何万または何十万の「ネット」すなわちピンの集合の接続の定義をも含む。あるチップについてのネットの数は典型的にはそのチップ上のセルの数のオーダーと同じオーダーである。ネットの大半は接続されるべき二つのピンしか含まないことも普通だが、三つ以上のピンを含むネットも多い。いくつかのネットは接続されるべき何百または何万のピンを含むことがある。
【００１５】
ICモデル（IC  model）とは、典型的にはHDLで表現されている相互接続された回路セルおよびネットの集合であり、本稿では時に交換可能にモジュール（module）、コア（core）、知的財産（IP:  intellectual  property）、IPブロック、ブロックまたはコンポーネントと称される。コア（core）とは、ハードウェアで実装可能な電子回路設計であり、典型的にはHDLで指定され、また典型的には最上位のネットリストで表現される。「ネットリスト（netlist）」とは接続されるピンの名前を含むネット（「ネット名」）のリストまたはセルのピンに接続するネットの名前を含むセル（「インスタンス名」）のリストである。最上位のRTLは、より低いレベルの抽象化でゲート・レベルのネットリストを生成するために合成される。設計の合成後、ゲート・レベルのネットリストが検証され、回路のレイアウトが決定され、ICが製造される。
【００１６】
今日、ほとんどのデジタル集積回路（IC）の設計は、HDL（ハードウェア記述言語）方法論に基づく高度に構造化された過程である。HDL方法論は、ICが仕様文書によって規定されることで始まる。次いで、IC仕様が、レジスタ転送言語（RTL:  Register  Transfer  Language）と称される設計抽象化のレベルで高レベルのHDLコードに書かれる。RTLコードは、回路をレジスタ、ブール式および「if-then-else」文や複雑なイベント・シーケンスのような制御論理の集合として記述する。RTLコードは典型的には、RTLレベルの抽象化でVerilog-HDL（「Verilog」）またはVHDLのようなHDL言語を使って実装される。ここでは、IC設計は、回路入力、出力およびクロックされるレジスタの間に流れるデータに対して実行される動作を記述することによって、規定される。RTLレベルにおいて、設計者は、設計階層性およびパーティション分割、クロック方式、リセット方式およびレジスタ位置といったすべての主要な設計上の決定をしなければならない。それらのすべての決定は、RTLコードに含まれ、反映される。RTLコードは一般に技術から独立であり、設計ツールからも独立である。
【００１７】
RTLコードによって表現されるIC設計は次いで合成されて、ゲート・レベルの記述すなわちネットリストを生成する。合成（synthesis）とは、RTLコードによって表現される設計のアーキテクチャ的および機能的な記述を、論理レベルおよびゲート・レベルの記述のような、設計のより低レベルの表現に翻訳するために行われるステップである。すなわち、仕様およびRTLコードは一般には当該設計を実装するために使われる厳密なゲートまたは論理デバイスを規定しない。IC設計のゲート・レベルの記述は技術依存でありうる。これは、合成プロセスの間に、合成ツールが、技術独立なRTLコードを技術依存のゲート・レベルのネットリストにマッピングするために所与の技術ライブラリを使用することがあるからである。しかしながら、ネットリストは汎用でも技術固有でもよい。汎用ネットリストは、技術固有のセル・ライブラリに相関されていない、RTLコードから生成されたネットリストである。技術固有のネットリストまたはマップ・ネットリストは、IC設計が特定の技術固有のセル・ライブラリにマッピングされたあとに作成されたネットリストである。
【００１８】
ここに記載される本発明の諸実施形態は、システム・レベルのマクロ、メガセルまたはシステム・チップ設計において使用される埋め込まれたソフトウェア「コア」のいずれに関係するものであれ、幅広い多様な仮想コンポーネント・ブロックに適用可能である。仮想コンポーネント・ブロックは一般に、設計段階における抽象化のレベルと同じくらいその「ファームさ（firmness）」に従って分類できる。仮想コンポーネント・ブロックはたとえば、「ソフト」「ファーム」および「ハード」の三つの範疇のうちの一つに分類されてもよい。ファームさの範疇は、機能的な指定から具体的な製造プロセスまでの範囲で開発段を特徴付ける。
【００１９】
「ソフト」仮想コンポーネント・ブロックは典型的には、SOC統合者に、合成可能なハードウェア記述言語（たとえばVHDLまたはVerilogのような）の形で届けられる。ソフト仮想コンポーネントは高度に柔軟であり、汎用かつ構成可能でありうる。「ファーム」仮想コンポーネント・ブロックは主として、汎用技術のために最適化された構造型（structural-type）モデルである。ファーム仮想コンポーネント・ブロックの詳細のレベルはたとえば、RTLサブブロックの領域配置が指定される回路設計から、相対的に配置されたデータ経路を介して、完全に配置されたネットリストを有する回路設計までの範囲にわたりうる。ファーム仮想コンポーネント・ブロックは一般に経路形成を含まず、目標技術を横断して移植可能である。「ハード」仮想コンポーネントは個別の技術にマッピングされており、一般に目標技術におけるパワー、サイズおよびパフォーマンスのために最適化されている。ハード仮想コンポーネントの例は、カスタム物理レイアウトまたは完全に配置され、経路形成され、所与の技術のために最適化されたネットリストを含みうる。ハード仮想コンポーネント・ブロックはプロセスまたはベンダー固有であり、通例、GDSIIのような標準的な設計言語で表される。ユーザーは一般に、ハード仮想コンポーネント・ブロックを効果的に使うために、GDSIIファイルと一緒に、高レベルの行動モデルおよび完全な物理的／タイミング・モデルへのアクセスを与えられる。
【００２０】
SOCの設計および解析のタスクを単純化するため、複雑な設計はブロックに、すなわちチップ内の任意のユーザー定義またはシステム定義の階層に分割できる。この際、ブロックはインターフェース・モデルで置換できる。有利には、そのようなモデルは、たとえばブロックのインターフェース情報をブロックのSOC統合者と交換するコンパクトな手段を提供できる。あるブロックまたはコアについて完全なゲート・レベルのネットリストの代わりにインターフェース・モデルを使用することは、特にゲート数が500万ゲートを超える複雑な設計については、チップ・レベルの解析およびシミュレーションに関連するパフォーマンスおよび容量を改善することに向けた鍵である。さらに、そのようなインターフェース論理モデルは、チップ設計者が、インターフェース論理モデル（ILM:  interface  logic  model）と一緒に移転されることが必要とされない内部的なゲート・レベル設計を保持し、保護することを許容する。
【００２１】
自動モデル生成は、ILMの使用を含むことができる。ILMは、設計上の内部的なレジスタ間経路に関連するネットリスト、制約およびバックアノテーション（back-annotation）を破棄し、それにより精度を犠牲にすることなく著しい実行時間およびパフォーマンスの改善をもたらす。さらに、ILMは元のネットリストのインターフェース論理のみを含んでいる。たとえば、あるブロック上のレジスタ間経路のみに含まれる論理はILMには入れられていない。ILMは、入力ポートで始まり、エッジ・トリガーされるレジスタまたは出力ポートのいずれかで終わるタイミング経路（すなわちシーケンシャル論理）に含まれる諸セル（すなわち、論理および関連するネット（ここではインターフェース・ネットと呼ばれる）の組み合わせ）を含む。そのようなタイミング経路において透明なラッチに遭遇する場合、それは組み合わせ論理として扱われ、経路追跡はラッチを通って、エッジ・トリガーされるレジスタまたは出力ポートに遭遇するまで続く。
【００２２】
ILMは、設計のインターフェース・タイミングのシミュレーション・モデル表現として使うことができる。ILMモデルは、設計Verilogネットリストおよび適切な寄生情報から生成できる。コンポーネントのILMモデルは、そのコンポーネントがどのように動作し、他のコンポーネントとタイミングに関して相互作用するかの詳細な理解および探求を可能にする。
【００２３】
ここで図面を参照し、特に図１を参照すると、本発明のある実施形態のブロック図が示されている。IC設計情報（Verilog設計）１０２はVerilogで実装されている。IC設計寄生情報（SPEF）１０４はIC設計情報１０２に関連しており、標準寄生交換フォーマット（SPEF:  Standard  Parasitic  Exchange  Format）である。Verilog設計１０２およびSPEF１０４は一緒になって、コアまたは設計ブロックのための設計情報の重要な集合を提供する。標準的なEDAツールを使って、SPEF１０４はILM１０６に変換でき、Verilog設計１０２はVerilog  ILM１０８に変換できる。ILMを生成するとき、EDAツールは、回路シミュレーション、タイミング検証ならびに回路配置および経路形成のためにEDAツールによって時に使われるようなフラットなゲート・レベルのネットリストをフォーマットする。SPEF  ILM１０６およびVerilog  ILM１０８のそれぞれは、回路設計のモデル・ビューを表現する。理解されるであろうように、各モデル・ビューは、当該モジュールの動作および機能に対する洞察を提供しうる秘匿シミュレーション情報を含んでいる。
【００２４】
図２は、フラットなゲート・レベルのSPEFの例である。ネットリスト２００は、名前マップ２０２、ポート寄生情報２０４ならびにネット接続および寄生情報２０６を含んでいる。
【００２５】
図３は、Verilogビューにおけるモジュールまたはコア設計の例を示している。フラットなゲート・レベルのネットリスト３００は、各「インスタンス名」、各「ネット名」およびインスタンス名とネット名との間の階層的な関連付けを定義する。インターフェース３０２は、モジュールの最上位レベルで入力および出力に接続するネットを同定する。ネット名３０４は、モジュールの最上位レベルで入力や出力に接続しないネットの各インスタンスを同定する。インスタンス名３０６は、ビュー内のインターフェース・セルの各インスタンスを同定する。図４は、インスタンス名３０６のフォーマットを、インスタンス名４０２、複数の入力４０４、４０６（またはもっと）および出力４０８によって同定されるものとして示している。
【００２６】
図１に戻って参照すると、設計保護システム１１０は、シミュレーション・モデル、コアおよび／またはコンポーネントの権利保護された部分の外部設計者への開示を遮蔽しつつ、その設計者に該コンポーネント、コアまたはモデルが設計目標に合うかどうかについての理解を与える。ある好ましい実施形態によれば、設計保護システム１１０は、ICモデルに含まれるインスタンス名およびネット名ならびに可能性としては関連付けられた階層情報を定義し直し、それにより秘匿情報を保護する。設計保護システム１１０は、一貫した仕方ですべての設計ビューにわたって個別的なデータを定義し直す。設計の第一のビューは、該ビュー内のある種のインスタンス名およびネット名を定義し直すために暗号を使うことによってエンコードされる。インスタンス名、ネット名またはフラットなネットリストにおける階層的関連付けが完全な論理経路を同定しているとき、これらは、そのインスタンスまたはネットについての単一の一意的な識別子で置換される。次いで、複数のビューにわたって一貫性を維持するため、関係する相補的なビューが厳密に同じ仕方でエンコードされる。
【００２７】
ある好ましい実施形態では、設計保護システム１１０内のスクリプトが保護されたSPEF  ILM１１２および保護されたVerilog  ILM１１４を生成する。これらは、機微な情報または秘匿情報の一部または全部をはぎ取られているが、それでもサードパーティー・ユーザーにモデルとの完全な相互作用をもつことを許容する。保護されたSPEF  ILM１１２および保護されたVerilog  ILM１１４は、標準的なEDAツールと完全に互換なフォーマットでのコアのシミュレーションにつながる。
【００２８】
図５は、本発明のある好ましい実施形態に基づくビュー１０２、１０４またはILM１０６、１０８のそれぞれにおいて見出されるインスタンス名、ネット名および階層的関連付けをエンコードするための設計保護システム１１０内のスクリプトによって実行される置換法のマッピングを示している。記載の目的のため、ILM１０６、１０８（例示の目的のため、例示的なビュー２００、３００から導出されたと考えられる）を保護する設計保護システム１１０が記述されるが、設計保護システム１１０は、たとえばビュー１０２、１０４を含め、ほとんど任意の設計ビューを保護するよう動作可能である。マッピング・キー５００の各行は、SPEF１０４内のインスタンス名を指定する識別子５０２（最初の二つの「!」の間として定義される）および識別子５０２を置換するエンコードされた識別子５０４（二番目と三番目の「!」の間として定義される）を有する。たとえば、行５０６のインスタンス名５０２（すなわち、名前マップ２０２の行「*12」に見出される「and_gate_3」）は、行５０６に示されている一意的な識別子（すなわち、「JWW12JWW」）で置換される。この例では、エンコードされた識別子５０４は、SPEF  ILM１０６（SPEF１０４から変換後の）においてそのインスタンス名が同定されている行を同定し、その前または後に所定の文字を付加することによって作成された。当業者は、ネットリスト中のインスタンス名、ネット名および階層的関連付けが一意的かつ共有されていない識別子を与えられる限り、いかなる名付けまたはエンコード方式を使うこともできることを理解するであろう。マッピング・キー５００は、エンコードされたインスタンス名およびエンコードされていないインスタンス名の両方を使ったネット名のエンコードをも提供する。たとえば、図５で行５０８に示されているように、以前に名前を変更されたインスタンス「JWW12JWW」とセル「nand_gate」を接続するネットを同定するために、一意的な識別子「JWW17JWW」が生成されている。
【００２９】
ある好ましい実施形態では、設計保護システム１１０は、エンコードされるべきインスタンス名およびネット名を同定するために、ある名前マップ（SPEF２００内の名前マップ２０２から導出される）についてSPEF  ILM１０６をスキャンするスクリプトによって実装される。該スキャンから、設計保護システム１１０は、ネットリストに含まれる名前または他の秘匿情報に無関係な命名法を使って、各同定された名前を一意的に同定するためのエンコード・マップ５００を生成する。設計保護システム１１０は次いで、完全に機能するが、選択された機微な情報または秘匿情報がネットリストからはぎ取られているILM設計ビューとして、SPEF  ILM１１２を生成する。
【００３０】
図６は、本発明の好ましい実施形態に基づく、保護されたSPEFの例を示している。この例では、図２の例における名前マップ２０２の行「*12」〜「*17」が秘匿情報であると判別されており、保護されたSPEF６００を生成するにあたって、マッピング・キー５００を使って、一意的なコード６０２にエンコードされている。
【００３１】
次いで設計保護システム１１０は、同じマッピング・キー５００を使ってコア設計の他のすべての関連する設計ビューを保護することに進む。ある好ましい実施形態では、設計保護システム１１０は、マッピング・キー５００を使ってVerilog  ILM１０８から保護されたVerilog  ILM１１４を生成する。
【００３２】
Verilog３００にマッピング・キー５００を適用することによって生成された保護されたVerilogファイルをHDLネットリスト７００として実装した例が図７に示されている。Verilog３００中のネット３０４は、保護されたネット名７０２として示されている一意的に名付けられた接続にエンコードされている。同様に、インスタンス名３０６は、マッピング・キー５００に従って、保護されたインスタンス名７０４にエンコードされている。たとえば、インスタンス名３０６の最初の「NAND3x1」は、関連のないインスタンス名「JWW17JWW」および一意的な同定された出力「JWW30JWW」を使って、（７０４の）第一の保護されたインスタンス名にエンコードされている。
【００３３】
ここで図８を参照すると、本発明のある好ましい実施形態に基づく、EDAツールの設計ビュー中の秘匿情報を保護するプロセスの流れ図が示されている。プロセス８００はステップ８０２で始まり、ここで、IC設計を記述するHDLコードがフラットにされ、階層構造が除かれる。たとえば、シミュレーション目的のためにサードパーティーに移転されるべきファイルを保護するとき、SPEFおよびVerilogファイルはフラットにされる。次いでプロセスはステップ８０４に進み、ここで、ILMモデルが生成される。次いでプロセスはステップ８０６に進み、ここで、保護されるべき信号名が同定される。ここで、プロセスはSPEFファイルを構文解析して、SPEFファイル中で留まるべき、あるいは名前をつけ直されるべき信号名の数および位置を判別する。たとえば、SPEFファイルは、モジュール・ポートの数および位置を判別してそれらが元の形で保持されるようにするために構文解析されるであろう。
【００３４】
その後、プロセスはステップ８０８に進み、ここで、信号名を保護された信号名に関連付けるマッピング・ファイルが生成される。これは、選択された信号名を、元の信号名と無関係だが一意的に各信号名が互いに区別されるよう同定する一意的な識別子にマッピングすることによる。ポート名に含まれる信号名は、ある好ましい実施形態ではマッピングまたは置換されない。次いでプロセスはステップ８１０に進み、ここで、SPEFファイルは、該ファイルをスキャンして元の信号名のインスタンスを探し、該インスタンスをそのマッピングされた保護された名前で置換することによって、保護された信号名でエンコードされる。その後、プロセスはステップ８１２に進み、ここで、信号名をその一意的な保護された信号名にマッピングするためのコードを含むスクリプト・ファイルが生成される。その後、プロセスはステップ８１４に進み、ここで、スクリプト・ファイルはVerilog設計ファイルおよび第一のファイルと同じ信号名を含むICの他の支援設計ビューに対して実行される。実行されると、スクリプトは、ステップ８０６、８０８および８１０を対象設計ビュー・ファイルに対して実行し、選択された信号名の各インスタンスを、その一意的なマッピングされた保護された信号名で置き換えることによって保護する。プロセスはステップ８１６で、エンコードされたSPEF、Verilogおよび他のサポートされる設計ビューを、各設計ビューどうしの間の一貫性を保持し、該設計ビューのサードパーティー受領者によるEDAツールにおける完全な可用性を提供しつつ、モジュール名および構造を隠す、保護されたフォーマットで出力することによって終了する。
【００３５】
理解されるであろうように、本発明の前記の好ましい実施形態は、複数のIC設計ビューが、効果的な仕方で秘匿情報をフィルタ除去され、複数のビューを横断して標準的なEDAツールによる利用を許容するための必要な情報を失うことなく保護された設計ビューが呈示されることを許容する。保護された設計ビューをエンコードすることは、マッピング・キーを使って実行されるので、元の設計者は、保護されたファイル設計ビューのユーザーからのコメントまたは技術的論点を簡単に翻訳できる。これは、技術的設計に関する多くの論点または問題について、保護された設計ビューと対話する顧客をサポートするために重要である。
【００３６】
理解されるであろうように、本発明の好ましい実施形態におけるプロセスは、コンピュータ・プログラミング・ソフトウェア、ファームウェアまたはハードウェアの任意の組み合わせを使って実装されうる。本発明をソフトウェアで実施することに向けた準備ステップとして、ある好ましい実施形態に基づくコンピュータ・プログラミング・コード（ソフトウェアであろうとファームウェアであろうと）が典型的には、固定（ハード）ドライブ、ディスケット、光ディスク、磁気テープ、ROM、PROMなどのような半導体メモリといった一つまたは複数の機械可読記憶媒体に記憶され、それにより本発明に基づく製造物を作る。前記コンピュータ・プログラミング・コードを有する製造物は、記憶装置から直接コードを実行することによって、記憶装置からコードをハードディスク、RAMなどといった別の記憶装置にコピーすることによって、あるいはコードをリモート実行のために送信することによって、使われる。本発明の方法形態は、本発明に基づくコードを含む一つまたは複数の機械可読記憶媒体を、そこに含まれるコードを実行するための適切な標準的なコンピュータ・ハードウェアと組み合わせることによって実施されうる。本発明を実施する装置は、本発明に基づいてコーディングされたコンピュータ・プログラム（単数または複数）へのネットワーク・アクセスを含むまたは有する、一つまたは複数のコンピュータおよび記憶システムであることができる。
【００３７】
本発明は、好ましい諸実施形態を参照して具体的に図示され、記述されてきたが、当業者は、本発明の精神および範囲から外れることなく、そこに形態および詳細におけるさまざまな変更がなしうることを理解するであろう。記載されている実施形態への任意の変更、修正、追加および改良が可能であり、付属の請求項において詳述される本発明の範囲内にはいりうるものである。
【図面の簡単な説明】
【００３８】
【図１】本発明のある実施形態のブロック図である。
【図２】フラットなゲート・レベルのSPEFの例を示す図である。
【図３】Verilogビューにおけるモジュールまたはコア設計の例を示す図である。
【図４】インスタンス名の例示的なフォーマットを示す図である。
【図５】本発明のある好ましい実施形態に基づく設計保護システムによって実行される置換法のマッピングを示す図である。
【図６】本発明のある好ましい実施形態に基づく保護されたSPEFの例を示す図である。
【図７】本発明のある好ましい実施形態に基づく保護されたVerilogを示す図である。
【図８】本発明のある好ましい実施形態に基づくEDAツールの設計ビューにおける秘匿情報を保護するためのプロセスの流れ図である。
【図１】
2009518717.tif 000003
【図２】
2009518717.tif 000004
【図３】
2009518717.tif 000005
【図４】
2009518717.tif 000006
【図５】
2009518717.tif 000007
【図６】
2009518717.tif 000008
【図７】
2009518717.tif 000009
【図８】
2009518717.tif 000010
【国際調査報告】
2009518717.tif 000011
2009518717.tif 000012