特許第6832777号(P6832777)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ルネサスエレクトロニクス株式会社の特許一覧

<>
  • 特許6832777-半導体装置 図000002
  • 特許6832777-半導体装置 図000003
  • 特許6832777-半導体装置 図000004
  • 特許6832777-半導体装置 図000005
  • 特許6832777-半導体装置 図000006
  • 特許6832777-半導体装置 図000007
  • 特許6832777-半導体装置 図000008
  • 特許6832777-半導体装置 図000009
  • 特許6832777-半導体装置 図000010
  • 特許6832777-半導体装置 図000011
  • 特許6832777-半導体装置 図000012
  • 特許6832777-半導体装置 図000013
  • 特許6832777-半導体装置 図000014
  • 特許6832777-半導体装置 図000015
  • 特許6832777-半導体装置 図000016
  • 特許6832777-半導体装置 図000017
  • 特許6832777-半導体装置 図000018
  • 特許6832777-半導体装置 図000019
  • 特許6832777-半導体装置 図000020
  • 特許6832777-半導体装置 図000021
  • 特許6832777-半導体装置 図000022
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6832777
(24)【登録日】2021年2月4日
(45)【発行日】2021年2月24日
(54)【発明の名称】半導体装置
(51)【国際特許分類】
   G06F 12/00 20060101AFI20210215BHJP
【FI】
   G06F12/00 564D
