(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6200574
(24)【登録日】2017年9月1日
(45)【発行日】2017年9月20日
(54)【発明の名称】アナログブロックおよびそれをテストするためのテストブロック
(51)【国際特許分類】
G01R 31/316 20060101AFI20170911BHJP
G01R 31/28 20060101ALI20170911BHJP
H01L 21/822 20060101ALI20170911BHJP
H01L 27/04 20060101ALI20170911BHJP
H01L 21/82 20060101ALI20170911BHJP
G06F 11/22 20060101ALI20170911BHJP
【FI】
G01R31/28 C
G01R31/28 U
H01L27/04 T
H01L21/82 A
G06F11/22 605F
【請求項の数】15
【全頁数】17
(21)【出願番号】特願2016-501849(P2016-501849)
(86)(22)【出願日】2014年3月13日
(65)【公表番号】特表2016-519358(P2016-519358A)
(43)【公表日】2016年6月30日
(86)【国際出願番号】US2014025438
(87)【国際公開番号】WO2014159909
(87)【国際公開日】20141002
【審査請求日】2017年3月7日
(31)【優先権主張番号】13/802,223
(32)【優先日】2013年3月13日
(33)【優先権主張国】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】アザド,サロシュ・アイ
【審査官】
大桃 由紀雄
(56)【参考文献】
【文献】
国際公開第2002/057921(WO,A1)
【文献】
特表2004−537054(JP,A)
【文献】
米国特許第07743288(US,B1)
【文献】
米国特許第07315177(US,B1)
【文献】
米国特許出願公開第2005/0065747(US,A1)
【文献】
米国特許出願公開第2002/0094055(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G01R 31/316
G01R 31/28
G06F 11/22
H01L 21/82
H01L 21/822
H01L 27/04
(57)【特許請求の範囲】
【請求項1】
機器であって、
少なくとも1つのアナログブロックと、入力/出力インターフェイスと、処理部とを有するシステム・オン・チップと、
入力/出力インターフェイスに結合されたデータテストブロックとを含み、入力/出力インターフェイスは少なくとも1つのアナログブロックに結合され、前記機器はさらに、
少なくとも1つのアナログブロックに結合されたリンクテストブロックと、
リンクテストブロックに結合されたテストインターフェイスとを含み、
処理部は、少なくとも1つのアナログブロックへのアクセスを制御するために入力/出力インターフェイスに結合され、
処理部はデータテストブロックに結合され、少なくとも1つのテストパターンを有するテストコードを実行するように構成されており、
処理部によって実行されるテストコードの制御下にあるデータテストブロックは、テストパターンを用いて少なくとも1つのアナログブロックをテストするように構成されており、
リンクテストブロックは、少なくとも1つのアナログブロックの動作パラメータを調節するために、テストインターフェイスを介して別個に制御可能である、機器。
【請求項2】
データテストブロックは、入力制御レジスタと、出力取込レジスタと、テストパターン生成器と、テストパターンチェッカーとを含む、請求項1に記載の機器。
【請求項3】
テストパターン生成器は、線形フィードバックシフトレジスタ兼疑似乱数ビットシーケンス生成器を含む、請求項2に記載の機器。
【請求項4】
テストパターンチェッカーは、線形フィードバックシフトレジスタ兼疑似乱数ビットシーケンスチェッカーを含む、請求項2に記載の機器。
【請求項5】
入力制御レジスタおよび出力取込レジスタは、テストコードの制御下で処理部を介してアクセス可能である、請求項2〜4のいずれかに記載の機器。
【請求項6】
入力制御レジスタは、テストパターンに応答して、テストパターン生成器によるテストパターン生成を制御するためのものであり、
出力取込レジスタは、テストパターンに応答して、テストパターンチェッカーによって判断されたデータシーケンスおよびデータエラーを取込むためのものであり、
テストパターンは、テストパターンチェッカーへのループバックのために、テストパターン生成器の制御下で少なくとも1つのアナログブロックに提供され、
少なくとも1つのアナログブロックは、少なくとも1つの並直列変換器/直並列変換器である、請求項2〜5のいずれかに記載の機器。
【請求項7】
リンクテストブロックは、入力/出力インターフェイスを通して少なくとも1つのアナログブロックに結合され、
リンクテストブロックは、構成コントローラと、ステータスモニターと、ビットエラーレートテスターと、アイスキャンコントローラと、テストインターフェイスとを含む、請求項1〜6のいずれかに記載の機器。
【請求項8】
リンクテストブロックは、少なくとも1つのアナログブロックの動作パラメータをその動作中に調節するために、テストインタフェースを介して別個に制御可能であり、
少なくとも1つのアナログブロックは、少なくとも1つの並直列変換器/直並列変換器である、請求項7に記載の機器。
【請求項9】
ビットエラーレートテスターは、テストパターンを使用してビットエラーレートを判断するように構成され、
テストインターフェイスは、テストパターンをビットエラーレートテスターに提供するために結合されている、請求項7または請求項8に記載の機器。
【請求項10】
処理部は、入力/出力インターフェイスおよび処理部に結合されたアクセスコントローラを介して少なくとも1つのアナログブロックに提供されるアプリケーションデータを伴うアプリケーションを実行するために結合され、
アイスキャンコントローラは、アプリケーションの実行中に、アプリケーションデータについてデータアイを判断するように構成され、
少なくとも1つのアナログブロックは、少なくとも1つの並直列変換器/直並列変換器である、請求項7に記載の機器。
【請求項11】
機器で実行される方法であって、前記機器は、
少なくとも1つのアナログブロックと、入力/出力インターフェイスと、処理部とを有するシステム・オン・チップと、
入力/出力インターフェイスに結合されたデータテストブロックとを含み、入力/出力インターフェイスは少なくとも1つのアナログブロックに結合され、前記機器はさらに、
少なくとも1つのアナログブロックに結合されたリンクテストブロックと、
リンクテストブロックに結合されたテストインターフェイスとを含み、リンクテストブロックはテストインターフェイスを介して別個に制御可能であり、
前記方法は、
データテストブロックを使用して、データシーケンスをループバックするために、前記少なくとも1つのアナログブロックをテストすることと、
リンクテストブロックの構成コントローラに構成情報を提供することと、
構成情報に応答して、構成コントローラの制御下で前記少なくとも1つのアナログブロックを構成することと、
前記少なくとも1つのアナログブロックから、リンクテストブロックのビットエラーレートテスターによって、データシーケンスを受信することとを含み、
ビットエラーレートテスターは、テストパターン情報を用いて構成され、
データシーケンスは、テストパターン情報に関連付けられたテストパターンに応答し、前記方法はさらに、
データシーケンスについて、ビットエラーレートテスターによってビットエラーレートを判断することと、
ビットエラーレートを出力することと、
リンクテストブロックの構成コントローラによって、テストインターフェイスを介して、前記少なくとも1つのアナログブロックの動作パラメータを調節することとを含む、方法。
【請求項12】
前記少なくとも1つのアナログブロックは、並直列変換器/直並列変換器であり、
テストすることは、処理部によってテストコードを実行することを含み、
テストコードはテストパターン情報を含み、
テストコードは、以下のステップによって並直列変換器/直並列変換器の入力および出力を切替えるように構成され、前記以下のステップは、
データテストブロックの周辺バスブロックに、テストパターンの生成のためのテストパターン情報をロードするステップを含み、ロードするステップは、処理部によって実行されるテストコードによって制御され、前記以下のステップはさらに、
データテストブロックのテストパターン生成器によるテストパターンに応答してデータシーケンスを生成するステップと、
並直列変換器/直並列変換器の入力を切替えるために、データシーケンスを並直列変換器/直並列変換器に送信するステップと、
並直列変換器/直並列変換器の出力を切替えるために、送信されたデータシーケンスをループバックするステップと、
データテストブロックのテストパターンチェッカーによって、ループバックされたデータシーケンスを受信するステップと、
並直列変換器/直並列変換器のためのテストデータを生成するために、テストパターンチェッカーによって受信されたデータシーケンスをチェックするステップと、
チェックするステップに応答して、テストパターンチェッカーからテストデータを取込むステップと、
テストデータを処理部に出力するステップとを含む、請求項11に記載の方法。
【請求項13】
テストすることはさらに、
テストコードから、並直列変換器/直並列変換器の動作の状態についての読出しを発行することと、
テストコードの読出しの実行に応答して、処理部からマイクロコントローラ・バス・トランザクションを提供することと、
マイクロコントローラ・バス・トランザクションを周辺バストランザクションに変換することとを含み、
ロードするステップは、周辺バスブロックにテストパターン情報をロードするために、データテストブロックの周辺バスブロックによって周辺バストランザクションを登録することを含む、請求項12に記載の方法。
【請求項14】
並直列変換器/直並列変換器から、リンクテストブロックのステータスモニターによって、ステータス情報を受信することをさらに含み、
ステータス情報は、並直列変換器/直並列変換器の状態機械からのものであり、
ステータス情報は、ループバックされたデータシーケンスに関して、並直列変換器/直並列変換器から独立してバス伝送され、前記方法はさらに、
ステータス情報を出力することを含む、請求項13に記載の方法。
【請求項15】
リンクテストブロックは、処理部によるテストコードの実行に対して独立した、構成情報の提供、ステータス情報の出力、およびビットエラーレートの出力のためのテストインターフェイスを含む、請求項14に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
発明の分野
以下の説明は、集積回路デバイス(integrated circuit device:IC)に関する。より特定的には、以下の説明は、IC用のアナログブロックおよびそれをテストするためのテストブロックに関する。
【背景技術】
【0002】
背景
プログラマブルロジックデバイス(programmable logic device:PLD)などのプログラマブルデバイスは、多くのコンポーネントを有し得る。昔は、プログラマブルリソース(たとえばファブリック)において構成ビットストリームを介して提供された組込み自己テスト(built-in self-test:BIST)システムのためにそのようなファブリックをプログラミングすることによって、PLDの概してかなりのコンポーネントをテストすることができた。しかしながら、PLDはシステム・オン・チップ(system-on-chip:SoC)へと進歩したため、テストされるべきかなりのコンポーネントのすべてが、そのようなBISTシステムによりインスタンス化されるテストのためにファブリックを介してアクセスされるとは限らない。これに沿って、1つ以上のアナログブロックが、そのようなファブリックから切り離されるかもしれず、そのため、そのようなBISTシステムテストのためにファブリックを介してアクセスできないかもしれない。
【0003】
よって、アナログブロックがテストされ得るSoCを提供することが、有用であろう。
【発明の概要】
【課題を解決するための手段】
【0004】
概要
ある機器は一般に、システム・オン・チップに関する。そのような機器では、システム・オン・チップは、少なくとも1つのアナログブロックと、入力/出力インターフェイスと、データテストブロックと、処理部とを有する。処理部は、少なくとも1つのアナログブロックへのアクセスを制御するために入力/出力インターフェイスに結合される。データテストブロックは、入力/出力インターフェイスを通して少なくとも1つのアナログブロックに結合される。処理部はデータテストブロックに結合され、少なくとも1つのテストパターンを有するテストコードを実行するように構成されている。処理部によって実行されるテストコードの制御下にあるデータテストブロックは、テストパターンを用いて少なくとも1つのアナログブロックをテストするように構成されている。
【0005】
ある方法は一般に、アナログブロックをテストすることに関する。そのような方法では、アナログブロックは、データシーケンスをループバックすることを含む。構成情報が、リンクテストブロックの構成コントローラに提供される。構成情報に応答して、アナログブロックが、構成コントローラの制御下で構成される。アナログブロックから、データシーケンスが、リンクテストブロックのビットエラーレートテスターによって受信される。ビットエラーレートテスターは、テストパターン情報を用いて構成される。データシーケンスは、テストパターン情報に関連付けられたテストパターンに応答する。データシーケンスについて、ビットエラーレートテスターによってビットエラーレートが判断される。ビットエラーレートが出力される。
【0006】
ある方法は一般に、データアイ(data eye)を生成することに関する。構成情報が、リンクテストブロックの構成コントローラに提供される。構成情報に応答して、構成コントローラの制御下にあるアナログブロックが構成される。アナログブロックから第1の入力/出力バスを介して、アプリケーションデータが、リンクテストブロックのアイスキャンコントローラによって受信される。アプリケーションデータに応答して、データアイがアイスキャンコントローラによって生成される。データアイは、構成情報に応答したアナログブロックの設定のためのものである。データアイは出力される。
【0007】
図面の簡単な説明
添付図面は、例示的な機器および/または方法を示す。しかしながら、添付図面は請求の範囲を限定すると解釈されるべきではなく、単に説明および理解のためのものである。
【図面の簡単な説明】
【0008】
【
図1】例示的な柱状フィールドプログラマブルゲートアレイ(Field Programmable Gate Array:FPGA)アーキテクチャを示す、簡略化されたブロック図である。
【
図2】例示的なシステム・オン・チップ(SoC)を示すブロック図である。
【
図3】例示的なアナログブロックテストフローを示すフロー図である。
【
図4】
図3のテストフローのための例示的なループバックテストフローを示すフロー図である。
【
図5】例示的なデータアイ生成フローを示すフロー図である。
【発明を実施するための形態】
【0009】
詳細な説明
以下の説明では、ここに説明される具体例のより完全な説明を提供するために、多くの具体的詳細が述べられる。しかしながら、1つ以上の他の例、および/またはこれらの例の変形が、以下に与えられる具体的詳細がすべてなくても実践され得る、ということが、当業者には明らかであるはずである。他の場合では、ここでの例の説明を不明瞭にしないよう、周知の特徴は詳細には説明されていない。例示しやすくするために、異なる図において、同じ項目に言及するために、同じ番号が使用される。しかしながら、代替例では、項目は異なるかもしれない。
【0010】
いくつかの図で例示的に示された例を説明する前に、概略紹介が、さらなる理解のために提供される。プログラマブルロジックデバイス(PLD)などのプログラマブルデバイスは、多くのコンポーネントを有し得る。昔は、プログラマブルリソース(たとえばファブリック)において構成ビットストリームを介して提供された組込み自己テスト(built-in self-test:BIST)システムのためにそのようなファブリックをプログラミングすることによって、PLDの概してかなりのコンポーネントをテストすることができた。しかしながら、PLDはシステム・オン・チップ(system-on-chip:SoC)へと進歩したため、テストされるべきコンポーネントのすべてが、ファブリックにおいてインスタンス化されるそのようなBISTシステムのためにファブリックに結合されるとは限らない。これに沿って、アナログブロックが、そのようなファブリックから切り離されるかもしれない。
【0011】
以下により詳細に説明されるように、SoCの1つ以上のアナログブロックをテストするための埋込まれたテストブロックを説明する。特に、アナログベースのSERDESのテストを説明する。以下の説明はSoCに関するものであるが、そのようなSoCは、モノリシックダイ上またはマルチダイパッケージ上の、たとえば、ダイを積層するためのインターポーザを有する、または有さない積層化ダイパッケージなどでの、多くのSoCのうちの1つであってもよい。
【0012】
以上の一般的な理解を念頭に置いて、SoCについてのさまざまな実施形態を以下に概して説明する。
【0013】
上述の例の1つ以上が、ある特定のタイプのICを使用してここに説明されるため、そのようなICの詳細な説明を以下に提供する。しかしながら、他のタイプのICが、ここに説明される手法の1つ以上から利益を得てもよい、ということが理解されるはずである。たとえば、埋込まれたブロックを有する他のICが、以下に述べるものと同様の手法および回路を使用してテストされてもよい。
【0014】
プログラマブルロジックデバイス(PLD)は、特定されたロジック機能を行なうようにプログラミングされ得る周知のタイプの集積回路である。1つのタイプのPLDであるフィールドプログラマブルゲートアレイ(FPGA)は典型的には、プログラマブルタイルのアレイを含む。これらのプログラマブルタイルは、たとえば、入力/出力ブロック(input/output block:IOB)、構成可能ロジックブロック(configurable logic block:CLB)、専用ランダムアクセスメモリブロック(random access memory block:BRAM)、マルチプライヤ、デジタル信号処理ブロック(digital signal processing block:DSP)、プロセッサ、クロックマネージャ、遅延ロックループ(delay lock loop:DLL)などを含み得る。ここに使用されるように、「含む」および「含んで」とは、限定なしで含むことを意味する。
【0015】
各プログラマブルタイルは典型的には、プログラマブル相互接続およびプログラマブルロジックの双方を含む。プログラマブル相互接続は典型的には、プログラマブル相互接続点(programmable interconnect point:PIP)によって相互接続された、さまざまな長さの多数の相互接続線を含む。プログラマブルロジックは、たとえば関数発生器、レジスタ、演算ロジックなどを含み得るプログラマブル素子を使用して、ユーザ設計のロジックを実現する。
【0016】
プログラマブル相互接続およびプログラマブルロジックは典型的には、プログラマブル素子がどのように構成されるかを規定する内部構成メモリセルに構成データのストリームをロードすることによってプログラミングされる。構成データは、メモリから(たとえば外部PROMから)読出され、または、外部装置によってFPGAに書込まれ得る。次に、個々のメモリセルの集合的な状態が、FPGAの機能を決定する。
【0017】
別のタイプのPLDは、複合プログラマブルロジックデバイス(Complex Programmable Logic Device)、すなわちCPLDである。CPLDは、ともに接続され、かつ相互接続スイッチマトリックスによって入力/出力(I/O)リソースに接続された、2つ以上の「機能ブロック」を含む。CPLDの各機能ブロックは、プログラマブルロジックアレイ(Programmable Logic Array:PLA)およびプログラマブルアレイロジック(Programmable Array Logic:PAL)デバイスで使用されるものと同様の2レベルAND/OR構造を含む。CPLDでは、構成データは典型的には、不揮発性メモリにおいてチップ上に格納される。いくつかのCPLDでは、構成データは不揮発性メモリにおいてチップ上に格納され、次に、初期構成(プログラミング)シーケンスの一環として揮発性メモリにダウンロードされる。
【0018】
これらのプログラマブルロジックデバイス(PLD)のすべてについて、デバイスの機能性は、その目的のためにデバイスに提供されるデータビットによって制御される。データビットは、揮発性メモリ(たとえば、FPGAおよびいくつかのCPLDでのようなスタティックメモリセル)、不揮発性メモリ(たとえば、いくつかのCPLDでのようなFLASHメモリ)、または任意の他のタイプのメモリセルに格納可能である。
【0019】
他のPLDは、デバイス上のさまざまな素子をプログラマブルに相互接続する、金属層などの処理層を適用することによって、プログラミングされる。これらのPLDは、マスクプログラマブルデバイスとして公知である。PLDはまた、他のやり方で、たとえばヒューズまたはアンチヒューズ技術を使用して実現することもできる。「PLD」および「プログラマブルロジックデバイス」という用語は、これらの例示的なデバイスを含むが、これらに限定されず、部分的にのみプログラマブルなデバイスも包含する。たとえば、1つのタイプのPLDは、ハードコード化されたトランジスタロジックと、ハードコード化されたトランジスタロジックをプログラマブルに相互接続するプログラマブルスイッチファブリックとの組合せを含む。
【0020】
上述のように、高度なFPGAは、いくつかの異なるタイプのプログラマブルロジックブロックを、アレイに含み得る。たとえば、
図1は、マルチギガビット・トランシーバ(multi-gigabit transceiver:MGT)101と、構成可能ロジックブロック(CLB)102と、ランダムアクセスメモリブロック(BRAM)103と、入力/出力ブロック(IOB)104と、構成およびクロッキングロジック(configuration and clocking logic:CONFIG/CLOCK)105と、デジタル信号処理ブロック(DSP)106と、特殊入力/出力ブロック(I/O)107(たとえば、構成ポートおよびクロックポート)と、デジタルクロックマネージャ、アナログ・デジタル変換器、システムモニタリングロジックなどといった他のプログラマブルロジック108とを含む多数の異なるプログラマブルタイルを含む、FPGAアーキテクチャ100を示す。いくつかのFPGAは、専用プロセッサブロック(processor block:PROC)110も含む。
【0021】
いくつかのFPGAでは、各プログラマブルタイルはプログラマブル相互接続素子(interconnect element:INT)111を含み、それは、隣接する各タイルにおける対応する相互接続素子への、およびそれからの標準化された接続を有する。したがって、ともにまとめられたプログラマブル相互接続素子は、図示されたFPGAのためのプログラマブル相互接続構造を実現する。プログラマブル相互接続素子111はまた、
図1の上部に含まれる例によって示されるように、同じタイル内のプログラマブルロジック素子への、およびそれからの接続も含む。
【0022】
たとえば、CLB102は、ユーザロジックを実現するようにプログラミングされ得る構成可能ロジック素子(configurable logic element:CLE)112と、単一のプログラマブル相互接続素子(INT)111とを含み得る。BRAM103は、1つ以上のプログラマブル相互接続素子に加えて、BRAMロジック素子(BRAM logic element:BRL)113を含み得る。典型的には、1つのタイルに含まれる相互接続素子の数は、タイルの高さに依存する。図示された実施形態では、BRAMタイルは5つのCLBと同じ高さを有するが、他の数(たとえば4つ)も使用可能である。DSPタイル106は、適切な数のプログラマブル相互接続素子に加えて、DSPロジック素子(DSP logic element:DSPL)114を含み得る。IOB104は、たとえば、プログラマブル相互接続素子111の1つのインスタンスに加えて、入力/出力ロジック素子(input/output logic element:IOL)115の2つのインスタンスを含み得る。当業者には明らかであるように、たとえばI/Oロジック素子115に接続された実際のI/Oパッドは典型的には、入力/出力ロジック素子115のエリアに制限されない。
【0023】
図示された実施形態では、(
図1に示す)ダイの中央近くの水平エリアは、構成、クロックおよび他の制御ロジックのために使用される。この水平のエリアまたは列から延在している垂直の列109は、FPGAの幅にわたってクロックおよび構成信号を分散させるために使用される。
【0024】
図1に示すアーキテクチャを利用するいくつかのFPGAは、FPGAの大部分を構築する通常の柱状構造を分断する追加のロジックブロックを含む。追加のロジックブロックは、プログラマブルブロックおよび/または専用ロジックであり得る。たとえば、プロセッサブロック110は、CLBおよびBRAMのいくつかの列にまたがっている。
【0025】
なお、
図1は、単に例示的なFPGAアーキテクチャを例示するよう意図されている。たとえば、1行におけるロジックブロックの数、行の相対的な幅、行の数および順序、行に含まれるロジックブロックのタイプ、ロジックブロックの相対的なサイズ、ならびに、
図1の上部に含まれる相互接続/ロジック実現化例は、単に例示的なものである。たとえば、実際のFPGAでは、CLBが現われる場所であればどこでも、CLBの2つ以上の隣接する行が典型的には含まれて、ユーザロジックの効率的な実現を容易にするが、隣接するCLB行の数は、FPGAの全体サイズとともに変化する。
【0026】
図2は、例示的なシステム・オン・チップ(SoC)200を示すブロック図である。
図1のFPGA100はそのようなSoC200であってもよく、それは、積層化シリコン相互接続技術(stacked silicon interconnect technology:SSIT)を限定なしで含む、前述のようなモノリシックダイ、もしくはマルチダイスタックまたはパッケージであってもよい。
【0027】
SoC200は、1つ以上の並直列変換器/直並列変換器ブロック(serializer-deserializer block:SERDES)201と、入力/出力インターフェイス221と、データテストブロック209と、処理部230と、リンクテストブロック203と、1つ以上の媒体アクセスコントローラ(media access controller:MAC)202とを含む。これに沿って、SoC200は、専用のまたは埋込まれたハードウェアブロックを使用して、全体的に形成されてもよい。したがって、SERDES201は、プログラマブルファブリックリソースに直接結合されないかもしれず、このため、以下により詳細に説明されるように、専用のブロック203および209が、SERDES201をテストするために使用されてもよい。
【0028】
この例では、入力/出力インターフェイス221は、双方向マルチプレクサとして例示的に図示されている。しかしながら、入力/出力インターフェイスの他の構成では、他の回路系、すなわち双方向マルチプレクサ以外が使用されてもよい。マルチプレクサ221は、制御選択信号222を介したプロセッサ231の制御下で、データテストブロック209のための任意の1つのSERDES201を、データテストブロックインターフェイス229を介して選択するために使用されてもよい。
【0029】
加えて、この例では、SERDES201は8b/10bコード化を行なうように構成されると仮定されるであろう。言い換えれば、8、16、24個などのデータビットまたは他の情報ビットがSERDES201に入力される場合、SERDES201は、そのようなデータビットまたは他の情報ビットとコード化ビットとを含む、対応する10、20、30個などのビットを出力してもよい。しかしながら、SERDESの他の構成では、他のコード化、すなわち8b/10bコード化以外が使用されてもよい。
【0030】
処理部230は、入力/出力インターフェイス221に結合されて、制御選択バス/信号222をそれに提供し、SERDES201への、およびSERDES201からのアクセスを制御してもよい。データテストブロック209は、入力/出力インターフェイス221を通してSERDES201に結合されてもよい。処理部230は、双方向バス/シグナリング223を介してデータテストブロック209に結合されてもよい。データテストブロック209がSERDES201を制御することを可能にするために、テストコードまたは他のソフトウェアが、入力/出力インターフェイス221を介したSERDES201へのアクセスを制御するために使用される入力制御レジスタ234におけるあるレジスタに書込んでもよい。
【0031】
処理部230は、プロセッサ231と、読出し専用メモリ(read only memory:ROM)232と、ランダムアクセスメモリ(random access memory:RAM)233と、制御レジスタ234と、マイクロコントローラインターフェイス/バスから周辺バスへのブリッジ(「ブリッジ」)235と、マイクロコントローラインターフェイス/バススイッチ(「スイッチ」)236とを含んでいてもよい。プロセッサ231は1つ以上のコアを含んでいてもよく、中央処理装置であってもよい。処理部230はARM処理部であるとして説明されているが、あらゆる処理部が、ここでの説明に従って使用されてもよい、ということが理解されるはずである。これに沿って、ブリッジ235はAXIからAPBへのブリッジであること、および、スイッチ236はAXIスイッチであることが仮定されるであろう。しかしながら、AXIおよび/またはAPBはARMに特有のものであり、他のタイプの処理部インフラストラクチャが使用されてもよい。
【0032】
プロセッサ231はROM232に結合されて、そこに格納されたブートコードを実行し、SoC200をブートしてもよい。プロセッサ231はさらにRAM233に結合されて、テストコード237を実行してもよく、テストコード237は、以下により詳細に説明されるように、SERDES201をテストするために、RAM233にロードされ、プロセッサ231の制御下で実行される。プロセッサ231は、スイッチ236のAXIスレーブ239と通信するために結合されたAXIマスター238を含んでいてもよい。スイッチ236は、ブリッジ235のAXIスレーブ241と通信するために結合されたAXIマスター240を含んでいてもよい。ブリッジ235は、APBマスター242、243および244を含んでいてもよい。APBマスター242は、制御レジスタ234のAPBスレーブ245と通信するために結合されてもよい。これに沿って、プロセッサ231の制御下で、テストコード237は制御レジスタ234に書込んで、制御レジスタ234が制御シグナリングを制御バス/信号222を介して入力/出力インターフェイス221に提供するようにしてもよい。APBマスター243は、媒体バス/信号225を介してMAC202と通信するために結合されてもよい。APBマスター244は、データテストブロック209の周辺バスブロック212と通信するために結合されてもよく、それは、この例ではAPBスレーブブロックであってもよい。周辺バスブロック212は、入力制御レジスタ213と、出力取込レジスタ214とを含んでいてもよい。入力制御レジスタ213および出力取込レジスタ214は、以下により詳細に説明されるように、テストコード237の制御下で処理部230を介してアクセス可能であってもよい。
【0033】
プロセッサ231は、テストコード237を制御可能に実行してもよく、そのようなテストコード237は、SERDES201をテストするための少なくとも1つのテストパターンのためのコード化を含む。入力制御レジスタ213は、そのようなテストコード237の制御下で、そのような少なくとも1つのテストパターンがSERDES201に提供されるようにするために、書込まれてもよい。テストコード237または他のソフトウェアが製品テストパターンを実現することを可能にすることにより、そのようなソフトウェアにより実現可能な製品テストパターンは、従来のハードコード化されたテストパターンよりも簡単にアップグレードされ得る。
【0034】
データテストブロック209はさらに、テストパターン生成器210と、テストパターンチェッカー211とを含んでいてもよい。入力制御レジスタ213への書込みに応答して、そのような入力制御レジスタ213に結合されたそのようなテストパターン生成器210は、入力/出力インターフェイス221を介してデータをSERDES201に提供するための少なくとも1つのそのようなテストパターンを生成してもよい。この例では、テストパターン生成器210は、線形フィードバックシフトレジスタ(linear feedback shift register:LFSR)兼疑似乱数ビットシーケンス(pseudo-random bit sequence:PRBS)生成器であり、テストパターンチェッカー211は、LFSR兼PRBSチェッカーである。たとえば、テストコード237は、さまざまなPRBSパターンおよびLFSRシードから選択して、テストデータを生成してチェックするようにLFSR/PRBS生成器210およびチェッカー211を構成してもよい。入力制御レジスタ213は、テストコード237で特定されたテストパターンに応答して、テストパターン生成器210によるテストパターン生成を制御するために使用されてもよい。しかしながら、他のタイプのテストパターン生成器およびチェッカーが使用されてもよい。
【0035】
テストパターンは、テストパターンチェッカー211へのループバックのために、テストパターン生成器210の制御下でSERDES201に提供されてもよい。そのようなループバックは、内部のみのループバック、すなわち完全にSoC200内でのものであってもよく、または、ループバックのための外部デバイスを含んでいてもよい。SERDES201は、そのようなテストパターンデータを、テストパターンチェッカー211による受信のためにループバックしてもよい。テストパターンチェッカー211に結合された出力取込レジスタ214は、テストパターンチェッカー211から出力されたデータまたは他の情報を取込んでもよい。そのような取込データは、その後の分析などのために処理部230に戻されてもよい。たとえば、出力取込レジスタ214は、テストコード237によって特定されたテストパターンに応答して、テストパターンチェッカー211によって判断されたデータシーケンスおよびデータエラーを取込むために使用されてもよい。これに沿って、テストパターンチェッカー211は、使用すべきテストパターンについての知識を有するために、入力制御レジスタ213に結合されてもよい。疑似乱数ビットシーケンスについては、クロック信号の多数のクロックサイクル(明確にするために図示せず)の後で、そのような疑似乱数ビットシーケンスが繰り返されてもよい、ということが理解されるはずである。このため、テストパターンチェッカー211は、何を予想すべきかについての知識を有していてもよい。
【0036】
SoC200はさらに、リンクテストブロック203を含む。リンクテストブロック203は、構成コントローラ204と、ステータスモニター205と、ビットエラーレートテスター206と、アイスキャンコントローラ207と、テスト入力出力インターフェイス(「テストインターフェイス」)208とを含む。この例では、テストインタフェース208はJTAGインターフェイスである。テストインターフェイス208に結合されたテストバス/信号224は、テストインターフェイス208との双方向通信のために使用されてもよい。テストバス/信号224は、テストソフトウェアを実行する、ワークステーションまたは他のコンピュータシステムなどのコンピュータシステムとの通信のためのものであってもよい。リンクテストブロック203はこのため、リンク調整および/または特徴付けを容易にすることを担当していてもよい。JTAGインターフェイス208は、プロセッサシステムのJTAGチェーンに結合するために使用されてもよい。これに沿って、リンクテストブロック203は、たとえばPCまたは他のワークステーション上で実行されるソフトウエアを介してユーザ制御を可能にするために、JTAGを介して制御されてもよい。これに沿って、SERDES201のアナログ構成パラメータは、そのようなSERDES201を通してデータパターンを実行しながら、および、ビット、エラーまたは他のパラメータをカウントしながら、制御および/または調節されてもよい。
【0037】
バス224は、処理部230の動作に対して非侵入性の態様でリンクテストブロック203と通信するために使用されてもよい。言い換えれば、リンクテストブロックはテストコード237によって、またはより一般的には処理部230によって動作または駆動されないため、リンクテストブロック203の動作は、処理部230に干渉したり、または他の態様で処理部230に負担を負わせる必要がない。さらに、リンクテストブロック203は、以下により詳細に説明されるように、SoC200をテストするためのテストコード237の実行と並行して動作されてもよい。
【0038】
MAC202は、入力/出力バス226を介して入力/出力インターフェイス221に結合されてもよい。データテストブロック209は、入力/出力バス229を介して入力/出力インターフェイス221に結合されてもよい。入力/出力インターフェイス221は、入力/出力バス228を介してSERDES201に結合される。しかしながら、SERDES201は、処理部230を通過する必要がないように、入力/出力バス227を介してリンクテストブロック203に直接結合されてもよい。オプションで、入力/出力バス227は、SERDES201とリンクテストブロック203との通信のために、入力/出力インターフェイス221を介して入力/出力バス228に結合されてもよい。入力/出力バス226〜229は、信号の中でも、データ、制御およびアドレスシグナリングのためのものであってもよく、それらは、明確にするために、および限定しないために、ここでは区別されない。
【0039】
リンクテストブロック203は、たとえばデータアイを最適化するなどのために、少なくとも1つのSERDES201の動作パラメータをその動作中に調節するために、テストインターフェイス208を介して別個に制御可能であってもよい。これに沿って、そのような少なくとも1つのSERDES201は、アナログ設計のものであってもよく、そのため、そのような動作パラメータは、少なくとも1つのアナログパラメータを含んでいてもよい。そのような少なくとも1つのSERDES201は、制御レジスタ246と、1つ以上の有限状態機械247とを含んでいてもよい。構成コントローラ204が構成されており、少なくとも1つのSERDES201に結合されて、そのような少なくとも1つのSERDES201の動作中にそのような動作パラメータの少なくとも1つを調節するために、制御レジスタ246に書込み、読出し、設定、およびリセットなどの制御を行なってもよい。制御レジスタ246のそのような制御は、処理部230とは独立していてもよい。少なくとも1つのSERDESのステータスをモニタリングするために、および、クロックサイクル粒度についてそのような少なくとも1つのSERDESから出力された各エラーを取込むために、ステータスモニター205が結合されてもよい。状態機械247は、関連付けられたクロックサイクルに基づく、コード化エラーおよび/またはランニングディスパリティ(running disparity)エラーの場合のSERDES状態などのステータスを示すために使用されてもよく、どのステータスが状態機械247によって示されたかは、ステータスモニター205によってモニタリングされてもよい。SERDES201にテストパターンを提供し、SERDES201からテストパターンおよび他の情報を読出し、およびSERDES201のステータスをモニタリングするためのそのようなクロックサイクル依存のために、SERDES201のSoC側の部分と、テストパターン生成器210と、テストパターンチェッカー211と、ステータスモニター205とは、同じクロックドメイン248で動作してもよい。ステータスモニター205は、クロックドメイン248に関連付けられているようなバッファに情報をクロック入力するための先入れ先出しバッファを含んでいてもよい。しかしながら、ステータス情報は、クロックドメイン248のクロックレートでそのようなステータスモニターからクロック出力される必要はないが、クロック出力されてもよい。クロックドメイン248は、異なるデータレートを提供するために、上下に調節されてもよい。これに沿って、クロックドメイン248は、テストクロックドメインであってもよい。
【0040】
ビットエラーレート(Bit error rate:BER)テスター206は、テストパターンを使用してビットエラーレートを判断するように構成されてもよい。たとえば、BERテスター206は、クロックドメイン248の各クロックサイクルを、1クロックサイクルについて8ビットずつ、またはそれ以外の数のビットずつ、連続追跡してもよい。しかしながら、BERテスター206は、はるかにより大きい時間間隔にわたってBERを判断してもよい。このため、複数のリンクレートの各々について、BERが特定されてもよい。テストインターフェイス208は、テストパターンまたは少なくとも十分な量のテストパターン情報をBERテスター206に提供して、そのようなBERを提供するようにBERテスター206を構成するために使用されてもよい。
【0041】
一般に、BERは、出た後のビットにより関連しており、もちろん、何らかの形でSoC200ダイに戻される。これに沿って、SoC200は、ブランク基板上にテストトレースを有するテストPCBか何かを有していてもよく、テストPBCを介してテスト部分に、および/またはテスト機器に結合されてもよい。このため、たとえば、BERは、あるデータレートでの、何らかの移動距離についての、何らかのFR4または他の回路基板材料に関するものであってもよい。
【0042】
処理部230は、入力/出力インターフェイス221および処理部230に結合された1つ以上のMAC202を介して少なくとも1つのSERDES201に提供されるアプリケーションデータを伴うアプリケーション250の実行のために、アプリケーション250をRAM233内で受信するように結合されてもよい。埋込まれたMAC202は、SoC200によってサポートされる、イーサネット(登録商標)を限定なしで含む、さまざまな産業プロトコル用のものであってもよい。MAC202は、たとえばユーザアプリケーションなどのアプリケーションをSoC200上で実行するために使用されてもよい。
【0043】
アイスキャンコントローラ207は、処理部230などによるそのようなアプリケーションの実行中に、そのようなアプリケーションデータについてデータアイを判断するように構成されてもよい。ここでも、入力/出力バス227は、プロセッサ231によって実行されるアプリケーションの同時動作のために別個の経路を提供しながら、そのアプリケーションデータをアイスキャンコントローラによって収集してもよい。言い換えれば、入力/出力バス226を介するアプリケーションデータフローは、入力/出力バス227を介するそのようなアプリケーションデータのフローとは別々であってもよい。これは、ユーザがデータアイをモニタリングし、同時に、そのようなデータアイを調節するために構成コントローラ204を介してSERDES201の動作を調節することを容易にする。構成コントローラ204は、SERDES201のデータアイに応答して、レジスタ246がどこでサンプリングするかを調節するために使用されてもよい。言い換えれば、構成コントローラ204は、しきい値の上および下を限定なしで含む、データアイ内の異なる時点で、レジスタ246がどこでサンプリングするかを制御するために使用されてもよい。アイスキャンコントローラ207のアイスキャンレジスタは、そのようなサンプルを格納するために使用されてもよく、アイスキャンコントローラ207は、どこでサンプルを読出すべきかについてSERDES201のレジスタ246に示すように、構成コントローラ204に結合されてもよい。レジスタ246のアイスキャンレジスタはこのため、個々のサンプルのみを保持してもよく、アイスキャンコントローラ207は、いつどこでサンプルを採るべきかを示し、レジスタ246によって採られたそのようなサンプルを格納するために使用されてもよい。
【0044】
要約すると、データテストブロック209は概して、ループバックされるテストパターン生成データを使用して、SERDES201が明確に規定された構成で作動するかどうかを判断するために使用され得る。一方、リンクテストブロック203は概して、結果の品質、すなわちSERDES201の動作の品質を判断するために使用可能である。
【0045】
図3は、例示的なアナログブロックテストフロー300を示すフロー図である。
図2および
図3を同時に参照して、テストフロー300をさらに説明する。
【0046】
301で、データのシーケンス(「データシーケンス」)をループバックするために、SERDES201がテストされる。302で、構成情報が、テストインターフェイス208などを介して、リンクテストブロック203の構成コントローラ204に提供され得る。303で、そのような構成情報に応答して、構成コントローラ204の制御下でSERDES201が構成される。304で、SERDES201から、リンクテストブロック203のBERテスター206によって、そのようなデータシーケンスが受信され得る。BERテスター206は、303で、テストパターン情報を用いて構成され得る。シーケンスデータはこのため、そのようなテストパターン情報に関連付けられたテストパターンに応答し得る。305で、そのようなデータシーケンスについて、ビットエラーレートがBERテスター206によって判断され得る。306で、そのようなビットエラーレートが306で出力され得る。
【0047】
BERのためにそのようなデータシーケンスを受信することと並行して、またはそれとは別に、314で、ステータス情報が、リンクテストブロック203のステータスモニター205によって受信され得る。そのようなステータス情報は、SERDES201の1つ以上の状態機械247からのものであり得る。そのようなステータス情報は、ループバックされたそのようなデータシーケンスに関して、SERDES201から独立してバス伝送され得る。316で、そのようなステータス情報が出力され得る。
【0048】
図4は、テストフロー300のための例示的なループバックテストフロー301を示すフロー図である。
図2〜4を同時に参照して、テストフロー301をさらに説明する。テストフロー301は、リンクテストブロック203の使用と並行してデータテストブロック209を使用してもよい。
【0049】
401で、テストコード237は、処理部230によって実行され得る。テストコード237はテストパターン情報を含み、それは以下のように伝えられ得る。テストコード237は、SERDES201の入力および出力を切替えるように構成され得る。402で、SERDES201の動作の状態についての読出しが、テストコード237から発行され得る。403で、テストコード237のそのような読出しの実行に応答して、スイッチ236などのためのマイクロコントローラ・バス・トランザクションが、処理部230から提供され得る。404で、そのようなマイクロコントローラ・バス・トランザクションは、周辺バストランザクションを提供するために、ブリッジ235などによって変換され得る。SERDES201の入力および出力のそのような切替えは、テストデータブロック209の周辺バスブロック212に、テストパターンの生成のためのそのようなテストパターン情報をロードすることを伴い得る。このロードはこのため、処理部230によって実行されるテストコード237によって制御され得る。これに沿って、405での動作は、周辺バスブロック212にテストパターン情報をロードするために、415で、データテストブロック209の周辺バスブロック212によって、そのような周辺バストランザクションを、入力制御レジスタ213などに登録することを含み得る。
【0050】
406で、そのようなデータシーケンスは、データテストブロック209のテストパターン生成器210によるそのようなテストパターンに応答して生成され得る。407で、そのようなデータシーケンスは、SERDES201の入力を切替えるためにSERDES201に送信され得る。408で、そのようなデータシーケンス、またはデータシーケンスの少なくとも或るバージョンが、SERDES201の出力を切替えるためにループバックされ、または他の態様で送信され得る。409で、そのようなループバックされたデータシーケンスは、データテストブロック209のテストパターンチェッカー211によって受信され得る。410で、テストパターンチェッカー211によって受信されたそのようなデータシーケンスは、SERDES201のためのテストデータを生成するためにチェックされ得る。411で、そのようなチェックに応答して、そのようなテストデータが、テストパターンチェッカー211から、出力取込レジスタ214などによって取込まれ得る。412で、そのようなテストデータは、入力/出力バス223などを介して処理部230に出力され得る。テストインターフェイス208は、たとえば401での処理部230によるテストコード237の実行に対して独立した、302での構成情報の提供、316でのステータス情報の出力、および306でのBERの出力のために使用されてもよい。
【0051】
図5は、例示的なデータアイ生成フロー500を示すフロー図である。
図2〜5を同時に参照して、テストフロー500をさらに説明する。
【0052】
501で、構成情報が、リンクテストブロック203の構成コントローラ204に提供され得る。502で、そのような構成情報に応答して、構成コントローラ204の制御下で、SERDES201が構成され得る。
【0053】
511で、アプリケーションデータを生成するために、アプリケーションコード250が処理部230によって実行され得る。512で、そのようなアプリケーションデータが、処理部230からMAC202に提供され得る。513で、そのようなアプリケーションデータは、入力出力バス227から独立した入力/出力バス226を介して、そのようなMAC202からSERDES201に送信され得る。そのようなアプリケーションデータはこのため、以下により詳細に説明されるように、505でのデータアイの出力と並行して生成され得る。
【0054】
503で、前述したようにSERDES201からMAC202を介したアプリケーションデータは、SERDES201から入力/出力バス227を介して、リンクテストブロック203のアイスキャンコントローラ207によって受信され得る。504で、アプリケーションデータに応答して、データアイが、アイスキャンコントローラ207によって生成され得る。そのような構成情報に応答したSERDES201の設定のためのものであり得る、そのようなデータアイは、505で出力され得る。
【0055】
上述の説明はアナログベースのSERDESを制御することに関するものであったが、上述の説明は同様に、たとえばアナログ・デジタル変換器などの、データアイに影響を与えるアナログパラメータを有する他のブロックにも当てはまる。要するに、それらの調整および/または特徴付けが有用であり得るアナログコンポーネントを有するあらゆるブロックに当てはまる。このため、アナログブロックのための、BERテスター、およびソフトウェアにより実現可能な製品テスト構成が、SoCのために提供される。
【0056】
前述の事項は例示的な実施形態を説明しているが、1つ以上の局面に従った他のおよびさらなる実施形態が、請求項およびそれらの均等物によって定められるその範囲から逸脱することなく考案され得る。ステップを列挙する請求項は、それらのステップのいかなる順序も暗示しない。商標は、それらのそれぞれの所有者の所有物である。