JP3542967B2 - クロック位相調整方法、及び集積回路とその設計方法 - Google Patents
クロック位相調整方法、及び集積回路とその設計方法 Download PDFInfo
- Publication number
- JP3542967B2 JP3542967B2 JP2000588689A JP2000588689A JP3542967B2 JP 3542967 B2 JP3542967 B2 JP 3542967B2 JP 2000588689 A JP2000588689 A JP 2000588689A JP 2000588689 A JP2000588689 A JP 2000588689A JP 3542967 B2 JP3542967 B2 JP 3542967B2
- Authority
- JP
- Japan
- Prior art keywords
- clock
- flop
- time
- external
- external memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 80
- 230000015654 memory Effects 0.000 claims description 224
- 239000000872 buffer Substances 0.000 claims description 184
- 238000013461 design Methods 0.000 claims description 27
- 230000008054 signal transmission Effects 0.000 claims description 22
- 230000004044 response Effects 0.000 claims description 12
- 238000001514 detection method Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 claims description 6
- 230000014509 gene expression Effects 0.000 description 35
- 238000010586 diagram Methods 0.000 description 12
- 238000004519 manufacturing process Methods 0.000 description 10
- 238000012360 testing method Methods 0.000 description 9
- 238000012546 transfer Methods 0.000 description 8
- 208000036075 Autosomal dominant tubulointerstitial kidney disease Diseases 0.000 description 7
- 230000008859 change Effects 0.000 description 5
- 101001133056 Homo sapiens Mucin-1 Proteins 0.000 description 4
- 102100034256 Mucin-1 Human genes 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 238000004904 shortening Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 1
- 229910003460 diamond Inorganic materials 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/22—Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management
- G11C7/222—Clock generating, synchronizing or distributing circuits within memory device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/10—Distribution of clock signals, e.g. skew
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1072—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/22—Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Dram (AREA)
- Pulse Circuits (AREA)
- Record Information Processing For Printing (AREA)
Description
【0001】
技術分野
本発明は、クロック位相調整方法、及び、集積回路とその設計方法に関するものである。
【0002】
背景技術
シンクロナスDRAM(Syncronus Dynamic Random Access Memory、以下SDRAM)にデータを書き込んだり、SDRAMからデータを読み出す(以下、データアクセスと呼ぶ)際、動作クロックが高速であるため、適切なタイミングを取ることが困難である。従って、従来は、まず、SDRAMとデータアクセスするLSIを作製し、試行錯誤することによってクロックの位相を調節していた。
【0003】
また、特開平9−185427号公報では、SDRAMに対するアクセスのタイミングを取るクロック位相調整回路及びクロック位相調整方法が開示されている。
【0004】
図13は、特開平9−185427号公報に開示されたクロック位相調整回路を適用したメモリインターフェイス装置を示す回路図である。メモリインターフェイス装置700は、クロック周波数変換器710、2つの入力バッファ711、720、クロック位相調整回路712、3つの出力バッファ715、717、719、及び3つのフリップフロップFF716、718、721、を備える。インターフェイス装置700は、外部クロック信号、SDRAMコマンド、及びデータをSDRAM702に出力する。
【0005】
クロック位相調整回路712は、SDRAM702に対して適正なデータアクセスを実行するためのクロック信号の位相を調整する回路であって、動作の基準となるクロック信号の位相を180度反転すると共にSDRAM702に出力する。クロック位相調整回路712は、インバータ713と、位相変換器714及びセレクタ744によって構成されている。
【0006】
位相変換器714には、複数の遅延値を持ったクロックが用意されており、SDRAM702と接続後、動作可能なクロックを適当な手段でテストし、テストの結果適切であると判断されたクロックを選択するしくみになっている。
【0007】
従来のクロック位相調整は、まず実際のLSIを作製してから試行錯誤して調整してきた。つまり、LSIを一旦作製してから設計者が試行錯誤を積み重ねて、クロック位相を調整するので、LSIの作製に関わる工程が煩雑になるという問題点がある。
【0008】
また、特開平9−185427号公報のようなインターフェイス装置700では、クロック位相調整に関わる遅延素子がいくつも必要となり、回路規模が増大し、消費電力も増えてしまうという問題点がある。
【0009】
また、インターフェイス装置700に入力されたデータは、様々な回路やバッファを通って出力されるため、インターフェイス装置700を実際のLSIにした場合に、クロックの遅延値が予測とかなり違ってしまう可能性があり、遅延素子の遅延値の決定が困難になるという問題点がある。この場合、より多くの遅延クロックを用意しておけば、遅延値の決定は容易になるが、回路規模がさらに増大し、消費電力が増えるという問題が新たに発生する。
【0010】
また、インターフェイス装置700とSDRAM702とを実際に接続しないと遅延値がわからないので、インターフェイス装置700とSDRAM702とを接続した後、データ転送のテストを行い、最適な遅延値のクロックを選択する必要があり、回路の作製に関わる工程数が増えるという問題点がある。
【0011】
また、インターフェイス装置700では、外部要因(配線遅延、外部負荷等)を考慮していないために精度が悪くなるという問題点がある。また、外部要因を考慮するためには、基板毎にデータ転送のテストを行い、クロックを選択する必要があるので、回路の作製に関わる工程数が増えるという問題点がある。
【0012】
本発明は、外部メモリとアクセスするデバイスの作製に関わる工程数を少なくし、試行錯誤して位相調整をすることなく、また、クロック位相調整のためのテストをすることなく、設計段階の時点でクロック位相調整を実現するクロック位相調整方法を提供するものである。本クロック位相調整方法は、完全同期設計でも、必要最小限の回路で、より確実なクロックを供給し、フィードバッククロック方式を採用した場合にも、自動的にクロック位相調整を行う。
【0013】
さらに、従来の回路のような複雑な構成をとらずに、高速な動作クロックに基づくデータアクセスを実現する集積回路とその設計方法とを提供するものである。
【0014】
発明の開示
上記目的を達成するために、本発明による集積回路は、以下の構成を有する。すなわち、クロックに同期して外部メモリとデータアクセスする集積回路であって、上記クロックを生成するクロックジェネレータと、上記クロックを外部クロックとして駆動する少なくとも1つの第1のクロックバッファと、上記クロックを内部クロックとして駆動する少なくとも1つの第2のクロックバッファと、上記外部クロックを上記外部メモリに出力するクロック出力バッファと、上記外部メモリへ出力するためのデータを上記内部クロックに同期して出力するデータ出力用フリップフロップと、上記外部メモリから出力されるデータを上記内部クロックに同期して取り込む入力用フリップフロップと、を備え、上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達するまでの時間と、到達した該内部クロックによって該データ出力用フリップフロップから出力されたデータが上記外部メモリへ到達するまでの時間との和から、上記外部クロックが上記クロックジェネレータから上記外部メモリへ到達するまでの時間を引くことによって得られる第1の値が、上記外部メモリのデータホールド時間より大きいという第1の条件と、上記外部クロックの1サイクルの時間から、上記第1の値を引いた値が、上記外部メモリのデータセットアップ時間より大きいという第2の条件と、上記外部クロックが上記クロックジェネレータから上記外部メモリへ到達するまでの時間と、到達した該クロックを受けて該外部メモリから出力されるデータのホールド時間と、該データが上記入力用フリップフロップに到達するまでの時間との和から、上記内部クロックが該クロックジェネレータから該入力用フリップフロップに到達するまでの時間を引いた値が、該入力用フリップフロップのデータホールド時間より大きいという第3の条件と、上記内部クロックの1サイクルの時間と、上記内部クロックが上記クロックジェネレータから上記入力用フリップフロップに到達するまでの時間との和から、該外部クロックが該クロックジェネレータから該外部メモリへ到達する時間と、到達した該外部クロックを受けて該外部メモリから出力されるデータの出力遅延時間と、該データが該入力用フリップフロップに到達するまでの時間との和を引いた値が、該入力用フリップフロップのデータセットアップ時間より大きいという第4の条件と、を満たすように、上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記クロック出力バッファへ到達する時間を引いた位相差Dの値が設定されている。
【0015】
従って、従来のような複数信号経路に複数の遅延素子を挿入するような複雑な回路を持たなくても、適切なデータ転送を行え、またクロックを供給できる集積回路を提供できる。特に、SDRAMのような高速なアクセスを必要とする集積回路の設計を容易にする。
【0016】
また、本発明による別の集積回路は、クロックに同期して外部メモリとデータアクセスする集積回路であって、データから上記クロックを生成するクロックジェネレータと、上記クロックを外部クロックとして駆動する少なくとも1つの第1のクロックバッファと、上記クロックを内部クロックとして駆動する少なくとも1つの第2のクロックバッファと、上記外部クロックを上記外部メモリに出力するクロック出力バッファと、上記外部メモリへ出力するためのデータを上記内部クロックに同期して出力するデータ出力用フリップフロップと、上記外部メモリから出力されるデータを、上記外部メモリに入力した外部クロックのフィードバッククロックによってラッチする第1の入力用フリップフロップと、上記第1の入力用フリップフロップにラッチされたデータを、上記内部クロックによってラッチする第2の入力用フリップフロップと、を備え、上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達するまでの時間と、到達した該内部クロックによって該データ出力用フリップフロップから出力されたデータが上記外部メモリへ到達するまでの時間との和から、上記外部クロックが上記クロックジェネレータから上記外部メモリへ到達するまでの時間を引くことによって得られる第1の値が、上記外部メモリのデータホールド時間より大きく、上記外部クロックの1サイクルの時間から、上記第1の値を引いた値が、上記外部メモリのデータセットアップ時間より大きく、上記外部クロックが、上記クロックジェネレータから上記外部メモリに到達し、フィードバッククロックとして該外部メモリから折り返して上記第1の入力用フリップフロップに到達するまでの時間と、該第1の入力用フリップフロップのセル遅延と、該第1の入力用フリップフロップから上記第2の入力用フリップフロップまでの配線遅延と、を足した値Vから、上記内部クロックが該クロックジェネレータから該第2の入力用フリップフロップに到達するまでの時間を引いた値が、該第2の入力用フリップフロップのホールド時間より大きく、上記内部クロックが上記クロックジェネレータから上記第2の入力用フリップフロップに到達するまでの時間と上記外部クロックの1サイクルの時間との和から、上記値Vを引いた値が、該第2の入力用フリップフロップのセットアップ時間より大きく、上記値Vが、上記内部クロックの上記クロックジェネレータから上記第2の入力用フリップフロップまで到達する時間より大きく、上記外部メモリから出力されるデータの該外部メモリから上記第1の入力用フリップフロップへ到達する時間から、上記外部クロックの該外部メモリからフィードバックされ該第1の入力用フリップフロップへ到達するまでの時間を引いた値が、該第1の入力用フリップフロップのホールド時間より大きい、条件を満たすように、上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記クロック出力バッファへ到達する時間を引いた位相差Dの値が設定されている。
【0017】
従って、外部クロックのフィードバッククロックとを用いて外部メモリとアクセスする集積回路を容易に提供できる。
また、集積回路は、さらに、上記外部クロックが上記集積回路から出力される時点と、該外部クロックが上記外部メモリからフィードバックされて該集積回路に到達する時点との第2の位相差と、該第2の位相差に対して上記条件を満たす第1の位相差とが予め複数組設定され、上記集積回路が任意のシステムに実装された後、実際に第2の位相差を検出し、該検出した結果から該当する第1の位相差を選択する位相差検出回路を備え、上記第1及び又は第2のクロックバッファは、上記予め設定された複数の第1の位相差のそれぞれに対応する遅延素子群を備え、上記位相差検出回路が選択した第1の位相差に基づいて、該遅延素子群は切り替えられるようにすることができる。
【0018】
従って、外部メモリへ出力する外部クロックと、外部メモリからのフィードバッククロックとの位相差を検出する検出器を設けることにより、インターフェイス回路自ら実遅延を検出し、内部クロックと、外部クロックとの位相差を調整できる。さらに、実装されるシステムの配線遅延や、外部負荷容量などの外部要因が多様であっても、最適なクロック位相を調整できる。
【0019】
また、集積回路は、上記入力用フリップフロップとして、上記外部メモリから出力されるデータをラッチする第1の入力用フリップフロップと、上記第1の入力用フリップフロップにラッチされたデータをラッチする第2の入力用フリップフロップと、上記第2のクロックバッファとして、上記データ出力用フリップフロップ及び上記第2の入力用フリップフロップに第1の内部クロックを供給するクロックバッファと、上記第1の入力用フリップフロップに第2の内部クロックを供給するクロックバッファと、を備え、上記条件1及び2を満たすように、上記第1の内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記外部クロック出力用バッファへ到達する時間を引いた位相差D0の値が設定され、上記条件3及び4を満たす、上記第2の内部クロックが上記クロックジェネレータから上記第1の入力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記外部クロック出力用バッファへ到達する時間を引いた位相差D1が、上記位相差D0と該位相差D1との位相差から、上記第1の入力用フリップフロップに入力されたデータが上記第2の入力用フリップフロップに到達するまでの遅延を引いた値が該第2の入力用フリップフロップのセットアップ時間より大きくなるよう、設定されてもよい。
【0020】
従って、従来のように複数箇所へ、複数の遅延バッファを挿入するような複雑な回路を持たなくても、より高速なクロックでデータを受け渡しするシステムを構成できる集積回路を提供できる。特に、SDRAMのような高速なアクセスを必要とするインターフェイス回路を備えた集積回路を容易に設計できる。
【0021】
本発明によるクロック位相調整方法は、任意のデバイスがクロックに同期して、外部メモリとデータアクセスする際のクロック位相調整方法であって、上記デバイスの設計時に該デバイスのレイアウトから、該デバイス内の信号の伝達及び該デバイスと上記外部メモリとの信号の伝達に関わる時間のパラメータを抽出する工程と、上記パラメータを基に、上記外部メモリに供給される外部クロックの出力時点と、上記デバイスを動作させる内部クロックがデータ入出力の基準点に到達する時点との第1の位相差を算出する工程と、上記パラメータを基に、上記外部メモリが上記デバイスから出力されるデータを取り込むことができ、且つ、上記デバイスが上記外部メモリから出力されるデータを取り込むことができる条件を満たす上記第1の位相差の範囲を算出する工程と、上記算出された第1の位相差が、上記算出された第1の位相差の範囲を満たすか否かを判断する工程と、上記判断工程によって、上記算出された第1の位相差が、上記算出された第1の位相差の範囲を満たす場合は終了し、満たさないと判断された場合は、上記算出された範囲から任意の第1の位相差を選択する工程と、上記選択された第1の位相差を基に、上記デバイスの設計時に、上記デバイス内の外部クロック信号又は内部クロック信号の遅延値を変更し終了する工程と、を含む。
【0022】
従って、クロックを用いて外部メモリとアクセスするデバイスのレイアウト設計時、例えばクロックスキュー調整時にクロック信号の遅延値を変更することによって、クロックの位相を調整できる。従って、従来のように試行錯誤で位相を調節することなく、また、クロック位相調整のためのテストをすることなく、外部メモリと確実にデータアクセス出来る回路を生成できる。特に、SDRAMのように高速なアクセスを必要とする場合でも、本実施形態を用いれば、高速アクセス可能なデバイスの外部クロックと内部クロックとの位相調整を容易に且つより正確に実現することができる。さらに、回路規模及び回路作製の工程数が削減されることから、消費電力も低減され、かつ、設計が容易なことから、開発期間の短縮にもつながり、また自動化することが可能となることにより、単純な設計ミスの防止にもなる。
【0023】
また、上記第1の位相差は、上記内部クロックが上記デバイス内のクロックジェネレータから該デバイス内のデータ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから該デバイス内の外部クロック出力用バッファへ到達する時間を引いた値であり、上記第1の位相差の範囲を算出する工程は、上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間と、該内部クロックによって該データ出力用フリップフロップから出力されたデータが該外部メモリへ到達するまでの時間との和から、上記外部クロックが該クロックジェネレータから該外部メモリへ到達するまでの時間を引いた第1の値が、該外部メモリのデータを取り込むために必要なデータホールド時間より大きい第1の条件と、上記外部クロックの1サイクルの時間から、上記第1の値を引いた値が、上記外部メモリのデータを取り込むために必要なデータセットアップ時間より大きい第2の条件と、上記外部クロックが上記クロックジェネレータから上記外部メモリへ到達するまでの時間と、該外部クロックを受けて該外部メモリから出力されるデータのホールド時間と、該出力されたデータが上記デバイス内の入力用フリップフロップに到達するまでの時間との和から、上記内部クロックが該クロックジェネレータから該入力用フリップフロップに到達するまでの時間を引いた値が、該入力用フリップフロップのデータ入力ホールド時間より大きい第3の条件と、上記内部クロックの1サイクルの時間と、上記内部クロックが上記クロックジェネレータから上記入力用フリップフロップに到達するまでの時間との和から、該外部クロックが該クロックジェネレータから該外部メモリへ到達する時間と、該外部クロックを受けて該外部メモリから出力されるデータの出力遅延時間と、該データが上記入力用フリップフロップに到達するまでの時間との和を引いた値が、該入力用フリップフロップのデータ入力セットアップ時間より大きい第4の条件と、を満たす上記第1の位相差の範囲を算出するようにしてもよい。
【0024】
また、上記第1の位相差は、上記内部クロックが上記デバイス内のクロックジェネレータから該デバイス内のデータ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから該デバイス内の外部クロック出力用バッファへ到達する時間を引いた値であり、上記外部メモリから出力されるデータは、該外部メモリに入力した外部クロックが上記デバイスへフィードバックされたクロックによって、該デバイス内の第1の入力用フリップフロップにラッチされ、該ラッチされたデータは、上記内部クロックによって、該デバイス内の第2の入力用フリップフロップにラッチされ、上記第1の位相差の範囲を算出する工程は、上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間と、該内部クロックによって該データ出力用フリップフロップから出力されたデータが該外部メモリへ到達するまでの時間との和から、上記外部クロックが該クロックジェネレータから該外部メモリへ到達するまでの時間を引いた第1の値が、該外部メモリのデータを取り込むために必要なデータホールド時間より大きく、上記外部クロックの1サイクルの時間から、上記第1の値を引いた値が、上記外部メモリのデータを取り込むために必要なデータセットアップ時間より大きく、上記外部クロックが、上記クロックジェネレータから上記外部メモリに到達し、フィードバッククロックとして該外部メモリから折り返して上記第1の入力用フリップフロップに到達するまでの時間と、該第1の入力用フリップフロップのセル遅延と、該第1の入力用フリップフロップから上記第2の入力用フリップフロップまでの配線遅延と、を足した値Vから、上記内部クロックが該クロックジェネレータから該第2の入力用フリップフロップに到達するまでの時間を引いた値が、該第2の入力用フリップフロップのホールド時間より大きく、上記内部クロックが上記クロックジェネレータから上記第2の入力用フリップフロップに到達するまでの時間と上記外部クロックの1サイクルの時間との和から、上記値Vを引いた値が、該第2の入力用フリップフロップのセットアップ時間より大きく、上記値Vが、上記内部クロックの上記クロックジェネレータから上記第2の入力用フリップフロップまで到達する時間より大きく、上記外部メモリから出力されるデータの該外部メモリから上記第1の入力用フリップフロップへ到達する時間から、上記外部クロックの該外部メモリからフィードバックされ該第1の入力用フリップフロップへ到達するまでの時間を引いた値が、該第1の入力用フリップフロップのホールド時間より大きい、条件を満たす上記第1の位相差の範囲を算出するようにしてもよい。
【0025】
これによって、フィードバッククロックを用いて外部メモリとアクセスするデバイスの位相調整を、デバイス設計時に行うことができる。
また、本発明による別のクロック位相調整方法は、任意のデバイスがクロックに同期して、外部メモリとデータアクセスする際のクロック位相調整方法であって、上記デバイスの設計時に該デバイスのレイアウトから、該デバイス内の信号の伝達及び該デバイスと上記外部メモリとの信号の伝達に関わる時間のパラメータを抽出する工程と、上記内部クロックが上記デバイス内のクロックジェネレータから該デバイス内のデータ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから該デバイス内の外部クロック出力用バッファへ到達する時間を引いた第1の位相差の範囲を、上記パラメータを基に算出する工程と、上記外部クロックが上記デバイスから出力される時点と、該外部クロックが上記外部メモリからフィードバックされて該デバイスに到達する時点との第2の位相差を任意に複数設定する工程と、上記設定された複数の上記第2の位相差それぞれに対して、上記算出された範囲から第1の位相差を設定する工程と、上記デバイスが任意のシステムに実装された後、実際に第2の位相差を検出する工程と、上記検出した結果と上記設定された第2の位相差とを比較して、該当する第1の位相差を選択する工程と、上記選択された第1の位相差を基に、上記デバイス内の上記外部クロック信号又は上記内部クロック信号のクロックバッファの遅延値を切り替える工程と、を備え、上記外部メモリから出力されるデータは、該外部メモリに入力した外部クロックが上記デバイスへフィードバックされたクロックによって、該デバイス内の第1の入力用フリップフロップにラッチされ、該ラッチされたデータは、上記内部クロックによって、該デバイス内の第2の入力用フリップフロップにラッチされ、上記第1の位相差の範囲を算出する工程において、上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間と、該内部クロックによって該データ出力用フリップフロップから出力されたデータが該外部メモリへ到達するまでの時間との和から、上記外部クロックが該クロックジェネレータから該外部メモリへ到達するまでの時間を引いた第1の値が、該外部メモリのデータを取り込むために必要なデータホールド時間より大きく、上記外部クロックの1サイクルの時間から、上記第1の値を引いた値が、上記外部メモリのデータを取り込むために必要なデータセットアップ時間より大きく、上記外部クロックが、上記クロックジェネレータから上記外部メモリに到達し、フィードバッククロックとして該外部メモリから折り返して上記第1の入力用フリップフロップに到達するまでの時間と、該第1の入力用フリップフロップのセル遅延と、該第1の入力用フリップフロップから上記第2の入力用フリップフロップまでの配線遅延と、を足した値Vから、上記内部クロックが該クロックジェネレータから該第2の入力用フリップフロップに到達するまでの時間を引いた値が、該第2の入力用フリップフロップのホールド時間より大きく、上記内部クロックが上記クロックジェネレータから上記第2の入力用フリップフロップに到達するまでの時間と上記外部クロックの1サイクルの時間との和から、上記値Vを引いた値が、該第2の入力用フリップフロップのセットアップ時間より大きく、上記値Vが、上記内部クロックの上記クロックジェネレータから上記第2の入力用フリップフロップまで到達する時間より大きく、上記外部メモリから出力されるデータの該外部メモリから上記第1の入力用フリップフロップへ到達する時間から、上記外部クロックの該外部メモリからフィードバックされ該第1の入力用フリップフロップへ到達するまでの時間を引いた値が、該第1の入力用フリップフロップのホールド時間より大きい、条件を満たす上記第1の位相差の範囲が算出されるようにしてもよい。
【0026】
つまり、外部メモリへ出力する外部クロックと、外部メモリからのフィードバッククロックとの位相差を検出し、適応的に、内部クロックと外部クロックとの位相差を調整できるデバイスを設計できる。従って、実装されるシステムの配線遅延や、外部負荷容量などの外部要因が多様であっても、最適なクロック位相を設定することができる。
【0027】
また、上記デバイスは、上記入力用フリップフロップとして、上記外部メモリから出力されるデータをラッチする第1の入力用フリップフロップと、上記第1の入力用フリップフロップにラッチされたデータをラッチする第2の入力用フリップフロップと、を備え、上記クロックジェネレータは、上記データ出力用フリップフロップ及び上記第2の入力用フリップフロップに供給される第1の内部クロックと、上記第1の入力用フリップフロップに供給される第2の内部クロックと、を供給し、上記第1の位相差は、上記第1の内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記外部クロック出力用バッファへ到達する時間を引いた位相差D0と、上記第2の内部クロックが上記クロックジェネレータから上記第1の入力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記外部クロック出力用バッファへ到達する時間を引いた位相差D1と、を含み、上記第1の位相差の範囲を算出する工程は、上記条件1及び2を満たす上記位相差D0の範囲、及び、上記条件3及び4を満たす上記位相差D1の範囲を算出し、且つ、上記位相差D0及びD1との位相差から、上記第1の入力用フリップフロップに入力されたデータが上記第2の入力用フリップフロップに到達するまでの遅延を引いた値が、該第2の入力用フリップフロップのセットアップ時間よりも大きいという条件を満たす、該位相差D0及びD1の範囲を算出し、上記クロック信号の遅延値の変更工程は、上記選択された位相差D0及びD1の位相差に基づいて、上記デバイス内の外部クロック信号又は内部クロック信号の遅延値を変更する、工程を備えることができる。
【0028】
従って、より高速なクロックを用いて外部メモリとアクセスするデバイスの位相を調節することができる。特に、SDRAMのように高速なアクセスを必要とする場合に有効である。
【0029】
また、本発明による集積回路の設計方法は、クロックに同期して外部メモリとデータアクセスする集積回路を設計する方法であって、上記集積回路は、上記内部クロックと上記外部クロックを生成するクロックジェネレータと、上記外部メモリへ出力するデータをラッチするデータ出力用フリップフロップと、上記外部メモリから出力されるデータを、上記外部メモリに入力した外部クロックのフィードバッククロックによってラッチする第1の入力用フリップフロップと、上記第1の入力用フリップフロップにラッチされたデータを、上記内部クロックによってラッチする第2の入力用フリップフロップと、上記内部クロックが上記集積回路内のクロックジェネレータから該集積回路内のデータ出力用フリップフロップに到達する時間から上記外部クロックが該クロックジェネレータから該集積回路内の外部クロック出力用バッファへ到達する時間を引いた第1の位相差と、上記外部クロックが上記集積回路から出力される時点及び該外部クロックが上記外部メモリからフィードバックされて該集積回路に到達する時点の第2の位相差とが予め複数組設定され、上記集積回路が任意のシステムに実装された後、実際に第2の位相差を検出し、該検出した結果から該当する第1の位相差を選択する位相差検出回路と、上記予め設定された複数の第1の位相差のそれぞれに対応する遅延素子群を備え、上記位相差検出回路が選択した第1の位相差に基づいて該遅延素子群が切り替えられるクロックバッファと、を備え、上記設計方法は、上記集積回路のレイアウトから、該集積回路内の信号の伝達及び該集積回路と上記外部メモリとの信号の伝達に関わる時間のパラメータを抽出する工程と、上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間と、該内部クロックによって該データ出力用フリップフロップから出力されたデータが該外部メモリへ到達するまでの時間との和から、上記外部クロックが該クロックジェネレータから該外部メモリへ到達するまでの時間を引いた第1の値が、該外部メモリのデータを取り込むために必要なデータホールド時間より大きく、上記外部クロックの1サイクルの時間から、上記第1の値を引いた値が、上記外部メモリのデータを取り込むために必要なデータセットアップ時間より大きく、上記外部クロックが、上記クロックジェネレータから上記外部メモリに到達し、フィードバッククロックとして該外部メモリから折り返して上記第1の入力用フリップフロップに到達するまでの時間と、該第1の入力用フリップフロップのセル遅延と、該第1の入力用フリップフロップから上記第2の入力用フリップフロップまでの配線遅延と、を足した値Vから、上記内部クロックが該クロックジェネレータから該第2の入力用フリップフロップに到達するまでの時間を引いた値が、該第2の入力用フリップフロップのホールド時間より大きく、上記内部クロックが上記クロックジェネレータから上記第2の入力用フリップフロップに到達するまでの時間と上記外部クロックの1サイクルの時間との和から、上記値Vを引いた値が、該第2の入力用フリップフロップのセットアップ時間より大きく、上記値Vが、上記内部クロックの上記クロックジェネレータから上記第2の入力用フリップフロップまで到達する時間より大きく、上記外部メモリから出力されるデータの該外部メモリから上記第1の入力用フリップフロップへ到達する時間から、上記外部クロックの該外部メモリからフィードバックされ該第1の入力用フリップフロップへ到達するまでの時間を引いた値が、該第1の入力用フリップフロップのホールド時間より大きい、条件を満たす、上記第1の位相差の範囲を、上記パラメータを基に算出する工程と、上記第2の位相差を任意に複数設定する工程と、上記設定された複数の上記第2の位相差それぞれに対して、上記条件を満たす第1の位相差を設定する工程と、上記算出された上記第1の位相差のそれぞれに対応した、上記集積回路内の外部クロック信号又は内部クロック信号の遅延値を設定する工程と、を備える。
【0030】
つまり、集積回路が実装された後に、外部メモリへ出力する外部クロックと、外部メモリからのフィードバッククロックとの位相差を検出し、その結果を基に内部クロックと外部クロックとの位相差を自動的に調整できる集積回路を設計できる。従って、実装されるシステムの配線遅延や、外部負荷容量などの外部要因が多様であっても、最適なクロック位相を調整できる。
【0031】
発明を実施するための最良の形態
以下、本発明の実施の形態によるクロック位相調整方法、集積回路、及び集積回路の設計方法について、図面を参照しながら説明する。
【0032】
実施の形態1.
図1は、実施の形態1によるクロック位相調整方法を適用して作製した、外部メモリすなわちSDRAM110へデータアクセスするインターフェイス回路100を備えた集積回路1000の構成の一部を示すブロック図である。図1では、説明を容易にするため、集積回路1000の構成のうち、SDRAM110とのアクセスに関わる構成を概略的に示した。
【0033】
集積回路1000は、クロックジェネレータ101と、第1のクロックバッファ102と、第2のクロックバッファ104と、インターフェイス回路100とを備え、インターフェイス回路100は、SDCLKO出力バッファ103と、出力用フリップフロップである第1のフリップフロップ(第1のFF)105と、入出力バッファ106と、入力用フリップフロップである第2のフリップフロップ(第2のFF)107とを備える。図中、Tで始るパラメータが添えてある矢印は、後述する集積回路1000内の信号の伝達及び集積回路1000とSDRAM110との信号の伝達に関わる遅延パラメータを示す。
【0034】
クロックジェネレータ101は、例えば、外部から入力される同期信号から、あるいは、外部から入力したデータに含まれる同期信号から、あるいは、内部に備えられた発振器から、基準クロックを生成する。
【0035】
第1のクロックバッファ102は、基準クロックを駆動し、SDCLKO出力バッファ103に、SDRAM110へ供給するための外部クロックSDCLKOを出力する。
SDCLKO出力バッファ103は、SDCLKOを駆動して、SDRAM110に出力する。SDRAM110は、SDCLKOに同期して動作する。
【0036】
第2のクロックバッファ104は、基準クロックを駆動し、集積回路1000内部を動作させる内部クロックICLKを生成し、ICLKを集積回路1000内の各構成に供給する。図1は、説明を容易にするために、ICLKを第1のFF105及び第2のFF107に出力した場合について示す。
【0037】
第1のFF105には、SDRAM110へ出力されるデータがラッチされ、第1のFF105は、ラッチされたデータを、ICLKに同期して、入出力バッファ106を介しSDRAM110に出力する。尚、SDRAM110へ出力されるデータには、SDRAM110を制御するための信号、すなわちSDRAMコマンドや、ライトデータ等があり、データの種類毎に出力用のフリップフロップが通常設けられる。しかし、以上のデータの出力に関わる構成は基本的に同じなので、本実施形態では、説明を簡略化するために、出力用フリップフロップをまとめて第1のFF105一つとした。従って、実際は、出力用フリップフロップをデータの種類毎に設けることができる。また、以上のデータは、任意の回路から第1のFF105に送られてくる。
【0038】
一方、SDRAMコマンドによりSDRAM110内のデータが読み出されると、第2のFF107は、読み出されたリードデータを、入出力バッファ106を介して取り込む。
【0039】
図1に示した集積回路1000は、後述するクロック位相調整方法に従って設計されている。つまり、集積回路1000の設計時に、集積回路1000のレイアウトから集積回路1000内の信号の伝達及び集積回路1000とSDRAM110との信号の伝達に関わる時間、つまり遅延パラメータを抽出し、抽出された遅延パラメータからデータの受け渡しを確実に行える条件を満たすようにSDCLKOとICLKとの第1の位相差に集約し、その位相差を変更することによって、SDRAM110がSDCLKOによりインターフェイス回路100を介してデータ及び制御信号を取り込み、且つ、インターフェイス回路100がSDRAM110の出力したデータを内部クロックICLKにより取り込むことができる集積回路を容易に得ることができる。従って、本実施の形態によれば、従来のクロック信号の位相調整に見られるクロック信号の位相調整用の特別な回路を使わなくても、動作確実性の高い位相のクロックを容易に得ることができる。
【0040】
図2は、クロックとデータの位相関係を示したタイミングチャートである。図1と図2を用いて、クロックとデータの位相関係について説明する。
まず、SDCLKO出力バッファ103に入力したSDCLKO信号は、T1iooutで表される時間後に、SDCLKO出力バッファ103から出力される。T1iooutは、SDCLKO出力バッファ103が信号出力に要する時間、すなわち出力遅延を表す。
【0041】
続いて、SDCLKOは、T1bwで表される時間後にSDRAM110に到達する。T1bwは、SDCLKO出力バッファ103からSDRAM110迄の配線遅延を表す。
続いて、SDCLKOがSDCLKO出力バッファ103に到達してからD遅れてICLKが第1のFF105に到達する。Dは、内部クロックICLKが第1のFF105に到達した時点での、SDCLKOがSDCLKO出力バッファ103に入力した時点に対する位相差を表す。
【0042】
続いて、T2ow+T2iooutで表される時間後に、入出力バッファ106からSDRAMコマンドが出力される。T2owは、第1のFF105から入出力バッファ106迄の配線遅延を表し、T2iooutは、入出力バッファ106の出力遅延を表す。
【0043】
続いて、T2bwで表される時間後に、コマンドがSDRAM110に到達する。T2bwは、入出力バッファ106からSDRAM110迄の配線遅延を表す。
図中、SDSETUPで表される時間は、SDRAM110でのSDCLKO立ち上がり前、データアクセスのために確保されなければならないセットアップ時間で、SDHOLDで表される時間は、SDRAM110でのSDCLKO立ち上がり後、データアクセスのために確保されなければならないデータホールド時間である。
【0044】
一方、SDRAM110からデータを読み出すときは、SDCLKOがSDRAM110に到達してからSDQDELAYで表される時間後に、データが読み出される。
読み出されるデータ(リードデータ)は、T2bwで表される時間後に入出力バッファ106に入力される。
入出力バッファ106に入力されたデータは、T3ow+T3ioinで表される時間後に第2のFFに到達する。T3owは、入出力バッファ106から第2のFF107迄の配線遅延を表し、T3ioinは、入出力バッファ106のバッファ遅延を表す。
【0045】
なお、SDRAM110から出力されるデータDQのホールド時間をSDQHOLDと表し、第2のFF107でのデータ入力に際し、必要なセットアップ時間をT3FSETUPと表し、必要なホールド時間をT3FHOLDと表し、図2中に示した。
【0046】
次に、図1及び図2を用いて、データ転送回路のクロック位相調整方法において重要なクロックの位相差Dの計算方法について述べる。
まず、図1に示すような回路を設計し、レイアウトツールを用いて回路の配置配線をする。その結果に基づいて、各構成(セル)及び配線に関する遅延パラメータを出し、以下の計算式を用いてSDRAMクロックSDCLKOと内部クロックICLKとの位相差Dを算出する。
【0047】
図1に示す回路をレイアウトした場合、抽出される遅延パラメータを用い、式(1)で表される位相差Dを後述の方法に従って求める。
位相差Dは、外部メモリに供給される外部クロックの出力時点と、集積回路を動作させる内部クロックがデータ入出力の基準点に到達する時点との位相差、すなわち、内部クロックがクロックジェネレータからのデータ出力用フリップフロップに到達する時間から、外部クロックがクロックジェネレータから外部クロック出力用バッファへ到達する時間を引いた値であり、式(1)で表すことができる。
【0048】
D=(T2g+T2b+T2iw)
−(T1g+T1b+T1ow)・・・式(1)
【0049】
式中、T2gは、クロックジェネレータ101から第2のクロックバッファ104迄の配線遅延を表し、T2bは、第2のクロックバッファ104のセル遅延を表し、T2iwは、第2のクロックバッファ104から第1のFF105迄の配線遅延を表し、T1gは、クロックジェネレータ101から第1のクロックバッファ102迄の配線遅延を表し、T1bは、第1のクロックバッファ102のセル遅延を表し、T1owは、第1のクロックバッファ102からSDCLKO出力バッファ103迄の配線遅延を表す。
【0050】
ここで、SDRAMのような外部メモリとデータアクセスするインターフェイス回路を備えた集積回路を作製する際の第1の必須条件として、「SDRAMは集積回路から出力されるデータ(SDRAMコマンド及びライトデータを含む)を取り込むことができる」ことが挙げられる。そのためには、
【0051】
条件1:「内部クロックがクロックジェネレータから出力用フリップフロップに到達する時間」と「内部クロックによって出力用フリップフロップから出力されたデータが外部メモリへ到達するまでの時間」との和から、「外部クロックがクロックジェネレータから外部メモリへ到達するまでの時間」を引くことによって得られる第1の値が、外部メモリのデータを取り込むために必要なデータホールド時間より大きいこと、
【0052】
条件2:外部クロックの1サイクルの時間から、第1の値を引いた値が、外部メモリのデータを取り込むために必要なデータセットアップ時間より大きいこと、
を満たさなければならない。
【0053】
本実施形態では、クロックジェネレータ101がSDCLKO及びICLKを生成し、第1のFF105がICLKによってデータをSDRAM110へ出力するので、第1の値は、
「ICLKがクロックジェネレータ101から第1のFF105に到達する時間」と、「ICLKによって第1のFF105から出力されたデータがSDRAM110へ到達するまでの時間」との和から、「SDCLKOがクロックジェネレータ101からSDRAM110へ到達するまでの時間」を引いた値、
であると言いかえることができる。
【0054】
図1及び図2において、クロックジェネレータ101からSDRAM110迄のSDCLKOクロックの到達時間CKDは式(2)により得られる。
CKD=(T1g+T1b+T1ow
+T1ioout+T1bw)・・・式(2)
【0055】
また、集積回路1000からSDRAM110へ出力されるデータ(以下、SDRAM110に入力されるデータ及びコマンドを総称してDQと呼ぶ)の到達時間DQODは、ICLKがクロックジェネレータ101から出力された時点から考えると、式(3)で表される。
DQOD=(T2g+T2b+T2iw+T2f+T2ow
+T2ioout+T2bw)・・・式(3)
式中、T2fは、第1のFF105のセル遅延を表す。
【0056】
なお、T1bw及びT2bwはボードレイアウトより算出される遅延値情報であって、要求遅延値であっても良い。
上記の記号を用いて条件1を表すと、式(4)になる。
SDHOLD<DQOD−CKD・・・式(4)
【0057】
また、SDRAM110への供給クロックの1サイクル時間をSDCLKCYCLEと表し、上記の記号を用いて条件2を表すと、式(5)になる。
SDSETUP<
SDCLKCYCLE−(DQOD−CKD)・・・式(5)
式(1)〜(5)より、
SDHOLD−(T2f+T2ow+T2ioout
+T2bw−T1ioout−T1bw)
<D<
SDCLKCYCLE−SDSETUP−(T2f+T2ow
+T2ioout+T2bw−T1ioout−T1bw)
・・・式(6)
と表すことができる。
【0058】
また、SDRAMのような外部メモリとアクセスするインターフェイス回路を備えた集積回路を作製する際の第2の必須条件として、「集積回路は、SDRAMから出力されるデータを取り込むことができる」ことが挙げられる。そのためには、
【0059】
条件3:「外部クロックがクロックジェネレータから外部メモリへ到達するまでの時間」と、「外部クロックを受けて外部メモリから出力されるデータのホールド時間」と、「出力されたデータが入力用フリップフロップに到達する時間」との和から、「内部クロックがクロックジェネレータから入力用フリップフロップに到達する時間」を引いた第2の値が、入力用フリップフロップのデータ入力ホールド時間より大きいこと、
【0060】
条件4:「内部クロックの1サイクルの時間」と、「内部クロックがクロックジェネレータから入力用フリップフロップに到達する時間」との和から、「外部クロックがクロックジェネレータから外部メモリへ到達する時間」と、「外部クロックを受けて外部メモリから出力されるデータの出力遅延時間」と、「出力されたデータが集積回路内の入力用フリップフロップに到達する時間」との和を引いた第3の値が、入力用フリップフロップのデータ入力セットアップ時間より大きいこと、
が必要である。
【0061】
本実施形態では、クロックジェネレータ101がSDCLKOとICLKとを生成し、第2のFF107がSDRAM110から出力されるデータを取り込むので、第2の値は、
「SDCLKOがクロックジェネレータ101からSDRAM110へ到達するまでの時間」と、「SDCLKOを受けてSDRAM110から出力されるデータのホールド時間」と、「出力されたデータが第2のFF107に到達するまでの時間」との和から、「ICLKがクロックジェネレータ101から第2のFF107に到達するまでの時間」を引いた値、
であり、第3の値は、
【0062】
「ICLKの1サイクルの時間」と、「ICLKがクロックジェネレータ101から第2のFF107に到達するまでの時間」との和から、「SDCLKOがクロックジェネレータ101からSDRAM110へ到達する時間」と、「SDCLKOを受けてSDRAM110から出力されるデータの出力遅延時間」と、「出力されたデータが第2のFF107に到達するまでの時間」との和を引いた値、
であると、言い換えることができる。
【0063】
第2のFF107は、集積回路1000の内部クロックICLKで動作している。図1及び図2において、SDRAM110の出力データDQが第2のFF107へ到達する時間DQIDは、式(7)で表される。
DQID=T2bw+T3ioin+T3ow・・・式(7)
【0064】
さらに、集積回路1000内部の動作クロックICLKが第2のFF107へ到達する時間MCKDは、クロックスキュー調整結果からT3iw≒T2iwであることを考慮すれば、式(8)で表される。
MCKD=T2g+T2b+T2iw・・・式(8)
従って、条件3は、
T3FHOLD<
(CKD+SDQHOLD+DQID)−MCKD ・・・式(9)
と表される。
【0065】
また、条件4は、
T3FSETUP<SDCLKCYCLE+MCKD−
(CKD+SDQDELAY+DQID)・・・式(10)
と表される。尚、SDCLKOとICLKとは、クロックジェネレータ101で生成されるので、両クロックの1サイクルの時間は同じである。
【0066】
式(1)、(2)、(7)〜(10)より、
(T1ioout+T1bw+T2bw+T3ioin
+T3ow)+SDQDELAY−SDCLKCYCLE
+T3FSETUP
<D<
(T1ioout+T1bw+T2bw+T3ioin
+T3ow)+SDQHOLD−T3FHOLD・・・式(11)
となる。
【0067】
位相差Dは、レイアウト抽出された各パラメータを式(6)及び式(11)に代入することによって算出される。パラメータには、通常、MAXIMUM条件時とMINIMUM条件時とがあるので、両方の条件を満たす位相差Dを算出する。
例えば今、外部ピンに対して10pFの最大外部負荷容量があって、レイアウト後抽出されたパラメータが、MAXIMUM条件時とMINIMUM条件時に以下の表1、表2の通りだとする。
【0068】
【表1】
【表2】
【0069】
ここでMAXIMUM条件は、電圧が0.92×VDD、温度が、70°Cの条件、MINIMUM条件は、電圧が1. 08×VDD、温度が、0°Cを条件とする。VDDは、集積回路1000の動作電圧である。
【0070】
MAXIMUM条件時は、位相差DがTYPICAL時の約2倍として計算すると、上記表1から、式(6)を用いて、
−3.218nsec<2D<7.582nsec
【0071】
上記表から、式(11)を用いて、
5.738nsec<2D<13.648nsec
よって、Dは、
2. 869nsec<D<3. 791nsec・・・式(12)
の範囲であればよい。
【0072】
MINIMUM条件時は、位相差DがTYPICAL時の約2分の1の値として計算すると、上記表から、式(6)を用いて、
0.826nsec<D/2<11.626nsec
【0073】
上記表から、式(11)を用いて、
−3.786nsec<D/2<4.604nsec
よって位相差Dは、以下の範囲であればよいことになる。
1. 656nsec<D<9.208nsec・・・式(13)
【0074】
また、外部負荷の最小値を3pFとし、レイアウト後パラメータを抽出して(抽出結果は表示せず)、外部負荷10pFの時と同様、式(6)と(11)とを用いてDを計算し、
1.839nsec<D<3.926nsec・・・式(14)
1.652nsec<D<8.508nsec・・・式(15)
式(14)及び式(15)の結果が得られたとすると、式(12)〜(15)より、中心値を取って、D≒3.4nsecとなる。
【0075】
集積回路1000のレイアウトを作製後、抽出された各パラメータと上記式とによってDを算出し、集積回路1000の内部クロックICLKを、SDRAM110へ供給するクロックSDCLKOよりD値分、上記例の場合は3.4nsec、遅らせるように位相差を変更してクロックツリーを構成するというクロック位相調整方法を用いれば、LSIの設計段階でクロック位相を調整できる。このとき、第1のクロックバッファ102には、上述の方法で選択された位相差Dを考慮した(T1g+T1b+T1ow)の値が設定され、第2のクロックバッファ104にも、位相差Dを考慮した(T2g+T2b+T2iw)の値が設定される。
【0076】
遅延素子の調整は、例えば、クロックツリー構成の際に通常行われるクロックスキュー調整時に、SDCLKOの経路の遅延素子を調整してSDCLKOの位相をICLKよりもD値分早い位相にすればよい。クロックスキュー調整とは、クロックツリー構成時に、集積回路内でのクロックの位相を揃えることである。つまり、本実施形態は、従来クロックの位相を揃えるために行われてきたクロックスキュー調整時に、SDCLKOの位相をD値早めることによって、外部メモリとアクセスするのにより適切なクロックを容易に提供できる。
【0077】
また、遅延素子の調整は、例えば、クロックスキューを調整した後、つまり、クロック位相が揃った後に、SDCLKOの遅延値をD値分少なくするように、クロックバッファ内の遅延素子を変更したり、配線を変更することによって行ってもよい。
【0078】
図3は、集積回路1000におけるクロック位相調整方法を示したフローチャートである。クロック位相調整は、クロックスキュー調整時に行う場合を例に挙げる。
まず、ステップS1で、集積回路1000のレイアウトに従ってクロックツリーを構成する。
次にステップS2で、レイアウトから回路のネットリストに対応した遅延パラメータを抽出する。
【0079】
次にステップS3で、D値を求める計算プログラムに、既知の又は要求される外部要因パラメータ、例えば、SDRAM110のデータセットアップ、ホールド時間、ボードの配線遅延、配線負荷、及びSDRAM110の入力負荷容量を設定する。
【0080】
次にステップS4で、内部クロックICLKの始点と、SDRAM用クロックSDCLKOの始点とを指定し、且つ、前記条件1及び2の終点である、SDRAM110へのSDCLKOの到達点及び、データの到達点を指定する。さらに前記条件3及び4の終点である、第2のFF107のデータ入力ピンを指定する。
【0081】
次にステップS5で、ステップS2で抽出した遅延パラメータを基に、Dの値を算出する。
次にステップS6で、ステップS2で抽出した遅延パラメータを基に、SDCLKOによりデータ及び制御信号(コマンド)がSDRAM110に取り込まれるように、且つ、SDRAM110の出力したデータが、内部クロックICLKでインターフェイス回路100内部へ取り込まれるように、式(1)〜式(11)を使用してDの範囲を計算する。
【0082】
ステップS7にすすみ、ステップS5で算出したDが、ステップS6で算出したDの範囲を満たすか否かを判断し、Dが範囲を満たしていなければ、ステップS8へすすみ、Dが範囲を満たしていれば、内部及び外部クロック信号の遅延値を変更しない。
【0083】
ステップS8では、ステップS6で算出したDの範囲から適切なDを選択し、ステップS9において、選択したDの値を基に、クロックスキュー調整用遅延素子を置き換えたり、配線を変更するなどして、外部クロックあるいは内部クロックの遅延値を変更する。
【0084】
以上のような方法をとることで、従来のデータ転送装置のように、設計者が試行錯誤で位相調整することもなく、且つ位相調整のための特別な回路(例えば特開平9−185427号に示されるクロック位相調整回路12)を必要とすることなく、動作確実性の高い位相でクロック供給を行う集積回路のクロック位相を調整できる。
【0085】
本実施形態で説明した集積回路1000内の、クロックバッファの数や、フリップフロップの数は、図1に示した数以外でもよい。
また、外部負荷容量を最大時10pFと最小時3pFとしたが、使用するシステムにあった値を使用するものとする。
【0086】
本実施形態では、図1に示す構成をもつ集積回路1000に関して説明してきたが、インターフェイス回路100及び集積回路1000の構成は図1に限られず、クロックを用いて外部メモリとアクセスするデバイス全てに本実施形態を適用できる。図1以外の構成のデバイスを設計する際は、上記第1及び第2の必須条件を満たすように、上記条件1〜4及び式(1)〜(11)を参考にして、遅延パラメータを求め、図3のフローチャートに沿って、遅延パラメータを考慮したデバイスを設計すればよい。
【0087】
以上説明してきたように、本実施形態によるクロック位相調整方法を用いれば、クロックを用いて外部メモリとアクセスするデバイスのレイアウト設計時、例えばクロックスキュー調整時に遅延素子の値を変更したり、配線を変更することによって、クロックの位相を調整できる。従って、従来のように試行錯誤で位相を調節することなく、また、クロック位相調整のためのテストをすることなく、外部メモリとデータアクセス出来る回路のクロックを調整できる。特に、SDRAMのように高速なアクセスを必要とする場合でも、本実施形態を用いれば、高速アクセス可能な集積回路の位相調整を容易に且つより正確に実現することができる。
【0088】
また、本実施形態の集積回路の設計方法を用いれば、試行錯誤で位相調節することなく、また、クロック位相調整のためのテストをすることなく、集積回路を設計できる。さらに、回路規模及び回路作製の工程数が削減されることから、消費電力も低減され、かつ、設計が容易なことから、開発期間の短縮にもつながり、また自動化することが可能となることにより、設計者の負担を軽減でき、単純な設計ミスの防止にもなる。
【0089】
また、本実施形態の集積回路を用いれば、従来のような複雑な回路を持たなくても適切なクロックを供給できる集積回路を提供できる。特に、SDRAMのような高速なアクセスを必要とするインターフェイス回路を備えた集積回路を供給できる。
【0090】
実施の形態2.
実施の形態1において、集積回路1000の内部のパラメータは、集積回路1000が実装されるシステムにより大きく変化することはなく、レイアウトより抽出したパラメータの変動範囲で予測可能である。しかし、外部要因によるパラメータ、例えば、ボード上の配線負荷及び配線遅延、SDRAM110の入力負荷容量等は、実装されるシステムによりバラツキがある。そこで、実施の形態2では、実施の形態1によるクロック位相調整方法を利用し、且つ、実装されるシステムの多様性を考慮したクロック位相調整方法、及び、外部メモリとアクセスするインターフェイス回路を備えた集積回路とその設計方法について説明する。
【0091】
実施の形態2によるクロック位相調整方法は、まず、実施の形態1によるクロック位相調整方法を応用した方法(後述する)で位相差Dを求め、集積回路が任意のシステムに実装されたとき、外部要因による遅延値の変動に対処できるよう、常にクロック信号の遅延を監視し、検出されたクロック信号の位相差に合わせてD値を選択できるという方法である。
【0092】
図4は、実施の形態2によるクロック位相調整方法を適用して作製されたインターフェイス回路400を備えた集積回路1010の構成の一部を示すブロック図である。図4では、説明を容易にするため、集積回路1010の構成のうち、SDRAM420とのアクセスに関わる構成を概略的に示した。集積回路1010は、SDRAM420とデータアクセスする任意のシステムに実装される。
【0093】
集積回路1010は、インターフェイス回路400、クロックジェネレータとしてのPLL401及び分周器402、第3のクロックバッファ403、及び第4のクロックバッファ405を備え、インターフェイス回路400は、SDCLKOを出力するSDCLKO出力バッファ404、出力用フリップフロップである第3のフリップフロップ(第3のFF)406、データを入出力する入出力バッファ407、SDCLKI入力バッファ408、第4のフリップフロップ(第4のFF)409、入力用フリップフロップである第5のフリップフロップ(第5のFF)410、位相差検出器411、及びエラーフラグ出力バッファ412を備える。図中、Tで始るパラメータを添えた矢印は、後述する、集積回路1010内の信号の伝達及び集積回路1010とSDRAM420との信号の伝達に関わる遅延パラメータを示す。
【0094】
PLL401は、例えば27MHzから逓倍した1080MHzのクロックOCLKを出力するものとする。
分周器402は、PLL401から入力されたクロックを分周して、基準となる67. 5MHzのクロックを生成する。
【0095】
第3のクロックバッファ403は、分周器402から出力されるクロックを受信し、外部メモリすなわちSDRAM420へ供給するためのクロックSDCLKOを駆動する。また、第3のクロックバッファ403は、後述するように、遅延値が選択可能な構成を有する。
【0096】
第4のクロックバッファ405は、分周器402から出力されるクロックDIVCKを駆動し、集積回路1010の内部を動作させるクロックICLKを生成し、ICLKを集積回路1010の各構成に供給する。
第3のFF406は、第1のFF105同様、ラッチされたデータを、ICLKに同期して、入出力バッファ407を介してSDRAM420に出力する。
【0097】
SDCLKI入力バッファ408は、SDRAM420に入力されたSDCLKOのフィードバッククロックSDCLKIが入力されるバッファである。
第4のFF409は、SDRAMコマンドによりSDRAM420内のデータから読み出されたリードデータを、入出力バッファ407を介して、フィードバッククロックSDCLKIに同期して取り込む。
【0098】
第5のFF410は、第4のFF409で取り込んだデータを、集積回路400の動作クロックICLKでラッチする。
位相差検出器411は、SDRAM420へ供給するためのSDCLKOと、SDRAM420からフィードバックされたクロックSDCLKIと、PLL401出力であるOCLKとを受信し、SDCLKOとSDCLKIとの位相差PDを検出する検出機能と、PDに合わせてDを選択するセレクタ機能とを持つ。
【0099】
さらに、位相差検出器411は、OCLKを用いてSDCLKOとSDCLKIとの位相差PDを検出し、後述するように、検出されたPDから予め設定された位相差Dを選択し、以下の式(16)よりSDRAMクロックの遅延値SDCLKDLYを決定する。Dは、以下の式で表される。
【0100】
D=(T6g+T6b+T6iw)
−(T5g+T5b+T5ow)
【0101】
式中、T6gは、分周器402から第4のクロックバッファ405迄の配線遅延を表し、T6bは、第4のクロックバッファ405のセル遅延を表し、T6iwは、第4のクロックバッファ405から第3のFF406迄の配線遅延を表し、T5gは、分周器402から第3のクロックバッファ403迄の配線遅延を表し、T5bは、第3のクロックバッファ403のセル遅延を表し、T5owは、第3のクロックバッファ403からSDCLKO出力バッファ404迄の配線遅延を表す。また、式(16)は、
【0102】
SDCLKDLY=T5g+T5b+T5ow
=(T6g+T6b+T6iw)−D
・・・式(16)
で表される。
【0103】
エラーフラグ出力バッファ412は、位相差検出器411がエラーを出したときに、エラーフラグを出力する。
本実施形態は、実施の形態1と同様、第1及び第2の必須条件を満たす必要がある。SDCLKO及びICLKのクロックジェネレータを分周期402とすると、第1の必須条件は、実施の形態1の条件1及び2と同様、
【0104】
条件5:「ICLKが分周期402から第3のFF406に到達する時間」と、「ICLKによって第3のFF406から出力されたデータがSDRAM420へ到達するまでの時間」との和から、「SDCLKOが分周期402からSDRAM420へ到達するまでの時間」を引いた第1の値が、SDRAM420のデータを取り込むために必要なデータホールド時間より大きく、
【0105】
SDCLKOの1サイクルの時間から、第1の値を引いた値が、SDRAM420のデータを取り込むために必要なデータセットアップ時間より大きいこと、と表すことができる。また、第2の必須条件は、
【0106】
条件6:「外部クロックが、分周器402から外部メモリすなわちSDRAM420に到達し、フィードバッククロックとしてSDRAM420から折り返して集積回路1010に入力され、さらに、SDRAM420からのデータをフィードバッククロックによって取り込むためのフリップフロップすなわち第4のFF409に到達するまでの時間」と、「第4のFF409のセル遅延」と、「第4のFF409から、内部クロックで動作している2段目のデータ取り込みフリップフロップすなわち第5のFF410までの配線遅延」とを足した値(以下、値V1と呼ぶことにする)から、
【0107】
「内部クロックが、分周器402から第5のFF410に到達するまでの時間」を引いた値が、第5のFF410のホールド時間より大きいこと、
条件7:「内部クロックが分周器402から第5のFF410に到達するまでの時間」と「SDRAMクロックの1サイクルの時間」との和から、値V1を引いた値が、第5のFF410のセットアップ時間より大きいこと、
【0108】
条件8:値V1が「内部クロックが分周器402から第5のFF410まで到達する時間」より大きいこと、
条件9:SDRAM420から出力されるデータDQより、フィードバッククロックSDCLKIが遅れすぎないこと、すなわち、「SDRAM420から出力されるデータがSDRAM420から第4のFF409へ到達する時間(ホールド時間+配線遅延+入力バッファ遅延)」から、「SDRAMクロックが、SDRAM420からフィードバックされ、第4のFF409へ到達するまでの時間」を引いた値が、「第4のFF409のホールド時間」より大きいこと、
と表すことができる。
【0109】
条件5は、式(6)のパラメータを本実施形態に適用した式(17)で表される。
SDHOLD−(T6f+T6ow+T6ioout
+T6bw−T5ioout−T5bw)
<D<
SDCLKCYCLE−SDSETUP−(T6f+T6ow
+T6ioout+T6bw−T5ioout−T5bw)
・・・式(17)
【0110】
式中、SDHOLDは、SDRAM420のデータ入力に必要なホールド時間を表し、T6fは、第3のFF406のセル遅延を表し、T6owは、第3のFF406から入出力バッファ407迄の配線遅延を表し、T6iooutは、入出力バッファ407の出力遅延を表し、T6bwは、入出力バッファ407からSDRAM420迄の配線遅延を表し、T5iooutは、SDCLKO出力バッファ404の出力遅延を表し、T5bwは、SDCLKO出力バッファ404からSDRAM420迄の配線遅延を表し、SDCLKCYCLEは、SDRAM420への供給クロックSDCLKOの1サイクル時間を表し、SDSETUPは、SDRAM420データ入力に必要なセットアップ時間を表す。
【0111】
条件6及び7は、式(18)で表すことができる。
T5ioout+T5bw+T8bw+T8ioin+T8ow
+T8f+T8iw−SDCLKCYCLE+T5FSETUP
<D<
T5ioout+T5bw+T8bw+T8ioin+T8ow
+T8f+T8iw−T5FHOLD・・・式(18)
式中、T8bwは、SDRAM420からSDCLKI入力バッファ408迄の配線遅延を表し、T8ioinは、SDCLKI入力バッファ408のバッファ遅延を表し、T8owは、SDCLKI入力バッファ408から第4のFF409迄の配線遅延を表し、T8fは、第4のFF409のセル遅延を表し、T8iwは、第4のFF409から第5のFF410迄の配線遅延を表し、T5FSETUPは、第5のFF410のデータ入力に必要なセットアップ時間を表し、T5FHOLDは、第5のFF410のデータ入力に必要なホールド時間を表す。また、SDCLKOとICLKは分周器402で生成されるので、両クロックの1サイクルの時間は同じである。
【0112】
位相差検出器411により検出される位相差PDは、外部クロックが集積回路1010から出力される時点と、外部クロックが外部メモリからフィードバックされて集積回路1010に到達する時点との位相差であるから、
PD=T5ioout+T5bw+T8bw+T8ioin
+T8ow・・・式(19)
となり、式(18)は、
PD+T8f+T8iw−SDCLKCYCLE
+T5FSETUP
<D<
PD+T8f+T8iw−T5FHOLD・・・式(20)
となる。
【0113】
条件8は、
D<T5ioout+T5bw+T8bw+T8ioin+T8ow
+T8f+T8iw
で表されるが、式(18)が満たされれば、条件8も満たされる。
【0114】
条件9は、
SDQHOLD+T6bw+T7ioin+T7ow
−(T8bw+T8ioin+T8ow)>T4FHOLD
で表される。式中、SDQHOLDは、SDRAM420から出力されるデータDQのホールド時間を表し、T7ioinは、入出力バッファ407のバッファ遅延を表し、T7owは、入出力バッファ407から第4のFF409迄の配線遅延を表し、T4FHOLDは、第4のFF409のデータ入力に必要なホールド時間を表す。
【0115】
条件7を表す上記式は、T6bw、T7ioin、T7ow、T8bw、T8ioin、T8owにおいて等長配線を心がけることによって満たされる。通常、外部メモリへ入力されたクロックがフィードバックされるインターフェイス回路では、条件7は必須なので、本実施形態では、上記のような等長配線をして、条件7をすでに満たしているものとする。
【0116】
式(17)〜(20)において、外部要因によるパラメータ、例えば、ボード上の配線負荷及び配線遅延、SDRAM420の入力負荷容量等は、実装されるシステムによりバラツキがあるが、インターフェイス回路400の内部パラメータ、例えば、T6f,T6ow,T8f,T8iw,T5FSETUP、T5FHOLDなどは、システムにより大きく変化することはなく、レイアウトより抽出したパラメータの変動範囲で予測可能である。従って、レイアウトから抽出された予測可能なパラメータを式(20)に代入し、Dの範囲を、MAXIMUM条件時とMINIMUM条件時とにわけて計算すると、PD以外の部分は、外部負荷容量により変化しないので、式(20)は、PDを変数とする一次不等式となる。
【0117】
例えば、レイアウトから抽出された予測可能なパラメータを式(20)に代入し、MAXIMUM条件時を実施の形態1と同様、DがTYPICAL時の約2倍として計算すると、式(20)は、
PD/2+d1<D<PD/2+d2・・・(20−1)
【0118】
となり、MINIMUM条件時を実施の形態1と同様、DがTYPCICAL時の約2分の1の値として計算すると、式(20)は、
2PD+d3<D<2PD+d4・・・(20−2)
【0119】
となると仮定する。式中、d1、d2、d3、d4は、レイアウトから抽出された予測可能なパラメータを式(20)に代入して得られた定数である。
【0120】
位相差PDは変数なので、d2>d4>d1>d3とすれば、式(20−1)及び式(20−2)は図5のグラフで表される。式(20−1)で表されるDの範囲は、図5のグラフ上では、黒塗りの四角形とひし形がついた直線の間である。式(20−2)で表されるDの範囲は、図5のグラフ上では、黒塗りの三角形とばつ印がついた直線の間である。
【0121】
一方、SDCLKOがSDRAM420に到達する時間と、インターフェイス回路400が出力したデータが到達する時間との差を規定した条件式である式(17)よりDの範囲を算出する。このとき、T5ioout、T6ioout、T5bw、T6bwによる配線遅延は、等長配線を心がけると、ほぼ同様の負荷が生じ、相対的に遅延が発生するため、式(17)へ与える影響は少なく、外部負荷容量が変わっても、式(17)は変数を持たない不等式で表される。
【0122】
例えば、レイアウトから抽出された予測可能なパラメータを式(17)に代入し、
d5<D<d6・・・式(17−1)
が得られたとする。式中、d5とd6は、レイアウトから抽出された予測可能なパラメータを式(17)に代入して得られる定数を表す。
【0123】
d5>d2として式(17−1)を図5のグラフに反映させ、式(20−1)、(20−2)及び(17−1)を満たす有効範囲を斜線で示す。位相差Dは、斜線で示された有効範囲内から任意に選択される。
【0124】
尚、Dの取り得る範囲に何らかの制限がある場合、制限に合わせてDの有効範囲を決めることもできる。例えば下限がd7に決まっている場合、式(17−1)は、
d5<d7の場合、d7<D<d6となり、
d5>d7の場合、d5<D<d6となる。
【0125】
本実施形態では、後述するように、位相差検出器411がOCLKのカウント数に従ってSDCLKOとSDCLKIとの位相差PDを検出しているので、上記Dの有効範囲のうち、PDがOCLKのカウント数と一致するときのDの範囲から選ぶとよい。例えば、PD=2クロックのときは、d5<D<d10から位相差Dを選ぶ。
【0126】
集積回路1010を作製するに当たり、Dの初期設定値を上述の方法で選ぶ。つまり、PDの初期設定値としてOCLK2クロック分に相当する位相差を選んだ場合、d5<D<d10から位相差Dの初期設定値を選ぶ。実施の形態1同様、選んだ初期設定値に基づいて、集積回路1010のクロックツリーを構成し、所望の集積回路1010を得る。尚、本実施形態ではOCLKのカウント数に基づいてDを選択したが、選択方法はこれに限られず、実装されるシステムに従ってDを選択すればよい。
【0127】
実施の形態2による集積回路1010は、所定のシステムに実装された後、上述の方法に従って予め選択された複数のD値から、位相差検出器411が検出した位相差に適したD値を選択することができる構成を有する。従って、実施の形態2は、外部要因によって遅延パラメータが変動する場合でも適切なクロックを自動的に出力できるクロック位相調整方法、集積回路及びその設計方法を提供することができる。
【0128】
次に、集積回路1010を所定のシステムに実装後、位相差検出器411が検出した位相差に基づいて、D値を選択する構成及び方法について詳細に説明する。
位相差検出器411は、SDCLKOとSDCLKIとの位相差を、OCLKでカウントし、そのカウント値つまり位相差によって第3のクロックバッファ403へ出力する設定値PSETを選択する。設定値PSETは、遅延値SDCLKDLYに対応した値である。
【0129】
位相差検出器411は、カウント値で表される位相差の各々に対して、位相差Dと、PSETと、エラーフラグの出力とを予め決めたテーブルを備え、テーブルを基にPSETを選択する。
【0130】
図6は、位相差検出器411が備えるテーブルの一例を示す。テーブル411−1は、位相差検出器411が検出したPD、ここではカウントしたOCLKのカウント値を示す表示部411−2と、各PDに対するDの値を示す表示部411−3と、第3のクロックバッファに出力する設定値PSETを示す表示部411−4と、エラーフラグの出力をH、エラーフラグの非出力をLで示す表示部411−5とを有する。
【0131】
このとき、各PDに対して設定されるDは、図5のグラフによって求められるようなDの有効範囲と検出されるPDとから求められる範囲から予め任意に選択された値である。例えばPD=2クロックのときのDは、図5のグラフよりd5<D<d10の範囲から予め選択しておく。
【0132】
また、式(20)によるDの範囲が式(17)の範囲から外れる場合(図5ではPDが1クロック分又は6クロック分のとき)、エラーフラグ表示部411−5にHを表示する。例えば、テーブル411−1では、PDが1クロック分、あるいは6クロック分の場合、エラーフラグ表示部411−5にHが示されているが、これは、D11とD16とが式(17−1)を満たしていないということを示す。なお、設定値PSETは、後述する第3のクロックバッファが有するトライステートバッファに対応している。
【0133】
尚、本実施形態では、位相差検出器411で検出されたPDに対するDが求まらない場合に、エラーフラグ出力バッファ412からエラーフラグを出力するように設定したが、T6ioout等に外部負荷を付けるなどすれば、エラーフラグの出力を回避することも可能なので、エラーフラグは必ず必要な機能ではない。
【0134】
図7は、第3のクロックバッファ403の構成を例示するブロック図である。第3のクロックバッファ403は、位相差検出器411で検出されるPDに合わせて、式(16)から求められるSDCLKDLYが選択されるように、異なる個数の遅延素子を有する複数本の信号ライン(図7では▲1▼〜▲5▼)を備える。例えば、図7中の▲1▼は、SDCLKDLYが(T6g+T6b+T6iw)−D11となるクロックが出力されるラインである。尚、図中Xは、X=T6g+T6b+T6iwである。
【0135】
各ラインの最終遅延素子4031〜4035は、トライステートバッファと呼ばれ、位相差検出器411から出力される設定値PSETに従って選択され、選択されたトライステートバッファから出力される信号がSDCLKOとして出力される。図6中のPSETの各数字は、図7のトライステートバッファ4031〜4035に対応している。つまり、PSETの最下位(LSB)はバッファ4031と対応し、PSETの最下位が「1」であれば、バッファ4031が選択され、最下位が「0」であれば、バッファ4031は選択されない。尚、図6では、D=D16のときPSETは「10000」となっているが、これは、D=D16のときのSDCLKDLY(=X−D16)が短すぎて、図7に示す信号ラインでは対応できず、最も遅延値の小さい信号ライン▲5▼で代用するように設定されている。
【0136】
図8は、集積回路1010のクロックスキュー調整時に行うクロック位相調整方法を示したフローチャートである。集積回路1010を実装後に行うクロック位相調整については、後述する。
まず、ステップS10で、集積回路1010のレイアウトに従ってクロックツリーを構成する。
【0137】
次にステップS11で、レイアウトから回路のネットリストに対応した遅延パラメータを抽出する。
次にステップS12で、D値を求める計算プログラムに、既知の又は要求される外部要因パラメータ、例えば、SDRAM420のデータセットアップ、ホールド時間、ボードの配線遅延、配線負荷、及びSDRAM420の入力負荷容量を設定する。
【0138】
次にステップS13で、内部クロックICLKの始点と、SDRAM用クロックSDCLKOの始点とを指定し、且つ、前記条件5の終点である、SDRAM420へのSDCLKOの到達点及び、データの到達点を指定する。さらに前記条件6から9の終点である、第5のFF410のデータ入力ピンを指定する。
【0139】
ステップS14では、PDの値を任意に複数設定する。ここでは、OCLDで位相差PDをカウントしているので、PDの値はOCLKのクロック数を基準として設定されている。
ステップS15では、ステップS11で抽出した遅延パラメータを基に、SDCLKOによりデータ及び制御信号(コマンド)がSDRAM420に取り込まれるように、且つ、SDRAM420の出力したデータが、フィードバッククロックSDCLKIでインターフェイス回路400内部へ取り込まれるように、式(17)〜式(20)を使用して、位相差Dの範囲を算出し、設定したPDの各値に対して位相差Dを選択する。
【0140】
次にステップS15で決定されたDに基づき、第3のクロックバッファ403の遅延素子を設定(ステップS16)し、ステップS15で決定されたDのなかから、初期値を任意に選択する(ステップS17)。
図4、図6、図7を用いて、集積回路1010が任意のシステムに実装された後の位相差検出器411の動作及びクロック位相調整について説明する。
【0141】
今、位相差Dは初期状態で、例えばPD=3クロック、すなわちD=D13に初期設定されており、実装された基板上で電源投入後、位相差検出器411が、OCLKで2クロック分の位相差PDをカウントしたと仮定する。Dの値は、図6よりD=D12なので、位相差検出器411は、第3のクロックバッファ403の信号ラインがD=D12に切り替わるように、設定値「00010」を第3のクロックバッファ403に出力する。
【0142】
第3のクロックバッファ403では、設定値「00010」に対応するトライステートバッファ4032が選ばれ、選ばれたバッファ4032からSDCLKOが出力される。
以上のように、実装したボードによる遅延及び外部負荷のバラツキがあっても、LSI自ら自動的に位相差を検出し、かつ、位相差Dを再設定することで、複数のシステムへの対応が容易になる。
【0143】
集積回路1010の設計は以下の手順に従って行われる。
まず、集積回路1010のレイアウトを作製し、レイアウトから抽出された各パラメータと式(17)及び(20)とによって算出されるDの範囲を求める。
【0144】
求めたDの範囲を基に、位相差検出器411のテーブル411−1を作製する。
テーブル411−1と式(16)とを基に、第3のクロック403のクロックツリーを作製する。
【0145】
以上のような設計方法をとることで、従来のデータ転送装置のように、設計者が試行錯誤で位相調整する必要もなく、且つ位相調整のための特別な回路を必要とすることもなく、実装されるシステムの多様性を考慮した、動作確実性の高い位相でのクロック供給が可能な集積回路を容易に作製できる。
【0146】
以上説明したように、外部メモリへ出力する外部クロックと、外部メモリからのフィードバッククロックとの位相差を検出することにより、内部クロックと外部クロックとの位相差を調整できる。従って、実装されるシステムの配線遅延や、外部負荷容量などの外部要因が多様であっても、最適なクロック位相を容易に調整できる。
【0147】
なお、本実施形態では、OCLKを1080MHz、分周した基準となるクロックを67.5MHzとしたが任意の周波数で良い。また、第3のクロックバッファ403の構成は、1例でありこの限りではない。さらに、位相差検出器411は、各クロックの位相差を検出しその差をカウントして時間を計測したが、任意の位相比較手段で良い。また、本実施形態では、エラーフラグを出力するようにしたが、必ず出力する必要はなく、また、独立して持たずに、他ピンと共用しても良い。
【0148】
本実施形態では、図4に例示したインターフェイス回路400を備えた集積回路1010に関して説明してきたが、集積回路の構成は図4に限られず、クロックを用いて外部メモリとアクセスするデバイス全てに本実施形態を適用できる。図4以外の構成のデバイスを設計する際は、上記第1及び第2の必須条件を満たすように、上記条件5〜7及び式(16)〜(20)を参考にして、遅延パラメータを求め、外部クロックの位相差に合わせて遅延パラメータを選択できる構成を備えるデバイスを設計すればよい。
【0149】
実施の形態3.
さらに、実施の形態1では、完全同期設計を前提としたが、フィードバッククロック方式を採用する回路を、実施の形態1と同様の位相調整方法と設計方法で実現できる。
【0150】
図9は、実施の形態3によるクロック位相調整方法を適用して作製した、外部メモリすなわちSDRAM110へデータアクセスするインターフェイス回路500を備えた集積回路1020の構成の一部を示すブロック図である。図9では、説明を容易にするため、集積回路1020の構成のうち、SDRAM110とのアクセスに関わる構成を概略的に示した。また、図1と同様の構成については、同じ参照番号を付与し、ここではその説明を省略する。
【0151】
集積回路1020は、クロックジェネレータ101と、第1のクロックバッファ102と、第2のクロックバッファ104と、インターフェイス回路500とを備え、インターフェイス回路500は、SDCLKO出力バッファ103と、出力用フリップフロップである第1のフリップフロップ(第1のFF)105と、入出力バッファ106と、SDCLKI入力バッファ508と、入力用フリップフロップである第6のフリップフロップ(第6のFF)509と、第7のフリップフロップ(第7のFF)510と、を備える。図中、Tで始るパラメータが添えてある矢印は、後述する集積回路1020内の信号の伝達及び集積回路1020とSDRAM110との信号の伝達に関わる遅延パラメータを示す。
【0152】
SDCLKI入力バッファ508は、SDRAM420に入力されたSDCLKOのフィードバッククロックSDCLKIが入力されるバッファである。
第6のFF509は、SDRAMコマンドによりSDRAM110内から読み出されたリードデータを、入出力バッファ106を介し、フィードバッククロックSDCLKIに同期して取り込む。
【0153】
第7のFF510は、第6のFF509で取り込んだデータを、集積回路1020の動作クロックICLKでラッチする。
第2のクロックバッファ104は、基準クロックを駆動し、集積回路1020内部を動作させる内部クロックICLKを生成し、ICLKを集積回路1020内の構成に供給する。図9は、説明を容易にするために、ICLKを第1のFF105及び第7のFF510に出力した場合について示す。
【0154】
図10は、データ読み出し時のクロックとデータの位相関係を示したタイミングチャートである。図9と図10を用いて、クロックとデータの位相関係について説明する。SDCLKO信号及びSDRQAMコマンドがSDRAM110に到達するまでのチャートは、図2と同様なので、ここではその説明を省略する。
【0155】
SDCLKOのフィードバッククロックSDCLKIは、SDRAM110で折り返してから、T9bw+T9ioin+T9owの遅延の後、第6のFF509へ到達する。なお、T9bw+T9ioin+T9ow≒T2bw+T3ioin+T10owとする。これは、実施の形態で述べたとおりである。
【0156】
読み出されるデータ(リードデータ)は、SDCLKOがSDRAM110に到達してから、SDQDELAYで表される時間後に読み出される。
また、上記条件より、リードデータは、SDCLKIが第6のFF509に到達してからSDQDELAYで表される時間後に、第6のFF509に到達すると考えることができる。
【0157】
SDCLKIに同期して第6のFF509にラッチされたデータは、T10f+T9iwで表される時間後に第7のFF510に到達する。T10fは、第6のFF509における遅延を表し、T9iwは、第6のFF509から第7のFF510までの配線遅延を表す。
【0158】
なお、SDRAM110から出力されるデータDQのホールド時間をSDQHOLDと表し、第7のFF510でのデータ入力に際し、必要なセットアップ時間をT9FSETUPと表し、必要なホールド時間をT9FHOLDと表し、図10中に示した。
【0159】
次に、図9及び図10を用いて、データ転送回路のクロック位相調整方法において重要なクロックの位相差Dの計算方法について述べる。
実施の形態1で述べた条件1及び2の条件に加えて、実施の形態2で述べた条件6から9を実施の形態3に適用した条件が加わる。つまり、
【0160】
条件10:「外部クロックすなわちSDRAMクロックが、クロックジェネレータ101から外部メモリすなわちSDRAM110に到達し、フィードバッククロックとしてSDRAM110から折り返して集積回路1020に入力され、さらに、SDRAM110からのデータをフィードバッククロックによって取り込むためのフリップフロップすなわち第6のFF509に到達するまでの時間」と、「第6のFF509のセル遅延」と、「第6のFF509から、内部クロックで動作している2段目のデータ取り込みフリップフロップすなわち第7のFF510までの配線遅延」とを足した値(以下、値V2と呼ぶことにする)から、
【0161】
「内部クロックが、クロックジェネレータ101から第7のFF510に到達するまでの時間」を引いた値が、第7のFF510のホールド時間より大きいこと、
【0162】
条件11:「内部クロックがクロックジェネレータ101から第7のFF510に到達するまでの時間」と「SDRAMクロックの1サイクルの時間」との和から、値V2を引いた値が、第7のFF510のセットアップ時間より大きいこと、
【0163】
条件12:値V2が「内部クロックがクロックジェネレータ101から第7のFF510まで到達する時間」より大きいこと。
条件13:「SDRAM110から出力されるデータがSDRAM110から第6のFF509へ到達する時間(ホールド時間+配線遅延+入力バッファ遅延)」から、「SDRAMクロックが、SDRAM110からフィードバックされ、第6のFF509へ到達するまでの時間」を引いた値が、「第6のFF509のホールド時間」より大きいこと。
【0164】
条件10から13は、以下の式を満たすことによって得られる。なお、クロックスキュー調整結果から、第2のクロックバッファ104から第7のクロックバッファ510までの配線遅延T13iwが、T13iw≒T2iwであるとする。
【0165】
条件10:(CKD+T9bw+T9ioin+T9ow)+T10f+T9iw−MCKD>T9FHOLD
式中、T9bwは、SDRAM110からSDCLKIバッファ508迄の配線遅延を表し、T9ioinは、SDCLKI入力バッファ508のバッファ遅延を表し、T9owは、SDCLKI入力バッファ408から第6のFF509迄の配線遅延を表し、T9iwは、第6のFF509から第7のFF510迄の配線遅延を表し、T9FHOLDは、第7のFF510のデータ入力に必要なホールド時間を表す。
【0166】
条件11:(MCKD+SDCLKCYCLE)−(CKD+T9bw+T9ioin+T9ow+T10f+T9iw)>T9FSETUP
式中、T9FSETUPは、第7のFF510のデータ入力に必要なセットアップ時間を表す。
【0167】
条件12:CKD+T9bw+T9ioin+T9ow+T10f
+T9iw>MCKD
条件13:SDQHOLD+T2bw+T3ioin+T10ow
−(T9bw+T9ioin+T9ow)>T10FHOLD
【0168】
上記に示した、条件8から11を満たすための式をまとめると、以下の3つの式が得られる。
T1ioout+T1bw+T9bw+T9ioin
+T9ow+T10f+T9iw−T9FHOLD
>D>
T1ioout+T1bw+T9bw+T9ioin+T9ow
+T10f+T9iw−SDCLKCYCLE+T9FSETUP
T1ioout+T1bw+T9bw+T9ioin+T9ow
+T10f+T9iw>D
SDQHOLD+T2bw+T3ioin+T10ow
−(T9bw+T9ioin+T9ow)>T10FHOLD
【0169】
例えば、実施の形態1と同様、表1及び表2に示したMAX条件、MINIMUM条件を満たす場合、Dの値は、
1.652<D<3.64
1.612<D<2.94
【0170】
となり、この場合、以上のDの範囲より、中心値を取って、D≒2.3nsecを設定すればよい。
集積回路1020のレイアウトを作製後、位相差Dが算出された値になるよう、クロックツリーを構成すれば、フィードバッククロックを用いた場合でもSDRAM110への確実なアクセスを可能とするインタフェース回路500を備える集積回路1020を得ることができる。
【0171】
本実施形態では、図9に示す構成をもつ集積回路1020に関して説明してきたが、インターフェイス回路500及び集積回路1020の構成は図9に限られず、フィードバッククロックとを用いて外部メモリとアクセスするデバイス全てに本実施形態を適用できる。
【0172】
以上説明してきたように、本実施形態によるクロック位相調整方法を用いれば、フィードバッククロックを用いて外部メモリとアクセスするデバイスのレイアウト設計時、例えばクロックスキュー調整時にクロックバッファの遅延値を変更することによって、クロックの位相を調整できる。従って、従来のように試行錯誤で位相を調節することなく、また、クロック位相調整のためのテストをすることなく、外部メモリと確実にデータアクセス出来る回路を生成できる。特に、SDRAMのように高速なアクセスを必要とする場合でも、本実施形態を用いれば、高速アクセス可能な集積回路の外部クロックと内部クロックとの位相調整を容易に且つより正確に実現することができる。
【0173】
また、本実施形態の集積回路の設計方法を用いれば、試行錯誤で位相調節することなく、また、クロック位相調整のためのテストをすることなく、集積回路を設計できる。さらに、回路規模及び回路作製の工程数が削減されることから、消費電力も低減され、かつ、設計が容易なことから、開発期間の短縮にもつながり、また自動化することが可能となることにより、単純な設計ミスの防止にもなる。
【0174】
また、本実施形態の集積回路を用いれば、従来のような複雑な回路を持たなくても適切なクロックを供給できる集積回路を提供できる。特に、SDRAMのような高速なアクセスを必要とするインターフェイス回路を備えた集積回路を供給できる。
【0175】
実施の形態4.
非常に高速なクロックを用いて集積回路が外部メモリにアクセスする場合、実施の形態1で示した構成では、位相差Dの選択が不可能な場合も生じる。
【0176】
例えば、表1、表2のパラメータのうち、クロックサイクルを12.3nsec(81MHz)として、条件1の式(6)によりSDCLKOとICLKの位相差Dの範囲を算出し、条件2の式(11)によりSDCLKOとICLKとの位相差Dの範囲を算出する。条件1は、
【0177】
1−(1.36+1.58+7.79+0.233−0.105)
<D<
12.3−3−(1.36+1.58+7.79+0.233−7.33−0.105)
【0178】
つまり、−5.28<D<5.772となり、条件2は、
(7.33+0.105+0.233+1.4+2.27)+9−12.3+0.89
<D<
(7.33+0.105+0.233+1.4+2.27)+3−0
つまり、8.928<D<14.338となる。
【0179】
しかし、上記の計算結果が示すDの範囲を同時に満たす値はなく、適切なDの値を選択することができない。
このような場合、外部メモリからデータを取り込むためのクロックを2系統にして、2つの位相差D0及びD1の値を調節することによって、所望の回路を実現することができる。
【0180】
図11は、実施の形態4によるクロック位相調整方法を適用して作製した、外部メモリすなわちSDRAM110へデータアクセスするインターフェイス回路600を備えた集積回路1030の構成の一部を示すブロック図である。図11では、説明を容易にするため、集積回路1030の構成のうち、SDRAM110とのアクセスに関わる構成を概略的に示した。なお、図1と同様の構成については、同じ参照番号を付与し、ここではその詳細な説明を省略する。
【0181】
集積回路1030は、クロックジェネレータ101と、第1のクロックバッファ102と、第2のクロックバッファ104と、第3のクロックバッファ601と、インターフェイス回路600とを備え、インターフェイス回路600は、SDCLKO出力バッファ103と、出力用フリップフロップである第1のフリップフロップ(第1のFF)105と、入出力バッファ106と、入力用フリップフロップである第8のフリップフロップ(第8のFF)602と、第9のフリップフロップ(第9のFF)510と、を備える。図中、Tで始るパラメータが添えてある矢印は、後述する集積回路1030内の信号の伝達及び集積回路1030とSDRAM110との信号の伝達に関わる遅延パラメータを示す。
【0182】
第8のFF602は、SDRAMコマンドによりSDRAM110内のデータから読み出されたリードデータを、入出力バッファ106を介して、第3のクロックバッファ601から出力されるクロックICLK1に同期して取り込む。
【0183】
第9のFF603は、第8のFF602で取り込んだデータを、第2のクロックバッファ104から出力されるクロックICLK0でラッチする。
第2のクロックバッファ104は、基準クロックを駆動し、集積回路1030内部を動作させる内部クロックICLK0を生成し、ICLK0を集積回路1030内の任意の構成に供給する。図9には、説明を容易にするために、ICLK0を第1のFF105及び第9のFF603に出力した場合について示す。
【0184】
第3のクロックバッファ601は、基準クロックを駆動し、クロックICLK1を生成する。
図12は、データ読み出し時のクロックとデータの位相関係を示したタイミングチャートである。図11と図12を用いて、クロックとデータの位相関係について説明する。SDCLKO信号及びSDRQAMコマンドがSDRAM110に到達するまでのチャートは、図2と同様なので、ここではその説明を省略する。
【0185】
D0は、SDRAMクロックSDCLKO(LSI)と内部クロックICLK0との位相差、すなわち、ICLK0がクロックジェネレータ101から第1のFF105に到達する時間から、SDCLKOがクロックジェネレータ101からSDCLKO出力バッファ103へ到達する時間を引いた値である。
【0186】
D1は、SDCLKOと内部クロックICLK1との位相差つまり、ICLK1がクロックジェネレータ101から第8のFF602に到達する時間から、SDCLKOがクロックジェネレータ101からSDCLKO出力バッファ103へ到達する時間を引いた値である。
【0187】
ICLK0のタイミングで第1のFF105がSDRAMコマンドを出力し、T2ow+2Tioout+T2bwで表される時間後にSDRAM110に到達する。
SDRAM110からデータを読み出すときは、SDCLKOがSDRAM110に到達してからSDQDELAYで表される時間後に、データの読み出しが開始される。
【0188】
読み出されるデータ(リードデータ)は、SDRAM110から読み出されてから、T2bw+T3ioin+T11owで表される時間後に第8のFF602に到達する。T11owは、入出力バッファ106から第8のFF602迄の配線遅延を表す。
【0189】
さらに、第8のFF602に入力されたデータは、ICLK1が立ち上がってから、T11f+T11iwで表される時間後に第9のFF603に到達する。T11fは、第8のFF602のセル遅延を表し、T11iwは、第8のFF602から第9のFF603までの配線遅延を表す。
【0190】
次に、クロックの位相差Dの計算方法について述べる。D0及びD1は以下の条件を満たす。
条件14:D0は実施の形態1の式(6)を満たす。
条件15:D1は実施の形態1の式(11)を満たす。
【0191】
条件16:ICLK1より出力されたデータが(T11f+T11iw)で表される遅延値分送れて、第9のFF603に到達しても、ICLK0でデータを取り込むことができる、つまり、ICLK1とICLK0との位相差(SDCLKCYCLE−(D1−D0))から、データの遅延値(T11f+T11iw)を引いた値が第9のFFのセットアップ時間より大きい。
【0192】
条件16を式で表すと、
SDCLKCYCLE−(D1−D0)−(T11f+T11iw)>T11FSETUPとなり、式中、T11FSETUPは第9のFF603のセットアップタイムを表す。
【0193】
条件14〜16を満たすDの算出について、例を挙げて説明する。各パラメータは、実施の形態1の表1及び表2の値を用い、クロックサイクルを12.3nsec(81MHz)に変更する。また、T11f、T11iw、及びT11FSETUPのパラメータは表3に示す。
【0194】
【表3】
【0195】
また、クロックジェネレータ101から第3のクロックバッファ601までの配線遅延T12g、第3のクロックバッファ601のセル遅延T12b、第3のクロックバッファ601から第8のFF602までの配線遅延T12iwは、T2g、T2b、T2iwとそれぞれ等しいものとし、第2のクロックバッファ104から第9のFF603への配線遅延T14iwは、T2iwと等しいものとし、T11owは、T3owと等しいものとし、第8のFF602のセットアップ時間及びホールド時間は、T3FSETUP、T3FHOLDとそれぞれ等しいものとする。
【0196】
上記パラメータを用いて条件14〜16を満たすDを実施の形態1と同様に、計算してみると、以下のようになる。
MAXIMUM条件時は、位相差D0、D1のTYPICAL時の約2倍として計算すると、
【0197】
条件14より
1−(1.36+1.58+7.79+0.233−0.105)
<2D0<
12.3−3−(1.36+1.58+7.79+0.233−7.33−0.105)
−2.14<D0<2.886
【0198】
条件15より、
(7.33+0.105+0.233+1.4+2.27)+9−12.3+0.89
<2D1<
(7.33+0.105+0.233+1.4+2.27)+3−0
4.464<D1<7.169
【0199】
MINIMUM条件時は、位相差DがTYPICAL時の約2分の1の値として計算すると、
条件14より、
1−(0.17+0+1.24+0.099−1.23−0.105)
<D0/2<
12.3−3−(0.17+0+1.24+0.099−1.23−0.105)
1.724<D<18.252
【0200】
条件15より、
(1.23+0.105+0.099+0.17+0)+9−12.3+0.41
<D1/2<
(1.23+0.105+0.099+0.17+0)+3−0
−2.572<D1<9.208
【0201】
以上より、
1.724<D0<2.886
4.464<D1<7.169
【0202】
また、条件16より、MAXIMUM条件時は、
2(D1−D0)<9.24
D1−D0<4.62
となり、MINIMUM条件時は、
(D1−D0)/2<11.53
D1−D0<23.06
【0203】
となり、条件16におけるMAXIMUM及びMINIMUM条件を満たす範囲は、
D1−D0<4.62
となる。
【0204】
条件14、15、及び16を満たすD0及びD1は、例えば、
D0≒2.3nsec
D1≒5.8nsec
と選択することができる。
【0205】
集積回路1030のレイアウトを作製後、位相差Dが算出された値になるよう、クロックツリーを構成すれば、SDRAM110にアクセス可能なインタフェース回路600を備える集積回路1030を得ることができる。
【0206】
本実施形態では、図11に示す構成をもつ集積回路1030に関して説明してきたが、インターフェイス回路600及び集積回路1030の構成は図11に限られず、クロックを用いて外部メモリとアクセスするデバイス全てに本実施形態を適用できる。
【0207】
以上説明してきたように、本実施形態によるクロック位相調整方法を用いれば、より高速なクロックを用いて外部メモリとアクセスするデバイスの設計を容易に且つ確実に行える。特に、SDRAMのように高速なアクセスを必要とする場合に有効である。
【0208】
なお、ここでは、第9のFFの前に設けるFFは第8のFF1段のみであったが、複数段あっても同様である。
また、これと同様クロックバッファもICLK1の第3のクロックバッファ601のみであったが、複数段使用しても同様な方法で可能であることはいうまでもない。
【0209】
また、従来のような複数信号経路に複数の遅延素子を挿入するような複雑な回路を持たなくても、適切なデータ転送を行え、またクロックを供給できる集積回路を提供できる。特に、SDRAMのような高速なアクセスを必要とするデバイスの設計を容易にする。また、外部メモリへ出力する外部クロックと、外部メモリからのフィードバッククロックとの位相差を検出する検出器を設けることにより、インターフェイス回路自ら実遅延を検出し、内部クロックと、外部クロックとの位相差を調整できる。従って、実装されるシステムの配線遅延や、外部負荷容量などの外部要因が多様であっても、最適なクロック位相を調整できる。
【0210】
なお、実施の形態1から4の方法を、CADシステムに組み込むことにより、設計を自動化することが出来る。
また、実施の形態1から4では、T1bw、T2bw、T3bwは、ボードレイアウトより算出される遅延情報であるとしたが、ボードレイアウトに対して要求される遅延値であっても良い。
【0211】
また、実施の形態1から4では、集積回路からSDRAMへ出力するデータに着目して計算したが、RAS、CAS等の制御信号の遅延値も考慮されている。 また、外部メモリとアクセスするインターフェイス回路、集積回路及びデバイス中のフリップフロップは、外部メモリとアクセスするデータの種類によって適宜設けられるものである。従って、出力用のフリップフロップと入力用のフリップフロップの数は、実施の形態1から4の例に限定されるものではなく、インターフェイス回路、集積回路、デバイス、システムに従って変更される。
【0212】
また、本実施の形態では集積回路にSDRAMが一つ接続された場合について説明してきたが、集積回路に接続される外部メモリの数は複数であってもよい。この場合、それぞれの外部メモリのパラメータ、例えば、セットアップ時間、ホールド時間、データ出力遅延を抽出し、本実施の形態に適用すれば良い。
【0213】
産業上の利用可能性
本発明は、外部メモリとデータアクセスする集積回路に適用できる。
【図面の簡単な説明】
【図1】実施の形態1によるクロック位相調整方法を適用して作製した集積回路1000の回路構成を示すブロック図である。
【図2】クロックとデータの位相関係を示したタイミングチャートである。
【図3】集積回路1000におけるクロック位相調整方法を示したフローチャートである。
【図4】実施の形態2による集積回路1010の回路構成を示すブロック図である。
【図5】式(20−1)及び式(20−2)を表したグラフである。
【図6】位相差検出器411が備えるテーブルの一例を示す。
【図7】第3のクロックバッファ403の構成を示すブロック図である。
【図8】集積回路1010におけるクロック位相調整方法を示したフローチャートである。
【図9】実施の形態3による集積回路1020の回路構成を示すブロック図である。
【図10】クロックとデータの位相関係を示したタイミングチャートである。
【図11】実施の形態4による集積回路1030の回路構成を示すブロック図である。
【図12】クロックとデータの位相関係を示したタイミングチャートである。
【図13】特開平9−185427号公報によるインターフェイス回路を示す回路図である。
技術分野
本発明は、クロック位相調整方法、及び、集積回路とその設計方法に関するものである。
【0002】
背景技術
シンクロナスDRAM(Syncronus Dynamic Random Access Memory、以下SDRAM)にデータを書き込んだり、SDRAMからデータを読み出す(以下、データアクセスと呼ぶ)際、動作クロックが高速であるため、適切なタイミングを取ることが困難である。従って、従来は、まず、SDRAMとデータアクセスするLSIを作製し、試行錯誤することによってクロックの位相を調節していた。
【0003】
また、特開平9−185427号公報では、SDRAMに対するアクセスのタイミングを取るクロック位相調整回路及びクロック位相調整方法が開示されている。
【0004】
図13は、特開平9−185427号公報に開示されたクロック位相調整回路を適用したメモリインターフェイス装置を示す回路図である。メモリインターフェイス装置700は、クロック周波数変換器710、2つの入力バッファ711、720、クロック位相調整回路712、3つの出力バッファ715、717、719、及び3つのフリップフロップFF716、718、721、を備える。インターフェイス装置700は、外部クロック信号、SDRAMコマンド、及びデータをSDRAM702に出力する。
【0005】
クロック位相調整回路712は、SDRAM702に対して適正なデータアクセスを実行するためのクロック信号の位相を調整する回路であって、動作の基準となるクロック信号の位相を180度反転すると共にSDRAM702に出力する。クロック位相調整回路712は、インバータ713と、位相変換器714及びセレクタ744によって構成されている。
【0006】
位相変換器714には、複数の遅延値を持ったクロックが用意されており、SDRAM702と接続後、動作可能なクロックを適当な手段でテストし、テストの結果適切であると判断されたクロックを選択するしくみになっている。
【0007】
従来のクロック位相調整は、まず実際のLSIを作製してから試行錯誤して調整してきた。つまり、LSIを一旦作製してから設計者が試行錯誤を積み重ねて、クロック位相を調整するので、LSIの作製に関わる工程が煩雑になるという問題点がある。
【0008】
また、特開平9−185427号公報のようなインターフェイス装置700では、クロック位相調整に関わる遅延素子がいくつも必要となり、回路規模が増大し、消費電力も増えてしまうという問題点がある。
【0009】
また、インターフェイス装置700に入力されたデータは、様々な回路やバッファを通って出力されるため、インターフェイス装置700を実際のLSIにした場合に、クロックの遅延値が予測とかなり違ってしまう可能性があり、遅延素子の遅延値の決定が困難になるという問題点がある。この場合、より多くの遅延クロックを用意しておけば、遅延値の決定は容易になるが、回路規模がさらに増大し、消費電力が増えるという問題が新たに発生する。
【0010】
また、インターフェイス装置700とSDRAM702とを実際に接続しないと遅延値がわからないので、インターフェイス装置700とSDRAM702とを接続した後、データ転送のテストを行い、最適な遅延値のクロックを選択する必要があり、回路の作製に関わる工程数が増えるという問題点がある。
【0011】
また、インターフェイス装置700では、外部要因(配線遅延、外部負荷等)を考慮していないために精度が悪くなるという問題点がある。また、外部要因を考慮するためには、基板毎にデータ転送のテストを行い、クロックを選択する必要があるので、回路の作製に関わる工程数が増えるという問題点がある。
【0012】
本発明は、外部メモリとアクセスするデバイスの作製に関わる工程数を少なくし、試行錯誤して位相調整をすることなく、また、クロック位相調整のためのテストをすることなく、設計段階の時点でクロック位相調整を実現するクロック位相調整方法を提供するものである。本クロック位相調整方法は、完全同期設計でも、必要最小限の回路で、より確実なクロックを供給し、フィードバッククロック方式を採用した場合にも、自動的にクロック位相調整を行う。
【0013】
さらに、従来の回路のような複雑な構成をとらずに、高速な動作クロックに基づくデータアクセスを実現する集積回路とその設計方法とを提供するものである。
【0014】
発明の開示
上記目的を達成するために、本発明による集積回路は、以下の構成を有する。すなわち、クロックに同期して外部メモリとデータアクセスする集積回路であって、上記クロックを生成するクロックジェネレータと、上記クロックを外部クロックとして駆動する少なくとも1つの第1のクロックバッファと、上記クロックを内部クロックとして駆動する少なくとも1つの第2のクロックバッファと、上記外部クロックを上記外部メモリに出力するクロック出力バッファと、上記外部メモリへ出力するためのデータを上記内部クロックに同期して出力するデータ出力用フリップフロップと、上記外部メモリから出力されるデータを上記内部クロックに同期して取り込む入力用フリップフロップと、を備え、上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達するまでの時間と、到達した該内部クロックによって該データ出力用フリップフロップから出力されたデータが上記外部メモリへ到達するまでの時間との和から、上記外部クロックが上記クロックジェネレータから上記外部メモリへ到達するまでの時間を引くことによって得られる第1の値が、上記外部メモリのデータホールド時間より大きいという第1の条件と、上記外部クロックの1サイクルの時間から、上記第1の値を引いた値が、上記外部メモリのデータセットアップ時間より大きいという第2の条件と、上記外部クロックが上記クロックジェネレータから上記外部メモリへ到達するまでの時間と、到達した該クロックを受けて該外部メモリから出力されるデータのホールド時間と、該データが上記入力用フリップフロップに到達するまでの時間との和から、上記内部クロックが該クロックジェネレータから該入力用フリップフロップに到達するまでの時間を引いた値が、該入力用フリップフロップのデータホールド時間より大きいという第3の条件と、上記内部クロックの1サイクルの時間と、上記内部クロックが上記クロックジェネレータから上記入力用フリップフロップに到達するまでの時間との和から、該外部クロックが該クロックジェネレータから該外部メモリへ到達する時間と、到達した該外部クロックを受けて該外部メモリから出力されるデータの出力遅延時間と、該データが該入力用フリップフロップに到達するまでの時間との和を引いた値が、該入力用フリップフロップのデータセットアップ時間より大きいという第4の条件と、を満たすように、上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記クロック出力バッファへ到達する時間を引いた位相差Dの値が設定されている。
【0015】
従って、従来のような複数信号経路に複数の遅延素子を挿入するような複雑な回路を持たなくても、適切なデータ転送を行え、またクロックを供給できる集積回路を提供できる。特に、SDRAMのような高速なアクセスを必要とする集積回路の設計を容易にする。
【0016】
また、本発明による別の集積回路は、クロックに同期して外部メモリとデータアクセスする集積回路であって、データから上記クロックを生成するクロックジェネレータと、上記クロックを外部クロックとして駆動する少なくとも1つの第1のクロックバッファと、上記クロックを内部クロックとして駆動する少なくとも1つの第2のクロックバッファと、上記外部クロックを上記外部メモリに出力するクロック出力バッファと、上記外部メモリへ出力するためのデータを上記内部クロックに同期して出力するデータ出力用フリップフロップと、上記外部メモリから出力されるデータを、上記外部メモリに入力した外部クロックのフィードバッククロックによってラッチする第1の入力用フリップフロップと、上記第1の入力用フリップフロップにラッチされたデータを、上記内部クロックによってラッチする第2の入力用フリップフロップと、を備え、上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達するまでの時間と、到達した該内部クロックによって該データ出力用フリップフロップから出力されたデータが上記外部メモリへ到達するまでの時間との和から、上記外部クロックが上記クロックジェネレータから上記外部メモリへ到達するまでの時間を引くことによって得られる第1の値が、上記外部メモリのデータホールド時間より大きく、上記外部クロックの1サイクルの時間から、上記第1の値を引いた値が、上記外部メモリのデータセットアップ時間より大きく、上記外部クロックが、上記クロックジェネレータから上記外部メモリに到達し、フィードバッククロックとして該外部メモリから折り返して上記第1の入力用フリップフロップに到達するまでの時間と、該第1の入力用フリップフロップのセル遅延と、該第1の入力用フリップフロップから上記第2の入力用フリップフロップまでの配線遅延と、を足した値Vから、上記内部クロックが該クロックジェネレータから該第2の入力用フリップフロップに到達するまでの時間を引いた値が、該第2の入力用フリップフロップのホールド時間より大きく、上記内部クロックが上記クロックジェネレータから上記第2の入力用フリップフロップに到達するまでの時間と上記外部クロックの1サイクルの時間との和から、上記値Vを引いた値が、該第2の入力用フリップフロップのセットアップ時間より大きく、上記値Vが、上記内部クロックの上記クロックジェネレータから上記第2の入力用フリップフロップまで到達する時間より大きく、上記外部メモリから出力されるデータの該外部メモリから上記第1の入力用フリップフロップへ到達する時間から、上記外部クロックの該外部メモリからフィードバックされ該第1の入力用フリップフロップへ到達するまでの時間を引いた値が、該第1の入力用フリップフロップのホールド時間より大きい、条件を満たすように、上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記クロック出力バッファへ到達する時間を引いた位相差Dの値が設定されている。
【0017】
従って、外部クロックのフィードバッククロックとを用いて外部メモリとアクセスする集積回路を容易に提供できる。
また、集積回路は、さらに、上記外部クロックが上記集積回路から出力される時点と、該外部クロックが上記外部メモリからフィードバックされて該集積回路に到達する時点との第2の位相差と、該第2の位相差に対して上記条件を満たす第1の位相差とが予め複数組設定され、上記集積回路が任意のシステムに実装された後、実際に第2の位相差を検出し、該検出した結果から該当する第1の位相差を選択する位相差検出回路を備え、上記第1及び又は第2のクロックバッファは、上記予め設定された複数の第1の位相差のそれぞれに対応する遅延素子群を備え、上記位相差検出回路が選択した第1の位相差に基づいて、該遅延素子群は切り替えられるようにすることができる。
【0018】
従って、外部メモリへ出力する外部クロックと、外部メモリからのフィードバッククロックとの位相差を検出する検出器を設けることにより、インターフェイス回路自ら実遅延を検出し、内部クロックと、外部クロックとの位相差を調整できる。さらに、実装されるシステムの配線遅延や、外部負荷容量などの外部要因が多様であっても、最適なクロック位相を調整できる。
【0019】
また、集積回路は、上記入力用フリップフロップとして、上記外部メモリから出力されるデータをラッチする第1の入力用フリップフロップと、上記第1の入力用フリップフロップにラッチされたデータをラッチする第2の入力用フリップフロップと、上記第2のクロックバッファとして、上記データ出力用フリップフロップ及び上記第2の入力用フリップフロップに第1の内部クロックを供給するクロックバッファと、上記第1の入力用フリップフロップに第2の内部クロックを供給するクロックバッファと、を備え、上記条件1及び2を満たすように、上記第1の内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記外部クロック出力用バッファへ到達する時間を引いた位相差D0の値が設定され、上記条件3及び4を満たす、上記第2の内部クロックが上記クロックジェネレータから上記第1の入力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記外部クロック出力用バッファへ到達する時間を引いた位相差D1が、上記位相差D0と該位相差D1との位相差から、上記第1の入力用フリップフロップに入力されたデータが上記第2の入力用フリップフロップに到達するまでの遅延を引いた値が該第2の入力用フリップフロップのセットアップ時間より大きくなるよう、設定されてもよい。
【0020】
従って、従来のように複数箇所へ、複数の遅延バッファを挿入するような複雑な回路を持たなくても、より高速なクロックでデータを受け渡しするシステムを構成できる集積回路を提供できる。特に、SDRAMのような高速なアクセスを必要とするインターフェイス回路を備えた集積回路を容易に設計できる。
【0021】
本発明によるクロック位相調整方法は、任意のデバイスがクロックに同期して、外部メモリとデータアクセスする際のクロック位相調整方法であって、上記デバイスの設計時に該デバイスのレイアウトから、該デバイス内の信号の伝達及び該デバイスと上記外部メモリとの信号の伝達に関わる時間のパラメータを抽出する工程と、上記パラメータを基に、上記外部メモリに供給される外部クロックの出力時点と、上記デバイスを動作させる内部クロックがデータ入出力の基準点に到達する時点との第1の位相差を算出する工程と、上記パラメータを基に、上記外部メモリが上記デバイスから出力されるデータを取り込むことができ、且つ、上記デバイスが上記外部メモリから出力されるデータを取り込むことができる条件を満たす上記第1の位相差の範囲を算出する工程と、上記算出された第1の位相差が、上記算出された第1の位相差の範囲を満たすか否かを判断する工程と、上記判断工程によって、上記算出された第1の位相差が、上記算出された第1の位相差の範囲を満たす場合は終了し、満たさないと判断された場合は、上記算出された範囲から任意の第1の位相差を選択する工程と、上記選択された第1の位相差を基に、上記デバイスの設計時に、上記デバイス内の外部クロック信号又は内部クロック信号の遅延値を変更し終了する工程と、を含む。
【0022】
従って、クロックを用いて外部メモリとアクセスするデバイスのレイアウト設計時、例えばクロックスキュー調整時にクロック信号の遅延値を変更することによって、クロックの位相を調整できる。従って、従来のように試行錯誤で位相を調節することなく、また、クロック位相調整のためのテストをすることなく、外部メモリと確実にデータアクセス出来る回路を生成できる。特に、SDRAMのように高速なアクセスを必要とする場合でも、本実施形態を用いれば、高速アクセス可能なデバイスの外部クロックと内部クロックとの位相調整を容易に且つより正確に実現することができる。さらに、回路規模及び回路作製の工程数が削減されることから、消費電力も低減され、かつ、設計が容易なことから、開発期間の短縮にもつながり、また自動化することが可能となることにより、単純な設計ミスの防止にもなる。
【0023】
また、上記第1の位相差は、上記内部クロックが上記デバイス内のクロックジェネレータから該デバイス内のデータ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから該デバイス内の外部クロック出力用バッファへ到達する時間を引いた値であり、上記第1の位相差の範囲を算出する工程は、上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間と、該内部クロックによって該データ出力用フリップフロップから出力されたデータが該外部メモリへ到達するまでの時間との和から、上記外部クロックが該クロックジェネレータから該外部メモリへ到達するまでの時間を引いた第1の値が、該外部メモリのデータを取り込むために必要なデータホールド時間より大きい第1の条件と、上記外部クロックの1サイクルの時間から、上記第1の値を引いた値が、上記外部メモリのデータを取り込むために必要なデータセットアップ時間より大きい第2の条件と、上記外部クロックが上記クロックジェネレータから上記外部メモリへ到達するまでの時間と、該外部クロックを受けて該外部メモリから出力されるデータのホールド時間と、該出力されたデータが上記デバイス内の入力用フリップフロップに到達するまでの時間との和から、上記内部クロックが該クロックジェネレータから該入力用フリップフロップに到達するまでの時間を引いた値が、該入力用フリップフロップのデータ入力ホールド時間より大きい第3の条件と、上記内部クロックの1サイクルの時間と、上記内部クロックが上記クロックジェネレータから上記入力用フリップフロップに到達するまでの時間との和から、該外部クロックが該クロックジェネレータから該外部メモリへ到達する時間と、該外部クロックを受けて該外部メモリから出力されるデータの出力遅延時間と、該データが上記入力用フリップフロップに到達するまでの時間との和を引いた値が、該入力用フリップフロップのデータ入力セットアップ時間より大きい第4の条件と、を満たす上記第1の位相差の範囲を算出するようにしてもよい。
【0024】
また、上記第1の位相差は、上記内部クロックが上記デバイス内のクロックジェネレータから該デバイス内のデータ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから該デバイス内の外部クロック出力用バッファへ到達する時間を引いた値であり、上記外部メモリから出力されるデータは、該外部メモリに入力した外部クロックが上記デバイスへフィードバックされたクロックによって、該デバイス内の第1の入力用フリップフロップにラッチされ、該ラッチされたデータは、上記内部クロックによって、該デバイス内の第2の入力用フリップフロップにラッチされ、上記第1の位相差の範囲を算出する工程は、上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間と、該内部クロックによって該データ出力用フリップフロップから出力されたデータが該外部メモリへ到達するまでの時間との和から、上記外部クロックが該クロックジェネレータから該外部メモリへ到達するまでの時間を引いた第1の値が、該外部メモリのデータを取り込むために必要なデータホールド時間より大きく、上記外部クロックの1サイクルの時間から、上記第1の値を引いた値が、上記外部メモリのデータを取り込むために必要なデータセットアップ時間より大きく、上記外部クロックが、上記クロックジェネレータから上記外部メモリに到達し、フィードバッククロックとして該外部メモリから折り返して上記第1の入力用フリップフロップに到達するまでの時間と、該第1の入力用フリップフロップのセル遅延と、該第1の入力用フリップフロップから上記第2の入力用フリップフロップまでの配線遅延と、を足した値Vから、上記内部クロックが該クロックジェネレータから該第2の入力用フリップフロップに到達するまでの時間を引いた値が、該第2の入力用フリップフロップのホールド時間より大きく、上記内部クロックが上記クロックジェネレータから上記第2の入力用フリップフロップに到達するまでの時間と上記外部クロックの1サイクルの時間との和から、上記値Vを引いた値が、該第2の入力用フリップフロップのセットアップ時間より大きく、上記値Vが、上記内部クロックの上記クロックジェネレータから上記第2の入力用フリップフロップまで到達する時間より大きく、上記外部メモリから出力されるデータの該外部メモリから上記第1の入力用フリップフロップへ到達する時間から、上記外部クロックの該外部メモリからフィードバックされ該第1の入力用フリップフロップへ到達するまでの時間を引いた値が、該第1の入力用フリップフロップのホールド時間より大きい、条件を満たす上記第1の位相差の範囲を算出するようにしてもよい。
【0025】
これによって、フィードバッククロックを用いて外部メモリとアクセスするデバイスの位相調整を、デバイス設計時に行うことができる。
また、本発明による別のクロック位相調整方法は、任意のデバイスがクロックに同期して、外部メモリとデータアクセスする際のクロック位相調整方法であって、上記デバイスの設計時に該デバイスのレイアウトから、該デバイス内の信号の伝達及び該デバイスと上記外部メモリとの信号の伝達に関わる時間のパラメータを抽出する工程と、上記内部クロックが上記デバイス内のクロックジェネレータから該デバイス内のデータ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから該デバイス内の外部クロック出力用バッファへ到達する時間を引いた第1の位相差の範囲を、上記パラメータを基に算出する工程と、上記外部クロックが上記デバイスから出力される時点と、該外部クロックが上記外部メモリからフィードバックされて該デバイスに到達する時点との第2の位相差を任意に複数設定する工程と、上記設定された複数の上記第2の位相差それぞれに対して、上記算出された範囲から第1の位相差を設定する工程と、上記デバイスが任意のシステムに実装された後、実際に第2の位相差を検出する工程と、上記検出した結果と上記設定された第2の位相差とを比較して、該当する第1の位相差を選択する工程と、上記選択された第1の位相差を基に、上記デバイス内の上記外部クロック信号又は上記内部クロック信号のクロックバッファの遅延値を切り替える工程と、を備え、上記外部メモリから出力されるデータは、該外部メモリに入力した外部クロックが上記デバイスへフィードバックされたクロックによって、該デバイス内の第1の入力用フリップフロップにラッチされ、該ラッチされたデータは、上記内部クロックによって、該デバイス内の第2の入力用フリップフロップにラッチされ、上記第1の位相差の範囲を算出する工程において、上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間と、該内部クロックによって該データ出力用フリップフロップから出力されたデータが該外部メモリへ到達するまでの時間との和から、上記外部クロックが該クロックジェネレータから該外部メモリへ到達するまでの時間を引いた第1の値が、該外部メモリのデータを取り込むために必要なデータホールド時間より大きく、上記外部クロックの1サイクルの時間から、上記第1の値を引いた値が、上記外部メモリのデータを取り込むために必要なデータセットアップ時間より大きく、上記外部クロックが、上記クロックジェネレータから上記外部メモリに到達し、フィードバッククロックとして該外部メモリから折り返して上記第1の入力用フリップフロップに到達するまでの時間と、該第1の入力用フリップフロップのセル遅延と、該第1の入力用フリップフロップから上記第2の入力用フリップフロップまでの配線遅延と、を足した値Vから、上記内部クロックが該クロックジェネレータから該第2の入力用フリップフロップに到達するまでの時間を引いた値が、該第2の入力用フリップフロップのホールド時間より大きく、上記内部クロックが上記クロックジェネレータから上記第2の入力用フリップフロップに到達するまでの時間と上記外部クロックの1サイクルの時間との和から、上記値Vを引いた値が、該第2の入力用フリップフロップのセットアップ時間より大きく、上記値Vが、上記内部クロックの上記クロックジェネレータから上記第2の入力用フリップフロップまで到達する時間より大きく、上記外部メモリから出力されるデータの該外部メモリから上記第1の入力用フリップフロップへ到達する時間から、上記外部クロックの該外部メモリからフィードバックされ該第1の入力用フリップフロップへ到達するまでの時間を引いた値が、該第1の入力用フリップフロップのホールド時間より大きい、条件を満たす上記第1の位相差の範囲が算出されるようにしてもよい。
【0026】
つまり、外部メモリへ出力する外部クロックと、外部メモリからのフィードバッククロックとの位相差を検出し、適応的に、内部クロックと外部クロックとの位相差を調整できるデバイスを設計できる。従って、実装されるシステムの配線遅延や、外部負荷容量などの外部要因が多様であっても、最適なクロック位相を設定することができる。
【0027】
また、上記デバイスは、上記入力用フリップフロップとして、上記外部メモリから出力されるデータをラッチする第1の入力用フリップフロップと、上記第1の入力用フリップフロップにラッチされたデータをラッチする第2の入力用フリップフロップと、を備え、上記クロックジェネレータは、上記データ出力用フリップフロップ及び上記第2の入力用フリップフロップに供給される第1の内部クロックと、上記第1の入力用フリップフロップに供給される第2の内部クロックと、を供給し、上記第1の位相差は、上記第1の内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記外部クロック出力用バッファへ到達する時間を引いた位相差D0と、上記第2の内部クロックが上記クロックジェネレータから上記第1の入力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記外部クロック出力用バッファへ到達する時間を引いた位相差D1と、を含み、上記第1の位相差の範囲を算出する工程は、上記条件1及び2を満たす上記位相差D0の範囲、及び、上記条件3及び4を満たす上記位相差D1の範囲を算出し、且つ、上記位相差D0及びD1との位相差から、上記第1の入力用フリップフロップに入力されたデータが上記第2の入力用フリップフロップに到達するまでの遅延を引いた値が、該第2の入力用フリップフロップのセットアップ時間よりも大きいという条件を満たす、該位相差D0及びD1の範囲を算出し、上記クロック信号の遅延値の変更工程は、上記選択された位相差D0及びD1の位相差に基づいて、上記デバイス内の外部クロック信号又は内部クロック信号の遅延値を変更する、工程を備えることができる。
【0028】
従って、より高速なクロックを用いて外部メモリとアクセスするデバイスの位相を調節することができる。特に、SDRAMのように高速なアクセスを必要とする場合に有効である。
【0029】
また、本発明による集積回路の設計方法は、クロックに同期して外部メモリとデータアクセスする集積回路を設計する方法であって、上記集積回路は、上記内部クロックと上記外部クロックを生成するクロックジェネレータと、上記外部メモリへ出力するデータをラッチするデータ出力用フリップフロップと、上記外部メモリから出力されるデータを、上記外部メモリに入力した外部クロックのフィードバッククロックによってラッチする第1の入力用フリップフロップと、上記第1の入力用フリップフロップにラッチされたデータを、上記内部クロックによってラッチする第2の入力用フリップフロップと、上記内部クロックが上記集積回路内のクロックジェネレータから該集積回路内のデータ出力用フリップフロップに到達する時間から上記外部クロックが該クロックジェネレータから該集積回路内の外部クロック出力用バッファへ到達する時間を引いた第1の位相差と、上記外部クロックが上記集積回路から出力される時点及び該外部クロックが上記外部メモリからフィードバックされて該集積回路に到達する時点の第2の位相差とが予め複数組設定され、上記集積回路が任意のシステムに実装された後、実際に第2の位相差を検出し、該検出した結果から該当する第1の位相差を選択する位相差検出回路と、上記予め設定された複数の第1の位相差のそれぞれに対応する遅延素子群を備え、上記位相差検出回路が選択した第1の位相差に基づいて該遅延素子群が切り替えられるクロックバッファと、を備え、上記設計方法は、上記集積回路のレイアウトから、該集積回路内の信号の伝達及び該集積回路と上記外部メモリとの信号の伝達に関わる時間のパラメータを抽出する工程と、上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間と、該内部クロックによって該データ出力用フリップフロップから出力されたデータが該外部メモリへ到達するまでの時間との和から、上記外部クロックが該クロックジェネレータから該外部メモリへ到達するまでの時間を引いた第1の値が、該外部メモリのデータを取り込むために必要なデータホールド時間より大きく、上記外部クロックの1サイクルの時間から、上記第1の値を引いた値が、上記外部メモリのデータを取り込むために必要なデータセットアップ時間より大きく、上記外部クロックが、上記クロックジェネレータから上記外部メモリに到達し、フィードバッククロックとして該外部メモリから折り返して上記第1の入力用フリップフロップに到達するまでの時間と、該第1の入力用フリップフロップのセル遅延と、該第1の入力用フリップフロップから上記第2の入力用フリップフロップまでの配線遅延と、を足した値Vから、上記内部クロックが該クロックジェネレータから該第2の入力用フリップフロップに到達するまでの時間を引いた値が、該第2の入力用フリップフロップのホールド時間より大きく、上記内部クロックが上記クロックジェネレータから上記第2の入力用フリップフロップに到達するまでの時間と上記外部クロックの1サイクルの時間との和から、上記値Vを引いた値が、該第2の入力用フリップフロップのセットアップ時間より大きく、上記値Vが、上記内部クロックの上記クロックジェネレータから上記第2の入力用フリップフロップまで到達する時間より大きく、上記外部メモリから出力されるデータの該外部メモリから上記第1の入力用フリップフロップへ到達する時間から、上記外部クロックの該外部メモリからフィードバックされ該第1の入力用フリップフロップへ到達するまでの時間を引いた値が、該第1の入力用フリップフロップのホールド時間より大きい、条件を満たす、上記第1の位相差の範囲を、上記パラメータを基に算出する工程と、上記第2の位相差を任意に複数設定する工程と、上記設定された複数の上記第2の位相差それぞれに対して、上記条件を満たす第1の位相差を設定する工程と、上記算出された上記第1の位相差のそれぞれに対応した、上記集積回路内の外部クロック信号又は内部クロック信号の遅延値を設定する工程と、を備える。
【0030】
つまり、集積回路が実装された後に、外部メモリへ出力する外部クロックと、外部メモリからのフィードバッククロックとの位相差を検出し、その結果を基に内部クロックと外部クロックとの位相差を自動的に調整できる集積回路を設計できる。従って、実装されるシステムの配線遅延や、外部負荷容量などの外部要因が多様であっても、最適なクロック位相を調整できる。
【0031】
発明を実施するための最良の形態
以下、本発明の実施の形態によるクロック位相調整方法、集積回路、及び集積回路の設計方法について、図面を参照しながら説明する。
【0032】
実施の形態1.
図1は、実施の形態1によるクロック位相調整方法を適用して作製した、外部メモリすなわちSDRAM110へデータアクセスするインターフェイス回路100を備えた集積回路1000の構成の一部を示すブロック図である。図1では、説明を容易にするため、集積回路1000の構成のうち、SDRAM110とのアクセスに関わる構成を概略的に示した。
【0033】
集積回路1000は、クロックジェネレータ101と、第1のクロックバッファ102と、第2のクロックバッファ104と、インターフェイス回路100とを備え、インターフェイス回路100は、SDCLKO出力バッファ103と、出力用フリップフロップである第1のフリップフロップ(第1のFF)105と、入出力バッファ106と、入力用フリップフロップである第2のフリップフロップ(第2のFF)107とを備える。図中、Tで始るパラメータが添えてある矢印は、後述する集積回路1000内の信号の伝達及び集積回路1000とSDRAM110との信号の伝達に関わる遅延パラメータを示す。
【0034】
クロックジェネレータ101は、例えば、外部から入力される同期信号から、あるいは、外部から入力したデータに含まれる同期信号から、あるいは、内部に備えられた発振器から、基準クロックを生成する。
【0035】
第1のクロックバッファ102は、基準クロックを駆動し、SDCLKO出力バッファ103に、SDRAM110へ供給するための外部クロックSDCLKOを出力する。
SDCLKO出力バッファ103は、SDCLKOを駆動して、SDRAM110に出力する。SDRAM110は、SDCLKOに同期して動作する。
【0036】
第2のクロックバッファ104は、基準クロックを駆動し、集積回路1000内部を動作させる内部クロックICLKを生成し、ICLKを集積回路1000内の各構成に供給する。図1は、説明を容易にするために、ICLKを第1のFF105及び第2のFF107に出力した場合について示す。
【0037】
第1のFF105には、SDRAM110へ出力されるデータがラッチされ、第1のFF105は、ラッチされたデータを、ICLKに同期して、入出力バッファ106を介しSDRAM110に出力する。尚、SDRAM110へ出力されるデータには、SDRAM110を制御するための信号、すなわちSDRAMコマンドや、ライトデータ等があり、データの種類毎に出力用のフリップフロップが通常設けられる。しかし、以上のデータの出力に関わる構成は基本的に同じなので、本実施形態では、説明を簡略化するために、出力用フリップフロップをまとめて第1のFF105一つとした。従って、実際は、出力用フリップフロップをデータの種類毎に設けることができる。また、以上のデータは、任意の回路から第1のFF105に送られてくる。
【0038】
一方、SDRAMコマンドによりSDRAM110内のデータが読み出されると、第2のFF107は、読み出されたリードデータを、入出力バッファ106を介して取り込む。
【0039】
図1に示した集積回路1000は、後述するクロック位相調整方法に従って設計されている。つまり、集積回路1000の設計時に、集積回路1000のレイアウトから集積回路1000内の信号の伝達及び集積回路1000とSDRAM110との信号の伝達に関わる時間、つまり遅延パラメータを抽出し、抽出された遅延パラメータからデータの受け渡しを確実に行える条件を満たすようにSDCLKOとICLKとの第1の位相差に集約し、その位相差を変更することによって、SDRAM110がSDCLKOによりインターフェイス回路100を介してデータ及び制御信号を取り込み、且つ、インターフェイス回路100がSDRAM110の出力したデータを内部クロックICLKにより取り込むことができる集積回路を容易に得ることができる。従って、本実施の形態によれば、従来のクロック信号の位相調整に見られるクロック信号の位相調整用の特別な回路を使わなくても、動作確実性の高い位相のクロックを容易に得ることができる。
【0040】
図2は、クロックとデータの位相関係を示したタイミングチャートである。図1と図2を用いて、クロックとデータの位相関係について説明する。
まず、SDCLKO出力バッファ103に入力したSDCLKO信号は、T1iooutで表される時間後に、SDCLKO出力バッファ103から出力される。T1iooutは、SDCLKO出力バッファ103が信号出力に要する時間、すなわち出力遅延を表す。
【0041】
続いて、SDCLKOは、T1bwで表される時間後にSDRAM110に到達する。T1bwは、SDCLKO出力バッファ103からSDRAM110迄の配線遅延を表す。
続いて、SDCLKOがSDCLKO出力バッファ103に到達してからD遅れてICLKが第1のFF105に到達する。Dは、内部クロックICLKが第1のFF105に到達した時点での、SDCLKOがSDCLKO出力バッファ103に入力した時点に対する位相差を表す。
【0042】
続いて、T2ow+T2iooutで表される時間後に、入出力バッファ106からSDRAMコマンドが出力される。T2owは、第1のFF105から入出力バッファ106迄の配線遅延を表し、T2iooutは、入出力バッファ106の出力遅延を表す。
【0043】
続いて、T2bwで表される時間後に、コマンドがSDRAM110に到達する。T2bwは、入出力バッファ106からSDRAM110迄の配線遅延を表す。
図中、SDSETUPで表される時間は、SDRAM110でのSDCLKO立ち上がり前、データアクセスのために確保されなければならないセットアップ時間で、SDHOLDで表される時間は、SDRAM110でのSDCLKO立ち上がり後、データアクセスのために確保されなければならないデータホールド時間である。
【0044】
一方、SDRAM110からデータを読み出すときは、SDCLKOがSDRAM110に到達してからSDQDELAYで表される時間後に、データが読み出される。
読み出されるデータ(リードデータ)は、T2bwで表される時間後に入出力バッファ106に入力される。
入出力バッファ106に入力されたデータは、T3ow+T3ioinで表される時間後に第2のFFに到達する。T3owは、入出力バッファ106から第2のFF107迄の配線遅延を表し、T3ioinは、入出力バッファ106のバッファ遅延を表す。
【0045】
なお、SDRAM110から出力されるデータDQのホールド時間をSDQHOLDと表し、第2のFF107でのデータ入力に際し、必要なセットアップ時間をT3FSETUPと表し、必要なホールド時間をT3FHOLDと表し、図2中に示した。
【0046】
次に、図1及び図2を用いて、データ転送回路のクロック位相調整方法において重要なクロックの位相差Dの計算方法について述べる。
まず、図1に示すような回路を設計し、レイアウトツールを用いて回路の配置配線をする。その結果に基づいて、各構成(セル)及び配線に関する遅延パラメータを出し、以下の計算式を用いてSDRAMクロックSDCLKOと内部クロックICLKとの位相差Dを算出する。
【0047】
図1に示す回路をレイアウトした場合、抽出される遅延パラメータを用い、式(1)で表される位相差Dを後述の方法に従って求める。
位相差Dは、外部メモリに供給される外部クロックの出力時点と、集積回路を動作させる内部クロックがデータ入出力の基準点に到達する時点との位相差、すなわち、内部クロックがクロックジェネレータからのデータ出力用フリップフロップに到達する時間から、外部クロックがクロックジェネレータから外部クロック出力用バッファへ到達する時間を引いた値であり、式(1)で表すことができる。
【0048】
D=(T2g+T2b+T2iw)
−(T1g+T1b+T1ow)・・・式(1)
【0049】
式中、T2gは、クロックジェネレータ101から第2のクロックバッファ104迄の配線遅延を表し、T2bは、第2のクロックバッファ104のセル遅延を表し、T2iwは、第2のクロックバッファ104から第1のFF105迄の配線遅延を表し、T1gは、クロックジェネレータ101から第1のクロックバッファ102迄の配線遅延を表し、T1bは、第1のクロックバッファ102のセル遅延を表し、T1owは、第1のクロックバッファ102からSDCLKO出力バッファ103迄の配線遅延を表す。
【0050】
ここで、SDRAMのような外部メモリとデータアクセスするインターフェイス回路を備えた集積回路を作製する際の第1の必須条件として、「SDRAMは集積回路から出力されるデータ(SDRAMコマンド及びライトデータを含む)を取り込むことができる」ことが挙げられる。そのためには、
【0051】
条件1:「内部クロックがクロックジェネレータから出力用フリップフロップに到達する時間」と「内部クロックによって出力用フリップフロップから出力されたデータが外部メモリへ到達するまでの時間」との和から、「外部クロックがクロックジェネレータから外部メモリへ到達するまでの時間」を引くことによって得られる第1の値が、外部メモリのデータを取り込むために必要なデータホールド時間より大きいこと、
【0052】
条件2:外部クロックの1サイクルの時間から、第1の値を引いた値が、外部メモリのデータを取り込むために必要なデータセットアップ時間より大きいこと、
を満たさなければならない。
【0053】
本実施形態では、クロックジェネレータ101がSDCLKO及びICLKを生成し、第1のFF105がICLKによってデータをSDRAM110へ出力するので、第1の値は、
「ICLKがクロックジェネレータ101から第1のFF105に到達する時間」と、「ICLKによって第1のFF105から出力されたデータがSDRAM110へ到達するまでの時間」との和から、「SDCLKOがクロックジェネレータ101からSDRAM110へ到達するまでの時間」を引いた値、
であると言いかえることができる。
【0054】
図1及び図2において、クロックジェネレータ101からSDRAM110迄のSDCLKOクロックの到達時間CKDは式(2)により得られる。
CKD=(T1g+T1b+T1ow
+T1ioout+T1bw)・・・式(2)
【0055】
また、集積回路1000からSDRAM110へ出力されるデータ(以下、SDRAM110に入力されるデータ及びコマンドを総称してDQと呼ぶ)の到達時間DQODは、ICLKがクロックジェネレータ101から出力された時点から考えると、式(3)で表される。
DQOD=(T2g+T2b+T2iw+T2f+T2ow
+T2ioout+T2bw)・・・式(3)
式中、T2fは、第1のFF105のセル遅延を表す。
【0056】
なお、T1bw及びT2bwはボードレイアウトより算出される遅延値情報であって、要求遅延値であっても良い。
上記の記号を用いて条件1を表すと、式(4)になる。
SDHOLD<DQOD−CKD・・・式(4)
【0057】
また、SDRAM110への供給クロックの1サイクル時間をSDCLKCYCLEと表し、上記の記号を用いて条件2を表すと、式(5)になる。
SDSETUP<
SDCLKCYCLE−(DQOD−CKD)・・・式(5)
式(1)〜(5)より、
SDHOLD−(T2f+T2ow+T2ioout
+T2bw−T1ioout−T1bw)
<D<
SDCLKCYCLE−SDSETUP−(T2f+T2ow
+T2ioout+T2bw−T1ioout−T1bw)
・・・式(6)
と表すことができる。
【0058】
また、SDRAMのような外部メモリとアクセスするインターフェイス回路を備えた集積回路を作製する際の第2の必須条件として、「集積回路は、SDRAMから出力されるデータを取り込むことができる」ことが挙げられる。そのためには、
【0059】
条件3:「外部クロックがクロックジェネレータから外部メモリへ到達するまでの時間」と、「外部クロックを受けて外部メモリから出力されるデータのホールド時間」と、「出力されたデータが入力用フリップフロップに到達する時間」との和から、「内部クロックがクロックジェネレータから入力用フリップフロップに到達する時間」を引いた第2の値が、入力用フリップフロップのデータ入力ホールド時間より大きいこと、
【0060】
条件4:「内部クロックの1サイクルの時間」と、「内部クロックがクロックジェネレータから入力用フリップフロップに到達する時間」との和から、「外部クロックがクロックジェネレータから外部メモリへ到達する時間」と、「外部クロックを受けて外部メモリから出力されるデータの出力遅延時間」と、「出力されたデータが集積回路内の入力用フリップフロップに到達する時間」との和を引いた第3の値が、入力用フリップフロップのデータ入力セットアップ時間より大きいこと、
が必要である。
【0061】
本実施形態では、クロックジェネレータ101がSDCLKOとICLKとを生成し、第2のFF107がSDRAM110から出力されるデータを取り込むので、第2の値は、
「SDCLKOがクロックジェネレータ101からSDRAM110へ到達するまでの時間」と、「SDCLKOを受けてSDRAM110から出力されるデータのホールド時間」と、「出力されたデータが第2のFF107に到達するまでの時間」との和から、「ICLKがクロックジェネレータ101から第2のFF107に到達するまでの時間」を引いた値、
であり、第3の値は、
【0062】
「ICLKの1サイクルの時間」と、「ICLKがクロックジェネレータ101から第2のFF107に到達するまでの時間」との和から、「SDCLKOがクロックジェネレータ101からSDRAM110へ到達する時間」と、「SDCLKOを受けてSDRAM110から出力されるデータの出力遅延時間」と、「出力されたデータが第2のFF107に到達するまでの時間」との和を引いた値、
であると、言い換えることができる。
【0063】
第2のFF107は、集積回路1000の内部クロックICLKで動作している。図1及び図2において、SDRAM110の出力データDQが第2のFF107へ到達する時間DQIDは、式(7)で表される。
DQID=T2bw+T3ioin+T3ow・・・式(7)
【0064】
さらに、集積回路1000内部の動作クロックICLKが第2のFF107へ到達する時間MCKDは、クロックスキュー調整結果からT3iw≒T2iwであることを考慮すれば、式(8)で表される。
MCKD=T2g+T2b+T2iw・・・式(8)
従って、条件3は、
T3FHOLD<
(CKD+SDQHOLD+DQID)−MCKD ・・・式(9)
と表される。
【0065】
また、条件4は、
T3FSETUP<SDCLKCYCLE+MCKD−
(CKD+SDQDELAY+DQID)・・・式(10)
と表される。尚、SDCLKOとICLKとは、クロックジェネレータ101で生成されるので、両クロックの1サイクルの時間は同じである。
【0066】
式(1)、(2)、(7)〜(10)より、
(T1ioout+T1bw+T2bw+T3ioin
+T3ow)+SDQDELAY−SDCLKCYCLE
+T3FSETUP
<D<
(T1ioout+T1bw+T2bw+T3ioin
+T3ow)+SDQHOLD−T3FHOLD・・・式(11)
となる。
【0067】
位相差Dは、レイアウト抽出された各パラメータを式(6)及び式(11)に代入することによって算出される。パラメータには、通常、MAXIMUM条件時とMINIMUM条件時とがあるので、両方の条件を満たす位相差Dを算出する。
例えば今、外部ピンに対して10pFの最大外部負荷容量があって、レイアウト後抽出されたパラメータが、MAXIMUM条件時とMINIMUM条件時に以下の表1、表2の通りだとする。
【0068】
【表1】
【表2】
【0069】
ここでMAXIMUM条件は、電圧が0.92×VDD、温度が、70°Cの条件、MINIMUM条件は、電圧が1. 08×VDD、温度が、0°Cを条件とする。VDDは、集積回路1000の動作電圧である。
【0070】
MAXIMUM条件時は、位相差DがTYPICAL時の約2倍として計算すると、上記表1から、式(6)を用いて、
−3.218nsec<2D<7.582nsec
【0071】
上記表から、式(11)を用いて、
5.738nsec<2D<13.648nsec
よって、Dは、
2. 869nsec<D<3. 791nsec・・・式(12)
の範囲であればよい。
【0072】
MINIMUM条件時は、位相差DがTYPICAL時の約2分の1の値として計算すると、上記表から、式(6)を用いて、
0.826nsec<D/2<11.626nsec
【0073】
上記表から、式(11)を用いて、
−3.786nsec<D/2<4.604nsec
よって位相差Dは、以下の範囲であればよいことになる。
1. 656nsec<D<9.208nsec・・・式(13)
【0074】
また、外部負荷の最小値を3pFとし、レイアウト後パラメータを抽出して(抽出結果は表示せず)、外部負荷10pFの時と同様、式(6)と(11)とを用いてDを計算し、
1.839nsec<D<3.926nsec・・・式(14)
1.652nsec<D<8.508nsec・・・式(15)
式(14)及び式(15)の結果が得られたとすると、式(12)〜(15)より、中心値を取って、D≒3.4nsecとなる。
【0075】
集積回路1000のレイアウトを作製後、抽出された各パラメータと上記式とによってDを算出し、集積回路1000の内部クロックICLKを、SDRAM110へ供給するクロックSDCLKOよりD値分、上記例の場合は3.4nsec、遅らせるように位相差を変更してクロックツリーを構成するというクロック位相調整方法を用いれば、LSIの設計段階でクロック位相を調整できる。このとき、第1のクロックバッファ102には、上述の方法で選択された位相差Dを考慮した(T1g+T1b+T1ow)の値が設定され、第2のクロックバッファ104にも、位相差Dを考慮した(T2g+T2b+T2iw)の値が設定される。
【0076】
遅延素子の調整は、例えば、クロックツリー構成の際に通常行われるクロックスキュー調整時に、SDCLKOの経路の遅延素子を調整してSDCLKOの位相をICLKよりもD値分早い位相にすればよい。クロックスキュー調整とは、クロックツリー構成時に、集積回路内でのクロックの位相を揃えることである。つまり、本実施形態は、従来クロックの位相を揃えるために行われてきたクロックスキュー調整時に、SDCLKOの位相をD値早めることによって、外部メモリとアクセスするのにより適切なクロックを容易に提供できる。
【0077】
また、遅延素子の調整は、例えば、クロックスキューを調整した後、つまり、クロック位相が揃った後に、SDCLKOの遅延値をD値分少なくするように、クロックバッファ内の遅延素子を変更したり、配線を変更することによって行ってもよい。
【0078】
図3は、集積回路1000におけるクロック位相調整方法を示したフローチャートである。クロック位相調整は、クロックスキュー調整時に行う場合を例に挙げる。
まず、ステップS1で、集積回路1000のレイアウトに従ってクロックツリーを構成する。
次にステップS2で、レイアウトから回路のネットリストに対応した遅延パラメータを抽出する。
【0079】
次にステップS3で、D値を求める計算プログラムに、既知の又は要求される外部要因パラメータ、例えば、SDRAM110のデータセットアップ、ホールド時間、ボードの配線遅延、配線負荷、及びSDRAM110の入力負荷容量を設定する。
【0080】
次にステップS4で、内部クロックICLKの始点と、SDRAM用クロックSDCLKOの始点とを指定し、且つ、前記条件1及び2の終点である、SDRAM110へのSDCLKOの到達点及び、データの到達点を指定する。さらに前記条件3及び4の終点である、第2のFF107のデータ入力ピンを指定する。
【0081】
次にステップS5で、ステップS2で抽出した遅延パラメータを基に、Dの値を算出する。
次にステップS6で、ステップS2で抽出した遅延パラメータを基に、SDCLKOによりデータ及び制御信号(コマンド)がSDRAM110に取り込まれるように、且つ、SDRAM110の出力したデータが、内部クロックICLKでインターフェイス回路100内部へ取り込まれるように、式(1)〜式(11)を使用してDの範囲を計算する。
【0082】
ステップS7にすすみ、ステップS5で算出したDが、ステップS6で算出したDの範囲を満たすか否かを判断し、Dが範囲を満たしていなければ、ステップS8へすすみ、Dが範囲を満たしていれば、内部及び外部クロック信号の遅延値を変更しない。
【0083】
ステップS8では、ステップS6で算出したDの範囲から適切なDを選択し、ステップS9において、選択したDの値を基に、クロックスキュー調整用遅延素子を置き換えたり、配線を変更するなどして、外部クロックあるいは内部クロックの遅延値を変更する。
【0084】
以上のような方法をとることで、従来のデータ転送装置のように、設計者が試行錯誤で位相調整することもなく、且つ位相調整のための特別な回路(例えば特開平9−185427号に示されるクロック位相調整回路12)を必要とすることなく、動作確実性の高い位相でクロック供給を行う集積回路のクロック位相を調整できる。
【0085】
本実施形態で説明した集積回路1000内の、クロックバッファの数や、フリップフロップの数は、図1に示した数以外でもよい。
また、外部負荷容量を最大時10pFと最小時3pFとしたが、使用するシステムにあった値を使用するものとする。
【0086】
本実施形態では、図1に示す構成をもつ集積回路1000に関して説明してきたが、インターフェイス回路100及び集積回路1000の構成は図1に限られず、クロックを用いて外部メモリとアクセスするデバイス全てに本実施形態を適用できる。図1以外の構成のデバイスを設計する際は、上記第1及び第2の必須条件を満たすように、上記条件1〜4及び式(1)〜(11)を参考にして、遅延パラメータを求め、図3のフローチャートに沿って、遅延パラメータを考慮したデバイスを設計すればよい。
【0087】
以上説明してきたように、本実施形態によるクロック位相調整方法を用いれば、クロックを用いて外部メモリとアクセスするデバイスのレイアウト設計時、例えばクロックスキュー調整時に遅延素子の値を変更したり、配線を変更することによって、クロックの位相を調整できる。従って、従来のように試行錯誤で位相を調節することなく、また、クロック位相調整のためのテストをすることなく、外部メモリとデータアクセス出来る回路のクロックを調整できる。特に、SDRAMのように高速なアクセスを必要とする場合でも、本実施形態を用いれば、高速アクセス可能な集積回路の位相調整を容易に且つより正確に実現することができる。
【0088】
また、本実施形態の集積回路の設計方法を用いれば、試行錯誤で位相調節することなく、また、クロック位相調整のためのテストをすることなく、集積回路を設計できる。さらに、回路規模及び回路作製の工程数が削減されることから、消費電力も低減され、かつ、設計が容易なことから、開発期間の短縮にもつながり、また自動化することが可能となることにより、設計者の負担を軽減でき、単純な設計ミスの防止にもなる。
【0089】
また、本実施形態の集積回路を用いれば、従来のような複雑な回路を持たなくても適切なクロックを供給できる集積回路を提供できる。特に、SDRAMのような高速なアクセスを必要とするインターフェイス回路を備えた集積回路を供給できる。
【0090】
実施の形態2.
実施の形態1において、集積回路1000の内部のパラメータは、集積回路1000が実装されるシステムにより大きく変化することはなく、レイアウトより抽出したパラメータの変動範囲で予測可能である。しかし、外部要因によるパラメータ、例えば、ボード上の配線負荷及び配線遅延、SDRAM110の入力負荷容量等は、実装されるシステムによりバラツキがある。そこで、実施の形態2では、実施の形態1によるクロック位相調整方法を利用し、且つ、実装されるシステムの多様性を考慮したクロック位相調整方法、及び、外部メモリとアクセスするインターフェイス回路を備えた集積回路とその設計方法について説明する。
【0091】
実施の形態2によるクロック位相調整方法は、まず、実施の形態1によるクロック位相調整方法を応用した方法(後述する)で位相差Dを求め、集積回路が任意のシステムに実装されたとき、外部要因による遅延値の変動に対処できるよう、常にクロック信号の遅延を監視し、検出されたクロック信号の位相差に合わせてD値を選択できるという方法である。
【0092】
図4は、実施の形態2によるクロック位相調整方法を適用して作製されたインターフェイス回路400を備えた集積回路1010の構成の一部を示すブロック図である。図4では、説明を容易にするため、集積回路1010の構成のうち、SDRAM420とのアクセスに関わる構成を概略的に示した。集積回路1010は、SDRAM420とデータアクセスする任意のシステムに実装される。
【0093】
集積回路1010は、インターフェイス回路400、クロックジェネレータとしてのPLL401及び分周器402、第3のクロックバッファ403、及び第4のクロックバッファ405を備え、インターフェイス回路400は、SDCLKOを出力するSDCLKO出力バッファ404、出力用フリップフロップである第3のフリップフロップ(第3のFF)406、データを入出力する入出力バッファ407、SDCLKI入力バッファ408、第4のフリップフロップ(第4のFF)409、入力用フリップフロップである第5のフリップフロップ(第5のFF)410、位相差検出器411、及びエラーフラグ出力バッファ412を備える。図中、Tで始るパラメータを添えた矢印は、後述する、集積回路1010内の信号の伝達及び集積回路1010とSDRAM420との信号の伝達に関わる遅延パラメータを示す。
【0094】
PLL401は、例えば27MHzから逓倍した1080MHzのクロックOCLKを出力するものとする。
分周器402は、PLL401から入力されたクロックを分周して、基準となる67. 5MHzのクロックを生成する。
【0095】
第3のクロックバッファ403は、分周器402から出力されるクロックを受信し、外部メモリすなわちSDRAM420へ供給するためのクロックSDCLKOを駆動する。また、第3のクロックバッファ403は、後述するように、遅延値が選択可能な構成を有する。
【0096】
第4のクロックバッファ405は、分周器402から出力されるクロックDIVCKを駆動し、集積回路1010の内部を動作させるクロックICLKを生成し、ICLKを集積回路1010の各構成に供給する。
第3のFF406は、第1のFF105同様、ラッチされたデータを、ICLKに同期して、入出力バッファ407を介してSDRAM420に出力する。
【0097】
SDCLKI入力バッファ408は、SDRAM420に入力されたSDCLKOのフィードバッククロックSDCLKIが入力されるバッファである。
第4のFF409は、SDRAMコマンドによりSDRAM420内のデータから読み出されたリードデータを、入出力バッファ407を介して、フィードバッククロックSDCLKIに同期して取り込む。
【0098】
第5のFF410は、第4のFF409で取り込んだデータを、集積回路400の動作クロックICLKでラッチする。
位相差検出器411は、SDRAM420へ供給するためのSDCLKOと、SDRAM420からフィードバックされたクロックSDCLKIと、PLL401出力であるOCLKとを受信し、SDCLKOとSDCLKIとの位相差PDを検出する検出機能と、PDに合わせてDを選択するセレクタ機能とを持つ。
【0099】
さらに、位相差検出器411は、OCLKを用いてSDCLKOとSDCLKIとの位相差PDを検出し、後述するように、検出されたPDから予め設定された位相差Dを選択し、以下の式(16)よりSDRAMクロックの遅延値SDCLKDLYを決定する。Dは、以下の式で表される。
【0100】
D=(T6g+T6b+T6iw)
−(T5g+T5b+T5ow)
【0101】
式中、T6gは、分周器402から第4のクロックバッファ405迄の配線遅延を表し、T6bは、第4のクロックバッファ405のセル遅延を表し、T6iwは、第4のクロックバッファ405から第3のFF406迄の配線遅延を表し、T5gは、分周器402から第3のクロックバッファ403迄の配線遅延を表し、T5bは、第3のクロックバッファ403のセル遅延を表し、T5owは、第3のクロックバッファ403からSDCLKO出力バッファ404迄の配線遅延を表す。また、式(16)は、
【0102】
SDCLKDLY=T5g+T5b+T5ow
=(T6g+T6b+T6iw)−D
・・・式(16)
で表される。
【0103】
エラーフラグ出力バッファ412は、位相差検出器411がエラーを出したときに、エラーフラグを出力する。
本実施形態は、実施の形態1と同様、第1及び第2の必須条件を満たす必要がある。SDCLKO及びICLKのクロックジェネレータを分周期402とすると、第1の必須条件は、実施の形態1の条件1及び2と同様、
【0104】
条件5:「ICLKが分周期402から第3のFF406に到達する時間」と、「ICLKによって第3のFF406から出力されたデータがSDRAM420へ到達するまでの時間」との和から、「SDCLKOが分周期402からSDRAM420へ到達するまでの時間」を引いた第1の値が、SDRAM420のデータを取り込むために必要なデータホールド時間より大きく、
【0105】
SDCLKOの1サイクルの時間から、第1の値を引いた値が、SDRAM420のデータを取り込むために必要なデータセットアップ時間より大きいこと、と表すことができる。また、第2の必須条件は、
【0106】
条件6:「外部クロックが、分周器402から外部メモリすなわちSDRAM420に到達し、フィードバッククロックとしてSDRAM420から折り返して集積回路1010に入力され、さらに、SDRAM420からのデータをフィードバッククロックによって取り込むためのフリップフロップすなわち第4のFF409に到達するまでの時間」と、「第4のFF409のセル遅延」と、「第4のFF409から、内部クロックで動作している2段目のデータ取り込みフリップフロップすなわち第5のFF410までの配線遅延」とを足した値(以下、値V1と呼ぶことにする)から、
【0107】
「内部クロックが、分周器402から第5のFF410に到達するまでの時間」を引いた値が、第5のFF410のホールド時間より大きいこと、
条件7:「内部クロックが分周器402から第5のFF410に到達するまでの時間」と「SDRAMクロックの1サイクルの時間」との和から、値V1を引いた値が、第5のFF410のセットアップ時間より大きいこと、
【0108】
条件8:値V1が「内部クロックが分周器402から第5のFF410まで到達する時間」より大きいこと、
条件9:SDRAM420から出力されるデータDQより、フィードバッククロックSDCLKIが遅れすぎないこと、すなわち、「SDRAM420から出力されるデータがSDRAM420から第4のFF409へ到達する時間(ホールド時間+配線遅延+入力バッファ遅延)」から、「SDRAMクロックが、SDRAM420からフィードバックされ、第4のFF409へ到達するまでの時間」を引いた値が、「第4のFF409のホールド時間」より大きいこと、
と表すことができる。
【0109】
条件5は、式(6)のパラメータを本実施形態に適用した式(17)で表される。
SDHOLD−(T6f+T6ow+T6ioout
+T6bw−T5ioout−T5bw)
<D<
SDCLKCYCLE−SDSETUP−(T6f+T6ow
+T6ioout+T6bw−T5ioout−T5bw)
・・・式(17)
【0110】
式中、SDHOLDは、SDRAM420のデータ入力に必要なホールド時間を表し、T6fは、第3のFF406のセル遅延を表し、T6owは、第3のFF406から入出力バッファ407迄の配線遅延を表し、T6iooutは、入出力バッファ407の出力遅延を表し、T6bwは、入出力バッファ407からSDRAM420迄の配線遅延を表し、T5iooutは、SDCLKO出力バッファ404の出力遅延を表し、T5bwは、SDCLKO出力バッファ404からSDRAM420迄の配線遅延を表し、SDCLKCYCLEは、SDRAM420への供給クロックSDCLKOの1サイクル時間を表し、SDSETUPは、SDRAM420データ入力に必要なセットアップ時間を表す。
【0111】
条件6及び7は、式(18)で表すことができる。
T5ioout+T5bw+T8bw+T8ioin+T8ow
+T8f+T8iw−SDCLKCYCLE+T5FSETUP
<D<
T5ioout+T5bw+T8bw+T8ioin+T8ow
+T8f+T8iw−T5FHOLD・・・式(18)
式中、T8bwは、SDRAM420からSDCLKI入力バッファ408迄の配線遅延を表し、T8ioinは、SDCLKI入力バッファ408のバッファ遅延を表し、T8owは、SDCLKI入力バッファ408から第4のFF409迄の配線遅延を表し、T8fは、第4のFF409のセル遅延を表し、T8iwは、第4のFF409から第5のFF410迄の配線遅延を表し、T5FSETUPは、第5のFF410のデータ入力に必要なセットアップ時間を表し、T5FHOLDは、第5のFF410のデータ入力に必要なホールド時間を表す。また、SDCLKOとICLKは分周器402で生成されるので、両クロックの1サイクルの時間は同じである。
【0112】
位相差検出器411により検出される位相差PDは、外部クロックが集積回路1010から出力される時点と、外部クロックが外部メモリからフィードバックされて集積回路1010に到達する時点との位相差であるから、
PD=T5ioout+T5bw+T8bw+T8ioin
+T8ow・・・式(19)
となり、式(18)は、
PD+T8f+T8iw−SDCLKCYCLE
+T5FSETUP
<D<
PD+T8f+T8iw−T5FHOLD・・・式(20)
となる。
【0113】
条件8は、
D<T5ioout+T5bw+T8bw+T8ioin+T8ow
+T8f+T8iw
で表されるが、式(18)が満たされれば、条件8も満たされる。
【0114】
条件9は、
SDQHOLD+T6bw+T7ioin+T7ow
−(T8bw+T8ioin+T8ow)>T4FHOLD
で表される。式中、SDQHOLDは、SDRAM420から出力されるデータDQのホールド時間を表し、T7ioinは、入出力バッファ407のバッファ遅延を表し、T7owは、入出力バッファ407から第4のFF409迄の配線遅延を表し、T4FHOLDは、第4のFF409のデータ入力に必要なホールド時間を表す。
【0115】
条件7を表す上記式は、T6bw、T7ioin、T7ow、T8bw、T8ioin、T8owにおいて等長配線を心がけることによって満たされる。通常、外部メモリへ入力されたクロックがフィードバックされるインターフェイス回路では、条件7は必須なので、本実施形態では、上記のような等長配線をして、条件7をすでに満たしているものとする。
【0116】
式(17)〜(20)において、外部要因によるパラメータ、例えば、ボード上の配線負荷及び配線遅延、SDRAM420の入力負荷容量等は、実装されるシステムによりバラツキがあるが、インターフェイス回路400の内部パラメータ、例えば、T6f,T6ow,T8f,T8iw,T5FSETUP、T5FHOLDなどは、システムにより大きく変化することはなく、レイアウトより抽出したパラメータの変動範囲で予測可能である。従って、レイアウトから抽出された予測可能なパラメータを式(20)に代入し、Dの範囲を、MAXIMUM条件時とMINIMUM条件時とにわけて計算すると、PD以外の部分は、外部負荷容量により変化しないので、式(20)は、PDを変数とする一次不等式となる。
【0117】
例えば、レイアウトから抽出された予測可能なパラメータを式(20)に代入し、MAXIMUM条件時を実施の形態1と同様、DがTYPICAL時の約2倍として計算すると、式(20)は、
PD/2+d1<D<PD/2+d2・・・(20−1)
【0118】
となり、MINIMUM条件時を実施の形態1と同様、DがTYPCICAL時の約2分の1の値として計算すると、式(20)は、
2PD+d3<D<2PD+d4・・・(20−2)
【0119】
となると仮定する。式中、d1、d2、d3、d4は、レイアウトから抽出された予測可能なパラメータを式(20)に代入して得られた定数である。
【0120】
位相差PDは変数なので、d2>d4>d1>d3とすれば、式(20−1)及び式(20−2)は図5のグラフで表される。式(20−1)で表されるDの範囲は、図5のグラフ上では、黒塗りの四角形とひし形がついた直線の間である。式(20−2)で表されるDの範囲は、図5のグラフ上では、黒塗りの三角形とばつ印がついた直線の間である。
【0121】
一方、SDCLKOがSDRAM420に到達する時間と、インターフェイス回路400が出力したデータが到達する時間との差を規定した条件式である式(17)よりDの範囲を算出する。このとき、T5ioout、T6ioout、T5bw、T6bwによる配線遅延は、等長配線を心がけると、ほぼ同様の負荷が生じ、相対的に遅延が発生するため、式(17)へ与える影響は少なく、外部負荷容量が変わっても、式(17)は変数を持たない不等式で表される。
【0122】
例えば、レイアウトから抽出された予測可能なパラメータを式(17)に代入し、
d5<D<d6・・・式(17−1)
が得られたとする。式中、d5とd6は、レイアウトから抽出された予測可能なパラメータを式(17)に代入して得られる定数を表す。
【0123】
d5>d2として式(17−1)を図5のグラフに反映させ、式(20−1)、(20−2)及び(17−1)を満たす有効範囲を斜線で示す。位相差Dは、斜線で示された有効範囲内から任意に選択される。
【0124】
尚、Dの取り得る範囲に何らかの制限がある場合、制限に合わせてDの有効範囲を決めることもできる。例えば下限がd7に決まっている場合、式(17−1)は、
d5<d7の場合、d7<D<d6となり、
d5>d7の場合、d5<D<d6となる。
【0125】
本実施形態では、後述するように、位相差検出器411がOCLKのカウント数に従ってSDCLKOとSDCLKIとの位相差PDを検出しているので、上記Dの有効範囲のうち、PDがOCLKのカウント数と一致するときのDの範囲から選ぶとよい。例えば、PD=2クロックのときは、d5<D<d10から位相差Dを選ぶ。
【0126】
集積回路1010を作製するに当たり、Dの初期設定値を上述の方法で選ぶ。つまり、PDの初期設定値としてOCLK2クロック分に相当する位相差を選んだ場合、d5<D<d10から位相差Dの初期設定値を選ぶ。実施の形態1同様、選んだ初期設定値に基づいて、集積回路1010のクロックツリーを構成し、所望の集積回路1010を得る。尚、本実施形態ではOCLKのカウント数に基づいてDを選択したが、選択方法はこれに限られず、実装されるシステムに従ってDを選択すればよい。
【0127】
実施の形態2による集積回路1010は、所定のシステムに実装された後、上述の方法に従って予め選択された複数のD値から、位相差検出器411が検出した位相差に適したD値を選択することができる構成を有する。従って、実施の形態2は、外部要因によって遅延パラメータが変動する場合でも適切なクロックを自動的に出力できるクロック位相調整方法、集積回路及びその設計方法を提供することができる。
【0128】
次に、集積回路1010を所定のシステムに実装後、位相差検出器411が検出した位相差に基づいて、D値を選択する構成及び方法について詳細に説明する。
位相差検出器411は、SDCLKOとSDCLKIとの位相差を、OCLKでカウントし、そのカウント値つまり位相差によって第3のクロックバッファ403へ出力する設定値PSETを選択する。設定値PSETは、遅延値SDCLKDLYに対応した値である。
【0129】
位相差検出器411は、カウント値で表される位相差の各々に対して、位相差Dと、PSETと、エラーフラグの出力とを予め決めたテーブルを備え、テーブルを基にPSETを選択する。
【0130】
図6は、位相差検出器411が備えるテーブルの一例を示す。テーブル411−1は、位相差検出器411が検出したPD、ここではカウントしたOCLKのカウント値を示す表示部411−2と、各PDに対するDの値を示す表示部411−3と、第3のクロックバッファに出力する設定値PSETを示す表示部411−4と、エラーフラグの出力をH、エラーフラグの非出力をLで示す表示部411−5とを有する。
【0131】
このとき、各PDに対して設定されるDは、図5のグラフによって求められるようなDの有効範囲と検出されるPDとから求められる範囲から予め任意に選択された値である。例えばPD=2クロックのときのDは、図5のグラフよりd5<D<d10の範囲から予め選択しておく。
【0132】
また、式(20)によるDの範囲が式(17)の範囲から外れる場合(図5ではPDが1クロック分又は6クロック分のとき)、エラーフラグ表示部411−5にHを表示する。例えば、テーブル411−1では、PDが1クロック分、あるいは6クロック分の場合、エラーフラグ表示部411−5にHが示されているが、これは、D11とD16とが式(17−1)を満たしていないということを示す。なお、設定値PSETは、後述する第3のクロックバッファが有するトライステートバッファに対応している。
【0133】
尚、本実施形態では、位相差検出器411で検出されたPDに対するDが求まらない場合に、エラーフラグ出力バッファ412からエラーフラグを出力するように設定したが、T6ioout等に外部負荷を付けるなどすれば、エラーフラグの出力を回避することも可能なので、エラーフラグは必ず必要な機能ではない。
【0134】
図7は、第3のクロックバッファ403の構成を例示するブロック図である。第3のクロックバッファ403は、位相差検出器411で検出されるPDに合わせて、式(16)から求められるSDCLKDLYが選択されるように、異なる個数の遅延素子を有する複数本の信号ライン(図7では▲1▼〜▲5▼)を備える。例えば、図7中の▲1▼は、SDCLKDLYが(T6g+T6b+T6iw)−D11となるクロックが出力されるラインである。尚、図中Xは、X=T6g+T6b+T6iwである。
【0135】
各ラインの最終遅延素子4031〜4035は、トライステートバッファと呼ばれ、位相差検出器411から出力される設定値PSETに従って選択され、選択されたトライステートバッファから出力される信号がSDCLKOとして出力される。図6中のPSETの各数字は、図7のトライステートバッファ4031〜4035に対応している。つまり、PSETの最下位(LSB)はバッファ4031と対応し、PSETの最下位が「1」であれば、バッファ4031が選択され、最下位が「0」であれば、バッファ4031は選択されない。尚、図6では、D=D16のときPSETは「10000」となっているが、これは、D=D16のときのSDCLKDLY(=X−D16)が短すぎて、図7に示す信号ラインでは対応できず、最も遅延値の小さい信号ライン▲5▼で代用するように設定されている。
【0136】
図8は、集積回路1010のクロックスキュー調整時に行うクロック位相調整方法を示したフローチャートである。集積回路1010を実装後に行うクロック位相調整については、後述する。
まず、ステップS10で、集積回路1010のレイアウトに従ってクロックツリーを構成する。
【0137】
次にステップS11で、レイアウトから回路のネットリストに対応した遅延パラメータを抽出する。
次にステップS12で、D値を求める計算プログラムに、既知の又は要求される外部要因パラメータ、例えば、SDRAM420のデータセットアップ、ホールド時間、ボードの配線遅延、配線負荷、及びSDRAM420の入力負荷容量を設定する。
【0138】
次にステップS13で、内部クロックICLKの始点と、SDRAM用クロックSDCLKOの始点とを指定し、且つ、前記条件5の終点である、SDRAM420へのSDCLKOの到達点及び、データの到達点を指定する。さらに前記条件6から9の終点である、第5のFF410のデータ入力ピンを指定する。
【0139】
ステップS14では、PDの値を任意に複数設定する。ここでは、OCLDで位相差PDをカウントしているので、PDの値はOCLKのクロック数を基準として設定されている。
ステップS15では、ステップS11で抽出した遅延パラメータを基に、SDCLKOによりデータ及び制御信号(コマンド)がSDRAM420に取り込まれるように、且つ、SDRAM420の出力したデータが、フィードバッククロックSDCLKIでインターフェイス回路400内部へ取り込まれるように、式(17)〜式(20)を使用して、位相差Dの範囲を算出し、設定したPDの各値に対して位相差Dを選択する。
【0140】
次にステップS15で決定されたDに基づき、第3のクロックバッファ403の遅延素子を設定(ステップS16)し、ステップS15で決定されたDのなかから、初期値を任意に選択する(ステップS17)。
図4、図6、図7を用いて、集積回路1010が任意のシステムに実装された後の位相差検出器411の動作及びクロック位相調整について説明する。
【0141】
今、位相差Dは初期状態で、例えばPD=3クロック、すなわちD=D13に初期設定されており、実装された基板上で電源投入後、位相差検出器411が、OCLKで2クロック分の位相差PDをカウントしたと仮定する。Dの値は、図6よりD=D12なので、位相差検出器411は、第3のクロックバッファ403の信号ラインがD=D12に切り替わるように、設定値「00010」を第3のクロックバッファ403に出力する。
【0142】
第3のクロックバッファ403では、設定値「00010」に対応するトライステートバッファ4032が選ばれ、選ばれたバッファ4032からSDCLKOが出力される。
以上のように、実装したボードによる遅延及び外部負荷のバラツキがあっても、LSI自ら自動的に位相差を検出し、かつ、位相差Dを再設定することで、複数のシステムへの対応が容易になる。
【0143】
集積回路1010の設計は以下の手順に従って行われる。
まず、集積回路1010のレイアウトを作製し、レイアウトから抽出された各パラメータと式(17)及び(20)とによって算出されるDの範囲を求める。
【0144】
求めたDの範囲を基に、位相差検出器411のテーブル411−1を作製する。
テーブル411−1と式(16)とを基に、第3のクロック403のクロックツリーを作製する。
【0145】
以上のような設計方法をとることで、従来のデータ転送装置のように、設計者が試行錯誤で位相調整する必要もなく、且つ位相調整のための特別な回路を必要とすることもなく、実装されるシステムの多様性を考慮した、動作確実性の高い位相でのクロック供給が可能な集積回路を容易に作製できる。
【0146】
以上説明したように、外部メモリへ出力する外部クロックと、外部メモリからのフィードバッククロックとの位相差を検出することにより、内部クロックと外部クロックとの位相差を調整できる。従って、実装されるシステムの配線遅延や、外部負荷容量などの外部要因が多様であっても、最適なクロック位相を容易に調整できる。
【0147】
なお、本実施形態では、OCLKを1080MHz、分周した基準となるクロックを67.5MHzとしたが任意の周波数で良い。また、第3のクロックバッファ403の構成は、1例でありこの限りではない。さらに、位相差検出器411は、各クロックの位相差を検出しその差をカウントして時間を計測したが、任意の位相比較手段で良い。また、本実施形態では、エラーフラグを出力するようにしたが、必ず出力する必要はなく、また、独立して持たずに、他ピンと共用しても良い。
【0148】
本実施形態では、図4に例示したインターフェイス回路400を備えた集積回路1010に関して説明してきたが、集積回路の構成は図4に限られず、クロックを用いて外部メモリとアクセスするデバイス全てに本実施形態を適用できる。図4以外の構成のデバイスを設計する際は、上記第1及び第2の必須条件を満たすように、上記条件5〜7及び式(16)〜(20)を参考にして、遅延パラメータを求め、外部クロックの位相差に合わせて遅延パラメータを選択できる構成を備えるデバイスを設計すればよい。
【0149】
実施の形態3.
さらに、実施の形態1では、完全同期設計を前提としたが、フィードバッククロック方式を採用する回路を、実施の形態1と同様の位相調整方法と設計方法で実現できる。
【0150】
図9は、実施の形態3によるクロック位相調整方法を適用して作製した、外部メモリすなわちSDRAM110へデータアクセスするインターフェイス回路500を備えた集積回路1020の構成の一部を示すブロック図である。図9では、説明を容易にするため、集積回路1020の構成のうち、SDRAM110とのアクセスに関わる構成を概略的に示した。また、図1と同様の構成については、同じ参照番号を付与し、ここではその説明を省略する。
【0151】
集積回路1020は、クロックジェネレータ101と、第1のクロックバッファ102と、第2のクロックバッファ104と、インターフェイス回路500とを備え、インターフェイス回路500は、SDCLKO出力バッファ103と、出力用フリップフロップである第1のフリップフロップ(第1のFF)105と、入出力バッファ106と、SDCLKI入力バッファ508と、入力用フリップフロップである第6のフリップフロップ(第6のFF)509と、第7のフリップフロップ(第7のFF)510と、を備える。図中、Tで始るパラメータが添えてある矢印は、後述する集積回路1020内の信号の伝達及び集積回路1020とSDRAM110との信号の伝達に関わる遅延パラメータを示す。
【0152】
SDCLKI入力バッファ508は、SDRAM420に入力されたSDCLKOのフィードバッククロックSDCLKIが入力されるバッファである。
第6のFF509は、SDRAMコマンドによりSDRAM110内から読み出されたリードデータを、入出力バッファ106を介し、フィードバッククロックSDCLKIに同期して取り込む。
【0153】
第7のFF510は、第6のFF509で取り込んだデータを、集積回路1020の動作クロックICLKでラッチする。
第2のクロックバッファ104は、基準クロックを駆動し、集積回路1020内部を動作させる内部クロックICLKを生成し、ICLKを集積回路1020内の構成に供給する。図9は、説明を容易にするために、ICLKを第1のFF105及び第7のFF510に出力した場合について示す。
【0154】
図10は、データ読み出し時のクロックとデータの位相関係を示したタイミングチャートである。図9と図10を用いて、クロックとデータの位相関係について説明する。SDCLKO信号及びSDRQAMコマンドがSDRAM110に到達するまでのチャートは、図2と同様なので、ここではその説明を省略する。
【0155】
SDCLKOのフィードバッククロックSDCLKIは、SDRAM110で折り返してから、T9bw+T9ioin+T9owの遅延の後、第6のFF509へ到達する。なお、T9bw+T9ioin+T9ow≒T2bw+T3ioin+T10owとする。これは、実施の形態で述べたとおりである。
【0156】
読み出されるデータ(リードデータ)は、SDCLKOがSDRAM110に到達してから、SDQDELAYで表される時間後に読み出される。
また、上記条件より、リードデータは、SDCLKIが第6のFF509に到達してからSDQDELAYで表される時間後に、第6のFF509に到達すると考えることができる。
【0157】
SDCLKIに同期して第6のFF509にラッチされたデータは、T10f+T9iwで表される時間後に第7のFF510に到達する。T10fは、第6のFF509における遅延を表し、T9iwは、第6のFF509から第7のFF510までの配線遅延を表す。
【0158】
なお、SDRAM110から出力されるデータDQのホールド時間をSDQHOLDと表し、第7のFF510でのデータ入力に際し、必要なセットアップ時間をT9FSETUPと表し、必要なホールド時間をT9FHOLDと表し、図10中に示した。
【0159】
次に、図9及び図10を用いて、データ転送回路のクロック位相調整方法において重要なクロックの位相差Dの計算方法について述べる。
実施の形態1で述べた条件1及び2の条件に加えて、実施の形態2で述べた条件6から9を実施の形態3に適用した条件が加わる。つまり、
【0160】
条件10:「外部クロックすなわちSDRAMクロックが、クロックジェネレータ101から外部メモリすなわちSDRAM110に到達し、フィードバッククロックとしてSDRAM110から折り返して集積回路1020に入力され、さらに、SDRAM110からのデータをフィードバッククロックによって取り込むためのフリップフロップすなわち第6のFF509に到達するまでの時間」と、「第6のFF509のセル遅延」と、「第6のFF509から、内部クロックで動作している2段目のデータ取り込みフリップフロップすなわち第7のFF510までの配線遅延」とを足した値(以下、値V2と呼ぶことにする)から、
【0161】
「内部クロックが、クロックジェネレータ101から第7のFF510に到達するまでの時間」を引いた値が、第7のFF510のホールド時間より大きいこと、
【0162】
条件11:「内部クロックがクロックジェネレータ101から第7のFF510に到達するまでの時間」と「SDRAMクロックの1サイクルの時間」との和から、値V2を引いた値が、第7のFF510のセットアップ時間より大きいこと、
【0163】
条件12:値V2が「内部クロックがクロックジェネレータ101から第7のFF510まで到達する時間」より大きいこと。
条件13:「SDRAM110から出力されるデータがSDRAM110から第6のFF509へ到達する時間(ホールド時間+配線遅延+入力バッファ遅延)」から、「SDRAMクロックが、SDRAM110からフィードバックされ、第6のFF509へ到達するまでの時間」を引いた値が、「第6のFF509のホールド時間」より大きいこと。
【0164】
条件10から13は、以下の式を満たすことによって得られる。なお、クロックスキュー調整結果から、第2のクロックバッファ104から第7のクロックバッファ510までの配線遅延T13iwが、T13iw≒T2iwであるとする。
【0165】
条件10:(CKD+T9bw+T9ioin+T9ow)+T10f+T9iw−MCKD>T9FHOLD
式中、T9bwは、SDRAM110からSDCLKIバッファ508迄の配線遅延を表し、T9ioinは、SDCLKI入力バッファ508のバッファ遅延を表し、T9owは、SDCLKI入力バッファ408から第6のFF509迄の配線遅延を表し、T9iwは、第6のFF509から第7のFF510迄の配線遅延を表し、T9FHOLDは、第7のFF510のデータ入力に必要なホールド時間を表す。
【0166】
条件11:(MCKD+SDCLKCYCLE)−(CKD+T9bw+T9ioin+T9ow+T10f+T9iw)>T9FSETUP
式中、T9FSETUPは、第7のFF510のデータ入力に必要なセットアップ時間を表す。
【0167】
条件12:CKD+T9bw+T9ioin+T9ow+T10f
+T9iw>MCKD
条件13:SDQHOLD+T2bw+T3ioin+T10ow
−(T9bw+T9ioin+T9ow)>T10FHOLD
【0168】
上記に示した、条件8から11を満たすための式をまとめると、以下の3つの式が得られる。
T1ioout+T1bw+T9bw+T9ioin
+T9ow+T10f+T9iw−T9FHOLD
>D>
T1ioout+T1bw+T9bw+T9ioin+T9ow
+T10f+T9iw−SDCLKCYCLE+T9FSETUP
T1ioout+T1bw+T9bw+T9ioin+T9ow
+T10f+T9iw>D
SDQHOLD+T2bw+T3ioin+T10ow
−(T9bw+T9ioin+T9ow)>T10FHOLD
【0169】
例えば、実施の形態1と同様、表1及び表2に示したMAX条件、MINIMUM条件を満たす場合、Dの値は、
1.652<D<3.64
1.612<D<2.94
【0170】
となり、この場合、以上のDの範囲より、中心値を取って、D≒2.3nsecを設定すればよい。
集積回路1020のレイアウトを作製後、位相差Dが算出された値になるよう、クロックツリーを構成すれば、フィードバッククロックを用いた場合でもSDRAM110への確実なアクセスを可能とするインタフェース回路500を備える集積回路1020を得ることができる。
【0171】
本実施形態では、図9に示す構成をもつ集積回路1020に関して説明してきたが、インターフェイス回路500及び集積回路1020の構成は図9に限られず、フィードバッククロックとを用いて外部メモリとアクセスするデバイス全てに本実施形態を適用できる。
【0172】
以上説明してきたように、本実施形態によるクロック位相調整方法を用いれば、フィードバッククロックを用いて外部メモリとアクセスするデバイスのレイアウト設計時、例えばクロックスキュー調整時にクロックバッファの遅延値を変更することによって、クロックの位相を調整できる。従って、従来のように試行錯誤で位相を調節することなく、また、クロック位相調整のためのテストをすることなく、外部メモリと確実にデータアクセス出来る回路を生成できる。特に、SDRAMのように高速なアクセスを必要とする場合でも、本実施形態を用いれば、高速アクセス可能な集積回路の外部クロックと内部クロックとの位相調整を容易に且つより正確に実現することができる。
【0173】
また、本実施形態の集積回路の設計方法を用いれば、試行錯誤で位相調節することなく、また、クロック位相調整のためのテストをすることなく、集積回路を設計できる。さらに、回路規模及び回路作製の工程数が削減されることから、消費電力も低減され、かつ、設計が容易なことから、開発期間の短縮にもつながり、また自動化することが可能となることにより、単純な設計ミスの防止にもなる。
【0174】
また、本実施形態の集積回路を用いれば、従来のような複雑な回路を持たなくても適切なクロックを供給できる集積回路を提供できる。特に、SDRAMのような高速なアクセスを必要とするインターフェイス回路を備えた集積回路を供給できる。
【0175】
実施の形態4.
非常に高速なクロックを用いて集積回路が外部メモリにアクセスする場合、実施の形態1で示した構成では、位相差Dの選択が不可能な場合も生じる。
【0176】
例えば、表1、表2のパラメータのうち、クロックサイクルを12.3nsec(81MHz)として、条件1の式(6)によりSDCLKOとICLKの位相差Dの範囲を算出し、条件2の式(11)によりSDCLKOとICLKとの位相差Dの範囲を算出する。条件1は、
【0177】
1−(1.36+1.58+7.79+0.233−0.105)
<D<
12.3−3−(1.36+1.58+7.79+0.233−7.33−0.105)
【0178】
つまり、−5.28<D<5.772となり、条件2は、
(7.33+0.105+0.233+1.4+2.27)+9−12.3+0.89
<D<
(7.33+0.105+0.233+1.4+2.27)+3−0
つまり、8.928<D<14.338となる。
【0179】
しかし、上記の計算結果が示すDの範囲を同時に満たす値はなく、適切なDの値を選択することができない。
このような場合、外部メモリからデータを取り込むためのクロックを2系統にして、2つの位相差D0及びD1の値を調節することによって、所望の回路を実現することができる。
【0180】
図11は、実施の形態4によるクロック位相調整方法を適用して作製した、外部メモリすなわちSDRAM110へデータアクセスするインターフェイス回路600を備えた集積回路1030の構成の一部を示すブロック図である。図11では、説明を容易にするため、集積回路1030の構成のうち、SDRAM110とのアクセスに関わる構成を概略的に示した。なお、図1と同様の構成については、同じ参照番号を付与し、ここではその詳細な説明を省略する。
【0181】
集積回路1030は、クロックジェネレータ101と、第1のクロックバッファ102と、第2のクロックバッファ104と、第3のクロックバッファ601と、インターフェイス回路600とを備え、インターフェイス回路600は、SDCLKO出力バッファ103と、出力用フリップフロップである第1のフリップフロップ(第1のFF)105と、入出力バッファ106と、入力用フリップフロップである第8のフリップフロップ(第8のFF)602と、第9のフリップフロップ(第9のFF)510と、を備える。図中、Tで始るパラメータが添えてある矢印は、後述する集積回路1030内の信号の伝達及び集積回路1030とSDRAM110との信号の伝達に関わる遅延パラメータを示す。
【0182】
第8のFF602は、SDRAMコマンドによりSDRAM110内のデータから読み出されたリードデータを、入出力バッファ106を介して、第3のクロックバッファ601から出力されるクロックICLK1に同期して取り込む。
【0183】
第9のFF603は、第8のFF602で取り込んだデータを、第2のクロックバッファ104から出力されるクロックICLK0でラッチする。
第2のクロックバッファ104は、基準クロックを駆動し、集積回路1030内部を動作させる内部クロックICLK0を生成し、ICLK0を集積回路1030内の任意の構成に供給する。図9には、説明を容易にするために、ICLK0を第1のFF105及び第9のFF603に出力した場合について示す。
【0184】
第3のクロックバッファ601は、基準クロックを駆動し、クロックICLK1を生成する。
図12は、データ読み出し時のクロックとデータの位相関係を示したタイミングチャートである。図11と図12を用いて、クロックとデータの位相関係について説明する。SDCLKO信号及びSDRQAMコマンドがSDRAM110に到達するまでのチャートは、図2と同様なので、ここではその説明を省略する。
【0185】
D0は、SDRAMクロックSDCLKO(LSI)と内部クロックICLK0との位相差、すなわち、ICLK0がクロックジェネレータ101から第1のFF105に到達する時間から、SDCLKOがクロックジェネレータ101からSDCLKO出力バッファ103へ到達する時間を引いた値である。
【0186】
D1は、SDCLKOと内部クロックICLK1との位相差つまり、ICLK1がクロックジェネレータ101から第8のFF602に到達する時間から、SDCLKOがクロックジェネレータ101からSDCLKO出力バッファ103へ到達する時間を引いた値である。
【0187】
ICLK0のタイミングで第1のFF105がSDRAMコマンドを出力し、T2ow+2Tioout+T2bwで表される時間後にSDRAM110に到達する。
SDRAM110からデータを読み出すときは、SDCLKOがSDRAM110に到達してからSDQDELAYで表される時間後に、データの読み出しが開始される。
【0188】
読み出されるデータ(リードデータ)は、SDRAM110から読み出されてから、T2bw+T3ioin+T11owで表される時間後に第8のFF602に到達する。T11owは、入出力バッファ106から第8のFF602迄の配線遅延を表す。
【0189】
さらに、第8のFF602に入力されたデータは、ICLK1が立ち上がってから、T11f+T11iwで表される時間後に第9のFF603に到達する。T11fは、第8のFF602のセル遅延を表し、T11iwは、第8のFF602から第9のFF603までの配線遅延を表す。
【0190】
次に、クロックの位相差Dの計算方法について述べる。D0及びD1は以下の条件を満たす。
条件14:D0は実施の形態1の式(6)を満たす。
条件15:D1は実施の形態1の式(11)を満たす。
【0191】
条件16:ICLK1より出力されたデータが(T11f+T11iw)で表される遅延値分送れて、第9のFF603に到達しても、ICLK0でデータを取り込むことができる、つまり、ICLK1とICLK0との位相差(SDCLKCYCLE−(D1−D0))から、データの遅延値(T11f+T11iw)を引いた値が第9のFFのセットアップ時間より大きい。
【0192】
条件16を式で表すと、
SDCLKCYCLE−(D1−D0)−(T11f+T11iw)>T11FSETUPとなり、式中、T11FSETUPは第9のFF603のセットアップタイムを表す。
【0193】
条件14〜16を満たすDの算出について、例を挙げて説明する。各パラメータは、実施の形態1の表1及び表2の値を用い、クロックサイクルを12.3nsec(81MHz)に変更する。また、T11f、T11iw、及びT11FSETUPのパラメータは表3に示す。
【0194】
【表3】
【0195】
また、クロックジェネレータ101から第3のクロックバッファ601までの配線遅延T12g、第3のクロックバッファ601のセル遅延T12b、第3のクロックバッファ601から第8のFF602までの配線遅延T12iwは、T2g、T2b、T2iwとそれぞれ等しいものとし、第2のクロックバッファ104から第9のFF603への配線遅延T14iwは、T2iwと等しいものとし、T11owは、T3owと等しいものとし、第8のFF602のセットアップ時間及びホールド時間は、T3FSETUP、T3FHOLDとそれぞれ等しいものとする。
【0196】
上記パラメータを用いて条件14〜16を満たすDを実施の形態1と同様に、計算してみると、以下のようになる。
MAXIMUM条件時は、位相差D0、D1のTYPICAL時の約2倍として計算すると、
【0197】
条件14より
1−(1.36+1.58+7.79+0.233−0.105)
<2D0<
12.3−3−(1.36+1.58+7.79+0.233−7.33−0.105)
−2.14<D0<2.886
【0198】
条件15より、
(7.33+0.105+0.233+1.4+2.27)+9−12.3+0.89
<2D1<
(7.33+0.105+0.233+1.4+2.27)+3−0
4.464<D1<7.169
【0199】
MINIMUM条件時は、位相差DがTYPICAL時の約2分の1の値として計算すると、
条件14より、
1−(0.17+0+1.24+0.099−1.23−0.105)
<D0/2<
12.3−3−(0.17+0+1.24+0.099−1.23−0.105)
1.724<D<18.252
【0200】
条件15より、
(1.23+0.105+0.099+0.17+0)+9−12.3+0.41
<D1/2<
(1.23+0.105+0.099+0.17+0)+3−0
−2.572<D1<9.208
【0201】
以上より、
1.724<D0<2.886
4.464<D1<7.169
【0202】
また、条件16より、MAXIMUM条件時は、
2(D1−D0)<9.24
D1−D0<4.62
となり、MINIMUM条件時は、
(D1−D0)/2<11.53
D1−D0<23.06
【0203】
となり、条件16におけるMAXIMUM及びMINIMUM条件を満たす範囲は、
D1−D0<4.62
となる。
【0204】
条件14、15、及び16を満たすD0及びD1は、例えば、
D0≒2.3nsec
D1≒5.8nsec
と選択することができる。
【0205】
集積回路1030のレイアウトを作製後、位相差Dが算出された値になるよう、クロックツリーを構成すれば、SDRAM110にアクセス可能なインタフェース回路600を備える集積回路1030を得ることができる。
【0206】
本実施形態では、図11に示す構成をもつ集積回路1030に関して説明してきたが、インターフェイス回路600及び集積回路1030の構成は図11に限られず、クロックを用いて外部メモリとアクセスするデバイス全てに本実施形態を適用できる。
【0207】
以上説明してきたように、本実施形態によるクロック位相調整方法を用いれば、より高速なクロックを用いて外部メモリとアクセスするデバイスの設計を容易に且つ確実に行える。特に、SDRAMのように高速なアクセスを必要とする場合に有効である。
【0208】
なお、ここでは、第9のFFの前に設けるFFは第8のFF1段のみであったが、複数段あっても同様である。
また、これと同様クロックバッファもICLK1の第3のクロックバッファ601のみであったが、複数段使用しても同様な方法で可能であることはいうまでもない。
【0209】
また、従来のような複数信号経路に複数の遅延素子を挿入するような複雑な回路を持たなくても、適切なデータ転送を行え、またクロックを供給できる集積回路を提供できる。特に、SDRAMのような高速なアクセスを必要とするデバイスの設計を容易にする。また、外部メモリへ出力する外部クロックと、外部メモリからのフィードバッククロックとの位相差を検出する検出器を設けることにより、インターフェイス回路自ら実遅延を検出し、内部クロックと、外部クロックとの位相差を調整できる。従って、実装されるシステムの配線遅延や、外部負荷容量などの外部要因が多様であっても、最適なクロック位相を調整できる。
【0210】
なお、実施の形態1から4の方法を、CADシステムに組み込むことにより、設計を自動化することが出来る。
また、実施の形態1から4では、T1bw、T2bw、T3bwは、ボードレイアウトより算出される遅延情報であるとしたが、ボードレイアウトに対して要求される遅延値であっても良い。
【0211】
また、実施の形態1から4では、集積回路からSDRAMへ出力するデータに着目して計算したが、RAS、CAS等の制御信号の遅延値も考慮されている。 また、外部メモリとアクセスするインターフェイス回路、集積回路及びデバイス中のフリップフロップは、外部メモリとアクセスするデータの種類によって適宜設けられるものである。従って、出力用のフリップフロップと入力用のフリップフロップの数は、実施の形態1から4の例に限定されるものではなく、インターフェイス回路、集積回路、デバイス、システムに従って変更される。
【0212】
また、本実施の形態では集積回路にSDRAMが一つ接続された場合について説明してきたが、集積回路に接続される外部メモリの数は複数であってもよい。この場合、それぞれの外部メモリのパラメータ、例えば、セットアップ時間、ホールド時間、データ出力遅延を抽出し、本実施の形態に適用すれば良い。
【0213】
産業上の利用可能性
本発明は、外部メモリとデータアクセスする集積回路に適用できる。
【図面の簡単な説明】
【図1】実施の形態1によるクロック位相調整方法を適用して作製した集積回路1000の回路構成を示すブロック図である。
【図2】クロックとデータの位相関係を示したタイミングチャートである。
【図3】集積回路1000におけるクロック位相調整方法を示したフローチャートである。
【図4】実施の形態2による集積回路1010の回路構成を示すブロック図である。
【図5】式(20−1)及び式(20−2)を表したグラフである。
【図6】位相差検出器411が備えるテーブルの一例を示す。
【図7】第3のクロックバッファ403の構成を示すブロック図である。
【図8】集積回路1010におけるクロック位相調整方法を示したフローチャートである。
【図9】実施の形態3による集積回路1020の回路構成を示すブロック図である。
【図10】クロックとデータの位相関係を示したタイミングチャートである。
【図11】実施の形態4による集積回路1030の回路構成を示すブロック図である。
【図12】クロックとデータの位相関係を示したタイミングチャートである。
【図13】特開平9−185427号公報によるインターフェイス回路を示す回路図である。
Claims (11)
- クロックに同期して外部メモリとデータアクセスする集積回路であって、
クロックを生成するクロックジェネレータと、
上記クロックジェネレータにより生成したクロックを分岐したクロックの一方が入力され、上記外部メモリに供給するための外部クロックとして出力する、少なくとも1つの第1のクロックバッファと、
上記クロックジェネレータにより生成したクロックを分岐したクロックの他方が入力され、上記集積回路を動作させるための内部クロックとして出力する、少なくとも1つの第2のクロックバッファと、
上記第1のクロックバッファが出力した外部クロックを上記外部メモリに出力するクロック出力バッファと、
上記外部メモリへ出力するためのデータを上記内部クロックに同期して出力するデータ出力用フリップフロップと、
上記外部メモリから出力されるデータを上記内部クロックに同期して取り込む入力用フリップフロップと、
を備え、
上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達するまでの時間と、到達した該内部クロックによって該データ出力用フリップフロップから出力されたデータが上記外部メモリへ到達するまでの時間との和から、上記外部クロックが上記クロックジェネレータから上記外部メモリへ到達するまでの時間を引くことによって得られる第1の値が、上記外部メモリのデータホールド時間より大きいという第1の条件と、
上記外部クロックの1サイクルの時間から、上記第1の値を引いた値が、上記外部メモリのデータセットアップ時間より大きいという第2の条件と、
上記外部クロックが上記クロックジェネレータから上記外部メモリへ到達するまでの時間と、到達した該クロックを受けて該外部メモリから出力されるデータのホールド時間と、該データが上記入力用フリップフロップに到達するまでの時間との和から、上記内部クロックが該クロックジェネレータから該入力用フリップフロップに到達するまでの時間を引いた値が、該入力用フリップフロップのデータホールド時間より大きいという第3の条件と、
上記内部クロックの1サイクルの時間と、上記内部クロックが上記クロックジェネレータから上記入力用フリップフロップに到達するまでの時間との和から、該外部クロックが該クロックジェネレータから該外部メモリへ到達する時間と、到達した該外部クロックを受けて該外部メモリから出力されるデータの出力遅延時間と、該データが該入力用フリップフロップに到達するまでの時間との和を引いた値が、該入力用フリップフロップのデータセットアップ時間より大きいという第4の条件と、
を満たすように、上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記クロック出力バッファへ到達する時間を引いた値である位相差Dの値が設定されている、
ことを特徴とする集積回路。 - クロックに同期して外部メモリとデータアクセスする集積回路であって、
クロックを生成するクロックジェネレータと、
上記クロックジェネレータが生成したクロックを外部クロックとして駆動する少なくとも1つの第1のクロックバッファと、
上記クロックジェネレータが生成したクロックを内部クロックとして駆動する少なくとも1つの第2のクロックバッファと、
上記外部クロックを上記外部メモリに出力するクロック出力バッファと、
上記外部メモリへ出力するためのデータを上記内部クロックに同期して出力するデータ出力用フリップフロップと、
上記外部メモリから出力されるデータを、上記外部メモリに入力した外部クロックのフィードバッククロックによってラッチする第1の入力用フリップフロップと、
上記第1の入力用フリップフロップにラッチされたデータを、上記内部クロックによってラッチする第2の入力用フリップフロップと、
を備え、
上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達するまでの時間と、到達した該内部クロックによって該データ出力用フリップフロップから出力されたデータが上記外部メモリへ到達するまでの時間との和から、上記外部クロックが上記クロックジェネレータから上記外部メモリへ到達するまでの時間を引くことによって得られる第1の値が、上記外部メモリのデータホールド時間より大きく、
上記外部クロックの1サイクルの時間から、上記第1の値を引いた値が、上記外部メモリのデータセットアップ時間より大きく、
上記外部クロックが、上記クロックジェネレータから上記外部メモリに到達し、フィードバッククロックとして該外部メモリから折り返して上記第1の入力用フリップフロップに到達するまでの時間と、該第1の入力用フリップフロップのセル遅延と、該第1の入力用フリップフロップから上記第2の入力用フリップフロップまでの配線遅延と、を足した値Vから、上記内部クロックが該クロックジェネレータから該第2の入力用フリップフロップに到達するまでの時間を引いた値が、該第2の入力用フリップフロップのホールド時間より大きく、
上記内部クロックが上記クロックジェネレータから上記第2の入力用フリップフロップに到達するまでの時間と上記外部クロックの1サイクルの時間との和から、上記値Vを引いた値が、該第2の入力用フリップフロップのセットアップ時間より大きく、
上記値Vが、上記内部クロックの上記クロックジェネレータから上記第2の入力用フリップフロップまで到達する時間より大きく、
上記外部メモリから出力されるデータの該外部メモリから上記第1の入力用フリップフロップへ到達する時間から、上記外部クロックの該外部メモリからフィードバックされ該第1の入力用フリップフロップへ到達するまでの時間を引いた値が、該第1の入力用フリップフロップのホールド時間より大きい、
条件を満たすように、
上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記クロック出力バッファへ到達する時間を引いた値である位相差Dの値が設定されている、
ことを特徴とする集積回路。 - 請求項2に記載の集積回路において、
上記集積回路は、さらに、
上記外部クロックが上記集積回路から出力される時点と、該外部クロックが上記外部メモリからフィードバックされて該集積回路に到達する時点との第2の位相差と、該第2の位相差に対して上記条件を満たす第1の位相差とが予め複数組設定され、上記集積回路が任意のシステムに実装された後、実際に第2の位相差を検出し、該検出した結果から該当する第1の位相差を選択する位相差検出回路を備え、
上記第1及び又は第2のクロックバッファは、上記予め設定された複数の第1の位相差のそれぞれに対応する遅延素子群を備え、上記位相差検出回路が選択した第1の位相差に基づいて、該遅延素子群は切り替えられる、
ことを特徴とする集積回路。 - 請求の範囲第1項記載の集積回路において、
上記集積回路は、
上記入力用フリップフロップとして、上記外部メモリから出力されるデータをラッチする第1の入力用フリップフロップと、上記第1の入力用フリップフロップにラッチされたデータをラッチする第2の入力用フリップフロップと、
上記第2のクロックバッファとして、上記データ出力用フリップフロップ及び上記第2の入力用フリップフロップに第1の内部クロックを供給するクロックバッファと、上記第1の入力用フリップフロップに第2の内部クロックを供給するクロックバッファと、
を備え、
上記第1及び第2の条件を満たすように、上記第1の内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記外部クロック出力用バッファへ到達する時間を引いた位相差D0の値が設定され、
上記第3及び第4の条件を満たす、上記第2の内部クロックが上記クロックジェネレータから上記第1の入力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記外部クロック出力用バッファへ到達する時間を引いた位相差D1が、上記位相差D0と該位相差D1との位相差から、上記第1の入力用フリップフロップに入力されたデータが上記第2の入力用フリップフロップに到達するまでの遅延を引いた値が該第2の入力用フリップフロップのセットアップ時間より大きくなるよう、設定される、
ことを特徴とする集積回路。 - 任意のデバイスがクロックに同期して、外部メモリとデータアクセスする際のクロック位相調整方法であって、
上記デバイスの設計時に該デバイスのレイアウトから、該デバイス内の信号の伝達及び該デバイスと上記外部メモリとの信号の伝達に関わる時間のパラメータを抽出する工程と、
上記パラメータを基に、上記外部メモリに供給される外部クロックの出力時点と、上記デバイスを動作させる内部クロックがデータ入出力の基準点に到達する時点との第1の位相差を算出する工程と、
上記パラメータを基に、上記外部メモリが上記デバイスから出力されるデータを取り込むことができ、且つ、上記デバイスが上記外部メモリから出力されるデータを取り込むことができる条件を満たす上記第1の位相差の範囲を算出する工程と、
上記算出された第1の位相差が、上記算出された第1の位相差の範囲を満たすか否かを判断する工程と、
上記判断工程によって、上記算出された第1の位相差が、上記算出された第1の位相差の範囲を満たす場合は終了し、満たさないと判断された場合は、上記算出された範囲から任意の第1の位相差を選択する工程と、
上記選択された第1の位相差を基に、上記デバイスの設計時に、上記デバイス内の外部クロック信号又は内部クロック信号の遅延値を変更し終了する工程と、
を含むことを特徴とするクロック位相調整方法。 - 請求項5記載のクロック位相調整方法において、
上記第1の位相差は、上記内部クロックが上記デバイス内のクロックジェネレータから該デバイス内のデータ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから該デバイス内の外部クロック出力用バッファへ到達する時間を引いた値であり、
上記第1の位相差の範囲を算出する工程は、
上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間と、該内部クロックによって該データ出力用フリップフロップから出力されたデータが該外部メモリへ到達するまでの時間との和から、上記外部クロックが該クロックジェネレータから該外部メモリへ到達するまでの時間を引いた第1の値が、該外部メモリのデータを取り込むために必要なデータホールド時間より大きい第1の条件と、
上記外部クロックの1サイクルの時間から、上記第1の値を引いた値が、上記外部メモリのデータを取り込むために必要なデータセットアップ時間より大きい第2の条件と、
上記外部クロックが上記クロックジェネレータから上記外部メモリへ到達するまでの時間と、該外部クロックを受けて該外部メモリから出力されるデータのホールド時間と、該出力されたデータが上記デバイス内の入力用フリップフロップに到達するまでの時間との和から、上記内部クロックが該クロックジェネレータから該入力用フリップフロップに到達するまでの時間を引いた値が、該入力用フリップフロップのデータ入力ホールド時間より大きい第3の条件と、
上記内部クロックの1サイクルの時間と、上記内部クロックが上記クロックジェネレータから上記入力用フリップフロップに到達するまでの時間との和から、該外部クロックが該クロックジェネレータから該外部メモリへ到達する時間と、該外部クロックを受けて該外部メモリから出力されるデータの出力遅延時間と、該データが上記入力用フリップフロップに到達するまでの時間との和を引いた値が、該入力用フリップフロップのデータ入力セットアップ時間より大きい第4の条件と、
を満たす上記第1の位相差の範囲を算出する、
ことを特徴とするクロック位相調整方法。 - 請求項5に記載のクロック位相調整方法において、
上記第1の位相差は、上記内部クロックが上記デバイス内のクロックジェネレータから該デバイス内のデータ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから該デバイス内の外部クロック出力用バッファへ到達する時間を引いた値であり、
上記外部メモリから出力されるデータは、該外部メモリに入力した外部クロックが上記デバイスへフィードバックされたクロックによって、該デバイス内の第1の入力用フリップフロップにラッチされ、該ラッチされたデータは、上記内部クロックによって、該デバイス内の第2の入力用フリップフロップにラッチされ、
上記第1の位相差の範囲を算出する工程は、
上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間と、該内部クロックによって該データ出力用フリップフロップから出力されたデータが該外部メモリへ到達するまでの時間との和から、上記外部クロックが該クロックジェネレータから該外部メモリへ到達するまでの時間を引いた第1の値が、該外部メモリのデータを取り込むために必要なデータホールド時間より大きく、
上記外部クロックの1サイクルの時間から、上記第1の値を引いた値が、上記外部メモリのデータを取り込むために必要なデータセットアップ時間より大きく、
上記外部クロックが、上記クロックジェネレータから上記外部メモリに到達し、フィードバッククロックとして該外部メモリから折り返して上記第1の入力用フリップフロップに到達するまでの時間と、該第1の入力用フリップフロップのセル遅延と、該第1の入力用フリップフロップから上記第2の入力用フリップフロップまでの配線遅延と、を足した値Vから、上記内部クロックが該クロックジェネレータから該第2の入力用フリップフロップに到達するまでの時間を引いた値が、該第2の入力用フリップフロップのホールド時間より大きく、
上記内部クロックが上記クロックジェネレータから上記第2の入力用フリップフロップに到達するまでの時間と上記外部クロックの1サイクルの時間との和から、上記値Vを引いた値が、該第2の入力用フリップフロップのセットアップ時間より大きく、
上記値Vが、上記内部クロックの上記クロックジェネレータから上記第2の入力用フリップフロップまで到達する時間より大きく、
上記外部メモリから出力されるデータの該外部メモリから上記第1の入力用フリップフロップへ到達する時間から、上記外部クロックの該外部メモリからフィードバックされ該第1の入力用フリップフロップへ到達するまでの時間を引いた値が、該第1の入力用フリップフロップのホールド時間より大きい、
条件を満たす上記第1の位相差の範囲を算出する、
ことを特徴とするクロック位相調整方法。 - 任意のデバイスがクロックに同期して、外部メモリとデータアクセスする際のクロック位相調整方法であって、
上記デバイスの設計時に該デバイスのレイアウトから、該デバイス内の信号の伝達及び該デバイスと上記外部メモリとの信号の伝達に関わる時間のパラメータを抽出する工程と、
上記内部クロックが上記デバイス内のクロックジェネレータから該デバイス内のデータ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから該デバイス内の外部クロック出力用バッファへ到達する時間を引いた第1の位相差の範囲を、上記パラメータを基に算出する工程と、
上記外部クロックが上記デバイスから出力される時点と、該外部クロックが上記外部メモリからフィードバックされて該デバイスに到達する時点との第2の位相差を任意に複数設定する工程と、
上記設定された複数の上記第2の位相差それぞれに対して、上記算出された範囲から第1の位相差を設定する工程と、
上記デバイスが任意のシステムに実装された後、実際に第2の位相差を検出する工程と、
上記検出した結果と上記設定された第2の位相差とを比較して、該当する第1の位相差を選択する工程と、
上記選択された第1の位相差を基に、上記デバイス内の上記外部クロック信号又は上記内部クロック信号のクロックバッファの遅延値を切り替える工程と、
を含み、
上記外部メモリから出力されるデータは、該外部メモリに入力した外部クロックが上記デバイスへフィードバックされたクロックによって、該デバイス内の第1の入力用フリップフロップにラッチされ、該ラッチされたデータは、上記内部クロックによって、該デバイス内の第2の入力用フリップフロップにラッチされ、
上記第1の位相差の範囲を算出する工程において、
上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間と、該内部クロックによって該データ出力用フリップフロップから出力されたデータが該外部メモリへ到達するまでの時間との和から、上記外部クロックが該クロックジェネレータから該外部メモリへ到達するまでの時間を引いた第1の値が、該外部メモリのデータを取り込むために必要なデータホールド時間より大きく、
上記外部クロックの1サイクルの時間から、上記第1の値を引いた値が、上記外部メモリのデータを取り込むために必要なデータセットアップ時間より大きく、
上記外部クロックが、上記クロックジェネレータから上記外部メモリに到達し、フィードバッククロックとして該外部メモリから折り返して上記第1の入力用フリップフロップに到達するまでの時間と、該第1の入力用フリップフロップのセル遅延と、該第1の入力用フリップフロップから上記第2の入力用フリップフロップまでの配線遅延と、を足した値Vから、上記内部クロックが該クロックジェネレータから該第2の入力用フリップフロップに到達するまでの時間を引いた値が、該第2の入力用フリップフロップのホールド時間より大きく、
上記内部クロックが上記クロックジェネレータから上記第2の入力用フリップフロップに到達するまでの時間と上記外部クロックの1サイクルの時間との和から、上記値Vを引いた値が、該第2の入力用フリップフロップのセットアップ時間より大きく、
上記値Vが、上記内部クロックの上記クロックジェネレータから上記第2の入力用フリップフロップまで到達する時間より大きく、
上記外部メモリから出力されるデータの該外部メモリから上記第1の入力用フリップフロップへ到達する時間から、上記外部クロックの該外部メモリからフィードバックされ該第1の入力用フリップフロップへ到達するまでの時間を引いた値が、該第1の入力用フリップフロップのホールド時間より大きい、
条件を満たす上記第1の位相差の範囲が算出される、
ことを特徴とするクロック位相調整方法。 - 請求の範囲第6項記載のクロック位相調整方法において、
上記デバイスは、上記入力用フリップフロップとして、上記外部メモリから出力されるデータをラッチする第1の入力用フリップフロップと、上記第1の入力用フリップフロップにラッチされたデータをラッチする第2の入力用フリップフロップと、を備え、
上記クロックジェネレータは、上記データ出力用フリップフロップ及び上記第2の入力用フリップフロップに供給される第1の内部クロックと、上記第1の入力用フリップフロップに供給される第2の内部クロックと、を供給し、
上記第1の位相差は、
上記第1の内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記外部クロック出力用バッファへ到達する時間を引いた位相差D0と、 上記第2の内部クロックが上記クロックジェネレータから上記第1の入力用フリップフロップに到達する時間から、上記外部クロックが該クロックジェネレータから上記外部クロック出力用バッファへ到達する時間を引いた位相差D1と、
を含み、
上記第1の位相差の範囲を算出する工程は、
上記第1及び第2の条件を満たす上記位相差D0の範囲、及び、上記
第3及び第4の条件を満たす上記位相差D1の範囲を算出し、且つ、上記位相差D0及びD1との位相差から、上記第1の入力用フリップフロップに入力されたデータが上記第2の入力用フリップフロップに到達するまでの遅延を引いた値が、該第2の入力用フリップフロップのセットアップ時間よりも大きいという条件を満たす、該位相差D0及びD1の範囲を算出し、
上記クロック信号の遅延値の変更工程は、
上記選択された位相差D0及びD1の位相差に基づいて、上記デバイス内の外部クロック信号又は内部クロック信号の遅延値を変更する、
工程を含むことを特徴とするクロック位相調整方法。 - クロックに同期して外部メモリとデータアクセスする集積回路を設計する方法であって、
上記集積回路は、
上記内部クロックと上記外部クロックを生成するクロックジェネレータと、
上記外部メモリへ出力するデータをラッチするデータ出力用フリップフロップと、
上記外部メモリから出力されるデータを、上記外部メモリに入力した外部クロックのフィードバッククロックによってラッチする第1の入力用フリップフロップと、
上記第1の入力用フリップフロップにラッチされたデータを、上記内部クロックによってラッチする第2の入力用フリップフロップと、
上記内部クロックが上記集積回路内のクロックジェネレータから該集積回路内のデータ出力用フリップフロップに到達する時間から上記外部クロックが該クロックジェネレータから該集積回路内の外部クロック出力用バッファへ到達する時間を引いた第1の位相差と、上記外部クロックが上記集積回路から出力される時点及び該外部クロックが上記外部メモリからフィードバックされて該集積回路に到達する時点の第2の位相差とが予め複数組設定され、上記集積回路が任意のシステムに実装された後、実際に第2の位相差を検出し、該検出した結果から該当する第1の位相差を選択する位相差検出回路と、
上記予め設定された複数の第1の位相差のそれぞれに対応する遅延素子群を備え、上記位相差検出回路が選択した第1の位相差に基づいて該遅延素子群が切り替えられるクロックバッファと、
を備え、
上記設計方法は、
上記集積回路のレイアウトから、該集積回路内の信号の伝達及び該集積回路と上記外部メモリとの信号の伝達に関わる時間のパラメータを抽出する工程と、
上記内部クロックが上記クロックジェネレータから上記データ出力用フリップフロップに到達する時間と、該内部クロックによって該データ出力用フリップフロップから出力されたデータが該外部メモリへ到達するまでの時間との和から、上記外部クロックが該クロックジェネレータから該外部メモリへ到達するまでの時間を引いた第1の値が、該外部メモリのデータを取り込むために必要なデータホールド時間より大きく、
上記外部クロックの1サイクルの時間から、上記第1の値を引いた値が、上記外部メモリのデータを取り込むために必要なデータセットアップ時間より大きく、
上記外部クロックが、上記クロックジェネレータから上記外部メモリに到達し、フィードバッククロックとして該外部メモリから折り返して上記第1の入力用フリップフロップに到達するまでの時間と、該第1の入力用フリップフロップのセル遅延と、該第1の入力用フリップフロップから上記第2の入力用フリップフロップまでの配線遅延と、を足した値Vから、上記内部クロックが該クロックジェネレータから該第2の入力用フリップフロップに到達するまでの時間を引いた値が、該第2の入力用フリップフロップのホールド時間より大きく、
上記内部クロックが上記クロックジェネレータから上記第2の入力用フリップフロップに到達するまでの時間と上記外部クロックの1サイクルの時間との和から、上記値Vを引いた値が、該第2の入力用フリップフロップのセットアップ時間より大きく、
上記値Vが、上記内部クロックの上記クロックジェネレータから上記第2の入力用フリップフロップまで到達する時間より大きく、
上記外部メモリから出力されるデータの該外部メモリから上記第1の入力用フリップフロップへ到達する時間から、上記外部クロックの該外部メモリからフィードバックされ該第1の入力用フリップフロップへ到達するまでの時間を引いた値が、該第1の入力用フリップフロップのホールド時間より大きい、
条件を満たす、上記第1の位相差の範囲を、上記パラメータを基に算出する工程と、
上記第2の位相差を任意に複数設定する工程と、
上記設定された複数の上記第2の位相差それぞれに対して、上記条件を満たす第1の位相差を設定する工程と、
上記算出された上記第1の位相差のそれぞれに対応した、上記集積回路内の外部クロック信号又は内部クロック信号の遅延値を設定する工程と、
を含むことを特徴とする集積回路の設計方法。 - クロックに同期して外部メモリとデータアクセスする集積回路であって、
クロックを生成するクロックジェネレータと、
上記クロックジェネレータにより生成したクロックを分岐したクロックの一方が入力され、上記外部メモリに供給するための外部クロックとして出力する、少なくとも1つの第1のクロックバッファと、
上記クロックジェネレータにより生成したクロックを分岐したクロックの他方が入力され、上記集積回路を動作させるための内部クロックとして出力する、少なくとも1つの第2のクロックバッファと、
上記第1のクロックバッファが出力した外部クロックを上記外部メモリに出力するクロック出力バッファと、
上記外部メモリへ出力するためのデータを上記内部クロックに同期して出力するデータ出力用フリップフロップと、
上記外部メモリから出力されるデータを上記内部クロックに同期して取り込む入力用フリップフロップと、
を備え、
上記外部メモリが上記集積回路から出力されるデータを取り込むことを可能とし、かつ上記集積回路が上記外部メモリから出力されるデータを取り込むことを可能とする条件を満たすように、
上記外部クロックが、上記クロックジェネレータから、上記外部メモリへ到達するまでの時間と、上記内部クロックが、上記クロックジェネレータから上記集積回路内のデータ入出力基準点に到達するまでの時間との位相差が設定されていることを特徴とする集積回路。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP35655098 | 1998-12-15 | ||
PCT/JP1999/007043 WO2000036512A1 (fr) | 1998-12-15 | 1999-12-15 | Procede de reglage de phase de synchronisation, circuit integre et procede d'elaboration associes |
Publications (1)
Publication Number | Publication Date |
---|---|
JP3542967B2 true JP3542967B2 (ja) | 2004-07-14 |
Family
ID=18449594
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000588689A Expired - Fee Related JP3542967B2 (ja) | 1998-12-15 | 1999-12-15 | クロック位相調整方法、及び集積回路とその設計方法 |
Country Status (7)
Country | Link |
---|---|
US (2) | US6556505B1 (ja) |
EP (1) | EP1156420B1 (ja) |
JP (1) | JP3542967B2 (ja) |
KR (1) | KR100431384B1 (ja) |
DE (1) | DE69926084T2 (ja) |
TW (1) | TW461073B (ja) |
WO (1) | WO2000036512A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012515377A (ja) * | 2009-01-12 | 2012-07-05 | ラムバス・インコーポレーテッド | クロック転送低電力シグナリングシステム |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7023833B1 (en) | 1999-09-10 | 2006-04-04 | Pulse-Link, Inc. | Baseband wireless network for isochronous communication |
CN101525660A (zh) | 2000-07-07 | 2009-09-09 | 维西根生物技术公司 | 实时序列测定 |
US7035246B2 (en) * | 2001-03-13 | 2006-04-25 | Pulse-Link, Inc. | Maintaining a global time reference among a group of networked devices |
US20020178427A1 (en) * | 2001-05-25 | 2002-11-28 | Cheng-Liang Ding | Method for improving timing behavior in a hardware logic emulation system |
JP2003068077A (ja) * | 2001-08-28 | 2003-03-07 | Mitsubishi Electric Corp | 半導体記憶装置 |
US7177288B2 (en) * | 2001-11-28 | 2007-02-13 | Intel Corporation | Simultaneous transmission and reception of signals in different frequency bands over a bus line |
US6845424B2 (en) * | 2002-01-31 | 2005-01-18 | Intel Corporation | Memory pass-band signaling |
US7198197B2 (en) * | 2002-11-05 | 2007-04-03 | Rambus, Inc. | Method and apparatus for data acquisition |
KR100468776B1 (ko) * | 2002-12-10 | 2005-01-29 | 삼성전자주식회사 | 클락 지터의 영향을 감소시킬 수 있는 동기식 반도체메모리장치 |
KR100592188B1 (ko) * | 2003-10-20 | 2006-06-23 | (주)씨앤에스 테크놀로지 | 에스디램 엑세스를 위한 데이터 인터페이스장치 |
JP4502644B2 (ja) * | 2004-01-07 | 2010-07-14 | 株式会社リコー | メモリ制御装置 |
JP4757583B2 (ja) | 2005-09-20 | 2011-08-24 | エルピーダメモリ株式会社 | 出力制御信号発生回路 |
US7266021B1 (en) * | 2005-09-27 | 2007-09-04 | Lsi Corporation | Latch-based random access memory (LBRAM) tri-state banking architecture |
JP4425243B2 (ja) * | 2005-10-17 | 2010-03-03 | Okiセミコンダクタ株式会社 | 半導体記憶装置 |
KR101533120B1 (ko) | 2006-12-14 | 2015-07-01 | 램버스 인코포레이티드 | 멀티 다이 메모리 디바이스 |
US7864623B2 (en) * | 2008-05-22 | 2011-01-04 | Elpida Memory, Inc. | Semiconductor device having latency counter |
KR100949272B1 (ko) * | 2008-07-10 | 2010-03-25 | 주식회사 하이닉스반도체 | 반도체 소자와 그의 구동 방법 |
JP5427564B2 (ja) * | 2009-11-20 | 2014-02-26 | パナソニック株式会社 | メモリインターフェース回路、及びメモリデバイスのドライブ能力調整方法 |
US10311188B2 (en) * | 2015-04-08 | 2019-06-04 | Mitsubishi Electric Corporation | Circuit design support apparatus, circuit design support method, and computer readable medium |
US10241538B2 (en) * | 2017-02-22 | 2019-03-26 | Integrated Device Technology, Inc. | Resynchronization of a clock associated with each data bit in a double data rate memory system |
JP6784626B2 (ja) * | 2017-03-24 | 2020-11-11 | キヤノン株式会社 | 記録装置、制御方法、及びプログラム |
JP6784631B2 (ja) * | 2017-03-30 | 2020-11-11 | キヤノン株式会社 | 記録再生装置、記録再生装置の制御方法、及び、プログラム |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5258660A (en) | 1990-01-16 | 1993-11-02 | Cray Research, Inc. | Skew-compensated clock distribution system |
JP2956228B2 (ja) | 1991-01-16 | 1999-10-04 | 富士通株式会社 | デジタル回路のタイミングチェック方式 |
US5571236A (en) * | 1992-08-28 | 1996-11-05 | Sumitomo Electric Industries, Ltd. | Diamond wire drawing die |
JP3458406B2 (ja) | 1993-04-02 | 2003-10-20 | 松下電器産業株式会社 | インターフェース回路 |
JP3256597B2 (ja) * | 1993-06-21 | 2002-02-12 | 株式会社東芝 | 自動配置設計方法および自動配置設計装置 |
JPH0773118A (ja) | 1993-09-02 | 1995-03-17 | Toshiba Corp | 遅延時間補償装置 |
JPH07248847A (ja) | 1994-03-11 | 1995-09-26 | Fujitsu Ltd | クロック信号調整方法および装置 |
JPH08123717A (ja) | 1994-10-25 | 1996-05-17 | Oki Electric Ind Co Ltd | 半導体記憶装置 |
US5577236A (en) * | 1994-12-30 | 1996-11-19 | International Business Machines Corporation | Memory controller for reading data from synchronous RAM |
JPH08221315A (ja) | 1995-02-15 | 1996-08-30 | Hitachi Ltd | 情報処理装置 |
JP2853985B2 (ja) | 1995-12-28 | 1999-02-03 | 株式会社グラフィックス・コミュニケーション・ラボラトリーズ | クロック位相調整回路およびクロック位相調整方法 |
US5946712A (en) * | 1997-06-04 | 1999-08-31 | Oak Technology, Inc. | Apparatus and method for reading data from synchronous memory |
US5917761A (en) * | 1997-11-06 | 1999-06-29 | Motorola Inc. | Synchronous memory interface |
JP4079507B2 (ja) * | 1998-05-12 | 2008-04-23 | 富士通株式会社 | メモリ制御システムおよびメモリ制御方法 |
JP2000067577A (ja) * | 1998-06-10 | 2000-03-03 | Mitsubishi Electric Corp | 同期型半導体記憶装置 |
JP2000311028A (ja) * | 1999-04-28 | 2000-11-07 | Hitachi Ltd | 位相制御回路、半導体装置及び半導体メモリ |
-
1999
- 1999-12-15 JP JP2000588689A patent/JP3542967B2/ja not_active Expired - Fee Related
- 1999-12-15 KR KR10-2001-7007380A patent/KR100431384B1/ko not_active IP Right Cessation
- 1999-12-15 WO PCT/JP1999/007043 patent/WO2000036512A1/ja active IP Right Grant
- 1999-12-15 EP EP99959827A patent/EP1156420B1/en not_active Expired - Lifetime
- 1999-12-15 US US09/868,178 patent/US6556505B1/en not_active Expired - Fee Related
- 1999-12-15 DE DE69926084T patent/DE69926084T2/de not_active Expired - Fee Related
- 1999-12-15 TW TW088122025A patent/TW461073B/zh not_active IP Right Cessation
-
2003
- 2003-03-10 US US10/383,611 patent/US6853589B2/en not_active Expired - Fee Related
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012515377A (ja) * | 2009-01-12 | 2012-07-05 | ラムバス・インコーポレーテッド | クロック転送低電力シグナリングシステム |
US8737162B2 (en) | 2009-01-12 | 2014-05-27 | Rambus Inc. | Clock-forwarding low-power signaling system |
US9043633B2 (en) | 2009-01-12 | 2015-05-26 | Rambus Inc. | Memory controller with transaction-queue-monitoring power mode circuitry |
US9229523B2 (en) | 2009-01-12 | 2016-01-05 | Rambus Inc. | Memory controller with transaction-queue-dependent power modes |
US9753521B2 (en) | 2009-01-12 | 2017-09-05 | Rambus Inc. | Chip-to-chip signaling link timing calibration |
US10331193B2 (en) | 2009-01-12 | 2019-06-25 | Rambus Inc. | Signaling interface with phase and framing calibration |
US10901485B2 (en) | 2009-01-12 | 2021-01-26 | Rambus Inc. | Clock-forwarding memory controller with mesochronously-clocked signaling interface |
US11556164B2 (en) | 2009-01-12 | 2023-01-17 | Rambus Inc. | Memory IC with data loopback |
US11960344B2 (en) | 2009-01-12 | 2024-04-16 | Rambus Inc. | Memory controller with looped-back calibration data receiver |
Also Published As
Publication number | Publication date |
---|---|
KR20020008109A (ko) | 2002-01-29 |
WO2000036512B1 (fr) | 2000-10-05 |
DE69926084D1 (de) | 2005-08-11 |
US6853589B2 (en) | 2005-02-08 |
EP1156420B1 (en) | 2005-07-06 |
TW461073B (en) | 2001-10-21 |
KR100431384B1 (ko) | 2004-05-14 |
EP1156420A4 (en) | 2004-03-17 |
WO2000036512A1 (fr) | 2000-06-22 |
EP1156420A1 (en) | 2001-11-21 |
US6556505B1 (en) | 2003-04-29 |
DE69926084T2 (de) | 2006-05-04 |
US20030179625A1 (en) | 2003-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3542967B2 (ja) | クロック位相調整方法、及び集積回路とその設計方法 | |
US7412616B2 (en) | Semiconductor integrated circuit | |
JP2010081577A (ja) | 半導体装置およびデータ伝送システム | |
CN113221490A (zh) | 一种芯片间可配置延时链的数据采样方法与系统 | |
US7181638B2 (en) | Method and apparatus for skewing data with respect to command on a DDR interface | |
CN108459876B (zh) | 用于缩减面积的控制寄存器电路的方法与装置 | |
US6529424B2 (en) | Propagation delay independent SDRAM data capture device and method | |
JPH10308093A (ja) | 入力信号位相補償回路 | |
JP4121454B2 (ja) | クロック回路のための方法及び装置 | |
US7134060B2 (en) | Semiconductor integrated circuit including operation test circuit and operation test method thereof | |
JP2000091506A (ja) | 半導体集積回路 | |
JP2001337862A (ja) | メモリシステム及びそのセットアップ方法 | |
JP3651659B2 (ja) | イネーブル付きラッチ回路 | |
JP3139750B2 (ja) | タイミング調整方法 | |
JPH10340222A (ja) | メモリ装置の入力回路及び出力回路 | |
JPH11328961A (ja) | 電子回路装置及びインタフェース回路 | |
US6903997B2 (en) | Operation verification system and adaptive control system | |
JP5422736B2 (ja) | 動作確認試験方法、動作確認試験プログラム、及びクロック分配回路 | |
JP3408482B2 (ja) | 集積回路テスターおよび集積回路試験方法 | |
JP2007336028A (ja) | 可変遅延制御装置 | |
JP2004159071A (ja) | クロック生成回路および半導体集積回路 | |
US20080272817A1 (en) | Integrated Circuit on a Semiconductor Chip with a Phase Shift Circuit and a Method for Digital Phase Shifting | |
JP3717901B2 (ja) | 状態出力回路および状態出力回路群 | |
JP2011008844A (ja) | 半導体装置 | |
JP2002229845A (ja) | Sdram制御回路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040316 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040402 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |