(57)【要約】      （修正有）【課題】連続的に接続された複数のプログラマブルロジック領域を備えるプログラマブルロジックデバイスをプログラムする装置及び方法を提供する。【解決手段】連続的に接続された複数のプログラマブルロジック領域をプログラムするための初期プログラミングデータを受信するステップ、少なくとも１つの障害のある連続的に接続されたプログラマブルロジック領域の存在と位置に関する変換データを受信するステップ、使用時に連続的に接続されたプログラマブルロジック領域を論理的に不可視状態にするバイパスプログラミングデータを生成するステップ、変換データ内で発見された情報を使用して有効プログラミングデータを生成するステップ、及び少なくとも１つの障害のある連続的に接続されたプログラマブルロジック領域を有効プログラミングデータを使用してプログラマブルロジックデバイスをプログラムするステップを含む。【選択図】図１
2008295046.tif 000002
【特許請求の範囲】
【請求項１】
連続的に接続された複数のプログラマブルロジック領域を備えるプログラマブルロジックデバイスをプログラムする方法であって、
前記連続的に接続された複数のプログラマブルロジック領域をプログラムするための初期プログラミングデータを受信するステップと、
少なくとも１つの障害のある連続的に接続されたプログラマブルロジック領域の存在と位置に関する変換データを受信するステップと、
使用時に１つの連続的に接続されたプログラマブルロジック領域を論理的に不可視状態にするバイパスプログラミングデータを生成するステップと、
前記変換データ内で発見された情報を使用して、前記バイパスプログラミングデータを初期プログラミングデータ内に組み込むことにより、有効プログラミングデータを生成するステップと、
前記少なくとも１つの障害のある連続的に接続されたプログラマブルロジック領域を前記バイパスプログラミングデータでプログラムするために、前記有効プログラミングデータを使用して前記プログラマブルロジックデバイスをプログラムするステップと、
を含む方法。
【請求項２】
前記有効プログラミングデータを生成するステップは、
前記バイパスプログラミングデータを前記初期変換データ内に組み込むべき特定ポイントであって、前記障害のある連続的に接続されたプログラマブルロジック領域の物理的位置に関する特定ポイントを、前記変換データを使用して判断するステップと、
前記特定ポイントで前記バイパスプログラミングデータを前記初期プログラミングデータに挿入するステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記バイパスプログラミングデータを前記初期プログラミングデータに挿入する前記ステップは、
前記バイパスデータが前記初期プログラミングデータに挿入されるまで、前記初期プログラミングデータの受信を停止するステップと、
前記初期プログラミングデータの受信を再開するステップと、
をさらに含む、請求項２に記載の方法。
【請求項４】
前記バイパスプログラミングデータを前記初期プログラミングデータに挿入する前記ステップは、
前記バイパスデータが前記初期プログラミングデータに挿入されるまで、受信初期プログラミングデータをメモリ手段に格納するステップと、
前記メモリ手段内に格納された前記初期プログラミングデータを読み出すステップと、
をさらに含む、請求項２に記載の方法。
【請求項５】
連続的に接続された複数のプログラマブルロジック領域を備えるプログラマブルロジックデバイスをプログラムする装置であって、
前記連続的に接続された複数のプログラマブルロジック領域をプログラムするための初期プログラミングデータを受信するように構成された初期プログラミングデータ受信手段と、
少なくとも１つの障害のある連続的に接続されたプログラマブルロジック領域の存在と位置に関する変換データを受信するように構成された変換データ受信手段と、
使用時に連続的に接続されたプログラマブルロジック領域を論理的に不可視状態にするバイパスプログラミングデータを生成するように構成されたバイパスプログラミングデータ生成手段と、
前記変換データ内で発見された情報を使用して、前記バイパスプログラミングデータを前記初期プログラミングデータ内に組み込むことにより、有効プログラミングデータを生成するように構成された有効プログラミングデータ生成手段と、
前記少なくとも１つの障害のある連続的に接続されたプログラマブルロジック領域を前記バイパスプログラミングデータでプログラムするために、前記有効プログラミングデータを使用して前記プログラマブルロジックデバイスをプログラムするように構成されたプログラマブルロジックデバイスプログラム手段と、
を備える装置。
【請求項６】
前記有効プログラミングデータ生成手段は、
前記バイパスプログラミングデータを前記初期変換データ内に組み込むべき特定ポイントであって、前記障害のある連続的に接続されたプログラマブルロジック領域の物理的位置に関する特定ポイントを、前記変換データを使用して判断するように構成された判断手段と、
前記特定ポイントで前記バイパスプログラミングデータを前記初期プログラミングデータに挿入するように構成された挿入手段と、
をさらに備える、請求項５に記載の装置。
【請求項７】
前記挿入手段は、
前記バイパスデータが前記初期プログラミングデータに挿入されるまで、前記初期プログラミングデータの受信を停止するように構成された停止手段と、
前記初期プログラミングデータの受信を再開するように構成された再開手段と、
をさらに備える、請求項６に記載の装置。
【請求項８】
前記挿入手段は、
前記バイパスデータが前記初期プログラミングデータに挿入されるまで、前記受信初期プログラミングデータを前記メモリ手段に格納するように構成された格納手段と、
前記メモリ手段内に格納された前記初期プログラミングデータを読み出すように構成された読み出し手段と、
をさらに備える、請求項６に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルロジックデバイスにおいてプログラミングデータをローカルに生成するシステムおよび方法に関する。
【背景技術】
【０００２】
半導体デバイスの製造時に、プロセスエラーは回路の一部を使用不可能にする場合がある。この問題に対処するために、初期の製造技術では、完成回路をテストするステップ、および不良回路を廃棄するステップが必要であった。その後、この無駄の多いやり方を改善するために、種々のフォールトトレランスの方法を製造プロセスに導入した。
【０００３】
典型的に、プログラマブルロジックデバイスにフォールトトレランスを付与する方法は、必要な機能回路のサイズを判断するステップと、製造後の任意の不良部分を置き換えるために使用する冗長部分である、予備部を追加するステップとを含む。フォールトトレランスを各デバイスのサイズやコストに追加しても、使用できるデバイスの数（歩留まり）はある程度増加し、使用可能な各デバイスの平均コストは全体的に減少する。
【０００４】
フォールトトレラントシステムの中には、プログラマブルデバイスの繰り返し領域のそれぞれに対してプログラミングインタフェースを有するものもある。障害の位置に関する情報を使用して、障害領域から他の領域にプログラミングデータをリダイレクトする。しかし、この解決策には、プログラミングデータをリダイレクトする予備の専用回路が必要である。この追加のルーティング回路を使うことで、さらにプログラマブルデバイスのサイズやコストを増大させ、使用可能な各デバイスのコストを引き上げることになる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
この問題を克服するために、種々の障害に対処するように調整されたプログラミングデータを作成するステップを含むフォールトトレラント方法が開発された。コンピュータ支援設計（ＣＡＤ）ソフトウェアを使用して、一連の異なるプログラムを作成するためにオリジナルプログラムを変更する。この異なるプログラムの各々は、プログラマブルロジックデバイスの少なくとも１つの領域を避ける設計である。デバイスを製造した時点で、どんな障害も存在と位置を判別するためにテストする。これらのテスト結果に基づいて、次に変更したプログラムのうちの１つを選択して、デバイスをプログラムする。したがって、デバイスのどのような障害領域も使用を避けることが可能である。しかし、この方法は、複数の変更プログラムを事前にプログラムする必要があるだけでなく、製造プロセスの間にこの種の選択を行うことを支援するために、複雑な製造インフラが必要になる。
【０００６】
したがって、専用ルーティング回路の追加が必要でないプログラマブルロジックデバイスに、フォールトトレランスを付与する方法を提供する明確な必要性がある。さらに、プログラミングデータの複数のバージョンを作成する必要がなく、複雑な製造インフラを利用する必要もないプログラマブルロジックデバイスに、フォールトトレランスを付与する方法も必要である。
【課題を解決するための手段】
【０００７】
先行技術に関連する問題を解決するために、本発明は、連続的に接続された複数のプログラマブルロジック領域を備えるプログラマブルロジックデバイスをプログラムする方法を提供するものである。この方法は、連続的に接続された複数のプログラマブルロジック領域をプログラムするための初期プログラミングデータを受信するステップと、少なくとも１つの障害のある連続的に接続されたプログラマブルロジック領域の存在と位置に関する変換データを受信するステップと、使用時に連続的に接続されたプログラマブルロジック領域を論理的に不可視状態にするバイパスプログラミングデータを生成するステップと、変換データ内で発見された情報を使用してバイパスプログラミングデータを初期プログラミングデータ内に組み込むことにより、有効プログラミングデータを生成するステップと、少なくとも１つの障害のある連続的に接続されたプログラマブルロジック領域をバイパスプログラミングデータでプログラムするために、有効プログラミングデータを使用してプログラマブルロジックデバイスをプログラムするステップとを含む。
【０００８】
好適には、さらに有効プログラミングデータを生成するステップは、バイパスプログラミングデータを初期変換データ内に組み込むべき特定ポイントであって、障害のある連続的に接続されたプログラマブルロジック領域の物理的位置に関する特定ポイントを、変換データを使用して判断するステップと、この特定ポイントでバイパスプログラミングデータを初期プログラミングデータに挿入するステップとを含む。
【０００９】
さらにバイパスプログラミングデータを初期プログラミングデータに挿入するステップは、バイパスデータが初期プログラミングデータに挿入されるまで、初期プログラミングデータの受信を停止するステップと、初期プログラミングデータの受信を再開するステップとを含んでもよい。
【００１０】
バイパスプログラミングデータを初期プログラミングデータに挿入するステップはさらに、バイパスデータが初期プログラミングデータに挿入されるまで、受信初期プログラミングデータをメモリ手段に格納するステップと、メモリ手段内に格納された初期プログラミングデータを読み出すステップとを含んでもよい。
【００１１】
本発明は、さらに連続的に接続された複数のプログラマブルロジック領域を備えるプログラマブルロジックデバイスをプログラムする装置を提供するものである。この装置は、連続的に接続された複数のプログラマブルロジック領域をプログラムするための初期プログラミングデータを受信するように構成された初期プログラミングデータ受信手段と、少なくとも１つの障害のある連続的に接続されたプログラマブルロジック領域の存在と位置に関する変換データを受信するように構成された変換データ受信手段と、使用時に連続的に接続されたプログラマブルロジック領域を論理的に不可視状態にするバイパスプログラミングデータを生成するように構成されたバイパスプログラミングデータ生成手段と、変換データ内で発見された情報を使用してバイパスプログラミングデータを初期プログラミングデータ内に組み込むことにより、有効プログラミングデータを生成するように構成された有効プログラミングデータ生成手段と、少なくとも１つの障害のある連続的に接続されたプログラマブルロジック領域をバイパスプログラミングデータでプログラムするために、有効プログラミングデータを使用してプログラマブルロジックデバイスをプログラムするように構成されたプログラマブルロジックデバイスプログラム手段とを備える。
【００１２】
好適には、さらに有効プログラミングデータ生成手段は、バイパスプログラミングデータを初期変換データ内に組み込むべき特定ポイントであって、障害のある連続的に接続されたプログラマブルロジック領域の物理的位置に関する特定ポイントを、変換データを使用して判断するように構成された判断手段と、この特定ポイントでバイパスプログラミングデータを初期プログラミングデータに挿入するように構成された挿入手段とを備える。
【００１３】
さらに挿入手段は、バイパスデータが初期プログラミングデータに挿入されるまで、初期プログラミングデータの受信を停止するように構成された停止手段と、初期プログラミングデータの受信を再開するように構成された再開手段とを備えてもよい。
【００１４】
さらに挿入手段は、バイパスデータが初期プログラミングデータに挿入されるまで、受信初期プログラミングデータをメモリ手段に格納するように構成された格納手段と、メモリ手段内に格納された初期プログラミングデータを読み出すように構成された読み出し手段とを備えてもよい。
【発明の効果】
【００１５】
明らかに、本発明は複数の利点を提供する。たとえば、本発明は、フォールトトレランスに関連するプログラミングオーバーヘッドおよびハードーウェアオーバーヘッドを低減し、これにより製造コストおよび複雑性を低減する。また、本発明は、初期プログラミングデータを生成するＣＡＤソフトウェアからフォールトトレランスの存在を隠しており、プログラマブルロジックデバイスをプログラムするシステムおよび方法を提供する。さらに、本発明の方法およびシステムにより提供されたフォールトトレランスは、ユーザからも隠されている。したがって、使いやすさが改善される。
【発明を実施するための最良の形態】
【００１６】
次に、添付図面を参照して本発明の一実施形態を説明する。
【００１７】
典型的なプログラマブルロジックデバイスは、デバイス全体に分散したメモリ内に格納されたデータのビットマップを使用してプログラムされる。デバイスの各プログラマブル要素に対して、特定のメモリエレメント内に格納された関連データが存在する。ほとんどのプログラマブルデバイス内のプログラムメモリは、プログラマブルデバイス全体が１つの大きなメモリとして機能できるようにする方法で、データによってポピュレートされる（すなわち、各要素は全ての要素の中からそれを一意に識別するアドレスを有する）。
【００１８】
デバイスがプログラムされるとき、アドレスといくつかのデータがデバイスのプログラミングインタフェースに提示される。次いで、プログラミングインタフェースは、全ての他の要素が非アクティブである間、そのデータを宛先の要素へ送信する。
【００１９】
新しいプログラマブルロジックアーキテクチャの中には、同一ブロックの繰り返しストリップを備えるものもある。図１は、そのようなアーキテクチャの一実施形態を示す。図１のプログラマブルロジックデバイス１００は、一連のストリップ１０１、１０２、１０３および１０４を備える。各ストリップ１０１、１０２、１０３および１０４は、互いに連結することができる。したがって、より大きなコヒーレントアレイを構成するために複数のストリップをスタックすることができる。
【００２０】
各ストリップは、ストリップを互いに接続する働きをする一連の利用可能なルーティングリソースを有する。２つの他のストリップに囲まれたストリップの利用可能なルーティングリソースを、第１の隣接ストリップから入力される接続部を第２の隣接ストリップに出力される接続部にパスする、バイパスモードにプログラムすることができる。これにより、中間ストリップを論理的に不可視状態にする。
【００２１】
図２は、図１のルーティングリソースのより詳細な図を示す。ルーティングは、マルチプレクサを使用して実装するものとして示す。しかし、パスゲートまたはトランスミッションゲートなどの他の実装も可能である。図２に示すように、各ストリップの入力と出力との間にダイレクトパスが存在するように、ルーティングネットワークを繰り返す。たとえば、図２の点線は、ストリップ１０３の１つの入力をストリップ１０３の出力に直接接続できる方法を示す。したがって、ストリップ１０２の出力をストリップ１０４の入力に、効率的に直接接続することができる。
【００２２】
したがって、ロジックブロックの繰り返しストリップに基づいたアーキテクチャを有するプログラマブルロジックデバイスは、該デバイスに予備ストリップを追加することにより、フォールトトレランスを実装することが可能である。次に、ストリップで障害が検出された場合、障害ストリップは、その入力をその出力に直接接続する構成にプログラムすることができる。これにより、その障害ストリップを論理的に不可視状態にする。
【００２３】
次に、図３を参照して、本発明の１つの実施形態を以下に詳細に説明する。図１の場合のように、ユーザプログラマブルロジックデバイス１００は４つのストリップ（または領域）１０１、１０２、１０３および１０４を備える。
【００２４】
この例において、３つのプログラミングブロックのＡ、ＢおよびＣは、プログラマブルロジックデバイス１００にプログラムされる。まず、このプログラマブルデバイスのプログラミングデータを、コンピュータ支援設計（ＣＡＤ）ソフトウェアを使用して作成する。ＣＡＤソフトウェアは、３つの領域のみを含むデバイスをプログラムするように働き、したがって３つの領域のみのデータを生成する。次いで、このプログラミングデータを格納し、その後、プログラミングインタフェース回路１０５に送信する。
【００２５】
プログラム時に、デバイスに関して行ったテスト結果もプログラミングインタフェース回路１０５に送信できるように、製造時に、その結果をエンコードしてメモリ内に格納する。この情報は、図３の入力変換データ内に含まれる。この例においては、領域１０３に障害があることがわかる。したがって、この領域のプログラミングブロックＣは領域１０４に移動する必要が出てくる。さらに、障害要素を含むストリップは、バイパス構成でプログラムしなければいけない。
【００２６】
このために、本発明の１つの実施形態に従うプログラミングインタフェース回路１０５は、プログラミングデータと変換データの両方を受信する。次に、プログラミングインタフェース回路１０５はプログラマブルデバイス内の障害の位置に関する情報に応答して、プログラミングデータを自動的に変更する。障害の位置に関する情報は、変換データ内に含まれる。ストリップの厳密なアーキテクチャ次第で、実際のバイパス構成は比較的に生成が容易である場合がある。生成が容易である場合は、プログラミングインタフェース回路１０５は比較的小さくなる。たとえば、必要とする構成が複数のゼロの生成のみを必要とする場合、プログラミングインタフェース回路１０５は、カウンタとマルチプレクサとを備えるだけでよい。マルチプレクサは、正確な構成サイクル数のプログラミングデータに複数のゼロを挿入する。
【００２７】
図４の例においては、ブロックＡ、ＢおよびＣをプログラマブルロジックデバイスにプログラムする。しかし、この例においては、２つの障害領域１１２および１１４が存在する。上述の例で説明したように、このプログラマブルデバイスのプログラミングデータを、コンピュータ支援設計（ＣＡＤ）ソフトウェアを使用して作成する。ＣＡＤソフトウェアは、３つの領域のみを含むデバイスをプログラムするように働き、したがって３つの領域のみのデータを生成する。次いで、このプログラミングデータを格納し、その後、プログラミングインタフェース回路１１０に送信する。
【００２８】
上述の例と同じように、プログラム時に、デバイスに関して行ったテスト結果もプログラミングインタフェース回路１１０に送信できるように、製造時に、その結果をエンコードしてメモリ内に格納する。この例においては、領域１１２および領域１１４に障害があることがわかる。したがって、最初は領域１１２用であったプログラミングブロックＢは領域１１３に移動し、最初は領域１１３用であったプログラミングブロックＣが領域１１５に移動する必要が出てくる。さらに、障害要素を含む各ストリップは、バイパス構成でプログラムしなければいけない。
【００２９】
このために、本発明の１つの実施形態に従うプログラミングインタフェース回路１１０は、プログラミングデータと変換データの両方を受信する。次に、プログラミングインタフェース回路１１０はプログラマブルデバイス内の障害の位置に関する情報に応答して、プログラミングデータを自動的に変更する。上述の例と同じように、障害の位置に関する情報は、変換データ内に含まれる。デフォルト構成データの生成は、図３の例と同じように行うことができる。
【００３０】
障害が見つからない場合、本発明のプログラミングインタフェース回路１０５および１１０は、変換データ内で最後の領域を障害として割り当てることになる。したがって、デバイス内の最初のブロックをプログラミングデータでプログラムし、最後のブロックを論理的に不可視状態にすることになる。
【００３１】
次に、図５を参照して、本発明に係る他の例に従うプログラミングインタフェース回路１０５の詳細を以下に説明する。前述の例と同じように、プログラム時に、回路１０５はプログラミングデータと変換データとを受信する。変換データが領域１０３を障害であると識別した結果、回路１０５は、適切な時点でデフォルトプログラミングデータをプログラマブルロジックデバイスに送信して、有効プログラミングデータを作成しなければいけない。
【００３２】
この例において、プログラミングインタフェース回路１０５は、有限状態マシン（ＦＳＭ）１０６を備える。このＦＳＭ１０６は、外部インタフェースおよびプログラマブルデバイス１００からの制御信号を監視するものである。ＦＳＭ１０６は、デフォルトプログラミングデータを挿入する適切な時点を判断し、データ挿入動作を制御する。ＦＳＭ１０６は、さらに外部のプログラマブルデバイスインタフェースに対する出力信号を生成する。
【００３３】
ＦＳＭ１０６により行われる、デフォルトプログラミングデータを挿入すべきタイミングを判断する１つの方法は、アレイに送信された構成データ要素の数をカウントすることである。各ストリップを構成するのにＹ個のデータ要素が必要で、Ｎ番目のストリップに障害がある場合、Ｙ×Ｎ個のデータ要素が変換された後、デフォルトプログラミングデータを挿入すべきである。当業者は理解できるように、デフォルト構成データを挿入すべきタイミングを判断する他の方法も可能である。たとえば、ストリップのプログラミングが完了する時点を識別する、特定のコードワードまたはコードタグをプログラミングデータ内に付加してもよい。この場合、デフォルトプログラミングデータを挿入すべきタイミングを判断するためのコードワードを認識し、カウントするように、ＦＳＭ１０６をプログラムすることができる。
【００３４】
上述の実施形態においては、ＦＳＭ１０６は、デフォルトプログラミングデータを挿入する適切な時点であると判断すると、入力プログラミングデータと、デフォルトプログラミングデータジェネレータ１０７により生成された内部生成デフォルトプログラミングデータとの間で、マルチプレクサ１０８の出力を切り替える。デフォルトプログラミングデータが送信されると、マルチプレクサ１０８の出力の切り替えを入力プログラミングデータに戻し、次の領域をプログラムする。図３から理解できるように、上述の動作の結果、プログラミングインタフェースに入力されたプログラミングデータは、プログラム領域１０１、１０２および１０３に対する情報を含むが、有効プログラミングデータは、４つの領域１０１、１０２、１０３および１０４をプログラムするのに十分な情報を含むことになる。
【００３５】
プログラマブルデバイスを組み込んだシステムのアーキテクチャ次第で、プログラミングインタフェースの動作と実装は異なる場合がある。たとえば、プログラミングデータがローカルキャッシュメモリから送信される場合、プログラミングインタフェースは、データを生成する間、メモリの読み出し（すなわち、図３に示した制御信号を使用）を中断する。あるいは、プログラミングデータがシステム内のいくつかの他のエンティティにより送信され、中断されない場合、プログラムインタフェース回路１０５は、ファーストイン・ファーストアウト（ＦＩＦＯ）バッファ（図示せず）を備えてもよい。このＦＩＦＯバッファ内部に、プログラムインタフェース回路１０５は、生成されたデータを有効プログラミングデータに挿入する間、着信プログラミングデータを格納する。
【図面の簡単な説明】
【００３６】
【図１】本発明の方法と共に使用するデバイスのプログラマブルロジックアーキテクチャを示す図である。
【図２】図１のデバイスのロジックアーキテクチャをより詳細に示す図である。
【図３】本発明の一実施形態によるシステムのハイレベル図である。
【図４】本発明の一実施形態によるシステムのハイレベル図である。
【図５】図３および図４のシステムのプログラミングインタフェースを示す詳細図である。
【図１】
2008295046.tif 000003
【図２】
2008295046.tif 000004
【図３】
2008295046.tif 000005
【図４】
2008295046.tif 000006
【図５】
2008295046.tif 000007