(57)【特許請求の範囲】
【請求項１】
集積回路（ＩＣ）であって、
複数の入力／出力（Ｉ／Ｏ）端子であって、前記複数のＩ／Ｏ端子を介して信号が前記ＩＣ内へ又は前記ＩＣ外へ通過する、前記複数のＩ／Ｏ端子と、
前記Ｉ／Ｏ端子と前記ＩＣのＩ／Ｏサブシステムとの間を通る信号に伝搬遅延を付加するように構成されるＩ／Ｏタイミングモジュールと、
を含み、
前記Ｉ／Ｏタイミングモジュールが、
前記Ｉ／Ｏ端子の各々に関連付けられる複数の遅延要素と、
前記Ｉ／Ｏ端子の各々に関連付けられ、前記Ｉ／Ｏ端子に関連付けられる前記遅延要素の各々に結合される制御レジスタであって、前記関連付けられるＩ／Ｏ端子の遅延要素を選択するための選択データを格納する、前記制御レジスタと、
各Ｉ／Ｏ端子に対する遅延情報で符号化される不揮発性メモリと、
Ｉ／Ｏ遅延制御ロジックであって、前記不揮発性メモリから対応する遅延情報をリトリーブし、前記伝搬遅延を生成するために前記遅延要素のどれを組み合わせでイネーブルするかを決定し、前記決定された伝搬遅延を生成するために前記遅延要素のどれが適用されるべきかを選択することによって、前記Ｉ／Ｏ端子の各々に関連付けられる前記伝搬遅延を初期化するように構成される、前記Ｉ／Ｏ遅延制御ロジックと、
を含む、ＩＣ。
【請求項２】
請求項１に記載のＩＣであって、
前記複数の遅延要素が、複数のコース（ｃｏａｒｓｅ）遅延要素と複数のファイン（ｆｉｎｅ）遅延要素とを含み、
前記ファイン遅延要素が、前記コース遅延要素より小さな遅延を提供するように構成され、
前記Ｉ／Ｏタイミングモジュールが、所定の数のコース遅延要素を直列にコースリング発振器に接続して前記コースリング発振器の周期を測定することにより前記コース遅延要素の各々に対する第１の遅延値を測定し、所定の数のファイン遅延要素を直列にファインリング発振器に接続して前記ファインリング発振器の周期を測定することにより前記ファイン遅延要素の各々に対する第１の遅延値を測定するように構成される遅延キャリブレーション論理を更に含む、ＩＣ。
【請求項３】
請求項１に記載のＩＣであって、
前記Ｉ／Ｏタイミングモジュールが、複数の信号の１つをＩ／Ｏ端子に選択的に配路するように構成されるＩ／Ｏマルチプレクサを含み、
前記Ｉ／Ｏ遅延制御ロジックが、前記信号のどれが前記Ｉ／Ｏ端子に配路されるかを前記Ｉ／Ｏマルチプレクサが変えることに応答して、前記Ｉ／Ｏ端子に配路されるべき前記信号に基づいて、前記Ｉ／Ｏ端子に関連付けられる前記伝搬遅延を変更するように、構成される、ＩＣ。
【請求項４】
請求項１に記載のＩＣであって、
前記Ｉ／Ｏタイミングモジュールが、前記Ｉ／Ｏ端子の各々に関連付けられる前記制御レジスタに遅延情報値を書き込むことにより、前記Ｉ／Ｏタイミングモジュールの外の回路要素に、前記Ｉ／Ｏ端子の各々に関連付けられる前記伝搬遅延を設定させ得るように構成される遅延制御インタフェースを含む、ＩＣ。
【請求項５】
請求項１に記載のＩＣであって、
前記遅延情報が、その値が前記ＩＣの他の回路要素と同じ方式でのプロセスでスケーリングする、プロセス可変（ｇｎｏｓｔｉｃ）のコース遅延値と、その値が前記ＩＣの他の回路要素と同じ方式でのプロセスでスケーリングする、プロセス可変のファイン遅延値と、その値がプロセス非依存である、プロセス不変（ａｇｎｏｓｔｉｃ）のコース遅延値と、その値がプロセス非依存である、プロセス不変のファイン遅延値とを含む、ＩＣ。
【請求項６】
請求項５に記載のＩＣであって、
前記Ｉ／Ｏ遅延制御ロジックが、Ｉ／Ｏ端子に対して、前記プロセス不変のコース遅延値とコース遅延要素の予測される遅延値との積と、前記プロセス不変のファイン遅延値とファイン遅延要素の予測される遅延値との積と、前記プロセス可変のコース遅延値とコース遅延要素の測定された遅延値との積と、前記プロセス可変のファイン遅延値とファイン遅延要素の測定された遅延値との積との和として、前記伝搬遅延を演算するように構成される、ＩＣ。
【請求項７】
方法であって、
集積回路（ＩＣ）の入力／出力（Ｉ／Ｏ）端子へ又はＩＣのＩ／Ｏ端子から、前記ＩＣのＩ／Ｏタイミングモジュールを介して通過する信号を配路することと、
所定の数の遅延要素を直列にリング発振器に接続して前記リング発振器の周期を測定することにより遅延要素のための遅延値を測定することと、
前記Ｉ／Ｏタイミングモジュールにより、各信号に適用し、前記信号の同一性と前記信号のための前記Ｉ／Ｏタイミングモジュールにストアされた遅延情報とに基づいて前記伝搬遅延を提供するために、前記Ｉ／Ｏタイミングモジュールの遅延要素を選択することと、
を含む、方法。
【請求項８】
請求項７に記載の方法であって、
前記選択することが、前記伝搬遅延を生成するように組み合わせるために多数のファイン遅延要素と多数のコース遅延要素とを決定することを含み、
前記ファイン遅延要素が、前記コース遅延要素より小さい遅延を提供する、方法。
【請求項９】
請求項７に記載の方法であって、
前記Ｉ／Ｏ遅延モジュールにおいて、前記Ｉ／Ｏ端子の１つに関連付けられる伝搬遅延の初期化の後に、前記Ｉ／Ｏ端子の１つに配路される前記信号の同一性を変えることと、
前記Ｉ／Ｏ遅延モジュールにより、前記信号の同一性を前記変えることに応答して、前記信号の前記変えられた同一性に基づいて、前記Ｉ／Ｏ端子に関連付けられる前記伝搬遅延を変えることと、
を更に含む、方法。
【請求項１０】
請求項７に記載の方法であって、
前記Ｉ／Ｏタイミングモジュールの外の回路要素により、前記Ｉ／Ｏ遅延モジュールに、遅延情報値とＩ／Ｏ端子識別子とを提示することと、
前記Ｉ／Ｏ遅延モジュールにより、前記Ｉ／Ｏタイミングコントローラの外の回路要素から前記遅延情報値を前記識別されたＩ／Ｏ端子に関連付けられる制御レジスタに書き込むことにより前記識別されたＩ／Ｏ端子に関連付けられる前記伝搬遅延を設定することと、
を更に含む、方法。
【請求項１１】
請求項７に記載の方法であって、
前記遅延情報が、その値が前記ＩＣの他の回路要素と同じ方式でのプロセスでスケーリングする、プロセス可変のコース遅延値と、その値が前記ＩＣの他の回路要素と同じ方式でのプロセスでスケーリングする、プロセス可変のファイン遅延値と、その値がプロセス非依存である、プロセス不変のコース遅延値と、その値がプロセス非依存である、プロセス不変のファイン遅延値とを含む、方法。
【請求項１２】
請求項１１に記載の方法であって、
前記Ｉ／Ｏタイミングモジュールにより、前記プロセス不変のコース遅延値とコース遅延要素の予測される遅延値との積と、前記プロセス不変のファイン遅延値とファイン遅延要素の予測される遅延値との積と、前記プロセス可変のコース遅延値とコース遅延要素の測定された遅延値との積と、前記プロセス可変のファイン遅延値とファイン遅延要素の測定された遅延値との積との和として、前記伝搬遅延を演算することを更に含む、方法。
【請求項１３】
集積回路（ＩＣ）であって、
信号を前記ＩＣ内に又はＩＣ外に渡すように構成される入力／出力（Ｉ／Ｏ）端子と、
伝搬遅延を前記信号に付加するように構成されるＩ／Ｏタイミングモジュールと、
を含み、
前記Ｉ／Ｏタイミングモジュールが、
遅延要素の複数のアレイであって、前記複数のアレイの１つが前記Ｉ／Ｏ端子の各々に対応する、前記複数のアレイと、
前記信号の各々に対する伝搬遅延値をストアする伝搬遅延値ストレージと、
前記遅延要素の各々によって提供される前記伝搬遅延を測定するように構成されるキャリブレーションコントローラであって、所定の数の遅延要素をリング発振器に直列に接続して前記リング発振器の周期を測定するように作動可能な、前記キャリブレーションコントローラと、
前記信号の各々に対して、前記遅延要素の前記測定された伝搬遅延に基づいて、前記伝搬遅延値により特定される前記伝搬遅延を提供するために前記遅延要素のどれが適用されるべきかを選択するように構成される遅延コントローラと、
を含む、ＩＣ。
【請求項１４】
請求項１３に記載のＩＣであって、
遅延要素の前記アレイの各々が、複数のコース遅延要素と複数のファイン遅延要素とを含み、
前記ファイン遅延要素が、前記コース遅延要素より小さい遅延を提供するように構成され、
前記キャリブレーションコントローラが、前記コース遅延要素によって提供される前記伝搬遅延と前記ファイン遅延要素によって提供される前記伝搬遅延とを測定するように構成される、ＩＣ。
【請求項１５】
請求項１４に記載のＩＣであって、
前記伝搬遅延値の各々が、その値が前記ＩＣの他の回路要素と同じ方式でのプロセスでスケーリングする、プロセス可変のコース遅延値と、その値が前記ＩＣの他の回路要素と同じ方式でのプロセスでスケーリングする、プロセス可変のファイン遅延値と、その値がプロセス非依存である、プロセス不変のコース遅延値と、その値がプロセス非依存である、プロセス不変のファイン遅延値とを含み、
前記遅延コントローラが、前記プロセス不変のコース遅延値とコース遅延要素の予測される遅延値との積と、前記プロセス不変のファイン遅延値とファイン遅延要素の予測される遅延値との積と、前記プロセス可変のコース遅延値とコース遅延要素の前記測定された遅延との積と、前記プロセス可変のファイン遅延値とファイン遅延要素の前記測定された遅延との積との和として、信号に対して、前記伝搬遅延を演算するように構成される、ＩＣ。
【請求項１６】
請求項１５に記載のＩＣであって、
複数の信号の１つを各Ｉ／Ｏ端子に選択的に配路するように構成されるＩ／Ｏマルチプレクサを更に含み、
前記遅延コントローラが、前記信号のどれが前記Ｉ／Ｏ端子に配路されるかを前記Ｉ／Ｏマルチプレクサが変えることに応答し、前記Ｉ／Ｏ端子に配路されるべき前記信号の同一性に基づいて、前記Ｉ／Ｏ端子に関連付けられる前記伝搬遅延を変更するように構成される、ＩＣ。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、概して集積回路に関し、特に、回路入力出力タイミングを制御するための方法及びシステムに関連する。
【背景技術】
【０００２】
事前に定められたタイミング要件を満たすために集積回路（ＩＣ）を改変するプロセスは、「タイミング・クロージャ」と称される。タイミング・クロージャはＩＣ設計のためのタスクには困難となり得る。というのは、タイミングマージンが、プロセス／環境パラメータ（プロセスコーナーなど）に対する変化と共にシフトするためである。従って、一つのプロセスコーナーに対する最適な実装が、別のプロセスコーナーでのタイミング要件を満たすことができない恐れがある。種々のプロセスコーナーにわたってＩＣのための事前に定められたタイミング要件（セットアップ及びホールド時間など）を満たす設計をつくるために、非常に多くの、場所及びルート及び／又は他の設計プロセス反復が要求され得る。従って、タイミング・クロージャは、ＩＣを設計することに関連付けられる時間及びコストを好ましくなく増大させ得る。
【発明の概要】
【０００３】
記載される例において、集積回路（ＩＣ）が入力／出力（Ｉ／Ｏ）端子を含み、Ｉ／Ｏ端子を介して信号がＩＣ内へ又は外へ通る。また、ＩＣは、Ｉ／Ｏ端子とＩＣのＩ／Ｏサブシステムとの間を通る信号に伝搬遅延を付加するように構成されるＩ／Ｏタイミングモジュールを含む。Ｉ／Ｏタイミングモジュールは、Ｉ／Ｏ端子の各々に関連付けられる遅延要素、Ｉ／Ｏ端子の各々に関連付けられる制御レジスタ、メモリ、及びＩ／Ｏ遅延制御ロジックを含む。制御レジスタは、Ｉ／Ｏ端子に関連付けられる遅延要素の各々に結合される。メモリは遅延情報で符号化される。Ｉ／Ｏ遅延制御ロジックは、メモリにストアされた遅延情報に基づいて伝搬遅延を生成するために遅延要素のいずれが適用されるべきかを選択することによって、Ｉ／Ｏ端子の各々に関連付けられる伝搬遅延を初期化するように構成される。
【図面の簡単な説明】
【０００４】
【図１】入力／出力（Ｉ／Ｏ）端子伝搬遅延制御を含む集積回路（ＩＣ）のブロック図を示す。
【０００５】
【図２】ＩＣ  Ｉ／Ｏ端子においてタイミングを制御するＩ／Ｏタイミング制御モジュールのブロック図を示す。
【０００６】
【図３】ＩＣ  Ｉ／Ｏ端子においてタイミングを制御するように適用される遅延要素の遅延を測定する遅延キャリブレーションコントローラのブロック図を示す。
【０００７】
【図４】ＩＣ  Ｉ／Ｏ端子のためのタイミングを設定する遅延コントローラのブロック図を示す。
【０００８】
【図５】ＩＣ  Ｉ／Ｏ端子に関連付けられる伝搬遅延を制御する方法のためのフローチャートを示す。
【発明を実施するための形態】
【０００９】
集積回路（ＩＣ）の入力／出力（Ｉ／Ｏ）端子に配路される信号の伝搬遅延を制御することによってタイミング・クロージャを最適化するための方法及びシステムが本明細書に開示される。（Ｉ／Ｏ端子に関連付けられる）回路要素が所定のタイミング要件を満たすことを確実にすることが、ＩＣのためのタイミング・クロージャのプロセスの実質的な部分である。同様のＩＣが同様の周辺デバイスを含み得るが、そういった周辺デバイスに関連付けられるＩ／Ｏ信号のためのタイミング・クロージャは、回路配置及び配路の異なるパラメータ及び調整を用いる、時間のかかる反復的な静的タイミング分析を必要とし得る。また、従来のタイミング・クロージャプロセスは、各信号がＩ／Ｏタイミング要件を満たすことを確実にするために付加的な労力が要求され得るため、Ｉ／Ｏピン／信号選択を用いてＩ／Ｏ端子への／からの信号を多重化するとき損なわれる。
【００１０】
本明細書に開示する集積回路の実施例は、ＩＣのＩ／Ｏ端子に／から配路される信号のためのタイミング・クロージャのプロセスを簡略化するＩ／Ｏタイミング回路要素を含む。従って、例示の実施例は、ＩＣを設計する際のコスト及び時間を低減するのに適している。本明細書に開示するＩ／Ｏタイミング回路要素は、プログラム可能な遅延をＩ／Ｏ信号に提供し、それにより、Ｉ／Ｏ信号のタイミングが、実質的な反復的タイミング分析及び従来のＩＣの配置及び配路なしに制御され得る。Ｉ／Ｏタイミング回路要素の実施例は、動作条件下でＩ／Ｏタイミング回路要素の遅延要素により提供される遅延を測定し、ＩＣの事前に定められたタイミング要件を満たすように各Ｉ／Ｏ信号のための事前にプログラムされた伝搬遅延を提供するように遅延要素を適合的に適用する。
【００１１】
図１は、種々の実施例に従ったＩ／Ｏ端子伝搬遅延制御を含むＩＣ１００のブロック図を示す。ＩＣ１００は、Ｉ／Ｏ端子１０６、Ｉ／Ｏタイミング制御モジュール１０２、Ｉ／Ｏ信号マルチプレクサ１１２、及びＩ／Ｏ周辺機器１０４を含む。ＩＣ１００はまた、明確にするため図１には示していない他の回路要素及びシステムを含み得る。Ｉ／Ｏ端子１０６は信号伝送構造であり、こういった信号伝送構造を介して、ＩＣ１００の回路要素がＩＣ１００の外の回路要素に結合される。Ｉ／Ｏ端子１０６は、導電性ピン、パッド、及び他の要素を含み得る。
【００１２】
Ｉ／Ｏ周辺機器１０４は、一つ又は複数のＩ／Ｏ端子１０６への信号を駆動する又は一つ又は複数のＩ／Ｏ端子１０６から信号を受け取る種々のデバイスを含むサブシステムである。Ｉ／Ｏ周辺機器に含まれ得るデバイスの例には、汎用Ｉ／Ｏロジック、ユニバーサル非同期／同期・受信／送信ロジック、シリアル・ペリフェラル・インタフェースロジック、インターＩＣ（Ｉ２Ｃ）ロジック、タイマー、オーディオポート、ネットワークアダプタ、メモリコントローラ、及びビデオコントローラが含まれる。Ｉ／Ｏ周辺機器１０４とマルチプレクサ１１２との間で信号１０８が配路される。
【００１３】
マルチプレクサ１１２は、Ｉ／Ｏ端子１１２とＩ／Ｏ周辺機器１０４との間の信号の選択可能な配路を提供する。例えば、マルチプレクサ１１２は、Ｉ／Ｏ周辺機器１０４により生成される１６個の異なる信号１０８の一つを、各Ｉ／Ｏ端子１０６に選択的に配路させ得る。同様に、マルチプレクサ１１２は、１６個の異なるＩ／Ｏ端子１０６の一つを、Ｉ／Ｏ周辺１０４の入力に接続させ得る。信号は、ＩＣ１００のオペレーションの間、Ｉ／Ｏ端子１０６へ／から配路するために選択され得る。Ｉ／Ｏ端子１０６の各々とＩ／Ｏ周辺機器の出力との間及び／又はＩ／Ｏ端子１０６とＩ／Ｏ周辺機器１０４の各入力との間で選択的に配路され得る信号の数は、マルチプレクサ１１２の異なる実施例において変化し得る。マルチプレクサ１１２とＩ／Ｏタイミング制御モジュール１０２との間で信号１１６が配路される。
【００１４】
Ｉ／Ｏタイミング制御モジュール１０２は、Ｉ／Ｏ端子１０６へ／から、Ｉ／Ｏタイミング制御モジュール１０２を介して、Ｉ／Ｏ周辺機器１０４から／へ配路される遅延信号１１４の伝搬を制御する。Ｉ／Ｏタイミング制御モジュール１０２は遅延コントローラ１１０を含む。遅延コントローラ１１０は、Ｉ／Ｏタイミング制御モジュール１０２を通過する各Ｉ／Ｏ信号に特定の所定の量の伝搬遅延がどのように生成され及び適用されるべきかを決定する。適切な伝搬遅延を各Ｉ／Ｏ信号に適用することにより、Ｉ／Ｏタイミング制御モジュール１０２は、Ｉ／Ｏ端子１０６に／から配路される信号に対してタイミング・クロージャを簡略化する。
【００１５】
ＩＣ１００の幾つかの実施例において、Ｉ／Ｏ周辺機器１０４の周辺デバイスの少なくとも幾つかが、Ｉ／Ｏタイミング制御モジュール１０２及びマルチプレクサ１１２に関連して、「ハード化された（hardened）」回路構成要素に含まれ得る。そのような実施例では、周辺デバイスとＩ／Ｏタイミング制御モジュール１０２との間の配路が固定され、これにより、Ｉ／Ｏタイミング制御モジュール１０２により適用される伝搬遅延の決定が簡略化され、及び更には、Ｉ／Ｏ端子１０６と周辺デバイスとの間に配路された信号に対してタイミング・クロージャのプロセスが簡略化される。複合周辺デバイス（メモリコントローラ及び／又はビデオコントローラを含む）などのＩ／Ｏ周辺機器１０４の幾つかの周辺デバイスは、このようなハード化された構成要素の外に配置され得る。Ｉ／Ｏタイミング制御モジュール１０２は、このような周辺機器に対してもタイミング・クロージャを簡略化する。
【００１６】
図２は、Ｉ／Ｏタイミング制御モジュール１０２のブロック図を示す。Ｉ／Ｏタイミング制御モジュール１０２は、遅延要素２０２、遅延インタフェース２０４、遅延キャリブレーションロジック２０６、遅延コントローラ１１０、及び遅延ストレージ２１０を含む。遅延ストレージ２１０は、ストレージデバイス（不揮発性メモリ、ＦＬＡＳＨストレージ、又は読み出し専用メモリストレージなど）を含む。遅延値２２０が遅延ストレージ２１０にストアされる。遅延値２２０は、Ｉ／Ｏ端子１０６への／からの、Ｉ／Ｏタイミング制御モジュール１０２を通過し得る各Ｉ／Ｏ信号に適用されるべき伝搬遅延を特定する。遅延値２２０は、種々のコーナーにわたる遅延の分析によってＩＣ１００の設計の間に決定され得る。遅延ストレージ２１０は、Ｉ／Ｏ端子１０６の数に、マルチプレクサ１１２を介して各Ｉ／Ｏ端子１０６に配路され得る信号の数を乗算したものと同等の多数の遅延値をストアするために充分なストレージロケーションを含み得る。
【００１７】
遅延要素２０２は、Ｉ／Ｏ端子１０６の各々に対応する遅延要素又は遅延ラインのセットを含む。Ｉ／Ｏ端子１０６に関連付けられる信号１１４、及びマルチプレクサ１１２に関連付けられる信号１１６は、伝搬遅延の挿入のために遅延要素２０２に接続される。遅延要素２０２は、遅延ストレージ２１０にストアされる遅延値の各々に従って伝搬遅延を得るために選択可能及び／又はプログラム可能である。各Ｉ／Ｏ端子１０６に関連付けられる遅延要素２０２のセットは、コース（coarse）遅延要素２１８及びファイン（fine）遅延要素２１６を含む。コース遅延要素２１８の各々は、ファイン遅延要素２１６の各々より実質的に長い遅延を提供する。例えば、コース遅延要素が約１ナノ秒の遅延を提供し得、ファイン遅延要素が１００ピコ秒未満の遅延を提供し得る。幾つかの実施例において、Ｉ／Ｏ端子１０６に対応する遅延要素２０２のセットは、２２個のコース遅延要素２１８及び２２個のファイン遅延要素２１６を含み得る。他の実施例が、Ｉ／Ｏ端子１０６毎に異なる数のファイン及び／又はコース遅延要素を含み得る。
【００１８】
遅延キャリブレーションコントローラ２０６は、ＩＣ１００のオペレーションの間、コース遅延要素２１８により提供される遅延、及びファイン遅延要素２１６により提供される遅延を測定する。遅延コントローラ１１０は、遅延ストレージ２１０からリトリーブされた遅延値２２０により特定されるように、所与のＩ／Ｏ信号のための伝搬遅延値を達成するために遅延要素２０２がどのように適用されるべきかを決定するために、測定されたコース及びファイン遅延値を適用する。従って、キャリブレーションコントローラ２０６は、遅延コントローラ１１０に、プロセス、温度、及び／又は電圧などの環境条件により生じる、遅延要素２０２の伝搬遅延における変化を明らかにさせ得る。
【００１９】
遅延コントローラ１１０は、遅延インタフェース２０４を介して遅延要素２０２を制御する。遅延インタフェース２０４は、所与の信号伝搬遅延を生成するためにコース及びファイン遅延要素２１８、２１６のいずれが適用されるべきかを選択するために制御信号を生成するロジック（制御レジスタに対応する各Ｉ／Ｏ端子１０６など）を含む。例えば、遅延インタフェース２０４は、（各遅延要素２０２に結合される）制御レジスタを含み得、制御レジスタは、必要とされる伝搬遅延を達成するために遅延要素２０２のいずれが用いられるべきかを選択するために信号を提供する。遅延インタフェース２０４はまた、バス２１２にインタフェースを提供し、バス２１２は、Ｉ／Ｏタイミング制御モジュール１０２の外の回路要素に、遅延要素２０２のいずれが遅延Ｉ／Ｏ信号に適用されるかを選択させ得、及び遅延コントローラ１１０と通信させ得る。従って、遅延インタフェース２０４を介して、外部回路要素が、遅延コントローラ１１０により設定される伝搬遅延値をオーバーライド（override）又は調整し得、Ｉ／Ｏタイミング制御モジュール１０２の種々の機能を開始し得る。
【００２０】
遅延コントローラ１１０は、Ｉ／Ｏ端子１０６に配路される信号における変化に基づいて、Ｉ／Ｏ端子１０６に関連付けられる伝搬遅延を変更し得る。信号２１４は、遅延コントローラ１１０に、Ｉ／Ｏタイミング制御モジュール１０２を通過する信号の同一性（ｉｄｅｎｔｉｔｙ：アイデンティティ）、発信元、及び／又は送信先における変化を通知する。信号アイデンティティ、発信元、及び／又は送信先における変化は、マルチプレクサ１１２を介して達成され得る。信号２１４を介して、遅延コントローラ１１０がこのような信号変化を通知された後、遅延コントローラ１１０は、遅延ストレージ２１０から新たな信号のための遅延値をリトリーブし得、リトリーブされた遅延値を達成するために遅延要素２０２がどのように適用されるべきかを決定し得、及び遅延インタフェース２０４を介して伝搬遅延を達成するために適切な遅延要素を選択し得る。従って、Ｉ／Ｏタイミング制御モジュール１０２は、Ｉ／Ｏ端子１０６に配路される信号のアイデンティティにおける実行時間変化に関連して、Ｉ／Ｏ端子１０６に関連して適用された伝搬遅延を変え得る。
【００２１】
図３は、遅延キャリブレーションコントローラ２０６のブロック図を示す。遅延キャリブレーションコントローラ２０６は、Ｉ／Ｏ端子１０６において制御タイミングに適用される遅延要素２０２の遅延を測定する。遅延キャリブレーションコントローラ２０６は、遅延カウンタ３０２及び３１６、基準カウンタ３０４及び３１８、及び遅延計算ロジック３０６を含む。遅延キャリブレーションコントローラ２０６は、コース及びファイン遅延要素２１８、２１６両方の遅延を測定する。
【００２２】
コース遅延要素２１８により提供される遅延を測定するため、キャリブレーションロジック２０６（又は遅延測定を促進するための遅延コントローラ１１０）が、直列に配される、所定の数のコース遅延要素（８８個の要素など）を選択する。コース遅延要素２１８の選択されたセットは、リング発振器として配され、リング発振器の発振出力３０８は遅延カウンタ３０２に接続される。
【００２３】
基準カウンタ３０４は、既知の周波数の基準クロック信号３１０によりインクリメントされる。遅延カウンタ３０２及び基準カウンタ３０４のカウント出力は、遅延計算ロジック３０６に提供される。遅延計算ロジック３０６は、遅延測定を開始するために所与の時間（同時など）に遅延カウンタ３０２及び基準カウンタ３０４によるカウントをイネーブルにし得、その後の或る時間（カウンタ３０２、３０４のいずれかが最大カウント値又は所定のカウント値に達するときなど）に両方のカウンタ３０２、３０４によるカウントをディセーブルし得る。
【００２４】
基準クロック３１０の既知の周期、及び遅延及び基準カウンタ３０２、３０４の最終的カウント値の比に基づいて、遅延計算ロジック３０６は、リング発振器出力３０８の周期、及び直列に配されるコース遅延要素２１８により提供される総遅延を決定する。遅延計算ロジック３０６は、動作条件下で各個別のコース遅延要素２１８により提供される遅延を決定するために、総遅延をリング発振器におけるコース遅延要素２１８の数で除算する。遅延計算ロジック３１４は、伝搬遅延を達成するために遅延要素２０２のいずれが適用されるべきかを決定する際に用いるために、測定された遅延を遅延コントローラ１１０に提供する。要素当りの測定されたコース遅延（ＣＤＰＥ：coarse delay per element）は、下記のように計算され得る。
0006673823.tif 000002
ここで、ＲｅｆＣｎｔは基準カウンタ３０４の最終的カウント値であり、ＲｅｆＣｌｋＰｅｒｉｏｄは基準クロック信号３１０の既知の周期であり、ＣｒｓＤｌｙＣｎｔは遅延カウンタ３０２の最終的カウント値であり、ＮｕｍＣｒｓＥｌｅｍｅｎｔｓはコース遅延リング発振器におけるコース遅延要素の数である。
【００２５】
遅延キャリブレーションコントローラ２０６は、コース遅延要素２１８に対して説明されたものに類似する方式で、ファイン遅延要素２１６の遅延を測定する。ファイン遅延要素２１６の遅延を測定するとき、コース要素キャリブレーションにおいて適用されたコース遅延要素２１８の数より実質的に大きい多数のファイン遅延要素２１６が用いられ得る。例えば、２６４個のファイン遅延要素が、発振信号３２０を生成するリング発振器を形成するように順次配され得る。基準カウンタ３１８及び遅延カウンタ３１６は、遅延計算ロジック３０６により停止されるまで、それぞれ、基準クロック３１０及びファイン遅延リング発振器出力クロック３２０によりインクリメントされる。カウンタ３１６、３１８の最終的なカウント値は、要素当りの測定されたファイン遅延（ＦＤＰＥ：fine delay per element）を下記のように演算するために用いられる。
0006673823.tif 000003
ここで、ＲｅｆＣｎｔは基準カウンタ３１８の最終的カウント値であり、ＲｅｆＣｌｋＰｅｒｉｏｄは基準クロック信号３１０の周期であり、ＦｉｎｅＤｌｙＣｎｔは遅延カウンタ３１６の最終的カウント値であり、ＮｕｍＦｉｎｅＥｌｅｍｅｎｔｓはファイン遅延リング発振器におけるファイン遅延要素の数である。
【００２６】
遅延キャリブレーションロジック２０６は、デバイス初期化（パワーオンリセット時間など）において要素２１６、２１８によって提供される遅延を測定するためにトリガーされ得る。Ｉ／Ｏタイミング制御モジュール１０２の幾つかの実施例において、遅延キャリブレーションロジック２０６は、遅延測定を開始するように信号２１４を介してトリガーされ得る。例えば、ソフトウェア命令の実行が、電圧又は温度などの動作条件における識別された変化に基づいて再キャリブレーションをトリガーし得る。
【００２７】
図４は、遅延コントローラ１１０のブロック図を示す。遅延コントローラ１１０は遅延調整ロジック４０２を含み、遅延調整ロジック４０２は、遅延ストレージ２１０からリトリーブされる遅延値２２０により特定される伝搬遅延を提供するために、Ｉ／Ｏ端子１０６に対応する遅延要素２０２のセットのいずれをＩ／Ｏ信号に適用するかを決定する。遅延調整ロジック４０２は、遅延キャリブレーションコントローラ２０６によって提供される測定された遅延３１４、及び予想／予期される遅延値４０４を適用し、予想／予期される遅延値４０４は、遅延値２２０により特定される伝搬遅延を生成するためにどの遅延要素２０２が適用されるべきであるかを決定するためにコース及びファイン遅延要素２１８、２１６のための設計により予測される遅延値であり得る。
【００２８】
相互接続、及び異なる経路（クロック及びデータ経路など）上のその他の遅延は動作条件にわたって異なって変化し得るため、遅延要素２０２を介する固定の伝搬遅延の適用が、幾つかのプロセス／温度／電圧の組み合わせに対するタイミングを阻害し得る。Ｉ／Ｏタイミング制御モジュール１０２の実施例が、２つの部分、すなわち、プロセス不変（アグノスティック（agnostic））遅延及びプロセス可変（グノスティック（gnostic））遅延、において伝搬遅延を特定することによってこの困難を克服する。
【００２９】
遅延ストレージ２１０からリトリーブされた遅延値２２０は、対応するＩ／Ｏ信号Ｉ／Ｏ端子組み合わせのための伝搬遅延を共同で（conjunctively）特定する、プロセスアグノスティック遅延値４０６及びプロセスグノスティック遅延値４１２を含む。プロセスグノスティック遅延値４１２は、ＩＣ１００の他の回路要素と同じ方式で、ＩＣ１００の最大コーナーから最小コーナーまでスケーリングする遅延値２２０の一部を特定する。プロセスグノスティック遅延値４１２は、コース遅延値４１４及びファイン遅延値４１６を含む。コース遅延値４１４及びファイン遅延値４１６は、それぞれ、多数のコース遅延要素２１８及び多数のファイン遅延要素２１６を特定し得る。
【００３０】
プロセスアグノスティック遅延値４０６は、プロセス及び動作条件に対して固定される遅延など、ＩＣ１００のコーナーにわたって同じままである遅延値２２０の一部を特定する。プロセスアグノスティック遅延値４０６もまた、コース遅延値４０８及びファイン遅延値４１０を含む。コース遅延値４０８及びファイン遅延値４１０は、それぞれ、多数のコース遅延要素２１８及び多数のファイン遅延要素２１６を特定し得る。しかし、値４０８、４１０により特定される遅延は、プロセス不変であり、従って動作条件で変化しない。
【００３１】
遅延コントローラ１１０は、所与のＩ／Ｏ信号に対して所与のＩ／Ｏ端子に適用されるべき総コース遅延（ＣｒｓＤｌｙ）を下記のように演算し得る。
CrsDly＝ACrsDly×PredCrsDly＋GCrsDly×CDPE
ここで、ＡＣｒｓＤｌｙは多数のプロセスアグノスティックコース遅延要素（例えば、コース値４０８）であり、ＰｒｅｄＣｒｓＤｌｙはコース遅延要素の予想又は予期される遅延（４０４）であり、ＧＣｒｓＤｌｙは多数のグノスティックのコース遅延要素（例えば、コース値４１４）であり、ＣＤＰＥはコース遅延要素毎の測定された遅延（３１４）である。
【００３２】
総コース遅延（ＣｒｓＤｌｙ）が演算されたので、遅延調整ロジック４０２は、適用するコース遅延要素２１８の数を下記のように決定する。
ＣｒｓＥｌｅｍｅｎｔｓ＝ＣｒｓＤｌｙ／ＣＤＰＥ
【００３３】
同様に、遅延調整ロジック４０２は、総ファイン遅延を下記のように演算する。
FineDly＝AFineDly×PredFineDly＋GFineDly×FDPE
ここで、ＡＦｉｎｅＤｌｙは、多数のプロセスアグノスティックファイン遅延要素（例えば、ファイン値４１０）であり、ＰｒｅｄＦｉｎｅＤｌｙはファイン遅延要素の予想又は予期される遅延（４０４）であり、ＧＦｉｎｅＤｌｙは多数のプロセスグノスティックのファイン遅延要素（例えば、ファイン値４１６）であり、ＦＤＰＥはファイン遅延要素毎の測定された遅延（３１４）である。
【００３４】
遅延調整ロジック４０２は、ＣｒｓＥｌｅｍｅｎｔｓに関連して適用するためファイン遅延要素２１８の数を下記のように演算する。
ＦｉｎｅＥｌｅｍｅｎｔｓ＝ＦｉｎｅＤｌｙ／ＦＤＰＥ
【００３５】
遅延値２２０のため遅延調整ロジック４０２により実装される総遅延は下記である。
ＴｏｔａｌＤｌｙ＝ＣｒｓＤｌｙ＋ＦｉｎｅＤｌｙ
ここで、特定された遅延のプロセスアグノスティック部分は、プロセス及び動作条件とともに変化しない。これは、プロセスアグノスティック遅延を提供するために適用される遅延要素の数は、測定されたコース及びファイン遅延値３１４に基づいて変化するためである。従って、実施例は、プロセス不変遅延（金属遅延など）及びプロセス可変遅延（構成要素遅延など）を明らかにする。
【００３６】
図５は、種々の実施例に従った、ＩＣ  Ｉ／Ｏ端子１０６に関連付けられる伝搬遅延を制御する方法のためのフローチャートを示す。ブロック５０２において、ＩＣ１００が初期化される。例えば、ＩＣ１００は、パワーオンリセットに関連付けられるオペレーションを実施している可能性がある。遅延キャリブレーションコントローラ２０６は、ＩＣの初期化の間、動作条件下でコース遅延要素２１８及びファイン遅延要素２１６の遅延を測定する。
【００３７】
ブロック５０４において、遅延コントローラ１１０は、遅延ストレージ２１０にアクセスし、遅延ストレージ２１０から遅延値２２０をリトリーブする。遅延値２２０は、Ｉ／Ｏ端子１０６の各々に対して信号配路に適用されるべき伝搬遅延を特定する。遅延値２２０の各々は、Ｉ／Ｏ端子１０６に配路される信号に対し、コース遅延要素２１８及びファイン遅延要素２１６両方のための伝搬遅延のプロセス不変及びプロセス可変部分を特定する。
【００３８】
ブロック５０６において、遅延コントローラ１１０は、Ｉ／Ｏ端子１０６に配路される各信号に適用されるべき総コース遅延及び総ファイン遅延を演算する。所与の信号に対し、総コース遅延は、信号に対して演算されるコースプロセス不変遅延及びコースプロセス可変遅延の和である。総ファイン遅延は、信号に対して演算されるファインプロセス不変遅延及びファインプロセス可変遅延の和である。プロセス不変遅延は、名目の又は計画されたコース／ファイン遅延要素遅延値と、遅延値２２０のコース／ファインプロセス不変部分において特定されたコース／ファイン遅延要素の数との積として演算される。プロセス可変遅延は、測定されたコース／ファイン遅延要素遅延値と、コース／ファインプロセス可変部分において特定されたコース／ファイン遅延要素遅延値２２０の数との積として演算される。
【００３９】
ブロック５０８において、遅延コントローラ１１０は、Ｉ／Ｏ端子１０６に配路するために遅延値２２０により特定される伝搬遅延を提供するために、コース遅延要素２１８のいずれが及びファイン遅延要素２１６のいずれが適用されるかを選択する。遅延コントローラ１１０は、演算された総コース遅延及びコース遅延要素２１８の測定された遅延に基づいて適用されるべき多数のコース遅延要素２１８を識別し得る。遅延コントローラ１１０は、演算された総ファイン遅延及びファイン遅延要素２１６の測定された遅延に基づいて適用されるべき多数のファイン遅延要素２１６を識別し得る。遅延コントローラ１１０は、Ｉ／Ｏ端子１０６に対応する遅延要素２０２に選択信号を提供する制御レジスタに適用されるべきコース遅延要素２１８の数及びファイン遅延要素２１６の数を特定する情報を書き込む。例えば、一つの選択信号が各遅延要素２０２に提供され得る。
【００４０】
ブロック５１０において、遅延コントローラ１１０は、Ｉ／Ｏ端子５１０への信号配路における変化の指示を受け取る。例えば、Ｉ／Ｏ端子１０６に配路される信号は、マルチプレクサ１１２を介して変更され得る。この指示は、Ｉ／Ｏタイミング制御モジュール１０２の外の回路要素による信号２１４のアサートの結果生じ得る。信号配路における変化の指示に応答して、遅延コントローラ１１０は、遅延ストレージ２１０から、新たな信号に対応する遅延値２２０をリトリーブする。遅延コントローラ１１０は、ブロック５０６に対して説明したように遅延値２２０に対する遅延を演算し、ブロック５０８に対して説明したように遅延を実装するために遅延要素を選択する。
【００４１】
ブロック５１２において、遅延キャリブレーションコントローラ２０６は、コース遅延要素２１８及びファイン遅延要素２１６の遅延を測定するためにトリガーされる。このトリガーは、Ｉ／Ｏタイミング制御モジュール１０２の外の回路要素による信号２１４のアサートの結果生じ得る。このトリガーに応答して、遅延キャリブレーションコントローラ２０６は、ブロック５０２に対して説明したようにコース遅延要素２１８及びファイン遅延要素２１６の遅延を測定する。
【００４２】
ブロック５１４において、遅延コントローラ１１０は、遅延ストレージ２１０から遅延値２２０をリトリーブし、Ｉ／Ｏ端子１０６に対して実装される伝搬遅延を更新するように、トリガーされる。このトリガーは、Ｉ／Ｏタイミング制御モジュール１０２の外の回路要素による信号２１４のアサートの結果生じ得る。このトリガーに応答して、遅延コントローラ１１０は、ブロック５０４〜５０８に対して説明されたオペレーションを実施する。
【００４３】
従って、少なくとも一つの実施例において、或る方法が、ＩＣのＩ／Ｏ端子へ又はＩＣのＩ／Ｏ端子から、ＩＣのＩ／Ｏタイミングモジュールを介して通る信号を配路することを含む。Ｉ／Ｏタイミングモジュールにおける信号に伝搬遅延が付加される。Ｉ／Ｏタイミングモジュールの遅延要素が、Ｉ／Ｏタイミングモジュールにより、各信号に適用されるように、及び信号のアイデンティティとその信号のためにＩ／Ｏタイミングモジュールにストアされた遅延情報とに基づいて伝搬遅延を提供するように、選択される。
【００４４】
更なる実施例において、ＩＣが、Ｉ／Ｏ端子及びＩ／Ｏタイミングモジュールを含む。Ｉ／Ｏ端子は、ＩＣの中へ又は外へ信号を渡すように構成される。Ｉ／Ｏタイミングモジュールは、信号に伝搬遅延を付加するように構成され、遅延要素のアレイ、伝搬遅延値ストレージ、キャリブレーションコントローラ、及び遅延コントローラを含む。遅延要素のアレイの一つが、Ｉ／Ｏ端子の各々に対応する。伝搬遅延値ストレージは、信号の各々のための伝搬遅延値をストアする。キャリブレーションコントローラは、遅延要素によって提供される伝搬遅延を測定するように構成される。遅延コントローラは、信号の各々について、遅延要素の測定された伝搬遅延に基づいて、伝搬遅延値により特定される伝搬遅延を提供するために遅延要素のいずれを適用するべきかを選択するように構成される。
【００４５】
本発明の特許請求の範囲内で、説明した例示の実施例に変形が成され得、多くの他の実施例が可能である。
【図１】
0006673823.tif 000004
【図２】
0006673823.tif 000005
【図３】
0006673823.tif 000006
【図４】
0006673823.tif 000007
【図５】
0006673823.tif 000008