以下に添付図面を参照して、実施形態にかかる半導体集積回路を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
(実施形態)
実施形態に係る半導体集積回路は、半導体メモリに対するパラレルインターフェースとして用いられる。例えば、半導体集積回路100は、図1に示す半導体装置1に搭載される。図1は、半導体集積回路100が適用された半導体装置1の構成を示す図である。例えば、半導体装置1は、メモリコントローラ2及び半導体メモリ3を有する。コントローラ2は、制御回路4及び送信装置5を有する。送信装置5は、端子TMDQS,TMDQ1,TMDQ2,・・・,TMDQ(N−1)を介して半導体メモリ3に電気的に接続されており、端子TMDQS,TMDQ1,TMDQ2,・・・,TMDQ(N−1)を介して半導体メモリ3へ複数の信号を送信可能である。送信装置5は、クロック生成回路6、インターフェース回路7、及びクロック生成回路6とインターフェース回路7との間のパラレルインターフェースとしての半導体集積回路100を有する。インターフェース回路7は、半導体集積回路100から複数の信号を受けると、複数の信号を端子TMDQS,TMDQ1,TMDQ2,・・・,TMDQ(N−1)経由で半導体メモリ3へ送信可能である。
半導体集積回路100は、パラレルインターフェースとして用いられる場合、クロック生成回路6とインターフェース回路7との間に設けられる複数の遅延パスPA−s,PA−1,PS−2,・・・,PA−(N−1)が並列に配されて構成される。Nは、任意の3以上の整数である。複数の遅延パスPA−s〜PA−(N−1)により異なる種類の信号が転送されることがある。
NAND型フラッシュメモリなどのようにクロック(ストローブ信号)に同期した動作を行う半導体メモリ3においては、データに対して位相制御されたクロックが必要となる。そのため、制御回路4は、ストローブ信号DQS及び(N−1)ビットのデータDQ[1]〜DQ[N−1]の位相関係を予め調整して半導体集積回路100へ供給する。半導体集積回路100は、ストローブ信号DQS及びデータDQ[1]〜DQ[N−1]の位相関係を維持しながらそれぞれを伝送するために、基準クロックCK0〜CK(N−1)を用いて、ビットスライスを行う。ビットスライスとは、パラレルデータ(すなわち、ストローブ信号DQS及びデータDQ[1]〜DQ[N−1])を基準クロックCK0〜CK(N−1)に同期して1ビット単位で2値化する(スライスする)処理である。このため、複数の遅延パスPA−s〜PA−(N−1)の間の遅延量が互いに適切に(例えば、略等しい、又は充分なマージンを有する遅延量に)調整され、パラレルデータが適切な位相関係を維持したままインターフェース回路7へ伝送されることが望まれる。
しかし、複数の遅延パスPA−s〜PA−(N−1)のうち、ストローブ信号DQS用の遅延パスである遅延パスPA−sは、データDQ[1]〜DQ[N−1]用の遅延パスPA−1〜PA−(N−1)より遅延量が大きくなる可能性がある。例えば、半導体集積回路100は、フリップフロップ回路群110、可変遅延回路群120、デューティ調整回路130を有する。遅延パスPA−sは、フリップフロップ回路群110、可変遅延回路群120、デューティ調整回路130を経由している。遅延パスPA−1〜PA−(N−1)は、フリップフロップ回路群110におけるフリップフロップ回路111、可変遅延回路群120における可変遅延回路121を経由しているが、デューティ調整回路130を経由していない(図2参照)。このため、遅延パスPA−sは、デューティ調整回路130の特性に対応した遅延量で他の遅延パスPA−1〜PA−(N−1)より遅延量が大きくなる可能性がある。
このような事象に対して、他の遅延パスPA−1〜PA−(N−1)における可変遅延回路群120及びインターフェース回路7の間にダミーのデューティ調整回路(デューティ調整回路130のミラーとなるデューティ調整回路)を配置することが考えられる。この場合、半導体集積回路100の回路規模が増大し、半導体集積回路100のコストが増大する可能性がある。
そこで、本実施形態では、半導体集積回路100において、遅延パスPA−sに配された可変遅延回路121の遅延量を他の遅延パスPA−1〜PA−(N−1)に配された可変遅延回路121の遅延量より小さく調整することで、複数の遅延パスPA−s〜PA−(N−1)の等遅延化を図る。
具体的には、半導体集積回路100は、図2に示すように構成される。図2は、半導体集積回路100の構成を示す図である。
半導体集積回路100は、フリップフロップ回路群110、可変遅延回路群120、デューティ調整回路130を有することに加えて、可変遅延回路群120の遅延量を調整する遅延制御回路140を有する。
フリップフロップ回路群110は、複数のフリップフロップ回路111−s,111−1,111−2,・・・,111−(N−1)を有する。フリップフロップ回路111−s,111−1,111−2,・・・,111−(N−1)は、それぞれ、遅延パスPA−s,PA−1,PA−2,・・・,PA−(N−1)上に配されている。
フリップフロップ回路111−sは、制御回路4からデータ端子Dに供給されるストローブ信号DQSを、クロック端子CKに供給されるクロックCK0に同期して保持し、保持されたストローブ信号DQSを出力端子Qから出力する。フリップフロップ回路111−1は、制御回路4からデータ端子Dに供給されるデータDQ[1]を、クロック端子CKに供給されるクロックCK1に同期して保持し、保持されたデータDQ[1]を出力端子Qから出力する。フリップフロップ回路111−2は、制御回路4からデータ端子Dに供給されるデータDQ[2]を、クロック端子CKに供給されるクロックCK2に同期して保持し、保持されたデータDQ[2]を出力端子Qから出力する。同様に、フリップフロップ回路111−(N−1)は、制御回路4からデータ端子Dに供給されるデータDQ[N−1]を、クロック端子CKに供給されるクロックCK(N−1)に同期して保持し、保持されたデータDQ[N−1]を出力端子Qから出力する。
なお、クロック生成回路6は、PLL(Phase Locked Loop)回路6a及びクロックツリー回路6bを有する。PLL回路6aは、複数のクロックCK0,CK1,・・・,CK(N−1)を生成してクロックツリー回路6bへ供給する。クロックツリー回路6bは、複数のクロックCK0,CK1,・・・,CK(N−1)をツリー状に複数のフリップフロップ回路111−s,111−1,111−2,・・・,111−(N−1)へ分配する。これにより、クロック生成回路6は、互いに同期した複数のクロックCK0,CK1,・・・,CK(N−1)を複数のフリップフロップ回路111−s,111−1,111−2,・・・,111−(N−1)へ供給可能である。
可変遅延回路群120は、複数の可変遅延回路121−s,121−1,121−2,・・・,121−(N−1)を有する。可変遅延回路121−s,121−1,121−2,・・・,121−(N−1)は、それぞれ遅延素子DLY_1,DLY_2,DLY_3,・・・,DLY_Nとも呼ぶことにする。可変遅延回路121−s,121−1,121−2,・・・,121−(N−1)は、それぞれ、遅延パスPA−s,PA−1,PA−2,・・・,PA−(N−1)上に配されている。
可変遅延回路121−sは、フリップフロップ回路111−sから供給されたストローブ信号DQSに対して遅延量D_s=所定の遅延量D×n[s](n[s]≦p、且つn[s]は任意の1以上の整数)を付加し、遅延量D_sが付加されたストローブ信号DQSを出力する。可変遅延回路121−1は、フリップフロップ回路111−1から供給されたデータDQ[1]に対して遅延量D_1=所定の遅延量D×n[1](n[1]≦p)を付加し、遅延量D_1が付加されたデータDQ[1]を出力する。可変遅延回路121−2は、フリップフロップ回路111−2から供給されたデータDQ[2]に対して遅延量D_2=所定の遅延量D×n[2](n[2]≦p)を付加し、遅延量D_2が付加されたデータDQ[2]を出力する。同様に、可変遅延回路121−(N−1)は、フリップフロップ回路111−(N−1)から供給されたデータDQ[N−1]に対して遅延量D_(N−1)=所定の遅延量D×n[N−1](n[N−1]≦p)を付加し、遅延量D×n[N−1]が付加されたデータDQ[N−1]を出力する。
各可変遅延回路121−s,121−1,121−2,・・・,121−(N−1)は、図3に示すように、それぞれに付加される遅延量D×n[s],D×n[1],D×n[2],・・・,D×n[N−1]が遅延制御回路140からの制御信号で可変されるように構成されている。各可変遅延回路121−s,121−1,121−2,・・・,121−(N−1)は、同様の構成であるため、図3では、可変遅延回路121として示されている。図3は、可変遅延回路121の構成を示す図である。
可変遅延回路121は、ディレイチェーン60及びセレクタ70を有する。ディレイチェーン60は、複数の遅延素子61−1〜61−p(pは2以上の任意の整数)が直列に接続された構成を有する。各遅延素子61−1〜61−pは、互いに等価な遅延特性(例えば、均等な遅延量D)を有する。
ディレイチェーン60における各遅延素子61−1〜61−pは、入力信号φINに対して先頭からの段数に応じて遅延されたタップ出力TAP1〜TAPpをセレクタ70へ出力する。例えば、先頭からk番目(kは任意の1以上p以下の整数)の遅延素子61−kは、入力信号φINに対して遅延量D×kで遅延させたタップ出力TAPkをセレクタ70へ出力する。
セレクタ70は、遅延制御回路140から供給されたセレクト信号φSELに応じて、複数の遅延素子61−1〜61−pからの複数のタップ出力TAP1〜TAPpのうちの1つを選択して、所望の遅延量Dtotalを有する出力信号φOUTを出力する。
ここで、セレクト信号φSELは、遅延量に対応したタップ数を示す信号とすることができる。すなわち、各可変遅延回路121−s,121−1,121−2,・・・,121−(N−1)に付加される遅延量D×n[s],D×n[1],D×n[2],・・・,D×n[N−1]について、それぞれ、セレクト信号φSEL=n[s],n[1],n[2],・・・,n[N−1]とすることができる。
図2に戻って、デューティ調整回路130は、DCA(Duty Cycle Adjuster)131を有する。DCA131は、遅延パスPA−s上に配されている。
DCA131は、可変遅延回路121−sから供給されたストローブ信号DQSに対して、デューティ比の調整を行い、調整後のストローブ信号DQSを出力する。DCA131は、図4に示すように、そのデューティ比の調整量が遅延制御回路140からのセレクト信号φDUTYで可変されるように構成されている。図4は、デューティ調整回路130におけるDCA131の構成を示す図である。
DCA131は、ディレイチェーン160、セレクタ170、遅延素子261、セレクタ1311、ANDゲート1312、ORゲート1313を有する。ディレイチェーン160は、複数の遅延素子161−1〜161−pが直列に接続された構成を有する。各遅延素子161−1〜161−pは、互いに等価な遅延特性(例えば、均等な遅延量D)を有するとともに、各可変遅延回路121の各遅延素子61−1〜61−p(図3参照)と等価な遅延特性(等しい遅延量D)を有する。すなわち、ディレイチェーン160及びセレクタ170を含むディレイブロック180は、可変遅延回路121(図3参照)と等価な回路構成を有する。
遅延素子261は、各遅延素子161−1〜161−pと等価な遅延特性(等しい遅延量D)を有するとともに、各遅延素子61−1〜61−p(図3参照)と等価な遅延特性(等しい遅延量D)を有する。遅延素子261により付与される遅延量(例えば、遅延量D)は、DCA131における最小遅延量に対応している。
セレクト信号φDUTYは、セレクタ170及びセレクタ1311にそれぞれ供給される。ANDゲート1312は、入力信号φINに対して遅延素子261で遅延量Dが付与された信号と、ディレイブロック180の出力との論理積を演算して、演算結果をセレクタ1311へ出力する。ORゲート1313は、入力信号φINに対して遅延素子261で遅延量Dが付与された信号と、ディレイブロック180の出力との論理和を演算し、演算結果をセレクタ1311へ出力する。
セレクタ1311は、遅延制御回路140から供給されたセレクト信号φDUTYに応じて、デューティ比調整のために入力信号φINの立ち上がりエッジを選択的に遅延させる場合にANDゲート1312の演算結果を選択し、デューティ比調整のために入力信号φINの立ち下がりエッジを選択的に遅延させる場合にORゲート1313の演算結果を選択する。
図2に戻って、遅延制御回路140は、遅延パスPA−sに配された可変遅延回路121−sの遅延量D×n[s]を他の遅延パスPA−1〜PA−(N−1)に配された可変遅延回路121−1〜121−(N−1)の遅延量D×n[1],D×n[2],・・・,D×n[N−1]より小さく調整する。
遅延制御回路140は、遅延量D×n[s]を、DCA131の特性に対応した遅延量(例えば、DCA131の最小遅延量D)でD×n[1],D×n[2],・・・,D×n[N−1]より小さく調整する。例えば、遅延制御回路140は、D×n[1]=D×n[2]=・・・=D×n[N−1]=D×m(mは任意の2以上の整数)に調整する場合、D×n[s]=D×(m−1)に調整してもよい。これにより、複数の遅延パスPA−s〜PA−(N−1)の遅延量を略均等にすることができる。
なお、各可変遅延回路121−s,121−1,121−2,・・・,121−(N−1)で付加する所定の遅延量Dが互いにバラツキを有する場合、遅延制御回路140は、遅延パスPA−s〜PA−(N−1)の遅延量が均等になるようにキャリブレーションを行ってもよい。この場合、遅延制御回路140は、各遅延パスPA−s〜PA−(N−1)を等遅延化する際の基準として、各可変遅延回路121−s,121−1,121−2,・・・,121−(N−1)について設定した遅延段数n[1],n[2],・・・,n[N−1]を記憶しておくことができる。
遅延制御回路140における各可変遅延回路121−s〜121−(N−1)を制御する構成は、例えば図5に示すように構成され得る。図5は、遅延制御回路140の一部の構成を示す図である。なお、遅延制御回路140におけるデューティ調整回路130を制御する部分は、図示の簡略化のため、省略されている。
遅延制御回路140は、シーケンサ141、測定器142、セレクタ143、計算回路144、減算器145、セレクタ146、セレクタ147−1〜147−N、保持回路148−1〜148−N、セレクタ149−1〜149−N、適用回路151−1〜151−Nを有する。
シーケンサ141は、遅延制御回路140の各部を統括的に制御する。例えば、シーケンサ141は、制御信号φMSを測定器142へ供給する。測定器142は、制御信号φMSがアクティブレベルになると、単位角度遅延量当たりのタップ数の計算が指示されたとして、この計算を開始する。測定器142は、リングオシレータを有し、単位角度遅延量当たりのタップ数を示す単位タップ数信号φUTを生成して計算回路144へ供給する。なお、測定器142は、リングオシレータに代えて、1周期を超える長さをもつ遅延素子、位相比較器、及び位相比較シーケンサで、360度分のTAP数を求めるような回路であっても良い。
セレクタ143は、各可変遅延回路121−s〜121−(N−1)に対する角度遅延量ANG[1]〜ANG[N]を制御回路4(図1参照)から受ける。シーケンサ141は、設定すべき遅延量の計算対象の可変遅延回路121を選択し、選択された可変遅延回路121を示すセレクト信号φDLYをセレクタ143の制御端子へ供給する。セレクタ143は、セレクト信号φDLYで示された可変遅延回路121に対応する角度遅延量ANGを選択して計算回路144へ出力する。
例えば、セレクト信号φDLY=1である場合、セレクタ143は、可変遅延回路121−sが選択されているとして、角度遅延量ANG[1]を選択して計算回路144へ出力する。例えば、セレクト信号φDLY=2である場合、セレクタ143は、可変遅延回路121−1が選択されているとして、角度遅延量ANG[2]を選択して計算回路144へ出力する。
シーケンサ141は、制御信号φCALCを計算回路144へ供給する。計算回路144は、制御信号φCALCがアクティブレベルになると、セレクタ143からの角度遅延量に相当するタップ数の計算が指示されたとして、この計算を開始する。すなわち、計算回路144は、セレクタ143から供給される角度遅延量ANGに、測定器142から供給される単位タップ数信号φUTで示される単位タップ数を乗算して、角度遅延量ANGに対応するタップ数を求める。計算回路144は、算出したタップ数を減算器145及びセレクタ146へ供給する。
減算器145は、角度遅延量ANGに対応するタップ数を計算回路144から受け、DCA131の特性に対応するタップ数φDTを制御回路4(図1参照)から受ける。減算器145は、角度遅延量ANGに対応するタップ数から、DCA131の特性に対応するタップ数φDTを減算し、減算結果をセレクタ146へ供給する。
例えば、角度遅延量ANGに対応するタップ数が「3」であり、DCA131の特性に対応するタップ数φDTがDCA131の最小遅延量に対応するタップ数「1」である場合(図4参照)、減算器145は、3−1=2を減算結果としてセレクタ146へ供給する。このとき、計算回路144からセレクタ146へは、タップ数「3」が供給される。なお、セレクタ146とセレクタ147−1〜147−Nとの間に、セレクタ146から出力されるタップ数をクリッピングする回路を設けてもよい。クリッピングする回路は、可変遅延回路121が物理的に有する最小タップ数から最大タップ数までの間になるように、セレクタ146から出力されるタップ数をクリッピングする。
シーケンサ141は、選択された可変遅延回路121がDCA131を経由する遅延パスに対応しているか否かを示す制御信号φDCAを生成してセレクタ146へ供給する。例えば、シーケンサ141は、計算対象として可変遅延回路121−sを選択している場合、φDCA=1とし、計算対象として可変遅延回路121−1〜121−(N−1)を選択している場合、φDCA=0とする。
セレクタ146は、φDCA=1であれば、減算器145からの減算結果のタップ数を選択してセレクタ147−1〜147−Nへ供給する。セレクタ146は、φDCA=0であれば、計算回路144から供給されたタップ数を選択してセレクタ147−1〜147−Nへ供給する。
シーケンサ141は、計算回路144及び減算器145の計算が終わるまで(例えば、全ての可変遅延回路121についてタップ数の計算が完了するまで)は制御信号φCOMP=0として各セレクタ147−1〜147−Nの制御端子へ供給する。各セレクタ147−1〜147−Nは、制御信号φCOMP=0であれば、保持回路148−1〜148−Nの出力を選択して保持回路148−1〜148−Nの入力へ供給する。シーケンサ141は、計算回路144からセレクタ146へ供給される計算進行状況を把握可能であり、最後の角度遅延量ANG[N]に対する計算結果が計算回路144からセレクタ146へ供給されたことを認識すると、計算回路144及び減算器145の計算が終わったと判断する。シーケンサ141は、計算回路144及び減算器145の計算が終わると(例えば、全ての可変遅延回路121についてタップ数の計算が完了すると)、制御信号φCOMP=1として各セレクタ147−1〜147−Nの制御端子へ供給する。各セレクタ147−1〜147−Nは、セレクタ146から供給されたタップ数を保持回路148へ供給する。これにより、最新のタップ数の計算結果が、順次、保持回路148−1〜148−Nに保持される。
保持回路148−1〜148−Nに保持されたタップ数は、それぞれ、セレクタ149−1〜149−Nへ供給される。各セレクタ149−1〜149−Nは、インターフェース回路7がアイドル状態(半導体メモリ3がレディ状態)であるか否かを示すセレクト信号φIDLEをインターフェース回路7(図1参照)から制御端子で受ける。保持回路148−1〜148−Nは、例えば、フリップフロップにより構成され得る。
セレクト信号φIDLE=0であれば、インターフェース回路7がアイドル状態でない(半導体メモリ3がビジー状態)であるとして、各セレクタ149−1〜149−Nは、適用回路151−1〜151−Nの出力を選択して適用回路151−1〜151−Nの入力へ供給する。すなわち、可変遅延回路121−s〜121−(N−1)へのタップ数の計算結果が適用されない。適用回路151−1〜151−Nは、例えば、フリップフロップにより構成され得る。
セレクト信号φIDLE=1であれば、インターフェース回路7がアイドル状態である(半導体メモリ3がレディ状態)であるとして、各セレクタ149−1〜149−Nは、保持回路148−1〜148−Nから供給されたタップ数の計算結果を選択して適用回路151−1〜151−Nへ供給する。これにより、可変遅延回路121−s〜121−(N−1)へのタップ数の計算結果が適用される。
例えば、角度遅延量ANGに対応するタップ数が「3」であり、DCA131の特性に対応するタップ数φDTがDCA131の最小遅延量に対応するタップ数「1」である上記の例では、可変遅延回路121−sへ減算結果のタップ数「2」が設定され、他の各可変遅延回路121−1〜121−Nへタップ数「3」が設定される。
以上のように、実施形態では、半導体集積回路100において、遅延パスPA−sに配された可変遅延回路の遅延量を他の遅延パスPA−1〜PA−(N−1)に配された可変遅延回路の遅延量より小さく調整する。これにより、他の遅延パスPA−1〜PA−(N−1)にダミーのデューティ調整回路を配置する場合に比べて、回路面積の増大を抑制できるとともに、複数の遅延パスPA−s〜PA−(N−1)を等遅延化できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。