(57)【要約】【課題】複製ロジックを使用するデバッグ及びテストのための方法及びシステムを提供する。【解決手段】回路の表現がコンパイルされる。回路は複製部分と複製部分への入力を遅延させる遅延ロジックとを含む。また、回路はトリガロジックとクロック制御ロジックとを含んで回路の複製部分の実行を可能にし、トリガ条件が発生したとき一時停止する。コンパイルされた回路表現は、ハードウェアデバイスの中にプログラムされる。次に、デバッガが起動され、１又は複数のトリガリング信号が選択される。選択されたトリガリング信号の各々に対して、１又は複数のステータスが選択されてトリガ条件がセットアップされる。次に、ハードウェアデバイスが実行される。回路の複製部分はトリガ条件が発生したとき一時停止する。回路の複製部分におけるレジスタの状態とトリガ条件へ導く入力シーケンスとが記録される。記録データは、デバッグ及びテストに使用される。【選択図】図２
2009503749.tif 000002
【特許請求の範囲】
【請求項１】
回路の表現をコンパイルし、前記回路は複製された部分と前記複製された部分への入力を遅延させるための遅延ロジックとを有し、
１又は複数のトリガリング信号を選択し、
選択されたトリガリング信号の各々に対して１又は複数の状態を設定してトリガ条件をセットアップし、
前記回路の複製された部分における１又は複数のレジスタの１又は複数の状態と、前記トリガ条件が発生したときに前記トリガ条件へ導く入力シーケンスとを含むデータを記録し、かつ、
前記記録されたデータに基づいてテストを生成し、前記テストは前記レジスタの前記記録された状態と前記トリガ条件へ導く入力シーケンスとを含む
ことを特徴とする方法。
【請求項２】
前記回路の表現はハードウェア記述言語（ＨＤＬ）で記述されていることを特徴とする請求項１に記載の方法。
【請求項３】
前記記録されたデータに基づいて生成するテストは、前記記録されたデータを、ソフトウェアシミュレータと互換性のあるフォーマットに変換することを含む請求項１に記載の方法。
【請求項４】
前記記録されたデータをソフトウェアシミュレータと互換性のあるフォーマットに変換することは、前記記録されたデータをＶＨＤＬシミュレータと互換性のあるＶＨＤＬフォーマットへ変換することを含む請求項３に記載の方法。
【請求項５】
前記記録されたデータをソフトウェアシミュレータと互換性のあるフォーマットに変換することは、前記記録されたデータをＶｅｒｉｌｏｇシミュレータと互換性のあるＶｅｒｉｌｏｇフォーマットへ変換することを含む請求項３に記載の方法。
【請求項６】
前記回路が修正されたとき前記ソフトウェアシミュレータ上で前記テストを実行する段階をさらに含む請求項３に記載の方法。
【請求項７】
前記回路の表現をコンパイルすることは、前記回路の表現をコンパイルしてレジスタ伝達レベルネットリストを生成することを含む請求項１に記載の方法。
【請求項８】
選択されたテクノロジアーキテクチャへ前記レジスタ伝達レベルネットリストをマッピングする段階をさらに含む請求項７に記載の方法。
【請求項９】
前記選択されたテクノロジアーキテクチャにおける回路を実施するための配置及びルートオペレーションを実行する段階をさらに含む請求項８に記載の方法。
【請求項１０】
前記レジスタ伝達レベルネットリストをプログラマブルハードウェアデバイスの中にプログラミングする段階をさらに含む請求項９に記載の方法。
【請求項１１】
前記回路は、前記回路の複製された部分に結合されたトリガロジック及びクロック制御ロジックをさらに含み、前記トリガ条件が発生したとき前記回路の複製された部分の実行を一時停止することを可能にする請求項１０に記載の方法。
【請求項１２】
前記トリガ条件が発生したとき、前記回路を前記プログラマブルハードウェアデバイス上で実行し、前記回路の複製された部分を一時停止することをさらに含む請求項１１に記載の方法。
【請求項１３】
機械によってアクセスされたとき前記機械に作動を実行させるコンテンツを含む機械アクセス可能な媒体であって、
回路の表現をコンパイルする段階であって、前記回路は複製された部分と前記複製された部分への入力を遅延させるための遅延ロジックとを有する段階と、
１又は複数のトリガリング信号を選択する段階と、
選択されたトリガリング信号の各々に対して１又は複数の状態を設定してトリガ条件をセットアップする段階と、
前記回路の複製された部分における１又は複数のレジスタの１又は複数の状態と、前記トリガ条件が発生したときに前記トリガ条件へ導く入力シーケンスとを含むデータを記録する段階と、かつ、
前記記録されたデータに基づいてテストを生成する段階であって、前記テストは前記記録された前記レジスタの状態と前記トリガ条件へ導く入力シーケンスとを含む段階と
を含むことを特徴とする媒体からなる製品。
【請求項１４】
前記記録されたデータに基づいて生成するテストは、前記記録されたデータを、ソフトウェアシミュレータと互換性のあるフォーマットに変換することを含む請求項１３に記載の製品。
【請求項１５】
前記機械アクセス可能な媒体は、前記回路が修正されたときに前記ソフトウェアシミュレータ上で前記テストを実行させることを含む作動を前記機械に実行させるコンテンツをさらに含む請求項１４に記載の製品。
【請求項１６】
前記回路の表現をコンパイルすることは、前記回路の表現をコンパイルしてレジスタ伝達レベルネットリストを生成することを含む請求項１３に記載の製品。
【請求項１７】
前記機械アクセス可能な媒体は、前記レジスタ伝達レベルネットリストを、選択されたテクノロジアーキテクチャへマッピングすることを含む作動を前記機械に実行させるコンテンツをさらに含む請求項１６に記載の製品。
【請求項１８】
前記機械アクセス可能な媒体は、前記選択されたテクノロジアーキテクチャにおける回路を実施するための配置及びルートオペレーションを実行する段階を含む作動を前記機械に実行させるコンテンツをさらに含む請求項１７に記載の製品。
【請求項１９】
前記機械アクセス可能な媒体は、前記レジスタ伝達レベルネットリストをプログラマブルハードウェアデバイスの中にプログラミングする段階を含む作動を前記機械に実行させるコンテンツをさらに含む請求項１８に記載の製品。
【請求項２０】
前記機械アクセス可能な媒体は、前記記録されたデータの解析後、前記回路の表現を再コンパイルする段階を含む作動を前記機械に実行させるコンテンツをさらに含む請求項１９に記載の製品。
【発明の詳細な説明】
【技術分野】
【０００１】
（優先権情報）
本出願は、２００５年４月２２日に提出された出願番号１１／１１２，０９２の一部継続出願（ＣＩＰ）である。
【０００２】
（技術分野）
本発明の実施形態は、集積回路のデバッグ及びテストの分野に関し、より詳細には複製されたロジックを使用するデバッグ及びテスト集積回路に関する。
【背景技術】
【０００３】
デジタル回路の設計において、しばしば設計者はコンピュータ補助技術を用いる。ハードウェア記述言語（ＨＤＬ）のような標準言語は、デジタル回路を記述するために発達してきており、複雑なデジタル回路の設計及びシミュレーションの手助けとなっている。デバイス技術は進歩し続けているので、新しいデバイス及び設計スタイルの使用に関して多くのプロダクトデザインツールがＨＤＬに適応するために発達してきたのである。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ＨＤＬコードが記述されコンパイルされた後は、集積回路（ＩＣ）又は複数のＩＣを含むシステムの設計が正しいことを検証する必要がある。継続的なプロセス技術の進歩、並びに設計サイズ及び複雑性に対応する急増により、従来のシミュレーションツール及び技術の使用では解決困難な、特定用途向け集積回路（ＡＳＩＣ）のような複雑な回路に対する検証問題が発生することとなった。
【０００５】
結果として、設計者の中には、フィールドプログラマブル・ゲートアレイ（ＦＰＧＡ）といった複数のＩＣを使用するプロトタイプボードを構築する者もいる。しかしながら、ハードウェアデザインのデバッギングには依然として課題が存在する。デバッグ中にエラーが検出されると、設計者は回路からの対象信号のタップを試み、ロジックアナライザを使用してそのエラーの原因を決定する。しかし、これは難しいプロセスであり、特に間欠エラー（intermittent error）の場合には、すでに生じたエラーはしばしば反復及び復元が困難であるので、時として効率的とはいえない。
【０００６】
本発明は、同じ要素には同様の参照番号を付した添付図面の図において、限定する方法ではなく例示の方法によって示される。
【課題を解決するための手段】
【０００７】
複製されたロジックを使用するデバック及びテストのためのシステム及び方法の実施形態が記載されている。以下の記述において、非常に多くの具体的詳細が記載されている。しかしながら、本発明の実施形態はこれらの具体的詳細なしに実施可能であると理解されるべきである。他の事例においては、本記載の理解を不明瞭なものにしないために、既知の回路、構造、及び技術について詳細には示していない。
【０００８】
「一実施形態」あるいは「実施形態」という記載に対する明細書を通した参照は、実施形態について記載された特定の機能、構造、又は特徴が、本発明の少なくとも１つの実施形態において含まれるということを意味するものである。つまり、本明細書を通して随所に見られる「一実施形態において」、又は「実施形態において」という文言は、同一の実施形態に対する全て参照である必要はない。さらに、特定の機能、構造、又は特徴は、１又は複数の実施形態において適切な何れかの方法で組み合わせが可能である。
【発明を実施するための最良の形態】
【０００９】
図１は、例示された本発明の特定の側面を実施可能である適切なコンピューティング環境を例示するブロック構成図である。一実施形態において、上記の方法は、プロセッサ１０２と、メモリ１０４と、入／出力（Ｉ／Ｏ）デバイス１０６と、データ記憶装置１１２と、互いにバス１０８を介して結合されたネットワークインタフェース１１０とを含むコンポーネントを有するコンピュータシステム１００上で実施することができる。コンポーネントは先行技術において既知の従来関数を実行し、本発明にかかるシステムを実現するための手段を提供する。集合的に、これらのコンポーネントはハードウェアシステムの広範なカテゴリを表わし、これらに限定されるものではないが、汎用目的コンピュータシステム、モバイル又は無線コンピューティングシステム、及び専用パケット転送デバイスを含む。コンピュータシステム１００の多様なコンポーネントは再配置可能であり、本発明の特定の実施は上記コンポーネントの全てを要求するものでもなければその全てを含むものでもないことを認識すべきである。加えて、追加のプロセッサ（例えば、デジタル信号プロセッサ）、記憶装置、メモリ（例えば、ＲＡＭ，ＲＯＭ，又はフラッシュメモリ）、及びネットワーク又は通信インタフェースといった追加のコンポーネントをシステム１００に含めることができる。
【００１０】
当業者にとって認識されるように、本発明にかかる方法の実施形態を実現するためのコンテンツ（例えば、コンピュータプログラム命令）は、これらに限定されるものではないが、カートリッジ、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）等を含むメモリに対する一部又は追加されるものとして、システム１００によってアクセス可能なデータを格納する何れかの機械読み取り可能媒体によって与えられる。この点に関してシステム１００は、先行技術における既知の方法でかかる機械読み取り可能媒体と通信可能となるよう装備される。
【００１１】
さらに、当業者にとっては、本発明にかかる方法の実施形態を実現するためのコンテンツは、そのコンテンツを格納し、かつコンテンツをシステム１００に伝達する能力を有する何れかの外部装置からシステム１００に与えられるものと認識されるべきである。例えば、一実施形態においては、システム１００はネットワークに接続され、コンテンツはそのネットワーク上の何れかのデバイスに格納される。
【００１２】
図２は、本発明にかかる方法の実施形態を例示するフローチャートである。段階２００において、回路の表現がコンパイルされる。一実施形態においては、コンパイルによって第１レジスタ伝達（ＲＴＬ）ネットリストが生成される。一実施形態においては、この回路は、該回路要素のハードウェア記述言語（ＨＤＬ）ソースコード記述を記載することによるテキスト表現によって記載されている。一実施形態においては、この回路はネットリスト表現によって記述されている。
【００１３】
そして、この回路の表現はコンパイラへの入力となる。コンパイラの一例はロジック統合コンパイラであり、いくつかの実施形態においては特別目的のコンピュータシステムに専用化することができるが、典型的には汎用目的コンピュータシステム上で作動するコンピュータプログラムである。コンパイルの後、ＲＴＬネットリストが生成される。通常、ＲＴＬネットリストは、レジスタ及び相互接続された他のロジックを示しており、その回路を通るデータの流れを示す。
【００１４】
本発明の一実施形態において、ＲＴＬネットリストはターゲットアーキテクチャにマップされる。このターゲットアーキテクチャは、典型的には集積回路（ＩＣ）の供給によって決定される。ターゲットアーキテクチャの例としては、アルテラ、ルーセント・テクノロジーズ、アドヴァンスト・マイクロ・デバイス（ＡＭＤ）、ラティス・セミコンダクターなどのベンダーから供給されるフィールドプログラマブル・ゲートアレイ（ＦＰＧＡ）、及び複雑プログラマブル・ロジックデバイスが含まれる。マッピングオペレーションによって、設計された回路のＲＴＬレベル記述は、ターゲットアーキテクチャのビルディングブロックを使用して、実装された等価回路の中に変換される。テクノロジ特有のネットリストが生成される。そして、従来の配置及びルートソフトウェアは、ターゲットアーキテクチャにおける回路設計を生成するために使用される。
【００１５】
デバッグ目的のために、ＩＣ設計者は、ＦＰＧＡなどの複数のＩＣを使用するプロトタイプボードを構築してその設計を検証することができる。例えば、コンパイル、マッピング、配置及びルートオペレーションの後、回路は、ＦＰＧＡの中にプログラムされてその設計のプロトタイプが生成される。そして、ＦＰＧＡは、その設計において何れが問題領域かを決定するためにテストされる。
【００１６】
設計において問題領域が発見されると、設計者は、その回路部分を選択して複製することによって、かつトリガロジックに挿入することによって、その問題をさらに解析する。１又は複数の信号がトリガリングのために選択される。これらの選択された信号は、トリガ信号として後に使用されてトリガ状態を可能（enable）にする。そして、トリガリングロジックは、回路の中に挿入される。このトリガリングロジックに対する１又は複数のコントローラもこの回路の中に挿入することができる。そして、回路の部分は複製のために選択され、該選択された回路部分が複製される。この複製には、回路の選択された部分のロジック要素、入力信号、及び出力信号の複製が含まれる。一実施形態においては、回路の複製された部分におけるレジスタの各々は、ＪＴＡＧチェインなどのスキャンチェインにおいて互いに接続される。このスキャンチェインによって、レジスタからの情報（例えば、ステータス）の中をデバック中に走査することができる。
【００１７】
本発明の一実施形態において、クロック信号もまた複製される。クロック制御ロジックはクロック信号を制御するために挿入される。このクロック制御ロジックにより、ある条件が表れたときに、複製されたロジックブロックに対するクロックを一時停止して複製されたロジックの実行を停止することができ、複製されたロジックの中をシングルステッピングによってエラー分析することが可能となる。設計者は、特定の条件が表れたとき、複製された回路部分に対するクロックを一時停止するためのブレイクポイントを選択する。例えば、設計者は、クロックを一時停止させるであろう出力又は入力に対する値を選択する。これにより、設計者は、特定の問題状態が表れると、選択されたロジックの分析をより注意深く行うことができる。
【００１８】
遅延ロジックは、複製された回路部分の中に遅延入力を挿入することができる。遅延の長さは、回路設計者によって選択できる。この遅延ロジックにより、エラーは複製された回路部分において後ほど再度出現するので、選択された回路部分において観察されたエラーを、このエラーが生じたことを発見した後に解析することができる。
【００１９】
そして、回路の表現は再コンパイルされる。一実施形態において、コンパイルによって第２ＲＴＬネットリストが生成される。次に、マッピング、配置、及びルートオペレーションは、第２ＲＴＬネットリストを使用して実行され、ＦＰＧＡなどのターゲットアーキテクチャにおける回路を実現する。本発明の一実施形態においては、統合オペレーションが実施されて第２ＲＴＬネットリストから特定用途向け集積回路（ＡＳＩＣ）を生成する。複製されたロジックを伴った回路が生成され、これにより回路設計者は設計における問題領域を解析することができる。設計者は回路のデバッギングを補助するためのデバッガを起動することができる。
【００２０】
段階２０２では、１又は複数のトリガリング信号が選択される。これらの信号は、上述したような事前に選択された信号セットから選択することができる。段階２０４では、各選択されたトリガリング信号の１又は複数の状態がセットされてトリガリング条件をセットアップする。段階２０６では、トリガ条件が発生したとき、データが記録される。このデータは、１又は複数のレジスタの１又は複数の状態と、トリガ条件へと導く入力のシーケンスとを含む。複製されたロジックは、各クロックにおいて記録された入力の値と共にクロック毎にステップを進めることができる。この入力ストリームは、解析されているトリガ条件へ導く入力のシーケンスを表わしている。また、複製されたロジックにおけるレジスタの状態は、上記の通り実施されたスキャンチェインを使用することによって記録することもできる。
【００２１】
一実施形態において、記録されたデータは、ソフトウェアシミュレータと互換性のあるフォーマットに変換される。例えば、そのソフトウェアシミュレータがＶＨＤＬ若しくはＶｅｒｉｌｏｇであるならば、記録された情報は、ＶＨＤＬ若しくはＶｅｒｉｌｏｇにそれぞれ変換される。一実施形態において、フォーマットされた記録データは、次に、回路設計におけるロジック問題をデバッグするためにソフトウェアシミュレータの中に入力される。一実施形態において、ロジックに対する変化が生じたときに、記録されたデータはソフトウェアシミュレータの中に入力され、回路設計の機能性が保たれていることを検証する。
【００２２】
段階２０８において、段階２０６で記録されたデータを使用してテストが生成される。このテストは、トリガ条件及び記録されたレジスタの内部状態へと導く記録された入力シーケンスに基づく、入力シーケンス及びレジスタの内部状態を含む。次に、テストは、回路が修正されて回路が機能性を維持することを検証したとき、ソフトウェアシミュレータの中に入力され実行される。このテストは、何れかの修正後にも回路が期待通りに作動することを確認するために回路が修正されるごとに実行される。
【００２３】
図３に、本発明の実施形態を実施する回路３００のセクション例を示す。ロジックブロック３０２は、オリジナルＩＣ設計における回路部分である。オリジナルＩＣ設計のデバッグは、ロジックブロック３０２によって問題を明らかにする。それゆえ、オリジナルロジックブロック３０２は、選択及び複製されてその問題のさらなる分析を可能とする。オリジナルロジックブロック３０２は、複製されて複製ロジックブロック３０４が生成される。オリジナルブロック３０２からの出力３０８は、複製されて複製出力３１０が生成される。また、入力３０６も複製される。
【００２４】
遅延ロジック３１２は、入力３０６を遅延させるために複製されたロジックブロック３０４の中に挿入される。遅延ロジックは、インバータなどの一般的な回路ロジック及び要素を含み、入力３０６がオリジナルロジックブロック３０２に到達する時間よりも遅い時間に複製ロジックブロック３０４に到達するようにさせる。このように、エラーは、後の時間に複製されたロジックブロックにおいて現れることとなるので、該エラーがオリジナルロジックブロックにおいて生じたことを発見した後に、分析することが可能となる。
【００２５】
トリガロジック３３０は、回路の中に挿入されて、回路の複製部分を一時停止するトリガ条件のセットアップを可能とする。また、１又は複数のコントローラーもトリガロジックを制御するために挿入することができる。トリガロジック３３０は、ブレイクポイント３１８及び遅延ポーズ３２８の２つの出力を有している。ブレイクポイント３１８により、クロック制御ロジック３１４の進行を停止することができる。遅延ポーズ３２８により、遅延ロジック３１２の進行を停止することができる。
【００２６】
クロック制御ロジック３１４は、複製されたロジックブロック３０４に対するクロック信号３２２を制御するために挿入される。クロック制御ロジック３１４は、特定の条件が現れたときに、複製ロジックの実行を停止するために複製されたロジックブロック３０４に対するクロック３２２を一時停止する、特有のロジック及び回路要素を含む。また、クロック制御ロジック３１４は、クロックごとの基準によって複製ロジックにおける単一ステップを行ってエラーを分析することも可能となっている。ブレイクポイント３１８は、例えばトリガ条件が発生したときなど特定の条件が現れたときに、クロックを一時停止するようセットすることができる。
【００２７】
図４に、本発明の実施形態に基づくクロック制御ロジック３１４の例を示す。通常作動の間、回路を計時するクロック３１６がラッチ４００を通って流れ、複製されたロジックブロック３０４に対するクロック３２２と同様に動作する。ブレイクポイント３１８は、このクロック３２２によってサイクルごとの基準で一時停止及び単一ステッピングを可能にするために、クロック制御信号３２０によって制御可能になる、システムクロック３１６のラッチバージョンに対するクロック３２２をスイッチ操作する。
【００２８】
このように、複製されたロジックを使用するデバッグ及びテストのための方法及び装置の実施形態が記載された。要約に記載されたものを含み例示された本発明の実施形態の上記記述は、網羅することを意図したものでもなければ、厳密な形態の開示を意図するものでもない。本発明の特定の実施形態（及びその具体例）は、ここに例示目的で記載されたものであり、当業者であれば認識できるように、本発明の範囲内で多くの等価な修正が可能である。これらの修正は、上記詳細な説明を考慮して本発明に対してなし得るものである。以下の特許請求の範囲において使用される用語は、本明細書及び特許請求の範囲に開示された特定の実施形態に本発明を限定するものと解すべきではない。むしろ、本発明の範囲は、特許請求の範囲の解釈ついて確立された教義に基づいて解釈される、以下の特許請求の範囲によって決定されるべきものである。
【図面の簡単な説明】
【００２９】
【図１】本発明の特定の側面が実施可能である適切なコンピューティング環境を説明するブロック図である。
【図２】本発明にかかる方法の実施形態を例示するフローチャートである。
【図３】本発明の実施形態を実施する回路区分の例を説明する説明図である。
【図４】本発明に基づいたクロック制御ロジックの例を説明する説明図である。
【図１】
2009503749.tif 000003
【図２】
2009503749.tif 000004
【図３】
2009503749.tif 000005
【図４】
2009503749.tif 000006
【国際調査報告】
2009503749.tif 000007
2009503749.tif 000008