(57)【要約】【課題】信号の位相差の調整又はテストを高精度且つ簡略に行える半導体集積回路を提供する。【解決手段】半導体集積回路は、書き込みストローブ生成回路、書き込みストローブ遅延回路、書き込み用遅延回路、出力データ生成回路、データ入力回路、及び、入力データ比較回路を備える。前記書き込み用遅延回路は複数の書き込みテストクロック信号を生成する。前記出力データ生成回路は、対応する前記書き込みテストクロック信号にそれぞれ同期した複数のテスト出力データを生成する。前記データ入力回路は、前記複数のテスト出力データと前記テスト書き込み用ストローブ信号とに基づいて前記メモリに書き込まれた複数のテスト書き込みデータを並列に入力する。前記入力データ比較回路は、入力された前記複数のテスト書き込みデータと前記複数のテスト出力データとの対応するもの同士を比較して、一致した前記テスト出力データを特定する。【選択図】図１
2012058997.tif 000002
【特許請求の範囲】
【請求項１】
書き込み用ストローブ信号に同期してデータを書き込むメモリに接続可能な半導体集積回路であって、
基準書き込みストローブ信号を生成する書き込みストローブ生成回路と、
前記基準書き込みストローブ信号をテスト書き込み用遅延時間だけ遅延したテスト書き込み用ストローブ信号を生成する書き込みストローブ遅延回路と、
前記基準書き込みストローブ信号を遅延させ、前記基準書き込みストローブ信号に対して少なくとも２種類の遅延時間を有する複数の書き込みテストクロック信号を生成する書き込み用遅延回路と、
対応する前記書き込みテストクロック信号にそれぞれ同期した複数のテスト出力データを生成する出力データ生成回路と、
前記複数のテスト出力データと前記テスト書き込み用ストローブ信号とに基づいて前記メモリに書き込まれた複数のテスト書き込みデータを、前記メモリから並列に入力する、データ入力回路と、
入力された前記複数のテスト書き込みデータと、前記複数のテスト出力データと、の対応するもの同士を比較して、一致した前記テスト出力データを特定する、入力データ比較回路と、
を備えることを特徴とする半導体集積回路。
【請求項２】
遅延調整回路を更に備え、
前記入力データ比較回路は、特定された前記テスト出力データの中から１つを選択し、
前記遅延調整回路は、選択された前記テスト出力データに対応する前記書き込みテストクロック信号の遅延時間と、前記テスト書き込み用遅延時間と、に基づいて書き込み遅延時間を計算し、
前記書き込みストローブ遅延回路は、前記メモリへの書き込み時に、前記基準書き込みストローブ信号を前記書き込み遅延時間だけ遅延した前記書き込み用ストローブ信号を生成し、
前記出力データ生成回路は、前記書き込み時に、前記基準書き込みストローブ信号に同期した複数の出力データを生成し、前記メモリに並列に出力する、
ことを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
読み出し用ストローブ信号と、前記読み出し用ストローブ信号に同期したデータと、を出力するメモリに接続可能な半導体集積回路であって、
複数のテスト出力データを生成する出力データ生成回路と、
前記読み出し用ストローブ信号を遅延させ、前記読み出し用ストローブ信号に対して少なくとも２種類の遅延時間を有する複数の読み出しテストクロック信号を生成する読み出し用遅延回路と、
前記複数のテスト出力データが複数のテスト書き込みデータとして書き込まれた前記メモリから、前記複数のテスト書き込みデータを、前記各テスト書き込みデータに対応した前記読み出しテストクロック信号により複数のテスト入力データとして並列に入力する、データ入力回路と、
前記複数のテスト入力データと、前記複数のテスト出力データと、の対応するもの同士を比較して、一致した前記テスト入力データを特定する、入力データ比較回路と、
を備えることを特徴とする半導体集積回路。
【請求項４】
遅延調整回路を更に備え、
前記入力データ比較回路は、特定された前記テスト入力データの中から１つを選択し、
前記遅延調整回路は、選択された前記テスト入力データに対応する前記読み出しテストクロック信号の遅延時間を、読み出し遅延時間として計算し、
前記読み出し用遅延回路は、前記メモリからの読み出し時に、前記読み出し用ストローブ信号を前記読み出し遅延時間だけ遅延した読み出しクロック信号を生成し、
前記データ入力回路は、前記読み出し時に、前記メモリからの複数の入力データを、前記読み出しクロック信号に同期して並列に入力する、
ことを特徴とする請求項３に記載の半導体集積回路。
【請求項５】
書き込み用ストローブ信号に同期してデータを書き込むと共に、読み出し用ストローブ信号と、前記読み出し用ストローブ信号に同期した前記データと、を出力するメモリに接続可能な半導体集積回路であって、
基準書き込みストローブ信号を生成する書き込みストローブ生成回路と、
前記基準書き込みストローブ信号をテスト書き込み用遅延時間だけ遅延した前記テスト書き込み用ストローブ信号を生成する書き込みストローブ遅延回路と、
前記基準書き込みストローブ信号を遅延させ、前記基準書き込みストローブ信号に対して少なくとも２種類の遅延時間を有する複数の書き込みテストクロック信号を生成する書き込み用遅延回路と、
対応する前記書き込みテストクロック信号にそれぞれ同期した複数のテスト出力データを生成する出力データ生成回路と、
前記読み出し用ストローブ信号を遅延させ、前記読み出し用ストローブ信号に対して少なくとも２種類の遅延時間を有する複数の読み出しテストクロック信号を生成する読み出し用遅延回路と、
前記複数のテスト出力データが前記テスト書き込み用ストローブ信号に基づいて複数のテスト書き込みデータとして書き込まれた前記メモリから、前記複数のテスト書き込みデータを、前記各テスト書き込みデータに対応した前記読み出しテストクロック信号により複数のテスト入力データとして並列に入力する、データ入力回路と、
前記複数のテスト入力データと、前記複数のテスト出力データと、の対応するもの同士を比較して、一致した前記テスト入力データを特定する、入力データ比較回路と、
を備えることを特徴とする半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、半導体集積回路に関する。
【背景技術】
【０００２】
メモリコントローラとメモリ（例えば、ＤＤＲ−ＳＤＲＡＭ（Double Data Rate − Synchronous Dynamic Random Access Memory）など）は、ボード上やパッケージ内に複数のデバイスとして実装されている。メモリコントローラとメモリは、メモリＩ／ＦなどのパラレルＩ／Ｏを介して接続されている。メモリコントローラは、このパラレルＩ／Ｏを用いて、データ及びデータストローブ信号を、メモリに出力すると共にメモリから入力している。
【０００３】
このようなメモリがデータを高速に書き込み／読み出し出来るようにするため、データとデータストローブ信号との位相差をメモリコントローラ側で正確に調整する必要がある。
【０００４】
また、製品の出荷テストにおいては、正しく書き込み／読み出しが行える、データとデータストローブ信号との位相差の範囲を検出する必要がある。
【０００５】
しかしながら、信号の位相差の調整又はテストを高精度に行うには、複雑な回路や処理が必要であった。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−７１０１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、信号の位相差の調整又はテストを高精度且つ簡略に行える半導体集積回路を提供することにある。
【課題を解決するための手段】
【０００８】
実施形態によれば、半導体集積回路は、書き込みストローブ生成回路と、書き込みストローブ遅延回路と、書き込み用遅延回路と、出力データ生成回路と、データ入力回路と、入力データ比較回路と、を備える。前記半導体集積回路は、書き込み用ストローブ信号に同期してデータを書き込むメモリに接続可能である。前記書き込みストローブ生成回路は、基準書き込みストローブ信号を生成する。前記書き込みストローブ遅延回路は、前記基準書き込みストローブ信号をテスト書き込み用遅延時間だけ遅延したテスト書き込み用ストローブ信号を生成する。前記書き込み用遅延回路は、前記基準書き込みストローブ信号を遅延させ、前記基準書き込みストローブ信号に対して少なくとも２種類の遅延時間を有する複数の書き込みテストクロック信号を生成する。前記出力データ生成回路は、対応する前記書き込みテストクロック信号にそれぞれ同期した複数のテスト出力データを生成する。前記データ入力回路は、前記複数のテスト出力データと前記テスト書き込み用ストローブ信号とに基づいて前記メモリに書き込まれた複数のテスト書き込みデータを、前記メモリから並列に入力する。前記入力データ比較回路は、入力された前記複数のテスト書き込みデータと、前記複数のテスト出力データと、の対応するもの同士を比較して、一致した前記テスト出力データを特定する。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態に係るメモリコントローラ側ＬＳＩとメモリとを示すブロック図である。
【図２】第１の実施形態に係るテスト出力データを示すタイミング図である。
【図３】第１の実施形態に係るテスト出力データとデータストローブ信号とを示すタイミング図である。
【図４】第１の実施形態に係る読み出しテストクロック信号を示すタイミング図である。
【図５】第１の実施形態に係る読み出しテストクロック信号と入力データとを示すタイミング図である。
【図６】第２の実施形態に係るメモリコントローラ側ＬＳＩとメモリとを示すブロック図である。
【発明を実施するための形態】
【００１０】
以下に、図面を参照して本発明の実施形態について説明する。これらの実施形態は、本発明を限定するものではない。
【００１１】
（第１の実施形態）
本実施形態は、様々な遅延量で遅延した複数のデータを並列にメモリに出力すると共に、メモリからの複数のデータを様々な遅延量のクロック信号に同期して並列に入力することを、特徴の１つとする。
【００１２】
図１は、第１の実施形態に係るメモリコントローラ側ＬＳＩとメモリとを示すブロック図である。
【００１３】
同図に示すように、メモリコントローラ側ＬＳＩ１（半導体集積回路）と、メモリ２とが、ｎ（ｎは２以上の整数）ビットのパラレルＩ／Ｏ４０で接続されている。メモリコントローラ側ＬＳＩ１は、このパラレルＩ／Ｏ４０を介して、データストローブ信号ＤＱＳとデータＤＱ１〜ＤＱｎとを、メモリ２に出力すると共にメモリ２から入力している。メモリ２は、例えば、本実施形態ではＤＤＲ−ＳＤＲＡＭとする。つまり、メモリ２は、書き込み用データストローブ信号に同期してデータを書き込むと共に、読み出し用データストローブ信号と、読み出し用データストローブ信号に同期したデータと、を出力する。本明細書では、説明を明確化するため１ビットのみのデータストローブ信号ＤＱＳを示しているが、複数ビットのデータストローブ信号ＤＱＳを用いることもできる。
【００１４】
メモリコントローラ側ＬＳＩ１は、メモリコントローラ３と、書き込みストローブ生成回路４ａと、書き込みストローブ遅延回路４ｂと、読み出しストローブ遅延回路５と、遅延回路６と、パターン発生器７と、入力データ比較回路８と、ｎ個のフリップフロップ９〜１２と、ｎ個のフリップフロップ２３〜２６と、ｎ−１個のマルチプレクサ１３〜１５と、ｎ個のマルチプレクサ１９〜２２と、ｎ−１個のマルチプレクサ２７〜２９と、直列に接続されたｎ−１個の遅延素子１６〜１８と、直列に接続されたｎ−１個の遅延素子３０〜３２と、ｎ個のＩ／Ｏバッファ３３〜３７と、遅延調整回路３８と、レジスタ３９と、を備える。
【００１５】
遅延回路６と、遅延素子３０〜３２とは、書き込み用遅延回路５０ａとして機能する。読み出しストローブ遅延回路５と、遅延素子１６〜１８とは、読み出し用遅延回路５０ｂとして機能する。パターン発生器７と、フリップフロップ２３〜２６とは、出力データ生成回路６０として機能する。フリップフロップ９〜１２は、データ入力回路７０として機能する。
【００１６】
ここでは、各遅延素子１６〜１８，３０〜３２の遅延時間は等しいとする。
【００１７】
なお、本実施形態ではメモリ２がＤＤＲ−ＳＤＲＡＭである一例について説明していることから、フリップフロップ９〜１２、２３〜２６はクロック信号の立ち上がりと立ち下がりの両エッジでデータを取り込むものとする。
【００１８】
次に、メモリコントローラ側ＬＳＩ１の動作を、（１）書き込みモード時に遅延を付加する場合、（２）読み出しモード時に遅延を付加する場合、（３）書き込みモード時及び読み出しモード時に遅延を付加する場合について説明する。これらの動作は、ソフトウェアに基づいて、図示しない制御部がレジスタ３９を介して各部を制御することで行われる。
【００１９】
（１）書き込みモード時に遅延を付加する場合
（１−１）テスト書き込み
書き込みストローブ生成回路４ａは、基準書き込みストローブ信号Ｒを発生する。
【００２０】
書き込み用遅延回路５０ａは、次の様に動作する。遅延回路６は、基準書き込みストローブ信号Ｒを遅延して第１の書き込みテストクロック信号を出力する。第１の書き込みテストクロック信号は、次段の遅延素子（図示せず）に入力される。遅延素子３０は、前段の遅延素子（図示せず）からの第（ｎ−３）の書き込みテストクロック信号を遅延して第（ｎ−２）の書き込みテストクロック信号を出力する。遅延素子３１は、第（ｎ−２）の書き込みテストクロック信号を遅延して第（ｎ−１）の書き込みテストクロック信号を出力する。遅延素子３２は、第（ｎ−１）の書き込みテストクロック信号を遅延して第ｎの書き込みテストクロック信号を出力する。本実施形態では、第１〜第ｎの書き込みテストクロック信号は、基準書き込みストローブ信号Ｒと比較して任意の遅延時間をそれぞれ持っている。
【００２１】
つまり、書き込み用遅延回路５０ａは、基準書き込みストローブ信号Ｒを遅延して、複数の書き込みテストクロック信号の全てが異なる遅延時間を有するように生成してもよいが、少なくとも２つの書き込みテストクロック信号の遅延時間が異なるように生成すればよい。
【００２２】
ここで、遅延回路６は書き込みテストクロック信号の遅延時間を粗調整し、遅延素子３０〜３２は書き込みテストクロック信号の遅延時間を微調整するように機能する。遅延素子３０〜３２による遅延のみで所望の遅延時間が得られる場合、遅延回路６の遅延時間を無くすように設定しても良い。
【００２３】
第１の書き込みテストクロック信号は、フリップフロップ２３のクロック入力端子に入力される。第（ｎ−２）〜第ｎの書き込みテストクロック信号は、それぞれ、レジスタ３９に制御されたマルチプレクサ２７〜２９を介してフリップフロップ２４〜２６の各クロック入力端子に入力される。
【００２４】
出力データ生成回路６０は、次の様に動作する。パターン発生器７は、レジスタ３９の制御により、所定のテストパターンを発生する。このテストパターンは、レジスタ３９に制御されたマルチプレクサ１９〜２２を介して、フリップフロップ２３〜２６の入力端子に入力される。本実施形態では、テストパターンは「ハイ」と「ロー」を交互に繰り返す信号である。
【００２５】
フリップフロップ２３〜２６は、それぞれ、入力された第１〜第ｎの書き込みテストクロック信号の立ち上がりと立ち下がりとでテストパターンを取り込んで、第１から第ｎのテスト出力データを出力する。本実施形態では、第１〜第ｎのテスト出力データは、各々任意の遅延時間をそれぞれ持っている。
【００２６】
つまり、出力データ生成回路６０は、複数のテスト出力データを、少なくとも２つのテスト出力データの遅延時間が異なるように、各書き込みテストクロック信号に同期して生成し、メモリ２に書き込むために並列に出力する。
【００２７】
各フリップフロップ２３〜２６からの各第１〜第ｎのテスト出力データは、Ｉ／Ｏバッファ３３〜３６を介して、データＤＱ１〜ＤＱｎとしてメモリ２に並列に出力される。以下、テスト書き込み時においては、データＤＱ１〜ＤＱｎはテスト出力データと等価である。
【００２８】
図２は、第１の実施形態に係るテスト出力データを示すタイミング図である。同図に示す様に、データＤＱｎ−２〜ＤＱｎは、データＤＱ１に対して所定の遅延時間を持っている。
【００２９】
また、書き込みストローブ遅延回路４ｂは、基準書き込みストローブ信号Ｒをテスト書き込み用遅延時間（例えば、位相９０度に相当する時間）だけ遅延してテスト書き込み用データストローブ信号を生成し、Ｉ／Ｏバッファ３７を介してデータストローブ信号ＤＱＳとしてメモリ２に出力する。以下、テスト書き込み時においては、データストローブ信号ＤＱＳはテスト書き込み用データストローブ信号を表す。このデータストローブ信号ＤＱＳは、データＤＱ１〜ＤＱｎに対して必ずしも９０度遅延させる必要はなく、任意の遅延量の設定とすれば良い。というのも、後述する様に、データストローブ信号ＤＱＳの位相と、データＤＱ１〜ＤＱｎの位相とは、調整されるからである。
【００３０】
メモリ２は、入力されたデータストローブ信号ＤＱＳの立ち上がりと立ち下がりとのタイミングで、データＤＱ１〜ＤＱｎをそれぞれテスト書き込みデータとして書き込む。
【００３１】
（１−２）テスト読み出し
次に、メモリ２は、データストローブ信号ＤＱＳと、データＤＱ１〜ＤＱｎと、を出力する。以下、テスト読み出し時においては、データストローブ信号ＤＱＳは読み出し用データストローブ信号を表し、データＤＱ１〜ＤＱｎは、上述した（１−１）においてメモリ２に書き込まれたテスト書き込みデータと等価である。データＤＱ１〜ＤＱｎは、データストローブ信号ＤＱＳに同期している。つまり、データＤＱ１〜ＤＱｎの変化点で、データストローブ信号ＤＱＳも変化する。
【００３２】
メモリ２からのデータストローブ信号ＤＱＳは、Ｉ／Ｏバッファ３７を介して読み出しストローブ遅延回路５に入力される。読み出しストローブ遅延回路５は、データストローブ信号ＤＱＳに対して位相が例えば９０度遅れたクロック信号を生成する。このクロック信号はフリップフロップ９のクロック端子にＣＬＫ１として入力される。更には、このクロック信号は、レジスタ３９に制御されたマルチプレクサ１３〜１５を介して、フリップフロップ１０〜１２のクロック端子にクロック信号ＣＬＫｎ−２〜ＣＬＫｎとして入力される。つまり、ここでは遅延素子１６〜１８の出力信号は用いられない。
【００３３】
メモリ２からのデータＤＱ１〜ＤＱｎは、それぞれＩ／Ｏバッファ３３〜３６を介してフリップフロップ９〜１２の入力端子に入力される。各フリップフロップ９〜１２は、各データＤＱ１〜ＤＱｎを、クロック信号ＣＬＫ１〜ＣＬＫｎの立ち上がりと立ち下がりのタイミングで入力し、入力されたデータを出力する。
【００３４】
つまり、データ入力回路７０は、（１−１）において複数のテスト出力データと書き込み用データストローブ信号とに基づいてメモリ２に書き込まれた複数のテスト書き込みデータを、メモリ２から並列に入力する。
【００３５】
（１−３）比較
次に、フリップフロップ９〜１２の出力データ（メモリ２より入力された複数のテスト書き込みデータ）は、入力データ比較回路８に入力される。
【００３６】
入力データ比較回路８は、入力された複数のテスト書き込みデータと、複数のテスト出力データと、の対応するもの同士を比較して、一致したテスト出力データを特定する。
【００３７】
図３は、第１の実施形態に係るテスト出力データとデータストローブ信号とを示すタイミング図である。
【００３８】
図中、黒丸はメモリ２が正しく受け取れなかったデータを表し、白丸はメモリ２が正しく受け取れたデータを表す。ここで、データＤＱ２，ＤＱｎ−３，ＤＱｎ−４は、図１で記載を省略した回路から出力されたデータである。
【００３９】
このように、データＤＱ１〜ＤＱｎは、互いに異なる遅延量を有しているので、データストローブ信号ＤＱＳとの位相差に応じて、正しく書き込めるデータＤＱｎ−３，ＤＱｎ−４と、正しく書き込めないデータＤＱ１，ＤＱ２，ＤＱｎ−２，ＤＱｎ−１，ＤＱｎと、が存在する。
【００４０】
図３の例では、白丸のみが表示されているデータＤＱｎ−３，ＤＱｎ−４は、同一ビットの対応するテスト出力データと一致するので、パス領域にあると判定される。黒丸のみが表示されているデータＤＱ１，ＤＱ２，ＤＱｎ−２，ＤＱｎ−１，ＤＱｎは、同一ビットの対応するテスト出力データと一致しない（反転している）ので、フェイル領域にあると判定される。
【００４１】
（１−４）遅延時間調整
入力データ比較回路８は、特定されたテスト出力データの中から１つを選択する。
【００４２】
例えば、図３の例では、入力データ比較回路８は、（１−３）においてパス領域と判定されたデータＤＱｎ−３，ＤＱｎ−４の中からデータＤＱｎ−４を選択して、このデータに対応するビットを特定する。入力データ比較回路８は、例えば、特定された複数のテスト出力データの中から、中央付近のデータを選択しても良い。
【００４３】
遅延調整回路３８は、選択されたテスト出力データに対応する書き込みテストクロック信号の遅延時間と、テスト書き込み用遅延時間と、に基づいて、書き込み遅延時間を計算する。つまり、遅延調整回路３８は、特定されたビットが何個の遅延素子３０〜３２に対応するか計算すると共に、計算した遅延素子による遅延時間と遅延回路６の遅延時間との和を、テスト書き込み用遅延時間から減算して、書き込み遅延時間を得る。遅延調整回路３８は、計算した書き込み遅延時間を書き込みストローブ遅延回路４ｂに設定する。
【００４４】
以上の動作で決定された書き込み遅延時間に基づいて、メモリ２への通常の書き込み時には、次の動作が行われる。
【００４５】
書き込みストローブ遅延回路４ｂは、書き込み時に、基準書き込みストローブ信号Ｒを書き込み遅延時間だけ遅延して書き込み用データストローブ信号を生成し、Ｉ／Ｏバッファ３７を介してデータストローブ信号ＤＱＳとしてメモリ２に出力する。
【００４６】
遅延回路６は、書き込み時に、基準書き込みストローブ信号Ｒを遅延させずに出力する。
【００４７】
マルチプレクサ２７〜２９は、書き込み時に、レジスタ３９の制御により、遅延素子３０〜３２に接続されていない方の経路を選択し、すなわち遅延回路６からの基準書き込みストローブ信号Ｒをフリップフロップ２３〜２６のクロック端子に出力する。
【００４８】
マルチプレクサ１９〜２２は、書き込み時に、レジスタ３９の制御により、パターン発生器７に接続されていない方の経路を選択し、すなわちメモリコントローラ３からの信号をフリップフロップ２３〜２６に出力する。
【００４９】
フリップフロップ２３〜２６は、メモリコントローラ３からの信号を基準書き込みストローブ信号Ｒの立ち上がりと立ち下がりとのタイミングで取り込んで、複数の出力データとして出力する。
【００５０】
各フリップフロップ２３〜２６からの各出力データは、Ｉ／Ｏバッファ３３〜３６を介して、データＤＱ１〜ＤＱｎとしてメモリ２に並列に出力される。
【００５１】
つまり、出力データ生成回路６０は、書き込み時に、基準書き込みストローブ信号Ｒに同期して複数の出力データを生成し、メモリ２に並列に出力する。
【００５２】
これにより、１度のデータの書き込み、読み出しによるテストによって、書き込み時に、データストローブ信号ＤＱＳとデータＤＱ１〜ＤＱｎとは、適切な位相でメモリ２に出力されるので、メモリ２はデータＤＱ１〜ＤＱｎを適切に書き込みできる。
【００５３】
（２）読み出しモード時に遅延を付加する場合
（２−１）テスト書き込み
書き込みストローブ生成回路４ａは、基準ストローブ信号Ｒを生成する。この基準ストローブ信号Ｒは、遅延時間無しに設定された遅延回路６と、レジスタ３９に制御されたマルチプレクサ２７〜２９とを介して、フリップフロップ２３〜２６のクロック端子に入力される。つまり、ここでは遅延素子３０〜３２の出力信号は用いられない。このフリップフロップ２３〜２６のクロック端子に入力される信号は、スキュー調整されたものとする。
【００５４】
出力データ生成回路６０は、次の様に動作する。パターン発生器７は、レジスタ３９の制御により、所定のテストパターンを発生する。このテストパターンは、レジスタ３９に制御されたマルチプレクサ１９〜２２を介して、フリップフロップ２３〜２６の入力端子に入力される。本実施形態では、テストパターンは「ハイ」と「ロー」を交互に繰り返す信号である。
【００５５】
フリップフロップ２３〜２６は、それぞれ、クロック端子に入力された信号の立ち上がりと立ち下がりとでテストパターンを取り込んで、第１から第ｎのテスト出力データを出力する。各フリップフロップ２３〜２６からの各第１〜第ｎのテスト出力データは、Ｉ／Ｏバッファ３３〜３６を介して、データＤＱ１〜ＤＱｎとしてメモリ２に並列に出力される。以下、テスト書き込み時においては、データＤＱ１〜ＤＱｎはテスト出力データと等価である。また、本実施形態においては、データＤＱ１〜ＤＱｎは等しいデータである。
【００５６】
つまり、出力データ生成回路６０は、複数のテスト出力データを、メモリ２に書き込むために並列に出力する。
【００５７】
また、書き込みストローブ遅延回路４ｂは、基準書き込みストローブ信号Ｒを遅延して書き込み用データストローブ信号を生成し、Ｉ／Ｏバッファ３７を介してデータストローブ信号ＤＱＳとしてメモリ２に出力する。以下、テスト書き込み時においては、データストローブ信号ＤＱＳは書き込み用データストローブ信号を表す。データストローブ信号ＤＱＳは、確実にデータＤＱ１〜ＤＱｎを書き込みできるタイミングに設定しておく。
【００５８】
メモリ２は、入力されたデータストローブ信号ＤＱＳの立ち上がりと立ち下がりとのタイミングで、データＤＱ１〜ＤＱｎをそれぞれテスト書き込みデータとして書き込む。テスト書き込みデータは、データＤＱ１〜ＤＱｎと等しい。
【００５９】
（２−２）テスト読み出し
メモリ２は、データストローブ信号ＤＱＳと、データストローブ信号ＤＱＳに同期したデータＤＱ１〜ＤＱｎと、を出力する。以下、テスト読み出し時においては、データストローブ信号ＤＱＳは読み出し用データストローブ信号を表し、データＤＱ１〜ＤＱｎは、上述した（２−１）においてメモリ２に書き込まれたテスト書き込みデータと等価である。
【００６０】
読み出し用遅延回路５０ｂは、次の様に動作する。読み出しストローブ遅延回路５は、メモリ２から出力されたデータストローブ信号ＤＱＳを遅延して第１の読み出しテストクロック信号を出力する。第１の読み出しテストクロック信号は、次段の遅延素子（図示せず）に入力される。遅延素子１６は、前段の遅延素子（図示せず）からの第（ｎ−３）の読み出しテストクロック信号を遅延して第（ｎ−２）の読み出しテストクロック信号を出力する。遅延素子１７は、第（ｎ−２）の読み出しテストクロック信号を遅延して第（ｎ−１）の読み出しテストクロック信号を出力する。遅延素子１８は、第（ｎ−１）の読み出しテストクロック信号を遅延して第ｎの読み出しテストクロック信号を出力する。本実施形態では、第１〜第ｎの読み出しテストクロック信号は、データストローブ信号ＤＱＳと比較して任意の遅延時間をそれぞれ持っている。
【００６１】
つまり、読み出し用遅延回路５０ｂは、データストローブ信号ＤＱＳを遅延して、複数の読み出しテストクロック信号の全てが異なる遅延時間を有するように生成してもよいが、少なくとも２つの読み出しテストクロック信号の遅延時間が異なるように生成すればよい。
【００６２】
第１の読み出しテストクロック信号は、クロック信号ＣＬＫ１としてフリップフロップ９のクロック入力端子に入力される。第（ｎ−２）〜第ｎの読み出しテストクロック信号は、それぞれ、レジスタ３９に制御されたマルチプレクサ１３〜１５を介してクロック信号ＣＬＫｎ−２〜ＣＬＫｎとしてフリップフロップ１０〜１２の各クロック入力端子に入力される。
【００６３】
図４は、第１の実施形態に係る読み出しテストクロック信号を示すタイミング図である。同図に示す様に、クロック信号ＣＬＫｎ−２〜ＣＬＫｎは、クロック信号ＣＬＫ１に対して所定の遅延時間を持っている。
【００６４】
メモリ２からのデータＤＱ１〜ＤＱｎは、それぞれＩ／Ｏバッファ３３〜３６を介してフリップフロップ９〜１２の入力端子に入力される。各フリップフロップ９〜１２は、各データＤＱ１〜ＤＱｎを、各クロック信号ＣＬＫ１〜ＣＬＫｎの立ち上がりと立ち下がりのタイミングで入力し、入力されたデータを出力する。
【００６５】
つまり、データ入力回路７０は、メモリ２から出力された、メモリ２に書き込まれた複数のテスト書き込みデータを、対応する読み出しテストクロック信号に同期して複数のテスト入力データとしてメモリ２から並列に入力する。
【００６６】
（２−３）比較
入力データ比較回路８は、データ入力回路７０からの複数のテスト入力データと、出力データ生成回路６０が（２−１）で出力した複数のテスト出力データと、の対応するもの同士を比較して、一致したテスト入力データを特定する。
【００６７】
図５は、第１の実施形態に係る読み出しテストクロック信号と入力データとを示すタイミング図である。
【００６８】
図中、黒丸はデータ入力回路７０がデータを正しく受け取れなかったタイミングを表し、白丸はデータ入力回路７０がデータを正しく受け取れたタイミングを表す。ここで、クロック信号ＣＬＫ２，ＣＬＫｎ−３，ＣＬＫｎ−４は、図１で記載を省略した回路に入力されたクロック信号である。
【００６９】
このように、クロック信号ＣＬＫ１〜ＣＬＫｎは、互いに異なる遅延量を有しているので、データＤＱ１〜ＤＱｎとの位相に応じて、データ入力回路７０が正しく入力できるデータと、正しく入力できないデータとが存在する。
【００７０】
図５の例では、白丸のみが表示されているクロック信号ＣＬＫｎ−３，ＣＬＫｎ−４により入力されたデータＤＱｎ−３，ＤＱｎ−４は、同一ビットの対応するテスト出力データと一致するので、パス領域にあると判定される。黒丸のみが表示されているクロック信号ＣＬＫ１，ＣＬＫ２，ＣＬＫｎ−２，ＣＬＫｎ−１，ＣＬＫｎにより入力されたデータＤＱ１，ＤＱ２，ＤＱｎ−２，ＤＱｎ−１，ＤＱｎは、同一ビットの対応するテスト出力データと一致しない（反転している）ので、フェイル領域にあると判定される。
【００７１】
（２−４）遅延時間調整
入力データ比較回路８は、特定されたテスト入力データの中から１つを選択する。
【００７２】
例えば、図５の例では、入力データ比較回路８は、（２−３）においてパス領域と判定された、クロック信号ＣＬＫｎ−３，ＣＬＫｎ−４により入力されたデータＤＱｎ−３，ＤＱｎ−４の中からデータＤＱｎ−４を選択して、このデータに対応するビットを特定する。入力データ比較回路８は、例えば、特定された複数のテスト入力データの中から、中央付近のデータを選択しても良い。
【００７３】
遅延調整回路３８は、選択されたテスト入力データに対応する読み出しテストクロック信号の遅延時間を、読み出し遅延時間として計算する。つまり、特定されたビットが何個の遅延素子１６〜１８に対応するか計算する。遅延調整回路３８は、計算した読み出し遅延時間を読み出しストローブ遅延回路５に設定する。
【００７４】
以上の動作で決定された読み出し遅延時間に基づいて、メモリ２からの通常の読み出し時には、次の動作が行われる。
【００７５】
読み出し用遅延回路５０ｂの読み出しストローブ遅延回路５は、メモリ２からの読み出し時に、データストローブ信号ＤＱＳを読み出し遅延時間だけ遅延して読み出しクロック信号を生成する。読み出しクロック信号は、フリップフロップ９のクロック入力端子に入力されると共に、レジスタ３９によって遅延素子１６〜１８を介さない方の経路、すなわち読み出しストローブ遅延回路５からの出力信号を選択制御されたマルチプレクサ１３〜１５を介して、フリップフロップ１０〜１２のクロック入力端子に入力される。
【００７６】
各フリップフロップ９〜１２は、各データＤＱ１〜ＤＱｎを、読み出しクロック信号の立ち上がりと立ち下がりのタイミングで入力し、入力されたデータを出力する。
【００７７】
つまり、データ入力回路７０は、読み出し時に、メモリ２からの複数の入力データを、読み出しクロック信号に同期して並列に入力する。
【００７８】
各フリップフロップ９〜１２からの各出力データは、メモリコントローラ３に並列に入力される。
【００７９】
このように、１度のデータの書き込み、読み出しによるテストによって、読み出し時に、データＤＱ１〜ＤＱｎは適切な位相の読み出しクロック信号で入力されるので、メモリコントローラ側ＬＳＩ１はデータＤＱ１〜ＤＱｎを適切に入力できる。
【００８０】
（３）書き込みモード時及び読み出しモード時に遅延を付加する場合
この場合、前述の（１）と（２）の動作を組み合わせて行う。即ち、以下の様に動作する。
【００８１】
書き込みストローブ生成回路４ａは基準書き込みストローブ信号Ｒを生成する。
【００８２】
書き込みストローブ遅延回路４ｂは、メモリ２への書き込み時に、基準書き込みストローブ信号Ｒをテスト書き込み用遅延時間だけ遅延したデータストローブ信号ＤＱＳ（テスト書き込み用ストローブ信号）をメモリ２に出力する。
【００８３】
書き込み用遅延回路５０ａは、基準書き込みストローブ信号Ｒを遅延して、複数の書き込みテストクロック信号を、少なくとも２つの書き込みテストクロック信号の遅延時間が異なるように生成する。
【００８４】
テスト書き込み時に、出力データ生成回路６０は、データＤＱ１〜ＤＱｎ（複数のテスト出力データ）を、少なくとも２つのテスト出力データの遅延時間が異なるように、各書き込みテストクロック信号に同期して生成し、メモリ２に書き込むために並列に出力する。
【００８５】
メモリ２は、入力されたデータストローブ信号ＤＱＳの立ち上がりと立ち下がりとのタイミングで、データＤＱ１〜ＤＱｎをそれぞれテスト書き込みデータとして書き込む。
【００８６】
続いて、テスト読み出し時に、メモリ２は、データストローブ信号ＤＱＳ（読み出し用ストローブ信号）と、データストローブ信号ＤＱＳに同期したデータＤＱ１〜ＤＱｎ（上述したメモリ２に書き込まれたテスト書き込みデータ）と、を出力する。
【００８７】
読み出し用遅延回路５０ｂは、データストローブ信号ＤＱＳを遅延して、複数の読み出しテストクロック信号を、少なくとも２つの読み出しテストクロック信号の遅延時間が異なるように生成する。
【００８８】
データ入力回路７０は、メモリ２から出力された、複数のテスト出力データとテスト書き込み用ストローブ信号とに基づいてメモリ２に書き込まれた複数のテスト書き込みデータを、対応する読み出しテストクロック信号に同期して複数のテスト入力データとしてメモリ２から並列に入力する。
【００８９】
入力データ比較回路８は、複数のテスト入力データと、複数のテスト出力データと、の対応するもの同士を比較して、一致したテスト入力データを特定する。
【００９０】
入力データ比較回路８は、特定されたテスト入力データの中から１つを選択する。
【００９１】
遅延調整回路３８は、選択されたテスト入力データに対応する書き込みテストクロック信号の遅延時間と、テスト書き込み用遅延時間と、に基づいて、書き込み遅延時間を計算する。遅延調整回路３８は、計算した書き込み遅延時間を書き込みストローブ遅延回路４ｂに設定する。
【００９２】
また、遅延調整回路３８は、選択されたテスト入力データに対応する読み出しテストクロック信号の遅延時間を、読み出し遅延時間として計算する。遅延調整回路３８は、計算した読み出し遅延時間を読み出しストローブ遅延回路５に設定する。
【００９３】
以上の動作で決定された書き込み及び読み出し遅延時間に基づいて、通常の書き込み及び読み出し時には、次の動作が行われる。
【００９４】
書き込みストローブ遅延回路４ｂは、書き込み時に、基準書き込みストローブ信号Ｒを書き込み遅延時間だけ遅延してデータストローブ信号ＤＱＳを生成し、Ｉ／Ｏバッファ３７を介してメモリ２に出力する。
【００９５】
読み出し用遅延回路５０ｂの読み出しストローブ遅延回路５は、読み出し時に、データストローブ信号ＤＱＳを読み出し遅延時間だけ遅延して読み出しクロック信号を生成する。
【００９６】
出力データ生成回路６０は、書き込み時に、基準書き込みストローブ信号Ｒに同期して複数の出力データを生成し、メモリ２に並列に出力する。データ入力回路７０は、読み出し時に、メモリ２からの複数の入力データを、読み出しクロック信号に同期して並列に入力する。
【００９７】
各回路の詳細な動作は、前述の（１）、（２）と同様であるため、詳細な説明は省略する。
【００９８】
なお、以上の（１）〜（３）では、遅延素子１６〜１８，３０〜３２は、同じ遅延量を有するものとして説明したが、異なる遅延量を有しても良い。例えば、データＤＱ１〜ＤＱｎの中心ビット付近の遅延素子の遅延量を小さくして、それ以外の遅延素子の遅延量を大きくしても良い。これにより、限られたデータ数（ビット数）であっても、必要な領域では高精度な検出ができる。
【００９９】
また、各遅延素子１６〜１８は第１の遅延量を有し、各遅延素子３０〜３２は第２の遅延量を有し、第１の遅延量と第２の遅延量は異なるようにしても良い。また、各遅延素子１６〜１８，３０〜３２は遅延量を変化できるものでも良い。
【０１００】
さらに、以上の（１−１）では、データＤＱ１〜ＤＱｎは互いに異なる遅延量を有しているものとして説明したが、例えば、一部のデータは同じ遅延量（遅延素子なし）を有していると共に、論理（テストパターンの「ハイ」と「ロー」）が互いに反転していても良い。つまり、これらについては、異なるテストパターンと、同じテストクロック信号とにより生成しても良い。
【０１０１】
また、同様に、（２−１）で、一部のビットで論理が互いに反転したデータをメモリ２に書き込み、（２−２）で、これらのデータを同じ読み出しテストクロック信号により読み出しても良い。
【０１０２】
このように、本実施形態によれば、様々な遅延量で遅延した複数のテスト出力データを並列にメモリ２に出力するようにしたので、メモリ２に実際に書き込まれたテスト書き込みデータとテスト出力データとを比較することで、１度のデータの書き込み、読み出しによるテストによって、適切な遅延量（位相差）を選択して、位相差を調節できる。これにより、実装の仕方等に依存せず、メモリ２はデータＤＱ１〜ＤＱｎを適切に書き込みできる。
【０１０３】
同様に、メモリ２からの複数のデータを様々な遅延量の読み出しテストクロック信号に同期してテスト入力データとして入力するようにしたので、実際に入力されたテスト入力データと、予めメモリ２に書き込まれていたテスト出力データと、を比較することで、適切な遅延量（位相差）を選択して、位相差を調節できる。これにより、実装の仕方等に依存せず、メモリコントローラ側ＬＳＩ１はデータＤＱ１〜ＤＱｎを適切に入力できる。
【０１０４】
（第２の実施形態）
本実施形態は、データとデータストローブ信号との位相差のテストをテスタにより行うようにした点が、第１の実施形態と異なる。
【０１０５】
図６は、第２の実施形態に係るメモリコントローラ側ＬＳＩとメモリとを示すブロック図である。
【０１０６】
このメモリコントローラ側ＬＳＩ１は、第１の実施形態の構成に加え、レジスタ３９に接続されたテストＩ／Ｆ１００を備える。テストＩ／Ｆ１００は、テスタ１０１に接続可能である。その他の回路構成は、図１の第１の実施形態と同一であるため、同一の要素に同一の符号を付して説明を省略する。
【０１０７】
テスタ１０１は、テストＩ／Ｆ１００を介してレジスタ３９に設定を書き込むことで、メモリコントローラ側ＬＳＩ１の各部を制御する。これにより、第１の実施形態の（１−１）〜（１−３）の動作と、（２−１）〜（２−３）の動作との少なくとも何れかが行われる。
【０１０８】
ここで、第１の実施形態とは異なり、入力データ比較回路８での比較結果はレジスタ３９に書き込まれる。レジスタ３９に書き込まれた比較結果は、テストＩ／Ｆ１００を介してテスタ１０１に読み出され、位相差のテスト結果が得られる。
【０１０９】
このように、本実施形態によれば、第１の実施形態のコントローラ側ＬＳＩ１をテスタ１０１で制御するようにしたので、コントローラ側ＬＳＩ１とメモリ２とを含んだ量産テストにおいて、接続確認や位相差のマージンテストを、複数のビットを用いた１回の書き込み／読み出しにより容易に行うことができる。また、パッケージ組み立て時に実装されるメモリ２の出荷テストに適用できる。ここで、パッケージは、例えば、ＳｉＰ（System in Package）、ＭＣＭ（Multi-chip Module）及びＴＳＶ（thorough-silicon via）を含む。
【０１１０】
また、データとデータストローブ信号ＤＱＳとの理想的な位相調整情報を得ることもできる。
【０１１１】
なお、第１の実施形態と同様に、テストによって得られた適切な位相範囲の中から所定の遅延量を選択し、選択した遅延量に基づいて書き込み遅延時間または読み出し遅延時間を計算し、書き込みと読み出しの少なくとも何れかを行うこともできる。
【０１１２】
また、メモリ２は、テスタ１０１内に設けられているものを用いても良い。これにより、コントローラ側ＬＳＩ１のみのテストが行える。
【０１１３】
一方、以上の第１及び第２の実施形態に対して、発明者が知得する比較例では、工場出荷時等に、書き込み用のデータストローブ信号の遅延量を複数の設定値に切り替えながら、テストデータのメモリへの書き込みと、書き込まれたデータの読み出しと、を複数回行い、正しく書き込みが行えた遅延量の範囲を求めるようにしていた（トレーニングシーケンス）。即ち、複数回の書き込み／読み出しが必須となる。よって、所定の範囲の遅延量のテストを行う場合、遅延量の設定値の間隔が狭いほど精度は高くなるが、テスト時間が長くなる。一方、遅延量の設定値の間隔が広いほどテスト時間は短くなるが、精度は低くなる。
【０１１４】
また、発明者が知得する他の比較例では、実際に位相を計測するために、サンプリング回路を設けて２倍以上のクロック信号を用意する必要があった。また、他の比較例では、実際に位相を計測するために、チップの外部に複数の外付け部品が必要となっていた。
【０１１５】
以上で説明した実施形態によれば、信号の位相差の調整又はテストを高精度且つ簡略に行える半導体集積回路を提供できる。
【０１１６】
以上、本発明の実施形態を詳述してきたが、具体的な構成は上記実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲で種々に変形して実施することができる。
【０１１７】
例えば、上記実施形態のメモリ２としてＤＤＲ−ＳＤＲＡＭ以外を用いる場合、フリップフロップ９〜１２，２３〜２６は、クロック端子に入力される信号の立ち上がり又は立ち下がりの何れかでデータを取り込むものでも良い。
【符号の説明】
【０１１８】
１  メモリコントローラ側ＬＳＩ（半導体集積回路）
２  メモリ
３  メモリコントローラ
４ａ  書き込みストローブ生成回路
４ｂ  書き込みストローブ遅延回路
５  読み出しストローブ遅延回路（読み出し用遅延回路）
６  遅延回路（書き込み用遅延回路）
７  パターン発生器（出力データ生成回路）
８  入力データ比較回路
９〜１２  フリップフロップ（データ入力回路）
１３〜１５，１９〜２２，２７〜２９  マルチプレクサ
１６〜１８  遅延素子（読み出し用遅延回路）
３０〜３２  遅延素子（書き込み用遅延回路）
２３〜２６  フリップフロップ（出力データ生成回路）
３３〜３７  Ｉ／Ｏバッファ
３８  遅延調整回路
３９  レジスタ
４０  パラレルＩ／Ｏ
５０ａ  書き込み用遅延回路
５０ｂ  読み出し用遅延回路
６０  出力データ生成回路
７０  データ入力回路
【図１】
2012058997.tif 000003
【図２】
2012058997.tif 000004
【図３】
2012058997.tif 000005
【図４】
2012058997.tif 000006
【図５】
2012058997.tif 000007
【図６】
2012058997.tif 000008