(57)【要約】【課題】プログラマブル論理よりも高いクロック周波数で動作するＨＩＰブロックからの出力信号を捉える技術を提供すること。【解決手段】集積回路上のＨＩＰブロックからの出力信号の周波数を低減させる技術を提供する。出力信号の周波数を低減させることによって、ＨＩＰブロックよりも低い周波数で動作する集積回路内の回路ブロックは出力信号を捉えることができる。複数の直列結合されたフリップフロップは、出力信号の各周期の間にＨＩＰ出力信号の値を格納する。次に、論理回路構成はフリップフロップに格納された値に応答してより低い周波数のＨＩＰ出力信号を生成する。また、フリップフロップはＨＩＰブロック内の信号が適切に動作しているかどうかを決定するのに用いられるハートビート信号を生成する。【選択図】図１
2006166445.tif 000002
【特許請求の範囲】
【請求項１】
ＨＩＰ出力信号を生成するハード・インテレクチャル・プロパティ（ＨＩＰ）ブロックと、
連続する周期において前記ＨＩＰ出力信号の値を格納する複数の直列結合されたフリップフロップと、
前記複数の直列結合されたフリップフロップに格納された前記値を受け取ることに応答して低減された周波数のＨＩＰ出力信号を生成する論理回路と、
前記低減された周波数のＨＩＰ出力信号の値を捉えるプログラマブル論理ブロック内のレジスタとを備えたプログラマブル論理集積回路。
【請求項２】
前記論理回路は、前記複数の直列結合されたフリップフロップの各々の出力端子に結合された、アクティブな高い信号用のＯＲゲートまたはアクティブな低い信号用のＡＮＤゲートをさらに含む請求項１に記載のプログラマブル論理集積回路。
【請求項３】
前記複数の直列結合されたフリップフロップはＸ個のフリップフロップを含み、かつ前記低減された周波数のＨＩＰ出力信号の周波数は前記ＨＩＰ出力信号の周波数の１／Ｘ倍である請求項２に記載のプログラマブル論理集積回路。
【請求項４】
前記論理回路は前記ＯＲゲートまたは前記ＡＮＤゲートの出力に結合された第１の入力を有するマルチプレクサをさらに含む請求項２に記載のプログラマブル論理集積回路。
【請求項５】
前記マルチプレクサの第２の入力は前記複数の直列結合されたフリップフロップの最初の１つの出力端子に結合された請求項４に記載のプログラマブル論理集積回路。
【請求項６】
前記論理回路は前記マルチプレクサの出力に結合された出力フリップフロップをさらに含む請求項４に記載のプログラマブル論理集積回路。
【請求項７】
前記複数の直列結合されたフリップフロップは４つの直列結合されたフリップフロップを含む請求項１に記載のプログラマブル論理集積回路。
【請求項８】
前記ＨＩＰ出力信号は出力フリップフロップの出力信号である請求項１に記載のプログラマブル論理集積回路。
【請求項９】
プログラマブル論理集積回路上でハード・インテレクチャル・プロパティ（ＨＩＰ）ブロックの出力信号の周波数を低減させる方法であって、
プログラマブル論理集積回路でＨＩＰブロックからＨＩＰ出力信号を生成するステップと、
前記ＨＩＰ出力信号の連続する周期において、前記ＨＩＰ出力信号の値を格納するステップと、
連続する期間において前記ＨＩＰ出力信号の前記値の少なくとも２つに応答して、低減された周波数のＨＩＰ出力信号を生成するステップと、
前記プログラマブル論理集積回路のプログラマブル論理部分において、前記低減された周波数のＨＩＰ出力信号の各周期で、前記低減された周波数のＨＩＰ出力信号の値を捉えるステップとを含む方法。
【請求項１０】
前記ＨＩＰ出力信号の連続する周期において前記ＨＩＰ出力信号の値を格納するステップは、複数の直列結合されたフリップフロップに前記ＨＩＰ出力信号の値を格納するステップをさらに含む請求項９に記載の方法。
【請求項１１】
前記低減された周波数のＨＩＰ出力信号を生成するステップは、論理ゲートを用いて、前記フリップフロップに格納された前記ＨＩＰ出力信号の値を結合するステップをさらに含む請求項１０に記載の方法。
【請求項１２】
前記低減された周波数のＨＩＰ出力信号を生成するステップは、マルチプレクサを用いて、前記論理ゲートの出力信号または前記複数の直列結合されたフリップフロップの最初の１つの出力信号を選択するステップをさらに含む請求項１１に記載の方法。
【請求項１３】
前記低減された周波数のＨＩＰ出力信号を生成するステップは、前記マルチプレクサの出力信号を出力フリップフロップに格納するステップをさらに含む請求項１２に記載の方法。
【請求項１４】
前記複数の直列結合されたフリップフロップは、前記ＨＩＰブロックのクロック信号によってクロックされ、かつ前記プログラマブル論理集積回路はプログラマブル論理クロック信号によってクロックされる請求項１０に記載の方法。
【請求項１５】
前記複数の直列結合されたフリップフロップはＸ個のフリップフロップを含み、かつ前記ＨＩＰ出力信号の周波数は前記低減された周波数のＨＩＰ出力信号の周波数のＸ倍である請求項１０に記載の方法。
【請求項１６】
前記ＨＩＰ出力信号は前記ＨＩＰブロックのエラー出力信号である請求項９に記載の方法。
【請求項１７】
前記ＨＩＰ出力信号はフリップフロップの出力信号である請求項９に記載の方法。
【請求項１８】
第１の出力信号を生成するＡＳＩＣブロックと、
前記第１の出力信号の連続する周期において前記第１の出力信号の値を格納する直列結合された複数のフリップフロップと、
前記直列結合されたフリップフロップの各々の出力に結合された入力を有し、かつ前記第１の出力信号よりも低い周波数を有する第２の出力信号を生成する論理ゲートと、
前記第２の出力信号の値を格納するプログラマブル論理ブロックとを含み、
前記プログラマブル論理ブロック内のレジスタは前記直列結合されたフリップフロップよりも低い周波数でクロックされるプログラマブル論理集積回路。
【請求項１９】
前記論理ゲートの出力に結合された第１の入力と前記直列結合されたフリップフロップの最初の１つに結合された第２の入力を有するマルチプレクサをさらに含む請求項１８に記載のプログラマブル論理集積回路。
【請求項２０】
前記マルチプレクサの出力に結合された入力と前記レジスタの入力に結合された出力を有する出力フリップフロップをさらに含む請求項１９に記載のプログラマブル論理集積回路。
【請求項２１】
クロック信号およびリセット信号に応答する回路構成を含むハード・インテレクチャル・プロパティ（ＨＩＰ）ブロックと、
クリア入力において前記リセット信号を受け取り、クロック入力において前記クロック信号を受け取り、かつ第１の出力においてハートビート信号を生成するフリップフロップであり、前記フリップフロップのデータ入力に前記フリップフロップの第２の出力が結合されたフリップフロップと、
前記ハートビート信号を受信するプログラマブル論理ブロックと
を含むプログラマブル論理集積回路。
【請求項２２】
プログラマブル論理集積回路内のハード・インテレクチャル・プロパティ・ブロックが適切に動作しているかどうかを決定する方法であって、
フリップフロップのクリア入力においてリセット信号を受信するステップと、
前記フリップフロップのクロック入力においてクロック信号を受信するステップと、
前記フリップフロップの第１の出力においてハートビート信号を生成するステップと、
前記フリップフロップの第２の出力を前記フリップフロップのデータ入力に結合するステップと、
プログラマブル論理回路において前記ハートビート信号を解析するステップとを含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はハード・インテレクチャル・プロパティ・ブロックから出力信号をレポーティングする技術に関し、さらに特には、ハード・インテレクチャル・プロパティ・ブロックから出力信号を低い周波数でレポーティングする技術に関する。
【背景技術】
【０００２】
プログラマブル論理デバイス（ＰＬＤ）はプログラマブル論理集積回路の一種である。プログラマブル論理デバイスは種々のユーザの論理機能を実行するように構成される。プログラマブル論理集積回路にはフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、プログラマブル論理アレイ、コンフィギュラブル論理アレイ等も含まれる。
【０００３】
ＰＬＤは典型的には、種々のコンビナトリアル機能(combinatorial function)とシーケンシャル機能を実装するように構成される多数の論理ブロックを有する。論理ブロックはプログラマブル相互接続構造にアクセスする。プログラマブル相互接続構造をプログラムして、ほぼ任意の所望のコンフィギュレーションに論理ブロックを相互接続することができる。
【０００４】
今日のＰＬＤの多くはオンチップ・ノンプログラマブルな特定用途向け集積回路（ＡＳＩＣ）ブロックを有している。ＡＳＩＣブロックはハード・インテレクチャル・プロパティ（ＨＩＰ）ブロックとも呼ばれる。プログラマブル論理ブロック間の相互接続線は一般にＨＩＰブロック内の相互接続線よりも長いルーティング遅延を有しているので、ＨＩＰブロックは典型的にはＰＬＤ内のプログラマブル論理よりも高いクロック周波数で動作する。
【０００５】
ＰＬＤにおいて使用される多種のＨＩＰブロックは、エラー値がＨＩＰブロック内で生成されているかどうかを示すエラー信号を生成する。多種のＨＩＰブロックはＨＩＰブロック内の回路の動作状態を示すステータス信号も生成する。ＨＩＰブロックは典型的には、ＨＩＰブロックで使用されるクロック信号と同じ周波数でステータス信号とエラー信号を生成する。
【０００６】
特定の実施形態に関し、１Ｇｂｐで動作するＳｙｓｔｅｍ  Ｐａｃｋｅｔ  Ｉｎｔｅｒｆａｃｅ  Ｌｅｖｅｌ  ４  Ｐｈａｓｅ  ２（ＳＰＩ４．２）プロセッサとして構成されたＨＩＰブロック内の内部クロック周波数は５００ＭＨｚである。反対に、ＰＬＤまたはＦＰＧＡ内のプログラマブル論理は、典型的には、相互接続線やプログラマブル論理要素（ＬＥ）に関して遭遇する付加的な遅延の副作用のタイミング要件であるより低いクロック周波数（例えば、２５０ＭＨｚ）で動作しなければならない。その結果、プログラマブル論理が単一のビット・ストリームとして送信されるより高い周波数（５００ＭＨｚ）のＨＩＰブロック出力信号を捉えることは不可能である。
【０００７】
１つの選択肢はＨＩＰブロックのクロック信号の周波数を下げることである。ＨＩＰブロックのクロック信号の周波数を低減させることは、ＨＩＰブロック内の論理回路構成の動作に影響を及ぼし、ＨＩＰブロック内部のタイミング・バイオレーション・バグを隠すかもしれない。このため、この選択肢はそれだけで望ましくない。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
したがって、同じ集積回路上でプログラマブル論理よりも高いクロック周波数で動作するハード・インテレクチャル・プロパティ（ＨＩＰ）ブロックからの出力信号を捉える技術を提供することが望ましいであろう。
【０００９】
上記のように、ＨＩＰブロックの内部クロック速度がプログラマブル論理のクロック速度よりも高いので、ＨＩＰブロックのハードウェアのデバッギングは困難である。ハードウェア技術者がＨＩＰブロックの入力クロック信号と入力リセット信号の一部または全部をチェックすることが望ましい。しかし、ＦＰＧＡの標準的論理要素の速度に制限があるために、信号プロービングの標準的な技術はＨＩＰブロックにおいては困難である。したがって、種々のクロック信号やリセット信号が適切に動作しているかどうかを示すＨＩＰブロックからの信号をより低いクロック周波数で提供することが望ましいであろう。
【課題を解決するための手段】
【００１０】
本発明はプログラマブル論理デバイス内の標準的な論理によって捉えられるハード・インテレクチャル・プロパティ（ＨＩＰ）ブロックからの出力信号の周波数を低減させる技術を提供する。出力信号の周波数を低減させることによって、ＨＩＰクロック信号よりも低い周波数で動作する集積回路内の回路ブロックは出力信号を捉えることができる。ＨＩＰ出力信号は、例えば、ステータス信号、エラー信号、またはデータ信号である。
【００１１】
本発明は初期のデバッグの信頼性とルーチンの動作の両方のためにハード・インテレクチャル・プロパティ（ＨＩＰ）ブロックとリセット・アクティビティを決定する技術も提供する。
【００１２】
本発明の一実施態様によれば、複数の直列結合されたフリップフロップがＨＩＰブロック出力信号の連続する周期からの値を格納する。論理回路構成がフリップフロップに格納されたその値に応答して低減された周波数のＨＩＰ出力信号を生成する。
【００１３】
本発明の別の実施態様形態によれば、フリップフロップはＨＩＰブロック内のクロック信号とエラー信号が適切に動作しているかどうかを決定するのに用いられるハートビート信号を生成する。
【発明を実施するための最良の形態】
【００１４】
本発明の他の目的、特徴、利点は以下の詳細な説明と添付図面を熟慮すれば明白となろう。添付図面を通して同様の参照記号は同様の特徴を表す。
【００１５】
図１は本発明のある実施形態のハード・インテレクチャル・プロパティ（ＨＩＰ）ブロックを備えたプログラマブル集積回路（ＩＣ）１００の一部分を示している。ＩＣ１００はフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）である。本発明は主としてＰＬＤとＦＰＧＡなどのプログラマブル論理集積回路に関連して考察されるが、本発明はプログラマブル論理集積回路に限定されるものではないことを理解されたい。本発明の技術は特定用途向け集積回路および他のタイプの集積回路にも応用することができる。
【００１６】
ＦＰＧＡ１００は入力／出力（Ｉ／Ｏ）ブロック１０１、ＦＰＧＡ／ＨＩＰインタフェース・ブロック１０２、ＨＩＰコア１０３を含む。Ｉ／Ｏブロック１０１は集積回路の入力端子（ピン）を介してＮビットの並列入力データＤＡＴＡ［Ｎ：０］を受け取る。ＳＥＲＤＥＳ１０４はそのデータをデシリアライズし、データ・パスに沿ってデシリアライズされたデータをＨＩＰブロック１０３内の処理論理に出力する。代替的実施形態（図示せず）では、このデータ・フローは、処理論理からデータをシリアライズし、かつシリアライズされたデータをＦＰＧＡ１００から送信するＳＥＲＤＥＳ１０４を有する。
【００１７】
ＦＰＧＡ１００は図１に示したような入力ピンにて外部クロック信号ＤＣＬＫも受け取る。ＬＶＤＳ位相ロック・ループ（ＰＬＬ）１０５は外部ＤＣＬＫ信号の受信に応答していくつかのオンチップ・クロック信号を生成する。ＰＬＬ１０５によって生成されたクロック信号の一部はＳＥＲＤＥＳ１０４を駆動する。ＰＬＬ１０５によって生成された他のクロック信号はＦＰＧＡ／ＨＩＰインタフェース・ブロック１０２内のクロック・ネットワーク１０６に送られる。クロック・ネットワーク１０６はｘｃｌｋクロック信号と主要ＨＩＰブロック・クロックを含む種々のグローバル・クロック信号とローカル・クロック信号をＦＰＧＡ  ＩＣ１００内でルートさせる。ｘｃｌｋクロック信号はＦＰＧＡ１００のプログラマブル論理コア回路構成内のプログラマブル論理回路をクロックするクロック信号の一例である。
【００１８】
ＨＩＰクロック信号はＨＩＰブロック１０３内のデジタル回路構成を駆動するのに用いられるクロック信号である。このＨＩＰクロック信号はエラー／ステータス・フリップフロップ１１５などのＨＩＰ処理論理１１０内の論理回路をクロックする。典型的には、ＨＩＰクロック信号は、ｘｃｌｋクロック信号とＦＰＧＡ１００内のクロック論理回路構成をクロックする他のクロック信号よりも高い周波数を有する。例えば、ＨＩＰクロック信号は５００ＭＨｚの周波数を有するかもしれず、ｘｃｌｋ信号はそれぞれ（×４または×８のデシリアライゼーション係数に応じて）２５０または１２５ＭＨｚの周波数を有するかもしれない。
【００１９】
ＨＩＰブロック１０３はＦＰＧＡ１００内のＡＳＩＣブロックである。ＨＩＰブロック１０３は任意の所望の機能を実行するように設計される。ＨＩＰブロック１０３は種々の出力信号、例えば、エラー信号、ステータス信号、データ出力信号を生成する。（フリップフロップ１１５などの）このような出力信号はフリップフロップ１１６などのＦＰＧＡ内のプログラマブル論理回路に送られて分析に供される。このような出力信号は通常はＦＰＧＡのプログラマブル論理回路のクロック周波数よりも一般に高いＨＩＰクロック信号の周波数で生成される。本発明は出力信号がＦＰＧＡ１００内のプログラマブル論理要素１１６によって捉えられるように、ＨＩＰブロック１０３によって生成される出力信号の周波数を低減させる技術を提供する。
【００２０】
図２は本発明の実施形態によるＨＩＰ出力信号の周波数を低減させるＨＩＰ出力信号レポーティング・ブロック２００の一例を示している。ブロック２００はＯＲゲート２１５、マルチプレクサ２１６、フリップフロップ２１１、共に直列に結合された１つまたは複数の付加的なフリップフロップ（例えば、２１２〜２１３）を含む。
【００２１】
ブロック２００は、共に直列に結合されたフリップフロップ２１１〜２１３のような任意の数のフリップフロップを含み、ＨＩＰブロックの出力信号の周波数をその数に相当する分数の分だけ低減させる。例えば、（フリップフロップ２１１〜２１３とそのフリップフロップ２１３の出力に結合された付加的な１つのフリップフロップを含む）４つのフリップフロップを直列結合してＨＩＰブロックの出力信号を１／４に低減させることができる。
【００２２】
別の例では、ブロック２００は（フリップフロップ２１３を除いた）２つのフリップフロップ２１１〜２１２のみを有して、出力信号を１／２に低減させることができる。別の例として、８つのフリップフロップを共に直列結合して、ＨＩＰブロックの出力信号を１／８に低減させることができる。直列結合されたフリップフロップの各々の出力電圧は、ＯＲゲート２１５などの論理ゲートを用いて結合される。
【００２３】
ブロック２００はまた、フロップ２１７をネガティ・ブ・エッジ・クロックさせるためのインバータ２２１を含んでいるが、これは要件ではない。ブロック２００内の全フリップフロップは、典型的にはｘｃｌｋよりも速いＨＩＰクロックでクロックされる。アクティブな低い出力信号の場合、ＯＲゲート２１５はＡＮＤゲートに変えられるか、そうでない場合は、フロップ２１１への入力は反転されなければならない。
【００２４】
フリップフロップ２１１はそのＤ入力端子においてＨＩＰブロックの出力信号を受信する。ＨＩＰ出力信号は、例えば、エラー出力信号、ステータス出力信号またはデータ出力信号である。
【００２５】
フリップフロップ２１１〜２１３はそのクロック入力端子にＨＩＰクロック信号を受信する。フリップフロップ２１１のＱ出力端子の電圧は、フリップフロップ２１２のＤ入力端子に印加される。フリップフロップ２１２のＱ出力端子の電圧はフリップフロップ２１３のＤ入力端子に印加される。フリップフロップ２１３のＱ出力端子の電圧は次のフリップフロップのＤ入力端子に印加されるか、またはＯＲゲート２１５の入力に直接印加される。この直列結合されたフリップフロップはＨＩＰクロック信号によってクロックされる。
【００２６】
フリップフロップ２１１〜２１３や他の任意のフリップフロップのＱ出力端子の電圧は、ＯＲゲート２１５の入力に印加される。このようなフリップフロップのＱ出力の電圧のいずれかが論理ハイである場合、ＯＲゲート２１５の出力の電圧は論理ハイである。したがって、ＯＲゲート２１５はＨＩＰ出力信号のＸ個の連続する周期からのデータを１つの周期に結合する（Ｘは直列結合されたフリップフロップの数に等しい）。その結果、ＯＲゲート２１５の出力信号の周期はＨＩＰ出力信号の周期とＨＩＰクロック信号の周期のＸ倍長くなる。このことはＯＲゲート２１５の出力信号の信号トグル周波数はＨＩＰ出力信号とＨＩＰクロック信号の周波数の１／Ｘであることを暗示している。
【００２７】
マルチプレクサ２１６はマルチプレクサ入力端子の１つにおいてＯＲゲート２１５の出力信号を受信する。マルチプレクサ２１６はまた、マルチプレクサの入力端子の別の１つにあるフリップフロップ２１１のＱ出力において電圧を受け取る。Ｔｏｇｇｌｅ  Ｎｏ−Ｄｅｌａｙ信号の状態は、マルチプレクサ２１６がどの入力信号をその出力に送るのかを決定する。これによって、ＨＩＰクロック・トグル周波数で出力信号を提供しながら、フリップフロップ２１１〜２１３からのカスケード出力信号の選択またはフリップフロップ２１１のみ（ｎｏ−ｄｅｌａｙ  ｍｏｄｅ）からの出力の選択が可能となる。ｎｏ−ｄｅｌａｙ  ｍｏｄｅはｘｃｌｋドメインでクロックされたフリップフロップ１１６に対してタイミング・バイオレーションが存在しないようにＨＩＰをより低速で動作させながら内部信号の真の値を取得するのに有用である。ｎｏ−ｄｅｌａｙ  ｍｏｄｅはＨＩＰクロック・サイクル毎にトグルするマルチサイクル信号にも有用であるかもしれない。
【００２８】
マルチプレクサ２１６の出力はフリップフロップ２１７のＤ入力に結合されている。フリップフロップ２１７はブロック２００の出力信号を記録し、記録された出力信号ＶＯＵＴを生成する。フリップフロップ２１７はＨＩＰクロック信号の反転によってクロックされるので、フリップフロップ２１１〜２１３とは位相を外れて動作する。インバータ２２１はフリップフロップ２１７が、フロップ２１１〜２１３が動作する反転されたクロック・エッジで動作することを示し、出力信号ＶＯＵＴのためのタイミング・マージンが改善される。別の場合には、インバータ２２１はなくてもよく、フリップフロップ２１７が非反転ＨＩＰクロック信号によってクロックされてよい。
【００２９】
フリップフロップ２１７のＱ出力における電圧ＶＯＵＴはフリップフロップ１１６などのＦＰＧＡファブリック２０１内の回路構成に送られる。フリップフロップ１１６は典型的にはＨＩＰクロック信号よりも低い周波数を有するＦＰＧＡクロック信号ｘｃｌｋによってクロックされる。
【００３０】
ＨＩＰレポーティング・ブロック２００はＴｏｇｇｌｅ  Ｎｏ−Ｄｅｌａｙ信号の論理状態を選択することによって２つの動作モードの１つで動作する。ユーザがＦＰＧＡファブリック２０１内に存在する回路構成内のＨＩＰ出力信号を捉えようとするとき、Ｔｏｇｇｌｅ  Ｎｏ−Ｄｅｌａｙ信号は第１の状態に設定される。Ｔｏｇｇｌｅ  Ｎｏ−Ｄｅｌａｙ信号が第１の状態に設定されるとき、マルチプレクサ２１６はＯＲゲート２１５の出力信号をフリップフロップ２１７のＤ入力まで送る。
【００３１】
第１の動作モードにおける動作ブロック２００の不利は、ＯＲゲート２１６がＨＩＰ出力信号の４つの周期すべての４つの値を１つの値にマージすることである。この技術は情報が失われるかもしれない可能性を増大させる。例えば、ＨＩＰ出力信号はエラー信号になることがある。２つのエラーが連続して起こる場合、このエラー信号は２つの連続する周期において高い値を含むであろう。ブロック２００はＯＲゲート２１６の出力において連続する２つの高い値を１つの高い値にマージする。この結果、２つのエラー値は１つのエラー値として誤って解釈される恐れがある。別の例として、デシリアライゼーション係数が４の場合、連続する４つのエラー値は１つの単一のエラー・パルスにマージされる。この例では、ＶＯＵＴのこの単一のエラー・パルスはそれ自身が、ＨＩＰエラー出力信号の１つ、２つ、３つ、または４つの別個のエラー・パルスとして区別されない。
【００３２】
しかし、本発明の技術は先行技術よりも優れている。状態出力またはエラー出力毎に１つのＨＩＰ  Ｉ／Ｏ信号だけしか利用できない場合、より低い周波数でクロックされた、エラー信号の周波数が速すぎてＦＰＧＡプログラマブル論理がその値のどれも捉えることができないので、先行技術はＨＩＰブロック出力のエラー信号のどの値も捉えることができなかった。本発明の技術は、ＨＩＰ  Ｉ／Ｏのピン数を最小にしながら、ＨＩＰクロック信号全体の周波数を低減させなくても、ＦＰＧＡ内のプログラマブル論理ブロックが低減された周波数でＨＩＰ出力信号を捉えかつ解析できるようにする。
【００３３】
ＨＩＰ出力信号内のいくつかの情報は周波数低減プロセス中に失われるかもしれないが、低減されたトグル周波数ＶＯＵＴ信号は相当な量の有用な信号を含んでいる。例えば、ＨＩＰ出力信号がエラー信号である場合、ある周期において高くなっているＶＯＵＴは少なくとも１つのエラー信号がＨＩＰエラー出力信号のＸ個の周期内に発生していることを示している（ＸはＳＥＲＤＥＳ１０４のデシリアライゼーション係数によって決定される）。次に、さらに解析を行ってエラーの原因が特定される。
【００３４】
第２の動作モードでは、ユーザがＨＩＰ出力信号の周波数を低減させたくないときにはＴｏｇｇｌｅ  Ｎｏ−Ｄｅｌａｙ信号は第２の論理状態に設定される。Ｔｏｇｇｌｅ  Ｎｏ−Ｄｅｌａｙ信号が第２の状態に設定されると、マルチプレクサ２１６はフリップフロップ２１１のＱ出力信号をフリップフロップ２１７のＤ入力まで送る。この第２の動作モードでは、ＶＯＵＴ信号の周波数はＨＩＰクロック信号の周波数と同じである。ＶＯＵＴの周波数は高くなり過ぎて、フリップフロップ１１６はその値を捉えることができないかもしれない。
【００３５】
しかし、この第２の動作モードを他の目的に用いることができる。例えば、ＨＩＰ出力信号はエラー信号である。第１の動作モードでは、ＶＯＵＴ信号はエラーがＨＩＰブロック内で生じていることを示す高いパルスを含む。ＶＯＵＴがエラーが生じていることを示している場合、より低い周波数（例えば、１２５ＭＨｚ）で動作するように、ＨＩＰクロック信号の周波数をその標準的な周波数以下に低減させることができる。次に、マルチプレクサ２１６がフリップフロップ２１１からのエラー出力信号をフリップフロップ２１７にＨＩＰクロック信号と同じ周波数で直接送るように、ブロック２００は第２の動作モードにされる。
【００３６】
第２の動作モードでは、エラー信号はエラー出力信号の各周期中に個々に識別される。第２のモードの動作は上記のようにタイミング・バイオレーション・バグを隠し得る。しかし、最初に第１のモードで動作することによって、タイミング・バイオレーション・バグが識別される。ＨＩＰブロック内の論理回路構成を第２のモードの動作で低減したクロック信号周波数（例えば、１２５ＭＨｚ）で動作させることによって、ＦＰＧＡファブリック内のプログラマブル論理回路はプログラマブル論理コアの公称クロック周波数でフリップフロップ２１７の出力信号を捉えることができる。
【００３７】
本発明のさらなる実施形態によれば、ＯＲゲート２１５は別のタイプの論理ゲートに置き換えられる。別の例として、ＯＲゲート２１５は、ＳＥＲＤＥＳ１０４のデシリアライゼーション係数によって決定される直列結合されたフリップフロップのＱ出力信号を選択的に通過させるＯＲゲート／マルチプレクサの組合せに置き換えられる。例えば、典型的な実施形態は、デシリアライゼーション係数８を支持するために、直列の４つのフリップフロップを含む。しかし、このデシリアライゼーション係数が４まで低減される場合、マルチプレクサはＯＲゲートへの入力に使用されるフリップフロップの２つを選択することができる。
【００３８】
別の選択肢は直列結合されたフリップフロップ２１１〜２１３の出力信号の各々を、ＦＧＰＡファブリック内のプログラマブル論理に別個に（並列で）送信することである。すなわち、この並列出力バスはＨＩＰブロック出力信号よりも低い周波数を有する。直列結合されたフリップフロップはＨＩＰブロック出力信号をＸ個の並列の出力データ・ストリームに分割することができる。各並列のデータ・ストリームはＨＩＰブロック出力信号のＸ個の周期すべてのうちの１つからのデータを含む。各並列のデータ出力ストリームの周波数はＨＩＰブロック出力信号の周波数の１／Ｘ倍である。
【００３９】
しかし、並列出力の実施形態では、ＨＩＰブロックは出力信号当たりＸ個の異なる出力端子を並列の出力信号の各々に対して１つずつ有さなければならない。ＨＩＰブロックは典型的には出力端子の数は制限されており、したがって、非常に多くの出力端子を必要とする解決策は望ましくない。具体的な例として、１０個の別個のエラー信号をＨＩＰのクロック周波数で生成するＨＩＰブロックは、各々ＨＩＰクロックに関して１／Ｘに低減された周波数を有する１０Ｘの並列のエラー出力信号を送信するためにＸ×１０個の出力端子を必要とする。
【００４０】
また、並列出力の実施形態はＦＰＧＡ内のプログラマブル・ルーティング・リソースにより大きな要求を課す。ＨＩＰブロックからのＸ個の並列出力信号をプログラマブル論理ブロックに送信するには、さらに多くのリソースが必要になる。したがって、図２の実施形態が好ましい。
【００４１】
図３は本発明の別の実施形態を示している。ブロック４００はハートビート信号ＶＨＢを生成するフリップフロップ４０１を含む。このハートビート信号ＶＨＢはＨＩＰクロック信号またはＨＩＰリセット信号などの特定のＨＩＰ信号が適切に動作しているかどうかを監視するのに用いられる。
【００４２】
フリップフロップ４０１はＨＩＰクロック信号ＣＬＫによってクロックされる。リセット信号はフリップフロップ４０１のクリア入力を制御する。Ｑｂａｒ出力端子はＤ入力端子に結合されている。ハートビート信号ＶＨＢはこのＱ出力端子において生成される。
【００４３】
図４は図３に示した回路構成の動作を示すタイミング図である。図４はブロック４００の動作を生じるリセット、ＣＬＫ、Ｑｂａｒ、ＶＨＢの４つの信号のための例示的波形を示している。リセットの立ち上がり部分の後の次のクロック・サイクルでは、Ｑ出力は論理ｌｏｗになり、Ｑｂａｒ出力は論理ハイになる。ＣＬＫの立ち上がり部分の各々では、フリップフロップ４０１はＱｂａｒ信号の電圧を自身のＤ入力からＱ出力に送る。図４に示した波形はこのような信号間の関係の例示である。
【００４４】
ハートビート信号ＶＨＢはハードウェア設計の技術者がＨＩＰブロックのクロック信号とＨＩＰブロックのリセット信号がＨＩＰブロック内で適切に構成されていることを確実にするための簡単な技術を提供する。ハートビート信号ＶＨＢはまた技術者がクロック・ツリーとリセット・ツリーがＨＩＰブロック内部で適切にルーティングされたことを検証できるようにする。
【００４５】
図４に示した例では、ハートビート信号ＶＨＢはＨＩＰ  ＣＬＫクロック信号の１／２の周波数を有する。ハートビート信号の周波数は、それが分周器または計数回路を用いることによってＦＰＧＡプログラマブル論理要素内で捉えられるように低減される。計数回路または分周器を用いてＶＨＢの周波数を分周することができる。例えば、分周器は、論理要素によって捉えられるように、ハートビート信号の周波数を２または４で割ることができる。
【００４６】
この計数回路または分周器はリセット信号によって制御される。次に、分周されたＶＨＢ信号はＬＥファブリック（例えば、プログラマブル論理ブロック）に送られる。ユーザは検出論理を実施してシステムの障害を報告し処理することができる。図３の実施形態の利点はクロック信号とリセット信号の両方が同時に監視されることである。
【００４７】
したがって、フリップフロップ４０１は所望のクロック・ドメインで発振する。フリップフロップ４０１は場合によっては所望のリセット信号に基づいてリセットされる。ＦＰＧＡのＨＩＰブロック内のすべてのクロック・ドメインに対してハートビート信号を生成するフリップフロップが存在してもよい。クロック・ドメイン内のフリップフロップが異なるリセット信号を有する場合、フリップフロップ４０１などの別個のフリップフロップを用いて、このような条件の各々に対して固有のハートビート信号を生成することができる。
【００４８】
ハードウェア・デバッグ技術者はリセット後のハートビート信号ＶＨＢを捉えて、ＨＩＰブロックが動作することや、クロック信号とリセット信号が適切に駆動されていることを保証することができる。図３の実施形態の別の利点は、ハートビート信号ＶＨＢをグローバル・クロック・ネットワークにまで進め、かつクロック信号として使用することができることである。ハートビート信号は実質的にはＨＩＰクロック信号に同期化されるので、これはＨＩＰ状態出力信号を捉えるのに、またはいくつかのＨＩＰ入力信号を駆動するのに有用である。
【００４９】
図５は本発明の態様を含むＰＬＤ６００の１例の単純化した部分ブロック図である。本発明は主としてＰＬＤとＦＰＧＡに関して考察されているが、本発明を多数のタイプのプログラマブル集積回路に応用できることを理解されたい。ＰＬＤ６００は本発明の技術を実装することのできるプログラマブル集積回路の一例である。ＰＬＤ６００は種々の長さと速度の行と列の相互接続部のネットワークによって相互接続された二次元アレイのプログラマブル論理アレイ・ブロック（すなわちＬＡＢ）６０２を含む。ＬＡＢ６０２は複数（例えば、１０）の論理要素（ＬＥ）を含む。
【００５０】
ＬＥはユーザ定義の論理機能を効果的に実装するプログラマブル論理ブロックである。ＰＬＤは種々のコンビナトリアルな機能とシーケンシャルな機能を実現するように構成することのできる多数の論理要素を有する。この論理要素はプログラマブル相互接続構造にアクセスする。このプログラマブル相互接続構造は、ほぼ任意の所望のコンフィギュレーションで論理要素を相互接続するようにプログラムされる。
【００５１】
ＰＬＤ６００はアレイにわたって設けられた種々の大きさのＲＡＭブロックを含んだ分散メモリ構造も備える。ＲＡＭブロックは、例えば、５１２ビットのブロック６０４、４Ｋのブロック６０６、５１２ＫビットのＲＡＭを提供するブロック６０８を含む。このようなメモリ・ブロックはシフト・レジスタやＦＩＦＯバッファをも含む。
【００５２】
ＰＬＤ６００は例えば加算または減算フィーチャと共に乗算を実施することのできるデジタル信号処理（ＤＳＰ）ブロック６１０をさらに含む。その例ではデバイスの周辺に位置するＩ／Ｏ要素（ＩＯＥ）６１２は、多数のシングルエンド型や差動型のＩ／Ｏスタンダードを支援する。本願明細書ではＰＬＤ６００は単に説明のために記載されているだけであり、本発明は多数の異なるタイプのＰＬＤ、ＦＰＧＡ等において実装されてよいことを理解されたい。
【００５３】
図５に示したタイプのＰＬＤは、システム・レベル・ソリューションを実装するのに必要なリソースの多くを提供するが、本発明はＰＬＤがいくつかの構成要素の１つであるシステムにも有用である。図６は本発明を実施した例示的なデジタル・システム７００のブロック図である。システム７００はプログラムされたデジタル・コンピュータ・システム、デジタル信号処理システム、特化されたデジタル・スイッチング・ネットワーク、または他の処理システムであってよい。さらに、そのようなシステムは遠隔通信システム、自動車システム、制御システム、民生用電子機器、パーソナル・コンピュータ、インターネット通信、ネットワーキング等などの幅広い用途のために設計されてよい。さらに、システム７００は単一のボード上に、複数のボード上に、または複数のエンクロージャ内に設けられる。
【００５４】
システム７００は１つまたは複数のバスによって相互接続された処理ユニット７０２、メモリ・ユニット７０４、Ｉ／Ｏユニット７０６を含む。この例示的実施形態によれば、プログラマブル論理デバイス（ＰＬＤ）７０８は処理ユニット７０２内に埋め込まれる。ＰＬＤ７０８は図６のシステム内で多数の異なる役割を提供することができる。ＰＬＤ７０８は、例えば、その内部動作や外部動作を支援する処理ユニット７０２の論理ビルディング・ブロックであってよい。ＰＬＤ７０８はシステム動作においてその特定の役割を継続するのに必要な論理機能を実施するようにプログラムされる。ＰＬＤ７０８は接続部７１０を介してメモリ７０４に、かつ接続部７１２を介してＩ／Ｏユニット７０６に特に結合される。
【００５５】
処理ユニット７０２は、処理するか、格納するのに適切なシステム構成要素にデータを導くか、メモリ７０４に格納されたプログラムを実行するか、またはＩ／Ｏユニット７０６を介してデータを受信したり送信したりすることができるか、あるいは他の機能を実行することができる。処理ユニット７０２は中央処理ユニット（ＣＰＵ）、マイクロプロセッサ、浮動小数点演算プロセッサ、グラフィックス・プロセッサ、ハードウェア・コントローラ、マイクロコントローラ、コントローラとして使用するためにプログラムされたプログラマブル論理デバイス、ネットワーク・コントローラ等であってよい。さらに、多数の実施形態では、多くの場合ＣＰＵを必要としない。
【００５６】
例えば、ＣＰＵの代わりに、１つまたは複数のＰＬＤ７０８がシステムの論理動作を制御することができる。ある実施形態では、ＰＬＤ７０８は必要に応じて特定の演算タスクを処理するようにプログラムすることができるリコンフィギュラブル・プロセッサとして働く。別の場合には、プログラマブル論理デバイス７０８はそれ自体が埋め込みマイクロプロセッサを含む。メモリ・ユニット７０４はランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリー・メモリ（ＲＯＭ）、固定ディスク・メディアまたはフレキシブル・ディスク・メディア、ＰＣ  Ｃａｒｄフラッシュ・ディスク・メモリ、テープ、または他の任意の格納手段、あるいはこのような格納手段の任意の組合せであってよい。
【００５７】
本発明をその特定の実施形態を参照して記載してきたが、変形、種々の変更、置換の自由裁量が本発明では意図されている。ある場合には、定められた本発明の範囲から逸脱せずに、相当する他の特徴を使用せずに本発明の特徴を利用してもよい。したがって、本発明の本質的な範囲と精神から逸脱せずに、開示した特定のコンフィギュレーションまたは方法に適合するように多数の変形がなされてよい。本発明は開示の特定の実施形態に限定されるものではないが、本発明は添付の特許請求の範囲に入るあらゆる実施形態および同等物を含むであろうことが意図されている。
【図面の簡単な説明】
【００５８】
【図１】本発明の実施形態によるＦＰＧＡデバイスＩ／Ｏインタフェース、ＦＰＧＡ／ＨＩＰインタフェース、ＨＩＰコア・ブロックを示す図である。
【図２】本発明による、ＨＩＰ出力信号の周波数を低減させるＨＩＰ出力信号レポーティング・ブロックの第１の実施形態を示す図である。
【図３】本発明の実施形態による、ＨＩＰ信号が適切に動作しているかどうかを監視するハートビート信号を生成するフリップフロップを示す図である。
【図４】図４の実施形態の動作をわかり易くする波形の例を示すタイミング図である。
【図５】本発明の技術とともに使用され得るプログラマブル論理デバイスを示す単純化したブロック図である。
【図６】本発明の実施形態を実施することのできる電子システムを示すブロック図である。
【符号の説明】
【００５９】
１００  プログラマブル集積回路、１０１  入力／出力ブロック、１０２  ＦＰＧＡ／ＨＩＰインタフェース・ブロック、１０３  ＨＩＰコア、１０４  ＳＥＲＤＥＳ、１０５  ＬＶＤＳ位相ロック・ループ、１０６  クロック・ネットワーク、１１０  ＨＩＰ処理論理、１１６  フリップフロップ、２０１  ＦＰＧＡファブリック、２１１  フリップフロップ、２１２  フリップフロップ、２１３  フリップフロップ、２１５  ＯＲゲート、２１６  マルチプレクサ、２１７  フロップ、２２１  インバータ、４００  ブロック、４０１  フリップフロップ
【図１】
2006166445.tif 000003
【図２】
2006166445.tif 000004
【図３】
2006166445.tif 000005
【図４】
2006166445.tif 000006
【図５】
2006166445.tif 000007
【図６】
2006166445.tif 000008