(57)【特許請求の範囲】
【請求項１】
クロックに同期して外部メモリとデータアクセスする集積回路であって、
クロックを生成するクロックジェネレータと、
上記クロックジェネレータにより生成したクロックを分岐したクロックの一方が入力され、上記外部メモリに供給するための外部クロックとして出力する、少なくとも１つの第１のクロックバッファと、
上記クロックジェネレータにより生成したクロックを分岐したクロックの他方が入力され、上記集積回路を動作させるための内部クロックとして出力する、少なくとも１つの第２のクロックバッファと、
上記第１のクロックバッファが出力した外部クロックを上記外部メモリに出力するクロック出力バッファと、
上記外部メモリへ出力するためのデータを上記内部クロックに同期して出力するデータ出力用フリップフロップと、
上記外部メモリから出力されるデータを上記内部クロックに同期して取り込む入力用フリップフロップと、
を備え、
上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達するまでの時間と、到達した該内部クロックによって該データ出力用フリップフロップから出力されたデータが上記外部メモリへ到達するまでの時間との和から、上記外部クロックが上記クロックジェネレータから上記外部メモリへ到達するまでの時間を引くことによって得られる第１の値が、上記外部メモリのデータホールド時間より大きいという第１の条件と、
上記外部クロックの１サイクルの時間から、上記第１の値を引いた値が、上記外部メモリのデータセットアップ時間より大きいという第２の条件と、
上記外部クロックが上記クロックジェネレータから上記外部メモリへ到達するまでの時間と、到達した該クロックを受けて該外部メモリから出力されるデータのホールド時間と、該データが上記入力用フリップフロップに到達するまでの時間との和から、上記内部クロックが該クロックジェネレータから該入力用フリップフロップに到達するまでの時間を引いた値が、該入力用フリップフロップのデータホールド時間より大きいという第３の条件と、
上記内部クロックの１サイクルの時間と、上記内部クロックが上記クロックジェネレータから上記入力用フリップフロップに到達するまでの時間との和から、該外部クロックが該クロックジェネレータから該外部メモリへ到達する時間と、到達した該外部クロックを受けて該外部メモリから出力されるデータの出力遅延時間と、該データが該入力用フリップフロップに到達するまでの時間との和を引いた値が、該入力用フリップフロップのデータセットアップ時間より大きいという第４の条件と、
を満たすように、上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記クロック出力バッファへ到達する時間を引いた値である位相差Ｄの値が設定されている、
ことを特徴とする集積回路。
【請求項２】
クロックに同期して外部メモリとデータアクセスする集積回路であって、
クロックを生成するクロックジェネレータと、
上記クロックジェネレータが生成したクロックを外部クロックとして駆動する少なくとも１つの第１のクロックバッファと、
上記クロックジェネレータが生成したクロックを内部クロックとして駆動する少なくとも１つの第２のクロックバッファと、
上記外部クロックを上記外部メモリに出力するクロック出力バッファと、
上記外部メモリへ出力するためのデータを上記内部クロックに同期して出力するデータ出力用フリップフロップと、
上記外部メモリから出力されるデータを、上記外部メモリに入力した外部クロックのフィードバッククロックによってラッチする第１の入力用フリップフロップと、
上記第１の入力用フリップフロップにラッチされたデータを、上記内部クロックによってラッチする第２の入力用フリップフロップと、
を備え、
上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達するまでの時間と、到達した該内部クロックによって該データ出力用フリップフロップから出力されたデータが上記外部メモリへ到達するまでの時間との和から、上記外部クロックが上記クロックジェネレータから上記外部メモリへ到達するまでの時間を引くことによって得られる第１の値が、上記外部メモリのデータホールド時間より大きく、
上記外部クロックの１サイクルの時間から、上記第１の値を引いた値が、上記外部メモリのデータセットアップ時間より大きく、
上記外部クロックが、上記クロックジェネレータから上記外部メモリに到達し、フィードバッククロックとして該外部メモリから折り返して上記第１の入力用フリップフロップに到達するまでの時間と、該第１の入力用フリップフロップのセル遅延と、該第１の入力用フリップフロップから上記第２の入力用フリップフロップまでの配線遅延と、を足した値Ｖから、上記内部クロックが該クロックジェネレータから該第２の入力用フリップフロップに到達するまでの時間を引いた値が、該第２の入力用フリップフロップのホールド時間より大きく、
上記内部クロックが上記クロックジェネレータから上記第２の入力用フリップフロップに到達するまでの時間と上記外部クロックの１サイクルの時間との和から、上記値Ｖを引いた値が、該第２の入力用フリップフロップのセットアップ時間より大きく、
上記値Ｖが、上記内部クロックの上記クロックジェネレータから上記第２の入力用フリップフロップまで到達する時間より大きく、
上記外部メモリから出力されるデータの該外部メモリから上記第１の入力用フリップフロップへ到達する時間から、上記外部クロックの該外部メモリからフィードバックされ該第１の入力用フリップフロップへ到達するまでの時間を引いた値が、該第１の入力用フリップフロップのホールド時間より大きい、
条件を満たすように、
上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記クロック出力バッファへ到達する時間を引いた値である位相差Ｄの値が設定されている、
ことを特徴とする集積回路。
【請求項３】
請求項２に記載の集積回路において、
上記集積回路は、さらに、
上記外部クロックが上記集積回路から出力される時点と、該外部クロックが上記外部メモリからフィードバックされて該集積回路に到達する時点との第２の位相差と、該第２の位相差に対して上記条件を満たす第１の位相差とが予め複数組設定され、上記集積回路が任意のシステムに実装された後、実際に第２の位相差を検出し、該検出した結果から該当する第１の位相差を選択する位相差検出回路を備え、
上記第１及び又は第２のクロックバッファは、上記予め設定された複数の第１の位相差のそれぞれに対応する遅延素子群を備え、上記位相差検出回路が選択した第１の位相差に基づいて、該遅延素子群は切り替えられる、
ことを特徴とする集積回路。
【請求項４】
請求の範囲第１項記載の集積回路において、
上記集積回路は、
上記入力用フリップフロップとして、上記外部メモリから出力されるデータをラッチする第１の入力用フリップフロップと、上記第１の入力用フリップフロップにラッチされたデータをラッチする第２の入力用フリップフロップと、
上記第２のクロックバッファとして、上記データ出力用フリップフロップ及び上記第２の入力用フリップフロップに第１の内部クロックを供給するクロックバッファと、上記第１の入力用フリップフロップに第２の内部クロックを供給するクロックバッファと、
を備え、
上記第１及び第２の条件を満たすように、上記第１の内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記外部クロック出力用バッファへ到達する時間を引いた位相差Ｄ０の値が設定され、
上記第３及び第４の条件を満たす、上記第２の内部クロックが上記クロックジェネレータから上記第１の入力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記外部クロック出力用バッファへ到達する時間を引いた位相差Ｄ１が、上記位相差Ｄ０と該位相差Ｄ１との位相差から、上記第１の入力用フリップフロップに入力されたデータが上記第２の入力用フリップフロップに到達するまでの遅延を引いた値が該第２の入力用フリップフロップのセットアップ時間より大きくなるよう、設定される、
ことを特徴とする集積回路。
【請求項５】
任意のデバイスがクロックに同期して、外部メモリとデータアクセスする際のクロック位相調整方法であって、
上記デバイスの設計時に該デバイスのレイアウトから、該デバイス内の信号の伝達及び該デバイスと上記外部メモリとの信号の伝達に関わる時間のパラメータを抽出する工程と、
上記パラメータを基に、上記外部メモリに供給される外部クロックの出力時点と、上記デバイスを動作させる内部クロックがデータ入出力の基準点に到達する時点との第１の位相差を算出する工程と、
上記パラメータを基に、上記外部メモリが上記デバイスから出力されるデータを取り込むことができ、且つ、上記デバイスが上記外部メモリから出力されるデータを取り込むことができる条件を満たす上記第１の位相差の範囲を算出する工程と、
上記算出された第１の位相差が、上記算出された第１の位相差の範囲を満たすか否かを判断する工程と、
上記判断工程によって、上記算出された第１の位相差が、上記算出された第１の位相差の範囲を満たす場合は終了し、満たさないと判断された場合は、上記算出された範囲から任意の第１の位相差を選択する工程と、
上記選択された第１の位相差を基に、上記デバイスの設計時に、上記デバイス内の外部クロック信号又は内部クロック信号の遅延値を変更し終了する工程と、
を含むことを特徴とするクロック位相調整方法。
【請求項６】
請求項５記載のクロック位相調整方法において、
上記第１の位相差は、上記内部クロックが上記デバイス内のクロックジェネレータから該デバイス内のデータ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから該デバイス内の外部クロック出力用バッファへ到達する時間を引いた値であり、
上記第１の位相差の範囲を算出する工程は、
上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間と、該内部クロックによって該データ出力用フリップフロップから出力されたデータが該外部メモリへ到達するまでの時間との和から、上記外部クロックが該クロックジェネレータから該外部メモリへ到達するまでの時間を引いた第１の値が、該外部メモリのデータを取り込むために必要なデータホールド時間より大きい第１の条件と、
上記外部クロックの１サイクルの時間から、上記第１の値を引いた値が、上記外部メモリのデータを取り込むために必要なデータセットアップ時間より大きい第２の条件と、
上記外部クロックが上記クロックジェネレータから上記外部メモリへ到達するまでの時間と、該外部クロックを受けて該外部メモリから出力されるデータのホールド時間と、該出力されたデータが上記デバイス内の入力用フリップフロップに到達するまでの時間との和から、上記内部クロックが該クロックジェネレータから該入力用フリップフロップに到達するまでの時間を引いた値が、該入力用フリップフロップのデータ入力ホールド時間より大きい第３の条件と、
上記内部クロックの１サイクルの時間と、上記内部クロックが上記クロックジェネレータから上記入力用フリップフロップに到達するまでの時間との和から、該外部クロックが該クロックジェネレータから該外部メモリへ到達する時間と、該外部クロックを受けて該外部メモリから出力されるデータの出力遅延時間と、該データが上記入力用フリップフロップに到達するまでの時間との和を引いた値が、該入力用フリップフロップのデータ入力セットアップ時間より大きい第４の条件と、
を満たす上記第１の位相差の範囲を算出する、
ことを特徴とするクロック位相調整方法。
【請求項７】
請求項５に記載のクロック位相調整方法において、
上記第１の位相差は、上記内部クロックが上記デバイス内のクロックジェネレータから該デバイス内のデータ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから該デバイス内の外部クロック出力用バッファへ到達する時間を引いた値であり、
上記外部メモリから出力されるデータは、該外部メモリに入力した外部クロックが上記デバイスへフィードバックされたクロックによって、該デバイス内の第１の入力用フリップフロップにラッチされ、該ラッチされたデータは、上記内部クロックによって、該デバイス内の第２の入力用フリップフロップにラッチされ、
上記第１の位相差の範囲を算出する工程は、
上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間と、該内部クロックによって該データ出力用フリップフロップから出力されたデータが該外部メモリへ到達するまでの時間との和から、上記外部クロックが該クロックジェネレータから該外部メモリへ到達するまでの時間を引いた第１の値が、該外部メモリのデータを取り込むために必要なデータホールド時間より大きく、
上記外部クロックの１サイクルの時間から、上記第１の値を引いた値が、上記外部メモリのデータを取り込むために必要なデータセットアップ時間より大きく、
上記外部クロックが、上記クロックジェネレータから上記外部メモリに到達し、フィードバッククロックとして該外部メモリから折り返して上記第１の入力用フリップフロップに到達するまでの時間と、該第１の入力用フリップフロップのセル遅延と、該第１の入力用フリップフロップから上記第２の入力用フリップフロップまでの配線遅延と、を足した値Ｖから、上記内部クロックが該クロックジェネレータから該第２の入力用フリップフロップに到達するまでの時間を引いた値が、該第２の入力用フリップフロップのホールド時間より大きく、
上記内部クロックが上記クロックジェネレータから上記第２の入力用フリップフロップに到達するまでの時間と上記外部クロックの１サイクルの時間との和から、上記値Ｖを引いた値が、該第２の入力用フリップフロップのセットアップ時間より大きく、
上記値Ｖが、上記内部クロックの上記クロックジェネレータから上記第２の入力用フリップフロップまで到達する時間より大きく、
上記外部メモリから出力されるデータの該外部メモリから上記第１の入力用フリップフロップへ到達する時間から、上記外部クロックの該外部メモリからフィードバックされ該第１の入力用フリップフロップへ到達するまでの時間を引いた値が、該第１の入力用フリップフロップのホールド時間より大きい、
条件を満たす上記第１の位相差の範囲を算出する、
ことを特徴とするクロック位相調整方法。
【請求項８】
任意のデバイスがクロックに同期して、外部メモリとデータアクセスする際のクロック位相調整方法であって、
上記デバイスの設計時に該デバイスのレイアウトから、該デバイス内の信号の伝達及び該デバイスと上記外部メモリとの信号の伝達に関わる時間のパラメータを抽出する工程と、
上記内部クロックが上記デバイス内のクロックジェネレータから該デバイス内のデータ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから該デバイス内の外部クロック出力用バッファへ到達する時間を引いた第１の位相差の範囲を、上記パラメータを基に算出する工程と、
上記外部クロックが上記デバイスから出力される時点と、該外部クロックが上記外部メモリからフィードバックされて該デバイスに到達する時点との第２の位相差を任意に複数設定する工程と、
上記設定された複数の上記第２の位相差それぞれに対して、上記算出された範囲から第１の位相差を設定する工程と、
上記デバイスが任意のシステムに実装された後、実際に第２の位相差を検出する工程と、
上記検出した結果と上記設定された第２の位相差とを比較して、該当する第１の位相差を選択する工程と、
上記選択された第１の位相差を基に、上記デバイス内の上記外部クロック信号又は上記内部クロック信号のクロックバッファの遅延値を切り替える工程と、
を含み、
上記外部メモリから出力されるデータは、該外部メモリに入力した外部クロックが上記デバイスへフィードバックされたクロックによって、該デバイス内の第１の入力用フリップフロップにラッチされ、該ラッチされたデータは、上記内部クロックによって、該デバイス内の第２の入力用フリップフロップにラッチされ、
上記第１の位相差の範囲を算出する工程において、
上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間と、該内部クロックによって該データ出力用フリップフロップから出力されたデータが該外部メモリへ到達するまでの時間との和から、上記外部クロックが該クロックジェネレータから該外部メモリへ到達するまでの時間を引いた第１の値が、該外部メモリのデータを取り込むために必要なデータホールド時間より大きく、
上記外部クロックの１サイクルの時間から、上記第１の値を引いた値が、上記外部メモリのデータを取り込むために必要なデータセットアップ時間より大きく、
上記外部クロックが、上記クロックジェネレータから上記外部メモリに到達し、フィードバッククロックとして該外部メモリから折り返して上記第１の入力用フリップフロップに到達するまでの時間と、該第１の入力用フリップフロップのセル遅延と、該第１の入力用フリップフロップから上記第２の入力用フリップフロップまでの配線遅延と、を足した値Ｖから、上記内部クロックが該クロックジェネレータから該第２の入力用フリップフロップに到達するまでの時間を引いた値が、該第２の入力用フリップフロップのホールド時間より大きく、
上記内部クロックが上記クロックジェネレータから上記第２の入力用フリップフロップに到達するまでの時間と上記外部クロックの１サイクルの時間との和から、上記値Ｖを引いた値が、該第２の入力用フリップフロップのセットアップ時間より大きく、
上記値Ｖが、上記内部クロックの上記クロックジェネレータから上記第２の入力用フリップフロップまで到達する時間より大きく、
上記外部メモリから出力されるデータの該外部メモリから上記第１の入力用フリップフロップへ到達する時間から、上記外部クロックの該外部メモリからフィードバックされ該第１の入力用フリップフロップへ到達するまでの時間を引いた値が、該第１の入力用フリップフロップのホールド時間より大きい、
条件を満たす上記第１の位相差の範囲が算出される、
ことを特徴とするクロック位相調整方法。
【請求項９】
請求の範囲第６項記載のクロック位相調整方法において、
上記デバイスは、上記入力用フリップフロップとして、上記外部メモリから出力されるデータをラッチする第１の入力用フリップフロップと、上記第１の入力用フリップフロップにラッチされたデータをラッチする第２の入力用フリップフロップと、を備え、
上記クロックジェネレータは、上記データ出力用フリップフロップ及び上記第２の入力用フリップフロップに供給される第１の内部クロックと、上記第１の入力用フリップフロップに供給される第２の内部クロックと、を供給し、
上記第１の位相差は、
上記第１の内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記外部クロック出力用バッファへ到達する時間を引いた位相差Ｄ０と、  上記第２の内部クロックが上記クロックジェネレータから上記第１の入力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記外部クロック出力用バッファへ到達する時間を引いた位相差Ｄ１と、
を含み、
上記第１の位相差の範囲を算出する工程は、
上記第１及び第２の条件を満たす上記位相差Ｄ０の範囲、及び、上記
第３及び第４の条件を満たす上記位相差Ｄ１の範囲を算出し、且つ、上記位相差Ｄ０及びＤ１との位相差から、上記第１の入力用フリップフロップに入力されたデータが上記第２の入力用フリップフロップに到達するまでの遅延を引いた値が、該第２の入力用フリップフロップのセットアップ時間よりも大きいという条件を満たす、該位相差Ｄ０及びＤ１の範囲を算出し、
上記クロック信号の遅延値の変更工程は、
上記選択された位相差Ｄ０及びＤ１の位相差に基づいて、上記デバイス内の外部クロック信号又は内部クロック信号の遅延値を変更する、
工程を含むことを特徴とするクロック位相調整方法。
【請求項１０】
クロックに同期して外部メモリとデータアクセスする集積回路を設計する方法であって、
上記集積回路は、
上記内部クロックと上記外部クロックを生成するクロックジェネレータと、
上記外部メモリへ出力するデータをラッチするデータ出力用フリップフロップと、
上記外部メモリから出力されるデータを、上記外部メモリに入力した外部クロックのフィードバッククロックによってラッチする第１の入力用フリップフロップと、
上記第１の入力用フリップフロップにラッチされたデータを、上記内部クロックによってラッチする第２の入力用フリップフロップと、
上記内部クロックが上記集積回路内のクロックジェネレータから該集積回路内のデータ出力用フリップフロップに到達する時間から上記外部クロックが該クロックジェネレータから該集積回路内の外部クロック出力用バッファへ到達する時間を引いた第１の位相差と、上記外部クロックが上記集積回路から出力される時点及び該外部クロックが上記外部メモリからフィードバックされて該集積回路に到達する時点の第２の位相差とが予め複数組設定され、上記集積回路が任意のシステムに実装された後、実際に第２の位相差を検出し、該検出した結果から該当する第１の位相差を選択する位相差検出回路と、
上記予め設定された複数の第１の位相差のそれぞれに対応する遅延素子群を備え、上記位相差検出回路が選択した第１の位相差に基づいて該遅延素子群が切り替えられるクロックバッファと、
を備え、
上記設計方法は、
上記集積回路のレイアウトから、該集積回路内の信号の伝達及び該集積回路と上記外部メモリとの信号の伝達に関わる時間のパラメータを抽出する工程と、
上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間と、該内部クロックによって該データ出力用フリップフロップから出力されたデータが該外部メモリへ到達するまでの時間との和から、上記外部クロックが該クロックジェネレータから該外部メモリへ到達するまでの時間を引いた第１の値が、該外部メモリのデータを取り込むために必要なデータホールド時間より大きく、
上記外部クロックの１サイクルの時間から、上記第１の値を引いた値が、上記外部メモリのデータを取り込むために必要なデータセットアップ時間より大きく、
上記外部クロックが、上記クロックジェネレータから上記外部メモリに到達し、フィードバッククロックとして該外部メモリから折り返して上記第１の入力用フリップフロップに到達するまでの時間と、該第１の入力用フリップフロップのセル遅延と、該第１の入力用フリップフロップから上記第２の入力用フリップフロップまでの配線遅延と、を足した値Ｖから、上記内部クロックが該クロックジェネレータから該第２の入力用フリップフロップに到達するまでの時間を引いた値が、該第２の入力用フリップフロップのホールド時間より大きく、
上記内部クロックが上記クロックジェネレータから上記第２の入力用フリップフロップに到達するまでの時間と上記外部クロックの１サイクルの時間との和から、上記値Ｖを引いた値が、該第２の入力用フリップフロップのセットアップ時間より大きく、
上記値Ｖが、上記内部クロックの上記クロックジェネレータから上記第２の入力用フリップフロップまで到達する時間より大きく、
上記外部メモリから出力されるデータの該外部メモリから上記第１の入力用フリップフロップへ到達する時間から、上記外部クロックの該外部メモリからフィードバックされ該第１の入力用フリップフロップへ到達するまでの時間を引いた値が、該第１の入力用フリップフロップのホールド時間より大きい、
条件を満たす、上記第１の位相差の範囲を、上記パラメータを基に算出する工程と、
上記第２の位相差を任意に複数設定する工程と、
上記設定された複数の上記第２の位相差それぞれに対して、上記条件を満たす第１の位相差を設定する工程と、
上記算出された上記第１の位相差のそれぞれに対応した、上記集積回路内の外部クロック信号又は内部クロック信号の遅延値を設定する工程と、
を含むことを特徴とする集積回路の設計方法。
【請求項１１】
クロックに同期して外部メモリとデータアクセスする集積回路であって、
クロックを生成するクロックジェネレータと、
上記クロックジェネレータにより生成したクロックを分岐したクロックの一方が入力され、上記外部メモリに供給するための外部クロックとして出力する、少なくとも１つの第１のクロックバッファと、
上記クロックジェネレータにより生成したクロックを分岐したクロックの他方が入力され、上記集積回路を動作させるための内部クロックとして出力する、少なくとも１つの第２のクロックバッファと、
上記第１のクロックバッファが出力した外部クロックを上記外部メモリに出力するクロック出力バッファと、
上記外部メモリへ出力するためのデータを上記内部クロックに同期して出力するデータ出力用フリップフロップと、
上記外部メモリから出力されるデータを上記内部クロックに同期して取り込む入力用フリップフロップと、
を備え、
上記外部メモリが上記集積回路から出力されるデータを取り込むことを可能とし、かつ上記集積回路が上記外部メモリから出力されるデータを取り込むことを可能とする条件を満たすように、
上記外部クロックが、上記クロックジェネレータから、上記外部メモリへ到達するまでの時間と、上記内部クロックが、上記クロックジェネレータから上記集積回路内のデータ入出力基準点に到達するまでの時間との位相差が設定されていることを特徴とする集積回路。
【発明の詳細な説明】
【０００１】
技術分野
本発明は、クロック位相調整方法、及び、集積回路とその設計方法に関するものである。
【０００２】
背景技術
シンクロナスＤＲＡＭ（Ｓｙｎｃｒｏｎｕｓ Ｄｙｎａｍｉｃ Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ、以下ＳＤＲＡＭ）にデータを書き込んだり、ＳＤＲＡＭからデータを読み出す（以下、データアクセスと呼ぶ）際、動作クロックが高速であるため、適切なタイミングを取ることが困難である。従って、従来は、まず、ＳＤＲＡＭとデータアクセスするＬＳＩを作製し、試行錯誤することによってクロックの位相を調節していた。
【０００３】
また、特開平９−１８５４２７号公報では、ＳＤＲＡＭに対するアクセスのタイミングを取るクロック位相調整回路及びクロック位相調整方法が開示されている。
【０００４】
図１３は、特開平９−１８５４２７号公報に開示されたクロック位相調整回路を適用したメモリインターフェイス装置を示す回路図である。メモリインターフェイス装置７００は、クロック周波数変換器７１０、２つの入力バッファ７１１、７２０、クロック位相調整回路７１２、３つの出力バッファ７１５、７１７、７１９、及び３つのフリップフロップＦＦ７１６、７１８、７２１、を備える。インターフェイス装置７００は、外部クロック信号、ＳＤＲＡＭコマンド、及びデータをＳＤＲＡＭ７０２に出力する。
【０００５】
クロック位相調整回路７１２は、ＳＤＲＡＭ７０２に対して適正なデータアクセスを実行するためのクロック信号の位相を調整する回路であって、動作の基準となるクロック信号の位相を１８０度反転すると共にＳＤＲＡＭ７０２に出力する。クロック位相調整回路７１２は、インバータ７１３と、位相変換器７１４及びセレクタ７４４によって構成されている。
【０００６】
位相変換器７１４には、複数の遅延値を持ったクロックが用意されており、ＳＤＲＡＭ７０２と接続後、動作可能なクロックを適当な手段でテストし、テストの結果適切であると判断されたクロックを選択するしくみになっている。
【０００７】
従来のクロック位相調整は、まず実際のＬＳＩを作製してから試行錯誤して調整してきた。つまり、ＬＳＩを一旦作製してから設計者が試行錯誤を積み重ねて、クロック位相を調整するので、ＬＳＩの作製に関わる工程が煩雑になるという問題点がある。
【０００８】
また、特開平９−１８５４２７号公報のようなインターフェイス装置７００では、クロック位相調整に関わる遅延素子がいくつも必要となり、回路規模が増大し、消費電力も増えてしまうという問題点がある。
【０００９】
また、インターフェイス装置７００に入力されたデータは、様々な回路やバッファを通って出力されるため、インターフェイス装置７００を実際のＬＳＩにした場合に、クロックの遅延値が予測とかなり違ってしまう可能性があり、遅延素子の遅延値の決定が困難になるという問題点がある。この場合、より多くの遅延クロックを用意しておけば、遅延値の決定は容易になるが、回路規模がさらに増大し、消費電力が増えるという問題が新たに発生する。
【００１０】
また、インターフェイス装置７００とＳＤＲＡＭ７０２とを実際に接続しないと遅延値がわからないので、インターフェイス装置７００とＳＤＲＡＭ７０２とを接続した後、データ転送のテストを行い、最適な遅延値のクロックを選択する必要があり、回路の作製に関わる工程数が増えるという問題点がある。
【００１１】
また、インターフェイス装置７００では、外部要因（配線遅延、外部負荷等）を考慮していないために精度が悪くなるという問題点がある。また、外部要因を考慮するためには、基板毎にデータ転送のテストを行い、クロックを選択する必要があるので、回路の作製に関わる工程数が増えるという問題点がある。
【００１２】
本発明は、外部メモリとアクセスするデバイスの作製に関わる工程数を少なくし、試行錯誤して位相調整をすることなく、また、クロック位相調整のためのテストをすることなく、設計段階の時点でクロック位相調整を実現するクロック位相調整方法を提供するものである。本クロック位相調整方法は、完全同期設計でも、必要最小限の回路で、より確実なクロックを供給し、フィードバッククロック方式を採用した場合にも、自動的にクロック位相調整を行う。
【００１３】
さらに、従来の回路のような複雑な構成をとらずに、高速な動作クロックに基づくデータアクセスを実現する集積回路とその設計方法とを提供するものである。
【００１４】
発明の開示
上記目的を達成するために、本発明による集積回路は、以下の構成を有する。すなわち、クロックに同期して外部メモリとデータアクセスする集積回路であって、上記クロックを生成するクロックジェネレータと、上記クロックを外部クロックとして駆動する少なくとも１つの第１のクロックバッファと、上記クロックを内部クロックとして駆動する少なくとも１つの第２のクロックバッファと、上記外部クロックを上記外部メモリに出力するクロック出力バッファと、上記外部メモリへ出力するためのデータを上記内部クロックに同期して出力するデータ出力用フリップフロップと、上記外部メモリから出力されるデータを上記内部クロックに同期して取り込む入力用フリップフロップと、を備え、上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達するまでの時間と、到達した該内部クロックによって該データ出力用フリップフロップから出力されたデータが上記外部メモリへ到達するまでの時間との和から、上記外部クロックが上記クロックジェネレータから上記外部メモリへ到達するまでの時間を引くことによって得られる第１の値が、上記外部メモリのデータホールド時間より大きいという第１の条件と、上記外部クロックの１サイクルの時間から、上記第１の値を引いた値が、上記外部メモリのデータセットアップ時間より大きいという第２の条件と、上記外部クロックが上記クロックジェネレータから上記外部メモリへ到達するまでの時間と、到達した該クロックを受けて該外部メモリから出力されるデータのホールド時間と、該データが上記入力用フリップフロップに到達するまでの時間との和から、上記内部クロックが該クロックジェネレータから該入力用フリップフロップに到達するまでの時間を引いた値が、該入力用フリップフロップのデータホールド時間より大きいという第３の条件と、上記内部クロックの１サイクルの時間と、上記内部クロックが上記クロックジェネレータから上記入力用フリップフロップに到達するまでの時間との和から、該外部クロックが該クロックジェネレータから該外部メモリへ到達する時間と、到達した該外部クロックを受けて該外部メモリから出力されるデータの出力遅延時間と、該データが該入力用フリップフロップに到達するまでの時間との和を引いた値が、該入力用フリップフロップのデータセットアップ時間より大きいという第４の条件と、を満たすように、上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記クロック出力バッファへ到達する時間を引いた位相差Ｄの値が設定されている。
【００１５】
従って、従来のような複数信号経路に複数の遅延素子を挿入するような複雑な回路を持たなくても、適切なデータ転送を行え、またクロックを供給できる集積回路を提供できる。特に、ＳＤＲＡＭのような高速なアクセスを必要とする集積回路の設計を容易にする。
【００１６】
また、本発明による別の集積回路は、クロックに同期して外部メモリとデータアクセスする集積回路であって、データから上記クロックを生成するクロックジェネレータと、上記クロックを外部クロックとして駆動する少なくとも１つの第１のクロックバッファと、上記クロックを内部クロックとして駆動する少なくとも１つの第２のクロックバッファと、上記外部クロックを上記外部メモリに出力するクロック出力バッファと、上記外部メモリへ出力するためのデータを上記内部クロックに同期して出力するデータ出力用フリップフロップと、上記外部メモリから出力されるデータを、上記外部メモリに入力した外部クロックのフィードバッククロックによってラッチする第１の入力用フリップフロップと、上記第１の入力用フリップフロップにラッチされたデータを、上記内部クロックによってラッチする第２の入力用フリップフロップと、を備え、上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達するまでの時間と、到達した該内部クロックによって該データ出力用フリップフロップから出力されたデータが上記外部メモリへ到達するまでの時間との和から、上記外部クロックが上記クロックジェネレータから上記外部メモリへ到達するまでの時間を引くことによって得られる第１の値が、上記外部メモリのデータホールド時間より大きく、上記外部クロックの１サイクルの時間から、上記第１の値を引いた値が、上記外部メモリのデータセットアップ時間より大きく、上記外部クロックが、上記クロックジェネレータから上記外部メモリに到達し、フィードバッククロックとして該外部メモリから折り返して上記第１の入力用フリップフロップに到達するまでの時間と、該第１の入力用フリップフロップのセル遅延と、該第１の入力用フリップフロップから上記第２の入力用フリップフロップまでの配線遅延と、を足した値Ｖから、上記内部クロックが該クロックジェネレータから該第２の入力用フリップフロップに到達するまでの時間を引いた値が、該第２の入力用フリップフロップのホールド時間より大きく、上記内部クロックが上記クロックジェネレータから上記第２の入力用フリップフロップに到達するまでの時間と上記外部クロックの１サイクルの時間との和から、上記値Ｖを引いた値が、該第２の入力用フリップフロップのセットアップ時間より大きく、上記値Ｖが、上記内部クロックの上記クロックジェネレータから上記第２の入力用フリップフロップまで到達する時間より大きく、上記外部メモリから出力されるデータの該外部メモリから上記第１の入力用フリップフロップへ到達する時間から、上記外部クロックの該外部メモリからフィードバックされ該第１の入力用フリップフロップへ到達するまでの時間を引いた値が、該第１の入力用フリップフロップのホールド時間より大きい、条件を満たすように、上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記クロック出力バッファへ到達する時間を引いた位相差Ｄの値が設定されている。
【００１７】
従って、外部クロックのフィードバッククロックとを用いて外部メモリとアクセスする集積回路を容易に提供できる。
また、集積回路は、さらに、上記外部クロックが上記集積回路から出力される時点と、該外部クロックが上記外部メモリからフィードバックされて該集積回路に到達する時点との第２の位相差と、該第２の位相差に対して上記条件を満たす第１の位相差とが予め複数組設定され、上記集積回路が任意のシステムに実装された後、実際に第２の位相差を検出し、該検出した結果から該当する第１の位相差を選択する位相差検出回路を備え、上記第１及び又は第２のクロックバッファは、上記予め設定された複数の第１の位相差のそれぞれに対応する遅延素子群を備え、上記位相差検出回路が選択した第１の位相差に基づいて、該遅延素子群は切り替えられるようにすることができる。
【００１８】
従って、外部メモリへ出力する外部クロックと、外部メモリからのフィードバッククロックとの位相差を検出する検出器を設けることにより、インターフェイス回路自ら実遅延を検出し、内部クロックと、外部クロックとの位相差を調整できる。さらに、実装されるシステムの配線遅延や、外部負荷容量などの外部要因が多様であっても、最適なクロック位相を調整できる。
【００１９】
また、集積回路は、上記入力用フリップフロップとして、上記外部メモリから出力されるデータをラッチする第１の入力用フリップフロップと、上記第１の入力用フリップフロップにラッチされたデータをラッチする第２の入力用フリップフロップと、上記第２のクロックバッファとして、上記データ出力用フリップフロップ及び上記第２の入力用フリップフロップに第１の内部クロックを供給するクロックバッファと、上記第１の入力用フリップフロップに第２の内部クロックを供給するクロックバッファと、を備え、上記条件１及び２を満たすように、上記第１の内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記外部クロック出力用バッファへ到達する時間を引いた位相差Ｄ０の値が設定され、上記条件３及び４を満たす、上記第２の内部クロックが上記クロックジェネレータから上記第１の入力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記外部クロック出力用バッファへ到達する時間を引いた位相差Ｄ１が、上記位相差Ｄ０と該位相差Ｄ１との位相差から、上記第１の入力用フリップフロップに入力されたデータが上記第２の入力用フリップフロップに到達するまでの遅延を引いた値が該第２の入力用フリップフロップのセットアップ時間より大きくなるよう、設定されてもよい。
【００２０】
従って、従来のように複数箇所へ、複数の遅延バッファを挿入するような複雑な回路を持たなくても、より高速なクロックでデータを受け渡しするシステムを構成できる集積回路を提供できる。特に、ＳＤＲＡＭのような高速なアクセスを必要とするインターフェイス回路を備えた集積回路を容易に設計できる。
【００２１】
本発明によるクロック位相調整方法は、任意のデバイスがクロックに同期して、外部メモリとデータアクセスする際のクロック位相調整方法であって、上記デバイスの設計時に該デバイスのレイアウトから、該デバイス内の信号の伝達及び該デバイスと上記外部メモリとの信号の伝達に関わる時間のパラメータを抽出する工程と、上記パラメータを基に、上記外部メモリに供給される外部クロックの出力時点と、上記デバイスを動作させる内部クロックがデータ入出力の基準点に到達する時点との第１の位相差を算出する工程と、上記パラメータを基に、上記外部メモリが上記デバイスから出力されるデータを取り込むことができ、且つ、上記デバイスが上記外部メモリから出力されるデータを取り込むことができる条件を満たす上記第１の位相差の範囲を算出する工程と、上記算出された第１の位相差が、上記算出された第１の位相差の範囲を満たすか否かを判断する工程と、上記判断工程によって、上記算出された第１の位相差が、上記算出された第１の位相差の範囲を満たす場合は終了し、満たさないと判断された場合は、上記算出された範囲から任意の第１の位相差を選択する工程と、上記選択された第１の位相差を基に、上記デバイスの設計時に、上記デバイス内の外部クロック信号又は内部クロック信号の遅延値を変更し終了する工程と、を含む。
【００２２】
従って、クロックを用いて外部メモリとアクセスするデバイスのレイアウト設計時、例えばクロックスキュー調整時にクロック信号の遅延値を変更することによって、クロックの位相を調整できる。従って、従来のように試行錯誤で位相を調節することなく、また、クロック位相調整のためのテストをすることなく、外部メモリと確実にデータアクセス出来る回路を生成できる。特に、ＳＤＲＡＭのように高速なアクセスを必要とする場合でも、本実施形態を用いれば、高速アクセス可能なデバイスの外部クロックと内部クロックとの位相調整を容易に且つより正確に実現することができる。さらに、回路規模及び回路作製の工程数が削減されることから、消費電力も低減され、かつ、設計が容易なことから、開発期間の短縮にもつながり、また自動化することが可能となることにより、単純な設計ミスの防止にもなる。
【００２３】
また、上記第１の位相差は、上記内部クロックが上記デバイス内のクロックジェネレータから該デバイス内のデータ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから該デバイス内の外部クロック出力用バッファへ到達する時間を引いた値であり、上記第１の位相差の範囲を算出する工程は、上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間と、該内部クロックによって該データ出力用フリップフロップから出力されたデータが該外部メモリへ到達するまでの時間との和から、上記外部クロックが該クロックジェネレータから該外部メモリへ到達するまでの時間を引いた第１の値が、該外部メモリのデータを取り込むために必要なデータホールド時間より大きい第１の条件と、上記外部クロックの１サイクルの時間から、上記第１の値を引いた値が、上記外部メモリのデータを取り込むために必要なデータセットアップ時間より大きい第２の条件と、上記外部クロックが上記クロックジェネレータから上記外部メモリへ到達するまでの時間と、該外部クロックを受けて該外部メモリから出力されるデータのホールド時間と、該出力されたデータが上記デバイス内の入力用フリップフロップに到達するまでの時間との和から、上記内部クロックが該クロックジェネレータから該入力用フリップフロップに到達するまでの時間を引いた値が、該入力用フリップフロップのデータ入力ホールド時間より大きい第３の条件と、上記内部クロックの１サイクルの時間と、上記内部クロックが上記クロックジェネレータから上記入力用フリップフロップに到達するまでの時間との和から、該外部クロックが該クロックジェネレータから該外部メモリへ到達する時間と、該外部クロックを受けて該外部メモリから出力されるデータの出力遅延時間と、該データが上記入力用フリップフロップに到達するまでの時間との和を引いた値が、該入力用フリップフロップのデータ入力セットアップ時間より大きい第４の条件と、を満たす上記第１の位相差の範囲を算出するようにしてもよい。
【００２４】
また、上記第１の位相差は、上記内部クロックが上記デバイス内のクロックジェネレータから該デバイス内のデータ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから該デバイス内の外部クロック出力用バッファへ到達する時間を引いた値であり、上記外部メモリから出力されるデータは、該外部メモリに入力した外部クロックが上記デバイスへフィードバックされたクロックによって、該デバイス内の第１の入力用フリップフロップにラッチされ、該ラッチされたデータは、上記内部クロックによって、該デバイス内の第２の入力用フリップフロップにラッチされ、上記第１の位相差の範囲を算出する工程は、上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間と、該内部クロックによって該データ出力用フリップフロップから出力されたデータが該外部メモリへ到達するまでの時間との和から、上記外部クロックが該クロックジェネレータから該外部メモリへ到達するまでの時間を引いた第１の値が、該外部メモリのデータを取り込むために必要なデータホールド時間より大きく、上記外部クロックの１サイクルの時間から、上記第１の値を引いた値が、上記外部メモリのデータを取り込むために必要なデータセットアップ時間より大きく、上記外部クロックが、上記クロックジェネレータから上記外部メモリに到達し、フィードバッククロックとして該外部メモリから折り返して上記第１の入力用フリップフロップに到達するまでの時間と、該第１の入力用フリップフロップのセル遅延と、該第１の入力用フリップフロップから上記第２の入力用フリップフロップまでの配線遅延と、を足した値Ｖから、上記内部クロックが該クロックジェネレータから該第２の入力用フリップフロップに到達するまでの時間を引いた値が、該第２の入力用フリップフロップのホールド時間より大きく、上記内部クロックが上記クロックジェネレータから上記第２の入力用フリップフロップに到達するまでの時間と上記外部クロックの１サイクルの時間との和から、上記値Ｖを引いた値が、該第２の入力用フリップフロップのセットアップ時間より大きく、上記値Ｖが、上記内部クロックの上記クロックジェネレータから上記第２の入力用フリップフロップまで到達する時間より大きく、上記外部メモリから出力されるデータの該外部メモリから上記第１の入力用フリップフロップへ到達する時間から、上記外部クロックの該外部メモリからフィードバックされ該第１の入力用フリップフロップへ到達するまでの時間を引いた値が、該第１の入力用フリップフロップのホールド時間より大きい、条件を満たす上記第１の位相差の範囲を算出するようにしてもよい。
【００２５】
これによって、フィードバッククロックを用いて外部メモリとアクセスするデバイスの位相調整を、デバイス設計時に行うことができる。
また、本発明による別のクロック位相調整方法は、任意のデバイスがクロックに同期して、外部メモリとデータアクセスする際のクロック位相調整方法であって、上記デバイスの設計時に該デバイスのレイアウトから、該デバイス内の信号の伝達及び該デバイスと上記外部メモリとの信号の伝達に関わる時間のパラメータを抽出する工程と、上記内部クロックが上記デバイス内のクロックジェネレータから該デバイス内のデータ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから該デバイス内の外部クロック出力用バッファへ到達する時間を引いた第１の位相差の範囲を、上記パラメータを基に算出する工程と、上記外部クロックが上記デバイスから出力される時点と、該外部クロックが上記外部メモリからフィードバックされて該デバイスに到達する時点との第２の位相差を任意に複数設定する工程と、上記設定された複数の上記第２の位相差それぞれに対して、上記算出された範囲から第１の位相差を設定する工程と、上記デバイスが任意のシステムに実装された後、実際に第２の位相差を検出する工程と、上記検出した結果と上記設定された第２の位相差とを比較して、該当する第１の位相差を選択する工程と、上記選択された第１の位相差を基に、上記デバイス内の上記外部クロック信号又は上記内部クロック信号のクロックバッファの遅延値を切り替える工程と、を備え、上記外部メモリから出力されるデータは、該外部メモリに入力した外部クロックが上記デバイスへフィードバックされたクロックによって、該デバイス内の第１の入力用フリップフロップにラッチされ、該ラッチされたデータは、上記内部クロックによって、該デバイス内の第２の入力用フリップフロップにラッチされ、上記第１の位相差の範囲を算出する工程において、上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間と、該内部クロックによって該データ出力用フリップフロップから出力されたデータが該外部メモリへ到達するまでの時間との和から、上記外部クロックが該クロックジェネレータから該外部メモリへ到達するまでの時間を引いた第１の値が、該外部メモリのデータを取り込むために必要なデータホールド時間より大きく、上記外部クロックの１サイクルの時間から、上記第１の値を引いた値が、上記外部メモリのデータを取り込むために必要なデータセットアップ時間より大きく、上記外部クロックが、上記クロックジェネレータから上記外部メモリに到達し、フィードバッククロックとして該外部メモリから折り返して上記第１の入力用フリップフロップに到達するまでの時間と、該第１の入力用フリップフロップのセル遅延と、該第１の入力用フリップフロップから上記第２の入力用フリップフロップまでの配線遅延と、を足した値Ｖから、上記内部クロックが該クロックジェネレータから該第２の入力用フリップフロップに到達するまでの時間を引いた値が、該第２の入力用フリップフロップのホールド時間より大きく、上記内部クロックが上記クロックジェネレータから上記第２の入力用フリップフロップに到達するまでの時間と上記外部クロックの１サイクルの時間との和から、上記値Ｖを引いた値が、該第２の入力用フリップフロップのセットアップ時間より大きく、上記値Ｖが、上記内部クロックの上記クロックジェネレータから上記第２の入力用フリップフロップまで到達する時間より大きく、上記外部メモリから出力されるデータの該外部メモリから上記第１の入力用フリップフロップへ到達する時間から、上記外部クロックの該外部メモリからフィードバックされ該第１の入力用フリップフロップへ到達するまでの時間を引いた値が、該第１の入力用フリップフロップのホールド時間より大きい、条件を満たす上記第１の位相差の範囲が算出されるようにしてもよい。
【００２６】
つまり、外部メモリへ出力する外部クロックと、外部メモリからのフィードバッククロックとの位相差を検出し、適応的に、内部クロックと外部クロックとの位相差を調整できるデバイスを設計できる。従って、実装されるシステムの配線遅延や、外部負荷容量などの外部要因が多様であっても、最適なクロック位相を設定することができる。
【００２７】
また、上記デバイスは、上記入力用フリップフロップとして、上記外部メモリから出力されるデータをラッチする第１の入力用フリップフロップと、上記第１の入力用フリップフロップにラッチされたデータをラッチする第２の入力用フリップフロップと、を備え、上記クロックジェネレータは、上記データ出力用フリップフロップ及び上記第２の入力用フリップフロップに供給される第１の内部クロックと、上記第１の入力用フリップフロップに供給される第２の内部クロックと、を供給し、上記第１の位相差は、上記第１の内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記外部クロック出力用バッファへ到達する時間を引いた位相差Ｄ０と、上記第２の内部クロックが上記クロックジェネレータから上記第１の入力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記外部クロック出力用バッファへ到達する時間を引いた位相差Ｄ１と、を含み、上記第１の位相差の範囲を算出する工程は、上記条件１及び２を満たす上記位相差Ｄ０の範囲、及び、上記条件３及び４を満たす上記位相差Ｄ１の範囲を算出し、且つ、上記位相差Ｄ０及びＤ１との位相差から、上記第１の入力用フリップフロップに入力されたデータが上記第２の入力用フリップフロップに到達するまでの遅延を引いた値が、該第２の入力用フリップフロップのセットアップ時間よりも大きいという条件を満たす、該位相差Ｄ０及びＤ１の範囲を算出し、上記クロック信号の遅延値の変更工程は、上記選択された位相差Ｄ０及びＤ１の位相差に基づいて、上記デバイス内の外部クロック信号又は内部クロック信号の遅延値を変更する、工程を備えることができる。
【００２８】
従って、より高速なクロックを用いて外部メモリとアクセスするデバイスの位相を調節することができる。特に、ＳＤＲＡＭのように高速なアクセスを必要とする場合に有効である。
【００２９】
また、本発明による集積回路の設計方法は、クロックに同期して外部メモリとデータアクセスする集積回路を設計する方法であって、上記集積回路は、上記内部クロックと上記外部クロックを生成するクロックジェネレータと、上記外部メモリへ出力するデータをラッチするデータ出力用フリップフロップと、上記外部メモリから出力されるデータを、上記外部メモリに入力した外部クロックのフィードバッククロックによってラッチする第１の入力用フリップフロップと、上記第１の入力用フリップフロップにラッチされたデータを、上記内部クロックによってラッチする第２の入力用フリップフロップと、上記内部クロックが上記集積回路内のクロックジェネレータから該集積回路内のデータ出力用フリップフロップに到達する時間から上記外部クロックが該クロックジェネレータから該集積回路内の外部クロック出力用バッファへ到達する時間を引いた第１の位相差と、上記外部クロックが上記集積回路から出力される時点及び該外部クロックが上記外部メモリからフィードバックされて該集積回路に到達する時点の第２の位相差とが予め複数組設定され、上記集積回路が任意のシステムに実装された後、実際に第２の位相差を検出し、該検出した結果から該当する第１の位相差を選択する位相差検出回路と、上記予め設定された複数の第１の位相差のそれぞれに対応する遅延素子群を備え、上記位相差検出回路が選択した第１の位相差に基づいて該遅延素子群が切り替えられるクロックバッファと、を備え、上記設計方法は、上記集積回路のレイアウトから、該集積回路内の信号の伝達及び該集積回路と上記外部メモリとの信号の伝達に関わる時間のパラメータを抽出する工程と、上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間と、該内部クロックによって該データ出力用フリップフロップから出力されたデータが該外部メモリへ到達するまでの時間との和から、上記外部クロックが該クロックジェネレータから該外部メモリへ到達するまでの時間を引いた第１の値が、該外部メモリのデータを取り込むために必要なデータホールド時間より大きく、上記外部クロックの１サイクルの時間から、上記第１の値を引いた値が、上記外部メモリのデータを取り込むために必要なデータセットアップ時間より大きく、上記外部クロックが、上記クロックジェネレータから上記外部メモリに到達し、フィードバッククロックとして該外部メモリから折り返して上記第１の入力用フリップフロップに到達するまでの時間と、該第１の入力用フリップフロップのセル遅延と、該第１の入力用フリップフロップから上記第２の入力用フリップフロップまでの配線遅延と、を足した値Ｖから、上記内部クロックが該クロックジェネレータから該第２の入力用フリップフロップに到達するまでの時間を引いた値が、該第２の入力用フリップフロップのホールド時間より大きく、上記内部クロックが上記クロックジェネレータから上記第２の入力用フリップフロップに到達するまでの時間と上記外部クロックの１サイクルの時間との和から、上記値Ｖを引いた値が、該第２の入力用フリップフロップのセットアップ時間より大きく、上記値Ｖが、上記内部クロックの上記クロックジェネレータから上記第２の入力用フリップフロップまで到達する時間より大きく、上記外部メモリから出力されるデータの該外部メモリから上記第１の入力用フリップフロップへ到達する時間から、上記外部クロックの該外部メモリからフィードバックされ該第１の入力用フリップフロップへ到達するまでの時間を引いた値が、該第１の入力用フリップフロップのホールド時間より大きい、条件を満たす、上記第１の位相差の範囲を、上記パラメータを基に算出する工程と、上記第２の位相差を任意に複数設定する工程と、上記設定された複数の上記第２の位相差それぞれに対して、上記条件を満たす第１の位相差を設定する工程と、上記算出された上記第１の位相差のそれぞれに対応した、上記集積回路内の外部クロック信号又は内部クロック信号の遅延値を設定する工程と、を備える。
【００３０】
つまり、集積回路が実装された後に、外部メモリへ出力する外部クロックと、外部メモリからのフィードバッククロックとの位相差を検出し、その結果を基に内部クロックと外部クロックとの位相差を自動的に調整できる集積回路を設計できる。従って、実装されるシステムの配線遅延や、外部負荷容量などの外部要因が多様であっても、最適なクロック位相を調整できる。
【００３１】
発明を実施するための最良の形態
以下、本発明の実施の形態によるクロック位相調整方法、集積回路、及び集積回路の設計方法について、図面を参照しながら説明する。
【００３２】
実施の形態１．
図１は、実施の形態１によるクロック位相調整方法を適用して作製した、外部メモリすなわちＳＤＲＡＭ１１０へデータアクセスするインターフェイス回路１００を備えた集積回路１０００の構成の一部を示すブロック図である。図１では、説明を容易にするため、集積回路１０００の構成のうち、ＳＤＲＡＭ１１０とのアクセスに関わる構成を概略的に示した。
【００３３】
集積回路１０００は、クロックジェネレータ１０１と、第１のクロックバッファ１０２と、第２のクロックバッファ１０４と、インターフェイス回路１００とを備え、インターフェイス回路１００は、ＳＤＣＬＫＯ出力バッファ１０３と、出力用フリップフロップである第１のフリップフロップ（第１のＦＦ）１０５と、入出力バッファ１０６と、入力用フリップフロップである第２のフリップフロップ（第２のＦＦ）１０７とを備える。図中、Ｔで始るパラメータが添えてある矢印は、後述する集積回路１０００内の信号の伝達及び集積回路１０００とＳＤＲＡＭ１１０との信号の伝達に関わる遅延パラメータを示す。
【００３４】
クロックジェネレータ１０１は、例えば、外部から入力される同期信号から、あるいは、外部から入力したデータに含まれる同期信号から、あるいは、内部に備えられた発振器から、基準クロックを生成する。
【００３５】
第１のクロックバッファ１０２は、基準クロックを駆動し、ＳＤＣＬＫＯ出力バッファ１０３に、ＳＤＲＡＭ１１０へ供給するための外部クロックＳＤＣＬＫＯを出力する。
ＳＤＣＬＫＯ出力バッファ１０３は、ＳＤＣＬＫＯを駆動して、ＳＤＲＡＭ１１０に出力する。ＳＤＲＡＭ１１０は、ＳＤＣＬＫＯに同期して動作する。
【００３６】
第２のクロックバッファ１０４は、基準クロックを駆動し、集積回路１０００内部を動作させる内部クロックＩＣＬＫを生成し、ＩＣＬＫを集積回路１０００内の各構成に供給する。図１は、説明を容易にするために、ＩＣＬＫを第１のＦＦ１０５及び第２のＦＦ１０７に出力した場合について示す。
【００３７】
第１のＦＦ１０５には、ＳＤＲＡＭ１１０へ出力されるデータがラッチされ、第１のＦＦ１０５は、ラッチされたデータを、ＩＣＬＫに同期して、入出力バッファ１０６を介しＳＤＲＡＭ１１０に出力する。尚、ＳＤＲＡＭ１１０へ出力されるデータには、ＳＤＲＡＭ１１０を制御するための信号、すなわちＳＤＲＡＭコマンドや、ライトデータ等があり、データの種類毎に出力用のフリップフロップが通常設けられる。しかし、以上のデータの出力に関わる構成は基本的に同じなので、本実施形態では、説明を簡略化するために、出力用フリップフロップをまとめて第１のＦＦ１０５一つとした。従って、実際は、出力用フリップフロップをデータの種類毎に設けることができる。また、以上のデータは、任意の回路から第１のＦＦ１０５に送られてくる。
【００３８】
一方、ＳＤＲＡＭコマンドによりＳＤＲＡＭ１１０内のデータが読み出されると、第２のＦＦ１０７は、読み出されたリードデータを、入出力バッファ１０６を介して取り込む。
【００３９】
図１に示した集積回路１０００は、後述するクロック位相調整方法に従って設計されている。つまり、集積回路１０００の設計時に、集積回路１０００のレイアウトから集積回路１０００内の信号の伝達及び集積回路１０００とＳＤＲＡＭ１１０との信号の伝達に関わる時間、つまり遅延パラメータを抽出し、抽出された遅延パラメータからデータの受け渡しを確実に行える条件を満たすようにＳＤＣＬＫＯとＩＣＬＫとの第１の位相差に集約し、その位相差を変更することによって、ＳＤＲＡＭ１１０がＳＤＣＬＫＯによりインターフェイス回路１００を介してデータ及び制御信号を取り込み、且つ、インターフェイス回路１００がＳＤＲＡＭ１１０の出力したデータを内部クロックＩＣＬＫにより取り込むことができる集積回路を容易に得ることができる。従って、本実施の形態によれば、従来のクロック信号の位相調整に見られるクロック信号の位相調整用の特別な回路を使わなくても、動作確実性の高い位相のクロックを容易に得ることができる。
【００４０】
図２は、クロックとデータの位相関係を示したタイミングチャートである。図１と図２を用いて、クロックとデータの位相関係について説明する。
まず、ＳＤＣＬＫＯ出力バッファ１０３に入力したＳＤＣＬＫＯ信号は、Ｔ１ｉｏｏｕｔで表される時間後に、ＳＤＣＬＫＯ出力バッファ１０３から出力される。Ｔ１ｉｏｏｕｔは、ＳＤＣＬＫＯ出力バッファ１０３が信号出力に要する時間、すなわち出力遅延を表す。
【００４１】
続いて、ＳＤＣＬＫＯは、Ｔ１ｂｗで表される時間後にＳＤＲＡＭ１１０に到達する。Ｔ１ｂｗは、ＳＤＣＬＫＯ出力バッファ１０３からＳＤＲＡＭ１１０迄の配線遅延を表す。
続いて、ＳＤＣＬＫＯがＳＤＣＬＫＯ出力バッファ１０３に到達してからＤ遅れてＩＣＬＫが第１のＦＦ１０５に到達する。Ｄは、内部クロックＩＣＬＫが第１のＦＦ１０５に到達した時点での、ＳＤＣＬＫＯがＳＤＣＬＫＯ出力バッファ１０３に入力した時点に対する位相差を表す。
【００４２】
続いて、Ｔ２ｏｗ＋Ｔ２ｉｏｏｕｔで表される時間後に、入出力バッファ１０６からＳＤＲＡＭコマンドが出力される。Ｔ２ｏｗは、第１のＦＦ１０５から入出力バッファ１０６迄の配線遅延を表し、Ｔ２ｉｏｏｕｔは、入出力バッファ１０６の出力遅延を表す。
【００４３】
続いて、Ｔ２ｂｗで表される時間後に、コマンドがＳＤＲＡＭ１１０に到達する。Ｔ２ｂｗは、入出力バッファ１０６からＳＤＲＡＭ１１０迄の配線遅延を表す。
図中、ＳＤＳＥＴＵＰで表される時間は、ＳＤＲＡＭ１１０でのＳＤＣＬＫＯ立ち上がり前、データアクセスのために確保されなければならないセットアップ時間で、ＳＤＨＯＬＤで表される時間は、ＳＤＲＡＭ１１０でのＳＤＣＬＫＯ立ち上がり後、データアクセスのために確保されなければならないデータホールド時間である。
【００４４】
一方、ＳＤＲＡＭ１１０からデータを読み出すときは、ＳＤＣＬＫＯがＳＤＲＡＭ１１０に到達してからＳＤＱＤＥＬＡＹで表される時間後に、データが読み出される。
読み出されるデータ（リードデータ）は、Ｔ２ｂｗで表される時間後に入出力バッファ１０６に入力される。
入出力バッファ１０６に入力されたデータは、Ｔ３ｏｗ＋Ｔ３ｉｏｉｎで表される時間後に第２のＦＦに到達する。Ｔ３ｏｗは、入出力バッファ１０６から第２のＦＦ１０７迄の配線遅延を表し、Ｔ３ｉｏｉｎは、入出力バッファ１０６のバッファ遅延を表す。
【００４５】
なお、ＳＤＲＡＭ１１０から出力されるデータＤＱのホールド時間をＳＤＱＨＯＬＤと表し、第２のＦＦ１０７でのデータ入力に際し、必要なセットアップ時間をＴ３ＦＳＥＴＵＰと表し、必要なホールド時間をＴ３ＦＨＯＬＤと表し、図２中に示した。
【００４６】
次に、図１及び図２を用いて、データ転送回路のクロック位相調整方法において重要なクロックの位相差Ｄの計算方法について述べる。
まず、図１に示すような回路を設計し、レイアウトツールを用いて回路の配置配線をする。その結果に基づいて、各構成（セル）及び配線に関する遅延パラメータを出し、以下の計算式を用いてＳＤＲＡＭクロックＳＤＣＬＫＯと内部クロックＩＣＬＫとの位相差Ｄを算出する。
【００４７】
図１に示す回路をレイアウトした場合、抽出される遅延パラメータを用い、式（１）で表される位相差Ｄを後述の方法に従って求める。
位相差Ｄは、外部メモリに供給される外部クロックの出力時点と、集積回路を動作させる内部クロックがデータ入出力の基準点に到達する時点との位相差、すなわち、内部クロックがクロックジェネレータからのデータ出力用フリップフロップに到達する時間から、外部クロックがクロックジェネレータから外部クロック出力用バッファへ到達する時間を引いた値であり、式（１）で表すことができる。
【００４８】
Ｄ＝（Ｔ２ｇ＋Ｔ２ｂ＋Ｔ２ｉｗ）
−（Ｔ１ｇ＋Ｔ１ｂ＋Ｔ１ｏｗ）・・・式（１）
【００４９】
式中、Ｔ２ｇは、クロックジェネレータ１０１から第２のクロックバッファ１０４迄の配線遅延を表し、Ｔ２ｂは、第２のクロックバッファ１０４のセル遅延を表し、Ｔ２ｉｗは、第２のクロックバッファ１０４から第１のＦＦ１０５迄の配線遅延を表し、Ｔ１ｇは、クロックジェネレータ１０１から第１のクロックバッファ１０２迄の配線遅延を表し、Ｔ１ｂは、第１のクロックバッファ１０２のセル遅延を表し、Ｔ１ｏｗは、第１のクロックバッファ１０２からＳＤＣＬＫＯ出力バッファ１０３迄の配線遅延を表す。
【００５０】
ここで、ＳＤＲＡＭのような外部メモリとデータアクセスするインターフェイス回路を備えた集積回路を作製する際の第１の必須条件として、「ＳＤＲＡＭは集積回路から出力されるデータ（ＳＤＲＡＭコマンド及びライトデータを含む）を取り込むことができる」ことが挙げられる。そのためには、
【００５１】
条件１：「内部クロックがクロックジェネレータから出力用フリップフロップに到達する時間」と「内部クロックによって出力用フリップフロップから出力されたデータが外部メモリへ到達するまでの時間」との和から、「外部クロックがクロックジェネレータから外部メモリへ到達するまでの時間」を引くことによって得られる第１の値が、外部メモリのデータを取り込むために必要なデータホールド時間より大きいこと、
【００５２】
条件２：外部クロックの１サイクルの時間から、第１の値を引いた値が、外部メモリのデータを取り込むために必要なデータセットアップ時間より大きいこと、
を満たさなければならない。
【００５３】
本実施形態では、クロックジェネレータ１０１がＳＤＣＬＫＯ及びＩＣＬＫを生成し、第１のＦＦ１０５がＩＣＬＫによってデータをＳＤＲＡＭ１１０へ出力するので、第１の値は、
「ＩＣＬＫがクロックジェネレータ１０１から第１のＦＦ１０５に到達する時間」と、「ＩＣＬＫによって第１のＦＦ１０５から出力されたデータがＳＤＲＡＭ１１０へ到達するまでの時間」との和から、「ＳＤＣＬＫＯがクロックジェネレータ１０１からＳＤＲＡＭ１１０へ到達するまでの時間」を引いた値、
であると言いかえることができる。
【００５４】
図１及び図２において、クロックジェネレータ１０１からＳＤＲＡＭ１１０迄のＳＤＣＬＫＯクロックの到達時間ＣＫＤは式（２）により得られる。
ＣＫＤ＝（Ｔ１ｇ＋Ｔ１ｂ＋Ｔ１ｏｗ
＋Ｔ１ｉｏｏｕｔ＋Ｔ１ｂｗ）・・・式（２）
【００５５】
また、集積回路１０００からＳＤＲＡＭ１１０へ出力されるデータ（以下、ＳＤＲＡＭ１１０に入力されるデータ及びコマンドを総称してＤＱと呼ぶ）の到達時間ＤＱＯＤは、ＩＣＬＫがクロックジェネレータ１０１から出力された時点から考えると、式（３）で表される。
ＤＱＯＤ＝（Ｔ２ｇ＋Ｔ２ｂ＋Ｔ２ｉｗ＋Ｔ２ｆ＋Ｔ２ｏｗ
＋Ｔ２ｉｏｏｕｔ＋Ｔ２ｂｗ）・・・式（３）
式中、Ｔ２ｆは、第１のＦＦ１０５のセル遅延を表す。
【００５６】
なお、Ｔ１ｂｗ及びＴ２ｂｗはボードレイアウトより算出される遅延値情報であって、要求遅延値であっても良い。
上記の記号を用いて条件１を表すと、式（４）になる。
ＳＤＨＯＬＤ＜ＤＱＯＤ−ＣＫＤ・・・式（４）
【００５７】
また、ＳＤＲＡＭ１１０への供給クロックの１サイクル時間をＳＤＣＬＫＣＹＣＬＥと表し、上記の記号を用いて条件２を表すと、式（５）になる。
ＳＤＳＥＴＵＰ＜
ＳＤＣＬＫＣＹＣＬＥ−（ＤＱＯＤ−ＣＫＤ）・・・式（５）
式（１）〜（５）より、
ＳＤＨＯＬＤ−（Ｔ２ｆ＋Ｔ２ｏｗ＋Ｔ２ｉｏｏｕｔ
＋Ｔ２ｂｗ−Ｔ１ｉｏｏｕｔ−Ｔ１ｂｗ）
＜Ｄ＜
ＳＤＣＬＫＣＹＣＬＥ−ＳＤＳＥＴＵＰ−（Ｔ２ｆ＋Ｔ２ｏｗ
＋Ｔ２ｉｏｏｕｔ＋Ｔ２ｂｗ−Ｔ１ｉｏｏｕｔ−Ｔ１ｂｗ）
・・・式（６）
と表すことができる。
【００５８】
また、ＳＤＲＡＭのような外部メモリとアクセスするインターフェイス回路を備えた集積回路を作製する際の第２の必須条件として、「集積回路は、ＳＤＲＡＭから出力されるデータを取り込むことができる」ことが挙げられる。そのためには、
【００５９】
条件３：「外部クロックがクロックジェネレータから外部メモリへ到達するまでの時間」と、「外部クロックを受けて外部メモリから出力されるデータのホールド時間」と、「出力されたデータが入力用フリップフロップに到達する時間」との和から、「内部クロックがクロックジェネレータから入力用フリップフロップに到達する時間」を引いた第２の値が、入力用フリップフロップのデータ入力ホールド時間より大きいこと、
【００６０】
条件４：「内部クロックの１サイクルの時間」と、「内部クロックがクロックジェネレータから入力用フリップフロップに到達する時間」との和から、「外部クロックがクロックジェネレータから外部メモリへ到達する時間」と、「外部クロックを受けて外部メモリから出力されるデータの出力遅延時間」と、「出力されたデータが集積回路内の入力用フリップフロップに到達する時間」との和を引いた第３の値が、入力用フリップフロップのデータ入力セットアップ時間より大きいこと、
が必要である。
【００６１】
本実施形態では、クロックジェネレータ１０１がＳＤＣＬＫＯとＩＣＬＫとを生成し、第２のＦＦ１０７がＳＤＲＡＭ１１０から出力されるデータを取り込むので、第２の値は、
「ＳＤＣＬＫＯがクロックジェネレータ１０１からＳＤＲＡＭ１１０へ到達するまでの時間」と、「ＳＤＣＬＫＯを受けてＳＤＲＡＭ１１０から出力されるデータのホールド時間」と、「出力されたデータが第２のＦＦ１０７に到達するまでの時間」との和から、「ＩＣＬＫがクロックジェネレータ１０１から第２のＦＦ１０７に到達するまでの時間」を引いた値、
であり、第３の値は、
【００６２】
「ＩＣＬＫの１サイクルの時間」と、「ＩＣＬＫがクロックジェネレータ１０１から第２のＦＦ１０７に到達するまでの時間」との和から、「ＳＤＣＬＫＯがクロックジェネレータ１０１からＳＤＲＡＭ１１０へ到達する時間」と、「ＳＤＣＬＫＯを受けてＳＤＲＡＭ１１０から出力されるデータの出力遅延時間」と、「出力されたデータが第２のＦＦ１０７に到達するまでの時間」との和を引いた値、
であると、言い換えることができる。
【００６３】
第２のＦＦ１０７は、集積回路１０００の内部クロックＩＣＬＫで動作している。図１及び図２において、ＳＤＲＡＭ１１０の出力データＤＱが第２のＦＦ１０７へ到達する時間ＤＱＩＤは、式（７）で表される。
ＤＱＩＤ＝Ｔ２ｂｗ＋Ｔ３ｉｏｉｎ＋Ｔ３ｏｗ・・・式（７）
【００６４】
さらに、集積回路１０００内部の動作クロックＩＣＬＫが第２のＦＦ１０７へ到達する時間ＭＣＫＤは、クロックスキュー調整結果からＴ３ｉｗ≒Ｔ２ｉｗであることを考慮すれば、式（８）で表される。
ＭＣＫＤ＝Ｔ２ｇ＋Ｔ２ｂ＋Ｔ２ｉｗ・・・式（８）
従って、条件３は、
Ｔ３ＦＨＯＬＤ＜
（ＣＫＤ＋ＳＤＱＨＯＬＤ＋ＤＱＩＤ）−ＭＣＫＤ ・・・式（９）
と表される。
【００６５】
また、条件４は、
Ｔ３ＦＳＥＴＵＰ＜ＳＤＣＬＫＣＹＣＬＥ＋ＭＣＫＤ−
（ＣＫＤ＋ＳＤＱＤＥＬＡＹ＋ＤＱＩＤ）・・・式（１０）
と表される。尚、ＳＤＣＬＫＯとＩＣＬＫとは、クロックジェネレータ１０１で生成されるので、両クロックの１サイクルの時間は同じである。
【００６６】
式（１）、（２）、（７）〜（１０）より、
（Ｔ１ｉｏｏｕｔ＋Ｔ１ｂｗ＋Ｔ２ｂｗ＋Ｔ３ｉｏｉｎ
＋Ｔ３ｏｗ）＋ＳＤＱＤＥＬＡＹ−ＳＤＣＬＫＣＹＣＬＥ
＋Ｔ３ＦＳＥＴＵＰ
＜Ｄ＜
（Ｔ１ｉｏｏｕｔ＋Ｔ１ｂｗ＋Ｔ２ｂｗ＋Ｔ３ｉｏｉｎ
＋Ｔ３ｏｗ）＋ＳＤＱＨＯＬＤ−Ｔ３ＦＨＯＬＤ・・・式（１１）
となる。
【００６７】
位相差Ｄは、レイアウト抽出された各パラメータを式（６）及び式（１１）に代入することによって算出される。パラメータには、通常、ＭＡＸＩＭＵＭ条件時とＭＩＮＩＭＵＭ条件時とがあるので、両方の条件を満たす位相差Ｄを算出する。
例えば今、外部ピンに対して１０ｐＦの最大外部負荷容量があって、レイアウト後抽出されたパラメータが、ＭＡＸＩＭＵＭ条件時とＭＩＮＩＭＵＭ条件時に以下の表１、表２の通りだとする。
【００６８】
【表１】
0003542967.tif 000002
【表２】
0003542967.tif 000003
【００６９】
ここでＭＡＸＩＭＵＭ条件は、電圧が０．９２×ＶＤＤ、温度が、７０°Ｃの条件、ＭＩＮＩＭＵＭ条件は、電圧が１． ０８×ＶＤＤ、温度が、０°Ｃを条件とする。ＶＤＤは、集積回路１０００の動作電圧である。
【００７０】
ＭＡＸＩＭＵＭ条件時は、位相差ＤがＴＹＰＩＣＡＬ時の約２倍として計算すると、上記表１から、式（６）を用いて、
−３．２１８ｎｓｅｃ＜２Ｄ＜７．５８２ｎｓｅｃ
【００７１】
上記表から、式（１１）を用いて、
５．７３８ｎｓｅｃ＜２Ｄ＜１３．６４８ｎｓｅｃ
よって、Ｄは、
２． ８６９ｎｓｅｃ＜Ｄ＜３． ７９１ｎｓｅｃ・・・式（１２）
の範囲であればよい。
【００７２】
ＭＩＮＩＭＵＭ条件時は、位相差ＤがＴＹＰＩＣＡＬ時の約２分の１の値として計算すると、上記表から、式（６）を用いて、
０．８２６ｎｓｅｃ＜Ｄ／２＜１１．６２６ｎｓｅｃ
【００７３】
上記表から、式（１１）を用いて、
−３．７８６ｎｓｅｃ＜Ｄ／２＜４．６０４ｎｓｅｃ
よって位相差Ｄは、以下の範囲であればよいことになる。
１． ６５６ｎｓｅｃ＜Ｄ＜９．２０８ｎｓｅｃ・・・式（１３）
【００７４】
また、外部負荷の最小値を３ｐＦとし、レイアウト後パラメータを抽出して（抽出結果は表示せず）、外部負荷１０ｐＦの時と同様、式（６）と（１１）とを用いてＤを計算し、
１．８３９ｎｓｅｃ＜Ｄ＜３．９２６ｎｓｅｃ・・・式（１４）
１．６５２ｎｓｅｃ＜Ｄ＜８．５０８ｎｓｅｃ・・・式（１５）
式（１４）及び式（１５）の結果が得られたとすると、式（１２）〜（１５）より、中心値を取って、Ｄ≒３．４ｎｓｅｃとなる。
【００７５】
集積回路１０００のレイアウトを作製後、抽出された各パラメータと上記式とによってＤを算出し、集積回路１０００の内部クロックＩＣＬＫを、ＳＤＲＡＭ１１０へ供給するクロックＳＤＣＬＫＯよりＤ値分、上記例の場合は３．４ｎｓｅｃ、遅らせるように位相差を変更してクロックツリーを構成するというクロック位相調整方法を用いれば、ＬＳＩの設計段階でクロック位相を調整できる。このとき、第１のクロックバッファ１０２には、上述の方法で選択された位相差Ｄを考慮した（Ｔ１ｇ＋Ｔ１ｂ＋Ｔ１ｏｗ）の値が設定され、第２のクロックバッファ１０４にも、位相差Ｄを考慮した（Ｔ２ｇ＋Ｔ２ｂ＋Ｔ２ｉｗ）の値が設定される。
【００７６】
遅延素子の調整は、例えば、クロックツリー構成の際に通常行われるクロックスキュー調整時に、ＳＤＣＬＫＯの経路の遅延素子を調整してＳＤＣＬＫＯの位相をＩＣＬＫよりもＤ値分早い位相にすればよい。クロックスキュー調整とは、クロックツリー構成時に、集積回路内でのクロックの位相を揃えることである。つまり、本実施形態は、従来クロックの位相を揃えるために行われてきたクロックスキュー調整時に、ＳＤＣＬＫＯの位相をＤ値早めることによって、外部メモリとアクセスするのにより適切なクロックを容易に提供できる。
【００７７】
また、遅延素子の調整は、例えば、クロックスキューを調整した後、つまり、クロック位相が揃った後に、ＳＤＣＬＫＯの遅延値をＤ値分少なくするように、クロックバッファ内の遅延素子を変更したり、配線を変更することによって行ってもよい。
【００７８】
図３は、集積回路１０００におけるクロック位相調整方法を示したフローチャートである。クロック位相調整は、クロックスキュー調整時に行う場合を例に挙げる。
まず、ステップＳ１で、集積回路１０００のレイアウトに従ってクロックツリーを構成する。
次にステップＳ２で、レイアウトから回路のネットリストに対応した遅延パラメータを抽出する。
【００７９】
次にステップＳ３で、Ｄ値を求める計算プログラムに、既知の又は要求される外部要因パラメータ、例えば、ＳＤＲＡＭ１１０のデータセットアップ、ホールド時間、ボードの配線遅延、配線負荷、及びＳＤＲＡＭ１１０の入力負荷容量を設定する。
【００８０】
次にステップＳ４で、内部クロックＩＣＬＫの始点と、ＳＤＲＡＭ用クロックＳＤＣＬＫＯの始点とを指定し、且つ、前記条件１及び２の終点である、ＳＤＲＡＭ１１０へのＳＤＣＬＫＯの到達点及び、データの到達点を指定する。さらに前記条件３及び４の終点である、第２のＦＦ１０７のデータ入力ピンを指定する。
【００８１】
次にステップＳ５で、ステップＳ２で抽出した遅延パラメータを基に、Ｄの値を算出する。
次にステップＳ６で、ステップＳ２で抽出した遅延パラメータを基に、ＳＤＣＬＫＯによりデータ及び制御信号（コマンド）がＳＤＲＡＭ１１０に取り込まれるように、且つ、ＳＤＲＡＭ１１０の出力したデータが、内部クロックＩＣＬＫでインターフェイス回路１００内部へ取り込まれるように、式（１）〜式（１１）を使用してＤの範囲を計算する。
【００８２】
ステップＳ７にすすみ、ステップＳ５で算出したＤが、ステップＳ６で算出したＤの範囲を満たすか否かを判断し、Ｄが範囲を満たしていなければ、ステップＳ８へすすみ、Ｄが範囲を満たしていれば、内部及び外部クロック信号の遅延値を変更しない。
【００８３】
ステップＳ８では、ステップＳ６で算出したＤの範囲から適切なＤを選択し、ステップＳ９において、選択したＤの値を基に、クロックスキュー調整用遅延素子を置き換えたり、配線を変更するなどして、外部クロックあるいは内部クロックの遅延値を変更する。
【００８４】
以上のような方法をとることで、従来のデータ転送装置のように、設計者が試行錯誤で位相調整することもなく、且つ位相調整のための特別な回路（例えば特開平９−１８５４２７号に示されるクロック位相調整回路１２）を必要とすることなく、動作確実性の高い位相でクロック供給を行う集積回路のクロック位相を調整できる。
【００８５】
本実施形態で説明した集積回路１０００内の、クロックバッファの数や、フリップフロップの数は、図１に示した数以外でもよい。
また、外部負荷容量を最大時１０ｐＦと最小時３ｐＦとしたが、使用するシステムにあった値を使用するものとする。
【００８６】
本実施形態では、図１に示す構成をもつ集積回路１０００に関して説明してきたが、インターフェイス回路１００及び集積回路１０００の構成は図１に限られず、クロックを用いて外部メモリとアクセスするデバイス全てに本実施形態を適用できる。図１以外の構成のデバイスを設計する際は、上記第１及び第２の必須条件を満たすように、上記条件１〜４及び式（１）〜（１１）を参考にして、遅延パラメータを求め、図３のフローチャートに沿って、遅延パラメータを考慮したデバイスを設計すればよい。
【００８７】
以上説明してきたように、本実施形態によるクロック位相調整方法を用いれば、クロックを用いて外部メモリとアクセスするデバイスのレイアウト設計時、例えばクロックスキュー調整時に遅延素子の値を変更したり、配線を変更することによって、クロックの位相を調整できる。従って、従来のように試行錯誤で位相を調節することなく、また、クロック位相調整のためのテストをすることなく、外部メモリとデータアクセス出来る回路のクロックを調整できる。特に、ＳＤＲＡＭのように高速なアクセスを必要とする場合でも、本実施形態を用いれば、高速アクセス可能な集積回路の位相調整を容易に且つより正確に実現することができる。
【００８８】
また、本実施形態の集積回路の設計方法を用いれば、試行錯誤で位相調節することなく、また、クロック位相調整のためのテストをすることなく、集積回路を設計できる。さらに、回路規模及び回路作製の工程数が削減されることから、消費電力も低減され、かつ、設計が容易なことから、開発期間の短縮にもつながり、また自動化することが可能となることにより、設計者の負担を軽減でき、単純な設計ミスの防止にもなる。
【００８９】
また、本実施形態の集積回路を用いれば、従来のような複雑な回路を持たなくても適切なクロックを供給できる集積回路を提供できる。特に、ＳＤＲＡＭのような高速なアクセスを必要とするインターフェイス回路を備えた集積回路を供給できる。
【００９０】
実施の形態２．
実施の形態１において、集積回路１０００の内部のパラメータは、集積回路１０００が実装されるシステムにより大きく変化することはなく、レイアウトより抽出したパラメータの変動範囲で予測可能である。しかし、外部要因によるパラメータ、例えば、ボード上の配線負荷及び配線遅延、ＳＤＲＡＭ１１０の入力負荷容量等は、実装されるシステムによりバラツキがある。そこで、実施の形態２では、実施の形態１によるクロック位相調整方法を利用し、且つ、実装されるシステムの多様性を考慮したクロック位相調整方法、及び、外部メモリとアクセスするインターフェイス回路を備えた集積回路とその設計方法について説明する。
【００９１】
実施の形態２によるクロック位相調整方法は、まず、実施の形態１によるクロック位相調整方法を応用した方法（後述する）で位相差Ｄを求め、集積回路が任意のシステムに実装されたとき、外部要因による遅延値の変動に対処できるよう、常にクロック信号の遅延を監視し、検出されたクロック信号の位相差に合わせてＤ値を選択できるという方法である。
【００９２】
図４は、実施の形態２によるクロック位相調整方法を適用して作製されたインターフェイス回路４００を備えた集積回路１０１０の構成の一部を示すブロック図である。図４では、説明を容易にするため、集積回路１０１０の構成のうち、ＳＤＲＡＭ４２０とのアクセスに関わる構成を概略的に示した。集積回路１０１０は、ＳＤＲＡＭ４２０とデータアクセスする任意のシステムに実装される。
【００９３】
集積回路１０１０は、インターフェイス回路４００、クロックジェネレータとしてのＰＬＬ４０１及び分周器４０２、第３のクロックバッファ４０３、及び第４のクロックバッファ４０５を備え、インターフェイス回路４００は、ＳＤＣＬＫＯを出力するＳＤＣＬＫＯ出力バッファ４０４、出力用フリップフロップである第３のフリップフロップ（第３のＦＦ）４０６、データを入出力する入出力バッファ４０７、ＳＤＣＬＫＩ入力バッファ４０８、第４のフリップフロップ（第４のＦＦ）４０９、入力用フリップフロップである第５のフリップフロップ（第５のＦＦ）４１０、位相差検出器４１１、及びエラーフラグ出力バッファ４１２を備える。図中、Ｔで始るパラメータを添えた矢印は、後述する、集積回路１０１０内の信号の伝達及び集積回路１０１０とＳＤＲＡＭ４２０との信号の伝達に関わる遅延パラメータを示す。
【００９４】
ＰＬＬ４０１は、例えば２７ＭＨｚから逓倍した１０８０ＭＨｚのクロックＯＣＬＫを出力するものとする。
分周器４０２は、ＰＬＬ４０１から入力されたクロックを分周して、基準となる６７． ５ＭＨｚのクロックを生成する。
【００９５】
第３のクロックバッファ４０３は、分周器４０２から出力されるクロックを受信し、外部メモリすなわちＳＤＲＡＭ４２０へ供給するためのクロックＳＤＣＬＫＯを駆動する。また、第３のクロックバッファ４０３は、後述するように、遅延値が選択可能な構成を有する。
【００９６】
第４のクロックバッファ４０５は、分周器４０２から出力されるクロックＤＩＶＣＫを駆動し、集積回路１０１０の内部を動作させるクロックＩＣＬＫを生成し、ＩＣＬＫを集積回路１０１０の各構成に供給する。
第３のＦＦ４０６は、第１のＦＦ１０５同様、ラッチされたデータを、ＩＣＬＫに同期して、入出力バッファ４０７を介してＳＤＲＡＭ４２０に出力する。
【００９７】
ＳＤＣＬＫＩ入力バッファ４０８は、ＳＤＲＡＭ４２０に入力されたＳＤＣＬＫＯのフィードバッククロックＳＤＣＬＫＩが入力されるバッファである。
第４のＦＦ４０９は、ＳＤＲＡＭコマンドによりＳＤＲＡＭ４２０内のデータから読み出されたリードデータを、入出力バッファ４０７を介して、フィードバッククロックＳＤＣＬＫＩに同期して取り込む。
【００９８】
第５のＦＦ４１０は、第４のＦＦ４０９で取り込んだデータを、集積回路４００の動作クロックＩＣＬＫでラッチする。
位相差検出器４１１は、ＳＤＲＡＭ４２０へ供給するためのＳＤＣＬＫＯと、ＳＤＲＡＭ４２０からフィードバックされたクロックＳＤＣＬＫＩと、ＰＬＬ４０１出力であるＯＣＬＫとを受信し、ＳＤＣＬＫＯとＳＤＣＬＫＩとの位相差ＰＤを検出する検出機能と、ＰＤに合わせてＤを選択するセレクタ機能とを持つ。
【００９９】
さらに、位相差検出器４１１は、ＯＣＬＫを用いてＳＤＣＬＫＯとＳＤＣＬＫＩとの位相差ＰＤを検出し、後述するように、検出されたＰＤから予め設定された位相差Ｄを選択し、以下の式（１６）よりＳＤＲＡＭクロックの遅延値ＳＤＣＬＫＤＬＹを決定する。Ｄは、以下の式で表される。
【０１００】
Ｄ＝（Ｔ６ｇ＋Ｔ６ｂ＋Ｔ６ｉｗ）
−（Ｔ５ｇ＋Ｔ５ｂ＋Ｔ５ｏｗ）
【０１０１】
式中、Ｔ６ｇは、分周器４０２から第４のクロックバッファ４０５迄の配線遅延を表し、Ｔ６ｂは、第４のクロックバッファ４０５のセル遅延を表し、Ｔ６ｉｗは、第４のクロックバッファ４０５から第３のＦＦ４０６迄の配線遅延を表し、Ｔ５ｇは、分周器４０２から第３のクロックバッファ４０３迄の配線遅延を表し、Ｔ５ｂは、第３のクロックバッファ４０３のセル遅延を表し、Ｔ５ｏｗは、第３のクロックバッファ４０３からＳＤＣＬＫＯ出力バッファ４０４迄の配線遅延を表す。また、式（１６）は、
【０１０２】
ＳＤＣＬＫＤＬＹ＝Ｔ５ｇ＋Ｔ５ｂ＋Ｔ５ｏｗ
＝（Ｔ６ｇ＋Ｔ６ｂ＋Ｔ６ｉｗ）−Ｄ
・・・式（１６）
で表される。
【０１０３】
エラーフラグ出力バッファ４１２は、位相差検出器４１１がエラーを出したときに、エラーフラグを出力する。
本実施形態は、実施の形態１と同様、第１及び第２の必須条件を満たす必要がある。ＳＤＣＬＫＯ及びＩＣＬＫのクロックジェネレータを分周期４０２とすると、第１の必須条件は、実施の形態１の条件１及び２と同様、
【０１０４】
条件５：「ＩＣＬＫが分周期４０２から第３のＦＦ４０６に到達する時間」と、「ＩＣＬＫによって第３のＦＦ４０６から出力されたデータがＳＤＲＡＭ４２０へ到達するまでの時間」との和から、「ＳＤＣＬＫＯが分周期４０２からＳＤＲＡＭ４２０へ到達するまでの時間」を引いた第１の値が、ＳＤＲＡＭ４２０のデータを取り込むために必要なデータホールド時間より大きく、
【０１０５】
ＳＤＣＬＫＯの１サイクルの時間から、第１の値を引いた値が、ＳＤＲＡＭ４２０のデータを取り込むために必要なデータセットアップ時間より大きいこと、と表すことができる。また、第２の必須条件は、
【０１０６】
条件６：「外部クロックが、分周器４０２から外部メモリすなわちＳＤＲＡＭ４２０に到達し、フィードバッククロックとしてＳＤＲＡＭ４２０から折り返して集積回路１０１０に入力され、さらに、ＳＤＲＡＭ４２０からのデータをフィードバッククロックによって取り込むためのフリップフロップすなわち第４のＦＦ４０９に到達するまでの時間」と、「第４のＦＦ４０９のセル遅延」と、「第４のＦＦ４０９から、内部クロックで動作している２段目のデータ取り込みフリップフロップすなわち第５のＦＦ４１０までの配線遅延」とを足した値（以下、値Ｖ１と呼ぶことにする）から、
【０１０７】
「内部クロックが、分周器４０２から第５のＦＦ４１０に到達するまでの時間」を引いた値が、第５のＦＦ４１０のホールド時間より大きいこと、
条件７：「内部クロックが分周器４０２から第５のＦＦ４１０に到達するまでの時間」と「ＳＤＲＡＭクロックの１サイクルの時間」との和から、値Ｖ１を引いた値が、第５のＦＦ４１０のセットアップ時間より大きいこと、
【０１０８】
条件８：値Ｖ１が「内部クロックが分周器４０２から第５のＦＦ４１０まで到達する時間」より大きいこと、
条件９：ＳＤＲＡＭ４２０から出力されるデータＤＱより、フィードバッククロックＳＤＣＬＫＩが遅れすぎないこと、すなわち、「ＳＤＲＡＭ４２０から出力されるデータがＳＤＲＡＭ４２０から第４のＦＦ４０９へ到達する時間（ホールド時間＋配線遅延＋入力バッファ遅延）」から、「ＳＤＲＡＭクロックが、ＳＤＲＡＭ４２０からフィードバックされ、第４のＦＦ４０９へ到達するまでの時間」を引いた値が、「第４のＦＦ４０９のホールド時間」より大きいこと、
と表すことができる。
【０１０９】
条件５は、式（６）のパラメータを本実施形態に適用した式（１７）で表される。
ＳＤＨＯＬＤ−（Ｔ６ｆ＋Ｔ６ｏｗ＋Ｔ６ｉｏｏｕｔ
＋Ｔ６ｂｗ−Ｔ５ｉｏｏｕｔ−Ｔ５ｂｗ）
＜Ｄ＜
ＳＤＣＬＫＣＹＣＬＥ−ＳＤＳＥＴＵＰ−（Ｔ６ｆ＋Ｔ６ｏｗ
＋Ｔ６ｉｏｏｕｔ＋Ｔ６ｂｗ−Ｔ５ｉｏｏｕｔ−Ｔ５ｂｗ）
・・・式（１７）
【０１１０】
式中、ＳＤＨＯＬＤは、ＳＤＲＡＭ４２０のデータ入力に必要なホールド時間を表し、Ｔ６ｆは、第３のＦＦ４０６のセル遅延を表し、Ｔ６ｏｗは、第３のＦＦ４０６から入出力バッファ４０７迄の配線遅延を表し、Ｔ６ｉｏｏｕｔは、入出力バッファ４０７の出力遅延を表し、Ｔ６ｂｗは、入出力バッファ４０７からＳＤＲＡＭ４２０迄の配線遅延を表し、Ｔ５ｉｏｏｕｔは、ＳＤＣＬＫＯ出力バッファ４０４の出力遅延を表し、Ｔ５ｂｗは、ＳＤＣＬＫＯ出力バッファ４０４からＳＤＲＡＭ４２０迄の配線遅延を表し、ＳＤＣＬＫＣＹＣＬＥは、ＳＤＲＡＭ４２０への供給クロックＳＤＣＬＫＯの１サイクル時間を表し、ＳＤＳＥＴＵＰは、ＳＤＲＡＭ４２０データ入力に必要なセットアップ時間を表す。
【０１１１】
条件６及び７は、式（１８）で表すことができる。
Ｔ５ｉｏｏｕｔ＋Ｔ５ｂｗ＋Ｔ８ｂｗ＋Ｔ８ｉｏｉｎ＋Ｔ８ｏｗ
＋Ｔ８ｆ＋Ｔ８ｉｗ−ＳＤＣＬＫＣＹＣＬＥ＋Ｔ５ＦＳＥＴＵＰ
＜Ｄ＜
Ｔ５ｉｏｏｕｔ＋Ｔ５ｂｗ＋Ｔ８ｂｗ＋Ｔ８ｉｏｉｎ＋Ｔ８ｏｗ
＋Ｔ８ｆ＋Ｔ８ｉｗ−Ｔ５ＦＨＯＬＤ・・・式（１８）
式中、Ｔ８ｂｗは、ＳＤＲＡＭ４２０からＳＤＣＬＫＩ入力バッファ４０８迄の配線遅延を表し、Ｔ８ｉｏｉｎは、ＳＤＣＬＫＩ入力バッファ４０８のバッファ遅延を表し、Ｔ８ｏｗは、ＳＤＣＬＫＩ入力バッファ４０８から第４のＦＦ４０９迄の配線遅延を表し、Ｔ８ｆは、第４のＦＦ４０９のセル遅延を表し、Ｔ８ｉｗは、第４のＦＦ４０９から第５のＦＦ４１０迄の配線遅延を表し、Ｔ５ＦＳＥＴＵＰは、第５のＦＦ４１０のデータ入力に必要なセットアップ時間を表し、Ｔ５ＦＨＯＬＤは、第５のＦＦ４１０のデータ入力に必要なホールド時間を表す。また、ＳＤＣＬＫＯとＩＣＬＫは分周器４０２で生成されるので、両クロックの１サイクルの時間は同じである。
【０１１２】
位相差検出器４１１により検出される位相差ＰＤは、外部クロックが集積回路１０１０から出力される時点と、外部クロックが外部メモリからフィードバックされて集積回路１０１０に到達する時点との位相差であるから、
ＰＤ＝Ｔ５ｉｏｏｕｔ＋Ｔ５ｂｗ＋Ｔ８ｂｗ＋Ｔ８ｉｏｉｎ
＋Ｔ８ｏｗ・・・式（１９）
となり、式（１８）は、
ＰＤ＋Ｔ８ｆ＋Ｔ８ｉｗ−ＳＤＣＬＫＣＹＣＬＥ
＋Ｔ５ＦＳＥＴＵＰ
＜Ｄ＜
ＰＤ＋Ｔ８ｆ＋Ｔ８ｉｗ−Ｔ５ＦＨＯＬＤ・・・式（２０）
となる。
【０１１３】
条件８は、
Ｄ＜Ｔ５ｉｏｏｕｔ＋Ｔ５ｂｗ＋Ｔ８ｂｗ＋Ｔ８ｉｏｉｎ＋Ｔ８ｏｗ
＋Ｔ８ｆ＋Ｔ８ｉｗ
で表されるが、式（１８）が満たされれば、条件８も満たされる。
【０１１４】
条件９は、
ＳＤＱＨＯＬＤ＋Ｔ６ｂｗ＋Ｔ７ｉｏｉｎ＋Ｔ７ｏｗ
−（Ｔ８ｂｗ＋Ｔ８ｉｏｉｎ＋Ｔ８ｏｗ）＞Ｔ４ＦＨＯＬＤ
で表される。式中、ＳＤＱＨＯＬＤは、ＳＤＲＡＭ４２０から出力されるデータＤＱのホールド時間を表し、Ｔ７ｉｏｉｎは、入出力バッファ４０７のバッファ遅延を表し、Ｔ７ｏｗは、入出力バッファ４０７から第４のＦＦ４０９迄の配線遅延を表し、Ｔ４ＦＨＯＬＤは、第４のＦＦ４０９のデータ入力に必要なホールド時間を表す。
【０１１５】
条件７を表す上記式は、Ｔ６ｂｗ、Ｔ７ｉｏｉｎ、Ｔ７ｏｗ、Ｔ８ｂｗ、Ｔ８ｉｏｉｎ、Ｔ８ｏｗにおいて等長配線を心がけることによって満たされる。通常、外部メモリへ入力されたクロックがフィードバックされるインターフェイス回路では、条件７は必須なので、本実施形態では、上記のような等長配線をして、条件７をすでに満たしているものとする。
【０１１６】
式（１７）〜（２０）において、外部要因によるパラメータ、例えば、ボード上の配線負荷及び配線遅延、ＳＤＲＡＭ４２０の入力負荷容量等は、実装されるシステムによりバラツキがあるが、インターフェイス回路４００の内部パラメータ、例えば、Ｔ６ｆ，Ｔ６ｏｗ，Ｔ８ｆ，Ｔ８ｉｗ，Ｔ５ＦＳＥＴＵＰ、Ｔ５ＦＨＯＬＤなどは、システムにより大きく変化することはなく、レイアウトより抽出したパラメータの変動範囲で予測可能である。従って、レイアウトから抽出された予測可能なパラメータを式（２０）に代入し、Ｄの範囲を、ＭＡＸＩＭＵＭ条件時とＭＩＮＩＭＵＭ条件時とにわけて計算すると、ＰＤ以外の部分は、外部負荷容量により変化しないので、式（２０）は、ＰＤを変数とする一次不等式となる。
【０１１７】
例えば、レイアウトから抽出された予測可能なパラメータを式（２０）に代入し、ＭＡＸＩＭＵＭ条件時を実施の形態１と同様、ＤがＴＹＰＩＣＡＬ時の約２倍として計算すると、式（２０）は、
ＰＤ／２＋ｄ１＜Ｄ＜ＰＤ／２＋ｄ２・・・（２０−１）
【０１１８】
となり、ＭＩＮＩＭＵＭ条件時を実施の形態１と同様、ＤがＴＹＰＣＩＣＡＬ時の約２分の１の値として計算すると、式（２０）は、
２ＰＤ＋ｄ３＜Ｄ＜２ＰＤ＋ｄ４・・・（２０−２）
【０１１９】
となると仮定する。式中、ｄ１、ｄ２、ｄ３、ｄ４は、レイアウトから抽出された予測可能なパラメータを式（２０）に代入して得られた定数である。
【０１２０】
位相差ＰＤは変数なので、ｄ２＞ｄ４＞ｄ１＞ｄ３とすれば、式（２０−１）及び式（２０−２）は図５のグラフで表される。式（２０−１）で表されるＤの範囲は、図５のグラフ上では、黒塗りの四角形とひし形がついた直線の間である。式（２０−２）で表されるＤの範囲は、図５のグラフ上では、黒塗りの三角形とばつ印がついた直線の間である。
【０１２１】
一方、ＳＤＣＬＫＯがＳＤＲＡＭ４２０に到達する時間と、インターフェイス回路４００が出力したデータが到達する時間との差を規定した条件式である式（１７）よりＤの範囲を算出する。このとき、Ｔ５ｉｏｏｕｔ、Ｔ６ｉｏｏｕｔ、Ｔ５ｂｗ、Ｔ６ｂｗによる配線遅延は、等長配線を心がけると、ほぼ同様の負荷が生じ、相対的に遅延が発生するため、式（１７）へ与える影響は少なく、外部負荷容量が変わっても、式（１７）は変数を持たない不等式で表される。
【０１２２】
例えば、レイアウトから抽出された予測可能なパラメータを式（１７）に代入し、
ｄ５＜Ｄ＜ｄ６・・・式（１７−１）
が得られたとする。式中、ｄ５とｄ６は、レイアウトから抽出された予測可能なパラメータを式（１７）に代入して得られる定数を表す。
【０１２３】
ｄ５＞ｄ２として式（１７−１）を図５のグラフに反映させ、式（２０−１）、（２０−２）及び（１７−１）を満たす有効範囲を斜線で示す。位相差Ｄは、斜線で示された有効範囲内から任意に選択される。
【０１２４】
尚、Ｄの取り得る範囲に何らかの制限がある場合、制限に合わせてＤの有効範囲を決めることもできる。例えば下限がｄ７に決まっている場合、式（１７−１）は、
ｄ５＜ｄ７の場合、ｄ７＜Ｄ＜ｄ６となり、
ｄ５＞ｄ７の場合、ｄ５＜Ｄ＜ｄ６となる。
【０１２５】
本実施形態では、後述するように、位相差検出器４１１がＯＣＬＫのカウント数に従ってＳＤＣＬＫＯとＳＤＣＬＫＩとの位相差ＰＤを検出しているので、上記Ｄの有効範囲のうち、ＰＤがＯＣＬＫのカウント数と一致するときのＤの範囲から選ぶとよい。例えば、ＰＤ＝２クロックのときは、ｄ５＜Ｄ＜ｄ１０から位相差Ｄを選ぶ。
【０１２６】
集積回路１０１０を作製するに当たり、Ｄの初期設定値を上述の方法で選ぶ。つまり、ＰＤの初期設定値としてＯＣＬＫ２クロック分に相当する位相差を選んだ場合、ｄ５＜Ｄ＜ｄ１０から位相差Ｄの初期設定値を選ぶ。実施の形態１同様、選んだ初期設定値に基づいて、集積回路１０１０のクロックツリーを構成し、所望の集積回路１０１０を得る。尚、本実施形態ではＯＣＬＫのカウント数に基づいてＤを選択したが、選択方法はこれに限られず、実装されるシステムに従ってＤを選択すればよい。
【０１２７】
実施の形態２による集積回路１０１０は、所定のシステムに実装された後、上述の方法に従って予め選択された複数のＤ値から、位相差検出器４１１が検出した位相差に適したＤ値を選択することができる構成を有する。従って、実施の形態２は、外部要因によって遅延パラメータが変動する場合でも適切なクロックを自動的に出力できるクロック位相調整方法、集積回路及びその設計方法を提供することができる。
【０１２８】
次に、集積回路１０１０を所定のシステムに実装後、位相差検出器４１１が検出した位相差に基づいて、Ｄ値を選択する構成及び方法について詳細に説明する。
位相差検出器４１１は、ＳＤＣＬＫＯとＳＤＣＬＫＩとの位相差を、ＯＣＬＫでカウントし、そのカウント値つまり位相差によって第３のクロックバッファ４０３へ出力する設定値ＰＳＥＴを選択する。設定値ＰＳＥＴは、遅延値ＳＤＣＬＫＤＬＹに対応した値である。
【０１２９】
位相差検出器４１１は、カウント値で表される位相差の各々に対して、位相差Ｄと、ＰＳＥＴと、エラーフラグの出力とを予め決めたテーブルを備え、テーブルを基にＰＳＥＴを選択する。
【０１３０】
図６は、位相差検出器４１１が備えるテーブルの一例を示す。テーブル４１１−１は、位相差検出器４１１が検出したＰＤ、ここではカウントしたＯＣＬＫのカウント値を示す表示部４１１−２と、各ＰＤに対するＤの値を示す表示部４１１−３と、第３のクロックバッファに出力する設定値ＰＳＥＴを示す表示部４１１−４と、エラーフラグの出力をＨ、エラーフラグの非出力をＬで示す表示部４１１−５とを有する。
【０１３１】
このとき、各ＰＤに対して設定されるＤは、図５のグラフによって求められるようなＤの有効範囲と検出されるＰＤとから求められる範囲から予め任意に選択された値である。例えばＰＤ＝２クロックのときのＤは、図５のグラフよりｄ５＜Ｄ＜ｄ１０の範囲から予め選択しておく。
【０１３２】
また、式（２０）によるＤの範囲が式（１７）の範囲から外れる場合（図５ではＰＤが１クロック分又は６クロック分のとき）、エラーフラグ表示部４１１−５にＨを表示する。例えば、テーブル４１１−１では、ＰＤが１クロック分、あるいは６クロック分の場合、エラーフラグ表示部４１１−５にＨが示されているが、これは、Ｄ１１とＤ１６とが式（１７−１）を満たしていないということを示す。なお、設定値ＰＳＥＴは、後述する第３のクロックバッファが有するトライステートバッファに対応している。
【０１３３】
尚、本実施形態では、位相差検出器４１１で検出されたＰＤに対するＤが求まらない場合に、エラーフラグ出力バッファ４１２からエラーフラグを出力するように設定したが、Ｔ６ｉｏｏｕｔ等に外部負荷を付けるなどすれば、エラーフラグの出力を回避することも可能なので、エラーフラグは必ず必要な機能ではない。
【０１３４】
図７は、第３のクロックバッファ４０３の構成を例示するブロック図である。第３のクロックバッファ４０３は、位相差検出器４１１で検出されるＰＤに合わせて、式（１６）から求められるＳＤＣＬＫＤＬＹが選択されるように、異なる個数の遅延素子を有する複数本の信号ライン（図７では▲１▼〜▲５▼）を備える。例えば、図７中の▲１▼は、ＳＤＣＬＫＤＬＹが（Ｔ６ｇ＋Ｔ６ｂ＋Ｔ６ｉｗ）−Ｄ１１となるクロックが出力されるラインである。尚、図中Ｘは、Ｘ＝Ｔ６ｇ＋Ｔ６ｂ＋Ｔ６ｉｗである。
【０１３５】
各ラインの最終遅延素子４０３１〜４０３５は、トライステートバッファと呼ばれ、位相差検出器４１１から出力される設定値ＰＳＥＴに従って選択され、選択されたトライステートバッファから出力される信号がＳＤＣＬＫＯとして出力される。図６中のＰＳＥＴの各数字は、図７のトライステートバッファ４０３１〜４０３５に対応している。つまり、ＰＳＥＴの最下位（ＬＳＢ）はバッファ４０３１と対応し、ＰＳＥＴの最下位が「１」であれば、バッファ４０３１が選択され、最下位が「０」であれば、バッファ４０３１は選択されない。尚、図６では、Ｄ＝Ｄ１６のときＰＳＥＴは「１００００」となっているが、これは、Ｄ＝Ｄ１６のときのＳＤＣＬＫＤＬＹ（＝Ｘ−Ｄ１６）が短すぎて、図７に示す信号ラインでは対応できず、最も遅延値の小さい信号ライン▲５▼で代用するように設定されている。
【０１３６】
図８は、集積回路１０１０のクロックスキュー調整時に行うクロック位相調整方法を示したフローチャートである。集積回路１０１０を実装後に行うクロック位相調整については、後述する。
まず、ステップＳ１０で、集積回路１０１０のレイアウトに従ってクロックツリーを構成する。
【０１３７】
次にステップＳ１１で、レイアウトから回路のネットリストに対応した遅延パラメータを抽出する。
次にステップＳ１２で、Ｄ値を求める計算プログラムに、既知の又は要求される外部要因パラメータ、例えば、ＳＤＲＡＭ４２０のデータセットアップ、ホールド時間、ボードの配線遅延、配線負荷、及びＳＤＲＡＭ４２０の入力負荷容量を設定する。
【０１３８】
次にステップＳ１３で、内部クロックＩＣＬＫの始点と、ＳＤＲＡＭ用クロックＳＤＣＬＫＯの始点とを指定し、且つ、前記条件５の終点である、ＳＤＲＡＭ４２０へのＳＤＣＬＫＯの到達点及び、データの到達点を指定する。さらに前記条件６から９の終点である、第５のＦＦ４１０のデータ入力ピンを指定する。
【０１３９】
ステップＳ１４では、ＰＤの値を任意に複数設定する。ここでは、ＯＣＬＤで位相差ＰＤをカウントしているので、ＰＤの値はＯＣＬＫのクロック数を基準として設定されている。
ステップＳ１５では、ステップＳ１１で抽出した遅延パラメータを基に、ＳＤＣＬＫＯによりデータ及び制御信号（コマンド）がＳＤＲＡＭ４２０に取り込まれるように、且つ、ＳＤＲＡＭ４２０の出力したデータが、フィードバッククロックＳＤＣＬＫＩでインターフェイス回路４００内部へ取り込まれるように、式（１７）〜式（２０）を使用して、位相差Ｄの範囲を算出し、設定したＰＤの各値に対して位相差Ｄを選択する。
【０１４０】
次にステップＳ１５で決定されたＤに基づき、第３のクロックバッファ４０３の遅延素子を設定（ステップＳ１６）し、ステップＳ１５で決定されたＤのなかから、初期値を任意に選択する（ステップＳ１７）。
図４、図６、図７を用いて、集積回路１０１０が任意のシステムに実装された後の位相差検出器４１１の動作及びクロック位相調整について説明する。
【０１４１】
今、位相差Ｄは初期状態で、例えばＰＤ＝３クロック、すなわちＤ＝Ｄ１３に初期設定されており、実装された基板上で電源投入後、位相差検出器４１１が、ＯＣＬＫで２クロック分の位相差ＰＤをカウントしたと仮定する。Ｄの値は、図６よりＤ＝Ｄ１２なので、位相差検出器４１１は、第３のクロックバッファ４０３の信号ラインがＤ＝Ｄ１２に切り替わるように、設定値「０００１０」を第３のクロックバッファ４０３に出力する。
【０１４２】
第３のクロックバッファ４０３では、設定値「０００１０」に対応するトライステートバッファ４０３２が選ばれ、選ばれたバッファ４０３２からＳＤＣＬＫＯが出力される。
以上のように、実装したボードによる遅延及び外部負荷のバラツキがあっても、ＬＳＩ自ら自動的に位相差を検出し、かつ、位相差Ｄを再設定することで、複数のシステムへの対応が容易になる。
【０１４３】
集積回路１０１０の設計は以下の手順に従って行われる。
まず、集積回路１０１０のレイアウトを作製し、レイアウトから抽出された各パラメータと式（１７）及び（２０）とによって算出されるＤの範囲を求める。
【０１４４】
求めたＤの範囲を基に、位相差検出器４１１のテーブル４１１−１を作製する。
テーブル４１１−１と式（１６）とを基に、第３のクロック４０３のクロックツリーを作製する。
【０１４５】
以上のような設計方法をとることで、従来のデータ転送装置のように、設計者が試行錯誤で位相調整する必要もなく、且つ位相調整のための特別な回路を必要とすることもなく、実装されるシステムの多様性を考慮した、動作確実性の高い位相でのクロック供給が可能な集積回路を容易に作製できる。
【０１４６】
以上説明したように、外部メモリへ出力する外部クロックと、外部メモリからのフィードバッククロックとの位相差を検出することにより、内部クロックと外部クロックとの位相差を調整できる。従って、実装されるシステムの配線遅延や、外部負荷容量などの外部要因が多様であっても、最適なクロック位相を容易に調整できる。
【０１４７】
なお、本実施形態では、ＯＣＬＫを１０８０ＭＨｚ、分周した基準となるクロックを６７．５ＭＨｚとしたが任意の周波数で良い。また、第３のクロックバッファ４０３の構成は、１例でありこの限りではない。さらに、位相差検出器４１１は、各クロックの位相差を検出しその差をカウントして時間を計測したが、任意の位相比較手段で良い。また、本実施形態では、エラーフラグを出力するようにしたが、必ず出力する必要はなく、また、独立して持たずに、他ピンと共用しても良い。
【０１４８】
本実施形態では、図４に例示したインターフェイス回路４００を備えた集積回路１０１０に関して説明してきたが、集積回路の構成は図４に限られず、クロックを用いて外部メモリとアクセスするデバイス全てに本実施形態を適用できる。図４以外の構成のデバイスを設計する際は、上記第１及び第２の必須条件を満たすように、上記条件５〜７及び式（１６）〜（２０）を参考にして、遅延パラメータを求め、外部クロックの位相差に合わせて遅延パラメータを選択できる構成を備えるデバイスを設計すればよい。
【０１４９】
実施の形態３．
さらに、実施の形態１では、完全同期設計を前提としたが、フィードバッククロック方式を採用する回路を、実施の形態１と同様の位相調整方法と設計方法で実現できる。
【０１５０】
図９は、実施の形態３によるクロック位相調整方法を適用して作製した、外部メモリすなわちＳＤＲＡＭ１１０へデータアクセスするインターフェイス回路５００を備えた集積回路１０２０の構成の一部を示すブロック図である。図９では、説明を容易にするため、集積回路１０２０の構成のうち、ＳＤＲＡＭ１１０とのアクセスに関わる構成を概略的に示した。また、図１と同様の構成については、同じ参照番号を付与し、ここではその説明を省略する。
【０１５１】
集積回路１０２０は、クロックジェネレータ１０１と、第１のクロックバッファ１０２と、第２のクロックバッファ１０４と、インターフェイス回路５００とを備え、インターフェイス回路５００は、ＳＤＣＬＫＯ出力バッファ１０３と、出力用フリップフロップである第１のフリップフロップ（第１のＦＦ）１０５と、入出力バッファ１０６と、ＳＤＣＬＫＩ入力バッファ５０８と、入力用フリップフロップである第６のフリップフロップ（第６のＦＦ）５０９と、第７のフリップフロップ（第７のＦＦ）５１０と、を備える。図中、Ｔで始るパラメータが添えてある矢印は、後述する集積回路１０２０内の信号の伝達及び集積回路１０２０とＳＤＲＡＭ１１０との信号の伝達に関わる遅延パラメータを示す。
【０１５２】
ＳＤＣＬＫＩ入力バッファ５０８は、ＳＤＲＡＭ４２０に入力されたＳＤＣＬＫＯのフィードバッククロックＳＤＣＬＫＩが入力されるバッファである。
第６のＦＦ５０９は、ＳＤＲＡＭコマンドによりＳＤＲＡＭ１１０内から読み出されたリードデータを、入出力バッファ１０６を介し、フィードバッククロックＳＤＣＬＫＩに同期して取り込む。
【０１５３】
第７のＦＦ５１０は、第６のＦＦ５０９で取り込んだデータを、集積回路１０２０の動作クロックＩＣＬＫでラッチする。
第２のクロックバッファ１０４は、基準クロックを駆動し、集積回路１０２０内部を動作させる内部クロックＩＣＬＫを生成し、ＩＣＬＫを集積回路１０２０内の構成に供給する。図９は、説明を容易にするために、ＩＣＬＫを第１のＦＦ１０５及び第７のＦＦ５１０に出力した場合について示す。
【０１５４】
図１０は、データ読み出し時のクロックとデータの位相関係を示したタイミングチャートである。図９と図１０を用いて、クロックとデータの位相関係について説明する。ＳＤＣＬＫＯ信号及びＳＤＲＱＡＭコマンドがＳＤＲＡＭ１１０に到達するまでのチャートは、図２と同様なので、ここではその説明を省略する。
【０１５５】
ＳＤＣＬＫＯのフィードバッククロックＳＤＣＬＫＩは、ＳＤＲＡＭ１１０で折り返してから、Ｔ９ｂｗ＋Ｔ９ｉｏｉｎ＋Ｔ９ｏｗの遅延の後、第６のＦＦ５０９へ到達する。なお、Ｔ９ｂｗ＋Ｔ９ｉｏｉｎ＋Ｔ９ｏｗ≒Ｔ２ｂｗ＋Ｔ３ｉｏｉｎ＋Ｔ１０ｏｗとする。これは、実施の形態で述べたとおりである。
【０１５６】
読み出されるデータ（リードデータ）は、ＳＤＣＬＫＯがＳＤＲＡＭ１１０に到達してから、ＳＤＱＤＥＬＡＹで表される時間後に読み出される。
また、上記条件より、リードデータは、ＳＤＣＬＫＩが第６のＦＦ５０９に到達してからＳＤＱＤＥＬＡＹで表される時間後に、第６のＦＦ５０９に到達すると考えることができる。
【０１５７】
ＳＤＣＬＫＩに同期して第６のＦＦ５０９にラッチされたデータは、Ｔ１０ｆ＋Ｔ９ｉｗで表される時間後に第７のＦＦ５１０に到達する。Ｔ１０ｆは、第６のＦＦ５０９における遅延を表し、Ｔ９ｉｗは、第６のＦＦ５０９から第７のＦＦ５１０までの配線遅延を表す。
【０１５８】
なお、ＳＤＲＡＭ１１０から出力されるデータＤＱのホールド時間をＳＤＱＨＯＬＤと表し、第７のＦＦ５１０でのデータ入力に際し、必要なセットアップ時間をＴ９ＦＳＥＴＵＰと表し、必要なホールド時間をＴ９ＦＨＯＬＤと表し、図１０中に示した。
【０１５９】
次に、図９及び図１０を用いて、データ転送回路のクロック位相調整方法において重要なクロックの位相差Ｄの計算方法について述べる。
実施の形態１で述べた条件１及び２の条件に加えて、実施の形態２で述べた条件６から９を実施の形態３に適用した条件が加わる。つまり、
【０１６０】
条件１０：「外部クロックすなわちＳＤＲＡＭクロックが、クロックジェネレータ１０１から外部メモリすなわちＳＤＲＡＭ１１０に到達し、フィードバッククロックとしてＳＤＲＡＭ１１０から折り返して集積回路１０２０に入力され、さらに、ＳＤＲＡＭ１１０からのデータをフィードバッククロックによって取り込むためのフリップフロップすなわち第６のＦＦ５０９に到達するまでの時間」と、「第６のＦＦ５０９のセル遅延」と、「第６のＦＦ５０９から、内部クロックで動作している２段目のデータ取り込みフリップフロップすなわち第７のＦＦ５１０までの配線遅延」とを足した値（以下、値Ｖ２と呼ぶことにする）から、
【０１６１】
「内部クロックが、クロックジェネレータ１０１から第７のＦＦ５１０に到達するまでの時間」を引いた値が、第７のＦＦ５１０のホールド時間より大きいこと、
【０１６２】
条件１１：「内部クロックがクロックジェネレータ１０１から第７のＦＦ５１０に到達するまでの時間」と「ＳＤＲＡＭクロックの１サイクルの時間」との和から、値Ｖ２を引いた値が、第７のＦＦ５１０のセットアップ時間より大きいこと、
【０１６３】
条件１２：値Ｖ２が「内部クロックがクロックジェネレータ１０１から第７のＦＦ５１０まで到達する時間」より大きいこと。
条件１３：「ＳＤＲＡＭ１１０から出力されるデータがＳＤＲＡＭ１１０から第６のＦＦ５０９へ到達する時間（ホールド時間＋配線遅延＋入力バッファ遅延）」から、「ＳＤＲＡＭクロックが、ＳＤＲＡＭ１１０からフィードバックされ、第６のＦＦ５０９へ到達するまでの時間」を引いた値が、「第６のＦＦ５０９のホールド時間」より大きいこと。
【０１６４】
条件１０から１３は、以下の式を満たすことによって得られる。なお、クロックスキュー調整結果から、第２のクロックバッファ１０４から第７のクロックバッファ５１０までの配線遅延Ｔ１３ｉｗが、Ｔ１３ｉｗ≒Ｔ２ｉｗであるとする。
【０１６５】
条件１０：（ＣＫＤ＋Ｔ９ｂｗ＋Ｔ９ｉｏｉｎ＋Ｔ９ｏｗ）＋Ｔ１０ｆ＋Ｔ９ｉｗ−ＭＣＫＤ＞Ｔ９ＦＨＯＬＤ
式中、Ｔ９ｂｗは、ＳＤＲＡＭ１１０からＳＤＣＬＫＩバッファ５０８迄の配線遅延を表し、Ｔ９ｉｏｉｎは、ＳＤＣＬＫＩ入力バッファ５０８のバッファ遅延を表し、Ｔ９ｏｗは、ＳＤＣＬＫＩ入力バッファ４０８から第６のＦＦ５０９迄の配線遅延を表し、Ｔ９ｉｗは、第６のＦＦ５０９から第７のＦＦ５１０迄の配線遅延を表し、Ｔ９ＦＨＯＬＤは、第７のＦＦ５１０のデータ入力に必要なホールド時間を表す。
【０１６６】
条件１１：（ＭＣＫＤ＋ＳＤＣＬＫＣＹＣＬＥ）−（ＣＫＤ＋Ｔ９ｂｗ＋Ｔ９ｉｏｉｎ＋Ｔ９ｏｗ＋Ｔ１０ｆ＋Ｔ９ｉｗ）＞Ｔ９ＦＳＥＴＵＰ
式中、Ｔ９ＦＳＥＴＵＰは、第７のＦＦ５１０のデータ入力に必要なセットアップ時間を表す。
【０１６７】
条件１２：ＣＫＤ＋Ｔ９ｂｗ＋Ｔ９ｉｏｉｎ＋Ｔ９ｏｗ＋Ｔ１０ｆ
＋Ｔ９ｉｗ＞ＭＣＫＤ
条件１３：ＳＤＱＨＯＬＤ＋Ｔ２ｂｗ＋Ｔ３ｉｏｉｎ＋Ｔ１０ｏｗ
−（Ｔ９ｂｗ＋Ｔ９ｉｏｉｎ＋Ｔ９ｏｗ）＞Ｔ１０ＦＨＯＬＤ
【０１６８】
上記に示した、条件８から１１を満たすための式をまとめると、以下の３つの式が得られる。
Ｔ１ｉｏｏｕｔ＋Ｔ１ｂｗ＋Ｔ９ｂｗ＋Ｔ９ｉｏｉｎ
＋Ｔ９ｏｗ＋Ｔ１０ｆ＋Ｔ９ｉｗ−Ｔ９ＦＨＯＬＤ
＞Ｄ＞
Ｔ１ｉｏｏｕｔ＋Ｔ１ｂｗ＋Ｔ９ｂｗ＋Ｔ９ｉｏｉｎ＋Ｔ９ｏｗ
＋Ｔ１０ｆ＋Ｔ９ｉｗ−ＳＤＣＬＫＣＹＣＬＥ＋Ｔ９ＦＳＥＴＵＰ
Ｔ１ｉｏｏｕｔ＋Ｔ１ｂｗ＋Ｔ９ｂｗ＋Ｔ９ｉｏｉｎ＋Ｔ９ｏｗ
＋Ｔ１０ｆ＋Ｔ９ｉｗ＞Ｄ
ＳＤＱＨＯＬＤ＋Ｔ２ｂｗ＋Ｔ３ｉｏｉｎ＋Ｔ１０ｏｗ
−（Ｔ９ｂｗ＋Ｔ９ｉｏｉｎ＋Ｔ９ｏｗ）＞Ｔ１０ＦＨＯＬＤ
【０１６９】
例えば、実施の形態１と同様、表１及び表２に示したＭＡＸ条件、ＭＩＮＩＭＵＭ条件を満たす場合、Ｄの値は、
１．６５２＜Ｄ＜３．６４
１．６１２＜Ｄ＜２．９４
【０１７０】
となり、この場合、以上のＤの範囲より、中心値を取って、Ｄ≒２．３ｎｓｅｃを設定すればよい。
集積回路１０２０のレイアウトを作製後、位相差Ｄが算出された値になるよう、クロックツリーを構成すれば、フィードバッククロックを用いた場合でもＳＤＲＡＭ１１０への確実なアクセスを可能とするインタフェース回路５００を備える集積回路１０２０を得ることができる。
【０１７１】
本実施形態では、図９に示す構成をもつ集積回路１０２０に関して説明してきたが、インターフェイス回路５００及び集積回路１０２０の構成は図９に限られず、フィードバッククロックとを用いて外部メモリとアクセスするデバイス全てに本実施形態を適用できる。
【０１７２】
以上説明してきたように、本実施形態によるクロック位相調整方法を用いれば、フィードバッククロックを用いて外部メモリとアクセスするデバイスのレイアウト設計時、例えばクロックスキュー調整時にクロックバッファの遅延値を変更することによって、クロックの位相を調整できる。従って、従来のように試行錯誤で位相を調節することなく、また、クロック位相調整のためのテストをすることなく、外部メモリと確実にデータアクセス出来る回路を生成できる。特に、ＳＤＲＡＭのように高速なアクセスを必要とする場合でも、本実施形態を用いれば、高速アクセス可能な集積回路の外部クロックと内部クロックとの位相調整を容易に且つより正確に実現することができる。
【０１７３】
また、本実施形態の集積回路の設計方法を用いれば、試行錯誤で位相調節することなく、また、クロック位相調整のためのテストをすることなく、集積回路を設計できる。さらに、回路規模及び回路作製の工程数が削減されることから、消費電力も低減され、かつ、設計が容易なことから、開発期間の短縮にもつながり、また自動化することが可能となることにより、単純な設計ミスの防止にもなる。
【０１７４】
また、本実施形態の集積回路を用いれば、従来のような複雑な回路を持たなくても適切なクロックを供給できる集積回路を提供できる。特に、ＳＤＲＡＭのような高速なアクセスを必要とするインターフェイス回路を備えた集積回路を供給できる。
【０１７５】
実施の形態４．
非常に高速なクロックを用いて集積回路が外部メモリにアクセスする場合、実施の形態１で示した構成では、位相差Ｄの選択が不可能な場合も生じる。
【０１７６】
例えば、表１、表２のパラメータのうち、クロックサイクルを１２．３ｎｓｅｃ（８１ＭＨｚ）として、条件１の式（６）によりＳＤＣＬＫＯとＩＣＬＫの位相差Ｄの範囲を算出し、条件２の式（１１）によりＳＤＣＬＫＯとＩＣＬＫとの位相差Ｄの範囲を算出する。条件１は、
【０１７７】
１−（１．３６＋１．５８＋７．７９＋０．２３３−０．１０５）
＜Ｄ＜
１２．３−３−（１．３６＋１．５８＋７．７９＋０．２３３−７．３３−０．１０５）
【０１７８】
つまり、−５．２８＜Ｄ＜５．７７２となり、条件２は、
（７．３３＋０．１０５＋０．２３３＋１．４＋２．２７）＋９−１２．３＋０．８９
＜Ｄ＜
（７．３３＋０．１０５＋０．２３３＋１．４＋２．２７）＋３−０
つまり、８．９２８＜Ｄ＜１４．３３８となる。
【０１７９】
しかし、上記の計算結果が示すＤの範囲を同時に満たす値はなく、適切なＤの値を選択することができない。
このような場合、外部メモリからデータを取り込むためのクロックを２系統にして、２つの位相差Ｄ０及びＤ１の値を調節することによって、所望の回路を実現することができる。
【０１８０】
図１１は、実施の形態４によるクロック位相調整方法を適用して作製した、外部メモリすなわちＳＤＲＡＭ１１０へデータアクセスするインターフェイス回路６００を備えた集積回路１０３０の構成の一部を示すブロック図である。図１１では、説明を容易にするため、集積回路１０３０の構成のうち、ＳＤＲＡＭ１１０とのアクセスに関わる構成を概略的に示した。なお、図１と同様の構成については、同じ参照番号を付与し、ここではその詳細な説明を省略する。
【０１８１】
集積回路１０３０は、クロックジェネレータ１０１と、第１のクロックバッファ１０２と、第２のクロックバッファ１０４と、第３のクロックバッファ６０１と、インターフェイス回路６００とを備え、インターフェイス回路６００は、ＳＤＣＬＫＯ出力バッファ１０３と、出力用フリップフロップである第１のフリップフロップ（第１のＦＦ）１０５と、入出力バッファ１０６と、入力用フリップフロップである第８のフリップフロップ（第８のＦＦ）６０２と、第９のフリップフロップ（第９のＦＦ）５１０と、を備える。図中、Ｔで始るパラメータが添えてある矢印は、後述する集積回路１０３０内の信号の伝達及び集積回路１０３０とＳＤＲＡＭ１１０との信号の伝達に関わる遅延パラメータを示す。
【０１８２】
第８のＦＦ６０２は、ＳＤＲＡＭコマンドによりＳＤＲＡＭ１１０内のデータから読み出されたリードデータを、入出力バッファ１０６を介して、第３のクロックバッファ６０１から出力されるクロックＩＣＬＫ１に同期して取り込む。
【０１８３】
第９のＦＦ６０３は、第８のＦＦ６０２で取り込んだデータを、第２のクロックバッファ１０４から出力されるクロックＩＣＬＫ０でラッチする。
第２のクロックバッファ１０４は、基準クロックを駆動し、集積回路１０３０内部を動作させる内部クロックＩＣＬＫ０を生成し、ＩＣＬＫ０を集積回路１０３０内の任意の構成に供給する。図９には、説明を容易にするために、ＩＣＬＫ０を第１のＦＦ１０５及び第９のＦＦ６０３に出力した場合について示す。
【０１８４】
第３のクロックバッファ６０１は、基準クロックを駆動し、クロックＩＣＬＫ１を生成する。
図１２は、データ読み出し時のクロックとデータの位相関係を示したタイミングチャートである。図１１と図１２を用いて、クロックとデータの位相関係について説明する。ＳＤＣＬＫＯ信号及びＳＤＲＱＡＭコマンドがＳＤＲＡＭ１１０に到達するまでのチャートは、図２と同様なので、ここではその説明を省略する。
【０１８５】
Ｄ０は、ＳＤＲＡＭクロックＳＤＣＬＫＯ（ＬＳＩ）と内部クロックＩＣＬＫ０との位相差、すなわち、ＩＣＬＫ０がクロックジェネレータ１０１から第１のＦＦ１０５に到達する時間から、ＳＤＣＬＫＯがクロックジェネレータ１０１からＳＤＣＬＫＯ出力バッファ１０３へ到達する時間を引いた値である。
【０１８６】
Ｄ１は、ＳＤＣＬＫＯと内部クロックＩＣＬＫ１との位相差つまり、ＩＣＬＫ１がクロックジェネレータ１０１から第８のＦＦ６０２に到達する時間から、ＳＤＣＬＫＯがクロックジェネレータ１０１からＳＤＣＬＫＯ出力バッファ１０３へ到達する時間を引いた値である。
【０１８７】
ＩＣＬＫ０のタイミングで第１のＦＦ１０５がＳＤＲＡＭコマンドを出力し、Ｔ２ｏｗ＋２Ｔｉｏｏｕｔ＋Ｔ２ｂｗで表される時間後にＳＤＲＡＭ１１０に到達する。
ＳＤＲＡＭ１１０からデータを読み出すときは、ＳＤＣＬＫＯがＳＤＲＡＭ１１０に到達してからＳＤＱＤＥＬＡＹで表される時間後に、データの読み出しが開始される。
【０１８８】
読み出されるデータ（リードデータ）は、ＳＤＲＡＭ１１０から読み出されてから、Ｔ２ｂｗ＋Ｔ３ｉｏｉｎ＋Ｔ１１ｏｗで表される時間後に第８のＦＦ６０２に到達する。Ｔ１１ｏｗは、入出力バッファ１０６から第８のＦＦ６０２迄の配線遅延を表す。
【０１８９】
さらに、第８のＦＦ６０２に入力されたデータは、ＩＣＬＫ１が立ち上がってから、Ｔ１１ｆ＋Ｔ１１ｉｗで表される時間後に第９のＦＦ６０３に到達する。Ｔ１１ｆは、第８のＦＦ６０２のセル遅延を表し、Ｔ１１ｉｗは、第８のＦＦ６０２から第９のＦＦ６０３までの配線遅延を表す。
【０１９０】
次に、クロックの位相差Ｄの計算方法について述べる。Ｄ０及びＤ１は以下の条件を満たす。
条件１４：Ｄ０は実施の形態１の式（６）を満たす。
条件１５：Ｄ１は実施の形態１の式（１１）を満たす。
【０１９１】
条件１６：ＩＣＬＫ１より出力されたデータが（Ｔ１１ｆ＋Ｔ１１ｉｗ）で表される遅延値分送れて、第９のＦＦ６０３に到達しても、ＩＣＬＫ０でデータを取り込むことができる、つまり、ＩＣＬＫ１とＩＣＬＫ０との位相差（ＳＤＣＬＫＣＹＣＬＥ−（Ｄ１−Ｄ０））から、データの遅延値（Ｔ１１ｆ＋Ｔ１１ｉｗ）を引いた値が第９のＦＦのセットアップ時間より大きい。
【０１９２】
条件１６を式で表すと、
ＳＤＣＬＫＣＹＣＬＥ−（Ｄ１−Ｄ０）−（Ｔ１１ｆ＋Ｔ１１ｉｗ）＞Ｔ１１ＦＳＥＴＵＰとなり、式中、Ｔ１１ＦＳＥＴＵＰは第９のＦＦ６０３のセットアップタイムを表す。
【０１９３】
条件１４〜１６を満たすＤの算出について、例を挙げて説明する。各パラメータは、実施の形態１の表１及び表２の値を用い、クロックサイクルを１２．３ｎｓｅｃ（８１ＭＨｚ）に変更する。また、Ｔ１１ｆ、Ｔ１１ｉｗ、及びＴ１１ＦＳＥＴＵＰのパラメータは表３に示す。
【０１９４】
【表３】
0003542967.tif 000004
【０１９５】
また、クロックジェネレータ１０１から第３のクロックバッファ６０１までの配線遅延Ｔ１２ｇ、第３のクロックバッファ６０１のセル遅延Ｔ１２ｂ、第３のクロックバッファ６０１から第８のＦＦ６０２までの配線遅延Ｔ１２ｉｗは、Ｔ２ｇ、Ｔ２ｂ、Ｔ２ｉｗとそれぞれ等しいものとし、第２のクロックバッファ１０４から第９のＦＦ６０３への配線遅延Ｔ１４ｉｗは、Ｔ２ｉｗと等しいものとし、Ｔ１１ｏｗは、Ｔ３ｏｗと等しいものとし、第８のＦＦ６０２のセットアップ時間及びホールド時間は、Ｔ３ＦＳＥＴＵＰ、Ｔ３ＦＨＯＬＤとそれぞれ等しいものとする。
【０１９６】
上記パラメータを用いて条件１４〜１６を満たすＤを実施の形態１と同様に、計算してみると、以下のようになる。
ＭＡＸＩＭＵＭ条件時は、位相差Ｄ０、Ｄ１のＴＹＰＩＣＡＬ時の約２倍として計算すると、
【０１９７】
条件１４より
１−（１．３６＋１．５８＋７．７９＋０．２３３−０．１０５）
＜２Ｄ０＜
１２．３−３−（１．３６＋１．５８＋７．７９＋０．２３３−７．３３−０．１０５）
−２．１４＜Ｄ０＜２．８８６
【０１９８】
条件１５より、
（７．３３＋０．１０５＋０．２３３＋１．４＋２．２７）＋９−１２．３＋０．８９
＜２Ｄ１＜
（７．３３＋０．１０５＋０．２３３＋１．４＋２．２７）＋３−０
４．４６４＜Ｄ１＜７．１６９
【０１９９】
ＭＩＮＩＭＵＭ条件時は、位相差ＤがＴＹＰＩＣＡＬ時の約２分の１の値として計算すると、
条件１４より、
１−（０．１７＋０＋１．２４＋０．０９９−１．２３−０．１０５）
＜Ｄ０／２＜
１２．３−３−（０．１７＋０＋１．２４＋０．０９９−１．２３−０．１０５）
１．７２４＜Ｄ＜１８．２５２
【０２００】
条件１５より、
（１．２３＋０．１０５＋０．０９９＋０．１７＋０）＋９−１２．３＋０．４１
＜Ｄ１／２＜
（１．２３＋０．１０５＋０．０９９＋０．１７＋０）＋３−０
−２．５７２＜Ｄ１＜９．２０８
【０２０１】
以上より、
１．７２４＜Ｄ０＜２．８８６
４．４６４＜Ｄ１＜７．１６９
【０２０２】
また、条件１６より、ＭＡＸＩＭＵＭ条件時は、
２（Ｄ１−Ｄ０）＜９．２４
Ｄ１−Ｄ０＜４．６２
となり、ＭＩＮＩＭＵＭ条件時は、
（Ｄ１−Ｄ０）／２＜１１．５３
Ｄ１−Ｄ０＜２３．０６
【０２０３】
となり、条件１６におけるＭＡＸＩＭＵＭ及びＭＩＮＩＭＵＭ条件を満たす範囲は、
Ｄ１−Ｄ０＜４．６２
となる。
【０２０４】
条件１４、１５、及び１６を満たすＤ０及びＤ１は、例えば、
Ｄ０≒２．３ｎｓｅｃ
Ｄ１≒５．８ｎｓｅｃ
と選択することができる。
【０２０５】
集積回路１０３０のレイアウトを作製後、位相差Ｄが算出された値になるよう、クロックツリーを構成すれば、ＳＤＲＡＭ１１０にアクセス可能なインタフェース回路６００を備える集積回路１０３０を得ることができる。
【０２０６】
本実施形態では、図１１に示す構成をもつ集積回路１０３０に関して説明してきたが、インターフェイス回路６００及び集積回路１０３０の構成は図１１に限られず、クロックを用いて外部メモリとアクセスするデバイス全てに本実施形態を適用できる。
【０２０７】
以上説明してきたように、本実施形態によるクロック位相調整方法を用いれば、より高速なクロックを用いて外部メモリとアクセスするデバイスの設計を容易に且つ確実に行える。特に、ＳＤＲＡＭのように高速なアクセスを必要とする場合に有効である。
【０２０８】
なお、ここでは、第９のＦＦの前に設けるＦＦは第８のＦＦ１段のみであったが、複数段あっても同様である。
また、これと同様クロックバッファもＩＣＬＫ１の第３のクロックバッファ６０１のみであったが、複数段使用しても同様な方法で可能であることはいうまでもない。
【０２０９】
また、従来のような複数信号経路に複数の遅延素子を挿入するような複雑な回路を持たなくても、適切なデータ転送を行え、またクロックを供給できる集積回路を提供できる。特に、ＳＤＲＡＭのような高速なアクセスを必要とするデバイスの設計を容易にする。また、外部メモリへ出力する外部クロックと、外部メモリからのフィードバッククロックとの位相差を検出する検出器を設けることにより、インターフェイス回路自ら実遅延を検出し、内部クロックと、外部クロックとの位相差を調整できる。従って、実装されるシステムの配線遅延や、外部負荷容量などの外部要因が多様であっても、最適なクロック位相を調整できる。
【０２１０】
なお、実施の形態１から４の方法を、ＣＡＤシステムに組み込むことにより、設計を自動化することが出来る。
また、実施の形態１から４では、Ｔ１ｂｗ、Ｔ２ｂｗ、Ｔ３ｂｗは、ボードレイアウトより算出される遅延情報であるとしたが、ボードレイアウトに対して要求される遅延値であっても良い。
【０２１１】
また、実施の形態１から４では、集積回路からＳＤＲＡＭへ出力するデータに着目して計算したが、ＲＡＳ、ＣＡＳ等の制御信号の遅延値も考慮されている。  また、外部メモリとアクセスするインターフェイス回路、集積回路及びデバイス中のフリップフロップは、外部メモリとアクセスするデータの種類によって適宜設けられるものである。従って、出力用のフリップフロップと入力用のフリップフロップの数は、実施の形態１から４の例に限定されるものではなく、インターフェイス回路、集積回路、デバイス、システムに従って変更される。
【０２１２】
また、本実施の形態では集積回路にＳＤＲＡＭが一つ接続された場合について説明してきたが、集積回路に接続される外部メモリの数は複数であってもよい。この場合、それぞれの外部メモリのパラメータ、例えば、セットアップ時間、ホールド時間、データ出力遅延を抽出し、本実施の形態に適用すれば良い。
【０２１３】
産業上の利用可能性
本発明は、外部メモリとデータアクセスする集積回路に適用できる。
【図面の簡単な説明】
【図１】実施の形態１によるクロック位相調整方法を適用して作製した集積回路１０００の回路構成を示すブロック図である。
【図２】クロックとデータの位相関係を示したタイミングチャートである。
【図３】集積回路１０００におけるクロック位相調整方法を示したフローチャートである。
【図４】実施の形態２による集積回路１０１０の回路構成を示すブロック図である。
【図５】式（２０−１）及び式（２０−２）を表したグラフである。
【図６】位相差検出器４１１が備えるテーブルの一例を示す。
【図７】第３のクロックバッファ４０３の構成を示すブロック図である。
【図８】集積回路１０１０におけるクロック位相調整方法を示したフローチャートである。
【図９】実施の形態３による集積回路１０２０の回路構成を示すブロック図である。
【図１０】クロックとデータの位相関係を示したタイミングチャートである。
【図１１】実施の形態４による集積回路１０３０の回路構成を示すブロック図である。
【図１２】クロックとデータの位相関係を示したタイミングチャートである。
【図１３】特開平９−１８５４２７号公報によるインターフェイス回路を示す回路図である。
【図１】
0003542967.tif 000005
【図２】
0003542967.tif 000006
【図３】
0003542967.tif 000007
【図４】
0003542967.tif 000008
【図５】
0003542967.tif 000009
【図６】
0003542967.tif 000010
【図７】
0003542967.tif 000011
【図８】
0003542967.tif 000012
【図９】
0003542967.tif 000013
【図１０】
0003542967.tif 000014
【図１１】
0003542967.tif 000015
【図１２】
0003542967.tif 000016
【図１３】
0003542967.tif 000017