(57)【要約】【課題】機能的に等価なフィールドプログラマブルゲートアレイ（“ＦＰＧＡ”）およびストラクチャード特定用途向け集積回路（“ストラクチャードＡＳＩＣ”）を生成することが可能なコンパイラフローを提供する。【解決手段】該フローはいずれか一方のフロー時にその後のもう一方のフローのパフォーマンスに同じ変換を必ず含むように実行される設計変換をフィードバックするステップを含み、それにより機能等価性を実現することが可能となる。該フローは、その機能等価性が実現していることを証明するために、中間結果を比較するステップを含むことも可能である。【選択図】図２
2006286000.tif 000002
【特許請求の範囲】
【請求項１】
ユーザの論理設計を実行するプログラムドＦＰＧＡと機能的に等価なストラクチャードＡＳＩＣ構成を指定するための情報を生成する方法において、
該ＦＰＧＡに実装する該ユーザの論理設計を合成するステップと、
該合成するステップから得られた合成をストラクチャードＡＳＩＣ実装に好適な修正合成に変換するステップと、
ストラクチャードＡＳＩＣ上に配置されるようにした更なる合成を生成するよう、該修正合成に対して配置配線動作を実行するステップと、
更に、該更なる合成を該ストラクチャードＡＳＩＣの製造に用いられる物理回路のＩＤを含む該ストラクチャードＡＳＩＣの仕様に変換するステップとからなる、方法。
【請求項２】
前記実行するステップが前記修正合成の変更を行うステップを含み、
前記方法が、更に該変更を前記ユーザの論理設計の修正にフィードバックするステップからなることを特徴とする、請求項１に記載の方法。
【請求項３】
前記変更がレジスターを複写するステップからなることを特徴とする、請求項２に記載の方法。
【請求項４】
前記変更がレジスターをシフトするステップからなることを特徴とする、請求項２に記載の方法。
【請求項５】
更に、前記ＦＰＧＡに実装する前記ユーザの論理設計を合成した結果得られた合成に対して更なる配置配線動作を実行するステップからなり、前記更なる配置配線動作により前記ＦＰＧＡ上に配置されるようにしたまた更なる合成が生成されることを特徴とする、請求項１に記載の方法。
【請求項６】
更なる配置配線動作を前記実行するステップが、前記ＦＰＧＡに実装する前記ユーザの論理設計を合成した結果得られた前記合成の変更を行うステップを含み、前記方法が、更に該変更を前記ユーザの論理設計の修正にフィードバックするステップからなることを特徴とする、請求項５に記載の方法。
【請求項７】
更に、機能等価性についてテストするため、前記更なる合成と前記また更なる合成とを比較するステップからなることを特徴とする、請求項５に記載の方法。
【請求項８】
前記比較するステップが、前記更なる合成と前記また更なる合成とにおいて対応するノードをマッチングさせるステップと、
前記更なる合成と前記また更なる合成のそれぞれにおける該マッチングさせるステップにおいて識別されたノード間の論理のＢＤＤを作成するステップと、
機能等価性について、前記更なる合成と前記また更なる合成において該ＢＤＤの対応するノードをテストするステップとからなることを特徴とする、請求項７に記載の方法。
【請求項９】
前記ノードがレジスターと、非論理ブロック入力および出力と、前記また更なる合成における論理セル出力および前記更なる合成における対応する論理出力とを含むことを特徴とする、請求項８に記載の方法。
【請求項１０】
前記比較するステップが、前記更なる合成と前記また更なる合成において対応する非論理ブロックを識別するステップと、
類似性について、該対応する非論理ブロック毎に機能パラメータ情報をテストするステップとからなることを特徴とする、請求項７に記載の方法。
【請求項１１】
請求項１に記載の方法を実行するための機械可読命令で符号化された機械可読媒体。
【請求項１２】
プログラムドＦＰＧＡと機能的に等価なストラクチャードＡＳＩＣにユーザの論理設計を実装する方法において、
該ＦＰＧＡに実装する該ユーザの論理設計を合成するステップと、
該ＦＰＧＡをプログラム化する方法を決定するようにした第一の更なる合成を生成するよう、該合成するステップから得られた合成に対して第一の配置配線動作を実行するステップと、
該ＦＰＧＡに実装する該ユーザの論理設計を合成した結果得られた合成を、ストラクチャードＡＳＩＣ実装に好適な修正合成に変換するステップと、
ストラクチャードＡＳＩＣ上に配置されるようにした第二の更なる合成を生成するよう、該修正合成に対して第二の配置配線動作を実行するステップと、
該第二の更なる合成を、該ストラクチャードＡＳＩＣの製造に用いられる物理回路のＩＤを含む該ストラクチャードＡＳＩＣの仕様に変換するステップとからなる、方法。
【請求項１３】
更に、前記第一の更なる合成から前記ＦＰＧＡ用のプログラミングデータを生成するステップからなることを特徴とする、請求項１２に記載の方法。
【請求項１４】
第一の配置配線動作を前記実行するステップが、前記ユーザの論理設計で指定するものの側面を変更するステップを含み、
前記方法が、更に該変更するステップから生じた変更についての情報で前記ユーザの論理設計用のデータを修正するステップからなることを特徴とする、請求項１２に記載の方法。
【請求項１５】
前記修正するステップが前記ユーザの論理設計用データの後続処理を前記変更に適合させることを特徴とする、請求項１４に記載の方法。
【請求項１６】
第二の配置配線動作を前記実行するステップが、前記ユーザの論理設計で指定するものの側面を変更するステップを含み、
前記方法が、更に該変更するステップから得られた変更についての情報で前記ユーザの論理設計用のデータを修正するステップからなることを特徴とする、請求項１２に記載の方法。
【請求項１７】
更に、機能等価性をテストするため、前記第一と第二の更なる合成を比較するステップからなることを特徴とする、請求項１２に記載の方法。
【請求項１８】
前記比較するステップが、前記第一と第二の更なる合成において対応するノードをマッチングさせるステップと、
前記第一と第二の更なる合成のそれぞれにおける該マッチングさせるステップにおいて識別されたノード間の論理のＢＤＤを作成するステップと、
機能等価性について、該ＢＤＤの対応するノードをテストするステップとからなることを特徴とする、請求項１７に記載の方法。
【請求項１９】
前記比較するステップが、前記第一と第二の更なる合成において対応する非論理ブロックを識別するステップと、
類似性について、該対応する非論理ブロック毎に機能パラメータ情報をテストするステップとからなることを特徴とする、請求項１７に記載の方法。
【請求項２０】
請求項１２に記載の方法を実行するための機械可読命令で符号化された機械可読媒体。
【請求項２１】
機能的に等価なＦＰＧＡを作成することができるストラクチャードＡＳＩＣに論理設計を実装する方法において、
該論理設計のＦＰＧＡ合成を生成するステップと、
該ＦＰＧＡ合成をストラクチャードＡＳＩＣ合成に変換するステップと、
ストラクチャードＡＳＩＣ上に配置されるようにした更なる合成を生成するよう、該ストラクチャードＡＳＩＣ合成に対して配置配線動作を実行するステップと、
該更なる合成を、該ストラクチャードＡＳＩＣの製造に用いられる物理回路のＩＤを含む該ストラクチャードＡＳＩＣの仕様に変換するステップとからなる、方法。
【発明の詳細な説明】
【発明の背景】
【０００１】
本発明は、特定用途向け集積回路（“ＡＳＩＣ”）、より詳細にはストラクチャードＡＳＩＣとしても周知のタイプのＡＳＩＣに関する。
【０００２】
いわゆるストラクチャードＡＳＩＣは、フィールドプログラマブルゲートアレイ（“ＦＰＧＡ”）のようなプログラマブルロジックデバイス（“ＰＬＤ”）の代替として用いられることがある。ＦＰＧＡは、論理回路の多くの同一ブロック、多くのレジスター、そしてＩ／ＯブロックやＲＡＭブロック、ＤＳＰブロック、ＰＬＬ／ＤＬＬブロックのような他のタイプの多数の回路ブロックを含む共通構造を有する。これらのさまざまな回路は種々のタスクを実行するようプログラム化することができる。また、ＦＰＧＡは共通配線構造を有する。この構造は多様な方法でデバイス上の他の回路を配線するようプログラム化することができる。このようなＦＰＧＡの論理ブロックは論理素子、論理モジュール、適合可能論理素子、または適合可能論理モジュールと呼ばれることがある（“ＬＥ”、“ＬＭ”、“ＡＬＥ”、または“ＡＬＭ”）。
【０００３】
ＦＰＧＡと等価な周知のタイプのストラクチャードＡＳＩＣは、比較的単純な回路ブロックの同一例を数多く含む共通構造を有する（いわゆるハイブリッド論理素子、すなわち“ＨＬＥ”）。また、ストラクチャードＡＳＩＣは一般的に、関連するＦＰＧＡ上の特殊用途ブロックに匹敵する他のブロックを具備していることがある（例えば、Ｉ／Ｏブロック、ＲＡＭブロック、ＰＬＬ／ＤＬＬブロックなど）。これらストラクチャードＡＳＩＣの共通属性は、ＡＳＩＣを作成するために用いられるいくつかのマスクに具体化されている（少なくともある程度まで）。このため、これらのマスクとこの一般的な種類のすべてのＡＳＩＣとは同一もしくはほぼ同一のことがあり、またそれらがＡＳＩＣの「構造」を形づくっているのである。関連プログラムドＦＰＧＡの機能性と等価な特定の機能性をストラクチャードＡＳＩＣに賦与するために、他のマスク（但し、全マスクセットのうちの一部のみ）がカスタマイズされる。例えば、これらのカスタマイズされたマスクは、ＨＬＥ、またはＨＬＥ（複合ＨＬＥまたは“ＣＨＬＥ”）の小集団またはクラスタを関連プログラムドＦＰＧＡのＡＬＥが実行する機能と等価な機能を実行するように構成することが可能である。同様に、カスタマイズされたマスクは関連プログラムドＦＰＧＡのレジスターと等価な機能を実行するようにＣＨＬＥを構成することが可能である。また、カスタマイズされたマスクは、ＡＳＩＣ上のＨＬＥ間、ＣＨＬＥ間、および／または他の回路ブロック間の配線を実現することが可能である。通常、これらの配線は関連プログラムドＦＰＧＡのプログラマブル配線リソースによって実現する配線と等価な配線を含むものである。
【０００４】
この種のストラクチャードＡＳＩＣをこのように使用することには、多数のメリットがある。例えば、ＡＳＩＣマスクの一部をカスタマイズするだけでよいのである。これは、ＡＳＩＣのコストを削減し、ＡＳＩＣの設計／製造サイクルをスピードアップしやすいことにつながる。更に、ＡＳＩＣにおける設計上の欠陥のリスクを低減し、関連プログラムドＦＰＧＡと等価な閉動作であるＡＳＩＣの製造が容易になる（例えば、ピン対ピン識別、タイミング識別、または近傍識別など）。この手法のもう１つのメリットは、ＡＳＩＣの方が関連ＦＰＧＡより回路を少なくしやすいことである（通常動作に必要な回路が少ない）。この理由は、必要とするＡＳＩＣ  ＨＬＥの数が、各ＦＰＧＡ  ＡＬＥの機能を実行するだけに費やされてしまい、大半のＦＰＧＡにおいて、多くのＡＬＥが十分に活用されていないからである。
【０００５】
ＦＰＧＡ設計からストラクチャードＡＳＩＣ設計への効率的且つ信頼性できる変換（およびその逆）は、さまざまな状況の中では有益なことがある。例えば、設計のＦＰＧＡ実装をしばらく使用した後で、単位原価を下げるためにその設計を機能的に等価なＡＳＩＣに移行するのが望ましい場合がある。更なる例として、ＦＰＧＡを使用して、ＡＳＩＣ実装を目的とする設計のプロトタイプを作成するのが望ましい場合もある。もう一度、このようなプロトタイプの作成を意義深いものとするには、ＦＰＧＡとＡＳＩＣは機能的に等価でなければならない。
【発明の概要】
【０００６】
本発明は、ユーザの回路設計を機能的に相互に等価なＦＰＧＡとＡＳＩＣに実装することを容易にするものである。所望の最終結果がプログラムドＦＰＧＡであるのか、それとも機能的に等価なストラクチャードＡＳＩＣであるのかに関わらず、ユーザの論理設計を合成してＦＰＧＡに実装する。プログラムドＦＰＧＡへと導くフローにおいては、ＦＰＧＡ実装のための合成が配置配線動作を受け、ＦＰＧＡ上に合成が配置されるようになる。この配置配線動作の出力を用いてＦＰＧＡをプログラミングするためのデータを生成することにより、ＦＰＧＡがユーザの論理を実行することが可能となる。ストラクチャードＡＳＩＣへと導くもう１つのフローにおいては、ＦＰＧＡ実装のための合成がストラクチャードＡＳＩＣに適合した修正合成に変換される。この修正合成は配置配線動作を受け、ストラクチャードＡＳＩＣ上に修正合成が配置されるようになる。更に、この配置配線動作の出力を処理して、ストラクチャードＡＳＩＣの製造に用いられる物理回路の識別子を含むストラクチャードＡＳＩＣの仕様を生成する。
【０００７】
上記の配置配線動作の一方または両方では、ユーザの論理設計で指定したものの側面を変更することが可能である。例えば、このような変更は、レジスターのコピーであってもよいし、設計の１つの部分からその設計の別の部分にレジスターを移すことであってもよい。本発明の可能な側面によれば、ユーザの論理設計用データはこのような変更に関する情報を用いて修正される。この設計データの修正は、設計データをその後使用すると、変更部分がその後の使用の一部として実装されるというような方法でなされるのが好ましい。
【０００８】
本発明の更なる可能な側面は、開発中のＦＰＧＡ実装とストラクチャードＡＳＩＣ実装間の機能等価性を形式的に証明することに関する。これを行うには、上記の２つの配置配線動作の出力を比較する。
【０００９】
更に、本発明の特徴、性質、およびさまざまな効果については、添付の図面および以下の詳細な説明により更に明らかとなる。
【詳細説明】
【００１０】
本明細書は、論理設計を特定のタイプのＦＰＧＡから特定のタイプのストラクチャードＡＳＩＣに（またはその逆）移行するという脈絡の中で本発明を説明するものである。この種のＦＰＧＡおよびストラクチャードＡＳＩＣについては、２００４年７月２日に出願のＣｈｕらによる米国特許出願第１０／８８４４６０号明細書、および２００５年２月３日に出願のＳｃｈｌｅｉｃｈｅｒらによる米国特許出願第１１／０５０６０７号明細書などの参考文献により詳細に説明されている。これらをここに参照することでそれらの全ての説明を組入れる。しかしながら、他の文献を参照しなくても本発明を理解できるようにするため、次のいくつかの段落および関連する図１乃至３は、上記のＳｃｈｌｅｉｃｈｅｒらの参考文献から再現したものである（微修正）。
【００１１】
ＦＰＧＡに挿入する基本論理回路構成要素または単位１０を説明するための例を図１に示す。このＦＰＧＡ構成要素回路（適合可能論理素子（“ＡＬＥ”）または適合可能論理モジュール（“ＡＬＭ”）とも呼ばれる）は、当該技術における技術者に周知のものであるため、本明細書では幾分簡略化したやり方で説明することがある。ＡＬＥ１０には、マルチプレクサ２２、２４、５２、５４、５６、６２、６４、６６、８２、８４、８６、９２、９４、９６、１０２、１１２、１２２、１２４、１２６、１３２、１３４、１３６、１５２、１５４、１５６、１６２、１６４、および１６６などが含まれる。これらのマルチプレクサのほとんどは、通常図面には表示されないプログラマブルランダムアクセスメモリ（“ＲＡＭ”）ビットによりプログラム可能に制御されるが（但し、図１のＲＡＭビット５８および６８は例示的なものである）、これらのマルチプレクサの一部は、デバイスの通常の動作中に変更可能な信号により動的に制御される。マルチプレクサ１１２は、この後者のタイプのマルチプレクサの例である。マルチプレクサ１１２を制御するには、Ｆ１をＡＬＥ１０に入力して行う。
【００１２】
ＡＬＥ１０にはルックアップテーブル（“ＬＵＴ”）３２、３４、３６、４２、４４、および４６なども含まれる。そのうち、ＬＵＴ３２と４２は４入力ルックアップテーブルである。これらのＬＵＴはそれぞれ、入力信号の論理結合である出力信号をそのＬＵＴに出力できるようにプログラムすることができる。
【００１３】
ＡＬＥ１０のその他の素子は、全加算器７２と７４、ＡＮＤゲート１２８と１３８、およびフリップフロップ１４２と１４４である。白丸で示した導体配線（例えば、接続１１５）がプログラマブル配線であるということは、配線するかしないかはユーザの自由であることを意味する。
【００１４】
ＡＬＥ１０のＬＵＴリソースは、ＡＬＥがＡＬＥへの最大６入力の論理結合を形成するに十分である。あるいは、２つのやや小さい機能が共通の入力をいくつか有することから、ＡＬＥ１０のＬＵＴリソースはこの２つの機能を実行するに十分であろう。例えば、ＡＬＥ１０が２つの５入力結合、２つの４入力結合などを形成することは可能であろう。
【００１５】
全加算器７２および７４は、ＡＬＥ１０の演算能力を高める。例えば、これらの素子により、ＡＬＥ１０は上位桁への桁上げ信号および下位桁からの桁上げ信号の処理など、２つの数の２進加算における２つの隣接位置を実行することが可能となる。
【００１６】
レジスター１４２および１４４（および関連回路）では、ＡＬＥ１０の信号を登録することも（レジスターにより）、登録を取り消すこともできる（レジスターをバイパスすることにより）。ＡＬＥで発生する信号を登録するのにＡＬＥ１０レジスターを使用する必要がなくなる。その代わりに、レジスターを用いて入力信号をＡＬＥに登録することもできる。レジスター１４２と１４４の一方または両方を単独レジスターモードで使用しながら、他のＡＬＥの回路を他の目的に使用することもできる。また、レジスター１４２と１４４は異なる非同期モードまたは同期モードで動作することもできる。“Ｄ”は各レジスターへの通常のデータ入力であり、“ＤＡＴＡ”は非同期負荷データである。
【００１７】
図２は、ストラクチャードＡＳＩＣに挿入する基本論理回路構成要素または単位２００の例を示している。本明細書における図２と、上述したＣｈｕａらの参考文献における図３とは同じものである。このため、本明細書では図２の説明を幾分簡略化することがある。構成要素２００は、ハイブリッド論理素子、すなわちＨＬＥと呼ばれることもある。
【００１８】
ＨＬＥ２００には、２入力マルチプレクサ２１０、ＮＡＮＤゲート２２０ａと２２０ｂ、およびインバータ２３０ａと２３０ｂなどが含まれる。また、ＨＬＥ２００には、いくつかの配線リソースなどが含まれ、その一部はマスクプログラマブルになっている。例えば、ＸｓはＡＳＩＣの作成に用いられるマスクを適宜カスタマイズすることにより、導体セグメントを希望に応じて相互に接続することも、しないことも可能な位置を特定する。同様に、Ｏｓは、比較的長距離の配線導体を使用できる１つ以上の回路層（図示せず）に必要に応じて接続可能な位置を特定する。更に、これらの接続と配線は、ＡＳＩＣの作成に用いられる１つ以上のマスクを適宜カスタマイズして行う。図２の導体配線における固定ドットも、交差導体間において必要に応じて行われる接続である。もう一度、これらの接続は、必要に応じてＡＳＩＣの作成に用いられる１つ以上のマスクを適宜カスタマイズして行うものである。
【００１９】
ＨＬＥ２００の論理機能がＡＬＥ１０の論理機能よりずっと劣っていることは明らかであるが（図１）、比較的少数の隣接もしくは近接するＨＬＥを合わせれば、ＡＬＥはＦＰＧＡに実装されたユーザの論理設計で実行する機能を実行することができる。例えば、図３は、３つのＨＬＥ２００ａ、ｂ、およびｃと、特殊な６入力論理結合を行うＡＬＥ１０のＬＵＴ回路３２／３４／ＥＴＣとが等価であることを示している。また、図３は２つ以上のＨＬＥ２００ｄおよびｅと、ＡＬＥ１０のフリップフロップ回路１４２または１４４（図３に示す６入力論理結合を実行するＡＬＥと同じＡＬＥのことがある）とが等価であることを示している。図３では、ＨＬＥ２００ａ〜ｅが大幅に簡略化されていることは理解されよう。図３には、概ね、実際に使用されているＨＬＥ回路素子と接続だけを示している。図２に示したその他のＨＬＥ回路はすべて、ＨＬＥ２００ａ〜ｅのそれぞれに含まれているが、図３を簡略化するためにこのディテールの一部は図３の描写から省略してある（または軽い線を用いて図示）。併用する複数のＨＬＥ２００（例えば、ＡＬＥのＬＵＴ回路で実行可能なものと等価の組合せ論理を実行するため、またはＡＬＥのフリップフロップ回路で実行可能なものと等価のレジスター機能を実行するため）は、ＨＬＥのクラスタ、複合ＨＬＥ、またはＣＨＬＥと呼ばれることもある。よって、図３は２つのＣＨＬＥ２０２ａおよび２０２ｂを示していることになる。
【００２０】
図４は、ＡＬＥ１０のアレイを含む例示的なＦＰＧＡ５００を示している。また、ＦＰＧＡ５００には入力／出力（“Ｉ／Ｏ”）ブロック５１０や位相同期ループ（“ＰＬＬ”）ブロック５２０、ランダムアクセスメモリ（“ＲＡＭ”）ブロック５３０、デジタル信号処理（“ＤＳＰ”）ブロック５４０など、各種“ハードブロック”が含まれている。これらのハードブロックの少なくとも一部は、特定の機能、または特定の機能のクラスからプログラマブルに選択した機能を実行するため、ハードワイヤードである。尚、ＦＰＧＡ５００には更に機能ブロック１０、５１０、５３０、５４０などをさまざまな方法で相互接続するため、少なくともある程度までプログラム可能な配線リソース５５０／５５２が含まれている。特に参照番号５５０はこれらリソースの配線導体に用いられ、参照番号５５２は導体５５０間のプログラマブル配線に用いられる。クロック信号（例えば、ＰＬＬ５２０からの）は、クロック分配リソース５６０／５６２により他の機能ブロックに分配可能であるが、これはある程度まで再プログラム化することが可能である。参照番号５６０はこれらリソースの導体に用いられ、参照番号５６２は導体５６０間のプログラマブル配線に用いられる。
【００２１】
図４はＦＰＧＡに挿入可能なものについての一般的な説明に過ぎないことは理解されよう。例えば、図４に示す以外に、他の種類の素子を加えてもよいし、図４に示す素子のうちの一部を除外してもよい。各種素子の数や配列が図４に示してあるものと異なっていてもよい。当然のことながら、ＦＰＧＡ５００はフィールドプログラマブルである。したがって、ユーザの希望に応じて膨大な数の各種回路機能をどれでも実装することができる。便宜上、本明細書ではこのような各種回路機能をユーザ論理設計と呼ぶことがある。
【００２２】
図５は、ＦＰＧＡ５００をプログラム化して実行可能にするユーザ論理設計を実行するために製造されるストラクチャードＡＳＩＣ６００を示している。更に、本発明では、ストラクチャードＡＳＩＣ６００はユーザの論理設計を実行するためにプログラム化されたＦＰＧＡ５００と等価なユーザの論理設計を実行するために製造される。一般的に、このような等価性が意味する所は、ユーザの論理設計を実行するためにプログラム化されるＦＰＧＡ５００と、その設計を実行するために製造されたストラクチャードＡＳＩＣ６００とは、相互置換が可能であるということである（例えば、５００／６００回路使用の大きい回路において）。一部の実施形態では、これからいくつかの偏差が生じる可能性があるが、通常、このような等価性が意味する所は、デバイス５００と６００のピン配列はどちらも同じであり（または、少なくともほぼ同じ）、デバイスのタイミングもどちらも同じであり（または、少なくともほぼ同じ）、そしてデバイスが実行する機能もどちらも同じであるということである（または、少なくともほぼ同じ）。しかしながら、デバイス６００は物理的にＦＰＧＡ５００より小さく、そして安価である（特に、大量の場合）。これは、ＡＳＩＣ６００がＦＰＧＡ５００をフィールドプログラマブルとするために用いられる「オーバヘッド」回路を必要としないからである。また、それは、ほとんどのユーザ論理設計において多くのＡＬＥ１０が十分に活用されるには至っていないと同時に、ＡＳＩＣ６００においては、ＡＬＥ１０の機能を実行するのに必要な数のＨＬＥ２００が、ＡＬＥ１０の代わりに使用されているからである。このため、ＡＳＩＣ６００は、特に指定のない限り等価なＦＰＧＡ５００のすべてのＡＬＥ１０の最大能力を複写するのに必要とするよりも少ない数のＨＬＥ２００を装備することができるようになっている。
【００２３】
ＡＳＩＣ６００がストラクチャードＡＳＩＣと呼ばれるのは、少なくともある特定の構成要素の基本となるものを備えているからである。これらの構成要素の基本は、ＡＳＩＣ６００のすべてのバージョンの作成に用いられるいくつかのマスクの実施形態である。例えば、これらはＨＬＥ２００、Ｉ／Ｏブロック６１０、ＰＬＬブロック６２０、ＲＡＭブロック６３０などのアレイの基本であってもよい。ブロックの数および配列（特に、ある特定のＦＰＧＡハードブロックの等価物）は、ＦＰＧＡ５００の対応する構成要素と同一もしくはほぼ同一のものであってよい。ＡＳＩＣ６００を「構造化させる」ための上記マスクに加えて、ＡＳＩＣ６００を作成するために用いられるマスクは更に、特定のユーザの論理設計をＡＳＩＣ６００に実装するために少なくとも、一部がカスタマイズされる。例えば、これらカスタマイズしたマスクはＨＬＷ内で（１）接続を行うことも、完了させることも可能であり、（２）ＣＨＬＥ内のＨＬＥ間において接続を行うことも、完了させることも可能であり、（３）ＣＨＬＥ間、ＣＨＬＥと他の構成要素６１０／６３０間、および／またはこのような他の構成要素間で接続を行うことも、完了させることも可能であり、（４）デバイス上にクロック信号を分配する（例えば、ＰＬＬブロック６２０から）ための接続６６０を行うことも、完了させることも可能である。これらのカスタマイズしたマスクはまた、各種構成要素の動作方法（例えば、シングルポートＲＡＭやデュアルポートＲＡＭなど、ＲＡＭブロック６３０のＲＡＭの種類）やＩ／Ｏブロック６１０のポートの種類（例えば、入力、出力など）、ＰＬＬブロック６２０の動作方法（例えば、印加したクロック信号がどの位の遅延で動作するか）などについて選択を行うことも可能である。
【００２４】
次に、本発明について具体的に説明する。重要な側面としては、（１）パラレルＦＰＧＡおよびストラクチャードＡＳＩＣの開発、（２）機能等価性を強制するための設計制約、（３）ＦＰＧＡおよびストラクチャードＡＳＩＣ機能等価性を証明するための形式手法、および（４）すべてのバックエンドストラクチャードＡＳＩＣ受け渡し情報の直接生成（すなわち、ユーザの論理設計を実装するためのストラクチャードＡＳＩＣのカスタマイズ方法を指定するデータの開発を制御できる情報）などが挙げられる。これらの４つの側面は本明細書の後続セクションにおいて考察する。
【００２５】
１．パラレルＦＰＧＡおよびストラクチャードＡＳＩＣの開発
前述したように、この設計方法論の重要な目標は、ＦＰＧＡとストラクチャードＡＳＩＣが機能的に等価であるように、１つの設計ソースからＦＰＧＡとストラクチャードＡＳＩＣ設計を共に生成できるようにすることである。
【００２６】
既存の方法論がサポートするのは、完成したＦＰＧＡ設計をストラクチャードＡＳＩＣに移行するか、またはＦＰＧＡをターゲットとするストラクチャードＡＳＩＣ設計を再合成することである（「ＡＳＩＣプロトタイピング」）。これらの技術ではストラクチャードＡＳＩＣアーキテクチャのコストとパフォーマンスのメリットが十分に得られないと同時に、インシステム検証に用いられるＦＰＧＡと製造に用いられる仕上げのストラクチャードＡＳＩＣとの間に強力な検証リンクを設けることができないのである。
【００２７】
本方法論は、従来のＦＰＧＡフローをミラーリングするストラクチャードＡＳＩＣに対するＨＤＬ−受け渡しファイル間の完全コンパイルフローの開発に基づいている。図６はこの概念を説明するものである。ユーザは、１つの設計ソース（例えば、ＨＤＬコード７００）からＦＰＧＡプログラミング命令７６０の製造へと導く上部フローパスを用いてＦＰＧＡをターゲットにするか、または受け渡し設計ファイル８６０（適切にカスタマイズされたストラクチャードＡＳＩＣの製造に必要なマスクを設計するのに必要な少なくともデータの一部の作成を直接またはほぼ直接制御するのに使用可能）の製造へと導く下部フローパスを用いてストラクチャードＡＳＩＣをターゲットにするかを選択することができる。どちらを選択しても、フローステップはほぼ同じである。
【００２８】
１例として、まず図６の上部フローを考察する。ある点で、最初のうちこの考察は比較的レベルが高いので、詳細については本明細書において後述する。ステップ７１０では、ユーザの論理設計のＨＤＬコード７００を合成してＦＰＧＡネットリスト７２２にする。可能な選択肢として、ＦＰＧＡネットリスト７２２をＡＳＩＣリソースガイドソフトウェア７２４で検査すれば、ＦＰＧＡネットリストを実装するＦＰＧＡのストラクチャードＡＳＩＣの等価物を製造するのに必要な能力を備えた１つ以上の使用可能ストラクチャードＡＳＩＣ製品を特定することが可能となる。これのほんの１例として、２つと４つのＰＬＬブロック６２０をそれぞれ含む使用可能ストラクチャードＡＳＩＣ製品が２つある場合、およびＦＰＧＡネットリスト７２２が２つのＰＬＬブロックだけを必要とする場合に、ＡＳＩＣリソースガイド７２４が２つのＡＳＩＣ製品のうちの第一の製品を用いてＦＰＧＡネットリスト７２２を実装できることを示すことがある（ＦＰＧＡネットリストが他のいかなる点においても該第一のストラクチャードＡＳＩＣ製品の能力を超えないと仮定して）。しかしながら、この機構７２４は全体がオプションなので、必要に応じて省くことができる。
【００２９】
図６の上部フローは、フロー要素７２０（フロー子要素７２２および（オプションの）フロー子要素７２４を含む）からフロー要素７３０に進むが、ここでは、ネットリスト７２２を特定のＦＰＧＡデバイスまたはデバイス系に対して配置配線する。（ステップ７３０は、フィッタおよびタイミング解析ステップとも呼ばれる。）このように、ステップ７３０は特定のＦＰＧＡデバイスまたはデバイス系の物理的制約を遵守している。これがＦＰＧＡポストフィットネットリスト７４０に結実する。尚、このポストフィットネットリストとは、いわゆるユーザの論理設計の論理ビューのことである。
【００３０】
次のステップは、アセンブラ７５０を経てＦＰＧＡポストフィットネットリスト７４０を渡すことである。これはユーザの論理設計の論理ビューをその設計の物理的表現、すなわち、ＦＰＧＡのプログラミングビットストリーム７６０に変換するものである。ステップ７６０からのデータを用いてＦＰＧＡを実際にプログラムすることにより、ＦＰＧＡにユーザの論理設計を実装することが可能になる。
【００３１】
次に、図６に示す下部フローパスについて説明する。合成ステップ８１０は上記の合成ステップ７１０と類似している（好ましくは同一、または少なくともほぼ同一）。したがって、ステップ８１０では上記のＦＰＧＡネットリスト７２２と類似した（好ましくは同一、または少なくともほぼ同一）ＦＰＧＡネットリスト８２２が生成される（ユーザの論理設計のＨＤＬ指定から）。しかしながら、ＦＰＧＡネットリストは、実際にはユーザの論理設計のＦＰＧＡ実装を生成するためには使用しないため、「隠し」と呼ばれている。その代わりに、フローステップ８２０内では、隠しＦＰＧＡネットリスト８２２がストラクチャードＡＳＩＣネットリスト８２４に変換される。以下に詳述するように、この変換はネットリスト８２２を実装するＦＰＧＡとネットリスト８２４を実装するＡＳＩＣ間の機能等価性が保証されるような方法で行われる。
【００３２】
ネットリスト変換ステップ８２０からのストラクチャードＡＳＩＣネットリスト８２４は、フィッタおよびタイミング解析ステップを通過してＡＳＩＣポストフィットネットリスト８４０を生成する。これはストラクチャードＡＳＩＣネットリスト８２４を特定のストラクチャードＡＳＩＣデバイスまたはデバイス系に対して配置配線するもので、該デバイスまたはデバイス系の物理的制約を遵守している。このように、ステップ７３０がＦＰＧＡ専用であるのに対し（または少なくとも主にＦＰＧＡ用）、ステップ８３０はＡＳＩＣ専用である（または少なくとも主にＡＳＩＣ用）。もう一度、ＡＳＩＣポストフィットネットリストは、ユーザの論理設計の論理ビューと呼ばれるものである。
【００３３】
図６に示す下部フローにおける次のステップは、アセンブラ８５０を経てＡＳＩＣポストフィットネットリスト８４０を渡してストラクチャードＡＳＩＣ受け渡し設計ファイル８６０を生成することである。例えば、設計ファイル８６０は、ストラクチャードＡＳＩＣを実際にカスタマイズするのに必要なデータを生成するための処理を更に行うことにより、ストラクチャードＡＳＩＣにユーザの論理設計を実装できるようにするストラクチャードベリログネットリストでもよい。
【００３４】
尚、図６における上部フローおよび下部フローは、同時にまたは別々の時間に実行可能である。最初にユーザの論理設計をＦＰＧＡに実装するだけでよい場合は、当初上部フローだけを実行すればよい。後でユーザの論理設計を機能的に等価なストラクチャードＡＳＩＣに実装すればよい場合には、後で下部フローを実行すればよい。更なる例として、最初にユーザの論理設計をストラクチャードＡＳＩＣに実装するだけでよい場合は、当初は下部フローだけを実行すればよい。しかし、後で下部フローを実行することによってユーザの論理設計を機能的に等価なＦＰＧＡに実装可能となることを、この下部フローが保証するということは前述から明らかであろう。
【００３５】
図６および前述したことから注意すべき別の点は、以下の通りである。ＦＰＧＡおよびストラクチャードＡＳＩＣコンパイラフローは、根底となる各デバイスアーキテクチャを直接サポートする目的で設定されているため、２つの異なるアーキテクチャの基本的なメリットは失われていない。言い換えれば、ユーザの論理設計を機能的に等価なＦＰＧＡとストラクチャードＡＳＩＣに実装することを実現可能にするという目標は、それらの実装を実現していく上でどちらのタイプのアーキテクチャを使用しても非効率にもならないし、不経済にもならないということである。
【００３６】
図６に示すフローがユーザの論理設計を機能的に等価なＦＰＧＡとストラクチャードＡＳＩＣに実装することを実現できるようにするため、図６のフローを使用するＦＰＧＡとストラクチャードＡＳＩＣは、ハードブロックの製造技術と機能性が同じであるように設計されている。（念のため、図４のハードブロックの例は５１０、５２０、５３０、および５４０である。図５のハードブロックの例は６１０、６２０、および６３０である。）また、デバイスアーキテクチャに選択する表現は同じ抽象化でなければならない。図１に示す例示的な実施形態においては、ＦＰＧＡとストラクチャードＡＳＩＣコンパイラフローの双方に対してＦＰＧＡ抽象化モデルが選択されている。ＦＰＧＡにおける機能オブジェクトの各タイプは、原子タイプとして表現されている。典型的な原子としては、Ｉ／Ｏ、ＲＡＭ、ＤＳＰ、ＰＬＬ、レジスター、および論理などが挙げられる。ストラクチャードＡＳＩＣは同じ一組の原子を有するが、ストラクチャードＡＳＩＣにふさわしい属性を有する。例えば、本明細書で一般的に想定した例示的な実施形態では、ＦＰＧＡの組合せ論理原子は６入力機能を表現することが可能である。この場合、ＦＰＧＡアーキテクチャは完全６入力ルックアップテーブル（“ＬＵＴ”）をサポートしている。対応するストラクチャードＡＳＩＣにおける組合せ論理原子は、ストラクチャードＡＳＩＣ合成セルライブラリに含まれている６入力機能をサポートできるに過ぎない。
【００３７】
ＦＰＧＡとストラクチャードＡＳＩＣに共通の論理表現を選択する他に、本発明ではユーザのＨＤＬコード７００の再合成に頼らずに、単一合成技術７１０／８１０を用いてＦＰＧＡネットリスト７２２とストラクチャードＡＳＩＣネットリスト８２４の双方を生成する。この単一合成技術では、最終のデバイス固有技術マッピング７２０または８２０まで、ＦＰＧＡとストラクチャードＡＳＩＣ設計の双方に対して同じ合成ステップを実行する。この最終ステップは、ＦＰＧＡに技術マッピングを行い、次いで（図６の下部フローパスの場合）ストラクチャードＡＳＩＣ合成セルライブラリへのセル毎の変換を実行することにより行われる。この変換は、図６のフロー要素８２０内のフロー要素８２２からフロー要素８２４に向けた矢印で表している。合成がＦＰＧＡをターゲットにしている場合には（図６の上部フローパス）、ＦＰＧＡ技術マッピングの結果７２２を得て合成が停止する。合成がストラクチャードＡＳＩＣをターゲットにしている場合には（図６の下部フローパス）、ストラクチャードセルライブラリへの変換を経て合成は続行する。最終結果は、明確に定義された共通の構造および完全な機能等価性を有するＦＰＧＡネットリスト７２２および／またはストラクチャードＡＳＩＣネットリスト８２４である。
【００３８】
２．機能等価を強制するための設計制約
論理的なＦＰＧＡ方式抽象化により、配置配線動作７３０／８３０時に計算機援用設計ツールフローが比較的単純な各種物理合成方式変換を行うことが可能となる。例えば、これらの変換には、レジスターコピーおよび／またはＩ／Ｏ、ＲＡＭ、またはＤＳＰブロックへのレジスターパッキングなどが挙げられる。レジスターコピーの実例は、コアロジックのレジスターがデバイスの２出力ピンを供給する場合である。コアロジックソースに２つの個別レジスター、２つの各Ｉ／Ｏブロックの１つずつを供給させたほうがよい（例えば、タイミングの観点から）。配置配線ステップ７３０／８３０では、デバイスパフォーマンスの向上を容易にするためにこのネットリストを修正することができる。レジスターパッキングの実例は、デバイスのタイミングおよび構成要素利用度を向上させるために、レジスターをコアロジックからＩ／Ｏ、ＲＡＭおよび／またはＤＳＰブロックにシフトすることである。もう一度、配置配線ステップ７３０／８３０はこうしたネットリスト修正を行うことが可能である。
【００３９】
本来、先行段落で述べたタイプのネットリスト修正は、特定のデバイス平面図およびタイミング情報を考慮に入れるため、デバイス固有の最適化である。また、これらの修正はＦＰＧＡ設計における最大潜在性能の実現にも重要である。ＦＰＧＡとストラクチャードＡＳＩＣとの間で１対１機能等価性を得るためには、配置配線７３０／８３０時にこれらの変換のすべてを制御し、ＦＰＧＡとストラクチャードＡＳＩＣ双方の同一変換を実現させることが望ましい。
【００４０】
本発明では２つの部分で前述したことを実現する。第一は、配置配線コンパイラ７３０／８３０で実行可能なすべての変換に、変換が行われるものを正確に制御できる「割当」を追加させることである。これは、従来のＡＳＩＣバックエンドフローで行われる技術変更指示形式修正と概念上で類似性がある。その違いは、これが論理原子表現に対して行われ、ＦＰＧＡとストラクチャードＡＳＩＣ設計の双方にミラーリングされることである。
【００４１】
前述の第二部は、（ａ）元のＦＰＧＡまたはストラクチャードＡＳＩＣ設計にバックアノテートすると、その結果が再生されるか、または（ｂ）ＦＰＧＡのためのコンパニオンストラクチャードＡＳＩＣ設計に移行すると（またはストラクチャードＡＳＩＣのためのＦＰＧＡ設計）、元のＦＰＧＡに匹敵する機能的に等価なストラクチャードＡＳＩＣ結果が生成されるような方法で通常の配置配線７３０／８３０時にこれらの変換割当を記録する方法である。
【００４２】
図７ａは本発明に係る前述のことを実現可能にする方法についての例示的な実施形態を示している。（図７ａは、次に考察する修正以外は図６と同じである。）図７ａの上部フローを使用する場合、フィッタおよびタイミング解析フロー要素７３０によって行われる変換はいずれも、原ＨＤＬコード７００のデータの一部として記録される。これはフローパス７３２を介して行われる。続いて、ＨＤＬコード７００を図７ａの下部フローで処理する場合、下部フローで同じ変換を行うことができる（例えば、配置配線ステップ８３０）。このように、例えば、ユーザの論理設計７００のＦＰＧＡ実装に望ましいことが判明したレジスターコピーが、その後、その設計のストラクチャードＡＳＩＣ実装時にコピーされる（ステップ８３０により）。
【００４３】
前述の別の実例として、ユーザの論理設計７００のストラクチャードＡＳＩＣ実装に望ましいことが判明した変換は（ステップ８３０において）、フローパス８３２を介して設計７００のデータの一部となる。このように、図７ａにおける上部フローの後続パフォーマンスにはいずれも、論理設計７００のＦＰＧＡ実装を開発する過程でその変換をコピーすることが含まれる。
【００４４】
図７ｂは図７ａに示したもののいくつかの代替物である。図７ｂでは、ユーザの論理設計７００のＦＰＧＡ実装に望ましいことが判明した（ステップ７３０において）変換は、フローパス７３８を介して技術変更指示ツール７３６に報告される。その後、下部フローの後続パフォーマンスでは、その変換がフローパス７３８を介してＡＳＩＣポストフィットネットリスト８４０に適用される技術変更指示となる。ＡＳＩＣポストフィットネットリストはこの技術変更指示情報に従って修正される。この修正もまた、フローパス７３９を介してＨＤＬコード７００の一部となる。
【００４５】
また、図７ｂは、先行段落で述べたタイプのフローは反対方向に進行可能であることを示している。このため、ユーザの論理設計７００のストラクチャードＡＳＩＣ実装に望ましいことが判明した変換は（ステップ８３０以後）、フローパス８３４を介して技術変更指示ツール７３６に報告される。その後、上部フローの後続パフォーマンスのいずれかにおいて、その変換がフローパス８３８を介してＦＰＧＡポストフィットネットリスト７４０に適用される技術変更指示となる。ＦＰＧＡポストフィットネットリストはこの技術変更指示情報に従って修正される。この修正もまた、フローパス８３９を介してＨＤＬコード７００の一部となる。
【００４６】
２つの先行段落で述べたフロー方向の一方または両方については、本発明のさまざまな実施形態で規定可能である。
【００４７】
本発明の関連する（任意の）側面は以下の通りである。上記の方法で設計を制約することにより、異なるレベルの機能等価性をサポートできるコンパイラフローを持つことが可能となる。他のタイプの変換を制約しつつ（すなわち、ユーザの論理設計を他のタイプのものに実装する際に変換の複写を要求すること）、変換が制約されるものを変更することにより（例えば、制約なしにいくつかのタイプの変換を行わせることにより、すなわち、ユーザの論理設計を他のタイプのものに実装する際の変換の複写要件）、ＦＰＧＡとストラクチャードＡＳＩＣコンパイラ間にある程度の自由が許されるようになる。例えば、他の形式手法を用いて変換を検証することが容易なため、他のタイプの論理設計実装時の複写要件を必要とせずに、レジスターをコピーすることが可能となる。しかし、Ｔｃｏ遅延のクリティカルタイミングの性質上、両方のタイプの論理設計実装時にＩ／Ｏレジスターパッキングを必ず複写しなければならないことがある。
【００４８】
３．ＦＰＧＡとストラクチャードＡＳＩＣとの機能等価性を証明するための形式手法
形式論理等価性の技術における当業者は、配置配線７３０／８３０時に、物理的変換に加えた制約と組み合わせた初期ＦＰＧＡとストラクチャードＡＳＩＣのネットリスト７２２および８２４を生成するために用いられる本発明のスト構造化合成方法論が、その結果（例えば、７４０および８４０）の論理等価性を可解命題であることを証明することを理解されよう。その一方で、これはネットリスト７４０および８４０の論理部分を検証するだけであって、ネットリストの完全な機能性を検証するものではないことも当該技術における技術者にとって明白であろう。本発明ではネットリストの非論理部分も等価であることを証明するため、従来の論理等価性チェック（“ＬＥＣ”）検証について更に詳しく述べる。これは、根底となる設計の複雑性とは独立して決定論的方法で行う。
【００４９】
図８ａおよび図８ｂは、ＦＰＧＡネットリスト７４０とストラクチャードＡＳＩＣネットリスト８４０間の機能等価性の証明に関する本発明の側面における例示的な実施形態を示している。図８ａおよび図８ｂに図示する方法は、（１）デバイスの論理構造の機能等価性についての証明に関する図８ａに示すステップ、および（２）残りのデバイスの機能等価性についての証明に関する図８ｂに示すステップの２つの主要部分を含むと考えられる。
【００５０】
ステップ９１０では、ネットリスト７４０／８４０のうちの一方にある各レジスターを、もう一方のネットリスト内の対応するレジスターを比較する。
【００５１】
ステップ９１２では、ネットリスト７４０／８４０のうちの一方にある各非論理ブロックの入力と出力を、他のネットリスト内の対応する非論理ブロックの入力と出力にマッチングさせる。この発明の設計方法論の前提は、ＦＰＧＡとストラクチャードＡＳＩＣが潜在的用途に利用可能な同じ非論理ブロックリソースを具備するものとしているため、これらの非論理ブロックとそれらの入力と出力は一致していなければならない。これらの意味は、例えば、Ｉ／Ｏブロック５１０と６１０はほぼ同じリソースであり、ＰＬＬブロック５２０と６２０はほぼ同じリソースであり、そしてＲＡＭブロック５３０と６３０はほぼ同じリソースであるということである。（本実施形態においてこの例外は、ＦＰＧＡ  ＤＳＰブロック５４０が、ＡＳＩＣの専用ＤＳＰブロックではなく、ストラクチャードＡＳＩＣ６００の汎用論理構造２００に実装されることである。これは先行文章で述べた一般的な例から逸脱した省略可能なものである。この逸脱にもかかわらず、ＦＰＧＡとストラクチャードＡＳＩＣ双方のＤＳＰブロックの論理原子表現は、物理的実装が異なっていても依然として同じである。）
【００５２】
ステップ９１４では、すべてのＦＰＧＡ論理セル（すなわち、ＡＬＥ１０）の組合せ出力をストラクチャードＡＳＩＣネットリストのノードにマッチングさせる。本明細書で採用した構造化合成（上述）とは、単一のＦＰＧＡ  ＡＬＥ１０に組合せ論理を実装するのに必要なストラクチャードＡＳＩＣライブラリセルが最大数存在することを意味する。このため、ストラクチャードＡＳＩＣには、１つのＨＬＥ２００、１つのＣＨＬＥ（所定の比較的少ない、複数のＨＬＥの）、または所定の比較的少ない、複数のＣＨＬＥを用いてＦＰＧＡ  ＡＬＥ１０の組合せ論理が実装されている。また、１つのＦＰＧＡ  ＡＬＥ１０を実装するのに用いられるＨＬＥ／ＣＨＬＥリソースが他の目的（例えば、他のＡＬＥ１０の機能性を実装することなど）に使用されることはない。こうしたすべてのことがステップ９１４のマッチングを簡単なタスクにするのである。
【００５３】
ステップ９１４の結論は、多数のマッチングノードが特定されたことである。また、これらのマッチングノード間のネットリストの最大サイズは境界される（例えば、最大ＡＬＥ機能性を実装するのに必要な各ＡＬＥ１０の最大組合せ論理機能および最大数のＨＬＥ／ＣＨＬＥセルによって）。また更なる考察は、ＦＰＧＡおよびストラクチャードＡＳＩＣのネットリストを生成するのに用いられる合成技術の本質について行う（例えば、ＦＰＧＡ  ＡＬＥ論理からその論理のＨＬＥ／ＣＨＬＥ実装へのライブラリ変換や、１つのＡＬＥ１０が提供する機能性と１つのＨＬＥ／ＣＨＬＥリソースクラスタとの間には１対１の対応があるという事実の利用など）。本発明によれば、こうした考察すべてにより、２つのネットリストにおけるマッチングノード間の論理の二分決定グラフ（“ＢＤＤ”）表現を作成する形式手法を用いて、このＢＤＤペアのそれぞれが等価であることを証明し、２つのネットリスト７４０／８４０間の形式比較ができることを保証することが可能となる。これは図８ａのステップ９２０および９２２において行うものである。このような等価性の例外もしくは可能性のある例外（あってはならない）については、ステップ９２４において記録される。上述した構造化合成や制約物理的変換がなければ、自動等価性証明手法がメモリ要件またはランタイム要件でブローアップさせるケースがあることも考えられる。
【００５４】
ステップ９３０ではネットリスト７４０／８４０の非論理部分の処理を開始する。ステップ９３０では、ネットリスト７４０／８４０のうちの一方の非論理原子毎に、もう一方のネットリスト内の対応する原子を特定する。更に、両方のネットリストにあるこのような対応する非論理原子の存在は、上述したように、本明細書で用いている構造化合成および配置配線物理的合成制約の必要条件である。
【００５５】
ステップ９３２では、対応する各非論理原子ペアの非論理原子のパラメータ情報を比較する。Ｉ／Ｏブロック５１０／６１０のパラメータ情報の例としては、Ｉ／Ｏブロックが入力であるのか、それとも出力であるのか、Ｉ／Ｏブロックのレジスターが使用されているのかどうかなどが挙げられる。ＲＡＭブロック５３０／６３０のパラメータ情報の例としては、ＲＡＭブロックがシングルポートＲＡＭであるのか、それともデュアルポートＲＡＭであるのか、ＲＡＭの幅、入力側でクロックを使用するもの、出力側でクロックを使用するものなどが挙げられる。ステップ９３２で述べたように、マッチングさせるべきパラメータは、機能性を制御するものである。非論理原子を特定のタイプのデバイス（例えば、ＦＰＧＡまたはストラクチャードＡＳＩＣ）に物理的に実装する方法に関するパラメータは、無視して構わない。位置情報はこの後者のタイプのパラメータ情報の例であり、これはステップ９３２で述べたように無視しても構わない。ステップ９３２で比較した予測されるパラメータの類似性の例外もしくは可能性のある例外については、ステップ９３４において記録される（このような例外はあってはならない）。
【００５６】
ネットリスト７４０／８４０のすべての部分に対して先行ステップを実行した後で、ステップ９４０から最後までを実行することができる。ステップ９４０では、非等価性の可能性がある領域の記録（ステップ９２４および／または９３４において）をレビューする。ステップ９４０の結果が否定的な場合は、ステップ９４４を実行してネットリスト７４０／８４０の機能等価性が証明されていることを確認する。一方、ステップ９４０の結果が肯定的な場合は、ステップ９２４を実行してネットリスト７４０／８４０が機能的に等価ではないことを確認し、非等価性の可能性があることが判明した詳細を報告する。
【００５７】
ステップ９３２に戻って説明する。特定情報によっては、２つの原子が機能的に等価であるかどうかを決定するために「知的」比較を必要とする場合がある。例としては、特定の量の入力クロック信号の遅延を実装するＰＬＬブロック５２０／６２０が挙げられる。ＰＬＬが実装する遅延量は、ＰＬＬに関連付けられたパラメータ設定によって決まる。しかし、ＰＬＬ回路はＦＰＧＡとストラクチャードＡＳＩＣでは異なることがあるため、これら２つのタイプのデバイスに対して同じ遅延量を生成するためのパラメータ設定は異なっていてもよい。２種類のデバイスにおいて同じ遅延量の場合は、これらの時間遅れ連鎖設定が異なることを見込んでいることを比較ツール（ステップ９３２）が知的に決定できるようにしなければならない。例えば、ステップ９３２では、実際に２種類のデバイスの時間遅れ連鎖設定が異なっていても同じ結果がもたらされるため（すなわち、同じ遅延）、量的に異なっているにもかかわらず、機能的に等価であることを示すテーブルを利用することができる。
【００５８】
４．すべてのバックエンドストラクチャードＡＳＩＣ受け渡し情報の直接生成
次に、並列ＦＰＧＡとストラクチャードＡＳＩＣコンパイラフローが共通の論理抽象化を用いて機能的に等価なＦＰＧＡとストラクチャードＡＳＩＣ設計を実現させる方法について説明してきた。ここで、このビューがバックエンドフロー（本明細書では図示せず）で処理される特定の物理的ビュー８６０にどのように変換され、最終的にストラクチャードＡＳＩＣデバイステープアウトの一連のファイル（当該技術における技術者によりＧＤＳＩＩファイルと呼ばれる）に結実するかを説明する。
【００５９】
フロントエンドフロー（本明細書で図示および説明）によりバックエンドを経て駆動される完全機能ネットリスト８６０を直接生成することが、この発明の目標である。このネットリストには、（１）配線用挿入バッファ、（２）配置制約、（３）概略配線制約、および（４）タイミング制約（例えば、ユーザが最初に指定するもの）が含まれている。配置制約の例は、Ｉ／Ｏピンをデバイスに配置する必要のある場合である。このように、ネットリスト８６０は直接バックエンドをガイドしてバックエンドにフロントエンドの配置配線結果を再生させる。バックエンドのこのネットリストに追加可能な唯一の情報は、ストラクチャードＡＳＩＣの基本アーキテクチャからのテスト回路情報や専用接続情報などの非ユーザ情報である。例えば、Ｉ／Ｏレジスターのスキャンテストを行うための回路がバックエンドに追加可能なのは、この回路はユーザが変更することも、またユーザにアクセスすることもできないからである。同じことがビルトインセルフテスト回路にも言える。
【００６０】
このバックエンドネットリスト８６０を直接生成するという目標の背景にある理由は、パフォーマンスおよび配線能力を予測するフロントエンドに精密なサインオフ品質ツールを提供できるようにするためである。フロントエンドが気付かない変換をバックエンドにおいて行うと、設計方法論全体が所望の精度を実現することを妨げてしまうことがある。そのため、このようなバックエンド変換は忌避している。また、バックエンドネットリスト８６０との密結合だけが元のユーザタイミング制約または上記のＥＣＯタイプ制約をバックエンドに正確に伝えることができるのである。
【００６１】
この物理的レベルでバックエンドにネットリスト８６０を提供するためには、新規の物理原子抽象化をアセンブラ８５０に導入、実装することである。前述の論理原子（例えば、ネットリスト７４０および８４０の）は、ＦＰＧＡとストラクチャードＡＳＩＣとの間に共通の論理機能性の表現を可能とするのに対し、物理原子はバックエンドネットリスト８６０内のセルと１対１で対応するようになっている。論理原子（例えば、ネットリスト７４０／８４０の）はセルのクラスを表わしている。アセンブラ８５０は、これらを「ｃ番号」およびパラメータ表示と呼ばれるものと組合せることによってネットリスト８６０に含めるためのものにする。ｃ番号とは、物理原子の実装に用いられる特定の回路図を指定するためにバックエンドフローで用いられる回路図識別子のことである。例えば、Ｉ／Ｏブロック５１０／６１０のｃ番号は、（１）Ｉ／Ｏブロックが最終的、物理的、ストラクチャードＡＳＩＣデバイスに配置される場所（例えば、デバイスの左側または右側など）や、（２）そのブロックの機能性（例えば、それが汎用Ｉ／Ｏ（“ＧＩＯ”）であるのか、それともメモリインタフェースＩ／Ｏ（“ＭＩＯ”）であるのかなど）によって異なってくることがある。上記で言及したパラメータ表示とは、ＦＰＧＡ方式ハードブロックプログラミングに関するフロー要素７６０におけるＦＰＧＡプログラミング命令のようなものである。このようなＲＡＭブロック５３０／６３０のパラメータの例は、データ入力バスの幅やデータ出力バスの幅などであろう。
【００６２】
論理原子およびそれらの後配置配線情報（ネットリスト８４０のものとして）をバックエンドにより処理可能な状態にある物理原子に翻訳するのは、アセンブラモジュール８５０のジョブである。
【００６３】
図９にアセンブラフロー要素８５０の例示的な実施形態を示している。ステップ１０１０では、ＡＳＩＣポストフィットネットリスト８５０の論理ブロック毎に、適切な物理ブロックタイプを検索する。次いで、ステップ１０２０では、論理ブロック上（ネットリスト８４０の）のパラメータを物理ブロック上の適切なパラメータ値に変換する。例えば、図１０はＣＨＬＥ論理ブロックの場合に上記をどのように行うかを示している（ステップ１１１０）。この場合、ＣＨＬＥ論理セルは論理ネットリスト８４０から物理ネットリスト８６０に１対１で直接マッピングされる。どちらのネットリストでも同一表現が使用可能である。図１１は、この場合、Ｉ／Ｏブロックのステップ１０１０および１０２０におけるパフォーマンスのもう１つの例である。ステップ１１４０は、ネットリスト８４０におけるＩ／ＯがＩ／Ｏの機能性および配置に応じて、数個のＩ／Ｏ原子に分かれることを示している。次いで、ステップ１１５０では、元の論理Ｉ／Ｏ原子に使用したパラメータに基づいてこれらの物理Ｉ／Ｏ原子のそれぞれに適切なパラメータ情報が与えられる。ステップ１１４０が示すように、例えば、メモリインタフェースＩ／Ｏは物理Ｉ／Ｏバッファおよび別個の物理ＤＤＲ（ダブルデータレート）インタフェース原子として物理的に実装することが可能である。更に、図１２は上記ステップ１０１０および１０２０のパフォーマンスのまた更なる例を示している（ステップ１１８０）。この場合の例はＲＡＭである。ステップ１１４０では、マッピングは論理ＲＡＭ原子（それぞれ、各原子にアドレス入力がコピーされたＲＡＭブロック（またはＲＡＭスライス）の１つの論理出力を表している）から、ＲＡＭ出力のすべてをサポートする単一アドレスバスを有する適切なタイプの物理ＲＡＭブロック（例えば、Ｍ４Ｋとして周知のタイプのＲＡＭ、またはＭ−ＲＡＭとして周知のタイプのＲＡＭ）へと行われる。また、ステップ１１４０はｃ番号がどのようにネットリスト８６０に含めるものを検索するかを図示している。
【００６４】
図９に戻って説明する。ネットリスト８４０内のブロックはすべて、ステップ１０１０および１０２０のように変換される。続いて、ステップ１０３０を実行してこれらの変換物の結果をキャプチャするストラクチャードベリログネットリストを生成する。最後に、ステップ１０４０を実行して、配置、配線、およびタイミング制約を追加する。例えば、ステップ１０４０の配線部分は、ネットリスト８４０の論理ポートからネットリスト８６０の適切な物理ポートに接続を移動するために適切な変換を行うものである。この最終結果は受け渡し設計ファイル８６０である。
【００６５】
図１３は本発明の他の可能な側面を図示している。これは、本発明に係る１つ以上の方法を少なくとも部分的に行うための機械可読命令１２１０（例えば、コンピュータプログラム）で符号化した機械可読媒体１２００（例えば、磁気ディスク、光ディスク、磁気テープなど）である。
【００６６】
前述したところは本発明の原理を説明するためのものであって、本発明の範囲と精神から逸脱することなく、当該技術における技術者によって種々の変更は可能である。例えば、本明細書に示したＡＬＥおよびＨＬＥの作成は説明するためのものであって、代わりに必要に応じて他の作成を使用しても差し支えない。
【図面の簡単な説明】
【００６７】
【図１】当該技術における技術者に周知のＦＰＧＡ回路の例示的な基本単位の略ブロック図である。
【図２】本発明のある特定の側面を説明する上で有用なストラクチャードＡＳＩＣ回路の例示的な基本単位の略ブロック図である。
【図３】ＦＰＧＡとストラクチャードＡＳＩＣ回路のある特定の、例示的な回路機能の等価な実装を示す略ブロック図である。
【図４】本発明のある特定の側面を説明する上で有用な例示的且つ周知のＦＰＧＡ回路の代表的な部分の略ブロック図である。
【図５】本発明のある特定の側面を説明する上で有用である例示的なストラクチャードＡＳＩＣ回路の代表的な部分の略ブロック図である。
【図６】本発明に係る例示的な回路設計フローを示す略ブロック図またはフローチャートである。
【図７ａ】本発明に係る追加可能フローパスを有する図６に類似している。
【図７ｂ】本発明に係る追加可能フローパスを有する図６に類似している。
【図８ａ】本発明に係る図６、図７ａ、および図７ｂのものと似たフローで実行可能な追加ステップの総合簡易フローチャートである。
【図８ｂ】本発明に係る図６、図７ａ、および図７ｂのものと似たフローで実行可能な追加ステップの総合簡易フローチャートである。
【図９】図６、図７ａ、および図７ｂのいずれか一部の例示的な実施形態を詳細に示す簡易フローチャートである。
【図１０】特定のタイプの回路ブロックに関する図９の一部の例示的な実施形態を示す簡易フローチャートである。
【図１１】他の特定のタイプの回路ブロックに関する図１０に類似している。
【図１２】更に他の特定のタイプの回路ブロックに関する図１０および図１１に類似している。
【図１３】本発明の可能な側面に係る例示的な機械可読媒体の略ブロック図である。
【図１】
2006286000.tif 000003
【図２】
2006286000.tif 000004
【図３】
2006286000.tif 000005
【図４】
2006286000.tif 000006
【図５】
2006286000.tif 000007
【図６】
2006286000.tif 000008
【図７ａ】
2006286000.tif 000009
【図７ｂ】
2006286000.tif 000010
【図８ａ】
2006286000.tif 000011
【図８ｂ】
2006286000.tif 000012
【図９】
2006286000.tif 000013
【図１０】
2006286000.tif 000014
【図１１】
2006286000.tif 000015
【図１２】
2006286000.tif 000016
【図１３】
2006286000.tif 000017