(57)【要約】【課題】プログラム可能なロジックデバイスをプログラムする方法を提供すること。【解決手段】マスクプログラム可能なロジックデバイス（ＭＰＬＤ）に対するユーザーのロジック設計は、互換性を有するユーザープログラム可能なロジックデバイス（ＵＰＬＤ）上で設計されＭＰＬＤに移行され得る、または直接ＭＰＬＤ上で設計され得る。設計がＵＰＬＤ上でなされる場合には、目標のＭＰＬＤの制約（例えば、デバイスの間の差異）が考慮され、その結果、移行は成功する。設計が直接ＭＰＬＤ上でなされる場合には、その設計を試験のためにＵＰＬＤに移行することをユーザーが意図するときに、互換性を有するＵＰＬＤの制約が考慮される。これは、ロジック設計のＵＰＬＤとＭＰＬＤとの間で行き返りの移行が意図される場合にのみ、特徴の一致が使用され得ることを意味する。移行を助長するためにデバイスのペアの間の固定されたマッピングが生成され得る。【選択図】図４
2010182327.tif 000002
【特許請求の範囲】
【請求項１】
一つ以上の所望の機能を実行するマスクプログラムされたロジックデバイスを生成するために、マスクプログラム可能なロジックデバイスをプログラムする方法であって、該方法は、プロセッサと入力手段とを備えているコンピュータによって実行され、
該方法は、
該入力手段が、該マスクプログラム可能なロジックデバイスと互換性を有するユーザープログラム可能なロジックデバイスに対するプログラミングを受信することであって、該ユーザープログラム可能なロジックデバイスは、該プログラミングを用いてプログラムされた場合に、該一つ以上の所望の機能を実行するように構成されている、ことと、
該プロセッサが、該プログラミングをコンパイルすることによって、一つ以上のユーザープログラム可能なロジックデバイス設定ファイルを生成することと、
一つ以上のマスクプログラム可能なロジックデバイス設定ファイルを含む、該マスクプログラム可能なロジックデバイスに対するプログラミングを生成するために、該プロセッサが、第１の変換関数を使用して、該一つ以上のユーザープログラム可能なロジックデバイス設定ファイルにおいて動作することと、
該マスクプログラム可能なロジックデバイスに対する該プログラミングを該ユーザープログラム可能なロジックデバイスに対する導出されたプログラミングに変換するために、該プロセッサが、第２の変換関数を使用することと、
該プロセッサが、該ユーザープログラム可能なロジックデバイスに対する該導出されたプログラミングを試験することと
を包含する、方法。
【請求項２】
前記試験することは、前記プロセッサが、前記導出されたプログラミングを、前記ユーザープログラム可能なロジックデバイスに対して設計された前記プログラミングと比較することを包含する、請求項１に記載の方法。
【請求項３】
一つ以上の所望の機能を実行するマスクプログラムされたロジックデバイスを生成する
ために、マスクプログラム可能なロジックデバイスをプログラムする方法であって、該方法は、プロセッサと入力手段とを備えているコンピュータによって実行され、
該方法は、
該入力手段が、該一つ以上の所望の機能を実行するために、該マスクプログラム可能なロジックデバイスに対するプログラミングを受信することと、
該プロセッサが、該プログラミングをコンパイルすることによって、一つ以上のマスクプログラム可能なロジックデバイス設定ファイルを生成することと、
一つ以上のユーザープログラム可能なロジックデバイス設定ファイルを含む、該マスクプログラム可能なロジックデバイスと互換性を有するユーザープログラム可能なロジックデバイスに対するプログラミングを生成するために、該プロセッサが、変換関数を使用して、該一つ以上の生成されたマスクプログラム可能なロジックデバイス設定ファイルにおいて動作することと
を包含する、方法。
【請求項４】
前記ユーザープログラム可能なロジックデバイスに対するプログラミングを生成した後、前記プロセッサが、前記マスクプログラムされたロジックデバイスを生成するために、該一つ以上のユーザープログラム可能なロジックデバイス設定ファイルおよび該一つ以上のマスクプログラム可能なロジックデバイス設定ファイルを処理することをさらに包含する、請求項３に記載の方法。
【請求項５】
前記処理することは、
前記プロセッサが、前記一つ以上のユーザープログラム可能なロジックデバイス設定ファイルの少なくとも一つを逆アセンブルして、ネットリストを生成することを包含する、請求項３に記載の方法。
【請求項６】
前記処理することは、
前記プロセッサが、前記ネットリストを配置配線処理ツールに入力することをさらに包含する、請求項５に記載の方法。
【請求項７】
前記処理することは、
前記プロセッサが、前記少なくとも一つのマスクプログラム可能なロジックデバイス設定ファイルを前記配置配線処理ツールに入力することをさらに包含する、請求項６に記載の方法。
【請求項８】
前記少なくとも一つのユーザープログラム可能なロジックデバイス設定ファイルは、少なくとも一つのビットストリーム設定ファイルを備える、請求項３に記載の方法。
【請求項９】
前記少なくとも一つのユーザープログラム可能なロジックデバイス設定ファイルは、ユーザー制約を表すファイルをさらに備えている、請求項８に記載の方法。
【請求項１０】
前記少なくとも一つのマスクプログラム可能なロジックデバイス設定ファイルは、
（ａ）マスクプログラム可能なロジックデバイスのタイミング制約を表すファイル、および
（ｂ）マスクプログラム可能なロジックデバイスの配置制約を表すファイル、
の少なくとも１つを備える、請求項３に記載の方法。
【請求項１１】
前記マスクプログラムされたロジックデバイスを生成することに先立って、前記プロセッサが、前記互換性を有するユーザープログラム可能なロジックデバイスに対する前記プログラミングを試験することをさらに包含する、請求項３に記載の方法。
【請求項１２】
前記変換関数は、前記ユーザープログラム可能なロジックデバイスと前記マスクプログラム可能なロジックデバイスとの間のマッピングを含む、請求項３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マスクプログラム可能なロジックデバイスに関する。より詳細には、ユーザープログラム可能なロジックデバイスへおよびからの移行が可能で、実証および／または試験がより容易にできる、マスクプログラム可能なロジックデバイスをプログラムする方法に関する。
【背景技術】
【０００２】
一部で「フィールドプログラム可能なゲートアレイ」（「ＦＰＧＡ］）として知られるプログラム可能なロジックデバイスは、周知である。初期のプログラム可能なロジックデバイスは、一回限りの設定が可能（ｃｏｎｆｉｇｕｒａｂｌｅ）であった。例えば、設定（ｃｏｎｆｉｇｕｒａｔｉｏｎ）は可溶性のリンクを「飛ばす（ｂｌｏｗｉｎｇ）」−−つまり、開く−−ことによって達成されてきた。代替案としては、設定が、プログラム可能な読み出し専用メモリに貯蔵されることも可能とされてきた。これらのデバイスは一般にユーザーに対して、デバイスを「積和（ｓｕｍ−ｏｆ−ｐｒｏｄｕｃｔｓ）」（つまり、「積項（ｐｒｏｄｕｃｔ  ｔｅｒｍ）」または「Ｐ−ＴＥＲＭ」）ロジック計算用として設定する（ｃｏｎｆｉｇｕｒｅ）可能性を提供した。その後、設定用として、消去可能なプログラマブル読み出し専用メモリ（ＥＰＲＯＭ）として具体化したこのようなプログラム可能なロジックデバイスが利用可能となり、その結果、デバイスの再設定が可能となった。
【０００３】
さらにその後になって、設定用として、スタティック随時書き込み読み出しメモリ（ＳＲＡＭ）要素として具体化したプログラム可能なロジックデバイスが、利用可能となった。これらのデバイスは、再設定が可能であり、ＥＰＲＯＭのような不揮発性メモリの中にその設定を貯蔵し、デバイスに電力が投入されるときに、そこから、その設定がＳＲＡＭ要素に装填され（読み込まれ）る。これらのデバイスは一般にユーザーに、デバイスをルックアップテーブル形式のロジック計算用として設定する可能性を提供する。一部の点において、これらのデバイスは、ユーザーによって随時書き込み読み出しメモリ、読み出し専用メモリ、またはロジック（Ｐ−ＴＥＲＭロジックのような）として働くように設定されることができる、随時書き込み読み出しメモリのはめ込まれた（ｅｍｂｅｄｄｅｄ）ブロックとして提供が開始された。さらに最近には、これらのデバイスは、デジタル信号処理用の積算器および積算器／加算器ブロックなどの、専用の機能ブロックとして提供されている。
【０００４】
前述の全てのプログラム可能なロジックデバイスにおいては、デバイスの特定のロジック要素のロジック機能と、ロジック要素の間の信号の伝達のための相互接続（ｉｎｔｅｒｃｏｎｎｅｃｔ）との両方が、プログラム可能であった。このようなデバイスは、これ以降では「従来形プログラム可能なロジックデバイス」または「ユーザープログラム可能なロジックデバイス」または「フィールドプログラム可能なロジックデバイス」として引用される。なお、後者に関しては、前述の３個の用語によって記述される種類のデバイスの部分集合（ｓｕｂｓｅｔ）であると考えられる「フィールドプログラム可能なゲートアレイ」の用語と混用されるべきではない。
【０００５】
さらに最近には、マスクプログラム可能なロジックデバイスが提供されるようになった。マスクプログラム可能なロジックデバイスに関しては、全てのユーザーに同じデバイスを販売する代わりに、製造業者は、ユーザーによってその機能をプラグラムできないロジック要素の、標準化された配置を有する部分的なデバイスを製造し、そのデバイスは一切の信号伝達または相互結合のリソースを有しないものである。
【０００６】
マスクプログラム可能なロジックデバイスをプログラムするためには、ユーザーはマスクプログラム可能なロジックデバイスの製造業者に対して、所望のデバイスの仕様書（ｓｐｅｃｉｆｉｃａｔｉｏｎ）を提供し、その仕様書は、対比される従来形プログラム可能なロジックデバイスをプログラムするための設定ファイルであり得る。製造業者はその情報を使用し、上記記載された部分的なデバイスにメタライゼーションの層を追加する。これらの追加された層は、ロジック要素の間にある種の接続を形成することによってロジック要素をプログラムし、またロジック要素の間の相互接続経路を追加する。マスクプログラム可能なロジックデバイスは、上記記載のとおり、従来形プログラム可能なロジックデバイスと結合して、埋め込まれた随時書き込み読み出しメモリブロックとしても提供されることができる。このようなマスクプログラム可能なロジックデバイスでは、埋め込まれたメモリが読み出し専用メモリまたはＰ−ＴＥＲＭロジックとして設定されている場合には、その設定はまた、追加のメタライゼーション層を使用することで実現される。
【０００７】
従来形プログラム可能なロジックデバイスは、所望の機能を実行するように、ユーザーがデバイスを容易に設計することを可能とするが、従来形プログラム可能なロジックデバイスは、特定の設計のためには使用され得ないリソースを常に含む。さらに、一般的な目的の伝達経路および相互接続のためのリソース、およびあらゆるロジック要素からの信号があらゆる所望の接続経路および相互接続リソースに到達することを可能とするスイッチングリソース、を備えるために、従来形プログラム可能なロジックデバイスは、より多くの機能性がその中に組み込まれるにつれてますます大きく成長し、これらデバイスの寸法および消費電力を増加させつつある。信号が１つの伝達経路および相互接続リソースから別のそれらに移動するときの、様々なスイッチング要素を経由する信号の伝達は、また信号の速度を低下させる。
【０００８】
マスクプログラム可能なロジックデバイスの出現は、ユーザーが従来形プログラム可能なロジックデバイスの中の設計を立証する（ｐｒｏｖｅ）ことを可能としたが、しかし、プロダクションバージョンをマスクプログラム可能なロジックデバイスに委ねることも可能とした。それは、デバイス上に存在する相互接続および伝達経路リソースは特定の設計に対して実際に必要とされるものだけであるために、同じ機能性に対して、非常に小形化が可能であり、また著しく省電力化が可能である。さらに、これらのリソースは簡単なメタライゼーションであり、スペースおよび電力を浪費しかつ信号速度を低下させる一般目的のスイッチング要素は存在しない。
【０００９】
にもかかわらず、これまでマスクプログラム可能なロジックデバイスのプログラミングは、対比される従来形プログラム可能なロジックデバイスとして実施された、ユーザーのロジック設計に関するユーザーのプログラミングファイルを、製造業者に提供することによって、実現されてきた。製造業者は最大限の努力をはらって、その設計を最も効率的で可能なマスクプログラムされたロジックデバイスに翻訳する。しかしながら、製造業者はいかなる場合でも、ユーザーが実施するであろう設計を実行することはできない。
【００１０】
例えばユーザーは、デバイスがある使用頻度で作動することを望んでいたかも知れない。またはユーザーの設計は、異なるデバイスの中で異なる数だけ使用される、ある数のある種類の構成部品を含んでいるかも知れず、ユーザーはこのような差異を考慮に入れて、異なったプログラミングを設計するかも知れない。製造業者は設定ファイルからこのような要望を推論することは、必然的に不可能である。
【００１１】
そのうえに、充分に熟練した（ｓｏｐｈｉｓｔｉｃａｔｅｄ）ユーザーは、マスクプログラム可能なロジックデバイスに対して特化した設計を希望することがあり得る。ユーザーがそれを実施するうえで必要なツールは、これまで利用可能ではなかった。
【発明の概要】
【課題を解決するための手段】
【００１２】
本発明に従って、適切なコンピュータベースまたはマイクロプロセッサベースのプログラミング装置によって実行される方法が提供される。その方法は、マスクプログラム可能なロジックデバイスのユーザーのロジック設計の実行と関連して、ユーザーがある程度の選択を規定することを可能とする。発明の別の局面に従って、本発明に従ったプログラミングツールが、あるプログラム可能なロジックデバイスから別のプログラム可能なロジックデバイスに、設計全体を再コンパイルする必要なしに、設計を移行することを可能にし得る。本発明のさらにさらなる局面にしたがって、他の状況では対比されるユーザープログラム可能なロジックデバイスとマスクプログラム可能なロジックデバイスとの間の差異に起因するリソースの制約（ｃｏｎｓｔｒａｉｎｔ）が、ユーザープログラム可能なロジックデバイスのユーザー設計をマスクプログラム可能なロジックデバイスに変換する、またはその逆に変換する際の失敗を最小化するために、考慮される。ユーザーはユーザープログラム可能なロジックデバイスのための設計をプログラムすることを得、ユーザープログラム可能なロジックデバイス内でそれをデバッグまたはテストし得、ついでそれをマスクプログラム可能なロジックデバイスに委ね得る。代替案としては、ユーザーは直接マスクプログラム可能なロジックデバイスのための設計をプログラムすることを得るが、しかしプロトタイピング／試験のために、その設計をユーザープログラム可能なロジックデバイスに移行し得る。
【００１３】
マスクプログラム可能なロジックデバイスの供給者によって設計がマスクプログラム可能なロジックデバイスに移行される前に、設計がユーザープログラム可能なロジックデバイスの中でユーザーによって実証される、既に公知の設計プロセスが、必ずしも全ての場合において最良の結果をもたらすとは限らないことの１つの理由は、マスクプログラム可能なロジックデバイスがユーザープログラム可能なロジックデバイスとは、たとえ最も近く対応するユーザープログラム可能なロジックデバイスであっても、異なるリソースを有することである。
【００１４】
例えば、Ｃａｌｉｆｏｒｎｉａ、Ｓａｎ  ＪｏｓｅのＡｌｔｅｒａ  Ｃｏｒｐｏｒａｔｉｏｎから提供されるマスクプログラム可能なロジックデバイスのファミリーであるＨａｒｄＣｏｐｙＴＭＡＰＥＸＴＭにおいては、これはＡｌｔｅｒａのユーザープログラム可能なロジックデバイスのファミリーであるＡＰＥＸＴＭに基づいているが、マスクプログラム可能なロジックデバイスはユーザープログラム可能なロジックデバイスと同じフロアプランに基づいている。特に、ＨａｒｄＣｏｐｙＴＭＡＰＥＸＴＭファミリーのデバイスのあらゆるメンバーの中のロジックエリアの配置は、従来のユーザープログラム可能なロジックデバイスであるＡＰＥＸＴＭファミリーの対応する部品の中のそれと同じである。
【００１５】
従来のＡＰＥＸＴＭユーザープログラム可能なロジックデバイスにおいては、相互接続リソースは、プログラム可能ではあるが、数および位置が固定されている。従って、グループ分けされた各ロジック要素は、それが接続されることができる、固定された数のプログラム可能な相互接続ラインを有する。しかしながら、対応するＨａｒｄＣｏｐｙＴＭＡＰＥＸＴＭマスクプログラム可能なロジックデバイスはこのような制約を有しない。物理的な制限が存在するものの、適切なメタライゼーションを使用することによって、本質的にはいかなる結合も作ることができる。それ故に、ＡＰＥＸＴＭファミリーの従来形ユーザープログラム可能なロジックデバイスに対してユーザーがロジックを設計する場合には、ユーザーの設計はその従来のデバイスの制限された相互接続リソースに対して最適化される。ＨａｒｄＣｏｐｙＴＭＡＰＥＸＴＭマスクプログラム可能なロジックデバイスに移行するときに、ＡＰＥＸＴＭユーザープログラム可能なロジックデバイスからの相互接続を完全模倣的にコピーすることは、本質的に制限を受けない相互接続の利用可能性がより効率的な設計を可能とする場合には、それ故に非効率的であり得る。
【００１６】
その証拠には、ユーザーがマスクプログラム可能なロジックデバイスに対して直接設計を行うが、しかしその設計をユーザープログラム可能なロジックデバイスで試験またはプロトタイプすることを望む場合に、マスクプログラム可能な設計からユーザープログラム可能な設計への変換が、マスクプログラム可能な設計がマスクによって制約のない接続を作ることができることに基づくものであり得るのに、対応するまたは互換性を有するユーザープログラム可能なロジックデバイスにおいて利用可能な内部接続の数が制約され、その設計を支援するうえで十分でないことがあり得るので、適切に行われないことがあり得る。
【００１７】
これらの問題点（ｃｏｎｃｅｒｎｓ）は、両者ともにＡｌｔｅｒａ  Ｃｏｒｐｏｒａｔｉｏｎから入手可能な、ユーザープログラム可能なロジックデバイスのＳＴＲＡＴＩＸＴＭファミリー、および対応するマスクプログラム可能なロジックデバイスのＨａｒｄＣｏｐｙＴＭＳＴＲＡＴＩＸＴＭファミリーなどの、より最近のデバイスにおいては一層複雑になっている。これらのデバイスのファミリーにおいては、一つのファミリーのメンバーと他のファミリーの対応するメンバーとの間の一対一の対応が存在しない。対応するファミリーのメンバーの能力は等しいにもかかわらず、ロジック要素あるいはモジュールの数または、よりあり得ることであるが、その位置が変わり得る。さらに、ユーザーメモリなどの補助的要素の数が変わり得る。従って、ある種類のデバイスに対して設計されたロジック設計は、他の種類のデバイスに移行することは不可能となり得る。あるいは設計が移行され得た場合にも、一部のユーザーの設計においては相対的位置が重要であり得るにもかかわらず、要素の同じ相対的位置を保持することが不可能であり得る。
【００１８】
本発明は、ユーザーがロジック設計を、最初にそれをユーザープログラム可能なロジックデバイスに対して準備することなしに、直接マスクプログラム可能なロジックデバイスに対して準備することができる方法を含む。本発明はまた、それを実施するとき、少なくともユーザーがユーザープログラム可能なロジックデバイスにおいてロジック設計をプロトタイプするまたは試験することを意図するときには、対応するまたは互換性を有するユーザープログラム可能なロジックデバイスのあらゆる制約（例えば、上述したような、制限された内部接続リソース、または異なるフロアプラン）を考慮することを含み、その結果、ユーザープログラム可能なロジックデバイスへの設計の所望の移行が可能となる。
【００１９】
本発明はまた、最初にロジック設計を互換性を有するユーザープログラム可能なロジックデバイスに対して設計することによって、マスクプログラム可能なロジックデバイスをプログラムする方法を含む。この方法においては、設計はマスクプログラム可能なロジックデバイスに移行される。この方法の部分として、本発明はまた、ユーザープログラム可能なロジックデバイスを設計するときに、対応するまたは互換性を有するマスクプログラム可能なロジックデバイスのあらゆる制約（例えば、上述したような、より少ない補助的なリソース、または異なるフロアプラン）を考慮することを含み、その結果、所望のマスクプログラム可能なロジックデバイスへの移行が可能となる。
【００２０】
後者の方法の拡張案として、ユーザープログラム可能なロジックデバイスの中ででロジック設計を設計すること、およびそれをマスクプログラム可能なロジックデバイスに移行することの後に、ユーザーはプロトタイピング／試験のために、設計を再びもとのユーザープログラム可能なロジックデバイスに移行することを希望し得る。この拡張案に従って、本発明は、最終的な目標であるマスクプログラム可能なロジックデバイスの制約を考慮して、最初のユーザープログラム可能なロジックデバイスの設計を行うこと、その設計をマスクプログラム可能なロジックデバイスに移行するときには、少なくともユーザーがそのロジック設計をプロトタイピング／試験のためにユーザープログラム可能なロジックデバイスに再移行することを意図するときには、互換性を有するユーザープログラム可能なロジックデバイスの制約をさらに考慮すること、を含み、その結果、所望のユーザープログラム可能なロジックデバイスへの設計の再移行が可能となる。
【００２１】
本発明はさらに、ユーザープログラム可能なロジックデバイス用の設定ファイルから変換されたマスクプログラム可能なロジックデバイス用の設計を、マスクプログラム可能なロジックデバイスへの最初の変換を試験するために、ユーザープログラム可能なロジックデバイス用の設定ファイルに戻す変換を行う変換を提供する事を含む。戻す変換のための変換が、最初の変換の単なる鏡像イメージでない（そして、そうでないことが望ましい）かぎりにおいては、戻りの変換から得られた設定ファイルが意図されたように機能する場合には、最初の変換が正しかったと推定することができる。戻りの変換から得られた設定ファイルは、単にそれをもとの設定ファイルと比較することによって、公知の手法を使用するソフトウェアでその作動をシミュレーションすることによって、またはユーザープログラム可能なロジックデバイスを実際にプログラムすることおよびそのデバイスの作動を試験することによって、試験することができる。ファイルが単純に比較される場合には、一致することが正しいことの証明となり得、その他の試験は必要でなくなる。しかしながら、１つよりも多い設計が機能的に一致することがあり得るために、一致しないことが正しくないことの証明ではなく、それ故に比較によって一致しなかった場合でも、シミュレーションによって、または実際のデバイスでの試験によって、追加的評価されることが望ましい。
【００２２】
前述してきた方法を促進するために、本発明は異なるプログラム可能なロジックデバイスの間のマッピングを生成し維持するためのさらなる方法を含む。上述したように、初期のマスクプログラム可能なロジックデバイスの設計は、互換性を有するユーザープログラム可能なロジックデバイスに対して本質的に一対一の対応を維持していた。このことは、例えば、様々なロジック要素の間の位置的関係を維持する（例えば、ユーザーが設計を統合するときに、いくつかのロジック関数を相互に物理的に接近して確保するために、Ａｌｔｅｒａ  Ｃｏｒｐｏｒａｔｉｏｎから入手可能なＬｏｇｉｃＬｏｃｋＴＭ関数を頼りにするとき）ことを容易にした。しかしながら、また上述したように、より新しいマスクプログラム可能なロジックデバイスの設計は、互換性を有するユーザープログラム可能なロジックデバイスとの一対一の対応から逸脱している。
【００２３】
このように、ユーザープログラム可能なロジックデバイスは５×４のアレイのロジック要素またはモジュールのブロックを含み得るが、一方ではそれに対応するマスクプログラム可能なロジックデバイスは７×３のアレイのロジック要素またはモジュールのブロックを含み得る。ユーザープログラム可能なロジックデバイスに対する設計の最左側の列の５個のブロックのすべてを、マスクプログラム可能なロジックデバイスの最左側の列に含むことは、その列が３個のブロックしか含まないので、不可能である。ユーザープログラム可能なロジックデバイスから別のロジックデバイスへ、またはマスクプログラム可能なロジックデバイスから別のロジックデバイスへ、移動するときにおいても、同様の事態が起こり得る。
【００２４】
このことは、本発明に従って、一つのプログラム可能なロジックデバイスを別のロジックデバイスに対してマッピングする方法によって、解決が計られており、その結果、任意の２個のデバイスの間でのように、あるデバイスのロジックブロックの中の機能を他のデバイスの中のロジックブロックに対してマッピングする方法が知られる。このように上記の７×３対５×４の例においては、５個のブロックの内のどれが最初の列にマッピングされないかが知られ、さらにそれらがどこにマッピングされるかが知られる。マッピングは手動または様々な代替案を吟味し最も最適なマッピングを選択する自動化されたプロセスによって行われ得、最も近い近隣関係、および／またはロジックブロックおよび入力／出力ブロックとの間の関係、を維持するという潜在的なニーズを考慮して行われる。任意の２個のデバイスの間でのように、マッピングを行うのは１回のみとする必要があり、次いでそのマッピングが、任意の設計を１つのデバイスから他のデバイスに移行する（上記で検討された他の制約が適用されるならば、そのもとで）ために使用され得る。それぞれのマッピングはそれぞれのデバイスのペアに対して１回しか実行できないために、手動によってマッピングを行うことが実行可能であり得る。
【００２５】
このマッピングの発明は、任意の１つのデバイスがマスクプログラム可能またはユーザープログラム可能であっても適用される。つまり、マッピングは、特定のユーザープログラム可能なロジックデバイスと特定のマスクプログラム可能なロジックデバイスとの間、特定のユーザープログラム可能なロジックデバイスと別の特定のユーザープログラム可能なロジックデバイスとの間、または特定のマスクプログラム可能なロジックデバイスと別の特定のマスクプログラム可能なロジックデバイスとの間で準備されることができる。
【００２６】
このように、本発明に従って、１つ以上の所望の機能を実行するマスクプログラムされたロジックデバイスを生成するための、マスクプログラム可能なロジックデバイスをプログラムする方法が提供される。その方法は、マスクプログラム可能なロジックデバイスと互換性を有するユーザープログラム可能なロジックデバイスに対して、１つ以上の所望の機能を実行するようなプログラミングを設計すること、それによって１つ以上のユーザープログラム可能なロジックデバイス設定ファイルを生成することを含む。１つ以上のユーザープログラム可能なロジックデバイス設定ファイルは、第１の変換関数を使用することによって、１つ以上のマスクプログラム可能なロジックデバイス設定ファイルを含む、マスクプログラム可能なロジックデバイス用のプログラミングを生成するために作動される。
【００２７】
追加として、１つ以上の所望の機能を実行するマスクプログラムされたロジックデバイスを生成するための、マスクプログラム可能なロジックデバイスをプログラムする方法が提供される。その方法は、マスクプログラム可能なロジックデバイスが１つ以上の所望の機能を実行するようにプログラミングを設計すること、それによって１つ以上のマスクプログラム可能なロジックデバイス設定ファイルを生成することを含む。１つ以上のマスクプログラム可能なロジックデバイス設定ファイルは、変換関数を使用することによって、１つ以上のユーザープログラム可能なロジックデバイス設定ファイルを含む、前記マスクプログラム可能なロジックデバイスと互換性を有するユーザープログラム可能なロジックデバイス用のプログラミングを生成するために作動される。
【００２８】
さらに、１つよりも多いプログラム可能なロジックデバイスと互換性を有するプログラミングを生成する方法が提供される。その方法は、第１のプログラム可能なロジックデバイスに対するプログラミングを設計することを含み、その設計は、そのプログラミングが少なくとも一部分において、少なくとも第２のプログラム可能なロジックデバイスに基づいていることを含む。
【００２９】
これまでに述べられた方法に従ってプログラムされた、プログラム可能なロジックデバイスが、また提供される。
例えば、本発明は以下の項目を提供する。
（項目１）
一つ以上の所望の機能を実行するマスクプログラムされたロジックデバイスを生成するために、マスクプログラム可能なロジックデバイスをプログラムする方法であって、
該マスクプログラム可能なロジックデバイスと互換性を有するユーザープログラム可能なロジックデバイスに対して、該一つ以上の所望の機能を実行するためのプログラミングを設計することであって、それによって一つ以上のユーザープログラム可能なロジックデバイス設定ファイルを生成する、ことと、
第１の変換関数を使用して、一つ以上のマスクプログラム可能なロジックデバイス設定ファイルを含む該マスクプログラム可能なロジックデバイスのためのプログラミングを生成するために、該一つ以上のユーザープログラム可能なロジックデバイスに働きかけることと、
を包含する方法。
（項目２）
上記マスクプログラムされたロジックデバイスを生成するために、上記一つ以上のユーザープログラム可能なロジックデバイス設定ファイルおよび上記一つ以上のマスクプログラム可能なロジックデバイス設定ファイルを処理することをさらに包含する、項目１に記載の方法。
（項目３）
上記処理することは、
上記少なくとも一つのユーザープログラム可能なロジックデバイス設定ファイルの少なくとも一つを逆アセンブルして、ネットリストを生成することを包含する、項目２に記載の方法。
（項目４）
上記処理することは、
上記ネットリストを配置配線処理ツールに入力することをさらに包含する、項目３に記載の方法。
（項目５）
上記処理することは、
上記少なくとも一つのマスクプログラム可能なロジックデバイス設定ファイルを上記配置配線処理ツールに入力することをさらに包含する、項目４に記載の方法。
（項目６）
上記少なくとも一つのユーザープログラム可能なロジックデバイス設定ファイルは、少なくとも一つのビットストリーム設定ファイルを備える、項目１に記載の方法。
（項目７）
上記少なくとも一つのユーザープログラム可能なロジックデバイス設定ファイルは、ユーザー制約を表すファイルをさらに備える、項目６に記載の方法。
（項目８）
上記少なくとも一つのマスクプログラム可能なロジックデバイス設定ファイルは、
（ａ）マスクプログラム可能なロジックデバイスのタイミング制約を表すファイル、および
（ｂ）マスクプログラム可能なロジックデバイスの配置制約を表すファイル、の少なくとも１つを備える、項目１に記載の方法。
（項目９）
上記マスクプログラムされたロジックデバイスを生成することに先立って、上記互換性を有するユーザープログラム可能なロジックデバイスに対する上記プログラミングを試験することをさらに包含する、項目１に記載の方法。
（項目１０）
上記設計することは、少なくとも部分的に上記マスクプログラム可能なロジックデバイスの特性に基づいて、上記互換性を有するユーザープログラム可能なロジックデバイスに対する上記プログラミングを設計することを包含する、項目９に記載の方法。
（項目１１）
上記設計することは、少なくとも部分的に上記マスクプログラム可能なロジックデバイスの特性に基づいて、上記互換性を有するユーザープログラム可能なロジックデバイスに対する上記プログラミングを設計することを包含する、項目１に記載の方法。
（項目１２）
上記第１の変換関数は、上記ユーザープログラム可能なロジックデバイスと上記マスクプログラム可能なロジックデバイスとの間のマッピングを含む、項目１に記載の方法。
（項目１３）
上記マスクプログラム可能なロジックデバイスに対する上記プログラミングを、上記ユーザープログラム可能なロジックデバイスに対する導出されたプログラミングに変換するために、第２の変換関数を使用することと、
上記ユーザープログラム可能なロジックデバイスに対する上記プログラミングを試験することと、
をさらに包含する、項目１に記載の方法。
（項目１４）
上記試験することは、上記導出されたプログラミングを、上記ユーザープログラム可能なロジックデバイスに対して設計された上記プログラミングと比較することを包含する、項目１３に記載の方法。
（項目１５）
上記試験することは、上記導出されたプログラミングによってユーザープログラム可能なロジックデバイスをプログラムすること、および該プログラムされたユーザープログラム可能なロジックデバイスの作動を観察すること、を包含する、項目１３に記載の方法。
（項目１６）
項目１に記載の方法に従ってプログラムされた、マスクプログラムされたロジックデバイス。
（項目１７）
処理サーキットリと、
該処理サーキットリに接続されたメモリと、
項目１に記載の方法に従ってプログラムされ、該処理サーキットリおよび該メモリと接続された、マスクプログラムされたロジックデバイスと、
を備える、デジタル処理システム。
（項目１８）
項目１に記載の方法に従ってプログラムされたマスクプログラムされたロジックデバイスが取り付けられている、プリント回路基板。
（項目１９）
上記プリント回路基板上に取り付けられ、上記マスクプログラムされたロジックデバイスに接続された、メモリサーキットリをさらに備える、項目１８に規定されたプリント回路基板。
（項目２０）
上記プリント回路基板上に取り付けられ、上記メモリサーキットリに接続された、処理サーキットリをさらに備える、項目１９に規定されたプリント回路基板。
（項目２１）
一つ以上の所望の機能を実行するマスクプログラムされたロジックデバイスを生成するために、マスクプログラム可能なロジックデバイスをプログラムする方法であって、
該一つ以上の所望の機能を実行するために該マスクプログラム可能なロジックデバイスに対するプログラミングを設計することであって、それによって一つ以上のマスクプログラム可能なロジックデバイス設定ファイルを生成する、ことと、
変換関数を使用して、一つ以上のユーザープログラム可能なロジックデバイス設定ファイルを含む、上記マスクプログラム可能なロジックデバイスと互換性を有するユーザープログラム可能なロジックデバイスのためのプログラミングを生成するために、該一つ以上のマスクプログラム可能なロジックデバイス設定ファイルに働きかけることと、
を包含する方法。
（項目２２）
上記マスクプログラムされたロジックデバイスを生成するために、上記一つ以上のユーザープログラム可能なロジックデバイス設定ファイルおよび上記一つ以上のマスクプログラム可能なロジックデバイス設定ファイルを処理することをさらに包含する、項目２１に記載の方法。
（項目２３）
上記処理することは、
上記少なくとも一つのユーザープログラム可能なロジックデバイス設定ファイルの少なくとも一つを逆アセンブルして、ネットリストを生成することを包含する、項目２２に記載の方法。
（項目２４）
上記処理することは、
上記ネットリストを配置配線処理ツールに入力することをさらに包含する、項目２３に記載の方法。
（項目２５）
上記処理することは、
上記少なくとも一つのマスクプログラム可能なロジックデバイス設定ファイルを上記配置配線処理ツールに入力することをさらに包含する、項目２４に記載の方法。
（項目２６）
上記少なくとも一つのユーザープログラム可能なロジックデバイス設定ファイルは、少なくとも一つのビットストリーム設定ファイルを備える、項目２１に記載の方法。
（項目２７）
上記少なくとも一つのユーザープログラム可能なロジックデバイス設定ファイルは、ユーザー制約を表すファイルをさらに備える、項目２６に記載の方法。
（項目２８）
上記少なくとも一つのマスクプログラム可能なロジックデバイス設定ファイルは、
（ａ）マスクプログラム可能なロジックデバイスのタイミング制約を表すファイル、および
（ｂ）マスクプログラム可能なロジックデバイスの配置制約を表すファイル、の少なくとも１つを備える、項目２１に記載の方法。
（項目２９）
上記マスクプログラムされたロジックデバイスを生成することに先立って、上記互換性を有するユーザープログラム可能なロジックデバイスに対する上記プログラミングを試験することをさらに包含する、項目２１に記載の方法。
（項目３０）
上記働きかけることは、少なくとも部分的に上記マスクプログラム可能なロジックデバイスの特性に基づいて、上記互換性を有するユーザープログラム可能なロジックデバイスに対する上記プログラミングを設計することを包含する、項目２９に記載の方法。
（項目３１）
上記働きかけることは、少なくとも部分的に上記マスクプログラム可能なロジックデバイスの特性に基づいて、上記互換性を有するユーザープログラム可能なロジックデバイスに対する上記プログラミングを設計することを包含する、項目２１に記載の方法。
（項目３２）
上記設計することは、少なくとも部分的に上記互換性を有するユーザープログラム可能なロジックデバイスの特性に基づいて、上記マスクプログラム可能なロジックデバイスに対する上記プログラミングを設計することを包含する、項目２１に記載の方法。
（項目３３）
上記変換関数は、上記ユーザープログラム可能なロジックデバイスと上記マスクプログラム可能なロジックデバイスとの間のマッピングを含む、項目２１に記載の方法。
（項目３４）
項目２１に記載の方法に従ってプログラムされた、マスクプログラムされたロジックデバイス。
（項目３５）
処理サーキットリと、
該処理サーキットリに接続されたメモリと、
項目２１に記載の方法に従ってプログラムされ、該処理サーキットリおよび該メモリと接続された、マスクプログラムされたロジックデバイスと、
を備える、デジタル処理システム。
（項目３６）
項目２１に記載の方法に従ってプログラムされたマスクプログラムされたロジックデバイスが取り付けられている、プリント回路基板。
（項目３７）
上記プリント回路基板上に取り付けられ、上記マスクプログラムされたロジックデバイスに接続された、メモリサーキットリをさらに備える、項目３６に規定されたプリント回路基板。
（項目３８）
上記プリント回路基板上に取り付けられ、上記メモリサーキットリに接続された、処理サーキットリをさらに備える、項目３７に規定されたプリント回路基板。
（項目３９）
第１のプログラム可能なロジックデバイスをプログラムする方法であって、該方法は、
該プログラミングが、少なくとも部分的に、少なくとも一つの第２のプログラム可能なロジックデバイスに対するプログラミングを該第１のプログラム可能なロジックデバイスの上にマッピングすることに基づくことを包含する、方法。
（項目４０）
上記第１のプログラム可能なロジックデバイスはマスクプログラム可能なロジックデバイスであり、
上記第２のプログラム可能なロジックデバイスはユーザープログラム可能なロジックデバイスである、項目３９に記載の方法。
（項目４１）
上記第１のプログラム可能なロジックデバイスはユーザープログラム可能なロジックデバイスであり、
上記第２のプログラム可能なロジックデバイスはマスクプログラム可能なロジックデバイスである、項目３９に記載の方法。
（項目４２）
上記第１のプログラム可能なロジックデバイスおよび上記第２のプログラム可能なロジックデバイスは共に、ユーザープログラム可能である、項目３９に記載の方法。
（項目４３）
上記第１のプログラム可能なロジックデバイスおよび上記第２のプログラム可能なロジックデバイスは共に、マスクプログラム可能である、項目３９に記載の方法。
（項目４４）
上記基づくことは、複数のプログラム可能なロジックデバイスの各々の、該複数のプログラム可能なロジックデバイスの他の各々への、構成のマッピングのライブラリの中から、上記第２のプログラム可能なロジックデバイスの上記第１のプログラム可能なロジックデバイスへの構成のマッピングを選択することを包含する、項目３９に記載の方法。
（項目４５）
上記マッピングのライブラリをアセンブルすることおよび維持することをさらに包含する、項目４４に記載の方法。
（項目４６）
項目３９に記載の方法に従ってプログラムされた、プログラム可能なロジックデバイス。
（項目４７）
処理サーキットリと、
該処理サーキットリに接続されたメモリと、
項目３９に記載の方法に従ってプログラムされ、該処理サーキットリおよび該メモリと接続された、プログラム可能なロジックデバイスと、
を備える、デジタル処理システム。
（項目４８）
項目３９に記載の方法に従ってプログラムされたプログラム可能なロジックデバイスが取り付けられている、プリント回路基板。
（項目４９）
上記プリント回路基板上に取り付けられ、上記マスクプログラムされたロジックデバイスに接続された、メモリサーキットリをさらに備える、項目４８に規定されたプリント回路基板。
（項目５０）
上記プリント回路基板上に取り付けられ、上記メモリサーキットリに接続された、処理サーキットリをさらに備える、項目４９に規定されたプリント回路基板。
【図面の簡単な説明】
【００３０】
【図１】マスクプログラム可能なロジックデバイスに対する既に公知のプログラミング方法を示す流れ図である。
【図２】マスクプログラム可能なロジックデバイスとユーザープログラム可能なロジックデバイスとの間の、あり得る相違点を示す比較図である。
【図３】本発明に従った、マスクプログラム可能なロジックデバイスに対するプログラミング方法の、第１の好適な実施形態を示す流れ図である。
【図４】本発明に従った、マスクプログラム可能なロジックデバイスに対するプログラミング方法の、第２の好適な実施形態を示す流れ図である。
【図５】本発明に従った、マスクプログラム可能なロジックデバイスに対するプログラミング方法の、第３の好適な実施形態を示す流れ図である。
【図６】追加された実証のステップを有する、図３と同様の流れ図である。
【図７】本発明に従ったマッピングを示し、互換性を有するプログラム可能なデバイスの間の配置の相違を線図により表す。
【図８】本発明に従ってプログラムされたマスクプログラム可能なロジックデバイスを採用した、例示的なシステムの概略ブロック図である。
【発明を実施するための形態】
【００３１】
上記およびその他の本発明の利点は、添付の図面と共に、以下の詳細な記述を考慮することによって明らかとなる。添付図面において、同じ参照数字は全ての図面において同じ部分を表す。
【００３２】
本発明は、マスクプログラム可能なロジックデバイス（「ＭＰＬＤ］）に対するプログラミングプロセスの流れを変更する。従来のユーザープログラム可能なＰＬＤ（「ＵＰＬＤ」）に対するユーザーの設定ファイルを単純に使用して、ユーザーがＭＰＬＤにおいて実行されることを希望する設計を、ＭＰＬＤ提供者が自分で判断するという方法ではなく、本発明はユーザーの管理の下でより多くのプロセスがなされるように拡張されたユーザーツールを提供し、そのツールはユーザーがプロセスの間に追加の情報を入力することを可能にする。
【００３３】
このプロセスをさらに拡張するために、発明に従って強化されたツールは、以下に記述されるようにＭＰＬＤの特性の拡張されたモデルを好適に具体化する。
【００３４】
発明はここに、図１〜図７を参照して記載される。
【００３５】
図１はＭＰＬＤをプログラムする、すでに公知の方法１０を示す。ユーザーの管理の下でなされるプロセスのこれらの部分は、破線の囲み１１の中に示されており、ＭＰＬＤ供給者の管理の下でなされるこれらのステップは、破線の囲み１２の中に示される。方法１０は、プログラムされるＭＰＬＤは、望ましくは同一の供給者からの、従来のＵＰＬＤに対するＭＰＬＤの写し（ｃｏｕｎｔｅｒｐａｒｔ）であることを、予め予想している。
【００３６】
ステップ１１０において、ユーザーはその目的のために供給者によって供給された設計ツールを使用して、周知のとおり、従来のＵＰＬＤに対する設計を開始する。ステップ１１１において、これらのツールはユーザーの設計をコンパイルし設定ファイル１１２とする。このファイルは、ユーザーが設計を実施したＵＰＬＤのそれぞれの設定ビットに対して指定される値（１および０）を好適に含む、ビットストリームファイルであることが望ましい。ユーザーの制約（例えば、デバイスの所望の作動回数）のリストを含む第２のファイル１１３が、生成され得る。好ましくはファイル１１３のデータはファイル１１２の中に編入され、供給者プロセス１２に提供される。
【００３７】
ステップ１２０では、設定ファイル１１２が好適に逆アセンブルされる。設計が実行されたＵＰＬＤモデルに関する知識、およびそのＵＰＬＤに対する各設定ビットの効果を使用して、逆アセンブラ１２０は設計が実行するべき論理的機能を決定することができる。その情報はネットリスト生成ステップ１２１が、プログラムされたＭＰＬＤ上に提供されるべき機能のネットリストを生成することを可能とする。ネットリストは配置配線処理（ｐｌａｃｅ−ａｎｄ−ｒｏｕｔｅ）ステップ１２２において好適に処理され、この処理は望ましくは、Ｃａｌｉｆｏｒｎｉａ、Ｍｏｕｎｔａｉｎ  ＶｉｅｗのＳｙｎｏｐｓｙｓ，Ｉｎｃ．から入手可能な（以前はＣａｌｉｆｏｒｎｉａ、Ｓａｎ  ＪｏｓｅのＡｖａｎｔｉ  Ｃｏｒｐ．から入手可能であった）ＡＰＯＬＬＯ−ＩＩＴＭ配置配線処理ツールなどの、周知である既存の配置配線処理ツールを使用してなされる。配置配線処理ステップ１２２の結果は、ステップ１２３において、ＭＰＬＤをプログラムするために必要なメタライゼーションを生成するために使用される。配置配線処理ステップ１２２の後にタイミングレポート１２２０が生成され得、ユーザーはこれを用いて所望のタイミング関係が実現されているかを確かめることができる。
【００３８】
ＵＰＬＤ設計をＭＰＬＤに変換することを決定することにおいては、ユーザーは変換による性能上の報酬を得ることをしばしば期待する。例えば、ある機能を実行するプログラムされたＭＰＬＤは、対応するプログラムされたＵＰＬＤよりもより速くおよび／またはよりクールに（より少ない電力で）作動し得る。しかしながら、例えば、特定のロジックブロック内の機能の位置、および特定の信号に対する特定の経路の選択によっては、性能上の改善が他と比べてある特定の改善に偏る（例えば、消費電力と比べて速さが、またはその逆に）ことが、あり得る。方法１０において供給者が設定ファイル１１２を入手するとき、供給者はユーザーにとってどのような考慮が、それがある場合には、最も重要かに関してほとんど情報を有しない。供給者は設計に基づいてユーザーの要求に関する訓練された推測を行うことは可能であるが、それらの推測は誤りである可能性があり、その結果、機能的ではあるがユーザーの見込みからは最適の次の（ｓｕｂｏｐｔｉｍａｌ）ＭＰＬＤ設計が得られる可能性がある。
【００３９】
図２は２個のデバイスを比較する。デバイス１３０は５×４の形状に配置された２０個のブロック１３１（例えば、それぞれ１０個のロジック要素、またはモジュール）を有する仮定のＵＰＬＤであり、一方デバイス１４０は７×３の形状に配置されたロジック要素またはモジュールの２１個のブロック１４１を有する、対応する互換性を有するＭＰＬＤである。これらは異なるダイ（ｄｉｅ）寸法を有し得るが、互換性を有するデバイスとして、各デバイス１３０と１４０は同じ外部環境条件に適合しなければならない。それ故に、入力／出力ドライバ１３２の配置は異なり得るものの、それぞれは同じパッケージおよびピンアウト（ｐｉｎｏｕｔ）を有することが望ましい。この例において、デバイス１３０と１４０はさらに、ＵＰＬＤデバイス１３０は２個のユーザーメモリ１３３を有し、一方ＭＰＬＤデバイス１４０は１個のみのユーザーメモリ１４３を有する点で異なる。実際のデバイスのペアの間には、ほかの相違点がまたあり得る。そしてＵＰＬＤ上の使用可能な経路決定（ｒｏｕｔｉｎｇ）は製造業者によって提供されるプログラム可能な相互接続構造のみであるが、一方でＭＰＬＤにおける経路決定上の唯一の制限は、一部のユーザーによって要望される一部の複雑な経路決定プラン（例えば、使用可能なメタライゼーションの層によってまかなわれるよりも、２個の多数の信号経路が、相互に交差する必要があるためによる）に対するメタライゼーションを配置することに潜在する困難から生じる制限であり、この点において全てのＵＰＬＤは全てのＭＰＬＤとは異なる。
【００４０】
ユーザーがＵＰＬＤ１３０に対する設計を実施するときには、デバイスの外部で使用される信号を生成するいくつかの機能は入力／出力領域１３２に近づけて置かれる必要があり、しかしまた相互に結果を利用するいくつかのロジック機能はまた相互に近づけて置かれるべきである、ということにユーザーは留意する。ロジックブロック１３１と１４１の配置が異なるために、ユーザーの設計をＭＰＬＤ１４０に移行するときに、これらの両方の目標を得ることは難しい。
【００４１】
本発明に従った方法２０（図３）は、ユーザーにプロセス上でより多くの制御を与えることによって、ユーザーの要望により多くの重みを置くことを試みている。このように、方法２０のユーザーの割り当て部分２１において、ＵＰＬＤ設計がステップ１１１でコンパイルされた後に、その結果は設定ファイル１１２に出力されるのみならず、ＭＰＬＤモデル２１０にもまた出力され、その中では対応するＭＰＬＤの特性および応答−−ＭＰＬＤの実際の配置または「フロアプラン」を含む−−が表現され、実質的にはＵＰＬＤ機能をＭＰＬＤ機能に翻訳し、それはステップ２１１において好適にコンパイルされる。同じコンパイルのためのツール、望ましくは同じアルゴリズムおよび／またはコード基準、がＵＰＬＤをコンパイルするステップ１１１およびＭＰＬＤをコンパイルするステップ２１１（およびＭＰＬＤをコンパイルするステップ４１０−−図５を参照）において使用されることが望ましい。同じユーザーの設計に対して同じコンパイラを使用することによって、複雑な証明を必要とせずに、ＵＰＬＤの中で働く設計がＭＰＬＤの中で働くことに関して、高い確信が得られる。図７に関連して以下に記載されるように、ＭＰＬＤモデル２１０はデバイス対デバイスのマッピングに基づいて得られる。
【００４２】
ステップ２１１の結果は、プログラムされたＭＰＬＤに対するタイミング制約のファイル２１３、およびプログラムされたＭＰＬＤに対する配置制約のファイル２１４である。ユーザーはステップ２１１でのコンパイル実行に指示を与える（ｇｕｉｄｅ）ために、ステップ２１１に対して入力２１２を提供し得る。例えば、ユーザーの目標の１つが、ＵＰＬＤバージョンにおけるよりもＭＰＬＤバージョンにおいて５０％速い確かなクロックランを得ることである場合には、ステップ２１１でユーザーによってそのことを入力することが可能で、その結果、ステップは例えば電力消費量の削減よりも速さに配慮することを「知る」。
【００４３】
上述のように、シングルファイルであり得るファイル１１２と１１３が、方法１０におけると同様に逆アセンブラ１２０に対して提供されるときに、またシングルファイルであり得る、ＭＰＬＤに対するタイミングおよび配置データを含むファイル２１３および２１４が、配置配線処理ステップ１２２に提供される。詳細には、これらのデータは、ＵＰＬＤによっては満たされずＭＰＬＤによって満たされ得る（それ故にファイル１１２／１１３には反映されない）タイミング制約、およびＭＰＬＤの配置構造の「知識」に基づく配置制約を含む。これらのデータを用いて、配置機能がすでに実行されているので、配置配線処理ツールがなすべきことはほとんどない。それ故に、配置配線処理ツールは好適に実質的に配線のみを実行し、次いで上記のようにステップ１２３でＭＰＬＤが作成される。
【００４４】
方法２０において、方法１０と同様にユーザーは、所望のＭＰＬＤを対応するＵＰＬＤの言語（ｔｅｒｍ）によって定義する。しかしながら、ＵＰＬＤプログラミングを設計するに際して、最終目標であるＭＰＬＤの制約が考慮されねばならない。故に、ＵＰＬＤ設計ステップ１１０のユーザー入力の部分は、設計が最終的にＭＰＬＤに対して意図されたものであるか否かの指示である。そのように意図された場合には、ＭＰＬＤの制約が考慮される。例えば設計ツールは、所望のロジック設計を達成するが、しかし互換性を有するＭＰＬＤの中では使用できない、ＵＰＬＤ機能の使用を許可しない。なぜならば、例えば、相互に互換性を有する場合においても、ＵＰＬＤとＭＰＬＤとの間に上述した種類の相違があるためである。
【００４５】
発明の別の好適な実施形態においては、方法３０（図４）のユーザー割り当て部分３１において、ユーザーはユーザー設計３１０の中で所望のＭＰＬＤをＭＰＬＤ言語そのものによって定義する。これはＭＰＬＤに対する設計を最適化する。なぜならば様々なリソースの数および配置に関して言えば、ＭＰＬＤの構造を直接的に考慮して設計が生成されるからである。
【００４６】
設計３１０および、再び所望の作動回数などのＭＰＬＤ制約のユーザー入力２１２、がＭＰＬＤコンパイラステップ２１１に入力され、そのステップはタイミングおよび配置制約２１３と２１４を再び出力する。ステップ２１１の出力はまたステップ３１１でのモデルへの入力となり、そのモデルの中では対応するＵＰＬＤの特性および応答が表現され、実質的にＭＰＬＤ機能がＵＰＬＤ機能に翻訳され、それは好適にステップ１１１でコンパイルされる。ステップ１１１は再びＵＰＬＤ設定および制約データ１１２と１１３を生成する。データ１１２、１１３、２１３および２１４は方法３０の供給者割り当て部分１２の中で、方法２０の供給者割り当て部分１２の中でと同様に、使用される。
【００４７】
追加として、ステップ１２３で供給者にプログラムされたＭＰＬＤを作成することを委ねるに先立って、ユーザーが所望のＭＰＬＤをシミュレーションするためにＵＰＬＤをプログラムすることを要望するという事態においては、データ１１２と１１３が使用できる。しかしながら、ユーザーがこのようなＵＰＬＤでの実証の実行を意図する場合には、ユーザーはＵＰＬＤ実証がなされることを入力２１２の部分として指示するべきことが望ましい。このような場合、ＵＰＬＤの制約が考慮される。例えば設計ツールは、所望のロジック設計を達成するが、しかし互換性を有するＵＰＬＤの中では使用できない、ＭＰＬＤ機能の使用を許可しない。なぜならば、例えば、相互に互換性を有する場合においても、ＵＰＬＤとＭＰＬＤとの間に上述した種類の相違があるためである。
【００４８】
図５に示される方法４０の、さらなる好適な実施形態において、ユーザーは再びユーザー割り当て部分４１の中において、ユーザー設計３１０の中でＭＰＬＤそのものの言語で所望のＭＰＬＤを定義する。その設計３１０および、再び所望の作動回数のようなＭＰＬＤ制約のユーザー入力２１２が、ＭＰＬＤコンパイラステップ４１０に入力され、そのステップはアーキテクチャファイル４１１およびユーザー制約ファイル４１２と同様にタイミングおよび配置制約２１３と２１４を再び出力する。この場合には、ＭＰＬＤ設計は、単に逆アセンブラ１２０によって使用されるための設定および制約ファイル１１２と１１３を提供するためのみに、ＵＰＬＤ設計に変換されるべきではない。その代わりに、コンパイラステップ４１１によって提供されるアーキテクチャおよび制約ファイル４１１と４１２が、方法４０の提供者割り当て部分４２のネットリスト生成器１２１によって直接使用され、ここでは逆アセンブラ１２０を必要としない。しかしながら、コンパイラステップ４１０の出力は、任意ではあるがステップ３１１のモデルに入力され得、そのモデルの中で対応するＵＰＬＤの特性および応答が表現され、実質的にＭＰＬＤ機能がＵＰＬＤ機能に翻訳され、それは次いでステップ１１１でコンパイルされ得る。この場合のステップ１１１はＵＰＬＤ設定データ１１２を生成し、必要な場合には、そのデータは、ステップ１２３で供給者にプログラムされたＭＰＬＤを作成することを委ねるに先立って、所望のＭＰＬＤをシミュレーションするためにＵＰＬＤをプログラムするために、使用することができる。再び、ユーザーがＵＰＬＤの中でこのような実証を実行することを意図する場合には、ユーザーはＵＰＬＤ実証がなされることを、入力２１２の部分として指示するべきであることが望ましい。このような場合には、方法３０（図４）に関連して上記で述べられたように、ＵＰＬＤの制約が考慮される。
【００４９】
方法２０、３０および４０の全てに関連して、ユーザーが１つの種類のデバイス（ＵＰＬＤまたはＭＰＬＤ）に対してロジックを、そのロジックが他の種類のデバイス（ＭＰＬＤまたはＵＰＬＤ）に変換可能であることを意図して、設計する場合には、次のことに留意しなければならない。すなわち、ソフトウェアは１つのデバイスから別のデバイスへ翻訳されることができない機能の使用を許可しないのみならず、ソフトウェアはソースおよび目標のデバイスの中の各種類のリソースの数をチェックし、許容される変換をそれらの数が一致する値に−−例えば、どのカテゴリのリソースにおいてもソースデバイスで使用される数が目標のデバイスで使用できる数を超えることがない値に−−制限することが望ましい。かくして、ソースデバイスの中の全てのリソースよりも少ないリソースを使用する設計に対して、その設計は特定の目標デバイスに変換可能であり得るが、しかし１つ以上の種類のより多いリソースを使用する、同じソースデバイスの中の異なる設計は、それと同じ特定の種類の目標デバイスに変換可能でないことがあり得る。
【００５０】
発明のこの局面は、例えばそれがコンパイルステップ１１１の統合化ステージに適用される場合には、数時間後になるかもしれない変換の試みの失敗を待つ代わりに、好適なことに設計が開始されたときに失敗の予告をユーザーに助言する。このような失敗が予告された場合には、ソフトウェアは次により大きい使用可能な目標デバイスに切り替える、または切り替えることをユーザーに助言し得る。代替案として、特に使用可能な最大の目標デバイスがすでに考慮されている場合には、ソースデバイスのなかの１種類のリソースであって、目標デバイスの中で特に少ないリソース、の中で実行される幾つかの機能に対して、ソフトウェアは、可能な場合には異なる種類のリソースの中で、幾つかの機能を実行するまたはユーザーがそれらの機能を実行することを薦める。
【００５１】
同様に、ソースデバイス上で特定の種類のリソースの中で実行された機能を移行するときに、目標デバイスがその種類のリソースに不足するときには、ソフトウェアは好適にもその機能を目標デバイスの同じ種類のリソースの中で実行することを試みない。その代わりに、ソフトウェアは使用可能な他の種類のリソースの中でその機能をモデル化する。このことはＵＰＬＤとＭＰＬＤとの間で移行するときだけではなく、異なるリソースを有する同じ種類のデバイスの間においても正しいことに留意すべきである。
【００５２】
図６は図３の方法２０と同じ方法６０を示し、ユーザーはＵＰＬＤのためのロジックを設計し、そのロジック設計は次いで設定ファイル１１２をステップ１２０で逆アセンブルすることによってＭＰＬＤの中での使用に対して変換され、ステップ１２１でネットリストを生成し、それは次いでステップ１２２と１２３でＭＰＬＤ上で配置配線処理される。発明のこの局面に従って、実証のために、得られたネットリストはステップ１２１０で再処理され、新しいＵＰＬＤ設定ファイル１１２０を生成する。設定ファイル１１２０は次いで、そのファイルによってプログラムされたＵＰＬＤが設計に従って作動することを調べるために、ステップ１１２１で試験されることができる。
【００５３】
試験するステップ１１２１はいくつかの形をとり得る。１つの極端な例としては、設定ファイル１１２０が直接ＵＰＬＤをプログラムするために使用され、その機能が適合することが求められる設計の仕様と比較されることができる。他の極端な例としては、設定ファイル１１２０がオリジナルの設定ファイル１１２と単純に比較されることができる。ファイルが一致する場合には、調査はそこで終了する。しかしながらファイル１１２および１１２０が一致しない場合にも、それらはなお同じ機能を示すデバイスをもたらす可能性がある。それ故にさらなる試験が必要であり、それはシミュレーションのような方法、または実際にデバイスをプログラムすることによって、実施されることができる。
【００５４】
再処理のステップ１１２１はステップ１２１の単純な鏡像イメージであってはならない。さもなければ、ファイル１１２０は常にファイル１１２と同一となり、結果として得られるＭＰＬＤの中の誤り（ｅｒｒｏｒ）が検出されなくなる。むしろステップ１１２１は、ステップ１２１のネットリストを設定ファイル１１２０に戻す変換を行うように、独立に作成されることが望ましい。
【００５５】
上記で検討したように、モデル２１０と３１１はＵＰＬＤとＭＰＬＤとの間のまたはその逆の変換をモデル化するために（そして同様のモデルが異なるＵＰＬＤの間または異なるＭＰＬＤの間で変換するために使用され得る）提供される。この発明の好適な実施形態に従って、モデル２１０と３１１（および任意の同様のモデル）はデバイスのペアのマッピングに基づき得る。これらのマッピングは、その間でロジック設計をマッピングすることの必要性が予見される、デバイスの選択されたペアに対して、先行してセットアップされる。かくして、詳細には、これらのマッピングは各ＭＰＬＤおよびその対応するまたは互換性を有するＵＰＬＤに対して生成され得る。一部のこのような例においては、マッピングは１対１の対応を有し、それはＡｌｔｅｒａ  ＣｏｒｐｏｒａｔｉｏｎのＡＰＥＸＴＭおよびＨａｒｄＣｏｐｙＴＭＡＰＥＸＴＭ製品などの場合である。Ａｌｔｅｒａ  ＣｏｒｐｏｒａｔｉｏｎのＳＴＲＡＴＩＸＴＭおよびＨａｒｄＣｏｐｙＴＭＳＴＲＡＴＩＸＴＭ製品などの他の種類のデバイスにおいては、リソースの数および配置が対応するあるいは互換性を有するデバイスの間で異なり、マッピングはより複雑になり得るが、しかしＩ／Ｏブロックおよびロジックブロックの間の関係を含む、最も近い近隣関係を維持するように好適に設計されるときには、その結果、１つのデバイスから別のデバイスへ移行された設計は所望のとおり作動する。デバイスのアスペクト比が異なる場合においても、このようになることが好ましい。例えば、１００×１００のロジックブロックを有するＵＰＬＤが５００×２０のロジックブロックを有するＭＰＬＤにマッピングされる場合、最も近い近隣関係、および性能を維持するためにロジックとＩ／Ｏとの間の関係を維持することが望ましい。
【００５６】
例えば、Ｉ／Ｏブロックおよび特定の他のロジックブロックと近づけるために、ロジックブロックの最右側の列に置かれたＵＰＬＤロジックブロックを考える。目標のＭＰＬＤの最右側の列には、わずか５分の１の数のロジックブロックしかないが、発明に従って、ソースデバイスの最右側の列のロジックデバイスは好適なことに、それが目標デバイスの最右側の列に入ることができない場合にも、少なくとも目標デバイスの最右側から５番目までの列の１つに入るように、制約が付けられる。ソースデバイスにおいて最初のロジックブロックの近くに意図的に置かれた他のロジックブロックもまた、好適なことに、目標デバイスにおいて最初のロジックブロックの近くに置かれる。これを実現する１つの好適な方法は、２つの配置の中で個別の要素（例えば、ロジックブロック）の間の１対１の対応を維持することである。
【００５７】
より小さな例が図７に示されており、これは５×４のＵＰＬＤ７０と７×３のＭＰＬＤ７１との間の上述したような差異およびマッピングを示し、マッピングされた入力／出力ブロック、マッピングされたロジックブロック、およびマッピングされたメモリには類似した番号が付けられている。デバイス７０において、例えば第１の列にあって入力／出力ブロック１３２に近い位置にあった一部のロジックブロックは、デバイス７１において、例えば第２の列にあり入力／出力ブロック１３２から遠くなる。少なくともデバイス７０がＵＰＬＤでありデバイス７１がＭＰＬＤである場合には、ＭＰＬＤの中では信号は単にメタライゼーション上を移動し、それ故にＵＰＬＤの相互接続上の信号よりも速く移動するために、これらの配置の相違はタイミングに重大な影響を与えない。
【００５８】
マッピングプロセスを自動化することは可能である。しかしながら、マッピングは手動によって実施されることが可能であり、各マッピングはデバイスのペアに基づいているために、またそのペアの中のデバイスの間の全ての変換をマッピングするために使用されるために、それは一度だけ生成される必要があり、そのことが手動マッピングの採用を適切とする。マッピングが実施されたならば、そのペアの中のデバイスの間の全ての変換は、単にマッピングに従うことのみによって実施されることができる。発明のこの局面はまた、１つのＵＰＬＤからＭＰＬＤへの変換を異なるＵＰＬＤからＭＰＬＤへの変換（例えば、「目標の」ＭＰＬＤが異なる場合）にマッピングするために、または１つのＵＰＬＤから別のＵＰＬＤにマッピングするためにも、そこでは代替の目標デバイスが異なった寸法、リソースの配置および数を有する場合でもマッピングがそれ以前にすでに準備されている限りにおいては、使用することができる。発明のこの局面は、最初の設計がＵＰＬＤに対するものである場合には、特に有用であり、なぜならば、それは新しい目標の設計に対する出発点として、コンパイルされたＵＰＬＤ設計に好適に依存するからである。これは数時間を要し得る新しい設計の配置配線処理のステップの実行を不要とする。コンパイルされたＵＰＬＤ設計を使用することによって、比較的短い時間で代替のマッピングがユーザーに提示されることができる。
【００５９】
同じ方針に沿って、発明の別の局面に従って、ＰＬＤおよび対応するＭＰＬＤの所与のファミリーにおいて、ＭＰＬＤは様々な種類のロジックブロックおよびメモリ要素などのある種類のリソースを異なる数だけ所有し得ることが、認められている。発明のこの局面（図示されていない）に従って、ユーザーのソフトウェアがソースおよび目標デバイスの中の各種類のリソースの必要数をチェックし、−−例えばどのカテゴリのリソースにおいても、ソースデバイスで使用される数が目標デバイスで使用できる数を越えることがない値に、これらの数が一致する範囲内に許容される変換の数を制限することが望ましい。このように、ソースデバイスの中のすべてのリソースよりも少ないリソースを使用する設計に対して、その設計は特定の目標デバイスに変換可能であり得るが、しかし１つ以上の種類のより多いリソースを使用する同じソースデバイスの異なる設計は、その同じ特定の種類の目標デバイスに変換可能であるとは言えない。
【００６０】
発明のこの局面は、例えばそれがコンパイルステップ１１１の統合化ステージに適用される場合には、数時間後になるかもしれない変換の試みの失敗を待つ代わりに、好適なことに設計が開始されたときに失敗の予告をユーザーに助言する。このような失敗が予告された場合には、ソフトウェアは次により大きい使用可能な目標デバイスに切り替えるか、または切り替えることをユーザーに助言する。代替案として、特に使用可能な最大の目標デバイスがすでに考慮されている場合には、ソースデバイスのなかの１種類のリソースであって、目標デバイスの中で特に少ないリソース、の中で実行される幾つかの機能に対して、ソフトウェアは、可能な場合には異なる種類のリソースの中で、幾つかの機能を実行するまたはユーザーがそれらの機能を実行することを薦める。同様に、ソースデバイス上で特定の種類のリソースの中で実行された機能を移行するときに、目標デバイスがその種類のリソースに不足するときには、ソフトウェアはその機能を目標デバイスの同じ種類のリソースの中で実行することを試みない。その代わりに、ソフトウェアは使用可能な他の種類のリソースの中でその機能をモデル化する。このことはＰＬＤとＭＰＬＤとの間で移行するときだけではなく、異なるリソースを有する同じ種類のデバイスの間においても正しいことに留意すべきである。
【００６１】
本発明に従ってプログラムされたデバイスは、多くの種類の電子デバイスにおいて使用され得る。例えばＰＬＤ９０８（ＭＰＬＤまたはＵＰＬＤ）としての、１つの可能な用途は、図８に示されたデータ処理システム９００の中に見られる。データ処理システム９００は１つ以上の次のような構成部品、すなわちプロセッサ９０１、メモリ９０２、Ｉ／Ｏサーキットリ９０３、および周辺デバイス９０４を含み得る。これらの構成部品はシステムバス９０５によって一緒に接続され、エンドユーザーシステム９０７に含まれる回路基板９０６上に配置される。
【００６２】
システム９００は、コンピュータネットワーク接続、データネットワーク接続、計装、ビデオ処理、デジタル信号処理、あるいはプログラム可能なまたは再プログラム可能なロジックの使用による利益が期待される他のすべての用途、などの広範囲の用途において使用され得る。ＰＬＤ９０８は様々な異なるロジック機能を実行するために使用することができる。例えば、ＰＬＤ９０８はプロセッサ９０１と協調して作動するプロセッサまたは制御器として設定され得る。ＰＬＤ９０８はまた、システム９００の中の分割共有されるリソースへの仲裁（ａｒｂｉｔｒａｔｉｎｇ）を要するアクセスに対するアービターとしても使用され得る。さらに別の実施例において、ＰＬＤ９０８はプロセッサ９０１とシステム９００の１つの他の構成部品との間のインターフェイスとして設定され得る。システム９００は単なる例示にすぎないことに留意すべきである。
【００６３】
上記のとおり、ＰＬＤおよびＭＰＬＤを実用するために、またそれと共に本発明が使用されるために、様々な技術が使用されることができる。
【００６４】
これまでに述べられてきたことは本発明の原理の単なる例示であって、本発明の範囲および精神から逸脱することなく同業者によって様々な修正が可能であること、および本発明が添付の請求項のみによって制限されることが、理解される。
【図１】
2010182327.tif 000003
【図２】
2010182327.tif 000004
【図３】
2010182327.tif 000005
【図４】
2010182327.tif 000006
【図５】
2010182327.tif 000007
【図６】
2010182327.tif 000008
【図７】
2010182327.tif 000009
【図８】
2010182327.tif 000010