(57)【特許請求の範囲】
【請求項１】
第１の回路から第２の回路への信号のスキュー調整を行うスキュー調整回路であって、
所定の遅延を有し、前記第１の回路のデータ出力に直列に接続された複数のディレイゲートと、
前記第１の回路のデータ出力及び前記ディレイゲートの出力を入力とし、該入力の中から１つを選択して、前記第２の回路に出力するセレクタと、
前記セレクタの選択が変更可能に設定され、前記第１の回路からのデータ信号が前記第２の回路で正常に受信されるタイミングになるまで、前記セレクタの選択を順次変更するセレクタ値設定レジスタを有し、
前記第１の回路側に備えられたスキュー調整回路。
【請求項２】
前記第１の回路から前記第２回路への前記データ信号は複数であり、直列に接続された複数の前記ディレイゲート及び前記セレクタを前記データ信号毎に備えた、請求項１記載のスキュー調整回路。
【請求項３】
前記第２の回路は、データの書き込み及び読み出しが可能な入出力レジスタを有し、前記第１の回路からの前記データ信号が前記第２の回路で正常に受信されたか否かは、前記入出力レジスタへの書き込みデータと、前記入出力レジスタからの読み出しデータとの比較により判定される、請求項１記載のスキュー調整回路。
【請求項４】
前記入出力レジスタへの書き込みに用いた、前記書き込みデータを保持するライトデータ保持レジスタを更に有する、請求項３記載のスキュー調整回路。
【請求項５】
スキュー調整を行った信号を外部回路へ出力する半導体集積回路であって、
前記外部回路へのデータ出力の直前のデータフリップフロップと、
所定の遅延を有し、前記データフリップフロップのデータ出力に直列に接続された複数のディレイゲートと、
前記データフリップフロップのデータ出力及び前記ディレイゲートの出力を入力とし、該入力の中から１つを選択して、前記外部回路に出力するセレクタと、
前記セレクタの選択が変更可能に設定され、前記データフリップフロップからのデータ信号が前記外部回路で正常に受信されるタイミングになるまで、前記セレクタの選択を順次変更するセレクタ値設定レジスタを有する半導体集積回路。
【請求項６】
前記データフリップフロップから前記外部回路へのデータ信号は複数であり、直列に接続された複数の前記ディレイゲート及び前記セレクタを前記データ信号毎に備えた、請求項５記載の半導体集積回路。
【請求項７】
前記外部回路は、データの書き込み及び読み出しが可能な入出力レジスタを有し、前記データフリップフロップからの前記データ信号が前記外部回路で正常に受信されたか否かは、前記入出力レジスタへの書き込みデータと、前記入出力レジスタからの読み出しデータとの比較により判定される、請求項５記載の半導体集積回路。
【請求項８】
前記入出力レジスタへの書き込みに用いた、前記書き込みデータを保持するライトデータ保持レジスタを更に有する、請求項７記載の半導体集積回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はスキュー調整回路に関し、特に、半導体集積回路と外部デバイスの間のスキュー調整を行うスキュー調整回路に関する。
【０００２】
【従来の技術】
半導体集積回路のノード、ノードの出力を入力とする外部デバイス、およびノードの動作や状態を管理する管理ＣＰＵを含むシステムにおいて、ノードから外部デバイスにクロック信号やデータ信号を入力する場合、複数のノードと外部デバイスとの間においてスキュー調整を行うことが必要な場合がある。
【０００３】
特に、近年ではＣＰＵや周辺回路等のデータバスのバス幅が増大したため、データバスに含まれるデータ信号の配線数が増え、全てのデータ信号を等長配線することは困難となっており、スキュー調整が重要となっている。
【０００４】
従来の代表的なスキュー調整方法として、観測機器を使用してノード出力のアナログ波形を観測しながら、外部デバイスの仕様を満たすように、複数のノードのスキュー調整を行い、また、外部のクロックドライバから外部デバイスへクロックを入力していた。
【０００５】
【発明が解決しようとする課題】
従来のスキュー調整方法では、観測機器を用いる等調整の作業が煩雑であった。
【０００６】
また、近年ではＣＰＵや周辺回路等で用いられるクロック速度の高速化に伴い、複数のノード出力を所望のタイミングにスキュー調整し、また、クロックドライバから外部デバイスに所望のタイミングのクロックを与えることが困難となっている。
【０００７】
本発明の主な目的は、高速クロックのシステムにおいて、観測機器を使用せず、容易にスキュー調整を行うことができるスキュー調整回路を提供することである。
【０００８】
【課題を解決するための手段】
上記目的を達成するために、本発明のスキュー調整回路は、第１の回路から第２の回路への信号のスキュー調整を行うスキュー調整回路であって、所定の遅延を有し、前記第１の回路のデータ出力に直列に接続された複数のディレイゲートと、前記第１の回路のデータ出力及び前記ディレイゲートの出力を入力とし、該入力の中から１つを選択して、前記第２の回路に出力するセレクタと、前記セレクタの選択が変更可能に設定され、前記第１の回路からのデータ信号が前記第２の回路で正常に受信されるタイミングになるまで、前記セレクタの選択を順次変更するセレクタ値設定レジスタを有している。
【０００９】
本発明によれば、直列に接続された複数のディレイゲートにより、互いに異なる遅延が与えられた複数の信号を生成し、第２の回路で正常に受信できるタイミングの信号を選択することによりスキュー調整を行うことができる。
【００１０】
本発明の実施態様によれば、前記第１の回路から前記第２回路への前記データ信号は複数であり、直列に接続された複数の前記ディレイゲート及び前記セレクタを前記データ信号毎に備えている。
【００１１】
したがって、各データフリップフロップ毎すなわち前記データ信号毎に、容易にスキュー調整ができる。
【００１２】
本発明の実施態様によれば、前記第２の回路は、データの書き込み及び読み出しが可能な入出力レジスタを有し、前記第１の回路からの前記データ信号が前記第２の回路で正常に受信されたか否かは、前記入出力レジスタへの書き込みデータと、前記入出力レジスタからの読み出しデータとの比較により判定される。
【００１３】
本発明の実施態様によれば、前記入出力レジスタへの書き込みに用いた、前記書き込みデータを保持するライトデータ保持レジスタを更に有している。
【００１４】
本発明の半導体集積回路は、スキュー調整を行った信号を外部回路へ出力する半導体集積回路であって、前記外部回路へのデータ出力の直前のデータフリップフロップと、所定の遅延を有し、前記データフリップフロップのデータ出力に直列に接続された複数のディレイゲートと、前記データフリップフロップのデータ出力及び前記ディレイゲートの出力を入力とし、該入力の中から１つを選択して、前記外部回路に出力するセレクタと、前記セレクタの選択が変更可能に設定され、前記データフリップフロップからのデータ信号が前記外部回路で正常に受信されるタイミングになるまで、前記セレクタの選択を順次変更するセレクタ値設定レジスタを有している。
【００１５】
本発明の実施態様によれば、前記データフリップフロップから前記外部回路への前記データ信号は複数であり、直列に接続された複数の前記ディレイゲート及び前記セレクタを前記データ信号毎に備えている。
【００１６】
本発明の実施態様によれば、前記外部回路は、データの書き込み及び読み出しが可能な入出力レジスタを有し、前記データフリップフロップからの前記データ信号が前記外部回路で正常に受信されたか否かは、前記入出力レジスタへの書き込みデータと、前記入出力レジスタからの読み出しデータとの比較により判定される。
【００１７】
本発明の実施態様によれば、前記入出力レジスタへの書き込みに用いた、前記書き込みデータを保持するライトデータ保持レジスタを更に有している。
【００１８】
【発明の実施の形態】
本発明の実施形態について、図面を参照して詳細に説明する。
【００１９】
図１を参照すると、本発明の一実施形態のシステム１は外部デバイス１０、管理ＣＰＵ３００及びノード１００，２００を有する。
【００２０】
外部デバイス１０は、ノード１００からのクロック信号４０に同期した、ノード１００からのライトデータ信号２１，２２，…，２Ｎおよびノード２００からのライトデータ信号３１，３２，…，３Ｎを受信し、内部に取り込む。また、外部デバイス１０は、ライトデータ信号２１，２２，…，２Ｎおよびライトデータ信号３１，３２，…，３Ｎとして取り込んだデータをリードデータ信号５１，５２，…，５Ｎおよびリードデータ信号６１，６２，…，６Ｎとして出力する。すなわち、管理ＣＰＵ３００から書き込み及び読み出し可能な入出力レジスタ１１を内部に有する。
【００２１】
管理ＣＰＵ３００は、各ライトデータ信号２１，２２，…，２Ｎの遅延量をノード１００に設定する。また、管理ＣＰＵ３００は、ライトデータ信号２１，２２，…，２Ｎにより外部デバイス１０へ所定のデータの書込みを行い、更に、書き込んだデータをリードデータ信号５１，５２，…，５Ｎにより読み出すようにノード１００に指示し、書き込んだ所定のデータと読み出されたデータとが一致するか否かを判定する。
【００２２】
また同様に、管理ＣＰＵ３００は、各ライトデータ信号３１，３２，…，３Ｎの遅延量をノード２００に設定する。また、管理ＣＰＵ３００は、ライトデータ信号３１，３２，…，３Ｎにより外部デバイス１０へ所定のデータの書込みを行い、更に、書き込んだデータをリードデータ信号６１，６２，…，６Ｎにより読み出すようにノード２００に指示し、書き込んだ所定のデータと読み出されたデータとが一致するか否かを判定する。
【００２３】
ノード１００は、ＰＬＬ回路１２０、データフリップフロップ（Ｆ／Ｆ）１３１，１３２，…，１３Ｎ、セレクタ値設定レジスタ１４０、セレクタ１５１，１５２，…，１５Ｎ、ディレイゲート１６１１，１６１２，…，１６１Ｍ，１６２１，１６２２，…，１６２Ｍ，…，１６Ｎ１，１６Ｎ２，…，１６ＮＭ、ライトデータ保持レジスタ１７０およびリードデータバッファ１８０を有する。
【００２４】
ＰＬＬ回路１２０は基準クロックを発生し、それを分周し、所定の周波数のクロック信号を各部に分配する。
【００２５】
データフリップフロップ１３１，１３２，…，１３Ｎは、外部デバイス１０への出力の前段にあるフリップフロップであり、ＰＬＬ回路１２０からのクロック信号のタイミングで所定のデータをラッチして出力する。
【００２６】
ディレイゲート１６１１，１６１２，…，１６１Ｍ，１６２１，１６２２，…１６２Ｍ，…，１６Ｎ１，１６Ｎ２，…，１６ＮＭは、データフリップフロップ１３１，１３２，…，１３Ｎの出力信号を所望のタイミングに調整するために、所定の遅延を有するゲートである。ディレイゲート１６１１，１６１２，…，１６１Ｍは、データフリップフロップ１３１の出力に直列に接続される。ディレイゲート１６２１，１６２２，…１６２Ｍは、データフリップフロップ１３２の出力に直列に接続される。同様に、ディレイゲート１６Ｎ１，１６Ｎ２，…，１６ＮＭは、データフリップフロップ１３Ｎの出力に直列に接続される。
【００２７】
セレクタ１５１，１５２，…，１５Ｎは、データの遅延量を選択するためのセレクタである。セレクタ１５１は、データフリップフロップ１３１、ディレイゲート１６１１，１６１２，…，１６１Ｍの出力の中から１つを選択して出力する。セレクタ１５２は、データフリップフロップ１３２、ディレイゲート１６２１，１６２２，…，１６２Ｎの出力の中から１つを選択して出力する。セレクタ１５Ｎは、データフリップフロップ１３Ｎ、ディレイゲート１６Ｎ１，１６Ｎ２，…，１６ＮＭの出力の中から１つを選択して出力する。
【００２８】
セレクタ値設定レジスタ１４０は、設定信号１１０により管理ＣＰＵ３００からセレクタ１５１，１５２，…，１５Ｎにおける選択が設定される。
【００２９】
ライトデータ保持レジスタ１７０は、データフリップフロップ１３１，１３２，…，１３Ｎの出力データを保持し、保持データ信号１７５として管理ＣＰＵ３００に出力する。
【００３０】
リードデータバッファ１８０は、リードデータ信号５１，５２，…，５Ｎにより外部デバイス１０から読み出されたデータを受信し、リードデータ信号１８５として管理ＣＰＵ３００に出力する。
【００３１】
また同様に、ノード２００は、ＰＬＬ回路２２０、データフリップフロップ（Ｆ／Ｆ）２３１，２３２，…，２３Ｎ、セレクタ値設定レジスタ２４０、セレクタ２５１，２５２，…，２５Ｎ、ディレイゲート２６１１，２６１２，…，２６１Ｍ，２６２１，２６２２，…，２６２Ｍ，…，１６Ｎ１，１６Ｎ２，…，１６ＮＭ、ライトデータ保持レジスタ１７０およびリードデータバッファ１８０を有する。
【００３２】
ＰＬＬ回路１２０は基準クロックを発生し、それを分周し、所定の周波数のクロック信号を各部に分配する。
【００３３】
データフリップフロップ２３１，２３２，…，２３Ｎは、外部デバイス１０への出力の前段にあるフリップフロップであり、ＰＬＬ回路２２０からのクロック信号のタイミングで所定のデータをラッチして出力する。
【００３４】
ディレイゲート２６１１，２６１２，…，２６１Ｍ，２６２１，２６２２，…２６２Ｍ，…，２６Ｎ１，２６Ｎ２，…，２６ＮＭは、データフリップフロップ１３１，１３２，…，１３Ｎの出力信号を所望のタイミングに調整するためのゲートである。ディレイゲート２６１１，２６１２，…，２６１Ｍは、データフリップフロップ２３１の出力に直列に接続される。ディレイゲート２６２１，２６２２，…２６２Ｍは、データフリップフロップ２３２の出力に直列に接続される。同様に、ディレイゲート２６Ｎ１，２６Ｎ２，…，２６ＮＭは、データフリップフロップ２３Ｎの出力に直列に接続される。
【００３５】
セレクタ２５１，２５２，…，２５Ｎは、データの遅延量を選択するためのセレクタである。セレクタ２５１は、データフリップフロップ２３１、ディレイゲート２６１１，２６１２，…，２６１Ｍの出力の中から１つを選択して出力する。セレクタ２５２は、データフリップフロップ２３２、ディレイゲート２６２１，２６２２，…，２６２Ｎの出力の中から１つを選択して出力する。セレクタ２５Ｎは、データフリップフロップ２３Ｎ、ディレイゲート２６Ｎ１，２６Ｎ２，…，２６ＮＭの出力の中から１つを選択して出力する。
【００３６】
セレクタ値設定レジスタ１４０は、設定信号１１０により管理ＣＰＵ３００からセレクタ１５１，１５２，…，１５Ｎにおける選択が設定される。
【００３７】
ライトデータ保持レジスタ１７０は、データフリップフロップ１３１，１３２，…，１３Ｎの出力データを保持し、保持データ信号１７５として管理ＣＰＵ３００に出力する。
【００３８】
リードデータバッファ１８０は、リードデータ信号５１，５２，…，５Ｎにより外部デバイス１０から読み出されたデータを受信し、リードデータ信号１８５として管理ＣＰＵ３００に出力する。
【００３９】
次に、システム１の動作例に付いて説明する。
【００４０】
システム１は、全てのデータフリップフロップ１３１，１３２，…，１３Ｎ，２３１，２３２，…，２３Ｎの出力を順次調整していく。つまり、システム１は、同様な調整動作を２Ｎ回繰り返す。また、各セレクタはＭ＋１個の入力の中から選択することができる。このスキュー調整はシステム１の初期テスト時に行われる。ここで、初期テストは、回路設計を検証するためのテストであってもよく、また、製品としての出荷試験であってもよい。
【００４１】
図２を参照すると、システム１は、まず、ステップＳ１０１に、自然数の変数ｉを初期値“１”とする。ステップＳ１０２に、システム１は、調整対象のデータフリップフロップに対応する、セレクタ値設定レジスタのビットに変数ｉを設定する。これにより、調整対象のデータフリップフロップに対応するセレクタの選択が初期値となる。ここでは、直列に接続された最終段のディレイゲートの出力が選択される。例えば、調整対象をデータフリップフロップ１３１とした場合、ディレイゲート１６１Ｍの出力が選択される。
【００４２】
ステップＳ１０３に、システム１は、調整対象のデータフリップフロップを含むノードから外部デバイス１０へ所定のデータを書き込む。外部デバイス１０への書き込みデータ信号は、セレクタ値設定レジスタ１４０の設定に従ってセレクタで遅延が与えられたものとなる。このとき同時に、書き込みデータはライトデータ保持レジスタに格納される。
【００４３】
ステップＳ１０４に、システム１は、ステップＳ１０３で外部デバイス１０に書き込んだデータを読み出す。
【００４４】
ステップＳ１０５に、システム１は、外部デバイス１０に書き込んだデータと、外部デバイスから読み出されたデータを比較し、調整対象のデータフリップフロップに対応するビットが一致するか否かを判定する。ステップＳ１０５の判定において一致した場合、システム１は、調整対象のデータフリップフロップの出力に対するスキュー調整を完了し、処理を終了する。
【００４５】
ステップＳ１０５の判定において一致しなかった場合、システム１は、ステップＳ１０６に、変数ｉがＭ＋１以上か否か判定する。ステップＳ１０６の判定で変数ｉがＭ＋１以上だったら、システム１は、調整対象のデータフリップフロップの出力に対するスキュー調整ができないものとして、処理を終了する。ステップＳ１０６の判定で変数ｉがＭ＋１より小さければ、システム１は、ステップＳ１０７に、変数ｉに１を加算し、ステップＳ１０２の処理に戻る。
【００４６】
ここでは例えば、変数ｉに１が加算される毎に、セレクタの選択は、直列に接続された１段手前のディレイゲートの出力に移る。そして、調整が完了するか、或いは変数ｉがＭ＋１となるまで、ステップＳ１０２からステップＳ１０７の処理が繰り返される。
【００４７】
本実施形態によれば、直列に接続された複数（本実施形態では、Ｍ個）のディレイゲートにより、互いに異なる遅延が与えられた複数の信号を生成し、外部デバイス１０に対するデータの書き込み及び読み出しを行い、書き込みデータと読み出しデータが一致する、すなわち、正常に書き込みが行われるようにスキュー調整が行われるので、システム１が高速クロックで動作するものである場合にも、観測機器を使用せず、容易にスキュー調整を行うことができる。また、各データフリップフロップ毎すなわちライトデータ信号毎に、容易にスキュー調整ができるので、多数のデータ信号のスキュー調整を各データ信号毎に行う場合に作業時間が短縮される。
【００４８】
なお、本実施形態では、全てのノードの全てのデータフリップフロップに対して、順次、スキュー調整を行うこととしたが、複数のデータフリップフロップのスキュー調整を同時に行ってもよい。
【００４９】
その場合例えば、変数ｉを１からＭ＋１まで順次変化させ、その都度、各データフリップフロップに対応する書き込みデータ及び読み出しデータの一致判定を行っておき、各データフリップフロップ毎に最適な遅延量を選択した後、セレクタ値設定レジスタに最適な値を設定する。
【００５０】
また、本実施形態では、直列に接続された最終段のディレイゲートの出力から順次選択して書き込みデータと読み出しデータの一致を判定したが、選択の順序は逆であってもよく、また、他のいかなる順序であってもよい。
【００５１】
また、本実施形態では、理解を容易化するために、ライトデータ信号２１，２２，…，２Ｎとライトデータ信号５１，５２，…，５Ｎ、およびライトデータ信号３１，３２，…，３Ｎとライトデータ信号６１，６２，…，６Ｎを互いに別の信号線上で伝送されるように説明したが、同一信号線上を流れる信号であってもよい。
【００５２】
【発明の効果】
本発明によれば、直列に接続された複数のディレイゲートにより、互いに異なる遅延が与えられた複数の信号を生成し、第２の回路で正常に受信できるタイミングの信号を選択することによりスキュー調整を行うことができるので、第１の回路と第２の回路の間が高速クロックで動作するものである場合にも、観測機器を使用せず、容易にスキュー調整を行うことができる。
【００５３】
本発明によれば、各データフリップフロップ毎すなわち前記信号毎に、容易にスキュー調整ができるので、多数のデータ信号のスキュー調整を各データ信号毎に行う場合に作業時間が短縮される。
【図面の簡単な説明】
【図１】本発明の一実施形態のシステム１の構成を示すブロック図である。
【図２】本実施形態のシステム１の動作を示すフローチャートである。
【符号の説明】
１０    外部デバイス
１１    入出力レジスタ
２１〜２Ｎ    ライトデータ信号
３１〜３Ｎ    ライトデータ信号
４０    クロック信号
５１〜５Ｎ    リードデータ信号
６１〜６Ｎ    リードデータ信号
１００，２００    ノード
１１０，２１０    設定信号
１２０，２２０    ＰＬＬ回路
１３１〜１３Ｎ，２３１〜２３Ｎ    データフリップフロップ
１４０，２４０    セレクタ値設定レジスタ
１５１〜１５Ｎ，２５１〜２５Ｎ    セレクタ
１６１１〜１６１Ｍ，１６２１〜１６２Ｍ，…，１６Ｎ１〜１６ＮＭ，２６１１〜２６１Ｍ，２６２１〜２６２Ｍ，…，２６Ｎ１〜２６ＮＭ    ディレイゲート
１７０，２７０    ライトデータ保持レジスタ
１７５，２７５    保持データ信号
１８０，２８０    リードデータバッファ
１８５，２８５    リードデータ信号
３００    管理ＣＰＵ
Ｓ１０１〜Ｓ１０７    ステップ
【図１】
0003562581.tif 000002
【図２】
0003562581.tif 000003