【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本出願は、2004年5月19日出願の米国特許出願第10/848,953号、代理人整理番号第ALTR:026号の発明の名称「Apparatusand Methods for Adjusting the Performance of Programmable LogicDevices」の一部継続出願であり、それを参考として援用する。
【0002】
発明コンセプトは、一般に、プログラマブルロジックデバイス(PLD)を含む集積回路(IC)の性能の調整に関する。
【背景技術】
【0003】
PLDは、設計者のみならずエンドユーザーにも柔軟性を提供するユビキタスな電子デバイスである。電子回路またはシステムの設計サイクル時、設計者は、設計ごとにPLDを単純に再プログラムすることによって、比較的多くの回数の設計反復を実行し得る。従って、設計サイクルの長さと費用は、他の代案と比較して減少する。同様に、エンドユーザーは、PLDを含む設計の機能性に対するコントロールの所望のレベルを有し得る。PLDを実地にまたはリアルタイムベースでさえプログラムすることによって、ユーザーは、回路またはシステムが動作する方法を変更し得る。
【0004】
ますます複雑化する設計を収容するため、現代のPLDは比較的多数のトランジスタを含む。さらにユーザーは、ますます高い性能を要求し、結果的に、より大きな動作周波数となる。その結果、PLDの消費電力、ワット損、ダイ温度、および従って、電力密度(種々の回路またはブロックのワット損)は、増加する傾向である。しかし、出力密度を上げていくと、PLDの設計とインプリメンテーションを非現実的または故障しやすくする。調整可能な消費電力および性能を特徴とするPLDに対する必要性が存在する。さらに、汎用IC内のトランジスタの性能(リーク、速度、およびワット損)を直接コントロールする必要性が存在する。
【発明の開示】
【課題を解決するための手段】
【0005】
(要約)
開示された新しいコンセプトは、たとえば、速度と消費電力をトレードオフすることによって、PLDの性能を調整するための装置および方法に関する。発明のコンセプトの一局面は、PLDの性能を調整するための装置に関する。一実施形態において、ユーザーの回路をインプリメントするように構成されたPLDは、遅延回路およびボディバイアスジェネレータを含む。遅延回路は、PLDにおいてインプリメントされるユーザーの回路の遅延を表す遅延を有する。ユーザーの回路は、少なくとも一つのトランジスタを含む。ボディバイアスジェネレータは、遅延回路の伝播遅延から引き出された量に応答し、ユーザーの回路におけるトランジスタのボディバイアスを調整する。
【0006】
別の実施形態において、PLDは、基準トランジスタ、電流測定回路、およびボディバイアスジェネレータを含む。基準トランジスタは、PLD内の回路に関係する電流を供給する。電流測定回路は、基準トランジスタによって供給される電流を測定し、測定された電流信号をボディバイアスジェネレータに供給する。ボディバイアスジェネレータは、測定された電流信号から少なくとも一つのボディバイアス信号を引き出し、ボディバイアス信号をPLDの回路に供給する。
【0007】
さらに別の実施形態において、PLDは、複数のユーザー回路および複数のボディバイアスジェネレータを含む。ユーザー回路の各々は、PLDにおいてインプリメントされる。複数のボディバイアスジェネレータの少なくとも一つは、ユーザー回路の少なくとも一つ内のトランジスタのボディバイアスを選択的に調整するように構成される。
【0008】
発明コンセプトの別の局面は、PLDの性能を調整し、ユーザーの回路をインプリメントするためにPLDを使用することの方法に関する。一実施形態において、電子回路をインプリメントするためにPLDを使用する方法は、設計を生成するために電子回路をPLD内の機能リソースにマッピングすること、および生成された設計の少なくとも一つの部分内の信号伝播遅延を表す遅延からボディバイアス値を引き出すことを含む。方法はさらに、生成された設計の部分内の少なくとも一つのトランジスタのボディバイアスレベルをボディバイアス値にプログラムすることを含む。
【0009】
別の実施形態において、PLD内で実施される回路におけるトランジスタのリークレベルを調整する方法は、トランジスタのリーク電流を表す電流を得ること、および得られた電流からボディバイアスレベルを引き出すことを含む。方法はさらに、トランジスタのバイアスレベルを引き出されたボディバイアスレベルに調整することを含む。
【0010】
さらに別の実施形態において、PLDにおける少なくとも一つの回路領域においてユーザー回路を実現する方法は、回路領域において少なくとも一つのトランジスタのボディバイアスレベルを選択し、PLD内における回路領域の初期配置を生成することを含む。方法はさらに、既存のボディバイアスレベルおよび配置が所定の性能基準を満たさない場合、回路領域においてトランジスタに印加されるべきボディバイアスレベルを少なくとも1回別のレベルに変更することを含む。
【0011】
添付の図面は、発明の例示的実施形態を示すに過ぎなく、従って、発明の範囲を制限するものと考えられるべきではない。本発明の記述からメリットを享受する当業者は、開示された発明のコンセプトがその他の等しく有効な実施形態に役立つことを理解する。図面において、二つ以上の図面において使用される同じ数字符号は、同じ、同様な、または同等な機能性、コンポーネント、またはブロックを示す。
【発明を実施するための最良の形態】
【0012】
(詳細な説明)
本発明コンセプトは、調整可能な出力および性能を特徴とするPLDのための装置および関連方法を意図する。発明コンセプトは、従来のPLDが被っている過度の出力密度レベルを克服するのを助ける。さらに、本発明に従い、PLDの所望の部分またはすべての性能レベルを調整し得る(すなわち、個別のトランジスタからPLD全体に至るまでの範囲にわたる粒状ベースで)。
【0013】
より具体的には、以下に詳細に記述されているように、発明コンセプトは、PLD内の個別のトランジスタまたはトランジスタのグループのボディバイアスまたはウェルバイアスの設定、プログラム、または調整を意図する。ボディバイアスを調整することは、トランジスタの消費電力および性能を変動させる。
【0014】
この発明コンセプトは、従来のインプリメンテーション対して以下の利点を提供する。第1に、発明コンセプトは、性能と消費電力とのトレードオフ、または性能―消費電力のトレードオフの最適化を可能にする。第2に、PLDのクリティカル回路パスまたは部品において、必要に応じ、それらの性能を向上させるために、ボディバイアスレベルを選択的に設定し、プログラムし、または、調整し得る。逆に、非クリティカル回路パスまたはPLDのパーツにおいて、ボディバイアスレベルを選択的に設定し、プログラムし、または、調整し得、従って、それらの消費電力を減少させ、それらの出力密度を低下させ得る。
【0015】
さらに、PLD内で使用しない部品または回路を遮断または不能にし得、それによって、それらの消費電力を減少させ、それらの出力密度を低下させ得る。また、熱暴走を防ぐ(またはその可能性を減少させる)ために、発明コンセプトを採用し得る。より具体的には、従来のPLDにおいて、比較的高速で動作する回路は、より多くの電力を消費する傾向があり、その結果、PLDの温度上昇を招く。消費電力の増加は、これらの回路がさらに多くの電力を消費させる原因になり得る。このプラスのフィードバックメカニズムは、出力密度を不安全なまたは破壊的なレベルまで増加させ得る。
【0016】
図1は、発明の例示的実施形態に従う、PLD103の汎用ブロック図を示す。PLD103は、構成回路網130、構成メモリ133、制御回路網136、プログラマブルロジック106、プログラマブル相互接続109、およびI/O回路網112を含む。さらに、PLD103は、必要に応じ、テスト/デバッグ回路網115、一つ以上のプロセッサ118、一つ以上の通信回路網121、一つ以上のメモリ124、一つ以上のコントローラ127を含み得る。
【0017】
図1は、PLD103の簡略なブロック図を示すことに注意されたい。このように、PLD103は、当業者が理解するように、その他のブロックおよび回路網を含み得る。そのような回路網の例は、クロック発振および分配回路、冗長回路などを含む。さらに、PLD103は、必要に応じ、アナログ回路網、その他のディジタル回路網、および/または混合モード回路網を、含み得る。
【0018】
プログラマブルロジック106は、ルックアップテーブル(LUT)、プロダクトタームロジック、マルチプレクサ、ロジックゲート、レジスタ、メモリなどの構成可能なロジック回路網またはプログラマブルロジック回路網のブロックを含む。プログラマブル相互接続109は、プログラマブルロジック106に結合し、プログラマブルロジック106内の種々のブロックとPLD103内または外部のその他の回路網との間の構成可能な相互接続(結合メカニズム)を提供する。
【0019】
制御回路網136は、PLD103内の種々の動作を制御する。制御回路網136の監視の下に、PLD構成回路網130は、PLD103の機能性をプログラム、または、構成するために、構成データを使用する(PLD構成回路網は、そのデータをストレージデバイス、ホストなどの外部ソースから得る)。本発明の記述の助けをもって当業者が理解するように、構成データは、プログラマブルロジック106およびプログラマブル相互接続109をプログラムすることによって、PLD103の機能性を決定する。
【0020】
本発明の記述のたすけを有する当業者が理解するように、I/O回路網は、幅広い様々のI/Oデバイスまたは回路を構成する。I/O回路網112は、PLD103の種々の部品、たとえば、プログラマブルロジック106およびプログラマブル相互接続109など、に接続する。I/O回路112は、外部回路またはデバイスと通信するために、PLD103内の種々のブロック用の機構および回路網を提供する。
【0021】
テスト/デバッグ回路網115は、PLD103内の種々のブロックおよび回路のテストおよびトラブルシューティングを容易にする。テスト/デバッグ回路網115は、本発明の記述のたすけを有する当業者に知られている種々のブロックまたは回路を含み得る。たとえば、テスト/デバッグ回路網115は、必要に応じ、PLD103のパワーアップまたはリセット後のテストを実行する回路を含み得る。テスト/デバッグ回路網115はまた、必要に応じ、コーディングおよびパリティ回路も含む。
【0022】
上記されるように、PLD103は、一つ以上のプロセッサ118を含み得る。プロセッサ118は、PLD103内のその他のブロックおよび回路に結合し得る。本発明の記述のたすけをもって当業者が理解するように、プロセッサ118は、PLD103内のまたは外部の回路からデータおよび情報を受け取り得、幅広い様々の方法で情報を処理し得る。一つ以上のプロセッサ118は、ディジタル信号プロセッサ(DSP)を構成し得る。DSPは、必要に応じ、圧縮、圧縮解除、音声処理、映像処理、フィルタリングなどの幅広い様々の信号処理タスクの実行を可能にする。
【0023】
PLD103はまた、一つ以上の通信回路網121も含み得る。本発明の記述からメリットを享受する当業者は理解するように、通信回路網121は、PLD103内の種々の回路とPLD103の外部の回路との間のデータおよび情報の交換を容易にし得る。一例として、通信回路網121は、必要に応じ、種々のプロトコル機能性(たとえば、伝送制御プロトコル/インターネットプロトコル(TCP/IP)、ユーザデータグラムプロトコル(UDPなど)を提供し得る。別の例として、通信回路網121は、必要に応じ、ネットワーク(たとえば、イーサネット(登録商標)、トークンリングなど)またはバスインターフェース回路網を含み得る。
【0024】
PLD103はさらに、一つ以上のメモリ124および一つ以上のコントローラ127を含み得る。メモリ124は、PLD103内の種々のデータおよび情報(ユーザーデータ、中間結果、計算結果など)の格納を可能にする。メモリ124は、必要に応じ、粒状形またはブロック形を有し得る。コントローラ127は、PLDの外部の回路網の動作および種々の機能にインタフェースし、制御することを可能にする。たとえば、コントローラ127は、必要に応じ、外部の同期ダイナミックランダムアクセスメモリ(SDRAM)にインタフェースし、制御するメモリコントローラを構成し得る。
【0025】
PLD103内の回路網のブロックは、多数のトランジスタを含む。より具体的には、トランジスタは、必要に応じ、n型MOS(NMOS)、p型MOS(PMOS)、相補型MOS(CMOS)、または、部分空乏シリコンオンインシュレータ(SOI)MOSトランジスタ(またはこれらの種類のトランジスタの組み合せ)などの金属酸化物半導体(MOS)トランジスタを構成する。
57 図2は、本発明に従う、例示的な実施形態において使用されるMOSトランジスタを示す。MOSトランジスタは、本体(または基板)領域203、ソース領域206、ドレイン領域209、ゲートインシュレータ215、およびゲート212を含む。動作の飽和領域におけるMOSトランジスタのドレイン電流は、トランジスタの閾値電圧およびゲートからソースへの電圧に依存し、
iD=K(νGS-VT)2 (1)
である。ここで、
iD=全ドレイン電流(すなわち、ACおよびDC成分を含む)
K=定数
νGS=ゲートからソースへの全電圧(すなわち、ACおよびDC成分を含む)、および
VT=閾値電圧
である。
【0026】
閾値電圧VTは、トランジスタのソース領域206と本体領域203との間の電圧などの多数の要因に依存する。下記の等式は、本体からソースへの電圧の関数としての閾値電圧を提供する:
【0027】
【数1】
イメージ ID=000003
代わりに、ソースから本体への電圧の点から、等式2Aは:
【0028】
【数2】
イメージ ID=000004
と書き得る。ここで、
VT(0)=ソースから本体(または本体からソース)への電圧が0にセットされた閾値電圧
γ=本体係数で、本体のドーピングレベルに依存する定数
ΦF=定数
νBS=本体からソースへの全電圧(すなわち、ACおよびDC成分を含む)、および
νSB=ソースから本体への全電圧(すなわち、ACおよびDC成分を含む)
である。本体からソースへの電圧、νBS(または、ソースから本体への電圧、νSB)が0に等しいとき、閾値電圧VTは、VT(0)に等しいことに注意されたい。
【0029】
等式2Bが示すように、有限本体係数γに関して、ソースから本体への電圧、νSB、が増加すると、トランジスタの閾値電圧は増加する。しかし、等式(1)は、特定のゲートからソースへの電圧に関して、閾値電圧における増加は、トランジスタのドレイン電流iDを減少させることを示す。換言すると、等式1および2Bに従って、定数のゲートからソースへの電圧νGSに関して、ソースから本体への電圧νSBにおける増加は、閾値電圧、VTにおける増加の原因になる。
【0030】
増加した閾値電圧VTは、今度は、量(νGS―VT)における減少の原因となり、その結果、トランジスタのドレイン電流iDにおける減少となる。このように、ゲートからソースへの一定の電圧νGSに関して、ソースから本体への電圧νSBにおける増加は、トランジスタの電流駆動能力(性能の一つの基準)における減少の原因となる。トランジスタの減少した電流駆動能力は、今度は、回路動作を遅くすることになり、最終的には、トランジスタを含むPLDの動作を遅くする。
【0031】
トランジスタのワット損もまた、その閾値電圧における変化に従って、変動する。より具体的には、閾値電圧が小さくなると、トランジスタのOFF状態のリーク電流(Ioff)が増加する。逆もまた同様である。トランジスタのIoffは、そのスタティック(非スイッチング)のワット損に影響する。さらに、より小さい閾値電圧は、トランジスタのダイナミックまたはスイッチングワット損を増加させる。このように、ボディバイアスを調整することによって閾値電圧を変化させると、MOSトランジスタのワット損に影響する。
【0032】
さらに、所定の供給電圧、VDD、に関して、閾値電圧、VT、における増加は、トランジスタがパストランジスタとして動作するときに、トタンジスタが伝導し得る最大電圧を制限する。換言すると、閾値電圧、VT、が、ゲートからソースへの電圧νGSに等しいかまたは超える点まで増加する場合、ドレイン電流は0に減少する。このように、トランジスタのドレインに印加される電圧、たとえば、ロジック1レベルに対応する電圧は、トランジスタのソースに適切に伝導しない。その結果、トランジスタは、パストランジスタとして信頼性をもって動作しない。
【0033】
上記に示すように、MOSトランジスタのボディバイアス、従ってトランジスタのソースから本体への電圧を調整することによって、MOSトランジスタの性能に影響を及ぼし得る(最終的には、閾値電圧における変化の結果を招く)。ボディバイアスを調整すると、電流駆動能力、動作速度、ワット損、などの性能基準に影響する。
【0034】
上記のように、発明に従う実施形態において、必要に応じ、PLD内の個々のトランジスタ、個々の回路またはブロック、トランジスタまたはブロックのグループ、またはPLD全体までのボディバイアスを調整し得る。さらに、必要に応じ、個々のNMOSおよびPMOSトランジスタのボディバイアス、または、NMOSおよびPMOSトランジスタのグループのボディバイアスを調整し得る。以下の説明は、詳細を提供する。
【0035】
図3は、発明の例示的実施形態に従うPLD103の平面図を示す。PLD103は、二次元アレイとして配置されているプログラマブルロジック106を含む。水平相互接続および垂直相互接続として配置されたプログラマブル相互接続109は、プログラマブルロジック106のブロックを互いに結合する。必要に応じ、プログラマブルロジック106の各ブロック、プログラマブル相互接続109の各セグメント、またはその両方のボディバイアスを調整し得る。さらに、必要に応じ、プログラマブルロジック106の一つ以上のブロックの部分、プログラマブル相互接続109の部分、またはその両方のボディバイアスを調整し得る。
【0036】
例示的実施形態において、発明に従うPLDは、階層アーキテクチャを有する。換言すると、図3のプログラマブルロジック106の各ブロックは、今度は、より小さいかまたはより多い粒状のプログラマブルロジクブロックまたは回路を含み得る。必要に応じ、PLDの階層アーキテクチャの各レベルにおけるトランジスタのボディバイアスを調整し得る。
【0037】
図4は、発明の例示的な実施形態に従うPLDにおけるプログラマブルロジック106のブロック図を示す。プログラマブルロジック106は、論理要素またはプログラマブルロジック回路250、ローカル相互接続253、インタフェース回路256およびインタフェース回路259を含む。本発明の記述からメリットを享受する当業者は理解するように、論理要素250は、構成可能なロジック機能またはプログラマブルロジック機能、たとえば、LUT、レジスタ、プロダクトタームロジックなどを提供する。ローカル相互接続253は、必要に応じ、論理要素250が互いにまたはプログラマブル相互接続109(「グローバル相互接続」と呼ばれることがある)に結合するように構成可能なメカニズムまたはプログラマブルメカニズムを提供する。
【0038】
インタフェース回路256およびインタフェース回路259は、回路網のプログラマブルロジック106がプログラマブル相互接続109(および従って、図3に示すように、その他のプログラマブルロジック106)に結合するように、構成可能な方法またはプログラマブルな方法を提供する。本発明の記述からメリットを享受する当業者は理解するように、インタフェース回路256およびインタフェース回路259は、マルチプレクサ(MUX)、レジスタ、バッファ、ドライバなどを含み得る。
【0039】
必要に応じ、PLD103(図1、図3、および図4を参照)内の回路網の各部分またはブロックのボディバイアスを調整し得る。さらに、必要に応じ、個々または集合的ベースで、回路網の各部分またはブロックのボディバイアスを他に無関係に調整し得る。回路網の各部分またはブロック内で、必要に応じ、個々または集合的ベースで、各サブブロックまたはトランジスタのボディバイアス、またはサブブロックまたはトランジスタのグループのボディバイアスを調整し得る。
【0040】
たとえば、発明の例示的な実施形態に従い、PLD内の下記の回路網のすべてまたは部分のボディバイアスを調整し得る:図1の一つ以上のブロック(たとえば、プログラマブルロジック106、プログラマブル相互接続109など);一つ以上のプログラマブルロジックブロック106内の一つ以上の論理要素250;一つ以上のプログラマブルロジックブロック106内の一つ以上のインタフェース回路256および/または259;一つ以上のプログラマブルロジック106内の一つ以上のローカル相互接続;および一つ以上のインタフェース回路256および/または259内の一つ以上のMUX、ドライバ、バッファなど。
【0041】
上記のとおり、ボディバイアス調整を、粒状度の任意の所望レベルで、行い得る。換言すると、必要また適用可能に応じ、個々のトランジスタ、トランジスタのグループ、サブブロック、ブロックまたはPLD全体に適用可能な調整を行い得る。たとえば、必要に応じ、一つ以上のNMOSトランジスタのボディバイアス調整を、一つ以上のPMOSトランジスタに無関係に、行い得る。
【0042】
さらに、必要に応じ、PLD103内の一つの要素のボディバイアスを、その他のすべての要素に無関係に、調整し得る。本発明の記述からメリットを享受する当業者は理解するように、必要に応じ、PLDのいくつかの部品のボディバイアス調整を行い得、さらにPLDのその他の部品の固定またはデフォルトのボディバイアスを提供し得る。
【0043】
ボディバイアス調整の粒状度の例として、2入力、1出力のMUXを考慮されたい。図5は、ボディバイアス調整を含む発明の例示的実施形態に従うPLDにおいて使用されるMUXを示す。MUXは、トランジスタ275およびトランジスタ278を含む。MUXは、回路Aから信号を受信し、別の信号を回路Bから受信する。選択信号、S、およびそのコンプリメントS’に応答し、MUXは、回路Aまたは回路Bのいずれかからの信号を回路C(MUXの出力に結合された)に伝送する。
【0044】
トランジスタ275およびトランジスタ278のボディバイアスは多数の方法で調整し得る。第1に、ボディバイスを調整しないことを選択し得る(たとえば、PLD内のデフォルトボディバイアスを使用する)。第2に、トランジスタ275のボディバイアスをトランジスタ278のボディバイアスと同レベルに調整し得る。代案として、トランジスタ275およびトランジスタ278のみのボディバイアスを調整し得る。別の選択として、トランジスタ275およびトランジスタ278の各々のボディバイアスを個々に調整し得る。
【0045】
従って、MUXの性能特性を柔軟性ある方法で構成し得る。他の方法では、MUXの動作速度、電流駆動能力、およびワット損のバランスまたはトレードオフを、互いに対して、行い得る。さらなる例として、ボディバイアス調整コンセプトを、MUXのトランジスタの一セット、特定の信号ルート(たとえば、特定の入力に対応した信号伝送ルーティング)、パストランジスタの一セット(たとえば、プログラマブルルーティングにおけるパストランジスタ一セットで、それが、構成メモリビット数を節約するためにその他のパストランジスタのセットによって共有されたMUXに入力する)、などに広げ得ることに注意されたい。
【0046】
上記のとおり、ユーザーは、本発明に従い、PLDの種々の部分のボディバイアスを調整し得る。ユーザーは、PLDの設計をマッピングするために使用されるソフトウェアを使用することによって、そのように行い得る。図6Aは、発明の例示的実施形態に従うPLDコンピュータ支援設計(CAD)ソフトウェアが使用する種々のソフトウェアモジュールを示す。モジュールは、設計入力モジュール305、合成モジュール310、プレース・ルートモジュール315、および検査モジュール320を含む。
【0047】
設計入力(design-entry)モジュール305は、多様な設計ファイルの統合を可能にする。ユーザーは、必要に応じ、設計入力モジュール305を使用することによってまたは種々の電子設計オートメーション(EDA)またはCADツール(業界標準のEDAツールなど)を使用することによって、設計ファイルを生成し得る。ユーザーは、必要に応じ、グラフ形式、波形ベース形式、スケマティック形式で、テキストまたはバイナリ形式で、またはこれらの形式の組み合わせで、設計を入力し得る。
【0048】
合成モジュール310は、設計入力モジュール305の出力を受け取る。ユーザー提供の設計に基づき、合成モジュール310は、ユーザー提供の設計を実現する適切なロジック回路網を生成する。一つ以上のPLD(明白には示されてない)は、合成された全体設計またはシステムを実行する。合成モジュール310はまた、ユーザーの設計における種々のモジュールの統合および適切な動作およびインタフェースを可能にする任意のグルー(glue)ロジックも生成し得る。たとえば、合成モジュール310は、一つのブロックの出力が別のブロックの入力と適切にインタフェースするように、適切なハードウェアを提供する。合成モジュール310は、全体設計またはシステムにおいてモジュールの各々の仕様に合致するように、適切なハードウェアを提供する。
【0049】
さらに、合成モジュール310は、合成された設計を最適化するためのアルゴリズムおよびルーチンを含み得る。最適化によって、合成モジュール310は、全体設計またはシステムを実行する一つ以上のPLDのリソースをより効率的に使用するよう努める
。合成モジュール310は、プレース・ルートモジュール315への出力を提供する。
【0050】
プレース・ルートモジュール315は、最適なロジックマッピングおよび配置を行うため、設計者のタイミング仕様を使用する。ロジックマッピングおよび配置は、PLD内のルーティングリソースの使用を決定する。換言すると、設計の所定の部品のためにPLDとの特定のプログラマブル相互接続を使用することによって、プレース・ルートモジュール315は、全体設計またはシステムの性能の最適化を支援する。PLDルーティングリソースを適切に使用することによって、プレース・ルートモジュール315は、全体設計またはシステムのクリティカルタイミングパスを満たすように支援する。プレース・ルートモジュール315は、本発明の記述からメリットを享受する当業者に知られている方法より速く、クリティカルタイミングパスを最適化し、タイミング閉止の提供を支援する。その結果、全体設計またはシステムは、より速い性能(すなわち、より高いクロックレイトまたはより高いスループットでの動作)を達成し得る。
【0051】
さらに、プレース・ルートモジュール315は、設計およびシステムを実行するPLDの部分またはすべてのボディバイアスを調整する。プレース・ルートモジュール315は、それを自動的に行うか、ユーザー指定の基準に従って行うか、またはその二つの組み合わせに従って、行い得る。プレース・ルートモジュール315は、ユーザー指定の基準(たとえば、ワット損、速度、および/または電流駆動能力などの性能仕様)を使用し得る。さらに、または、その代わりに、プレース・ルートモジュール315は、必要に応じ、設計またはシステムのパーツまたはすべてのボディバイアスを調整するために、設計またはシステム内のクリティカルパスに関する情報を使用し得る。
【0052】
たとえば、プレース・ルートモジュール315は、より高い性能を達成するために、設計またはシステムのクリティカルパーツのボディバイアスを調整し得る。プレース・ルートモジュール315は、必要に応じ、パワーおよび性能のトレードオフを行うために、ワット損基準(たとえば、最大出力密度)を考慮に入れ得る。プレース・ルートモジュール315は、検査モジュール320に対する最適な設計を提供する。
【0053】
検査モジュール320は、設計のシミュレーションおよび検査を実行する。シミュレーションおよび検査は、設計がユーザーの規定した仕様に従うことを検査することをその一部において努める。シミュレーションおよび検査はまた、設計を試作する前に、すべての設計問題を検出し、修正することを意図する。このように、検査モジュール320は、ユーザーが全体設計またはシステムの総コストを削減し、市場へ出すまでの時間を短縮するよう支援する。
【0054】
検査モジュール320は、必要に応じ、種々の検査およびシミュレーションオプションを支持し、実行し得る。オプションは、必要に応じ、設計規則チェック、機能上の検査、テストベンチ(test-bench)生成、スタティックタイミング解析、タイミングシミュレーション、ハードウェア/ソフトウェアシミュレーション、システム内検査、ボードレベル(board-level)タイミング解析、信号の完全性分析および電磁環境適合性(EMC)、形式的なネットリスト検査、および消費電力推定を含み得る。必要に応じ、また本発明の記述からメリットを享受する当業者は理解するように、他のまたは追加の検査技術が実行し得ることに注意されたい。上記のとおり、発明に従うPLDアーキテクチャおよび回路網は、ユーザーが、PLDまたはPLDの領域において、速度を犠牲にしてリーク(および従って、ワット損)に対処できる能力を提供する。ユーザーがこの機能性を使用することをできるだけ便利にするために、発明の例示的実施形態に従うPLDCADは、ユーザーの仕様と基準を自動的に満たすように、回路網を自動的に構成し得る。さらに、ユーザーの回路への速度への影響を最小にしながらリーク減少を最大にするため、発明の種々な実施形態に従うPLDCADは、ユーザー回路のインプリメンテーション時にバイアス領域の存在を考慮し、バイアス領域の有効性を最大にするように回路を最適化する。以下の説明は、PLD CADの機能性の詳細を提供する。
【0055】
基板バイアスを最高に活用するタイミング駆動のPLDCADシステムに関して、設計インプリメンテーション時に、そのシステムが、PLDまたはPLDの各領域(一つ以上のトランジスタを含み得る)に対して基板バイアスを推定すべきである。PLDCADは、設計のタイミング分析時にボディバイアスを考慮に入れる。このように、ボディバイアスレベルは、タイミングの観点から設計のどの部分がクリティカルになるかについて影響する。
【0056】
最初、CADシステムは、ユーザーが一つ以上のトランジスタのボディバイアスレベルの設定またはプログラムを望むPLDの各領域に対して、あるボディバイアスレベル(および従って、リーク/速度設定)を想定する。一つの可能性ある選択として、PLDCADは、すべての影響を受けた領域が比較的低速度設定(すなわち、比較的低リークレベルの結果となるボディバイアス)を使用すると想定し得る。PLDCADシステムは、PLD回路網の初期配置を提供する。配置は、その初期配置の反復の改善によって、進行する。
【0057】
この反復の改善手順の種々の時点において、PLDCADは、回路の速度を推定し、関係するすべての接続に対してタイミングスラック値を計算する。タイミングスラック値の計算は、遅延を推定するときに、各領域に対して選ばれた現在のボディバイアスレベルを考慮に入れる。PLDCADは、ボディバイアス選択を配置の反復の改善にインタリーブすることに注意されたい。PLDCADは、より高速な(および対応するより高いリークの)ボディバイアス設定への変換のため、より小さい平均および最悪ケースの接続スラック値を有する回路の部分を含む領域を評価する。CADソフトウェアは、一つ以上の領域について新候補バイアス設定を選択し、回路タイミングの点から新設定の総原価、ならびにリーク電流および/または漏れ電力における全増加を推定することによって、バイアス設定を評価する。新バイアス設定が、領域におけるすべての接続についてプラスのスラック値に導く場合(または、領域におけるより少ないマイナススラックレベル)、PLD CADは、一般に、新バイアス設定を採用する。
【0058】
同様に、CADソフトウェアは、より低速度のボディバイアス設定への変換のために、現在比較的高いバイアス設定を有する領域で、すべての接続がプラスのスラック値を有する領域を評価する。新ボディバイアス採用することが、どの回路タイミング基準に対しても違反を引き起こすことにならない場合、CADソフトウェアは、新ボディバイアス設定を採用する。
【0059】
一つ以上のバイアス設定を変更次第、反復配置改善は、変更されたバイアス設定によって発生するすべての起こりうるタイミングの懸念または違反を解決する試みを継続し、または、よりタイムクリティカルな回路網をより高速度を有する新しく作成されたバイアス領域に移動するよう試みる。配置とルーティングがユーザーのタイミングおよびパワー目標を満たすときか、または、所望または所定の反復限界に達した(それ以上の改善がなされ得ないように見える)のいずれかのとき、アルゴリズムは終了する。
【0060】
図6Bは、発明の例示的実施形態に従うPLD CADソフトウェアの流れ図を示す。図6Bに示されるPLD CADは、PLDの各領域に対するボディバイアスの選択をタイミング駆動のプレース・ルートCADシステムに組み入れる。
【0061】
より具体的には、330において、PLDCADは、初期領域ボディバイアス設定をセットする。335において、ソフトウェアは初期配置を生成する。次に、338において、ソフトウェアは、現在のボディバイアス設定を反映する遅延推定を使用して、回路網のタイミングを分析する。341において、ソフトウェアは、ユーザーのタイミングおよびパワー目標を満たしたかどうかについて判断する。満たしたと判断する場合、344において、ソフトウェアは、配置およびボディバイアス選択を記録する。満たさなかったと判断する場合、ソフトウェアは、347において、反復限界に達したかどうかをチェックし判断する。達したと判断する場合、ソフトウェアは、344に進み、現在の配置およびボディバイアス選択を記録する。ソフトウェアが反復限界に達していない場合、ソフトウェアは、反復カウント(明白には示されていない)をインクリメントし、350において、少なくともいくつかの領域のバイアス設定を変更する。353において、ソフトウェアは、変更されたボディバイアス設定を反映する遅延推定を使用して回路網のタイミングを分析する。356において、ソフトウェアは、回路の配置を改善し、341に飛び、ユーザーのタイミングおよびパワー目標を満たしたかどうかを判断する。
【0062】
本発明の記述からメリットを享受する当業者は理解するように、本明細書に記述されたアルゴリズムの多くの変種を使用し得る。たとえば、すべての領域を低速または高速に設定するなど、種々の初期ボディバイアスの設定を使用し得る。ソフトウェアが、配置におけるすべてのタイミング仕様を満たすと推定する場合、より大きなプラススラック値を有する接続を含む領域を優先して、高速バイアス領域を低速領域への変換を評価する。いくつかの領域を低速領域に変換後に、ソフトウェアは配置改善を再開する。ソフトウェアは、これらの二つのステップをユーザーのパワーおよびタイミングの目標を満たすまで、反復し得る。
【0063】
第2の例として、ソフトウェアは、ユーザーのチップ平面図からバイアス領域の初期設定を生成し得る。ソフトウェアは、高速動作用の平面図におけるタイムクリティカル領域のためのバイアスを初期設定し、比較的低速動作用のその他の領域のためのバイアスを設定する。ソフトウェアは、次に、バイアス選択のさらなる改善のために、図6Bに示される技術を使用し得る。
【0064】
第3の例として、ソフトウェアは、回路の迅速な配置からボディバイアスの初期設定を生成し、その後続いて、タイミング分析を行い、速度クリティカル領域をその他の領域から識別し得る。配置は、正規の配置を構成し得るか、または、どのボディバイアス領域においてユーザーの回路の各パーツを見つけるかを判断する「粗配置」を構成し得る。ソフトウェアは、次に、これらの初期バイアス設定をさらに改善するために、図6Bのアルゴリズムを使用し得る。
【0065】
第4の例として、配置を開始する前に、ソフトウェアは、回路をボディバイアス領域を構成する比較的大きな回路要素にクラスタ化し得る。クラスタの各々は、タイムクリティカルかまたは非タイムクリティカルである回路網から成り立ち得る。ソフトウェアは、クラスタをPLDのボディバイアス領域を表す粗いグリッド上に配置し得る。ソフトウェアは、次に、ソフトウェア内に置かれた回路網の種類に従い、各領域のバイアスレベルを設定し得る。このように、タイムクリティカルな回路は、比較的高速のボディバイアス設定を受け取り、一方非タイムクリティカル回路は、比較的低速を受け取る。ソフトウェアは、次に、配置を改善するこれらの初期バイアス設定を有する図6Bにあるアルゴリズムを使用し得る。
【0066】
第5の例として、ルーティングアルゴリズムなどの配置アルゴリズム以外のその他のアルゴリズムは、それらのアルゴリズムの遅延推定における所定の領域のボディバイアスを考慮し得る。領域ボディバイアス選択および正規のアルゴリズム最適化をインタリーブすることによって、そのようなアルゴリズムをボディ領域バイアス微同調にインタリーブし得る。
【0067】
一旦、PLDCADが、設計をインプリメントすると(たとえば、設計を合成し、配置し、ルーティングする)、CADソフトウェアは、ボディバイアス回路網(たとえば、ボディバイアス生成回路網、ボディバイアス制御回路網)を正しい状態およびボディバイアスレベルに自動的にセットする。ソフトウェアは、ボディバイアス回路網の動作の詳細およびユーザーの目標によるいくつかの方法によって、その動作を行い得る。
【0068】
一つの代案として、ユーザーが漏れ電力目標を有し、バイアス回路網は、リークロックループ(leakage-lockedloop)(詳細は下記)を組み入れている場合、PLDCADは、漏れ電力がユーザーのワット損目標より少ないか同等になるようにバイアス回路網を設定する。CADソフトウェアは、次に、比較的高温で回路のタイミングを、および、リーク電流の「オン」トランジスタ駆動電流に対する最高比率を有する処理コーナーを、回路がその処理および動作条件においてすべてのタイミング仕様を満たすようにして、解析し得る。代わりに、ユーザーが、すべてのタイミング仕様を満たす条件で、漏れ電力を最小にする目標を有する場合、トランジスタが、最悪の予想される処理および動作コーナーにおいてすべてのタイミングの制限を満たす状況において動作するように、ソフトウェアは、各領域におけるリークロックループを設定し得る。一般に、コーナーは、比較的高温で、および、リーク電流の「オン」トランジスタ駆動電流に対する最高比率を有する処理コーナーにおいて発生する。
【0069】
別の代案として、ユーザーがいくつかのタイミング仕様を満たす条件で電力を最小にする目標を有し、バイアス回路網が遅延ロックループを含む場合、CADソフトウェアは、回路がこれらのタイミング仕様を満たすように、遅延ループを設定またはプログラムし得る。ソフトウェアはそのような動作を、タイミング解析によって各ボディバイアス領域における回路網から最もクリティカルなパスを抽出することによって、行い得る。遅延ロックループがプログラマブル遅延連鎖を使用する場合、ソフトウェアは、それが各ボディバイアス領域における基準連鎖の遅延を、対応するボディバイアス領域のクリティカルパスの名目遅延より大きい名目遅延値に設定するように回路網を設定する。ソフトウェアは、クリティカルパス用ランチ(launch)およびキャプチャエッジを定義する適切なクロック信号を遅延ロック回路網へ伝送する。通例、同じクロック信号は、ランチと捕獲エッジの両方を定義するが、複数の位相および周波数関係クロック信号を有する設計において、別のクロックドメインが、ランチおよび捕獲エッジを定義し得る。遅延ロックループが「ソフト」で、あるPLD回路網にロックする場合、CADシステムは、遅延ロックループの基準遅延として使用されるよう、各バイアス領域に対する各クリティカルパスのできるだけ正確なコピーを行う。
【0070】
さらに代案として、PLDCADは、ボディバイアス回路網をプログラムすることによって、ユーザーに種々の電力と遅延との間のトレードオフの選択を行う能力を与える。その場合、CADソフトウェアは、ユーザーが選んだバイアス設定に従う適切な電力および遅延モデルを調べ、それらのモデルを電力およびタイミング解析において使用する。ソフトウェアは、電力および遅延モデルをより旧式でないようにする(最悪ケース)。これは、ユーザーへの出荷前にデバイスをテストすることによって、またPLD(たとえば、PLD内にある不揮発性メモリ)においてトランジスタ速度およびリークを示すデータを(一般に閾値電圧の形式で)格納することによって、行われる。CADソフトウェアは、プログラム時に、ユーザーの所望の電力遅延トレードオフをデバイスに、なおもプログラムするが、オンチップハードウェアは、この「所望された」トレードオフを格納されたデバイス特性と比較し、トランジスタが所望の電力遅延トレードオフを有するように、適切なボディバイアスレベルを計算し、適用する。
【0071】
図7は、発明の例示的実施形態に従うボディバイアス調整の処理の流れ図を示す。図6Aに関連して記述されたソフトウェアなどのプログラムは、図7における処理を実行する。
【0072】
403において一旦処理が開始すると、処理は、上記、および本発明の記述からメリットを享受する当業者は理解するように、設計またはシステムをインプリメントするPLD内のクリティカル回路パスを識別する。403において、処理は、識別されたクリティカル回路パス内のトランジスタのボディバイアスを調整する。換言すると、処理は、一つ以上のトランジスタまたはトランジスタのセット用の一つ以上のボディバイアスレベルを選択する。次に、406において処理は、クリティカル回路パス用に一つ以上のボディバイアスジェネレータをプログラムまたは構成する。ボディバイアスジェネレータは、403で選択された一つ以上のボディバイアスレベルを生成する。
【0073】
処理は、識別されたクリティカル回路パスまたはブロックだけに限定する必要がないことに注意されたい。その代わり、またはさらに、ユーザーが特定の性能基準を満たすことを希望した回路パスまたはブロックをユーザーは、識別し指定し得る。たとえば、ユーザーは、PLD内でインプリメントされた高速加算器を有することを希望し得る。ユーザーは、加算器をインプリメントするために使用される回路網またはブロックを識別し得、特定のタイミング仕様を満たすために回路網またはブロックのボディバイアスレベルを調整するソフトウェアを指定し得る。ユーザーは、ワット損などのその他の性能仕様または基準を提供し得る。ソフトウェアは、回路パスまたはブロックのボディバイアスレベルを選択するために、種々性能仕様をトレードオフし得る。
【0074】
図8は、所望のPLD回路網またはブロックの調整、プログラムまたは設定するために、発明の例示的実施形態に従うPLD内の回路のブロック図を示す。回路網は、ボディバイアスジェネレータ430、複数の構成メモリ(構成ランダムアクセスメモリ、すなわち、CRAM、またはその他のメモリのインプリメンテーション)セル438A~438D、複数のトランジスタ440A~440D、およびPLD回路445A~445Bを含む。
【0075】
ボディバイアスジェネレータ430は、一つ以上のボディバイアス信号435を生成し、それらの信号をトランジスタ440A~440Dに提供する。CRAMセル438A~438Dにあるデータの各々の一つに応答し、トランジスタ440A~440Dは、ボディバイアス信号435をPLD回路445A~445Bに提供する。PLD回路445A~445Bは、上記の、個別トランジスタ、トランジスタのグループ、回路ブロック回路などの回路でその回路のボディバイアスレベルを設定、プログラム、または調整することが所望される回路網を構成し得る。
【0076】
たとえば、CRAMセル438Aおよび438Cはバイナリ1を格納するが一方、CRAMセル438Bおよび438Dはバイナリ0を格納すると想定されたい。その結果、トランジスタ440Aおよび440Cはオンとなり、ボディバイアス信号435AをPLD回路445A~445Bに供給する。トランジスタ440Bおよび440Dはオフとなり、従ってどの信号もPLD回路445A~445Bに供給しない。
【0077】
別の例として、前の例の逆の状況が存在する(すなわち、CRAMセル438A~438Dがバイナリデータ0,1,0,1をそれぞれ保持する)と想定されたい。この場合、トランジスタ440Aおよび440Cはオフとなり(従って、信号をPLD回路445A~445Bに供給しない)、トランジスタ440Bおよび440Dはオンとなる。その結果、トランジスタ440Bおよび440Dはボディバイアス信号435BをPLD回路445A~445Dに供給する。
【0078】
例示的な実施形態において、CRAMセル438A~438Dは、必要に応じ、複数の目的を扱う。より具体的には、CRAMセル438A~438DはPLD内の種々の回路網(たとえば、PLD回路445Aまたは445B)のボディバイアスを制御し得る。さらに、CRAMセル438A~438DはルーティングCRAMセルとして働き得る。換言すると、ボディバイアスレベルの制御に加えて、CRAMセル438A~438Dの一つ以上は、必要に応じ、MUX内の一つの回路パスを別のパスに優先して選択し得る(すなわち、MUX内の代替のルーティングと反対に、MUX内の一つのルーティングを選択し得る。
【0079】
本発明の記述からメリットを享受する当業者は理解するように、種々の方法でボディバイアスジェネレータ430をインプリメントし得ることに注意されたい。たとえば、バイアスソース(たとえば、種々の公知のバイアスソースの一つ)を使用し得、次に、チャージポンプを使用してボディバイアス信号435を生成し得、その信号は適切または所望のレベルに注入される。別の例として、ボディバイアスレベルに対応して格納されたディジタルデータを使用し得、所望のボディバイアス信号435を生成するために、一つ以上のディジタル-アナログ変換器(DAC)と共に一つ以上のスケーラ回路を使用し得る。
【0080】
ボディバイアスレベルの調整、プログラムまたは設定に加えて、ワット損、および従って、PLDの出力密度を制御するために他の手段を使用し得る。より具体的には、PLD内の回路網の部分を選択的に遮断または電源を切り得る。その結果、PLD内のワット損をさらに減少し得る。
【0081】
図9は、発明の例示的な実施形態に従い、回路網の電源を選択的にオフにするか、あるいは、PLD内の回路網の消費電力を削減または全体的制御するための回路のブロック図を示す。回路は、制御回路網136、トランジスタ450、およびPLD回路445Aを含む。さらに、回路は、トランジスタ450A、トランジスタ453、供給電圧回路456、トランジスタ453AおよびPLD回路445Bを含み得る。
【0082】
PLD回路445Aの遮断を希望すると想定されたい。トランジスタ450はPLD回路445Aを供給電圧VDDに結合する。換言すると、トランジスタ450がオンの場合、PLD回路445Aは供給電圧VDDを受け取る。逆もまた同様である。トランジスタ450は、制御回路網136からの制御信号に応答し、電源をオンおよびオフする。このように、PLD回路445Aの電源をオフするために、制御回路網136をトランジスタ450のゲート信号をデアサート(de-assert)にし、PLD回路445Aへの電源供給を中断させる。その後、制御回路網136の監視の下にトランジスタ450のゲート信号をアサート(assert)することによって、PLD回路445Aの電源をオンにし得る。
【0083】
トランジスタ450の電源をオンまたはオフにするよりはむしろ、トランジスタ450を可変インピーダンスデバイスとして使用するためにトランジスタ450のゲート電圧を制御し得ることに注意されたい。このように、トランジスタ450は、極限において、比較的高いインピーダンス(オフ状態)、比較的低いインピーダンス(オン状態)、または、それらの二状態間のインピーダンスレベルを有し得る。その結果、PLD回路445Aの電源をオフおよびオンするだけでなく、トランジスタ450のインピーダンスを制御することによって、それらの回路内のワット損をも制御する。
【0084】
供給電圧VDDをPLD回路445Aへの供給を制御する(上記のとおり、電源をオン、オフまたはこれらの極限間のどれにでも)トランジスタ450を使用することに加えて、またはその代わりに、供給電圧VSS(代表的には、回路アース)の供給を制御するトランジスタ450Aを使用し得る。本発明の記述からメリットを享受する当業者は理解するように、動作の詳細は、トランジスタ450および供給電圧VDDに関する上記の詳細と同様である。
【0085】
PLD103は、必要に応じ、一つ以上得の供給電圧を使用し得る。換言すると、一次供給電圧VDDから二次供給電圧を生成するために、供給電圧回路456を任意に使用し得る。二次供給電圧459は、必要に応じ、一次供給電圧より小さいまたは大きい絶対値を有し得る。さらに、必要に応じ、二つ以上の供給電圧を使用し得る。二次供給電圧445Bは、PLD回路445Bに電力を供給する。制御回路網136の監視の下に、トランジスタ453のゲート信号をそれぞれ非表明および表明することによって、PLD回路445Bを遮断またはパワーアップし得る。
【0086】
トランジスタ453の電源をオフまたはオンにするよりはむしろ、トランジスタ453を可変インピーダンスデバイスとして使用するためにトランジスタ453のゲート電圧を制御し得ることに注意されたい。このように、トランジスタ453は、極限において、比較的高いインピーダンス(オフ状態)、比較的低いインピーダンス(オン状態)、または、それらの二状態間のインピーダンスレベルを有し得る。その結果、PLD回路445Bの電源をオフおよびオンするだけでなく、トランジスタ453のインピーダンスを制御することによって、それらの回路内のワット損も制御する。
【0087】
二次供給電圧459をPLD回路445Bへの供給を制御する(上記のとおり、電源をオン、オフまたはそれらの極限間のどれにでも)トランジスタ453を使用することに加えて、またはその代わりに、供給電圧VSS(代表的には、回路アース)の供給を制御するトランジスタ453Aを使用し得る。本発明の記述からメリットを享受する当業者は理解するように、動作の詳細は、トランジスタ453および二次供給電圧459に関する上記の詳細と同様である。
【0088】
各PLD回路445Aおよび/またはPLD回路445Bは、必要に応じ、PLDブロック(たとえば、図1、図3、および図4を参照されたい)、PLDブロックの部分、またはPLDブロックの一セットを構成し得ることに注意されたい。換言すると、必要に応じ、電力制御技術を、PLD内の一つ以上のブロック、サブブロック、またはブロックの部分に選択的に適用し得る。
【0089】
PLDの外部ソースに応答し、ボディバイアスレベルを調整、プログラム、または設定し得ることに注意されたい。たとえば、PLDの性能を調整し、修正するために、ボディバイアスレベルをPLDに伝達し得る。図10は、外部ソース470に応答し、PLD内のボディバイアスレベルを調整するための、発明の例示的実施形態に従う回路配置を示す。回路配置は、外部ソース470、通信/インタフェース回路475、およびボディバイアスジェネレータ430を含む。
【0090】
通信/インタフェース回路475は、情報を通信し交換するため、外部ソース470のメカニズムおよびボディバイアスジェネレータ430を提供する。外部ソース470は、一つ以上の制御信号480をPLD103内の通信/インタフェース回路475に提供し得る。通信/インタフェース回路475は、外部ソース470から受け取った情報をボディバイアスジェネレータ430に提供する。それに応答して、ボディバイアスジェネレータ430は、制御信号480に対応するレベルを有する一つ以上のボディバイアス信号435を生成する。通信/インタフェース回路475は、ボディバイアスジェネレータ430(または一般的にはPLD103)からのステータス信号などの情報を外部ソース470に供給する。
【0091】
本発明の記述からメリットを享受する当業者は理解するように、外部ソース470は、種々のデバイス、構造、または配置を構成し得る。本発明の記述からメリットを享受する当業者は理解するように、たとえば、外部ソース470は、必要に応じ、インターネット、コンピュータネットワーク、バスなどを構成し得る。
【0092】
変化する条件(たとえば、性能仕様における変化)を考慮に入れ、それに応答するため、必要に応じ、ダイナミックまたは時間変動ベースで、PLDにおけるボディバイアスレベルを調整、プログラムまたは設定し得ることに注意されたい。一例として、図10を参照すると、外部ソース470は、それがPLD103に供給する制御信号480を更新、または、修正し得る。応答して、ボディバイアスジェネレータ430は、更新されたまたは修正された制御信号480に対応するボディバイアス信号435を供給する。
【0093】
別の例として、PLD103自体内における変化、たとえば、PLD103の一つ以上の回路または領域における温度の変化、に応答して、ボディバイアスレベルを変更または調整し得る。図11は、発明の例示的実施形態に従うPLD内のボディバイアスレベルを修正するための回路配置を示す。
【0094】
回路配置は、一つ以上の温度センサ503、一つ以上の基準ソース512、減算器509、およびボディバイアスジェネレータ430を含む。温度センサ503は、PLD103内の一つ以上の領域、回路またはブロックにおける温度を感知し、温度信号506を減算器509に供給する。基準ソース512は、基準信号515を減算器509に供給する。基準信号515は、種々の温度レベルに対応する数値を有し得る。
【0095】
減算器509は、基準信号515を温度信号506から減じ、差信号518をボディバイアスジェネレータ430に供給する。差信号518は、PLD103の一つ以上のパーツにおける実際の温度と所望温度との間の差を構成し得る。
【0096】
差信号518に応答して、ボディバイアスジェネレータ430は、ボディバイアス信号435を生成する。ボディバイアスジェネレータ430は、PLD103の性能の種々の局面に影響するボディバイアス信号435を生成するために差信号518を使用し得る。たとえば、差信号518が、スレショルド温度または最大温度より低い温度を示す場合、ボディバイアスジェネレータ430は、PLD103内の一つ以上のトランジスタの閾値電圧を減少させる(および従って、性能の向上の原因となる)ボディバイアス信号を生成し得る。対照的に、差信号518が、安全レベルまたは最大レベルより高い温度レベルを示す場合、ボディバイアスジェネレータ430は、PLD103内の一つ以上のトランジスタの閾値電圧を増加させる(従って、性能の劣化にもかかわらず温度レベルの減少の原因となる)ボディバイアス信号を生成し得る。
【0097】
より一般的には、特定の性能基準を目標にして、ボディバイアスレベルを生成するフィードバックループをインプリメントし得る。別の言い方をすると、PLDの実際の性能手段と所望または特定の手段または基準と比較し、それに従い、ボディバイアスレベルを調整、プログラムまたは設定し得る。
【0098】
図12は、発明の例示的実施形態において使用されるPLDにおけるボディバイアスレベルを調整、プログラムまたは設定する処理または技術の流れ図を示す。制御回路網136などの適切な回路網(または、回路網およびソフトウェアまたはファームウェアとの組み合わせ)を使用することによって、処理または技術をインプリメントし得る。
【0099】
処理は以下のとおり動作する。550において、PLDの所望の部分用の初期ボディバイアスレベルを設定またはプログラムする。その後、553で、PLDの性能手段を得る。本発明の記述からメリットを享受する当業者は理解するように、性能手段は、所定の動作に要する時間、消費電力、出力密度、スループット、オンチップセルフテスト結果などの幅広い様々の基準を含み得る。
【0100】
次に、556において、実際の性能手段が所望または指定の基準を満たすかどうかの判断のためチェックする。満たす場合、559において、処理は、ボディバイアスレベルをそのままにする。他方、実際の性能手段が所望または指定の基準を満たさない場合、562において、処理は、実際の性能手段と所望の性能手段との間の差を減少させるように新しいまたは更新されたボディバイアスレベルを調整、プログラム、または設定する。次に、処理は、553に戻り、実際の性能手段に対する新しいボディバイアスレベルの影響をチェックする。処理は、必要に応じ、無期限か所定の回数を継続し得る。
【0101】
性能手段(たとえば、動作速度、スループット、消費電力など)をチェックすることに加え、PLD内の一つ以上のパーツまたは回路の温度レベルをチェックし得る。図13は、温度レベルを考慮に入れ、ボディバイアスレベルを調整、プログラム、または設定する処理または技術の流れ図を示す。上記の通り、制御回路136などの適切な回路網(または、回路網およびソフトウェアまたはファームウェアとの組み合わせ)を使用することによって、処理または技術をインプリメントし得る。
【0102】
550において、処理は、PLD内の所望のトランジスタ、回路、ブロックなどの初期ボディバイアスレベルを設定、プログラム、または、調整する。553において、処理は、性能手段を得る。上記のとおり、性能手段は、幅広いパラメータまたは変数を含み得る。当業者が理解するように、性能手段の選択は、PLDがインプリメントする回路またはシステムのための設計よび性能仕様などの要因に依存する。
【0103】
その後、553Aにおいて、処理は、温度レベルを得る。上記のとおり、PLDの種々のパーツから一つ以上の温度レベルを得、チェックし得る。例示的実施形態において、任意の識別されたクリティカルパス、または、一般に、比較的に高消費電力および従って比較的に高温度レベルを有し得る任意の回路網から温度レベルを得られ得る。
【0104】
556Aにおいて、処理は、実際の性能手段が所望または指定の基準を満たすかどうかの判断のためチェックする。さらに、処理は、実際の温度レベルが所望または指定の基準を満たすかどうか(たとえば、実際の温度が所定の範囲内にあるかまたはスレショルドレベル以下に落ちるかどうか)の判断のためチェックする。
【0105】
559において、両方ともの条件が当てはまる場合、処理はボディバイアスレベルを不変のままにする。しかし、両方ともの条件が当てはまらない場合、562において、処理は、実際の性能手段と所望の性能手段との間の差および実際の温度レベルと所望または所定の温度レベルとの差を減らすように、新しいまたは更新されたボディバイアスレベルを調整、プログラム、または設定する。次に、処理は、553に戻り、実際の性能手段、および温度レベルに対する新しいボディバイアスレベルの影響をチェックする。処理は、必要に応じ、無期限か所定の回数を継続し得る。
【0106】
その他の実施形態において、PLDがインプリメントする回路またはシステムの動作環境に応答または依存して、ボディバイアスレベルを調整、プログラムまたは設定し得る。たとえば、通信ネットワークのコントローラまたはルータを実現するために、発明に従うPLDを使用すると仮定されたい。動作時、PLDは、コントローラまたはルータが動作する環境の条件または特性についての情報を得られ得る。
【0107】
たとえば、PLDは、環境内のトラフィックレベルに関する手段を得られ得る。PLDの動作環境における条件またはその特性に依存し、PLDは、PLDの性能が動作環境の必要性にマッチするように、PLDの一つ以上のトランジスタにおけるボディバイアスレベルを調整、プログラムまたは設定し得る。もちろん、上の例は、そのようなPLDを使用し得る方法の一例示を構成するに過ぎない。本発明の記述からメリットを享受する当業者は理解するように、発明コンセプトを、回路、システムおよび動作環境で、各々それ自体の特性および条件を有する幅広い回路、システムおよび動作環境に適用し得る。
【0108】
図14は、PLDが動作する環境の特性または条件を考慮に入れ、ボディバイアスレベルを調整、プログラム、または設定する処理または技術のための流れ図を示す。上記のとおり、制御回路網136などの適切な回路網(または、回路網およびソフトウェアまたはファームウェアとの組み合わせ)を使用することによって、処理または技術をインプリメントし得る。
【0109】
処理は以下のとおり動作する。550において、PLDの所望の部分のための初期ボディバイアスレベルをプログラムまたは設定する。その後、553Bにおいて、PLDが動作する環境、回路またはシステムの一つ以上の条件または特性を得る。上記のとおり、条件または特性は、幅広い様々のアイテムを含み得る。
【0110】
次に、556Bにおいて、処理は、動作環境の条件または特性がPLDのより高い性能レベルを望ましくするどうかについて判断するためにチェックする。(上の例を使用するため、たとえば、ネットワークトラフィックレベルは比較的高く、従って、より高いPLD性能またはスループットをより望ましくするかどうか)そうでない場合は、559において、処理は、ボディバイアスレベルをそのままにする。他方、より高いPLD性能またはスループットが望ましい場合、562において、処理は、実際の性能手段と所望の性能手段との差を減らすように、新しいまたは更新されたボディバイアスレベルを調整、プログラム、または設定する。次に、処理は、553Bに戻り、実際の性能手段に対する新しいボディバイアスレベルの影響をチェックする。処理は、必要に応じ、無期限か所定の回数を継続し得る。
【0111】
所定のアプリケーションまたはインプリメンテーション用の設計および性能仕様などの要因によって、発明コンセプトに従う種々の実施形態を使用し得る。たとえば、図14を参照すると、図13に関連し記述された実施形態と同様に、必要に応じ、PLDの種々のパーツの温度レベルを考慮に入れ得ることに注意されたい。
【0112】
別の言い方をすると、より高いPLD性能またはスループットの望ましさを検査するのみならず、PLD内の温度レベルまたは出力密度が向上したPLD性能を安全または適切にするかどうかについても検査する。図15は、そのような実施形態を実現する処理を示す。その手順をアプリケーションによって、所望の回数を繰り返し得る。上記のとおり、制御回路網136などの適切な回路網(もしくは、回路網およびソフトウェアまたはファームウェアとの組み合わせ)を使用することによって、処理または技術をインプリメントし得る。
【0113】
本開示の別の局面は、PLD内の選択された回路または領域の遅延を測定することによって、PLD内の回路網のボディバイアスの設定または調整に関する。図16は、ユーザー回路のトランジスタのボディバイアスを、ユーザー回路の動作遅延を表す遅延に基づき調整する回路配置を示す。より具体的には、回路配置は、PLD103、PLD領域606、ユーザー回路609、遅延回路612、およびボディバイアスコントローラ603を含む。
【0114】
PLD領域606は、ユーザー回路609および遅延回路612を含む。ユーザー回路609は、ユーザーインプリメントまたは指定の回路、または回路の部分(たとえば、クリティカルパス)などの任意の所望の回路網を含み得る。遅延回路612は、ユーザー回路609の実際の遅延を表すか、またはそれのモデルとなる。一般に、遅延は、ユーザー回路609の遅延を表し、遅延は、ユーザー回路609と同じ遅延を有する必要はない。たとえば、遅延回路612は、必要に応じ、ユーザー回路609と同じ遅延、2倍の遅延、半分の遅延などを有し得る。
【0115】
遅延回路612は、信号リンク615(導体などの一つ以上の結合メカニズム)を介して、ボディバイアスコントローラ603と結合する。遅延回路612の実際の遅延に応答して、ボディバイアスコントローラ603は、一つ以上のボディバイアス信号をPLD領域606の少なくともいくつかのトランジスタを提供する(詳細は以下に記述される)。
【0116】
図16は、二つのボディバイアス信号Vb1およびVb2を示すことに注意されたい。ボディバイアス信号は、PLD領域606における少なくとも一つのトランジスタのボディバイアスを調整または設定する。たとえば、一方のボディバイアス信号(たとえば、Vb1)は、PMOSトランジスタのボディバイアスを設定し得るが、他方のボディバイアス信号(たとえば、Vb2)NMOSトランジスタであるボディバイアスを設定し得る、などである。ユーザー回路609におけるトランジスタのボディバイアスを調整することによって、上記のとおり、ユーザー回路の速度とリークとを制御または調整し得る。
【0117】
図17は、発明の例示的実施形態に従うボディバイアスコントローラ603のブロック図を示す。ボディバイアスコントローラ603は、基準信号ジェネレータ625、遅延回路612、位相比較器637、およびボディバイアスジェネレータ430を含む。任意に、ボディバイアスコントローラ603は、詳細は以下に記述のとおり、MUX627を含み得る。
【0118】
基準信号ジェネレータ625は、クロック信号628から基準信号631を生成する。回路の実際の設計およびインプリメンテーションに依存する要因(たとえば、遅延回路612における遅延とユーザー回路609における遅延との関係など)により、基準信号631は、必要に応じ、クロック信号628と特定の関係を有し得る。たとえば、基準信号631は、クロック信号628の半分の周波数を有し得る。基準信号631は、遅延回路612に入力(feed)する。応答して遅延回路612は、基準信号631の遅延バージョンである出力信号634を生成する。
【0119】
必要に応じ、多数のクロック信号628Aの一つを選択する能力を提供するMUX627を任意に使用し得ることに注意されたい。以下に詳細に記述されているように、ボディバイアスコントローラ603は、クロック信号628の周期を使用し基準回路の遅延を測定し、その測定の結果を使用して、ボディバイアス信号を生成しPLD103内の種々の回路へ供給する。MUX627の選択信号627Aによって、選ばれたクロック信号が所望または特定の周期を有するようにクロック信号628Aの一つを選択し得る。その方法によって、ボディバイアスコントローラ603の柔軟性を増加し得る。
【0120】
位相比較器637は、基準信号631と遅延回路612の出力信号634を比較する。二つの信号の相対位相によって、比較器637は、出力信号640(スピードアップ)および出力信号643(スローダウン)を生成する。出力信号640および643は、ボディバイアスジェネレータ430を駆動する。ボディバイアスジェネレータ430は、出力信号640および643に応答して、ボディバイアス信号を生成する。図17に示す特定の例において、ボディバイアスジェネレータは、ボディバイアス信号646(νb1)およびボディバイアス信号649(νb2)を生成する。
【0121】
図18は、本発明の例示的実施形態に従う基準信号ジェネレータ625の回路配置を示す。基準信号ジェネレータ625は、フリップフロップ660ならびにインバータ663および666を含む。この特定の例において、基準信号ジェネレータ625は、2で割る回路を構成する。このように、フリップフロップ660およびインバータ663は、クロック信号628の周波数の半分を有する信号を生成する。インバータ666は、その信号をバッファリングし、基準信号631を供給する。本発明の記述からメリットを享受する当業者は理解するように、回路構成およびアプリケーションによって、必要に応じ、インバータ666を使用する必要がなく、それを省き得る。
【0122】
図19は、発明の例示的実施形態に従う位相比較器637の回路配置を示す。比較器637は、排他的OR(XOR)ゲート675、およびフリップフロップ681を含む。遅延回路612の出力は、XORゲート675の1入力に入力(feed)する。基準信号631は、XORゲート675の第2の入力に入力する。
【0123】
XORゲート675の出力は、フリップフロップ681のデータ(D)入力に入力する。クロック信号628はフリップフロップ681および684を駆動する。フリップフロップ681の出力Qは出力信号640
【0124】
【数3】
イメージ ID=000005
を供給する。出力信号が高いことは、回路があまりに遅く流れていることを示し(より順のボディバイアスを有すべき)、を示し、逆もまた同様である(低信号は、回路がより逆のボディバイアスを有すべきことを示す)。
【0125】
遅延回路612による遅延がクロック信号628の周期より短い場合、ユーザー回路は、あまりに速く動作する。この場合、ゲート675の出力は、クロック信号628の立ち上がり遷移時にロジックゼロとなる。逆に、遅延回路612による遅延がクロック信号628の周期より長い場合、ユーザー回路は、あまりに遅く動作する。それらの状況の下に、XORゲート675は、クロック信号628の立ち上がり遷移時の出力時にロジックハイ信号を供給する。その結果、フリップフロップ681はスピードアップ出力信号を提供する。
【0126】
図20は、発明の例示的実施形態に従う位相比較器637の別の回路配置を示す。図19と同様に、図20の比較器637は、排他的OR(XOR)ゲート675、排他的NOR(XNOR)ゲート678、およびフリップフロップ681および684を含む。さらに、図20の比較器637は不感帯遅延回路690を含む。不感帯遅延回路690は、PLD103内のトランジスタをより安定に電力効率的なボディバイアス調整を行う。
【0127】
より具体的には、不感帯遅延回路690は、XNORゲート678が基準信号634自体よりはむしろ、基準信号634の遅延バージョンを受信する原因となる。不感帯遅延回路690がない場合、比較器637は、ユーザー回路609用の平衡速度、リーク、消費電力を見つけるよう求めるので、比較器のスピードアップおよびスローダウン出力信号を繰り返しおよび交互にアサートし得る。ボディ調整を繰り返す(トランジスタボディの充電と放電)と、電力消費の増加、および従って、効率の低下の原因となる。
【0128】
不感帯遅延回路690は、比較器637が、その出力時に、「チャタ(chatter)」がより少なくなるように助ける。別の言い方をすると、遅延回路612および不感帯遅延回路690を含む比較器637の場合(すなわち、図20)、一つの遅延回路は最小遅延を形成し、両方の合計は最大の遅延を形成する。クロック信号628の周期が両方の遅延の合計を超えた場合、ユーザー回路609はあまりに速く動作する。その結果、比較器637はスローダウン出力信号をアサートする。
【0129】
逆に、クロック周期が遅延回路612の遅延より短い場合、ユーザー回路609は、あまりに遅く動作する。その結果、比較器637はスピードアップ出力信号をアサートする。ユーザー回路609が、速度の許容可能または所定の範囲内で(対応するリークおよび消費電力レベルを伴って)動作する場合、比較器637は、その出力信号のいずれもアサートしない。その結果、比較器637は、ユーザー回路609の許容可能な動作速度を達成するために、比較器の出力信号の繰り返しの変更を避ける。
【0130】
遅延回路612は、固定または調整可能または構成可能な遅延のいずれかを提供し得ることに注意されたい。固定遅延の場合、遅延回路612は、所望または所定の遅延を有するロジック回路を含む。たとえば、遅延回路612は、ゲートなどの組み合わせの論理要素の配置を含み得る。プログラマブルロジック106およびプログラマブルルーティングまたは相互接続109などの、PLD103のプログラマブルリソースを使用して遅延回路612をインプリメントし得る(図1を参照されたい)。
【0131】
代わりに、遅延回路612は、構成可能な遅延を有し得る。図21は、発明に従う例示的実施形態における使用のための構成可能な遅延回路612を示す。図21の遅延回路612は、構成または調整信号703の1セットを受け入れる。信号703は、B0~Biで示されるビットの1セットを含む。構成信号703は、遅延回路612の遅延を調整または構成する。換言すると、構成信号703においてビットの値を設定することによって、時間量を調整し得、その時間量によって遅延回路612は、その出力信号を生成するためにその入力信号を遅延させる。
【0132】
図22は、発明の例示的実施形態に従う構成可能な遅延回路の回路配置を示す。構成可能な遅延回路は、相互接続またはルーティング遅延要素710の1セットのカスケード結合、ロジック遅延要素719の1セットのカスケード結合、MUX713およびMUX725を含む。
【0133】
ルーティング遅延要素710の出力信号は、MUX713の入力信号を構成する。MUX713はまた、一つ以上の選択信号716を受信する。本発明の記述からメリットを享受する当業者は理解するように、選択信号716の数は、ルーティング遅延要素710の数に依存する。選択信号716によって、ルーティング遅延要素710の一つの出力をMUX713の出力に選択的に結合し得る。このように、第1のルーティング遅延要素の入力信号(基準信号631)からMUX713の出力までの遅延の量を構成し得る。
【0134】
同様に、ロジック遅延要素719の出力信号は、MUX725の入力信号を供給。MUX725もまた、一つ以上の選択信号728を受信する。本発明の記述からメリットを享受する当業者は理解するように、選択信号728の数は、ロジック遅延要素719に依存する。選択信号728を使用することによって、ロジック遅延要素719の一つの出力をMUX728の出力へ選択的に結合し得る。従って、第1のロジック遅延要素の入力信号(すなわち、MUX713の出力信号)からMUX725の出力までの遅延の量を構成し得る。
【0135】
MUX713およびMUX725を使用することによって、所望数のルーティング遅延要素710とロジック遅延要素719とのそれぞれの遅延組み合わせを構成するために構成可能な遅延回路の遅延を構成し得る。このように、遅延回路の遅延がユーザーの回路の遅延を表すように、遅延回路を構成し得る(たとえば、詳細上記のPLD構成ソフトウェアによって)。さらに、必要に応じ、ダイナミックな方法で(変化する動作環境、外部制御、ユーザー制御に応答して)遅延を構成し得る。
【0136】
図23は、本発明の例示的実施形態に従うルーティング遅延要素710用の回路配置を示す。ルーティング遅延要素710は、MUX735およびインバータ738を含む。MUX735およびインバータ738は、一緒になって、PLD103内の代表的なルーティングメカニズム(その対応する遅延を含む)を表すよう捜す。MUX735は、その入力の一つおよびその選択入力が接地され、その結果、MUX735はその入力信号をインバータ738に結合する。インバータ738の出力信号は、ルーティング遅延要素738の出力信号を構成する。このように、ルーティング遅延ロジック710は、その出力信号としてその入力信号の反転したバージョンを供給する。
【0137】
図24は、発明の例示的実施形態に従うロジック遅延要素719の回路配置を示す。ロジック遅延要素719は、送信ゲート745、送信ゲート748、インバータ751、およびインバータ754を含む。ロジック遅延要素719内の回路要素は、一緒になって、PLD103内のプログラマブルロジック回路(およびその回路の対応する遅延)を表すように求める。送信ゲート745および748およびインバータ751は、入力信号(そのロジック値に関わらず)をインバータ754の入力に結合するためのメカニズムを提供する。インバータ754の出力信号は、ロジック遅延要素719の出力信号を構成する。このように、ロジック遅延ロジック719は、その出力信号としてその入力信号の反転したバージョンを供給する。
【0138】
図(たとえば、図18~20および22~24)は、図が表すそれぞれの回路の例示的な実施形態を提供するに過ぎないことに注意されたい。本発明の記述からメリットを享受する当業者は理解するように、設計および性能仕様などの要因によって、必要に応じ、その他の回路および実施形態を使用し得る。
【0139】
単なる一例として、離散的時間出力値を有する比較器を使用するよりはむしろ、連続的時間出力値を有する比較器を使用し得る。さらに、調整可能またはプログラマブルなボディバイアス信号をPLD103の種々のパーツに供給するために、必要に応じ、二つ以上のボディバイアスコントローラ603(および比較器)を使用し得る。
【0140】
別の例として、必要に応じ、たとえば、制御回路網136(図1を参照されたい)のパーツとしての専用の回路網を使用して、図にある種々の回路(たとえば、ボディバイアスコントローラ603)を実現し得る。代案として、必要に応じ、PLD103のプログラマブルリソースにおけるそれらの回路(たとえば、図1、図3、および図4を参照されたい)すなわち、プログラマブルロジック106およびプログラマブル相互接続109、をインプリメントし得る。本発明の記述からメリットを享受する当業者は、これらの二つの手法の組み合わせを使用し得ること理解する。換言すると、必要に応じ、一部ではPLD103のプログラマブルリソースを使用することによって、および、一部では専用の回路網を使用して、回路網を実現し得る。インプリメンテーションがPLDプログラマブルリソースを使用する場合、PLDCADソフトウェアは(たとえば、図6Aおよび附属の説明を参照されたい)、PLD103のプログラマブル構造(プログラマブルロジック106およびプログラマブル相互接続109)内の種々の回路要素を配置し、伝送する。
【0141】
さらに、PLDCADソフトウェアは、遅延回路112をインプリメントする回路要素(組み合わせのロジック要素またはルーティング遅延要素710およびロジック遅延要素719)を選択、配置、および伝送する。PLDCADソフトウェアは、遅延回路612がユーザー回路609の遅延を表すように回路要素を選択する。PLDCADソフトウェアは、構成メモリ133のビット値をプログラムし(図1を参照されたい)、構成メモリ133は、その後、MUX選択信号627A(図17を参照されたい)および構成信号703(図21を参照されたい)などの種々の構成またはプログラム信号用の値を供給する。代わりの実施形態において、ユーザーは、ユーザー回路609をモデルにするため、遅延回路612のパラメータを定義し得る。代わりの実施形態は、ユーザーに対しPLD回路網の性能をユーザーの仕様または要件に適合させる能力を提供する。
【0142】
一つの遅延回路612および比較器637を使用するよりはむしろ、その代わりに必要に応じ、複数の遅延回路612および/または比較器637を使用し得ることに注意されたい。そうすることによって、遅延連鎖によって提供される遅延のより多くの解決、および従って、ボディバイアスコントローラの収束の改善を提供し得る。
【0143】
開示の別の局面は、一般に、IC内のトランジスタの性能(リーク、速度、およびワット損)を直接に調整またはプログラムする(それらのトランジスタを含む回路の性能をモデルにする遅延回路を使用するよりはむしろ)ことに関する。より具体的には、IC内の一つ以上のトランジスタのリークレベルをトランジスタのボディバイアスをプログラムまたは調整することによって設定するために、リークロックループ(LLL)を使用し得る。
【0144】
リークロックループ技術は、リーク電流の尺度としての代表遅延を使用することによる間接制御よりはむしろ、その技術が回路のリークを直接に制御する能力を提供するというメリット有する。その技術は、ユーザーが許容または所望リークレベルを指定し、性能とリーク電流およびワット損との間の所望のトレードオフを選択し指定することを可能にする。リークロックループのコンセプトを、一般に、PLDを含むICに適用し得ることに注意されたい。
【0145】
図25は、発明の例示的実施形態に従った、リークロックループのブロック図を示す。リークロックループは、基準トランジスタ760、リーク測定回路766、加算器775、およびボディバイアスジェネレータ430を含む。一般的に言って、リークロックループは負フィードバック回路を含む。リークロックループは、IC回路763内のトランジスタのリーク電流を測定するために、基準トランジスタ760を使用し、それらのトランジスタ用のボディバイアス信号を生成するために、測定されたリーク電流を使用する。
【0146】
必要に応じ、また、本発明の記述からメリットを享受する当業者は理解するように、他の量を測定するリークロックループの他の実施形態を設計し得、一つ以上のユーザー指定の基準を満たすように一つ以上のトランジスタのボディバイアスを調整し得ることに注意されたい。そのような量の例は、基準トランジスタの閾値電圧(VT)または基準トランジスタの飽和電流(Idsat)を含む。
【0147】
基準トランジスタ760は、IC回路763にある。必要に応じ、二つ以上の基準トランジスタ760を使用し得ること(たとえば、IC回路763の二箇所以上の場所におけるリーク電流を測定すること)に注意されたい。IC回路763は、ICの性能がボディバイアスレベルによって調整またはプログラムされるように求められるそのIC内の回路網を構成する。たとえば、ICはPLDであるという状況において、IC回路763は、ユーザー回路609を構成し得る(たとえば、図16を参照されたい)。
【0148】
一般に、IC回路763のトランジスタ(基準トランジスタ760を含む)が同様な電気的特性を有するようにし、条件の変動(たとえば、処理、電圧、および温度、またはPVT)がIC回路763全体のボディバイアスのプログラムを実質的に劣化しないように、IC内の回路網の十分に小さな部分を含めて、IC回路763を選択する。
【0149】
リーク測定回路766は、基準トランジスタ760のリークを測定し、リーク信号769を加算器775へ供給する。加算器775は、リーク信号769を基準リーク信号(νref)772に比較し、エラー信号778を生成する。ボディバイアスジェネレータ430は、エラー信号を使用し、一つ以上のボディバイアス信号435を生成する。ボディバイアスジェネレータ430は、ボディバイアス信号435をIC回路760内の所望のトランジスタに供給する。
【0150】
図25のリークロックループにおいて、必要に応じ、構成可能コンポーネントを使用し得ることに注意されたい。たとえば、必要に応じ、リーク測定回路766(構成可能利得)、構成可能加算器775(構成可能利得)または加算器775に続く個別の利得ブロック、構成可能基準リーク信号772(構成可能レベル)、および/またはボディバイアスジェネレータ430における構成可能利得を使用し得る。PLD構成RAMビット、PLD上のユーザー回路からの信号、またはこの二つの組み合わせを、それらの構成可能コンポーネントの各々を構成するために、必要に応じ、使用し得ることに注意されたい。
【0151】
図26は、発明の別の例示的実施形態に従ったリークロックループのブロック図を示す。図26におけるリークロックループは、基準トランジスタ760(IC回路763にある)、リーク測定回路766、基準値および比較器回路775、フィルタ787、およびボディバイアスジェネレータ430を含む。
【0152】
基準トランジスタ760およびIC回路763は、図25に関連する上記のそれらのものと同じかまたは同様の構成を有する。リーク測定回路766は、制御信号781によって、プログラマブル利得を供給する。より具体的には、リーク測定回路766がリーク信号769を供給するために、測定されたリーク電流に印加する利得は、制御信号781によって、調整し得る。
【0153】
基準値および比較器回路775は、リーク信号を処理する。基準値および比較器回路775は、必要に応じて、プログラマブル基準値、プログラマブル利得、またはその両方を、制御信号784によって供給する。換言すると、制御信号784によって、基準リーク信号(図25の基準リーク信号772に類似した)、リーク信号769を基準リーク信号と比較しリークエラー信号778を生成する比較器(明白には示されていない)、またはその両方を、必要に応じ、調整し得る。基準値および比較器回路775は、必要に応じて、比較器の出力信号を量子化する量子化器を任意に含み得る。
【0154】
フィルタ787は、リークエラー信号778を濾波および処理し、濾波された信号790を生成する。ボディバイアスジェネレータ430は、図25に関連する上記の方法で動作し、一つ以上のボディバイアス信号をIC回路263に供給する。
【0155】
必要に応じ、フィルタ787をリークロックループから省略し得ることに注意されたい。フィルタ787は、利得ブロックまたは回路、ローパス転送機能または積分器トランジスタ機能などの所望の転送機能を有し得る。本発明の記述からメリットを享受する当業者は理解するように、フィルタ787およびその特定の転送機能を含めるかどうかの選択は、設計および性能仕様ならびに考慮に依存する。
【0156】
必要に応じ、リーク測定回路766、および、基準値および比較器回路775を種々の方法によって実行し得る。本発明の記述からメリットを享受する当業者は理解するように、回路の選択およびインプリメンテーションは、種々の要因(たとえば、使用されるIC技術、所望の性能特性など)に依存する。図27~図29は、いくつかの例を提供する。
【0157】
図27は、発明の例示的実施形態に従ったリーク測定回路766を示す。リーク測定回路766は、PMOSトランジスタ803および805、基準トランジスタ760、および複数のNMOSトランジスタ808A~808Dを含む。
【0158】
基準トランジスタ760のゲートはそのソースに結合し、そのことは、基準トランジスタ760をオフ状態にする。このように、基準トランジスタ760を通じて伝導される電流は、基準トランジスタのリーク電流を表す。トランジスタ803は、基準トランジスタ760とシリアルに結合する。トランジスタ803のゲートは、そのトランジスタのドレインに結合する(いわゆる「ダイオード接続構成」)。
【0159】
トランジスタ803およびトランジスタ805は、電流ミラーを形成する。電流ミラーは、リーク電流(基準トランジスタ760を通った電流)を増幅する。本発明の記述からメリットを享受する当業者は理解するように、増幅のレベルは、トランジスタ803および805の相対サイズに依存する。
【0160】
電流ミラーによって増幅される電流は、オン状態の任意のトランジスタ808A~808Dを通して流れる。トランジスタ808A~808Dは、構成可能な出力電流(リーク電流769)を供給する。適切なレベルの制御信号781を印加することによってトランジスタ808A~808Dを選択的にオンにすることによって、出力電流を構成し得る。一般に、iビットを有する制御信号781に関して、基準電流の2iレベルを供給する。トランジスタ808A~808Dは、制御信号781に応答し所望の基準電流プロファイルを供給するように選択された相対サイズを有し得る。
【0161】
本発明の記述からメリットを享受する当業者は理解するように、トランジスタの数とサイズの種々の組み合わせを使用し得る。一例として、トランジスタ808B~808Dの各々がその前のトランジスタの2倍の幅を有するように(2進重み付け構成)、トランジスタ808A~808Dのサイズを決め得る。一つの例示的実施形態において、所定のチャネル長に関して、トランジスタ760は200の幅を有し、トランジスタ803は1の幅、トランジスタ805は50の幅、トランジスタ808Aは1の幅、およびトランジスタ808B~808Dは2進重み付け幅を有する(すなわち、トランジスタ808Bは2の幅、トランジスタ808Cは4の幅、など)。
【0162】
図28は、発明の例示的実施形態に従った基準値および比較器回路775を示す。回路は、抵抗818、抵抗821および比較器815を含む。抵抗818および821は、リーク基準信号772を比較器815に供給する分圧器を形成する。所望の基準レベルを供給するように、抵抗818および821の値を選択し得る。比較器815は、リーク信号769をリーク基準信号772と比較し、リークエラー信号778を供給する。比較器815は、必要に応じ、構成可能な利得を有し得る(制御信号784に応答して)。図28は簡略な比較器815を示し、その比較器815は、必要に応じ、比較的正確な基準電圧を供給するために安定した基準回路を含め得ることに注意されたい。
【0163】
図29は、発明の別の例示的実施形態に従った基準値および比較器回路775を示す。回路は、抵抗824、抵抗827、抵抗830、比較器815A、比較器815B、およびカウンタ839を含む。比較器815Aおよび/または815Bは、必要に応じ、構成可能な利得を有し得る(制御信号784に応答して)。
【0164】
図29における基準値および比較器回路775は図28の回路と同様であるが、この回路は、リーク電流用に下限と上限を供給するように二つの基準信号を使用する。より具体的には、抵抗824、827、および830は、リーク基準信号772Aを比較器815Aに供給し、リーク基準信号772Bを比較器815Bに供給する分圧器を形成する。リーク基準信号772Aおよび772Bは、リーク電流用の上下限を構成する。別の言い方をすると、リーク基準信号772Aおよび772Bは、リーク電流用の値の「ウィンドウ」を供給する。リーク基準信号772Aおよび772Bの所望のレベルを供給するように、抵抗824、827、および830の値を選択し得る。
【0165】
比較器815Aは、リーク信号769をリーク基準信号772Aと比較し、ダウン信号833を供給する。ダウン信号833は、カウンタ839をカウントダウンさせる(すなわち、IC回路の動作速度を下げる)。逆に、比較器815Bは、リーク信号769をリーク基準信号772Bと比較し、アップ信号836を供給する。アップ信号836は、カウンタ839をカウントアップさせる(すなわち、IC回路の動作速度を上げる)。別の言い方をすると、カウンタ839は、図26のフィルタ787としての積分器を使用することに類似している。カウント信号842は、カウンタ839の電流カウント値を提供する。ボディバイアスジェネレータ430(図29に示されない)カウント信号842を使用し、ボディバイアス信号435(図29に示されない)を生成し、その信号をIC回路763に供給する。
【0166】
ボディバイアスレベルの制御またはプログラムをさらに供給するために、必要に応じ、IC内に二つ以上のボディバイアスジェネレータ回路430を含め得る。そのような構成において、各ボディバイアスジェネレータ430は一つ以上のボディバイアス信号435を回路(IC回路763など)またはIC内の領域に供給する。
【0167】
このように、ボディバイアスジェネレータ430をプログラムし、ICの各回路または領域用の特定のまたは個々に区別されたボディバイアス信号を供給し得る。代案として、ユーザーは、ICの所定の回路または領域用にボディバイアス信号435の所望の数およびレベルを生成するようにボディバイアスジェネレータ430用のプログラムを特定し、または供給し得る。特に適合されまたはプログラムされたボディバイアスレベルは、ICの各回路または領域用に性能とリークおよびワット損とのトレードオフを可能にする。その結果、ユーザーは、より細かい粒状度で、IC内の種々の部品および回路について性能と電力とのトレードオフに対する制御を増加させる。
【0168】
図30は、発明の例示的実施形態に従った、ICにおける複数のボディバイアス回路を供給するための回路配置を示す。回路配置は、IC領域870、IC回路763A~763Cのセット、対応する数のMUX875A~875C、およびボディバイアスジェネレータ435A~435Cを含む。
【0169】
ボディバイアスジェネレータ430A~430Cの各々は、ボディバイアス信号435A~435Cとして示される一つ以上のボディバイアス信号を生成し、信号をMUX875A~875Cの各々に供給する。選択信号880に応答し、MUX875A~875Cの各々は、ボディバイアスジェネレータ435A~435Cの一つからのボディバイアス信号を選択し、選択されたボディバイアス信号をIC回路763A~763Cの対応する一つに供給する。
【0170】
MUX875A~875Cを使用するよりはむしろ、プログラマブル不揮発性結合メカニズム(ヒューズなど)を使用し得る。そのような状況において、個々のICの特性(たとえば、リークのレベル)を判定するために、製作後個々のICをテストし得、所望または適切なボディバイアス信号をICの種々の領域または回路に供給するように不揮発性結合メカニズムをプログラムし得る。多数のボディバイアスジェネレータを含むことによって、ユーザーは、それらの領域または回路のボディバイアスレベルを独立してプログラムする能力が与えられる。
【0171】
別の実施形態において、不揮発性メモリに記憶された値(ICの特性(たとえば、リークレベル)またはIC内の特定の領域または回路に関係する値など)とユーザー構成またはユーザー特定の値との組み合わせを使用し、ボディバイアスレベルを生成し得る。この案は、性能とワット損およびリークレベルとをトレードオフするために、ICの特性およびユーザー特定のパラメータの両方を考慮に入れることを可能にする。
【0172】
PLDの場合、PLD領域870は、PLD領域606を構成し得(たとえば、図25を参照されたい)、各IC回路763はユーザー回路609に対応し得る。一つ以上の適合またはプログラムされたボディバイアス信号435をPLD103内の各ユーザー回路609(たとえば、図25を参照されたい)に供給し得る。別の実施形態において、IC回路763は、PLD回路(プログラマブルロジック106およびプログラマブル相互接続109)の物理的に近いセット、またはプログラマブルロジック106およびプログラマブル相互接続109の選択されたグループ(たとえば、図3の長方形のアレイに配列されたプログラマブルロジック回路106のグループ)に対応し得る。
【0173】
図30は、ボディバイアス信号435A~435Cを供給する回路網としてのボディバイアスジェネレータ430A~430Cを示す。PLDの場合、一般に、ボディバイアスジェネレータ430A~430Cよりはむしろ、ボディバイアスコントローラ603A~603C(たとえば、図25を参照されたい)を使用し得る。
【0174】
図30は、IC回路763A~763Cを含むとしてのIC領域870を示すことに注意されたい。しかし、本発明の記述からメリットを享受する当業者は理解するように、逆の状況が存在し得る(すなわち、各IC回路は一つ以上のIC領域870含み得る)。
【0175】
上記の性能同調コンセプトをその他の技術と組み合わせ、出力密度を減少し、または出力密度を安全な範囲内に維持し得ることにさらに注意されたい。たとえば、PLD内の種々の回路をオンまたはオフにし得(図9および添付の説明を参照されたい)、所望の性能レベルと安全または所定の消費電力レベルまたは出力密度とのトレードオフを達成し得る。その他の変種および実施形態は、本発明の記述からメリットを享受する当業者にとって、明らかであろう。
【0176】
一般に、必要に応じ、また、本発明の記述からメリットを享受する当業者は理解するように、発明コンセプトを、当業界で他の名前で公知の種々のプログラマブルロジック回路網またはICへ効果的に適用し得ることに注意されたい。そのような回路網は、複合プログラマブルロジックデバイス(CPLD)、プログラマブルゲートアレイ(PGA)、およびフィールドプログラマブルゲートアレイ(FPGA)として公知のデバイスを含む。
【0177】
図を参照すると、当業者は、示された種々のブロックは主としてコンセプトの機能および信号流れを示し得ることに気づく。実際の回路インプリメンテーションは、種々の機能ブロック用の別々に識別可能なハードウェアを含み得または含まれ得なく、また、示された特定の回路網を使用し得または使用し得ない。
【0178】
たとえば、必要に応じ、種々のブロックの機能性を一つの回路ブロックに結合し得る。さらに、必要に応じ、いくつかの回路ブロックにおいて一つのブロックの機能性を実現し得る。本発明の記述からメリットを享受する当業者は理解するように、回路インプリメンテーションの選択は、所定のインプリメンテーション用の特定の設計および性能仕様などの種々の要因に依存する。
【0179】
この明細書に記述された発明の実施形態に加えて、その他の修正および代わりの実施形態は、本発明の記述からメリットを享受する当業者にとって、明らかであろう。従って、この記述は、当業者に発明の実施方法を教え、例示的としてのみと解釈すべきである。
【0180】
示され記述された発明の形式は、現在好適なまたは例示的な実施形態として解すべきである。当業者は、本明細書に記述された発明の範囲から逸脱することなく、形状、サイズ、および部品の配置における種々の変更を行い得る。たとえば、当業者は、本明細書に例示および記述されたエレメントの代わりに同等のエレメントを用い得る。さらに、本発明の記述からメリットを享受する当業者は、発明の範囲から逸脱することなく、発明の特定の特徴を他の特徴の使用とは無関係に使用し得る。
APPARATUS AND METHODS FOR ADJUSTING PERFORMANCE OF INTEGRATED CIRCUITS
Cross-Reference to Related Applications
[001] This application is a continuation-in-part application of, and incorporates by reference, U.S. Patent Application Serial No. 10/848,953, Attorney Docket No. ALTR:026, titled "Apparatus and Methods for Adjusting the Performance of Programmable Logic Devices," filed on May 19, 2004.
Technical Field
[002] The inventive concepts relate generally to adjusting the performance of integrated circuits (ICs), including programmable logic devices (PLDs).
Background
[003] PLDs are ubiquitous electronic devices that provide flexibility to not only designers, but also end-users. During the design cycle of an electronic circuit or system, a designer may perform a relatively large number of design iterations by simply re- programming the PLD for each design. Thus, the length and expense of the design cycle decreases compared to other alternatives. Similarly, the end-user may have a desired level of control over the functionality of a design that includes PLD(s). By programming the PLD(s) in the field or even on a real-time basis, the user can change the way the circuit or system behaves.
[004] To accommodate increasingly complex designs, modern PLDs include a relatively large number of transistors. Furthermore, users demand ever higher performance, which results in larger operating frequencies. Consequently, the power consumption, power dissipation, die temperatures and, hence, power density (power dissipation in various circuits or blocks), of PLDs has tended to increase. The upward march of the power density, however, may make PLDs design and implementation impractical or failure-prone. A need exists for PLDs that feature adjustable power consumption and performance. A further need exists for directly controlling the performance (leakage, speed, and power dissipation) of transistors within general ICs.
Summary [005] The disclosed novel concepts relate to apparatus and methods for adjusting the performance of PLDs, for example, by making a speed-power consumption trade-off. One aspect of the inventive concepts relates to apparatus for adjusting the performance of PLDs. In one embodiment, a PLD configured to implement a user's circuit includes a delay circuit and a body-bias generator. The delay circuit has a delay that represents the delay of a user's circuit implemented in the PLD. The user's circuit includes at least one transistor. The body-bias generator adjusts a body bias of the transistor in the user's circuit in response to a quantity derived from the propagation delay of the delay circuit.
[006] In another embodiment, a PLD includes a reference transistor, a current measurement circuit, and body-bias generator. The reference transistor provides a current relates to a circuit within the PLD. The current measurement circuit measures the current provided by the reference transistor, and provides a measured current signal to the body-bias generator. The body-bias generator derives at least one body-bias signal from the measured current signal, and provides the body bias-signal(s) to the circuit in the PLD.
[007] In yet another embodiment, a PLD includes a plurality of user circuits and a plurality of body-bias generators. Each of the user circuits is implemented in the PLD. At least one of the plurality of body-bias generators is configured to selectively adjust a body bias of a transistor within at least one of the user circuits.
[008] Another aspect of the inventive concepts relates to methods of adjusting the performance of PLDs and using PLDs to implement a user's circuits. In one embodiment, a method of using a PLD to implement an electronic circuit includes mapping the electronic circuit to functional resources within the PLD to generate a design, and deriving a body-bias value from a delay representative of a signal propagation delay within at least one portion of the generated design. The method further includes programming a body-bias level of at least one transistor within the portion of the generated design to the body-bias value. - A -
[009] In another embodiment, t method of adjusting a leakage level of a transistor in a circuit embodied within a PLD includes obtaining a current that represents a leakage current of the transistor, and deriving a body-bias level from the obtained current. The method further includes adjusting the body bias of the transistor to the derived body-bias level.
[0010] In yet another embodiment, a method of realizing a user's circuit in at least one circuit region in a PLD includes selecting a body-bias level for at least one transistor in the circuit region, and generating an initial placement of the circuit region within the PLD. The method further includes changing at least once the body-bias level to be applied to the transistor(s) in the circuit region to another level if the existing body-bias level and placement fail to meet prescribed performance criteria.
Brief Description of the Drawings [0011] The appended drawings illustrate only exemplary embodiments of the invention and therefore should not be considered as limiting its scope. Persons of ordinary skill in the art who have the benefit of the description of the invention appreciate that the disclosed inventive concepts lend themselves to other equally effective embodiments. In the drawings, the same numeral designators used in more than one drawing denote the same, similar, or equivalent functionality, components, or blocks.
[0012] FIG. 1 shows a general block diagram of a PLD according to an illustrative embodiment of the invention.
[0013] FIG. 2 illustrates a MOS transistor used in exemplary embodiments according to the invention. [0014] FIG. 3 depicts a floor-plan of a PLD according to an exemplary embodiment of the invention.
[0015] FIG. 4 shows a block diagram of a programmable logic in a PLD according to an exemplary embodiment of the invention.
[0016] FIG. 5 illustrates a multiplexer used in PLDs according to exemplary embodiments of the invention that incorporate body-bias adjustment.
[0017] FIG. 6 A depicts various software modules that a PLD computer-aided design (CAD) software according to illustrative embodiments of the invention uses.
[0018] FIG. 6B illustrates a flow diagram for a PLD CAD software according to an exemplary embodiment of the invention.
[0019] FIG. 7 shows a flow diagram for the process of adjusting body bias according to an exemplary embodiment of the invention.
[0020] FIG. 8 illustrates a block diagram of circuitry within a PLD according to exemplary embodiments of the invention to adjust, program, or set the body-bias levels of desired PLD circuitry or blocks.
[0021] FIG. 9 depicts a block diagram of a circuit for selectively turning off circuitry or reducing or generally controlling power consumption of circuitry within a PLD according to exemplary embodiments of the invention. [0022] FIG. 10 shows a circuit arrangement according to exemplary embodiments of the invention for adjusting body-bias levels within a PLD in response to an external source.
[0023] FIG. 11 illustrates a circuit arrangement for modifying body-bias level(s) within a PLD according to exemplary embodiments of the invention.
[0024] FIG. 12 depicts a flow diagram for a process or technique of adjusting, programming, or setting body-bias levels in a PLD used in exemplary embodiments of the invention.
[0025] FIG. 13 shows a flow diagram for a process or technique of adjusting, programming, or setting body-bias level(s) that takes temperature level(s) into account.
[0026] FIG. 14 illustrates a flow diagram for a process or technique of adjusting, programming, or setting body-bias level(s) that takes into account the characteristics of the environment in which the PLD operates.
[0027] FIG. 15 depicts a flow diagram for a process or technique of adjusting, programming, or setting body-bias level(s) that takes into account temperature level(s) and the characteristics of the environment in which the PLD operates.
[0028] FIG. 16 shows a circuit arrangement for adjusting the body bias of transistors in a user circuit based on a delay representative of the operating delay of the user circuit.
[0029] FIG. 17 illustrates a block diagram of a body-bias controller according to an illustrative embodiment of the invention. [0030] FIG. 18 depicts a circuit arrangement for reference-signal generator according to an exemplary embodiment of the invention.
[0031] FIG. 19 shows a circuit arrangement for a phase comparator according to an exemplary embodiment of the invention.
[0032] FIG. 20 illustrates another circuit arrangement for a phase comparator according to an exemplary embodiment of the invention.
[0033] FIG. 21 depicts a configurable delay circuit for use in illustrative embodiments according to the invention.
[0034] FIG. 22 shows a circuit arrangement for a configurable delay circuit according to an exemplary embodiment of the invention.
[0035] FIG. 23 illustrates a circuit arrangement for a routing delay element according to an illustrative embodiment of the invention.
[0036] FIG. 24 depicts a circuit arrangement for a logic delay element according to an exemplary embodiment of the invention.
[0037] FIG. 25 shows a block diagram of a leakage-locked loop according to an illustrative embodiment of the invention.
[0038] FIG. 26 illustrates a block diagram of a leakage-locked loop according to another exemplary embodiment of the invention. [0039] FIG. 27 depicts a leakage measurement circuit according to an illustrative embodiment of the invention.
[0040] FIG. 28 shows a reference value and comparator circuit according to an illustrative embodiment of the invention.
[0041] FIG. 29 illustrates a reference value and comparator circuit according to another exemplary embodiment of the invention.
[0042] FIG. 30 depicts a circuit arrangement according to an exemplary embodiment of the invention for providing multiple body-bias circuits in an IC.
Detailed Description [0043] The inventive concepts contemplate apparatus and associated methods for PLDs that feature adjustable power and performance. The inventive concepts help to overcome excessive power density levels that conventional PLDs suffer. Moreover, one may adjust the performance level of a desired portion, or all, of a PLD according to the invention (i.e., on a granular basis ranging from individual transistors all the way to the entire PLD circuitry).
[0044] More specifically, and as described below in detail, the inventive concepts contemplate setting, programming, or adjusting the body or well bias of individual transistors, or groups of transistors, in a PLD. Adjusting the body bias varies the power consumption and performance of the transistor(s). [0045] The inventive concepts provide the following benefits over traditional implementations. First, they allow trading off performance and power consumption or optimizing the performance-power consumption tradeoff. Second, one may selectively set, program, or adjust the body-bias level(s) in critical circuit paths or parts of the PLD so as to increase their performance as desired. Conversely, one may selectively set, program, or adjust the body-bias level(s) in non-critical circuit paths or parts of the PLD and therefore reduce their power consumption and lower their power densities.
[0046] In addition, one may shut down or disable unused parts or circuits within the PLD, thus reduce their power consumption and lower their power densities. One may also employ the inventive concepts to prevent (or reduce the probability of) thermal runaway. More specifically, in a traditional PLD, circuits operating at relatively high speeds tend to consume more power, resulting in temperature increase of the PLD. The increased power consumption may cause those circuits to consume more power. This positive feedback mechanism may increase the power densities to unsafe or destructive levels.
[0047] FIG. 1 shows a general block diagram of a PLD 103 according to an illustrative embodiment of the invention. PLD 103 includes configuration circuitry 130, configuration memory 133, control circuitry 136, programmable logic 106, programmable interconnect 109, and I/O circuitry 112. In addition, PLD 103 may include test/debug circuitry 115, one or more processors 118, one or more communication circuitry 121, one or more memories 124, one or more controllers 127, as desired. [0048] Note that FIG. 1 shows a simplified block diagram of PLD 103. Thus, PLD 103 may include other blocks and circuitry, as persons of ordinary skill in the art understand. Examples of such circuitry include clock generation and distribution circuits, redundancy circuits, and the like. Furthermore, PLD 103 may include, analog circuitry, other digital circuitry, and/or mixed-mode circuitry, as desired.
[0049] Programmable logic 106 includes blocks of configurable or programmable logic circuitry, such as look-up tables (LUTs), product-term logic, multiplexers, logic gates, registers, memory, and the like. Programmable interconnect 109 couples to programmable logic 106 and provides configurable interconnects (coupling mechanisms) between various blocks within programmable logic 106 and other circuitry within or outside PLD 103.
[0050] Control circuitry 136 controls various operations within PLD 103. Under the supervision of control circuitry 136, PLD configuration circuitry 130 uses configuration data (which it obtains from an external source, such as a storage device, a host, etc.) to program or configure the functionality of PLD 103. The configuration data determine the functionality of PLD 103 by programming programmable logic 106 and programmable interconnect 109, as persons skilled in the art with the benefit of the description of the invention understand.
[0051] I/O circuitry 112 may constitute a wide variety of I/O devices or circuits, as persons of ordinary skill in the art who have the benefit of the description of the invention understand. I/O circuitry 112 may couple to various parts of PLD 103, for example, programmable logic 106 and programmable interconnect 109. I/O circuitry 112 provides a mechanism and circuitry for various blocks within PLD 103 to communicate with external circuitry or devices.
[0052] Test/debug circuitry 115 facilitates the testing and troubleshooting of various blocks and circuits within PLD 103. Test/debug circuitry 115 may include a variety of blocks or circuits known to persons of ordinary skill in the art who have the benefit of the description of the invention. For example, test/debug circuitry 115 may include circuits for performing tests after PLD 103 powers up or resets, as desired. Test/debug circuitry 115 may also include coding and parity circuits, as desired.
[0053] As noted above, PLD 103 may include one or more processors 118. Processor 118 may couple to other blocks and circuits within PLD 103. Processor 118 may receive data and information from circuits within or external to PLD 103 and process the information in a wide variety of ways, as persons skilled in the art with the benefit of the description of the invention appreciate. One or more of processor(s) 118 may constitute a digital signal processor (DSP). DSPs allow performing a wide variety of signal processing tasks, such as compression, decompression, audio processing, video processing, filtering, and the like, as desired.
[0054] PLD 103 may also include one or more communication circuitry 121. Communication circuitry 121 may facilitate data and information exchange between various circuits within PLD 103 and circuits external to PLD 103, as persons of ordinary skill in the art who have the benefit of the description of the invention understand. As an example, communication circuitry 121 may provide various protocol functionality {e.g., Transmission Control Protocol/Internet Protocol (TCP/IP), User Datagram Protocol (UDP) etc.), as desired. As another example, communication circuitry 121 may include network (e.g., Ethernet, token ring, etc.) or bus interface circuitry, as desired.
[0055] PLD 103 may further include one or more memories 124 and one or more controller(s) 127. Memory 124 allows the storage of various data and information (such as user-data, intermediate results, calculation results, etc.) within PLD 103. Memory 124 may have a granular or block form, as desired. Controller 127 allows interfacing to, and controlling the operation and various functions of circuitry outside the PLD. For example, controller 127 may constitute a memory controller that interfaces to and controls an external synchronous dynamic random access memory (SDRAM), as desired.
[0056] The blocks of circuitry within PLD 103 include a number of transistors. More particularly, the transistors constitute metal oxide semiconductor (MOS) transistors, such as N-type MOS (NMOS), P-type MOS (PMOS), complementary MOS (CMOS), or partially depleted silicon-on-insulator (SOI) MOS transistors (or a combination of those types of transistors), as desired.
[0057] FIG. 2 shows a MOS transistor used in exemplary embodiments according to the invention. The MOS transistor includes body (or substrate) region 203, source region 206, drain region 209, gate insulator 215, and gate 212. The drain current of the MOS transistor in the saturation region of operation depends on the threshold voltage and the gate-to-source voltage of the transistor:
(1) where ij) ― the total drain current (i.e., including AC and DC components), K= a constant, VQS = the total gate-to-source voltage (i.e., including AC and DC components), and Vj1= the threshold voltage.
[0058] The threshold voltage, Vj1, depends on a number of factors, such as the voltage between source region 206 and body region 203 of the transistor. The following equation provides the threshold voltage as a function of the body-to-source voltage:
VT = Km + r{pΦF -vBS ~ ftfF . (2A) Alternatively, one may write Equation 2 A in terms of the source-to-body voltage:
? 29Λ ,Fw ' (2B)
where VT(o) = the threshold voltage with the source-to-body voltage (or body-to-source voltage) set to zero, γ= the body factor, a constant that depends on the doping levels of the body,
a constant, VBS ~ the total body-to-source voltage (i. e. , including AC and DC components), and vsB = the total source-to-body voltage (i.e., including AC and DC components). Note that when the body-to-source voltage, vβS (or source-to-body voltage, VSB) equals zero, the threshold voltage, Vj1, equals Vτ(0)-
[0059] As Equation 2B shows, for a finite body factor, γ, the transistor's threshold voltage increases as the source-to-body voltage, vsB-> increases. Equation 1, however, indicates that for a given gate-to-source voltage an increase in the threshold voltage decreases the drain current, i][), of the transistor. In other words, according to Equations 1 and 2B, for a constant gate-to-source-voltage, VQS, an increase in the source-to-body voltage, v£g, causes an increase in the threshold voltage, Vj1.
[0060] An increased threshold voltage, Vχ} in turn causes a decrease in the quantity (VQS - Vf) and, consequently, a decrease in the drain current, ij), of the transistor. Thus, for a constant gate-to-source-voltage, VQS, an increase in the source-to-body voltage, v$g, causes a decrease in the current-drive capability (one measure of performance) of the transistor. The decreased current-drive capability of the transistor in turn leads to slower circuit operation and, ultimately, to slower operation of the PLD that includes the transistor.
[0061] The power dissipation of the transistor also varies according to changes in its threshold voltage. More specifically, a smaller threshold voltage increases the OFF-state leakage current (Joff) of the transistor, and vice- versa. The I off 0^ the transistor affects its static (non-switching) power dissipation. In addition, a smaller threshold voltage decreases the dynamic or switching power dissipation of the transistor. Thus, changing the threshold voltage by adjusting the body bias affects the power dissipation of the MOS transistor.
[0062] Furthermore, for a given supply voltage, Vf)J), an increase in the threshold voltage, Vx, limits the maximum voltage that the transistor can transmit when operating as a pass transistor. In other words, if the threshold voltage, Vx, increases to the point that it equals or exceeds the gate-to-source-voltage, VQS, the drain current reduces to zero. Thus, a voltage applied to the drain of the transistor, for example, a voltage that corresponds to a logic 1 level, fails to properly transmit to the source of the transistor. Consequently, the transistor fails to operate reliably as a pass transistor.
[0063] As the above description shows, one may affect the performance of the MOS transistor by adjusting its body bias and hence its source-to-body voltage (ultimately resulting in a chance in its threshold voltage). Adjusting the body bias affects performance measures such as current-drive capability, speed of operation, power dissipation, etc.
[0064] As noted above, in embodiments according to the invention, one may adjust the body bias of individual transistors, individual circuits or blocks within the PLD, groups of transistors or blocks, or even the entire PLD, as desired. Furthermore, one may control the body bias of individual NMOS and PMOS transistors, or the body biases of groups of NMOS and PMOS transistors, as desired. The following description provides the details.
[0065] FIG. 3 shows a floor-plan of a PLD 103 according to an exemplary embodiment of the invention. PLD 103 includes programmable logic 106 arranged as a two- dimensional array. Programmable interconnect 109, arranged as horizontal interconnect and vertical interconnect, couples the blocks of programmable logic 106 to one another. One may adjust the body bias of each block of programmable logic 106, each segment of programmable interconnect 109, or both, as desired. Furthermore, one may adjust the body bias of a portion of one or more blocks of programmable logic 106, a portion of programmable interconnect 109, or both, as desired. [0066] In illustrative embodiments, PLDs according to the invention have a hierarchical architecture. In other words, each block of programmable logic 106 in FIG. 3 may in turn include smaller or more granular programmable logic blocks or circuits. One may adjust the body bias of transistors in each level of the hierarchical architecture of the PLD, as desired.
[0067] FIG. 4 shows a block diagram of a programmable logic 106 in a PLD according to an exemplary embodiment of the invention. Programmable logic 106 includes logic elements or programmable logic circuits 250, local interconnect 253, interface circuit 256, and interface circuit 259. Logic elements 250 provide configurable or programmable logic functions, for example, LUTs, registers, product-term logic, etc., as persons of ordinary skill in the art who have the benefit of the description of the invention understand. Local interconnect 253 provides a configurable or programmable mechanism for logic elements 250 to couple to one another or to programmable interconnect 109 (sometimes called "global interconnect"), as desired.
[0068] Interface circuit 256 and interface circuit 259 provide a configurable or programmable way for programmable logic 106 block of circuitry to couple to programmable interconnect 109 (and hence to other programmable logic 106, as FIG. 3 shows). Interface circuit 256 and interface circuit 259 may include multiplexers (MUXs), registers, buffers, drivers, and the like, as persons of ordinary skill in the art who have the benefit of the description of the invention understand.
[0069] One may adjust the body bias of each portion or block of circuitry within PLD 103 (see FIGS. 1, 3, and 4), as desired. Furthermore, one may adjust the body bias of each portion or block of circuitry independently of others, on an individual or collective basis, as desired. Within each portion or block of circuitry, one may adjust the body bias of each sub-block or transistor, or groups of sub-blocks or transistors, on an individual or collective basis, as desired.
[0070] For example, one may adjust the body bias of all or a portion of the following circuitry within a PLD according to exemplary embodiments of the invention: one or more of the blocks in FIG. 1 (e.g., programmable logic 106, programmable interconnect 109, etc.); one or more logic elements 250 within one or more programmable logic blocks 106; one or more interface circuits 256 and/or 259, within one or more programmable logic blocks 106; one or more local interconnect within one or more programmable logic 106; and one or more MUXs, drivers, buffers, etc., within one or more interface circuits 256 and/or 259.
[0071] As noted above, one may make the body-bias adjustments in any desired level of granularity. In other words, one may make the adjustments applicable to individual transistors, groups of transistors, sub-blocks, blocks, or the entire PLD, as desired, and as applicable. For example, one may make body-bias adjustments to one or more NMOS transistors independently of one or more PMOS transistors, as desired.
[0072] Furthermore, one may adjust the body bias of one element in PLD 103 independently of all other elements, as desired. As persons of ordinary skill in the art with the benefit of the description of the invention understand, one may adjust the body bias some parts of a PLD and yet provide a fixed or default body bias for other parts of the PLD, as desired. [0073] As an example of the granularity of body-bias adjustment, consider a two-input, one-output MUX. FIG. 5 shows a MUX used in PLDs according to exemplary embodiments of the invention that incorporate body-bias adjustment. The MUX includes transistor 275 and transistor 278. The MUX receives a signal from circuit A and another signal from circuit B. In response to a select signal, S, and its complement, 5", the MUX routes to circuit C (coupled to the output of the MUX) either the signal from circuit A or the signal from circuit B.
[0074] One may adjust the body biases of transistor 275 and transistor 278 in a number of ways. First, one may choose to not adjust the body biases {e.g., use a default body bias within the PLD). Second, one may adjust the body bias of transistor 275 to the same level as the body bias of transistor 278. As an alternative, one may adjust the body bias of only of transistor 275 and transistor 278. As another choice, one may adjust individually the body biases of each of transistor 275 and transistor 278.
[0075] Thus, one may configure the performance properties of the MUX in a flexible manner. Put another way, one may balance or trade off the speed of operation, current- drive capability, and power dissipation of the MUX against one another. As further examples, note that one may extend the body-bias adjustment concept to a set of transistors in a MUX, to a particular signal route {e.g., a signal routing corresponding to a particular input), to a set of pass transistors (for example, a set of pass transistors in programmable routing, which feed a MUX shared by other sets of pass transistors to save configuration memory bit counts), etc.
[0076] As noted above, the user may adjust the body bias of various portions of PLDs according to the invention. The user may do so by using the software used to map a design to a PLD. FIG. 6A depicts various software modules that PLD computer-aided design (CAD) software according to illustrative embodiments of the invention uses. The modules include design-entry module 305, synthesis module 310, place-and-route module 315, and verification module 320.
[0077] Design-entry module 305 allows the integration of multiple design files. The user may generate the design files by using design-entry module 305 or by using a variety of electronic design automation (EDA) or CAD tools (such as industry-standard EDA tools), as desired. The user may enter the design in a graphic format, a waveform- based format, a schematic format, in a text or binary format, or as a combination of those formats, as desired.
[0078] Synthesis module 310 accepts the output of design-entry module 305. Based on the user-provided design, synthesis module 310 generates appropriate logic circuitry that realizes the user-provided design. One or more PLDs (not shown explicitly) implement the synthesized overall design or system. Synthesis module 310 may also generate any glue logic that allows integration and proper operation and interfacing of various modules in the user's designs. For example, synthesis module 310 provides appropriate hardware so that an output of one block properly interfaces with an input of another block. Synthesis module 310 may provide appropriate hardware so as to meet the specifications of each of the modules in the overall design or system.
[0079] Furthermore, synthesis module 310 may include algorithms and routines for optimizing the synthesized design. Through optimization, synthesis module 310 seeks to more efficiently use the resources of the one or more PLDs that implement the overall desigii or system. Synthesis module 310 provides its output to place-and-route module 315.
[0080] Place-and-route module 315 uses the designer's timing specifications to perform optimal logic mapping and placement. The logic mapping and placement determine the use of routing resources within the PLD(s). In other words, by use of particular programmable interconnects with the PLD(s) for certain parts of the design, place-and- route module 315 helps optimize the performance of the overall design or system. By proper use of PLD routing resources, place-and-route module 315 helps to meet the critical timing paths of the overall design or system. Place-and-route module 315 optimizes the critical timing paths to help provides timing closure faster in a manner known to persons of ordinary skill in the art with the benefit of the description of the invention. As a result, the overall design or system can achieve faster performance (i.e., operate at a higher clock rate or have higher throughput).
[0081] Furthermore, place-and-route module 315 adjusts the body bias of a portion of or all of the PLD(s) that implement the design or system. Place-and-route module 315 may do so automatically, according to user-specified criteria, or a combination of the two. Place-and-route module 315 may use the user-specified criteria (for example, performance specifications, such as power dissipation, speed, and/or current-drive capability). In addition, or instead, place-and-route module 315 may use the information about critical paths within the design or system to adjust body biases of parts or all of the design or system, as desired.
[0082] For example, place-and-route module 315 may adjust the body biases of the critical parts of the design or system so as to achieve higher performance. Place-and- route module 315 may take into account power dissipation criteria (e.g., maximum power density) so as to trade off power and performance, as desired. Place-and-route module 315 provides the optimized design to verification module 320.
[0083] Verification module 320 performs simulation and verification of the design. The simulation and verification seek in part to verify that the design complies with the user's prescribed specifications. The simulation and verification also aim at detecting and correcting any design problems before prototyping the design. Thus, verification module 320 helps the user to reduce the overall cost and time-to-market of the overall design or system.
[0084] Verification module 320 may support and perform a variety of verification and simulation options, as desired. The options may include design-rule checking, functional verification, test-bench generation, static timing analysis, timing simulation, hardware/software simulation, in-system verification, board-level timing analysis, signal integrity analysis and electro-magnetic compatibility (EMC), formal netlist verification, and power-consumption estimation, as desired. Note that one may perform other or additional verification techniques as desired and as persons of ordinary skill in the art who have the benefit of the description of the invention understand. As noted above, PLD architecture and circuitry according to the invention provide the ability for the user to trade in a PLD, or regions of a PLD, speed for leakage (and, hence, power dissipation). To make usage of this functionality as convenient as possible for the user, PLD CAD according to exemplary embodiments of the invention can configure the circuitry automatically so as to meet the user's specifications and criteria automatically. Furthermore, to maximize the leakage reduction while minimizing the speed impact on the user's circuit, PLD CAD according to various embodiments of the invention takes the presence of bias regions into account during the implementation of the user circuit, and optimizes the circuit so as to maximize the effectiveness of the bias regions. The following description provides details of the functionality of the PLD CAD.
[0085] For a timing-driven PLD CAD system to best exploit substrate-bias, it should estimate the substrate-bias to for the PLD, or each region (which may include one or more transistors) of the PLD, during design implementation. The PLD CAD takes into account the body bias during timing analysis of the design. Thus, the body-bias levels affect which portions of the design become critical from a timing point of view.
[0086] Initially, the CAD system assumes some body-bias level (and, hence, leakage/speed setting) for each region in the PLD for which the user wishes to set or program the body-bias level(s) of one or more transistors. As one possible choice, the PLD CAD may assume that all affected regions will use a relatively low speed setting (i.e., a body bias that results in relatively low leakage levels). The PLD CAD system provides an initial placement of the PLD circuitry. Placement proceeds via iterative improvements of that initial placement.
[0087] At various points during this iterative improvement procedure, the PLD CAD estimates the speed of the circuit, and calculates timing slack values for all connections involved. The calculation of timing slack values takes into account the current body-bias level selected for each region when estimating delays. Note that the PLD CAD interleaves body-bias selection with iterative improvements of placement. The PLD CAD evaluates regions that contain portions of the circuit with smaller average and worst-case connection slack values for conversion to a higher-speed (and corresponding higher leakage) body-bias setting. The CAD software selects a new candidate bias setting for one or more regions, and evaluates the bias setting by estimating the total cost of the new setting in terms of circuit timing, and the total increase in leakage current and/or power. If the new bias setting leads to positive slack values for all connections in the region (or less-negative slack levels in the region), the PLD CAD generally adopts the new bias setting.
[0088] Similarly, the CAD software evaluates for conversion to a lower-speed body-bias setting those regions that currently have relative high bias settings, but in which all connections have positive slack values. The CAD software adopts the new body-bias setting if doing so would not cause a violation of any circuit timing criterion or criteria.
[0089] Upon changing one or more bias setting(s), iterative placement improvement continues to try to resolve any potential timing concerns or violations generated by the changed bias setting, or it tries moving more time-critical circuitry into newly created bias regions with higher speed. The algorithm terminates either when the placement and routing meets the user's timing and power goals, or when it reaches a desired or prescribed iteration limit (i.e., it appears that it cannot accomplish any no further improvement).
[0090] FIG. 6B illustrates a flow diagram for a PLD CAD software according to an exemplary embodiment of the invention. The PLD CAD shown in FIG. 6B incorporates the choice of body bias for each region of the PLD into a timing-driven place-and-route CAD system.
[0091] More specifically, at 330, the PLD CAD sets initial region body-bias setting(s). At 335, the software generates an initial placement. Then, at 338, it analyzes the timing of the circuitry using delay estimates that reflect present body-bias settings. At 341, the software determines whether it has met the user's timing and power goals. If so, at 344 it records the placement and body-bias selections. If not, the software checks at 347 to determine whether it has reached the iteration limit. If so, it proceeds to 344 to record the current placement and body-bias selections. If the software has not reached the iteration limit, it increments the iteration count (not shown explicitly), and at 350 changes the bias settings of at least some regions. At 353, it analyzes the timing of the circuitry using delay estimates that reflect the changed body-bias settings. At 356, it improves the placement of the circuit, and jumps to 341 to determine whether it has met the user' s timing and power goals.
[0092] As persons of ordinary skill in the art who have the benefit of the description of the invention understand, one may use many variations of the algorithms described here. For example, one may use a variety of initial body-bias settings, such as setting all regions to low speed, or to high speed. If the software estimates that it will meet all timing specifications in a placement, it may evaluate converting high-speed bias regions to low-speed regions, with preference given to regions containing connections with larger positive slack values. After converting some regions into low-speed regions, the software resume placement improvement. The software may iterate those two steps until it meets the user's power and timing goals.
[0093] As a second example, the software may generate an initial setting of bias regions from a user's chip floor-plan. The software initially sets the bias for the time-critical regions in the floor-plan for high speed of operation, and sets the bias for other regions for relatively low speed of operation. The software may then use the technique shown in FIG. 6B for further improvement in bias selection. [0094] As a third example, the software may generate an initial setting of body bias from a quick placement of the circuit, followed by a timing analysis, to distinguish speed- critical regions from other regions. The placement may constitute a normal placement, or may constitute a "coarse placement" that determines in which body-bias region to locate each part of the user's circuit. The software may then use the algorithm in FIG. 6B for further improvement of those initial bias settings.
[0095] As a fourth example, before beginning placement, the software may pre-cluster the circuit into relatively large circuit elements that constitute a body-bias region. Each of the clusters may consist of circuitry that is either time-critical or non-time-critical. The software may place the clusters on a coarse grid that represents the PLD 's body-bias regions. The software may then set the bias level of each region according to the type of circuitry placed in it. Thus, time-critical circuits receive a relatively high-speed body- bias setting, whereas non-time-critical circuits receive a relatively low-speed. The software may then use the algorithm in FIG. 6B with those initial bias settings to improve the placement.
[0096] As a fifth example, other algorithms besides placement algorithms, such as routing algorithms, may take into account the body-bias of a given region in their delay estimation. One may interleave such algorithms with body-region bias fine-tuning by interleaving region body-bias selection and normal algorithm optimization.
[0097] Once the PLD CAD has implemented a design {i.e., synthesized, placed and routed the design), the CAD software should automatically set the body-bias circuitry {e.g., body-bias generation circuitry, body-bias control circuitry) to the correct state and body-bias level(s). The software may do so in several ways, depending on the details of the body-bias circuitry works, and also on user's goals.
[0098] As one alternative, if the user has a leakage power goal, and the bias circuitry incorporates leakage-locked loops (described below in detail), the PLD CAD should set the bias circuitry to so that the leakage power is less than or equal to the user's power- dissipation goal. The CAD software may then analyze the timing of the circuit at relatively high temperatures and the process corner with the highest ratio of leakage current to "ON" transistor drive current so that the circuit meets all timing specifications at that process and operating condition. If the user instead has the goal of minimizing leakage power, subject to meeting all timing specifications, the software may set the leakage-locked loop in each region such that the transistors operate in a regime where they meet all timing constraints at the worst expected process and operating corner. Generally, the corner will occur at relatively high temperatures and at the process corner with the highest ratio of leakage current to "ON" transistor drive current.
[0099] As another alternative, if the user has the goal of minimizing power subject to meeting some timing specifications and the bias circuitry includes delay-locked loops, the CAD software may set or program the delay loops so that that the circuit meets those timing specifications. The software may do so by extracting the most critical path from the circuitry in each body-bias region via timing analysis. If the delay-locked loop uses a programmable delay chain, the software sets the circuitry such that it sets the delay of the reference chain in each body-bias region to a nominal delay value greater than the nominal delay of the corresponding body-bias region's critical path. The software routes to the delay-locked circuitry the appropriate clock signal(s) that define the launch and capture edges for the critical path. Usually the same clock signal defines both the launch and capture edges, but in designs with multiple phase and frequency-related clock signal(s), separate clock domains may define the launch and capture edges. If the delay- locked loop is "soft" and locks to some PLD circuitry, the CAD system should make as precise a copy of each critical path for each bias region as possible to be used as reference delay of the delay-locked loop.
[00100] As yet another alternative, the PLD CAD may give the user the ability to select between various power-delay trade-offs by programming the body-bias circuitry. In that case, the CAD software looks up the appropriate power and delay models according to the bias setting the user has chosen, and uses those models in power and timing analysis. The software may make the power and delay models less conservative (worst-case). One may do so by testing the devices before shipment to users, and storing data (generally, in the form of the threshold voltage) indicating the transistor speed and leakage in the PLD (for example, in non- volatile memory that resides within the PLD). The CAD software still programs the user's desired power-delay trade-off into the device during programming, but on-chip hardware compares this "desired" trade-off with the stored device characteristics, and computes and applies the appropriate body bias levels so that the transistors have the desired power-delay trade-off.
[00101] FIG. 7 shows a flow diagram for the process of adjusting body bias according to an exemplary embodiment of the invention. A program, such as the software described in conjunction with FIG. 6A, may perform the process in FIG. 7.
[00102] Once the process begins, at 403, it identifies critical circuit path(s) within the PLD that implements the design or system, as described above, and as persons of ordinary skill in the art who have the benefit of the description of the invention understand. At 403, the process adjusts the body bias of transistors within the identified critical circuit path(s). In other words, it select one or more body-bias levels for one or more transistor or sets of transistors. Next, at 406, the process programs or configures one or more body-bias generators for the critical circuit path(s). The body-bias generator(s) generate one or more body-bias levels selected at 403.
[00103] Note that the process need not confine itself to merely the identified critical circuit paths or blocks. Instead, or in addition, the user may identify and specify circuit paths or blocks that the user desired to meet specific performance criteria. For example, the user may wish to have a high-speed adder implemented within the PLD. The user may identify the circuitry or blocks used to implement the adder and specify to the software to adjust the body-bias level(s) of the circuitry or blocks to meet certain timing specifications. The user may provide other performance specifications or criteria, such as power dissipation. The software may trade off the various performance specifications to select the body-bias level(s) of the circuit path(s) or blocks.
[00104] FIG. 8 shows a block diagram of circuitry within a PLD according to exemplary embodiments of the invention to adjust, program, or set the body-bias levels of desired PLD circuitry or blocks. The circuitry includes body-bias generator 430, a plurality of configuration memory (configuration random-access memory, or CRAM5 or other implementations of the memory) cells 438A-438D, a plurality of transistors 440A- 440D3 and PLD circuits 445A-445B.
[00105] Body-bias generator 430 generates one or more body-bias signals 435 and provides those signal(s) to transistors 440A-440D. In response to a respective one of the data in CRAM cells 438A-438, transistors 440A-440D provide the body-bias signals 435 to PLD circuits 445A-445B. PLD circuits 445A-445B may constitute circuitry whose body-bias levels one wishes to set, program, or adjust, such as individual transistors, groups of transistors, circuit blocks, etc., as described above.
[00106] For example, suppose that CRAM cells 438A and 438C store binary ones, whereas CRAM cells 438B and 438D store binary zeros. Consequently, transistors 440A and 440C turn ON and provide body-bias signal 435 A to PLD circuits 445A-445B. Transistors 440B and 440D turn OFF, and therefore do not provide any signals to PLD circuits 445A-445B.
[00107] As another example, suppose that the reverse situation of the preceding example exists {i.e., CRAM cells 438A-438D hold binary data 0, 1, 0, 1, respectively). In this case, transistors 440A and 440C turn OFF (and thus provide no signals to PLD circuits 445A-445B), and transistors 440B and 440D turn ON. As a result, transistors 440B and 440D provide body-bias signal 435B to PLD circuits 445A-445D.
[00108] In exemplary embodiments, CRAM cells 438A-438D may serve more than one purpose, as desired. More specifically, CRAM cells 438A-438D may control the body bias of various circuitry within the PLD {e.g., PLD circuit 445 A or 445B). In addition, CRAM cells 438A-438D may serve as routing CRAM cells. In other words, in addition to controlling body bias levels, one or more of CRAM cells 438A-438D may select one circuit path over another circuit path within a MUX {i.e., select one routing path within a MUX as opposed to an alternative routing path within the MUX), as desired. [00109] Note that one may implement body-bias generator 430 in a variety of ways, as persons of ordinary skill in the art with the benefit of the description of the invention understand. For example, one may use a bias source (e.g., one of a variety of well- known bias sources) and then use a charge pump to generate body-bias signals 435, which are pumped to appropriate or desired levels. As another example, one may use stored digital data corresponding to body-bias levels and use one or more sealer circuits together with one or more digital-to-analog converters (DACs) to generate the desired body-bias signals 435.
[00110] In addition to adjusting, programming, or setting body-bias levels, one may use other measures to control the power dissipation and, hence, power density of PLDs. More specifically, one may selectively shut down or turn off portion(s) of the circuitry within a PLD. As a result, one may further reduce the power dissipation within the PLD.
[00111] FIG. 9 shows a block diagram of a circuit for selectively turning off circuitry or reducing or generally controlling power consumption of circuitry within a PLD according to exemplary embodiments of the invention. The circuit includes control circuitry 136, transistor 450, and PLD circuit(s) 445A. In addition, the circuit may include transistor 450A, transistor 453, supply-voltage circuit 456, transistor 453A, and PLD circuit(s) 445B.
[00112] Suppose that one wishes to shut down PLD circuit(s) 445 A. Transistor 450 couples PLD circuit 445A to the supply voltage Vj)D. In other words, when transistor 450 is ON, PLD circuit(s) 445 A receive(s) the supply voltage Vj)D, and vice- versa. Transistor 450 turns ON and OFF in response to a control signal from control circuitry 136. Thus, to turn off PLD circuit(s) 445A, one causes control circuitry 136 to de-assert the gate signal of transistor 450 and interrupt the supply voltage to PLD circuit(s) 445 A. One may subsequently turn ON PLD circuit(s) 445A by asserting the gate signal of transistor 450 under the supervision of control circuitry 136.
[00113] Note that, rather than turning transistor 450 OFF or ON, one may control the gate voltage of transistor 450 so as to use transistor 450 as a variable impedance device. Thus, transistor 450 may at extremes have relatively high impedance (OFF state), relatively low impedance (ON state), or an impedance level between those two states. As a result, one may not only turn OFF and ON PLD circuit(s) 445 A, but also control power dissipation within those circuit(s) by controlling the impedance of transistor 450.
[00114] In addition to, or instead of, using transistor 450 to control the provision of supply voltage, Vj)D, to PLD circuit(s) 445A (whether turning OFF, ON, or anything in between those extremes, as described above), one may use transistor 450A to control the provision of supply voltage Vss (typically circuit ground). The details of operation are similar to those described above with respect to transistor 450 and supply voltage Vj)D, as persons of ordinary skill in the art who have the benefit of the description of the invention understand.
[00115] PLD 103 may use more than one supply voltage, as desired. In other words, one may optionally use supply- voltage circuit 456 to generate secondary supply- voltage 459 from the primary supply voltage, VDD- Secondary supply-voltage 459 may have a smaller or larger magnitude than the primary supply voltage, as desired. Furthermore, one may use more than one secondary supply-voltage, as desired. Secondary supply- voltage 445B powers PLD circuit 445B. One may shut down or power up PLD circuit(s) 445B by, respectively, de-asserting and asserting the gate signal of transistor 453 under the supervision of control circuitry 136.
[00116] Note that, rather than turning transistor 453 OFF or ON, one may control the gate voltage of transistor 453 so as to use it as a variable impedance device. Thus, transistor 453 may at extremes have relatively high impedance (OFF state), relatively low impedance (ON state), or an impedance level between those two states. As a result, one may not only turn OFF and ON PLD circuit(s) 445B, but also control power dissipation within those circuit(s) by controlling the impedance of transistor 453.
[00117] In addition to, or instead of, using transistor 453 to control the provision of secondary supply voltage 459 to PLD circuit(s) 445B (whether turning OFF, ON, or anything in between those extremes, as described above), one may use transistor 453A to control the provision of supply voltage VsS (typically circuit ground). The details of operation are similar to those described above with respect to transistor 453 and secondary supply- voltage 459, as persons of ordinary skill in the art who have the benefit of the description of the invention understand.
[00118] Note that each PLD circuit 445 A and/or PLD circuit 445B may constitute a PLD block (see, for example, FIGs. 1, 3, and 4), a portion of a PLD block, or a set of PLD blocks, as desired. In other words, one may selectively apply the power control techniques to one or more blocks, sub-blocks, or portions of block(s) within a PLD, as desired.
[00119] Note that one may adjust, program, or set body-bias levels in response to sources external to the PLD. For example, one may communicate body-bias levels to a PLD to adjust or modify its performance. FIG. 10 shows a circuit arrangement according to exemplary embodiments of the invention for adjusting body-bias levels within a PLD in response to an external source 470. The circuit arrangement includes external source 470, communication/interface circuit 475, and body-bias generator 430.
[00120] Communication/interface circuit 475 provides a mechanism for external source 470 and body-bias generator 430 to communicate and exchange information. External source 470 may provide one or more control signal(s) 480 to communication/interface circuit 475 within PLD 103. Communication/interface circuit 475 provides the information received from external source 470 to body-bias generator 430. In response, body-bias generator 430 generates one or more body-bias signals 435, with levels corresponding to control signal(s) 480. Communication/interface circuit 475 may provide information, such as status signals, from body-bias generator 430 (or PLD 103 generally) to external source 470.
[00121] External source 470 may constitute a variety of devices, structures, or arrangements, as persons of ordinary skill in the art with the benefit of the description of the invention understand. For example, external source 470 may constitute the Internet, a computer network, a bus, etc., as desired.
[00122] Note that one may adjust, program, or set the body-bias levels in PLDs on a dynamic or time-varying basis, as desired, to take into account or respond to changing conditions (for example, changes in performance specifications). As one example, referring to FIG. 10, external source 470 may update or modify control signal(s) 480 that it provides to PLD 103. In response, body-bias generator 430 provides body-bias signals 435 that correspond to the updated or modified control signal(s) 480. [00123] As another example, one may change or adjust body-bias levels in response to changes within PLD 103 itself, for instance, a change in temperature in one or more circuits or areas of PLD 103. FIG. 11 shows a circuit arrangement for modifying body- bias level(s) within a PLD according to exemplary embodiments of the invention.
[00124] The circuit arrangement includes one or more temperature sensor(s) 503, one or more reference source(s) 512, subtracter 509, and body-bias generator 430. Temperature sensor(s) 503 sense the temperature in one or more areas, circuits, or blocks within PLD 103 and provide temperature signal(s) 506 to subtracter 509. Reference source(s) 512 provide reference signal(s) 515 to subtracter 509. Reference signal(s) 515 may have values that correspond to various temperature levels.
[00125] Subtracter 509 subtracts reference signal(s) 515 from temperature signal(s) 506 and provides difference signal(s) 518 to body-bias generator 430. Difference signal(s) 518 may constitute the difference between actual temperatures and desired temperatures in one or more parts of PLD 103.
[00126] In response to difference signal(s) 518, body-bias generator 430 generates body-bias signal(s) 435. Body-bias generator 430 may use difference signal(s) 518 to generate body-bias signal(s) 435 that affect various aspects of the performance of PLD 103. For example, if difference signal(s) 518 indicate a lower temperate than a threshold or maximum temperature, body-bias generator 430 may generate body-bias signal(s) that decrease the threshold voltage of one or more transistors within PLD 103 (and hence cause increased performance). In contrast, if difference signal(s) 518 indicate a temperature level higher than a safe or maximum level, body-bias generator 430 may generate body-bias signal(s) that increase the threshold voltage of one or more transistors within PLD 103 (thus causing decreased temperature levels, albeit decreased performance).
[00127] More generally, one may implement a feedback loop that generates body-bias level(s) so as to target specific performance criteria. Put another way, one may compare actual performance measures of a PLD to desired or specified measures or criteria and adjust, program, or set body-bias levels accordingly.
[00128] FIG. 12 shows a flow diagram for a process or technique of adjusting, programming, or setting body-bias levels in a PLD used in exemplary embodiments of the invention. One may implement the process or technique by using appropriate circuitry (or a combination of circuitry and software or firmware), such as control circuitry 136.
[00129] The process operates as follows. At 550, one sets or programs initial body- bias level(s) for desired portion or portions of the PLD. Subsequently, at 553, one obtains performance measure(s) of the PLD. The performance measures may include a wide variety of criteria, such as the time a given operation takes, power consumption, power density, throughput, on-chip self test results, and the like, as persons of ordinary skill in the art who have the benefit of the description of the invention understand.
[00130] Next, at 556, the process checks to determine whether the actual performance measure(s) meet the desired or specified criterion or criteria. If so, at 559, the process leaves the body-bias level(s) unchanged. On the other hand, if the actual performance measure(s) fail to meet the specified criterion or criteria, at 562 the process adjusts, programs, or sets new or updated body-bias levels so as to reduce the difference between the actual and desired performance measure(s). The process then returns to 553 to check whether the effect of the new body-bias level(s) on the actual performance measure(s). The process may continue indefinitely or a given number of times, as desired.
[00131] In addition to checking performance measures (e.g., speed of operation, throughput, power consumption), one may check temperature level(s) of one or more parts or circuits within the PLD. FIG. 13 shows a flow diagram for a process or technique of adjusting, programming, or setting body-bias level(s) that takes temperature level(s) into account. As noted above, one may implement the process or technique by using appropriate circuitry (or a combination of circuitry and software or firmware), such as control circuitry 136.
[00132] At 550, the process sets, programs, or adjusts the initial body-bias level(s) for desired transistors, circuits, blocks, and the like, within the PLD. At 553, it obtains performance measures. The performance measures may include a wide variety of parameters or variables, as noted above. The choice of performance measures depends on factors such as design and performance specifications for the circuit or system that the PLD implements, as persons of ordinary skill in the art understand.
[00133] Subsequently, a 553A, the process obtains temperature level(s). As noted above, one may obtain and check one ore more temperature levels from various parts of the PLD. In exemplary embodiments, one may obtain temperature level(s) from any identified critical path(s) or, in general, any circuitry that may have relatively high power consumption and, hence, relatively high temperature levels. [00134] At 556A, the process checks to determine whether the actual performance measure(s) meet the desired or specified criterion or criteria. Furthermore, the process checks to determine whether the actual temperature level(s) meet the desired or specified criterion or criteria (e.g., whether the actual temperature falls within a prescribed range or below a threshold level, etc.).
[00135] If both conditions hold, at 559, the process leaves the body-bias level(s) unchanged. If both conditions fail to hold, however, at 562 the process adjusts, programs, or sets new or updated body-bias levels so as to reduce the difference between the actual and desired performance measure(s) and between the actual and desired or prescribed temperature level(s). The process then returns to 553 to check whether the effect of the new body-bias level(s) on the actual performance measure(s) and on the temperature level(s). The process may continue indefinitely or a given number of times, as desired.
[00136] In other embodiments, one may adjust, program, or set the body-bias level(s) in response to or depending on the operating environment of the circuit or system that the PLD implements. For example, suppose that one uses a PLD according to the invention to realize a communications network controller or router. During operation, the PLD may obtain information about the conditions or characteristics of the environment in which the controller or router operates.
[00137] For instance, the PLD may obtain measures relating to the traffic levels within that environment. Depending on the conditions in, or characteristics of, its operating environment, the PLD may adjust, program, or set body-bias level(s) in one or more of its transistors so that its performance matches the needs of the operating environment. Of course, the example above constitutes merely one illustration of how one may use such PLDs. One may apply the inventive concepts to a wide variety of circuits, systems, and operating environments, each with their own characteristics and conditions, as persons of ordinary skill in the art who have the benefit of the description of the invention understand.
[00138] FIG. 14 shows a flow diagram for a process or technique of adjusting, programming, or setting body-bias level(s) that takes into account the characteristics or conditions of the environment in which the PLD operates. As noted above, one may implement the process or technique by using appropriate circuitry (or a combination of circuitry and software or firmware), such as control circuitry 136.
[00139] The process operates as follows. At 550, one programs or sets initial body- bias level(s) for desired portion or portions of the PLD. Subsequently, at 553B, one obtains one or more conditions or characteristics of the environment, circuit, or system in which the PLD operates. The conditions or characteristics may include a wide variety of items, as noted above.
[00140] Next, at 556B, the process checks to determine whether the conditions or characteristics of the operating environment make desirable higher performance levels of the PLD. (To use the example above, for instance, whether network traffic levels are relatively high, thus making higher PLD performance or throughput more desirable.) If not, at 559, the process leaves the body-bias level(s) unchanged. On the other hand, if higher PLD performance or throughput are desirable, at 562 the process adjusts, programs, or sets new or updated body-bias levels so as to reduce the difference between the actual and desired performance measure(s). The process then returns to 553B to check whether the effect of the new body-bias level(s) on the actual performance measure(s). The process may continue indefinitely or a given number of times, as desired.
[00141] One may use a variety of embodiments according to the inventive concepts, depending on factors such as design and performance specifications for a given application or implementation. For example, referring to FIG. 14, note that, similar to the embodiment described in connection with FIG. 13, one may take into account temperature level(s) of various parts of the PLD, as desired.
[00142] Put another way, one may examine not only the desirability of higher PLD performance or throughput, but also whether temperature level(s) or power densities within the PLD make increased PLD performance safe or appropriate. FIG. 15 shows a process for realizing such an embodiment. One may repeat the procedure a desired number of times, depending on the application. As noted above, one may implement the process or technique by using appropriate circuitry (or a combination of circuitry and software or firmware), such as control circuitry 136.
[00143] Another aspect of the disclosure relates to setting or adjusting the body bias of circuitry within a PLD by measuring the delay of a selected circuit or region within the PLD. FIG. 16 shows a circuit arrangement for adjusting the body bias of transistors in a user circuit based on a delay representative of the operating delay of the user circuit. More specifically, the circuit arrangement includes PLD 103, PLD region 606, user circuit 609, delay circuit 612, and body-bias controller 603. [00144] PLD region 606 includes user circuit 609 and delay circuit 612. User circuit 609 may include any desired circuitry, such as a user-implemented or designated circuit or a portion of it (for example, the critical path). Delay circuit 612 represents or models the actual delay of user circuit 609. Generally, the delay represents the delay of user circuit 609, and it need not have the same delay as user circuit 609. For example, delay circuit 612 may have the same delay as user circuit 609, twice as much delay, half as much delay, etc., as desired.
[00145] Delay circuit 612 couples to body-bias controller 603 via signal link 615 (one or more coupling mechanisms, such as conductors). In response to the actual delay of delay circuit 612, body-bias controller 603 provides one or more body-bias signals to at least some transistors in PLD region 606 (as described below in detail).
[00146] Note that FIG. 16 shows two body-bias signals, F^1 and Vb2. The body-bias signal(s) adjust or set the body-bias of at least one transistor in PLD region 606. For example, one body-bias signal (say, F^1) may set the body bias of PMOS transistors, whereas another body-bias signal (say, F^2) may set the body bias of NMOS transistors, etc. By adjusting the body bias of transistors in user circuit 609, one may control or adjust its speed and leakage, as described above.
[00147] FIG. 17 shows a block diagram of a body-bias controller 603 according to an illustrative embodiment of the invention. Body-bias controller 603 includes reference- signal generator 625, delay circuit 612, phase comparator 637, and body-bias generator 430. Optionally, body-bias controller 603 may include MUX 627, as described below in detail. ' [00148] Reference-signal generator 625 generates reference signal 631 from clock signal 628. Depending on factors that depend on the actual design and implementation of the circuit (e.g., the relation of the delay in delay circuit 612 to the delay in user circuit 609), reference signal 631 may have a particular relation to clock signal 628, as desired. For example, reference signal 631 may have one half the frequency of clock signal 628. Reference signal 631 feeds delay circuit 612. In response, delay circuit 612 produces output signal 634, a delayed version of reference signal 631.
[00149] Note that one may optionally use MUX 627 to provide the capability to select one of a number of clock signals 628A, as desired. As described below in detail, body- bias controller 603 uses the period of clock signal 628 to measure the delay of a reference circuit, and uses the result of that measurement to generate and provide body-bias signals to various circuits in PLD 103. Through the selection signal 627A of MUX 627, one may select one of clock signals 628A such that the chosen clock signal has a desired or particular period. In that manner, one may increase the flexibility of body-bias controller 603.
[00150] Phase comparator 637 compares reference signal 631 and output signal 634 of delay circuit 612. Depending on the relative phases of the two signals, comparator 637 produces output signal 640 (speed-up) and output signal 643 (slow-down). Output signals 640 and 643 drive body-bias generator 430. Body-bias generator 430 produces body-bias signal(s) in response to output signals 640 and 643. In the particular example shown in FIG. 17, body-bias generator produces body-bias signal 646 (V^1) and body- signal 649 (v&2)- [00151] FIG. 18 shows a circuit arrangement for reference-signal generator 625 according to an exemplary embodiment of the invention. Reference-signal generator 625 includes flip-flop 660, and inverters 663 and 666. In this particular example, reference- signal generator 625 constitutes a divide-by-two circuit. Thus, flip-flop 660 and inverter 663 generate a signal with half the frequency of clock signal 628. Inverter 666 buffers that signal to provide reference signal 631. Persons of ordinary skill in the art with the benefit of the description of the invention understand that, depending on circuit configuration and the application, one need not use inverter 666 and may omit it, as desired.
[00152] FIG. 19 depicts a circuit arrangement for phase comparator 637 according to an exemplary embodiment of the invention. Comparator 637 includes exclusive-OR (XOR) gate 675, and flip-flop 681. Output of delay circuit 612 feeds one input of XOR gate 675. Reference signal 631 feeds a second input of XOR gate 675.
[00153] The output of XOR gate 675 feeds the data (D) input of flip-flop 681. Clock signal 628 drives flip-flops 681 and 684. Q Output of flip-flop 681 provides output
signal 640 {SPEEDUP I SLOWDOWN). A high output signal indicates a circuit that is running too slowly (should have more forward body bias), and vice-versa (a low signal indicates that the circuit should have a more reverse body bias).
[00154] If the delay through delay circuit 612 is shorter than the period of clock signal 628, then the user circuit is operating too fast. In that case, the output of gate 675 would be a logic zero at the time of a rising transition of clock signal 628. Conversely, if the delay through delay circuit 612 is longer than the period of clock signal 628, then the user circuit is operating too slowly. Under those circumstances, XOR gate 675 provides a logic-high signal at its output at the time of a rising transition of clock signal 628. As a consequence, flip-flop 681 provides a speed-up output signal.
[00155] FIG. 20 illustrates another circuit arrangement for phase comparator 637 according to an exemplary embodiment of the invention. Similar to FIG. 19, comparator 637 in FIG. 20 includes exclusive-OR (XOR) gate 675, exclusive-NOR (XNOR) gate 678, and flip-flops 681 and 684. In addition, comparator 637 in FIG. 20 includes dead- zone delay circuit 690. Dead-zone delay circuit 690 causes more stable and power- efficient body-bias adjustment of transistors within PLD 103.
[00156] More specifically, dead-zone delay circuit 690 causes XNOR gate 678 to receive a delayed version of reference signal 634, rather than reference signal 634 itself. In the absence of dead-zone delay circuit 690, comparator 637 may repeatedly and alternately assert its speed-up and slow-down output signals as it seeks to find an equilibrium speed, leakage, and power consumption for user circuit 609. The repeated body-adjustment (charging and discharging of the transistors bodies) might cause increased power consumption and, hence, less efficiency.
[00157] Dead-zone delay circuit 690 helps comparator 637 to experience less "chatter" at its output. Put another way, in the case of comparator 637 including both delay circuit 612 and dead-zone delay circuit 690 {i.e., FIG. 20), one delay circuit forms a minimum delay, and the sum of both forms a maximum delay. If the period of clock signal 628 exceeds the sum of both delays, then user circuit 609 is operating too fast. As a result, comparator 637 asserts the slow-down output signal. [00158] Conversely, if the clock period is shorter than the delay of delay circuit 612, then user circuit 609 is operating too slowly. Consequently, comparator 637 asserts the speed-up output signal. If user circuit 609 operates within an acceptable or prescribed range of speeds (with corresponding leakage and power-consumption levels), then comparator 637 does not assert either of its output signals. Consequently, comparator 637 avoids repeated alteration of its output signals in order to achieve an acceptable operating speed of user circuit 609.
[00159] Note that delay circuit 612 might provide either a fixed or adjustable or configurable delay. In the case of a fixed delay, delay circuit 612 includes a logic circuit with a desired or prescribed delay. For example, delay circuit 612 may include an arrangement of combinational logic elements, such as gates. One may implement delay circuit 612 using the programmable resources of PLD 103, such as programmable logic 106 and programmable routing or interconnect 109 (see FIG. 1).
[00160] Alternatively, delay circuit 612 may have a configurable delay. FIG. 21 depicts a configurable delay circuit 612 for use in illustrative embodiments according to the invention. Delay circuit 612 in FIG. 21 accepts a set of configuration or adjustment signals 703. Signals 703 include a set of bits, denoted as B0 through Bp Configuration signals 703 adjust or configure the delay of delay circuit 612. In other words, by setting the values of the bits in configuration signals 703, one may adjust the amount of time by which delay circuit 612 delays its input signal in order to generate its output signal.
[00161] FIG. 22 shows a circuit arrangement for a configurable delay circuit according to an exemplary embodiment of the invention. The configurable delay circuit includes a cascade coupling of a set of interconnect or routing delay elements 710, a cascade coupling of a set of logic delay elements 719, MUX 713, and MUX 725.
[00162] The output signals of the routing delay elements 710 constitute inputs signals of MUX 713. MUX 713 also receives one or more selection signal(s) 716. The number of selection signals 716 depends on the number of routing delay elements 710, as person of ordinary skill in the art with the benefit of the description of the invention understand. Through selection signal(s) 716, one may selectively couple the output of one of routing delay elements 710 to the output of MUX 713. Thus, one may configure the amount of delay from the input signal (reference signal 631) of the first routing delay element to the output of MUX 713.
[00163] Similarly, output signals of logic delay elements 719 provide the inputs signals of MUX 725. MUX 725 also receives one or more selection signal(s) 728. The number of selection signals 728 depends on the number of logic delay elements 719, as person of ordinary skill in the art with the benefit of the description of the invention understand. By using selection signal(s) 728, one may selectively couple the output of one of logic delay elements 719 to the output of MUX 728. Accordingly, one may configure the amount of delay from the input signal of the first logic delay element (i.e., the output signal of MUX 713) to the output of MUX 725.
[00164] By using MUX 713 and MUX 725, one may configure the delay of the configurable delay circuit to constitute a combination of the respective delays of a desired number of routing delay elements 710 and logic delay elements 719. Thus, one may configure the delay circuit (e.g., through the PLD configuration software, described above in detail) so that its delay represents the delay of the user's circuit. Furthermore, one may configure the delay in a dynamic manner (in response to changing operating environment, external control, user control, etc.), as desired.
[00165] FIG. 23 shows a circuit arrangement for a routing delay element 710 according to an illustrative embodiment of the invention. Routing delay element 710 includes MUX 735 and inverter 738. Together, MUX 735 and inverter 738 seek to represent a typical routing mechanism (including its corresponding delay) within PLD 103. MUX 735 has one of its inputs and its selection input grounded, so that it couples its input signal to the input of inverter 738. The output signal of inverter 738 constitutes the output signal of routing delay element 738. Thus, routing delay logic 710 provides as its output signal an inverted version of its input signal.
[00166] FIG. 24 illustrates a circuit arrangement for a logic delay element 719 according to an exemplary embodiment of the invention. Logic delay element 719 includes transmission gate 745, transmission gate 748, inverter 751, and inverter 754. Together, the circuit elements within logic delay element 719 seek to represent a programmable logic circuit (and its corresponding delay) within PLD 103. Transmission gates 745 and 748 and inverter 751 provide a mechanism for coupling the input signal (regardless of its logic value) to the input of inverter 754. The output signal of inverter 754 constitutes the output signal of logic delay element 719. Thus, logic delay logic 719 provides as its output signal an inverted version of its input signal.
[00167] Note that the figures (e.g., FIGs. 18-20 and 22-24) provide merely illustrative embodiments of the respective circuits they represent. As persons of ordinary skill in the art with the benefit of the description of the invention appreciate, depending on factors such as design and performance specifications, one may use other circuits and embodiments, as desired.
[00168] As merely one example, rather than using a comparator with discrete-time output values, one may use a comparator with continuous-time output values. Furthermore, one may use more than one body-bias controller 603 (and comparator), as desired, in order to provide adjustable or programmable body-bias signals to various parts of PLD 103.
[00169] As another example, one may realize the various circuits in the figures (e.g., body-bias controller 603) using dedicated circuitry, for example, as part of control circuitry 136 (see FIG. 1), as desired. As an alternative, one may implement those circuits in the programmable resources of PLD 103 (see, for example, FIGs. 1, 3, and 4), i.e., programmable logic 106 and programmable interconnect 109, as desired. Persons of ordinary skill in the art with the benefit of the description of the invention appreciate that one may use a combination of the two approaches. In other words, one may realize the circuitry in part by using the programmable resources of PLD 103 and in part by using dedicated circuitry, as desired. If the implementation uses PLD programmable resources, the PLD CAD software (see, for example, FIG. 6A and accompanying description) places and routes the various circuit elements within the programmable fabric (programmable logic 106 and programmable interconnect 109) of PLD 103.
[00170] In addition, the PLD CAD software selects, places, and routes the circuit elements (combinational logic elements or routing delay elements 710 and logic delay elements 719) that implement delay circuit 112. The PLD CAD software selects the circuit elements such that delay circuit 612 represents the delay of user circuit 609. The PLD CAD software programs values in bits of configuration memory 133 (see FIG. 1) that subsequently provide values for various configuration or programming signals, such as MUX selection signal 627A (see FIG. 17) and configuration signals 703 (see FIG. 21). In an alternative embodiment, the user may define the parameters of delay circuit 612 to model user circuit 609. The alternative embodiment provides the user with the ability to match the performance of the PLD's circuitry to the user's specifications or requirements.
[00171] Note that, rather than using one delay circuit 612 and comparator 637, one may instead use multiple delay circuits 612 and/or comparators 637, as desired. By doing so, one may provide more resolution of the delay provided by the delay chain and therefore improved convergence of the body-bias controller.
[00172] Another aspect of the disclosure relates to adjusting or programming directly the performance (leakage, speed, and power dissipation) of transistors in ICs generally (rather than use a delay circuit that models the performance of the circuit that includes those transistors). More particularly, one may use leakage-locked loops (LLLs) to set the leakage level of one or more transistors in an IC by programming or adjusting the body bias of the transistor(s).
[00173] The leakage-locked loop technique has the advantage that it provides the capability of directly controlling the leakage of the circuit, rather than an indirect control by using a representative delay as a measure of the leakage currents. The technique allows the user to specify a tolerable or desired leakage level and select and specify a desired tradeoff between performance and leakage currents and power dissipation. Note that one may apply the leakage-locked loop concept to ICs generally, including PLDs. [00174] FIG. 25 shows a block diagram of a leakage-locked loop according to an illustrative embodiment of the invention. The leakage-locked loop includes reference transistor 760, leakage measurement circuit 766, adder 775, and body-bias generator 430. Generally speaking, the leakage-locked loop includes a negative-feedback circuit. It uses reference transistor 760 to measure the leakage current of transistors in IC circuit 763, and uses the measured leakage current to generate the body-bias signals for those transistors.
[00175] Note that one may design other embodiments of the leakage-locked loop that measure other quantities, and adjust the body bias of one or more transistors so as to meet one or more user-specified criteria, as desired, and as persons of ordinary skill in the art who have the benefit of the description of the invention understand. Examples of such quantities include threshold voltage (Fj) of a reference transistor, or the saturation current (Idsai) of a reference, transistor.
[00176] Reference transistor 760 resides in IC circuit 763. Note that one may use more than one reference transistor 760, as desired (for example, to measure leakage currents in more than one location in IC circuit 763). IC circuit 763 constitutes the circuitry within an IC whose performance one seeks to adjust or program through body- bias levels. For example, in the situation that the IC is a PLD, IC circuit 763 may constitute user circuit 609 (see, for example, FIG. 16).
[00177] Generally, one selects IC circuit 763 to include a sufficiently small part of the circuitry within the IC so that the transistors within it (including reference transistor 760) have similar electrical characteristics and that variations in conditions (e.g., process, voltage, and temperature, or PVT) do not substantially degrade the programming of the body-bias across IC circuit 763.
[00178] Leakage measurement circuit 766 measures the leakage of reference transistor 760, and provides a leakage signal 769 to adder 775. Adder 775 compares leakage signal 769 to a reference leakage signal (vreβ 772 to generate error signal 778. Body-bias generator 430 uses error signal to generate one or more body-bias signals 435. Body- bias generator 430 provides the body-bias signal(s) 435 to desired transistors within IC circuit 760.
[00179] Note that one may use configurable components in the leakage-locked loop of FIG. 25, as desired. For example, one may use a configurable leakage measurement circuit 766 (configurable gain), a configurable adder 775 (configurable gain) or a separate gain block following adder 775, a configurable reference leakage signal 772 (configurable level), and/or configurable gain in body-bias generator 430, as desired. Note that one may use the PLD configuration RAM bits, signals from user circuits on the PLD, or a combination of the two, to configure each of those configurable components, as desired.
[00180] FIG. 26 illustrates a block diagram of a leakage-locked loop according to another exemplary embodiment of the invention. The leakage-locked loop in FIG. 26 includes reference transistor 760 (which resides in IC circuit 763), leakage measurement circuit 766, reference value and comparator circuit 775, filter 787, and body-bias generator 430. [00181] Reference transistor 760 and IC circuit 763 have the same or similar configurations to those described above in connection with FIG. 25. Leakage measurement circuit 766 provides programmable gain through control signals 781. More specifically, through control signals 781, one may adjust the gain that leakage measurement circuit 766 applies to the measured leakage current in order to provide leakage signal 769.
[00182] Reference value and comparator circuit 775 processes leakage signal. Reference value and comparator circuit 775 provides a programmable reference value, a programmable gain, or both, as desired, through control signals 784. In other words, through control signals 784, one may adjust the reference leakage signal (analogous to reference leakage signal 772 in FIG. 25), the gain of the comparator (not shown explicitly) that compares the leakage signal 769 to the reference leakage signal to generate leakage error signal 778, or both, as desired. Reference value and comparator circuit 775 may optionally include a quantizer that quantizes the output signal of the comparator, as desired.
[00183] Filter 787 filters and processes leakage error signal 778 to produce a filtered signal 790. Body-bias generator 430 operates in the manner described above in connection with FIG. 25 to provide one or more body-bias signals to IC circuit 263.
[00184] Note that one may omit filter 787 from the leakage-locked loop, as desired. Filter 787 may have a desired transfer function, such as a gain block or circuit, a low- pass transfer function or an integrator transistor function. The choice of whether to include filter 787 and its particular transfer function depend on design and performance specifications and considerations, as persons of ordinary skill in the art who have the benefit of the description of the invention understand.
[00185] One may implement leakage measurement circuit 766 and reference value and comparator circuit 775 in a variety of ways, as desired. The choice of circuitry and implementation depends on a variety of factors (e.g., IC technology used, desired performance characteristics, etc.), as persons skilled in the art with the benefit of the description of the invention understand. FIGs. 27-29 provide some examples.
[00186] FIG. 27 depicts a leakage measurement circuit 766 according to an illustrative embodiment of the invention. Leakage measurement circuit 766 includes PMOS transistors 803 and 805, reference transistor 760, and a plurality of NMOS transistors 808A-808D.
[00187] The gate of reference transistor 760 couples to its source, which causes reference transistor 760 to be in the OFF state. Thus, the current conducted through reference transistor 760 represents its leakage current. Transistor 803 couples in series with reference transistor 760. The gate of transistor 803 couples to its drain (the so- called "diode-connected" configuration).
[00188] Transistor 803 and transistor 805 form a current mirror. The current mirror amplifies the leakage current (the current through reference transistor 760). The level of amplification depends on the relative sizes of transistors 803 and 805, as persons of ordinary skill in the art who have the benefit of the description of the invention understand. [00189] The current amplified by the current mirror flows through any of transistors 808A-808D that are in the ON state. Transistors 808A-808D provide a configurable output current (leakage current 769). One may configure the output current by selectively turning ON transistors 88A-808D by applying appropriate levels of control signals 781. Generally, for a control signal 781 that has i bits, one may provide 2* levels of reference current. Transistors 8O8A-8O8D may have relative sizes selected so as to provide a desired reference current profile in response to control signals 781.
[00190] As persons of ordinary skill in the art with the benefit of the description of the invention understand, one may use a variety of combinations of the numbers and sizes of transistors. As one example, one may size transistors 808A-808D such that each of transistors 808B-808D has twice the width of the preceding transistor (a binary-weighted configuration). In one illustrative embodiment, for a given channel length, transistor 760 has a width of 200, transistor 803 a width of 1, transistor 805 a width of 50, transistor 808 A a width of 1, and transistors 808B-808D have binary-weighted widths (i.e., a width of 2 for transistor 808B, a width of 4 for transistor 808C, and so on).
[00191] FIG. 28 shows a reference value and comparator circuit 775 according to an illustrative embodiment of the invention. The circuit includes resistor 818, resistor 821, and comparator 815. Resistors 818 and 821 form a voltage divider that provides leakage reference signal 772 to comparator 815. One may select values of resistors 818 and 821 so as to provide a desired reference level. Comparator 815 compares leakage signal 769 to leakage reference signal 772 to provide leakage error signal 778. Comparator 815 may have a configurable gain (in response to control signal(s) 784), as desired. Note that FIG. 28 shows a simplified comparator 815, and that comparator 815 may include stable reference circuit to provide a relatively accurate reference voltage, as desired. [00192] FIG. 29 illustrates a reference value and comparator circuit 775 according to another exemplary embodiment of the invention. The circuit includes resistor 824, resistor 827, resistor 830, comparator 815A, comparator 815B, and counter 839. Comparators 815A and/or 815B may have a configurable gain (in response to control signal(s) 784), as desired.
[00193] Reference value and comparator circuit 775 in FIG. 29 is similar to the circuit in FIG. 28, but it uses two reference signals so as to provide a lower bound and an upper bound for the leakage current. More specifically, resistors 824, 827, and 830 form a voltage divider that provides leakage reference signal 772 A to comparator 815A and leakage reference signal 772B to comparator 815B. Leakage reference signals 772 A and 772B constitutes bounds for the leakage current. Put another way, leakage reference signals 772A and 772B provide a "window" of values for the leakage current. One may select values of resistors 824, 827, and 830 so as to provide desired levels of leakage reference signals 772 A and 772B.
[00194] Comparator 815A compares leakage signal 769 to leakage reference signal 772A to provide DOWN signal 833. DOWN signal 833 causes counter 839 to count down (i.e., cause the IC circuit's speed of operation to decrease). Conversely, comparator 815B compares leakage signal 769 to leakage reference signal 772B to provide IP signal 836. UP signal 836 causes counter 839 to count up (i.e., cause the IC circuit's speed of operation to increase). Put another way, counter 839 is analogous to using an integrator as filter 787 in FIG. 26. The count signals 842 provide the current count value of counter 839. Body-bias generator 430 (not shown in FIG. 29) uses count signals 842 to generate body-bias signal(s) 435 (not shown in FIG. 29) and supply the signal(s) to IC circuit 763. [00195] To provide further control or programming of body-bias levels, one may include within an IC more than one body-bias generator circuit 430, as desired. In such a configuration, each body-bias generator 430 provides one or more body-bias signals 435 to a circuit (such as IC circuit 763) or region within the IC.
[00196] Thus, one may program the body-bias generators 430 to provide specific or individualized body-bias signals for each circuit or region of the IC. As an alternative, the user may specify or provide programming for the body-bias generators 430 so as to generate desired numbers and levels of body-bias signals 435 for a given circuit or region of the IC. The specifically tailored or programmed body-bias levels allow trading off performance and leakage and power dissipation for each circuit or region of the IC. As a result, the user has increased control, with finer granularity, over the performance-power trade-off for various parts and circuits within the IC.
[00197] FIG. 30 depicts a circuit arrangement according to an exemplary embodiment of the invention for providing multiple body-bias circuits in an IC. The circuit arrangement includes IC region 870, a set of IC circuits 763A-763C, a corresponding number of MUXs 875A-875C, and a set of body-bias generators 435A-435C.
[00198] Each of body-bias generators 430A-430C generates one or more body-bias signals, denoted as body-bias signal(s) 435A-435C, and provides the signal(s) to each of MUXs 875A-875C. In response to selection signals 880, each of MUXs 875A-875C selects the body-bias signal(s) from one of body-bias generators 435A-435C and provides the selected body-bias signal(s) to a corresponding one of IC circuits 763A- 763C. [00199] Rather than using MUXs 875A-875C, one may use programmable non¬ volatile coupling mechanisms (such as fuses). In such a situation, one may test individual ICs after manufacture to determine its characteristics (e.g., level of leakage) and program the non-volatile coupling mechanisms so as to provide desired or appropriate body-bias signal(s) to various regions or circuits of the IC. By including a number of body-bias generators, one may give the user the ability to independently program the body-bias levels of those regions or circuits.
[00200] hi another embodiment, one may use a combination of values stored in non¬ volatile memory (such as values relating to the characteristics of the IC (e.g., leakage levels) or particular regions or circuits within it) and user-configured or user-specified values to generate body-bias levels. This scheme allows taking into account both the characteristics of the IC and the user-specified parameters in order to trade off performance and power dissipation and leakage levels.
[00201] In the case of a PLD, PLD region 870 may constitute PLD region 606 (see, for example, FIG. 25), and each IC circuit 763 may correspond to a user circuit 609. One may provide one or more tailored or programmed body-bias signals 435 for each user circuit 609 (see, for example, FIG. 25) in PLD 103. In another embodiment, IC circuits 763 may correspond to a physically proximate set of PLD circuits (programmable logic 106 and programmable interconnect 109) or a selected group of programmable logic 106 and programmable interconnect 109 (for example, a group of programmable logic circuits 106 arranged in a rectangular array in FIG. 3).
[00202] FIG. 30 illustrates body-bias generators 430A-430C as the circuitry that provides body-bias signals 435A-435C. In the case of a PLD, one may generally use body-bias controllers 603A-603C (see, for example, FIG. 25), rather than body-bias generators 430A-430C.
[00203] Note that FIG. 30 illustrates IC region 870 as including IC circuits 763A- 763 C. As persons of ordinary skill in the art with the benefit of the description of the invention understand, however, the reverse situation may exist (i.e., each IC circuit may include one or more IC region 870.
[00204] Note further that one may combine the performance-tuning concepts described above with other techniques to reduce power densities or keep them within safe ranges. For example, one may turn ON or OFF various circuits within the PLD (see FIG. 9 and accompanying description) to accomplish a tradeoff between desired performance levels and safe or prescribed power consumption levels or power densities. Other variations and embodiments will be apparent to persons of ordinary skill in the art who have the benefit of the description of the invention.
[00205] Generally, note that one may apply the inventive concepts effectively to various programmable logic circuitry or ICs known by other names in the art, as desired, and as persons skilled in the art with the benefit of the description of the invention understand. Such circuitry include devices known as complex programmable logic device (CPLD), programmable gate array (PGA), and field programmable gate array (FPGA).
[00206] Referring to the figures, persons of ordinary skill in the art will note that the various blocks shown may depict mainly the conceptual functions and signal flow. The actual circuit implementation may or may not contain separately identifiable hardware for the various functional blocks and may or may not use the particular circuitry shown.
[00207] For example, one may combine the functionality of various blocks into one circuit block, as desired. Furthermore, one may realize the functionality of a single block in several circuit blocks, as desired. The choice of circuit implementation depends on various factors, such as particular design and performance specifications for a given implementation, as persons of ordinary skill in the art who have the benefit of the description of the invention understand.
[00208] Other modifications and alternative embodiments of the invention in addition to those described here will be apparent to persons of ordinary skill in the art who have the benefit of the description of the invention. Accordingly, this description teaches those skilled in the art the manner of carrying out the invention and are to be construed as illustrative only.
[00209] The forms of the invention shown and described should be taken as the presently preferred or illustrative embodiments. Persons skilled in the art may make various changes in the shape, size and arrangement of parts without departing from the scope of the invention described in this document. For example, persons skilled in the art may substitute equivalent elements for the elements illustrated and described here. Moreover, persons skilled in the art who have the benefit of this description of the invention may use certain features of the invention independently of the use of other features, without departing from the scope of the invention.
「特表2007-538474およびWO2005116878より引用」