JP2001509326A - ピンロック動作を容易化するために重付け関数を使用したプログラム可能論理装置配置方法 - Google Patents

ピンロック動作を容易化するために重付け関数を使用したプログラム可能論理装置配置方法

Info

Publication number
JP2001509326A
JP2001509326A JP52253398A JP52253398A JP2001509326A JP 2001509326 A JP2001509326 A JP 2001509326A JP 52253398 A JP52253398 A JP 52253398A JP 52253398 A JP52253398 A JP 52253398A JP 2001509326 A JP2001509326 A JP 2001509326A
Authority
JP
Japan
Prior art keywords
equation
equations
function
term
output
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP52253398A
Other languages
English (en)
Inventor
エム. シルバー,ジョシュア
エイ. ハリソン,デイビッド
スー,フア
Original Assignee
ザイリンクス,インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ザイリンクス,インコーポレイテッド filed Critical ザイリンクス,インコーポレイテッド
Publication of JP2001509326A publication Critical patent/JP2001509326A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/347Physical level, e.g. placement or routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/392Floor-planning or layout, e.g. partitioning or placement

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Architecture (AREA)
  • Logic Circuits (AREA)

Abstract

(57)【要約】 ユーザによって論理関数(機能)が後に修正された後に同一の入力/出力ピン位置を維持するためにコンプレックスプログラム可能論理装置(CPLD)のファンクションブロック内に論理関数を配置させる方法。本方法は、最初に割当てた入力及び出力ピン位置を変更することなしに論理関数に対する爾後的な修正を実行するために充分な資源が各ファンクションブロック内において使用可能であるように論理関数の一部をファンクションブロックへ割当てるための重付け関数を使用する。論理関数の各部分に対して、該重付け関数を使用してファンクションブロックの全てにおいて使用可能な資源を最大としながらその部分を実行するファンクションブロックを識別する。特定の方程式を配置させることが不可能である場合には、本方法は当て嵌め洗練化、バッファ動作及び論理再形成などの補正手段を使用して該方程式を配置させる。該方程式を未だに配置させることが不可能である場合には、該重付け関数を変更し、それにより論理部分をファンクションブロックへ割当てる基準を変更する。次いで、配置方法を該変更した重付け関数で繰返し行う。

Description

