JPH07152806A - 回路合成システム - Google Patents

回路合成システム

Info

Publication number
JPH07152806A
JPH07152806A JP6254107A JP25410794A JPH07152806A JP H07152806 A JPH07152806 A JP H07152806A JP 6254107 A JP6254107 A JP 6254107A JP 25410794 A JP25410794 A JP 25410794A JP H07152806 A JPH07152806 A JP H07152806A
Authority
JP
Japan
Prior art keywords
electronic circuit
circuit design
gate array
module
programmable gate
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
JP6254107A
Other languages
English (en)
Inventor
Michael R Cantone
アール.カントン マイケル
Nam-Sung Woo
− サング ウー ナム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
AT&T Corp
Original Assignee
American Telephone and Telegraph Co Inc
AT&T Corp
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 American Telephone and Telegraph Co Inc, AT&T Corp filed Critical American Telephone and Telegraph Co Inc
Publication of JPH07152806A publication Critical patent/JPH07152806A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design

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)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Logic Circuits (AREA)

Abstract

(57)【要約】 【目的】 FPGA合成において、データパス回路とラ
ンダム論理回路の両方をサポートする。 【構成】 パラメータ化可能モジュールのセットを提供
し、回路をそれらのモジュールの集合体として記述す
る。この回路記述を使用して、高度な最適化法を使用し
て特定のFPGAでの実装のための技術マップ記述を生
成する。その後、マップされた回路は、従来のCADツ
ールによって配置配線される。回路を記述する際に、テ
キスト言語またはグラフィックツールのいずれを使用す
ることも可能である。グラフィックツールは、自動的に
回路のテキスト言語記述を生成する。特に、FPGAの
論理セルがいくつ使用されるか、各論理セルの機能およ
び配置、ならびに、論理セルがどのように接続されるか
を決定する。その後、出力は、配置配線のために他の低
水準のCADツールによって使用することができる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、一般的に、電子回路の
コンピュータ支援設計(CAD)に関し、特に、電子回
路の高水準記述からフィールドプログラマブルゲートア
レイ(FPGA)を製造するための合成システムに関す
る。本システムは、高品質の結果を生成しつつ、設計に
おける高水準の抽象化をユーザに提供し、ユーザをFP
GAのアーキテクチャの詳細から解放する。
【0002】
【従来の技術】フィールドプログラマブルゲートアレイ
(FPGA)は、プログラマブルな論理セルのマトリク
スと、プログラマブルな論理セル間のプログラマブルな
配線とからなる。各論理セルは、一般的に、スタティッ
クRAMセル、マルチプレクサおよびフリップフロップ
のようなさまざまな電子素子を含む。各論理セルの機能
は、スタティックRAMセルに書き込み、論理セルの内
部配置を変えることによってプログラムすることができ
る。
【0003】同様に、FPGA内の論理セルは、プログ
ラマブル接続点(例えば、スタティックRAMセルまた
はアンチヒューズ点)によって相互に接続されて、プロ
グラマブ配線を可能にする。これらのスタティックRA
Mセルに書き込むことにより、論理セル間の配線をプロ
グラムし、FPGAの配置を決定することが可能であ
る。
【0004】まず、第1世代のFPGAはランダム論理
回路の実装に適合していた。ランダム論理回路は、制御
機能を実装するための、論理ゲートのような電子素子の
集合体である。当時存在したCAD設計ツールはこれら
の第1世代FPGAに適合していた。
【0005】続いて開発された次世代のFPGAはデー
タパス回路をサポートしていた。データパス回路は、デ
ータをグループとして操作する回路である。例えば、デ
ータパス回路の基本要素には、アキュムレータ、レジス
タ、メモリなどがある。例えば、AT&Tによって開発
された、最適化再配置可能セルアレイ(ORCA)FP
GAは、多くの方法でデータパス回路をサポートしてい
る。プログラマブル論理クラスタ(PLC)と呼ばれる
各論理セルは、4ビットデータまたは1対の4ビットデ
ータに対するデータ操作動作を実行する。各PLCは、
加算および減算動作のための高速なキャリーロジックを
含む。このキャリーロジックは、PLCが(4ビット
の)カウンタとして使用されるときにも使用される。各
PLCは16×4RAMとして使用可能である。配線構
造は4ビット幅の配線をサポートする。
【0006】
【発明が解決しようとする課題】現在のCADシステム
は、第2世代FPGAのデータパス機能を利用すること
ができない。その理由は、現在のCADシステムはラン
ダム論理回路用に適合しており、データパス回路をうま
く扱えないためである。
【0007】
【課題を解決するための手段】本発明は、データパス回
路とランダム論理回路の両方をサポートするFPGA合
成システムである。本発明は、パラメータ化可能モジュ
ールのセットをユーザに提供し、回路をそれらのモジュ
ールの集合体として記述することを可能にする。この回
路記述を使用して、本発明は、高度な最適化法を使用し
て特定のFPGAでの実装のための技術マップ記述を生
成する。その後、マップされた回路は、従来のCADツ
ールによって配置配線される。回路を記述する際に、ユ
ーザはテキスト言語またはグラフィックツールのいずれ
を使用することも可能である。グラフィックツールは、
自動的に、回路のテキスト言語記述を生成する。
【0008】特に、本発明は、FPGAの論理セルがい
くつ使用されるか、各論理セルの機能および配置、なら
びに、論理セルがどのように接続されるかを決定する。
その後、本発明の出力は、配置(すなわち、FPGAチ
ップ内のどこに各論理セルを配置するか)および配線
(すなわち、論理セル間の接続)のために他の低水準の
CADツールによって使用することができる。
【0009】本発明は多くの利点を有する。例えば、本
発明は、現在のFPGAのデータパス回路を利用する。
本発明は、ユーザに、回路設計に対する(ゲートおよび
フリップフロップよりも)高水準の抽象化を提供する。
これによりユーザは特定のFPGAのアーキテクチャの
詳細から解放され、その結果、FPGAの回路設計の生
産性が増大する。また、本発明は、高品質の結果を生じ
る。本発明のその他の利点は、以下の実施例から容易に
明らかとなる。
【0010】
【実施例】本発明によるシステム114の概観を図1に
示す。ユーザ102は、グラフィックツール104によ
って、または、回路の高水準アプリケーションネットリ
スト(HAN)106言語記述を直接入力することによ
って、システムと対話する。コンパイラ/オプティマイ
ザ108は、FPGAアプリケーションネットリスト
(FAN)ファイル110を生成し、このFANファイ
ル110は、使用される特定のFPGA技術にマップさ
れる。このFANファイルは、本発明が実行される特定
のCADシステムに適当な言語でシステムによって合成
されたFPGA実装を記述する。ファイル110は、使
用される論理セルの数、各論理セルの機能(あるいは配
置)および論理セル間の接続条件を指定する情報を含
む。次に、このFANファイル110は、配置配線11
2のために、低水準CADツールへの入力として使用さ
れる。配置ツールは、ファイル110で指定される各論
理セルの位置を決定する。配線ツールは、ファイル11
0における接続条件を満たすようにFPGAチップ内の
ハードウェア資源を割り当てる。これらの低水準CAD
ツールはFPGA実装116を生成することになる。
【0011】本発明の一実施例は、図2に例示したよう
な汎用コンピュータシステムを使用して実現される。図
2は、グラフィック情報およびテキスト情報の表示用の
グラフィック画面204を有するグラフィック表示モニ
タ202と、情報のテキスト入力用のキーボード206
と、グラフィックデータの入力用のマウス208と、コ
ンピュータプロセッサ210とからなる汎用コンピュー
タシステム200を示している。本発明のこの実施例で
は、コンピュータプロセッサ210は本発明を実行する
プログラムコードを含む。コンピュータプロセッサ21
0は、グラフィック表示モニタ202、キーボード20
6、およびマウス208に接続されている。ライトペン
(図示せず)のような他のグラフィック入力装置でマウ
スを置き換えることも可能である。この汎用コンピュー
タは、メインフレームコンピュータ、ミニコンピュー
タ、ワークステーション、またはパーソナルコンピュー
タのような、周知の多くの種類のうちのいずれでもよ
い。
【0012】本発明は、以下の4つの主要な節で説明す
る。第1節で、HAN言語の詳細な説明を「回路のテキ
スト記述」という節で行う。この節では、この言語の構
文を説明し、この言語を使用してさまざまな回路要素を
いかにして指定するかを説明する。
【0013】第2節は「グラフィックツール」と題す
る。この節では、HAN言語で直接回路を記述する代わ
りに、本発明のグラフィックツールを使用して回路を記
述することを説明する。
【0014】第3節は、「HAN記述からのFPGA実
装の生成」という節であり、HAN言語記述からのFP
GA実装の生成について説明する。この節は、FPGA
実装への回路要素の合成の説明を含む。この節はまた、
本発明のさまざまな最適化技術の説明も含む。
【0015】第4節は、「本発明を使用した回路設計」
という節であり、本発明を使用した簡単な回路の設計の
例を与える。この例は、回路を記述するためのHAN言
語の使用を例示する。この例はまた、回路を記述するた
めにグラフィックツールを使用するという代替法も例示
する。次に、この例は、FPGA実装へのさまざまな要
素の合成を示す。この節はまた、本発明のいくつかの最
適化技術を例示する。
【0016】[回路のテキスト記述]ユーザは、実装し
たい回路を、高水準アプリケーションネットリスト(H
AN)言語を使用することによって記述することができ
る。HAN言語と、図2のキーボード206のような入
力装置とを使用して、ユーザは、パラメータ化されたモ
ジュールを使用して回路のテキスト記述を指定する。パ
ラメータ化されたモジュールという用語を使用したの
は、各回路要素はモジュールとして記述され、その要素
を記述するためにさまざまなパラメータに値が与えられ
るためである。このことは、以下のHAN言語の説明か
ら明らかとなる。
【0017】HANでは、キーワードは「.」で始ま
り、キーワードのすべての文字は大文字または小文字で
ある。さらに、すべてのキーワードは行の最初のトーク
ンでなければならない。
【0018】信号は、文字で始まる英数字列である。信
号は、アンダースコア(_)文字を含むことができる。
信号の群は配列の形式を使用することによって指定する
ことができる。信号の構文は次の通りである。
【表1】
【0019】以後の説明では、文字「|」はORを示す
ために使用する。[num1:num2]という形式において、num
1およびnum2はいずれも整数であり、第1の数は第2の
数よりも大きい。例えば、次は正しい信号である。
【表2】
【0020】上の例では、mynet[5:0]は、6個の信号、
すなわち、mynet5、mynet4、mynet3、mynet2、mynet1お
よびmynet0の群を指定する。
【0021】信号リストとは、空白で分離された信号の
リストである。信号リストの構文は次の通りである。
【表3】 次は信号リストの例である。
【表4】
【0022】信号を指定する場合、左端の信号は最上位
ビット(MSB)に対応し、右端の信号は最下位ビット
(LSB)に対応する。
【0023】HANでは、回路記述は.CIRCUITキーワー
ドで始まり、.ENDCIRCUITキーワードで終わる。一般
に、回路記述は次の構文を有する。
【表5】 プリアンブル(preamble)記述は、一次入出力信号を記
述する6個以下のフィールドを含み、次の構文を有す
る。
【表6】 .PI signal_listは、すべての一次入力信号を指定す
る。.PO signal_listは、すべての一次出力信号を指定
する。.PC signal_listは、すべての一次クロック信号
を指定する。.PB signal_listは、すべての一次双方向
信号を指定する。.PGRsignal polarityは、大域リセッ
ト信号を指定する。
【0024】.PGRフィールドは大域リセット信号を示
す。このフィールドは、指定した信号が指定した極性に
なると、すべての記憶要素がリセットされることを示
す。この大域リセットは非同期リセットである。極性フ
ィールドの構文は、
【表7】 である。この極性の構文において、HIGH指定は「1」を
指定することと等価であり、LOW指定は「0」を指定す
ることと等価である。この極性構文は本明細書を通じて
適用される。
【0025】上記の5つのプリアンブルフィールドがい
ずれも不要である場合、省略することができる。例え
ば、回路が一次双方向信号を有しない場合、.PBフィー
ルドは使用されない。
【0026】回路記述のmodules_specフィールドは、回
路内のすべてのモジュールを記述する。これは以下の構
文を有する。
【表8】
【0027】modules_specフィールドは、1個以上のmo
dule_spec記述からなる。module_spec記述の構文は以下
の通りである。
【表9】 各モジュール型の構文および意味を以下で説明する。
【0028】[メモリモジュール指定]ユーザは、メモ
リモジュールの使用を通じて、任意のサイズのメモリを
指定することができる。また、ユーザは、メモリの初期
値を与えることも可能である。メモリモジュールの構文
を以下に示す。
【表10】 .MEMフィールドおよび.ENDMEMフィールドを除いては、
フィールドの順序は重要ではない。
【0029】.MEMフィールドは、メモリモジュールの開
始を示す。これは3個の引数を有する。第1引数name
は、メモリの名前を示すシンボルである。第2および第
3の引数は整数である。第2引数num_rowは、メモリ内
の行の数を指定し、第3引数num_colは、メモリ内の列
の数を指定する。デフォルト値は、行数は16であり、
列数は4である。
【0030】.ADDRの引数はアドレス信号のリストであ
る。
【0031】.DINフィールドおよび.DOUTフィールドは
それぞれその引数として信号リストを有する。.DINフィ
ールドおよび.DOUTフィールドの信号の数は、メモリの
列数と等しくなければならない。これらのフィールド
は、メモリモジュールに対するデータイン(DIN)信号
およびデータアウト(DOUT)信号を指定する。ユーザ定
義メモリが読み出し専用メモリ(ROM)として使用さ
れる場合、.DINフィールドはあってはならない。
【0032】.WRENフィールドはライトイネーブル信号
を指定し、2個の引数を有する。第1引数はライトイネ
ーブル信号の名前を示すシンボルである。第2引数は、
信号の極性を指定する。これが0すなわちLOWである場
合、ライトイネーブル信号はLOWでアクティブになる。
1すなわちHIGHである場合、HIGHでアクティブになる。
この引数のデフォルト値は1である。このメモリが読み
出し専用メモリとして使用される場合、.WRENフィール
ドを指定する必要はない。
【0033】.TRIENフィールドは、ユーザがメモリから
3状態出力を所望する場合に使用される。このフィール
ドは3状態バッファの制御信号を指定する。このフィー
ルドの第1引数は制御信号の名前であり、第2引数はそ
の信号の極性である。制御信号が指示された極性を有す
る場合、メモリモジュールは正しい出力を生成する。そ
うでない場合、メモリモジュール出力は高インピーダン
ス状態になる。
【0034】.INITフィールドはユーザがメモリの初期
内容を指定したい場合に使用される。このフィールドが
指定されない場合、メモリの初期値は不定である。メモ
リの列数が4以下である場合、16進数列が初期値に使
用される。値は、左端の値が最高メモリロケーションに
ロードされ、右端の値が最低メモリロケーションにロー
ドされるように左から右へ指定される。メモリロケーシ
ョンの幅が4ビットである場合、指定される16進数値
と等価な2進数がそのメモリロケーションにロードされ
る。例えば、指定
【表11】 は、ロケーション9に値「2」すなわち2進数「001
0」をロードし、ロケーション0に「f」すなわち2進
数「1111」をロードする。
【0035】メモリの列数が4より大きい場合、括弧つ
きの16進数列が初期値を指定するために使用される。
この場合、ビットのカウントは右側に合わせる。すなわ
ち、右端から4ビットとなる。
【0036】例えば、指定
【表12】 では、各対において、第1の16進数は左の(すなわ
ち、上位の)3ビットであり、第2の16進数は残りの
4ビットである。上記の例では、2進数値「01110
11」をロケーション11にロードし、2進数値「00
00000」をロケーション0にロードする。
【0037】[ALUモジュール指定]ユーザは、入力
データに対するデータ操作作用を実行するALUモジュ
ールを定義することができる。ALU指定の一般的なフ
ォーマットは以下の通りである。
【表13】 .ALUおよび.ENDALUを除いては、ALUモジュール指定
のフィールドは任意の順序でよい。
【0038】.ALUフィールドは、ALUモジュールの開
始を示す。これは2個の引数を有する。第1引数name
は、ALUの名前を表すシンボルである。第2引数widt
hは、ALUの幅を示す整数である。
【0039】.TYPEフィールドはALUモジュールの型
を示す。ALUモジュールは3個の型のうちの1つを有
することができる。3個の型とは、FADD(加算器)、FS
UB(減算器)、およびFADDSUB(加算器/減算器)であ
る。ユーザは、FADDSUBのALU型を使用するときには
制御信号を指定しなければならない。制御信号がHIGHす
なわち1であるときALUは加算器として動作し、制御
信号がLOWすなわち0であるときALUは減算器として
動作する。
【0040】.AINフィールドおよび.BINフィールドは、
ALUモジュールの2つの入力を示す。各フィールドの
信号の数は、ALUモジュールの幅と等しくなければな
らない。
【0041】.CINフィールドはキャリー入力信号を記述
する。その第1引数は、HIGH(論理1)、LOW(論理
0)または信号名とすることができる。信号名を第1引
数に使用するときには、第2引数はその信号の極性を指
定する。その極性が0である場合、キャリー入力信号は
反転される。極性引数のデフォルト値は1である。
【0042】.DOUTフィールドは、ALUモジュールか
らの出力を記述する。減算作用を有するALUでは、.D
OUTフィールドの信号は.AIN信号の値から.BIN信号の値
を引いた結果となる。
【0043】.COUTフィールドは、ALUモジュールか
らのキャリー出力信号を示す。
【0044】[比較モジュール指定]比較モジュールの
構文は以下の通りである。
【表14】 .DTYPEフィールドおよび.IMPLフィールドの極性引数の
両側の括弧[ ]は、括弧内の内容はオプションであるこ
とを示す。モジュール指定において、フィールド名およ
び引数の両側の括弧の、オプションのものを示すための
このような用法は、本明細書を通じて使用される。
【0045】.CMPフィールドは、比較(コンパレータ)
モジュールの開始を示す。第1引数nameはモジュールの
名前であり、第2引数widthはコンパレータモジュール
の幅である。
【0046】.AINフィールドおよび.BINフィールドは、
コンパレータモジュールへの入力信号を示す。各フィー
ルドの信号の数は、.CMPフィールドで指定した幅width
と等しくなければならない。
【0047】.OUTフィールドは、ユーザがステータス信
号を記述することを可能にする。第1引数stat_type
は、ステータス信号の型を指定する。5個の型のステー
タス信号があり、それらは、EQ(A=B)、GT(A>
B)、GE(A≧B)、LT(A<B)およびLE(A≦B)
である。第2引数signalは出力信号の名前であり、最後
の引数polarityは出力信号の極性である。この最後の引
数が省略される場合、アクティブ(HIGH)極性がデフォ
ルトとして仮定される。
【0048】.DTYPEフィールドは入力データの表現型を
示す。UBIN引数は、符号なし2進表現の場合に使用さ
れ、2COMP引数は、2の補数表現の場合に使用される。
このフィールドを指定しない場合、入力データは符号な
し2進数(UBIN)であると仮定される。
【0049】.IMPLフィールドは、このコンパレータが
どのように実現されるかを指定する。SUB引数は、減算
器がこの比較と合成されることを示す。「.DTYPE 2COM
P」が使用されている場合、システムは減算器を利用し
てコンパレータを実現する。LOGIC引数は、論理回路の
ツリーが合成されることを示す。その結果、「.DTYPE 2
COMP」および「.IMPL LOGIC」を1つのコンパレータで
同時に使用した場合、システムはエラーメッセージをプ
リントする。.IMPLフィールドを指定しない場合、合成
器は減算器を利用してコンパレータを実現する。
【0050】[マルチプレクサモジュール指定]マルチ
プレクサモジュールは、ユーザが任意の幅のマルチプレ
クサを指定することを可能にする。マルチプレクサモジ
ュールの構文は以下の通りである。
【表15】
【0051】.MUXフィールドはマルチプレクサモジュー
ルの開始を示す。第1引数nameはマルチプレクサの名前
を示す。第2引数widthは整数であり、マルチプレクサ
の幅を示す。
【0052】.SELフィールドは、マルチプレクサによっ
て使用される選択信号を指定する。左端の信号が最上位
ビットである。
【0053】.DINフィールドの第1引数numberは整数で
あり、第2引数signalは入力信号を示す。第1引数は対
応するデータ入力信号の入力ロケーションを示す。マル
チプレクサモジュールの.DINフィールドの数はマルチプ
レクサの幅に等しい。
【0054】.DOUTフィールドはマルチプレクサの出力
信号の名前を指定する。
【0055】.OPTフィールドは合成の最適化の目標を示
す。PERFはパフォーマンスであり、AREAは面積である。
PERFが選択された場合、オプティマイザはマルチプレク
サの最高速のFPGA実装を合成する。AREAが選択され
た場合、オプティマイザは最小数の要素でFPGA実装
を合成する。
【0056】「foo_m」という名前の4:1マルチプレ
クサの例を図3に示す。このマルチプレクサはHANで
は以下のように記述される。
【表16】
【0057】[マルチプレクサの群]マルチプレクサの
群の指定の構文は以下の通りである。
【表17】
【0058】.GRMUXフィールドはマルチプレクサ群モジ
ュールの開始を示す。第1引数nameはモジュールの名前
であり、第2引数num_muxはこの群内のマルチプレクサ
の数である。最後の引数width_of_one_muxは各マルチプ
レクサの入力の数である。すべての要素マルチプレクサ
は同一の幅を有する。
【0059】.SELフィールドは要素マルチプレクサの選
択信号を示す。
【0060】.DINフィールドはマルチプレクサへのデー
タ入力信号を指定する。N個の.DINフィールドがなけれ
ばならない。ただし、Nは要素マルチプレクサの幅であ
る。第1引数numberは入力位置を示す番号である。第2
引数signal_listは、各要素マルチプレクサの指定され
た入力位置にそれぞれ接続される信号のリストである。
リスト内にはM個の信号がなければならない。ただし、
Mは群内のマルチプレクサの数である。
【0061】.DOUTフィールドはすべての要素マルチプ
レクサからの出力信号を示す。引数にはM個の信号がな
ければならない。
【0062】.OPTフィールドは、このマルチプレクサ群
が合成されるときの最適化目標を示す。PERFはパフォー
マンスであり、AREAは面積である。
【0063】4個の2:1マルチプレクサからなる「fo
o_g」という名前のマルチプレクサ群の一例を図4に示
す。4個のマルチプレクサ402、404、406、4
08はすべて同一の選択信号「sel0」を共有する。この
マルチプレクサはHANでは以下のように記述される。
【表18】
【0064】[レジスタモジュール指定]ユーザは任意
幅のレジスタを指定することができる。また、レジスタ
のクロック方式を選択することも可能である。以下に、
レジスタモジュール指定のフォーマットを示す。
【表19】 .REGフィールドおよび.ENDREGフィールドを除いては、
フィールドの順序は重要でない。
【0065】.REGフィールドはレジスタモジュールの開
始を示す。第1引数nameはレジスタモジュールの名前を
指定する。第2引数widthはレジスタモジュールの幅を
指定する。
【0066】.CKフィールドはこのレジスタのクロック
を指定する。第1引数clock_modeはクロックモードを指
定する。この引数の構文は以下の通りである。
【表20】 LEVEL_HIGHは、レジスタがレベル感受性であり、クロッ
クはHIGHでアクティブになることを示す。LEVEL_LOW
は、レジスタがレベル感受性であり、クロックはLOWで
アクティブになることを示す。EDGE_HIGHは、レジスタ
がクロックの立ち上がりエッジでエッジトリガされるこ
とを示す。EDGE_LOWは、レジスタがクロックの立ち下が
りエッジでエッジトリガされることを示す。
【0067】第2引数clock_signalはクロック信号の名
前を示す。第3引数clock_enable_signalは、クロック
イネーブルとして使用される信号を指定する。この引数
が無視された場合、クロックは常にイネーブルにされ
る。最後の引数polarityはclock_enable_signalの極性
を指定する。これを指定しない場合、clock_enable_sig
nalはデフォルトとしてHIGHでアクティブになる。
【0068】.DINフィールドはレジスタへの入力信号の
リストを指定する。.DOUTフィールドはレジスタからの
出力信号のリストを指定する。
【0069】.RESETフィールドはレジスタのリセット機
構を示す。第1引数reset_modeはリセットモードを指定
し、その構文は以下の通りである。
【表21】 SYNC_HIGHは、リセット信号がHIGHのときの同期リセッ
トを示す。SYNC_LOWはリセット信号がLOWのときの同期
リセットを示す。ASYNC_HIGHはリセット信号がHIGHのと
きの非同期リセットを示す。ASYNC_LOWはリセット信号
がLOWのときの非同期リセットを示す。
【0070】第2引数reset_signalはリセット信号を指
定する。最後の引数reset_valueは、リセットされたと
きのレジスタの値を指定するビット(0または1)のス
トリングである。左端のビットはMSBであり右端のビ
ットはLSBである。reset_valueを指定しない場合、
すべて0というデフォルト値が使用される。
【0071】[シフトレジスタモジュール指定]ユーザ
は任意幅のシフトレジスタを指定することができる。以
下に、シフトレジスタモジュールを指定するフォーマッ
トを示す。
【表22】
【0072】.SHREGフィールドはシフトレジスタモジュ
ールの開始を示す。これは2個の引数を有する。第1引
数nameはシフトレジスタモジュールの名前を示す。第2
引数widthはシフトレジスタモジュールの幅を指定す
る。
【0073】.TYPEフィールドはシフトレジスタモジュ
ールの型を指定する。以下の表は、各型のシフトレジス
タの動作を示す。(Nビットレジスタに対して、ビット
N−1がMSBであり、ビット0がLSBである。)
【表23】
【0074】.DIRフィールドは、シフトの向き(すなわ
ち、右または左)を指定する。引数にRIGHTを指定した
場合、レジスタは右にのみシフトする。引数にLEFTを指
定した場合、レジスタは左にのみシフトする。引数にBI
DIRを指定した場合、シフト方向はsignalの値によって
決定される。signalの値がHIGHすなわち1である場合、
右にシフトする。そうでない場合、左にシフトする。
【0075】.PLOADフィールドは、並列ロード情報を記
述する。第1引数load_signalはLOAD信号を示す。第2
引数polarityは、ロード動作が行われるときを示す。第
3引数signal_listは、並列入力信号のリストである。
例えば、polarityがHIGHである場合、シフトレジスタ
は、LOAD信号がHIGHでありクロック信号がアクティブの
ときに並列入力信号の値を取得する。第3引数の信号の
数はシフトレジスタの幅に等しくなければならないこと
に注意する。
【0076】.MSBINフィールドは、HIGH、LOW、または
最上位ビット位置への直列入力信号のいずれかを示す。
シフトレジスタの型がLOGICでありシフト方向がRIGHTで
ある場合、シフトレジスタのMSBは、値HIGH、LOW、
またはクロック後の指定された信号の値を有する。この
フィールドを指定しない場合、値0が直列入力として使
用される。
【0077】.LSBINフィールドは、HIGH、LOW、または
最下位ビット位置への直列入力信号のいずれかを示す。
シフトレジスタの型がLOGICでありシフト方向がLEFTで
ある場合、シフトレジスタのLSBは、値HIGH、LOW、
またはクロック後の指定された信号の値を有する。この
フィールドを指定しない場合、値0が直列入力として使
用される。
【0078】.DOUTフィールドは、シフトレジスタの並
列出力信号を示す。引数の信号の数はシフトレジスタの
幅に等しくなければならない。
【0079】.MSBOUTフィールドはシフトレジスタのM
SBの信号名を示す。.LSBOUTフィールドはシフトレジ
スタのLSBの信号名を示す。シフトレジスタモジュー
ルは、.DOUTフィールド、.MSBOUTフィールドまたは.LSB
OUTフィールドのうちの少なくとも1つを有しなければ
ならない。
【0080】.CKフィールドはこのレジスタのクロック
を指定する。第1引数clock_modeはクロックモードを示
す。ユーザは、2つのモードのうちの1つを選択するこ
とができる。一方のモードはEDGE_HIGHであり、レジス
タがクロックの立ち上がりエッジでエッジトリガされる
ことを示す。他方のモードはEDGE_LOWであり、レジスタ
がクロックの立ち下がりエッジでエッジトリガされるこ
とを示す。第2引数clock_signalはクロック信号の名前
を示す。第3引数clock_enable_signalは、クロックイ
ネーブルとして使用される信号を指定する。この引数が
無視された場合、クロックは常にイネーブルにされる。
第4引数はclock_enable_signalの極性である。
【0081】.RESETフィールドはレジスタのリセット機
構を示す。このフィールドは、レジスタモジュールに関
して説明した通りである。
【0082】[カウンタモジュール指定]ユーザは、さ
まざまな幅のアップカウンタ、ダウンカウンタ、または
アップ/ダウンカウンタを指定することができる。ま
た、並列ロード可能カウンタを指定することも可能であ
る。カウンタモジュール指定のフォーマットは以下の通
りである。
【表24】
【0083】.COUNTERフィールドはカウンタモジュール
の開始を示す。第1引数nameはカウンタモジュールの名
前を示す。第2引数widthはカウンタモジュールの幅を
示す。.CTYPEフィールドは、カウンタの型を示す。カウ
ンタは、UP(アップ)カウンタ、DOWN(ダウン)カウン
タ、またはUPDOWN(アップダウン)カウンタであること
が可能である。UPDOWN型を指定した場合、このフィール
ドの最後の引数は、カウンタモジュールの方向を制御す
る制御信号を指定する。この信号が0の場合、カウンタ
はUPカウンタである。この信号が1の場合、カウンタは
DOWNカウンタである。UP型またはDOWN型を使用した場
合、最後の引数はスキップされる。
【0084】.PLOADフィールドは、カウンタの並列ロー
ド機能を表す。このフィールドを含まない場合、カウン
タは並列入力データをロードしない。第1引数load_sig
nalはロード制御信号を示す。第2引数polarityはロー
ド制御信号の有効極性を示す。最後の引数signal_list
は、入力をロードするために接続される信号のリストで
ある。ロード信号およびクロック信号がアクティブにな
ると、カウンタはこの信号のリストから値を取得する。
【0085】.DOUTフィールドはカウンタからの出力信
号のリストを指定する。.COUTフィールドはカウンタか
らのキャリー出力信号を指定する。キャリー信号は、す
べての出力が「1」であるようなクロック期間中にHIGH
となる。
【0086】.CKフィールドはカウンタモジュールのク
ロックを指定する。このフィールドは、レジスタモジュ
ールに関して説明した通りである。
【0087】.RESETフィールドはカウンタのリセット機
構を指定する。このフィールドは、レジスタモジュール
に関して説明した通りである。
【0088】[3状態バッファ指定]ユーザは3状態バ
ッファを指定することができる。3状態バッファのセッ
トを指定する構文は以下の通りである。
【表25】
【0089】.TBUFフィールドは3状態バッファモジュ
ールの開始を示す。第1引数nameは3状態バッファモジ
ュールの名前を示す。第2引数numberは3状態バッファ
モジュール内のバッファの数を示す。
【0090】.ENABLEフィールドはバッファのイネーブ
ル信号を記述する。第1引数signalはイネーブル信号の
名前を示す。第2引数polarityは、3状態バッファがHI
GIでアクティブになるかLOWでアクティブになるかを指
定する。polarity引数のデフォルト値は1である。
【0091】.DINフィールドはバッファのデータ入力信
号を記述する。.DOUTフィールドはバッファのデータ出
力信号を記述する。
【0092】[有限状態マシン指定]ユーザは有限状態
マシンを指定することができる。有限状態マシンを指定
する構文は以下の通りである。
【表26】
【0093】.FSMフィールドは有限状態マシン(FS
M)モジュールの開始を示す。その引数nameはFSMの
名前である。
【0094】.INフィールドはFSMの入力信号を記述
する。ここにはクロック信号およびリセット信号を含め
てはならない。
【0095】.COMBOUTフィールドは、FSMによって生
成されるが、別のフリップフロップによって記憶されな
い出力信号を指定する。一般的に、FSMからの出力信
号はこの種別に属する。
【0096】.REGOUTフィールドは、このFSMの記憶
されなければならない出力信号を示す。すなわち、この
型の各出力信号に対して、(有限状態マシンのもの以外
の)追加のフリップフロップを使用しなければならな
い。
【0097】.STATEフィールドは、FSMの状態の名前
を示す。FSMの状態を実現するためにはフリップフロ
ップのみが使用される。.STATEフィールドは.RESETフィ
ールド、.EQSフィールドおよび.TRANSフィールドの前に
現れなければならない。状態名は、回路記述または部分
回路記述内では一意的でなければならない。
【0098】.CKフィールドはクロック信号およびその
型を記述する。引数clock_modeおよびclock_signalは、
レジスタモジュールに関して説明した通りである。
【0099】.RESETフィールドは、FSMのリセット信
号およびリセット状態を示す。reset_modeおよびreset_
signalは、レジスタモジュールに関して説明した通りで
ある。reset_stateは、リセットされたときのFSMの
状態を示す。リセット信号がアクティブになると、有限
状態マシンはreset_stateで指定された状態になる。
【0100】.EQSフィールドは、1行ごとに、ブール等
式のセットを含む。各ブール等式は Variable = Expression というフォーマットを有する。
【0101】このフィールドの等式は、このFSMの出
力変数を指定することができる。このフィールドの等式
はまた、FSMで使用されている一時変数を指定するこ
ともできる。等式の詳細なフォーマットは後述する
(「ブール等式指定」の節)。
【0102】.TRANSフィールドは、1行ごとに、状態遷
移関数のセットを含む。各状態遷移は以下のフォーマッ
トを有する。 present_state next_state expression
【0103】例えば、図5のような3個の状態(S1
(502)、S2(504)およびS3(506))を
有するFSMを考える。このマシンは2個の入力信号a
およびbを有する。このマシンの状態遷移は以下のよう
に表される。
【表27】
【0104】[ランダム論理記述]データパスモジュー
ルに加えて、ユーザはHAN言語でランダム論理を指定
することができる。ユーザは、組合せ関数およびフリッ
プフロップを指定することができる。
【0105】ランダム論理回路記述の構文は以下の通り
である。
【表28】
【0106】ブール等式またはキューブ(CUBE)フ
ォーマットでブール関数を指定することができる。
【0107】ブール関数指定の構文は以下の通りであ
る。
【表29】
【0108】[ブール等式指定]ユーザがブール等式を
使用してブール関数を指定したい場合、そのフォーマッ
トは以下の通りである。
【表30】
【0109】ブール式に対して以下の演算子がサポート
されている。
【表31】 評価の順序を変えるために括弧を使用することができ
る。
【0110】例えば、3個の入力(a、bおよびc)と
1個の出力(y)を有する論理ANDゲートを記述する
には、以下のブール等式を使用する。
【表32】
【0111】[キューブ指定]ユーザがキューブフォー
マットを使用してブール関数を指定したい場合、そのフ
ォーマットは以下の通りである。
【表33】
【0112】.CUBEフィールドはキューブモジュールの
開始を示す。引数signalは出力信号を示す。
【0113】.INフィールドは入力信号を示す。
【0114】.TBLフィールドはブール関数を記述する。
この表の列数は入力信号の数+1である。各列は対応す
る入力信号を表す。例えば、表の第1行の「1」は第1
入力信号のアクティブ状態を表す。「0」はその信号の
非アクティブ状態を表す。各行の最終列は、入力信号の
指定された組合せによる出力信号を示す。表には複数の
行が存在することも可能である。各行は入力信号のアク
ティブ状態および非アクティブ状態と、出力信号の対応
する状態との組合せを示す。
【0115】例えば、3個の入力(a、bおよびc)と
1個の出力(y)を有する論理ANDゲートを記述する
には、以下のキューブフォーマットを使用する。
【表34】
【0116】[フリップフロップの指定]本発明はフリ
ップフロップを表すために以下の構成をサポートしてい
る。
【表35】
【0117】.FFフィールドはフリップフロップ指定の
開始を示す。引数はフリップフロップの名前である。
【0118】.DINフィールドはフリップフロップの入力
信号を指定する。.DOUTフィールドはフリップフロップ
の出力信号を指定する。
【0119】.CKフィールドはフリップフロップのクロ
ックを指定する。このフィールドは、レジスタモジュー
ルに関して説明した通りである。
【0120】.RESETフィールドはフリップフロップのリ
セット信号およびリセット値を示す。引数reset_modeお
よびreset_signalは、レジスタモジュールに関して説明
した通りである。reset_valueは、リセットされたとき
のフリップフロップの状態を示す。
【0121】.ENDFFフィールドはフリップフロップ記述
の終了を示す。
【0122】[部分回路指定]ユーザは、回路指定内で
部分回路を利用することが可能であり、これによって、
回路の階層的記述が可能となる。部分回路を指定する構
文は以下の通りである。
【表36】
【0123】.SUBCKTフィールドは部分回路モジュール
の開始を示す。引数は部分回路モジュールの名前であ
る。
【0124】.REFNAMEフィールドは、この部分回路によ
って参照される実際の回路の名前を示す。引数は参照さ
れる回路の名前である。
【0125】.INフィールドは、部分回路への入力信号
のリストである。この信号は、位置に基づいて、参照さ
れる回路の一次入力信号に一致する。
【0126】.OUTフィールドは、部分回路からの出力信
号のリストである。この場合も、この信号は、位置に基
づいて、参照される回路の一次出力信号に一致する。
【0127】.BIフィールドは、部分回路との間の双方
向信号のリストを記述する。この信号は、位置に基づい
て、参照される回路の一次双方向信号に一致する。
【0128】.CKフィールドは、部分回路へのクロック
信号を示す。これも同様に、この信号は、位置に基づい
て、参照される回路の一次クロック信号に一致する。
【0129】上記の部分回路定義によって、ユーザは、
アプリケーション回路の階層的記述が可能となる。
【0130】[グラフィックツール]HAN言語を使用
して回路記述を入力する代わりに、ユーザはグラフィッ
クツールを使用して回路を記述することも可能である。
グラフィックツールは、ユーザの回路のグラフィック記
述をHAN言語に翻訳する。
【0131】グラフィックツールはウィンドウ型の環境
である。グラフィックツールは、グラフィックディスプ
レイ画面にウィンドウ型のエディタを表示する。図6の
ように、ウィンドウ600のレイアウトは、上部の3個
の水平バンド602、604、606と、これらの3個
のバンドの下のツールの左側の比較的大きいキャンバス
領域608と、3個のバンドの下のツールの右側の小さ
いパネル領域610とからなる。パネル領域は、レジス
タ611、メモリ612、ALU613、3状態バッフ
ァ614、カウンタ615、有限状態マシン616、ロ
ジック(論理回路)617、デコーダ618、パリティ
619、シフトレジスタ620、マルチプレクサ62
1、マルチプレクサ群622、コンパレータ623、ア
キュムレータ624、および一次I/O625のよう
な、設計要素(すなわちモジュール)を表すいくつかの
アイコンを含む。
【0132】ウィンドウの上部にある水平バンド602
はタイトル領域である。この領域はツールの名前を示
す。
【0133】タイトル領域602の下の水平バンド60
4はメッセージ領域である。メッセージ領域は、ユーザ
がグラフィックツールに要求した動作の状態をユーザに
通知する。例えば、ユーザが画面でした作業をファイル
に保存する要求を実行した場合、メッセージ領域は、そ
の動作が成功したかどうかを示すメッセージを表示す
る。ユーザがキャンバス領域608からオブジェクトを
選択した場合、メッセージ領域はそのオブジェクトの型
(例えば、レジスタ、ALU等)を表示する。
【0134】第3の水平バンド606はプルダウンメニ
ューバーである。この領域は、テキストを含むいくつか
の矩形領域からなる。これらの領域は、例えばコマンド
ボタンである。これらのうちの1つの上にマウスグリフ
を置き、マウスボタンを押すことにより、テキストによ
って示されるアクションが直ちに行われる。他の領域
は、例えばプルダウンメニューである。これらのうちの
1つの上にマウスグリフを置き、マウスボタンを押すこ
とによって、メニューがドロップダウンする。メニュー
選択肢のうちの1つにグリフをドラッグすることによ
り、その選択肢が暗く表示される。マウスボタンを離す
と、その選択肢に対応するアクションが行われる。
【0135】プルダウンメニューバーの下の大きい矩形
領域はキャンバス領域608である。これは、ユーザが
設計作業を行うところである。
【0136】グラフィックツールを使用して設計要素を
追加するためには、まず、パネル領域610のアイコン
上にマウスグリフを置き、マウスボタンを押すことによ
って、追加する要素を選択する。選択したものが現在の
設計要素となる。第2のステップは、その要素をキャン
バス領域608に置くことである。これは、キャンバス
領域608内のどこかにマウスグリフを置き、マウスボ
タンを押すことによって行われる。選択した設計要素が
キャンバス領域内に現れる。回路を構成するために、要
素の任意の組合せが使用可能である。アイコン上にマウ
スグリフを置き、マウスボタンを押し、そのアイコンを
新たな位置にドラッグすることによって、任意の要素を
キャンバス領域上で再配置することができる。マウスボ
タンを離すと、その要素は新たな位置に留まる。キーボ
ードのDELETEキーを押し、削除したい要素上にマ
ウスグリフを移動し、マウスボタンを押すことによっ
て、要素を削除することができる。その項目は消失す
る。
【0137】設計要素をキャンバス領域608に置いた
後、それらの要素に属性を割り当てることができる。例
えば、レジスタは設計要素であり、例えば4ビット幅
が、そのレジスタに対して選択された属性である。入力
信号および出力信号もまた、設計要素に割り当てられる
ことがある属性である。このプロセスの第1ステップ
は、対象とする要素上にマウスグリフを置き、マウスボ
タンをダブルクリックすることによって、属性を編集す
る要素を選択することである。どの型の項目が選択され
ているかを示すメッセージがメッセージ領域604に表
示される。次に、プルダウンメニューバー606上の適
当なメニューから編集機能を選択する。
【0138】ユーザが値を指定することができるさまざ
まなフィールドを有するマルチボックス630が現れ
る。このボックスは、要素の型に応じて異なる。レジス
タモジュールに対するマルチボックスを630に示す。
マルチボックスは、選択した設計要素の属性の入力をユ
ーザに促す。図示した例では、マルチボックスは、レジ
スタ属性Name(名前)、Width(幅)、Inp
uts(入力)、Outputs(出力)、Clock
(クロック)およびReset(リセット)の入力を促
している。これらの属性は、レジスタモジュールのHA
N言語記述で要求されるフィールドおよび引数に対応す
る。事前に定義された各設計要素に対して、その設計要
素の属性を入力するために、対応するマルチボックスが
使用される。このようにして、選択したすべての設計要
素に属性を付加することができる。
【0139】ある要素への入力が他の要素の出力である
場合、グラフィックツールは、このデータ依存性を示す
有向弧をそれらの間に自動的に描画する。例えば、図6
で、CNT1(650)の出力はMEM1(656)へ
の入力である。グラフィックツールは、この関係を示す
ために、画面に自動的に有向弧654を表示する。
【0140】ユーザは、要素について、名前、入力、お
よび出力を含むような情報の多いビュー(要素ごとの画
面)を見たい場合、プルダウンメニューバーから適当な
コマンドを選択することができる。これによって、図7
のように設計要素が表示される。例えば、このビューで
は、カウンタCNT1は、要素の名前、型、入力、およ
び出力に関する情報を含むボックス702として示され
ている。同様のビューがメモリMEM1(704)およ
びレジスタREG1(706)についても表示されてい
る。
【0141】ユーザは、設計要素間の接続ラインの形式
を変更することも可能である。プルダウンメニューから
適当なコマンドを選択することによって、ユーザは、図
6に示したような有向弧654から、図7に示したよう
な無向(幅広)ライン708に、接続ラインの形式を変
更することができる。
【0142】図6および図7は、後述の「本発明を使用
した回路設計」という節で、回路例の説明とともにさら
に詳細に説明する。
【0143】グラフィックツールを使用する際に、設計
者は、事前に定義された要素を使用するだけでなく、要
素の集合からマクロを定義すること、すなわち、事前に
定義された要素から新たなオブジェクトを導出すること
も可能である。設計者が新たな要素を定義することを選
択した場合、新しいアイコンが作成される。本発明の、
マクロ定義およびオブジェクト導出の点について、図8
を参照して説明する。
【0144】ステップ802で、設計者が設計要素を選
択すると、ステップ804で、グラフィックツールは、
選択されたオブジェクトが事前に定義された設計要素で
あるかどうか判断する。事前に定義されたものである場
合、ステップ806で、システムは、上記のように、そ
の設計要素の属性を設計者に尋ねる。ステップ808
で、設計中にさらにオブジェクトが存在すると判断され
た場合、システムはステップ802に戻り、設計者は設
計にさらに要素を追加することができる。
【0145】設計者によって選択された要素が事前に定
義されていない場合、ステップ810で、システムは、
ユーザがマクロを定義すること、すなわち、新たな設計
要素を導出することを求めているかどうかを判断する。
設計者がマクロを定義することを求めている場合、シス
テムはステップ812に進む。設計者は、設計要素の集
合をまとめてそれらをマクロと呼び、設計において使用
することができる。基礎となる設計要素の任意のフィー
ルドに、定数または変数としてタグを付けることができ
る。変数としてタグを付けられた場合、そのオブジェク
トが設計で使用されるように選択されると、属性を要求
するマルチボックスがその変数に対する属性を要求す
る。属性が定数としてタグを付けられた場合、マクロ定
義ステップ812中にその属性に値が割り当てられ、そ
れに対するフィールドはマルチボックス中には現れな
い。ユーザがマクロを定義した後、ステップ814でテ
ンプレートが作成される。この定義されたマクロは、他
の事前に定義された設計要素として設計者によって使用
されることが可能である。続いてステップ806で、シ
ステムは、現在の設計で使用されるこのマクロに対する
変数属性を問い合わせる。
【0146】設計者によって選択された要素が事前に定
義されていない場合、ユーザは、ステップ816で、新
たな型の設計要素を導出することができる。グラフィッ
クツールによって、既に提供されているアトム型(基本
単位の型)から新たなオブジェクト型の導出が可能とな
る。例えば、ALUはシステム定義のアトム型である。
これは、幅および型(例えば、加算器、減算器等)を含
めて、設計者が設定することが可能ないくつかのパラメ
ータを定義する。8ビット加算器を頻繁に使用する設計
者は、型パラメータを加算器に設定し、幅パラメータを
8に設定したALU型から新たなオブジェクトを「導
出」することができる。設計者が新たな設計要素を定義
した後、ステップ814でテンプレートが作成される。
この導出された型に一意的なアイコンを付けることが可
能であり、その後設計者はそれを事前に定義されたオブ
ジェクトとして使用することができる。設計者がこの新
たな型を使用することを選択すると、属性を問い合わせ
るマルチボックスが、型フィールドおよび幅フィールド
を除いて、ALUオブジェクトに通常関連するすべての
パラメータに対する属性を要求する。このインタフェー
スの固有の機能により、オブジェクト導出のオブジェク
ト指向概念が、グラフィックインタフェースを通じてエ
ンドユーザに延長される。
【0147】導出された設計要素という概念は、設計要
素の階層の作成を意味する。要素導出は、属性の継承と
いう概念を使用するため、強力な概念である。導出され
た設計要素は、その親の設計要素のすべてのパラメータ
および属性を継承するため、多くの場合、マクロ方式よ
りも少ない作業で、カスタム設計要素ライブラリを作成
することができる。
【0148】設計者がグラフィックツールを使用して設
計を完了すると、条件808の結果は「N」となり、シ
ステムは、ステップ818で、回路のグラフィック表現
をHAN言語に翻訳する。続いて、このHAN言語は、
コンパイラ/オプティマイザへの入力として使用され
る。
【0149】[HAN記述からのFPGA実装の生成]
コンパイラ/オプティマイザは、HANフォーマットで
入力を読み込み、技術マップFPGA記述を生成する。
これから、上記のAT&TのORCA FPGAに関し
て、コンパイラ/オプティマイザの動作を説明する。し
かし、以下で説明する技術は他のメーカからの他のFP
GAチップにも適合させることが可能であり、ORCA
FPGAチップはここでは単に例示の目的で使用して
いるだけである。
【0150】[ORCA FPGAの1個のPLCの機
能]上記のように、ORCA FPGAの論理セルは、
プログラマブル論理クラスタ(PLC)と呼ばれる。1
個のORCA FPGAチップには数百個のPLCがあ
る。図9に示したように、1個のPLC902は、4個
のルックアップテーブル(LUT)904、906、9
08、910を含み、これらはそれぞれ16ビットスタ
ティックRAM(ランダムアクセスメモリ)である。ま
た、PLC902は、4個の(エッジトリガ)フリップ
フロップ912、914、916、918を含むが、こ
れらは(レベル感受性)ラッチとして設定することも可
能である。また、PLCは、設定可能接続ブロック92
0および922を含む。
【0151】ORCA FPGAの1個のPLCは以下
の回路を実装することができる。その回路は、1個の1
6×4メモリ、または2個の16×2メモリ;1個の4
ビット加算器もしくは減算器または加算器/減算器;1
個の4ビットカウンタ(アップ、ダウン、アップ/ダウ
ン、並列ロード);1個の4ビットレジスタ;1個の4
ビット3状態バッファ、およびいくつかの論理回路であ
る。1個のPLCは、上記の作用のうちのある組合せを
実装することも可能である。
【0152】以下で説明するように、各ユーザ定義モジ
ュールに対して、コンパイラ/オプティマイザは、設定
されたPLCおよびそのPLC間の接続を含む最適化さ
れた設計を生成する。その結果得られる設計はPLCの
ネットリストとも呼ばれる。
【0153】コンパイラ/オプティマイザの動作の流れ
図を図10に示す。ステップ1002でHAN記述が提
示され、コンパイラ/オプティマイザに読み込まれる。
このHAN記述は、HAN言語をテキストとして入力す
ることによって、または、グラフィックツールを使用し
てHAN言語を生成することによって、作成される。ま
ずステップ1004で、コンパイラ/オプティマイザ
は、HAN記述から入出力信号を読み取る。次にコンパ
イラ/オプティマイザは、ステップ1006でパラメー
タ化されたモジュールを読み取り、ステップ1008
で、そのモジュールおよびそれに接続されている信号を
保存する。HAN記述から読み取るべきモジュールがさ
らにある場合、条件1010の結果はYesであり、コ
ンパイラ/オプティマイザはステップ1006で次のパ
ラメータ化モジュールを読み取る。このプロセスは、さ
らに読み取るべきモジュールがなくなるまで継続する。
すべてのモジュールが読み取られると、コンパイラ/オ
プティマイザはフェーズ1最適化ステップ1012を実
行する。
【0154】[フェーズ1最適化]図11を参照してフ
ェーズ1最適化について説明する。まず、ステップ11
02で、回路内のすべての記憶要素(例えば、レジス
タ、シフトレジスタ、カウンタ、有限状態マシン、およ
び部分回路)が解析される。ステップ1104で、回路
内のすべての記憶要素が同一の非同期リセット信号を使
用し、リセット信号の極性が同一である場合、局所リセ
ット信号はFPGAチップの大域(チップ全体の)リセ
ット信号に置き換えられる。有限状態マシンに関して
は、有限状態マシンがある始状態を有し、その始状態が
非同期リセット信号によってトリガされる場合、コンパ
イラ/オプティマイザは、その始状態に対応するフリッ
プフロップのプリセットポートにリセット信号を加え
る。
【0155】次に、コンパイラ/オプティマイザは、ス
テップ1106で、隣接するモジュールの信号極性をチ
ェックし、ステップ1108でその極性を変化させ、そ
の変化によってさらに効率的な実装が得られるかどうか
検査する。例えば、図12の回路を考える。この回路
は、8ビットコンパレータ1202と8ビットシフトレ
ジスタ1204を含む。シフトレジスタ1204は、L
/S’信号1208がHIGHである場合に入力データC
[7:0]1206をロードし、L/S’信号1208
がLOWであるときには内容をシフトする。AT&TのO
RCA FPGAを使用すると、等しい出力がLOWでア
クティブである場合、2個のPLCを使用して8ビット
等式チェッカが実装可能である。出力がHIGHでアクティ
ブである場合にはインバータを追加しなければならず、
追加のPLCが必要となる。この場合、コンパイラ/オ
プティマイザはシフトレジスタ1204のL/S’信号
1208の極性をLOWでアクティブになるように変更
し、そのようにシフトレジスタを合成する。その結果、
この回路を実現するに必要となるPLCは1個少なくな
る。
【0156】図10に戻って、フェーズ1最適化ステッ
プ1012が完了した後、次のステップ1014はモジ
ュール合成および技術マップである。このステップで
は、HAN言語で記述された各モジュールがFPGAの
PLCへと合成される。
【0157】[モジュール合成] [メモリモジュールのコンパイル]コンパイラ/オプテ
ィマイザは各ユーザ定義メモリをPLCへとコンパイル
する。ユーザ定義メモリの行の総数が16より大きい場
合、コンパイラ/オプティマイザはアドレスデコード回
路および3状態バッファを導入する。例えば、図13の
(A)に1302として示した32行4列のユーザ定義
メモリを考える。このメモリモジュールは、ORCA
FPGA実装では2個の16×4メモリユニットに分割
しなければならない。その理由は、上記のように、各P
LCは1個の16×4メモリを実装することができるだ
けであるからである。コンパイラ/オプティマイザは図
13の(B)に示したようにコンパイルされた回路を生
成し、この回路に3個のPLC1304、1306、お
よび1308を割り付ける。1個の16×4メモリ13
10および4個の3状態バッファ1312がPLC13
06に割り付けられ、1個の16×4メモリ1314お
よび4個の3状態バッファ1316がPLC1308に
割り付けられる。2個のゲート1320および1322
がPLC1304に割り付けられる。コンパイラ/オプ
ティマイザは、ORCAのPLCの3状態イネーブル信
号のプログラマブル極性を利用していることに注意すべ
きである。上半メモリ1306を実装するPLCに対し
ては、HIGHでアクティブのa4信号1324を使用す
る。下半メモリ1308を実装するPLCに対しては、
LOWでアクティブのa4’信号1326を使用する。
【0158】[ALUおよびカウンタモジュールのコン
パイル]コンパイラ/オプティマイザは、各ユーザ定義
ALUをPLCへとコンパイルする。ユーザ定義ALU
の幅が4より大きい場合、コンパイラ/オプティマイザ
はPLC間にキャリー信号を導入する。例として、図1
4の(A)に示した10ビットユーザ定義加算器を考え
る。この加算器の名前は「foo」であり、キャリー入
力としてCi信号1402を有し、キャリー出力として
Co信号1404を有する。この加算器は、2個の10
ビット入力(a9−a0およびb9−b0)と、1個の
10ビット出力(y9−y0)を有する。この回路に対
して、コンパイラ/オプティマイザは、図14の(B)
に示すような3個のPLC1406、1408、141
0による実装を生成する。PLC1406は2ビット加
算器1416を実装し、PLC1408および1410
はそれぞれ1個の4ビット加算器1418、1420を
実装する。加算器1416は、2個の2ビット入力(a
9−a8およびb9−b8)と、1個の2ビット出力
(y9−y8)を有する。加算器1418は、2個の4
ビット入力(a7−a4およびb7−b4)と、1個の
4ビット出力(y7−y4)を有する。加算器1420
は、2個の4ビット入力(a3−a0およびb3−b
0)と、1個の4ビット出力(y3−y0)を有する。
コンパイラ/オプティマイザは、PLCの間に新たに2
個のキャリー信号、foo_c1(1412)およびf
oo_c2(1414)、を導入する。
【0160】コンパイラ/オプティマイザは、同様にし
てカウンタを実装し、中間キャリー信号を導入する。
【0161】さらに、コンパイラ/オプティマイザは、
必要に応じて、新たなリセット回路を導入する。例え
ば、図15の(A)の11ビットカウンタ1502を考
える。このカウンタはCKO信号1504によってクロ
ックされる。このカウンタは、キャリー出力信号として
01506を有し、データ出力信号としてQ10、Q9
8、Q7、Q6、Q5、Q4、Q3、Q2、Q1、Q0を有す
る。
【0162】ORCA FPGAの1個のPLCは1個
の4ビットカウンタを実装することができるため、コン
パイラ/オプティマイザは、図15の(B)のように3
個のPLC1550、1552、1554を割り付け
る。さらに、コンパイラ/オプティマイザは、新たな回
路として、3入力ANDゲート1556を導入する。こ
の3入力ANDゲート1556の入力は、1554のQ
8、Q9、Q10から来る。このANDゲートの出力は、最
上位カウンタ1554の(同期)リセット信号として使
用される。これは、またキャリー出力信号C01558
としても使用される。
【0163】[マルチプレクサモジュールのコンパイ
ル]コンパイラ/オプティマイザは、各ユーザ定義マル
チプレクサをルックアップテーブルへとコンパイルす
る。例えば、図16の(A)に示した4:1マルチプレ
クサを考える。このマルチプレクサは4個の入力信号
(a、b、c、およびd)と2個の選択信号(s1およ
びs0)を有する。マルチプレクサの入力の総数が6で
あるため、コンパイラ/オプティマイザは、このマルチ
プレクサを実装するために、1個のPLC1602に4
個ルックアップテーブルすべて(すなわち、全部で64
ビットRAM)を割り付ける。あるいは、コンパイラ/
オプティマイザは、このマルチプレクサに対して3個の
ルックアップテーブルのみを割り付けることも可能であ
る。これを図16の(B)に示す。各2:1マルチプレ
クサ1604、1606、1608は、1個の16ビッ
トルックアップテーブルによって実装されている。この
3個のPLC1610、1612、1614による実装
によって、図16の(A)の実装よりも信号遅延は増大
する。コンパイラ/オプティマイザは、マルチプレクサ
モジュール指定の.OPTフィールドに表されたユーザの要
求に従って、4:1マルチプレクサを実装する。
【0164】PERFが選択された場合、コンパイラ/オプ
ティマイザは図16の(A)に示されるように4:1マ
ルチプレクサを実装する。AREAが選択された場合、コン
パイラ/オプティマイザは図16の(B)に示されるよ
うに4:1マルチプレクサを実装する。
【0165】もう1つの例として、図17の8:1マル
チプレクサを考える。このマルチプレクサは、8個の入
力信号(a−h)と3個の選択信号(s0,s1,s
2)を有する。このマルチプレクサは、多くの異なる方
法で実装することが可能であるが、そのうちの3つを図
18〜図20に示す。3つの実装はそれぞれ2個のPL
Cを使用する。
【0166】第1の実装(図18)は、ルックアップテ
ーブルのみを使用する。各2:1マルチプレクサ180
2、1804、1806、1808、1810、181
2、1814は1個の16ビットルックアップテーブル
によって実装される。この実装は2個のPLC181
6、1818を必要とする。他の2つの実装は、ルック
アップテーブルとともに3状態バッファを使用する。
【0167】図19の実装は、8:1マルチプレクサを
実装するために2個のPLC1902、1904を使用
する。PLC1902は、3個のルックアップテーブル
を使用して、3個の2:1マルチプレクサ1906、1
908、1910と、2個の3状態バッファ1912、
1914を実装する。PLC1904は、2個のルック
アップテーブルを使用して、2個の2:1マルチプレク
サ1916、1918と、2個の3状態バッファ192
0、1922を実装する。
【0168】図20の実装は、8:1マルチプレクサを
実装するために2個のPLC2002、2004を使用
する。PLC2002は4個のルックアップテーブルを
使用して4:1マルチプレクサ2006と3状態バッフ
ァ2008を実装する。PLC2004は4個のルック
アップテーブルを使用して4:1マルチプレクサ201
0と3状態バッファ2012を実装する。
【0169】図18〜図20においてPLC間の配線遅
延が等しいと仮定すると、図20の実装が最適である。
その理由は、信号遅延が最小であり、各PLCが有する
外部接続は少数であるからである。図18の実装は、最
大の信号遅延を有するため、最悪である。3つのすべて
の実装(図18〜図20)は同数のPLCを使用するた
め、コンパイラ/オプティマイザは、マルチプレクサモ
ジュール指定の.OPTフィールドの指定にかかわらず、図
20の実装を使用する。
【0170】[有限状態マシンのコンパイル]有限状態
マシン(FSM)に対しては、コンパイラ/オプティマ
イザは1ホットエンコード方式を使用する。すなわち、
コンパイラ/オプティマイザは、FSMの状態の数をN
として、N個のフリップフロップを生成する。コンパイ
ラ/オプティマイザは、与えられた任意の時刻に(N個
のフリップフロップのうちの)1個のフリップフロップ
のみが「1」という値を有するように、回路を合成す
る。ユーザがリセット状態を指定した場合、コンパイラ
/オプティマイザは、リセット信号がアクティブになっ
たときにリセット状態に対応するフリップフロップが値
「1」を有するよう強制する回路を生成する。
【0171】コンパイラ/オプティマイザは、他のモジ
ュールに対しても同様の合成動作を実行する。本明細書
の説明を考慮して、当業者であれば、他の電子回路設計
モジュールの合成も容易に実装可能である。従って、各
モジュールの合成の詳細な説明はここでは省略する。
【0172】図10に戻って、モジュール合成および技
術マップステップ1014が完了した後、フェーズ2最
適化ステップ1016が実行される。
【0173】[フェーズ2最適化]図21の流れ図を参
照して、フェーズ2最適化を説明する。
【0174】上記のように、コンパイラ/オプティマイ
ザは、モジュール合成中に追加の回路(例えば、図15
の(B)の3入力ANDゲート1556)を生成するこ
とがある。一般的に、このような回路要素は、モジュー
ル合成中にはPLCにマップされない。
【0175】フェーズ2最適化の第1ステップ2102
は、マップされていない回路要素が存在するかどうかを
チェックすることである。存在する場合、ステップ21
04で、システムはその回路要素をPLCにマップする
(すなわち、そのマップされていない回路要素にPLC
を割り付ける)。
【0176】すべての回路をPLCにマップした後、ス
テップ2106で、システムは、2つの異なるPLCを
併合することができるかどうかチェックする。併合する
ことができる場合、ステップ2108で、その2個のP
LCは1個のPLCに併合される。
【0177】例えば、図22のPLC2202および2
204を考える。一方のPLC2202は4個のルック
アップテーブル2208、2210、2212、221
4を使用して4ビット加算器を実装し、他方のPLC2
204は4個のフリップフロップ2216、2218、
2220、2222を使用して4ビットレジスタを実装
している。PLC2202の出力信号(S3,S2,S
1,S0)は、PLC2204の入力信号である。シス
テムは、これらの2個のPLC2202、2204が併
合可能であることを認識し、2個のPLCを1個のPL
C2206へと併合する。
【0178】これらのフェーズ2最適化動作は多くの理
由で有効である。第1に、より多くの論理資源が1個の
PLCで利用され、従って、面積に関してより良い回路
が生成される。第2に、回路要素の局所性が活用され、
回路のパフォーマンスが向上する。第3に、PLC間の
配線条件が緩和される。
【0179】図10に戻って、フェーズ2最適化ステッ
プ1016の後、システムは、ステップ1018で、目
的のFPGAに対する技術マップ回路のネットリストフ
ォーマットを作成する。このネットリストフォーマット
は、使用されるFPGAに依存して変わることがある。
例えば、このフォーマットは、AT&TのORCAFP
GAに対してはFAN言語である。他のFPGAに対す
るネットリストフォーマットの説明は、FPGAメーカ
から容易に入手可能である。
【0180】PLCのネットリストを生成することに加
えて、システムは他のツール(例えば、配置ツール)へ
の入力として回路の構造情報を提供することも可能であ
る。例えば、図13の(B)で、コンパイラ/オプティ
マイザは、1個の32×4ユーザ定義メモリを実装する
3個のPLC1304、1306、1308を1グルー
プのPLCとして標識する。同様に、図14の(B)
で、コンパイラ/オプティマイザは、10ビット加算器
を実装する3個のPLC1406、1408、1410
を1グループのPLCとして標識する。標識は、目的の
FPGA技術のFAN言語に対する適当な機構を使用す
ることによって行われる。配置ツールは、同じグループ
内のPLCを互いに隣接するように配置しようとする。
この結果、FPGA実装はさらに効率的となる。
【0181】[本発明を使用した回路設計]以上の詳細
な説明で、本発明のさまざまな側面を説明した。これか
ら、本発明による簡単な回路の設計の例について説明
し、FPGAにおける設計から実装までのステップの進
行および関係を例示する。
【0182】実装すべき回路例2300を図23に示
す。この回路は、5ビットカウンタ2302、32×4
メモリ2304、および4ビットレジスタ2306から
なる。カウンタ2302は3個の入力を有する。ck1
信号2308はカウンタのクロック信号である。rst
1信号2310はカウンタのリセット信号である。ck
en1信号2320はカウンタのクロックイネーブル信
号である。カウンタの5ビット出力adin[4:0]
信号2312はメモリ2304へのアドレス入力であ
る。HAN言語について記載した前の節で説明したよう
に、adin[4:0]信号指定は、5個の信号adi
n4、adin3、adin2、adin1およびad
in0を意味する。メモリは、4ビット入力であるデー
タ入力信号mdin[3:0]2314も有する。メモ
リ2304のライトイネーブル信号はwren1(23
16)である。メモリ2304の出力はmdout
[3:0]信号2318である。
【0183】メモリ2304の出力はレジスタ2306
の入力でもある。レジスタ2306もまた、リセット信
号rst1(2310)、クロック信号ck1(230
8)、およびクロックイネーブル信号cken1(23
20)を有する。
【0184】設計者は、本発明を使用して、この回路を
HAN言語で記述することによって、または、回路を記
述するのにグラフィックツールを使用することによっ
て、この回路を実装することができる。第1に、図23
の回路例のHAN記述について説明する。
【0185】図23の回路のHAN記述は以下の通りで
ある。
【表37】
【0186】HAN言語の詳細については既に「回路の
テキスト記述」という節で説明した。従って、この特定
の回路に関係するいくつかの詳細についてのみさらに説
明する。
【0187】ある要素の出力が他の要素への入力である
ことを示すために、各要素の記述において単一の信号名
を使用する。例えば、図23の回路では、カウンタ23
02の出力はメモリ2304へのアドレス入力である。
この信号は図23では2312に示されている。この関
係をHAN言語で示すために、メモリモジュール記述お
よびカウンタモジュール記述の両方で同じ信号名を使用
する。従って、カウンタモジュールの.DOUTフィールド
(カウンタの出力信号を示す)は信号adin[4:0]を含
む。メモリモジュールの.ADDRフィールド(メモリのア
ドレス入力を示す)は、信号adin[4:0]を含む。同様に
して、メモリ2304の出力がレジスタ2306の入力
へ接続されることは、HAN言語では、共通の信号mdou
t[3:0]によって示される。
【0188】同様に、レジスタ2306とカウンタ23
02は、同一のリセット信号rst1(2310)、ク
ロック信号ck1(2308)、およびクロックイネー
ブル信号cken1(2320)を共有する。
【0189】この回路をHANフォーマットで記述する
代わりに、回路設計者は、上記の「グラフィックツー
ル」という節で説明したように、グラフィックツールを
使用することも可能である。図6を参照すると、設計者
は、カウンタアイコン650、メモリアイコン656、
およびレジスタアイコン652をウィンドウ600のキ
ャンバス領域608内に配置する。次に、マルチボック
スを使用して、各モジュールのさまざまな属性を指定す
る。例えば、この方法におけるレジスタモジュール65
2の属性の指定をマルチボックス630に示す。メモリ
モジュールおよびカウンタモジュールに対する属性も同
様にして指定する。
【0190】次に、キャンバス領域608内の「Pri
mary I/O」アイコン658を配置し、マルチボ
ックスを使用することにより一次I/O信号を指定する
ことによって、一次I/O信号を指定する。さらに情報
の多いビューを図7のように表示することも可能であ
る。
【0191】設計者がグラフィックツールを使用して回
路記述を指定した場合、システムはそのグラフィック記
述を、その回路のHANファイル記述に翻訳する。
【0192】設計者がHAN言語で直接回路記述を入力
することによって、または、システムが回路のグラフィ
ック表現をHAN言語に変換することによって、HAN
ファイルが作成されると、最適化/コンパイルが開始さ
れる。
【0193】図10を参照すると、第1ステップ100
4で、入出力信号を読み出す。この例では、システムは
mdin[3:0]、wren1、rst1、cken
1、ck1およびrout[3:0]を読み出す。その
理由は、これらの信号は一次入出力信号として指定され
たためである。ステップ1006で、システムはカウン
タモジュール記述を読み出し、ステップ1008で、そ
の指定に含まれる情報を保存する。続いてシステムはメ
モリモジュール記述およびレジスタモジュール記述を読
み出し、その情報を保存する。レジスタモジュールは最
後であるため、さらに読み出すべきモジュールはなく、
条件1010が満たされて、システムはフェーズ1最適
化ステップ1012を開始する。
【0194】フェーズ1最適化(図11参照)中に、ス
テップ1102で、システムはまずカウンタおよびレジ
スタが同じ極性の同じリセット信号を使用しているかど
うかを判断する。カウンタおよびレジスタはいずれもr
st1リセット信号を使用するため、ステップ1104
で、システムはこれらの局所リセット信号を除去し、F
PGA実装における大域リセットで置き換える。
【0195】続いて、極性変化によって効率が改善され
るかどうかをチェックするステップ1106が実行され
る。極性変化によって効率は改善されないため、極性切
換はされない。
【0196】フェーズ1最適化の後、システムはモジュ
ール合成および技術マップステップ1014(図10)
に進む。まず、カウンタ実装が生成される。図14に関
連して説明したように、5ビットカウンタは2個のPL
Cによる実装を要求する。このような実装を図24に示
す。2個のPLC2402、2404が回路を実装する
ために要求される。また、システムはPLC間にキャリ
ー信号2406を導入する。
【0197】次に、システムはメモリモジュールを実装
する。システムは、メモリモジュールを3個のPLC2
408、2410、2412で実装する。メモリモジュ
ール合成については既に図13に関連して詳細に説明し
た。
【0198】最後に、システムはレジスタモジュールを
実装する。ORCA FPGAの1個のPLCは4ビッ
トレジスタを実装することができるため、このモジュー
ルは1個のPLC2414に実装される。
【0199】図10に戻って、モジュール合成および技
術マップステップ1014が完了したので、フェーズ2
最適化ステップ1016が開始される。図21に示した
ように、第1ステップ2102は、PLCにマップされ
ていない回路要素が存在するかどうかをチェックするこ
とである。そのような要素はないため、システムはステ
ップ2106に進む。
【0200】システムは、PLC2414(図24)は
PLC2410および2412に併合することが可能で
あり、それによって最終実装でPLCが1個少なくなる
ことを認識する。従って、システムはステップ2108
(図21)を実行し、図25の回路を生成する。PLC
2502および2504は、16×4メモリ2506、
2508を含むだけでなく、4ビットレジスタ251
0、2512をも含むことに注意すべきである。
【0201】フェーズ2最適化が完了した後、最終ステ
ップ1018(図10)は、得られた技術マップ回路
を、目的のfpgaのネットリストフォーマットでプリ
ントすることである。
【0202】
【発明の効果】以上述べたごとく、本発明によれば、第
2世代FPGAのデータパス機能を利用することが可能
となる。本発明は、現在のFPGAのデータパス回路を
利用する。本発明は、ユーザに、回路設計に対する(ゲ
ートおよびフリップフロップよりも)高水準の抽象化を
提供する。これによりユーザは特定のFPGAのアーキ
テクチャの詳細から解放され、その結果、FPGAの回
路設計の生産性が増大する。また、本発明は、高品質の
結果を生じる。
【図面の簡単な説明】
【図1】本発明を使用した高水準設計の流れ図である。
【図2】本発明のシステムの要素の概略図である。
【図3】4:1マルチプレクサの図である。
【図4】4個の2:1マルチプレクサからなるマルチプ
レクサ群の図である。
【図5】有限状態マシンの状態図である。
【図6】グラフィックツールの画面表示の図である。
【図7】グラフィックツールのもう1つの画面表示の図
である。
【図8】グラフィックツールのエンドユーザ流れ図であ
る。
【図9】ORCA FPGAプログラマブル論理クラス
タのブロック図である。
【図10】コンパイラ/オプティマイザの流れ図であ
る。
【図11】フェーズ1最適化の流れ図である。
【図12】信号極性を変えることによる最適化の利益を
説明する図である。
【図13】Aはユーザ定義32×4メモリ、BはAのユ
ーザ定義32×4メモリのコンパイルされた回路の図で
ある。
【図14】Aはユーザ定義10ビット加算器、BはAの
ユーザ定義10ビット加算器のコンパイルされた回路の
図である。
【図15】Aは11ビットカウンタ、BはAの11ビッ
トカウンタの実装の図である。
【図16】Aは4個の16ビットルックアップテーブル
による1個の論理セルでの4:1マルチプレクサの実装
の図、Bは3個の16ビットルックアップテーブルを使
用した3個の論理セルでの4:1マルチプレクサの実装
の図である。
【図17】ユーザ定義8:1マルチプレクサの図であ
る。
【図18】図17のユーザ定義8:1マルチプレクサの
実装の図である。
【図19】図17のユーザ定義8:1マルチプレクサの
実装の図である。
【図20】図17のユーザ定義8:1マルチプレクサの
実装の図である。
【図21】フェーズ2最適化の流れ図である。
【図22】2個の論理セルを併合する例の図である。
【図23】ユーザ定義回路のブロック図である。
【図24】図23の回路のFPGA実装のブロック図で
ある。
【図25】図23の回路の最適化したFPGA実装のブ
ロック図である。
【符号の説明】
102 ユーザ 104 グラフィックツール 106 高水準アプリケーションネットリスト(HA
N) 108 コンパイラ/オプティマイザ 110 FPGAアプリケーションネットリスト(FA
N)ファイル 112 配置配線ツール 114 システム 116 FPGA実装 200 汎用コンピュータシステム 202 グラフィック表示モニタ 204 グラフィック画面 206 キーボード 208 マウス 210 コンピュータプロセッサ 402 マルチプレクサ 404 マルチプレクサ 406 マルチプレクサ 408 マルチプレクサ 600 ウィンドウ 602 タイトル領域 604 メッセージ領域 606 プルダウンメニューバー 608 キャンバス領域 610 パネル領域 630 マルチボックス 902 プログラマブル論理クラスタ(PLC) 904 ルックアップテーブル(LUT) 906 ルックアップテーブル(LUT) 908 ルックアップテーブル(LUT) 910 ルックアップテーブル(LUT) 912 フリップフロップ 914 フリップフロップ 916 フリップフロップ 918 フリップフロップ 920 設定可能接続ブロック 922 設定可能接続ブロック 1202 8ビットコンパレータ 1204 8ビットシフトレジスタ 1302 32×4メモリ 1304 PLC 1306 PLC 1308 PLC 1310 16×4メモリ 1312 3状態バッファ 1314 16×4メモリ 1316 3状態バッファ 1406 PLC 1408 PLC 1410 PLC 1416 2ビット加算器 1418 4ビット加算器 1420 4ビット加算器 1502 11ビットカウンタ 1506 キャリー出力信号 1550 PLC 1552 PLC 1554 PLC 1556 3入力ANDゲート 1558 キャリー出力信号 1602 PLC 1604 2:1マルチプレクサ 1606 2:1マルチプレクサ 1608 2:1マルチプレクサ 1610 PLC 1612 PLC 1614 PLC 1802 2:1マルチプレクサ 1804 2:1マルチプレクサ 1806 2:1マルチプレクサ 1808 2:1マルチプレクサ 1810 2:1マルチプレクサ 1812 2:1マルチプレクサ 1814 2:1マルチプレクサ 1816 PLC 1818 PLC 1902 PLC 1904 PLC 1906 2:1マルチプレクサ 1908 2:1マルチプレクサ 1910 2:1マルチプレクサ 1912 3状態バッファ 1914 3状態バッファ 1916 2:1マルチプレクサ 1918 2:1マルチプレクサ 1920 3状態バッファ 1922 3状態バッファ 2002 PLC 2004 PLC 2006 4:1マルチプレクサ 2008 3状態バッファ 2010 4:1マルチプレクサ 2012 3状態バッファ 2202 PLC 2204 PLC 2206 PLC 2208 ルックアップテーブル 2210 ルックアップテーブル 2212 ルックアップテーブル 2214 ルックアップテーブル 2216 フリップフロップ 2218 フリップフロップ 2220 フリップフロップ 2222 フリップフロップ 2300 回路例 2302 5ビットカウンタ 2304 32×4メモリ 2306 4ビットレジスタ 2402 PLC 2404 PLC 2406 キャリー信号 2408 PLC 2410 PLC 2412 PLC 2414 PLC 2502 PLC 2504 PLC 2506 16×4メモリ 2508 16×4メモリ 2510 4ビットレジスタ 2512 4ビットレジスタ
フロントページの続き (72)発明者 ナム − サング ウー アメリカ合衆国、07974 ニュージャージ ー、ニュー プロビデンス、ダービィ コ ート 10