【請求項の数】9
【全頁数】32
(21)【出願番号】特願2017-71079(P2017-71079)
(22)【出願日】2017年3月31日
(65)【公開番号】特開2018-173782(P2018-173782A)
(43)【公開日】2018年11月8日
【審査請求日】2019年10月8日
(73)【特許権者】
【識別番号】302062931
【氏名又は名称】ルネサスエレクトロニクス株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】螢原 孝征
【審査官】 原 秀人
(56)【参考文献】
【文献】 国際公開第2010/137330(WO,A1)
【文献】 特開2012−098996(JP,A)
【文献】 特開2009−217344(JP,A)
【文献】 特開2014−241003(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00−12/06
G06F 13/16−13/18
(57)【特許請求の範囲】
【請求項1】
メモリ装置へのライトデータまたはデータストローブ信号の遅延量を調整する遅延調整回路と、
前記遅延調整回路の遅延量を設定する制御回路と、
前記遅延量を記憶する記憶部とを備え、
前記制御回路は、前記記憶部に記憶されている前記遅延量または前記遅延量を基準とした量を前記遅延調整回路に設定したときの前記ライトデータの書き込み結果に基づいて、前記記憶部に記憶されている遅延量を修正し、
前記制御回路は、第1の調整期間において、前記ライトデータの有効ウインドウのレフトエッジのタイミングが前記データストローブ信号のエッジのタイミングに一致するための前記遅延調整回路の遅延量を第1の遅延量として求め、前記ライトデータの有効ウインドウのライトエッジのタイミングが前記データストローブ信号のエッジのタイミングに一致するための前記遅延調整回路の遅延量を第2の遅延量として求め、前記第1の遅延量と前記第2の遅延量の平均値を第3の遅延量として求めて、前記第1の遅延量、前記第2の遅延量、および前記第3の遅延量を前記記憶部に書き込み、
前記制御回路は、通常動作時には、前記記憶部に記憶されている前記第3の遅延量を前記遅延調整回路の遅延量に設定し、
前記制御回路は、前記第1の調整期間後に設けられる第2の調整期間において、前記記憶部に記憶されている前記第1の遅延量を前記遅延調整回路の遅延量に設定したときの前記ライトデータの書き込み結果と、前記記憶部に記憶されている前記第2の遅延量を前記遅延調整回路の遅延量に設定したときの前記ライトデータの書き込み結果とに基づいて、前記記憶部に記憶されている前記第1の遅延量、前記第2の遅延量、および前記第3の遅延量のうちの少なくとも1つを修正、または全てを修正せず、
前記制御回路は、前記第2の調整期間において、前記記憶部に記憶されている前記第1の遅延量を前記遅延調整回路の遅延量に設定したときの前記ライトデータの書き込み結果が正常で、かつ前記記憶部に記憶されている前記第2の遅延量を前記遅延調整回路の遅延量に設定したときの前記ライトデータの書き込み結果が異常の場合には、前記記憶部に記憶されている前記第1の遅延量、前記第2の遅延量、および前記第3の遅延量を第1の量だけ減少または増加させる半導体装置。
【請求項2】
メモリ装置へのライトデータまたはデータストローブ信号の遅延量を調整する遅延調整回路と、
前記遅延調整回路の遅延量を設定する制御回路と、
前記遅延量を記憶する記憶部とを備え、
前記制御回路は、前記記憶部に記憶されている前記遅延量または前記遅延量を基準とした量を前記遅延調整回路に設定したときの前記ライトデータの書き込み結果に基づいて、前記記憶部に記憶されている遅延量を修正し、
前記制御回路は、第1の調整期間において、前記ライトデータの有効ウインドウのレフトエッジのタイミングが前記データストローブ信号のエッジのタイミングに一致するための前記遅延調整回路の遅延量を第1の遅延量として求め、前記ライトデータの有効ウインドウのライトエッジのタイミングが前記データストローブ信号のエッジのタイミングに一致するための前記遅延調整回路の遅延量を第2の遅延量として求め、前記第1の遅延量と前記第2の遅延量の平均値を第3の遅延量として求めて、前記第1の遅延量、前記第2の遅延量、および前記第3の遅延量を前記記憶部に書き込み、
前記制御回路は、通常動作時には、前記記憶部に記憶されている前記第3の遅延量を前記遅延調整回路の遅延量に設定し、
前記制御回路は、前記第1の調整期間後に設けられる第2の調整期間において、前記記憶部に記憶されている前記第1の遅延量を前記遅延調整回路の遅延量に設定したときの前記ライトデータの書き込み結果と、前記記憶部に記憶されている前記第2の遅延量を前記遅延調整回路の遅延量に設定したときの前記ライトデータの書き込み結果とに基づいて、前記記憶部に記憶されている前記第1の遅延量、前記第2の遅延量、および前記第3の遅延量のうちの少なくとも1つを修正、または全てを修正せず、
前記制御回路は、前記第2の調整期間において、前記記憶部に記憶されている前記第1の遅延量を前記遅延調整回路の遅延量に設定したときの前記ライトデータの書き込み結果が異常で、かつ前記記憶部に記憶されている前記第2の遅延量を前記遅延調整回路の遅延量に設定したときの前記ライトデータの書き込み結果が正常の場合には、前記記憶部に記憶されている前記第1の遅延量、前記第2の遅延量、および前記第3の遅延量を第1の量だけ増加または減少させる半導体装置。
【請求項3】
メモリ装置へのライトデータまたはデータストローブ信号の遅延量を調整する遅延調整回路と、
前記遅延調整回路の遅延量を設定する制御回路と、
前記遅延量を記憶する記憶部とを備え、
前記制御回路は、前記記憶部に記憶されている前記遅延量または前記遅延量を基準とした量を前記遅延調整回路に設定したときの前記ライトデータの書き込み結果に基づいて、前記記憶部に記憶されている遅延量を修正し、
前記制御回路は、第1の調整期間において、前記ライトデータの有効ウインドウのレフトエッジのタイミングが前記データストローブ信号のエッジのタイミングに一致するための前記遅延調整回路の遅延量を第1の遅延量として求め、前記ライトデータの有効ウインドウのライトエッジのタイミングが前記データストローブ信号のエッジのタイミングに一致するための前記遅延調整回路の遅延量を第2の遅延量として求め、前記第1の遅延量と前記第2の遅延量の平均値を第3の遅延量として求めて、前記第1の遅延量、前記第2の遅延量、および前記第3の遅延量を前記記憶部に書き込み、
前記制御回路は、通常動作時には、前記記憶部に記憶されている前記第3の遅延量を前記遅延調整回路の遅延量に設定し、
前記制御回路は、前記第1の調整期間後に設けられる第2の調整期間において、前記記憶部に記憶されている前記第1の遅延量を前記遅延調整回路の遅延量に設定したときの前記ライトデータの書き込み結果と、前記記憶部に記憶されている前記第2の遅延量を前記遅延調整回路の遅延量に設定したときの前記ライトデータの書き込み結果とに基づいて、前記記憶部に記憶されている前記第1の遅延量、前記第2の遅延量、および前記第3の遅延量のうちの少なくとも1つを修正、または全てを修正せず、
前記制御回路は、前記第2の調整期間において、前記記憶部に記憶されている前記第1の遅延量を前記遅延調整回路の遅延量に設定したときの前記ライトデータの書き込み結果が異常で、かつ前記記憶部に記憶されている前記第2の遅延量を前記遅延調整回路の遅延量に設定したときの前記ライトデータの書き込み結果が異常の場合には、前記記憶部に記憶されている前記第1の遅延量を第1の量だけ増加または減少させ、前記記憶部に記憶されている前記第2の遅延量を前記第1の量だけ減少または増加させ、前記記憶部に記憶されている前記第3の遅延量を変化させない半導体装置。
【請求項4】
メモリ装置へのライトデータまたはデータストローブ信号の遅延量を調整する遅延調整回路と、
前記遅延調整回路の遅延量を設定する制御回路と、
前記遅延量を記憶する記憶部とを備え、
前記制御回路は、前記記憶部に記憶されている前記遅延量または前記遅延量を基準とした量を前記遅延調整回路に設定したときの前記ライトデータの書き込み結果に基づいて、前記記憶部に記憶されている遅延量を修正し、
前記制御回路は、第1の調整期間において、前記ライトデータの有効ウインドウのレフトエッジのタイミングが前記データストローブ信号のエッジのタイミングに一致するための前記遅延調整回路の遅延量を第1の遅延量として求め、前記ライトデータの有効ウインドウのライトエッジのタイミングが前記データストローブ信号のエッジのタイミングに一致するための前記遅延調整回路の遅延量を第2の遅延量として求め、前記第1の遅延量と前記第2の遅延量の平均値を第3の遅延量として求めて、前記第1の遅延量、前記第2の遅延量、および前記第3の遅延量を前記記憶部に書き込み、
前記制御回路は、通常動作時には、前記記憶部に記憶されている前記第3の遅延量を前記遅延調整回路の遅延量に設定し、
前記制御回路は、前記第1の調整期間後に設けられる第2の調整期間において、前記記憶部に記憶されている前記第1の遅延量を前記遅延調整回路の遅延量に設定したときの前記ライトデータの書き込み結果と、前記記憶部に記憶されている前記第2の遅延量を前記遅延調整回路の遅延量に設定したときの前記ライトデータの書き込み結果とに基づいて、前記記憶部に記憶されている前記第1の遅延量、前記第2の遅延量、および前記第3の遅延量のうちの少なくとも1つを修正、または全てを修正せず、
前記制御回路は、前記第2の調整期間に、前記ライトデータとして、外部から与えられた通常データを前記メモリ装置に書き込む半導体装置。
【請求項5】
前記制御回路は、前記第2の調整期間に、前記通常データの書き込み結果が異常の場合に、前記第1の遅延量、前記第2の遅延量、および前記第3の遅延量のうちの少なくとも1つを修正後に、前記通常データを再度書き込む、請求項記載の半導体装置。
【請求項6】
メモリ装置へのライトデータまたはデータストローブ信号の遅延量を調整する遅延調整回路と、
前記遅延調整回路の遅延量を設定する制御回路と、
前記遅延量を記憶する記憶部とを備え、
前記制御回路は、前記記憶部に記憶されている前記遅延量または前記遅延量を基準とした量を前記遅延調整回路に設定したときの前記ライトデータの書き込み結果に基づいて、前記記憶部に記憶されている遅延量を修正し、
前記制御回路は、第1の調整期間において、前記ライトデータの有効ウインドウのレフトエッジのタイミングが前記データストローブ信号のエッジのタイミングに一致するための前記遅延調整回路の遅延量を第1の遅延量として求め、前記ライトデータの有効ウインドウのライトエッジのタイミングが前記データストローブ信号のエッジのタイミングに一致するための前記遅延調整回路の遅延量を第2の遅延量として求め、前記第1の遅延量と前記第2の遅延量の平均値を第3の遅延量として求めて、前記第1の遅延量、前記第2の遅延量、および前記第3の遅延量を前記記憶部に書き込み、
前記制御回路は、通常動作時には、前記記憶部に記憶されている前記第3の遅延量を前記遅延調整回路の遅延量に設定し、
前記制御回路は、前記第1の調整期間後に設けられる第2の調整期間において、前記記憶部に記憶されている前記第1の遅延量を前記遅延調整回路の遅延量に設定したときの前記ライトデータの書き込み結果と、前記記憶部に記憶されている前記第2の遅延量を前記遅延調整回路の遅延量に設定したときの前記ライトデータの書き込み結果とに基づいて、前記記憶部に記憶されている前記第1の遅延量、前記第2の遅延量、および前記第3の遅延量のうちの少なくとも1つを修正、または全てを修正せず、
前記制御回路は、前記第2の調整期間において、前記第1の遅延量を前記遅延調整回路の遅延量に設定したときの前記ライトデータの書き込み結果と、前記第2の遅延量を前記遅延調整回路の遅延量に設定したときの前記ライトデータの書き込み結果とに基づいて、前記第2の調整期間を設ける時間間隔を変更する半導体装置。
【請求項7】
メモリ装置へのライトデータまたはデータストローブ信号の遅延量を調整する遅延調整回路と、
前記遅延調整回路の遅延量を設定する制御回路と、
前記遅延量を記憶する記憶部とを備え、
前記制御回路は、前記記憶部に記憶されている前記遅延量または前記遅延量を基準とした量を前記遅延調整回路に設定したときの前記ライトデータの書き込み結果に基づいて、前記記憶部に記憶されている遅延量を修正し、
前記制御回路は、第1の調整期間において、前記ライトデータの有効ウインドウのレフトエッジのタイミングが前記データストローブ信号のエッジのタイミングに一致するための前記遅延調整回路の遅延量を第1の遅延量として求め、前記ライトデータの有効ウインドウのライトエッジのタイミングが前記データストローブ信号のエッジのタイミングに一致するための前記遅延調整回路の遅延量を第2の遅延量として求め、前記第1の遅延量と前記第2の遅延量の平均値を第3の遅延量として求めて、前記第1の遅延量、前記第2の遅延量、前記第3の遅延量を前記記憶部に書き込み、
前記制御回路は、通常動作時には、前記記憶部に記憶されている前記第3の遅延量を前記遅延調整回路の遅延量に設定し、
前記制御回路は、前記第1の調整期間後に設けられる第2の調整期間において、少なくとも、前記記憶部に記憶されている前記第1の遅延量よりも所定量多い遅延量を前記遅延調整回路の遅延量に設定したときの前記ライトデータの書き込み結果、および前記記憶部に記憶されている前記第2の遅延量よりも前記所定量少ない遅延量を前記遅延調整回路の遅延量に設定したときの前記ライトデータの書き込み結果に基づいて、前記記憶部に記憶されている前記第1の遅延量、前記第2の遅延量、および前記第3の遅延量のうち少なくとも1つを修正、または全てを修正しない半導体装置。
【請求項8】
前記制御回路は、前記第2の調整期間において、前記記憶部に記憶されている前記第1の遅延量よりもk×ΔDだけ大きい遅延量を前記遅延調整回路の遅延量に設定したときの前記ライトデータの書き込み結果を前記ライトデータの有効ウインドウのレフトエッジ検査用の書込み結果として求め、
前記制御回路は、前記ライトデータのレフトエッジ検査用の書込み結果が異常となるまでkをN(≧2)から順次減少させることによって、1個以上の前記レフトエッジ検査用の書込み結果を求め、
前記制御回路は、前記第2の調整期間において、前記記憶部に記憶されている前記第2の遅延量よりもk×ΔDだけ小さい遅延量を前記遅延調整回路の遅延量に設定したときの前記ライトデータの書き込み結果を前記ライトデータの有効ウインドウのライトエッジ検査用の書込み結果として求め、
前記制御回路は、前記ライトデータのライトエッジ検査用の書込み結果が異常となるまでkをN(≧2)から順次減少させることによって、1個以上の前記ライトエッジ検査用の書込み結果を求め、
前記制御回路は、1個以上の前記レフトエッジ検査用の書込み結果、および1個以上の前記レフトエッジ検査用の書込み結果に基づいて、前記記憶部に記憶されている前記第1の遅延量、前記第2の遅延量、および前記第3の遅延量のうち少なくとも1つを修正、または全てを修正しない、請求項記載の半導体装置。
【請求項9】
前記制御回路は、前記半導体装置内の温度変動または電圧の変動に基づいて、前記Nを変更する、請求項記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体装置およびタイミング較正方法に関し、たとえば、メモリを内蔵した半導体装置に好適に利用できるものである。
【背景技術】
【0002】
従来から、メモリの書込み動作の実行に必要な信号のタイミングを較正するトレーニング機能を備えた装置が知られている。たとえば、特許文献1に記載のメモリ制御装置が、1つまたは複数の書き込み−読み出し−検証の動作を実行してデータストローブ信号とクロック信号との間のクロックサイクル関係を較正する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2015−43254号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、初期トレーニング後において、メモリまたはメモリ制御装置の温度また電圧が変動した場合に、較正された信号のタイミングが変動するため、再度トレーニングを実行することが必要となる。
【0005】
特許文献1に記載されているトレーニングは、長時間を要するとともに、トレーニング期間中には、メモリの通常動作が妨げられる。そのため、信号のタイミングの変動に対応するため、初期トレーニングと同じ処理を再度実行すると、メモリを利用する半導体装置のパフォーマンスが低下する。
【0006】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【0007】
一実施形態の半導体装置において、制御回路は、記憶部に記憶されている遅延量または遅延量を基準とした量を遅延調整回路に設定したときのライトデータの書き込み結果に基づいて、記憶部に記憶されている遅延量を修正する。
【発明の効果】
【0008】
一実施形態によれば、再トレーニングの実行時間を短くすることができる。
【図面の簡単な説明】
【0009】
図1】第1の実施形態の半導体装置の構成を表わす図である。
図2】第2の実施形態の半導体装置の構成を表わす図である。
図3】第3の実施形態の半導体装置の構成を表わす図である。
図4】第3の実施形態における遅延調整回路の遅延量の調整手順を表わすフローチャートである。
図5】コードの修正方法を定めたルールRAを表わす図である。
図6】初期トレーニングによって設定されるコードL_D、R_D、C_Dを説明するための図である。
図7】(a)は、ルールRAのパターンA2が適用される例を表わす図である。(b)は、ルールRAのパターンA3が適用される例を表わす図である。(c)は、ルールRAのパターンA4が適用される例を表わす図である。
図8】第4の実施形態の半導体装置の構成を表わす図である。
図9】第4の実施形態の遅延調整回路の遅延量の調整手順を表わすフローチャートである。
図10】第5の実施形態の半導体装置の構成を表わす図である。
図11】第5の実施形態の遅延調整回路の遅延量の調整手順を表わすフローチャートである。
図12】第6の実施形態の遅延調整回路の遅延量の調整手順を表わすフローチャートである。
図13図12のステップS403におけるレフトエッジ検査の手順を説明するための図である。
図14図12のステップS404におけるレフトエッジ検査の手順を説明するための図である。
図15】コードの修正方法を定めたルールRBを表わす図である。
図16】(a)は、ルールRBのパターンT5が適用される例を表わす図である。(b)は、ルールRBのパターンT16が適用される例を表わす図である。
図17】第7の実施形態の遅延調整回路の遅延量の調整手順を表わすフローチャートである。
図18】再トレーニングの周期の変化を表わす図である。
図19】第8の実施形態の半導体装置の構成を表わす図である。
図20】第8の実施形態の遅延調整回路の遅延量の調整手順を表わすフローチャートである。
図21】第9の実施形態の遅延調整回路の遅延量の調整手順を表わすフローチャートである。
【発明を実施するための形態】
【0010】
以下、実施の形態について、図面を用いて説明する。
[第1の実施形態]
図1は、第1の実施形態の半導体装置71の構成を表わす図である。
【0011】
この半導体装置71は、メモリコントローラ51と、メモリ装置52とを備える。メモリコントローラ51は、遅延調整回路53と、制御回路54と、記憶部55とを備える。
【0012】
遅延調整回路53は、メモリ装置52へのライトデータの遅延量を調整する。
制御回路54は、遅延調整回路53の遅延量を設定する。
【0013】
記憶部55は、遅延量を記憶する。
制御回路54は、記憶部55に記憶されている遅延量またはその遅延量を基準とした量を遅延調整回路53に設定したときのライトデータの書き込み結果に基づいて、記憶部55に記憶されている遅延量を修正する。
【0014】
以上のように、本実施の形態の半導体装置によれば、記憶部55に記憶されている、メモリ装置52へのライトデータの遅延量を調整する遅延調整回路53の遅延量またはその遅延量を基準とした量を遅延調整回路53に設定したときのライトデータの書き込み結果に基づいて、記憶部55に記憶されている遅延量を修正する。本実施の形態では、第1の調整期間の後の第2の調整期間に、第1の調整期間によって得られ、記憶部55に記憶されている遅延量を全く使わない従来の方式と比べて、第2の調整期間に要する時間を短くすることができる。たとえば、第1の調整期間は、初期トレーニングとし、第2の調整期間は、再トレーニングとしてもよい。
【0015】
[第2の実施形態]
図2は、第2の実施形態の半導体装置72の構成を表わす図である。
【0016】
この半導体装置72は、メモリコントローラ61と、メモリ装置52とを備える。メモリコントローラ61は、遅延調整回路63と、制御回路64と、記憶部65とを備える。
【0017】
遅延調整回路63は、メモリ装置52へのデータストローブ信号の遅延量を調整する。
記憶部65は、遅延量を記憶する。
【0018】
制御回路64は、記憶部65に記憶されている遅延量またはその遅延量を基準とした量を遅延調整回路63に設定したときのライトデータの書き込み結果に基づいて、記憶部65に記憶されている遅延量を修正する。
【0019】
以上のように、本実施の形態の半導体装置によれば、記憶部65に記憶されている、メモリ装置52へのデータストローブ信号の遅延量を調整する遅延調整回路63の遅延量またはその遅延量を基準とした量を遅延調整回路63に設定したときのライトデータの書き込み結果に基づいて、記憶部65に記憶されている遅延量を修正する。本実施の形態では、第1の調整期間の後の第2の調整期間に、第1の調整期間によって得られ、記憶部65に記憶されている遅延量を全く使わない従来の方式と比べて、第2の調整期間に要する時間を短くすることができる。たとえば、第1の調整期間は、初期トレーニングとし、第2の調整期間は、再トレーニングとしてもよい。
【0020】
[第3の実施形態]
図3は、第3の実施形態の半導体装置73の構成を表わす図である。
【0021】
この半導体装置73は、メモリ装置13と、メモリコントローラ32とを備える。
メモリコントローラ32は、遅延調整回路12と、制御回路21と、双方向バッファBF1と、双方向バッファBF2とを備える。
【0022】
双方向バッファBF1は、メモリ装置13から出力されるリードデータRDQを受信する。双方向バッファBF1は、ライトデータWDQをメモリ装置13へ出力する。双方向バッファBF2は、メモリ装置13から出力されるリード用データストローブ信号RDQSを受信する。双方向バッファBF2は、ライト用データストローブ信号WDQSをメモリ装置13へ出力する。
【0023】
メモリ装置13は、トレーニング専用メモリ41と、ユーザ使用可能メモリ42とを備える。
【0024】
メモリ装置13は、入力されるライト用データストローブ信号WDQSの立ち上がりのタイミングで、入力されるライトデータWDQを取り込む。
【0025】
トレーニング専用メモリ41には、ライトデータWDQの有効ウインドウのエッジのタイミングがライト用データストローブ信号WDQSのエッジのタイミングと一致するように遅延調整回路12の遅延量を設定するトレーニングにおいて、ライトデータWDQとしてトレーニング用のテストデータが書き込まれる。トレーニング用のテストデータは、限られた時間内に信頼性の高い(通常動作中に誤動作となる可能性が低い)タイミング結果を得るため、タイミング条件がWorstとなるデータパターンが使用される。従って、トレーニング用のテストデータは、通常データとしては現れる確率が低いデータパターンであるため、トレーニング結果が実使用状態より厳しくなる傾向がある。
【0026】
ユーザ使用可能メモリ42は、通常動作時に、ユーザプログラムなどに基づいて、ライトデータWDQとして外部から供給される通常データが書込まれる。
【0027】
遅延調整回路12は、複数段の遅延素子DE(1)〜DE(N)と、セレクタSL1とを備える。遅延素子DE(1)〜DE(N)の各々は、たとえば、非反転バッファによって構成される。
【0028】
セレクタSL1は、遅延素子DE(1)〜DE(N)の各々からの出力を受ける。セレクタSL1は、セレクタSL2から出力されるコードに応じて、遅延素子DE(1)の入力、または遅延素子DE(1)〜DE(N)の出力のいずれかを出力する。たとえば、セレクタSL1は、コードが「0」の場合には、遅延素子DE(1)の入力を選択する。セレクタSL1は、コードが「i」の場合は、遅延素子DE(i)の出力を選択する。1つの遅延素子DEによるライト用データストローブ信号WDQSの遅延量をΔDとする。
【0029】
制御回路21は、トレーニング制御回路22と、初期トレーニングモジュール10と、再トレーニングモジュール11と、記憶部19と、セレクタSL2とを備える。記憶部19は、レフトエッジ用レジスタ14と、センタ用レジスタ15と、ライトエッジ用レジスタ16とを備える。
【0030】
トレーニング制御回路22は、メモリ装置13およびメモリコントローラ32を制御する。
【0031】
初期トレーニングモジュール10は、初期トレーニングを実行する。初期トレーニングモジュール10は、ライトデータWDQの有効ウインドウのレフトエッジのタイミングがライト用データストローブ信号WDQSの立ち上がりエッジのタイミングと一致する(このタイミングでメモリ装置13が有効ウインドウのレフトエッジを取り込む)よう遅延調整回路12の遅延量を求めて、その遅延量を表わすコードL_Dをレフトエッジ用レジスタ14に書込む。初期トレーニングモジュール10は、ライトデータWDQの有効ウインドウのライトエッジのタイミングがライト用データストローブ信号WDQSの立ち上がりエッジのタイミングと一致する(このタイミングでメモリ装置13が有効ウインドウのライトエッジを取り込む)よう遅延調整回路12の遅延量を求めて、その遅延量を表わすコードR_Dをライトエッジ用レジスタ16に書込む。初期トレーニングモジュール10は、コードL_Dの遅延量とコードR_Dの遅延量の平均の遅延量を表わすコードC_Dをセンタ用レジスタ15に書込む。ライトデータWDQの有効ウインドウとは、ライトデータWDQの1ビット分の期間(1 Unit-Interval)のうち、ジッタ、セットアップ時間、およびホールド時間等を除く期間である。
【0032】
インターフェースの高速化により、転送周期に対する電圧変動または温度変動によるライトデータWDQの波形の劣化が占める割合が大きくなり、長期的にライトデータWDQの有効ウインドウの幅が小さくなったり、有効ウインドウの位置が変化する。長期的な劣化を改善するために、再トレーニングが必要となる。再トレーニングモジュール11は、再トレーニングを実行する。再トレーニングモジュール11は、セレクタSL2にレフトエッジ用レジスタ14の出力を選択させることによって、レフトエッジ用レジスタ14に保持されているコードL_Dに対応する遅延量を遅延調整回路12の遅延量に設定したときのライトデータWDQの書き込み結果をレフトエッジ検査結果として求める。
【0033】
再トレーニングモジュール11は、セレクタSL2にライトエッジ用レジスタ16の出力を選択させることによって、ライトエッジ用レジスタ16に保持されているコードR_Dに対応する遅延量を遅延調整回路12の遅延量に設定したときのライトデータWDQの書き込み結果をライトエッジ検査結果として求める。
【0034】
再トレーニングモジュール11は、レフトエッジ検査結果と、ライトエッジ検査結果とに基づいて、レフトエッジ用レジスタ14、ライトエッジ用レジスタ16、センタ用レジスタ15に保持されているコードL_D、R_D、C_Dのうちの少なくとも1つを修正、または全部を修正しない。
【0035】
トレーニング制御回路22は、通常動作時には、セレクタSL2にセンタ用レジスタ15の出力を選択させることによって、センタ用レジスタ15に保持されているコードC_Dに対応する遅延量を遅延調整回路12の遅延量に設定する。これによって、通常動作時には、ライトデータWDQの有効ウインドウのレフトエッジと有効ウインドウのライトエッジの間の中央のタイミングとライト用データストローブ信号WDQSの立ち上がりエッジのタイミングとが一致するようにできる。メモリ装置13は、この中央のタイミングでライトデータWDQを取り込む。
【0036】
レフトエッジ用レジスタ14は、ライトデータWDQの有効ウインドウのレフトエッジのタイミングに、ライト用データストローブ信号WDQSの立ち上がりエッジのタイミングが一致するように、ライト用データストローブ信号WDQSの遅延調整回路12による遅延量DLを定めたコードL_Dを記憶する。
【0037】
ライトエッジ用レジスタ16は、ライトデータWDQの有効ウインドウのライトエッジのタイミングに、ライト用データストローブ信号WDQSの立ち上がりエッジのタイミングが一致するように、ライト用データストローブ信号WDQSの遅延調整回路12による遅延量DRを定めたコードR_Dを記憶する。
【0038】
センタ用レジスタ15は、ライトデータWDQの有効ウインドウのレフトエッジと有効ウインドウのライトエッジとの間の中央のタイミングに、ライト用データストローブ信号WDQSの立ち上がりエッジのタイミングが一致するように、ライト用データストローブ信号WDQSの遅延調整回路12による遅延量DCを定めたコードC_Dを記憶する。遅延量DCは、遅延量DLと遅延量DRの平均値である。
【0039】
セレクタSL2は、レフトエッジ用レジスタ14から出力されるコード、センタ用レジスタ15から出力されるコード、およびライトエッジ用レジスタ16から出力されるコードのうちのいずれかをセレクタSL1へ出力する。
【0040】
図4は、第3の実施形態における遅延調整回路12の遅延量の調整手順を表わすフローチャートである。
【0041】
ステップS101において、初期トレーニングモジュール10は、初期トレーニングを実行する。初期トレーニングモジュール10は、ライトデータWDQの有効ウインドウのレフトエッジのタイミングと、ライト用データストローブ信号WDQSの立ち上がりエッジのタイミングとが一致するように、遅延調整回路12の遅延量DLを表わすコードL_Dを設定する。初期トレーニングモジュール10は、セレクタSL1に与えるコードを「0」から順番に増加させながら遅延量を増加させ、任意のパターンのテストデータをメモリ装置13のトレーニング専用メモリ41に書込む。初期トレーニングモジュール10は、トレーニング専用メモリ41から書込んだテストデータを読出して、テストデータ(期待値)と、メモリ装置13から読出したリードデータRDQとが一致するかどうかを比較する。初期トレーニングモジュール10は、両者が最初に一致したときのコードをコードL_Dとして、レフトエッジ用レジスタ14に書込む。初期トレーニングモジュール10は、セレクタSL1に与えるコードをコードL_Dから順番に増加させながら遅延量を増加させ、任意のパターンのテストデータをメモリ装置13のトレーニング専用メモリ41に書込む。初期トレーニングモジュール10は、トレーニング専用メモリ41から書込んだテストデータを読出して、テストデータ(期待値)と、メモリ装置13から読出したリードデータRDQとが一致するかどうかを比較する。初期トレーニングモジュール10は、両者が最初に不一致になったときのコードよりも「1」だけ小さいコードをコードR_Dとして、ライトエッジ用レジスタ16に書込む。初期トレーニングモジュール10は、コードL_Dで定まる遅延量DLと、コードR_Dで定まる遅延量DRとの平均値DCを表わすコードC_Dをセンタ用レジスタ15に書込む。従来は、再トレーニングでも、このような初期トレーニングと同様の処理が繰り返されていたため、再トレーニングに要する時間が長いという問題があった。本実施の形態では、再トレーニングの処理を効率化する。
【0042】
ステップS102において、再トレーニングモジュール11は、一定時間ΔTだけウエイトする。この間、メモリ装置13への通常動作、通常データの書き込みおよび読出しが可能である。すなわち、ユーザの指示などに従って、トレーニング制御回路22は、ユーザ使用可能メモリ42へライトデータWDQを書き込み、または、ユーザ使用可能メモリ42からデータをリードデータRDQとして読出すことができる。
【0043】
ステップS103において、再トレーニングモジュール11は、遅延調整回路12の遅延量をコードL_Dの遅延量DLに設定する。すなわち、再トレーニングモジュール11は、セレクタSL2にレフトエッジ用レジスタ14の出力コードL_DをセレクタSL1へ出力させる。セレクタSL1は、コードL_Dに対応する遅延素子DE(i)からの出力をドライバD2へ出力する。これによって、ライト用データストローブ信号WDQSを遅延量DLだけ遅延させることができる。
【0044】
ステップS104において、再トレーニングモジュール11は、ライトデータWDQとして任意のパターンのテストデータをドライバD1を介して、メモリ装置13のトレーニング専用メモリ41へ送る。メモリ装置13は、遅延量DLを有するライト用データストローブ信号WDQSの立ち上がりのタイミングで、ライトデータWDQを取り込んで、トレーニング専用メモリ41に書き込む。
【0045】
ステップS105において、再トレーニングモジュール11は、トレーニング専用メモリ41からテストデータをリードデータRDQとして読出す。
【0046】
ステップS106において、再トレーニングモジュール11は、トレーニング専用メモリ41から出力されたテストデータ(リードデータRDQ)と、メモリ装置13へ出力したテストデータ(ライトデータWDQ、期待値を表す)とが一致しているか否かを比較する。
【0047】
ステップS107において、再トレーニングモジュール11は、遅延調整回路12の遅延量をコードR_Dの遅延量DRに設定する。すなわち、再トレーニングモジュール11は、セレクタSL2にライトエッジ用レジスタ16の出力コードR_DをセレクタSL1へ出力させる。セレクタSL1は、コードR_Dに対応する遅延素子DE(i)からの出力をドライバD2へ出力する。これによって、ライト用データストローブ信号WDQSを遅延量DRだけ遅延させることができる。
【0048】
ステップS108において、再トレーニングモジュール11は、ライトデータWDQとして任意のパターンのテストデータをドライバD1を介して、メモリ装置13のトレーニング専用メモリ41へ送る。メモリ装置13は、遅延量DRを有するライト用データストローブ信号WDQSの立ち上がりのタイミングで、ライトデータWDQを取り込んで、トレーニング専用メモリ41に書き込む。
【0049】
ステップS109において、再トレーニングモジュール11は、トレーニング専用メモリ41からテストデータをリードデータRDQとして読出す。
【0050】
ステップS110において、再トレーニングモジュール11は、トレーニング専用メモリ41から出力されたテストデータ(リードデータRDQ)と、メモリ装置13へ出力したテストデータ(ライトデータWDQ、期待値を表わす)とが一致しているか否かを比較する。
【0051】
ステップS111において、再トレーニングモジュール11は、予め設定されたルールRAに従って、コードL_D、コードR_D、コードC_Dのうちの少なくとも1つの修正が必要か否かを判断する。修正が必要な場合には、処理がステップS112に進み、修正が不要な場合には、処理がステップS113に進む。
【0052】
ステップS112において、再トレーニングモジュール11は、ルールRAに従って、コードL_D、コードR_D、コードC_Dのうちの少なくとも1つを修正する。その後、処理がステップS113に進む。
【0053】
ステップS113において、電源がオフとされない場合(NO)、処理がステップS102に戻り、電源がオフとされる場合(YES)、処理が終了する。
【0054】
図5は、コードの修正方法を定めたルールRAを表わす図である。
パターンA1では、遅延調整回路12の遅延量をコードL_Dの遅延量DLに設定したときにライトデータWDQ(期待値)とリードデータRDQとが一致し、かつ遅延調整回路12の遅延量をコードR_Dの遅延量DRに設定したときにライトデータWDQ(期待値)とリードデータRDQとが一致する。再トレーニングモジュール11は、パターンA1のときには、いずれのコードも修正しない。
【0055】
パターンA2では、遅延調整回路12の遅延量をコードL_Dの遅延量DLに設定したときに、ライトデータWDQ(期待値)とリードデータRDQとが一致し、かつ遅延調整回路12の遅延量をコードR_Dの遅延量DRに設定したときに、ライトデータWDQ(期待値)とリードデータRDQとが不一致となる。再トレーニングモジュール11は、パターンA2のときには、コードL_D、R_D、C_Dを「1」だけ小さくする。
【0056】
パターンA3では、遅延調整回路12の遅延量をコードL_Dの遅延量DLに設定したときにライトデータWDQ(期待値)とリードデータRDQとが不一致であり、かつ遅延調整回路12の遅延量をコードR_Dの遅延量DRに設定したときにライトデータWDQ(期待値)とリードデータRDQとが一致する。再トレーニングモジュール11は、パターンA3のときには、コードL_D、R_D、C_Dを「1」だけ大きくする。
【0057】
パターンA4では、遅延調整回路12の遅延量をコードL_Dの遅延量DLに設定したときにライトデータWDQ(期待値)とリードデータRDQとが不一致であり、かつ遅延調整回路12の遅延量をコードR_Dの遅延量DRに設定したときにライトデータWDQ(期待値)とリードデータRDQとが不一致となる。再トレーニングモジュール11は、パターンA4のときには、コードL_Dを「1」だけ大きく、かつコードR_Dを「1」だけ小さくし、コードC_Dを変更しない。
【0058】
図6は、初期トレーニングによって設定されるコードL_D、R_D、C_Dを説明するための図である。図6では、データがハイレベルの場合の有効ウインドウの例を表わす。データがロウレベルの場合も、同様の方法が用いられる。
【0059】
初期トレーニングモジュール10は、ライトデータWDQの有効ウインドウのレフトエッジのタイミングと、ライト用データストローブ信号WDQSの立ち上がりエッジのタイミングとが一致するように、遅延調整回路12の遅延量DLを表わすコードL_Dを設定する。初期トレーニングモジュール10は、ライトデータWDQの有効ウインドウのライトエッジのタイミングと、ライト用データストローブ信号WDQSの立ち上がりエッジのタイミングとが一致するように、遅延調整回路12の遅延量DRを表わすコードR_Dを設定する。初期トレーニングモジュール10は、コードL_Dで定まる遅延量DLと、コードR_Dで定まる遅延量DRとの平均値DCを表わすコードC_Dを設定する。
【0060】
図7(a)は、ルールRAのパターンA2が適用される例を表わす図である。
ライトデータWDQの遅延量が減少し、ライトデータWDQのタイミングが左側にずれた場合には、コードL_Dを設定すると一致となり、コードR_Dを設定すると不一致となる。すなわち、遅延調整回路12の遅延量をコードL_Dの遅延量DLに設定したときには、ライト用データストローブ信号WDQSの立ち上がりエッジは、ライトデータWDQの有効ウインドウのレフトエッジよりも右側にあるので、ライトデータWDQ(期待値)とリードデータRDQとが一致する。遅延調整回路12の遅延量をコードR_Dの遅延量DRに設定したときには、ライト用データストローブ信号WDQSの立ち上がりエッジは、ライトデータWDQの有効ウインドウのライトエッジよりも右側にあるので、ライトデータWDQ(期待値)とリードデータRDQとが一致しない。
【0061】
このような場合には、再トレーニングモジュール11は、ルールRAに従って、コードL_D、R_D、C_Dが「1」だけ小さくして、ライト用データストローブ信号WDQSのタイミングも左側にずらす。これによって、遅延調整回路12の遅延量をコードL_Dの遅延量DLに設定したときには、ライト用データストローブ信号WDQSの立ち上がりエッジのタイミングは、ライトデータWDQの有効ウインドウのレフトエッジのタイミングと一致し、ライトデータWDQ(期待値)とリードデータRDQとが一致する。また、遅延調整回路12の遅延量をコードR_Dの遅延量DRに設定したときには、ライト用データストローブ信号WDQSの立ち上がりエッジのタイミングは、ライトデータWDQの有効ウインドウのライトエッジのタイミングと一致し、ライトデータWDQ(期待値)とリードデータRDQとが一致する。
【0062】
図7(b)は、ルールRAのパターンA3が適用される例を表わす図である。
ライトデータWDQの遅延量が増加し、ライトデータWDQのタイミングが右側にずれた場合には、コードL_Dを設定すると不一致となり、コードR_Dを設定すると一致となる。すなわち、遅延調整回路12の遅延量をコードL_Dの遅延量DLに設定したときには、ライト用データストローブ信号WDQSの立ち上がりエッジは、ライトデータWDQの有効ウインドウのレフトエッジよりも左側にあるので、ライトデータWDQ(期待値)とリードデータRDQとが不一致となる。遅延調整回路12の遅延量をコードR_Dの遅延量DRに設定したときには、ライト用データストローブ信号WDQSの立ち上がりエッジは、ライトデータWDQの有効ウインドウのライトエッジよりも左側にあるので、ライトデータWDQ(期待値)とリードデータRDQとが一致する。
【0063】
このような場合には、再トレーニングモジュール11は、ルールRAに従って、コードL_D、R_D、C_Dが「1」だけ大きくして、ライト用データストローブ信号WDQSのタイミングも右側にずらす。
【0064】
これによって、遅延調整回路12の遅延量をコードL_Dの遅延量DLに設定したときには、ライト用データストローブ信号WDQSの立ち上がりエッジのタイミングは、ライトデータWDQの有効ウインドウのレフトエッジのタイミングと一致し、ライトデータWDQ(期待値)とリードデータRDQとが一致する。また、遅延調整回路12の遅延量をコードR_Dの遅延量DRに設定したときには、ライト用データストローブ信号WDQSの立ち上がりエッジのタイミングは、ライトデータWDQの有効ウインドウのライトエッジのタイミングと一致し、ライトデータWDQ(期待値)とリードデータRDQとが一致する。
【0065】
図7(c)は、ルールRAのパターンA4が適用される例を表わす図である。
ライトデータWDQの有効ウインドウのライトエッジと有効ウインドウのレフトエッジがノイズによって、変動して、ライトデータWDQの有効ウインドウのレフトエッジが右側にずれ、かつライトデータWDQの有効ウインドウのライトエッジが左側にずれた場合には、コードL_Dを設定すると不一致となり、コードR_Dを設定しても不一致となる。すなわち、遅延調整回路12の遅延量をコードL_Dの遅延量DLに設定したときには、ライト用データストローブ信号WDQSの立ち上がりエッジは、ライトデータWDQの有効ウインドウのレフトエッジよりも左側にあるので、ライトデータWDQ(期待値)とリードデータRDQとが不一致となる。遅延調整回路12の遅延量をコードR_Dの遅延量DRに設定したときには、ライト用データストローブ信号WDQSの立ち上がりエッジは、ライトデータWDQの有効ウインドウのライトエッジよりも右側にあるので、ライトデータWDQ(期待値)とリードデータRDQとが一致しない。
【0066】
このような場合には、再トレーニングモジュール11は、ルールRAに従って、コードL_Dを「1」だけ大きくし、かつコードR_Dを「1」だけ小さくするとともに、コードC_Dを変更しない。これによって、遅延調整回路12の遅延量をコードL_Dの遅延量DLに設定したときには、ライト用データストローブ信号WDQSの立ち上がりエッジのタイミングは、ライトデータWDQの有効ウインドウのレフトエッジのタイミングと一致し、ライトデータWDQ(期待値)とリードデータRDQとが一致する。また、遅延調整回路12の遅延量をコードR_Dの遅延量DRに設定したときには、ライト用データストローブ信号WDQSの立ち上がりエッジのタイミングは、ライトデータWDQの有効ウインドウのライトエッジのタイミングと一致し、ライトデータWDQ(期待値)とリードデータRDQとが一致する。
【0067】
以上のように、本実施の形態によれば、初期トレーニングによって求めたコードL_D、R_Dを基準にして再トレーニングを実行するので、従来のように、L_D=0、R_D=0を起点として初期トレーニングと同じ処理を繰り返すよりも、再トレーニングの時間を短くすることができる。再トレーニングの時間を短くすることによって、通常のライト動作またはリード動作(通常動作)が再トレーニングによって中断される時間を短くし、また再トレーニング中のため通常動作が開始できない事態を回避できる。これにより、メモリ装置へのデータの転送パフォーマンスを高くすることができる。また、再トレーニングの時間が短いので、再トレーニング頻度を多くすることができるため電圧変動または温度変動に追随しやすい。
【0068】
また、従来は、コードC_Dの遅延量だけが遅延調整回路に設定することができるが、本実施の形態では、コードC_Dの遅延量だけでなく、コードL_D,R_Dの遅延量も遅延調整回路に設定することができる。
【0069】
また、本実施の形態では、初期トレーニング時および再トレーニング時には、トレーニング用のメモリにテストデータを書き込むので、通常動作時においてユーザ使用可能メモリに書込まれたデータを破壊せずに保持することができる。
【0070】
なお、初期トレーニング時には、ユーザ使用可能メモリには、データが書き込まれていない状態なので、ユーザ使用可能メモリにテストデータを書き込むものとしてもよい。
【0071】
また、本実施の形態では、再トレーニングにおいて、各コードを最大限「1」だけ変化させることによって、有効ウインドウのレフトエッジとライトエッジのタイミングが正しく調整されるものとした。各コードを最大限「1」だけ変化させることによって、有効ウインドウのレフトエッジとライトエッジのタイミングが正しく調整できないような場合には、再トレーニングにおいて、各コードを最大限「1」だけ変化させた後、引き続きコードの修正が不要となるまで(すなわち検査結果がパターンA1となるまで)再トレーニングを繰り返すことにしてもよい。
【0072】
[第4の実施形態]
図8は、第4の実施形態の半導体装置74の構成を表わす図である。
【0073】
第4の実施形態のメモリ装置13は、トレーニング専用メモリ41を備えない。ユーザ使用可能メモリ42内に予め定められたトレーニング用領域43が設けられる。初期トレーニングおよび再トレーニング時には、テストデータがトレーニング用領域43に書込まれる。
【0074】
図9は、第4の実施形態の遅延調整回路12の遅延量の調整手順を表わすフローチャートである。
【0075】
図9のフローチャートが図4のフローチャートと相違する点は、図9のフローチャートは、図4のステップS104、S105、S108、S109の代わりに、ステップS204、S205、S208、S209を備える点である。
【0076】
ステップS204、S208において、再トレーニングモジュール11は、ライトデータWDQとして任意のパターンのテストデータをドライバD1を介して、メモリ装置13のユーザ使用可能メモリ42内のトレーニング用領域43にへ送る。メモリ装置13は、遅延量DLまたは遅延量DRを有するライト用データストローブ信号WDQSの立ち上がりのタイミングで、ライトデータWDQを取り込んで、ユーザ使用可能メモリ42のトレーニング用領域43に書き込む。
【0077】
ステップS205、S209のそれぞれにおいて、再トレーニングモジュール11は、ユーザ使用可能メモリ42内のトレーニング用領域43からテストデータをリードデータRDQとして読出す。
【0078】
以上のように、本実施の形態によれば、トレーニング時にテストデータを書き込むためのトレーニング専用のメモリが設けられていない場合でも、再トレーニングが可能である。なお、初期トレーニングにおいては、テストデータは、ユーザ使用可能メモリ42内のトレーニング用領域43に書込まれるものとしてもよいし、あるいはトレーニング専用メモリに書込まれるものとしてもよい。
【0079】
[第5の実施形態]
図10は、第5の実施形態の半導体装置75の構成を表わす図である。
【0080】
メモリ装置13は、トレーニング専用メモリ41を備えない。再トレーニングモジュール11は、通常データの書き込み時の書き込み結果に基づいて、レジスタ14、15、16内のコードが必要か否かを判断する。すなわち、再トレーニングモジュール11は、遅延調整回路12の遅延量をコードL_Dの遅延量DLに設定して、ユーザ使用可能メモリ42へ通常データを書き込んだときの書き込み結果と、遅延調整回路12の遅延量をコードR_Dの遅延量DRに設定して、ユーザ使用可能メモリ42へ通常データを書き込んだときの書き込み結果とに基づいて、コードの修正が必要か否かを判断する。
【0081】
図11は、第5の実施形態の遅延調整回路12の遅延量の調整手順を表わすフローチャートである。
【0082】
図11のフローチャートが図4のフローチャートと相違する点は、図11のフローチャートは、図4のステップS104、S105、S108、S109の代わりに、ステップS304、S305、S308、S309を備える点である。
【0083】
ステップS304、S308において、再トレーニングモジュール11は、ライトデータWDQとして、外部のユーザプログラム等によって指定され、外部から供給されるデータ(通常データ)をドライバD1を介して、ユーザ使用可能メモリ42へ送る。メモリ装置13は、遅延量DLまたは遅延量DRを有するライト用データストローブ信号WDQSの立ち上がりのタイミングで、ライトデータWDQを取り込んで、ユーザ使用可能メモリ42の指定されたアドレスへ書き込む。ステップS304、S308の両方において、ユーザ使用可能メモリ42の指定された同じアドレスへ通常データが書き込まれる。
【0084】
ステップS305、S309のそれぞれにおいて、再トレーニングモジュール11は、ユーザ使用可能メモリ42から書込んだ通常データをリードデータRDQとして読出す。
【0085】
図11のフローチャートは、ステップS112の後に、さらにステップS310を備える。
【0086】
ステップS310において、再トレーニングモジュール11は、通常データの書き込み結果が異常のためコードの修正が必要となった場合には(S111:YES)、コードの修正後、通常データをユーザ使用可能メモリ42へ再度書き込む。
【0087】
以上のように、本実施の形態では、通常動作時のライトデータを使用して、再トレーニングするので、再トレーニングのためだけにメモリ装置にデータを書き込む必要がなくなる。これにより、半導体装置のパフォーマンスを向上できる。
【0088】
なお、上記の実施形態では、前回のトレーニング実行後、ΔT時間経過後に、通常のデータ書込みがあった場合に、そのデータを再トレーニング用のライトデータとして用いることとしたが、これに限定するものではない。たとえば、ΔT時間のウエイトを設けることなく、通常のデータ書き込み時の中でも、ビットごとに値が遷移する回数が多いデータを書き込むときだけ、そのデータを再トレーニングに用いることとしてもよい。
【0089】
なお、上記の実施形態では、ステップS111でコードの修正が必要なときに、再トレーニングモジュール11は、通常データを再書き込みすることとしたが、これに限定するものではない。検査結果がパターンA3の場合には、再トレーニング後には、ユーザ使用可能メモリ42には、正しいデータが書き込まれる状態となるので、パターンA1とA4のときのみ、再トレーニングモジュール11は、通常データを再書き込みするものとしてもよい。
【0090】
[第6の実施形態]
図12は、第6の実施形態の遅延調整回路12の遅延量の調整手順を表わすフローチャートである。
【0091】
ステップS401において、ステップS101と同様にし、初期トレーニングモジュール10は、初期トレーニングを実行する。
【0092】
ステップS402において、ステップS102と同様にし、再トレーニングモジュール11は、一定時間ΔTだけウエイトする。
【0093】
ステップS403において、再トレーニングモジュール11は、レフトエッジの検査を実行する。
【0094】
ステップS404において、再トレーニングモジュール11は、ライトエッジの検査を実行する。
【0095】
ステップS405において、再トレーニングモジュール11は、ルールRBに従って、コードL_D、コードR_D、コードC_Dのうちの少なくとも1つを修正する。その後、処理がステップS406に進む。
【0096】
ステップS406において、電源がオフとされない場合(NO)、処理がステップS402に戻り、電源がオフとされる場合(YES)、処理が終了する。
【0097】
図13は、図12のステップS403におけるレフトエッジ検査の手順を説明するための図である。
【0098】
図13を参照して、まず、再トレーニングモジュール11は、コードL_D+2(L_Dよりも「2」だけ大きい)をレフトエッジ検査用コードに設定する。ステップS104、ステップS105、S106と同様に、再トレーニングモジュール11は、ライトデータWDQとして任意のパターンのテストデータをメモリ装置13のトレーニング専用メモリ41へ送る。メモリ装置13は、ライト用データストローブ信号WDQSの立ち上がりのタイミングで、ライトデータWDQを取り込んで、トレーニング専用メモリ41に書き込む。再トレーニングモジュール11は、トレーニング専用メモリ41からテストデータをリードデータRDQとして読出す。再トレーニングモジュール11は、トレーニング専用メモリ41から出力されたテストデータ(リードデータRDQ)と、トレーニング専用メモリ41へ出力したテストデータ(ライトデータWDQ、期待値を表す)とが一致しているか否かを比較する(S801)。
【0099】
ライトデータWDQとリードデータRDQとが不一致のときには(S802:NO)、再トレーニングモジュール11は、レフトエッジ検査の結果をパターンをL1に設定する(S803)。
【0100】
ライトデータWDQとリードデータRDQとが一致するときには(S802:YES)、再トレーニングモジュール11は、コードL_D+1(L_Dよりも「1」だけ大きい)をレフトエッジ検査用コードに設定する。ステップS104、ステップS105、S106と同様に、再トレーニングモジュール11は、ライトデータWDQとして任意のパターンのテストデータをメモリ装置13のトレーニング専用メモリ41へ送る。メモリ装置13は、ライト用データストローブ信号WDQSの立ち上がりのタイミングで、ライトデータWDQを取り込んで、トレーニング専用メモリ41に書き込む。再トレーニングモジュール11は、トレーニング専用メモリ41からテストデータをリードデータRDQとして読出す。再トレーニングモジュール11は、トレーニング専用メモリ41から出力されたテストデータ(リードデータRDQ)と、トレーニング専用メモリ41へ出力したテストデータ(ライトデータWDQ、期待値を表す)とが一致しているか否かを比較する(S804)。
【0101】
ライトデータWDQとリードデータRDQとが不一致のときには(S805:NO)、再トレーニングモジュール11は、レフトエッジ検査の結果をパターンをL2に設定する(S806)。
【0102】
ライトデータWDQとリードデータRDQとが一致するときには(S805:YES)、再トレーニングモジュール11は、コードL_Dをレフトエッジ検査用コードに設定する。ステップS104、ステップS105、S106と同様に、再トレーニングモジュール11は、ライトデータWDQとして任意のパターンのテストデータをメモリ装置13のトレーニング専用メモリ41へ送る。メモリ装置13は、ライト用データストローブ信号WDQSの立ち上がりのタイミングで、ライトデータWDQを取り込んで、トレーニング専用メモリ41に書き込む。再トレーニングモジュール11は、トレーニング専用メモリ41からテストデータをリードデータRDQとして読出す。再トレーニングモジュール11は、トレーニング専用メモリ41から出力されたテストデータ(リードデータRDQ)と、トレーニング専用メモリ41へ出力したテストデータ(ライトデータWDQ、期待値を表す)とが一致しているか否かを比較する(S807)。
【0103】
ライトデータWDQとリードデータRDQとが不一致のときには(S808:NO)、再トレーニングモジュール11は、レフトエッジ検査の結果をパターンをL3に設定する(S809)。
【0104】
ライトデータWDQとリードデータRDQとが一致するときには(S808:YES)、再トレーニングモジュール11は、レフトエッジ検査の結果をパターンをL4に設定する(S810)。
【0105】
図14は、図12のステップS404におけるライトエッジ検査の手順を説明するための図である。
【0106】
図14を参照して、まず、再トレーニングモジュール11は、コードR_D−2(R_Dよりも「2」だけ小さい)をライトエッジ検査用コードに設定する。ステップS108、ステップS109、S110と同様に、再トレーニングモジュール11は、ライトデータWDQとして任意のパターンのテストデータをメモリ装置13のトレーニング専用メモリ41へ送る。メモリ装置13は、ライト用データストローブ信号WDQSの立ち上がりのタイミングで、ライトデータWDQを取り込んで、トレーニング専用メモリ41に書き込む。再トレーニングモジュール11は、トレーニング専用メモリ41からテストデータをリードデータRDQとして読出す。再トレーニングモジュール11は、トレーニング専用メモリ41から出力されたテストデータ(リードデータRDQ)と、トレーニング専用メモリ41へ出力したテストデータ(ライトデータWDQ、期待値を表す)とが一致しているか否かを比較する(S901)。
【0107】
ライトデータWDQとリードデータRDQとが不一致のときには(S902:NO)、再トレーニングモジュール11は、ライトエッジ検査の結果をパターンをR1に設定する(S903)。
【0108】
ライトデータWDQとリードデータRDQとが一致するときには(S902:YES)、再トレーニングモジュール11は、コードR_D−1(R_Dよりも「1」だけ小さい)をライトエッジ検査用コードに設定する。ステップS108、ステップS109、S110と同様に、再トレーニングモジュール11は、ライトデータWDQとして任意のパターンのテストデータをメモリ装置13のトレーニング専用メモリ41へ送る。メモリ装置13は、ライト用データストローブ信号WDQSの立ち上がりのタイミングで、ライトデータWDQを取り込んで、トレーニング専用メモリ41に書き込む。再トレーニングモジュール11は、トレーニング専用メモリ41からテストデータをリードデータRDQとして読出す。再トレーニングモジュール11は、トレーニング専用メモリ41から出力されたテストデータ(リードデータRDQ)と、トレーニング専用メモリ41へ出力したテストデータ(ライトデータWDQ、期待値を表す)とが一致しているか否かを比較する(S904)。
【0109】
ライトデータWDQとリードデータRDQとが不一致のときには(S905:NO)、再トレーニングモジュール11は、ライトエッジ検査の結果をパターンをR2に設定する(S906)。
【0110】
ライトデータWDQとリードデータRDQとが一致するときには(S905:YES)、再トレーニングモジュール11は、コードR_Dをライトエッジ検査用コードに設定する。ステップS108、ステップS109、S110と同様に、再トレーニングモジュール11は、ライトデータWDQとして任意のパターンのテストデータをメモリ装置13のトレーニング専用メモリ41へ送る。メモリ装置13は、ライト用データストローブ信号WDQSの立ち上がりのタイミングで、ライトデータWDQを取り込んで、トレーニング専用メモリ41に書き込む。再トレーニングモジュール11は、トレーニング専用メモリ41からテストデータをリードデータRDQとして読出す。再トレーニングモジュール11は、トレーニング専用メモリ41から出力されたテストデータ(リードデータRDQ)と、トレーニング専用メモリ41へ出力したテストデータ(ライトデータWDQ、期待値を表す)とが一致しているか否かを比較する(S907)。
【0111】
ライトデータWDQとリードデータRDQとが不一致のときには(S908:NO)、再トレーニングモジュール11は、ライトエッジ検査の結果をパターンをR3に設定する(S909)。
【0112】
ライトデータWDQとリードデータRDQとが一致するときには(S908:YES)、再トレーニングモジュール11は、ライトエッジ検査の結果をパターンをR4に設定する(S910)。
【0113】
図15は、コードの修正方法を定めたルールRBを表わす図である。
図15において、xが付されたコードは設定してもしなくてもよいことを表わす。
【0114】
パターンT1は、レフトエッジ検査の結果がパターンL4であり、ライトエッジ検査の結果がパターンR4となる。再トレーニングモジュール11は、パターンT1のときには、いずれのコードも修正しない。
【0115】
パターンT2は、レフトエッジ検査の結果がパターンL4であり、ライトエッジ検査の結果がパターンR1となる。再トレーニングモジュール11は、パターンT2のときには、コードL_D、R_D、C_Dを「3」だけ小さくする。
【0116】
パターンT3は、レフトエッジ検査の結果がパターンL4であり、ライトエッジ検査の結果がパターンR2となる。再トレーニングモジュール11は、パターンT3のときには、コードL_D、R_D、C_Dを「2」だけ小さくする。
【0117】
パターンT4は、レフトエッジ検査の結果がパターンL4であり、ライトエッジ検査の結果がパターンR3となる。再トレーニングモジュール11は、パターンT4のときには、コードL_D、R_D、C_Dを「1」だけ小さくする。
【0118】
パターンT5は、レフトエッジ検査の結果がパターンL1であり、ライトエッジ検査の結果がパターンR4となる。再トレーニングモジュール11は、パターンT5のときには、コードL_D、R_D、C_Dを「3」だけ大きくする。
【0119】
パターンT6は、レフトエッジ検査の結果がパターンL2であり、ライトエッジ検査の結果がパターンR4となる。再トレーニングモジュール11は、パターンT6のときには、コードL_D、R_D、C_Dを「2」だけ大きくする。
【0120】
パターンT7は、レフトエッジ検査の結果がパターンL3であり、ライトエッジ検査の結果がパターンR4となる。再トレーニングモジュール11は、パターンT7のときには、コードL_D、R_D、C_Dを「1」だけ大きくする。
【0121】
パターンT8は、レフトエッジ検査の結果がパターンL1であり、ライトエッジ検査の結果がパターンR1となる。再トレーニングモジュール11は、パターンT8のときには、コードL_Dを「3」だけ大きくし、コードR_Dを「3」だけ小さくし、コードC_Dを変更しない。
【0122】
パターンT9は、レフトエッジ検査の結果がパターンL2であり、ライトエッジ検査の結果がパターンR2となる。再トレーニングモジュール11は、パターンT9のときには、コードL_Dを「2」だけ大きくし、コードR_Dを「2」だけ小さくし、コードC_Dを変更しない。
【0123】
パターンT10は、レフトエッジ検査の結果がパターンL3であり、ライトエッジ検査の結果がパターンR3となる。再トレーニングモジュール11は、パターンT10のときには、コードL_Dを「1」だけ大きくし、コードR_Dを「1」だけ小さくし、コードC_Dを変更しない。
【0124】
パターンT11は、レフトエッジ検査の結果がパターンL3であり、ライトエッジ検査の結果がパターンR2となる。再トレーニングモジュール11は、パターンT11のときには、コードL_Dを「1」だけ大きくし、コードR_Dを「2」だけ小さくし、コードC_Dを変更しない。
【0125】
パターンT12は、レフトエッジ検査の結果がパターンL3であり、ライトエッジ検査の結果がパターンR1となる。再トレーニングモジュール11は、パターンT12のときには、コードL_Dを「1」だけ大きくし、コードR_Dを「3」だけ小さくし、コードC_Dを「1」だけ小さくする。
【0126】
パターンT13は、レフトエッジ検査の結果がパターンL2であり、ライトエッジ検査の結果がパターンR3となる。再トレーニングモジュール11は、パターンT13のときには、コードL_Dを「2」だけ大きくし、コードR_Dを「1」だけ小さくし、コードC_Dを変更しない。
【0127】
パターンT14は、レフトエッジ検査の結果がパターンL1であり、ライトエッジ検査の結果がパターンR3となる。再トレーニングモジュール11は、パターンT14のときには、コードL_Dを「3」だけ大きくし、コードR_Dを「1」だけ小さくし、コードC_Dを「1」だけ大きくする。
【0128】
パターンT15は、レフトエッジ検査の結果がパターンL2であり、ライトエッジ検査の結果がパターンR1となる。再トレーニングモジュール11は、パターンT15のときには、コードL_Dを「2」だけ大きくし、コードR_Dを「3」だけ小さくし、コードC_Dを変更しない。
【0129】
パターンT16は、レフトエッジ検査の結果がパターンL1であり、ライトエッジ検査の結果がパターンR2となる。再トレーニングモジュール11は、パターンT16のときには、コードL_Dを「3」だけ大きくし、コードR_Dを「2」だけ小さくし、コードC_Dを変更しない。
【0130】
図16(a)は、ルールRBのパターンT5が適用される例を表わす図である。
ライトデータWDQの遅延量が増加し、ライトデータWDQのタイミングが右側にずれた場合には、コードL_D+2を設定すると不一致となり、コードR_D−2、R_D−1、R_Dを設定すると一致となる。すなわち、遅延調整回路12の遅延量をコードL_D+2の遅延量に設定したときには、ライト用データストローブ信号WDQSの立ち上がりエッジは、ライトデータWDQの有効ウインドウのレフトエッジよりも左側にあるので、ライトデータWDQ(期待値)とリードデータRDQとが不一致となる。
【0131】
遅延調整回路12の遅延量をコードR_D−2の遅延量、R_D−1の遅延量、R_Dの遅延量DRに設定したときには、ライト用データストローブ信号WDQSの立ち上がりエッジは、ライトデータWDQの有効ウインドウのライトエッジよりも左側にあるので、ライトデータWDQ(期待値)とリードデータRDQとが一致する。
【0132】
このような場合には、再トレーニングモジュール11は、ルールRBに従って、コードL_D、R_D、C_Dが「3」だけ大きくして、ライト用データストローブ信号WDQSのタイミングも右側にずらす。
【0133】
これによって、遅延調整回路12の遅延量をコードL_Dの遅延量に設定したときには、ライト用データストローブ信号WDQSの立ち上がりエッジのタイミングは、ライトデータWDQの有効ウインドウのレフトエッジおよび有効ウインドウのライトエッジのタイミングと一致し、ライトデータWDQ(期待値)とリードデータRDQとが一致する。遅延調整回路12の遅延量をコードR_Dの遅延量に設定したときには、ライト用データストローブ信号WDQSの立ち上がりエッジのタイミングは、ライトデータWDQの有効ウインドウのライトエッジのタイミングと一致し、ライトデータWDQ(期待値)とリードデータRDQとが一致する。
【0134】
図16(b)は、ルールRBのパターンT16が適用される例を表わす図である。
ライトデータWDQの有効ウインドウのライトエッジとレフトエッジがノイズによって、変動して、有効ウインドウのレフトエッジが右側にずれ、かつ有効ウインドウのライトエッジが左側にずれた場合には、コードL_D+2を設定すると不一致となり、コードR_R_D−1を設定しても不一致となる。すなわち、遅延調整回路12の遅延量をコードL_D+2の遅延量に設定したときには、ライト用データストローブ信号WDQSの立ち上がりエッジは、有効ウインドウのレフトエッジよりも左側にあるので、ライトデータWDQ(期待値)とリードデータRDQとが不一致となる。遅延調整回路12の遅延量をコードR_D−1の遅延量に設定したときには、ライト用データストローブ信号WDQSの立ち上がりエッジは、有効ウインドウのライトエッジよりも右側にあるので、ライトデータWDQ(期待値)とリードデータRDQとが一致しない。
【0135】
このような場合には、再トレーニングモジュール11は、ルールRBに従って、コードL_Dを「3」だけ大きくし、かつコードR_Dを「2」だけ小さくするとともに、コードC_Dを変更しない。これによって、遅延調整回路12の遅延量をコードL_Dの遅延量DLに設定したときには、ライト用データストローブ信号WDQSの立ち上がりエッジのタイミングは、有効ウインドウのレフトエッジのタイミングと一致し、ライトデータWDQ(期待値)とリードデータRDQとが一致する。また、遅延調整回路12の遅延量をコードR_Dの遅延量DRに設定したときには、ライト用データストローブ信号WDQSの立ち上がりエッジのタイミングは、有効ウインドウのライトエッジのタイミングと一致し、ライトデータWDQ(期待値)とリードデータRDQとが一致する。
【0136】
(第6の実施形態の変形例)
上記の実施形態では、再トレーニング時のレフトエッジ検査用のコードL_Dの変動幅、およびライトエッジ検査用のコードR_Dの変動幅は「2」であったが、これに限定するものではない。
【0137】
たとえば、再トレーニングモジュール11は、コードL_Dよりもkだけ大きいコードに対応する遅延量(コードL_Dの遅延量よりもk×ΔDだけ大きい遅延量)を遅延調整回路12の遅延量に設定したときのライトデータWDQの書き込み結果をレフトエッジ検査結果として求める。再トレーニングモジュール11は、レフトエッジ検査結果が異常(ライトデータWDQ(期待値)とリードデータRDQとが不一致)となるまでkをN(コード変動幅)から順次減少させることによって、1個以上のレフトエッジ検査結果を求める。Nは、2以上の自然数とする。
【0138】
再トレーニングモジュール11は、コードR_Dよりもkだけ小さいコードに対応する遅延量(コードR_Dの遅延量よりもk×ΔDだけ小さい遅延量)を遅延調整回路12の遅延量に設定したときのライトデータWDQの書き込み結果をライトエッジ検査結果として求める。再トレーニングモジュール11は、ライトエッジ検査結果が異常(ライトデータWDQ(期待値)とリードデータRDQとが不一致)となるまでkをN(コード変動幅)から順次減少させることによって、1個以上のライトエッジ検査結果を求める。
【0139】
再トレーニングモジュール11は、1個以上のレフトエッジ検査結果、および1個以上のライトエッジ検査結果に基づいて、L_D、R_D、C_Dのうち少なくとも1つを修正、または全てを修正しない。
【0140】
以上のように、本実施の形態によれば、複数のコードを用いて、レフトエッジ検査、およびライトエッジ検査を実行するので、電圧変動または温度変動によるライトデータの有効ウインドウの劣化が大きい場合にも、コードL_D、R_D、C_Dを正しく補正することができる。
【0141】
なお、本実施の形態では、コードを「1」刻みで変動させているが、「2」刻み、「3」刻みで変動させてもよい。すなわち、再トレーニングモジュール11は、コードL_Dを「2」刻みで(+4→+2→0)で減少させ、コードR_Dを「2」刻みで(−4→−2→0)増加させる。また、再トレーニングモジュール11は、コードL_Dを「3」刻みで(+6→+3→0)減少させ、コードR_Dを「3」刻みで(−6→−3→0)増加させるものとしてもよい。
【0142】
[第7の実施形態]
図17は、第7の実施形態の遅延調整回路12の遅延量の調整手順を表わすフローチャートである。
【0143】
図17のフローチャートが、図4のフローチャートと相違する点は、図17のフローチャートが、ステップS501とS502を備える点である。
【0144】
ステップS111でYESの場合に、ステップS112の前にステップS502が実行される。ステップS111でNOの場合に、ステップS112の前にステップS501が実行される。
【0145】
ステップS501において、再トレーニングモジュール11は、再トレーニングの時間間隔(周期)を定めるウエイト時間ΔTを増大させる。
【0146】
ステップS501において、再トレーニングモジュール11は、再トレーニングの時間間隔(周期)を定めるウエイト時間ΔTを減少させる。
【0147】
図18は、再トレーニングの周期の変化を表わす図である。
図18(a)は、再トレーニングの周期の初期値の例を表わす図である。図18(b)は、再トレーニングの周期が減少した例を表わす図である。図18(c)は、再トレーニングの周期が増大した例を表わす図である。
【0148】
図18(a)に示すように、再トレーニングの周期の初期値がXである。図18(b)に示すように、コードの修正が必要と判断された場合には、ライトデータWDQのタイミングとライト用データストローブ信号WDQSのタイミングの関係に変動が生じており、不安定な状態と考えられるため、再トレーニングの周期が1/2倍のX/2に減少している。図18(c)に示すように、コードの修正が不要と判断された場合には、ライトデータWDQのタイミングとライト用データストローブ信号WDQSのタイミングの関係に変動が生じておらず、安定した状態と考えられるため、再トレーニングの周期が2倍の2Xに増加している。
【0149】
以上のように、本実施の形態によれば、ライトデータWDQのタイミングとライト用データストローブ信号WDQSのタイミングの関係に変動が生じているときには、コードの修正とともに、再トレーニングの周期を短くするので、変動に追随しやくすることができる。ライトデータWDQのタイミングとライト用データストローブ信号WDQSのタイミングの関係が安定しているときには、コードを修正せず、再トレーニングの周期を長くするので、不必要な再トレーニングを実行しないようにすることができる。
【0150】
なお、第6の実施形態のように、複数のコードを用いて各エッジの検査をする場合には、エッジの検査結果のパターンに応じて、再トレーニングの周期を変更することとしてもよい。たとえば、パターンT4、T3、T2の場合に、再トレーニングの周期を現在の周期から1/2、1/3、1/4に変更することとしてもよい。
【0151】
[第8の実施形態]
図19は、第8の実施形態の半導体装置76の構成を表わす図である。
【0152】
半導体装置76は、環境変動検出部45を備える。
環境変動検出部76は、メモリ装置13またはメモリコントーラ32内の温度変動または電圧の変動を検出する。
【0153】
たとえば、環境変動検出部76は、メモリ装置13またはメモリコントーラ32内の温度の変動を検出する温度センサとすることができる。あるいは、環境変動検出部76は、メモリ装置13またはメモリコントーラ32内のトランジスタの閾値電圧の変動を検出する電圧検出回路であってもよい。あるいは、環境変動検出部76は、メモリ装置13またはメモリコントーラ32内の電源、または負荷と接続されているノードなどの特定箇所の電圧の変動を検出する電圧検出回路であってもよい。これによって、負荷の使用が大きくなると、負荷に接続されているノードの電圧が降下するのを検出できる。あるいは、環境変動検出部76は、半導体装置内の温度変動または電圧変動に依存する内部発振信号を生成するリングオシレータと、半導体装置内の温度変動または電圧変動に依存しない外部発振信号の所定のサイクル中に発生する内部発振信号のパルス数をカウントするパルスカウンタと、パルスカウンタのカウンタ値と標準値とを比較する比較器とによって構成されるものとしてもよい。
【0154】
図20は、第8の実施形態の遅延調整回路12の遅延量の調整手順を表わすフローチャートである。
【0155】
図20のフローチャートが、図4のフローチャートと相違する点は、図20のフローチャートが、ステップS112とS103の間にステップS601とS602を備える点である。
【0156】
ステップS601において、再トレーニングモジュール11は、環境変動検出部45から、環境変動検出部45が検出した温度変動または電圧変動を表わす信号を受ける。
【0157】
ステップS602において、再トレーニングモジュール11は、検出された温度変動または電圧変動に基づいて、再トレーニングの時間間隔(周期)を定めるウエイト時間ΔTを変化させる。たとえば、再トレーニングモジュール11は、温度変動または電圧変動が閾値以上であれば、ウエイト時間ΔTを1/2にすることとしてもよい。
【0158】
以上のように、本実施の形態によれば、温度変動または電圧変動が生じているときには、ライトデータWDQのタイミングとライト用データストローブ信号WDQSのタイミングの関係に変動が生じている可能性が高いので、再トレーニングの周期を短くするので、変動に追随することができる。
【0159】
[第9の実施形態]
図21は、第9の実施形態の遅延調整回路12の遅延量の調整手順を表わすフローチャートである。
【0160】
ステップS701において、ステップS101と同様にし、初期トレーニングモジュール10は、初期トレーニングを実行する。
【0161】
ステップS702において、ステップS102と同様にし、再トレーニングモジュール11は、一定時間ΔTだけウエイトする。
【0162】
ステップS703において、再トレーニングモジュール11は、環境変動検出部45から、環境変動検出部45が検出した温度変動または電圧変動を表わす信号を受ける。
【0163】
ステップS704において、再トレーニングモジュール11は、検出された温度変動または電圧変動に基づいて、第6の実施形態の変形例で説明した再トレーニング時のレフトエッジ検査用のコードの変動幅N、およびライトエッジ検査用のコードの変動幅Nを設定する。たとえば、再トレーニングモジュール11は、電圧変動または温度変動が大きければ、コードの変動幅Nを大きくし、電圧変動または温度変動が小さければ、コードの変動幅Nを小さくする。
【0164】
ステップS705において、ステップS403〜S414と同様にして、再トレーニングモジュール11は、再トレーニングを実行する。
【0165】
ステップS706において、電源がオフとされない場合(NO)、処理がステップS402に戻り、電源がオフとされる場合(YES)、処理が終了する。
【0166】
以上のように、本実施の形態では、電圧変動または温度変動に応じて、再トレーニングでのコードの補正精度と、かつ再トレーニングの時間が最適となるように、レフトエッジ検査用のコードの変動幅N、およびライトエッジ検査用のコードの変動幅Nを設定することができる。
【0167】
なお、再トレーニングモジュール11は、コードの変動幅Nに代えて、あるいはコードの変動幅Nとともに、コードの変動刻みも電圧変動または温度変動に応じて変更するものとしてもよい。たとえば、電圧変動または温度変動が小さければ、再トレーニングモジュール11は、第6の実施形態のようにコードの変動刻みを「1」ずつとする。すなわち、再トレーニングモジュール11は、コードL_DおよびコードR_Dを(+2→+1→0)、または(−2→−1→0)の順に変動させる。たとえば、電圧変動または温度変動が小さければ、再トレーニングモジュール11は、コードの変動刻みを「2」ずつとする。すなわち、再トレーニングモジュール11は、コードL_DおよびコードR_Dを(+4→+2→0)、または(−4→−2→0)の順に変動させる。
【0168】
(変形例)
上記実施形態以外にも、たとえば、以下のような変形例も想定される。
【0169】
(1)トレーニング制御回路での選択操作
上記の実施形態では、セレクタSL2がレフトエッジ用レジスタ14の出力と、センタ用レジスタ15の出力と、ライトエッジ用レジスタ16の出力とを選択して、遅延調整回路12へ出力することとしたが、これに限定されるものではない。セレクタSL2の代わりに、トレーニング制御回路22が、これらのレジスタ14、15、16の出力を選択して、遅延調整回路12へ出力することとしてもよい。
【0170】
(2)複数のライトデータ間のタイミング調整
第3〜第9の実施形態では、ライトデータWDQは、遅延調整回路を介さずに、メモリ装置へ送られるものとしたが、これに限定されるものではない。パラレルに転送される複数のライトデータWDQ間のタイミング調整のために、ライトデータWDQは、図示しない遅延調整回路を介して、メモリ装置へ転送されるものとしてもよい。
【0171】
(3)ライトデータの遅延量の調整
第3〜第9の実施形態では、再トレーニングモジュール11は、ライトデータWDQの有効ウインドウのレフトエッジまたはライトエッジと、ライト用データストローブ信号WDQSの立ち上がりエッジとが一致するように、ライト用データストローブ信号WDQSの遅延量を調整したが、これに限定するものではない。再トレーニングモジュール11は、ライトデータWDQの有効ウインドウのレフトエッジまたはライトエッジと、ライト用データストローブ信号WDQSの立ち上がりエッジとが一致するように、ライトデータWDQの遅延量を調整することとしてもよい。
【0172】
たとえば、再トレーニングモジュール11は、図7(a)で示したようにライトデータWDQの有効ウインドウのレフトエッジおよびライトエッジが左側にずれた場合には、コードL_Dを設定すると一致となり、コードR_Dを設定すると不一致となるので、以下を実行する。再トレーニングモジュール11は、ライト用データストローブ信号WDQSの立ち上がりエッジと有効ウインドウのレフトエッジが一致し、ライト用データストローブ信号WDQSの立ち上がりエッジと有効ウインドウのライトエッジが一致するように、コードL_DおよびR_Dを大きく(たとえば+1)するとともに、コードC_Dを大きくする(たとえば+1)。
【0173】
再トレーニングモジュール11は、図7(b)に示すように、ライトデータWDQの有効ウインドウのレフトエッジおよびライトエッジが右側にずれた場合には、コードL_Dを設定すると不一致となり、コードR_Dを設定すると一致となるので、以下を実行する。再トレーニングモジュール11は、ライト用データストローブ信号WDQSの立ち上がりエッジと有効ウインドウのレフトエッジが一致し、ライト用データストローブ信号WDQSの立ち上がりエッジと有効ウインドウのライトエッジが一致するように、コードL_DおよびR_Dを小さくする(たとえば−1)するとともに、コードC_Dを小さくする(たとえば−1)。
【0174】
再トレーニングモジュール11は、図7(c)に示すように、ライトデータWDQの有効ウインドウのレフトエッジが右側にずれ、ライトエッジが左側にずれた場合には、コードL_Dを設定すると不一致となり、コードR_Dを設定しても、不一致となるので、以下を実行する。再トレーニングモジュール11は、ライト用データストローブ信号WDQSの立ち上がりエッジと有効ウインドウのレフトエッジとが一致し、ライト用データストローブ信号WDQSの立ち上がりエッジと有効ウインドウのレフトエッジとが一致するように、コードL_Dを小さくし(たとえば−1)、コードR_Dを大きくする(たとえば+1)。
【0175】
(4)再トレーニングの周期
上記の実施形態では、再トレーニングの周期の変更は、コードの修正とともに実行されたが、これに限定するものではない。
【0176】
たとえば、再トレーニングモジュール11は、再トレーニングにおいて、初期トレーニングと同じ処理を実行するものとし、再トレーニングモジュール11は、環境変動検出部45が検出した温度変動または電圧変動に応じて、再トレーニングの時間間隔を変更するものとしてもよい。
【0177】
すなわち、この半導体装置は、メモリ装置へのライトデータまたはデータストローブ信号の遅延量を調整する遅延調整回路と、前記遅延調整回路の遅延量を設定する制御回路とを備える。前記制御回路は、トレーニングにおいて、前記ライトデータの有効ウインドウのタイミングが前記データストローブ信号のエッジのタイミングと一致するように前記遅延調整回路の遅延量を求める。前記制御回路は、前記半導体装置内の温度または電圧の変動に基づいて、前記トレーニングの時間間隔を変更する。
【0178】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【0179】
10 初期トレーニングモジュール、11 再トレーニングモジュール、12,53,63 遅延調整回路、13,52 メモリ装置、14 レフトエッジ用レジスタ、15 センタ用レジスタ、16 ライトエッジ用レジスタ、19,55,65 記憶部、21,54,64 制御回路、22 トレーニング制御回路、32,51,61 メモリコントローラ、41 トレーニング専用メモリ、42 ユーザ使用可能メモリ、43 トレーニング用領域、45 環境変動検出部、71〜76 半導体装置、BF1,BF2 双方向バッファ、DE(1)〜DE(N) 遅延素子、SL1,SL2 セレクタ。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21