【発明の詳細な説明】 発明の名称 ピンロック動作を容易化するために重付け関数を使用したプログラム可能論理装 置配置方法 発明の詳細な説明発明の分野 本発明は、プログラム可能論理装置に関するものであって、更に詳細には、論 理関数(機能)が後に修正される場合に入力/出力ピン位置の変化が最小である ようにプログラム可能論理装置において論理関数を配置させる方法に関するもの である。従来の技術 プログラム可能論理装置(PLD)は、種々の論理関数(機能)をエミュレー ションするためにユーザによってプログラムすることが可能な一群の集積回路( IC)である。論理設計者は、典型的に、電子システムにおいて制御論理を実現 するためにPLDを使用する。なぜならば、それらは、プログラムすることが比 較的容易であり、且つ、しばしば、エミュレーションした論理関数即ち機能をア ップデート即ち更新するために再プログラムすることが可能だからである。この ことは、電子システムの設計フェーズにおいてそれらを使用することをカスタム のハードワイヤード型又は「応用特定」集積回路(ASI C)よりも低コストのものとさせている。 一つの主要なクラスのPLDは、一組の入力ピンと、該入力ピンへ接続されて いるプログラム可能ANDプレーンと、該ANDプレーンの出力端へ接続されて いるORプレーンと、該ORプレーンの出力端へ接続されている一組の出力ピン とを有している。ANDプレーンはプログラム可能な接続部からなるマトリクス を提供しており、その場合に、各列が一つの入力ピンへ接続し且つ各行が積項( P項)要素と呼ばれるANDプレーンの出力を形成し、それはORプレーンへ送 られる。ORプレーンは、各P項要素が異なる出力ピンへ通ずる列へ接続可能で あるようにプログラムすることが可能であり、その場合には、そのPLDはプロ グラマブルロジックアレイ(PLA)と呼ばれる。一方、ORプレーンは、各P 項要素が特定の出力ピンへ割当てられるように固定することが可能であり、その 場合には、そのPLDはプログラマブルアレイロジック(PAL)装置と呼ばれ る。 PLA及びPALは二つのレベルの論理(AND及びOR)を包含しており且 つ「積の和」の形態で表現することの可能な論理関数即ち論理機能を実現するこ とが可能である。論理関数の積の和形態は、その関数の出力信号を発生するため に一括して「O R」処理される一組のP項を有している。この様な論理関数はANDプレーン及 びORプレーンにおけるプログラムされた即ち書込みがされた接続部によってP LDにおいて表現される。各P項要素は各入カピンに対してANDプレーン内に プログラム可能な入力接続部を有しており且つ論理AND即ち接続された入力部 の「積」を表わす単一の出力値を発生する。通常、オリジナルの入力ピン値及び その補元の両方がP項要素に対して接続するために使用可能である。各出力はO Rプレーン内においてプログラム可能なP項要素接続部を有しており且つ論理O R即ち接続されたP項要素の「和」を表わす出力値を発生する。 これらの初期のPLDは論理設計者によって良好に受入れられていた。しかし ながら、論理関数が益々大型化し且つ益々複雑になると、論理設計者は充分な論 理能力を与えるために2個又はそれ以上の小さなPLDを一緒に配線することが 必要とされる。この処理は開発及びテスト期間中においては我慢することが可能 であっても、それは生産単位のコスト及び寸法を増加させる。このことは益々大 型化する論理容量を有するPLDに対する要求を発生させている。 より大きな容量に対する益々増加する要求を満足 させるために、益々複雑なアーキテクチャを有するPLDが開発されている。コ ンプレックスプログラム可能論理装置(CPLD)として知られている一つのポ ピュラーな複雑なPLDタイプは、機能(関数)ブロックの各々が相互接続マト リクスを介してCPLDの他の機能(関数)ブロックと通信を行うように相互接 続マトリクスによって互いに及び入力/出力(I/O)資源へ接続されている2 個又はそれ以上の「機能(関数)ブロック」を有している。CPLDの各機能ブ ロックは上述した2レベルPLDのような構成とされ、各機能ブロックは一組の ORゲートへプログラムすることによって接続可能な多数のP項要素を具備する ANDアレイを有している。実効的に、これらのCPLDは、幾つかの初期のP LDと関連する接続回路とを単一の集積回路上へ組込んでいる。このことは、回 路設計者に対して単一のICを使用して複雑な論理機能(関数)を実現する便宜 性を与えている。 CPLDは特別のプログラミングプロセスを使用して複雑な論理機能(関数) を実現すべくプログラムされる。 典型的に、公知のプログラミングプロセスは、複雑な論理関数を本明細書にお いては「方程式」と呼称するより小さな部分へ最適化(分割)することに よって開始する。各方程式は多数のP項として表わされ、該P項は、共にOR処 理されると、複雑な論理関数の一部を表わす積の和項を発生する。これらの方程 式は、通常、出力方程式(それらの積の和項はCPLDパッケージの出力ピンへ 印加される)とノード方程式(それらの積の和項は爾後の方程式に対する入力と して使用するために相互接続マトリクス内へフィードバックされる)として分類 される。 次いで、該公知のプログラミングプロセスは、各機能ブロックに対して一つの グループの方程式を割当て且つ該グループの各方程式を該機能ブロックの特定の 部分へ割当てることによって該方程式をターゲットのCPLD内において区画化 し且つ配置(割当て)を行う。この配置プロセスは、又、例えば、各出力方程式 がターゲットCPLDの特定の出力ピンに対して割当てられるように各方程式の 出力位置を設定する。 次に、該プログラミングプロセスは該グループの方程式の各P項を機能ブロッ クの特定のP項要素に対して「マッピング」(割当て)を行う。 最後に、最適化、区画化、配置及びマッピングプロセスを使用して複雑な論理 関数に対して最終的な配置配列を決定した後に、その最終的な配置配列をビット マップへ変換し、次いで、該ビットマップを 特別の装置プログラマを使用してターゲットCPLDへ送る。 本発明は、通常、CPLDプログラミングプロセスの全ての三つの部分(即ち 、最適化、区画化及び配置、及びマッピングプロセス)に対して適用されるもの であるが、本発明は、特に、区画化及び配置方法、及びマッピング方法に指向さ れている。 幾つかの区画化及び配置方法がCPLDプログラミング技術における当業者に とって公知である。これらの公知の区画化及び配置方法の典型的な目標は、ター ゲットCPLDをその最大容量で使用するために、各機能ブロック内に可及的に 高い密度で方程式を詰込むことである(即ち、各機能ブロックの資源を可及的に 多数使用することである)。例えば、各機能ブロックは36本の入力線と90個 のP項要素とを有している場合には、各機能ブロックに対して割当てられている 方程式は、該グループの方程式の入力信号の総数が可及的に36に近いものであ るか、又は該グループの方程式のP項の総数が可及的に90に近いものであるよ うにグループ化させる。 更に、幾つかのマッピング方法がCPLDの技術における当業者にとって公知 である。これらの公知のマッピング方法の典型的な目標は、方程式の間に位置さ れている未使用のP項要素の数を最小とする ために該方程式(及び、特に、出力方程式)を可及的に密接してパッキング即ち 詰込むことである。 ユーザが以前に配置した論理関数(機能)を修正することを所望する場合に、 公知の配置及びマッピング方法に関連する問題が発生する。論理関数を修正する ための決定は、しばしば、その論理関数を組込んだCPLDをシステム内に集積 化した後(例えば、他の集積回路と共にプリント回路基板上に装着させた後)に おいて発生する。このことが発生すると、ユーザは、典型的に、CPLDへの/ CPLDからの入力/出力信号がその修正を行った後においてその修正を行わな かった前と同一であるようにCPLDの入力/出力ピン位置を「ロック」するこ とを所望する。このことは、本明細書においては、ピンロック動作と呼称し、且 つそれは論理機能に対する各修正の後にシステムに対する変更(例えば、プリン ト回路基板上の導電性トレースの変更)を回避するものであるので有益的なもの である。換言すると、修正を行った後に、その論理機能の修正の前に使用してい たものと同一のピンに対して入力信号を印加し且つそれから出力信号を受取るこ とが望ましい。公知の配置及びP項マッピング方法に関連する問題は、方程式が 機能ブロック内にぎっしりと詰込まれており、且つ出力方程式は密接してグルー プ化 されているので、入力/出力ピン位置を変更することなしに修正(例えば、一つ 又はそれ以上のP項を一つの方程式へ加えること)を行うことは非常に困難であ る。発明の要約 本発明によれば、CPLDプログラミングプロセスが配置配列を識別し、その 場合に、論理機能(関数)の方程式がCPLDの機能(関数)ブロック間に分布 され、且つ該論理機能に対する爾後の修正がCPLDの入力及び出力ピン位置を 変更することを必要とするものではないように機能ブロック内において離隔され ている。 本発明の第一の側面によれば、CPLDの機能ブロックの各々において最大数 の資源が使用可能である(即ち、割当てられていない)ように選択された方程式 を最もよく実現する機能ブロックをその選択された方程式に対して識別するため に重付け関数を使用する。使用可能な資源を機能ブロック内に均一に分布させる ことによって、該論理関数に対する爾後の修正が入力/出力位置を変化させるこ となしに実現することが可能である確率が増加し、それによりピンロック動作を 容易なものとさせる。 本発明の第二の側面によれば、該重付け関数は複数個の変数を有しており、各 変数は、例えば、各機 能ブロック内の以前に配置された方程式に対して割当てられたP項要素の数によ って乗算される。最初に割当てられた変数値を使用して有効な配置配列を決定す ることが不可能である場合には、該重付け関数の変数を修正して該方程式と関連 する異なる特性(例えば、P項の数)を強調させる。 本発明の第三の側面によれば、出力方程式がCPLDの機能ブロックに対して 割当てられると、該出力方程式は、各マッピングプロセスの後に各方程式に対し て「ファントム(擬似)」P項を加算しながら繰返しマッピングされる。各方程 式に対して「ファントム」P項を加算することによって、各方程式の実効寸法は 、マッピングプロセス期間中に増加され、それによって該機能ブロックにおいて 出力方程式の一様な間隔を発生させる。このことはP項要素の最大量が該論理関 数の任意の与えられた方程式に対する修正を実現するために使用可能であるよう に該機能ブロック内において出力方程式を広げることによってピンロック動作を 簡単化させる。図面の簡単な説明 本発明のこれら及びその他の特徴、側面及び利点は、以下の説明、添付の請求 項及び添付の図面に関してよりよく理解することが可能なものとなる。 図1は複数個のファンクションブロックを有する CPLDを示した回路図である。 図2(A)はXC9500CPLDファミリーのファンクションブロックの簡 単化したブロック図である。 図2(B)は図2(A)に示したファンクションブロックのマクロセルを図示 した簡略化した概略図である。 図2(C)は図2(A)に示したファンクションブロックの積項割当て回路を 示した簡略化した概略図である。 図3は図1に示したCPLDの入力/出力ブロックを示した簡略化した概略図 である。 図4は図1に示したCPLDの相互接続マトリクスを示した簡略化した概略図 である。 図5(A)乃至5(D)はCPLDにおける方程式配置の例を示した簡略化し た回路図を示している。 図6(A)乃至6(F)は図5(A)乃至5(D)に示した方程式配置例の簡 略化したグラフィック表示を示している。 図7は本発明のP項マッピング方法を使用してCPLDをプログラミングする システムを示したブロック図である。 図8は本発明に基づくCPLDプログラミング方法を示したフローチャートで ある。 図9は本発明に基づいて重み値を計算するためのサブプロセスを示したフロー チャートである。 図10は本発明に基づいて出力方程式をロッキング(ロック動作)するための サブプロセスを示したフローチャートである。 図11(A)乃至11(C)は「ファントム」積項を使用する積項マッピング プロセスを示した簡略化したグラフィック表示である。 図12(A)及び12(B)は本発明に基づいて使用される重付け関数の別の 実施例を示した簡略化したグラフィック表示である。詳細な説明 本発明に基づくプログラミング方法をカリフォルニア州サンノゼのザイリンク スインコーポレイテッドによって製造されているXC9500CPLDを特に参 照して説明する。しかしながら、本プログラミング方法は多数のタイプのPLD へ適用することが可能である。従って、本発明はXC9500CPLDファミリ ーの装置に制限されるものではない。CPLD構造 本プログラミング方法の説明の補助としてXC9500CPLDファミリーを 簡単に説明する。XC9500CPLDファミリーのさらなる説明は、ザイリン クスインコーポレイテッドによって出版され たザ・プログラマブル・論理データブック(The Programmable Logic Data Book)、3−1乃至3−67頁、1996におい て与えられている。 図1はXC950OCPLDファミリーに共通の特徴を有するCPLD100 の簡略化したブロック図を示している。XC9500CPLDファミリーの各C PLD100はファーストコネクト(FastCONNECT)(商標)スイッ チマトリクス(FSM)400によって相互接続されている複数個のファンクシ ョンブロック(FB)200(4個が示されている)と入力/出力ブロック(I OB)300とから構成されている。IOB300は入力/出力(I/O)ピン 310へ印加される装置入力及び出力に対してバッファ機能を与える。IOB3 00からの全ての入力信号はFSM入力線320を介してFSM400へ入り、 且つFB200からの選択された出力信号はマクロセル出力線231を介してF SM400内へフィードバックされる。各FB200はFSM400からFB入 力線401を介して36個の入力を受取り且つ18個のマクロセルの何れかへ印 加される90個のP項要素を発生し、各マクロセルは選択したP項要素から積の 和項を提供すべくプログラムすることが可能である。各FB200に 対して、マクロセル出力線231を介して12乃至18個の出力が選択的に送ら れてI/Oブロック300(オプションとしての対応する出力イネーブル信号と 共に)直接的に駆動する。更に、各FB200は、それぞれ、グローバルセット /リセット線402及びグローバルクロック線403を介して選択的にグローバ ルセット/リセット信号及びグローバルクロック信号を受取る。これらのグロー バル信号のファンクション(即ち、機能又は関数)及び使用について以下に説明 する。 図2(A)はファンクション(機能又は関数)ブロックFB200の簡略化し たブロック図を示している。各FB200はANDアレイ210と、積項アロケ ータ(割当器)220と、18個のマクロセル230とを有している。ANDア レイ210はFSM400から入力線401を介して36個の信号を受取り且つ 90個のP項要素を発生し、それらは、積項アロケータ220を介してマクロセ ル230に対して選択的に経路付けされる。次いで、マクロセル230からの出 力はその他のFB200における入力信号として使用するためにマクロセル出力 線231を介してFSM200へ戻るように経路付けされるか、又は、P項OE 線225を介して送られるオプションとしての対応する出力イネーブル(OE) 信号と共に対応するI/Oピン310乃至IOB300に対して経路付けされる 。 図2(B)はマクロセル230(1)を有するFB200の一部を示している 。図2(B)において表わされており且つ以下に更に説明するように、積項アロ ケータ220(1)はプログラミングによって5個の直接的P項要素211(1 )乃至211(5)を接続してマクロセル230(1)によって使用される種々 のP項信号を与える。特に、これらの直接的P項信号は、ORゲート232に対 して、XORゲート233(XOR MUX線221及びXOR MUX234 を介して)に対して、セットMUX235(P項セット線222を介して)に対 して、クロックMUX236(P項クロック線223を介して)に対して、リセ ットMUX237(P項リセット線224を介して)に対して、及びオプション としてのOE信号(P項出力イネーブル線225を介して)を与えるために、選 択的に印加される。更に、積項アロケータ220(1)は、隣の積項アロケータ 220(2)及び220(3)からの「インポート」したP項要素をORゲート 232に対して選択的に印加する。積項アロケータ220(1)の詳細について 以下に説明する。 XOR MUX234は、プログラミングによっ て、XOR MUX線221上の信号、即ち論理「1」又は論理「0」をXOR ゲート233に対して印加する。更に、ORゲート232は積の和項を発生し、 それはXORゲート233の第二入力端へ印加される。XOR MUX234の 出力は、マクロセル出力線231を介してレジスタされた出力信号としてD/T フリップフロップ(D/T FF)238及びFF MUX239を介して、又 は組合わせ出力としてFF MUX239を介して直接的に、選択的に送給され る。残りのP項要素は、選択的に、D/T FF238に対するオプションとし ての制御信号を与え(レジスタされた出力信号が発生される場合)、及び/又は 、出力がI/Oピン310へ指向される場合にオプションとしてのOE制御を与 える(図1)。特に、セットMUX235はP項セット線222上の信号又はグ ローバルセット信号(グローバルセット/リセット線402のうちの一つの上に おいて受取られる)をD/Tフリップフロップ238のセット(S)端子に対し て選択的に通過させる。クロックMUX236はP項クロック線224上の信号 又はグローバルクロック信号(グローバルクロック線403のうちの一つにおい て受取られる)をD/Tフリップフロップ238のクロック(>)端子に対して 選択的に通過させる。リセットMUX 237はP項リセット線224上の信号又はグローバルリセット信号(グローバ ルセット/リセット線402のうちの一つにおいて受取られる)をD/Tフリッ プフロップ238のリセット(R)端子に対して選択的に通過させる。最後に、 上述した如く、P項OE線225は出力ブロック300に対して指向される(図 1参照)。 図2(C)は積項アロケータ220の内部論理を示した簡略化した図である。 P項要素211(1)乃至211(5)は、それぞれ、デマルチプレクサ(DM UX)226(1)乃至226(5)へ送られる。DMUX226(1)乃至2 26(5)は、それらの関連するP項要素を、三つの線のうちの何れか一つに対 して、即ち積項アロケータ220(1)のORゲート227の入力端に対して、 積項アロケータ220(1)と関連するマクロセル230(1)のORゲート2 32の入力端に対して、又は関連するローカルP項線に対して(それぞれ、XO R MUX線221、P項セット線222、P項クロック線223、P項リセッ ト線224及びP項OE線225)プログラムすることが可能である。 DMUX226(1)乃至226(5)によってORゲート227に対して選 択的に送られるP項信号は、本明細書においては、「エクスポート」され たP項として呼称する。なぜならば、これらのP項信号は他のマクロセルへ送ら れるからである。特に、ORゲート227に対してDMUX226(1)乃至2 26(5)によって接続されているP項要素は「OR」処理されてORゲート2 29(1)へ印加される積の和項を発生する。ORゲート229(1)はこの積 の和項をそれぞれDMUX228(1)及び/又はDMUX228(2)を介し て受取られる何れか又は両方の隣接するマクロセル220(2)及び/又は22 0(3)(図2(B)参照)から受取られる項と選択的に「OR」処理する。次 いで、ORゲート229(1)の出力は隣接するマクロセル220(2)又は2 20(3)の何れかに対してDMUX228(3)を介して経路付けされる。以 下に付加的な詳細を説明するように、積項アロケータ220のORゲート227 を使用して選択したP項要素を選択的に結合(OR処理)することによって、最 大で90個のP項を有する方程式を実現することが可能である。 本明細書において使用されるように、特定のP項線221−225へ選択的に 送られるP項は、「ローカル」P項と呼称される。なぜならば、これらのP項は 、「ローカル」に(即ち、それらの関連するマクロセル内において)実現するこ とが可能であるに 過ぎないからである。即ち、例えば、関連するマクロセルのD/T FF238 のクロック端子へ非同期クロック信号を印加させるために隣接するマクロセルか ら何れかのP項を「インポート」することは不可能である。 ローカルP項と対照的に、「論理P項」という用語は、本明細書においては、 その出力が選択されたマクロセルのORゲート232へ印加されるP項を意味す るものとして使用している。以下に更に詳細に説明するように、ある方程式の論 理P項は、特定のマクロセル230に対して割当てられたP項によって「ローカ ル」に実現することが可能であり、又は積項アロケータ220を介して1個又は それ以上の隣接するマクロセルから該マクロセルへ送給することが可能である。 図3は対応するIOB300(1)を介してマクロセル230(1)と対応す るI/Oピン310(1)との間の接続を示した簡略化した回路図である。IO B300(1)は出力イネーブル(OE)MUX301を有しており、それを介 して、P項OE線225、グローバルOE線312(1)乃至312(4)、論 理「1」又は論理「0」のうちの一つによって与えられるOE信号がトライステ ートバッファ302の制御端子へ印加される。グローバルOE線312 (1)乃至312(4)は、それぞれ、グローバルOE MUX311 (1) 乃至311(4)によって駆動され、グローバルOE MUX311(1)乃至 311(4)は特別I/Oピン310(1)乃至310(4)からの信号を受取 る。印加されたOE信号がトライステートバッファ302をイネーブル即ち動作 可能状態とさせると、マクロセル出力線231上のマクロセル出力信号がI/O ピン310(1)へ印加される。反対に、トライステートバッファ302がター ンオフされると、I/Oピン310(1)へ印加される信号はFSM入力線32 0を介してFSM400(図1参照)へ印加される。 図4はファンクションブロック200(1)及び200(2)、IOB300 (2)及び300(1)、及びFSM400の間の接続を示した簡略化した回路 図である。FSM入力MUX404がファンクションブロック出力線231(1 )及び231(2)の各々をFSM400へ接続する。FSM/マクロセル入力 線405はマクロセル230(1)及び230(2)からの第一入力FSM信号 (FSM入力MUX404のプログラムされている状態に依存して真又は補元) を担持する。同様に、IOB300(1)及び300(2)からの入力信号は、 それぞれ、FSM/IOB入力線406を介してFSM4 00内へエンタされる。FSM/マクロセル入力線405及びFSM/IOB入 力線406の全てはFSM出力線401の各々へプログラミングによって接続さ れる。更に、FSM400はワイヤードAND407を有しており、それはFS M/マクロセル入力線405を介してFSMへエンタする2個又はそれ以上の信 号をAND処理する。定義 上述したように、与えられたファンクションブロックの最大で90個のP項要 素を、そのマクロセルの5個の割当てられたP項要素及びファンクションブロッ クの85個の残りのP項要素をそのマクロセルのORゲート232へ接続すべく 積項アロケータをプログラミングすることによって単一マクロセルによって使用 することが可能である。しかしながら、実際的な適用例においては、与えられた 方程式を構成するP項の数は、典型的に、90個よりもかなり小さく、それによ りユーザの論理機能のその他の方程式を実現するために多数のP項要素を使用可 能な状態とさせる。本発明に基づくプログラミングプロセスは、どの様にして方 程式をファンクションブロック内に配置させるか及びどの様にして配置させた方 程式のP項を論理関数に対する修正が行われる場合にピンロック動作を成功させ る確率を改善させる ために各ファンクションブロックのP項要素内へマッピングさせるかの問題に対 処している。 本発明に基づくP項マッピングプロセスに関連する重要な概念の説明を簡単化 するために、以下の定義及びグラフィック表現を採用する。 本明細書において使用されるように、「配置」という用語は、方程式をターゲ ットCPLD100の種々のファンクションブロック200に対して割当て(区 画化)し且つ該方程式をファンクションブロック200の特定のマクロセル23 0へ割当てる両方のプロセスを意味するものであり、且つ「マッピング」という 用語は、ある方程式の各P項をその方程式が配置されているマクロセル230の 一つのP項要素211へ割当てるプロセスのことを意味するものである。「配置 配列」という用語は配置プロセスとマッピングプロセスとを完了した後の各方程 式の位置のことを意味している。 本明細書において使用されているように、「出力方程式」という用語は、その 出力がCPLD100の出力ピン310(図1参照)へ送られる方程式のことを 意味している。反対に、「ノード方程式」という用語は、その出力がFSM40 0へフィードバックされる方程式のことを意味している。 本明細書において使用されているように、「ロッ クされた方程式」という用語は、その出力信号がユーザによって特定のI/Oピ ン310へ印加されるべく拘束されている出力方程式のことを意味している。各 I/Oピン310は関連するマクロセル230に対して一意的に接続されている ので、ユーザが特定したI/Oピン310と関連するマクロセル230において 各ロックされた方程式を実現することが必要である。対照的に、「ロックされて いない方程式」は、その出力ピン位置がユーザによって「don’t care 」即ち無関係なものとして指定されているノード方程式か出力方程式の何れかで ある。 本明細書において使用されているように、「グローバルI/O信号」という用 語は、グローバルOE線312、グローバルセット/リセット線402及びグロ ーバルクロック線403のうちの何れかを介して送られる信号のことを意味して いる。 さらなる概念及び定義は、図1−4に示したCPLD100のファンクション ブロック200の簡略化した部分を例示している図5(A)乃至5(D)に関連 して説明する。これらの図の各々は、関連する積項アロケータ220(1)乃至 220(4)及びP項要素211(1)乃至211(20)と共にFBの4個の マクロセル230(1)乃至230(4)を包含する簡略化したブロック図を包 含している。 図5(A)−5(C)はどの様にして方程式が調節されてCPLD100内に マッピングされるかの例を示している。この例の方程式は7個のP項からなるグ ループ、即ち5個の論理P項と2個のローカルP項とを有している。これらの例 においては、ローカルP項はP項要素211(6)(それはP項出力イネーブル 線225へ接続されている)及びP項要素211(7)(それはP項リセット線 224へ接続されている)によって実現されている。 図5(A)は第一例を示しており、その場合に、該方程式のP項からなるグル ープはマクロセル230(2)に関して「中心位置決め」された位置に配置され ている。「中心位置決め」という用語は、その方程式がマクロセル230(2) に対して対称的に位置決めされるように該方程式を配置することを表わしている 。この例においては、該方程式はマクロセル230(2)に割当てられた5個の P項とマクロセル230(1)及び230(3)の各々から1個のP項へマッピ ングされている。特に、該方程式はマクロセル230(2)のP項要素211( 6−10)によって実現されており、そのうちで、P項要素211(6)及び2 11(7)は、それぞれ、必要とされる「ローカル」出力イネーブル及びリセッ トP項として実現されており、且つP項要素211 (8)、211(9)、211(10)は論理P項(即ち、ORゲート232( 2)へ印加される)として実現されている。更に、該方程式の4番目及び5番目 の論理P項は、マクロセル230(1)からORゲート227(1)及びORゲ ート229(2)を介してORゲート232(2)へ送給されるP項要素211 (5)及びマクロセル230(3)からORゲート227(3)及びORゲート 229(2)を介してORゲート232(2)へ送給されるP項要素211(1 1)によって実現されている。 本明細書において使用されているように、一つのマクロセルに対して割当てら れているP項を別のマクロセルへ送給するプロセスは「エクスポート」として言 及される。図5(A)の例においては、P項要素211(5)及び211(11 )が、これらのP項をマクロセル230(2)のORゲート232(2)へ指向 すべく積項アロケータ220(1)及び300(3)をプログラミングすること によって、マクロセル230(1)及び230(3)からそれぞれマクロセル2 30(2)へエクスポートされる。 図5(B)は図5(A)に示した「中心位置決め」位置に対して「左」へシフ トされた方程式の第二の例を示している。この例においては、該方程式はマクロ セル230(1)に対して割当てられている5 個のP項及びマクロセル230(2)の2個のローカルP項内にマッピングされ る。特に、該方程式はマクロセル230(1)のP項要素211(1−5)によ って及びマクロセル230(2)のP項211(6)及びP項211(7)によ って実現されている。この例においては、該方程式の5個の「論理」P項の全て がORゲート227(1)及びORゲート229(2)を介してマクロセル23 0(1)からORゲート232(2)へエクスポートされる。該方程式の左側へ のさらなるシフトは該方程式のローカルP項によって制限される。即ち、ロック された方程式のローカルP項は、ロックされた方程式の論理P項と異なり、指定 されたマクロセル内において実現されねばならず、ローカルP項は別のマクロセ ルからインポートすることは不可能である。 図5(C)は図5(A)に示した「中心位置決め」位置に対して「右」へシフ トされた方程式の3番目の例を示している。即ち、該方程式のP項はマクロセル 230(3)に対して割当てられている5個のP項及びマクロセル230(2) の2個のローカルP項内にマッピングされる。特に、該方程式はマクロセル23 0(3)のP項要素211(11−15)及びマクロセル230(2)のP項要 素211(6)及び211(7)によって実現される。この例にお いては、該方程式の5個の「論理」P項の全てが、ORゲート227(3)及び ORゲート229(2)を介してマクロセル230(3)からORゲート232 (2)へエクスポートされる。 図5(D)は図5(A)に示した中心位置決め位置における方程式の4番目の 例を示している。この4番目の例においては、4個の「ファントム」即ち擬似P 項が該方程式へ割当てられており、それはマクロセル230(1)及び230( 3)内のP項内へマッピングされる。特に、該方程式はマクロセル230(2) のP項要素211(6−10)によって実現されており、そのうちでP項要素2 11(6)及び211(7)は必要とされる「ローカル」出力イネーブル及びリ セットP項としてそれぞれ実現されており、且つP項要素211(8)、211 (9)、211(10)は論理P項(即ち、ORゲート232(2)へ印加され る)として実現されている。更に、該方程式の4番目の「実際の」P項及び1番 目及び2番目の「ファントム」即ち擬似P項はP項要素211(3−5)によっ て実現されており、それらはORゲート227(1)及びORゲート229(2 )を介してマクロセル230(1)からORゲート232(2)へ送られる。同 様に、該方程式の5番目の「実際の」P項及び3番目及び4番目の「ファン トム」即ち擬似的なP項はP項要素211(11−13)によって実現されてお り、それらはORゲート227(3)及びORゲート229(2)を介してマク ロセル230(3)からORゲート232(2)へ送られる。 以下にさらなる詳細について説明するように、4番目の例において示されてい る「ファントム」即ち擬似P項は、マッピングプロセスの前に各方程式へ割当て られ且つ最終的な配置配列において無視される。即ち、「ファントム」P項は各 方程式へ割当てられ且つマッピングプロセス期間中においては「実際の」P項と して取扱われる。このことは、マッピングプロセスをして該方程式内の「実際の 」P項よりもより多くのP項要素を各方程式へ割当てさせる。マッピングプロセ スが完了すると、「ファントム」P項は無視される(即ち、それらは積項アロケ ータ220を介してマクロセル230へ接続されることはない)。即ち、図5( D)に示した方程式の最終的な配置配列は図5(A)に示したものと同一である 。このことは、割当てられていないP項要素の「ギャップ」が各隣接する対の方 程式の間に位置される配置配列とさせる。以下に更に説明するように、これらの 「ギャップ」は修正されたCPLD配置配列か入力/出力ピンを変更することを 必要とすること がないように該方程式に対する修正(例えば、P項の付加)を実現するために提 供される。 図6(A)乃至6(D)は、それぞれ、図5(A)乃至5(D)の配置例を例 示した簡略化した図である。図6(A)乃至6(D)において導入された簡略化 された表示に従って、マクロセル230(1−4)はマクロセル230(5−7 )を包含する連続的なストリップ630のセクション(部分)によって表わされ る。更に、図5(A)乃至5(C)内にマッピングされた方程式は図6(A)乃 至6(C)におけるブロック600によって表わされる。マクロセルストリップ 630に対するブロック600の位置はその方程式の配置を表わす(即ち、該方 程式を実現するP項要素のグループの近似的な位置は該ブロックの下側に位置さ れている)。 例えば、図5(A)に示した方程式の「中心位置決め」配置はマクロセル23 0(2)上に中心位置決めされているブロック600によって図6(A)内にお いて表わされている。更に、ブロック600の左側境界はマクロセル230(1 )の一部に亘って延在し、該方程式の一つがマクロセル230(1)及び230 (2)の両方からのP項によって実現されていることを表わす。矢印600(1 )は、1個又はそれ以上のP項がマクロセル230(1)から マクロセル230(2)へエクスポートされることを意味している。同様に、ブ ロック600の右側境界はマクロセル230(3)の一部に亘って延在しており 、該方程式がマクロセル230(3)に対して割当てられている1個又はそれ以 上のP項によって実現されていることを表わしている。矢印600(2)は、マ クロセル230(3)の使用されているP項がマクロセル230(2)へエクス ポートされることを表わしている。 図6(B)は図5(B)に示した例の方程式の左側にシフトした配置配列を示 している。ブロック600の左側境界は、全体的なマクロセル230(1)に亘 って延在しており、マクロセル230(1)のP項の全てが該方程式によって使 用されていることを表わしている。矢印600(1)は、これらのP項の全てが マクロセル230(1)からマクロセル230(2)へエクスポートされること を意味している。 図6(C)は図5(C)に示した例の方程式の右側にシフトした配置配列を示 している。ブロック600の右側境界は全体的なマクロセル230(3)に亘っ て延在しており、マクロセル230(3)のP項の全てが該方程式によって使用 されていることを表わしている。矢印600(2)は、これらのP 項の全てがマクロセル230(3)からマクロセル230(2)へエクスポート されることを意味している。最後に、図6(D)は図5(D)に示した例の中心 位置決め配置配列を示しており、「ファントム」P項は「X」で示してある。 図6(E)及び6(F)は、必要なP項資源を方程式をマッピングするために 使用可能とさせるためにどの様にして方程式を調節するか(「プッシュ」)する かを示している。図6(E)に示したように、方程式609,610,611は 以前にマッピングされており、且つ方程式612はマクロセル230(3)にお いて実現されるように指定されている。マッピングされた方程式609は230 (2)において実現されており且つP項をマクロセル230(1)から(矢印6 09(1)によって示してある)及びマクロセル230(3)から(矢印609 (2)によって示してある)インポートする。マッピングした方程式610は2 30(4)において実現されており、且つマッピングされた方程式611はマク ロセル230(6)において実現されており且つP項をマクロセル230(5) から(矢印611(1)によって示してある)及びマクロセル230(7)から (矢印611(2)によって示してある)インポートする。 点線612A及び612Bによって示されているように、方程式612の方程 式609と610との間に設けられている「スロット」(方程式の間の区域)内 へのマッピングは、この配置配列が発生する結果的に得られる「オーバーラップ 」(2個又はそれ以上の方程式における特定のP項の同時的な使用)のために有 効な配置を発生するものではない。例えば、図6(E)において、方程式612 の方程式609及び610上での潜在的なオーバーラップが方程式609及び6 10におけるシェーディング区域によって示されている。方程式609と610 との間に方程式612をマッピングするために、方程式612を実現するために 充分なP項資源を解放させるために方程式609及び610を再位置決め(再マ ッピング)することが必要である。 本明細書において使用しているように、「プッシュ」とは、P項資源を付加的 な方程式のマッピングのために使用可能とさせるために方程式を調節するプロセ スのことを意味している。「左へプッシュ」という語句はマクロセルの「線」に 沿って第一相対的「方向」に方程式をプッシュするプロセスのことを意味し、且 つ「右へプッシュ」という用語は第一方向とは反対である第二相対的「方向」に 方程式をプッシュするプロセスのことを意味している。 方程式609と612との間のオーバーラップを除去する一つの方法は、方程 式609を左(方程式609から延在する矢印の方向)へプッシュ即ち押すこと である。同様に、方程式610と612との間のオーバーラップを除去する別の 方法は、方程式610を右(方程式610から延在する矢印の方向)へプッシュ 即ち押すことである。 図6(F)は方程式609及び610をプッシュした後の方程式609−61 2の配置配列を示している。方程式609はマクロセル230(2)内において 実現されており且つマクロセル230(1)からP項をインポートする(矢印6 09(1)によって表わしてある)。方程式612は、必要とされるように、マ クロセル230(3)内において実現されており且つマクロセル230(2)か ら(矢印612(1)によって表わしてある)及びマクロセル230(4)から (矢印612(2)によって表わしてある)P項をインポートする。方程式61 0はマクロセル230(4)内において実現されており且つマクロセル230( 5)から(矢印610(2)によって表わしてある)P項をインポートする。最 後に、方程式610はマクロセル230(6)内において実現されており且つマ クロセル230(7)から(矢印611(2)によって表わしてある)P 項をインポートする。 プログラミング方法 本発明に基づくCPLDプログラミング方法について説明する。本発明のシステム文脈 図7は本発明に基づいてCPLD100をプログラミングする「マシン」を示 している。人間のユーザ721がプログラミングされるべきCPLD100を供 給し且つCPLD100が実行すべき論理機能(回路設計)を特定する。論理設 計ソフトウエア722及びCADソフトウエア724(本明細書では共に「ハイ レベルプログラム」と呼称する)がコンピュータ723において動作し、ユーザ 721によって特定された論理関数(機能)をとり且つその論理をCPLD10 0上にどの様にして効率的に「マッピング」するかを決定する。論理設計ソフト ウエア722は、図8−11に示したステップを実施するために使用され、且つ 更に以下に説明する。その特定された論理関数が模式的又はハイレベル言語形式 で表わされる場合には、論理設計ソフトウエア722は、図6−11におけるス テップを実施する前に、該関数をその形式から一組のブール積の和方程式へ変換 するために使用することが可能である。該一組のブール方程式は順次(レジスタ 型)方程式と 組合わせ方程式の両方を包含している。この様な形式変換手順は当該技術分野に おいて公知であり且つ容易に入手可能である。しかしながら、図8乃至11(C )に示したプログラミング方法は本発明特有の側面を開示している。論理設計ソ フトウエア722の後にCADソフトウエア724が使用され、且つ装置プログ ラマ725に対してCPLD100内にプログラムすべき値を表わすビットマッ プファイルを発生する。このビットマップファイルはhex(16進数)ファイ ルとしても知られており、それは各ファンクションブロックのANDアレイ及び ORアレイのプログラム可能な接続部の、論理エクスパンダ又は相互接続マトリ クスの、及びCPLD100のその他の設定のリストである。装置プログラマ7 25は、該ビットマップファイルの内容を物理的にCPLD100内にプログラ ムする。そのプログラミング即ち形態の特定の物理的形式はCPLD100の製 造技術に依存する。例えば、CPLD100がEPROM又はEEPROM装置 である場合には、EPROM又はEEPROMセルは、フローティングゲート又 はその他の容量要素を充電又は放電させることによってプログラミングされる。 その他のPLD装置を、ヒューズを焼切することによって同様の装置プログラマ を使用してプログラミングすることが 可能である。使用することの可能な一つの装置プログラマ25はカリフォルニア 州サンノゼのザイリンクスインコーポレイテッドから入手可能なHW−130で ある。それはRS232シリアルポートを介してコンピュータ23へ接続する。 HW−130プログラマに対して供給されるソフトウエアドライバがコンピュー タ23から装置プログラマ25へプログラムとデータとをダウンロードする。従 って、図7におけるマシンの相互作用を行う要素21−25は、CPLD100 をプログラムされていない状態から特定された論理機能(関数)を実施すること の可能なプログラムされた状態へ還元するプロセスを実行する。方法ステップ 本発明に基づくCPLDプログラミング方法を図8−11(C)に示してある 。このプログラミング方法は、論理関数(機能)を方程式の組として格納される 複数個の方程式へ最適化された後にコール即ち呼出される。 図8は、本発明のCPLDプログラミングプロセスの一例を示したフローチャ ートである。このプロセスはステップ802で開始する。 ステップ802において、方程式の組内の全ての方程式がそれらの方程式のタ イプ及び寸法に従って 格納される(配置優先度値が割当てられる)。配置が何らかの態様で制限される 方程式は、配置が比較的より柔軟性のある方程式よりも一層高い配置優先度値が 割当てられる。例えば、ロックされた方程式からの出力信号は特定のファンクシ ョンブロックの特定のマクロセル内に配置されねばならない。従って、ロックさ れた方程式はロックされていない出力方程式よりも一層高い配置優先度が割当て られる。同様に、ロックされていない出力方程式はノード方程式よりも一層高い 優先度が割当てられる。なぜならば、ロックされていない出力方程式はその出力 がI/Oピンへ接続されるマクロセル内において実現されねばならず、一方ノー ド方程式は任意のマクロセル内において実現することが可能だからである。 ザイリンクスXC9500ファミリーのCPLDに関する本発明の一実施例に よれば、方程式の組の方程式は最も高い優先度から最も低い優先度へ以下の順番 で優先度が付けられ、即ち、ロックされた方程式、グローバルI/O信号、グロ ーバル入力信号(例えば、高速クロック及びグローバル出力イネーブル信号)、 特定のファンクションブロックへ割当てられている出力方程式、ファンクション ブロックに割当てられているノード方程式、ロックされていない出力方程式、ノ ード方程式の順番である。この リストは例示的なものであり、当業者によって理解されるように、任意の二つの 特定の方程式タイプの相対的な柔軟性はターゲットCPLDにおいて採用された 特定の回路に依存する場合がある。更に、ユーザによって論理機能(関数)に課 されるか、又はターゲットCPLDにおいて使用される特定の回路から発生する 特定の条件を満足するために、付加的な方程式タイプ又は二つ又はそれ以上の方 程式タイプの関数を使用することが可能である。 各特定の方程式タイプの方程式は、又、方程式の寸法(即ち、その方程式を実 現するために必要とされるファンクションブロック入力線及びP項要素の数)に 基づいて優先度付けが行われる。本実施例においては、より大きな数のファンク ションブロック入力を有する方程式は最も高い優先度が与えられる。二つの同一 のタイプの方程式が同一の数のファンクションブロック入力を有する場合には、 最も高い数のP項を有する方程式に優先度が与えられる。この二次的な優先度付 け基準はザイリンクスXC9500CPLDの各ファンクションブロックのP項 の数(90)と比較してファンクションブロック入力の数(36)が比較的低い ことに鑑みて採用されている。当業者によって理解されるように、この優先度付 け基準は、ターゲットCPLDが、例えば、より 大きな数のファンクションブロック入力を具備する異なる回路構造を持っている 場合には逆にすることが可能である。全ての方程式の優先度付けを行った後に、 制御はステップ804へパスされる。 ステップ804において、キューへアクセスして全ての方程式が処理されたか 否かを決定する(即ち、そのキュー内に残存する何れかの方程式が配置可能であ るか否かを決定する)。そのキュー内の方程式の全てが以下に説明するステップ に従って処理された場合には、ステップ804の結果は「NO」であり、それに より制御をステップ806へパスする(以下に説明する)。勿論、最初にステッ プ804がコールされる場合にはその判別結果は「YES」であり、従って制御 はステップ808へパスされる。 ステップ808において、最も高い配置優先度値を有するキュー内に格納され ている方程式が選択される。上述したように、その選択された方程式の配置優先 度値は、その選択された方程式のタイプと寸法とによって決定される。次いで、 制御はステップ810へパスされる。 ステップ810において、本発明の第一側面に従って、重付け関数サブルーチ ンがコール即ち呼出され、その場合に、ターゲットCPLDの可及的に最良のピ ンロック柔軟性を維持しながらどのファンク ションブロックがその選択された方程式を実現するかを決定するために各ファン クションブロックに対して重み値が計算される。図9はこの様なサブルーチンの 一例を示している。 図9を参照すると、ステップ811において、ファンクションブロックFBが ターゲットCPLDと関連する複数個のファンクションブロックから選択される 。各ファンクションブロックはこのサブルーチン期間中に一度だけ選択されるに 過ぎず、且つ該ファンクションブロックは任意の順番で選択することが可能であ る。1個のファンクションブロックが選択されると、制御はステップ812へパ スされる。 ステップ812において、以下の関数を使用してそのファンクションブロック に対して基本重み値が計算される。 基本重み=c1×(FBが空の場合に0)そうでない場合に1)+c2× (方程式がそのFB内に配置される場合に使用される付加的なFB入力の数) この関数は各ファンクションブロックFBに対する基本重み値を計算し、それは 選択された方程式を特定のファンクションブロック内に配置させる相対的な利点 を表わす。該関数における変数c1及びc2は経験から決定され且つ以下に説明 するように、異 なる配置配列を発生するために選択的に変更される。一実施例においては、変数 c1は初期的に20の値が与えられ、且つ変数c2は5の初期的な値が与えられ る。 変数c1は、選択されたファンクションブロックが空の場合に(即ち、そのフ ァンクションブロック内に配置された以前に検討された方程式は存在しない)、 0で乗算され、且つ一つ又はそれ以上の方程式がそのファンクションブロック内 に存在する場合には1が乗算される。変数c1は方程式を空のファンクションブ ロック内に配置させる傾向がある。 変数c2は、選択された方程式が選択されたファンクションブロック内に配置 される場合にその選択された方程式によって使用することが可能であるFB入力 の数によって乗算される。例えば、選択された方程式が2個のFB入力を有して おり且つ選択されたファンクションブロックが空である場合には、その方程式が 配置される場合に使用される付加的なFB入力の数は2に等しい。2番目の例と して、選択された方程式が2個のFB入力を有する場合には、その選択されたフ ァンクションブロックは2個のFB入力を有する1個の以前に配置させた方程式 を有しており、且つその選択された方程式のFB入力は前に配置させた方程式の FB入力と異なっており、従 ってその方程式が配置される場合に使用される付加的なFB入力の数は2に等し い。最後の例として、選択された方程式が2個のFB入力を有しており且つ選択 されたファンクションブロックが2個のFB入力を有する1個の以前に配置させ た方程式を有しており、且つ選択された方程式のFB入力が同一である(即ち、 両方の方程式が同一のFB入力信号から派生される)場合には、その方程式が配 置された場合に使用される付加的なFB入力の数は0に等しく、即ち、その選択 された方程式をファンクションブロックへ付加することは両方の方程式を実現す るために使用されるFB入力の数を増加させることはない。 ステップ812において計算されるFB入力の数は、FB入力を最も効果的に 利用するためにどこに方程式を配置させるかを表わす。値c2はファンクション ブロックに対する比較的低い数によって乗算され、その場合に選択された方程式 の1個又はそれ以上のFB入力は1個又はそれ以上の前に配置された方程式によ って共用され、それにより比較的低い基本重み値を発生する。逆に、FB入力が 共用されることのないファンクションブロックにおいては、選択された方程式は 変数c2が比較的高い数で乗算されるために比較的高い基本重み値を発生する。 該サブルーチンは、更に、選択されたファンクションブロックが選択された方 程式を配置するために使用可能な充分な資源を有するものであるか否かを判別す る。例えば、選択された方程式が30個のP項を有しており且つ選択されたファ ンクションブロックが20個の自由なP項要素を有するに過ぎない場合には、選 択された方程式をその選択されたファンクション(機能、関数)内に配置させる ことは不可能である。選択されたファンクションブロックが選択された方程式を サポートすることが不可能である場合には、例えば、「選択した方程式をサポー ト不可能」のフラッグがセットされる。 変数c1及びc2(それらのそれぞれの項によって修正されている)を加算す ることによって選択されたファンクションブロックに対する基本重み値を計算し た後に、制御がステップ813へパスされる。 ステップ813において、選択された方程式のパラメータがチェックされて、 選択された方程式が出力方程式であるか又はノード方程式であるかを判別する。 選択された方程式がノード方程式である場合には、制御はステップ814へパス され、そこでその選択されたファンクションブロックに対する重み値がステップ 812において計算された基本重みに設定される。逆に、選択された方程式が出 力方程式 である場合には、制御はステップ815へパスされる。 ステップ815において、選択された方程式が出力方程式である場合に選択さ れたファンクションブロックに対する重み値が以下の式によって計算される。 重み(FB,EQN)=基本重み +c3×(FBにおいて使用されているP項の数 ) +c4×(FB内の出力方程式の数) +c5×(FB内の出力方程式によって使用され ているFB入力の数) +c6×(FBの2/3を超えるものが方程式を有 している場合には1、そうでなければ0) この重付け関数は、選択したファンクションブロックにおける選択した出力方程 式の配置がピンロック動作を発生する蓋然性が最も高い配置配列を発生すること が予測される場合には比較的低い重み値を発生する。変数c3,c4,c5,c 6へ割当てられている値は、経験から決定され、且つ、以下に説明するように、 初期的に割当てた値が有効な配置配列を発生するものではない場合に選択的に変 更される。 一実施例においては、変数c3,c4,c5は、初期的に10の値が与えられ、 且つ変数c6は初期値0が与えられる(以下に説明するように、この値は、初期 的なパス期間中に成功した配置配列が発生されない場合には、最適化及び配置方 法の爾後の繰返しにおいて増加される)。 変数c3は、選択したファンクションブロックにおける全ての前に配置した出 力方程式を実現するために使用したP項要素の数によって乗算される。前に配置 した方程式によって使用されたP項要素の数が低い場合には、結果的に得られる 重み値は対応して低いものである。このことは選択した方程式の好ましい配置を 発生させる傾向となる。なぜならば、それは出力方程式をより混雑していないフ ァンクションブロック内に配置させる傾向があり、それにより柔軟性のあるピン ロック動作目的をサポートしながら、論理関数(機能)に対する変更を実現する ために各ファンクションブロック内のP項要素の最大数を使用可能なものとさせ るからである。 変数c4は、選択したファンクションブロック内に前に配置した出力方程式の 数によって乗算される。選択したファンクションブロック内に前に配置した出力 方程式の数が低い場合には、選択したファンクションブロックに対して結果的に 得られる重み値は 対応して低いものである。このことは、出力方程式の望ましい配置を発生させる 傾向となる。なぜならば、それは各ファンクションブロック内に同数の出力方程 式を配置させる傾向となり、それによって柔軟性のあるピンロック動作目的をサ ポートしながら論理関数(機能)における変更を実現するために使用することの 可能な各ファンクションブロック内の資源を増加させるからである。 変数c5は、選択したファンクションブロック内に全ての前に配置した方程式 によって使用されるFB入力の数によって乗算される。前に配置した方程式によ って使用される選択したファンクションブロックのFB入力の数が低い場合には 、選択したファンクションブロックの結果的に得られる重み値は対応して低いも のである。このことは選択した方程式の好ましい配置を発生させる傾向となる。 なぜならば、それは出力方程式をより混雑していないファンクションブロック内 に配置させる傾向となり、それにより柔軟性のあるピンロック動作目的をサポー トしながら論理関数(機能)に対する変更を実現するために各ファンクションブ ロック内のFB入力の最大数を使用可能なものとさせるからである。 変数c6は、ファンクションブロックの全てのうちの2/3を超えるものが以 前に配置した方程式を 有している場合には1で乗算され、且つファンクションブロックの全てのうちの 2/3未満のものが以前に配置した方程式を有している場合には0によって乗算 される。ステップ815を介しての最初のパスにおいて、方程式c6は0に設定 され、それにより出力方程式をファンクションブロックの全ての中に分布させる 傾向となる。しかしながら、以下に更に詳細に説明するように、ステップ815 を介しての爾後のパスにおいては、変数c6に対して割当てられている値は著し く増加される(例えば、1,000へ変更される)。このことは出力方程式の全 てをファンクションブロックの2/3内へ配置させる傾向となり、ファンクショ ンブロックの1/3をノード方程式を配置するために空のままとさせる。 変数c1乃至c6(上述したようにそれらのそれぞれの修正子によって乗算さ れる)で基本重み値を加算することによって選択したファンクションブロックに 対する重み値を計算した後に、制御はステップ816へパスされる。 ステップ816において、該サブルーチンは、ターゲットCPLDの全てのフ ァンクションブロックが選択した方程式に鑑みて考慮されたか否かを判別する( 即ち、該サブルーチンは、対応する重み値が計算されたか、又は、例えば、各フ ァンクションブロ ックに対して「選択された方程式をサポートすることは不可能」のフラッグがセ ットされたか否かを判別する)。何れかのファンクションブロックが考慮されて いない場合には、別のファンクションブロックを選択するために制御がステップ 811へパスされる。全てのファンクションブロックが考慮された後に、制御は ステップ820へパスされる。 ステップ820において、本プロセスは、選択された方程式がCPLDの少な くとも一つのファンクションブロック内にフィット即ち当て嵌まるか否かを判別 する。例えば、全てのファンクションブロックに対して「選択された方程式をサ ポートすることが不可能」のフラッグが真である場合には、制御はステップ84 0へパスされる(以下に説明する)。逆に、少なくとも一つのファンクションブ ロックに対して重み値を計算する場合には、制御はステップ824へパスされる 。 ステップ824において、ファンクションブロックに対する計算された重み値 の全てが比較されて、どのファンクションブロックが選択された方程式に対して 最も低い重み値を有するものであるか否かを判別し、且つ選択された方程式は最 も低い重み値を有するファンクションブロック内に配置される。選択された方程 式をそのファンクションブロックへ割 当てた後に、制御はステップ826へパスされる。 ステップ826において、本プロセスは、全ての出力方程式及びグローバルI /O信号が配置されたか否かを判別する。配置されていない場合には、制御はキ ュー内の次の方程式を選択するためにステップ804へ戻される。ステップ80 4乃至ステップ826によって形成されるループは、全ての出力方程式及びグロ ーバルI/O信号が配置されるまで繰返され、全てが配置された場合に、制御は ステップ830へパスされる。 ステップ830において、出力方程式及びグローバルI/O信号の全てをそれ らのそれぞれの割当てられたファンクションブロック内へロックさせるためにサ ブルーチンがコール即ち呼出される。該サブルーチンを図10に示してある。 図10を参照すると、ステップ831において、ターゲットCPLDと関連し ている複数個のファンクションブロックからファンクションブロックFBが選択 される。各ファンクションブロックはこのサブルーチン期間中に一度だけ選択さ れ、且つファンクションブロックは任意の順番で選択することが可能である。フ ァンクションブロックが選択されると制御はステップ832へパスされる。 ステップ832において、選択されたファンクシ ョンブロックに対して割当てられた出力方程式のP項をマッピングするために積 項マッピングプロセスがコール即ち呼出される。積項マッピングプロセスは、タ ーゲットCPLDの特定のP項要素に対して各方程式の各P項を割当てる。その 他の公知の積項マッピングプロセスを使用することも可能である。積項マッピン グプロセスは(可能である場合には)配置配列Pを発生し、次いで制御をステッ プ833へパスする。 ステップ833において、該サブプロセスは、ステップ832において使用し た積項マッピングプロセスによって配置配列Pが得られたか否かを判別する。配 置配列Pが得られていない場合には、制御がステップ836へパスされる。配置 配列Pが得られている場合には、制御はステップ834へパスされる。 ステップ834において、積項マッピングプロセスステップ832から最も最 近に得られた配列Pが「最良の」配置配列(P最良)として格納される。例えば 、ステップ834が特定のファンクションブロックに対して最初にコール即ち呼 出される場合には、そのファンクションブロックに対する唯一の配列はステップ 832において発生される配列Pである(P最良に対するメモリ位置は空である )。この 時点において、配列Pは配置配列P最良として格納される。爾後の繰返し期間中 に、配列P最良として格納される任意の配列は新たに得られた配列Pで置換され る。配列Pを格納するためにP最良が更新された後に、制御はステップ835へ パスされる。 ステップ835において、選択されたファンクションブロック内に配置されて いる全ての方程式に対して「ファントム」P項が付加され、且つ制御はステップ 832へ戻される。このステップの目的は、出力方程式の全てがファンクション ブロック内において一様に離隔されている配置配列を得るためであり、それによ って付加的なP項を包含するために出力方程式の一つ又はそれ以上が修正される 場合にピンロック動作目的を成功裡に達成する可能性を増加させる。即ち、ステ ップ835において全ての出力方程式のP項の総数を増加させるために「ファン トム」P項を付加した後に、制御は積項マッピングプロセスステップ832へ戻 される。その際に、各ファンクションブロックに対してステップ832乃至ステ ップ835を包含するループが形成される。 図11(A)乃至11(C)は、柔軟性のあるピンロック動作を容易とさせる ためにファンクションブロック内の出力方程式の配置配列を修正するためにどの 様にして「ファントム」P項が使用されるか の簡略化した例を示した模式図である。 図11(A)は3個の出力方程式1101,1102,1103の配置配列の 一例を示している。方程式1101は7個のP項を有しており、方程式1102 は5個のP項を有しており、且つ方程式1103は7個のP項を有している。方 程式1101の出力はマクロセル230(2)を介して指向され、且つ方程式1 101はマクロセル230(1)及び230(3)の各々から1個のP項をイン ポートする。方程式1102の出力はマクロセル230(4)を介して指向され る。最後に、方程式1103の出力はマクロセル230(6)を介して指向され 、且つ方程式1103はマクロセル230(5)及び230(7)の各々から1 個のP項をインポートする。 XC9500CPLDの積項アロケータ220と関連する双方向エクスポート 拘束条件のために、1個のマクロセルから二つの異なるマクロセルへ同時的にP 項をエクスポートすることは不可能である。簡単に図2(C)を参照すると、D MUX228(3)はP項を左(この図においては上方)又は右(下方)へのみ エクスポートすべくプログラムすることが可能であるが、両方の方向にエクスポ ートするようにプログラム可能なものではない。図11(A)を参照すると、こ の制限は方程式1102によってマク ロセル230(3)及び230(5)と関連するP項の使用を制限する。なぜな らば、P項はこれらのマクロセルから方程式1101及び1103へそれぞれエ クスポートされるからである。 図11(A)に示した配置配列は、論理関数(機能)に対する爾後の修正が方 程式1102におけるP項の数を増加させる場合にはピンロック動作を失敗させ る場合がある。即ち、方程式1101及び1103をP項を使用可能なものとさ せるために「プッシュ」することが不可能である場合には、方程式1102を別 のマクロセルへ移動させねばならず、そのことはピンロック動作を失敗させる場 合がある。 図11(B)は各方程式1101,1102,1103へ「ファントム」P項 を付加した後にステップ832乃至835を包含するループを介しての繰返し動 作を示している。即ち、「ファントム」P項1101(3)は方程式1101の 左側へ付加され、「ファントム」P項1102(3)は方程式1102へ付加さ れ、且つ「ファントム」P項1103(3)は方程式1103へ付加される。こ れらの「ファントム」P項は方程式1102のP項の数を6へ増加させる効果を 有しており、それにより方程式1102が隣接するマクロセルから1個のP項を インポートすることを必要とする。方程式1102はマクロセ ル230(3)からP項をインポートするので、双方向エクスポート拘束条件が マクロセル230(3)が方程式1101へP項をエクスポートすることを阻止 する。ステップ832のマッピングプロセスがその後にコール即ち呼出されると 、方程式1101はマクロセル230(1)内へ「プッシュ」され、従ってそれ はマクロセル230(2)からP項をインポートし、それにより方程式1102 がマクロセル230(3)から1個のP項をインポートすることを許容する(矢 印1102(1)によって示してある)。従って、「ファントム」P項1102 (1)の全体的な効果は、ファンクションブロック内において出力方程式110 1,1102,1103をより均等に分布させることである。「ファントム」P 項が後に除去されると、方程式1102は爾後の論理機能(関数)の修正に応答 してマクロセル230(3)内に「拡張」することが可能である(括弧1102 Aで示してある)。 図11(C)は、同様に、付加的な「ファントム」P項1101(4),11 02(4),1103(4)がそれぞれ方程式1101,1102,1103へ 付加される場合のステップ832乃至835を包含するループを介しての爾後の 繰返し動作を示している。これらの「ファントム」P項は方程式1102 のP項の数を7へ増加させる効果を有している。図示例においては、ファントム P項1102(4)が方程式1102の「右」側へ付加され、それにより方程式 1102をして矢印1102(2)によって示したように1個のP項をインポー トさせる。双方向エクスポート拘束条件のために、方程式1103はもはやマク ロセル230(5)からP項をインポートすることは不可能であり、且つこの例 においては、マクロセル230(7)内へ右側へ「プッシュ」される。「ファン トム」P項が後に除去されると、このプロセスの最終的な効果は、必要である場 合には、爾後の論理関数(機能)の修正に応答して、方程式1102がマクロセ ル230(5)内に更に「拡張」することを可能とすることである(括弧110 2Bによって示してある)。 ステップ832乃至ステップ835を包含するループが、新たな配列Pがステ ップ832において得ることが不可能となるまで各ファンクションに対して繰返 し行われ、それによって該サブルーチンをしてステップ833における「NO」 の分岐上でステップ836へループから抜出させる。 ステップ836において、配置配列P最良が出力方程式に対して「固定」され 、そのことは、ノード方程式がP項マッピングプロセスを使用してマッピ ングされる場合に出力方程式の配置配列を変更することが不可能であることを意 味する。このステップは、ステップ832において少なくとも一つの配列Pが得 られたものであることを仮定する(配列Pが得られなかった場合には、該サブル ーチンはハイレベルプログラムに警告を与える)。次いで、制御はステップ83 7へパスされる。 ステップ837において、該サブルーチンは、ファンクションブロックの全て がロック動作プロセスに露呈されたか否かを判別する。ファンクションブロック のうちの何れがロックされていない場合には、新たなファンクションブロックを 選択するために制御はステップ831へ戻される。全てのファンクションブロッ クがロックされている場合には、制御はステップ804へパスされる(図8参照 )。 上述したように、ステップ804乃至ステップ826によって形成されるルー プは、選択された方程式がステップ820においてファンクションブロックの何 れかへ配置させることが不可能となるまで繰返し行われる。このことが発生する と、制御はステップ840へパスされる。 ステップ840において、選択された方程式をファンクションブロック内へ配 置させるべく洗練化サブルーチンがコール即ち呼出される。公知の洗練化 方法の何れかを使用することが可能であり、例えば、C.M.Fiduccia 及びR.M.Mattheyses著「ネットワーク区画化を改善するための線 形時間発見的方法(Linear−Time Heuristic for I mproving Network Partitions)」、IEEE第1 9回デザイン・オートメーション・コンフェレンス、175−181頁(198 2)において開示されているもの、又はZ.Hasan,D.Harrison ,M.Ciesielski著「PLAをベースとしたFPGA用の高速の区画 化方法(A Fast Partitioning Method for P LA−Based FPGAs)」、IEEE・デザイン・アンド・テスト・オ ブ・コンピュータズ、34−39頁(1992)において開示されている方法な どを使用することが可能である。 該洗練化サブルーチンは、最初に、選択した方程式に対する最も低い重み値を 有するファンクションブロックを識別する(ステップ810において判別される )。選択された方程式が識別されたファンクションブロック内に配置させること が不可能である場合には、このファンクションブロックは該方程式を実現するた めに「最も近いもの」であると考えら れる。この「最も近い」ファンクションブロックは、例えば、最大数の使用可能 なP項要素を有するファンクションブロック、又は最大数の使用可能な入力を有 するファンクションブロックを識別することによって識別することが可能である 。次に、選択された方程式が選択されたファンクションブロック内に配置される まで、該洗練化サブルーチンはロックされていない方程式を除去する。次いで、 その除去された方程式は爾後の処理において考慮するためにキューへ戻される。 この洗練化サブルーチンは、選択された方程式がファンクションブロックの何れ かに配置させるために僅かに大きすぎる場合に特に効果的である。 洗練化ステップ840をしてその方程式が成功裡に配置された場合には、制御 はステップ826へパスされ、且つステップ804乃至ステップ826を包含す るルーブが再開される。しかしながら、その方程式をファンクションブロック内 に配置させるための洗練化が失敗した場合には、制御はステップ841へパスさ れる。 ステップ841において、選択された方程式は、その方程式がロックされてい るか又はロックされていないかを判別するためにチェックされる。その方程式が ロックされている場合には、制御はステップ 842へパスされる。その方程式がロックされていない場合には、制御はステッ プ844へパスされる。 ステップ842において、本プロセスはバッファ用サブルーチンを使用してロ ックされている方程式を配置させる試みを行う。バッファ用サブルーチンは、通 常、選択されロックされている方程式と関連する論理を離れたマクロセルへ移動 させ、次いでその離れたマクロセルの出力をターゲットマクロセルを駆動すべく 経路付けを行うことを包含している。基本的に、その離れたマクロセルはバッフ ァとして使用される。このバッファ用プロセスは、ターゲットファンクションブ ロック内に配置されたロックされている方程式の全てを考慮し、且つ最小数のロ ックされている方程式がバッファされる配置配列を識別することによってどのロ ックされている方程式をバッファするかを判別する。 配置配列が該バッファ用サブルーチンによって識別されると、制御はステップ 826へパスされ、且つステップ804乃至ステップ826を包含するループが 再開される。しかしながら、洗練化がその方程式をファンクションブロック内に 配置させることに失敗すると、制御はステップ844へパスされる。 ステップ844において、本プロセスは、論理再形成サブルーチンを使用して その方程式を配置する 試みを行う。この様な論理再形成プロセスの一つは「3レベルプログラミング論 理装置用のプログラミングプロセス(Programming Process for 3−Level Programming Logic Devic es)」という名称の米国特許第5,349,691号に記載されている。この 論理再形成サブルーチンは、通常、選択した方程式(又は前に配置させた方程式 )と同一の論理出力を発生し、且つ使用可能な資源内に配置させることがより容 易である別の方程式(又は複数個の方程式)を発生するために使用される。例え ば、ロックされている方程式が洗練化及びバッファ用サブルーチン(上述した) を使用して二つのロックされている方程式を既に包含するファンクションブロッ ク内へ配置させることが不可能である場合には、再形成がこれらのロックされて いる方程式の各々を考慮し且つ二つのサブ方程式へ分割することの可能な一つ又 はそれ以上のものを識別し、即ち、一つのサブ方程式はファンクションブロック 内に配置され、且つ一つのサブ方程式は別のファンクションブロック内に配置さ れる。該方程式は、それによって、二っのサブ方程式で実現され、そのうちの一 つは該方程式の論理の一部に対するバッファとして作用する。 配置配列が論理再形成サブルーチンによって識別 されると、制御はステップ826へパスされ、且つステップ804乃至ステップ 826を包含するループが再開される。しかしながら、洗練化が該方程式をファ ンクションブロック内に配置させることに失敗すると、制御はステップ846へ パスされる。 ステップ846において、該プロセスは、その選択された方程式に対して配置 配列を見つけることなしに該プロセスが何回繰返されたかを決定する。即ち、最 初に方程式が考慮され且つステップ820の「NO」分岐上をパスしステップ8 40、ステップ842、ステップ844を介してステップ846へパスし、その 場合にステップ846において決定されるパスの数は1である。その数が1より 大きい場合(例えば、2)、制御はステップ852へパスされる(以下に説明す る)。逆に、その数が1である場合には、制御はステップ848へパスされる。 ステップ848において、変数c1乃至c6に対して割当てられた値は、その 方程式の組内の方程式の異なる特性を強調するために変更される。例えば、変数 c1乃至c6に対するオリジナルの(デフォルトの)値はロックされている方程 式を過剰に強調するか、又はP項の数を過少に強調する場合がある。ステップ8 48において、失敗した配置を解析して選択された方程式がなぜ配置することが 不可能であ ったかを決定し、且つ配置配列を成功させるために変数c1乃至c6の値を変更 する。例えば、充分なP項が使用可能でないために特定の方程式を配置すること が不可能である場合には、各ファンクションブロック内の方程式のP項の数がど のファンクションブロックが選択された方程式を受取るかを決定する上でより重 要なものとなるように修正され、且つ変数c4乃至c6の値が低下され、それに よりこれらの変数によって表わされる属性を重要でないものとさせる。 実際的な実施例においては、最初の繰返しの後に、変数c6は遥かに最大の係 数とされる(即ち、変数c6の値は0から1,000へ変更される)。変数c6 の値を増加させることによって、出力方程式はファンクションブロックの総数の 2/3を包含する所定のグループ内に配置される傾向となり、それによってファ ンクションブロックの残りの1/3における資源を残りの方程式を配置させるた めに残存させる。 c1乃至c6の値を変更した後に、制御はステップ850へパスされ、その場 合に、全ての方程式が配置状態が解除される(即ち、キューへ戻される)。次い で、制御がステップ804へ戻され、そこで、本プロセスは修正された変数c1 乃至c6を使用し て再開始される。 上述したように、ステップMを介してのパスの数が、例えば、2である場合に は、制御がステップ852へパスされる。ステップ852において、選択された 方程式は「配置することが不可能」なものとしてマーク付けされ、且つ制御はス テップ804へパスされる。次いで、本プロセスはキュー内の全ての残りの方程 式に対して継続して行われる。キューが空となると(「配置することが不可能」 のフラッグが立てられた方程式を除く)、制御はステップ806へパスされる。 ステップ806において、前のステップを使用して方程式の全てが配置された 場合に、本プロセスは終了し且つCPLD100をプログラミングするためのビ ットマップを発生するために最終的な配置配列をハイレベルプログラムへ送給す る。逆に、ステップ852において何れかの方程式が「配置することが不可能」 のフラッグが立てられている場合には、論理関数(機能)をターゲットCPLD 内に配置させることが不可能であることのメッセージと共に制御がハイレベルプ ログラムへ戻される。一つの可能な別の解決方法は、本方法の代わりに従来の区 画化及び配置アルゴリズムを実行することである。 有効な配置配列を成功裡に識別した後に、制御は ハイレベルプログラムヘパスされて、上述した如く、ビットマップを形成するプ ロセスを開始する。 本発明を、ある好適な実施例を参照してかなり詳細に説明したが、その他の実 施例も可能である。例えば、重み関数は、付加的なタイミング拘束係数c7を包 含すべく修正することが可能である(図9のステップ815において括弧で示し てある)。タイミング拘束係数c7はタイミング遅延を減少させる配置配列を探 究する。タイミング拘束係数c7は、従って、選択された方程式の配置がより大 きなタイミング遅延を発生させる場合にファンクションブロックに対してより大 きなものであり、且つ配置がより少ないタイミング遅延を発生するファンクショ ンブロックに対してはより小さいものである。 図12(A)及び12(B)は異なるタイミング遅延を発生する配置配列の例 を示した模式図を示している。各図において、15P項方程式を3個のマクロセ ル内にマッピングする。図12(A)において、方程式1201はマクロセル2 30(3),230(4),230(5)内へマッピングされ、且つその出力を 出力マクロセル230(4)を介してピン310(4)へ送給する。この配置配 列は比較的短いタイミング遅延を発生する。なぜならば、P項は、出力マクロセ ル230(4)のすぐ隣に隣接 しているマクロセル230(3)及び230(5)からインポートされるからで ある。一方、図12(B)において、方程式1201はマクロセル230(3) ,230(4),230(5)内にマッピングされ、且つその出力は出力マクロ セル230(3)を介してピン310(3)へ送られる。この配置配列は比較的 長いタイミング遅延を発生する。なぜならば、P項は、マクロセル230(5) から230(3)へインポートされ、それはこれらのP項がマクロセル230( 4)を介してパスするので付加されたタイミング遅延を発生するからである。従 って、係数c7は図12(B)に示した配置配列よりも図12(A)に示した配 置配列に対して一層低く、それにより方程式1201を図12(A)に示した配 置配列をサポートするファンクションブロック内へ配置させる傾向となる。 上述した変形実施例に鑑み、添付の請求の範囲の精神及び範囲は本明細書に包 含される好適な実施例の説明に制限されるべきものではない。
【手続補正書】特許法第184条の4第4項 【提出日】平成10年4月8日(1998.4.8) 【補正内容】 7.論理関数を実現するためにプログラム可能な論理装置をプログラミング する方法において、前記プログラム可能な論理装置は複数個のファンクションブ ロックを有しており、各ファンクションブロックは複数個の入力線を有するAN Dアレイを持っており、前記ANDアレイは前記入力線へ印加される信号から複 数個の積項要素を発生するようにプログラム可能であり、各ファンクションブロ ックは、更に、複数個のマクロセルを有しており、各マクロセルは前記ANDア レイから前記積項要素へプログラムすることによって接続されているORゲート を具備しており、 前記論理機能を一組の方程式へ分割し、各方程式は選択したファンクションブ ロックの入力線へ割当てることが可能な1個又はそれ以上の入力項と、前記選択 したファンクションブロックの積項要素内へマッピングすることが可能な1個又 はそれ以上の積項を有しており、 前記一組の方程式から一つの方程式を選択し、 前記複数個のファンクションブロックの各ファンクションブロックに対して重 み値を計算し、前記重み値は前記各ファンクションブロックに対して前に割当て られた方程式の数及び前記選択した方程式によってのみ使用される前記各ファン クションブロッ クの入力線の数に対して直接的に比例し、 前記選択した方程式を最も低い重み値を持ったファンクションブロックへ割当 て、 前記割当てステップの後に発生された配置配列によってその内容が画定される ビットマップを作成し、 前記プログラム可能な論理装置を前記ビットマップに従って前記論理関数を実 行すべくプログラムするように前記プログラム可能な論理装置へ前記ビットマッ プを送給する、 上記各ステップを有する方法。 8.請求項7において、前記各ファンクションブロックに対する重み値が、 前記各ファンクションブロックに対して前に割当てられている方程式と関連する 積項の数に対して直接的に比例する方法。 9.請求項7において、前記各ファンクションブロックに対する重み値が、 前記各ファンクションブロックに対して前に割当てられた出力方程式の数に対し て直接的に比例する方法。 10.請求項7において、前記各ファンクションブロックに対する重み値が 、前記各ファンクションブロックに対して前に割当てた出力方程式と関連してい る入力項の数に直接的に比例する方法。 11.請求項7において、前記各ファンクションブロックに対する重み値が 、出力方程式が前に割 当てられているファンクションブロックの数に対して直接的に比例する方法。 12.請求項7において、前記選択するステップが、各方程式の特性に従っ て前記一組の方程式のうちの各方程式に対する配置優先度値を決定し、且つ最も 高い配置優先度値を持った前記複数個の方程式のうちの一つの方程式を選択する ことを包含している方法。 13.論理関数を実行するためのプログラム可能な論理装置をプログラミン グする方法において、前記プログラム可能な論理装置は複数個のファンクション ブロックを有しており、各ファンクションブロックは複数個の積項要素を発生す るためのANDアレイと複数個のマクロセルとを有しており、各マクロセルは前 記ANDアレイからの積項要素へプログラムすることによって接続されたORゲ ートを有しており、 前記論理関数を一組の方程式へ分割し、各方程式は前記ファンクションブロッ クの積項要素内へマッピングすることの可能な1個又はそれ以上の積項を有して おり、 前記一組の方程式から一つの方程式を選択し、 複数個の変数を持った重付け関数に基づいて前記複数個のファンクションブロ ックの各ファンクショ ンブロックに対する重み値を計算し、 前記選択した方程式を前記複数個のファンクションブロックの何れかへ割当て ることが可能であるか否かを決定し、 前記選択した方程式を前記複数個のファンクションブロックのうちの少なくと も一つへ割当てることが可能である場合には、前記選択した方程式を前記計算し た重み値に基づいて選択したファンクションブロックヘ割当て、 前記選択した方程式をファンクションブロックへ割当てることが不可能である 場合には、前記複数個の変数のうちの一つへ割当てた値を変更し且つ選択及び計 算、決定及び割当てのそれぞれのステップを繰返し行い、 前記割当てステップの後に発生された配置配列によってその内容が画定される ビットマップを作成し、 前記プログラム可能な論理装置が前記ビットマップに従って前記論理関数を実 行すべくプログラムされるように前記プログラム可能な論理装置へ前記ビットマ ップを送給する、 上記各ステップを有する方法。 14.請求項13において、 前記重み値が、第一変数によって乗算されている出力方程式が既に割当てられ ているファンクション ブロックの数に直接的に比例し、且つ 前記複数個の変数のうちの一つへ割当てられている値を変更するステップが前 記第一変数の値を増加させる、 方法。 15.請求項13において、 前記重み値が第一変数によって乗算されている前記一組の方程式の前もって割 当てられている方程式を実行するために割当てられている各ファンクションブロ ックの入力の数、第二変数によって乗算されている前もって割当てられている方 程式を実行するために割当てられている各ファンクションブロックの積項要素の 数、及び第三変数によって乗算されている前もって割当てられている方程式を実 行するために割当てられている各ファンクションブロックの出力の数に対して直 接的に比例しており、且つ 前記複数個の変数のうちの一つへ割当てられている値を変更するステップが、 前記第一、第二、第三変数のうちの一つの値を増加させる、 方法。 16.請求項13において、前記選択するステップが、各方程式の特性に従 って前記一組の方程式の各方程式に対する配置優先度値を決定し、且つ最も高い 配置優先度値を持った前記複数個の方程式の うちの一つの方程式を選択することを包含している方法。 17.論理関数を実行するためにプログラム可能な論理装置をプログラミン グする方法において、前記プログラム可能な論理装置は複数個のファンクション ブロックを有しており、各ファンクションブロックは複数個の積項要素を発生す るためのANDアレイ及び複数個のマクロセルを持っており、各マクロセルは前 記ANDアレイからの積項要素へプログラミングすることによって接続されたO Rゲートを持っており、 前記論理関数を一組の方程式へ分割し、各方程式は前記ファンクションブロッ クの積項要素内へマッピングすることの可能な1個又はそれ以上の積項を有して おり、 前記一組の方程式の各方程式を少なくとも一つの方程式が各ファンクションブ ロックへ割当てられるように前記複数個のファンクションブロック内へ割当て、 第一配置配列を発生するために各ファンクションブロックに対して割当てられ ている方程式をマッピングし、 前記方程式のうちの少なくとも幾つかと関連している積項の数が増加されるよ うに前記一組の方程式 の各方程式を修正し、 第二配置配列を発生するために各ファンクションブロックへ割当てられている 方程式をマッピングし、 前記第二配置配列が有効であるか否かを決定し、前記第二配置配列が有効であ る場合には前記第二配置配列を選択し、且つ前記第二配置配列が無効である場合 には前記第一配置配列を選択することによって第一及び第二配置配列から好適な 配置配列を選択し、 その内容が前記好適な配置配列によって画定されるビットマップを作成し、 前記ビットマップに従って前記論理関数を実行するために前記プログラム可能 な論理装置がプログラムされるように前記プログラム可能な論理装置へ前記ビッ トマップを送給する、 上記各ステップを有している方法。
───────────────────────────────────────────────────── 【要約の続き】 行う。