Claims (28)

    【特許請求の範囲】
  1. 【請求項1】 プログラマブル配線によって接続された
    複数のプログラマブル論理セルからなるフィールドプロ
    グラマブルゲートアレイに、高水準記述から回路を合成
    するシステムにおいて、 コンピュータプロセッサと、 前記コンピュータプロセッサに接続されたディスプレイ
    モニタと、 前記コンピュータプロセッサに接続され、パラメータ化
    されたモジュールによって複数の電子回路要素を記述す
    るテキスト言語を入力するためのテキストデータ入力手
    段と、 前記テキスト言語を、フィールドプログラマブルゲート
    アレイ構成データにコンパイルする手段とからなること
    を特徴とする回路合成システム。
  2. 【請求項2】 前記電子回路要素がランダム論理要素お
    よびデータパス回路要素からなることを特徴とする請求
    項1のシステム。
  3. 【請求項3】 パラメータ化されたメモリモジュールの
    初期内容を指定して前記テキスト言語で記述されたメモ
    リモジュールを受信する手段と、 メモリユニットの内容が指定した初期内容であるような
    フィールドプログラマブルゲートアレイ構成を生成する
    手段とをさらに有することを特徴とする請求項1のシス
    テム。
  4. 【請求項4】 最適化がパフォーマンスまたは面積のい
    ずれに基づくかを指定して前記テキスト言語で記述され
    たパラメータ化されたモジュールを受信する手段と、 前記テキスト言語指定に依存してパフォーマンスまたは
    面積に基づいて前記モジュールのフィールドプログラマ
    ブルゲートアレイ構成を最適化する手段とをさらに有す
    ることを特徴とする請求項1のシステム。
  5. 【請求項5】 前記フィールドプログラマブルゲートア
    レイ構成データが、いくつかのプログラマブル論理セル
    を、フィールドプログラマブルゲートアレイにおいて相
    互に近接して実装されるようなグループとして識別する
    情報をさらに有することを特徴とする請求項1のシステ
    ム。
  6. 【請求項6】 プログラマブル配線によって接続された
    複数のプログラマブル論理セルからなるフィールドプロ
    グラマブルゲートアレイにおける回路実装を最適化する
    システムにおいて、 コンピュータプロセッサと、 出力信号およびその出力信号の極性を指定する第1電子
    回路設計モジュールと、入力およびその入力信号の極性
    を指定する第2電子回路設計モジュールとの記述であっ
    て、前記第1電子回路設計モジュールの出力信号が前記
    第2電子回路設計モジュール入力信号に対応する記述を
    受信する手段と、 前記入力信号および前記出力信号の信号極性を反転させ
    ることにより、フィールドプログラマブルゲートアレイ
    に前記第1電子回路設計モジュールおよび前記第2電子
    回路設計モジュールを実装するのに要するプログラマブ
    ル論理セルの数を削減する手段とからなることを特徴と
    する回路実装最適化システム。
  7. 【請求項7】 プログラマブル配線によって接続された
    複数のプログラマブル論理セルからなるフィールドプロ
    グラマブルゲートアレイにおける回路実装を合成するシ
    ステムにおいて、 コンピュータプロセッサと、 第2電子回路設計要素に接続された第1電子回路設計要
    素のテキスト記述を受信する手段と、 前記第1電子回路設計要素の出力が前記第2電子回路設
    計要素に接続されるように少なくとも1つのプログラマ
    ブル論理セル内に前記第1電子回路設計要素および前記
    第2電子回路設計要素を実装する手段と、 前記第1電子回路設計要素および前記第2電子回路設計
    要素のフィールドプログラマブルゲートアレイ実装を最
    適化する最適化手段とからなることを特徴とする回路実
    装合成システム。
  8. 【請求項8】 前記最適化手段は、プログラマブル論理
    セルの数を最小にするように少なくとも1つのプログラ
    マブル論理セル内に前記第1電子回路設計要素および前
    記第2電子回路設計要素を実装する手段からなることを
    特徴とする請求項7のシステム。
  9. 【請求項9】 前記最適化手段は、前記実装のプログラ
    マブル論理セルの数を最小にするように少なくとも1つ
    のプログラマブル論理セル内に前記第1電子回路設計要
    素および前記第2電子回路設計要素を実装する手段から
    なることを特徴とする請求項7のシステム。
  10. 【請求項10】 前記最適化手段は、1つのプログラマ
    ブル論理セル内に前記第1電子回路設計要素および前記
    第2電子回路設計要素を実装する手段からなることを特
    徴とする請求項7のシステム。
  11. 【請求項11】 フィールドプログラマブルゲートアレ
    イに高水準回路記述から回路を合成するシステムにおい
    て、 コンピュータプロセッサと、 グラフィック情報の表示のために前記コンピュータプロ
    セッサに接続されたグラフィックディスプレイモニタ
    と、 前記コンピュータに接続されたグラフィックデータ入力
    装置と、 ランダム論理回路要素およびデータパス回路要素を含む
    事前に定義された複数の電子回路要素を表す複数のアイ
    コンを前記グラフィックディスプレイモニタの第1領域
    に表示する手段と、 アイコンを選択することによってそのアイコンが表す前
    記電子回路要素のうちの1つを選択し、その選択したア
    イコンを前記グラフィックディスプレイモニタの第2領
    域に配置する手段と、 前記グラフィックディスプレイモニタの前記第2領域内
    の前記アイコンによって表される前記電子回路要素に属
    性を割り当てる手段と、 前記選択されたアイコンおよび割り当てられた属性か
    ら、パラメータ化されたモジュールによって前記電子回
    路要素のテキスト記述を生成する手段と、 前記テキスト記述をフィールドプログラマブルゲートア
    レイ構成データにコンパイルする手段とからなることを
    特徴とする回路合成システム。
  12. 【請求項12】 前記フィールドプログラマブルゲート
    アレイ構成データはフィールドプログラマブルゲートア
    レイアプリケーションネットリストであることを特徴と
    する請求項1または11のシステム。
  13. 【請求項13】 事前に定義された電子回路要素のセッ
    トとしてマクロを定義する手段と、 前記事前に定義された電子回路要素のいくつかの属性を
    割り当て、それらの属性を定数として指定する手段と、 前記事前に定義された電子回路要素のいくつかの属性を
    変数として指定する手段と、 前記マクロを表すアイコンを、事前に定義された回路要
    素として使用するために、グラフィックディスプレイモ
    ニタの前記第1領域に表示する手段と、 前記マクロが設計要素として選択された場合に、前記変
    数の属性を割り当てる手段とをさらに有することを特徴
    とする請求項11のシステム。
  14. 【請求項14】 導出された要素を定義する手段と、 前記複数のアイコンのうちの1つを選択する手段と、 前記事前に定義された電子回路要素のいくつかの属性を
    割り当て、それらの属性を定数として指定する手段と、 前記導出された要素を表すアイコンを、事前に定義され
    た回路要素として使用するために、グラフィックディス
    プレイモニタの前記第1領域に表示する手段とをさらに
    有することを特徴とする請求項11のシステム。
  15. 【請求項15】 プログラマブル配線によって接続され
    た複数のプログラマブル論理セルからなるフィールドプ
    ログラマブルゲートアレイに、高水準回路記述から回路
    を合成する方法において、 テキスト言語を使用して、パラメータ化されたモジュー
    ルによって複数の電子回路要素を記述するステップと、 前記テキスト言語を、フィールドプログラマブルゲート
    アレイ構成データにコンパイルするステップとからなる
    ことを特徴とする回路合成方法。
  16. 【請求項16】 前記電子回路要素がランダム論理要素
    およびデータパス回路要素からなることを特徴とする請
    求項15の方法。
  17. 【請求項17】 パラメータ化されたメモリモジュール
    の初期内容を指定して前記テキスト言語でメモリモジュ
    ールを記述するステップと、 メモリユニットの内容が指定した初期内容であるような
    フィールドプログラマブルゲートアレイを実装するステ
    ップとをさらに有することを特徴とする請求項15の方
    法。
  18. 【請求項18】 最適化がパフォーマンスまたは面積の
    いずれに基づくかを指定して前記テキスト言語でパラメ
    ータ化されたモジュールを記述するステップと、 前記テキスト言語指定に依存してパフォーマンスまたは
    面積に基づいて前記モジュールのフィールドプログラマ
    ブルゲートアレイ構成を最適化するステップとをさらに
    有することを特徴とする請求項15の方法。
  19. 【請求項19】 前記フィールドプログラマブルゲート
    アレイ構成データが、いくつかのプログラマブル論理セ
    ルを、フィールドプログラマブルゲートアレイにおいて
    相互に近接して実装されるようなグループとして識別す
    る情報をさらに有することを特徴とする請求項15の方
    法。
  20. 【請求項20】 プログラマブル配線によって接続され
    た複数のプログラマブル論理セルからなるフィールドプ
    ログラマブルゲートアレイの構成を最適化する方法にお
    いて、 出力信号およびその出力信号の極性を指定する第1電子
    回路設計モジュールと、入力およびその入力信号の極性
    を指定する第2電子回路設計モジュールとの記述であっ
    て、前記第1電子回路設計モジュールの出力信号が前記
    第2電子回路設計モジュール入力信号に対応する記述を
    受信するステップと、 前記入力信号および前記出力信号の信号極性を反転させ
    ることにより、フィールドプログラマブルゲートアレイ
    に前記第1電子回路設計モジュールおよび前記第2電子
    回路設計モジュールを実装するのに要するプログラマブ
    ル論理セルの数を削減するステップとからなることを特
    徴とするフィールドプログラマブルゲートアレイ構成最
    適化方法。
  21. 【請求項21】 プログラマブル配線によって接続され
    た複数のプログラマブル論理セルからなるフィールドプ
    ログラマブルゲートアレイにおける回路実装を合成する
    方法において、 第2電子回路設計要素に接続された第1電子回路設計要
    素のテキスト記述を受信するステップと、 前記第1電子回路設計要素の出力が前記第2電子回路設
    計要素に接続されるように少なくとも1つのプログラマ
    ブル論理セル内に前記第1電子回路設計要素および前記
    第2電子回路設計要素を実装するステップと、 前記第1電子回路設計要素および前記第2電子回路設計
    要素のフィールドプログラマブルゲートアレイ実装を最
    適化する最適化ステップとからなることを特徴とする回
    路実装合成方法。
  22. 【請求項22】 前記最適化ステップは、プログラマブ
    ル論理セルの数を最小にするように少なくとも1つのプ
    ログラマブル論理セル内に前記第1電子回路設計要素お
    よび前記第2電子回路設計要素を実装するステップから
    なることを特徴とする請求項21の方法。
  23. 【請求項23】 前記最適化ステップは、前記実装のプ
    ログラマブル論理セルの数を最小にするように少なくと
    も1つのプログラマブル論理セル内に前記第1電子回路
    設計要素および前記第2電子回路設計要素を実装するス
    テップからなることを特徴とする請求項21の方法。
  24. 【請求項24】 前記最適化ステップは、1つのプログ
    ラマブル論理セル内に前記第1電子回路設計要素および
    前記第2電子回路設計要素を実装するステップからなる
    ことを特徴とする請求項21の方法。
  25. 【請求項25】 プログラマブルゲートアレイ実装を高
    水準回路記述から合成する方法において、 ランダム論理回路要素およびデータパス回路要素を含む
    事前に定義された複数の電子回路設計要素を表す複数の
    アイコンをグラフィックディスプレイモニタの第1領域
    に表示するステップと、 アイコンを選択することによってそのアイコンが表す前
    記電子回路設計要素のうちの1つを選択し、その選択し
    たアイコンを前記グラフィックディスプレイモニタの第
    2領域に配置するステップと、 前記グラフィックディスプレイモニタの前記第2領域内
    の前記アイコンによって表される前記電子回路設計要素
    に属性を割り当てるステップと、 前記選択されたアイコンおよび割り当てられた属性か
    ら、パラメータ化されたモジュールによって前記電子回
    路設計要素のテキスト記述を生成するステップと、 前記テキスト記述をフィールドプログラマブルゲートア
    レイ構成データにコンパイルするステップとからなるこ
    とを特徴とするプログラマブルゲートアレイ合成方法。
  26. 【請求項26】 前記フィールドプログラマブルゲート
    アレイ構成データはフィールドプログラマブルゲートア
    レイアプリケーションネットリストであることを特徴と
    する請求項15または25の方法。
  27. 【請求項27】 事前に定義された電子回路設計要素の
    セットとしてマクロを定義するステップと、 前記事前に定義された電子回路設計要素のいくつかの属
    性を割り当て、それらの属性を定数として指定するステ
    ップと、 前記事前に定義された電子回路設計要素のいくつかの属
    性を変数として指定するステップと、 前記マクロを表すアイコンを、事前に定義された回路設
    計要素として使用するために、グラフィックディスプレ
    イモニタの前記第1領域に表示するステップと、 前記マクロが回路設計要素として選択された場合に、前
    記変数の属性を割り当てるステップとをさらに有するこ
    とを特徴とする請求項25の方法。
  28. 【請求項28】 導出された要素を定義するステップ
    と、 前記複数のアイコンのうちの1つを選択するステップ
    と、 前記事前に定義された電子回路設計要素のいくつかの属
    性を割り当て、それらの属性を定数として指定するステ
    ップと、 前記導出された要素を表すアイコンを、事前に定義され
    た回路要素として使用するために、グラフィックディス
    プレイモニタの前記第1領域に表示するステップとをさ
    らに有することを特徴とする請求項25の方法。
