(57)【特許請求の範囲】
【請求項１】
直列チェーンを形成するように一緒に接続され、複数の遅延ブロックのうちの第１の遅延ブロックの入力が、プログラマブル遅延回路の入力を形成し、前記プログラマブル遅延回路に供給された第１の信号を受け取るようになされた、複数の遅延ブロックと、
前記遅延ブロックのうちの対応する遅延ブロックの出力に接続された入力、および複数の制御信号のうちの１つを受け取るようになされた制御入力をそれぞれが含む複数のトライステート・ドライバであって、前記制御信号のうちの対応する１つに応じて、少なくとも第１のモードおよび第２のモードのうちの１つで動作し、前記第１のモードでは、トライステート・ドライバの出力で生成された出力信号が、トライステート・ドライバの前記入力における電圧レベルの関数であり、前記第２のモードでは、トライステート・ドライバの前記出力が、高インピーダンス状態であり、トライステート・ドライバのそれぞれの前記出力が、一緒に結合され、前記プログラマブル遅延回路の出力を形成するトライステート・ドライバと、
前記複数のトライステート・ドライバに接続された少なくとも１つのデコーダであって、少なくとも１つの第２の信号を受け取るための少なくとも１つの制御入力を含み、前記第２の信号に応じて、前記トライステート・ドライバのうちの対応する１つを選択的に動作させるための前記複数の制御信号を、生成するように動作するデコーダと、
入力回路とを具備するプログラマブル遅延回路であって、
前記入力回路は、
第３の信号を受け取るようになされた第１の入力、および前記第１の信号の少なくとも一部分を受け取るようになされた第２の入力を持つ同期回路と、
前記同期回路の出力に接続された第１の入力、前記第１の信号を受け取るようになされた第２の入力、および前記複数のトライステート・ドライバのうちの第１のトライステート・ドライバの入力に接続された出力を持つ論理回路とを含み、
前記入力回路が、前記第３の信号に応じて、前記プログラマブル遅延回路の前記出力を、論理ハイ・レベルおよび論理ロー・レベルのうちの一方に同期して押しやるように動作し、
前記プログラマブル遅延回路の前記入力と前記出力との遅延が、前記第２の信号に応じて制御される、プログラマブル遅延回路。
【請求項２】
前記複数の遅延ブロックが、第１の遅延ブロック、最後の遅延ブロック、および１つまたは複数の中間遅延ブロックを含み、前記第１の遅延ブロックの出力が、前記中間遅延ブロックのうちの第１の中間遅延ブロックの入力に接続され、前記中間遅延ブロックのそれぞれの出力が、前記チェーン内の次の連続した遅延ブロックの入力に接続された、請求項１に記載の回路。
【請求項３】
前記最後の遅延ブロックの出力が、前記チェーン内の１つまたは複数の他の遅延ブロックのそれぞれの入力インピーダンスに実質的に整合されたインピーダンスを持つように構成された擬似負荷に接続された、請求項２に記載の回路。
【請求項４】
前記複数の遅延ブロックのうちの少なくとも１つが、１対のインバータを含み、前記インバータのうちの第１のインバータの入力が、前記遅延ブロックの前記入力を形成し、前記第１のインバータの出力が、前記インバータのうちの第２のインバータの入力に接続され、前記第２のインバータの出力が、前記遅延ブロックの出力を形成する、請求項１に記載の回路。
【請求項５】
前記各トライステート・ドライバの前記出力に接続された入力を持ち、前記プログラマブル遅延回路の前記出力を形成する出力を持つ出力ドライバをさらに含む、請求項１に記載の回路。
【請求項６】
前記少なくとも１つのデコーダに供給される前記少なくとも第２の信号を生成するように動作する基準回路をさらに備える、請求項１に記載の回路。
【請求項７】
前記複数のトライステート・ドライバのうちの１つを選択的に動作させるための前記少なくとも第２の信号が、メモリ内に保存され、前記プログラマブル遅延回路の遅延が、前記回路の通常の動作時、動的に制御される、請求項１に記載の回路。
【請求項８】
前記任意の遅延ブロックに接続された対応するトライステート・ドライバの出力で生成された前記出力信号の立ち上がり時間およびと立ち下り時間が、実質的に同じになるように、前記複数の遅延ブロックのうちの少なくとも任意の１つの切り替え点が構成される、請求項１に記載の回路。
【請求項９】
少なくとも１つのプログラマブル遅延回路を含む集積回路であって、
前記少なくとも１つのプログラマブル遅延回路は、
直列チェーンを形成するように一緒に接続され、複数の遅延ブロックのうちの第１の遅延ブロックの入力が、前記少なくとも１つのプログラマブル遅延回路の入力を形成し、前記少なくとも１つのプログラマブル遅延回路に供給される第１の信号を受け取るようになされた、複数の遅延ブロックと、
前記遅延ブロックの中の対応する遅延ブロックの出力に接続された入力、および複数の制御信号のうちの１つを受け取るようになされた制御入力をそれぞれが含む複数のトライステート・ドライバであって、前記制御信号のうちの対応する１つに応じて、少なくとも第１のモードおよび第２のモードの一方で動作し、前記第１のモードでは、トライステート・ドライバの出力で生成された出力信号は、トライステート・ドライバの前記入力における電圧レベルの関数であり、前記第２のモードでは、トライステート・ドライバの前記出力が、高インピーダンス状態であり、トライステート・ドライバのそれぞれの前記出力が、一緒に接続され、前記少なくとも１つのプログラマブル遅延回路の出力を形成する、トライステート・ドライバと、
前記複数のトライステート・ドライバに接続された少なくとも１つのデコーダであって、少なくとも第２の信号を受け取るための少なくとも１つの制御入力を含み、前記第２の信号に応じて、前記トライステート・ドライバのうちの対応する１つを選択的に動作させるための前記複数の制御信号を生成するように動作する、デコーダと、
入力回路とを具備し、
前記入力回路は、
第３の信号を受け取るようになされた第１の入力、および前記第１の信号の少なくとも一部分を受け取るようになされた第２の入力を持つ同期回路と、
前記同期回路の出力に接続された第１の入力、前記第１の信号を受け取るようになされた第２の入力、および前記複数のトライステート・ドライバのうちの第１のトライステート・ドライバの入力に接続された出力を持つ論理回路とを含み、
前記入力回路が、前記第３の信号に応じて、前記プログラマブル遅延回路の前記出力を、論理ハイ・レベルおよび論理ロー・レベルのうちの一方に同期して押しやるように動作し、
前記少なくとも１つのプログラマブル遅延回路の前記入力と前記出力との遅延が、前記第２の信号に応じて制御される、集積回路。
【請求項１０】
前記複数の遅延ブロックは、第１の遅延ブロック、最後の遅延ブロック、および１つまたは複数の中間遅延ブロックを含み、
前記第１の遅延ブロックの出力が、前記中間遅延ブロックのうちの第１の中間遅延ブロックの入力に接続され、
前記中間遅延ブロックのそれぞれの出力が、前記チェーン内の次の連続した遅延ブロックの入力に接続され、
前記最後の遅延ブロックの出力が、前記チェーン内の１つまたは複数の他の遅延ブロックのそれぞれの入力インピーダンスに実質的に整合されたインピーダンスを持つように構成された擬似負荷に接続される、請求項９に記載の集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、クロック分配回路に関し、より詳細には、クロック分配網内でクロック挿入遅延の平衡をとるための技術に関する。
【背景技術】
【０００２】
たとえば、マイクロプロセッサ・チップを含む、多くの高性能の超大規模集積回路（ＶＬＳＩ）チップでは、基準クロック信号は、外部で生成され、このチップに供給することができ、配線網を使用して、チップ全体にわたって分配される。配線網は、ツリー・ベースのネットワーク、格子ベースのネットワーク、またはツリー・ベースおよび格子ベースのネットワークの組合せであってもよく、通常、バッファによって、ネットワーク内のいくつかの地点で、電力を再供給される。各バッファは、理想的には、元の基準クロック信号と同一である信号を生成する。さまざまなバッファによって生成された信号は、チップ全体にわたって、実質的に同時に、それらの各宛て先に到着して、クロック・スキューを最小限に抑え、または、正確に知られたタイミング差で到着して、クロックの遅延の適切な補償を容易にすることが必要である。
【０００３】
チップ全体にわたって、各宛て先クロック負荷に対してクロック挿入遅延の平衡をとることは、多くの設計ネットリストの反復と、かなりの電算および技術資源の関与を伴う難しい、時間のかかる問題であり、またそうであり続ける。さらに小さい幾何形状への移行、結果として生じるチップ・ゲート数の上昇、および所与のチップ上でのますます多くなる知的所有権（ＩＰ）の区画および機能の統合化で、この問題は、範囲および複雑さが増大したにすぎない。
【０００４】
クロック挿入遅延の平衡をとるための最近の解決策は、最新の設計ネットリストを配置および経路指定し、抽出ツールを使用して、ネットリスト用のレイアウト・データベースから、寄生（たとえば、キャパシタンス、抵抗、インダクタンスなど）を抽出し、設計ネットリストを、静的タイミング解析ツール中に読み込み、静的タイミング解析の際、抽出された寄生をアノテートし、静的タイミング解析ツールを使用して、クロック源から、各宛て先クロック負荷へのタイミング情報を評価し、チップ内の配線経路指定、配線厚さ、ドライバ・タイプ、ドライバ位置、および／またはドライバの数を含む１つまたは複数の回路特性を変更することによって、クロック分配網を調整し、新しいネットリストをストリーム出力し、所望のクロック挿入遅延目標が最終的に得られるまでプロセス上で反復する精密なプロセスを含む。しかし、この既知の手法は、特に、１つの反復が、完了するために数日または数週間を要する場合がある大規模な設計の場合、多くの反復およびかなりの技術資源を必要として、時間が非常にかかるという点で望ましくない。さらに、結果として生じるクロック・ツリーの分布は、通常静的であり、一旦シリコン内で設計が実現されると、変更することができない。したがって、最初の設計の際の過失、ならびに、チップのプロセス、電圧、および／または温度（ＰＶＴ）特性の変化により、クロック挿入遅延が、実質的に、所望の目標値から変化し、それによって、追加のマスク・セットの購入、および変化を修正するための他のチップ製作サイクルの実施が必要となる場合があるという危険性がある。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
したがって、従来のクロック分配構造および方法によって示された１つまたは複数の問題のない、クロック分配網内でクロック挿入遅延の平衡をとるための技術が必要である。
【課題を解決するための手段】
【０００６】
本発明は、その例示的実施形態において、ＩＣ装置内で、反復する高周波タイミング信号（たとえば、グローバル・クロック信号）を分配することに伴う挿入遅延の平衡をとるための技術を提供することによって、先に言及された必要性に対処している。本発明は、好ましくは、設計ネットリストを変更せずに、また任意の設計サブ・ブロックを変更せずに、挿入遅延が迅速に調整されることを可能にするように構成可能である１つまたは複数のプログラマブル遅延線を含む。さらに、本発明の技術は、有利には、シリコン内の設計が実現された後に、クロック挿入遅延の変更を可能にする。
【０００７】
本発明のある態様によれば、プログラマブル遅延回路は、複数の遅延ブロック、複数の対応するトライステート・ドライバ、および少なくとも１つのデコーダを含む。遅延ブロックは、直列チェーンを形成するように一緒に接続されて、複数の遅延ブロックのうちの第１の遅延ブロックの入力が、プログラマブル遅延回路に供給された第１の信号を受け取るようになされている。各トライステート・ドライバは、遅延ブロックのうちの対応する遅延ブロックの出力に接続された入力、および複数の制御信号のうちの１つを受け取るようになされた制御入力を含む。トライステート・ドライバは、制御信号のうちの対応する１つに応じて、少なくとも第１のモードおよび第２のモードのうちの１つで動作する。第１のモードでは、トライステート・ドライバの出力で生成された出力信号は、トライステート・ドライバの入力における電圧レベルの関数であり、第２のモードでは、トライステート・ドライバの出力は、高インピーダンス状態である。各トライステート・ドライバの出力は、一緒に結合され、プログラマブル遅延回路の出力を形成する。デコーダは、複数のトライステート・ドライバに接続される。デコーダは、少なくとも第２の信号を受け取るための少なくとも１つの制御入力を含み、第２の信号に応じて、トライステート・ドライバのうちの対応する１つを起動させるための制御信号を生成するように動作する。
本発明のこれらおよび他の特徴および利点は、添付の図面を参照して解釈されるべきであるその例示的実施形態に関する以下の詳細な説明から明らかとなろう。
【発明を実施するための最良の形態】
【０００８】
本発明を、本明細書では、たとえば、クロック分配網内のクロック挿入遅延の平衡をとる際に使用できるように動作可能である例示的プログラマブル遅延回路を例にとって説明する。しかし、本発明が、クロック分配網に限定されないことを理解されたい。それどころか、本発明は、シリコン内の設計が実現した後、挿入遅延の変更を可能にするので有利である方式で、回路内で、反復するタイミング信号などの分配された信号の挿入遅延の平衡をとるための技術に、より一般に適用できる。本発明の技術を使用すると、集積回路（ＩＣ）内で、挿入遅延の平衡をとるための反復回数を、ＩＣに対応するネットリストを変更する必要なしに、反復が直接静的タイミング・ツール内で実行されることを可能にすることによって、低減させることができる。さらに、本発明の態様を使用すると、当業者に明らかとなるように、本明細書において説明した技術を使用して、ＩＣの全体にわたって分配される反復しないパルスの挿入遅延の平衡をとることができる。
【０００９】
図１は、例示的プログラマブル遅延回路１００の少なくとも一部分を示す構成図である。本発明は、任意の特定の数の遅延ブロックには限定されないが、プログラマブル遅延回路１００は、第１の遅延ブロック１０２（遅延＃１）、および第２の遅延ブロック１０４（遅延＃２）を含むように示されている。第１の遅延ブロック１０２は、それと一緒に関連付けられた第１の遅延値、ｄ１を持ち、第２の遅延ブロック１０４は、それと一緒に関連付けられた第２の遅延値、ｄ２を持つ。２つの遅延ブロック１０２および１０４の遅延値ｄ１およびｄ２は、それぞれ、実質的に互いに等しいことが好ましいが、２つの遅延値ｄ１、ｄ２は、別法として、異なってもよい。第１および第２の遅延ブロック１０２、１０４のそれぞれの出力は、好ましくは、マルチプレクサ１０６の各入力に、または他の選択回路に接続される。プログラマブル遅延回路１００の入力（Ｉ）に供給される入力信号、Ｃｌｏｃｋ＿Ｉｎが、第１の遅延ブロック１０２の入力に供給され、第１の遅延ブロックの出力は、好ましくは、第２の遅延ブロック１０４の入力に供給される。したがって、第１の遅延ブロック１０２の出力で生成された出力信号は、好ましくは、時間的にｄ１だけ遅延された入力信号Ｃｌｏｃｋ＿Ｉｎと実質的に等しく、第２の遅延ブロック１０４の出力で生成された出力信号は、好ましくは、時間的にｄ１＋ｄ２だけ遅延された入力信号Ｃｌｏｃｋ＿Ｉｎと実質的に等しい。プログラマブル遅延回路１００内に含まれた論理ゲートは、好ましくは、入力信号Ｃｌｏｃｋ＿Ｉｎのデューティ・サイクルを保存するように選択される。
【００１０】
マルチプレクサ１０６は、好ましくは、この回路の１つまたは複数の制御入力（Ｓ）に印加された制御信号、Ｓｅｌｅｃｔの値に基づいて、プログラマブル遅延回路１００の出力（Ｏ）で、出力信号、Ｃｌｏｃｋ＿Ｏｕｔを生成するように動作する。この簡単な実装形態では、プログラマブル遅延回路１００により、使用者は、プログラマブル遅延回路の入力から出力への、本明細書ではタップと呼ぶこともできる２つの可能な遅延経路のうちの一方を、この回路に印加されたＳｅｌｅｃｔ制御信号の値に基づいて、選択することが可能である。遅延ブロック１０２、１０４が、互いに実質的に同一であるものとすると、プログラマブル遅延回路１００は、選択されたタップ間で、実質的に等しい遅延刻みを提供する。例示的プログラマブル遅延回路１００内では、選択するための遅延経路が２つだけあるので、１つの制御入力のみが必要とされる。複数の遅延経路のうちの特定の１つを、直接、またはプログラマブル遅延回路内に含まれる何らかの復号論理回路により選択し、出力信号Ｃｌｏｃｋ＿Ｏｕｔを、論理ハイ状態または論理ロー状態に押しやり、さらにはプログラマブル遅延回路の出力をトライステート化するように、１つまたは複数の制御入力が、定義されるように、プログラマブル遅延回路１００を構成することができる。
【００１１】
制御入力の数、および選択可能な遅延経路の数を増加させると、プログラマブル遅延回路のプログラミング性が拡張される。しかし、選択可能な遅延経路の数が増加したとき、回路内の挿入遅延を最小限に抑えるために、プログラマブル遅延回路のトライステート実装形態が、図１に示した多重化された実装形態より好ましい。
【００１２】
図２は、本発明の実施形態に従って形成された例示的プログラマブル遅延回路２００の少なくとも一部分を示す概略図である。この図から明らかなように、図１に示すようなマルチプレクサ実装形態を使用する代わりに、プログラマブル遅延回路２００は、好ましくは、本明細書において、以下にさらに詳細に説明するように、回路内の挿入遅延を低減させるのに有益であるトライステート構成を用いる。プログラマブル遅延回路２００は、プログラマブル遅延回路の各制御入力、ｓ０ないしｓ３に供給される４つの制御信号、Ｓｅｌｅｃｔ［３：０］に応じて、個々に選択可能である１６の実行可能な遅延経路を提供する。制御入力は、４ビット幅のバスとして示される。１６の選択可能な遅延経路が示されているが、本発明は、プログラマブル遅延回路内の任意の特定の数の遅延経路には限定されないということを理解されたい。
【００１３】
例示的プログラマブル遅延回路２００は、直列チェーンとして一緒に接続された複数の遅延ブロックを含む。具体的には、このチェーン内の最後の遅延ブロックを除くすべての遅延ブロックでは、各遅延ブロックの出力は、好ましくは、次の連続した遅延ブロックの入力に接続される。このチェーン内の最後の遅延ブロックの出力は、それと一緒に関連付けられた連続した遅延ブロックを持たず、このチェーン内の１つまたは複数の他の遅延ブロックの入力インピーダンスに実質的に整合された入力インピーダンスを持つように構成された擬似負荷に接続することができる。複数の遅延ブロックは、好ましくは、各遅延ブロックの立ち上がり時間および／または立ち下がり時間が実質的に同じになるように構成される。本発明は、任意の特定の数の遅延ブロックには限定されないが、この実施形態では、１５の遅延ブロックが、プログラマブル遅延回路２００内に含まれている。説明の手間を省くために、第１の遅延ブロック２０４、および最後の２つの遅延ブロック２０６、２０８のみを示す。第１の遅延ブロック２０４は、それと一緒に関連付けられた遅延ｄ１を持ち、第１４の遅延ブロック２０６は、それと一緒に関連付けられた遅延ｄ１４を持ち、第１５の遅延ブロック２０８は、それと一緒に関連付けられた遅延ｄ１５を持つ。各遅延ブロックは、好ましくは、その出力に、遅延ブロックの入力に供給された信号と実質的に同一であるが、時間的に遅延ブロックの遅延値だけ遅らされた信号を生成するように動作する。
【００１４】
本発明は、任意の遅延ブロック内の任意の特定の数のインバータには限定されないが、各遅延ブロックは、好ましくは、互いに直列に接続された１対のインバータを含む。具体的には、第１のインバータ（たとえば、インバータ２０３）の入力が、任意の遅延ブロック（たとえば、遅延ブロック２０４）の入力を形成し、第１のインバータの出力が、第２のインバータ（たとえば、インバータ２０５）の入力に接続され、第２のインバータの出力が、任意の遅延ブロックの出力を形成する。遅延ブロックの他の構成も、当業者によって明らかとなるように、本発明によって同様に企図されている。
【００１５】
各遅延ブロックの出力は、好ましくは、対応するトライステート・ドライバのデータ入力に、また次の連続した遅延ブロックの入力に結合される。したがって、プログラマブル遅延回路２００内の任意の遅延タップ（たとえば、ｔ１、．．．、ｔ１４、ｔ１５）は、プログラマブル遅延回路の入力（ａ）と、任意の遅延タップに対応する遅延ブロックの出力との間の遅延経路内に接続されたすべての前の遅延ブロックの各遅延の合計と実質的に等しい遅延を持つ。タップｔ０における遅延は、プログラマブル遅延回路の最小遅延ｄ０とみなされ、ゼロ遅延タップと呼ぶことができる。タップｔ１における遅延は、ｄ０＋ｄ１と実質的に等しく、タップｔ１５における遅延は、ｄ０＋ｄ１＋ｄ２＋．．．＋ｄ１４＋ｄ１５と実質的に等しい。本発明は、当業者によって理解されるように、他の遅延構成（たとえば、対数、二進数など）を企図しているが、遅延ブロックの各遅延は、好ましくは、互いに実質的に等しく、それによって、連続した遅延タップ間の時間遅延が、連続した遅延ブロックのチェーンに沿って線形に増大する。
【００１６】
名前が示すように、トライステート・ドライバは、好ましくは、論理１および論理０の電圧レベルを生成するための第１のモードで動作し、また高インピーダンス（ｈｉ−Ｚ）レベル（理想的には、無限のインピーダンス）によって特徴づけられた第３の状態を生成するための第２のモードで動作する出力ノードを含む。この第２の動作モードでは、トライステート・ドライバの出力ノードは、出力ノードが、トライステート・ドライバの入力に印加された電圧レベルにかかわらず、浮動するように、トライステート・ドライバ内の入力回路から事実上分離されているソフト・ノードとみなすことができる。トライステート・ドライバは、好ましくは、トライステート・イネーブル信号を受け取るように適合された制御入力を含み、トライステート・ドライバの動作モードは、トライステート・イネーブル信号の関数となる。
【００１７】
プログラマブル遅延回路２００の入力（ａ）に供給された入力信号Ｃｌｏｃｋ＿Ｉｎが、この場合、反転バッファであるバッファ２０２の入力に供給されるが、非反転バッファを同様に用いることができる。バッファ２０２は、別法として、遅延ブロックと置き換えることができる。バッファ２０２の出力は、先述のように、０遅延タップとみなすことができる遅延タップｔ０を形成する。バッファ２０２は、本明細書では、遅延ブロック２０４、２０６、２０８として表される遅延ブロック内に含まれた３０のインバータのチェーンを、順番に駆動する。具体的には、バッファ２０２の出力は、第１の遅延ブロック２０４の入力に接続され、第１の遅延ブロック２０４の出力は、タップｔ１で、第２の遅延ブロック（図示せず）の入力に接続され、第１３の遅延ブロック（図示せず）の出力は、第１４の遅延ブロック２０６の入力に接続され、第１４の遅延ブロックの出力は、タップｔ１４で、第１５の遅延ブロック２０８の入力に接続される。インバータ２１８は、先に説明したように、最後の遅延ブロックがチェーン内のすべての前の遅延ブロックと実質的に同じ負荷に遭遇するように、タップｔ１５で、チェーン内の最後の遅延ブロックである第１５の遅延ブロック２０８の出力に接続され、遅延ブロック用の擬似負荷として使用されることが好ましい。
【００１８】
バッファ２０２の出力は、さらに、タップｔ０で、対応するトライステート・ドライバ２１０のデータ入力も駆動する。他の遅延タップのそれぞれ、すなわち、ｔ１ないしｔ１５も、やはり、プログラマブル遅延回路２００内の対応するトライステート・ドライバの入力を駆動する。たとえば、タップｔ１は、トライステート・ドライバ２１２の入力を駆動し、タップ１４は、トライステート・ドライバ２１４の入力を駆動し、タップ１５は、トライステート・ドライバ２１６の入力を駆動する。１６のすべてのトライステート・ドライバからの出力（説明を簡単にするために、そのうちのトライステート・ドライバ２１０、２１２、２１４、および２１６のみが、示されている）は、好ましくは、一緒に接続され、この例示的実施形態において、インバータ２２２によって実現された出力ドライバ２２０への入力を形成する。出力ドライバ２２０は、しかし、示された特定の構成には限定されない。さらに、出力ドライバ２２０は、反転型である必要はなく、別法として、非反転型であってもよい（たとえば、非反転バッファ）。出力ドライバ２２０は、好ましくは、プログラマブル遅延回路２００の出力（ｚ）に、入力信号クロックＣｌｏｃｋ＿Ｉｎを遅延させたものである出力信号Ｃｌｏｃｋ＿Ｏｕｔを生成するように動作する。１つまたは複数のトライステート・ドライバによって生成された出力信号は、僅かに不平衡になる場合があるため（これは、任意のドライバの出力信号の立ち上がり時間が、出力信号の立ち下がり時間と等しくならない状態として定義することができる）、出力信号の立ち上がりおよび立ち下がり時間が、実質的に、整合されるように、１つまたは複数のトライステート・ドライバに対応する遅延ブロックの切り替え点を、要求されるように調整することができる。
【００１９】
プログラマブル遅延回路２００は、プログラマブル遅延回路内の複数の遅延経路のうちの１つを選択するためのデコーダ２２４、または他の復号回路をさらに含む。デコーダ２２４は、この実施形態では、４−１６ライン・デコーダとして実装され、４つの制御信号Ｓｅｌｅｃｔ［３：０］を受け取り、また１６のトライステート・イネーブル信号ｔｓ＿ｅｎｂ［０］ないしｔｓ＿ｅｎｂ［１５］（１６ビットのバスｔｓ＿ｅｎｂ［１５：０］としてまとめて示されている）を生成するように動作する。各一意の４ビット・コードが、任意の所与の時間で、１つのみのトライステート・ドライバおよび対応する遅延経路を選択するように、各トライステート・イネーブル信号は、複数のトライステート・ドライバのうちの対応する１つを起動させる働きをすることが好ましい。
【００２０】
制御信号Ｓｅｌｅｃｔ［３：０］は、基準回路２２６または他の基準源によって生成することができ、その少なくとも一部分が、プログラマブル遅延回路２００内に存在してもよい。同様に、基準回路２２６、またはその少なくとも一部分は、プログラマブル遅延回路２００に対して、外側に存在してもよいということが企図されている。基準回路２２６は、好ましくは、実質的に一定の電圧Ｔｉｅ＿Ｈｉｇｈを、第１の論理レベル（たとえば、論理「１」）を持つ第１の出力（ｔ１）で供給するためのインバータ２２８、および実質的に一定の電圧Ｔｉｅ＿Ｌｏｗを、第１の論理レベルの補数である第２の論理レベル（たとえば、論理「０」）を持つ第２の出力（ｔ０）で供給するための非反転バッファ２３０を含む。信号Ｔｉｅ＿ＨｉｇｈおよびＴｉｅ＿Ｌｏｗは、最小の経路指定資源を消費する静的遅延実装形態用の制御入力ｓ０ないしｓ３を局部的に結ぶために使用することができる。あるいは、通常の動作時、プログラマブル遅延回路の遅延を「即座に」変更するための動的遅延実装形態を可能にするために設計のメモリ空間内に書込み可能である制御信号Ｓｅｌｅｃｔ［３：０］を、少なくとも一時的に保存するレジスタ、または他のメモリ（たとえば、ランダム・アクセス・メモリーなど）に、制御入力ｓ０ないしｓ３を接続することができる。
【００２１】
図３は、本発明の態様による図２に示したプログラマブル遅延回路２００で使用するのに適した、例示的入力回路３００を示す概略図である。この入力回路のクロック・ディスエーブル入力（ｘ）に供給される制御信号Ｃｌｏｃｋ＿Ｄｉｓａｂｌｅがアサートされたとき、図２のプログラマブル遅延回路２００内のバッファ２０２の代わりに使用することができる入力回路３００は、好ましくは、プログラマブル遅延回路の出力信号Ｃｌｏｃｋ＿Ｏｕｔを、論理ハイまたは論理ロー状態に押しやるように動作する。クロック・ディスエーブル（ｘ）部は、入力信号Ｃｌｏｃｋ＿Ｉｎによってクロック制御されるシンクロナイザ３０２、または他の同期回路のデータ入力に供給される。シンクロナイザ３０２は、好ましくは、１つまたは複数のラッチ段３０１（たとえば、Ｄフリップ・フロップ）を含む。例示的入力回路３００では、３つのラッチ段が、生じるかもしれない準安定を主に解決するために用いられる。具体的には、入力信号クロックＣｌｏｃｋ＿Ｉｎは、図２に示したバッファ２０２と同じものであってよい第１のインバータ３０４、および第１のインバータの出力に接続された第２のインバータ３０６を介して、シンクロナイザ３０２のクロック入力に供給される。シンクロナイザ３０２の出力は、論理ＮＡＮＤゲート３０８、または他の論理回路の第１の入力に接続される。ＮＡＮＤゲート３０８の第２の入力は、好ましくは、第１のインバータ３０４の出力に接続される。
【００２２】
シンクロナイザ３０２の出力を遅延ブロックのチェーンの入力と論理的に「ＡＮＤする」こと、または「ＯＲする」ことにより、第２の入力の状態に応じて、また制御入力Ｓｅｌｅｃｔ［３：０］の値にかかわらず、プログラマブル遅延回路２００によって生成された出力信号Ｃｌｏｃｋ＿Ｏｕｔが、論理ハイまたは論理ローの値のいずれかに同期して押しやられることを可能にするので有益である。ＮＡＮＤゲート３０８の出力は、好ましくは、図２に示したプログラマブル遅延回路２００内のバッファ２０２の出力に、置き換えられる。入力回路３００に全く、またはほとんど変更を加えずに、ＮＡＮＤゲート３０８を、同様に、ＮＯＲゲートと置き換えることができるということを理解されたい。ＮＡＮＤゲートを、ＮＯＲゲートに変更すると、出力信号Ｃｌｏｃｋ＿Ｏｕｔが、論理ハイ状態ではなく、論理ロー状態に押しやられる。この種の機能が、たとえば、走査ベースの応用例において、必要とされる場合、設計者は、入力信号Ｃｌｏｃｋ＿Ｉｎを、走査モード時、論理的に変更されないプログラマブル遅延回路の出力に通過させることができるということを保証するべきである。それは、たとえば、非同期のセットおよび／またはリセット入力を持つシンクロナイザを使用して、シンクロナイザの出力を、走査モード時、既知の値に押しやることによって、実現することができる。
【００２３】
図４は、クロック分配網内のクロック挿入遅延の平衡をとるために、本発明の技術を用いることができる例示的クロック分配網４００の少なくとも一部分を示すブロック図である。本発明の技術（たとえば、図２に示すプログラマブル遅延回路２００）に従って実装することができる１つまたは複数のプログラマブル・クロック遅延線（ＰＣＤＬ）は、各ＰＣＤＬの制御入力を、最小遅延をもたらす値に設定して、設計の宛て先サブ・ブロックごとに、クロック分配網４００中に挿入される。任意の宛て先サブ・ブロックでは、１つまたは複数のＰＣＤＬが、好ましくは、直列に、クロック源４０２と、宛て先サブ・ブロックとの間に接続される。各サブ・ブロックは、クロック・ツリーの分岐ごとに、異なる挿入遅延を有する内部クロック・ツリーを持つことができる。しかし、クロック挿入遅延が、すでに、サブ・ブロック内で必要な程度に平衡をとられているものと仮定する。設計が、静的タイミング・ツールに入ると、当業者によって知られているように、各サブ・ブロック設計の挿入遅延を評価することができる。
【００２４】
クロック源４０２を発端にして、例示的クロック分配網４００は、複数の遅延経路を含む。第１の遅延経路は、ブロック４０４としてモデル化することができる最上位の経路指定、第１のＰＣＤＬ４０６、ブロック４０８としてモデル化することができる第２の最上位の経路指定、および第１の遅延経路内のクロック源４０２の宛て先回路または構成要素とすることができる第１のサブ・ブロック４１０を含む。同様に、第２の遅延経路は、ブロック４１２としてモデル化することができる第３の最上位の経路指定、第２のＰＣＤＬ４１４、ブロック４１６としてモデル化することができる第４の最上位の経路指定、および第２の遅延経路内のクロック源４０２の宛て先回路または構成要素とすることができる第２のサブ・ブロック４１８を含む。
【００２５】
単に実施例として、一般性を失わずに、第１の最上位の経路指定ブロック４０４は、１００ピコ秒（ｐｓ）の挿入遅延を持ち、第２の最上位の経路指定ブロック４０８は、２００ｐｓの挿入遅延を持ち、第１のサブ・ブロック４１０は、２ナノ秒（ｎｓ）の挿入遅延を持ち、第３の最上位の経路指定ブロック４１２は、３００ピコ秒（ｐｓ）の挿入遅延を持ち、第４の最上位の経路指定ブロック４１６は、４００ｐｓの挿入遅延を持ち、第２のサブ・ブロック４１８は、１ｎｓの挿入遅延を持つものと仮定されたい。さらに、両方のＰＣＤＬ４０６、４１４は、互いに同一であり、１５０ｐｓの最小遅延（選択された第１のタップ）、およびタップ当たり５０ｐｓの刻み遅延を持つものと仮定されたい。この実施例では、両方のＰＣＤＬを、それらの最小遅延値（１５０ｐｓ）に設定すれば、第１のサブ・ブロック４１０に関する全クロック挿入遅延は、（１００ｐｓ＋１５０ｐｓ＋２００ｐｓ＋２ｎｓ）＝２４５０ｐｓとなり、第２のサブ・ブロック４１８に関する全クロック挿入遅延は、（３００ｐｓ＋１５０ｐｓ＋４００ｐｓ＋１ｎｓ）＝１８５０ｐｓとなる。したがって、このシナリオでは、第１および第２遅延経路は、不平衡であり、第１の遅延経路は、第２の遅延経路より６００ｐｓ大きい全挿入遅延を持つ。
【００２６】
クロック分配網４００内の挿入遅延の平衡をとるためには、６００ｐｓの遅延が、クロック源と第２のサブ・ブロック４１８との間の第２の遅延経路に加えられて、第２のサブ・ブロック用の全挿入遅延を、第１のサブ・ブロック４１０用の全挿入遅延に匹敵させるべきである。それは、少なくともある態様において、第２のＰＣＤＬ４１４が、７５０ｐｓの全体的な遅延を持つように、第１のタップ（１５０ｐｓ）でなく、第１３のタップ（５０ｐｓ×１２タップ＝６００ｐｓ）を選択することにより、第２のＰＣＤＬ４１４用の遅延値を変更させることによって、実施することができる。それにより、たとえば、静的タイミング・ツールを終了させ、ネットリストを変更し、および／または、新しいネットリストを有する静的タイミング・ツールを再入力することを全く必要とせずに、静的タイミング・ツール自体のケース解析を使用して、評価することができる。この方式では、はるかに複雑なトポロジ内で、任意の数のＰＣＤＬ用の遅延タップを変更する効果を、迅速に評価することができる。一旦、設計者が、クロック分配網内のＰＣＤＬ用に選択された遅延値に満足すると、１つのネットリストの変更反復のみが、新しい遅延値を設定するために必要とされる。複数のＰＣＤＬの遅延値が、この装置のメモリ空間内のレジスタまたは他の記憶素子を介して、完全にプログラム可能である場合、ネットリストの変更は、いっそう必要ではなくなる。
【００２７】
１つのＰＣＤＬによって提供することができるものよりも多くの遅延が、任意の遅延経路内に加えられることが必要とされる場合、クロック源と、宛て先サブ・ブロックとの間に直列に接続された複数のＰＣＤＬを用いて、所望の遅延量を実現することができることを理解されたい。たとえば、例示的クロック分配網４００では、第１のサブ・ブロック４１０用の全挿入遅延が２４００ｐｓであり、第２のサブ・ブロック４１８用の全挿入遅延が１２００ｐｓであると仮定されたい。このネットワーク内で挿入遅延の平衡をとるためには、１２００ｐｓの遅延を、第２の遅延経路に加えるべきである。第２のＰＣＤＬ４１４が、その最大遅延設定値において、９００ｐｓの遅延しかもたらすことができないため、第３のＰＣＤＬ（図示せず）が、好ましくは、第２のＰＣＤＬと共に、直列に挿入される。このシナリオでは、タップ１６が、第２のＰＣＤＬ４１４内で選択され、それによって９００ｐｓの遅延がもたらされ、第４のタップが、第３のＰＣＤＬ内で選択され、それによって、３００ｐｓの遅延がもたらされて、ネットワーク内の挿入遅延の平衡をとるために必要とされるような１２００ｐｓ全遅延が達成される。本発明は、任意の遅延経路、またはクロック分配網内に含むことができる任意の特定の数のプログラマブル遅延回路に限定されない。
【００２８】
最小クロック挿入遅延が、設計目標であり、宛て先サブ・ブロックのうちの１つが、常に、最長挿入遅延を持つように保証される場合、一部のプログラミング性を断念し、ネットワーク内のそのサブ・ブロックのクロック分配経路から、ＰＣＤＬを完全に除去して、他のすべてのＰＣＤＬの遅延を、それに応じて調整することは有益である場合がある。上記の実施例では、第１の遅延経路が、より長い挿入遅延を持つように保証されているものと仮定すると、第１のＰＣＤＬ４０６を完全に除去すると、第１のサブ・ブロック４１０用の全挿入遅延が１５０ｐｓだけ減少する。第２のＰＣＤＬ４１４の遅延を、次いで、第１３のタップではなく、第１０の遅延タップを選択することによって、減少させることができる。それにより上述の実装形態に比べて１５０ｐｓが省かれるが、任意の追加の遅延を、第１のサブ・ブロックの挿入遅延に加えるための機能は断念される。
【００２９】
本発明の技術を使用すると、少なくとも１つの態様では、従来必要とされるように多数のネットリストの変更を行うことなく、反復が静的タイミング・ツール内で直接実行されるようにすることによって、システム（たとえば、クロック分配網）内でクロック挿入遅延の平衡をとるために必要な反復回数を、著しく減少させることができる。さらに、この設計のメモリ空間において、選択レジスタを用いることによって、シリコン内の設計が実現された後に、プログラマブル遅延回路の遅延を変化させることができる。それにより、設計者は、たとえば、ＰＶＴの変化、タイミング解析の誤差などにより、必要に応じて、遅延の調整をすることが可能になる。本発明のプログラマブル遅延回路は、トライステート・ドライバを使用して、挿入遅延を最小限に抑える。
【００３０】
本発明の方法の少なくとも一部分を、集積回路内に実装することができる。集積回路を形成する際、複数の同一のダイが、半導体ウェハの表面上に、繰返されるパターンで、通常作製される。各ダイは、本明細書で説明した装置を含み、他の構造および／または回路を含むことができる。個々のダイが、ウェハから切断され、またはダイシングされ、次いで、集積回路としてパッケージングされる。当業者は、ウェハをダイシングし、ダイをパッケージングして、集積回路を作成する方法を知っている。このように製作される集積回路は、本発明の一部分とみなされる。
【００３１】
以上、本発明の例示的実施形態を、本明細書において、添付の図面を参照して説明してきたが、本発明は、それらの正確な実施形態に限定されず、当業者によって、添付の特許請求の範囲から逸脱することなく、さまざまな他の変更および修正を、例示的実施形態に加えることができるということを理解されたい。
【図面の簡単な説明】
【００３２】
【図１】本発明の技術を実装することができる例示的プログラマブル遅延回路の少なくとも一部分を示す構成図である。
【図２】本発明の一態様による、例示的プログラマブル遅延回路の少なくとも一部分を示す概略図である。
【図３】本発明の一態様による、図２で示したプログラマブル遅延回路で使用するのに適した入力段を示す概略図である。
【図４】本発明の技術を用いて、クロック分配網内のクロック挿入遅延の平衡をとることができるクロック分配網の少なくとも一部分を示すブロック図である。
【図１】
0005437564.tif 000002
【図２】
0005437564.tif 000003
【図３】
0005437564.tif 000004
【図４】
0005437564.tif 000005