(57)【特許請求の範囲】
【請求項１】
実行時に、データ処理システムが、
第１マルチプレクサの表現を受け取るステップと、
前記第１マルチプレクサの表現を前記第１マルチプレクサのパーティションニュートラル表現へと分解するステップであって、前記パーティションニュートラル表現は、（ａ）複数の３状態ドライバ、（ｂ）ワイヤードＯＲアレイ、又は（ｃ）ワイヤードＡＮＤアレイの１つを含む、前記分解するステップと、
少なくとも１つの集積回路の部分の間で前記第１マルチプレクサのパーティションニュートラル表現をパーティション化して、前記パーティションニュートラル表現から複数の第２マルチプレクサを生成し、集積回路の第１の部分に前記複数の第２マルチプレクサの１つを配置し、集積回路の第２の部分に前記複数の第２マルチプレクサの他の１つを配置するステップと、
を備えた方法を遂行するようにさせる実行可能なプログラムインストラクションを含むマシン読み取り可能な記憶媒体。
【請求項２】
前記複数の第２マルチプレクサは、第１サブセットのマルチプレクサ及び第２サブセットのマルチプレクサを含み、第１サブセットのマルチプレクサは、集積回路（ＩＣ）の第１部分に配置されるように設計されると共に、第２サブセットのマルチプレクサは、ＩＣの第２部分に配置されるように設計され、第１サブセットは、１つ以上のマルチプレクサを含み、そして第２サブセットは、１つ以上のマルチプレクサを含む、請求項１に記載の記憶媒体。
【請求項３】
前記第１マルチプレクサの表現は、ＲＴＬネットリスト内のレジスタ転送レベル（ＲＴＬ）形態にあり、そして前記変換は、自動的に遂行される、請求項１に記載の記憶媒体。
【請求項４】
前記方法は、前記第１マルチプレクサのデコードロジックを複製するステップを更に備えた、請求項１に記載の記憶媒体。
【請求項５】
第１マルチプレクサの表現を受け取るステップと、
前記第１マルチプレクサの表現を前記第１マルチプレクサのパーティションニュートラル表現へと分解するステップであって、前記パーティションニュートラル表現は、（ａ）複数の３状態ドライバ、（ｂ）ワイヤードＯＲアレイ、又は（ｃ）ワイヤードＡＮＤアレイの１つを含む、前記分解するステップと、
少なくとも１つの集積回路の部分の間で前記第１マルチプレクサのパーティションニュートラル表現をパーティション化して、前記パーティションニュートラル表現から複数の第２マルチプレクサを生成し、集積回路の第１の部分に前記複数の第２マルチプレクサの１つを配置し、集積回路の第２の部分に前記複数の第２マルチプレクサの他の１つを配置するステップと、
を備えたマシン具現化方法。
【請求項６】
第１マルチプレクサの表現を受け取る手段と、
前記第１マルチプレクサの表現を前記第１マルチプレクサのパーティションニュートラル表現へと分解する手段であって、前記パーティションニュートラル表現は、（ａ）複数の３状態ドライバ、（ｂ）ワイヤードＯＲアレイ、又は（ｃ）ワイヤードＡＮＤアレイの１つを含む、前記分解する手段と、
少なくとも１つの集積回路の部分の間で前記第１マルチプレクサのパーティションニュートラル表現をパーティション化して、前記パーティションニュートラル表現から複数の第２マルチプレクサを生成し、集積回路の第１の部分に前記複数の第２マルチプレクサの１つを配置し、集積回路の第２の部分に前記複数の第２マルチプレクサの他の１つを配置する手段と、
を備えたマシン。
【請求項７】
実行時に、データ処理システムが、
出力を有する第１マルチプレクサの表現を受け取るステップと、
前記第１マルチプレクサの表現を第２マルチプレクサの複数の表現へと分解するステップであって、第２マルチプレクサは、前記第１マルチプレクサの出力に一致する共通出力において、第２マルチプレクサとその共通の出力との間にマルチプレクサを介在せずに、一緒に結合されるようなステップと、
前記第２マルチプレクサを少なくとも１つの集積回路の部分と部分との間でパーティション化し、集積回路の第１の部分に前記複数の第２マルチプレクサの１つを配置し、集積回路の第２の部分に前記複数の第２マルチプレクサの他の１つを配置するステップと、
を備えた方法を遂行するようにさせる実行可能なプログラムインストラクションを含むマシン読み取り可能な記憶媒体。
【請求項８】
前記第２マルチプレクサの複数の表現は、前記第１マルチプレクサのパーティションニュートラル形態である、請求項７に記載の記憶媒体。
【請求項９】
出力を有する第１マルチプレクサの表現を受け取るステップと、
前記第１マルチプレクサの表現を第２マルチプレクサの複数の表現へと分解するステップであって、第２マルチプレクサは、前記第１マルチプレクサの出力に一致する共通出力において、第２マルチプレクサとその共通の出力との間にマルチプレクサを介在せずに、一緒に結合されるようなステップと、
前記第２マルチプレクサを少なくとも１つの集積回路の部分と部分との間でパーティション化し、集積回路の第１の部分に前記複数の第２マルチプレクサの１つを配置し、集積回路の第２の部分に前記複数の第２マルチプレクサの他の１つを配置するステップと、
を備えたマシン具現化方法。
【請求項１０】
出力を有する第１マルチプレクサの表現を受け取る手段と、
前記第１マルチプレクサの表現を第２マルチプレクサの複数の表現へと分解する手段であって、第２マルチプレクサは、前記第１マルチプレクサの出力に一致する共通出力において、第２マルチプレクサとその共通の出力との間にマルチプレクサを介在せずに、一緒に結合されるような手段と、
前記第２マルチプレクサを少なくとも１つの集積回路の部分と部分との間でパーティション化し、集積回路の第１の部分に前記複数の第２マルチプレクサの１つを配置し、集積回路の第２の部分に前記複数の第２マルチプレクサの他の１つを配置する手段と、
を備えたマシン。
【請求項１１】
実行時に、データ処理システムが、
Ｎ入力加算器であるパーティションニュートラル分解を行うことのできる第１ロジックコンポーネントの表現を受け取るステップと、
前記第１ロジックコンポーネントの表現を、前記Ｎ入力加算器をワイヤーのバスとして表現するパーティションニュートラル表現へと分解するステップと、
少なくとも１つの集積回路の部分の間で前記パーティションニュートラル表現をパーティション化して前記パーティションニュートラル表現から複数のロジックコンポーネントを生成し、集積回路の第１の部分に前記複数のロジックコンポーネントの１つを配置し、集積回路の第２の部分に前記複数のロジックコンポーネントの他の１つを配置し、前記複数のロジックコンポーネントが共に結合されて前記第１ロジックコンポーネントの結果を与えるステップと、
を備えた方法を遂行するようにさせる実行可能なプログラムインストラクションを含むマシン読み取り可能な記憶媒体。
【請求項１２】
前記方法は、前記第１マルチプレクサの選択ラインを駆動するロジックを含むように前記第１マルチプレクサのデコードロジックを拡張することを更に含む、請求項１に記載の記憶媒体。
【請求項１３】
前記拡張は、前記変換の前に行われ、更に、前記拡張は、複製されるべき制御ロジックを定義するようにカットされた信号を含む、請求項１２に記載の記憶媒体。
【請求項１４】
前記第１マルチプレクサの選択ラインを駆動するロジックを含むように前記第１マルチプレクサのデコードロジックを拡張することを更に含む、請求項５に記載の方法。
【請求項１５】
前記拡張は、前記変換の前に行われ、更に、前記拡張は、複製されるべき制御ロジックを定義するようにカットされた信号を含む、請求項１４に記載の方法。
【請求項１６】
前記方法は、各パーティション内のパーティションニュートラル表現をＲＴＬ（レジスタ転送レベル）コンポーネントへと変換することを更に含む、請求項１に記載の記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に、集積回路設計の分野に係り、より詳細には、回路のハードウェア記述言語での記述のような集積回路の記述を使用することで開始する合成プロセスのようなマシン具現化自動プロセスによる集積回路の設計に係る。
【背景技術】
【０００２】
ＶＬＳＩ（超大規模集積）技術の規模で回路を設計する場合、設計者は、コンピュータ支援設計技術をしばしば利用する。複雑なデジタル又はアナログ回路のような複雑な回路の設計及びシミュレーションを支援するように回路を記述するために、ハードウェア記述言語（ＨＤＬ）のような標準言語が開発されている。ＶＨＤＬ及びＶｅｒｉｌｏｇのような多数のハードウェア設計言語が工業標準として進化してきた。ＶＨＤＬ及びＶｅｒｉｌｏｇは、アブストラクトデータ形式を使用して、ゲートレベル、レジスタ転送レベル（ＲＴＬ）又は振舞いレベルでハードウェアモデルを定義できるようにする汎用ハードウェア記述言語である。装置技術が進歩し続けるにつれて、より新しい装置及び設計スタイルで使用するようにＨＤＬを適応させるために種々の製品設計ツールが開発されている。
【０００３】
ＨＤＬコンパイラーを使用して回路を設計するときに、設計者は、ＨＤＬソースコードで回路エレメントを記述し、次いで、ソースコードをコンパイルして、合成ＲＴＬネットリストを作成することがしばしばある。ＲＴＬネットリストは、回路エレメントの概略表現に対応する。合成回路エレメントを含む回路は、タイミング関係を改善し且つ不必要な又は冗長なエレメントを排除するようにしばしば最適化される。このような最適化は、典型的に、異なるゲート形式に置き換えるか、或いは回路内でゲートを結合し排除することを含む。ＲＴＬネットリストのようなＲＴＬ記述を、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）のターゲットアーキテクチャーのような集積回路の特定の所定アーキテクチャーへマッピングする前に、最適化を行うことができる。この技術で知られているように、ＦＰＧＡの異なるベンダーは、ファンクションを具現化するための特定の集積回路がベンダーごとに相違し得るという点で、しばしば異なるアーキテクチャーを有する。独特のアーキテクチャーを有するＦＰＧＡのベンダーは、例えば、Ｘｉｌｉｎｘ及びＡｌｔｅｒａである。集積回路のコンピュータ支援設計のための種々の方法及びシステムが米国特許第６，４３８，７３５号、第６，４４９，７６２号、及び第６，９７３，６３２号に説明されており、これらは、全て、参考としてここに援用する。
【０００４】
２つ以上のＦＰＧＡ集積回路のような２つ以上の集積回路で設計を具現化することがしばしば望まれる。これは、単一のＦＰＧＡ上の利用可能なリソースには適合できないほど設計が複雑で且つ大規模なときにしばしば必要となる。又、これは、ＡＳＩＣ（特定用途向け集積回路）の設計にも有用である。益々多くのＡＳＩＣ設計者が、多数のＦＰＧＡで設計を具現化することにより、それらの設計をしばしば試作しテストしている。ＡＳＩＣ設計の複雑さは、設計に必要な全てのファンクションを具現化するのに多数のＦＰＧＡが要求されることもある程である。これは、設計者がそれらの設計を多数のＦＰＧＡにパーティション化するよう努力しなければならないことを意味し、これを行うために従来技術には多数のツール及び方法が存在する。自動プロセスを通じてパーティション化するための技術が、例えば、米国特許第６，４３８，７３５号に説明されており、これは、設計を複数のＦＰＧＡへパーティション化するための他の従来技術も説明している。ＲＴコンポーネントレベルで自動パーティション化を遂行するソフトウェアツールは、例えば、カリフォルニア州サニーベールのシンプリシティ社からの製品Ｃｅｒｔｉｆｙである。技術的にマップされたネットリストレベルで自動パーティション化を遂行するツールは、例えば、オースピー・デベロープメント社からのＡｕｓｐｙ  Ｐａｒｔｉｔｉｏｎ  Ｓｙｓｔｅｍ  IIである。
【０００５】
パーティション化のための既存の技術でも、大きな幅を有し且つ潜在的に多数の入力があってその１つが選択されて出力となるようなマルチプレクサ（ＭＵＸ）をパーティション化することは困難である。マルチプレクサは、良く知られた回路エレメントであり、マルチプレクサの一例が図１Ａに示されている。図１Ａは、クロックされたデータをマルチプレクサ２０の入力１６及び１８へと駆動させるデータドライバ１２及び１４を備えた回路１０を示す。マルチプレクサ２０への入力は、２つ以上あってもよいことが明らかである。例えば、データドライバによりマルチプレクサ２０へ各々駆動される２０個の入力があってもよい。マルチプレクサ２０は、その出力２２に出力値を発生し、この出力値は、マルチプレクサがその出力２２へ接続するために入力の１つを選択するようにさせる選択ライン２４に生じるデータにより決定される。
【０００６】
大きなマルチプレクサをパーティション化するには、典型的に、少なくとも３つの小さなマルチプレクサを生成する必要がある。これら小さなマルチプレクサの２つは、２つの異なる入力グループから各々１つの入力を選択する（２つの選択された入力を発生する）ように作用し、それら２つの選択された入力は、次いで、第３のマルチプレクサにより選択される。図１Ｂ及び１Ｃは、大きなマルチプレクサを３つの小さなマルチプレクサへとパーティション化する一例を示す。
【０００７】
図１Ｂに示す設計３０の場合には、マルチプレクサは、２つの異なる集積回路３２及び３４において３つのマルチプレクサ４０、４２及び４４へとパーティション化されている。２つの異なる集積回路上のマルチプレクサは、マルチラインバス６４及びワイヤ６６により一緒に結合される。マルチプレクサ４０及び４４は、実際には、オリジナルマルチプレクサへの２つの異なる入力グループ間を選択して、２つの出力を与え、これらの出力がマルチプレクサ４２によって選択される。各マルチプレクサは、この技術で知られたようにマルチプレクサの対応出力へ接続されるべき入力を選択する選択ロジック又は選択ラインの制御のもとにある。選択ラインは、典型的に、この技術で知られたように、デコードロジックによって駆動される。図１Ｂに示すように、ロジック５０及び５６は、マルチプレクサ４０へ入力を与え、一方、ロジック５４は、バス６２（複数のラインを含む）を経て、マルチプレクサ４４へ入力を与える。又、マルチプレクサ４４は、バス６１（複数のラインを含む）から別の入力も受け取る。ロジック５０は、バス６０を通してマルチプレクサ４０へ結合され、そしてロジック５６は、バス６４を通してマルチプレクサ４０へ結合される。マルチプレクサ４０の出力は、マルチプレクサ４２の入力の１つへ結合され、そしてマルチプレクサ４４の出力は、マルチプレクサ４２の他方の入力として結合され、このマルチプレクサは、これら２つの入力間を選択して、ライン２２を経てその出力を駆動し、ロジック５２を駆動する。マルチプレクサ４０、４２及び４４の各々に対して、各データ入力及び各データ出力はバス（複数のラインを含む）であり、そしてマルチプレクサによるスイッチングは、入力バス間を切り換える。図１Ｂに示す例は、種々のロジックエレメント及びマルチプレクサを２つ以上の集積回路間に配列し又はパーティション化する種々の仕方の１つであることが明らかであろう。しかしながら、各々の場合に、パーティション化されたマルチプレクサにより具現化されるロジックを保存するために、マルチプレクサ４２を駆動する入力を、マルチプレクサ４２に対して一緒にグループ編成しなければならない。換言すれば、マルチプレクサ４２を駆動する入力は、マルチプレクサ４０又は４４を駆動するのに使用できず、むしろ、パーティション化されたマルチプレクサの適切な論理的ファンクションを維持してオリジナルマルチプレクサと同じ論理的マルチプレクシングを与えるためにはマルチプレクサツリーにおける最後のマルチプレクサを駆動するのに使用されねばならない。図１Ｃは、複数の集積回路の複雑さを伴わずにこの関係を示している。特に、入力７０及び７２は、マルチプレクサ４４によりパーティション化されねばならない。ここでは、例えば、入力７０及び７１のためのドライバは、マルチプレクサ４４でパーティション化されねばならない。これは、パーティション化動作を複雑化する傾向がある。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
チップへのパーティション化の前に大きなマルチプレクサを含む回路においてロジック合成が遂行される場合には、それにより得られる回路が、ロジック合成システムによって選択されるマルチプレクサ分解に基づきマルチプレクサのドライバをグループ編成する。多数の異なる分解が考えられ、即ち小さなマルチプレクサのツリー、アンド・オア分解、及びＦＰＧＡ特定コンポーネントを使用した特殊目的分解が考えられる。分解されたマルチプレクサがチップにわたってパーティション化される場合は、選択される分解により、パーティション間の過剰な相互接続使用が生じ得る。他方、マルチプレクサが分解される前にパーティション化が行われる場合は、マルチプレクサに接続される全ての信号が単一のチップ内で使用できねばならず、これも、パーティション間に過剰な相互接続を引き起こすことになる。部分的な解決策は、マルチプレクサコンポーネントを単一ビット巾のマルチプレクサへスライスすることである。この部分的解決策は、Ｃｅｒｔｉｆｙで具現化されている。これは、多数の入力をもつマルチプレクサをパーティション化する上で助けとならず、又、スライスにわたり共有されるマルチプレクサのためのデコーディングロジックに伴う異なるパーティション化の問題を生じさせる。従って、マルチプレクサの分解及びパーティション化の同時解決策が必要とされる。
【課題を解決するための手段】
【０００９】
本発明は、集積回路を設計するための方法及び装置を開示する。本発明の１つの態様によれば、集積回路を設計するためのここに例示する方法は、第１マルチプレクサの表現を受け取り、その第１マルチプレクサの表現を第１マルチプレクサのパーティションニュートラル表現へと変換し、そしてその第１マルチプレクサのパーティションニュートラル表現をパーティション化して、複数の第２マルチプレクサを生成することを含む。一実施形態の１つの具現化において、複数の第２マルチプレクサは、第１サブセットのマルチプレクサ及び第２サブセットのマルチプレクサを含み、第１サブセットのマルチプレクサは、第１集積回路に配置されるように設計されると共に、第２サブセットのマルチプレクサは、第２集積回路に配置されるように設計され、第１サブセットは、１つ以上のマルチプレクサを含み、そして第２サブセットは、１つ以上のマルチプレクサを含む。他の具現化において、複数の第２マルチプレクサは、第１サブセットのマルチプレクサ及び第２サブセットのマルチプレクサを含み、第１サブセットのマルチプレクサは、集積回路の第１部分に配置されるように設計されると共に、第２サブセットのマルチプレクサは、集積回路の第２部分に配置されるように設計される。第１マルチプレクサの表現は、ＲＴＬネットリスト内のレジスタ転送レベル（ＲＴＬ）形態にあり、そして変換は、人間の介在なしにマシンにより自動的に遂行される。少なくとも幾つかの実施形態において、パーティションニュートラル表現は、（ａ）複数の３状態ドライバ、（ｂ）ワイヤードＯＲアレイ、又は（ｃ）ワイヤードＡＮＤアレイ、の１つ以上を含む。少なくとも幾つかの実施形態において、この方法は、更に、集積回路の記述をＨＤＬでコンパイルして第１マルチプレクサの表現を生成することを含み、そしてこの方法は、更に、第２マルチプレクサの選択ラインを与えるために第１マルチプレクサのデコードロジックを複製することを含む。
【００１０】
本発明の別の態様によれば、ここに例示する方法は、出力を有する第１マルチプレクサの表現を受け取り、第１マルチプレクサの表現を第２マルチプレクサの複数の表現へと分解し、第２マルチプレクサは、第１マルチプレクサの出力に一致する共通出力において、第２マルチプレクサとその共通の出力との間にマルチプレクサを介在せずに、一緒に結合され、そして第２マルチプレクサを少なくとも１つの集積回路の部分間でパーティション化することを含む。少なくとも幾つかの実施形態では、第２マルチプレクサの複数の表現は、第１マルチプレクサのパーティションニュートラル形態である。パーティション化は、複数の集積回路間で行われてもよいし、又は同じ集積回路の間取り部分のような異なる部分間で行われてもよい。少なくとも幾つかの実施形態では、第１マルチプレクサの表現は、ＲＴＬネットリスト内のレジスタ転送レベル形態にあり、そして分解は、人間の介在なしにマシンにより自動的に遂行される。少なくとも幾つかの実施形態において、第２マルチプレクサの複数の表現は、（ａ）複数の３状態ドライバ、（ｂ）ワイヤードＯＲアレイ、又は（ｃ）ワイヤードＡＮＤアレイ、の１つ以上の形態にある。本発明の幾つかの実施形態は、マルチプレクサに関して説明するが、パーティションニュートラル分解を受け容れるいかなるコンポーネントに適用することもできる。例えば、Ｎ入力の加算器は、そのドライバの値を加算するワイヤのアブストラクトバスとして表現することができる。Ｎが２より大きいとすれば、Ｎ入力の加算器は、パーティション化の前にこのようなバスへと分解される。パーティション化の後に、加算器の複数の入力が同じパーティションにある場合には、これらの入力がＭ入力ＲＴＬ加算器へとリフォームされ、ここで、Ｍは、そのパーティションにおけるオリジナル加算器入力の数である。加算器の推定エリアをそのドライバへ分配することにより、パーティション化のためのエリアの良好な近似をなすことができる。パーティション化ソフトウェアは、最終的な和が生じる行先パーティションにおいて入力カウントを考慮するために若干の変更を必要とする。というのは、それが、ソースパーティションの出力カウントの和に等しい入力カウントを有するからである。マルチプレクサのパーティション化と同様に、同時の分解及びパーティション化解決策は、ワイヤ本数を著しく減少することができる。
【００１１】
又、本発明は、本発明の１つ以上の実施形態に基づいて集積回路を設計することのできるデジタル処理システムのような装置も開示する。又、本発明は、データ処理システムのようなマシンがここに述べる１つ以上の方法を実行するようにさせることでここに述べる方法に基づいて集積回路を設計するのに使用できるコンピュータ読み取り可能な媒体又はマシン読み取り可能な媒体のような装置も開示する。
【００１２】
本発明の他の特徴は、添付図面及び以下の詳細な説明から明らかとなろう。
【００１３】
本発明は、同様の要素が同じ参照番号で示された添付図面に一例として示されるが、これに限定されない。
【図面の簡単な説明】
【００１４】
【図１Ａ】マルチプレクサを含む回路の一例を示す。
【図１Ｂ】単一のマルチプレクサを複数のマルチプレクサへパーティション化することにより生じる１セットのマルチプレクサの構成例を示す。
【図１Ｃ】１つのマルチプレクサを複数のマルチプレクサへパーティション化することにより生じる１セットのマルチプレクサの別の例を示す。
【図２Ａ】本発明の一実施形態によりパーティション化される前のマルチプレクサの一例を示す。
【図２Ｂ】本発明の一実施形態によるマルチプレクサのパーティションニュートラル形態の一例を示す。
【図２Ｃ】図２Ｂに示されたパーティションニュートラルマルチプレクサをパーティション化した結果の一例を示すもので、図２Ｃに示すパーティションは、２つの集積回路にわたっている。別の実施形態では、パーティションは、同じ集積回路の部分、例えば、同じ集積回路の間取り部分にわたってもよい。
【図３】本発明の一実施形態による方法を例示するフローチャートである。
【図４】本発明の一実施形態によるマシン読み取り可能な媒体の一例を示す。
【図５】本発明の１つ以上の実施形態を具現化するのに使用できるデータ処理システムのブロック図である。
【発明を実施するための形態】
【００１５】
集積回路又は複数の集積回路を設計するための方法及び装置をここに開示する。以下の説明において、説明上、本発明を完全に理解するために多数の特定の細部について述べる。しかしながら、当業者であれば、本発明は、これらの特定の細部を伴わずに実施できることが明らかであろう。他の点について、良く知られた構造、プロセス及び装置は、過度な細部を伴わずに説明をなすために、ブロック図で示すか又は概略を述べる。
【００１６】
本発明の幾つかの実施形態の一般的な例を、図２Ａ、２Ｂ及び２Ｃを参照して、以下に説明する。本発明の多数の実施形態は、ＨＤＬ設計合成ソフトウェアに使用するよう意図されるが、本発明は、必ずしもこのような用途に限定されない。他の言語及びコンピュータプログラムの使用も考えられるが、本発明の実施形態は、ＨＤＬ合成システム、特に、ＦＰＧＡのベンダー特有アーキテクチャーのようなベンダー特有テクノロジー／アーキテクチャーを有する集積回路に使用するように設計されたもの、に関して説明される。しかしながら、本発明のある実施形態は、他の形式の集積回路、例えば、ＡＳＩＣにも使用できることが理解されよう。
【００１７】
図２Ａは、４つの入力２０２を有し且つ出力２０３を与えるマルチプレクサ２０１を示す。動作に際し、マルチプレクサ２０１は、４つの入力のうちの１つを、出力２０３を駆動するのに使用される入力として選択する。特定入力の選択は、この技術で知られたようにデコードロジックにより典型的に駆動される選択ライン２０４の制御のもとにある。本発明の少なくとも幾つかの実施形態によれば、マルチプレクサ２０１は、マルチプレクサのオリジナル表現より容易にパーティション化できる表現を与えるために、単一のマルチプレクサとしてのその初期表現から、そのマルチプレクサのパーティションニュートラル表現へと変換又は分解される。
【００１８】
図２Ｂは、オリジナルマルチプレクサ２０１のパーティションニュートラル表現の一例を示す。この特定のパーティションニュートラル表現は、オリジナルマルチプレクサの出力２０３を与えるために共通の出力において３状態ドライバの出力を結合することにより形成される。３状態ドライバの各々は、オリジナルの４つの入力２０２の１つを受け取り、又、３状態ドライバの各々は、イネーブル入力を含み、これは、対応するデコードロジックに結合される。その対応するデコードロジックは、次いで、デコードロジックに入力を与えるオリジナル選択ライン２０４の全部又はサブセットに結合される。図２Ｂに示すように、３状態ドライバ２１７は、００入力を受け取り、そして３状態ドライバ２１７のイネーブル入力を通してデコードロジック２２５に結合される。同様に、３状態ドライバ２１５は、入力０１を受け取り、そして３状態ドライバ２１５のイネーブル入力を経てデコードロジック２２７に結合される。３状態ドライバ２１３は、１０入力を受け取るように結合され、そして３状態ドライバ２１３のイネーブル入力を経てデコードロジック２２９へ結合され、又、３状態ドライバ２１１は、入力１１に結合されると共に、３状態ドライバ２１１のイネーブル入力を経てデコードロジック２３１にも結合される。全部で４つのこれら３状態ドライバの出力は、一緒に結合されて、出力２０３を与える。
【００１９】
各３状態ドライバのためのデコードロジックは、３状態ドライバの１つだけがその出力を駆動する一方、他の３状態ドライバは、対応するデコードロジックに結合されたイネーブル入力により高インピーダンス状態にセットされるように具現化される。例えば、選択ラインが、マルチプレクサによる出力として００入力を選択すべきであると指定する場合には、デコードロジック２２５は、３状態ドライバ２１７をセットして、３状態ドライバ２１７の入力がその出力、ひいては、出力２０３を駆動するようにする。というのは、他の全ての３状態ドライバ２１５、２１３及び２１１がそれらのイネーブル入力をセットして、それらの出力が高インピーダンス状態になるようにするからである。例えば、デコードロジック２２７は、３状態ドライバ２１５のイネーブル入力が３状態ドライバ２１５の出力を高インピーダンス状態にセットするようにさせる。同様に、デコードロジック２２９及びデコードロジック２３１は、各々、３状態ドライバ２１３及び２１１に対して同様の状態を生じさせる。これは、３状態ドライバ２１７からの出力が、出力２０３を駆動できるようにする。
【００２０】
このパーティションニュートラル設計では、自動設計システムは、入力をマルチプレクサの特定部分と一致させることに関して心配する必要がない。デコードロジックは、従来技術と同様、デコードする入力を考慮し続けねばならないが、これは、従来技術と相違がない。図２Ｂに示す形態のようなこのパーティションニュートラル表現は、異なる集積回路間、又は図２Ｃに示す同じ集積回路の異なる部分間に分散される複数のマルチプレクサへと分解することができる。これらの分散されたマルチプレクサの出力は、オリジナルマルチプレクサの出力に一致する共通出力において、パーティション化されたマルチプレクサとその共通出力との間にマルチプレクサを介在させずに、一緒に結合されることが明らかである。換言すれば、第１レベルのマルチプレクサからの出力とマルチプレクサのツリーからの最終出力との間にマルチプレクサを介在するようなマルチプレクサのツリーはない。これは、ツリーに類似した図１Ｃに示すマルチプレクサのセットを、以下に述べる図２Ｃに示すマルチプレクサのセットと比較することにより、明らかとなる。
【００２１】
図２Ｃは、図２Ｂに示すマルチプレクサのパーティションニュートラル表現を２つの集積回路２５１と２５３との間でパーティション化する一例を示す。３状態ドライバ２１７及び２１５は、それに対応するデコードロジックと共に、集積回路２５１に配置され、そして集積回路２５１のロジック２６１により駆動される。同時に、３状態ドライバ２１３及び２１１は、それに対応するデコードロジックと共に、集積回路２５３に配置され、又、３状態ドライバ２１３及び２１１に入力を与えるロジック２６３も配置される。全部で４つの３状態ドライバの出力は、２つの集積回路の外部で、これら２つの集積回路を結合するプリント回路板（又は他の基板）上のワイヤで一緒に結合されて、出力２０３を与える。この出力は、次いで、設計に基づき、１つ以上の集積回路へ戻されて、付加的なロジックを駆動する。少なくとも幾つかの実施形態では、集積回路の境界に通常存在する３状態ドライバ、例えば、集積回路のボンディングパッドを駆動する３状態ドライバを使用して、マルチプレクサのパーティションニュートラル表現を具現化できることが明らかであろう。特に、種々の集積回路上の充分な入力／出力ピンがこのような用途に利用できる場合には、集積回路の境界の３状態ドライバを使用してパーティションニュートラル表現を形成することができる。
【００２２】
ワイヤードＯＲアレイ又はワイヤードＡＮＤアレイを使用してマルチプレクサのパーティションニュートラル表現を具現化することのできる別のパーティションニュートラル表現もあることが明らかであろう。
【００２３】
マルチプレクサのデコードロジックは、マルチプレクサの制御ラインに供給するロジックを含むように拡張することができる。これは、マルチプレクサの制御ラインに直結される信号の数より手前のロジックを通してカットされる信号が狭いとき、又は新たなカットを他のマルチプレクサと共有できるときに、特に効果的である。従って、この新たな潜在的により狭い又はより多くの共有カットのブール関数により各入力がイネーブルされる。マルチプレクサのパーティションニュートラル分解形態が生成されると、分解の各断片が、必要な制御信号に接続して、ブール関数を桁上げする。ほとんどの場合、制御又はデコードロジックを複数のパーティションへと複製するエリアオーバーヘッドは、パーティション間で送信されねばならない制御信号の数を減少することによりパーティション間の相互接続部に得られる節約よりも重要度が著しく低い。
【００２４】
図３は、本発明の一実施形態による方法の一例を示す。オペレーション３０１において、回路設計の表現が生成される。例えば、表現は、回路設計のＨＤＬ記述を、少なくとも１つのマルチプレクサを含むＲＴＬネットリストへコンパイルすることによって生成される。オペレーション３０３では、マルチプレクサが、マルチプレクサのパーティションニュートラル形態へと変換される。例えば、マルチプレクサは、そのＲＴＬ形態から、３状態ドライバを使用してパーティションニュートラル形態をもつマルチプレクサを生成する形態へと変換される。任意であるが、集積回路の境界にある３状態ドライバを使用して、この形態を具現化してもよい。他の実施形態では、ワイヤードＯＲアレイ又はワイヤードＡＮＤアレイを使用して、マルチプレクサのパーティションニュートラル形態を具現化してもよい。オペレーション３０５において、マルチプレクサのパーティションニュートラル形態は、複数のマルチプレクサへとパーティション化されて、マルチプレクサを、異なる集積回路上に配置するか、又は同じ集積回路の異なる部分、例えば、同じ集積回路の異なる間取りエリアに配置することができるようにする。次いで、オペレーション３０７において、パーティション化されたマルチプレクサに対してデコードロジックが複製される。それに続くオペレーション３０７では、回路の配置及びルーティングが、他のオペレーション、例えば、最適化オペレーションや、ＲＴＬをテクノロジーに依存するアーキテクチャー、例えば、フィールドプログラマブルゲートアレイ集積回路のような集積回路のターゲットアーキテクチャーへとマッピングすることを含むオペレーションと共に、遂行することができる。
【００２５】
図４は、本発明の１つ以上の方法を具現化するのに使用できるマシン読み取り可能な媒体又はコンピュータ読み取り可能な媒体の一例を示す。例えば、マシン読み取り可能な媒体は、データ処理システムにより実行されたときに、データ処理システムが、ここに述べる１つ以上の方法を遂行するようにさせる実行可能なコンピュータプログラムインストラクションを含む。マシン又はコンピュータ読み取り可能な媒体は、ＣＤ−ＲＯＭ又はＤＶＤ−ＲＯＭ又は磁気ハードディスク又は他のディスク或いは記憶装置に配置することができる。媒体は、複数のコンポーネント、及び図４の媒体４００には示されない他のコンポーネントを含んでもよい。図４に示す例では、設計のためのＨＤＬソース記述がコード４０１として示されている。ＨＤＬコンパイラー４０３は、ＨＤＬソースを、例えば、テクノロジーに依存するＲＴＬネットリスト４０５へとコンパイルする実行可能なプログラムインストラクションを含む。パーティション化ルーチン４０７を使用して、設計の種々のコンポーネントが複数の集積回路にわたってパーティション化されるように、テクノロジー独立のＲＴＬネットリストをパーティション化することができる。パーティション化ルーチンは、パーティションニュートラル変換ルーチン４０９を含むか又は呼び出すことができ、このルーチン４０９は、図３に示すような方法を具現化するもので、マルチプレクサのパーティションニュートラル形態を生成し、次いで、その形態を、複数の集積回路にわたって、或いは同じ集積回路の複数の部分、例えば、同じ集積回路の複数の間取り部分にわたって複数のマルチプレクサへとパーティション化することができる。媒体４００は、テクノロジーマッピングルーチン４１３を更に含み、これは、パーティション化されたテクノロジー独立のＲＴＬネットリストから、パーティション化された設計を、テクノロジーに依存するネットリストへとマップし、このネットリストは、次いで、従来の配置及びルーティングツールを通して処理されて、特定集積回路ベンダーのターゲットアーキテクチャー、例えば、ＸｉｌｉｎｘのＦＰＧＡのターゲットアーキテクチャーに対する最終的なネットリスト又は設計を生成することができる。媒体４００は、最適化ルーチン４１１を更に含み、これは、設計を、それがパーティション化された後又はそれがパーティション化される前に、最適化するのに使用できる。
【００２６】
図５は、媒体４００を使用して、ここに述べる１つ以上の方法を遂行することのできるデータ処理システムの一例を示す。データ処理システム５００は、１つ以上のプロセッサ５０１を備え、これは、バス５０７を経てメモリ５０３へ結合される。プロセッサ５０１及びメモリ５０３は、大量記憶装置５０５にも結合され、これは、ハードディスク或いは他の不揮発性又は揮発性記憶装置を表す。一実施形態において、大量記憶装置は、図４に示す媒体４００を含む磁気ハードドライブでよい。又、データ処理システムは、ディスプレイ装置５０９、及び１つ以上の入力装置５１１も備え、入力装置は、例えば、キーボード、カーソル制御装置、及びネットワークインターフェイス、例えば、イーサネットインターフェイス又はワイヤレスインターフェイスを含む。図５に示すデータ処理装置のアーキテクチャーは、例示の目的で設けられたものに過ぎず、本発明に関連して使用されるコンピュータシステム又は他のデータ処理システムは、この特定のアーキテクチャーに限定されないことが明らかであろう。
【００２７】
以上、本発明は、その特定の実施形態を参照して説明された。特許請求の範囲に規定された本発明の広い精神及び範囲から逸脱せずに種々の変更がなされることが明らかであろう。従って、明細書及び添付図面は、例示のためのもので、それに限定するためのものではない。
【符号の説明】
【００２８】
２０１：マルチプレクサ
２０２：入力
２０３：出力
２０４：選択ライン
２１１、２１３、２１５、２１７：３状態ドライバ
２２５、２２７、２２９：デコードロジック
２５１、２５３：集積回路
２６１、２６３：ロジック
４０１：設計のためのＨＤＬソース記述
４０３：ＨＤＬコンパイラー
４０５：テクノロジー独立のＲＴＬネットリスト
４０７：パーティション化ルーチン
４０９：パーティションニュートラル変換ルーチン
４１１：最適化ルーチン
４１３：テクノロジーマッピングルーチン
５０１：プロセッサ
５０３：メモリ
５０５：大量記憶装置
５０７：バス
５０９：ディスプレイ装置
５１１：Ｉ／Ｏ装置
【図１Ａ】
0005384483.tif 000002
【図１Ｂ】
0005384483.tif 000003
【図１Ｃ】
0005384483.tif 000004
【図２Ａ】
0005384483.tif 000005
【図２Ｂ】
0005384483.tif 000006
【図２Ｃ】
0005384483.tif 000007
【図３】
0005384483.tif 000008
【図４】
0005384483.tif 000009
【図５】
0005384483.tif 000010