(57)【特許請求の範囲】
【請求項１】
第１のクロック信号を受信し、該第１のクロック信号の立ち上がりエッジで、第１の入力データ値をラッチし、該第１のデータ値が該第１のクロック信号の立ち下がりエッジの前に出力されることを防ぎ、該第１のクロック信号の立ち下がりエッジで、該第１のデータ値を出力する第１のバウンダリスキャンレジスタと、
上記第１のバウンダリスキャンレジスタに接続され、上記第１のクロック信号に対して遅延した第２のクロック信号を受信し、該第２のクロック信号の立ち上がりエッジで、上記第１のデータ値をラッチし、該第１のデータ値が該第２のクロック信号の立ち下がりエッジの前に出力されることを防ぎ、該第２のクロック信号の立ち下がりエッジで、該第１のデータ値を出力する第２のバウンダリスキャンレジスタと、
上記第１のクロック信号を受信し、該第１のクロック信号の立ち上がりエッジに応じて第１のパルス信号を生成する第１のパルス信号発生器と、
上記第１のクロック信号を受信し、該第１のクロック信号の立ち下がりエッジに応じて第２のパルス信号を生成する第２のパルス信号発生器とを備えるバウンダリスキャンレジスタのチェインにおいて、
上記第１のバウンダリスキャンレジスタは、上記第１のパルス信号発生器に接続された第１のラッチと、上記第２のパルス信号発生器に接続された第２のラッチとを備え、
上記第１のラッチは、上記第１のパルス信号を受信し、該第１のパルス信号に応じて上記第１のデータ値をラッチし、該第１のデータ値を出力し、
上記第２のラッチは、上記第１のラッチに接続され、上記第２のパルス信号を受信し、該第２のパルス信号に応じて、上記第１のラッチからの第１のデータ値の出力をラッチし、該第１のデータ値を上記第２のバウンダリスキャンレジスタへ出力することを特徴とするバウンダリスキャンレジスタのチェイン。
【請求項２】
直列接続されたＮ個のバウンダリスキャンレジスタを備える請求項１記載のバウンダリスキャンレジスタのチェイン。
【請求項３】
上記第１のクロック信号と第２のクロック信号との間の相対的な遅延は、上記システムクロック信号のサイクルタイムの半分未満であることを特徴とする請求項１記載のバウンダリスキャンレジスタのチェイン。
【請求項４】
上記第１のラッチは、上記第１のパルス信号発生器に接続されるが、上記第２のパルス信号発生器には接続されておらず、上記第２のラッチは、上記第２のパルス信号発生器に接続されるが、上記第１のパルス信号発生器には接続されていないことを特徴とする請求項１記載のバウンダリスキャンレジスタのチェイン。
【請求項５】
上記第２のクロック信号を受信し、該第２のクロック信号の立ち上がりエッジに応じて、第３のパルス信号を生成する第３のパルス信号発生器を備える請求項１記載のバウンダリスキャンレジスタのチェイン。
【請求項６】
上記第２のクロック信号を受信し、該第２のクロック信号の立ち下がりエッジに応じて、第４のパルス信号を生成する第４のパルス信号発生器を更に備える請求項５記載のバウンダリスキャンレジスタのチェイン。
【請求項７】
上記第２のバウンダリスキャンレジスタは、上記第３のパルス信号発生器に接続された第３のラッチと、上記第４のパルス信号発生器に接続された第４のラッチとを備えることを特徴とする請求項６記載のバウンダリスキャンレジスタのチェイン。
【請求項８】
上記第３のラッチは、上記第３のパルス信号を受信し、該第３のパルス信号に応じて、第１のデータ値をラッチし、該第１のデータ値を出力することを特徴とする請求項７記載のバウンダリスキャンレジスタのチェイン。
【請求項９】
上記第４のラッチは、上記第３のラッチに接続され、上記第４のパルス信号を受信し、該第４のパルス信号に応じて、該第３のラッチから出力された第１のデータ値をラッチし、該第１のデータ値を出力することを特徴とする請求項８記載のバウンダリスキャンレジスタのチェイン。
【請求項１０】
バウンダリスキャンレジスタのチェインにデータを通過させるデータ処理方法において、
第１のバウンダリスキャンレジスタにおいて第１のクロック信号を受信するステップと、
第２のバウンダリスキャンレジスタにおいて、上記第１のクロック信号に対して遅延した第２のクロック信号を受信するステップと、
上記第１のクロック信号の立ち上がりエッジに応じて、上記第１のパルス信号を生成するステップと、
上記第１のバウンダリスキャンレジスタ内の第１のラッチによって、上記第１のパルス信号に応じて、上記第１の入力データ値をラッチし、上記第１のクロック信号の立ち下がりエッジの前に、上記第１のデータ値が第１のバウンダリスキャンレジスタから出力されることを防ぐステップと、
上記第１のクロック信号の立ち下がりエッジに応じて、第２のパルス信号を生成するステップと、
上記第１のバウンダリスキャンレジスタ内の第２のラッチによって、上記第２のパルス信号に応じて、上記第１のデータ値をラッチし、上記第２のラッチから上記第２のバウンダリスキャンレジスタへ上記第１のデータ値を出力するステップと、
上記第２のクロック信号の立ち上がりエッジで、上記第２のバウンダリスキャンレジスタによって、上記第１のバウンダリスキャンレジスタから出力された上記第１のデータ値をラッチするステップと、
上記第２のクロック信号の立ち下がりエッジの前に、上記第１のデータ値が上記第２のバウンダリスキャンレジスタから出力されることを防ぐステップと、
上記第２のクロック信号の立ち下がりエッジで、上記第２のバウンダリスキャンレジスタから第１のデータ値を出力するステップとを有するデータ処理方法。
【請求項１１】
Ｎ個のバウンダリスキャンレジスタを直列接続するステップを更に有する請求項１０記載のデータ処理方法。
【請求項１２】
上記第１のクロック信号と第２のクロック信号との間の相対的な遅延が上記システムクロック信号のサイクルタイムの半分未満となるように該システムクロックを設定するステップを更に有する請求項１０記載のデータ処理方法。
【請求項１３】
上記第２のクロック信号の立ち上がりエッジに応じて、第３のパルス信号を生成するステップを更に有する請求項１０記載のデータ処理方法。
【請求項１４】
上記第２のクロック信号の立ち下がりエッジに応じて、第４のパルス信号を生成するステップを更に有する請求項１３記載のデータ処理方法。
【請求項１５】
上記第２のバウンダリスキャンレジスタ内の第３のラッチによって、上記第３のパルス信号に応じて、上記第１のデータ値をラッチし、該第２のバウンダリスキャンレジスタから該第１のデータ値が出力されることを防ぐステップを更に有する請求項１４記載のデータ処理方法。
【請求項１６】
上記第２のバウンダリスキャンレジスタ内の第４のラッチによって、上記第４のパルス信号に応じて、上記第１のデータ値をラッチするステップを更に有する請求項１５記載のデータ処理方法。
【請求項１７】
上記第２のバウンダリスキャンレジスタから第１のデータ値を出力するステップは、上記第４のラッチから該第１のデータ値を出力するステップを含むことを特徴とする請求項１６記載のデータ処理方法。
【発明の詳細な説明】
【関連出願】
【０００１】
本出願は、同じ発明者が発明し、２００５年１０月２８日に出願された、米国仮特許出願番号第６０／７３１，３９４号、発明の名称「２相クロック制御によるタイミング競合バウンダリスキャンレジスタを用いないシフトレジスタ（Shift Registers Free of Timing Race Boundary Scan Registers with Two-phase Clock Control）」の優先権を主張する。２００５年１０月２８日に出願された、米国仮特許出願番号第６０／７３１，３９４号、発明の名称「２相クロック制御によるタイミング競合バウンダリスキャンレジスタを用いないシフトレジスタ」の全体は、参照により本願に援用される。
【技術分野】
【０００２】
本発明は、データレジスタに関する。詳しくは、本発明は、データ競合条件を排除するよう構成されたバウンダリスキャンレジスタ（boundary scan register）に関する。
【背景技術】
【０００３】
従来より、殆どのプリント基板（printed circuit board：ＰＣＢ）検査は、回路内検査設備を用いて行われていた。近年のＶＬＳＩ技術の発展により、現在では、マイクロプロセッサ及び特定用途向け集積回路（ＡＳＩＣ）をファインピッチ、ハイカウントパッケージにパッケージングできるようになった。これらの高密度デバイスは、例えば、検査点へのアクセス可能性及び高コストな検査装置等、固有の課題を有している。
【０００４】
境界走査検査（boundary scan testing）は、ＪＴＡＧ（Joint Test Access Group）インタフェースとして開発され、高密度パッケージング技術によって集積度が高くなっているアセンブリに生じるＰＣＢの上の物理的なアクセス問題を解決するＩＥＥＥ１１４９．１規格として規格化された。境界走査は、集積回路レベルに検査回路を埋め込み、完全な基板レベルの検査プロトコルを実現する。境界走査では、インシステムデバイスのプログラミングの検査、デバッグ、及びハードウェア問題の診断を行うために、最も複雑なアセンブリにさえアクセスできる。
【０００５】
境界走査は、ソフトウェア制御を介して、ＩＥＥＥ１１４９．１に準拠するデバイスの境界ピンの完全な制御及び観察を行うことができる技術である。ＩＥＥＥ１１４９．１規格は、例えば、マイクロプロセッサ、デジタルシグナルプロセッサ（Digital Signal Processor：ＤＳＰ）、特定用途向け集積回路（Application Specific Integrated Circuit：ＡＳＩＣ）、コンプレックスプログラマブル論理デバイス（Complex Programmable Logic Device：ＣＰＬＤ）等の複雑な集積回路（ＩＣ）にアクセスするために用いられる４線式シリアルインタフェースを定義する。ＩＥＥＥ１１４９．１規格に準拠するオンチップ検査バス回路は、境界走査機能を実行するために、バウンダリスキャンレジスタ及び検査アクセスポート（test access port：ＴＡＰ）コントローラを備える。ＴＡＰコントローラは、バスの状態を復号する有限状態マシンである。
【０００６】
境界走査バス回路は、バウンダリスキャンレジスタと、１ビットバイパスレジスタと、命令レジスタと、補助レジスタと、ＴＡＰコントローラとから構成されている。境界走査バスは、検査クロック信号（test clock signal：ＴＣＫ）ピン、検査モード信号（test mode signal：ＴＭＳ）ピン、検査データ入力（test data in：ＴＤＩ）ライン、検査データ出力（test data out：ＴＤＯ）ライン及び検査リセット（test reset：ＴＲＳＴ）ピンから構成される。
【０００７】
ＴＣＫピン及びＴＭＳピンは、ＴＡＰコントローラ状態間の信号を制御する。ＴＤＩピンには、バウンダリスキャンレジスタチェインのデータ入力信号が入力され、ＴＤＯピンは、バウンダリスキャンレジスタチェインのデータ出力信号を出力する。また、ＴＡＰコントローラの非同期リセット信号用の５番目のピンであるＴＲＳＴピンを設けてもよい。
【０００８】
通常の動作では、バウンダリスキャンレジスタは無効であり、データは、通常通り、境界走査デバイスを介して伝送される。検査モードの間は、全ての入力信号が解析のために捕捉され、全ての出力信号は、ダウンストリームデバイスを検査するためにプリセットされる。これらのバウンダリスキャンレジスタの動作は、ＴＡＰコントローラ及び命令レジスタによって制御される。
【０００９】
検査命令及び検査データは、ＴＤＩラインを介してチップに供給される。検査結果及び状態情報は、チップからＴＤＯラインを介して提供される。この情報は、逐次伝送される。ＴＡＰコントローラは、ＴＭＳラインの状態遷移に応じて、境界走査バス回路を制御する。境界走査ロジックは、ＴＣＫ信号によって同期される。
【００１０】
バウンダリスキャンレジスタは、チェインとして構成される。チェインの最初のバウンダリスキャンレジスタは、ＴＤＩラインによって駆動され、最後のバウンダリスキャンレジスタは、ＴＤＯラインからデータを出力する。命令レジスタは、実行すべき検査のタイプに関連した特定の命令を提供する。ＩＥＥＥ１１４９．１規格は、全ての規格適合機器が、ＥＸＴＥＳＴ命令、ＳＡＭＰＬＥ／ＰＲＥＬＯＡＤ命令及びＢＹＰＡＳＳ命令を実行することを要求する。ＥＸＴＥＳＴ命令は、ＰＣＢ内部配線検査を実行する。ＥＸＴＥＳＴ命令によって、ＩＥＥＥ１１４９．１規格適合機器は、外部境界検査モードになり、バウンダリスキャンレジスタをＴＤＩピンとＴＤＯピンとの間に接続する。この命令の間、ダウンストリームデバイスを検査するために、出力に関連するバウンダリスキャンレジスタには、検査パターンがプレロードされる。入力バウンダリスキャンレジスタは、後の解析のために、入力データを捕捉するように設定される。ＳＡＭＰＬＥ／ＰＲＥＬＯＡＤ命令では、ＩＥＥＥ１１４９．１規格適合機器は、機能モード（functional mode）を維持し、ＴＤＩピンとＴＤＯピンとの間にバウンダリスキャンレジスタを接続する。この命令の間は、データ走査処理によって、バウンダリスキャンレジスタにアクセスでき、デバイスに入出力される機能的データのサンプルを取得することができる。また、このＳＡＭＰＬＥ／ＰＲＥＬＯＡＤ命令は、ＥＸＴＥＳＴ命令をロードする前に、バウンダリスキャンレジスタに検査データをプレロードするためにも用いられる。ＢＹＰＡＳＳ命令を用いることにより、バウンダリスキャンレジスタチェインをスキップでき、この場合、データは、バイパスレジスタを通過する。ＢＹＰＡＳＳ命令では、ＩＥＥＥ１１４９．１規格適合機器は、機能モードを維持し、ＴＤＩピンとＴＤＯピンとの間にバイパスレジスタを接続する。ＢＹＰＡＳＳ命令により、デバイスの動作に影響を与えることなく、デバイスを介して、ＴＤＩピンからＴＤＯピンにシリアルデータを伝送することができる。
【００１１】
マルチプル走査に対応するＩＣをＰＣＢ上で直列に相互接続し、それぞれが、それ自身のＴＡＰを有する１つ以上の境界走査チェインを構成してもよい。各走査チェインは、シリアルＴＰＡインタフェースから、チェインの一部である各ＩＣ上の全てのピンへの電気的なアクセスを提供する。通常の動作では、ＩＣは、境界走査回路が存在していない場合と同様に、意図された機能を実行する。一方、検査又はインシステムプログラミングのためにデバイスの走査ロジックが有効にされると、シリアルインタフェースを用いて、データをＩＣに供給し、ＩＣからデータを読み出すことができる。このデータを用いて、デバイスコアを駆動し、デバイスピンからＰＣＢに信号を伝送し、ＰＣＢから入力ピンを検査し、デバイス出力を検査することができる。
【００１２】
バウンダリスキャンレジスタは、検査すべきチップのパッド領域近傍に位置する。プリント基板の物理的制約のために、境界走査デバイス及びそのバウンダリスキャンレジスタは、検査すべきピンに最適に近付けることができない。更に、検査されるピンから各バウンダリスキャンレジスタまでの回路経路の長さは異なり、この結果、遅延が生じる。また、温度等の他の要因によっても遅延が生じる。更に、特定のバウンダリスキャンレジスタをトリガするクロック信号は、ＴＡＰコントローラによって生成され、バウンダリスキャンレジスタに供給される。理想的なバウンダリスキャンレジスタパス設計では、あるバウンダリスキャンレジスタから他のバウンダリスキャンレジスタまでの如何なるデータ遅延も、レジスタ間のクロックスキューに一致し、これにより、バウンダリスキャンレジスタには、間違ったデータが供給されない。しかしながら、実際には、データ伝送の順序は、クロック供給パスに追従しない。この不一致を解消するために、２つのバウンダリスキャンレジスタの間のデータパスに遅延を挿入してもよい。しかしながら、このような遅延を考慮しても、温度及び処理の全ての変化に対応することは煩雑であり、困難である。更に、多数の入出力ピン及び制御ピンを有する高容量チップでは、考慮するべき多数の異なるバウンダリスキャンレジスタパスが存在する。
【００１３】
図１は、理想的な条件に基づいて構成された、従来の２つのバウンダリスキャンレジスタからなるチェインを示している。バウンダリスキャンレジスタＦＦｎ及びバウンダリスキャンレジスタＦＦｎ＋１は、直列に接続され、バウンダリスキャンレジスタＦＦｎからの出力信号は、バウンダリスキャンレジスタＦＦｎ＋１に入力される。従来のチェインは、バウンダリスキャンレジスタＦＦｎ及びバウンダリスキャンレジスタＦＦｎ＋１を含むチェイン内の各バウンダリスキャンレジスタに、単相クロック信号がクロック入力信号ｃｋｔｓｔとして供給されるように構成されている。図１に示す理想的なケースでは、バウンダリスキャンレジスタＦＦｎ及びバウンダリスキャンレジスタＦＦｎ＋１にそれぞれ入力されるクロック信号の間でクロック信号遅延は生じない。したがって、データ競合（data racing）は生じない。また、理想的なケースでは、２つのバウンダリスキャンレジスタＦＦｎ及びＦＦｎ＋１の間のクロックスキューは、バウンダリスキャンレジスタＦＦｎがバウンダリスキャンレジスタＦＦｎ＋１にデータを供給するタイミング遅延を値ｔＫＱとして、値ｔＫＱにデータライン遅延を加えた値より小さい。
【００１４】
図２は、図１に示すように構成されたバウンダリスキャンレジスタに関連する波形を示している。バウンダリスキャンレジスタＦＦｎは、レジスタＦＦｎの入力端子Ｄに供給されたデータ１ａをラッチする。クロック信号ｃｋｔｓｔの立ち上がりエッジでは、バウンダリスキャンレジスタＦＦｎによってラッチされたデータ１ａは、図２でＱ（ＦＦｎ）として示すように、バウンダリスキャンレジスタＦＦｎの出力端子Ｑから出力される。バウンダリスキャンレジスタＦＦｎ＋１は、データＱ（ＦＦｎ）をデータ２ａとしてラッチする。クロック信号ｃｋｔｓｔの立ち上がりエッジで、バウンダリスキャンレジスタＦＦｎ＋１によってラッチされたデータ２ａは、Ｑ（ＦＦｎ＋１）として示すように、バウンダリスキャンレジスタＦＦｎ＋１の出力端子Ｑから出力される。図１に示す理想的なバウンダリスキャンレジスタチェインでは、データは、サイクル間で理想的にシフトされる。しかしながら、実際の構成及び動作条件の下では、無視できない遅延が導入され、データ競合問題（data racing problem）が生じる。
【００１５】
図３は、タイミング遅延の結果、データ競合が生じる従来の２つのバウンダリスキャンレジスタのチェインを示している。図４は、図３に示すバウンダリスキャンレジスタのチェインに関連する波形を示す。２つのバウンダリスキャンレジスタ間のクロックスキューが、バウンダリスキャンレジスタＦＦｎの遅延ｔＫＱとデータライン遅延とを加算した値より大きくなると、バウンダリスキャンレジスタＦＦｎ＋１によって、第２のサイクルにおいて、ラッチするべきデータ１ａが第１のサイクルにおいてラッチされてしまう。これにより、データタイミング競合問題が生じる。バウンダリスキャンレジスタＦＦｎ＋１に供給されるクロック信号ｃｋｔｓｔｎ＋１が、十分に遅延した場合、バウンダリスキャンレジスタＦＦｎからバウンダリスキャンレジスタＦＦｎ＋１にデータが供給される際、データは、クロック信号ｃｋｔｓｔｎ＋１がハイである限り、単に、バウンダリスキャンレジスタＦＦｎ＋１を介して伝送される。競合問題は、クロック供給パスが、通常、データ伝送パスに追従していないために生じる。この問題は、システムサイクルタイムＴＣＫを緩和しても解決することができない。データ競合は、データパスに遅延を加えることによって解消することができる。しかしながら、全てのプロセスコーナ（process corner）、電源レベル及び温度において、トランジスタ遅延を金属線ＲＣ遅延に一致させることは困難である。これらの遅延を一致させようとすると、オーバヘッドが著しく大きくなる。
【発明の開示】
【課題を解決するための手段】
【００１６】
バウンダリスキャンレジスタのチェインは、２相クロック信号を用いて、データタイミング競合条件を回避するように構成される。２相クロック信号は、各バウンダリスキャンレジスタのために２つの自己タイミングクロックパルス発生器を含む２相クロック発生器に基づいて生成される。２相クロック発生器は、バウンダリスキャンレジスタの最初のステージをトリガするクロック信号の立ち上がりエッジで、自己タイミングクロックパルスをローカルに生成する。また、２相クロック発生器は、バウンダリスキャンレジスタの第２のステージをトリガする入力クロック信号の立ち下がりエッジで、自己タイミングクロックパルスを生成する。２相クロックによって制御されるバウンダリスキャンレジスタは、２つのラッチを備え、各ラッチは、入力クロック信号の立ち上がりエッジ及び立ち下がりエッジからローカルに生成される自己タイミングのクロックパルスの１つによってトリガされる。
【００１７】
２相クロック発生器は、第１の自己タイミングクロックパルス発生器と、第２の自己タイミングクロックパルス発生器とを備える。第１の自己タイミングクロックパルス発生器は、入力クロック信号の立ち上がりエッジで、第１のクロックパルスを生成する。第１のクロックパルスは、バウンダリスキャンレジスタの第１のラッチに供給される。第２の自己タイミングクロックパルス発生器は、入力クロック信号の立ち下がりエッジで、第２のクロックパルスを生成する。第２のクロックパルスは、バウンダリスキャンレジスタの第２のラッチに供給される。バウンダリスキャンレジスタが受信したデータは、入力クロック信号の前半のサイクルの間、第１のラッチによってラッチされる。前半のサイクルでは、第２のラッチは、データをブロックする。第２のラッチは、後半のサイクルまでデータをラッチしない。２つ以上のバウンダリスキャンレジスタが直列に接続され、第１のバウンダリスキャンレジスタの第２のラッチから出力されるデータは、第２のバウンダリスキャンレジスタの第１のラッチに入力される。
【００１８】
一側面においては、バウンダリスキャンレジスタのチェインは、第１のバウンダリスキャンレジスタと、第２のバウンダリスキャンレジスタとを備える。第１のバウンダリスキャンレジスタは、第１のクロック信号を受信し、第１のクロック信号の立ち上がりエッジで、第１の入力データ値をラッチし、第１のデータ値が、第１のクロック信号の立ち下がりエッジの前に出力されることを防ぎ、第１のクロック信号の立ち下がりエッジで、第１のデータ値を出力する。第２のバウンダリスキャンレジスタは、第１のバウンダリスキャンレジスタに接続され、第１のクロック信号に対して遅延した第２のクロック信号を受信し、第２のクロック信号の立ち上がりエッジで、第１のデータ値をラッチし、第１のデータ値が第２のクロック信号の立ち下がりエッジの前に出力されることを防ぎ、第２のクロック信号の立ち下がりエッジで、第１のデータ値を出力する。バウンダリスキャンレジスタチェインは、直列接続されたＮ個のバウンダリスキャンレジスタを備えていてもよい。第１のクロック信号と第２のクロック信号との間の相対的な遅延は、システムクロック信号のサイクルタイムの半分未満としてもよい。バウンダリスキャンレジスタのチェインは、第１のクロック信号を受信し、第１のクロック信号の立ち上がりエッジに応じて第１のパルス信号を生成する第１のパルス信号発生器を備えていてもよい。バウンダリスキャンレジスタのチェインは、第１のクロック信号を受信し、第１のクロック信号の立ち下がりエッジに応じて第２のパルス信号を生成する第２のパルス信号発生器を備えていてもよい。第１のバウンダリスキャンレジスタは、第１のパルス信号発生器に接続された第１のラッチと、第２のパルス信号発生器に接続された第２のラッチとを備えていてもよい。第１のラッチは、第１のパルス信号を受信し、第１のパルス信号に応じて第１のデータ値をラッチし、第１のデータ値を出力するように構成してもよい。第２のラッチは、第１のラッチに接続され、第２のパルス信号を受信し、第２のパルス信号に応じて、第１のラッチからの第１のデータ値の出力をラッチし、第１のデータ値を出力してもよい。バウンダリスキャンレジスタのチェインは、第２のクロック信号を受信し、第２のクロック信号の立ち上がりエッジに応じて、第３のパルス信号を生成する第３のパルス信号発生器を備えていてもよい。バウンダリスキャンレジスタのチェインは、第２のクロック信号を受信し、第２のクロック信号の立ち下がりエッジに応じて、第４のパルス信号を生成する第４のパルス信号発生器を備えていてもよい。第２のバウンダリスキャンレジスタは、第３のパルス信号発生器に接続された第３のラッチと、第４のパルス信号発生器に接続された第４のラッチとを備えていてもよい。第３のラッチは、第３のパルス信号を受信し、第３のパルス信号に応じて、第１のデータ値をラッチし、第１のデータ値を出力するように構成してもよい。第４のラッチは、第３のラッチに接続され、第４のパルス信号を受信し、第４のパルス信号に応じて、第３のラッチから出力された第１のデータ値をラッチし、第１のデータ値を出力してもよい。
【００１９】
他の側面として、本発明に係るバウンダリスキャンレジスタは、システムクロック信号に基づいて、データを入出力するように構成されたバウンダリスキャンレジスタにおいて、システムクロック信号を受信し、システムクロック信号の立ち上がりエッジに応じて、第１のパルス信号を生成する第１のパルス信号発生器と、システムクロック信号を受信し、システムクロック信号の立ち下がりエッジに応じて、第２のパルス信号を生成する第２のパルス信号発生器と、第１のパルス信号発生器に接続され、第１のパルス信号を受信し、第１のパルス信号に応じて、入力データ値をラッチし、第１のラッチされたデータ値を生成し、第１のラッチされたデータ値を出力する第１のラッチと、第２のパルス信号発生器に接続され、第２のパルス信号を受信し、第２のパルス信号に応じて、第１のラッチから出力された第１のラッチされたデータ値をラッチし、第２のラッチされたデータ値を生成し、第２のラッチされたデータ値を出力する第２のラッチとを備える。
【００２０】
更に他の側面として、本発明に係るデータ処理方法は、バウンダリスキャンレジスタのチェインにデータを通過させるデータ処理方法において、第１のバウンダリスキャンレジスタにおいて第１のクロック信号を受信するステップと、第２のバウンダリスキャンレジスタにおいて、第１のクロック信号に対して遅延した第２のクロック信号を受信するステップと、第１のバウンダリスキャンレジスタによって、第１のクロック信号の立ち上がりエッジで、第１の入力データ値をラッチするステップと、第１のクロック信号の立ち下がりエッジの前に、第１のデータ値が第１のバウンダリスキャンレジスタから出力されることを防ぐステップと、第１のクロック信号の立ち下がりエッジで、第１のバウンダリスキャンレジスタから第１のデータ値を出力するステップと、第２のクロック信号の立ち上がりエッジで、第２のバウンダリスキャンレジスタによって、第１のバウンダリスキャンレジスタから出力された第１のデータ値をラッチするステップと、第２のクロック信号の立ち下がりエッジの前に、第１のデータ値が第２のバウンダリスキャンレジスタから出力されることを防ぐステップと、第２のクロック信号の立ち下がりエッジで、第２のバウンダリスキャンレジスタから第１のデータ値を出力するステップとを有する。データ処理方法は、更に、Ｎ個のバウンダリスキャンレジスタを直列接続するステップを有していてもよい。データ処理方法は、更に、第１のクロック信号と第２のクロック信号との間の相対的な遅延がシステムクロック信号のサイクルタイムの半分未満となるようにシステムクロックを設定するステップを有していてもよい。データ処理方法は、更に、第１のクロック信号の立ち上がりエッジに応じて、第１のパルス信号を生成するステップを有していてもよい。データ処理方法は、更に、第１のクロック信号の立ち下がりエッジに応じて、第２のパルス信号を生成するステップを有していてもよい。データ処理方法は、更に、第１のバウンダリスキャンレジスタ内の第１のラッチによって、第１のパルス信号に応じて、第１のデータ値をラッチし、第１のバウンダリスキャンレジスタから第１のデータ値が出力されることを防ぐステップを有していてもよい。データ処理方法は、更に、第１のバウンダリスキャンレジスタ内の第２のラッチによって、第２のパルス信号に応じて、第１のデータ値をラッチするステップを有していてもよい。第１のバウンダリスキャンレジスタから第１のデータ値を出力するステップは、第２のラッチから第１のデータ値を出力するステップを含んでいてもよい。データ処理方法は、更に、第２のクロック信号の立ち上がりエッジに応じて、第３のパルス信号を生成するステップを有していてもよい。データ処理方法は、更に、第２のクロック信号の立ち下がりエッジに応じて、第４のパルス信号を生成するステップを有していてもよい。データ処理方法は、更に、第２のバウンダリスキャンレジスタ内の第３のラッチによって、第３のパルス信号に応じて、第１のデータ値をラッチし、第２のバウンダリスキャンレジスタから第１のデータ値が出力されることを防ぐステップを有していてもよい。データ処理方法は、第２のバウンダリスキャンレジスタ内の第４のラッチによって、第４のパルス信号に応じて、第１のデータ値をラッチするステップを更に有していてもよい。第２のバウンダリスキャンレジスタから第１のデータ値を出力するステップは、第４のラッチから第１のデータ値を出力するステップを含んでいてもよい。
【００２１】
更に他の側面として、本発明に係るデータ処理方法は、バウンダリスキャンレジスタに入力データ値を通過させるデータ処理方法において、システムクロック信号を受信するステップと、システムクロック信号の立ち上がりエッジに応じて、第１のパルス信号を生成するステップと、バウンダリスキャンレジスタ内の第１のラッチによって、第１のパルス信号に応じて、入力データ値をラッチし、入力データ値が第１のラッチから出力されることを防ぐステップと、システムクロック信号の立ち下がりエッジに応じて、第２のパルス信号を生成するステップと、バウンダリスキャンレジスタ内の第２のラッチによって、第２のパルス信号に応じて、入力データ値をラッチするステップと、バウンダリスキャンレジスタから入力データを出力するステップとを有する。
【発明を実施するための最良の形態】
【００２２】
以下、添付の図面を参照して、バウンダリスキャンレジスタの実施の形態を説明する。適切であれば、２つ以上の図面に同じ要素が記載及び図示されている場合に限り、これらの同じ要素を表すために同じ参照番号を用いる。
【００２３】
２相クロック信号に基づいて構成された２つのバウンダリスキャンレジスタのチェインを図５に示す。第１のバウンダリスキャンレジスタＦＦｎは、ラッチ１及びラッチ２を備える。第２のバウンダリスキャンレジスタＦＦｎ＋１は、ラッチ３及びラッチ４を備える。各ラッチは、入力端子Ｄにおいてデータを受信し、出力端子Ｑからデータを出力し、クロック入力端子ＣＫにおいてクロック信号を受信する。各ラッチのクロック入力端子ＣＫには、自己タイミングのパルス発生器が接続されている。図５に示すように、自己タイミングのパルス発生器ＳＴ１は、ラッチ１のクロック入力端子ＣＫに接続されている。自己タイミングクロックパルス生成器ＳＴ２は、ラッチ２のクロック入力端子ＣＫに接続されている。自己タイミングのパルス発生器ＳＴ３は、ラッチ３のクロック入力端子ＣＫに接続されている。自己タイミングのパルス発生器ＳＴ４は、ラッチ４のクロック入力端子ＣＫに接続されている。クロック入力信号パスに示す遅延ボックスは、全ての物理的信号パスに関連する生来的な遅延を表す。クロック信号ｃｋｔｓｔｎは、システムクロック信号ＴＣＫと、バウンダリスキャンレジスタＦＦｎに信号ＴＣＫを伝送することに関連する遅延とを加算した信号である。クロック信号ｃｋｔｓｔｎ＋１は、クロック信号ｃｋｔｓｔｎと、バウンダリスキャンレジスタＦＦｎからバウンダリスキャンレジスタＦＦｎ＋１にクロック信号ｃｋｔｓｔｎを伝送することに関連する相対的な遅延とを加算した信号である。なお、同様の手法で、３つ以上のバウンダリスキャンレジスタのチェインを構成してもよい。
【００２４】
図５に示すバウンダリスキャンレジスタのチェインに関連する波形を図６に示す。クロック信号ｃｋｔｓｎは、パルス発生器ＳＴ１及びパルス発生器ＳＴ２に供給される。クロック信号ｃｋｔｓｔｎ＋１は、パルス発生器ＳＴ３及びパルス発生器ＳＴ４に供給される。図６に示すように、クロック信号ｃｋｔｓｔｎ＋１は、クロック信号ｃｋｔｓｔｎに対して遅延する。パルス発生器ＳＴ１は、クロック信号ｃｋｔｓｔｎの立ち上がりエッジで、パルスを生成する。クロック信号ｃｋｔｓｔｒｎは、パルス発生器ＳＴ１によって生成されたパルスを表す。クロック信号ｃｋｔｓｔｒｎは、バウンダリスキャンレジスタＦＦｎのラッチ１にクロック入力ＣＫとして供給される。ラッチ１は、クロック信号ｃｋｔｓｔｒｎのパルスを受信すると、バウンダリスキャンレジスタＦＦｎのラッチ１の入力端子Ｄにおいて受信したデータ１ａをラッチする。データ１ａは、ラッチ１によって、ラッチされたままになり、クロック信号ｃｋｔｓｔｒｎの次のパルスまで上書きされない。
【００２５】
パルス発生器ＳＴ２は、クロック信号ｃｋｔｓｔｎの立ち下がりエッジで、パルスを生成する。クロック信号ｃｋｔｓｔｆｎは、パルス発生器ＳＴ２によって生成されたパルスを表す。クロック信号ｃｋｔｓｔｆｎは、バウンダリスキャンレジスタＦＦｎのラッチ２にクロック入力ＣＫとして供給される。ラッチ２は、クロック信号ｃｋｔｓｔｆｎのパルスを受信すると、ラッチ１の出力端子Ｑから入力端子Ｄに供給されたデータをラッチし、次のバウンダリスキャンレジスタＦＦｎ＋１の第１のラッチ（ラッチ３）にデータを出力する。データ１ａは、図６にデータＱ（ＦＦｎ）として示すように、バウンダリスキャンレジスタＦＦｎのラッチ２から出力端子Ｑに供給される。換言すれば、ラッチ２は、クロックサイクルの前半に、ラッチ１が受信したデータ１ａがバウンダリスキャンレジスタＦＦｎ＋１に供給されることを防ぎ、ラッチ２は、クロックサイクルの立ち下がりエッジでトランスペアレントになり、この結果、データ１ａは、バウンダリスキャンレジスタＦＦｎからバウンダリスキャンレジスタＦＦｎ＋１に供給される。
【００２６】
クロック信号ｃｋｔｓｔｎの次の立ち上がりエッジで、パルス発生器ＳＴ１は、次のパルスを生成する。次のパルスは、ラッチ１に対し、次のデータ１ｂをラッチするようにシグナリングし、これにより、ラッチ１のデータ１ａは上書きされる。
【００２７】
クロック信号ｃｋｔｓｔｎ＋１は、パルス発生器ＳＴ３及びパルス発生器ＳＴ４に供給される。パルス発生器ＳＴ３は、クロック信号ｃｋｔｓｔｎ＋１の立ち上がりエッジで、パルスを生成する。クロック信号ｃｋｔｓｔｒｎ＋１は、パルス発生器ＳＴ３によって生成されたパルスを表す。クロック信号ｃｋｔｓｔｒｎ＋１は、バウンダリスキャンレジスタＦＦｎ＋１のラッチ３にクロック入力ＣＫとして供給される。クロック信号ｃｋｔｓｔｒｎ＋１のパルスを受信すると、ラッチ３は、入力端子Ｄにおいて、バウンダリスキャンレジスタＦＦｎからデータ１ａを受信し、データをデータ２ａとしてラッチする。データ２ａは、ラッチ３にラッチされたままになり、クロック信号ｃｋｔｓｔｒｎ＋１の次のパルスまで上書きされない。
【００２８】
パルス発生器ＳＴ４は、クロック信号ｃｋｔｓｔｎ＋１の立ち下がりエッジで、パルスを生成する。クロック信号ｃｋｔｓｔｆｎ＋１は、パルス発生器ＳＴ４によって生成されたパルスを表す。クロック信号ｃｋｔｓｔｆｎ＋１は、バウンダリスキャンレジスタＦＦｎ＋１のラッチ４にクロック入力ＣＫとして供給される。クロック信号ｃｋｔｓｔｆｎ＋１のパルスを受け取ると、ラッチ４は、ラッチ３の出力Ｑから入力端子Ｄに供給されたデータ２ａをラッチし、次のバウンダリスキャンレジスタがあれば、チェイン内の次のバウンダリスキャンレジスタにデータ２ａを供給する。データ２ａは、図６にデータＱ（ＦＦｎ＋１）として示すように、バウンダリスキャンレジスタＦＦｎ＋１のラッチ４の出力端子Ｑから出力される。換言すればラッチ４は、クロックサイクルの前半に、ラッチ３が受信したデータが次のバウンダリスキャンレジスタに供給されることを防ぎ、ラッチ４は、クロックサイクルの立ち下がりエッジでトランスペアレントになり、この結果、データは、バウンダリスキャンレジスタＦＦｎ＋１から次のバウンダリスキャンレジスタに供給される。
【００２９】
パルス発生器ＳＴ３は、クロック信号ｃｋｔｓｔｎ＋１の次の立ち上がりエッジで、次のパルスを生成する。次のパルスは、ラッチ３に対し、次のデータ２ｂをラッチするようにシグナリングし、これにより、ラッチ３のデータ２ａは上書きされる。
【００３０】
実際の動作では、データは、パルス発生器ＳＴ２によって生成されたパルスによるシグナリングに応じて、クロックサイクルｃｋｔｓｔｎの立ち下がりエッジで、バウンダリスキャンレジスタＦＦｎから出力される。バウンダリスキャンレジスタＦＦｎ＋１は、パルス発生器ＳＴ３によって生成されたパルスによるシグナリングに応じて、クロック信号ｃｋｔｓｔｎ＋１の次の立ち上がりエッジで、バウンダリスキャンレジスタＦＦｎから出力されたデータを捕捉する。なお、バウンダリスキャンレジスタＦＦｎ＋１は、パルス発生器ＳＴ４によって生成されたパルスによるシグナリングに応じて、クロック信号ｃｋｔｓｔｎ＋１の次のサイクルの立ち下がりエッジまで、捕捉したデータを出力しない。このような構成により、バウンダリスキャンレジスタＦＦｎ＋１は、遅延がシステムクロックサイクルの半分未満である場合、データが早く出力されてしまうことを防ぐ。
【００３１】
以下の式は、データ競合が回避される条件を表している。ここでは、単相クロック信号に基づいて動作する従来のバウンダリスキャンレジスタチェインと、２相クロック信号に基づいて動作するデュアルラッチバウンダリスキャンレジスタチェイン（dual-latch boundary scan register chain）の両方のケースについて検討する。ケース１は、クロック信号ｃｋｔｓｔｎ＋１がクロック信号ｃｋｔｓｔｎに対して遅延する状況に対応する。図４及び図６は、ケース１の具体例を示している。ケース１のコンテキストにおいて、クロック信号ｃｋｔｓｔｎとクロック信号ｃｋｔｓｔｎ＋１との間のタイミング遅延を負のスキュー（negative skew）と呼ぶ。ケース２は、クロック信号ｃｋｔｓｔｎがクロック信号ｃｋｔｓｔｎ＋１に対して遅延する状況に対応する。クロック信号ｃｋｔｓｔｎ＋１とクロック信号ｃｋｔｓｔｎとの間のタイミング遅延を正のスキュー（positive skew）と呼ぶ。ここでは、以下の変数を使用する。
ｔｎｓｋｌ：単相クロック信号の負のスキュー（ＦＦｎ−ＦＦｎ＋１間）
ｔｐｓｋｌ：単相クロック信号の正のスキュー（ＦＦｎ−ＦＦｎ＋１間）
ｔｎｓｋ２：２相クロック信号の負のスキュー（ＦＦｎ−ＦＦｎ＋１間）
ｔｐｓｋ２：２相クロック信号の正のスキュー（ＦＦｎ−ＦＦｎ＋１間）
ｔＫＱ＿ＲＣ：ＦＦｎとＦＦｎ＋１の間のＦＦｔＫＱ及びＲＣ遅延
ｔＰＷ：２相クロック信号の自己タイミングクロックパルス幅
ｔＣＹＣ：最小サイクルタイム
図３及び図４に示す単相クロック信号に基づいて構成されたバウンダリスキャンレジスタチェインでは、以下の条件が成立したとき、データ競合が回避される。
ケース１：
ｔＣＹＣ−ｔｎｓｋｌ＞ｔＫＱ＿ＲＣ
＝＞ｔｎｓｋｌ＜ｔＣＹＣ−ｔＫＱ＿ＲＣ
ケース２：
ｔｐｓｋ１＜ｔＫＱ＿ＲＣ
図５及び図６に示す２相クロック信号に基づいて構成されたバウンダリスキャンレジスタチェインでは、以下の条件が成立したとき、データ競合が回避される。
ケース１：
ｔＣＹＣ＊０．５−ｔＫＱ＿ＲＣ＞ｔｎｓｋ２
＝＞ｔＣＹＣ＊０．５＞ｔｎｓｋ２＋ｔＫＱ＿ＲＣ
＝＞ｔｎｓｋ２＜ｔＣＹＣ＊０．５−ｔＫＱ＿ＲＣ
ケース２：
ｔｐｓｋ２＜ｔＣＹＣ＊０．５＋ｔＫＱ＿ＲＣ−ｔＰＷ
＝＞ｔＣＹＣ＊０．５＞ｔｐｓｋ２＋ｔＰＷ−ｔＫＱ＿ＲＣ
図５及び図６を用いて説明したバウンダリスキャンレジスタチェインでは、２つのバウンダリスキャンレジスタのクロックスキューがデータ競合を回避する条件を満たさない場合、システムサイクルタイム（ｔＣＹＣ）を長くすることによってこの問題を解決することができる。
【００３２】
２相クロック信号に基づいて動作するように構成されたバウンダリスキャンレジスタのチェインにデータを通過させるデータ処理のフローチャートを図７に示す。ステップ１００において、バウンダリスキャンレジスタＦＦｎが第１のクロック信号を受信する。ステップ１１０において、バウンダリスキャンレジスタＦＦｎ＋１が第２のクロック信号を受信する。第２のクロック信号は、第１のクロック信号に対して遅延している。ステップ１２０では、バウンダリスキャンレジスタＦＦｎが第１のデータ値を、第１のクロック信号の立ち上がりエッジでラッチする。ステップ１３０では、バウンダリスキャンレジスタＦＦｎから第１のデータ値が、第１のクロック信号の立ち下がりエッジの前に出力されることを防ぐ。一実施の形態においては、バウンダリスキャンレジスタＦＦｎから第１のデータ値が、バウンダリスキャンレジスタＦＦｎを２つの個別のラッチによって構成することによって出力されることを防ぐ。この場合、第１のラッチは、バウンダリスキャンレジスタＦＦｎへの入力として、第１のデータ値を受信する。第２のラッチは、第１のラッチの出力端子に接続されている。第１のラッチは、第１のクロック信号の立ち上がりエッジで、第１のデータ値をラッチし、第２のラッチは、ラッチを行わず、これにより、第１のクロック信号がハイの間、第１のラッチによってラッチされた第１のデータは、第２のラッチに供給されない。
【００３３】
ステップ１４０では、バウンダリスキャンレジスタＦＦｎから第１のデータ値が、第１のクロック信号の立ち下がりエッジで出力される。ステップ１５０では、バウンダリスキャンレジスタＦＦｎから出力された第１のデータ値が入力としてバウンダリスキャンレジスタＦＦｎ＋１によってラッチされる。このラッチは、第２のクロック信号の立ち上がりエッジで行われる。ステップ１６０では、バウンダリスキャンレジスタＦＦｎ＋１から第１のデータ値が、第２のクロック信号の立ち下がりエッジの前に出力されることを防ぐ。一実施の形態においては、バウンダリスキャンレジスタＦＦｎ＋１から第１のデータ値が、バウンダリスキャンレジスタＦＦｎ＋１を２つの個別のラッチによって構成することによって出力されることを防ぐ。第１のラッチは、バウンダリスキャンレジスタＦＦｎ＋１への入力として、バウンダリスキャンレジスタＦＦｎの第２のラッチから第１のデータ値を受信する。バウンダリスキャンレジスタＦＦｎ＋１の第２のラッチは、バウンダリスキャンレジスタＦＦｎ＋１の第１のラッチの出力端子に接続されている。第１のラッチは、第２のクロック信号の立ち上がりエッジで、第１のデータ値をラッチし、第２のラッチは、ラッチを行わず、これにより、第２のクロック信号がハイの間、第１のラッチによってラッチされた第１のデータは、第２のラッチに供給されない。ステップ１７０では、バウンダリスキャンレジスタＦＦｎ＋１から第１のデータ値が、第２のクロック信号の立ち下がりエッジで出力される。
【００３４】
上述のように、バウンダリスキャンレジスタチェインを用いることによって、全てのプロセスコーナ（process corner）、電源レベル及び温度条件に亘って、バウンダリスキャンレジスタの詳細な設定及びホールド時間をシミュレートする必要がなくなる。２相クロック信号を利用したデュアルラッチバウンダリスキャンレジスタは、任意のレイアウト設計に対する許容度が高く、このため、設計及びポストレイアウトシミュレーション時間を短縮することができる。
【００３５】
本発明の構成及び動作原理を明瞭に説明するために、様々な詳細を含む特定の実施例を用いて本発明を説明した。このような特定の実施例の説明及びその詳細は、特許請求の範囲を制限するものではない。本発明の主旨及び範囲から逸脱することなく、例示的に選択された実施例を変更できることは、当業者にとって明らかである。
【図面の簡単な説明】
【００３６】
【図１】理想的な条件に基づいて構成された従来の２つのバウンダリスキャンレジスタのチェインを示す図である。
【図２】図１に基づいて構成されたバウンダリスキャンレジスタに関連する波形を示す図である。
【図３】タイミング遅延の結果、データ競合が生じる従来のバウンダリスキャンレジスタのチェインを示す図である。
【図４】図３に示すバウンダリスキャンレジスタのチェインに関連する波形を示す図である。
【図５】２相クロック信号に基づいて構成された２つのバウンダリスキャンレジスタのチェインを示す図である。
【図６】図５に示すバウンダリスキャンレジスタのチェインに関連する波形を示す図である。
【図７】２相クロック信号に基づいて動作するように構成されたバウンダリスキャンレジスタのチェインにデータを通過させるデータ処理のフローチャートである。
【図１】
0005138201.tif 000002
【図２】
0005138201.tif 000003
【図３】
0005138201.tif 000004
【図４】
0005138201.tif 000005
【図５】
0005138201.tif 000006
【図６】
0005138201.tif 000007
【図７】
0005138201.tif 000008