JP6254107A 1993-09-27 1994-09-26 回路合成システム Pending JPH07152806A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12756493A 1993-09-27 1993-09-27
US127564 1993-09-27

Publications (1)

Publication Number Publication Date
JPH07152806A true JPH07152806A (ja) 1995-06-16

Family

ID=22430752

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6254107A Pending JPH07152806A (ja) 1993-09-27 1994-09-26 回路合成システム

Country Status (4)

Country Link
US (1) US5594657A (ja)
EP (1) EP0645723A3 (ja)
JP (1) JPH07152806A (ja)
CA (1) CA2126265A1 (ja)

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5477165A (en) 1986-09-19 1995-12-19 Actel Corporation Programmable logic module and architecture for field programmable gate array device
US5734866A (en) * 1995-07-18 1998-03-31 Xilinx Inc Set of functions for mapping into cell based integrated circuits with fixed number of inputs
US5774368A (en) * 1995-10-20 1998-06-30 Motorola, Inc. Controller structure template and method for designing a controller structure
US5742504A (en) * 1995-11-06 1998-04-21 Medar, Inc. Method and system for quickly developing application software for use in a machine vision system
US5815405A (en) * 1996-03-12 1998-09-29 Xilinx, Inc. Method and apparatus for converting a programmable logic device representation of a circuit into a second representation of the circuit
US5761078A (en) * 1996-03-21 1998-06-02 International Business Machines Corporation Field programmable gate arrays using semi-hard multicell macros
US6023565A (en) * 1996-03-29 2000-02-08 Xilinx, Inc. Method for configuring circuits over a data communications link
US5949983A (en) * 1996-04-18 1999-09-07 Xilinx, Inc. Method to back annotate programmable logic device design files based on timing information of a target technology
US5966516A (en) * 1996-05-17 1999-10-12 Lucent Technologies Inc. Apparatus for defining properties in finite-state machines
KR20000016513A (ko) * 1996-06-10 2000-03-25 콜린 엘. 엠. 멕넵 프로그램가능 게이트 어레이 내의 연속 회로 중 한 회로를컴파일하는 방법 및 장치
US6205579B1 (en) * 1996-10-28 2001-03-20 Altera Corporation Method for providing remote software technical support
US5946219A (en) * 1996-10-30 1999-08-31 Atmel Corporation Method and system for configuring an array of logic devices
US6120549A (en) * 1997-01-06 2000-09-19 Xilinx, Inc. Method and apparatus for generating optimized functional macros
US5946478A (en) * 1997-05-16 1999-08-31 Xilinx, Inc. Method for generating a secure macro element of a design for a programmable IC
US6078736A (en) * 1997-08-28 2000-06-20 Xilinx, Inc. Method of designing FPGAs for dynamically reconfigurable computing
US5870309A (en) * 1997-09-26 1999-02-09 Xilinx, Inc. HDL design entry with annotated timing
US5949690A (en) * 1997-09-26 1999-09-07 Xilinx, Inc. Schematic design entry with annotated timing
US6212650B1 (en) * 1997-11-24 2001-04-03 Xilinx, Inc. Interactive dubug tool for programmable circuits
US6182268B1 (en) * 1998-01-05 2001-01-30 Synplicity, Inc. Methods and apparatuses for automatic extraction of finite state machines
US6216258B1 (en) * 1998-03-27 2001-04-10 Xilinx, Inc. FPGA modules parameterized by expressions
US6243851B1 (en) 1998-03-27 2001-06-05 Xilinx, Inc. Heterogeneous method for determining module placement in FPGAs
US6292925B1 (en) 1998-03-27 2001-09-18 Xilinx, Inc. Context-sensitive self implementing modules
US6430732B1 (en) 1998-03-27 2002-08-06 Xilinx, Inc. Method for structured layout in a hardware description language
US6237129B1 (en) 1998-03-27 2001-05-22 Xilinx, Inc. Method for constraining circuit element positions in structured layouts
US6260182B1 (en) * 1998-03-27 2001-07-10 Xilinx, Inc. Method for specifying routing in a logic module by direct module communication
US6219819B1 (en) 1998-06-26 2001-04-17 Xilinx, Inc. Method for verifying timing in a hard-wired IC device modeled from an FPGA
US6549943B1 (en) * 1999-06-16 2003-04-15 Cisco Technology, Inc. Network management using abstract device descriptions
US6631510B1 (en) 1999-10-29 2003-10-07 Altera Toronto Co. Automatic generation of programmable logic device architectures
US6756811B2 (en) * 2000-03-10 2004-06-29 Easic Corporation Customizable and programmable cell array
DE10025583A1 (de) * 2000-05-24 2001-12-06 Infineon Technologies Ag Verfahren zur Optimierung integrierter Schaltungen, Vorrichtung zum Entwurf von Halbleitern und Programmobjekt zum Entwerfen integrierter Schaltungen
US6721937B2 (en) 2000-06-06 2004-04-13 Fujitsu Network Communications, Inc. Method and system for automated processor register instantiation
US6510546B1 (en) 2000-07-13 2003-01-21 Xilinx, Inc. Method and apparatus for pre-routing dynamic run-time reconfigurable logic cores
US7653710B2 (en) 2002-06-25 2010-01-26 Qst Holdings, Llc. Hardware task manager
US6836839B2 (en) 2001-03-22 2004-12-28 Quicksilver Technology, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US7400668B2 (en) * 2001-03-22 2008-07-15 Qst Holdings, Llc Method and system for implementing a system acquisition function for use with a communication device
US7752419B1 (en) 2001-03-22 2010-07-06 Qst Holdings, Llc Method and system for managing hardware resources to implement system functions using an adaptive computing architecture
US7249242B2 (en) * 2002-10-28 2007-07-24 Nvidia Corporation Input pipeline registers for a node in an adaptive computing engine
US7962716B2 (en) 2001-03-22 2011-06-14 Qst Holdings, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US7489779B2 (en) * 2001-03-22 2009-02-10 Qstholdings, Llc Hardware implementation of the secure hash standard
US6577678B2 (en) 2001-05-08 2003-06-10 Quicksilver Technology Method and system for reconfigurable channel coding
US6976239B1 (en) 2001-06-12 2005-12-13 Altera Corporation Methods and apparatus for implementing parameterizable processors and peripherals
US6912706B1 (en) 2001-08-15 2005-06-28 Xilinx, Inc. Instruction processor and programmable logic device cooperative computing arrangement and method
US7046635B2 (en) * 2001-11-28 2006-05-16 Quicksilver Technology, Inc. System for authorizing functionality in adaptable hardware devices
US8412915B2 (en) * 2001-11-30 2013-04-02 Altera Corporation Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements
US6986021B2 (en) 2001-11-30 2006-01-10 Quick Silver Technology, Inc. Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements
US7602740B2 (en) * 2001-12-10 2009-10-13 Qst Holdings, Inc. System for adapting device standards after manufacture
US7215701B2 (en) 2001-12-12 2007-05-08 Sharad Sambhwani Low I/O bandwidth method and system for implementing detection and identification of scrambling codes
US7088825B2 (en) * 2001-12-12 2006-08-08 Quicksilver Technology, Inc. Low I/O bandwidth method and system for implementing detection and identification of scrambling codes
US7231508B2 (en) * 2001-12-13 2007-06-12 Quicksilver Technologies Configurable finite state machine for operation of microinstruction providing execution enable control value
US7352694B1 (en) * 2001-12-14 2008-04-01 Applied Micro Circuits Corporation System and method for tolerating data link faults in a packet communications switch fabric
US8418129B1 (en) 2001-12-14 2013-04-09 Qualcomm Incorporated Method for automatically generating code to define a system of hardware elements
US7403981B2 (en) 2002-01-04 2008-07-22 Quicksilver Technology, Inc. Apparatus and method for adaptive multimedia reception and transmission in communication environments
US7493375B2 (en) 2002-04-29 2009-02-17 Qst Holding, Llc Storage and delivery of device features
US7328414B1 (en) * 2003-05-13 2008-02-05 Qst Holdings, Llc Method and system for creating and programming an adaptive computing engine
US7660984B1 (en) 2003-05-13 2010-02-09 Quicksilver Technology Method and system for achieving individualized protected space in an operating system
US8108656B2 (en) 2002-08-29 2012-01-31 Qst Holdings, Llc Task definition for specifying resource requirements
US7937591B1 (en) 2002-10-25 2011-05-03 Qst Holdings, Llc Method and system for providing a device which can be adapted on an ongoing basis
US8276135B2 (en) 2002-11-07 2012-09-25 Qst Holdings Llc Profiling of software and circuit designs utilizing data operation analyses
US7478031B2 (en) 2002-11-07 2009-01-13 Qst Holdings, Llc Method, system and program for developing and scheduling adaptive integrated circuity and corresponding control or configuration information
US7225301B2 (en) 2002-11-22 2007-05-29 Quicksilver Technologies External memory controller node
US7143376B1 (en) * 2003-03-04 2006-11-28 Xilinx, Inc. Method and apparatus for design verification with equivalency check
US7609297B2 (en) * 2003-06-25 2009-10-27 Qst Holdings, Inc. Configurable hardware based digital imaging apparatus
US7200837B2 (en) * 2003-08-21 2007-04-03 Qst Holdings, Llc System, method and software for static and dynamic programming and configuration of an adaptive computing architecture
US7171633B1 (en) 2003-12-12 2007-01-30 Altera Corporation Estimating quality during early synthesis
US7100141B1 (en) 2003-12-23 2006-08-29 Altera Corporation Technology mapping technique for fracturable logic elements
DE102005044728A1 (de) * 2005-09-19 2007-03-29 Silicon Software Gmbh Programmierung und Layoutdesign von Hardware
US20070139074A1 (en) * 2005-12-19 2007-06-21 M2000 Configurable circuits with microcontrollers
CN101303849B (zh) * 2007-05-11 2011-10-26 深圳迈瑞生物医疗电子股份有限公司 一种可重叠的任意形状稀疏图形快速无闪烁显示方法和装置
US8321823B2 (en) * 2007-10-04 2012-11-27 Carnegie Mellon University System and method for designing architecture for specified permutation and datapath circuits for permutation
US20100287571A1 (en) * 2009-05-07 2010-11-11 Cypress Semiconductor Corporation Development, programming, and debugging environment
KR101814221B1 (ko) 2010-01-21 2018-01-02 스비랄 인크 스트림 기반 계산을 구현하기 위한 범용 다중 코어 시스템을 위한 방법 및 장치
US8185850B1 (en) * 2010-03-23 2012-05-22 Xilinx, Inc. Method of implementing a circuit design using control and data path information
RU2011107568A (ru) * 2011-03-01 2012-09-10 ЭлЭсАй Корпорейшн (US) Устройство (варианты) и способ генерирования конструкции комбинационного умножителя конечного поля малой глубины
WO2013069914A1 (ko) * 2011-11-07 2013-05-16 엘지전자 주식회사 제어 장치, 제어 타겟 장치 및 이들의 컨텐트 정보 전송 방법
WO2013069913A1 (ko) * 2011-11-08 2013-05-16 엘지전자 주식회사 제어 장치, 제어 타겟 장치 및 이들의 컨텐트 정보 전송 방법

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4656603A (en) * 1984-03-01 1987-04-07 The Cadware Group, Ltd. Schematic diagram generating system using library of general purpose interactively selectable graphic primitives to create special applications icons
US4813013A (en) * 1984-03-01 1989-03-14 The Cadware Group, Ltd. Schematic diagram generating system using library of general purpose interactively selectable graphic primitives to create special applications icons
US5050091A (en) * 1985-02-28 1991-09-17 Electric Editor, Inc. Integrated electric design system with automatic constraint satisfaction
US4914568A (en) * 1986-10-24 1990-04-03 National Instruments, Inc. Graphical system for modelling a process and associated method
US4964056A (en) * 1987-03-25 1990-10-16 Hitachi, Ltd. Automatic design system of logic circuit
US4922432A (en) * 1988-01-13 1990-05-01 International Chip Corporation Knowledge based method and apparatus for designing integrated circuits using functional specifications
US5197016A (en) * 1988-01-13 1993-03-23 International Chip Corporation Integrated silicon-software compiler
ATE265712T1 (de) * 1988-10-05 2004-05-15 Quickturn Design Systems Inc Verfahren zur verwendung einer elektronisch wiederkonfigurierbaren gatterfeld-logik und dadurch hergestelltes gerät
US4965741A (en) * 1988-10-17 1990-10-23 Ncr Corporation Method for providing an improved human user interface to a knowledge based system
US5140526A (en) * 1989-01-06 1992-08-18 Minc Incorporated Partitioning of Boolean logic equations into physical logic devices
US5111413A (en) * 1989-03-24 1992-05-05 Vantage Analysis Systems, Inc. Computer-aided engineering
US5019961A (en) * 1989-04-05 1991-05-28 Cadware, Inc. Computer apparatus and method for logical modelling
US5187788A (en) * 1989-05-01 1993-02-16 The United States Of America As Represented By The Secretary Of The Air Force Graphics system for automatic computer code generation
US5448493A (en) * 1989-12-20 1995-09-05 Xilinx, Inc. Structure and method for manually controlling automatic configuration in an integrated circuit logic block array
US5367468A (en) * 1990-02-21 1994-11-22 Kabushiki Kaisha Toshiba Design aid method and design aid apparatus for integrated circuits
US5128871A (en) * 1990-03-07 1992-07-07 Advanced Micro Devices, Inc. Apparatus and method for allocation of resoures in programmable logic devices
US5222030A (en) * 1990-04-06 1993-06-22 Lsi Logic Corporation Methodology for deriving executable low-level structural descriptions and valid physical implementations of circuits and systems from high-level semantic specifications and descriptions thereof
US5220512A (en) * 1990-04-19 1993-06-15 Lsi Logic Corporation System for simultaneous, interactive presentation of electronic circuit diagrams and simulation data
US5224056A (en) * 1991-10-30 1993-06-29 Xilinx, Inc. Logic placement using positionally asymmetrical partitioning algorithm
US5377318A (en) * 1991-02-28 1994-12-27 Hewlett-Packard Company Line probe diagnostic display in an iconic programming system
DE69227144T2 (de) * 1991-05-10 1999-03-18 Kabushiki Kaisha Toshiba, Kawasaki, Kanagawa Programmierbare logische Einheit
US5282147A (en) * 1991-08-02 1994-01-25 International Business Machines Corporation Method and apparatus for optimizing a logic network
US5337255A (en) * 1991-10-30 1994-08-09 Xilinx, Inc. Method for implementing set/reset synchronously or asynchronously in a programmable logic device

