(57)【特許請求の範囲】
【請求項１】
回路設計の合成のための方法であって、前記方法は、１以上のプロセッサが演算を実行するステップを備え、前記実行するステップは、
複数の遅延値を記述する遅延−電圧データを入力するステップを備え、前記遅延値は目標素子の動作電圧値に対応し、
前記実行するステップは、
前記回路設計の解析から、前記回路設計のための最大ゲートレベル遅延を決定するステップと、
前記最大ゲートレベル遅延に対応する最小電圧値と初期ゲートレベル遅延に対応する初期電圧値とを決定するステップと、
前記最小電圧値と前記初期電圧値とに対応する電圧スケーリング因子を決定するステップと、
前記回路設計を合成するステップとをさらに備え、前記合成された回路設計は、前記電圧スケーリング因子を含み、前記合成された回路設計は、動作電圧を、前記電圧スケーリング因子によって縮小された起動電圧値の値に設定することを規定し、前記起動電圧値は、前記合成された回路設計を実現するための目標デバイスに記憶される、方法。
【請求項２】
最大ゲートレベル遅延を決定するステップは、前記最大ゲートレベル遅延がユーザ定義された遅延制約の範囲内であるかどうかを判断するステップを含む、請求項１に記載の方法。
【請求項３】
最大ゲートレベル遅延を決定するステップは、前記遅延−電圧データにおける前記最大ゲートレベル遅延に対応する電圧値が、ユーザ定義された遅延制約の範囲内であるかどうかを判断するステップを含む、請求項１に記載の方法。
【請求項４】
最大ゲートレベル遅延を決定するステップは、ユーザ定義された電圧スケーリングパラメータが、前記最大ゲートレベル遅延を選択された遅延値に縮小するかどうかを判断するステップを含む、請求項１に記載の方法。
【請求項５】
最大ゲートレベル遅延を決定するステップは、前記遅延−電圧データにおける前記最大
ゲートレベル遅延に対応する電圧値が、ユーザ定義された動作電圧パラメータに等しいかどうかを判断するステップを含む、請求項１に記載の方法。
【請求項６】
前記回路設計の各々の経路の最大遅延要求を決定するステップと、
各々の経路の前記最大遅延要求に従って、配置−経路最適化を実行するステップとをさらに備え、
前記電圧−遅延データは、さらに、前記目標デバイスの領域のためのそれぞれの遅延パラメータを規定する、請求項１から５のいずれか１項に記載の方法。
【請求項７】
最大ゲートレベル遅延を決定するステップは、
前記回路設計を、前記初期遅延に等しいゲートレベルでシミュレートするステップと、
前記シミュレーションの出力が正しいか否かを確定するステップと、
前記シミュレーションの前記出力が正しいことが確定されたことに応答して、
選択された量だけシミュレーション遅延を増加させるステップと、
増加されたシミュレーション遅延を用いて、回路設計のシミュレーションと出力の確定とを繰り返すステップとを含む、請求項１に記載の方法。
【請求項８】
最大ゲートレベル遅延を決定するステップは、
前記回路設計を、前記初期電圧に等しい供給電圧でシミュレートするステップと、
前記シミュレーションの出力が正しいか否かを確定するステップと、
前記シミュレーションの前記出力が正しいことが確定されたことに応答して、
選択された量だけ前記供給電圧を減少させるステップと、
前記減少された供給電圧を用いて、回路設計のシミュレーションと出力の確定とを繰り返すステップと、
前記回路設計のシミュレーションが正しい出力を生成しているときに、少なくとも供給電圧を決定するステップと、
前記少なくとも供給電圧に対応する前記シミュレーションのゲートレベル遅延を決定するステップとを含む、請求項１に記載の方法。
【請求項９】
前記合成された回路設計からビットストリームを生成するステップをさらに備え、
前記ビットストリームは、さらに、外部電源をシグナリングすることによって、目標デバイスをプログラムして前記目標デバイスの動作電圧を設定するように構成される、請求項１から８のいずれか１項に記載の方法。
【請求項１０】
プログラマブル集積回路であって、
複数のプログラマブル資源と、
前記プログラマブル資源を結合させるための複数のプログラマブルルーティング資源と、
前記プログラマブル資源および前記プログラマブルルーティング資源に結合される複数のコンフィギュレーションメモリセルと、
最小電圧値および電圧スケーリング因子で構成された不揮発性メモリユニットと、
前記不揮発性メモリユニットに結合された電源コントローラユニットとを備え、前記電源コントローラユニットは、前記最小電圧値と前記電圧スケーリング因子とを前記不揮発性メモリユニットから読み出して、前記動作電圧を、前記電圧スケーリング因子によって縮小された前記最小電圧値に設定するように構成される、プログラマブル集積回路。
【請求項１１】
前記電源コントローラユニットは、さらに出力ポートに結合され、
前記電源コントローラユニットは、前記出力ポートに前記最小電圧値を出力することにより、前記動作電圧を設定するように構成される、請求項１０に記載のプログラマブル集積回路。
【請求項１２】
前記不揮発性メモリユニットに記憶された前記最小電圧値は、最大動作遅延に要求される、決定された最小動作電圧に等しい、請求項１０または１１に記載のプログラマブル集積回路。
【請求項１３】
前記電源コントローラユニットは、前記コンフィギュレーションメモリセルのサブセットを用いて、前記プログラマブル資源および前記プログラマブルルーティング資源のサブセットにおいて実現される、請求項１０から１２のいずれか１項に記載のプログラマブル集積回路。
【請求項１４】
前記電源コントローラユニットは、専用のハードウェアで実現される、請求項１０から１２のいずれか１項に記載のプログラマブル集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
実施の形態は、概して集積回路に関し、より特定的には、集積回路のプログラム可能な電圧に関する。
【背景技術】
【０００２】
背景
所与のフォトリソグラフィプロセスが解像可能な最小寸法は、代替的に、最小フィーチャサイズ（feature-size）またはクリティカルディメンション(critical dimension)と呼ばれる。フィーチャサイズは、そのフィーチャサイズがＩＣの速度性能を改善する傾向にあるために、関心のあるパラメータである。印刷された集積回路（ＩＣ）のフィーチャサイズは均一ではない。印刷プロセスは、ロット間、ウェハ間および各々のウェハ内のデバイス間でフィーチャサイズのわずかなばらつきをもたらす。その結果として、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）のようなプログラマブルＩＣは、製造プロセスにおけるばらつきにより、静的な電力および回路遅延における変動をもたらす。速度の遅いデバイスは、通常はより低い静的電力を有し、高速のデバイスは、通常ではより高い静的電力の要求を有する。
【０００３】
回路設計が、目標デバイスの速度および電力効率の要求の増加を継続しているので、実現化に先立って、正確な電力仕様および遅延仕様を用いて、目標デバイスにおける回路設計をシミュレートしテストすることが、開発者にとって、ますます重要となっている。たとえばザイリンクス社（XILINX, Inc.,）のような多くのプログラマブルＩＣのベンダーは、製造品設計の複数の印刷デバイスのスイッチング速度を測定して、設計者に保証することが可能な最小動作電圧および最大遅延を決定する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
デバイス間のばらつきにより、保証された仕様を大多数の印刷されたデバイスに適用するためには、その保証された電圧仕様および遅延仕様が、ある特定の量のヘッドルーム（head room）を含むために相殺される。たとえば、測定は、大多数の製造されたデバイスが、１Ｖの動作電圧で平均して１１０メガヘルツ（ＭＨｚ）以上で動作可能であるが、数パーセントのデバイスが、同じ電圧で１０２ＭＨｚといった低速で動作するであろう。仕様は、デバイスがその仕様の中で示されるように動作することを確保するために、平均速度を１１０ＭＨｚとして、ヘッドルームを１０ＭＨｚとして相殺することができる。プロセスばらつきの存在は、製造者が顧客に保証することができる性能および電力の仕様を低下させる。ばらつきの量が多くなるほど、ヘッドルームによって相殺される仕様も大きくなる。含まれているヘッドルームのために、製品設計における多くの印刷されたデバイスは、ベンダーの製造仕様において保証されるよりも、よりよい電圧および遅延パラメータで動作することができる。
【０００５】
１以上の実施の形態は、１以上の上記の問題に向けられることができる。
【課題を解決するための手段】
【０００６】
概要
１つの実施の形態において、回路設計の合成のための方法が提供される。複数の遅延値を記述する遅延−電圧データが入力されることができる。遅延値は目標素子の動作電圧値に対応づけられることができる。回路設計は、解析されて、回路設計のための最大ゲートレベル遅延を決定することができる。最大ゲートレベル遅延に対応する最小電圧値と初期ゲートレベル遅延に対応する初期電圧値とを、初期ゲートレベル遅延に対応する初期電圧値に従って決定することができる。最小電圧値と初期電圧値とに対応する電圧スケーリング因子を決定することができる。合成された回路設計が、電圧スケーリング因子を含むように、回路設計を合成することができる。合成された回路設計は、動作電圧を、電圧スケーリング因子によって縮小された起動電圧値の値に設定することを規定することができる。起動電圧値は、合成された回路設計を実現するための目標デバイスに記憶される値とすることができる。
【０００７】
この実施の形態において、最大ゲートレベル遅延を決定するステップは、最大ゲートレベル遅延がユーザ定義された遅延制約の範囲内であるかどうかを判断するステップを含むことができる。最大ゲートレベル遅延を決定するステップは、遅延−電圧データにおける最大ゲートレベル遅延に対応する電圧値が、ユーザ定義された遅延制約の範囲内であるかどうかを判断するステップを含むことができる。最大ゲートレベル遅延を決定するステップは、ユーザ定義された電圧スケーリングパラメータが、最大ゲートレベル遅延を選択された遅延値に縮小するかどうかを判断するステップを含むことができる。最大ゲートレベル遅延を決定するステップは、遅延−電圧データにおける最大ゲートレベル遅延に対応する電圧値が、ユーザ定義された動作電圧パラメータに等しいかどうかを判断するステップを含むことができる。
【０００８】
方法のこの実施の形態は、回路設計の各々の経路の最大遅延要求を決定するステップと、各々の経路の最大遅延要求に従って、配置−経路最適化を実行するステップとをさらに備えることができる。電圧−遅延データは、さらに、目標デバイスの領域のためのそれぞれの遅延パラメータを規定することができる。最大ゲートレベル遅延を決定するステップは、回路設計を、初期遅延に等しいゲートレベルでシミュレートするステップと、シミュレーションの出力が正しいか否かを確定するステップと、シミュレーションの出力が正しいことが確定されたことに応答して、選択された量だけシミュレーション遅延を増加させるステップと、増加されたシミュレーション遅延を用いて、回路設計のシミュレーションと出力の確定とを繰り返すステップとを含むことができる。
【０００９】
この実施の形態において、最大ゲートレベル遅延を決定するステップは、回路設計を、初期電圧に等しい供給電圧でシミュレートするステップと、シミュレーションの出力が正しいか否かを確定するステップと、シミュレーションの出力が正しいことが確定されたことに応答して、選択された量だけ供給電圧を減少させるステップと、減少された供給電圧を用いて、回路設計のシミュレーションと出力の確定とを繰り返すステップと、回路設計のシミュレーションが正しい出力を生成しているときに、少なくとも供給電圧を決定するステップと、少なくとも供給電圧に対応するシミュレーションのゲートレベル遅延を決定するステップとを含むことができる。方法のこの実施の形態は、合成された回路設計からビットストリームを生成するステップをさらに備えることができる。ビットストリームは、さらに、外部電源をシグナリングすることによって、目標デバイスをプログラムして目標デバイスの動作電圧を設定するように構成されることができる。
【００１０】
別の実施の形態において、プログラマブル集積回路が提供される。プログラマブル集積回路は、複数のプログラマブル資源と、プログラマブル資源を結合させるための複数のプログラマブルルーティング資源とを含むことができる。複数のコンフィギュレーションメモリセルが、プログラマブル資源およびプログラマブルルーティング資源に結合されることができる。プログラマブル集積回路は、また、不揮発性メモリユニットと、不揮発性メモリユニットに結合された電源コントローラユニットとを含むことができる。電源コントローラユニットは、動作電圧を、不揮発性メモリユニットに記憶された最小値に設定するように結合されるとともに構成されることができる。
【００１１】
この実施の形態において、電源コントローラユニットは、さらに出力ポートに結合されることができる。電源コントローラユニットは、出力ポートに最小値を出力することにより、動作電圧を設定するように構成されることができる。不揮発性メモリユニットに記憶された最小値は、最大動作遅延に要求される、決定された最小動作電圧に等しくされることができる。電源コントローラユニットは、動作電圧を、不揮発性メモリユニットに記憶された電圧パラメータによって縮小された、不揮発性メモリユニットに記憶された最小値に等しい値に設定するように構成されることができる。電源コントローラユニットは、コンフィギュレーションメモリセルのサブセットを用いて、プログラマブル資源およびプログラマブルルーティング資源のサブセットにおいて実現されることができる。電源コントローラユニットは、専用のハードウェアで実現されることができる。
【００１２】
さらに別の実施の形態において、回路設計の合成のための方法が提供される。複数の遅延値を記述する遅延−電圧データが入力されることができる。回路設計のための最大ゲートレベル遅延が、プロセッサによって、回路設計の解析から決定することができる。決定された最大ゲートレベル遅延と等価な、複数の遅延値のうちの１つに対応する、１つの動作電圧値を決定することができる。回路設計は、合成された回路設計が、電圧スケーリング値を不揮発性メモリに記憶することを規定するように合成されることができる。合成された設計は、さらに、合成された設計の実現された回路の動作電圧を、ある動作電圧値の値に設定することを規定することができる。
【００１３】
さらに別の実施の形態において、回路設計の合成のための方法が提供される。方法のこの実施の形態は、複数の遅延値を記述する遅延−電圧データを入力するステップを備えることができ、遅延値は目標素子の動作電圧値に対応することができる。方法は、回路設計の解析から、回路設計のための最大ゲートレベル遅延を決定するステップと、決定された最大ゲートレベル遅延と等価な、複数の遅延値のうちの１つに対応する、１つの動作電圧値を決定するステップと、回路設計を合成するステップとをさらに備え、合成された回路設計は、電圧スケーリング値を不揮発性メモリに記憶することと、合成された回路設計の実現された回路の動作電圧を、ある動作電圧値の値に設定することを規定する。
【００１４】
方法のこの実施の形態は、さらに、設計制約を入力するステップを含むことができる。回路設計のための最大ゲートレベル遅延を決定するステップは、設計制約を満たす最大ゲートレベル遅延を決定するステップを含むことができる。合成は、動作電圧値のうちの決定された１つが、設計制約以下であることに応答して実行されることができる。設計制約は、最大動作電圧とされることができる。設計制約は、最大のユーザ定義されたゲートレベル遅延とされることができる。
【００１５】
さまざまな他の実施の形態が、以下の続く詳細な説明および請求項で説明されることが理解されるであろう。
【００１６】
さまざまな局面および利点が、以下に続く詳細な説明および図面を参照して明らかとなるであろう。
【図面の簡単な説明】
【００１７】
【図１−１】５つの例示的デバイスにおける電圧対クロックのグラフを示す図である。
【図１−２】電圧スケーリング因子と対応する遅延スケーリング因子の例示的表を示す図である。
【図１−３】図１−２に示される表を表わす式のグラフを示す図である。
【図２】電圧スケーリング後の５つのデバイスの電力対遅延のグラフを示す図である。
【図３】目標デバイスの電圧スケーリング因子を決定するプロセスのフローチャートを示す図である。
【図４−１】さまざまな実施の形態に従う、電源コントローラで構成されて、外部プログラマブル電源に結合されるプログラマブル集積回路のブロック図である。
【図４−２】さまざまな実施の形態に従う、電源コントローラおよび内部電源レギュレータで構成されるプログラマブル集積回路のブロック図である。
【図５】複数の実施の形態に従う、電源コントローラで構成された目標デバイスが電圧を調整することが可能なプロセスのフローチャートを示す図である。
【図６】複数の実施の形態に従う、専用ハードウェアで実現された電源コントローラで構成された目標デバイスが電圧を調整し得るプロセスのフローチャートを示す図である。
【図７】さまざまな実施の形態に従う、回路設計をプログラマブル動作電圧で実現するためのプログラマブル集積回路のブロック図を示す図である。
【図８】さまざまな実施の形態に従う、データバスコントローラを実現するための構成を演算する汎用目的プロセッサのブロック図を示す図である。
【発明を実施するための形態】
【００１８】
図面の詳細な説明
この開示のさまざまな実施の形態は、プログラマブル電圧を用いて集積回路における電力遅延ばらつきを改善する方法を与える。集積回路製造のリソグラフィプロセスにおける変動により、同じ設計の異なるデバイスは、同じゲートスイッチング速度を達成するために異なる電圧を必要とする。より高速のデバイスは、特定されたタイミング要求を、より低い電圧で満たすことができ、より低速のデバイスは、より高い電圧により、速度を上げて、特定されたタイミング要求を達成することができる。電力および遅延の分布の変動を減少することは、製品設計の電力および遅延の仕様の両方を改善することができる。
【００１９】
１つの実施の形態において、各々のデバイスは、製造仕様において示された公称の遅延のための最小動作電圧（Ｖｍｉｎ）を決定するためにテストされる。この電圧は、ダイにおける不揮発性メモリに保存される。Ｖｍｉｎは、次に、そのデバイスの動作電圧をＶｍｉｎに設定するために、プログラマブル電源に信号を与えるために用いられることができる。
【００２０】
たとえば、図１−１は、同じウェハから切出された５つの仮想的デバイスに対する電圧対速度性能のグラフを示す。各々のデバイスは、デバイスの印刷におけるばらつきにより、所与の動作電圧においてわずかに異なる速度で動作し得る。製造者からのデバイスの仕様は、１．０ボルトの動作電圧において、１２０メガヘルツ（ＭＨｚ）の動作を保証し得る。このことは、１．０ボルトでは、製造者によって売られたすべてのデバイスが、規定されるように動作するであろうことを保証するだろう。しかしながら、４つのデバイスが、より低い動作電圧１０２未満で、１２０ＭＨｚで動作可能である。仕様で示されるであろう速度に対する最小動作電圧を決定するために各々のデバイスを測定することにより、その決定された最小動作電圧は、各々のデバイスの不揮発性メモリに記憶されて、起動時の動作電圧を設定するために用いられることができる。
【００２１】
各々の実現されたデバイスに対してＶｍｉｎを効率的に決定するために、製造でのテストにおいて、異なる最終テストフローが適用される。いくつかの全体オープン／ショートテストおよび全体の欠陥テストの後に、特別な速度テストがテストフローの最初に配置される。これらの特別な速度テストは、典型的仕様と最小保証レベルとの間の異なる電圧レベルにおいて実行される。製造品の仕様において用いられるであろう要求を通すため、すべてのテストされるデバイスに対して必要とされる最低電圧レベルが記録される。デバイスが要求速度を達成することができる機能的テスト電圧レベルが決定される。デバイスは、次に機能テスト電圧レベルでテストされて、プログラムされたＶｍｉｎレベルにおける機能が保証される。各々のデバイスは、別々に測定される必要がないことが理解される。同じデバイスから切出された複数のデバイスは、そのウェハの最小電圧を一般化するために用いられることができる。各々のウェハを複数の領域に分割することができるならば、同じ領域から切出された複数のデバイスを、ウェハの最小電圧を一般化するために用いられることができる。
【００２２】
１つの実施の形態において、さらなるテストが複数の印刷されたデバイスに実行されて、第１の速度で各々のデバイスを動作させるために必要な最小電圧の第１の組と、第２の速度で各々のデバイスを動作させるために必要な最小電圧の第２の組との間の一般的なスケーリングが決定される。最小電圧のいくつかの共通のスケーリング因子は、デバイスの仕様に提供されて、複数の異なる動作速度でデバイスを動作させるために必要な電圧を示す。スケーリングが共通であるため、同じスケーリング因子は、いくつかのデバイスに記憶されたＶｍｉｎで使用されて、ある特定の動作速度で各々のデバイスを動作させるために必要な縮小された動作電圧を決定することができる。
【００２３】
たとえば、図１−１におけるグラフは、複数のクロック速度で５つのデバイスに必要な電圧を示す。１２０ＭＨｚで動作させるために必要な電圧１０２を、１００ＭＨｚで動作させるために必要な電圧１０４に縮小するために、共通のスケーリング因子を決定することができる。この例において、１００ＭＨｚで動作するために必要なデバイスの電圧（Ｖ100MHz）は、次の式で与えられる。
【００２４】
Ｖ100MHz＝Ｖscale100×Ｖ120MHz
ここで、Ｖ120MHzは、１２０ＭＨｚで動作させるために必要なデバイスの動作電圧であり、Ｖscale100は、２つの動作速度の間で縮小するためのスケーリング因子である。この例において、デバイスの間での共通のスケーリングは、線形式である。いくつかの製品設計は、動作スピードの共通のスケーリングを示すために非線形の式を必要とする可能性があることが理解されるであろう。
【００２５】
デバイス仕様における複数のスケーリング因子を含むことにより、自動設計ツールは、これらのスケーリング因子の所望の１つを合成された設計またはビットストリームにプログラムするために、設計者によって用いられることができる。その設計が印刷され、あるいはプログラマブルロジックへとプログラムされる場合、スケーリング因子は、不揮発性メモリに記憶された最小電圧値に従って起動時に読出されることができる。スケーリング因子は、記憶された最小電圧値を縮小して、所望の動作速度に対応する電圧レベルを達成することができる。この方式において、設計者は、その設計のための必要とされる動作速度を決定して、要求される動作速度を達成するために最小必要電圧で動作させるための設計を構成することができる。
【００２６】
スケーリング因子は、デバイスの内部または外部の不揮発性メモリに記憶されてもよい。たとえば、スケーリング因子がＦＰＧＡのビットストリームに記憶される場合、そのビットストリームは、起動時におけるデバイスの構成に先立って内部あるいは外部の不揮発性メモリに記憶されてもよい。
【００２７】
スケーリング因子は、線形的である必要はない。たとえば、図１−１では、１２０ＭＨｚから１１５ＭＨｚへ縮小するためのスケーリング因子は、１１５ＭＨｚから１１０ＭＨｚへと縮小するためのスケーリング因子とは異なり得る。電圧スケーリング因子がデバイスに記憶されたＶｍｉｎとともに用いられるならば、各々のデバイスのＶｍｉｎは、１つの動作速度に対応するであろう。この方式において、同じスケーリング因子は、各々のデバイスのＶｍｉｎを縮小するために用いられることができる。同様に、用いられるビットストリームにプログラムされるスケーリング因子は、ある動作速度の電圧を、設計された動作速度でデバイスを動作させるために必要な電圧へと縮小するであろう。
【００２８】
設計者が異なる動作速度での最適な電圧でデバイスを動作させることを可能にするために、複数のスケーリング因子をデバイス仕様に含めることができる。図１−２は、電圧スケーリング因子と対応する遅延スケーリング因子の表を示し、図１−１における１２０ＭＨｚの電圧１０２を、示される他の動作速度での電圧に縮小する。遅延スケーリング因子（Ｖｂｅｌａｙ）は、１つの電圧における遅延を別の電圧における遅延に縮小する。図１−２に示されるスケーリング因子の表に加えて、あるいはその代りに、遅延スケーリング因子を電圧スケーリング因子へと変換する式を、デバイスの仕様に含めることができる。たとえば、図１−３は、４（Ｖｄｅｌａｙ）2−９（Ｖｄｅｌａｙ）＋６．６という式のグラフを示し、その式は、図１−２に示される表において含まれていない遅延スケーリング因子の場合の電圧スケーリング因子を計算するために用いられることができる。
【００２９】
電圧スケーリングは、電力消費を低減するために電圧を低減するため、あるいは性能を改善するために電圧を増大させるために用いられることができる。図２は、公称電圧で動作する５つのテストデバイスの電力対遅延分布を示す。デバイスａ（２０８）とデバイスｂ（２１０）とは、公称電圧よりも低い電圧で動作することにより速度を低下させることができる。デバイスｄ（２０６）とデバイスｅ（２０４）とは、公称電圧よりも高い電圧で動作することにより速度を上昇させることができる。結果として、すべてのデバイスは、遅延Ｄ０（２０２）で動作する。その結果、タイミング仕様は、ＤｖａｒからＤ０へと改善されて、電力の仕様はＰｖａｒからＰｎｅｗと改善される。なお、デバイスのスケーリング電圧において、低い電圧はデバイスの機能に影響を与え得るとともに、高い電圧は逆に信頼性に影響を与え得る。製造仕様は、安全動作電圧範囲を含み、動作電圧が安全動作範囲外に縮小されないことを確保し得る。
【００３０】
いくつかの実施の形態において、ソフトウェア設計ツールを、最大動作速度、最大動作電圧他といったユーザ制約に基づく、低減された電圧で目標デバイスが動作できるかどうかを判断するために用いられることができる。設計ツールが、ユーザの制限が電圧スケーリングを通じて満たされることができると判断した場合、適切な電圧スケーリング因子が決定されて、ビットストリームへとプログラムされるか、そうでなければ実現された回路設計に取込まれる。
【００３１】
ソフトウェア設計ツールは、定義された回路設計のための正しい出力を生成する最大遅延を決定するために用いられることができる。たとえば、設計ツールは、回路設計を解析して、仕様で示されたよりも遅延パラメータが１％低くても仕様のタイミング制約が満たされることができることを判断する。ツールは、図１−２に示された例示的表を用いて、遅延スケーリング因子１．１が、電圧スケーリング因子０．８８に対応することを判断することができる。電圧スケーリング因子０．８８は、合成回路設計のビットストリームの中に記憶されて、不揮発性メモリに記憶された最小電圧に従って用いられて、デバイスに電源が投入されたときにプログラマブル電源の動作電圧を設定することができる。
【００３２】
１つの実施の形態において、タイミング解析が、回路設計において繰返し実行される。各々の繰返しにおいて、ますます増大するスケーリング因子によって、目標デバイスの遅延仕様における遅延パラメータが低下する。その繰返しは、設計がタイミングの制約を満たさない場合に停止する。タイミングの制約を満たす最後の遅延スケーリング因子が、遅延スケーリング因子として用いられる。
【００３３】
図３は、特定の回路設計のための電圧スケーリング因子を決定するための例示的プロセスのフローチャートを示す。回路設計３０２と電圧／遅延仕様３０４とは、ステップ３０６において入力される。電圧／遅延仕様３０４は、回路設計３０２を実現するために用いられるであろう目標デバイスに対応する。ステップ３０６において、電圧／遅延仕様３０４から、目標デバイスのために初期ゲートレベル遅延が決定される。初期ゲートレベル遅延は、目標デバイスにおいてプログラムされるＶｍｉｎ動作電圧に対応する。たとえば、仕様において公称電圧において示される最大保証遅延は、初期ゲートレベル遅延として用いられることができる。ステップ３０９においてタイミング解析が実行されて、設定されたゲートレベル遅延で回路設計３０２の性能および機能を決定する。
【００３４】
いくつかの実施の形態において、ステップ３０８において最適化を実行して、回路の機能および性能を改善してもよい。たとえば、回路設計は、再マップされる、再配置される、および／または再度経路付けられて、スループットを改善するかあるいは回路設計のタイミング制約を満たすことができる。機能的に正しい出力を生成することに加えて、タイミングおよび設計の制約は、特定の動作電圧、特定の電圧スケーリング因子、特定のゲートレベル遅延、目標デバイスの特定の動作周波数他のような多数のユーザ定義の制約を含むことができる。
【００３５】
判断ステップ３１０において、回路設計が、正しい出力を生成すると判断されて、タイミングおよび／または設計制約が満たされるならば、現在のゲートレベル遅延または初期ゲートレベル遅延のスケーリング因子がステップ３１２において記憶される。ゲートレベル遅延は、ステップ３１６において増大して、ステップ３０９において回路設計におけるタイミング解析が実行される。回路設計は、また、さらにステップ３０８において最適化されてもよい。このプロセスは、判断ステップ３１０において、不正確な出力を生成する、あるいはタイミングおよび／または設計制約を満たしていないと、回路設計３０２が判断されるまで繰返される。
【００３６】
回路設計３０２が、正しい出力を生成しない、あるいは設計／タイミング制約を満たさない後に、最大の機能ゲートレベル遅延に対応する、直前に記憶された遅延がステップ３１８において検索される。遅延スケーリング因子は、電圧スケーリング因子３２２に変換されてステップ３２０において出力される。遅延スケーリング因子を電圧スケーリング因子にマッピングすることは、複数の電圧でＦＰＧＡ遅延パラメータを特徴付けることによって決定されるとともに、上記のように説明された表または式によって与えられることができる。いくつかの他の実施の形態において特定の回路設計および目標デバイスのための電圧スケーリング因子が、繰返し減少する動作電圧レベルを用いて、目標デバイスのモデル上での回路設計を繰返しシミュレートすることによって決定されることができる。各々の繰返しにおいて、シミュレーションは、現在の電圧レベルのための目標デバイスのトランジスタのラッチ速度をシミュレートすることができる。繰返しは、その設計がタイミングまたは設計の制約を満たさない場合に停止する。その設計がタイミングおよび設計制約を満たす最後の動作電圧レベルが、デバイスの動作電圧として用いられる。電圧スケーリング因子が一旦決定されると、特定の電圧または電圧スケーリング因子を含む設計のビットストリームが生成されるとともに目標デバイスへとロードされ得る。
【００３７】
他の実施の形態において、ユーザは、設計ツールに、十分な性能ヘッドルームを有する設計を生成させて、動作電圧が、ある特定の電圧スケーリング因子によって縮小されることを可能にすることができる。その代わりに、ユーザは、正確な動作電圧を要求してもよい。ツールは、図１−２における例示的なマッピング表を用いて必要な遅延スケーリング因子を決定するとともに、遅延スケーリング因子によって遅延パラメータが低下する、仕様において示される公称電圧を用いてタイミング駆動実現例を実行する。ツールが、タイミング制約をうまく満たす場合に、結果の設計は、ユーザによって要求される電圧スケーリング因子（または実際の電圧）で動作することができるであろう。電源コントローラは、プログラマブル電源に信号を与えて、電圧スケーリング因子によって縮小されたＶｍｉｎに動作電圧を設定する。
【００３８】
たとえば、ユーザは、ツールに対して、０．８８Ｖ（すなわちスケーリング因子０．８８）で動作可能なＶｉｒｔｅｘ−５設計を生成することができる。ツールは、遅延スケーリング因子１．１０によって低下した、仕様において示されるタイミング遅延でその設計が動作しなければならないことを決定する。ツールは、仕様において示された、１．１０に調整された遅延パラメータを用いてタイミング駆動のフローを実行する。成功した場合、結果の設計は、０．８８Ｖでのタイミングを満たすことができる。Ｖｍｉｎが用いられる場合、電源コントローラは、各々の部分において０．８８×Ｖｍｉｎを設定する。Ｖｍｉｎが用いられない場合、電源コントローラは固定電圧０．８８Ｖに各々の部分を設定する。
【００３９】
いくつかの実施の形態において、Ｖｍｉｎは用いられないか、または目標デバイスにおいて記憶されないかもしれない。これらの実施の形態において、特定の動作電圧は、ビットストリームにプログラムされてもよい。その代わりに、製造仕様において示された公称電圧を縮小するためのスケーリング因子を決定することができる。定義されたユーザ制約を満たす特定のスケーリング因子が、上記で説明された方法を用いて決定することができる。決定されたスケーリング因子は、次に、ビットストリームにプログラムされて、目標デバイスへとロードされる。目標デバイスに電源が投入されると、電源コントローラ回路は、電圧スケール因子によって縮小された公称の電圧で単純に電源電圧を設定することができる。
【００４０】
図４−１は、プログラマブル電圧制御を実装した目標デバイスのブロック図を示す。集積回路デバイス４０４において、部分の最小供給電圧（Ｖｍｉｎ）についての情報が不揮発性メモリ４１０に記憶される。デバイスが起動されると、Ｖｍｉｎ４１０は、電源コントローラ４０６によって検索されて、デバイスを、初期動作電圧に構成するために用いられる。動作電圧をＶｍｉｎの地に設定するために、電源コントローラ４０６は、目標動作電圧に対応する電圧指定コード（ＶＩＤ）４１４を電源４０２に送る。電源４０２は、次に、受取ったＶＩＤに対応する電圧で集積回路に電源を投入する。
【００４１】
１つの実施の形態においえ、電源コントローラは、また、ステータス信号４１６を電源に送り、ＶＩＢ信号が妥当であることを示す。ステータス信号の状態に依存して、電源は、Ｖｃｃ入力４１２に固定の公称電圧またはＶＩＤ電圧のいずれかを出力する。これは、目標デバイスがＦＰＧＡである場合に有用であり得る。いくつかの実施の形態において、初期電圧が、プルアップ抵抗およびプルダウン抵抗を用いてＦＰＧＡが構成される前に妥当なＶＩＤを設定することが可能である。
【００４２】
他の実施の形態において、目標デバイスは、プログラマブル電源の代わりに、初めに目標デバイスの所望の動作電圧を設定または調整するための動作電圧レギュレータを含むことができる。図４−２は、内部電源レギュレータを実装した目標デバイスのブロック図を示す。部分の最小供給電圧（Ｖｍｉｎ）についての情報が集積回路デバイス４０４における不揮発性メモリ４１０に記憶される。電源４２０は、固定の公称電圧をＶｃｃ入力４１２に出力するように構成される。デバイスが起動されると、電源レギュレータ４２２は、目標デバイス４０４に含まれる電源ロジックに用いられるＶｃｃ内部電圧を出力する。電源コントローラ４０６は、Ｖｍｉｎ４１０および電圧スケーリング因子４０８を検索して、動作電圧を決定し、電源レギュレータ４２２に、その決定された動作電圧を出力するために信号を送るように構成される。
【００４３】
図５は、複数の実施の形態に従うプログラマブルロジックにおいて実現される電源コントローラを有する目標ＦＰＧＡデバイスが電圧を調整することができる例示的プロセスのフローチャートを示す。目標デバイスは、ステップ５０２において電源が投入され、電源は、Ｖｃｃを初期の公称の値に設定する。この電圧は、プルアップ抵抗およびプルダウン抵抗によって設定されるか、またはステータス信号に応答して予め設定されるかのいずれかであってもよい。ステータス信号が用いられる場合、ＦＰＧＡが構成される前にそのステータス信号は妥当でなければならない。ステップ５０４において、ＦＰＧＡプログラマブルロジックが構成される。ＦＰＧＡの構成の後、電源コントローラ５０６は、ステップ５０６において不揮発性メモリからＶｍｉｎおよび／またはＶｓｃａｌｅを読出して、目標デバイスのための最小動作電圧を決定する。ステップ５０８において、電源コントローラは、妥当なＶＩＤを用いてプログラマブル電源にその最小動作電圧を指定する。電源は、ステップ５１０においてＶＩＤにおいて示された電圧にＶｃｃを設定する。
【００４４】
さまざまな実施の形態では、回路設計が多数の目標デバイスにおいて実現されてもよい。目標デバイスは、特定用途集積回路（ＡＳＩＣ）またはＦＰＧＡのようなプログラマブルロジック集積回路であってもよいことが理解される。目標デバイスがプログラマブルロジックを実現する場合、電源制御ロジックは、専用のハードウェア、またはプログラマブルロジックにおいて実現されてもよい。ステータス信号が、プログラマブル電源に信号を与えるために用いられない場合、電源コントローラは、専用のハードウェアまたはプログラマブルロジックであってもよい。しかしながら、ステータス信号が、ＦＰＧＡが構成される前に初期電圧を設定するために用いられるならば、電源コントローラは、専用のハードウェアであり、したがってデバイスが構成される前に起動されるであろう。電源コントローラは、したがってステータス信号を、ＦＰＧＡが構成されて、ＶＩＤが現在妥当であることを示すために設定されることができる。ステータス信号が用いられない場合、このステップをスキップしてもよい。
【００４５】
図６は、複数の実施の形態に従う、専用のハードウェアにおいて実現される電源コントローラを有する目標ＦＰＧＡが電圧を調整し得る例示的プロセスのフローチャートを示す。目標デバイスは、ステップ６０２において電源が投入されて、電源はＶｃｃを初期の公称の値に設定する。専用の電源コントローラが、ステップ６０４において不揮発性メモリからＶｍｉｎを読出すとともにコンフィギュレーションメモリからＶｓｃａｌｅを読出し、最小動作電圧を決定する。ステップ６０６において、電源コントローラは、電源信号線を最小動作電圧Ｖｍｉｎに設定する。ＦＰＧＡがステップ６０８において構成される。電源コントローラは、ステップ６１０において信号ＶＩＤが妥当であるとステータスを設定する。電源は、ステップ６１２においてＶｃｃを最小動作電圧に設定する。
【００４６】
図７は、さまざまな実施の形態に従う、プログラマブル動作電圧を有する回路設計の実現において用いられ得る、例示的なプログラマブル集積回路のブロック図である。電源コントローラは、これまで述べたように、プログラマブル集積回路のプログラマブルロジックおよびインターコネクト資源において実現されることができる。
【００４７】
ＦＰＧＡは、複数の異なる種類のプログラマブルロジックブロックをアレイ中に含むことができる。たとえば、図７はＦＰＧＡアーキテクチャ（７００）を示し、ＦＰＧＡアーキテクチャ（７００）は、マルチギガビットトランシーバ（ＭＧＴ７０１）と、コンフィギュラブルロジックブロック（ＣＬＢ７０２）と、ランダムアクセスメモリブロック（ＢＲＡＭ７０３）と、入力／出力ブロック（ＩＯＢ７０４）と、コンフィギュレーションおよびクロックロジック(ＣＯＮＦＩＧ／ＣＬＯＣＫＳ７０５）と、デジタル信号処理ブロック（ＤＳＰ７０６）と、特殊入力／出力ブロック（Ｉ／Ｏ７０７）（たとえばコンフィギュレーションポートおよびクロックポート）と、デジタルクロックマネージャ、アナログデジタル変換器、システム監視ロジックなどといった他のプログラマブルロジック７０８を含む、多数の異なるプログラマブルタイルを含む。いくつかのＦＰＧＡはまた、専用のプロセッサブロック（ＰＲＯＣ７１０）と、外部リコンフィギュレーションポート（図示せず）を含む。
【００４８】
いくつかのＦＰＧＡにおいて、各プログラマブルタイルは、プログラマブルインターコネクト要素（ＩＮＴ７１１）を含み、そのプログラマブルインターコネクト要素は、各隣り合うタイル中の対応するインターコネクト要素への、およびそのインターコネクト要素からの標準化された接続を有する。したがって、集められたプログラマブルインターコネクト要素は、図示されたＦＰＧＡに対するプログラマブルインターコネクト構造を実現する。プログラマブルインターコネクト要素（ＩＮＴ７１１）はまた、図７の上部に含まれる例によって示されるように、同じタイル内のプログラマブルロジック要素へのそのプログラマブルロジック要素からの接続を含む。
【００４９】
たとえば、ＣＬＢ７０２は、単一のプログラマブルインターコネクト要素（ＩＮＴ７１１）を加えたユーザロジックを実現するためにプログラムされることが可能なコンフィギュラブルロジック要素（ＣＬＥ７１２）を含むことができる。ＢＲＡＭ７０３は、１以上のプログラマブルインターコネクト要素に加えてＢＲＡＭロジック要素（ＢＲＬ７１３）およびトランザクションアービタ７１６を含むことができる。典型的には、タイルに含まれるインターコネクト要素の数はタイルの高さに依存する。図示された実施の形態においては、ＢＲＡＭタイルは４つのＣＬＢと同じ高さを有するが、他の数（たとえば５）もまた用いられることができる。同様に、ＤＳＰタイル７０６は適切な数のプログラマブルインターコネクト要素に加えてＤＳＰロジック要素を含むことができる。ＩＯＢ７０４は、プログラマブルインターコネクト要素（ＩＮＴ７１１）の１つのインスタンスに加えて入力／出力ロジック要素（ＩＯＬ７１５）の２つのインスタンスを含むことができる。当業者にとっては明らかであるように、たとえばＩ／Ｏロジック要素７１５に接続される実際のＩ／Ｏパッドは、さまざまな図示されたロジックブロック上に層形成された金属を用いて製造され、典型的には入力／出力ロジック要素７１５の領域に限定されない。
【００５０】
図示された実施の形態において、ダイの中心近くの縦領域（図７において網かけで示す）は、コンフィギュレーション、クロックおよび他の制御ロジックのために用いられる。この列から延びる水平領域７０９は、ＦＰＧＡの幅を横切るクロックおよびコンフィギュレーション信号を分配するために用いられる。
【００５１】
図７に示されたアーキテクチャを利用するいくつかのＦＰＧＡは、ＦＰＧＡの大部分を形成する規則的な列構造を満たす、付加的なロジックブロックを含む。その付加的なロジックブロックは、プログラマブルブロックおよび／または専用ロジックとされることができる。たとえば、図７に示されたプロセッサブロックＰＲＯＣ７１０は、ＣＬＢおよびＢＲＡＭの複数の列に及ぶ。
【００５２】
図７は、単に例示的なＦＰＧＡアーキテクチャを示すことを意図していることに注意すべきである。１列中のロジックブロックの数、列の相対的な幅、列の数および順序、列に含まれるロジックブロックの種類、ロジックブロックの相対的なサイズ、図７の上部に含まれる相互接続／ロジック構成は、純粋に例示的なものである。たとえば、実際のＦＰＧＡにおいては、ユーザロジックの効率的な構成を促進するために、ＣＬＢが現れるところではどこでも、ＣＬＢの１以上の隣り合う列が典型的に含まれる。
【００５３】
プログラムコードで構成された１以上のプロセッサおよびメモリ構成を含むさまざまな代替的な演算構成が、異なる実施の形態のプロセスおよびデータ構造を穂スティングするために適しているであろうことを、当業者は理解するであろう。
【００５４】
図８は、本明細書で説明されるプロセスが汎用目的プロセッサを用いて実現され得る例示的な演算構成のブロック図である。当業者は、１以上のプロセッサおよびプログラムコードで構成されたメモリ構成を含むさまざまな代替的な演算構成が、プロセスおよびデータ構造をホスティングするとともに１以上の実施の形態のアルゴリズムを実現するために適切なものとなるかもしれないことが理解されるであろう。プロセッサが実行可能なフォーマットで符号化されたプロセスを含むコンピュータコードが記憶され得るとともに、磁気または光ディスクまたはテープ、電子記憶装置、またはネットワークでのアプリケーションサービスのようなさまざまなコンピュータ読取可能な記憶媒体または配信チャネルを介して提供され得る。
【００５５】
プロセッサ演算構成８００は、１以上のプロセッサ８０２と、クロック信号生成器８０４と、メモリユニット８０６と、記憶ユニット８０８と、ホストバス８１２に結合された入力／出力制御ユニット８１０とを含む。構成８００は、回路ボード上の別々の構成要素で実現されてもよく、あるいは集積回路の中で実現されてもよい。集積回路の中で実現される場合、プロセッサ演算構成は、マイクロコントローラとして知られる。
【００５６】
コンピュータ構成のアーキテクチャは、当業者によって認識されている実現の要請に依存する。プロセッサ８０２は、１つ以上の汎用目的プロセッサ、または１つ以上の汎用目的プロセッサと適切なコプロセッサとの組合せ、あるいは１つ以上の専用プロセッサ（たとえばＲＩＳＣ，ＣＩＳＣ，パイプライン他）であり得る。
【００５７】
メモリ構成８０６は、典型的には複数レベルのキャッシュメモリとメインメモリとを含む。記憶構成８０８は、磁気ディスク（図示せず）、フラッシュ、ＥＰＲＯＭ、または他の不揮発性データ記憶によって与えられるようなローカルおよび／またはリモートの永久的記憶装置を含んでもよい。記憶ユニットは、読取可能または読取／書込可能であってもよい。さらに、メモリ８０６と記憶装置８０８とは、単一の構成に組合されてもよい。
【００５８】
プロセッサ構成８０２は、記憶装置８０８および／または記憶装置８０６におけるソフトウェアを実行し、記憶装置８０８および／または記憶装置８０６からデータを読出すとともにデータを記憶し、入力／出力制御構成８１０を介して外部デバイスと通信する。これらの機能は、クロック信号生成器８０４によって同期される。演算構成の資源は、オペレーティングシステム（図示せず）またはハードウェア制御ユニット（図示せず）のいずれかによって管理されてもよい。
【００５９】
１つ以上の実施の形態が、プログラマブルロジックを実現するさまざまなデバイスおよび回路設計に適用可能であると考えられる。他の局面および実施の形態は、この明細書の中で開示される実施例の実現と明細書の考慮から当業者にとって明らかであるだろう。明細書および図示された実施の形態は、例示のみと見なされることを意図しており、発明の真の範囲および精神は、続く請求項によって示される。
【図１−１】
0005586780.tif 000002
【図１−２】
0005586780.tif 000003
【図１−３】
0005586780.tif 000004
【図２】
0005586780.tif 000005
【図３】
0005586780.tif 000006
【図４−１】
0005586780.tif 000007
【図４−２】
0005586780.tif 000008
【図５】
0005586780.tif 000009
【図６】
0005586780.tif 000010
【図７】
0005586780.tif 000011
【図８】
0005586780.tif 000012