(57)【要約】  複数のプログラム可能遅延セルを有する複数の入力／出力チャネルを備えるコントローラは、それぞれ複数の遅延セルに導入される、複数の遅延時間を制御する複数のディジタル値を記憶するそれぞれ複数のレジスタをさらに備える。複数のレジスタにプログラムされた複数の値は、コントローラ及び複数のチャネルに結合された１つ以上のデバイス間の複数の信号のタイミングをテストすることで決定される。複数のテストは、逐次的な複数のテスト値のセットからの複数のテスト値で、複数のレジスタをセットする段階と、複数の信号の特定のパターンを、コントローラから１つ以上のデバイスへドライブする段階と、パターンの複数の部分が、１つ以上のデバイスに、正確に受信されてるかをチェックする段階とを備える。複数の信号を調整する段階は、複数のセットアップ及びホールドタイム制約に関する複数の信号のセンタリングを備える。
2007509541.tif 000002
【特許請求の範囲】
【請求項１】
プログラム可能遅延セルであって、
低供給レールに結合されたキャパシタと、
前記プログラム可能遅延セルの出力に結合されたコンダクタと、
前記コンダクタ及び前記キャパシタに並列に結合された２つ以上のパスゲートと
を備えるプログラム可能遅延セル。
【請求項２】
前記複数のパスゲートのそれぞれのインピーダンスが、それぞれのコントロール信号によって制御される請求項１に記載のプログラム可能遅延セル。
【請求項３】
高供給レール及び前記コンダクタに結合された可変インピーダンストランジスタをさらに備え、
前記可変インピーダンストランジスタのインピーダンスが、コントロール信号により決定される請求項１に記載のプログラム可能遅延セル。
【請求項４】
プログラム可能遅延セルであって、
前記プログラム可能遅延セルの出力に結合されたコンダクタと、
高供給レール及び前記コンダクタに結合された可変インピーダンストランジスタと
を備え、
前記可変インピーダンストランジスタのインピーダンスが、コントロール信号により決定されるプログラム可能遅延セル。
【請求項５】
前記コントロール信号が、前記プログラム可能遅延セルを備える集積回路の動作内の複数の変化を測定するシステムからの出力に応答してセットされ、前記複数の変化は、少なくとも部分的に、前記集積回路への供給電圧の複数の変化、周囲温度の複数の変化及び前記集積回路の温度の複数の変化に起因する請求項４に記載のプログラム可能遅延セル。
【請求項６】
前記コントロール信号が、連続的な信号である請求項４に記載のプログラム可能遅延セル。
【請求項７】
コントローラであって、
前記コントローラに結合されたコンダクタ上に電気信号を生成する出力バッファと、
前記出力バッファに結合されたプログラム可能遅延セルと
を備え、
前記プログラム可能遅延セルは、少なくとも、
低供給レールに結合されたキャパシタと、
前記プログラム可能遅延セルの出力に結合されたコンダクタと、
前記コンダクタ及び前記キャパシタに並列に結合された２つ以上のパスゲートと
を有するコントローラ。
【請求項８】
前記プログラム可能遅延セルにより導入される遅延時間を決める値を記憶するための、前記プログラム可能遅延セルに結合されたレジスタをさらに備える請求項７に記載のコントローラ。
【請求項９】
前記レジスタにプログラムする１つ以上の値を記憶するためのメモリをさらに備える請求項８に記載のコントローラ。
【請求項１０】
前記コントローラがメモリコントローラである請求項７に記載のコントローラ。
【請求項１１】
前記出力バッファのソースドライビングインピーダンスを決める第一値を記憶するための、及び前記出力バッファのシンクドライビングインピーダンスを決める第二値を記憶するための、前記出力バッファに結合された１つ又は２つのレジスタをさらに備える請求項７に記載のコントローラ。
【請求項１２】
コントローラであって、
前記コントローラに結合さらたコンダクタ上に、電気信号を生成する出力バッファと、
前記出力バッファに結合されたプログラム可能遅延セルと
を備え、
前記プログラム可能遅延セルは、少なくとも、
前記プログラム可能遅延セルの出力に結合されたコンダクタと、
高供給レール及び前記コンダクタに結合された可変インピーダンストランジスタと
を有し、
前記可変インピーダンストランジスタのインピーダンスが、コントロール信号により決定されるコントローラ。
【請求項１３】
前記コントロール信号が、前記コントローラの動作内の複数の変化を測定するシステムからの出力に応答してセットされ、前記複数の変化は、少なくとも部分的に、前記コントローラへの供給電圧の複数の変化、周囲温度の複数の変化及び前記コントローラの温度の複数の変化に起因する請求項１２に記載のコントローラ。
【請求項１４】
前記プログラム可能遅延セルにより導入される遅延時間を決める値を記憶するための、前記プログラム可能遅延セルに結合されたレジスタをさらに備える請求項１２に記載のコントローラ。
【請求項１５】
前記レジスタにプログラムする１つ以上の値を記憶するためのメモリをさらに備える請求項１４に記載のコントローラ。
【請求項１６】
前記コントローラがメモリコントローラである請求項１２に記載のコントローラ。
【請求項１７】
前記出力バッファのソースドライビングインピーダンスを決める第一値を記憶するため、及び前記出力バッファのシンクドライビングインピーダンスを決める第二値を記憶するための、前記出力バッファに結合された１つ又は２つのレジスタをさらに備える請求項１２に記載のコントローラ。
【請求項１８】
コントローラであって、
前記コントローラに結合されたコンダクタから電気信号を受信する入力バッファと、
前記入力バッファに結合されたプログラム可能遅延セルと
を備え、
前記プログラム可能遅延セルは、少なくとも、
低供給レールに結合されたキャパシタと、
前記プログラム可能遅延セルの出力に結合されたコンダクタと、
前記コンダクタ及び前記キャパシタに並列に結合された２つ以上のパスゲートと
を有するコントローラ。
【請求項１９】
前記プログラム可能遅延セルにより導入される遅延時間を決める値を記憶するための、前記プログラム可能遅延セルに結合されたレジスタをさらに備える請求項１８に記載のコントローラ。
【請求項２０】
前記レジスタにプログラムする１つ以上の値を記憶するためのメモリをさらに備える請求項１９に記載のコントローラ。
【請求項２１】
前記コントローラがメモリコントローラである、請求項１８に記載のコントローラ。
【請求項２２】
コントローラであって、
前記コントローラに結合されたコンダクタから、電気信号を受信するための入力バッファと、
前記入力バッファに結合されたプログラム可能遅延セルと
を備え、
前記プログラム可能遅延セルは、少なくとも、
前記プログラム可能遅延セルの出力に結合されたコンダクタと、
高供給レール及び前記コンダクタに結合された可変インピーダンストランジスタを有し、
前記可変インピーダンストランジスタのインピーダンスが、コントロール信号により決定されるコントローラ。
【請求項２３】
前記コントロール信号が、前記コントローラの動作内の複数の変化を測定するシステムからの出力に応答してセットされ、前記複数の変化は、少なくとも部分的に、前記コントローラへの供給電圧の複数の変化、周囲温度の複数の変化及び前記コントローラの温度の複数の変化に起因する請求項２２に記載のコントローラ。
【請求項２４】
前記プログラム可能遅延セルにより導入される遅延時間を決める値を記憶するための、前記プログラム可能遅延セルに結合されたレジスタをさらに備える請求項２２に記載のコントローラ。
【請求項２５】
前記レジスタにプログラムする１つ以上の値を記憶するためのメモリをさらに備える請求項２４に記載のコントローラ。
【請求項２６】
前記コントローラがメモリコントローラである、請求項２２に記載のコントローラ。
【請求項２７】
プリント基板であって、
グラフィクスチップと、
コントローラと、
前記プリント基板上にインストールされ、かつ前記コントローラに結合される複数のデバイスの１つ以上の構成のための複数の出力ウインドウセンタリング値をプログラムされているメモリと
を備え、
前記コントローラは、少なくとも、
前記コントローラに結合されたコンダクタ上の電気信号を生成する出力バッファと、
前記出力バッファに入力を直接提供するための、前記出力バッファに接続されたプログラム可能遅延セルと、
前記プログラム可能遅延セルへの入力に対する前記入力の遅延時間を決める出力ウインドウセンタリング値を記憶するための、前記プログラム可能遅延セルに結合されたレジスタと
を有するプリント基板。
【請求項２８】
前記コントローラが、メモリコントローラである請求項２７に記載のプリント基板。
【請求項２９】
前記メモリコントローラに結合された１つ以上のメモリデバイスをさらに備え、
前記メモリコントローラは、前記電気信号を前記１つ以上のメモリデバイスの１つ以上へ前記コンダクタを介してドライブする請求項２８に記載のプリント基板。
【請求項３０】
前記コントローラが、前記出力バッファのソースドライビングインピーダンスを決めるソースドライビングインピーダンス値、及び前記出力バッファのシンクドライビングインピーダンスを決めるシンクドライビングインピーダンス値を記憶するための、前記出力バッファに結合された１つ又は２つのレジスタをさらに備える請求項２７に記載のプリント基板。
【請求項３１】
プリント基板であって、
グラフィクスチップと、
コントローラと、
前記プリント基板上にインストールされ、かつ前記コントローラに結合される複数のデバイスの１つ以上の構成のための、複数の入力ウインドウセンタリング値をプログラムされているメモリと
を備え、
前記コントローラは、少なくとも、
前記コントローラに結合したコンダクタから電気信号を受信する入力バッファと、
前記入力バッファの出力を直接受信するために、前記入力バッファに接続されたプログラム可能遅延セルと、
前記入力バッファの前記出力に対する、前記プログラム可能遅延セルの出力の遅延時間を決める入力ウインドウセンタリング値を記憶するための、前記プログラム可能遅延セルに結合されたレジスタと
を有するプリント基板。
【請求項３２】
前記コントローラが、メモリコントローラである請求項３１に記載のプリント基板。
【請求項３３】
前記メモリコントローラに結合された１つ以上のメモリデバイスをさらに備え、
前記１つ以上のメモリデバイスは、前記電気信号を前記メモリコントローラへ前記コンダクタを介してドライブする請求項３２に記載のプリント基板。
【請求項３４】
グラフィクスチップと、
少なくともプログラム可能遅延セルを有するコントローラと
を備え、
前記プログラム可能遅延セルが、少なくとも、
低供給レールに結合されたキャパシタと、
前記プログラム可能遅延セルの出力に結合されたコンダクタと、
前記コンダクタ及び前記キャパシタに並列に結合された２つ以上のパスゲートと
を含むプリント基板。
【請求項３５】
前記複数のパスゲートのそれぞれのインピーダンスが、それぞれのコントロール信号により制御される請求項３４に記載のプリント基板。
【請求項３６】
前記プログラム可能遅延セルが、高供給レール及び前記コンダクタに結合された可変インピーダンストランジスタをさらに有し、
前記可変インピーダンストランジスタのインピーダンスが、コントロール信号により決定される請求項３４に記載のプリント基板。
【請求項３７】
プリント基板であって、
グラフィクスチップと、
少なくともプログラム可能遅延セルを有するコントローラと
を備え、
前記プログラム可能遅延セルが、少なくとも、
前記プログラム可能遅延セルの出力に結合されたコンダクタと、
高供給レール及び前記コンダクタに結合される可変インピーダンストランジスタと
を有し、
前記可変インピーダンストランジスタのインピーダンスが、コントロール信号により決められるプリント基板。
【請求項３８】
前記コントロール信号が、前記コントローラの動作内の複数の変化を測定するシステムからの出力に応答してセットされ、前記複数の変化は、少なくとも部分的に、前記コントローラへの供給電圧の複数の変化、周囲温度の複数の変化及び前記コントローラの温度の複数の変化に起因する請求項３７に記載のプリント基板。
【請求項３９】
前記コントロール信号が連続的な信号である請求項３７に記載のプリント基板。
【請求項４０】
オーディオ入力デバイスと、
プリント基板と
を備え、
前記プリント基板は、
メモリコントローラと、
基本入力／出力システムデバイスと
を有し、
前記メモリコントローラは、少なくとも、
前記メモリコントローラの複数の出力バッファの複数の入力に、複数の第一プログラム可能遅延セルにより、直接導入される複数の遅延時間に影響する複数の出力ウインドウセンタリング値を記憶する複数の出力遅延コントロールレジスタと、
前記メモリコントローラの複数のデータ入力バッファの複数の出力に、複数の第二プログラム可能遅延セルにより、直接導入される複数の遅延時間に影響する複数の入力ウインドウセンタリング値を記憶する複数の入力遅延コントロールレジスタと
を含み、
前記基本入力／出力システムデバイスには、前記プリント基板上にインストールされ、かつ前記メモリコントローラに結合される複数のメモリデバイスの１つ以上の構成のための、複数の出力ウインドウセンタリング値及び複数の入力ウインドウセンタリング値がプログラムされたコンピュータ装置。
【請求項４１】
前記メモリコントローラが、前記複数の出力バッファのために、
複数のソースドライビングインピーダンス値と、
複数のシンクドライビングインピーダンス値と
をさらに有する請求項４０に記載の装置。
【請求項４２】
前記基本入力／出力システムデバイスが、複数のメモリデバイスの１つ以上の構成のために、
複数のソースドライビングインピーダンス値と、
複数のシンクドライビングインピーダンス値と
をその中にプログラムした請求項４１に記載の装置。
【請求項４３】
プログラム可能遅延セル内の複数のパスゲートの複数のインピーダンスを制御することで、前記プログラム可能遅延セルにより信号内に導入される遅延時間を決定する段階を備える方法。
【請求項４４】
前記プログラム可能遅延セル内の可変インピーダンストランジスタの可変インピーダンスを制御することで、前記遅延時間を調整する段階をさらに備える請求項４３に記載の方法。
【請求項４５】
前記可変インピーダンスを制御する段階が、前記プログラム可能遅延セルを備える集積回路の動作内の複数の変化を測定するシステムからの出力に応答して、前記可変インピーダンスを制御する段階を少なくとも有し、
前記複数の変化は、少なくとも部分的に、前記集積回路への供給電圧の複数の変化、周囲温度の複数の変化及び前記集積回路の温度の複数の変化に起因する請求項４４に記載の方法。
【請求項４６】
プログラム可能遅延セルにより信号に導入される遅延時間を、前記プログラム可能遅延セル内の可変インピーダンストランジスタの可変インピーダンスを制御することにより決定する段階を備える方法。
【請求項４７】
前記遅延時間を、前記プログラム可能遅延セル内の複数のパスゲートの複数のインピーダンスを制御することにより、調整する段階をさらに備える請求項４６に記載の方法。
【請求項４８】
前記可変インピーダンスを制御する段階が、前記プログラム可能遅延セルを備える集積回路の動作内の複数の変化を測定するシステムからの出力に応答して、前記可変インピーダンスを制御する段階を少なくとも有し、
前記複数の変化は、少なくとも部分的に、前記集積回路への供給電圧の複数の変化、周囲温度の複数の変化及び前記集積回路の温度の複数の変化に起因する請求項４６に記載の方法。
【請求項４９】
複数のプリント基板上にインストールされる複数のデバイスの１つ以上の構成のために、前記複数のプリント基板上にインストールされる複数のコントローラの複数のレジスタにプログラムされる複数の値を決定する段階を備え、
前記複数のコントローラ及び前記複数のデバイスが前記複数のプリント基板上に一旦インストールされると、前記複数のレジスタが、前記複数のコントローラの複数の出力バッファの複数のインピーダンス、前記複数の出力バッファの複数の入力に、複数の第一プログラム可能遅延セルにより、直接導入される複数の遅延時間、及び前記複数のコントローラの前記複数の入力バッファの複数の出力に、複数の第二プログラム可能遅延セルにより、直接導入される複数の遅延時間の１つ以上に影響することで、前記複数のコントローラ及び前記複数のデバイス間の複数の信号のタイミングに影響する方法。
【請求項５０】
前記複数の値を、前記複数のプリント基板上にインストールされる複数のメモリ内に記憶する段階をさらに備える請求項４９に記載の方法。
【請求項５１】
前記複数のコントローラ及び前記複数のデバイスが、プリント基板の特定のタイプ上に一旦インストールされると、前記複数のコントローラ及び前記デバイス間の複数の信号のタイミングに基づいて、前記複数のレジスタにプログラムされる複数のキャリブレートされた値を決定する段階と、
前記プリント基板の特定のタイプ上にインストールされる複数のメモリ内に前記キャリブレートされた複数の値を記憶する段階と
をさらに備える請求項４９に記載の方法。
【請求項５２】
１つ以上のデバイスに関する構成情報に基づいて、複数のディジタル値がメモリから取り出され、前記複数のディジタル値をコントローラの複数のレジスタにプログラムする段階を備え、
前記複数のレジスタが、前記コントローラの複数の出力バッファの複数の入力に、複数の第一プログラム可能遅延セルにより、直接導入される複数の遅延時間、及び前記コントローラの複数の入力バッファの複数の出力に、複数の第二プログラム可能遅延セルにより、直接導入される複数の遅延時間の１つ以上に影響することで、前記コントローラ及び前記複数のデバイス間の複数の信号のタイミングに影響する方法。
【請求項５３】
前記コントローラ及び前記複数のデバイスを複数の動作条件に至らせる段階と、
前記複数の信号が正しく受信されることの１つ以上のテストを実行する段階と
をさらに備える請求項５２に記載の方法。
【請求項５４】
前記１つ以上のテストが、前記複数のデバイスの複数の入力チャネルの複数のセットアップタイム制約及び複数のホールドタイム制約の複数の違反をテストする請求項５３に記載の方法。
【請求項５５】
前記１つ以上のテストが、前記コントローラの複数の入力チャネルの複数のセットアップタイム制約及び複数のホールドタイム制約の複数の違反をテストする請求項５３に記載の方法。
【請求項５６】
１つ以上のテストを実行する段階が、
前記コントローラ及び前記複数のデバイス上の１つ以上のストレステストを実行する段階と、
前記１つ以上のストレステストが失敗した場合、前記コントローラ及び前記複数のデバイス上の１つ以上のリラックステストを実行する段階と
を少なくとも有する請求項５３に記載の方法。
【請求項５７】
前記１つ以上のテストを実行する段階が、
複数の信号上の特定のパターンを、前記コントローラから前記複数のデバイスへドライブする段階と、
前記特定のパターンの複数の部分が、前記複数のデバイスにより、正確に受信されたかをチェックする段階と
を少なくとも有する請求項５３に記載の方法。
【請求項５８】
コントローラ及び１つ以上のデバイス間の複数の信号のタイミングをテストすることで、前記コントローラの複数のレジスタのための、キャリブレートされた複数のディジタルウインドウセンタリング値を決定する段階を備え、
前記複数のレジスタが、前記コントローラの複数の出力バッファの複数の入力に、複数の第一プログラム可能遅延セルにより、直接導入される複数の遅延時間、及び前記コントローラの複数の入力バッファの複数の出力に、複数の第二プログラム可能遅延セルにより、直接導入される複数の遅延時間の１つ以上に影響することで、前記タイミングに影響する方法。
【請求項５９】
前記複数のキャリブレートされたディジタルウインドウセンタリング値を決定する段階が、反復の原則で実行される請求項５８に記載の方法。
【請求項６０】
前記複数の信号のタイミングをテストする段階が、少なくとも、逐次的な複数のテスト値のセット内の各テスト値に対して、
前記複数のレジスタの特定の１つに、前記テスト値をセットする段階と、
複数の信号上の特定のパターンを、前記コントローラから前記複数のデバイスへ、ドライブする段階と、
前記複数のデバイスにより、前記特定のパターンの複数の部分が正確に受信されたかをチェックする段階と
を有し、
前記セットの複数のテスト値の中央値に最も近い、前記セットのテスト値が、前記特定のレジスタのためのキャリブレートされたディジタルウインドウセンタリング値になるように決められ、このテスト値により、前記複数の部分は、正確に受信される請求項５８に記載の方法。
【請求項６１】
記憶された複数の命令を有する記憶媒体を備える製品であって、
コンピューティングプラットフォームによって実行された場合に、前記コンピューティングプラットフォームに、
コントローラ及び１つ以上のデバイスの複数の入力チャネルの複数のセットアップタイム制約及び複数のホールドタイム制約の複数の違反のために、複数の信号上の特定の複数のパターンを、前記コントローラから前記１つ以上のデバイスへドライブすること、及び前記特定のパターンの複数の部分が、前記１つ以上のデバイスにより、正確に受信されたかをチェックすることにより、前記コントローラ及び１つ以上のデバイス間の複数の信号のタイミングをテストする手順を実行させる製品。
【請求項６２】
逐次的な複数のテスト値のセット内のテスト値にセットされた、前記コントローラのレジスタをテストする前記手順を繰り返す手順と、
前記複数の部分が正確に受信されるための前記セットの複数のテスト値の中央値に最も近い、前記セットの前記テスト値で、前記レジスタをプログラムする手順と
をさらに実行させる請求項６１に記載の製品。
【請求項６３】
前記レジスタが、前記コントローラのプログラム可能遅延セルにより、前記コントローラの出力信号上に導入される遅延時間を制御する請求項６２に記載の製品。
【請求項６４】
前記レジスタが、前記コントローラのプログラム可能遅延セルにより、前記コントローラの入力信号上に導入される遅延時間を制御する請求項６２に記載の製品。
【発明の詳細な説明】
【背景技術】
【０００１】
複数のディジタルシステムで使用される複数の周波数が増加するにつれ、複数のタイミング制約は、より困難に又は満たせなくさえなる。
【０００２】
例えば、複数の共通クロックバスプロトコルは、複数のメモリデバイス及びメモリコントローラ間でデータ、アドレス及び複数のコントロール信号を送信するために使用される。これら複数の信号は、複数のメモリデバイス及びメモリコントローラの両方に共通なクロックに対して、サンプルされる。共通クロックの周期は、バス上のセットアップ及びホールドタイムの複数の要求と同じ次数で減少するので、信号のタイミングに関与するプリント基板及び異なる複数の半導体の複数の製造許容誤差は、同様の構成を有する全てのシステムが複数のタイミング要求を満たすことを保証するために、十分にきつくできない。
【０００３】
加えて、複数のパーソナルコンピュータ（ＰＣ）などの複数の"オープン"システムでは、異なる複数の出所の複数のプリント基板及び異なる複数の型及び複数の量の複数のメモリデバイスを備える複数のシステムなどの多数の異なるシステム構成にすることができる。このような各構成は、異なる複数のタイミング特性を備え、これら複数の総合的な特性は、メモリコントローラの複数のタイミング許容誤差を越えたところまで広がり得る。
【０００４】
したがって、特定の複数の構成を備える複数のシステムは、動作に失敗し、対して他の複数のシステムは、限界に近い動作を有し、ある複数の環境条件下では動作に失敗し得る。
【図面の簡単な説明】
【０００５】
本発明の複数の実施例は、制限ではなく例として、添付複数の図面の複数の数字において、例証される。
【０００６】
【図１】デバイス及びコントローラを備えるプリント基板のブロック図である。
【０００７】
【図２】複数のタイミング図の例であり、本発明の幾つかの実施例を理解するのに役立つ。
【図３】複数のタイミング図の例であり、本発明の幾つかの実施例を理解するのに役立つ。
【０００８】
【図４】複数のタイミングパラメータをセッティング及び調整するための方法のフローチャートである。
【０００９】
【図５】複数のルックアップテーブルを生成する方法の一例のフローチャートである。
【００１０】
【図６】ドライビングインピーダンスコントロールレジスタ及び出力遅延コントロールレジスタにプログラムする複数のディジタル値を決定するための方法の一例のフローチャートである。
【００１１】
【図７】出力遅延コントロールレジスタ及び入力遅延コントロールレジスタにプログラムされる複数のディジタル値のためのキャリブレーションシーケンスの一例のフローチャートである。
【００１２】
【図８】出力遅延コントロールレジスタ及び入力遅延コントロールレジスタにプログラムされる複数のディジタル値のためのキャリブレーションアルゴリズムの一例のフローチャートである。
【００１３】
【図９】メモリコントローラを有するプリント基板を備える装置のブロック図である。
【００１４】
【図１０Ａ】図９のメモリコントローラの複数の遅延コントロールレジスタにプログラムされる複数のディジタル値のためのキャリブレーションシーケンスの一例の複数のフローチャートである。
【図１０Ｂ】図９のメモリコントローラの複数の遅延コントロールレジスタにプログラムされる複数のディジタル値のためのキャリブレーションシーケンスの一例の複数のフローチャートである。
【図１０Ｃ】図９のメモリコントローラの複数の遅延コントロールレジスタにプログラムされる複数のディジタル値のためのキャリブレーションシーケンスの一例の複数のフローチャートである。
【図１０Ｄ】図９のメモリコントローラの複数の遅延コントロールレジスタにプログラムされる複数のディジタル値のためのキャリブレーションシーケンスの一例の複数のフローチャートである。
【００１５】
【図１１】本発明の幾つかの実施例に対応するプログラム可能遅延セルの一例の簡素化された概略図である。
【００１６】
図面の簡素さ及び明瞭さのために、複数の図面に示されている複数の要素は、比例するように必ず描かれるわけではないことが理解されるだろう。例えば、幾つかの要素の複数のサイズは、明瞭さのために、他の複数の要素に対して誇張されてもよい。さらに、複数の参照数字は、対応するか類似の複数の要素を示すために、複数の図面の中で適切であると考えられるところで繰り返されてよい。
【発明を実施するための最良の形態】
【００１７】
下記明細書において、本発明の複数の実施例の完全な理解を提供するために、多数の特定の詳細が説明される。しかしながら、当業者であれば、本発明の複数の実施例は、これら特定の複数の詳細がなくとも実施できることを理解するだろう。他の複数の例では、よく知られた複数の方法、複数の手順、複数のコンポーネント及び複数の回路は、本発明をぼやかさないように詳細に述べられていない。
【００１８】
以下に続く明細書の幾つかの部分は、コンピュータメモリ内の複数のデータビット又は複数のバイナリディジタル信号上の複数の動作の複数のアルゴリズム及び複数のシンボル表示の観点から示される。これら複数のアルゴリズム記述及び表現は、データ処理の当業者によって、他の当業者に仕事の内容を伝えるために使われる複数の技術でよい。
【００１９】
本発明のいくつかの実施例は、コントローラに電気的に結合された１つ以上のデバイスの複数の属性に基づいて、及び電気的に１つ以上のデバイスをコントローラに接続している媒体の複数の属性に基づいて、コントローラの複数の物理コンポーネントの複数のパラメータをセッティング及び／又は動的に調整することに向けられる。複数のパラメータがセット及び／又は調整される複数の物理コンポーネントは、コントローラにより送られる複数の電気信号が１つ以上のデバイスに正確に受信されることを可能とする複数のコンポーネント、及び１つ以上のデバイスにより送られる複数の電気信号がコントローラに正確に受信されることを可能とする複数のコンポーネントを含む。
【００２０】
図１に示されるように、プリント基板（ＰＣＢ）２は、本発明の幾つかの実施例に沿って、コントローラ４、１つ以上のデバイス６、コンダクタ８及びコンダクタ１０を備える。ＰＣＢ２は、任意にグラフィクスチップ５を備えてよい。コントローラ４の複数の例の非包括的なリストは、セントラルプロセッシングユニット（ＣＰＵ）及びメモリコントローラを有する。例えば、コントローラ４は、複数の読み出し及び書き込みコマンドを実行する複数のコントロール信号をドライブする能力を持ち、複数のコンダクタ８及び９は、当該複数のコントロール信号のためのバスの一部でよい。デバイス６の複数の例の非包括的なリストは、メモリデバイス及びコプロセッサを有する。下記の説明では、１つのデバイス６について述べるが、本発明の範囲はこの点において制限されない。
【００２１】
デバイス６がＰＣＢ２上に組まれる場合、コンダクタ８及びコンダクタ１０は、プリント基板上の複数のトレースを有する。デバイス６が複数のリムーバブルモジュール上に組まれる場合、コンダクタ８及びコンダクタ１０は、例えば、プリント基板上の複数のトレース、リムーバブルモジュール上の複数のトレース及びこれら複数のトレースを結合する導電性のコネクタを有する。
【００２２】
本発明の複数の実施例の下記の説明は、複数のクロックの複数の立ち上がりエッジを参照する。しかしながら、本発明の他の複数の実施例において、代わりに複数のクロックの複数の立ち下がりエッジを参照することができる。出力信号のパラメータ。
【００２３】
下記の説明では、コントローラの複数の物理コンポーネント並びにコントローラにより送られる複数の電気信号がコントローラに電気的に結合された１つ以上のデバイスにより正確に受信されることを可能にするために、これら複数の物理コンポーネントの複数のパラメータをセット及び／又は動的に調整する方法を述べる。これら複数のパラメータのセッティング及び／又は調整は、コントローラに電気的に結合される１つ以上のデバイスの複数の属性、及び１つ以上のデバイスをコントローラに電気的に結合する媒体の複数の属性に基づく。
【００２４】
集積回路又は集積回路の一部であるコントローラ４は、任意の出力遅延コントロールレジスタ１４及びドライビングインピーダンスコントロールレジスタ１６により制御される出力チャネル１２を有する。出力チャネル１２は、ディジタルサブシステム（図示されていない）から、クロック２０の各周期の間、安定した複数の論理レベルがただ一度だけ変化する信号１８を受信し、コンダクタ８上に、信号１８の複数の論理レベル中の複数の変化を反映する出力信号を生成する。
【００２５】
デバイス６は、クロック２４及びコンダクタ８上の信号を複数の入力として受信する入力チャネル２２を有する。入力チャネル２２は、コンダクタ８上の信号の複数の論理レベルをクロック２４の複数の立ち上がりエッジでサンプリングし、サンプリングされた複数のロジックレベルを信号２５上に出力する。出力チャネル１２、出力遅延コントロールレジスタ１４及びドライビングインピーダンスコントロールレジスタ１６の１つの目的は、信号１８の複数の論理レベルの複数の変化が、正確に信号２５の複数の論理レベルの複数の変化に反映されることを保証することである。効果的に、これは、信号１８を信号２５に運ぶ。
【００２６】
コントローラ４及びデバイス６により形成されるシステムは、コモンクロックシステムである。
【００２７】
図２のタイミング図の一例では、クロック２０は、ＴＰＥＲＩＯＤナノ秒の周期で発振する（例えば、複数の立ち上がりエッジ１０２、１０４及び１０６などの複数の立ち上がりエッジ間で測定される）。この例では、信号１８の論理レベルは、クロック２０の各立ち上がりエッジのＴＣＯ１ナノ秒後に変化する。図２のタイミング図の一例では、遅延時間ＴＣＯ１は一定であるが、本発明の範囲はこの点に制限されない。
【００２８】
出力チャネル１２は、任意のプログラム可能遅延セル２６及びプログラム可能出力バッファ２８を含む。
【００２９】
プログラム可能遅延セル２６は、信号１８の論理レベルを連続的にサンプルし、信号１８上でサンプルされた複数のロジックレベルと実質的に等しい複数の論理レベルを、連続的に信号３０上へ出力する。信号１８の論理レベルの変化が生じた場合、信号３０の論理レベルは、遅延時間ＴＰＤ１の後、それに応じて変化する。遅延時間ＴＰＤ１は、ある時間範囲内で、プログラム可能であり、以下で詳細に説明されるように、出力遅延コントロールレジスタ１４に記憶されるディジタル値に従ってセットされる。
【００３０】
プログラム可能出力バッファ２８は、信号３０を入力として受信し、コンダクタ８上に信号３０の複数の論理レベルの複数の変化を反映する出力信号を生成する。複数のロジックレベルは、コンダクタ８上で、複数の電圧レベルで表される。例えば、高電位は１つ論理レベルを表し、低電位はもう１つの論理レベルを表す。したがって、プログラム可能出力バッファ２８は、信号３０の複数のロジックレベルの複数の変化を反映させるために、複数の電位レベルをコンダクタ８上に生成する。
【００３１】
本発明の範囲はこの点において制限されないが、プログラム可能出力バッファ２８は、コンダクタ８上の低電位を、プログラム可能出力バッファ２８内で、低電圧源（例えば、グランド）をコンダクタ８にシンクドライビングインピーダンスを介して結合することで生成する。同様に、プログラム可能出力バッファ２８は、プログラム可能出力バッファ２８内で、高電圧源をコンダクタ８にソースドライビングインピーダンスを介して接続することで、コンダクタ８上に高電位を生成する。
【００３２】
ドライビングインピーダンスコントロールレジスタ１６は、プログラム可能出力バッファ２８に結合され、ドライビングインピーダンスコントロールレジスタ１６に記憶される複数のディジタル値がプログラム可能出力バッファ２８のソースドライビングインピーダンス及びシンクドライビングインピーダンスを制御する。代わりに、ドライビングインピーダンスコントロールレジスタ１６は、２つのレジスタに置き換えることができ、１つは、プログラム可能出力バッファ２８のソースドライビングインピーダンスを制御するディジタル値を記憶し、もう１つは、プログラム可能出力バッファ２８のシンクドライビングインピーダンスを制御するディジタル値を記憶する。
【００３３】
低から高への遷移時間ＴＰＬＨ１（高から低への遷移時間ＴＰＨＬ１）−この間コンダクタ８上の信号の電圧は適切にどの論理レベルも表さない−は、プログラム可能出力バッファ２８のソースドライビングインピーダンス（シンクドライビングインピーダンス）に影響されるので、ドライビングインピーダンスコントロールレジスタ１６は、コンダクタ８上の信号の低から高への遷移時間ＴＰＬＨ１及び高から低への遷移時間ＴＰＨＬ１を制御する。さらに、低から高への遷移時間ＴＰＬＨ１及び高から低への遷移時間ＴＰＨＬ１は、コンダクタ８の物理レイアウトトポロジ、コンダクタ８上の総容量性負荷、コンダクタ８のインピーダンス、及び入力チャネル２２の入力インピーダンスに影響される。
【００３４】
クロック２４のタイミング図の一例は、図２にしめされるが、本発明はこの例に制限されない。この例では、クロック２４は、クロック２０と同じ周波数で振動し、ＴＰＥＲＩＯＤナノ秒（複数の立ち上がりエッジ間で測定）の周期を有する。クロック２４の複数の立ち上がりエッジは、クロック２０の複数の立ち上がりエッジから、ＴＳＫＷナノ秒の一定のタイムシフトを有する。
【００３５】
出力チャネル１２が、クロック２０の立ち上がりエッジの後、コンダクタ８上に論理レベルを生成する場合、入力チャネル２２は、その論理レベルを、クロック２０の次の立ち上がりエッジからＴＳＫＷナノ秒シフトされたクロック２４の立ち上がりエッジでサンプルすべきである。
【００３６】
例えば、出力チャネル１２が、高論理レベル（低論理レベル）をコンダクタ８上にクロック２０の立ち上がりエッジ１０２（１０４）の後に生成する場合、入力チャネル２２は、クロック２４の立ち上がりエッジ１１４（１１６）上でその論理レベルをサンプルすべきである。
【００３７】
入力チャネル２２がコンダクタ８上の信号の複数の論理レベルを正しくサンプルするように、コンダクタ８上の信号の電圧は、少なくともクロック２４の立ち上がりエッジ前の"セットアップタイム"ＴＳＵ１の間、及びクロック２４の後の"ホールドタイム"ＴＨ１の間、対応する複数の電圧で安定でなければならない。
【００３８】
言い換えれば、入力チャネル２２がコンダクタ８上の信号の高（低）論理レベルを正確にサンプルするために、下記複数の条件が実行されなければならない。
（ａ）コンダクタ８上の信号の高（低）電圧は、少なくともセットアップタイム及びホールドタイムの合計時間に等しい時間において安定でなけらばならない。
（ｂ）コンダクタ８上の信号の高（低）電圧は、クロック２４の立ち上がりエッジの後の少なくともＴＨ１は安定でなければならない。
（ｃ）コンダクタ８上の信号の高（低）電圧は、クロック２４の立ち上がりエッジの前の少なくともＴＳＵ１は安定でなければならない。
条件（ａ）は、下記の複数の高電圧及び複数の低電圧のための複数の関係で表される。
１．ＴＰＥＲＩＯＤ−ＴＰＬＨ１≧ＴＳＵ１＋ＴＨ１
１′．ＴＰＥＲＩＯＤ−ＴＰＨＬ１≧ＴＳＵ１＋ＴＨ１
条件（ｂ）は、下記関係により表される（高及び低電圧で同じ関係）。
２．ＴＣＯ１＋ＴＰＤ１≧ＴＨ１＋ＴＳＫＷ
条件（ｃ）は、下記の複数の高電圧及び複数の低電圧のための複数の関係で表される。
３．ＴＰＥＲＩＯＤ−ＴＣＯ１−ＴＰＤ１−ＴＰＬＨ１≧ＴＳＵ１−ＴＳＫＷ
３′．ＴＰＥＲＩＯＤ−ＴＣＯ１−ＴＰＤ１−ＴＰＨＬ１≧ＴＳＵ１−ＴＳＫＷ
【００３９】
条件（ｂ）及び（ｃ）は、下記複数の関係で表されるように、プログラム可能遅延セル２６によって導入される遅延時間ＴＰＤ１上の上限及び下限として表されることができる。
４．ＴＰＥＲＩＯＤ−ＴＰＬＨ１−ＴＣＯ１−ＴＳＵ１＋ＴＳＫＷ≧ＴＰＤ１≧ＴＨ１＋ＴＳＫＷ−ＴＣＯ１
５．ＴＰＥＲＩＯＤ−ＴＰＨＬ１−ＴＣＯ１−ＴＳＵ１＋ＴＳＫＷ≧ＴＰＤ１≧ＴＨ１＋ＴＳＫＷ−ＴＣＯ１
【００４０】
関係１は、必要であるが、高電圧をサンプリングする場合に両関係２及び３が実行されるための十分条件ではない。同様に、関係１′は必要であるが、低電圧をサンプリングする場合に両関係２及び３′が実行されるための十分条件ではない。したがって、ドライビングインピーダンスコントロールレジスタ１６にプログラムされた複数のディジタル値が、複数の関係１及び１′が実行されるように、一旦調整されると、出力遅延コントロールレジスタ１４にプログラムされた複数のディジタル値は、複数の関係４及び５が実行されるように調整される。
【００４１】
以下に説明されるように、複数の関係１、１′、４及び５のコントロール可能な複数のパラメータ（複数の関係中でボールドタイプで強調）は、ドライビングインピーダンスコントロールレジスタ１６及び出力遅延コントロールレジスタ１４の複数のディジタル値を介して、複数の条件（ａ）、（ｂ）、及び（ｃ）が実行されるように複数の関係内の全ての他の複数のパラメータの複数の変化を補うために調整される。
関係１及び１′
【００４２】
ＴＰＥＲＩＯＤは固定値であり、セットアップタイムＴＳＵ１及びホールドタイムＴＨ１の正確な値は、例えば、デバイス６の複数の製造許容誤差に影響され、また、例えば、周囲の温度の複数の変化により変化する。プログラム可能出力バッファ２８のソース（シンク）ドライビングインピーダンスを調整することによって、低から高への遷移時間ＴＰＬＨ１（高から低への遷移時間ＴＰＨＬ１）は、関係１（１′）が満たされるように調整される。すなわち、コンダクタ８上の信号の高（低）電圧は、少なくともセットアップタイムＴＳＵ１及びホールドタイムＴＨ１の合計時間に等しい時間において安定である。
【００４３】
低から高への遷移時間ＴＰＬＨ１（高から低への遷移時間ＴＰＨＬ１）は、プログラム可能出力バッファ２８のソース（シンク）ドライビングインピーダンス単体によっては決められないことは理解されるべきである。もっと正確に言えば、低から高への遷移時間ＴＰＬＨ１及び高から低への遷移時間ＴＰＨＬ１の複数の正確な値は、前に説明されたように、コンダクタ８上の総容量性負荷、コンダクタ８の物理レイアウトトポロジ、コンダクタ８のインピーダンス、及び入力チャネル２２の入力インピーダンスによって影響される。その上、コンダクタ８上の総容量性負荷は、例えば、コンダクタ８に結合されたデバイス６の数及びタイプ、並びにデバイス６の複数の製造許容誤差に従って変化する。コンダクタ８の物理レイアウトトポロジは、例えば、コンダクタ８に結合されるデバイス６の数、及びＰＣＢ２のデザインに従って変化する。コンダクタ８のインピーダンスは、例えば、ＰＣＢ２のデザイン及びＰＣＢ２の複数の製造許容誤差に従って変化する。入力チャネル２２の入力インピーダンスは、例えば、デバイス６のタイプ及び複数の製造許容誤差に従って変化する。
【００４４】
複数の関係１及び１′中の他の複数のパラメータに影響する多数の異なる要因があるため、低から高への遷移時間ＴＰＬＨ１及び高から低への遷移時間ＴＰＨＬ１を制御する能力は、複数の関係１及び１′が複数の状況で実行されることを可能とする。
関係４及び５
【００４５】
ＴＰＥＲＩＯＤは、固定値であり、低から高への遷移時間ＴＰＨＬ１及び高から低への遷移時間ＴＰＨＬ１は、複数の関係４及び５を満たすことを試みる前に調整される。しかしながら、複数の関係１及び１′に関して上で述べられたように、セットアップタイムＴＳＵ１及びホールドタイムＴＨ１は、例えば、デバイス６の複数の製造許容誤差に影響され、周囲温度の複数の変化によって変化する。同様に、遅延時間ＴＣＯ１の正確な値は、例えば、コントローラ４の複数の製造許容誤差に影響され、周囲温度の複数の変化によって変化する。さらに、クロック２０及びクロック２４の複数の立ち上がりエッジ間のタイムシフトＴＳＫＷの正確な値は、例えば、クロック２０及びクロック２４を生成するのに用いられる複数の方法によって影響される。例えば、クロック２４は、位相ロックループ（ＰＬＬ）により生成される。当該ＰＬＬはクロック２０にロックされ、一定及び変化する位相エラーを有する。他の一例では、タイムシフトＴＳＫＷは、クロック２０及びクロック２４を生成するために用いられるクロック分配ツリー（図示されていない）内の複数の信号間のスキュー及び当該クロック分配ツリーの複数の信号の立ち上がり時間の誤差の結果生じる。
【００４６】
したがって、入力チャネル２２がコンダクタ８上の信号の複数の論理レベルを正確にサンプルするために、複数の関係１及び１′が実行されるようにプログラム可能出力バッファ２８のシンクドライビングインピーダンス及びソースドライビングインピーダンスを調整する後に、両関係４及び５が実行されるように出力コントロールレジスタ１４内で適切なディジタル値を設定することで、プログラム可能遅延セル２６の遅延ＴＰＤ１は、調整される。
入力信号のパラメータ
【００４７】
下記の説明では、コントローラに電気的に結合された１つ以上のデバイスによって送られる複数の電気信号がコントローラによって正確に受信されるために、コントローラの複数の物理コンポーネント及びこれら複数の物理コンポーネントの複数のパラメータを、セット及び／又は動的に調整する方法を述べる。これら複数のパラメータのセッティング及び／又は調整は、コントローラに電気的に結合した１つ以上のデバイスの複数の属性、及びコントローラに１つ以上のデバイスを電気的に結合させる媒体の複数の属性に基づく。
【００４８】
デバイス６は、出力チャネル３２を有する。出力チャネル３２は、信号３４を受信し、その安定した複数の論理レベルは、クロック２４の各周期の間にたった１度変化する。出力チャネル３２は、コンダクタ１０上に出力信号を生成し、これは、信号３４の複数の論理レベルの複数の変化を反映する。複数の論理レベルは、コンダクタ１０上で複数の電圧レベルで表される。
【００４９】
コントローラ４は、入力遅延コントロールレジスタ１３により制御される入力チャネル３６を有する。入力チャネル３６は、クロック２０及びコンダクタ１０の信号を複数の入力として受信し、信号３８を出力する。入力チャネル３６は、クロック２０の複数の立ち上がりエッジでコンダクタ１０上の信号の複数の論理レベルをサンプルし、サンプルされた複数の論理レベルを信号３８上に出力する。入力チャネル３６及び入力遅延コントロールレジスタ１３の１つの目的は、信号３４の複数の論理レベルの複数の変化が、正確に信号３８の複数の論理レベルの変化を反映することを保証することである。効果的に、これは信号３４を信号３８に運ぶ。
【００５０】
図３のタイミング図の一例では、クロック２４は、周期ＴＰＥＲＩＯＤナノ秒で発振する（複数の立ち上がりエッジ間で測定）。この例では、コンダクタ１０上の信号の論理レベルは、クロック２４の各立ち上がりエッジのＴＣＯ２ナノ秒後に変化し始める。図３のタイミング図の一例では、遅延時間ＴＣＯ２は一定であるが、本発明の範囲はこの点に制限されない。
【００５１】
加えて、コンダクタ１０上の信号の低電位から高電位への遷移は、コンダクタ１０上の信号の電圧が適切にどの論理レベルも表さない低から高への遷移時間ＴＰＬＨ２によって特徴づけられる。同様に、コンダクタ１０上の信号の高電位から低電位への遷移は、コンダクタ８上の信号の電圧が適切にどの論理レベルも表さない高から低への遷移時間ＴＰＨＬ２によって特徴づけられる。
【００５２】
低から高への遷移時間ＴＰＬＨ２は、出力チャネル３２のソースドライビングインピーダンス、コンダクタ１０上の容量性負荷、コンダクタ１０の物理レイアウトトポロジ、コンダクタ１０のインピーダンス、及び入力チャネル３６の入力インピーダンスに影響される。
【００５３】
同様に、高から低への遷移時間ＴＰＨＬ２は、出力チャネル３２のシンクドライビングインピーダンス、コンダクタ１０上の総容量性負荷、コンダクタ１０の物理レイアウトトポロジ、出力チャネル３２のシンクドライビングインピーダンス、コンダクタ１０のインピーダンス、及び入力チャネル３６の入力インピーダンスに影響される。
【００５４】
図３のタイミング図の一例では、コンダクタ１０上の電圧は、クロック２４の立ち上がりエッジ２０２の（ＴＣＯ２＋ＴＰＬＨ２）ナノ秒後に安定した高電位に達し、クロック２４の立ち上がりエッジ２０４の（ＴＣＯ２＋ＴＰＨＬ２）ナノ秒後に安定した低電地に達し、クロック２４の立ち上がりエッジ２０６の（ＴＣＯ２＋ＴＰＬＨ２）ナノ秒後に安定した高電位に達する。
【００５５】
入力チャネル３６は、入力バッファ４０、プログラム可能遅延セル４２及び入力レジスタ４４を含む。入力レジスタ４４は、ディジタルサブシステム（図示されていない）のフロントエンドの一部となる。
【００５６】
幾つかの実施例では、入力バッファ４０は、コンダクタ１０上の信号を入力として受信し、コンダクタ１０上の信号の複数の論理レベルの複数の変化を反映する出力信号４６を生成する。コンダクタ１０上の信号の電圧が特定の論理レベルを表す場合、入力バッファ４０は、信号４６上に同じ論理レベルを出力する。しかしながら、コンダクタ１０上の信号の電圧が、例えば、複数の周期ＴＰＬＨ２及びＴＰＨＬ２の間など、どの論理レベルも適切に表さない場合、信号４６もまた、図３でハッチされた四角で図解されるように、どの論理レベルも適切に表さない。（他の複数の実施例では、入力バッファ４０は、異なる動作を有してよい。例えば、入力バッファ４０は、シュミットトリガ入力バッファであり得り、これにより信号４６は常に適切な論理レベルを表す。ただし、論理レベルが変化する時刻は、立ち上がり時間又は立ち下がり時間に応じて変化する）。
【００５７】
プログラム可能遅延セル４２は、信号４６を入力として受信し、信号４８を出力する。プログラム可能遅延セル４２は、信号４６の論理レベルをサンプルし、連続的に信号４６上のサンプルされた複数の論理レベルに実質的に等しい信号４８上の複数の論理レベルを連続的に出力する。信号４６の論理レベル中に変化が生じた場合、信号４８の論理レベルは、それに応じて遅延時間ＴＰＤ２後に変化する。遅延時間ＴＰＤ２は、プログラム可能であり、入力遅延コントロールレジスタ１３に記憶されるディジタル値に従ってセットされる。
【００５８】
入力レジスタ４４は、複数の立ち上がりエッジで信号４８の複数の論理レベルをサンプルし、信号３８を出力する。論理レベル入力レジスタ４４は、クロック２０の各立ち上がりエッジの後で信号３８上に、クロック２０の立ち上がりエッジで信号４８上でサンプルされた論理レベルと実質的に等しい出力をする。
【００５９】
クロック２４の立ち上がりエッジの後、出力チャネル３２がコンダクタ１０上に論理レベルを生成する場合、入力レジスタ４４は、クロック２４の次の立ち上がりエッジからＴＳＫＷナノ秒シフトしたクロック２０の立ち上がりエッジで信号４８上の論理レベルをサンプルすべきである。
【００６０】
例えば、出力チャネル３２がクロック２４の立ち上がりエッジ２０２の後、コンダクタ１０上に高論理レベルを生成する場合、入力レジスタ４４は、信号４８上のその論理レベルを、クロック２０の立ち上がりエッジ２１４でサンプルすべきである。同様に、出力チャネル３２がクロック２４の立ち上がりエッジ２０４の後、コンダクタ１０上に低論理を生成する場合、入力レジスタ４４は、クロック２０の立ち上がりエッジ２１６上で信号４８上のその論理レベルをサンプルすべきである。
【００６１】
入力レジスタ４４が信号４８上の複数の論理レベルを正しくサンプルするために、信号４８の論理レベルは、少なくともクロック２０の立ち上がりエッジの前の"セットアップタイム"ＴＳＵ２間、及びクロック２０の立ち上がりエッジの後の"ホールドタイム"ＴＨ２の間、安定でなくてはならない。
【００６２】
言い換えれば、入力レジスタ４４が正しく信号４８の高（低）論理レベルをサンプルするには、以下の複数の条件が実行されなければならない。
（ｄ）信号４８の高（低）電圧は、少なくともセットアップタイムとホールドタイムの合計時間に等しい間、安定でなくてはならない。
（ｅ）信号４８上の高（低）電圧は、クロック２０の立ち上がりエッジの後、少なくともＴＨ２の間は安定でなくてなならない。
（ｆ）信号４８上の高（低）電圧は、クロック２０の立ち上がりエッジの前に、少なくともＴＳＵ２の間は安定でなくてはならない。
条件（ｄ）は、下記複数の関係で、複数の高電圧及び複数の低電圧に対して表される。
６．ＴＰＥＲＩＯＤ−ＴＰＬＨ２≧ＴＳＵ２＋ＴＨ２
６′．ＴＰＥＲＩＯＤ−ＴＰＨＬ２≧ＴＳＵ２＋ＴＨ２
条件（ｅ）は、下記の関係で表される（高及び低電圧に対して同じ関係）。
７．ＴＣＯ２＋ＴＰＤ２＋ＴＳＫＷ≧ＴＨ
条件（ｆ）は、下記複数の関係で、複数の高電圧及び複数の低電圧に対して表される。
８．ＴＰＥＲＩＯＤ−ＴＣＯ２−ＴＰＤ２−ＴＰＬＨ２≧ＴＳＵ２＋ＴＳＫＷ
８′．ＴＰＥＲＩＯＤ−ＴＣＯ２−ＴＰＤ２−ＴＰＨＬ２≧ＴＳＵ２＋ＴＳＫＷ
【００６３】
条件（ｅ）及び（ｆ）は、下記複数の関係で表されるように、プログラム可能遅延セル４２によって導入される遅延時間ＴＰＤ２上の上限及び下限として表される。
９．ＴＰＥＲＩＯＤ−ＴＰＬＨ２−ＴＣＯ２−ＴＳＵ２−ＴＳＫＷ≧ＴＰＤ２≧ＴＨ２−ＴＳＫＷ−ＴＣＯ２
１０．ＴＰＥＲＩＯＤ−ＴＰＨＬ２−ＴＣＯ２−ＴＳＵ２−ＴＳＫＷ≧ＴＰＤ２≧ＴＨ２−ＴＳＫＷ−ＴＣＯ２
【００６４】
関係９及び１０の制御可能なパラメータ（複数の関係中にボールドタイプで強調）は、以下に述べられるように、複数の条件（ｅ）及び（ｆ）が実行されるように複数の関係内の全ての他の複数のパラメータの複数の変化を補正するために入力遅延コントロールレジスタ１３にプログラムされる複数のディジタル値を介して調整される。
関係６及び６′
【００６５】
本発明の複数の実施例によると、低から高への遷移時間ＴＰＬＨ２及び高から低への遷移時間ＴＰＨＬ２は、コントローラ４によって制御可能ではない。したがって、関係６及び６′は実行されると仮定される。
関係９及び１０
【００６６】
ＴＰＥＲＩＯＤは、固定値だが、セットアップタイムＴＳＵ２及びホールドタイムＴＨ２の複数の正確な値は、例えば、コントローラ４の複数の製造許容誤差に影響され、例えば、周囲温度の複数の変化で変わる。同様に、遅延時間ＴＣＯ２の正確な値は、例えば、デバイス６の複数の製造許容誤差に影響され、例えば、周囲温度の複数の変化で変わる。その上、クロック２０及びクロック２４の複数の立ち上がりエッジ間のタイムシフトＴＳＫＷの正確な値は、例えば、クロック２０及びクロック２４を生成するのに用いられる複数の方法に影響される。
【００６７】
低から高への遷移時間ＴＰＬＨ２及び高から低への遷移時間ＴＰＨＬ２の複数の正確な値は、コンダクタ１０上の総容量性負荷、コンダクタ１０の物理レイアウトトポロジ、コンダクタ１０のインピーダンス、及び入力チャネル３６の入力インピーダンスに影響される。さらに、コンダクタ１０上の総容量性負荷は、例えば、出力チャネル３２の出力キャパシタンスの変化、並びに各デバイス６のタイプ及び複数の製造許容誤差に従って変化する。加えて、コンダクタ１０上の総容量性負荷は、例えば、コンダクタ１０に電気的に結合された任意の（複数の）デバイス５０のタイプ、数及び複数の製造許容誤差に従って、変化する。コンダクタ１０の物理レイアウトトポロジは、例えば、ＰＣＢ２のデザインに応じて変化する。コンダクタ１０のインピーダンスは、例えば、ＰＣＢ２のデザイン及びＰＣＢ２の複数の製造許容誤差に応じて変化する。出力チャネル３２の出力インピーダンスは、例えば、デバイス６の複数の製造許容誤差に応じて変化する。
【００６８】
したがって、入力レジスタ４４が信号４８の複数の論理レベルを正しくサンプルするには、両関係９及び１０が実行されるように、入力遅延コントロールレジスタ１３内の適切なディジタル値をセッティングすることでプログラム可能遅延セル４２の遅延ＴＰＤ２は、調整される。
パラメータのセッティング及び調整
【００６９】
コントローラの複数の物理コンポーネントの複数のパラメータは、入力遅延コントロールレジスタ１３、出力遅延コントロールレジスタ１４及びドライビングインピーダンスコントロールレジスタ１６のディジタル値によって決定される。図４に示されるように、これら複数のレジスタのデフォルトの複数の値は、研究室での作業で決定され（−４００−）、プリント基板上にインストールされるメモリに記憶される（−４０１−）。プリント基板は、装置内にインストールされ（−４０２−）、装置の動作中、望ましければ、複数のレジスタに記憶されてる複数のディジタル値は、調整される（−４０３−）。下で詳しく説明されるように、図５は、−４００−のより詳細な記述であり、図６は、−４０３−のより詳細な記述である。図７は、図５及び図６の複数の方法に呼ばれる方法を説明し、図８は、図７の方法に呼ばれる方法を説明する。
【００７０】
ＰＣＢ２は、ＰＣＢ２についての構成情報６４を記憶するための１つ以上のメモリ６２を有する。構成情報６４は、例えば、コンダクタ８に電気的に結合された複数のデバイス６のタイプ及び数、及び任意で、コンダクタ８のトポロジ及びインピーダンスについての情報などの、ドライビングインピーダンスコントロールレジスタ１６及び出力遅延コントロールレジスタ１４にプログラムする複数のディジタル値に影響を与える情報を有する。構成情報６４は、例えば、コンダクタ１０上に複数の電気信号を送っているデバイス６のタイプ、コンダクタ１０に電気的に結合された任意の複数のデバイス５０のタイプ及び数、及び任意に、コンダクタ１０のトポロジ及びインピーダンスの情報などの、遅延コントロールレジスタ１３にプログラムされる複数のディジタル値に影響を与える情報を有する。
【００７１】
ＰＣＢ２は、ドライビングインピーダンスコントロールレジスタ１６及び出力遅延コントロールレジスタ１４、及び入力遅延コントロールレジスタ１３をプログラムするために用いられる情報を記憶するためのメモリ５２を有する。他の方法では、メモリ５２は、コントローラ４の一部でよい。このような情報は、例えば、ドライビングインピーダンスルックアップテーブル（ＬＵＴ）５４、出力ウインドウセンタリングルックアップテーブル５６、入力ウインドウセンタリングルックアップテーブル５８及びゴールデンパターンズテーブル６０ようなの複数のデータ構造に配置される。メモリ５２の全て又は幾つかのデータ構造内のデータはプログラム可能である。加えて、メモリ５２は、１つ以上のメモリデバイス及びこれら複数のデバイス間で分配される複数のデータ構造を有してよい。
【００７２】
メモリ５２は、図６、図７、及び図８の複数の方法を実装するための複数のソフトウェアモジュールをさらに有してよい。
【００７３】
ドライビングインピーダンスＬＵＴ５４は、１つ以上のエントリを含んでよい。コンダクタ８上の特定の総容量性負荷、コンダクタ８の特定のインピーダンス及び入力チャネル２２の特定の入力インピーダンスのためのエントリは、プログラム可能出力バッファ２８のソースドライビングインピーダンスを制御するディジタル値及び条件（ａ）が実行されることを可能にするプログラム可能出力バッファ２８のシンクドライビングインピーダンスを制御するための他のディジタル値を含む。
【００７４】
出力ウインドウセンタリングＬＵＴ５６は、１つ以上のエントリを含んでよい。コンダクタ８上の特定の総容量性負荷、特定のタイムシフトＴＳＫＷ、コンダクタ８の特定のインピーダンス及び入力チャネル２２の特定の入力インピーダンスのためのエントリは、複数の条件（ｂ）及び（ｃ）が実行されることを可能にする、プログラム可能遅延セル２６に導入される遅延時間ＴＰＤ１を制御するディジタル値を有する。
【００７５】
入力ウインドウセンタリングＬＵＴ５８は、１つ以上のエントリを有してよい。コンダクタ１０上の特定の総容量性負荷、特定のタイムシフトＴＳＫＷ、コンダクタ１０の特定のインピーダンス及び入力チャネル３６の特定の入力インピーダンスは、複数の条件（ｅ）及び（ｆ）が実行されることを可能にする、プログラム可能遅延セル４２により導入される遅延時間ＴＰＤ２を制御するディジタル値を有する。
【００７６】
ゴールデンパターンズテーブル６０は、入力チャネル２２がコンダクタ８上の信号の複数の論理レベルを正しくサンプルしたかをテストすることに用いられる複数のディジタル値の複数のパターンを含む。例えば、ゴールデンパターンズテーブル６０は、複数のセットアップタイム／ホールドタイム違反のリラックス／ストレステストのために設計された複数のパターンを含んでよい。使用される複数の正確なパターンは、例えばコンダクタ８の特定のトポロジ及びコンダクタ８上で複数のディジタル値が送信されるためのプロトコルなどの多数の要因に依存してよい。しかしながら、複数のホールド（セットアップ）タイム違反のための、複数のディジタル値のこれら複数のパターンがコンダクタ８上で生成され、遅延時間ＴＰＤ１がそれの範囲の最小（最大）である場合、入力チャネル２２は、ストレステスティングパターンよりもリラックステスティングパターンにおいて、コンダクタ８上の信号の複数の論理レベルを正しくサンプルする傾向にある。
【００７７】
同様に、ゴールデンパターンズテーブル６０は、コンダクタ１０上の信号の複数の論理レベルを入力レジスタ４４が正しくサンプルできるかどうかのテストに用いられる複数のディジタル値の複数のパターンを含んでよい。例えば、ゴールデンパターンズテーブル６０は、複数のホールド／セットアップタイム違反のリラックス／ストレステストのために設計された複数のパターンを含んでよい。使用される複数の正確なパターンは、例えば、コンダクタ１０の特定のトポロジ及びコンダクタ１０上で複数のディジタル値が送信されるためのプロトコルなどの多数の要因に依存してよい。しかしながら、複数のホールド（セットアップ）タイム違反のための、複数のディジタル値のこれら複数のパターンがコンダクタ１０上で生成され、遅延時間ＴＰＤ２がその範囲の最小（最大）に近い場合、入力レジスタ４４は、ストレステスティングパターンよりもリラックステスティングパターンにおいて、コンダクタ１０上の信号の複数の論理レベルを正しくサンプルする傾向にある。
【００７８】
その上、望ましければ、ゴールデンパターンズテーブル６０は、プログラム可能であり、その内容はアップデート又は置き換えられてよく、より効果的なテスティングを提供する複数のパターンが開発される。
【００７９】
図５は、本発明の幾つかの実施例に従って、ドライビングインピーダンスＬＵＴ５４、出力ウインドウセンタリングＬＵＴ５６及び入力ウインドウセンタリングＬＵＴ５８に記憶される複数のデフォルト値を決める方法の一例のフローチャートである。本発明の範囲は、この点において制限されないが、図５の方法は、ＰＣＢ２の特定のタイプ及びそれにインストールされたメモリ５２の組み合わせの大量生産に先立って、実行されてよい。
【００８０】
メモリ５２の"検証"バージョンは、例えば、ドライビングインピーダンスルックアップテーブル５４、出力ウインドウセンタリングルックアップテーブル５６及び入力ウインドウセンタリングルックアップテーブル５８の複数のエントリに記憶される複数の"検証"ディジタル値を決めるための複数のシミュレーション及びコントローラ４の複数の検証テストを用いて生成される（−３０２−）。
【００８１】
しかしながら、例えば、ＰＣＢ２、コントローラ４、複数のデバイス６、及び任意の複数のデバイス５０の複数の製造許容誤差のために、コンダクタ８上の信号に関連した１つ以上のタイミングパラメータ（ＴＣＯ１、ＴＰＤ１、ＴＰＨＬ１、ＴＰＬＨ１、ＴＳＵ１、ＴＨ１及びＴＳＫＷ）、並びにコンダクタ１０上の信号に関連した１つ以上のタイミングパラメータ（ＴＣＯ２、ＴＰＤ２、ＴＰＨＬ２、ＴＰＬＨ２、ＴＳＵ２、ＴＨ２及びＴＳＫＷ）は、メモリ５２の検証バージョンに記憶される複数の"検証"ディジタル値を決めるためのシミュレーション及び複数の検証テストの間用いられる複数の値からそれる複数の値を含んでよい。したがって、メモリ５２の検証バージョンに記憶される複数のディジタル値は、ある複数の動作条件下において、入力チャネル２２がコンダクタ８上の信号の複数の論理レベルを正しくサンプルし、及び入力レジスタ４４がコンダクタ１０上の信号の複数の論理レベルを正しくサンプルために適切でなくてもよい。
【００８２】
複数のテーブル５４、５６及び５８の複数のエントリのキャリブレーションが望まれない場合（−５０２−）、メモリ５２の検証バージョンは、メモリ５２の"製品"バージョンとして用いられる（−５０４−）。したがって、複数のレジスタの複数のデフォルト値は複数の検証値である。
【００８３】
キャリブレーションが望まれる場合（−５０２−）、メモリ５２の"検証"バージョンは、ＰＣＢ２上にインストールされてよい（−５０６−）。ＰＣＢ２は、電源を入れられ、構成情報６４が読まれる。検証メモリのドライビングインピーダンスルックアップテーブル５４、出力ウインドウセンタリングルックアップテーブル５６及び入力ウインドウセンタリングルックアップテーブル５８の適切な複数のエントリは、構成情報６４に基づいて選択され、選択された複数のエントリ内の複数のディジタル値は、ドライビングインピーダンスコントロールレジスタ１６、出力遅延コントロールレジスタ１４及び入力遅延コントロールレジスタ１３にそれぞれプログラムされる（−５０８−）。
【００８４】
コントローラ４及び複数のデバイス６は、複数の動作条件に至らせられ得る（−５１０−）。例えば、コントローラ４及び複数のデバイス６は、例えば、コンダクタ８上の信号及びコンダクタ１０上の信号がトグルすることで、例えば、５０℃などの動作温度に熱せられる。望まれる温度に達した場合、キャリブレーションシーケンスは、図７でより詳細に図解されるが、ＰＣＢ２の特定の複数のパラメータ及びＰＣＢ２上にインストールされた複数のデバイス６及びコントローラ４の特定の複数のパラメータにキャリブレートされる、ドライビングインピーダンスルックアップテーブル５４及び出力ウインドウセンタリングルックアップテーブル５６のための、複数のディジタル値を決定するために実行される（−５１２−）。加えて、同様のキャリブレーションは、ＰＣＢ２の特定の複数のパラメータ並びにＰＣＢ２上にインストールされた複数のデバイス６、任意の複数のデバイス５０及びコントローラ４の特定の複数のパラメータにキャリブレートされる、入力ウインドウセンタリングルックアップテーブル５８の複数のディジタル値を決定するために実行される（−５１２−）。
【００８５】
１つ以上のドライビングインピーダンスルックアップテーブル５４、出力ウインドウセンタリングルックアップテーブル５６及び入力ウインドウセンタリングルックアップテーブル５８の適切な複数のエントリは、複数のキャリブレーションシーケンスによって決められる複数の値にアップデートされ（−５１４−）、複数のレジスタの複数のデフォルト値としてアップデートされた複数の値を含むメモリ５２の製品バージョンが作られる（−５０４−）。
【００８６】
その上、ＰＣＢ２の異なる複数の構成が可能な場合（例えば、コントローラ４及び任意の複数のデバイス５０は、恒久的にＰＣＢ２に備え付けられ、その上ＰＣＢ２の異なる複数の構成は、異なる複数のタイプ及び数のデバイス６を備えてよい）、及び異なる複数の構成のそれぞれに適切な複数のエントリを記憶するメモリ５２の複数のテーブルを備えることが望ましい場合、キャリブレーションプロセス（−５０８−から−５１４−）は、ＰＣＢ２上にインストールされるメモリ５２の製品バージョンを作るのに先立って（−５０４−）、複数の構成のそれぞれのために繰り返される（−５１６−及び−５１８−）。
【００８７】
図６は、入力チャネル２２がコンダクタ８上の信号の複数のレベルを正しくサンプルするようにドライビングインピーダンスコントロールレジスタ１６及び出力遅延コントロールレジスタ１４にプログラムする複数のディジタル値を決定するための、並びに入力チャネル４４がコンダクタ１０上の信号の複数の論理レベルを正しくサンプルするように入力遅延コントロールレジスタ１３にプログラムする複数のディジタル値を決定するための本発明の幾つかの実施例に応じた方法の一例のフローチャートである。
【００８８】
本発明の範囲は、この点に制限されないが、図６の方法は、図１のＰＣＢ２を備える装置が起動する場合、常に実行されてよい。ＰＣＢ２は、すでにそれ自身の上に、コントローラ４、１つ以上のデバイス６、任意の複数のデバイス５０、メモリ６２及びメモリ５２の製品バージョンを備える。
【００８９】
ＰＣＢ２は、起動されて、構成情報６４は、読み込まれる。検証メモリのドライビングインピーダンスルックアップテーブル５４、出力ウインドウセンタリングルックアップテーブル５６及び入力ウインドウセンタリングルックアップテーブル５８の適切な複数のエントリは、構成情報６４に基づき選択され、選択された複数のエントリの複数のディジタル値は、ドライビングインピーダンスコントロールレジスタ１６、出力遅延コントロールレジスタ１４及び入力遅延コントロールレジスタ１３にそれぞれプログラムされてよい（−５０８−）。
【００９０】
コントローラ４及び複数のデバイス６は、複数の動作状態に至らせられ得る（−５１０−）。例えば、コントローラ４及び複数のデバイス６は、例えば、コンダクタ８上の信号及びコンダクタ１０上の信号をトグルすることにより、例えば５０℃の動作温度まで熱せられ得る。
【００９１】
望まれる温度に達した場合、入力チャネル２２がコンダクタ８上の信号の複数の論理レベルを正しくサンプルするか、及び入力レジスタ４４がコンダクタ１０上の信号の複数の論理レベルを正しくサンプルするかを、複数のホールドタイム及びセットアップタイム違反のストレステスティングのために設計されたゴールデンパターンズテーブル６０に記憶された複数のパターンを用いてテストする（−６１２−）。テストが失敗する場合（−６１４−）、本方法は、失敗をレポートする間に終了する（−６１６−）。任意に、終了する前に、テストは、複数のホールドタイム及びセットアップタイム違反のリラックステストのために設計されたゴールデンパターンズテーブル６０に記憶された複数のパターンを用いて、繰り返されてよい（−６１８−）。繰り返された複数のテストが失敗する場合（−６２０−）、本方法は、失敗をレポートする間に終了する（−６１６−）。
【００９２】
しかしながら、複数のストレステストが失敗しない場合、又は複数のリラックステストが失敗しない場合、本方法は、起動キャリブレーションに関する決定−６２２−を継続する。
【００９３】
ドライビングインピーダンスコントロールレジスタ１６及び出力ウインドウ遅延コントロールレジスタ１４の起動キャリブレーションが望ましい場合（−６２２−）、図７でより詳細に記されるキャリブレーションシーケンスが、ＰＣＢ２の現在の複数のパラメータ、並びにＰＣＢ２にインストールされる複数のデバイス６及びコントローラ４の現在の複数のパラメータにキャリブレートされる、ドライビングインピーダンスコントロールレジスタ１６及び出力ウインドウ遅延コントロールレジスタ１４の複数のディジタル値を決定するために、実行される（−５１２−）。
【００９４】
加えて、同様のキャリブレーションシーケンスは、ＰＣＢ２の現在の複数のパラメータ、並びにＰＣＢ２上にインストールされる複数のデバイス６、任意の複数のデバイス５０及びコントローラ４の現在の複数のパラメータにキャリブレートされる、入力遅延コントロールレジスタ１３のための複数のディジタル値を決定するために、実行される（−５１２−）。
【００９５】
キャリブレーションが失敗する場合（−６２４−）、本方法は、失敗をレポートする間に終了する（−６２６−）。しかしながら、キャリブレーションが失敗しない場合、及びキャリブレーションシーケンスが、ドライビングインピーダンスコントロールレジスタ１６、出力遅延コントロールレジスタ１４及び入力遅延コントロールレジスタ１３の少なくとも１つに対し、−５０８−でプログラムされたデフォルト値と異なる値を決定した場合、対応する（複数の）レジスタの複数の内容は、キャリブレーションシーケンスによって決められた（複数の）値に置き換えられる（−６３０−）。
【００９６】
コントローラ４及び複数のデバイス６の動作の間、周囲温度の複数の変化、コントローラ４及び複数のデバイス６への供給電圧の複数のドリフト並びに他の複数の要素は、複数のコンダクタ８及び１０の複数の信号の複数のタイミングパラメータの複数の変化に帰着する。このような複数の変化を補償するために、複数のレジスタ１３、１４及び１６の複数の内容のキャリブレーション（−５１２−）は、望まれれば、繰り返しの原則により繰り返される（−６３２−及び−６３４−）。このキャリブレーションの繰り返しは、起動キャリブレーションが望まれなくても（−６２２−）生じる。
【００９７】
たとえ、構成情報６４に基づき起動時にメモリ５２に記憶され、複数のレジスタにプログラムされる複数のデフォルト値が、複数のストレスゴールデンパターンまたは複数のリラックスゴールデンパターンを用いたアライブテストの成功に帰着しても、アライブテストは小さなマージンで成功したことに留意すべきである。キャリブレーションシーケンスを用いて複数の値をキャリブレートすること、及びキャリブレートされた複数の値で複数のレジスタをアップデートすることにより、複数のゴールデンパターンを用いたテストにパスすることに成功するためのマージンは、増大する。
【００９８】
図７は、本発明の幾つかの実施例に対応する、出力遅延コントロールレジスタ１４及び入力遅延コントロールレジスタ１３にプログラムされる複数のディジタル値のためのキャリブレーションシーケンスの一例のフローチャートである。図５及び図６の複数の方法に参照される複数のキャリブレーションシーケンス−５１２−は、図７のシーケンスを含むが、本発明の範囲は、この点に制限されない。
【００９９】
図７のシーケンスが図５の方法に呼ばれる時、入力遅延コントロールレジスタ１３及び出力遅延コントロールレジスタ１４は、それぞれ入力センタリングルックアップテーブル５８及び出力センタリングルックアップテーブル５６からの複数のデフォルト値によって、すでにプログラムされている。ここで複数のデフォルト値は、図５の−５０８−で、複数のテーブルから、構成情報６４に従って、すでに選択されている。
【０１００】
同様に、図７のシーケンスが図６の方法に呼ばれる場合、入力遅延コントロールレジスタ１３及び出力遅延コントロールレジスタ１４は、図６の−５０８−で構成情報６４に従って複数のルックアップテーブルから選択される複数のデフォルト値、又は図６の−６３０−での図７のキャリブレーションシーケンスへの前回の呼び出しによって決められる複数の値のどちらかで、すでにプログラムされている。
【０１０１】
キャリブレーションアルゴリズムは、出力遅延コントロールレジスタ１４の値のために、実行される（−７０４−）。図８について以下で説明されるように、キャリブレーションアルゴリズムは、出力遅延コントロールレジスタ１４のための１つ以上の値を決定し、この時、入力チャネル２２は、コンダクタ８上の信号の複数の論理レベルを正しくサンプルする。出力遅延コントロールレジスタ１４のキャリブレートされた値は、これら複数の値の中央値として選択される（−７０６−）。
【０１０２】
出力遅延コントロールレジスタ１４は、キャリブレートされた値でプログラムされてよく（−７０８−）、キャリブレーションアルゴリズムは、入力遅延コントロールレジスタ１３の値のために実行されてよい（−７１０−）。キャリブレーションアルゴリズムは、入力遅延コントロールレジスタ１３の１つ以上の値を決定し、この時入力レジスタ４４は、コンダクタ１０上の信号の複数の論理レベルを正確にサンプルする。入力遅延コントロールレジスタ１３のためにキャリブレートされた値は、これら複数の値の中央値として選択されてよい。
【０１０３】
しかしながら、キャリブレーションアルゴリズム（−７０４−）が、入力チャネル２２がコンダクタ８上の信号の複数の論理レベルを正しくサンプルための、出力遅延コントロールレジスタ１４に対するどの複数の値も決定しない場合、本方法は、失敗をレポートし（−７１４−）、終了する。
【０１０４】
同様に、キャリブレーションアルゴリズム（−７１０−）が、入力レジスタ４４がコンダクタ１０上の信号の複数の論理レベルを正しくサンプルするための、入力遅延コントロールレジスタ１３に対するどの複数の値も決定しない場合、本方法は、失敗をレポートし（−７１４−）、終了する。
【０１０５】
図８は、本発明の幾つかの実施例に対応する、出力遅延コントロールレジスタ１４及び入力遅延コントロールレジスタ１３にプログラムされる複数のディジタル値のためのキャリブレーションアルゴリズムの一例を示すフローチャートである。図６の方法に−７０４−及び−７１０−で参照される複数のキャリブレーションアルゴリズムは、図８のアルゴリズムを含むが、本発明の範囲は、この点に制限されない。
【０１０６】
キャリブレートされるレジスタ（図７の−７０４−での出力遅延コントロールレジスタ１４、及び図７の−７１０−での入力遅延コントロールレジスタ１３）は、その範囲の最小の遅延を有し、レジスタにより制御される遅延セルに対応する値にプログラムされる（−８０２−）。
【０１０７】
第一テストで、複数のセットアップタイム違反のストレステスティングのために設計されるパターンは、信号１８を介してデバイス６に送られ、信号３４からコントローラ４に戻る（−８０４−）。信号３８で受信される複数のディジタル値が信号１８を介して送られる複数のディジタル値を異なる場合（−８０６−）、プログラムされた値は、失敗とマークされる（−８０８−）。しかしながら、信号３８で受信される複数のディジタル値が信号１８を介して送られる複数のディジタル値と一致する場合（−８０６−）、第二テストが実施される。
【０１０８】
第二テストで、複数のホールドタイム違反のストレステスティングのために設計されるパターンは、信号１８を介してデバイス６に送られ、信号３４からコントローラ４に戻る（−８１０−）。信号３８で受信される複数のディジタル値が信号１８を介して送られる複数のディジタル値と異なる場合（−８１２−）、プログラムされた値は、失敗とマークされる（−８０８−）。しかしながら、信号３８で受信される複数のディジタル値が信号１８を介して送られる複数のディジタル値と一致する場合（−８０６−）、プログラムされた値は、パスとマークされる（−８１４−）。
【０１０９】
キャリブレートされるレジスタは、レジスタに制御される遅延セルがその範囲内の増加した遅延を有するように（−８１８−）、増加した値でプログラムされ、第一テスト（適切であれば、及び第二テスト）が繰り返されてよい。増加したプログラムされた値は、失敗又はパスとマークされる。レジスタの全てのプログラム可能な値がテストされた時（−８１６−）、複数のプログラムされた値の結果は、チェックされる（−８２０−）。全てのプログラムされた値が複数のテストに失敗した場合、失敗がレポートされ（−８２２−）、本方法は、終了する。全てのプログラムされた値が複数のテストに失敗しなかった場合、複数のテストにパスした複数の値がレポートされ（−８２４−）、本方法は終了する。
双方向の信号
【０１１０】
上記の説明では、それぞれが独自の信号を運ぶ分離した複数のコンダクタ８及び１０に焦点をあてた。しかしながら、本発明の複数の実施例は、コントローラ４の出力チャネル１２をデバイス６の入力チャネル２２に、及びデバイス６の出力チャネル３２をコントローラ４の入力チャネル３６に電気的に結合させる１つのコンダクタのケースにも均等に応用することができる。コントローラ４内で、プログラム可能出力バッファ２８の出力及び入力バッファ４０への入力は、電気的に結合される。デバイス６内で、チャネル３２の出力及びチャネル２２へのインプットは、電気的に結合される。出力チャネル１２及び３２のただ１つが、どのような時でも、１つのコンダクタ上に信号を送ることを保証するために、例えば、複数の開放ドレイン出力及び複数の高インピーダンス出力の複数の既知技術などのどの適切な技術が使用されてもよい。
コンダクタのグループ
【０１１１】
上記の説明では、複数のシングルコンダクタ８及び１０に焦点をあてた。上記の説明において、各コンダクタは、独自の入力及び出力チャネルを有し、ここでコントローラ４内の複数のチャネルは、複数のレジスタにより制御されている。しかしながら、複数のコンダクタのグループが同様である場合、コントローラ４は、グループ内の複数のコンダクタのために複数の入力チャネルを制御する１つの入力遅延コントロールレジスタ、並びにグループ内の複数のコンダクタのために複数の出力チャネルを制御する１つの出力遅延コントロールレジスタ及び１つのドライビングインピーダンスコントロールレジスタを有することができることが理解されるだろう。グループ内の複数のコンダクタの類似性は、例えば、適用できる場合、複数のトレースのトポロジの類似性、複数の信号のスイッチングの振る舞いの類似性、及び複数の信号の複数のプロトコルの類似性を有してよい。例えば、複数のアドレス信号が６４ビットで表される場合、それら複数のビットを運ぶ６４コンダクタは、同じグループの一部と考えられ、コントローラ４は、複数のアドレス信号の６４コンダクタのための複数の出力チャネルを制御する、１つの出力遅延コントロールレジスタ及び１つのドライビングインピーダンスコントロールレジスタを有する。
装置例
【０１１２】
本発明の幾つかの実施例に応じた、装置例９００は、図９に示される。装置９００は、プリント基板（ＰＣＢ）９０２を備えてよい。装置９００は、オーディオ入力デバイス９０１を任意に備えてよい。本発明をぼやかさないように、装置９００のよく知られた複数のコンポーネント及び複数の回路は、図９には示されていない。
【０１１３】
装置９００の複数の例の非包括的リストは、デスクトップパーソナルコンピュータ、サーバコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、ハンドヘルドコンピュータ、パーソナルディジタルアシスタント（ＰＤＡ）、携帯電話、及び同種のもの、並びに高速バス及びメモリシステムを有する組み込み型アプリケーションを備えてよい。
【０１１４】
プロセッサ９０３、基本入力／出力システム（ＢＩＯＳ）デバイス９５２、メモリコントローラ９０４、メモリバンク９１６及び任意のメモリバンク９１７は、ＰＣＢ９０２上にインストールされてよい。（幾つかの実施例では、メモリコントローラ９０４はプロセッサ９０３の一部でよい。）グラフィクスチップ９０５は、任意にＰＣＢ９０２上にインストールされてよい。ＰＣＢ９０２上にインストールされる付加的な複数のコンポーネントは、本発明をぼやかさないように示されていない。
【０１１５】
プロセッサ９０３の複数の例の非包括的なリストは、セントラルプロセッシングユニット（ＣＰＵ）、ディジタルシグナルプロセッサ（ＤＳＰ）、縮小命令セットコンピュータ（ＲＩＳＣ）、複数命令セットコンピュータ（ＣＩＳＣ）及び同種のものを有してよい。その上、プロセッサ９０３は、特定用途向け集積回路（ＡＳＩＣ）又は特定用途向け標準製品（ＡＳＳＰ）の一部でよい。
【０１１６】
ＢＩＯＳデバイス９５２の複数の例の非包括的なリストは、フラッシュメモリ、電気的消去可能プログラム可能読取専用メモリ（ＥＥＰＲＯＭ）、及び同種のものを有してよい。ＢＩＯＳデバイス９５２は、図６、図１０Ａ−１０Ｄ、及び図８の複数の方法を実装する複数のソフトウェアモジュールを有してよい。
【０１１７】
メモリコントローラ９０４の複数の例の非包括的なリストは、バスブリッジ、周辺コンポーネントインターコネクト（ＰＣＩ）ノースブリッジ、ＰＣＩサウスブリッジ、グラフィック用高速バス（ＡＧＰ）ブリッジ、メモリインターフェースデバイス及び同種のもの、又はこれらの組み合わせを有してよい。その上、メモリコントローラ９０４は、特定用途向け集積回路（ＡＳＩＣ）又はチップセット又は特定用途向け標準製品（ＡＳＳＰ）の一部でよい。
【０１１８】
複数のメモリバンク９１６及び９１７のどちらか又は両方は、例えば、デュアルインラインメモリモジュール（ＤＩＭＭ）、スモールアウトラインデュアルインラインメモリモジュール（ＳＯＤＩＭＭ）、シングルラインメモリモジュール（ＳＩＭＭ）、ＲＡＭＢＵＳインラインメモリモジュール（ＲＩＭＭ）、及び同種のものなどのリムーバブルモジュールでよい。代わりに、複数のメモリバンク９１６及び９１７のどちらか又は両方は、ノンリムーバブル、例えば、ＰＣＢ９０２に恒久的に取り付けられてよい。
【０１１９】
複数のメモリバンク９１６及び９１７は、１つ以上のメモリデバイス９０６及び９０７を有してよい。複数のメモリデバイス９０６及び９０７の複数の例の非包括的なリストは、複数の同期型ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）デバイス、複数のＲＡＭＢＵＳダイナミックランダムアクセスメモリ（ＲＤＲＡＭ）デバイス、複数のダブルデータレート（ＤＤＲ）メモリデバイス、スタティックランダムアクセスメモリ（ＳＲＡＭ）、及び同種のもの含んでよい。
【０１２０】
ＢＩＯＳデバイス９５２は、図１のメモリ５２の特定の例であり、メモリコントローラ９０４は、図１のコントローラ４の特定の例であり、複数のメモリデバイス９０６及び９０７は、図１の複数のデバイス６の複数の特定の例である。それゆえ、下記の説明では、メモリコントローラ９０４と複数のメモリデバイス９０６及び９０７との間の複数の信号のメモリコントローラ９０４内の複数の入力及び出力チャネルを制御する、メモリコントローラ９０４内の複数のレジスタのプログラミングに焦点を当てる。
【０１２１】
メモリコントローラ９０４は、複数のコンダクタの複数のグループを介して、複数のメモリデバイス９０６及び複数のメモリデバイス９０７に結合される。１つ以上の出力信号を運ぶ１つ以上のコンダクタのグループのために、メモリコントローラ９０４は、図１の出力チャネル１２に類似した１つ以上の出力チャネル（示されていない）を有してよい。１つ以上の入力信号を運ぶ１つ以上のコンダクタのグループのために、メモリコントローラ９０４は、図１の入力チャネル３６に類似した１つ以上の入力チャネル（示されていない）を有してよい。
【０１２２】
複数のコンダクタの１つのグループ９２０は、複数のメモリデバイス９０６及び／又は複数のメモリデバイス９０７からデータを読み出すための複数のメモリデータイン（ＭＤＩＮ）信号を有してよい。複数のコンダクタ９２０は、複数のメモリデバイス９０６及び／又は複数のメモリデバイス９０７にデータを書き込むための複数のメモリデータアウト（ＭＤＯＵＴ）信号もまた有してよい。メモリコントローラ９０４は、１つのドライビングインピーダンスコントロールレジスタ、及び複数のコンダクタ９２０上に複数のＭＤＯＵＴ信号を出力する、メモリコントローラ９０４の複数の出力チャネルを制御する任意の１つの出力遅延コントロールレジスタを有してよい。同様に、メモリコントローラ９０４は、複数のコンダクタ９２０上の複数のＭＤＩＮ信号を受信する、メモリコントローラ９０４の複数の入力チャネルを制御する１つの入力遅延コントロールレジスタを有してよい。
【０１２３】
複数のコンダクタのもう１つのグループ９２２は、メモリコントローラ９０４から複数のメモリデバイス９０６及び／又は複数のメモリデバイス９０７へ、複数のアドレス信号を運んでよい。メモリコントローラ９０４は、１つのドライビングインピーダンスコントロールレジスタ、及び複数のコンダクタ９２２に複数のアドレス信号を出力する、メモリコントローラ９０４の複数の出力チャネルを制御する任意の１つの出力遅延コントロールレジスタを有してよい。
【０１２４】
１つのコンダクタ９２４は、メモリコントローラ９０４から複数のメモリデバイス９０６及び／又は複数のメモリデバイス９０７へ、クロック信号（図１のクロック２０及びクロック２４に類似した）を運ぶ。メモリコントローラ９０４は、１つのドライビングインピーダンスコントロールレジスタ及び複数のコンダクタ９２４上にクロック信号を出力する、メモリコントローラ９０４の出力チャネルを制御する任意の１つの出力遅延コントロールレジスタを有してよい。
【０１２５】
複数のコンダクタのもう１つのグループ９２６（９２７）は、メモリコントローラ９０４から複数のメモリデバイス９０６（９０７）へ、"チップセレクト"信号を運んでよい。チップセレクト信号は、他の複数のコンダクタ上に送られる複数の信号、すなわち、アドレス及び複数のＭＤＩＮ信号が特定のメモリを対象にしていることを、そのメモリデバイスに通知するために用いられる。メモリコントローラ９０４は、１つのドライビングインピーダンスコントロールレジスタと、複数のコンダクタ９２６上に複数のチップセレクト信号を出力する、メモリコントローラ９０４の複数の出力チャネルを制御する任意の１つの出力遅延コントロールレジスタと、もう１つのドライビングインピーダンスコントロールレジスタと、複数のコンダクタ９２７上に複数のチップセレクト信号を出力する、メモリコントローラ９０４の複数の出力チャネルを制御する任意のもう１つの出力遅延コントロールレジスタとを有してよい。
キャリブレーションシーケンスの一例
【０１２６】
複数の図１０Ａ−１０Ｄは、本発明の幾つかの実施例に対応した、メモリコントローラ９０４の複数の遅延コントロールレジスタにプログラムされる複数のディジタル値のためのキャリブレーションシーケンスの一例を示すフローチャートである。複数の図１０Ａ−１０Ｄのキャリブレーションシーケンスの例によって影響される複数のコントロールレジスタは、
ａ）"データアウト遅延コントロールレジスタ"−複数のコンダクタ９２０上に複数のＭＤＯＵＴ信号を出力する、メモリコントローラ９０４の複数の出力チャネルのための出力遅延コントロールレジスタ（これのキャリブレーションは、図１０Ａに示される）、
ｂ）"データイン遅延コントロールレジスタ"−複数のコンダクタ９２０上の複数のＭＤＩＮ信号を受信する、メモリコントローラ９０４の複数の入力チャネルのための入力遅延コントロールレジスタ（これのキャリブレーションは、図１０Ｂに示される）、
ｃ）"アドレス遅延コントロールレジスタ"−複数のコンダクタ９２２上に複数のアドレス信号を出力する、メモリコントローラ９０４の複数の出力チャネルのための出力遅延コントロールレジスタ（これのキャリブレーションは、図１０Ｃに示される）、
ｄ）"第一チップセレクトコントロールレジスタ"−複数のメモリデバイス９０６への複数のコンダクタ９２６上に複数のチップセレクト信号を出力する、メモリコントローラ９０４の複数の出力チャネルのための出力遅延コントロールレジスタ（これのキャリブレーションは、図１０Ｄに示される）及び、
ｅ）"第二チップセレクトコントロールレジスタ"−複数のメモリデバイス９０７への複数のコンダクタ９２７上の複数のチップセレクト信号を出力する、メモリコントローラ９０４の複数の出力チャネルのための出力遅延コントロールレジスタである。
【０１２７】
製品ＢＩＯＳの作成の間に複数の図１０Ａ−１０Ｄのシーケンスが呼ばれる時（図５に示されるように）、複数のレジスタは、プロセッサ９０３により、ＢＩＯＳデバイス９５２内の複数のルックアップテーブルからの複数の値及びプロセッサ９０３により、例えばＥＥＰＲＯＭ、フラッシュメモリ、及び同種のものなどの複数のメモリに記憶された構成情報９３６及び９３７に従って、複数のテーブルから選択された複数の値ですでにプログラムされている。例えば、メモリバンク９１６及び／又はメモリバンク９１７がＤＩＭＭメモリの場合、構成情報９３６及び９３７を読み込むために用いられるプロトコルは、シリアルプレゼンスディテクト（ＳＰＤ）プロトコルでよい。
【０１２８】
同様に、複数の変化を補うための起動キャリブレーション又は反復キャリブレーションの間に複数の図１０Ａ−１０Ｄのシーケンスが呼ばれる時（図６に示されるように）、複数のレジスタは、構成情報９３６及び９３７に従って選択される、ＢＩＯＳデバイス９５２内の複数のルックアップテーブルからの複数の値、又は複数の図１０Ａ−１０Ｄのキャリブレーションシーケンスの前回の呼び出しにより決められた複数の値のどちらかですでにプログラムされている。
【０１２９】
キャリブレーションアルゴリズムは、"データアウト遅延コントロールレジスタ"の値のために実行され、ここで、メモリコントローラ９０４の複数の遅延コントロールレジスタは、複数のデフォルト値にプログラムされ（−１０００−）、複数のメモリデータアウト信号（ＭＤＯＵＴ）は、複数のメモリデバイス９０６に送られる（−１００２−）。例となるキャリブレーションアルゴリズムは、図８に関連して、以上に述べられる。図８に関して以上に述べられるように、キャリブレーションアルゴリズムは、"データアウト遅延コントロールレジスタ"のための１つ以上の値を決定し、ここで、複数のメモリデバイス９０６は、複数のコンダクタ９２０上の複数のＭＤＯＵＴ信号の複数の論理レベルを正しくサンプルする。
【０１３０】
メモリコントローラ９０４の複数の遅延コントロールレジスタは、複数のデフォルト値にプログラムされる（−１００４−）。キャリブレーションアルゴリズムは、"データアウト遅延コントロールレジスタ"の値のために、繰り返され、ここで、今回は、複数のメモリデータアウト（ＭＤＯＵＴ）信号が複数のメモリデバイス９０７に送られる（−１００６−）。今回、キャリブレーションアルゴリズムは、"データアウト遅延コントロールレジスタ"のために１つ以上の値を決定し、この時、複数のメモリデバイス９０７の複数の入力チャネルは、複数のコンダクタ９２０上の複数のＭＤＯＵＴ信号の複数の論理レベルを正しくサンプルする。
【０１３１】
−１００２−及び−１００６−でのキャリブレーションアルゴリズムにより決定される幾つかの値が、複数の値の重複領域を定義し、これらの値でアルゴリズムの複数のテストがパスする場合、"データアウト遅延コントロールレジスタ"のためのキャリブレートされる値は、これら複数の重複値の中央値として選択される（−１００８−）。
【０１３２】
"データアウト遅延コントロールレジスタ"は、キャリブレートされた値でプログラムされ、他の複数の遅延コントロールレジスタは、複数のデフォルト値でプログラムされる（−１０１０−）。
【０１３３】
"データイン遅延コントロールレジスタ"の値のために、キャリブレーションアルゴリズムは、実行され、ここで、複数のメモリデバイス９０６からの複数のメモリデータイン信号（ＭＤＩＮ）が受信される（−１０１２−）。キャリブレーションアルゴリズムは、"データイン遅延コントロールレジスタ"のための１つ以上の値を決定し、ここで、メモリコントローラ９０４の複数の入力チャネルは、複数のメモリデバイス９０６からの複数のコンダクタ９２０上の複数のＭＤＩＮ信号の複数の論理レベルを正しく受信する。
【０１３４】
"データアウトコントロールレジスタ"は、キャリブレートされた値でプログラムされ、他の複数の遅延コントロールレジスタは、複数のデフォルト値でプログラムされる（−１０１４−）。キャリブレーションアルゴリズムは、"データイン遅延コントロールレジスタ"の値のために繰り返されてよく、ここで、今回は、複数のメモリデータイン（ＭＤＩＮ）は、複数のメモリデバイス９０７から受信される（−１０１６−）。今回、キャリブレーションアルゴリズムは、"データイン遅延コントロールレジスタ"のための１つ以上の値を決定し、ここで、メモリコントローラ９０４の複数の入力チャネルは、複数のメモリデバイス９０７からの複数のコンダクタ９２０上の複数のＭＤＩＮの複数の論理レベルを正しくサンプルする。
【０１３５】
−１０１２−及び−１０１６−でキャリブレーションアルゴリズムによって決められる複数の値の幾つかが、複数の値の複数の重複領域を定義する場合、"データイン遅延コントロールレジスタ"のためのキャリブレートされる値は、これら複数の重複値の中央値として選択される（−１０１８−）。
【０１３６】
"データアウト遅延コントロールレジスタ"及び"データイン遅延コントロールレジスタ"は、複数のキャリブレートされた値でプログラムされ、他の複数の遅延コントロールレジスタは、複数のデフォルト値でプログラムされる（−１０２０−）。
【０１３７】
キャリブレーションアルゴリズムは、"アドレス遅延コントロールレジスタ"の値のために実行される（−１０２２−）。キャリブレーションアルゴリズムは、"アドレス遅延コントロールレジスタ"のための１つ以上の値を決定し、ここで複数のメモリデバイス９０６の複数の入力チャネルは、複数のコンダクタ９２２上の複数のアドレス信号の複数の論理レベルを正しくサンプルする。
【０１３８】
"データアウト遅延コントロールレジスタ"及び"データインデータコントロールレジスタ"は、キャリブレートされた複数の値でプログラムされ、他の複数の遅延コントロールレジスタは、複数のデフォルト値でプログラムされる（−１０２４−）。
【０１３９】
キャリブレーションアルゴリズムは、"アドレス遅延コントロールレジスタ"の値のために、繰り返され、ここで、今回は、複数のアドレス信号は、複数のメモリデバイス９０７（−１０２６−）から受信される。今回、キャリブレーションアルゴリズムは、"アドレス遅延コントロールレジスタ"のための１つ以上の値を決定し、ここで、複数のメモリデバイス９０７は、複数のコンダクタ９２２上の複数のアドレス信号の複数の論理レベルを正しくサンプルする。
【０１４０】
−１０２２−及び−１０２６−でキャリブレーションアルゴリズムによって決定される複数の値の幾つかは、複数の値の重複する領域を定義し、これによってアルゴリズムの複数のテストがパスする場合、"アドレス遅延コントロールレジスタ"のためのキャリブレートされた値は、これら複数の重複値の中央値として選択される（−１０２８−）。
【０１４１】
"データアウト遅延コントロールレジスタ"、"データイン遅延コントロールレジスタ"及び"アドレス遅延コントロールレジスタ"は、複数のキャリブレートされた値でプログラムされ、他の複数の遅延コントロールレジスタは、複数のデフォルト値でプログラムされる（−１０３０−）。
【０１４２】
キャリブレーションアルゴリズムは、"第一チップセレクト遅延コントロールレジスタ"の値のために実行される（−１０３２−）。キャリブレーションアルゴリズムは、"第一チップセレクト遅延コントロールレジスタ"のための１つ以上の値を決定し、このとき、複数のメモリデバイス９０６の複数の入力チャネルは、複数のコンダクタ９２６上の複数のチップセレクト信号の複数の論理レベルを正しくサンプルする。"第一チップセレクト遅延コントロールレジスタ"のためにキャリブレートされる値は、これら複数の値の中央値として選択される（−１０３４−）。
【０１４３】
"データアウト遅延コントロールレジスタ"、"データイン遅延コントロールレジスタ"、"アドレス遅延コントロールレジスタ"及び"第一チップセレクト遅延コントロールレジスタ"は、複数のキャリブレートされた値でプログラムされ、他の複数の遅延コントロールレジスタは、複数のデフォルト値でプログラムされる（−１０３６−）。
【０１４４】
キャリブレーションアルゴリズムは、"第二チップセレクト遅延コントロールレジスタ"の値のために実行される（−１０３８−）。キャリブレーションアルゴリズムは、"第二チップセレクト遅延コントロールレジスタ"のための１つ以上の値を決定し、ここで、複数のメモリデバイス９０７の複数の入力チャネルは、複数のコンダクタ９２７上の複数のチップセレクト信号の複数の論理レベルを正しくサンプルする。"第二チップセレクト遅延コントロールレジスタ"のためにキャリブレートされた値は、これら複数の値の中央値として選択され、"第二チップセレクト遅延コントロールレジスタ"は、キャリブレートされた値にプログラムされる（−１０４０−）。
【０１４５】
キャリブレーションアルゴリズムの実行中にテストが失敗する場合、失敗がレポートされる（−１０４２−）。キャリブレーションアルゴリズムの一例ための遅延値及びゴールデンパターン。
【０１４６】
一例として、図８のキャリブレーションアルゴリズムは、図９の装置のために、複数の図１０Ａ−図１０Ｄから呼ばれた。この例では、クロック９２４の周波数は、１３３ＭＨｚであったが、他の複数の例では、周波数は、例えば、１００ＭＨｚ、１６６ＭＨｚ、２００ＭＨｚ、２６６ＭＨｚ等の他の複数の値を有してよい。クロック周波数が１３３ＭＨｚであるケースでは、クロック９２４は、周期ＴＰＥＲＩＯＤ＝７．５１９ナノ秒で発振する。メモリバンク９１６及びメモリバンク９１７が複数のＤＩＭＭメモリの場合、クロック９２４の立ち上がりエッジに続く、メモリバンク９１６又はメモリバンク９１７により送られる複数のコンダクタ９２０上のＭＤＩＮ信号が安定する最も遅い時間（ｍａｘ（ＴＣＯ２＋ＴＰＬＨ２、ＴＣＯ２＋ＴＰＨＬ２））は、例えば、約１．８ナノ秒から約４．２ナノ秒の、約２．４ナノ秒の範囲であり得る。ｍａｘ（ＴＣＯ２＋ＴＰＬＨ２、ＴＣＯ２＋ＴＰＨＬ２）の正確な値は、例えば、複数のメモリデバイス９０６及び複数のメモリデバイス９０７の数及びタイプに依存する。
【０１４７】
この例では、複数のコンダクタ９２０上の複数のＭＤＩＮ信号を受信する、メモリコントローラ９０４の複数の入力チャネルのプログラム可能遅延セルに導入される複数の遅延ＴＰＤ２（図８のキャリブレーションアルゴリズムのポイント−８１８−で"データイン遅延コントロールレジスタ"により制御される）は、以下の複数の値を持つ。
【表１】
2007509541.tif 000003
ここで、２０００ピコ秒の遅延ＴＰＤ２は、遅延ＴＰＤ２の予測された範囲の中心におよそ対応する。
【０１４８】
その上、この例では、複数のコンダクタ９２０は、６４のコンダクタを有し、ここで、各コンダクタは１ビットを表す。複数のコンダクタ９２０の６４ビットは８バイトに分割され、各バイトは、０から７に番号付けられた８ビットを含む。複数のコンダクタ９２０のトポロジは、異なる複数のバイトに属する複数のコンダクタ間のノイズカップリング及び干渉が実質的に小さいようなトポロジである。それゆえ、各バイトは別々に、複数のセットアップタイム違反及び複数のホールドタイム違反のためにテストされる。
【０１４９】
さらに、複数のコンダクタ９２０のトポロジは、各バイトにとって、３番のビットは、そのバイトの残りの複数のビットからの干渉及びノイズに最も敏感であるようなトポロジである。
【０１５０】
それゆえ、複数のコンダクタ９２０のバイトを構成する複数のコンダクタのグループに対して、複数のセットアップタイム違反及び複数のホールドタイム違反のストレステスティングを実行するために、下記複数のゴールデンパターンが用いられる。
【表２】
2007509541.tif 000004
【０１５１】
複数のセットアップタイム違反のためのストレステストの例において、メモリコントローラ９０４は、１バイトをメモリデバイス９０６又は９０７に送り、ここでバイトの複数のビット７、６、５，４、２、１、及び０は、４つの連続するクロック（クロック１−４）それぞれで変化する同じ論理値を有し、バイトのビット３は、４つの連続するクロックそれぞれで逆の論理値を有する。バイトの複数のビット７、６、５、４、２、１及び０は、多くのノイズを発生させ、メモリデバイス９０６及び９０７が、各複数のクロック３、４及び５において、ビット３を正しく受信した場合、テストはパスする。
【０１５２】
ホールドタイム違反のためのリラックステストの例では、複数のクロック５−１０で、システムを安定させるために、メモリコントローラ９０４は、バイトの複数のビット７、６、５、４、２、１及び０のための変化しない論理値を送る。複数のクロック５−７では、ビット３のための変化しない逆の論理値が送られ、システムを安定させる。ビット３の論理値は、複数のクロック８及び９で変えられ、メモリデバイス９０６及び９０７が、各複数のクロック９及び１０で、ビット３を正しく受信した場合、テストはパスする。
プログラム可能遅延セル
【０１５３】
図１１は、本発明の幾つかの実施例に沿った、例となるプログラム可能遅延セル１１００の簡素化された概略図である。プログラム可能遅延セル１１００は、図１のプログラム可能遅延セル２６及び／又はプログラム可能遅延セル４２を実装するために用いられる。
【０１５４】
プログラム可能遅延セル１１００は、入力信号１１０２、複数のコントロール信号１１０６、１１０８、１１１０、１１１２及び１１２８を受信し、出力信号１１０４を生成する。プログラム可能遅延セル１１００は、信号１１０２の論理レベルを連続的にサンプルし、信号１１０２でサンプルされた複数の論理レベルと実質的に等しい複数の論理レベルを、信号１１０４上に連続的に出力する。信号１１０２の論理レベルの変化が生じた場合、遅延時間ＴＰＤの後、信号１１０４の論理レベルは、対応して変化する。
【０１５５】
遅延時間ＴＰＤは、一定時間範囲内でプログラム可能であり、複数のコントロール信号１１０６、１１０８、１１１０及び１１１２の複数のディジタル値に応じて１６の遅延時間の１つにセットされる。その上、コントロール信号１１２８は、複数のコントロール信号１１０６、１１０８、１１１０及び１１１２で選択される遅延時間ＴＰＤの連続的な又は細かいチューニングを可能とする。例えば、コントロール信号１１２８は、遅延時間ＴＰＤが望ましい値に近づくように、使用される。他の一例では、コントロール信号１１２８は、遅延時間ＴＰＤが、例えば、供給電圧の複数の変化、周囲温度の複数の変化、及びコントローラ４の温度の複数の変化などの複数の要因の幾つか又は幾つかの組み合わせにより、理想値からドリフトした場合、遅延時間ＴＰＤの複数の訂正に用いられる。コントロール信号１１２８による複数の訂正は、このような複数の変化を検出するための測定システム（示されていない）からの出力に応答して生成される。
【０１５６】
プログラム可能遅延セル１１００は、キャパシタ１１５０を備える。以下で説明されるように、複数のコントロール信号１１０６、１１０８、１１１０及び１１１２の複数のディジタル値は、キャパシタ１１５０を充電及び放電する、回路のインピーダンスを制御することで、遅延時間ＴＰＤをセットする。その上、コントロール信号１１２８は、キャパシタ１１５０を充電する、回路のインピーダンスを制御することで、遅延時間ＴＰＤを調整する。
【０１５７】
プログラム可能遅延セル１１００は、スイッチングトランジスタ１１１４、スイッチングトランジスタ１１１６、可変インピーダンストランジスタ１１１８及びインバータ１１２０を備える。
【０１５８】
インバータ１１２０は、入力信号１１０２を受信し、信号１１０２の論理レベルから反転された論理レベルを有する信号１１２２を出力する。
【０１５９】
１１０２の論理レベルが論理"０"の場合、信号１１２２の論理レベルは、論理"１"となり、コンダクタ１１２４は、スイッチングトランジスタ１１１４により提供される実質的に低いインピーダンスＺＬを介して低供給レールに１１４０結合され、スイッチングトランジスタ１１１６により提供される実質的に高いインピーダンスＺＺを介して高供給レールＶＣＣＣに結合され、したがって、実際にはコンダクタ１１２４及びコンダクタ１１２６は分離されている。
【０１６０】
入力信号１１０２の論理レベルが論理"１"の場合、信号１１２２の論理レベルは論理"０"となり、コンダクタ１１２４は、スイッチングトランジスタ１１１４により提供される実質的に高いインピーダンスＺＨを介して低供給レールに結合される。コンダクタ１１２４は、スイッチングトランジスタ１１１６により提供される実質的に低いインピーダンスＺＨ、及びコントロール信号１１２８に決められ、可変インピーダンストランジスタ１１１８により提供されるインピーダンスＺＶを介して高供給レールＶＣＣＣに結合される。
【０１６１】
しかしながら、説明の簡素化のために、インピーダンスＺＺが複数のインピーダンスＺＬ及びＺＨより実質的に高い場合、インピーダンスＺＺは、無限のインピーダンスと近似される。したがって、この近似を用いて、入力信号１１０２の論理レベルが論理"０"の場合、コンダクタ１１２４は、スイッチングトランジスタ１１１４により提供される実質的に低いインピーダンスＺＬを介して、低供給レール１１４０に結合され、入力信号１１０２の論理レベルが論理"１"の場合、コンダクタ１１２４は、スイッチングトランジスタ１１１６により提供される実質的に低いインピーダンスＺＨ及び可変インピーダンストランジスタ１１１８により提供されるインピーダンスＺＶを介して、高供給レールＶＣＣＣに結合される。
【０１６２】
プログラム可能遅延セル１１００は、複数のパスゲート１１３０、１１３２、１１３４及び１１３６を備える。複数のパスゲート１１３０、１１３２、１１３４及び１１３６は、複数のコントロール信号１１０６、１１０８、１１１０及び１１１２をそれぞれ入力として受信する。これら複数のコントロール信号の１つの論理レベルが論理"０"の場合、対応するパスゲートは、コンダクタ１１２４をキャパシタ１１５０に、実質的に高いインピーダンスＺＺで結合し、したがって、実際にはコンダクタ１１２４はキャパシタ１１５０から分離している。これら複数のコントロール信号の１つの論理レベルが論理"１"の場合、対応するパスゲートは、コンダクタ１１２４をキャパシタ１１５０に、例えばパスゲート１３０はＺ１、パスゲート１３２はＺ２、パスゲート１３４はＺ３及びパスゲート１３６はＺ４などの実質的に低いインピーダンスで結合する。一例では、インピーダンスＺ２は、インピーダンスＺ１の２倍、インピーダンスＺ３は、インピーダンスＺ２の２倍、インピーダンスＺ４は、インピーダンスＺ３の２倍である。
【０１６３】
当業者であれば、コンダクタ１１２４は、複数のパスゲート１１３０、１１３２、１１３４及び１１３６がコンダクタ１１２４をキャパシタ１１５０に接続する複数のインピーダンス（Ｚ１、Ｚ２、Ｚ３、Ｚ４及びＺＺ）の組み合わせであるインピーダンスＺPASSで、キャパシタ１１５０に結合されることが理解されるだろう。その上、ＺPASSは、複数のコントロール信号１１０６、１１０８、１１１０及び１１１２の複数の論理レベルの組み合わせに対応する１６の値の１つを有する。
【０１６４】
入力信号１１０２が論理レベル"０"から論理レベル"１"にアサートされる場合、電流は、高供給レールＶＣＣＣから、複数のインピーダンスＺＶ、ＺＨ及びＺPASSを介してキャパシタ１１５０へ流れる。したがって、キャパシタ１１５０及びコンダクタ１１２４上の電位は、低供給レールに対して上昇する。コンダクタ１１２４上の電圧が、所定の第一のしきい値と等しく又はより高くなる場合、出力信号１１０４は、論理レベル"１"有するとみなされる。入力信号１１０２のアサーションからコンダクタ１１２４上の電圧が所定の第一のしきい値と等しく又はより高くなるまでの遅延時間ＴＰＤは、キャパシタ１１５０の容量、低供給レールに対する高供給レールＶＣＣＣの電位、及び複数のインピーダンスＺＶ、ＺＨ，及びＺPASSの複数の値により、少なくとも一部で影響される。
【０１６５】
入力信号１１０２が、論理レベル"１"から論理レベル"０"にデアサートされる場合、電流は、キャパシタ１１５０から低供給レール１１４０に、複数のインピーダンスＺPASS及びＺＬを介して流れる。したがって、低供給レールに対するキャパシタ１１５０及びコンダクタ１１２４上の電位は、低下する。コンダクタ１１２４上の電位が、所定の第二のしきい値と等しく又はより低くなる場合、出力信号１１０４は、論理レベル"０"を有するとみなされる。入力信号１１０２のデアサーションからコンダクタ１１２４上の電圧が所定の第二のしきい値と等しく又はより低くなるまでの遅延時間は、キャパシタ１１５０の容量、複数のインピーダンスＺＬ及びＺPASSの複数の値によって、少なくとも一部で影響される。
【０１６６】
本発明の特定の複数の特徴が図解され、かつ述べられるが、多くの修正、代用、変更、及び均等が、当業者には思いつくであろう。したがって、添付される複数の請求項は、本発明の真の精神の範囲として、この様な複数の修正及び複数の変更を網羅することを意図されていることを理解されるべきである。
【０１６７】
【図１】
2007509541.tif 000005
【図２】
2007509541.tif 000006
【図３】
2007509541.tif 000007
【図４】
2007509541.tif 000008
【図５】
2007509541.tif 000009
【図６】
2007509541.tif 000010
【図７】
2007509541.tif 000011
【図８】
2007509541.tif 000012
【図９】
2007509541.tif 000013
【図１０Ａ】
2007509541.tif 000014
【図１０Ｂ】
2007509541.tif 000015
【図１０Ｃ】
2007509541.tif 000016
【図１０Ｄ】
2007509541.tif 000017
【図１１】
2007509541.tif 000018
【国際調査報告】
2007509541.tif 000019
2007509541.tif 000020
2007509541.tif 000021