Also Published As

Publication number Publication date
CA2126265A1 (en) 1995-03-28
EP0645723A3 (en) 1996-12-27
US5594657A (en) 1997-01-14
EP0645723A2 (en) 1995-03-29

Similar Documents

Publication Publication Date Title
US5594657A (en) System for synthesizing field programmable gate array implementations from high level circuit descriptions
US5499192A (en) Method for generating logic modules from a high level block diagram
US6366874B1 (en) System and method for browsing graphically an electronic design based on a hardware description language specification
US6321369B1 (en) Interface for compiling project variations in electronic design environments
US5841663A (en) Apparatus and method for synthesizing integrated circuits using parameterized HDL modules
JP3027009B2 (ja) 設計取り込みシステム
US7831938B2 (en) Interactive interface resource allocation in a behavioral synthesis tool
US5737234A (en) Method of optimizing resource allocation starting from a high level block diagram
US6529913B1 (en) Database for electronic design automation applications
JP2001504958A (ja) ロジックデバイスのアレイを構成するための方法およびシステム
US7069521B2 (en) Method and apparatus for exploring a multi-element design through user directed selective rendering
US6378114B1 (en) Method for the physical placement of an integrated circuit adaptive to netlist changes
US4954953A (en) Machine process for converting one representation of an electronic integrated circuit into another representation
US7000206B2 (en) Timing path detailer
US6324680B1 (en) Synthesis of arrays and records
Hsiao et al. High‐performance Multiplexer‐based Logic Synthesis Using Pass‐transistor Logic
US7263673B1 (en) Method and apparatus for automated synthesis and optimization of datapaths
US5740070A (en) Apparatus for automatically generating logic circuit
US7562328B1 (en) Navigation tool for connectors
US6877140B1 (en) Method and system for generating a schematic representing bus structures
US8136061B2 (en) Method of logic circuit synthesis and design using a dynamic circuit library
Chowdhary et al. A methodology for synthesis of data path circuits
Ortega Cisneros et al. Introduction to OpenLane
Rath et al. Specification and synthesis of bounded indirection,"
Awin On the VLSI Implementation of High Throughput Low Power Design of Pipeline Cellular Array