(57)【要約】【課題】タイミングマージンの減少を抑制すること。【解決手段】システム装置２１に形成された制御回路３６は、可変容量３５の容量値を制御し、トレーニング回路４５にタイミングトレーニングを実行させる。トレーニング回路４５は、メモリ１２がデータＤＱに基づく正常なデータを書き込むことができる設定値の最大値と最小値を出力する。制御回路３６は、その最大値及び最小値に基づいてデータＤＱのウインドウ幅を算出し、より大きなウインドウ幅に対応する容量値を可変容量３５に設定する。【選択図】図３
2012169841.tif 000002
【特許請求の範囲】
【請求項１】
第１電源線と第２電源線との間に接続され、第１信号を出力する第１の出力回路と、
第１電源線と第２電源線との間に接続され、第２信号を出力する第２の出力回路と、
第１電源線と第２電源線との間に接続された可変容量と、
前記第１信号と前記第２信号との位相差を調整する遅延回路と、
前記可変容量の容量値を制御し、前記遅延回路により調整される前記第１信号及び前記第２信号における複数の位相差毎に前記第１信号に基づくデータがメモリに書き込めるか否かを判定して前記第１信号のウインドウ幅を計測し、より大きいウインドウ幅に対応する容量値を前記可変容量に設定する制御回路と、
を有することを特徴とするタイミング制御回路。
【請求項２】
前記制御回路は、前記第１の出力回路の駆動能力を制御し、より大きいウインドウ幅に対応する駆動能力を前記第１の出力回路に設定する、ことを特徴とする請求項１に記載のタイミング制御回路。
【請求項３】
前記制御回路は、前記遅延回路が前記位相差を調整するための設定値を変更し、各設定値毎に前記メモリが前記データが書き込めるかを判定し、前記メモリに前記データが書き込めると判定した複数の設定値のうちの最大値を最小値とを得るトレーニング回路を含む、請求項１又は２に記載のタイミング制御回路。
【請求項４】
前記トレーニング回路は、前記データのビット毎に前記メモリに書き込めるか否かを判定し、前記データの全てのビットに基づいて前記ウインドウ幅を計測する、請求項３に記載のタイミング制御回路。
【請求項５】
前記制御回路は、
前記トレーニング回路にて得た設定値の最大値と最小値を第１のレジスタに保持し、前記遅延回路に対して変更された設定値に基づいて前記トレーニング回路にて得られた最大値と最小値とを第２のレジスタに保持し、前記第１のレジスタに保持した最大値及び最小値により第１のウインドウ幅を算出し、前記第２のレジスタに保持した最大値及び最小値に基づいて第２のウインドウ幅を算出し、前記第１のウインドウ幅と前記第２のウインドウ幅とを比較し、前記第２のウインドウ幅が前記第１のウインドウ幅より大きい場合に、前記第２のレジスタに保持した最大値及び最小値を前記第１のレジスタに保持するタイミングマージン判定回路を含む、請求項３又は４に記載のタイミング制御回路。
【請求項６】
前記可変容量は、
前記メモリをアクセスする回路が搭載されたチップに形成された第１の可変容量と、
前記チップに動作電圧を供給する電源線を含むパッケージに搭載された第２の可変容量とを含み、
前記制御回路は、前記第１の可変容量の容量値と前記第２の可変容量の容量値とをそれぞれ制御する、請求項１〜５のうちの何れか一項に記載のタイミング制御回路。
【請求項７】
第１電源線と第２電源線との間に接続された可変容量の容量値を制御し、
第１電源線と第２電源線との間に接続された第１の出力回路から出力される第１信号と、第１電源線と第２電源線との間に接続された第２の出力回路から出力される第２信号との位相差を調整し、
調整される前記第１信号及び前記第２信号における複数の位相差毎に前記第１信号に基づくデータがメモリに書き込めるか否かを判定して前記第１信号のウインドウ幅を計測し、より大きいウインドウ幅に対応する容量値を前記可変容量に設定する、
ことを特徴とするタイミング制御方法。
【請求項８】
データとデータストローブ信号を出力するシステム装置と、
前記データを前記データストローブ信号に基づいて取り込むメモリと、
を含み、
前記システム装置は、
第１電源線と第２電源線との間に接続され、第１信号を出力する第１の出力回路と、
第１電源線と第２電源線との間に接続され、第２信号を出力する第２の出力回路と、
第１電源線と第２電源線との間に接続された可変容量と、
前記第１信号と前記第２信号との位相差を調整する遅延回路と、
前記可変容量の容量値を制御し、前記遅延回路により調整される前記第１信号及び前記第２信号における複数の位相差毎に前記第１信号に基づくデータがメモリに書き込めるか否かを判定して前記第１信号のウインドウ幅を計測し、より大きいウインドウ幅に対応する容量値を前記可変容量に設定する制御回路と、
を有する、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
タイミング制御回路、タイミング制御方法、及びシステムに関する。
【背景技術】
【０００２】
従来、システムは、システム装置（例えば、ＳｏＣ：System on Chip）と、システム装置によりアクセスされるメモリを備えている。システム装置とメモリは、基板（例えば、プリント配線基板（ＰＣＢ:Printed Circuit Board））に搭載され、基板に形成された配線を介して互いに接続されている。システム装置やメモリ等の半導体装置は、パッケージにチップ（又はダイ）が収容されている。チップは、パッケージの導体（リードフレーム、インターポーザに形成された配線、等）を介して基板の配線と接続される。
【０００３】
メモリは、は、例えばＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）である。ＳＤＲＡＭは、クロック信号に同期してデータを入出力する。クロック信号の立ち上がりと立ち下がりの双方のタイミングでデータを入出力するダブルデータレート方式のＳＤＲＡＭは、ＤＤＲ−ＳＤＲＡＭ（Double Data Rate SDRAM）、ＤＤＲ２−ＳＤＲＡＭやＤＤＲ３−ＳＤＲＡＭと呼ばれ、システムの動作速度の高速化に対応する。
【０００４】
システム装置は、ＤＤＲ−ＳＤＲＡＭ（メモリ）からデータを読み出す場合、ＤＤＲ−ＳＤＲＡＭにリードコマンドを供給する。ＤＤＲ−ＳＤＲＡＭは、リードコマンドに応答して、データストローブ信号ＤＱＳ（クロック信号）と、そのデータストローブ信号ＤＱＳに同期したデータＤＱを出力する。システム装置に備えられた受信回路は、データストローブ信号ＤＱＳのタイミングを調整し、調整後のデータストローブ信号に基づいてデータＤＱを取り込む。
【０００５】
システム装置に備えられた回路は、電源配線を介して供給される電源電圧により動作する。電源電圧は、バスの同時切替えやデバイスの起動などの回路の動作により変動し、電源電圧の変動によりノイズ（電源ノイズ）が発生する。このため、システム装置のパッケージ（ＰＫＧ：Package）や配線基板（ＰＣＢ：Printed Circuit Board）に含まれる２つの電源配線（高電位側電圧を供給する配線と低電位側電圧を供給するための配線）間には、電源電圧の変動を抑制する容量（デカップリング容量）が接続される（例えば、特許文献１，特許文献２参照）。この容量の値（容量値）は、システム装置の設計において、電源配線等の電源供給経路のインピーダンスを小さくするように決定され、電源ノイズシミュレーションに電源ノイズ量が検証される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−０８５３２１号公報
【特許文献２】特開２００６−１７３３６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、システム装置の形状、例えば、配線基板やパッケージの形状は、上記の電源ノイズシミュレーション後に、例えばユーザの仕様変更によって、変更されることがある。この場合、電源ノイズの低減に必要な電源配線間の容量の値が、設計値と異なってしまうので、想定していない周波数で共振する。
【０００８】
このように発生する共振は、上記のデータストローブ信号ＤＱＳやデータＤＱのエッジ（遷移タイミング）に影響する、つまり、遷移タイミングを変更することがある。例えば、データＤＱのエッジが進み、データストローブ信号ＤＱＳのエッジが遅れると、データストローブ信号ＤＱＳに対してデータＤＱが有効な期間（データ有効ウインドウ）が実効的に狭くなる。すると、データストローブ信号ＤＱＳに対するデータＤＱのタイミングマージンが小さくなり、データＤＱを正しく取り込めなくなる場合がある。
【課題を解決するための手段】
【０００９】
本発明の一観点によれば、  第１電源線と第２電源線との間に接続され、第１信号を出力する第１の出力回路と、第１電源線と第２電源線との間に接続され、第２信号を出力する第２の出力回路と、第１電源線と第２電源線との間に接続された可変容量と、前記第１信号と前記第２信号との位相差を調整する遅延回路と、前記可変容量の容量値を制御し、前記遅延回路により調整される前記第１信号及び前記第２信号における複数の位相差毎に前記第１信号に基づくデータがメモリに書き込めるか否かを判定して前記第１信号のウインドウ幅を計測し、より大きいウインドウ幅に対応する容量値を前記可変容量に設定する制御回路と、を有する。
【発明の効果】
【００１０】
本発明の一観点によれば、タイミングマージンの減少を抑制することができる。
【図面の簡単な説明】
【００１１】
【図１】システムの概略構成図である。
【図２】システムの概略ブロック図である。
【図３】システムの要部回路を示すブロック図である。
【図４】トレーニング回路の説明図である。
【図５】トレーニング回路の説明図である。
【図６】可変容量のブロック図である。
【図７】（ａ）（ｂ）は、可変容量の説明図である。
【図８】Ｉ／Ｏ回路の回路図である。
【図９】トレーニング制御回路のブロック図である。
【図１０】タイミングマージン判定回路のブロック図である。
【図１１】タイミングトレーニングの結果の説明図である。
【図１２】調整処理のフローチャートである。
【図１３】トレーニング処理のフローチャートである。
【図１４】タイミングマージン判定処理のフローチャートである。
【図１５】テストアクセス処理のフローチャートである。
【図１６】各種設定の制御の説明図である。
【図１７】（ａ）（ｂ）は、各種設定の制御の説明図である。
【発明を実施するための形態】
【００１２】
以下、一実施形態を添付図面に従って説明する。
図１に示すように、システムの基板（例えば、プリント配線板ＰＣＢ:Printed Circuit Board）１０には、複数の半導体装置１１〜１３が搭載されている。各半導体装置１１〜１３は、基板１０に形成された配線（図示略）を介して互いに接続されている。例えば、半導体装置１１は図２に示すシステム装置であり、半導体装置１２は図２に示すメモリである。また、基板１０には、デカップリング容量１４が搭載され、このデカップリング容量１４は、各半導体装置１１〜１３に供給する電源電圧の変動を低減する。なお、図１には、１つのデカップリング容量１４を示しているが、システムの構成に応じて、複数のデカップリング容量、又は複数のデカップリング容量を含む１つ又は複数のモジュールが、基板１０に搭載されている。このようなデカップリング容量１４の容量値は、基板１０の設計時に、電源供給経路のインピーダンスが小さくなるように設定され、基板１０上に配置されている。
【００１３】
半導体装置１１のパッケージ２０には、システム装置２１が搭載されている。システム装置２１は、半導体チップ（ダイ）である。また、半導体装置１１のパッケージ２０には、システム装置２１に供給する電源電圧の変動を低減するためのデカップリング容量２２が搭載されている。このデカップリング容量２２は、システム装置２１に形成された調整回路によって容量値を変更可能に構成された可変容量素子である。半導体装置１２，１３のパッケージには、チップ１２ａ，１３ａがそれぞれ内包されている。
【００１４】
図２に示すように、システム装置２１には、コア回路３１、メモリコントローラ３２、インタフェース回路（Ｉ／Ｆ回路と表記）３３、入出力回路（Ｉ／Ｏ回路と表記）３４が形成されている。メモリ１２は、同期式の半導体記憶装置、例えばダブルレート方式のダイナミックランダムアクセスメモリ（ＤＤＲ−ＳＤＲＡＭ:Double Data Rate Synchronous Dynamic Random Access Memory）である。
【００１５】
コア回路３１は、実行する処理に応じて、メモリ１２のデータを読み込むためのリード要求と、そのデータが格納されたアドレスとをメモリコントローラ３２に出力する。また、コア回路３１は、メモリ１２にデータを書き込むためのライト要求と、そのデータを格納するアドレスとをメモリコントローラ３２に出力する。なお、コア回路３１は、例えば中央処理装置（Central Processing Unit:ＣＰＵ）である。
【００１６】
メモリコントローラ３２は、当該メモリコントローラ３２の内部クロック信号を、インタフェース回路３３を介して入出力回路３４に供給する。入出力回路３４は、内部クロック信号に応じて生成した相補のクロック信号ＣＫ，ＸＣＫを、メモリ１２に供給する。
【００１７】
また、メモリコントローラ３２は、コア回路３１からの要求に応じて、インタフェース回路３３を介してメモリ１２をアクセスする。
コア回路３１からの要求がリード要求の場合には、メモリコントローラ３２は、インタフェース回路３３と入出力回路３４を介してリードコマンド及びアドレスをメモリ１２に供給する。すると、メモリ１２は、リードコマンドに応答し、該当アドレスから読み出したデータＤＱと、そのデータＤＱに同期したデータストローブ信号ＤＱＳとを出力する。このとき、メモリ１２は、相補のクロック信号ＣＫ，ＸＣＫに同期してデータＤＱをバースト出力する、すなわちメモリコントローラ３２の内部クロック信号の２倍の周波数でデータＤＱをバースト出力する。
【００１８】
コア回路３１からの要求がライト要求の場合には、メモリコントローラ３２は、インタフェース回路３３と入出力回路３４を介してライトコマンド、データＤＱ、データストローブ信号ＤＱＳ、及びデータＤＱを書き込むアドレスをメモリ１２に供給する。入出力回路３４は、インタフェース回路３３から供給されるデータストローブ信号ＤＱＳに応じて生成した相補のデータストローブ信号ＤＱＳ，ＸＤＱＳをメモリ１２に供給する。メモリ１２は、該当するアドレスにデータＤＱを記憶する。
【００１９】
メモリ１２とインタフェース回路３３との間では、データストローブ信号ＤＱＳによりデータＤＱの授受が行われる。すなわち、インタフェース回路３３は、リード動作時に、メモリ１２から入出力回路３４を介して受け取るデータストローブ信号ＤＱＳのタイミングを調整し、タイミング調整されたデータストローブ信号ＤＱＳに同期してデータＤＱを取り込み、その取り込んだデータＤＱをメモリコントローラ３２に出力する。また、インタフェース回路３３は、ライト動作時に、メモリコントローラ３２から受け取ったデータＤＱ及びデータストローブ信号ＤＱＳを、入出力回路３４を介してメモリ１２に出力する。
【００２０】
図３に示すように、システム装置２１には、例えばパッケージ２０外の電源供給モジュール（ＶＲＭ）１３から、高電位電圧ＶＤＤ及び低電位電圧ＶＳＳが供給される。高電位電圧ＶＤＤ及び低電位電圧ＶＳＳは、システム装置２１の動作電圧の一例である。高電位電圧ＶＤＤ及び低電位電圧ＶＳＳは、基板（ＰＣＢ）１０に形成された電源線１０ａ，１０ｂと、パッケージ２０に形成された電源線２０ａ，２０ｂを介してシステム装置２１に供給される。
【００２１】
電源線１０ａ，１０ｂは、電源供給モジュール１３からパッケージ２０までの間の電源供給経路を形成する導電体であり、基板１０に形成された配線パターン等を含む。電源線１０ａ，１０ｂ間には、図１に示すデカップリング容量１４が接続されている。電源線２０ａ，２０ｂは、パッケージ２０内において電源供給経路を形成する導電体、例えばパッケージ２０に形成された配線パターン等を含む。電源線２０ａ，２０ｂ間には、可変容量２２が接続されている。
【００２２】
システム装置２１（ダイ）には、高電位電圧ＶＤＤを伝達する第１の電源線２１ａと、低電位電圧ＶＳＳを伝達する第２の電源線２１ｂとが形成されている。これらの電源線２１ａ，２１ｂは、ダイの所定層に形成された銅等の配線パターンである。
【００２３】
第１の電源線２１ａと第２の電源線２１ｂとの間には、第１のＩ／Ｏ回路３４ａと第２のＩ／Ｏ回路３４ｂが接続されている。第１のＩ／Ｏ回路３４ａは、第１の電源線２１ａを介して供給される高電位電圧ＶＤＤと、第２の電源線２１ｂを介して供給される低電位電圧ＶＳＳとを駆動電圧として動作し、Ｉ／Ｆ回路３３から出力される信号に基づいてデータストローブ信号ＤＱＳを出力する。信号ＤＱＳは、パッケージ２０の配線２０ｃと、基板１０の配線１０ｃを介してメモリ１２に供給される。メモリ１２から出力されるデータストローブ信号ＤＱＳは、配線１０ｃ，２０ｃを介してＩ／Ｏ回路３４ａに供給される。
【００２４】
同様に、第２のＩ／Ｏ回路３４ｂは、第１の電源線２１ａを介して供給される高電位電圧ＶＤＤと、第２の電源線２１ｂを介して供給される低電位電圧ＶＳＳとを駆動電圧として動作し、Ｉ／Ｆ回路３３から出力される信号に基づいてデータＤＱを出力する。データＤＱは、パッケージ２０の配線２０ｄと、基板１０の配線１０ｄを介してメモリ１２に供給される。メモリ１２から出力されるデータＤＱは、配線２０ｄ、１０ｄを介してＩ／Ｏ回路３４ｂに供給される。
【００２５】
また、第１の電源線２１ａと第２の電源線２１ｂとの間には、可変容量３５が接続されている。この可変容量３５は、パッケージ２０に設けられた可変容量２２と同様に、システム装置２１に形成された調整回路によって容量値を変更可能に構成された可変容量素子である。可変容量３５は、Ｉ／Ｏ回路３４ａ，３４ｂの動作に基づく電源電圧の変動を低減する。
【００２６】
Ｉ／Ｆ回路３３は、データストローブ（ＤＱＳ）信号生成回路４１と、遅延同期ループ回路（ＤＬＬ（Delay Locked Loop ）回路）４２とを備えている。ＤＱＳ信号生成回路４１は、内部クロック信号に基づいて、例えば内部クロック信号の２倍の周波数のパルス信号を出力する。ＤＬＬ回路４２は、ＤＱＳ信号生成回路４１の出力信号を遅延した信号を出力する。ＤＬＬ回路４２は、遅延回路の一例である。
【００２７】
また、Ｉ／Ｆ回路３３は、ＤＱ信号生成回路４３と、ＤＱ信号生成回路４３の出力信号を遅延する遅延同期ループ回路（ＤＬＬ回路）４４とを備えている。ＤＱ信号生成回路４３は、図２に示すコア回路３１がメモリ１２に書き込むデータに応じた信号を出力する。例えば、ＤＱ信号生成回路４３は、コア回路３１から出力される複数ビットのパラレルデータを、内部クロック信号の２倍の周波数のパルス信号に同期してシリアル出力する。ＤＬＬ回路４４は、ＤＱ信号生成回路４３の出力信号を遅延した信号を出力する。ＤＬＬ回路４４は、遅延回路の一例である。
【００２８】
ＤＬＬ回路４２，４４は、データストローブ信号ＤＱＳとデータＤＱとの間の位相差を調整するために設けられている。ＤＱＳ信号生成回路４１とＤＱ信号生成回路４３は、内部クロック信号に同期してそれぞれ信号を出力する。ＤＱＳ信号生成回路４１の出力信号に基づいてデータストローブ信号ＤＱＳ，ＸＤＱＳがメモリ１２に対して出力され、ＤＱ信号生成回路４３の出力信号に基づいてデータＤＱがメモリ１２に対して出力される。メモリ１２は例えばＤＤＲ３−ＳＤＲＡＭであり、データストローブ信号ＤＱＳ，ＸＤＱＳのエッジのタイミングで、データＤＱを取り込む。従って、システム装置２１は、データＤＱとデータストローブ信号ＤＱＳとの間の位相差を所定値（９０度）ずらして出力する。このため、ＤＬＬ回路４２，４４は、ＤＱＳ信号生成回路４１の出力信号に応答（遅延）して出力する信号と、ＤＱ信号生成回路４３の出力信号に応答（遅延）して出力する信号との間の位相差を所定値（９０度）とするように、それぞれ設定される。
【００２９】
また、Ｉ／Ｆ回路３３は、データストローブ信号ＤＱＳとデータＤＱのタイミングを調整するトレーニング回路４５を備えている。トレーニング回路４５は、Ｉ／Ｆ回路３３から出力されるデータストローブ信号ＤＱＳ及びデータＤＱがメモリ１２に到達するタイミングを調整するタイミングトレーニング機能を提供する。
【００３０】
トレーニング回路４５によるタイミング制御を説明する。
図４に示すように、システム装置２１の遅延回路３７は、内部クロック信号を予め定めた時間遅延して出力する。Ｉ／Ｏ回路（ドライバ回路）３４ｃは、遅延回路３７の出力信号に基づいて、相補のクロック信号ＣＫ，ＸＣＫを出力する。ＤＬＬ回路４２は、図３に示すＤＱＳ信号生成回路４１から出力される信号を遅延して出力する。Ｉ／Ｏ回路（ドライバ回路）３４ａは、ＤＬＬ回路４２の出力信号に基づいて、データストローブ信号ＤＱＳと、そのデータストローブ信号ＤＱＳと相補な反転データストローブ信号ＸＤＱＳを出力する。Ｉ／Ｏ回路３４ａは、第１の出力回路の一例である。ＤＬＬ回路４２は、図３に示すＤＱ信号生成回路４３から出力される信号を遅延して出力する。Ｉ／Ｏ回路（ドライバ回路）３４ｂは、ＤＬＬ回路４２の出力信号に基づいて、データ信号ＤＱを出力する。Ｉ／Ｏ回路３４ｂは、第２の出力回路の一例である。
【００３１】
システム装置２１から出力される各種の信号は、システム装置２１とメモリ１２との間の信号伝達経路に応じた時間経過後にメモリ１２に到達する。システム装置２１の出力時刻からメモリ１２に信号が到達するまでの期間は、各種の信号における配線遅延であり、配線経路により異なる場合がある。
【００３２】
図４に示すシステム装置２１とメモリ１２との間の各種信号のタイミングを図５に示す。なお、図５の上段は、システム装置２１における出力タイミングを示し、図５の下段はメモリ１２における入力タイミングを示す。
【００３３】
例えば、Ｉ／Ｏ回路３４ｃから出力されるクロック信号ＣＫ，ＸＣＫは、図５に示すように、配線遅延による遅延時間ＤＬ１経過後のメモリ１２に入力される。同様に、図４に示すＩ／Ｏ回路３４ａから出力されるデータストローブ信号ＤＱＳ，ＸＤＱＳは、その出力時刻から遅延時間ＤＬ２経過後にメモリ１２に入力される。また、図４に示すＩ／Ｏ回路３４ｂから出力されるデータＤＱは、その出力時刻から遅延時間ＤＬ３経過後にメモリ１２に入力される。
【００３４】
メモリ１２は、上記したように、ＤＤＲ−ＳＤＲＡＭである。このようなメモリ１２は、クロック信号ＣＫ，ＸＣＫに同期して各種制御信号（コマンド）を取り込む。また、メモリ１２は、データストローブ信号ＤＱＳ，ＸＤＱＳのエッジに同期してデータＤＱを取り込む。従って、図５の下段に示すように、クロック信号ＣＫ，ＸＣＫのタイミングと、データストローブ信号ＤＱＳ，ＸＤＱＳのタイミングとの差（タイミングのずれ）は、メモリ１２の仕様（スペック）に応じた範囲に入っている必要がある。また、データストローブ信号ＤＱＳ，ＸＤＱＳのエッジのタイミングは、データＤＱの有効期間に対し、ホールド時間（Ｈｏｌｄ  Ｔｉｍｅ）とセットアップ時間（Ｓｅｔｕｐ  Ｔｉｍｅ）を満足するタイミングとなるように設定される必要がある。例えば、データストローブ信号ＤＱＳ，ＸＤＱＳのエッジのタイミングは、データＤＱの有効期間おいて、上記のホールド時間とセットアップ時間のそれぞれに対し、マージンがあるようなタイミング、例えば中央付近に来るように、調整される必要がある。なお、データＤＱの有効期間（データ有効ウィンドウ）は、ドライバ側のデータと等しいデータをレシーバ側でサンプリングできる期間のことである。
【００３５】
トレーニング回路４５は、出力信号のタイミングをずらしながら、テスト信号をメモリ１２に出力する。そして、トレーニング回路４５は、メモリ１２から出力されるテスト信号の受信結果に基づいて、メモリ１２が正しいデータを受信できるように、各信号の出力タイミング、即ち、データストローブ信号ＤＱＳとデータＤＱの位相差、つまりＤＬＬ回路４２，４４における遅延量を調整する。
【００３６】
例えば、データストローブ信号ＤＱＳ，ＸＤＱＳの場合、信号伝達経路において、図５に示すように、遅延時間ＤＬ２が生じる。このため、トレーニング回路４５は、クロック信号ＣＫ，ＸＣＫに対し、遅延時間ＤＳ１経過後にデータストローブ信号ＤＱＳ，ＸＤＱＳを出力するように、ＤＬＬ回路４２を調整する。同様に、トレーニング回路４５は、クロック信号ＣＫ，ＸＣＫに対し、遅延時間ＤＳ２経過後がデータＤＱのデータ有効ウインドウの中央付近となるように、ＤＬＬ回路４４を調整する。
【００３７】
図３に示すように、システム装置２１は、上記の可変容量３５の容量値を制御する制御回路３６を備えている。また、制御回路３６は、Ｉ／Ｏ回路３４ａ，３４ｂのスルーレート（Slew Rate ）を制御する。この制御回路３６は、パッケージ２０に含まれる可変容量２２の容量値を制御する機能を有している。
【００３８】
制御回路３６は、トレーニング制御回路５１とタイミングマージン判定回路（ＴＭ判定回路と表記、以下、ＴＭ判定回路）５２を備えている。
トレーニング制御回路５１は、ＴＭ判定回路５２に初期化信号を出力し、ＴＭ判定回路５２は初期化信号に応答して設定値を保持するレジスタを初期化する。また、トレーニング制御回路５１は、トレーニング回路４５に開始信号を出力し、トレーニング回路４５は開始信号に応答してメモリ１２との間のタイミングトレーニングを実行し、ＤＬＬ回路４４に対する設定値の最大値及び最小値を得る。そして、トレーニング回路４５は、タイミングトレーニングにより得た最大の設定値及び最小の設定値を、ＴＭ判定回路５２に出力する。
【００３９】
ＴＭ判定回路５２は、最大の設定値と最小の設定値に基づいて、そのときのデータＤＱの有効ウインドウの大きさが最大か否かを判定し、有効ウインドウが最大となるときの設定値をレジスタに記憶する。そして、ＴＭ判定回路５２レジスタに保持した設定値（最大値及び最小値）を、トレーニング制御回路５１に出力する。
【００４０】
トレーニング制御回路５１は、ＴＭ判定回路５２から出力される設定値に基づいて、可変容量３５の容量値を制御するための制御信号ＳＣ１、Ｉ／Ｏ回路３４ａ，３４ｂのスルーレートを制御するための制御信号ＳＣ２、可変容量２２の容量値を制御するための制御信号ＳＣ３を出力する。
【００４１】
可変容量３５の構成例を説明する。
図６に示すように、可変容量３５は、複数（図において３個）の電源スイッチ６１ａ〜６１ｃを備えている。各電源スイッチ６１ａ〜６１ｃの第１端子は高電位電圧ＶＤＤが供給される電源線２１ａに接続されている。電源スイッチ６１ａの第２端子には、複数（図において４個）の容量セル６２ａの第１端子が接続され、各容量セル６２ａの第２端子は、低電位電圧ＶＳＳが供給される電源線２１ｂに接続されている。同様に、電源スイッチ６１ｂの第２端子には、複数（図において４個）の容量セル６２ｂの第１端子が接続され、各容量セル６２ｂの第２端子は、低電位電圧ＶＳＳが供給される電源線２１ｂに接続されている。また、電源スイッチ６１ｃの第２端子には、複数（図において４個）の容量セル６２ａの第１端子が接続され、各容量セル６２ｃの第２端子は、低電位電圧ＶＳＳが供給される電源線２１ｂに接続されている。なお、各電源スイッチ６１ａ〜６１ｃに接続される容量セル６２ａ〜６２ｃの数は、異なっていてもよい。
【００４２】
電源スイッチ６１ａ〜６１ｃは、制御信号ＳＣ１に基づいて、互いに独立して動作する。例えば、制御信号ＳＣ１は、可変容量３５に含まれる電源スイッチの数に応じた３ビットの信号（ＳＣ１ａ〜ＳＣ１ｃ）である。電源スイッチ６１ａ〜６１ｃは、制御信号ＳＣ１ａ〜ＳＣ１ｃに応答してそれぞれオンオフする。従って、オンした電源スイッチに応じた数の容量セルが互いに並列接続されるとともに、２つの電源線２１ａ，２１ｂ間に接続される。つまり、電源スイッチの数を変更することにより、２つの電源線２１ａ，２１ｂ間の容量値を調整することができる。
【００４３】
次に、可変容量２２の構成例を説明する。
図７（ａ）に示すように、可変容量２２の電源端子７１ａには高電位電圧ＶＤＤが供給され、電源端子７１ｂには低電位電圧ＶＳＳが供給される。また、複数（図において３つ）の制御端子７２ａ〜７２ｃには制御信号ＳＣ３が供給される。例えば、制御信号ＳＣ３は、３ビットの信号である。制御信号ＳＣ３のビット数は、可変容量３５に含まれる電源スイッチの数に対応する。各端子７２ａ〜７２ｃに供給される信号を、それぞれＳＣ３ａ〜ＳＣ３ｃとする。に電源端子７１ａには電源線７３ａが接続され、電源端子７１ｂには電源線７３ｂが接続されている。電源線７３ａには複数（図において３個）の電源スイッチ７４ａ〜７４ｃの第１端子が接続されている。
【００４４】
電源スイッチ７４ａの第２端子には、複数（図において４個）の容量セル７５ａの第１端子が接続され、各容量セル７５ａの第２端子は、低電位電圧ＶＳＳが供給される電源線７３ｂに接続されている。同様に、電源スイッチ７４ｂの第２端子には、複数（図において４個）の容量セル７５ｂの第１端子が接続され、各容量セル７５ｂの第２端子は、低電位電圧ＶＳＳが供給される電源線７３ｂに接続されている。また、電源スイッチ７４ｃの第２端子には、複数（図において４個）の容量セル７５ａの第１端子が接続され、各容量セル７５ｃの第２端子は、低電位電圧ＶＳＳが供給される電源線７３ｂに接続されている。なお、各電源スイッチ７４ａ〜７４ｃに接続される容量セル７５ａ〜７５ｃの数は、異なっていてもよい。
【００４５】
複数の制御端子７２ａ〜７２ｃはバッファ回路７６ａ〜７６ｃの入力端子にそれぞれ接続されている。そして、各バッファ回路７６ａ〜７６ｃの出力信号は各電源スイッチ７４ａ〜７４ｃに供給される。従って、電源スイッチ７４ａ〜７４ｃは、制御信号ＳＣ３ａ〜ＳＣ３ｃに基づいて、互いに独立して動作する。電源スイッチ７４ａ〜７４ｃは、制御信号ＳＣ３ａ〜ＤＣ３ｃに応答してそれぞれオンオフする。従って、オンした電源スイッチに応じた数の容量セルが互いに並列接続されるとともに、２つの電源線７３ａ，７３ｂ間に接続される。つまり、電源スイッチの数を変更することにより、２つの電源線７３ａ，７３ｂ間の容量値を調整することができる。
【００４６】
なお、可変容量２２を、図７（ｂ）に示すように、システム装置（ダイ）２１に直接的に接続される構成としてもよい。このような構成は、システム装置２１のパッケージサイズを縮小することが可能とする。
【００４７】
次に、Ｉ／Ｏ回路３４ｂの構成例を説明する。
図８に示すように、複数（図において４個）のＮＡＮＤ回路８１ａ〜８１ｄには、図３に示すＤＬＬ回路４２から出力される信号Ｓｉｎが供給される。また、この信号Ｓｉｎは、複数のインバータ回路８２ａ〜８２ｄに供給される。各ＮＡＮＤ回路８１ａ〜８１ｄには、制御信号ＳＣ２が供給される。なお、この例において、制御信号ＳＣ２は、Ｉ／Ｏ回路３４ａの構成に対応する４ビットの信号である。これらの信号をＳＣ２ａ〜ＳＣ２ｄとする。各ＮＡＮＤ回路８１ａ〜８１ｄには、制御信号ＳＣ２ａ〜ＳＣ２ｄがそれぞれ供給される。各インバータ回路８２ａ〜８２ｄの出力信号は、ＡＮＤ回路８３ａ〜８３ｄに供給される。各ＡＮＤ回路８３ａ〜８３ｄには、制御信号ＳＣ２ａ〜ＳＣ２ｄがそれぞれ供給される。
【００４８】
ＮＡＮＤ回路８１ａ〜８１ｄの出力信号はＰチャネルＭＯＳトランジスタ８４ａ〜８４ｄのゲートにそれぞれ供給される。同様に、ＡＮＤ回路８３ａ〜８３ｄの出力信号は、ＮチャネルＭＯＳトランジスタ８５ａ〜８５ｄのゲートに供給される。
【００４９】
各トランジスタ８４ａ〜８４ｄのソースは、高電位電圧ＶＤＤが供給される電源線２１ａに接続され、各トランジスタ８４ａ〜８４ｄのドレインは出力ノード８６に接続されている。この出力ノード８６は、各トランジスタ８５ａ〜８５ｄのドレインに接続され、各トランジスタ８５ａ〜８５ｄのソースは、低電位電圧ＶＳＳが供給される電源線２１ｂに接続されている。
【００５０】
上記のように構成されたＩ／Ｏ回路３４ｂは、信号Ｓｉｎに応じて、出力ノード８６と電源線２１ａとの間のＰチャネルＭＯＳトランジスタと、出力ノード８６と電源線２１ｂとの間のＮチャネルＭＯＳトランジスタとが、相補的にオンオフする。そして、オンするトランジスタの数は、制御信号ＳＣ２に対応する。そして、ＰチャネルＭＯＳトランジスタは、出力ノード８６、つまり図３に示す配線２０ｄの電位を、低電位電圧ＶＳＳレベルから高電位電圧ＶＤＤレベルまで上昇させる。この電位の上昇にかかる時間、即ちスルーレートは、高電位電圧ＶＤＤが供給される電源線２１ａから出力ノード８６に向って流れる電流の量に対応する。つまり、オンするＰチャネルＭＯＳトランジスタの数が多いほど、電源線２１ａから出力ノード８６に向って流れる電流量が多くなり、出力ノード８６（配線２０ｄ）の電位が早く上昇する、すなわちスルーレートが高くなる。逆に、同時にオンするトランジスタの数が少ないほど、スルーレートが低くなる。
【００５１】
スルーレートが高く設定されるほど、出力信号のレベルを短時間で変化する。つまり電流変化が急峻となるため、電源電圧に生じるノイズが大きくなる。このため、電源電圧に発生するノイズの観点では、スルーレートが小さく設定される方が好ましい。一方、スルーレートが小さく設定されたＩ／Ｏ回路から出力される信号は、高電位電圧ＶＤＤレベルと低電位電圧ＶＳＳレベルとの間でレベルが変化する期間即ち遷移期間が長くなり、その分、レベルが安定する期間即ち有効期間（有効ウインドウ）が短くなる。このため、信号を取り込むタイミングマージンの観点では、スルーレートが大きく設定される方が好ましい。従って、Ｉ／Ｏ回路において、電源電圧に生じるノイズが小さく、有効ウインドウが大きくなるように、スルーレートが設定されることが好ましい。
【００５２】
次に、トレーニング制御回路５１の構成例を説明する。
図９に示すように、トレーニング命令送信回路９１は、システム装置２１内の回路、例えばメモリコントローラ３２から自動調整実行命令信号を受け取ると、先ず、各レジスタ９２〜９４とＴＭ判定回路５２に初期化信号ＳＩＴを出力する。
【００５３】
レジスタ９２は、初期化信号ＳＩＴに応答して、Ｉ／Ｏ回路３４ａ，３４ｂのスルーレートを調整するための初期値を記憶する。レジスタ９２に記憶された初期値はＩ／Ｏ回路３４ａ，３４ｂに供給され、Ｉ／Ｏ回路３４ａ，３４ｂは、初期値に応じたスルーレートで動作するように設定される。レジスタ９３は、初期化信号ＳＩＴに応答して、システム装置２１内の可変容量３５の容量値を調整するための初期値を記憶する。レジスタ９３に記憶された初期値は可変容量３５に供給され、可変容量３５は初期値に応じた容量値に設定される。レジスタ９４は、初期化信号ＳＩＴに応答して、パッケージ１１内の可変容量２２の容量値を調整するための初期値を記憶する。レジスタ９４に記憶された初期値は可変容量２２に供給され、可変容量２２は初期値に応じた容量値に設定される。ＴＭ判定回路５２は、初期化信号ＳＩＴに応答して初期値を記憶する。
【００５４】
次いで、トレーニング命令送信回路９１は、出力制御回路９５、容量制御回路９６，９７、トレーニング回路４５に対し、それぞれ所定のタイミングで、処理実行信号を出力する。各制御回路９５，９６，９７には、システム装置２１内の回路、例えばメモリコントローラ３２から、カウンタ終了設定信号が供給される。カウンタ終了設定信号は、各制御回路９５〜９７が、それぞれ処理を実行する回数を設定するための信号である。即ち、各制御回路９５〜９７は、カウント機能を有し、１回の処理を実行する毎に、カウント値をカウントアップする。そして、各制御回路９５〜９７は、それぞれカウント値がカウンタ終了設定信号と等しくなると、処理を終了する。
【００５５】
出力制御回路９５は、処理実行信号に応答して、設定値を変更した制御信号ＳＣ２をＩ／Ｏ回路３４ａ，３４ｂに出力し、Ｉ／Ｏ回路３４ａ，３４ｂのスルーレートを変更するために制御信号ＳＣ２を出力する。容量制御回路９６は、処理実行信号に応答して、設定値を変更した制御信号ＳＣ１を可変容量３５に出力し、可変容量３５の容量値を変更する。容量制御回路９７は、処理実行信号に応答して、設定値を変更した制御信号ＳＣ３を可変容量３５に出力し、可変容量２２の容量値を変更する。各制御回路９５〜９７は、設定値をレジスタ更新回路９８に出力する。
【００５６】
トレーニング回路４５は、処理実行信号に応答して、図３に示すメモリ１２に対するタイミングトレーニングを実行する。
トレーニング命令送信回路９１は、各制御回路９５〜９７を動作させて、Ｉ／Ｏ回路３４ａ、３４ｂのスルーレートと、各可変容量３５，２２の容量値を順次変更する。更に、トレーニング命令送信回路９１は、トレーニング回路４５を動作させて、各設定におけるＤＬＬ回路４４に設定した最大値及び最小値をトレーニング回路４５が取得するように、各制御回路９５〜９７及びトレーニング回路４５を制御する。
【００５７】
トレーニング回路４５は、取得した最大値及び最小値をＴＭ判定回路５２に出力する。
ＴＭ判定回路５２は、トレーニング回路４５から入力される最大値及び最小値に基づくタイミングマージンを判定し、その判定結果に応じて更新信号ＳＵＰをレジスタ更新回路９８に出力する。詳しくは、ＴＭ判定回路５２は、トレーニング回路４５から供給される最大値及び最小値に基づいて、タイミングマージンを算出する。例えば、ＴＭ判定回路５２は、最大値から最小値を減算してタイミングマージンを算出する。そして、ＴＭ判定回路５２は、算出したタイミングマージンと保持値とを比較する。ＴＭ判定回路５２は、算出したタイミングマージンが保持値よりも大きい場合、タイミングマージンと等しい値を保持し、更新信号ＳＵＰを出力する。一方、ＴＭ判定回路５２は、算出したタイミングマージンが保持値以下の場合、更新信号ＳＵＰを出力しない。
【００５８】
レジスタ更新回路９８は、更新信号ＳＵＰに応答して、各レジスタ９２〜９４の値を更新する。即ち、レジスタ更新回路９８は、更新信号ＳＵＰに応答して、各制御回路９５〜９７から出力される設定値を、対応するレジスタ９２〜９４に出力し、各レジスタ９２〜９４は、入力される設定値を、新たな設定値として保持する。この結果、各レジスタ９２〜９４には、タイミングマージンが最大となるときの各制御回路９５〜９７の設定値が保持される。
【００５９】
次に、ＴＭ判定回路５２の構成例を説明する。
図１０に示すように、ＴＭ判定回路５２は、設定保持レジスタ１０１と、結果保持レジスタ１０２と、比較回路１０３とを備えている。設定保持レジスタ１０１は、図３に示すＤＬＬ回路４４に設定する設定値を記憶する。設定保持レジスタ１０１は、トレーニング制御回路５１から供給される初期化信号ＳＩＴに応答して記憶した値を初期化する。
【００６０】
結果保持レジスタ１０２は、トレーニング回路４５から供給される最大値及び最小値を記憶する。トレーニング回路４５は、図３に示すメモリ１２に対し、ＤＬＬ回路４４の設定値を変更する毎に、メモリ１２に対してテストアクセスを行い、その結果を記憶する。例えば、トレーニング回路４５は、メモリ１２が正常にテストデータを受信したか否かを判断し、正常にテストデータを受信した場合には「１」を、正常にテストデータを受信できなかった場合には「０」を記憶する。データＤＱは、複数ビット（例えば８ビット）の信号である。トレーニング回路４５は、この処理を、データＤＱの各ビット毎に行う。その結果に一例を図１１に示す。なお、図１１では、右側ほど、各ＤＬＬ回路４４の設定値を大きくした結果を示す。
【００６１】
そして、トレーニング回路４５は、メモリ１２が全てのビットＤＱ［０］〜ＤＱ［７］を正常に受信したときの設定値の最小値と最大値を求める。例えば、トレーニング回路４５は、各ビットＤＱ［０］〜ＤＱ［７］を論理積演算（ＡＮＤ）する。その演算結果において、トレーニング回路４５は、結果が「１」となる設定値のうち、最小の設定値（最小値）と、最大の設定値（最大値）を求める。そして、トレーニング回路４５は、これらの最大値及び最小値を結果保持レジスタ１０２に供給する。
【００６２】
図１０に示すように、設定保持レジスタ１０１は、保持した設定値（最小値（Ｍｉｎ）、最大値（Ｍａｘ））を比較回路１０３に出力する。同様に、結果保持レジスタ１０２は、保持した結果値（最小値（Ｍｉｎ）、最大値（Ｍａｘ））を比較回路１０３に出力する。
【００６３】
比較回路１０３は、設定値の最大値から設定値の最小値を減算して設定値のウインドウ幅を算出する。同様に、比較回路１０３は、結果値の最大値から結果値の最小値を減算して結果値のウインドウ幅を算出する。そして、比較回路１０３は、設定値のウインドウ幅と結果値のウインドウ幅とを比較する。
【００６４】
比較回路１０３は、結果値のウインドウ幅が設定値のウインドウ幅よりも大きい場合に、結果値の最大値及び最小値を設定保持レジスタ１０１に出力し、結果値のウインドウ幅が設定値のウインドウ幅以下の場合に結果値を出力しない。設定保持レジスタ１０１は、比較回路１０３から供給される値、即ち結果値の最大値及び最小値を記憶する。従って、設定保持レジスタには、ウインドウ幅が最大となるときの結果値の最大値及び最小値が記憶される。
【００６５】
また、比較回路１０３は、結果値のウインドウ幅が設定値のウインドウ幅よりも大きい場合に、更新信号ＳＵＰを出力する。この更新信号ＳＵＰは、図９に示すレジスタ更新回路９８に供給される。レジスタ更新回路９８は、更新信号ＳＵＰに応答して、各制御回路９５〜９７から供給される設定値を各レジスタ９２〜９４にそれぞれ出力し、各レジスタ９２〜９４は供給される設定値を記憶する。従って、各レジスタ９２〜９４には、ウインドウ幅が最大となるときの設定値がそれぞれ記憶される。
【００６６】
図３に示す制御回路３６は、各設定値をそれぞれ対応する回路に設定し、調整処理を終了する。即ち、制御回路３６は、レジスタ９２に保持された設定値をＩ／Ｏ回路３４ａ，３４ｂに設定する。同様に、制御回路３６は、レジスタ９３，９４に保持された設定値を可変容量３５，２２に設定する。また、制御回路３６は、図１０に示す設定保持レジスタ１０１に保持された最大値及び最小値に基づいて、図３に示すＤＬＬ回路４４の遅延量を設定する。例えば、制御回路３６は、最大値と最小値の中間値（＝（最大値＋最小値）／２）を算出し、この中間値を遅延値として各ＤＬＬ回路４４に設定する。
【００６７】
次に、上記のシステムにおいて、制御回路３６に係る処理の流れを説明する。
図１２に示すように、先ず、図３に示すパッケージ（ＰＫＧ）２０の可変容量２２の初期値を設定する（ステップ２０１）。次いで、システム装置（ＤＩＥ）２１の可変容量３５の初期値を設定する（ステップ２０２）。次いで、Ｉ／Ｏ回路３４ａ，３４ｂの初期値を設定する（ステップ２０３）。
【００６８】
次いで、図３に示すトレーニング回路４５によりタイミングトレーニングを実行する（ステップ２０４）。
次いで、タイミングマージンを判定する（ステップ２０５）。そして、判定結果に基づき、ＤＬＬ回路４４の設定値が更新されたか否かを判断する（ステップ２０６）。設定値が更新された場合（判断：ＹＥＳ）、各設定値をレジスタに保持する（ステップ２０７）。一方、設定値が更新されていない場合（判断：ＮＯ）、次のステップ２０７をスキップする。
【００６９】
次いで、Ｉ／Ｏ回路３４ａ，３４ｂに対して全ての出力設定を終了したか否かを判断する（ステップ２０８）。設定が終了していない場合（判断：ＮＯ）、Ｉ／Ｏ回路３４ａ，３４ｂに対する設定を変更し（ステップ２０９）、ステップ２０４に移行する。一方、設定を終了した場合（判断：ＹＥＳ）、ステップ２１０へ移行する。
【００７０】
次いで、システム装置２１（ＤＩＥ）内の可変容量３５に対して全ての容量設定を終了したか否かを判断する（ステップ２１０）。設定が終了していない場合（判断：ＮＯ）、可変容量３５に対する設定を変更し（ステップ２１１）、ステップ２０４に移行する。一方、設定を終了した場合（判断：ＹＥＳ）、ステップ２１２へ移行する。
【００７１】
次いで、パッケージ２０内の可変容量２２に対して全ての容量設定を終了したか否かを判断する（ステップ２１２）。設定が終了していない場合（判断：ＮＯ）、可変容量２２に対する設定を変更し（ステップ２１３）、ステップ２０４に移行する。一方、設定を終了した場合（判断：ＹＥＳ）、ステップ２１４へ移行する。
【００７２】
そして、レジスタに保持した各設定値を対応する回路にそれぞれ最終的に設定し（ステップ２１４）、処理を終了する。
次に、タイミングトレーニングの処理を説明する。
【００７３】
図１３に示すように、先ず、図３に示すＤＬＬ回路４４に対する初期値を設定する（ステップ２２１）。次いで、図３に示すメモリ１２に対してテストアクセスを行い（ステップ２２２）、メモリ１２が正常にアクセスしたときのＤＬＬ回路４４に設定した設定値を保持する（ステップ２２３）。
【００７４】
次いで、ＤＬＬ回路４４に対する全ての設定値の設定を終了したか否かを判断する（ステップ２２４）。設定が終了していない場合（判断：ＮＯ）、ＤＬＬ回路４４に対する設定を変更し（ステップ２２５）、ステップ２２２に移行する。一方、設定を終了した場合（判断：ＹＥＳ）、ステップ２２６へ移行する。
【００７５】
次いで、ステップ２２３において保持した設定値、つまりメモリ１２が正常にアクセスしたときのＤＬＬ回路４４に設定した設定値のうち、最大の設定値（最大値）と最小の設定値（最小値）をＴＭ判定回路５２に送信する（ステップ２２６）。
【００７６】
次いで、最大値及び最小値に基づいて、例えば最大値と最小値の中間値をＤＬＬ回路４４に設定し（ステップ２２７）処理を終了する。
次に、テストアクセス処理を説明する。
【００７７】
図１５に示すように、先ず、図３に示すメモリ１２の全てのメモリセルに、初期値（例えば「０」）を書き込む（ステップ２３１）。このとき、確実に初期値を書き込むために、複数サイクルに亘って書き込みを行う。
【００７８】
次いで、メモリ１２に、初期値と異なる値の第１の期待値（例えば「１」）を書き込む（ステップ２３２）。このとき、最大スピード動作でのデータ書き込みをテストするために、１サイクル目で期待値を書き込む。次いで、第１の期待値を書き込んだアドレスからデータを読み出し（ステップ２３３）、読み込んだデータ（リードデータ）と期待値とを比較する（ステップ２３４）。リードデータと第１の期待値とが一致しない場合（判断：ＮＯ）、結果を格納する領域（例えばレジスタ）に正常にアクセスできなかった旨を示す値（例えば「０」）を格納し（ステップ２３５）、処理を終了する。一方、リードデータと第１の期待値とが一致する場合（判断：ＹＥＳ）、結果に正常にアクセスできた旨を示す値（例えば「１」）を格納する（ステップ２３６）。
【００７９】
次いで、ステップ２３２と同様に、第１の期待値と異なる第２の期待値（例えば「０」）を、第１の期待値を書き込んだアドレスに書き込む（ステップ２３７）。次いで、第２の期待値を書き込んだアドレスからデータを読み出し（ステップ２３８）、読み込んだデータ（リードデータ）と期待値とを比較する（ステップ２３９）。リードデータと第１の期待値とが一致しない場合（判断：ＮＯ）、結果を格納する領域（例えばレジスタ）に正常にアクセスできなかった旨を示す値（例えば「０」）を格納し（ステップ２４０）、処理を終了する。一方、リードデータと第１の期待値とが一致する場合（判断：ＹＥＳ）、結果に正常にアクセスできた旨を示す値（例えば「１」）を格納し（ステップ２４１）、処理を終了する。
【００８０】
したがって、メモリ１２に対して、値が「１」のデータ書き込みと、値が「０」のデータ書き込みが正常に行われた場合、第１の結果値（例えば「１」）が結果として記憶される。一方、値が「１」のデータ書き込みと、値が「０」のデータ書き込みとのうちの少なくとも一方が正常に行われなかった場合、第１の結果値と異なる第２の結果値（例えば「０」）が結果として記憶される。
【００８１】
次に、タイミングマージン判定処理を説明する。
図１４に示すように、先ず、保持した設定値の最大値及び最小値により算出した設定値のウインドウ幅と、図３に示すメモリ１２が正常にデータを受信した設定値の最小値及び最小値により算出した結果値のウインドウ幅とを比較し、結果値のウインドウ幅が設定値のウインドウ幅より大きいか否かを判断する（ステップ２５１）。結果値のウインドウ幅が設定値のウインドウ幅以下の場合（判断：ＮＯ）、処理を終了する。一方、結果値のウインドウ幅が設定値のウインドウ幅より大きい場合（判断：ＹＥＳ）、その結果値の最大値及び最小値により保持値を更新し（ステップ２５２）、処理を終了する。
【００８２】
次に、各設定値の変更例を説明する。
今、図３に示すＩ／Ｏ回路３４ａ，３４ｂに対する設定値を「０」〜「２」とする。同様に、可変容量３５，２２に対する設定値を「０」〜「１５」とする。
【００８３】
図１６に示すように、先ず、各設定要素（Ｉ／Ｏ回路３４ａ，３４ｂ、可変容量３５，２２）に対する初期値を「０」，「０」，「０」とする。このとき、タイミングマージン判定により算出される結果値のウインドウ幅は「１０」である。
【００８４】
次いで、パッケージ２０（ＰＫＧ）の可変容量２２の設定値を、「０」から「１」へと変更する。このとき、タイミングマージン判定により算出される結果値のウインドウ幅は「１５」である。従って、このウインドウ幅「１５」を記憶する。
【００８５】
同様に、パッケージ２０（ＰＫＧ）の可変容量２２の設定値を、「１５」まで「１」づつ変更する。そして、それぞれの設定段階におけるタイミングマージンの判定結果を、保持値と比較し、保持値を更新する。
【００８６】
可変容量２２に対して最大の設定値「１５」におけるタイミングマージンの判定を行うと、システム装置２１（ＤＩＥ）の可変容量３５の設定値を「１」に変更し、パッケージ２０（ＰＫＧ）の可変容量２２の設定値を、「０」から「１５」まで「１」づつ変更する変更する。
【００８７】
可変容量３５に対して最大の設定値「１５」におけるタイミングマージンの判定を行うと、Ｉ／Ｏ回路３４ａ，３４ｂに対する設定値を「０」から「１」に変更する。そして、上記と同様に、可変容量２２と可変容量３５に対する設定値を変更する。
【００８８】
同様にして、各設定要素に対する設定値の全てを設定する。
図１６に示すように、タイミングマージンの判定における結果値のウインドウ幅は、「４０」が最大値となる。従って、図９に示すレジスタ９２〜９４には、このときの設定値「０」，「４」，「７」が保持される。このように、各設定値をそれぞれ「１」づつ変更することで、最適な設定値を確実に得ることができる。
【００８９】
次に、別の各設定値の変更例を説明する。
図３に示すＩ／Ｏ回路３４ａ，３４ｂに対する設定値を「０」〜「２」とする。同様に、可変容量３５，２２に対する設定値を「０」〜「１５」とする。
【００９０】
先ず、図１７（ａ）に示すように、可変容量３５，２２に対する設定値を、所定ステップ（例えば、４ステップ）毎に変更する。つまり、設定値を、「０」，「４」，「８」，「１２」の順番で変更する。このように変更した場合、ウインドウ幅の最大値は「３６」となる。この時の設定値は、「０」，「４」，「８」である。
【００９１】
上記の第１の段階において得られた各設定値を含む範囲を設定し、その範囲内の設定値を各設定要素に設定する。
図１７（ａ）に示す結果から、Ｉ／Ｏ回路３４ａ，３４ｂに対する設定値は「０」に確定される。そして、可変容量３５に対する設定値を、「４」を中心とする範囲「１」〜「７」とする。同様に、可変容量２２に対する設定値を、「８」を中心とする範囲「５」〜「１１」とする。
【００９２】
そして、図１７（ｂ）に示すように、可変容量３５，２２に対する設定値を、最小のステップ（「１」）で変更する。
このように、設定値を変更するステップを可変することで、タイミングトレーニングを実施する回数が、設定値を「１」づつ変更する場合と比べて少なくなり、調整処理に要する時間を短縮することができる。
【００９３】
以上記述したように、本実施形態によれば、以下の効果を奏する。
（１）メモリ１２をアクセスするコア回路３１が搭載されたチップ（ダイ）には、メモリ１２に対するデータストローブ信号ＤＱＳを出力するＩ／Ｏ回路３４ａと、データＤＱを出力するＩ／Ｏ回路３４ｂが形成されている。各Ｉ／Ｏ回路３４ａ，３４ｂは、高電位電圧ＶＤＤを供給する電源線２１ａと、低電位電圧ＶＳＳを供給する電源線２１ｂとの間に接続されている。両電源線２１ａ，２１ｂ間には、可変容量３５が接続され、この可変容量３５は、高電位電圧ＶＤＤと低電位電圧ＶＳＳの電圧変動を抑制する。
【００９４】
各Ｉ／Ｏ回路３４ａ，３４ｂに信号を出力するＩ／Ｆ回路３３は、データストローブ信号ＤＱＳとデータＤＱの位相差を調整するためのＤＬＬ回路４２，４４と、両ＤＬＬ回路４２，４４の設定値（遅延時間）を制御してデータストローブ信号ＤＱＳとデータＤＱがメモリ１２に到達するタイミングを調整するトレーニング回路４５を有している。
【００９５】
システム装置２１に形成された制御回路３６は、可変容量３５の容量値を制御し、トレーニング回路４５にタイミングトレーニングを実行させる。トレーニング回路４５は、メモリ１２がデータＤＱに基づく正常なデータを書き込むことができる設定値の最大値と最小値を出力する。制御回路３６は、その最大値及び最小値に基づいてデータＤＱのウインドウ幅を算出し、より大きなウインドウ幅に対応する容量値を可変容量３５に設定する。
【００９６】
その結果、可変容量３５により、データストローブ信号ＤＱＳを出力するＩ／Ｏ回路３４ａと、データＤＱを出力するＩ／Ｏ回路３４ｂの動作により電源電圧に生じるノイズを低減するとともに、データＤＱのウインドウ幅を大きくすることができ、データストローブ信号ＤＱＳに基づいてデータＤＱを取り込むためのタイミングマージンの減少を抑制することができる。
【００９７】
（２）制御回路３６は、データストローブ信号ＤＱＳを出力するＩ／Ｏ回路３４ａと、データＤＱを出力するＩ／Ｏ回路３４ｂの駆動能力を制御する。各Ｉ／Ｏ回路３４ａ，３４ｂの駆動能力は、各Ｉ／Ｏ回路３４ａ，３４ｂから出力される信号のスルーレートに対応する。スルーレートが大きいほど、電流変化が大きく、電源電圧に発生するノイズが大きくなる。従って、データＤＱのウインドウ幅が大きく、データＤＱのスルーレートを小さくすることで、電源電圧に生じるノイズを低減し、タイミングマージンの減少を抑制することができる。
【００９８】
（３）システム装置２１が搭載されたパッケージ２０の電源線２０ａ，２０ｂの間には可変容量２２が接続され、制御回路３６は、システム装置２１の可変容量３５と同様に、パッケージ２０の可変容量２２の容量値を設定する。従って、パッケージ２０の形状等が変更された場合にも、その変更に応じて可変容量２２の容量値を設定するため、パッケージの変更に容易に対応することができる。また、パッケージの変更に対して、電源設計の再設計や電源シミュレーションの再実行を行う手間が少なくなるため、設計時間の短縮を図ることができる。
【００９９】
尚、上記各実施形態は、以下の態様で実施してもよい。
・パッケージの可変容量２２は省略されてもよい。
・パッケージの可変容量２２に対する調整処理を省略してもよい。
【０１００】
・図１には、３つの半導体装置１１〜１３を示しているが、２つ又は４つ以上の半導体装置が搭載されてもよい。また、図１には、１つのデカップリング容量１４を示しているが、複数のデカップリング容量、又は複数のデカップリング容量を含む１つ又は複数のモジュールが搭載されてもよい。また、基板１０には、抵抗やコネクタ等の他の部材が搭載されてもよい。
【０１０１】
・図１に示す半導体装置１１〜１３のパッケージは一例であり、パッケージの形状が変更されてもよい。例えば、半導体装置１１において、パッケージ２０と基板１０の電気的な接続をボンディングワイヤを用いても良い。また、半導体装置１３を例えばチップサイズパッケージ（ＣＳＰ:Chip Size Package）としてもよい。
【０１０２】
・図３に示すＤＬＬ回路４４に対し、タイミングトレーニングにより得た最大値及び最小値の中間値を設定するようにした。各ＤＬＬ回路４４に設定する値を、適宜変更してもよい。例えば、タイミングトレーニングにより得た最大値及び最小値と、既定値（例えば、セットアップ時間、ホールド時間）に基づいて設定してもよい。例えば、最小値にセットアップ時間を加算した値を設定値としてもよい。また、最大値からホールド時間を減算した値を設定値としてもよい。最小値にセットアップ時間を加算した値と、最大値からホールド時間を減算した値との中間値を設定値としてもよい。また、最小値と最大値との値の範囲（ウインドウ幅）を分割する比率を記憶し、その分割点の値を設定値としてもよい。
【０１０３】
・各回路の構成を適宜変更してもよい。例えば、図３に示すトレーニング回路４５を、制御回路３６に含める構成としてもよい。
【符号の説明】
【０１０４】
２１ａ，２１ｂ  電源線
２２  可変容量
３４ａ，３４ｂ  Ｉ／Ｏ回路（出力回路）
３５  可変容量
３６  制御回路
４２，４４  遅延同期ループ回路（ＤＬＬ回路）
４５  トレーニング回路
５１  トレーニング制御回路
５２  タイミングマージン判定回路
ＶＤＤ  高電位電圧
ＶＳＳ  低電位電圧
【図１】
2012169841.tif 000003
【図２】
2012169841.tif 000004
【図３】
2012169841.tif 000005
【図４】
2012169841.tif 000006
【図５】
2012169841.tif 000007
【図６】
2012169841.tif 000008
【図７】
2012169841.tif 000009
【図８】
2012169841.tif 000010
【図９】
2012169841.tif 000011
【図１０】
2012169841.tif 000012
【図１１】
2012169841.tif 000013
【図１２】
2012169841.tif 000014
【図１３】
2012169841.tif 000015
【図１４】
2012169841.tif 000016
【図１５】
2012169841.tif 000017
【図１６】
2012169841.tif 000018
【図１７】
2012169841.tif 000019