(57)【要約】複製されたロジックを使用するデバッグの方法および装置を提供する。回路のテキスト表現をコンパイルして、第１レジスタ・トランスファ・レベル（ＲＴＬ）ネットリストを生成する。ネットリストを、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）などのターゲット・アーキテクチャにマッピングすることができる。ネットリストを使用して、ＦＰＧＡをプログラムして、デバッグ用のプロトタイプ基板を作成することができる。デバッグの後に、回路のうちで設計者が分析を望む部分を選択する。回路の選択された部分を、複製する。遅延回路を挿入して、回路の複製された部分への入力を遅延させる。回路のテキスト表現を再コンパイルして、第２ＲＴＬネットリストを生成する。第２ＲＴＬネットリストを、ＦＰＧＡまたは特定用途向け集積回路（ＡＳＩＣ）などのターゲット・アーキテクチャにマッピングすることができる。
2005535965.tif 000002
【特許請求の範囲】
【請求項１】
第１レジスタ・トランスファ・レベル・ネットリストを生成するために回路のテキスト表現をコンパイルし、
前記回路の前記テキスト表現の一部を選択し、
前記回路の前記選択された部分を複製し、
前記回路の前記複製された部分への入力を遅延させるために遅延ロジックを挿入し、
第２レジスタ・トランスファ・レベル・ネットリストを生成するために前記回路の前記テキスト表現を再コンパイルすることを含む方法。
【請求項２】
前記テキスト表現がハードウェア記述言語で記述される請求項１に記載の方法。
【請求項３】
前記回路の前記選択された部分を複製することが、前記回路の前記選択された部分へのクロック信号を複製することを含む請求項１に記載の方法。
【請求項４】
前記回路の前記複製された部分の実行を一時停止することを可能にするために、前記回路の前記複製された部分への前記クロック信号を制御するロジックを挿入することをさらに含む請求項３に記載の方法。
【請求項５】
前記第１レジスタ・トランスファ・レベル・ネットリストを選択されたテクノロジ・アーキテクチャにマッピングすることをさらに含む請求項１に記載の方法。
【請求項６】
前記選択されたテクノロジ・アーキテクチャで前記回路を実装するために、配置・配線動作を実行することをさらに含む請求項５に記載の方法。
【請求項７】
前記第１レジスタ・トランスファ・レベル・ネットリストをプログラマブル・ハードウェア・デバイスにプログラムすることをさらに含む請求項６に記載の方法。
【請求項８】
前記プログラマブル・ハードウェア・デバイスを用いて前記回路のプロトタイプをテストすることをさらに含む請求項７に記載の方法。
【請求項９】
前記プログラマブル・ハードウェア・デバイスが、フィールド・プログラマブル・ゲート・アレイである請求項７に記載の方法。
【請求項１０】
前記第２レジスタ・レベル・ネットリストをプログラマブル・ハードウェア・デバイスにプログラムすることをさらに含む請求項１に記載の方法。
【請求項１１】
前記第２レジスタ・トランスファ・レベル・ネットリストから特定用途向け集積回路を生成することをさらに含む請求項１に記載の方法。
【請求項１２】
複数の論理要素と、
前記論理要素の１つまたは複数の複製と、
前記回路の前記複製された部分への入力を遅延させるために前記回路の前記複製された部分に結合された遅延ロジックと、
前記回路の前記複製された部分の実行を一時停止することを可能にするために前記回路の前記複製された部分に結合されたクロック制御ロジックと
を含む集積回路。
【請求項１３】
前記クロック制御ロジックが、前記回路の前記複製された部分を一時停止させるブレークポイントを含む請求項１２に記載の集積回路。
【請求項１４】
前記クロック制御ロジックが、クロックごとの基礎で前記回路の前記複製された部分を実行することを可能にするロジックをさらに含む請求項１２に記載の集積回路。
【請求項１５】
前記クロック制御ロジックがラッチを含む請求項１２に記載の集積回路。
【請求項１６】
複数の実行可能命令を含む機械可読媒体であって、前記複数の実行可能命令は、ディジタル処理システムで実行される時に、前記ディジタル処理システムに、
第１レジスタ・トランスファ・レベル・ネットリストを生成するために回路のテキスト表現をコンパイルさせ、
前記回路の前記テキスト表現の一部を選択させ、
前記回路の前記選択された部分を複製させ、
前記回路の前記複製された部分への入力を遅延させるために遅延ロジックを挿入させ、
第２レジスタ・トランスファ・レベル・ネットリストを生成するために前記回路の前記テキスト表現を再コンパイルすることとを含む方法を実行させる機械可読媒体。
【請求項１７】
前記方法が、さらに、前記第１レジスタ・トランスファ・レベル・ネットリストを選択されたテクノロジ・アーキテクチャにマッピングすることを含む請求項１６に記載の機械可読媒体。
【請求項１８】
前記方法が、さらに、前記選択されたテクノロジ・アーキテクチャで前記回路を実装するために配置・配線動作を実行することを含む請求項１７に記載の機械可読媒体。
【請求項１９】
前記方法が、さらに、前記第１レジスタ・トランスファ・レベル・ネットリストをプログラマブル・ハードウェア・デバイスにプログラムすることを含む請求項１６に記載の機械可読媒体。
【請求項２０】
前記方法が、さらに、前記第２レジスタ・トランスファ・レベル・ネットリストをプログラマブル・ハードウェア・デバイスにプログラムすることを含む請求項１６に記載の機械可読媒体。
【請求項２１】
前記方法が、さらに、前記第２レジスタ・トランスファ・レベル・ネットリストから特定用途向け集積回路を生成することを含む請求項１６に記載の機械可読媒体。
【請求項２２】
バスと、
前記バスに結合されたデータ記憶デバイスと、
前記データ記憶デバイスに結合されたプロセッサであって、前記プロセッサによって実行される時に、前記プロセッサが、
第１レジスタ・トランスファ・レベル・ネットリストを生成するために回路のテキスト表現をコンパイルし、
前記回路の前記テキスト表現の一部を選択し、
前記回路の前記選択された部分を複製し、
前記回路の前記複製された部分への入力を遅延させるために遅延ロジックを挿入し、
第２レジスタ・トランスファ・レベル・ネットリストを生成するために前記回路の前記テキスト表現を再コンパイルすることを含む方法を実行させる命令を受け取るように動作するプロセッサと
を含むコンピュータ・システム。
【請求項２３】
前記方法が、さらに、前記第１レジスタ・トランスファ・レベル・ネットリストおよび前記第２レジスタ・トランスファ・レベル・ネットリストを選択されたテクノロジ・アーキテクチャにマッピングすることを含む請求項２２に記載のコンピュータ・システム。
【請求項２４】
前記方法が、さらに、前記選択されたテクノロジ・アーキテクチャで前記回路を実装するために配置・配線動作を実行することを含む請求項２３に記載のコンピュータ・システム。
【請求項２５】
前記方法が、さらに、前記第１レジスタ・トランスファ・レベル・ネットリストをプログラマブル・ハードウェア・デバイスにプログラムすることを含む請求項２２に記載のコンピュータ・システム。
【請求項２６】
前記方法が、さらに、前記第２レジスタ・トランスファ・レベル・ネットリストをプログラマブル・ハードウェア・デバイスにプログラムすることを含む請求項２２に記載のコンピュータ・システム。
【請求項２７】
前記方法が、さらに、前記第２レジスタ・トランスファ・レベル・ネットリストから特定用途向け集積回路を生成することを含む請求項２２に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路のデバッグの分野に関し、具体的には、複製された論理を使用する集積回路のデバッグに関する。
【背景技術】
【０００２】
ディジタル回路の設計のために、設計者はコンピュータ支援技法を使用することが多い。複雑なディジタル回路の設計やシミュレーションを助けるために、ハードウエア記述言語（ＨＤＬ）などの標準言語が、ディジタル回路を記述するために開発された。デバイス・テクノロジが進歩を続ける際に、さまざまな製品設計ツールが、より新しいデバイスや設計スタイルへの使用にＨＤＬを適応させるために開発された。
【０００３】
ＨＤＬコードを記述し、コンパイルした後に、集積回路（ＩＣ）または複数のＩＣを含むシステムの設計を、正しさについて検証しなければならない。処理テクノロジが継続的に進歩し、それに対応して設計のサイズや複雑さが急変することにより、特定用途向け集積回路（ＡＳＩＣ）などの複雑な回路設計では伝統的なシミュレーション・ツールと技法を使用して解決することが難しい検証についての課題が生じた。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
その結果、一部の設計者は、ＡＳＩＣ設計を検証するために、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）などの複数のＩＣを使用してプロトタイプ基板を作るようになった。しかし、ハードウェア設計のデバッグに、まだ問題がある。デバッグ中にエラーが検出される時に、設計者は、回路から問題の信号をタップし、ロジック・アナライザを使用してエラーの原因を判定することを試みる。しかし、これは、難しい処理であり、しばしば、特に間欠的なエラーの場合に有効でない。既に発生したエラーは、しばしば、繰り返し、再構成することが難しい。
【課題を解決するための手段】
【０００５】
本発明は、複製されたロジックを使用するデバッグの方法および装置を提供する。本発明の一態様によれば、回路のテキスト表現をコンパイルして、第１レジスタ・トランスファ・レベル（ＲＴＬ）ネットリスト（netlist）を生成する。第１ＲＴＬネットリストをフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）などのターゲット・アーキテクチャにマッピングして、回路をデバッグするためのプロトタイプ基板を作成することができる。デバッグの後に、設計者は、回路内の問題の領域を見つけることができる。設計者は、回路のこの部分を選択して、さらなる分析のために複製することができる。回路の選択された部分を複製する。遅延ロジックを挿入して、回路の複製された部分への入力を遅延させる。クロック制御回路を挿入して、回路の複製された部分へのクロックを一時停止できるようにする。回路のテキスト表現を再コンパイルして、第２ＲＴＬネットリストを生成する。第２ＲＴＬネットリストを、ＰＦＧＡまたは特定用途向け集積回路（ＡＳＩＣ）などのターゲット・アーキテクチャにマッピングする。
【０００６】
本発明の一態様によれば、上記および他の方法を実行する装置が提供される。
【発明を実施するための最良の形態】
【０００７】
本発明を、添付図面で制限ではなく例として示すが、図面では、類似する符号が類似する要素を指す。
【０００８】
複製されたロジックを使用するデバッグの方法と装置の実施形態を説明する。以下の説明では、本発明の実施形態の完全な理解のために多数の具体的な詳細を示す。しかし、当業者は、特定の詳細の１つまたは複数なしで、または他の方法、構成要素、材料などを用いて、本発明を実践できることを諒解するであろう。他の場合に、周知の構造、材料、または動作は、本発明の諸態様を不明瞭にしないように、詳細には図示せず、説明しない。
【０００９】
本明細書全体を通じて、「一実施形態」または「実施形態」への参照は、実施形態に関して説明される特徴、構造、または特性が、本発明の少なくとも１つの実施形態に含まれることを意味する。したがって、本明細書のさまざまな場所での句「一実施形態で」または「実施形態で」の出現は、必ずしもすべてが同一の実施形態を参照しない。さらに、特定の特徴、構造、または特性を、１つまたは複数の実施形態で適当な形で組み合わせることができる。
【００１０】
図１に、本発明の実施形態を実施するのに使用することができるコンピュータ・システム１００のブロック図を示す。コンピュータ・システム１００は、バス１１０を介してランダム・アクセス・メモリ（ＲＡＭ）１０４、読取専用メモリ（ＲＯＭ）１０６、大容量記憶デバイス１０８に結合されるプロセッサ１０２を含む。大容量記憶デバイス１０８は、フロッピ・ディスク・ドライブ、固定ディスク・ドライブ（たとえば磁気、光学、光磁気または類似物）、またはストリーミング・テープ・ドライブなどの永続的データ記憶デバイスを表す。プロセッサ１０２は、汎用プロセッサ、特殊目的プロセッサ、または特にプログラムされた論理デバイスで実施することができる。
【００１１】
表示デバイス１１２は、バス１１０を介してプロセッサ１０２に結合され、コンピュータ・システム１００のグラフィカル出力を提供する。キーボード１１４やカーソル制御ユニット１１６が、情報とコマンド選択をプロセッサ１０２に通信するためにバス１１０に結合されている。やはりバス１１０を介してプロセッサ１０２に結合されているのが、入出力インターフェース１１８であり、この入出力インターフェース１１８は、コンピュータ・システム１００に接続された電子デバイス（プリンタ、他のコンピュータなど）を制御し、それらにデータを転送するのに使用することができる。
【００１２】
図１のアーキテクチャが、例示のみのために提供されるものであり、本発明の実施形態と共に使用されるコンピュータが、この特定のアーキテクチャに制限されないことに留意されたい。
【００１３】
当業者が諒解するように、本発明の方法の実施形態を実現する内容、たとえばコンピュータ・プログラム命令を、カートリッジ、磁気カセット、フラッシュ・メモリ・カード、ディジタル・ビデオ・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）および類似物を含むがこれに制限されないメモリの一部としてまたはそれに加えて、システム１００によってアクセス可能なデータを保管できる機械可読媒体によって提供することができる。これに関して、システム１００は、当技術分野で周知の形でそのような機械可読媒体と通信する備えを有する。
【００１４】
さらに、本発明の方法の実施形態を実現する内容を、その内容を保管し、システム１００にその内容を通信することができる外部デバイスからシステム１００に供給できることを当業者は諒解するであろう。たとえば、一実施形態で、システム１００を、ネットワークに接続することができ、内容を、ネットワーク内のいずれかのデバイスに保管することができる。
【００１５】
図２は、本発明の方法の実施形態を示す流れ図である。２００で、回路のテキスト表現をコンパイルして、第１レジスタ・トランスファ（ＲＴＬ）ネットリストを生成する。回路は、通常、回路の要素のハードウエア記述言語（ＨＤＬ）のソース・コード記述を記述することによって、テキスト表現によって記述される。ＨＤＬソース・コードの記述は、文献に明瞭に記載されている。たとえば、Ｓａｍｉｒ  Ｐａｌｎｉｔｈａｒ著、「Ｖｅｒｉｌｏｇ  ＨＤＬ：ａ  Ｇｕｉｄｅ  ｔｏ  Ｄｉｇｉｔａｌ  Ｄｅｓｉｇｎ  ａｎｄ  Ｓｙｎｔｈｅｓｉｓ」、ＳｕｎＳｏｆｔ  Ｐｒｅｓｓ、１９９６年と、Ｊ．Ｂｈａｓｈｅｒ著、「Ａ  ＶＨＤＬ  Ｓｙｎｔｈｅｓｉｓ  Ｐｒｉｍｅｒ」、Ｓｔａｒ  Ｇａｌａｘｙ  Ｐｕｂｌｉｓｈｉｎｇ、１９９６年を参照されたい。
【００１６】
テキスト表現がコンパイラに入力される。コンパイラの一例が、論理合成コンパイラであり、これは、通常は、汎用コンピュータ・システムで動作するコンピュータ・プログラムであるが、いくつかの実施形態で、コンピュータ・システムを専用の特殊目的コンピュータ・システムとすることができる。論理合成コンパイラの例が、米国カリフォルニア州サニーベールのＳｙｎｐｌｉｃｉｔｙ，Ｉｎｃ．社のプログラム「Ｓｙｎｐｌｉｆｙ（商標）」である。コンパイルの後に、ＲＴＬネットリストが生成される。ＲＴＬネットリストには、通常は、相互接続されたレジスタと他のロジックが示されて、テキスト表現で記述された回路を介するデータの流れが示される。
【００１７】
本発明の一実施形態で、ＲＴＬネットリストがターゲット・アーキテクチャにマッピングされる。ターゲット・アーキテクチャは、通常は、集積回路（ＩＣ）の供給業者によって決定される。ターゲット・アーキテクチャの例が、Ａｌｔｅｒａ社、Ｌｕｃｅｎｔ  Ｔｅｃｈｎｏｌｏｇｉｅｓ社、Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ（ＡＭＤ）社、およびＬａｔｔｉｃｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ社などのベンダからの、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）や複合プログラマブル・ロジック・デバイスである。マッピング動作によって、所望の回路のＲＴＬレベル記述が、ターゲット・アーキテクチャの基本構成要素を使用して実施される同等の回路に変換される。テクノロジ固有ネットリストが生成される。その後、普通の配置・配線ソフトウェア・ツールを使用して、ターゲット・アーキテクチャでの回路の設計を作成することができる。
【００１８】
デバッグのために、ＩＣ設計者は、ＦＰＧＡなどの複数のＩＣを使用してプロトタイプ基板を作成して、設計を検証することができる。たとえば、コンパイル動作、マッピング動作、配置・配線動作の後に、回路をＦＰＧＡにプログラムして、設計のプロトタイプを作成することができる。その後、ＦＰＧＡをテストして、設計の問題領域を判定することができる。
【００１９】
設計の問題領域が見つかったときに、設計者は、回路のうちの複製される部分を選択して、その問題をさらに分析することができる。２０２で、回路の部分を選択する。２０４で、回路の選択された部分を複製する。この複製には、回路の選択された部分の、ロジック要素、入力信号、出力信号の複製を含めることができる。
【００２０】
本発明の一実施形態ではクロック信号も複製される。クロック制御ロジックが、クロック信号を制御するために挿入される。クロック制御ロジックを用いると、ある条件が存在する時に、複製されたロジックの実行を停止させるために、複製された論理ブロックへのクロックを一時停止できるようになり、エラーを分析するための、複製されたロジックを介するシングル・ステッピングが可能になる。設計者は、ある条件が存在する時に回路の複製された部分へのクロックを一時停止するブレークポイントを選択することができる。たとえば、設計者は、クロックを一時停止させる出力または入力の値を選択することができる。これによって、設計者は、ある問題条件が存在する時の選択されたロジックをより注意深く分析できるようになる。
【００２１】
２０６で、回路の複製された部分への入力を遅延させるために、遅延ロジックを挿入する。遅延の長さは回路設計者が選択することができる。遅延ロジックを用いると、回路の複製された部分で後にエラーが再現されるので、エラーが見られた後に、分析される回路の選択された部分で観察されるエラーを発生させることが可能になる。
【００２２】
２０８で、回路のテキスト表現を再コンパイルして、第２ＲＴＬネットリストを生成する。その後、第２ＲＴＬネットリストを使用してマッピング動作および配置配線動作を実行して、ＦＰＧＡなどのターゲット・アーキテクチャで回路を実装することができる。本発明の一実施形態では、合成動作を実行して、第２ＲＴＬネットリストから特定用途向け集積回路（ＡＳＩＣ）を生成する。回路設計者が設計の問題領域を分析できるようにする、複製されたロジックを有する回路が作られる。
【００２３】
図３に、本発明の実施形態を実装する回路部分３００の例を示す。論理ブロック３０２は、オリジナルＩＣ設計の回路の部分である。オリジナルＩＣ設計のデバッグによって、論理ブロック３０２に関する問題が明らかになった。したがって、オリジナル論理ブロック３０２が選択され、複製されて、その問題のさらなる分析が可能になった。オリジナル論理ブロック３０２は、複製された論理ブロック３０４を作るために複製される。オリジナル論理ブロック３０２からの出力３０８は、複製された出力３１０を作るために複製される。入力３０６も複製することができる。
【００２４】
遅延ロジック３１２が、複製された論理ブロック３０４への入力３０６を遅延させるために挿入される。遅延ロジックは、入力３０６がオリジナル論理ブロック３０２に達する時より後に、複製された論理ブロック３０４に達するようにする、インバータなどの通常の回路ロジックおよび要素を含む。このようにすることで、複製された論理ブロックではエラーが後で現れるので、オリジナル論理ブロックでエラーが発生するのを見た後に、エラーを分析することができる。
【００２５】
クロック制御ロジック３１４が、複製された論理ブロック３０４へのクロック信号３２２を制御するために挿入される。クロック制御ロジック３１４には、ある条件が存在する時に、複製されたロジックの実行を停止するために、複製された論理ブロック３０４へのクロック３２２を一時停止できるようにする通常のロジックと回路要素が含まれる。クロック制御ロジック３１４は、エラーを分析するために、クロックバイクロックをベースにして複製されたロジックのシングル・ステップ・スルーも可能にすることができる。ブレークポイント３１８をセットして、ある条件が存在する時にクロックを一時停止させることができる。
【００２６】
図４に、本発明の実施形態によるクロック制御ロジック３１４の例を示す。通常動作中に、回路をクロックするシステム・クロック３１６が、ラッチ４００を通って流れ、複製された論理ブロック３０４へのクロック３２２として働く。ブレークポイント３１８は、クロック３２２をシステム・クロック３１６のラッチされたバージョンに切り替える。このラッチされたバージョンは、クロック３２２を一時停止し、サイクルバイサイクルをベースにしてシングルステップできるようにするために、クロック制御信号３２０によって制御することができる。
【００２７】
したがって、複製されたロジックを使用するデバッグの方法と装置の実施形態を説明した。要約で説明されたものを含む本発明の例示的実施形態の上の説明は、網羅的であることまたは開示された正確な形態に本発明を制限することを意図されたものではない。本発明の特定の実施形態と本発明の例を、例示のために本明細書で説明したが、当業者が諒解するように、さまざまな同等の修正形態が、本発明の範囲内で可能である。これらの修正形態は、上の詳細な説明に鑑みて本発明に対して行うことができる。請求の範囲で使用される言葉は、本明細書と請求項で開示される特定の実施形態に本発明を制限するものと解釈されてはならない。そうではなく、本発明の範囲は、完全に請求項によって決定されねばならず、請求項は請求項解釈の確立された原則に従って解釈されなければならない。
【図面の簡単な説明】
【００２８】
【図１】本発明の実施形態を実施するのに使用することができるコンピュータ・システムを示すブロック図である。
【図２】本発明の方法の実施形態を示す流れ図である。
【図３】本発明の実施形態を実施する回路部分の例を示す図である。
【図４】本発明の実施形態によるクロック制御ロジックの例を示す図である。
【図１】
2005535965.tif 000003
【図２】
2005535965.tif 000004
【図３】
2005535965.tif 000005
【図４】
2005535965.tif 000006
【国際調査報告】
2005535965.tif 000007
2005535965.tif 000008
2005535965.tif 000009