Claims (1)

  1. 【特許請求の範囲】 1.論理関数を実現するためにプログラム可能な論理装置をプログラミング する方法において、前記プログラム可能な論理装置は相互接続マトリクスへ接続 されている複数個のファンクションブロックを有しており、各ファンクションブ ロックは複数個の入力端と、複数個の積項要素を発生するためのANDアレイと 、複数個の出力端とを具備しており、 前記論理関数を複数個の方程式へ分割し、各方程式は該複数個の入力端へマッ ピング可能な1個又はそれ以上の入力項と、該積項要素内へマッピング可能な1 個又はそれ以上の積項と、1個の出力項とを有しており、 その出力項が該プログラム可能な論理装置の出力ピンへ経路付けされる出力方 程式がその出力項が該相互接続マトリクスへ経路付けされるノード方程式よりも 一層高い配置優先度値が割当てられるように該複数個の方程式の各々に対して配 置優先度値を割当て、 ノード方程式がファンクションブロックに対して割当てられる前に出力方程式 の全てがファンクションブロックに対して割当てられるように前記割当てられた 配置優先度値によって決定される順番で該複数個のファンクションブロックの選 択されたファン クションブロックに対して該複数個の方程式のうちの各方程式を割当て、 該割当てステップの後に発生される配置配列によってその内容が画定されるビ ットマップを作成し、 該プログラム可能な論理装置が該ビットマップに従って該論理関数を実現すべ くプログラムされるように該ビットマップを該プログラム可能な論理装置へ送給 する、 上記各ステップを有する方法。 2.請求項1において、前記複数個の方程式の各方程式に対して配置優先度 値を割当てるステップが、その出力項が特定の出力ピンに対してユーザによって 指定されていない出力方程式よりもその出力項が前記プログラム可能な論理装置 の特定の出力ピンに対して送給すべくユーザによって指定されている出力方程式 に対し一層高い配置優先度値を割当てることを包含している方法。 3.請求項1において、前記複数個の方程式の各方程式に対して配置優先度 値を割当てるステップが、積項の第一数が積項の第二数よりも一層大きい場合に 、第一数の積項を有する第一出力方程式に第二数の積項を有する第二出力方程式 よりも一層高い配置優先度値を割当てることを包含している方法。 4.請求項1において、前記複数個の方程式の 各方程式に対して配置優先度値を割当てるステップが、第一数の入力項が第二数 の入力項よりも一層大きい場合に、第一数の入力項を有する第一出力方程式に対 して第二数の入力項を有する第二出力方程式よりも一層高い配置優先度値を割当 てることを包含している方法。 5.請求項1において、前記複数個の方程式の各方程式に対して配置優先度 値を割当てるステップが、第一数の積項が第二数の積項よりも一層大きい場合に 、第一数の積項を有する第一ノード方程式に対して第二数の積項を有する第二ノ ード方程式よりも一層高い配置優先度値を割当てることを包含している方法。 6.請求項1において、前記複数個の方程式の各方程式に対して配置優先度 値を割当てるステップが、第一数の入力項が第二数の入力項よりも大きい場合に 、第一数の入力項を具備する第一ノード方程式に第二数の入力項を具備する第二 ノード方程式よりも一層高い配置優先度値を割当てることを包含している方法。 7.論理関数を実現するためにプログラム可能な論理装置をプログラミング する方法において、前記プログラム可能な論理装置は複数個のファンクションブ ロックを有しており、各ファンクションブロ ックは複数個の入力線を有するANDアレイを持っており、前記ANDアレイは 前記入力線へ印加される信号から複数個の積項要素を発生するようにプログラム 可能であり、各ファンクションブロックは、更に、複数個のマクロセルを有して おり、各マクロセルは前記ANDアレイから前記積項要素へプログラムすること によって接続されているORゲートを具備しており、 前記論理機能を一組の方程式へ分割し、各方程式は選択したファンクションブ ロックの入力線へ割当てることが可能な1個又はそれ以上の入力項と、前記選択 したファンクションブロックの積項要素内へマッピングすることが可能な1個又 はそれ以上の積項を有しており、 前記一組の方程式から一つの方程式を選択し、 前記複数個のファンクションブロックの各ファンクションブロックに対して重 み値を計算し、前記重み値は前記各ファンクションブロックに対して前に割当て られた方程式の数及び前記選択した方程式によってのみ使用される前記各ファン クションブロックの入力線の数に対して直接的に比例し、 前記選択した方程式を最も低い重み値を持ったファンクションブロックへ割当 て、 前記割当てステップの後に発生された配置配列に よってその内容が画定されるビットマップを作成し、 前記プログラム可能な論理装置を前記ビットマップに従って前記論理関数を実 行すべくプログラムするように前記プログラム可能な論理装置へ前記ビットマッ プを送給する、 上記各ステップを有する方法。 8.請求項7において、前記各ファンクションブロックに対する重み値が、 前記各ファンクションブロックに対して前に割当てられている方程式と関連する 積項の数に対して直接的に比例する方法。 9.請求項7において、前記各ファンクションブロックに対する重み値が、 前記各ファンクションブロックに対して前に割当てられた出力方程式の数に対し て直接的に比例する方法。 10.請求項7において、前記各ファンクションブロックに対する重み値が 、前記各ファンクションブロックに対して前に割当てた出力方程式と関連してい る入力項の数に直接的に比例する方法。 11.請求項7において、前記各ファンクションブロックに対する重み値が 、出力方程式が前に割当てられているファンクションブロックの数に対して直接 的に比例する方法。 12.請求項7において、前記選択するステップが、各方程式の特性に従っ て前記一組の方程式の うちの各方程式に対する配置優先度値を決定し、且つ最も高い配置優先度値を持 った前記複数個の方程式のうちの一つの方程式を選択することを包含している方 法。 13.論理関数を実行するためのプログラム可能な論理装置をプログラミン グする方法において、前記プログラム可能な論理装置は複数個のファンクション ブロックを有しており、各ファンクションブロックは複数個の積項要素を発生す るためのANDアレイと複数個のマクロセルとを有しており、各マクロセルは前 記ANDアレイからの積項要素へプログラムすることによって接続されたORゲ ートを有しており、 前記論理関数を一組の方程式へ分割し、各方程式は前記ファンクションブロッ クの積項要素内へマッピングすることの可能な1個又はそれ以上の積項を有して おり、 前記一組の方程式から一つの方程式を選択し、 複数個の変数を持った重付け関数に基づいて前記複数個のファンクションブロ ックの各ファンクションブロックに対する重み値を計算し、 前記選択した方程式を前記複数個のファンクションブロックの何れかへ割当て ることが可能であるか否かを決定し、 前記選択した方程式を前記複数個のファンクションブロックのうちの少なくと も一つへ割当てることが可能である場合には、前記選択した方程式を前記計算し た重み値に基づいて選択したファンクションブロックへ割当て、 前記選択した方程式をファンクションブロックへ割当てることが不可能である 場合には、前記複数個の変数のうちの一つへ割当てた値を変更し且つ選択及び計 算、決定及び割当てのそれぞれのステップを繰返し行い、 前記割当てステップの後に発生された配置配列によってその内容が画定される ビットマップを作成し、 前記プログラム可能な論理装置が前記ビットマップに従って前記論理関数を実 行すべくプログラムされるように前記プログラム可能な論理装置へ前記ビットマ ップを送給する、 上記各ステップを有する方法。 14.請求項13において、 前記重み値が、第一変数によって乗算されている出力方程式が既に割当てられ ているファンクションブロックの数に直接的に比例し、且つ 前記複数個の変数のうちの一つへ割当てられている値を変更するステップが前 記第一変数の値を増加させる、 方法。 15.請求項13において、 前記重み値が第一変数によって乗算されている前記一組の方程式の前もって割 当てられている方程式を実行するために割当てられている各ファンクションブロ ックの入力の数、第二変数によって乗算されている前もって割当てられている方 程式を実行するために割当てられている各ファンクションブロックの積項要素の 数、及び第三変数によって乗算されている前もって割当てられている方程式を実 行するために割当てられている各ファンクションブロックの出力の数に対して直 接的に比例しており、且つ 前記複数個の変数のうちの一つへ割当てられている値を変更するステップが、 前記第一、第二、第三変数のうちの一つの値を増加させる、 方法。 16.請求項13において、前記選択するステップが、各方程式の特性に従 って前記一組の方程式の各方程式に対する配置優先度値を決定し、且つ最も高い 配置優先度値を持った前記複数個の方程式のうちの一つの方程式を選択すること を包含している方法。 17.論理関数を実行するためにプログラム可能な論理装置をプログラミン グする方法において、 前記プログラム可能な論理装置は複数個のファンクションブロックを有しており 、各ファンクションブロックは複数個の積項要素を発生するためのANDアレイ 及び複数個のマクロセルを持っており、各マクロセルは前記ANDアレイからの 積項要素へプログラミングすることによって接続されたORゲートを持っており 、 前記論理関数を一組の方程式へ分割し、各方程式は前記ファンクションブロッ クの積項要素内へマッピングすることの可能な1個又はそれ以上の積項を有して おり、 前記一組の方程式の各方程式を少なくとも一つの方程式が各ファンクションブ ロックへ割当てられるように前記複数個のファンクションブロック内へ割当て、 第一配置配列を発生するために各ファンクションブロックに対して割当てられ ている方程式をマッピングし、 前記方程式のうちの少なくとも幾つかと関連している積項の数が増加されるよ うに前記一組の方程式の各方程式を修正し、 第二配置配列を発生するために各ファンクションブロックへ割当てられている 方程式をマッピングし、 前記第二配置配列が有効であるか否かを決定し、 前記第二配置配列が有効である場合には前記第二配置配列を選択し、且つ前記第 二配置配列が無効である場合には前記第一配置配列を選択することによって第一 及び第二配置配列から好適な配置配列を選択し、 その内容が前記好適な配置配列によって画定されるビットマップを作成し、 前記ビットマップに従って前記論理関数を実行するために前記プログラム可能 な論理装置がプログラムされるように前記プログラム可能な論理装置へ前記ビッ トマップを送給する、 上記各ステップを有している方法。
