(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-02
(45)【発行日】2023-10-11
(54)【発明の名称】マルチチップモジュール上の物理レイヤインタフェースに対するデスキュー方法
(51)【国際特許分類】
H04L 7/00 20060101AFI20231003BHJP
H04L 25/02 20060101ALI20231003BHJP
G06F 13/42 20060101ALI20231003BHJP
【FI】
H04L7/00 160
H04L25/02 J
G06F13/42 350A
(21)【出願番号】P 2021533834
(86)(22)【出願日】2020-04-27
(86)【国際出願番号】 US2020030086
(87)【国際公開番号】W WO2020223159
(87)【国際公開日】2020-11-05
【審査請求日】2021-10-25
(32)【優先日】2019-04-29
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(73)【特許権者】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ヴァルン グプタ
(72)【発明者】
【氏名】ミラム パラスチョウ
(72)【発明者】
【氏名】ジェラルド アール. タルボット
(72)【発明者】
【氏名】グルナス ドリン
(72)【発明者】
【氏名】デイモン トヒディ
(72)【発明者】
【氏名】エリック イアン カーペンター
(72)【発明者】
【氏名】チャド エス. ガルン
(72)【発明者】
【氏名】ジェフリー クーパー
(72)【発明者】
【氏名】ハンウー チョ
(72)【発明者】
【氏名】トーマス エイチ. ライケンス
(72)【発明者】
【氏名】スコット エフ. ドウ
(72)【発明者】
【氏名】マイケル ジェイ. トレシダー
【審査官】川口 貴裕
(56)【参考文献】
【文献】特開2014-216981(JP,A)
【文献】特開2014-140090(JP,A)
【文献】国際公開第2012/153843(WO,A1)
【文献】米国特許出願公開第2014/0218221(US,A1)
【文献】米国特許出願公開第2007/0177701(US,A1)
【文献】米国特許出願公開第2015/0078495(US,A1)
【文献】特開2008-172657(JP,A)
【文献】特開2013-055502(JP,A)
【文献】米国特許出願公開第2015/0293175(US,A1)
【文献】米国特許出願公開第2005/0005051(US,A1)
【文献】韓国公開特許第10-2006-0059615(KR,A)
【文献】特開2000-029828(JP,A)
【文献】特開2002-300031(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 7/00
H04L 25/02
G06F 13/42
(57)【特許請求の範囲】
【請求項1】
複数の通信レーンと、
制御ロジックと、を備え、
前記制御ロジックは、
レーンのローカルクロックを対応するグローバルクロックと同期させるように前記複数の通信レーンの各々のレーンをトレーニングすることと、
前記複数の通信レーンの各々のレーンが正確なシンボル整合を有するかどうかを判別することと、
前記複数の通信レーンの全てが不正確なシンボル整合を有すると判別したことに応じて、各々のレーンを単一のステップだけシンボル回転させることと、
前記複数の通信レーンの全てではないが一部が正確なシンボル整合を有すると判別したことに応じて、不正確なシンボル整合を有するレーンを単一のステップだけシンボル回転させることと、
前記複数の通信レーンの全てが正確なシンボル整合を有すると判別したことに応じて、複数のローカルクロックを使用して複数のデータ信号をサンプリングして、複数のデータシーケンスを生成することと、
を行うように構成されている、
回路。
【請求項2】
前記制御ロジックは、前記複数の通信レーンの全てが正確なシンボル整合を有する前に第1のタイミングウィンドウの終わりに到達したと判別したことに応じて、
正確なシンボル整合を有するレーンをシンボル回転させ、対応するグローバルクロックの位相を調整して、誤ったシンボル回転を補償することと、
第2のタイミングウィンドウの最初に、前記複数の通信レーンの各々のレーンが正確なシンボル整合を有するかどうかを判別することと、
を行うように構成されている、
請求項1の回路。
【請求項3】
前記回路は、
前記複数の通信レーンのレーン毎のバレルシフタであって、各バレルシフタは、入力データサンプルをデシリアライズするために、ずれた位相を有する複数のクロックを生成するように構成されている、バレルシフタと、
レーン毎の複数の列のレジスタであって、前記ずれた位相を有する複数のクロックは、前記入力データサンプルをサンプリングするためのレジスタの第1の列に結合されている、複数の列のレジスタと、をさらに備える、
請求項1の回路。
【請求項4】
前記レジスタの第1の列からの出力は、レジスタの第2の列の入力に結合されており、前記レジスタの第2の列の各レジスタは、前記レーンの対応するローカルクロックによってクロックされる、
請求項3の回路。
【請求項5】
前記制御ロジックは、前記複数の通信レーンの全てが不正確なシンボル整合を有すると判別したことに応じて、各々のレーンを単一のステップだけシンボル回転させるために、前記複数のローカルクロックの1つおきのローカルクロックの位相を前記単一のステップだけ回転するように構成されている、
請求項1の回路。
【請求項6】
前記制御ロジックは、
前記複数の通信レーンの各々のレーンが正確なシンボル整合を有するかどうかを判別する前に、タイミングウィンドウの最初に、前記レーンのローカルクロックを対応するグローバルクロックと同期させるように各々のレーンをトレーニングするように構成されている、
請求項1の回路。
【請求項7】
前記タイミングウィンドウの最初に、前記レーンのローカルクロックを対応するグローバルクロックと同期させるように各々のレーンをトレーニングすることは、
所定のレジスタを用いて、前記対応するグローバルクロックで前記ローカルクロックをサンプリングすることと、
所定のバレルシフタを使用して、エッジ遷移が検出されるまで前記ローカルクロックを位相にわたってスウィープすることと、
前記エッジ遷移を検出したことに応じて、前記ローカルクロックが前記対応するグローバルクロックと整合することを判別することと、
前記レーン上でデータ信号をサンプリングするためのセットアップ要件及びホールドタイミング要件を満たすように、前記ローカルクロックの位相を調整することと、を含む、
請求項6の回路。
【請求項8】
レーンのローカルクロックを対応するグローバルクロックと同期させるように複数のレーンの各々のレーンをトレーニングすることと、
前記複数のレーンの各々のレーンが正確なシンボル整合を有するかどうかを判別することと、
前記複数のレーンの全てが不正確なシンボル整合を有すると判別したことに応じて、各々のレーンを単一のステップだけシンボル回転させることと、
前記複数のレーンの全てではないがいくつかが正確なシンボル整合を有すると判別したことに応じて、不正確なシンボル整合を有するレーンを単一のステップだけシンボル回転させることと、
前記複数のレーンの全てが正確なシンボル整合を有すると判別したことに応じて、複数のローカルクロックを使用して複数のデータ信号をサンプリングして、複数のデータシーケンスを生成することと、を含む、
方法。
【請求項9】
前記方法は、前記複数のレーンの全てが正確なシンボル整合を有する前に第1のタイミングウィンドウの終わりに到達したと判別したことに応じて、
正確なシンボル整合を有するレーンをシンボル回転させ、対応するグローバルクロックの位相を調整して、誤ったシンボル回転を補償することと、
第2のタイミングウィンドウの最初に、前記複数のレーンの各々のレーンが正確なシンボル整合を有するかどうかを判別することと、をさらに含む、
請求項8の方法。
【請求項10】
前記複数のレーンのレーン毎のバレルシフタを用いて、入力データサンプルをデシリアライズするために、ずれた位相を有する複数のクロックを生成することと、
前記入力データサンプルをサンプリングするためのレーン毎のレジスタの第1の列によって、前記ずれた位相を有する複数のクロックを受信することと、をさらに含む、
請求項8の方法。
【請求項11】
レジスタの第2の列の入力において、前記レジスタの第1の列からの出力を受信することをさらに含み、前記レジスタの第2の列の各レジスタは、前記レーンの対応するローカルクロックによってクロックされる、
請求項10の方法。
【請求項12】
前記方法は、前記複数
のレーンの全てが不正確なシンボル整合を有すると判別したことに応じて、各々のレーンを単一のステップだけシンボル回転させるために、前記複数のローカルクロックの1つおきのローカルクロックの位相を前記単一のステップだけ回転することを含む、
請求項8の方法。
【請求項13】
前記方法は、前記複数のレーンの各々のレーンが正確なシンボル整合を有するかどうかを判別する前に、タイミングウィンドウの最初に、前記レーンのローカルクロックを対応するグローバルクロックと同期させるように各々のレーンをトレーニングすることを含む、
請求項8の方法。
【請求項14】
前記タイミングウィンドウの最初に、前記レーンのローカルクロックを対応するグローバルクロックと同期させるように各々のレーンをトレーニングすることは、
所定のレジスタを用いて、前記対応するグローバルクロックで前記ローカルクロックをサンプリングすることと、
所定のバレルシフタを使用して、エッジ遷移が検出されるまで前記ローカルクロックを位相にわたってスウィープすることと、
前記エッジ遷移を検出したことに応じて、前記ローカルクロックが前記対応するグローバルクロックと整合することを判別することと、
前記レーン上でデータ信号をサンプリングするためのセットアップ要件及びホールドタイミング要件を満たすように、前記ローカルクロックの位相を調整することと、を含む、
請求項13の方法。
【請求項15】
第1の機能ユニットと、
複数の通信レーンを有するチャネルと、
前記チャネルを介して前記第1の機能ユニットによって伝送された信号を受信するように結合された第2の機能ユニットと、を備え、
前記第1の機能ユニットは、
レーンのローカルクロックを対応するグローバルクロックと同期させるように前記複数の通信レーンの各々のレーンをトレーニングすることと、
前記複数の通信レーンの各々のレーンが正確なシンボル整合を有するかどうかを判別することと、
前記複数の通信レーンの全てが不正確なシンボル整合を有すると判別したことに応じて、各々のレーンを単一のステップだけシンボル回転させることと、
前記複数の通信レーンの全てではないが一部が正確なシンボル整合を有すると判別したことに応じて、不正確なシンボル整合を有するレーンを単一のステップだけシンボル回転させることと、
前記複数の通信レーンの全てが正確なシンボル整合を有すると判別したことに応じて、複数のローカルクロックを使用して複数のデータ信号をサンプリングして、複数のデータシーケンスを生成することと、
を行うように構成されている、
システム。
【請求項16】
前記第1の機能ユニットは、前記複数の通信レーンの全てが正確なシンボル整合を有する前に第1のタイミングウィンドウの終わりに到達したと判別したことに応じて、
正確なシンボル整合を有するレーンをシンボル回転させ、対応するグローバルクロックの位相を調整して、誤ったシンボル回転を補償することと、
第2のタイミングウィンドウの最初に、前記複数の通信レーンの各々のレーンが正確なシンボル整合を有するかどうかを判別することと、
を行うように構成されている、
請求項15のシステム。
【請求項17】
前記第1の機能ユニットは、
前記複数の通信レーンのレーン毎のバレルシフタであって、各バレルシフタは、入力データサンプルをデシリアライズするために、ずれた位相を有する複数のクロックを生成するように構成されている、バレルシフタと、
レーン毎の複数の列のレジスタであって、前記ずれた位相を有する複数のクロックは、前記入力データサンプルをサンプリングするためのレジスタの第1の列に結合されている、複数の列のレジスタと、をさらに備える、
請求項15のシステム。
【請求項18】
前記レジスタの第1の列からの出力は、レジスタの第2の列の入力に結合されており、前記レジスタの第2の列の各レジスタは、前記レーンの対応するローカルクロックによってクロックされる、
請求項17のシステム。
【請求項19】
前記第1の機能ユニットは、前記複数の通信レーンの全てが不正確なシンボル整合を有すると判別したことに応じて、各々のレーンを単一のステップだけシンボル回転させるために、前記複数のローカルクロックの1つおきのローカルクロックの位相を前記単一のステップだけ回転するように構成されている、
請求項15のシステム。
【請求項20】
前記第1の機能ユニットは、
前記複数の通信レーンの各々のレーンが正確なシンボル整合を有するかどうかを判別する前に、タイミングウィンドウの最初に、前記レーンのローカルクロックを対応するグローバルクロックと同期させるように各々のレーンをトレーニングするように構成されている、
請求項15のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
最近の半導体チップは、高速且つ効率的な計算を促進する様々な回路及びコンポーネントを含む。半導体チップ内の機能ブロック間で情報を転送する場合、電気信号は、通常、金属トレース上で送信される。第1の機能ブロック内の送信機は、金属トレースにわたって電気信号を送信する。第2の機能ブロック内の受信機は、電気信号を受信する。場合によっては、2つの機能ブロックが同じダイにある。他の場合には、2つの機能ブロックが別々のダイにある。
【0002】
情報処理システム及び情報処理デバイスの処理速度は、新たなシステム及びデバイスが開発されるにつれて増加し続けている。データ信号及び対応するクロック信号が機能ブロック間で送信される場合、信号は、相互に整合しなくなることがある。信号を再整合することは、通常、大量のレイテンシを伴う。
【0003】
添付の図面と併せて以下の説明を参照することによって、本明細書で説明する方法及びメカニズムの利点を良好に理解することができる。
【図面の簡単な説明】
【0004】
【
図1】送信機及び受信機を含む汎用コンピュータ又は通信システムの一実施形態のブロック図である。
【
図2】コンピューティングシステムの一実施形態のブロック図である。
【
図3】物理レイヤインタフェース接続の一実施形態の図である。
【
図4】同期クロックドメインクロッシングを達成するためにローカルクロックの位相を調整する回路の一実施形態のブロック図である。
【
図5】同期クロックドメインクロッシングを達成するために利用可能なタイミングマージンを増加させるオプションのFIFOモードを実装する回路の一実施形態のブロック図である。
【
図6】デシリアライザに使用する回路の一実施形態の図である。
【
図7】デシリアライザにおいてバレルシフタを使用してシンボルロッキングを実行する一実施形態のタイミング図である。
【
図8】バレルシフタが単一のステップだけクロック位相をシフトした後の時点の一実施形態のタイミング図である。
【
図9】バレルシフタが第2のステップだけクロック位相をシフトした後の時点の一実施形態のタイミング図である。
【
図10】最小レイテンシでリンク全体のデスキューを実行する一実施形態の状態図である。
【
図11】デシリアライザに使用する回路の一実施形態の図である。
【
図12】クロックジッタを考慮してタイミングマージンを増加させる2列FIFO回路の一実施形態の図である。
【
図13】ローカルクロックをグローバルクロックと整合するためのトレーニングを実行する方法の一実施形態を示す一般化されたフローチャートである。
【
図14】複数のレーンに対して同期クロスドメインクロッシングを達成する方法の一実施形態を示す一般化されたフローチャートである。
【
図15】低減したレイテンシで複数のレーンにわたってデスキューする方法の一実施形態を示す一般化されたフローチャートである。
【
図16】回路表現を記憶する非一時的なコンピュータ可読記憶媒体の一実施形態を示すブロック図である。
【発明を実施するための形態】
【0005】
以下の説明では、本明細書で提示される方法及びメカニズムの十分な理解を提供するために、多数の具体的な詳細が示されている。しかしながら、当業者は、これらの具体的な詳細なしに様々な実施形態が実施され得ることを認識すべきである。いくつかの例では、本明細書で説明するアプローチを曖昧にすることを回避するために、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡単且つ明確にするために、図示した要素は必ずしも縮尺通りに描かれていないことが理解されよう。例えば、いくつかの要素の寸法は、他の要素に対して誇張されてもよい。
【0006】
低減したレイテンシで同期クロックドメインクロッシングを実装するマルチチップモジュール上の物理レイヤインタフェースに対するデスキュー方法のための様々なシステム、装置、方法及びコンピュータ可読媒体が開示される。一実施形態では、複数の通信レーンに接続された回路は、タイミングウィンドウの最初に、レーンのローカルクロックを対応するグローバルクロックと同期させるように各レーンをトレーニング(訓練)する。次に、回路は、複数のレーンの全てが不正確なシンボル整合を有すると判別したことに応じて、各レーンを単一のステップだけシンボル回転させる。複数のレーンの全てではないが一部が正確なシンボル整合を有すると判別したことに応じて、回路は、不正確なシンボル整合を有するレーンを単一のステップだけシンボル回転させる。タイミングウィンドウの終わりに到達すると、回路は、正確なシンボル整合を有するレーンをシンボル回転させ、誤ったシンボル回転を補償するように、対応するグローバルクロックの位相を調整(調節)する。回路は、複数のレーンの全てが正確なシンボル整合を有すると判別したことに応じて、複数のデータシーケンスを生成するように、複数のローカルクロックを使用して複数のデータ信号をサンプリングする。
【0007】
様々な実施形態では、低減したレイテンシで同期クロックドメインクロッシングを実装する技術が開示される。一実施形態では、回路は、グローバルクロック及びデータ信号を受信しながらローカルクロックを生成する。回路は、グローバルクロックでローカルクロックをサンプリングするレジスタを含む。また、回路は、単一単位間隔(UI)ステップサイズで位相シフトされたバージョンのローカルクロックを生成するバレルシフタを含む。さらに、回路は、バレルシフタを使用して、エッジ遷移が検出されるまでローカルクロックを全ての位相にわたってスウィープする制御ロジックを含む。エッジ遷移が検出された場合、ローカルクロックがグローバルクロックと整合されていることを示す。次いで、制御ロジックは、データ信号をサンプリングするためのセットアップ要件及びホールド要件を満たすように、ローカルクロックの位相を調整する。次に、位相調整されたローカルクロックでデータ信号をサンプリングして、データシーケンスを生成する。
【0008】
図1を参照すると、送信機105及び受信機110を含む汎用コンピュータ又は通信システム100の一実施形態のブロック図が示されている。一実施形態では、送信機105は、通信チャネル115を介して受信機110にデータを送信する。実施形態に応じて、通信チャネル115は、ケーブル、バックプレーン、1つ以上の金属トレース、又は、他のタイプの通信チャネルである。例えば、一実施形態では、チャネル115は、マルチチップモジュールの2つのチップ間の1つ以上の金属トレースである。物理レイヤにおいて、送信機105と受信機デバイス110との間の通信は、所定の伝送プロトコルに従って単方向又は双方向であってもよい。システム100は、任意の数及びタイプの他のデバイスを含んでもよいことに留意されたい。また、システム100は、システム全体に分散された任意の数の送受信機ペアを含んでもよい。
【0009】
送信機105及び受信機110は、実施形態に応じて任意のタイプのデバイスであってもよい。例えば、一実施形態では、送信機105は、プロセッシングユニット(例えば、中央処理装置(CPU)、グラフィックスプロセッシングユニット(GPU))であり、受信機110は、メモリデバイスである。メモリデバイスは、ダイナミックランダムアクセスメモリ(DRAM)、同期DRAM(SDRAM)、ダブルデータレート(DDR、DDR2、DDR3等)、SDRAM(mDDR3等のモバイルバージョンのSDRAM及び/又はLPDDR2等の低電力バージョンのSDRAMを含む)、RAMBUS DRAM(RDRAM)、スタティックRAM(SRAM)等の任意のタイプのメモリであってもよい。1つ以上のメモリデバイスは、シングルインラインメモリモジュール(SIMM)、デュアルインラインメモリモジュール(DIMM)等のメモリモジュールを形成するように、回路基板に結合されてもよい。或いは、メモリデバイスは、チップオンチップ構成、パッケージオンパッケージ構成又はマルチチップモジュール(MCM)構成でシステムオンチップ(SoC)又は集積回路(IC)内に実装されてもよい。
【0010】
別の実施形態では、送信機105は、入力/出力(I/O)ファブリックであり、受信機110は、周辺デバイスである。周辺デバイスは、wifi(登録商標)、Bluetooth(登録商標)、セルラ、グローバルポジショニングシステム等の様々なタイプの無線通信のデバイスを含んでもよい。また、周辺デバイスは、RAM記憶装置、ソリッドステート記憶装置又はディスク記憶装置を含む追加の記憶装置を含んでもよい。また、周辺デバイスは、タッチディスプレイスクリーン又はマルチタッチディスプレイスクリーンを含むディスプレイスクリーン、キーボード又は他の入力デバイス、マイクロフォン、スピーカ等のユーザインタフェースデバイスを含んでもよい。他の実施形態では、送信機105及び受信機110は、他のタイプのデバイスである。システム100は、IC、SoC及びMCM等の任意のタイプのシステムであってもよいことに留意されたい。
【0011】
図2を参照すると、コンピューティングシステム200の一実施形態のブロック図が示されている。図示するように、システム200は、デスクトップコンピュータ210、ラップトップコンピュータ220、サーバ230、モバイルデバイス240、又は、他のチップ、回路、コンポーネント等を表す。他のデバイスが可能であり、考慮される。図示した実施形態では、システム200は、送信機202A~N及び受信機203A~Nの任意のペアを含む。
【0012】
図3を参照すると、物理レイヤインタフェース接続の一実施形態の図が示されている。
図3の左側には、
図3の右側のスレーブPCS380にチャネル340を介して接続されたマスタ物理コーディングサブレイヤ(PCS)305が示されている。一実施形態では、マスタPCS305は、マルチチップモジュール(MCM)の第1の集積回路(IC)(すなわち、チップ)上に配置されており、スレーブPCS380は、MCMの第2のIC上に配置されている。例えば、一実施形態では、マスタPCS305は、入力/出力(I/O)半導体ダイの一部であり、スレーブPCS380は、コアコンプレックス半導体ダイの一部である。他の実施形態では、マスタPCS305及びスレーブPCS380は、他のタイプのコンポーネント又は機能ユニットと共に含まれる。
【0013】
様々な実施形態では、マスタPCS305は、クロックを生成する位相ロックループ(PLL)310を含むかPLL310に結合されており、PLL310は、クロック送信モジュール325及びマスタPCS305内の他のモジュールに結合されている。マスタPCS305は、N個の受信機のアレイ315及びM個の送信機のアレイ335を含み、N及びMは、正の整数であり、N及びMの値は、実施形態に応じて変化する。受信クロックゲーティング(RXCG)モジュール320は、受信機のアレイ315に結合されており、送信クロックゲーティング(TXCG)モジュール330は、送信機のアレイ335に結合されている。一実施形態では、クロックは、マスタPCS305から転送され、マスタPCS305は、PLL310の基準クロックとして使用される。PLL310によって生成されたクロックは、チャネル340を介して転送され、PLL375(スレーブPCS380の)及びダウンストリームロジックの基準クロックとして使用される。一実施形態では、マスタPCS305及びスレーブPCS380によってハーフレートアーキテクチャが利用され、クロックは、データレートの周波数の半分であり、データは、クロックの立ち上がりエッジ及び立ち下りエッジでサンプリングされる。
【0014】
一実施形態では、マスタ305の送信機のアレイ335は、最も遠いレーン間で1000ミクロン(すなわち、マイクロメートル)よりも大きい幅を有するチャネル340内の対応するレーンに接続されている。また、一実施形態では、マスタ305の受信機のアレイ315は、最も遠いレーン間で1000ミクロンよりも大きい幅を有するパッケージチャネル340内の対応するレーンに接続されている。これは、チャネル340のレーン上で送信される異なるクロックのクロックエッジ間のドリフトをもたらす。
【0015】
一実施形態では、同期クロックドメインクロッシングは、本明細書で説明する方法及びメカニズムのうち1つ以上を使用して、送信機のアレイ335にわたって達成される。例えば、送信機のアレイ335のレーンが1000ミクロンよりも大きい距離だけ離れている場合であっても、同期クロックドメインクロッシングは、本明細書で提示される技術を使用して達成されると共に、(従来のアプローチと比較して)比較的少ない量のレイテンシをインタフェースに加える。一実施形態では、同期クロックドメインクロッシングを達成するために、スレーブPCS380のローカルクロックは、転送されたコントローラクロックと整合するようにトレーニングされる。本明細書で使用する場合、「ローカルクロック」という用語は、比較的高速のPLLクロックの分割されたバージョンとして定義される。また、本明細書で使用する場合、「コントローラクロック」という用語は、チャネル(例えば、チャネル340)のレーンにわたって分散されたシステムオンチップ(SoC)マスタクロックとして定義される。
【0016】
一実施形態では、レーン間での送信チャネルスキューを最小にするために、1単位間隔(UI)の粒度で遅延が加えられる。一実施形態では、同期クロッシングを達成するために利用可能なタイミングマージンを増加させるために、任意のファーストインファーストアウト(FIFO)モードが実施される。FIFOモードが有効にされることにより、更なるレイテンシを犠牲にして更なる遅延が利用可能である。しかしながら、これは、送信チャネルスキューを低減させるために利用可能な追加の調整範囲をもたらす。一実施形態では、トレーニングの前に、シンボル開始点がチャネル340の様々な送信レーンにわたって広げられる。トレーニングの後、チャネル340の様々な送信レーン上のシンボル開始点は、互いに1UI内で整合される。
【0017】
図4を参照すると、同期クロックドメインクロッシングを達成するためにローカルクロックの位相を調整する回路400の一実施形態のブロック図が示されている。一実施形態では、物理レイヤ(PHY)インタフェースについて、入力されたコントローラクロックが位相において固定され、ローカルクロックは、PLL420によって生成された、分割されたバージョン(分割器422を使用した)の高速クロックである。ローカルクロックは、クロックトレーニングユニット425に供給される。クロックトレーニングユニット425の一例は、ブロック405内の制御ロジックとして示される。ブロック405に示すように、ローカルクロックは、バレルシフタ415の使用により位相シフトされる。一実施形態では、複数のローカルクロックが、対応するコントローラクロックと整合するようトレーニングされ、次いで、トレーニングされたローカルクロックは、ブロック430に示すように10/2シリアライザに結合される。
【0018】
一実施形態では、対応するコントローラクロックに一致するようにローカルクロックの位相をトレーニングするために、2段階のトレーニング方法が実行される。第1段階では、ローカルクロックとコントローラクロックとの間の位相関係が未知である場合にトレーニングステップが実行され、コントローラクロックに対するレーン毎のローカルクロックの位相関係が確立される。トレーニング方法の第2段階では、セットアップ要件及びホールド要件を満たすように、コントローラクロックに対して各ローカルクロックの位相が調整される。
【0019】
一実施形態では、同期レジスタ417においてローカルクロックをサンプリングするためにコントローラクロックが使用され、同期レジスタ417の出力は、クロックトレーニング有限状態機械(FSM)410に提供される。バレルシフタ415を使用して、サンプラ出力(すなわち、同期レジスタ417の出力)が0から1になるのが検出されるまで、全ての位相にわたってローカルクロックがスウィープされる。サンプラ出力が0から1になるのが検出されると、ローカルクロックがコントローラクロックの+/-1単位間隔(UI)内で整合されることを示す。一実施形態では、1UIは、1xクロックの1/10であり、1UIは、クロックをスウィープするための最小分解能である。一実施形態では、低周波数位相オフセットによるデルタ値を考慮するために、クロックトレーニングFSM410において追加の平均化が実行される。ローカルクロックがコントローラクロックに整合されると、ローカルクロックの位相は、セットアップ要件及びホールドタイミング要件を満たすよう調整される。異なるレーンから生じるデータが比較的低いレイテンシでコントローラクロックに同期されるように、この方法が全てのレーンに対して繰り返される。また、一実施形態では、送信機及びチャネルに起因して生じたスキューを最小にするように、レーン間に遅延が加えられる。
【0020】
図4に示すアプローチを使用して、フロップ毎のタイミングでデータがコントローラクロックドメインからローカルクロックドメインに渡され、それによって、従来の設計に存在するレイテンシを低減させる。タイミング
図440は、コントローラクロックへのローカルクロックのトレーニング前タイミングの一例を示す。タイミング
図450は、トレーニング後であって、セットアップ要件及びホールド要件を満たすようにローカルクロックがコントローラクロックに対して調整された後の、ローカルクロックとコントローラクロックとの間で達成されるタイミングの一例を示す。
【0021】
図5を参照すると、同期クロックドメインクロッシングを達成するために利用可能なタイミングマージンを増加させるオプションのFIFOモードを実施する回路500の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステムは、潜在的に高いジッタコントローラクロックとレーン生成ローカルクロックとの間のクロックドメインクロッシングを有する。コントローラクロックは、マスタPCSからの並列データ起動クロックとして使用され、レーン生成ローカルクロック(すなわち、ワードクロック)は、PHYインタフェースにおいて並列データキャプチャとして使用される。一実施形態では、コントローラクロックからレーン生成ローカルクロックへの同期クロックドメインクロッシングは、オプションのFIFOバッファによるクロックトレーニングアルゴリズムを介して達成される。トレーニングされたインタフェースでもタイミングを満たすことができないほど、予測されるコントローラクロックジッタが十分に高い場合、一実施形態では、ジッタ許容範囲を増加させるためにFIFOが使用される。一実施形態では、ジッタ許容範囲を2倍にするために、2エントリFIFOが使用される。
【0022】
一実施形態では、デフォルトモードでは、予測されるコントローラクロックジッタに対する適切なタイミングマージンを保証するために、ローカルクロックは、コントローラクロックとローカルクロックとの間の初期平均差に基づいて、1UI分解能で調整される。一実施形態では、オプションのFIFOモードでは、ハーフレートバージョンのコントローラクロックは、書き込みポインタとしての役割を果たすと共に、ハーフレートバージョンのローカルクロックは、読み出しポインタとして使用される。クロックトレーニングアルゴリズムは、読み出しポインタのプログラム可能な配置のための初期平均書き込み/読み出しポインタ分離を決定する。一実施形態では、適切なタイミングマージンを保証すると共に、予測されるコントローラクロックジッタ規模に基づいて並列データキャプチャインタフェースにおいてレイテンシを最小にするために、読み出しポインタ配置は、1UI分解能で調整される。一実施形態では、ポインタ分離において適切なマージンが存在する場合、レーン毎のスキューを低減させるために、1UIステップサイズでの初期のクロックトレーニングの後に読み出しポインタが更に調整される。データがローカルクロックドメインに渡されると、データは、直列化され、送信レーンを介してチャネルに提供される。
【0023】
一実施形態では、入力データは、物理コーディングサブレイヤ(PCS)505のドメイン内のフロップ510を介して供給される。コントローラクロックは、フロップ510のクロック入力に供給される。一実施形態では、入力データは、10ビット幅である。しかしながら、他の実施形態では、入力データは、他のビット幅を有してもよい。同様に、他の実施形態では、回路500における他の経路のビット幅は変化してもよい。フロップ510の出力は、送信マクロドメイン507内のフロップ515,520に並列に供給される。ハーフレートコントローラクロックは、フロップ515,520のクロック入力にクロックとして供給される。フロップ515、520の出力は、マルチプレクサ525の入力に供給される。マルチプレクサ525の出力は、フロップ535の入力に結合されている。1xレートローカルクロックは、フロップ535のクロック入力に結合されている。フロップ535の出力は、シリアライザ(図示省略)に供給される。
【0024】
一実施形態では、高速5xレートクロックは、ワードクロックバレルシフタ540に入力として供給される。一実施形態では、ワードクロックバレルシフタ540は、ローカル1xレートクロックの10個の固有位相(unique phases)を生成する。ワードクロックバレルシフタ540の位相調整された出力は、反転され、次いで、フロップ530のクロックポートに結合される。フロップ530の出力は、反転され、次いで、位相調整されたハーフレートローカルクロックを生成するように、フロップ530の入力に再度結合される。位相調整されたハーフレートローカルクロックは、マルチプレクサ525の選択入力に結合される。1xコントローラクロックは、反転され、フロップ545のクロック入力に結合される。フロップ545の出力は、反転され、次いで、ハーフレートコントローラクロックを生成するように、フロップ545の入力に再度結合される。回路500(
図5の)に示すフロップは、任意のタイプの適切なレジスタ(例えば、D型フリップフロップ)を使用して実装されてもよいことに留意されたい。
【0025】
図6を参照すると、デシリアライザで使用するための回路600の一実施形態の図が示されている。一実施形態では、回路600は、2to10デシリアライザ(2-to-10 deserializer)の一部として実装される。2to10デシリアライザは、入力クロックサイクル当たり2入力ビットを受信し、出力クロックサイクル当たり10出力ビットを生成する。しかしながら、他の実施形態では、回路600は、サイクル当たり他の数の入力ビットを受信し、及び/又は、サイクル当たり他の数の出力ビットを生成する、他のタイプのデシリアライザによる使用のために修正されてもよい。一実施形態では、回路600は、2UIクロック位相を有する1UI粒度を有する2to10デシリアライザの一部としてシンボルロッキングを実行する。一実施形態では、シンボルロッキングは、2つの別個の機能ユニット間のリンクに対するリンクトレーニングの一部として実行される。この技術の使用により、入力される非直列化(デシリアライズ)されたデータは、比較的低いレイテンシで正確なシンボルに再整合される。一実施形態では、このシンボルロッキング技術の使用に関与する2つの態様が存在する。第1の態様は、バレルシフトされたクロック位相を使用して、入力された直列(シリアル)データを非直列化させている。第2の態様は、正確なシンボルを取得するために、入力された直列化されたデータを異なる方法で取り込む。
【0026】
回路600に示すように、入力された直列データは、フロップ615A~Bによってハーフレートクロックの両方のエッジ上でサンプリングされ、2ビットのデータを取得するために、マルチプレクサ620,622を介してフロップ645に渡される。一実施形態では、非直列化の後、データは、ローカルクロックドメインにあり、コントローラクロックドメインに再度移される。これは、
図4の議論において上述したように、同期クロックドメインクロッシングによって達成される。一実施形態では、スレーブのコントローラクロックは、マスタから転送された基準クロックを有するローカルPLLから導出される。
【0027】
回路600の動作について、入力データは、チャネル605から受信され、2つの組のフロップ615A~Bに結合される。クロック生成ユニット610は、フロップ615Aの入力に結合された0度の位相を有する第1のクロックを生成する。また、クロック生成ユニット610は、フロップ615Bの入力に結合された180度の位相を有する第2のクロックを生成する。フロップ615Bの入力に結合された180度の位相の第2のクロックは、フロップ615Aの入力に結合された0度の位相の第1のクロックに対して180度位相が異なっている。フロップ615Aの出力は、Data1とラベル付けされ、マルチプレクサ620,622の「1」入力に結合される。フロップ615Bの出力は、Data0とラベル付けされ、マルチプレクサ620,622の「0」入力に結合される。マルチプレクサ620,622の選択信号は、シフトデータカウンタ625によって生成され、シフトデータカウンタ625は、奇数カウントに対してフリップする。
【0028】
シンボル回転が必要であるかどうかをチェックするロジック630は、クロックを回転させるためのシフトデータを生成する。ロジック630からの出力は、シフトデータカウンタ625及びバレルシフタ635に結合される。5xレートクロックも、バレルシフタ635に結合される。バレルシフタ635は、5xレートクロック入力に基づいて、異なる位相を有する複数の1xレートクロックを生成する。バレルシフタ635によって生成された異なる位相を有する複数の1xクロックは、フロップ645間で異なるフロップに供給される。フロップ645の出力は、フロップ650の入力に結合される。フロップ650は、ローカルクロックでクロックされ、フロップ650の出力は、コントローラクロックでクロックされるフロップ655に結合される。奇数シフトの場合、「0」フロップ645からのサンプルが遅延され、よって、入力されたビットによってデータが上書きされないことを保証するために、追加のフロップ640が存在する。
【0029】
図7を参照すると、デシリアライザにおいてバレルシフタを用いてシンボルロッキングを実行するタイミング
図700が示されている。タイミング
図700は、(
図6の)回路600を使用して、入力された直列データがサンプリングされるタイミングの一例を表すことを意図している。一実施形態では、サンプラからのデータは、タイミング
図700に示すように、マルチプレクサ選択時に0/1UI遅延を達成するために、2ビットのデータとして多重化される。2ビットのデータは、ずれたクロック位相で10ビットレジスタに直列に入力される。10ビットレジスタから、ローカルクロックで出力がサンプリングされる。次に、非直列化されたデータは、正確なシンボルタイミングを達成するためにデータを回転する必要があるかどうかを推測するように分析される。タイミング
図700の例について行710に示すように、入力されたデータは、a7:0ビット及びx9:8ビットとして、元の位相調整されていないクロックタイミングでサンプリングされ、「a」は、現在のシンボルであり、「x」は、前のシンボルである。正確なシンボルを有するために、a9:0ビットとして入力データをサンプリングすることが目標である。行710に示すように、次のシンボルは、b7:0ビット及びa9:8ビットとしてサンプリングされる。
【0030】
図8を参照すると、バレルシフタが単一のステップのシンボル回転を実行した後の時点のタイミング
図800が示されている。タイミング
図800は、単一のシンボル回転ステップが実行された後の或る実施形態についての(
図6の)回路600のタイミングを表すことを意図している。タイミング
図800と(
図7の)タイミング
図700との間の相違は、シンボル回転を実行する効果を示す。タイミング
図800では、奇数レジスタのクロックに対して位相がシフトされている。レジスタ9は、前のレジスタ0から位相タイミングを取得し、レジスタ1は、前のレジスタ2の位相タイミングを取得し、レジスタ3は、前のレジスタ4の位相タイミングを取得する、等である。したがって、レジスタの半分は、それらのクロックを2UIだけ右にシフトさせる。レジスタの半分のクロックが右にシフトされる間、ローカルクロックは、同一のままである。2UI位相シフトの後、a8:0及びx9は、行810に示すようにサンプリングされたデータである。奇数シフトの場合、フロップ0からのサンプルが遅延されるので、データが最新の入力ビットa9によって上書きされないように、追加のフロップ0_delayが存在する。
【0031】
図9を参照すると、バレルシフタが第2のステップだけシンボル回転を実行した後の時点のタイミング
図900が示されている。タイミング
図900は、或る特定の実施形態について、クロック位相が第2のシンボル回転ステップだけシフトされた後の(
図6の)回路600を表すことを意図している。タイミング
図900と(
図8の)タイミング
図800との間の相違は、第2のシンボル回転ステップを実行する効果を示す。(
図7の)タイミング
図700の最初に示す例では、正確なシンボルをサンプリングするために2つのシンボル回転ステップが必要とされる。したがって、レジスタの半分の第1のステージのクロック位相は、正確なシンボルを達成するために、バレルシフタによって2倍回転する。また、偶数の回転は、ローカルクロックを2UIステップだけ移動させる。
図900では、実質的に2UIシフトが発生しており、データがa9:0になり、マルチプレクサ620,622が再度シフトされる。この技術により、レイテンシを生じさせることなく、シンボルウィンドウを正確な数のUIステップだけ移動することによって、シンボルがロックされる。
図800,900に示すように、クロック毎に2UIだけ移動させることによって、位相が1UIにおいてシフトされている。
【0032】
図10を参照すると、最小レイテンシでリンク全体のデスキューを実行する一実施形態の状態
図1000が示されている。一実施形態では、方法は、受信物理レイヤ(PHY)インタフェースにおけるリンクトレーニングのための状態
図1000に従って実装される。レーン上のシンボルを整合するように複数のレーンのレーン毎にシンボルアイの位置を決定するのと同時に、同期データ転送を達成するようにそれらをデスキューする方法が実行される。「シンボルアイ」は、リンクのデータレーン上でのビット遷移に基づく、シンボルのデータ有効周期を指す。従来のアプローチでは、デスキューのためのソース同期クロックスキームは、正確なシンボルを捕捉するためのタイミングを単純化する追加のステージを使用し、追加のステージは、比較的高いレイテンシを生じさせる。しかしながら、状態
図1000に関連する方法を使用すると、従来のアプローチと比較して、レイテンシがかなり低減する。一実施形態では、状態
図1000に関連するアプローチは、上述した同期クロックドメインクロッシングスキームと共に、2UIクロック位相を有する1UI粒度による2to10デシリアライザによるシンボルロッキングスキームを使用する。
【0033】
リンクトレーニングの前に、コントローラクロックへのローカルクロックタイミングがタイミングウィンドウの先頭にあるように(すなわち、最大ホールド時間、最小セットアップ時間を満たすように)各レーンをトレーニングするために、同期クロックドメインクロッシングスキームが使用される。このステップは、リンクが確立されるまで繰り返される。本明細書で使用するように、「タイミングウィンドウ」という用語は、対応するデータが有効である期間として定義される。タイミングウィンドウは、データ信号のリーディングエッジ及びトレーリングエッジによって定義される。次いで、リンクが確立された後に、各レーンがチェックされ、以下の何れかのオプションが使用される。全てのレーンが正確なシンボルを有していない場合、状態
図1000は、リセット状態1005からアウトアイ状態1015に移動する。アウトアイ状態1015では、各レーンは、バレルシフタを使用して1ステップだけシンボル回転され、コントローラクロックも、確立されたタイミング関係を維持するように、1ステップだけ回転される。次いで、全てのレーンがチェックされる。いくつかのレーンがシンボルロックされている場合、状態図は、状態1010に移動する。状態1010では、シンボルロックされていないレーンについてのローカルクロックは、1UIだけシフトされる。一実施形態では、シンボルロックされていないレーンは、バレルシフタを使用して、1UIだけシフトされる。コントローラクロックが静的であるため、コントローラクロックとローカルクロックとの間のタイミング関係について、セットアップ時間が1UIだけ増加し、ホールド時間が1UIだけ増加する。これは、全てのレーンがタイミングマージンウインドウまでシンボルロックされるまで継続される。タイミングマージンウインドウに到達するまでに一部のレーンが未だシンボルロックされない場合には、状態
図1000は、リセット状態1005に再度移動する。そうでなければ、全てのレーンがシンボルロックされる場合、状態
図1000は、ロック状態1030に移動する。
【0034】
リセット状態1005では、いくつかのレーンがシンボルロックされている場合、状態
図1000は、状態1010に移動する。状態
図1000は、状態1010から分析状態1025に移動する。次いで、状態
図1000は、ビギンエンドアイ(begin_end_eye)状態1020に移動し、ビギンエンドアイ状態1020では、シンボル整合されたレーンに対してローカルクロックがシフトされる。この方法は、タイミングウィンドウの最後(すなわち、最小ホールド時間、最大セットアップ時間)に到達するまで使用される。タイミングウィンドウの最後に、全てのロックされたレーン及びコントローラクロックは、誤った回転を補償するよう回転される。新たにロックされたレーンがデスキューされたシンボルに対してロックされる場合、最新のロックされたレーン及びコントローラクロックを除く既存のロックされたレーンは、誤った回転を補償するように回転される。
【0035】
図11を参照すると、4個の通信レーン1105A~Dにわたるシンボルアイ開始点の一実施形態の
図1100が示されている。レーン1105A~Dは、通信チャネルの一部として含まれる任意の数のレーンを表す。4個のレーンが
図11に示されているが、この数は、説明のための一例としての役割を果たすことを意図していることを理解されたい。他の実施形態は、他の数のレーンを有してもよく、複数のレーンにわたってシンボルアイを整合するために、本明細書で説明する技術を使用することができる。レーン1105A~Dについてのシンボルアイは、レーン1105A~D内で網掛け長方形として示されている。
【0036】
レーン1105A~Dに接続されたトレースの長さが一致していないこと、及び/又は、他の要因により、各レーンのシンボルアイは、通常、トレーニング前には異なるレーン1105A~Dで異なる。リセットのためのインアイ(IN_EYE)開始点は、状態
図1000(
図10の)に関連する方法を実行する制御ロジックの一実施形態の例を表すように、
図1100の最上部に示されている。制御ロジックは、整合されていないレーンに対してローカルクロックを回転させることによって、レーン1105A~D毎にシンボルアイを追跡することを試みる。制御ロジックが全てのレーンに対してシンボルアイを追跡する前にレーンのエンドアイ(END_EYE)ポイントに到達する場合、制御ロジックは、レーン1105A~D上で次のシンボルが受信されるときにリセットし、再開する。トレーニングの目的は、各レーンのシンボルアイが他のレーンのシンボルアイと整合するように、レーン1105A~Dのローカルクロックの位相を調整することである。
【0037】
図12を参照すると、クロックジッタを考慮するために、タイミングマージンを増加させる2エントリFIFO回路1200の一実施形態の図が示されている。一実施形態では、データは、チャネルから受信され、サンプラに提供され、サンプラクロックは、高速PLLクロック(ワードクロックと比較して)である。データが正確にサンプリングされることを保証するために、入力された直列ビットストリームと高速PLLクロックとの間のロックを確立するクロックデータリカバリ(CDR)により開始して、様々なアルゴリズムが実行されている。一実施形態では、ロックを確立した後、入力ビットストリームは、並列データに非直列化される。一実施形態では、入力直列ビットストリームは、10ビット並列データに非直列化される。しかしながら、他の実施形態では、他の数のビットの並列データが生成される。
【0038】
一実施形態では、非直列化の後、データは、ローカルクロックドメインにあり、コントローラクロックドメインに移動される必要がある。一実施形態では、これは、上述した同期クロックドメインクロッシング技術を使用し、且つ、回路1200を使用することによって達成される。一実施形態では、ローカルクロック(すなわち、ワードクロック)と潜在的に高ジッタのコントローラクロックとの間のクロックドメインクロッシングは、2エントリFIFO回路1200により達成される。ハーフレートローカルクロックは、書き込みポインタとして使用され、ハーフレートバージョンのコントローラクロックは、読み出しポインタとしての役割を果たす。書き込みポインタ及びローカルクロックの両方は、共通の高速クロックから生成される。一実施形態では、書き込みポインタ配置は、1UI分解能で調整される。
【0039】
一実施形態では、入力直列データは、フロップ1205A~Nの入力に結合される。一実施形態では、入力データは、10個の入力レーンを含む。しかしながら、他の実施形態では、フロップ1205A~Nの数及び回路1200の他のコンポーネントのビット幅を調整することによって、他の数の入力レーンが回路1200によってサポートされてもよい。一実施形態では、ワードクロックバレルシフタ1207は、5つの固有位相及び2UI分解能を有する1xレートクロック出力を生成するためにワードクロックバレルシフタ1207が使用する高速5xレートクロックを受信する。異なる位相を有するそれらの1xレートクロックは、フロップ1205A~Nのクロックポートに結合される。フロップ1205A~Nへのデータ入力は、位相シフトされたクロックを使用してサンプリングされる。
【0040】
一実施形態では、フロップ1205A~Nからの出力は、フロップ1210の入力ポートに結合される。ワードクロックバレルシフタ1207は、フロップ1210のクロックポートに結合されるローカル1xレートクロックを生成する。フロップ1210の出力は、フロップ1215,1220の入力ポートに結合される。高速5xレートクロックは、書き込みポインタジェネレータ1240に結合される。書き込みポインタジェネレータ1240は、フロップ1215のクロックポートに結合されるハーフレートローカルクロックを生成する。書き込みポインタジェネレータ1240のハーフレートローカルクロックは、ネゲートされ、フロップ1220のクロックポートに結合される。フロップ1215の出力は、マルチプレクサ1225の「0」入力に結合され、フロップ1220の出力は、マルチプレクサ1225の「1」入力に結合される。フロップ1245によって生成されたハーフレートコントローラクロックは、マルチプレクサ1225の選択ポートに結合される。マルチプレクサ1225の出力レーンは、フロップ1235の入力ポートに結合される。1xレートコントローラクロックは、フロップ1235のクロックポートに結合される。フロップ1235からの並列データ出力は、更なる処理のためにコントローラ(図示省略)又は他のコンポーネントに供給される。
【0041】
図13を参照すると、ローカルクロックをグローバルクロックと整合するようにトレーニングを実行する方法1300の一実施形態が示されている。説明のために、この実施形態におけるステップ及び
図14のステップは、順番に示されている。しかしながら、説明する方法の様々な実施形態では、説明する要素のうち1つ以上が、同時に実行され、図示した順序と異なる順序で実行され、完全に省略されることに留意されたい。必要に応じて他の追加の要素も実行される。本明細書で説明する様々なシステム又は装置の何れも、方法1300を実施するように構成されている。
【0042】
回路は、グローバルクロック信号及びデータ信号を受信する(ブロック1305)。グローバルクロックは、本明細書では「コントローラクロック」とも呼ばれ得ることに留意されたい。いくつかの実施形態では、回路は、複数のグローバルクロック及び複数のデータ信号を受信する。一実施形態では、グローバルクロック及びデータ信号は、受信機能ユニットとは別の機能ユニットにおいて生成される。また、回路は、ローカルクロック信号を生成する(ブロック1310)。例えば、一実施形態では、回路は、ローカルPLLを使用してローカルクロック信号を生成する。
【0043】
回路は、バレルシフタを用いて1UIステップでローカルクロックを位相にわたってスウィープすると共に、エッジ遷移を検出するように、グローバルクロックによってクロックされたレジスタによりローカルクロックをサンプリングする(ブロック1315)。一実施形態では、レジスタの出力は、エッジ遷移を検出する制御ロジックに結合される。一実施形態では、制御ロジックは、有限状態機械(FSM)を含む。一実施形態では、エッジ遷移は、立ち上がりエッジ遷移(すなわち、低電圧から高電圧への)である。次に、制御ロジックは、エッジ遷移を検出したことに応じて、ローカルクロックがグローバルクロックと整合していると判別する(ブロック1320)。次いで、ローカルクロックの位相は、セットアップ要件及びホールドタイミング要件を満たすように、グローバルクロックに対して調整される(ブロック1325)。次に、データ信号は、位相調整されたローカルクロックを使用してサンプリングされる(ブロック1330)。次いで、サンプリングされたデータは、追加の処理及び/又は記憶のために後続のステージに提供される(ブロック1335)。一実施形態では、サンプリングされたデータは、デシリアライザに提供される。ブロック1335の後、方法1300は終了する。
【0044】
図14を参照すると、複数のレーンに対して同期クロスドメインクロッシングを達成する方法の一実施形態が示されている。回路は、複数のデータ信号及び複数の対応するグローバルクロック信号を受信する(ブロック1405)。また、回路は、複数のローカルクロック信号を生成する(ブロック1410)。例えば、一実施形態では、回路は、異なるローカルPLLを使用して各ローカルクロック信号を生成する。回路は、バレルシフタを用いて1UIステップにおける位相にわたって各ローカルクロックをスウィープすると共に、エッジ遷移を検出するように、対応するグローバルクロックによってクロックされたレジスタによりローカルクロックをサンプリングする(ブロック1415)。一実施形態では、レジスタの出力は、エッジ遷移を検出する制御ロジックに結合される。一実施形態では、制御ロジックは、有限状態機械(FSM)を含む。一実施形態では、エッジ遷移は、立ち上がりエッジ遷移(すなわち、論理「0」から論理「1」への)である。
【0045】
次に、制御ロジックは、エッジ遷移を検出したことに応じて、各ローカルクロックが対応するグローバルクロックと整合していると判別する(ブロック1420)。次いで、各ローカルクロックの位相は、セットアップ要件及びホールドタイミング要件を満たすように、対応するグローバルクロックに対して調整される(ブロック1425)。次に、各データ信号は、対応する位相調整されたローカルクロックを使用してサンプリングされる(ブロック1430)。次いで、サンプリングされたデータは、追加の処理及び/又は記憶のために後続のステージに提供される(ブロック1435)。一実施形態では、サンプリングされたデータは、デシリアライザに提供される。ブロック1435の後、方法1400は終了する。
【0046】
図15を参照すると、低減したレイテンシで複数のレーンにわたってデスキューする方法1500の一実施形態が示されている。複数のレーンの各々は、タイミングウィンドウの最初に(すなわち、最大ホールド時間、最小セットアップ時間)各ローカルクロックをグローバルクロックと同期させるようにトレーニングされる(ブロック1505)。一実施形態では、(
図14の)方法1400は、ブロック1505を実施するよう実行される。次に、各レーンのシンボルタイミングがチェックされる(ブロック1510)。何れのレーンも正確なシンボル整合を有していない場合(条件ブロック1515:「レーンなし」)、各レーンは、単一のステップだけシンボル回転される(ブロック1520)。一実施形態では、単一のステップだけ各レーンをシンボル回転させることは、1つおきのクロック(ずれた位相を有するレーンのバレルシフタにより生成されたクロック)を単一単位間隔だけシフトすることを含む。ずれた位相を有するバレルシフタにより生成されたクロックは、レーンから捕捉されたデータサンプルを非直列化するフロップの第1の列に提供される。ブロック1520の後、方法1500は、ブロック1510に戻る。
【0047】
レーンのいくつかが正確なシンボル整合を有する場合(条件ブロック1515:「いくつかのレーン」)、ロックされていないレーンは、単一のステップだけシンボル回転される(ブロック1525)。一実施形態では、ブロック1520,1525は、(
図6の)回路600を使用して実行される。ブロック1525の後、タイミングウィンドウの最後に到達した場合(条件ブロック1530:「はい」)、全てのロックされたレーン及びグローバルクロックは、誤った回転を補償するように回転される(ブロック1535)。ブロック1535の後、方法1500は、ブロック1510に戻る。タイミングウィンドウの最後に到達していない場合(条件ブロック1530:「いいえ」)、方法1500は、ブロック1525に戻る。全てのレーンが正確なシンボル整合を有する場合(条件ブロック1515:「全てのレーン」)、方法1500は終了する。
【0048】
図16を参照すると、回路表現1605を記憶する非一時的なコンピュータ可読記憶媒体1600の一実施形態を示すブロック図が示されている。一実施形態では、回路製造システム1610は、非一時的なコンピュータ可読記憶媒体1600に記憶された回路表現1605を処理し、回路表現1605に基づいて、任意の数の集積回路1615A~Nを製造する。
【0049】
非一時的なコンピュータ可読記憶媒体1600は、様々な適切なタイプのメモリデバイス又は記憶装置の何れかを含んでもよい。媒体1600は、インストール媒体(例えば、サムドライブ、CD-ROM)、コンピュータシステムメモリ若しくはランダムアクセスメモリ(例えば、DRAM、DDR RAM、SRAM、EDO RAM、Rambus RAM)、不揮発性メモリ(例えば、フラッシュ、磁気媒体、ハードドライブ、光学記憶装置)、レジスタ、又は、他のタイプのメモリ素子であってもよい。媒体1600は、他のタイプの非一時的なメモリと共に、これらの何れかの組み合わせを含んでもよい。媒体1600は、異なる位置に存在する(例えば、ネットワークを介して接続された異なるコンピュータシステムにおける)2つ以上のメモリ媒体を含んでもよい。
【0050】
様々な実施形態では、回路表現1605は、これらに限定されないが、VHDL、Verilog、SystemC、System Verilog、RHDL等のハードウェア記述言語を含む、様々な適切なコンピュータ言語の何れかを使用して指定される。回路表現1605は、集積回路1615A~Nのうち1つ以上の少なくとも一部を製造するために、回路製造システム1610によって使用可能である。回路表現1605のフォーマットは、少なくとも1つの回路製造システム1610によって認識可能である。いくつかの実施形態では、回路表現1605は、集積回路1615A~Nの合成及び/又はレイアウトを指定する1つ以上のセルライブラリを含む。
【0051】
回路製造システム1610は、集積回路を製造するように構成された様々な適切な素子の何れかを含む。これは、例えば、半導体材料を堆積させる(例えば、マスキングを含むことができるウェハー上に)素子、材料を除去する素子、堆積された材料の形状を変える素子、材料を変更する(例えば、材料をドープし、又は、紫外線加工を使用して、比誘電率を変更することによって)素子等を含んでもよい。また、回路製造システム1610は、正確な動作のために製造された回路のテストを実行してもよい。
【0052】
様々な実施形態では、集積回路1615A~Nは、本明細書で説明する機能の何れかを実行することを含むことができる、回路表現1605によって指定された回路設計に従って動作する。例えば、集積回路1615A~Nは、本明細書で示す回路に示される様々な要素及び/又は本明細書で示す回路の複数のインスタンスの何れかを含んでもよい。更に、集積回路1615A~Nは、他の構成要素と共に、本明細書で説明する様々な機能を実行してもよい。例えば、集積回路1615A~Nは、供給電圧を提供するように構成された電圧供給回路に結合されてもよい(例えば、電圧供給装置自体を含むこととは反対に)。更に、本明細書で説明する機能は、複数の接続された集積回路によって実行されてもよい。
【0053】
本明細書で使用するように、「回路の設計を指定した回路表現…」という形式のフレーズは、要素を満たすために問題の回路が製造されなければならないことを示唆するわけではない。むしろ、このフレーズは、回路表現が、製造されると、指定された動作を実行するように構成されるか、指定されたコンポーネントを含むことを記述していることを示す。
【0054】
様々な実施形態では、プログラム命令は、本明細書で説明する方法及び/又はメカニズムを実装するために使用される。例えば、ハードウェアの動作や設計を記述するプログラム命令が書き込まれる。一実施形態では、このようなプログラム命令は、Verilog等のハードウェア設計言語(HDL)によって表される。様々な実施形態では、プログラム命令は、様々な非一時的なコンピュータ可読記憶媒体の何れかに記憶される。記憶媒体は、使用中宇にコンピューティングシステムによってアクセス可能であり、回路製造、プログラム実行又は他のために、プログラム命令をコンピューティングシステムに供給する。一般的に、このようなコンピューティングシステムは、少なくとも1つのメモリと、プログラム命令を実行するように構成された1つ以上のプロセッサと、を含む。
【0055】
上述した実施形態は、実施形態の非限定的な例に過ぎないことを強調しておきたい。上記の開示が完全に認識されると、多数の変形及び修正が当業者にとって明らかになるであろう。以下の特許請求の範囲は、全てのこのような変形及び修正を包含すると解釈されることが意図される。