JP52253398A 1996-11-13 1997-08-28 ピンロック動作を容易化するために重付け関数を使用したプログラム可能論理装置配置方法 Pending JP2001509326A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/746,656 1996-11-13
US08/746,656 US5790882A (en) 1996-11-13 1996-11-13 Programmable logic device placement method utilizing weighting function to facilitate pin locking
PCT/US1997/015367 WO1998021673A1 (en) 1996-11-13 1997-08-28 Programmable logic device placement method utilizing weighting function to facilitate pin locking

Publications (1)

Publication Number Publication Date
JP2001509326A true JP2001509326A (ja) 2001-07-10

Family

ID=25001775

Family Applications (1)

Application Number Title Priority Date Filing Date
JP52253398A Pending JP2001509326A (ja) 1996-11-13 1997-08-28 ピンロック動作を容易化するために重付け関数を使用したプログラム可能論理装置配置方法

Country Status (5)

Country Link
US (1) US5790882A (ja)
EP (1) EP0951687B1 (ja)
JP (1) JP2001509326A (ja)
DE (1) DE69707710T2 (ja)
WO (1) WO1998021673A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017130837A (ja) * 2016-01-21 2017-07-27 日本電気株式会社 論理回路、及び設定回路の制御方法

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1227385A3 (en) * 2001-01-24 2005-11-23 Matsushita Electric Industrial Co., Ltd. Semiconductor integrated circuit
US7000210B2 (en) * 2002-11-05 2006-02-14 Lattice Semiconductor Corporation Adaptive adjustment of constraints during PLD placement processing
CN1329806C (zh) * 2004-08-18 2007-08-01 哈尔滨工业大学 基于cpld和sdram的高速大容量数据采集系统
US20060247909A1 (en) * 2005-04-27 2006-11-02 Desai Madhav P System and method for emulating a logic circuit design using programmable logic devices
US7444610B1 (en) * 2005-08-03 2008-10-28 Xilinx, Inc. Visualizing hardware cost in high level modeling systems
US8516025B2 (en) 2007-04-17 2013-08-20 Cypress Semiconductor Corporation Clock driven dynamic datapath chaining
US20080263319A1 (en) * 2007-04-17 2008-10-23 Cypress Semiconductor Corporation Universal digital block with integrated arithmetic logic unit
US8026739B2 (en) 2007-04-17 2011-09-27 Cypress Semiconductor Corporation System level interconnect with programmable switching
US9564902B2 (en) 2007-04-17 2017-02-07 Cypress Semiconductor Corporation Dynamically configurable and re-configurable data path
US7737724B2 (en) 2007-04-17 2010-06-15 Cypress Semiconductor Corporation Universal digital block interconnection and channel routing
US7594212B1 (en) 2007-07-31 2009-09-22 Xilinx, Inc. Automatic pin placement for integrated circuits to aid circuit board design
US20100208194A1 (en) * 2009-02-13 2010-08-19 Amitava Gupta Variable focus liquid filled lens apparatus
US8087778B2 (en) 2009-02-13 2012-01-03 Adlens Beacon, Inc. Variable focus liquid filled lens mechanism
US8817381B2 (en) 2009-10-13 2014-08-26 Adlens Beacon, Inc. Full field membrane design for non-round liquid lens assemblies
US8414121B2 (en) * 2009-10-13 2013-04-09 Adlens Beacon, Inc. Non-round fluid filled lens optic
US8136942B2 (en) 2009-10-14 2012-03-20 Adlens Beacon, Inc. Aspheric fluid filled lens optic
US8353593B2 (en) 2009-10-15 2013-01-15 Adlens Beacon, Inc. Hinge mechanism for a fluid filled lens assembly
JP5650750B2 (ja) 2009-10-15 2015-01-07 アドレンズ ビーコン インコーポレイテッド 流体充填レンズ及びこのためのインフレート機構
US8596781B2 (en) * 2009-10-15 2013-12-03 Adlens Beacon, Inc. Fluid filled lens reservoir system and manufacturing method of the reservoir system
US9036264B2 (en) 2010-08-12 2015-05-19 Adlens Beacon, Inc. Fluid-filled lenses and their ophthalmic applications
CA2814346C (en) 2010-10-11 2018-11-13 Adlens Beacon, Inc. Perimeter piezo reservoir in a lens
USD665009S1 (en) 2010-10-14 2012-08-07 Adlens Beacon, Inc. Spectacles frame
CA2816715C (en) 2010-11-10 2019-01-15 William Egan Fluid-filled lenses and actuation systems thereof
CN105094876B (zh) * 2014-05-20 2019-02-12 华为技术有限公司 Cpld的升级处理方法、装置和系统
CN105824285B (zh) * 2016-03-14 2018-09-14 上海交通大学 用于单片机的可编程逻辑控制系统的编程设计方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5140526A (en) * 1989-01-06 1992-08-18 Minc Incorporated Partitioning of Boolean logic equations into physical logic devices
US5128871A (en) * 1990-03-07 1992-07-07 Advanced Micro Devices, Inc. Apparatus and method for allocation of resoures in programmable logic devices
US5349691A (en) * 1990-07-03 1994-09-20 Xilinx, Inc. Programming process for 3-level programming logic devices
US5450608A (en) * 1993-04-15 1995-09-12 Intel Corporation Programmable logic having selectable output states for initialization and resets asynchronously using control bit associated with each product term
US5689686A (en) * 1994-07-29 1997-11-18 Cypress Semiconductor Corp. Methods for maximizing routability in a programmable interconnect matrix having less than full connectability
US5636368A (en) * 1994-12-23 1997-06-03 Xilinx, Inc. Method for programming complex PLD having more than one function block type

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017130837A (ja) * 2016-01-21 2017-07-27 日本電気株式会社 論理回路、及び設定回路の制御方法

Also Published As

Publication number Publication date
US5790882A (en) 1998-08-04
EP0951687A1 (en) 1999-10-27
DE69707710D1 (de) 2001-11-29
EP0951687B1 (en) 2001-10-24
DE69707710T2 (de) 2002-05-08
WO1998021673A1 (en) 1998-05-22

Similar Documents

Publication Publication Date Title
JP2001509326A (ja) ピンロック動作を容易化するために重付け関数を使用したプログラム可能論理装置配置方法
US5963048A (en) Method for programming complex PLD having more than one function block type
KR100423594B1 (ko) 혼합형 공급 전압 설계용 전압 아일런드를 논리적 및 물리적으로 동시에 구성하는 방법 및 저장 매체
US6047115A (en) Method for configuring FPGA memory planes for virtual hardware computation
EP0701713B1 (en) Field programmable logic device with dynamic interconnections to a dynamic logic core
US6421817B1 (en) System and method of computation in a programmable logic device using virtual instructions
US7009421B2 (en) Field programmable gate array core cell with efficient logic packing
US7138827B1 (en) Programmable logic device with time-multiplexed interconnect
US9041430B2 (en) Operational time extension
US6038386A (en) Method for controlling power and slew in a programmable logic device
US6813754B2 (en) Placement processing for programmable logic devices
US5952846A (en) Method for reducing switching noise in a programmable logic device
JPH09107035A (ja) トランジスタ幅が可変の半導体セル
US8499262B1 (en) Method and apparatus for implementing a parameterizable filter block with an electronic design automation tool
US8468476B1 (en) Method and apparatus for designing a system on multiple field programmable gate array device types
US20060085779A1 (en) Representing device layout using tree structure
US6091892A (en) Method for mapping product terms in a complex programmable logic device
WO2005001724A2 (en) Method for programming a mask-programmable logic device and device so programmed
JP2002518746A (ja) 集積回路設計の機能検証
US8402400B1 (en) Method and apparatus for implementing a processor interface block with an electronic design automation tool
US8793629B1 (en) Method and apparatus for implementing carry chains on FPGA devices
US9230047B1 (en) Method and apparatus for partitioning a synthesis netlist for compile time and quality of results improvement
Chan et al. Distributed-memory parallel routing for field-programmable gate arrays
Sharma et al. Development of a place and route tool for the RaPiD architecture
US20150178436A1 (en) Clock assignments for programmable logic device