(57)【要約】  複製ロジック及びトリガロジックを用いたデバッグのための方法及びシステムが記載される。回路表現がコンパイルされる。トリガのために１つ又はそれ以上の信号が選択されて、トリガロジックが回路に挿入される。複製のために回路表現の一部分が選択される。回路の選択部分が複製されて、遅延ロジックが挿入され、回路の複製部分への入力を遅延させる。回路表現が再コンパイルされてハードウェアデバイスにプログラミングされる。次いで、デバッガを起動することができる。トリガ信号の１つ又はそれ以上が選択される。選択された各トリガ信号に関して、１つ又はそれ以上の状態が選択されてトリガ条件をセットアップする。次いで、ハードウェアデバイスを実行することができる。トリガ条件が発生すると、回路の複製部分が一時停止することになる。次いで、回路の複製部分におけるレジスタの状態と、トリガ条件をもたらしたステップのシーケンスとを記録することができる。【選択図】図２
2008544337.tif 000002
【特許請求の範囲】
【請求項１】
回路の表現をコンパイルする段階と、
トリガのために１つ又はそれ以上の信号を選択する段階と、
トリガロジックを前記回路に挿入する段階と、
複製のために前記回路の表現の一部分を選択する段階と、
前記回路の選択部分を複製する段階と、
遅延ロジックを挿入して、前記回路の複製部分への入力を遅延させる段階と、
前記回路の表現を再コンパイルする段階と、
前記トリガ信号の１つ又はそれ以上を選択する段階と、
選択された各トリガ信号の１つ又はそれ以上の状態を設定して、トリガ条件をセットアップする段階と、
前記トリガ条件が発生したときに、前記回路の複製部分における１つ又はそれ以上のレジスタの１つ又はそれ以上の状態と、前記トリガ条件をもたらしたステップのシーケンスとを記録する段階と、
を含む方法。
【請求項２】
前記回路の表現がハードウェア記述言語（ＨＤＬ）で記述される、
ことを特徴とする請求項１に記載の方法。
【請求項３】
前記回路の選択部分を複製する段階が、前記回路の複製部分における各レジスタをスキャンチェーンに接続する段階を含む、
ことを特徴とする請求項１に記載の方法。
【請求項４】
前記回路の表現を再コンパイルする段階が、前記回路の表現を再コンパイルしてレジスタ転送レベルのネットリストを生成する段階を含む、
ことを特徴とする請求項１に記載の方法。
【請求項５】
前記レジスタ転送レベルのネットリストを選択された技術アーキテクチャにマッピングする段階を更に含む、
ことを特徴とする請求項４に記載の方法。
【請求項６】
配置配線動作を実行して前記選択された技術アーキテクチャにおいて前記回路を実装する段階を更に含む、
ことを特徴とする請求項５に記載の方法。
【請求項７】
前記レジスタ転送レベルのネットリストをプログラム可能なハードウェアデバイスにプログラミングする段階を更に含む、
ことを特徴とする請求項６に記載の方法。
【請求項８】
前記プログラム可能なハードウェアデバイス上で前記回路を実行し、前記トリガ条件が発生したときに前記回路の複製部分を一時停止させる段階を更に含む、
ことを特徴とする請求項７に記載の方法。
【請求項９】
前記レジスタの記録された状態及び前記トリガ条件をもたらした前記ステップのシーケンスをソフトウェアシミュレータと互換性のあるフォーマットに変換する段階を更に含む、
ことを特徴とする請求項１に記載の方法。
【請求項１０】
複数のロジック要素と、
前記ロジック要素の１つ又はそれ以上の複製と、
前記回路の複製部分への入力を遅延させるために、前記回路の複製部分に結合された遅延ロジックと、
トリガ条件のセットアップを可能にするために前記回路の複製部分に結合されたトリガロジックと、
前記トリガ条件が発生したときに前記回路の複製部分の実行を一時停止することができるように、前記回路の複製部分に結合されたクロック制御ロジックと、
を備える集積回路。
【請求項１１】
前記クロック制御ロジックは、前記回路の複製部分を一時停止させるためのブレークポイントを含む、
ことを特徴とする請求項１０に記載の集積回路。
【請求項１２】
前記クロック制御ロジックは、前記回路の複製部分をクロック単位で実行することが可能となるロジックを更に含む、
ことを特徴とする請求項１０に記載の集積回路。
【請求項１３】
マシンによってアクセスされるときに、
回路の表現をコンパイルする段階と、
トリガのために１つ又はそれ以上の信号を選択する段階と、
トリガロジックを前記回路に挿入する段階と、
複製のために前記回路の表現の一部分を選択する段階と、
前記回路の選択部分を複製する段階と、
遅延ロジックを挿入して前記回路の複製部分への入力を遅延させる段階と、
前記回路の表現を再コンパイルする段階と、
前記トリガ信号の１つ又はそれ以上を選択する段階と、
選択された各トリガ信号の１つ又はそれ以上の状態を設定して、トリガ条件をセットアップする段階と、
前記トリガ条件が発生したときに、前記回路の複製部分における１つ又はそれ以上のレジスタの１つ又はそれ以上の状態と、前記トリガ条件をもたらしたステップのシーケンスとを記録する段階と、
を含む動作を前記マシンに実行させるコンテンツを含むマシンアクセス可能媒体を備えた製品。
【請求項１４】
前記回路の選択部分を複製する段階は、前記回路の複製部分における１つ又はそれ以上のレジスタをスキャンチェーンに接続する段階を含む、
ことを特徴とする請求項１３に記載の製品。
【請求項１５】
前記方法が更に、前記レジスタの記録された状態と前記トリガ条件をもたらした前記ステップのシーケンスとを、ソフトウェアシミュレータと互換性のあるフォーマットに変換する段階を含む、
ことを特徴とする請求項１３に記載の製品。
【請求項１６】
前記方法が更に、前記回路のコンパイルされた表現をプログラム可能なハードウェアデバイスにプログラミングする段階を含む、
ことを特徴とする請求項１３に記載の製品。
【請求項１７】
前記方法が更に、前記プログラム可能なハードウェアデバイス上で前記回路を実行させる段階を含む、
ことを特徴とする請求項１６に記載の製品。
【請求項１８】
前記方法が更に、前記トリガ条件が発生したときに前記回路の複製部分を一時停止させる段階を含む、
ことを特徴とする請求項１３に記載の製品。
【発明の詳細な説明】
【技術分野】
【０００１】
（優先権情報）
本出願は、２００２年８月９日に出願された米国特許出願番号１０／２１５，８６９の一部継続出願（ＣＩＰ）である。
【０００２】
本発明の実施形態は、集積回路のデバッグの分野に関し、より具体的には、複製ロジック及びトリガロジックを用いた集積回路のデバッグに関する。
【背景技術】
【０００３】
デジタル回路の設計において、設計者は、コンピュータ支援技術を利用することが多い。複雑なデジタル回路の設計及びシミュレーションを支援するために、デジタル回路を記述するためのハードウェア記述言語（ＨＤＬ）のような標準言語が開発されてきた。デバイス技術は進歩し続けているので、より新しいデバイス及び設計スタイルでの使用にＨＤＬを適応させるために様々な製品設計ツールが開発されてきた。
【０００４】
ＨＤＬコードが記述されコンパイルされた後は、集積回路（ＩＣ）又は複数のＩＣを含むシステムの設計が正しいことを検証しなければならない。加工技術が絶えず進歩していること、並びにこれに対応して設計規模及び複雑性が急増していることにより、従来のシミュレーションツール及び技術を用いて解決することが困難な特定用途向け集積回路（ＡＳＩＣ）などの複雑な回路設計の検証の問題が生じている。
【０００５】
結果として、一部の設計者は、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）などの複数のＩＣを用いてプロトタイプ基板を構築し、自身のＡＳＩＣ設計を検証している。しかしながら、ハードウェア設計のデバッグには依然として問題がある。デバッグ中にエラーが検出されると、設計者は回路から関心信号をタップするように試みて、ロジックアナライザを用いてエラーの要因を判断することができる。しかしながら、これは難しい処理であり、特に間欠的なエラーの場合には有効ではないことが多い。既に発生したエラーは、多くの場合は反復及び再現が困難である。
【０００６】
【特許文献１】米国特許出願番号１０／２１５，８６９公報
【発明を実施するための最良の形態】
【０００７】
本発明は、同じ参照数字が同様の要素を示す添付図面の各図において、限定ではなく一例として説明される。
複製ロジック及びトリガロジックを用いたデバッグのためのシステム及び方法の実施形態について説明する。以下の説明において、多数の特定の詳細が記載される。しかしながら、本発明の実施形態は、これらの特定の詳細がなくとも実施することができることを理解されたい。場合によっては、公知の回路、構造、及び技術については、本説明の理解を妨げないようにするために詳細には示されていない。
【０００８】
本明細書全体を通して「一実施形態」又は「実施形態」と言及する場合、実施形態に関連して記述される特定の特徴、構造、又は特性が本発明の少なくとも１つの実施形態に含まれることを意味する。従って、本明細書全体にわたり様々な箇所で語句「一実施形態では」又は「実施形態では」が出現するが、必ずしも全てが同じ実施形態を指すわけではない。更に、特定の特徴、構造、又は特性は、１つ又はそれ以上の実施形態においてあらゆる適切な方法で組み合わせることができる。
【０００９】
図１は、本発明の実施形態を実施するのに使用することができるコンピュータシステム１００のブロック図を示している。コンピュータシステム１００は、バスを介してランダムアクセスメモリ（ＲＡＭ）１０４、読み出し専用メモリ（ＲＯＭ）１０６、及び大容量記憶装置１０８に結合されたプロセッサ１０２を含む。大容量記憶装置１０８は、フロッピーディスクドライブ、固定ディスクドライブ（例えば磁気、光学式、光磁気、又は同様のもの）、又はストリーミングテープドライブなどの持続的データ記憶装置を表している。プロセッサ１０２は、汎用プロセッサ、専用プロセッサ、又は特別にプログラムされた論理デバイスで具現化することができる。
【００１０】
ディスプレイデバイス１１２は、バス１１０を介してプロセッサ１０２に結合されて、コンピュータシステム１００にグラフィック出力を提供する。キーボード１１４及びカーソル制御ユニット１１６は、情報及びコマンド選択をプロセッサ１０２に伝達するためにバス１１０に結合されている。また、バス１１０を介してプロセッサ１０２に結合されているのは、入力／出力（Ｉ／Ｏ）インタフェース１１８であり、これはコンピュータシステム１００に接続された電子デバイス（プリンタ、他のコンピュータなど）へのデータを制御及び転送するために使用することができる。
【００１１】
図１のアーキテクチャは、説明の目的でのみ提示されたものであり、本発明の実施形態と関連して使用されるコンピュータは、この特定のアーキテクチャに限定されるものではないことに留意されたい。
【００１２】
当業者であれば理解されるように、本発明の方法の実施形態を実施するためのコンテンツ、例えば、コンピュータプログラム命令は、システム１００によりアクセス可能なデータをメモリの一部として又はこれに加えて格納することのできるあらゆるマシン読み出し可能媒体によって提供することができ、該媒体は、限定ではないが、カートリッジ、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、及び同様のものを含む。この点において、システム１００は、当該技術分野で公知の方法でこのようなマシン読み出し可能媒体と通信するように備えられている。
【００１３】
更に、当業者であれば、本発明の方法の実施形態を実施するためのコンテンツは、システム１００に対して、該コンテンツを格納し該コンテンツをシステム１００に伝達することのできるあらゆる外部デバイスから提供することができることは理解されるであろう。例えば、一実施形態では、システム１００はネットワークに接続することができ、コンテンツはネットワーク内のいずれかのデバイス上に格納することができる。
【００１４】
図２は、本発明の方法の実施形態を示すフローチャートである。２００では、回路の表現がコンパイルされる。一実施形態では、コンパイルにより第１レジスタ転送（ＲＴＬ）ネットリストが生成される。一実施形態では、回路の要素のハードウェア記述言語（ＨＤＬ）のソースコード記述を書き込むことにより、回路はテキスト表現で記述される。一実施形態では、回路は、ネットリスト表現により記述される。
【００１５】
次いで、回路の表現はコンパイラに入力される。コンパイラの一例は、ロジック合成コンパイラであり、これは一般的に、汎用のコンピュータシステム上で動作するコンピュータプログラムであるが、一部の実施形態では、該コンピュータシステムが専用の特殊用途コンピュータシステムの場合もある。コンパイル後、ＲＴＬネットリストを生成することができる。ＲＴＬネットリストは通常、回路を通るデータのフローを示すために相互接続されたレジスタ及び他のロジックを表す。
【００１６】
本発明の一実施形態では、ＲＴＬネットリストは、ターゲットアーキテクチャにマッピングされる。ターゲットアーキテクチャは、一般的に、集積回路（ＩＣ）の供給業者によって決まる。ターゲットアーキテクチャの例は、Ａｌｔｅｒａ、Ｌｕｃｅｎｔ  Ｔｅｃｈｎｏｌｏｇｉｅｓ、Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ（ＡＭＤ）、及びＬａｔｔｉｃｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒなどの製造供給元からのフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）及び結合プログラム可能論理デバイスを含む。マッピング動作により、所望の回路のＲＴＬレベルの記述が、ターゲットアーキテクチャの構成単位を用いて実装された等価回路に変換される。技術的に固有のネットリストが生成される。次いで、従来型の配置配線ソフトウェアツールを用いて、ターゲットアーキテクチャにおける回路構成の設計を構築することができる。
【００１７】
デバッグ目的のために、ＩＣ設計者は、ＦＰＧＡなどの複数のＩＣを用いてプロトタイプ基板を構築して自身の設計を検証することができる。例えば、コンパイル、マッピング、及び配置配線作業後に、回路をＦＰＧＡにプログラミングして設計のプロトタイプを作成することができる。次いで、ＦＰＧＡをテストし、設計におけるいずれかの問題領域を判断することができる。
【００１８】
設計において問題領域が見つかった場合、設計者は、回路の当該部分を選択して複製すること、及びトリガロジックを挿入することによって問題を更に分析することができる。２０１では、トリガのために１つ又はそれ以上の信号が選択される。選択されたこれらの信号は、トリガ条件を有効にするためのトリガ信号として後で使用することができる。次いで、トリガロジックが回路に挿入される。トリガロジックのための１つ又はそれ以上のコントローラも回路に挿入することができる。２０２では、複製のために回路の一部が選択される。２０４では、回路の選択部分が複製される。この複製は、回路の選択部分のロジック要素、入力信号、及び出力信号の複製を含むことができる。一実施形態では、回路の複製部分における各レジスタが、ＪＴＡＧチェーンなどのスキャンチェーンで共に接続される。このスキャンチェーンにより、レジスタの状態などのレジスタからの情報をデバッグ中に走査することができる。
【００１９】
本発明の一実施形態では、クロック信号も複製される。クロック信号を制御するために、クロック制御ロジックが挿入される。クロック制御ロジックにより、ある条件が存在するときに複製ロジックブロックへのクロックを一時停止させて複製ロジックの実行を停止することができ、エラーを分析するために複製ロジック全体のシングルステップを可能にする。設計者は、ある条件が存在するときに、回路の複製部分へのクロックを一時停止させるブレークポイントを選択することができる。例えば、設計者は、クロックを一時停止させる出力又は入力の値を選択することができる。これにより、設計者は、ある問題条件が存在するときに、選択されたロジックをより慎重に分析することができるようになる。
【００２０】
２０６では、回路の複製部分への入力を遅延させるために、遅延ロジックが挿入される。遅延の長さは、回路設計者が選択することができる。遅延ロジックにより、回路の複製部分においてはエラーが遅れて再現されることになるので、回路の選択部分で観測されたエラーをエラーが発生したとみなされた後に分析することができる。
【００２１】
２０８では、回路の表現が再コンパイルされる。一実施形態では、コンパイルにより第２ＲＴＬネットリストが生成される。次に、第２ＲＴＬネットリストを用いてマッピング及び配置配線動作を実行して、ＦＰＧＡなどのターゲットアーキテクチャにおいて回路を実装することができる。本発明の一実施形態では、合成動作を実行して、第２ＲＴＬネットリストから特定用途向け集積回路（ＡＳＩＣ）を生成する。回路設計者が設計における問題領域を分析することを可能にする複製ロジックを備えた回路が生成される。設計者は、回路のデバッグを支援するためにデバッガを起動することができる。
【００２２】
２１０では、トリガ信号の１つ又はそれ以上が選択される。これらの信号は、２０１で選択した信号のセットから選択される。２１２では、トリガ条件をセットアップするために、選択された各トリガ信号の１つ又はそれ以上の状態が設定される。２１４では、トリガ条件が発生したときに、１つ又はそれ以上のレジスタの１つ又はそれ以上の状態と、トリガ条件をもたらしたステップのシーケンスが記録される。複製ロジックは、クロックごとに記録された入力の値を用いてクロック単位でステップすることができる。この入力ストリームは、分析されているトリガ条件をもたらしているステップのシーケンスを表す。複製ロジック内のレジスタの状態もまた、２０４で実装されたスキャンチェーンを用いることにより記録することができる。一実施形態では、記録されたこの情報を、ソフトウェアシミュレータと互換性のあるフォーマットに変換することができる。例えば、ソフトウェアシミュレータがＶＨＤＬ又はＶｅｒｉｌｏｇシミュレータである場合、記録された情報は、それぞれＶＨＤＬ又はＶｅｒｉｌｏｇに変換することができる。次いで、記録された情報は、回路の更なる分析のためにソフトウェアシミュレータに入力することができる。
【００２３】
以下の実施例は例証として記載される。２０１で、トリガに使用することのできる信号として信号ａ、ｂ、ｄが選択されたとする。回路表現がコンパイルされてハードウェアデバイスにプログラミングされている。次いで、デバッガが起動される。２１０では、２０１で選択された信号のセットの中からトリガ信号が選択される。選択可能な信号は、信号ａ、ｂ、ｄである。ユーザがトリガ信号として信号ａ及びｄを選択したとする。２１２では、トリガ条件をセットアップするために信号ａ及びｄの状態が設定される。例えば、ユーザは、トリガ条件を信号ａが１であるとき、及び信号ｄが０から１になるときであるように選択することができる。次いで、回路をハードウェアデバイス上で実行することができる。回路の複製部分は、トリガ条件が発生したときに一時停止することになり、この場合は信号ａが１で信号ｄが０から１になるときに発生することになる。次いで、トリガ条件をもたらしたステップのシーケンスが記録される。回路の複製部分におけるレジスタの状態も記録される。次いで、この情報はフォーマットされて、更なる分析のためにソフトウェアシミュレータに入力することができる。
【００２４】
図３は、本発明の実施形態を実施する回路のセクション３００の実施例を示している。ロジックブロック３０２は、オリジナルのＩＣ設計における回路の一部分である。オリジナルのＩＣ設計のデバッグにより、ロジックブロック３０２に問題があることが判明した。従って、問題の更なる分析を可能にするために、オリジナルのロジックブロック３０２が選択されて複製された。オリジナルのロジックブロック３０２は複製されて、複製ロジックブロック３０４が生成される。オリジナルのロジックブロック３０２からの出力３０８が複製されて、複製出力３１０を生成する。入力３０６もまた複製することができる。
【００２５】
複製ロジックブロック３０４への入力３０６を遅延させるために、遅延ロジック３１２が挿入される。遅延ロジックは、インバータなどの一般的な回路ロジック及び要素を含み、入力３０６がオリジナルのロジックブロック３０２に到着するよりも時間的に遅れて複製ロジックブロック３０４に入力３０６を到着させる。このようにして、複製ロジックブロックにおいてはエラーが遅れて現れることになるので、エラーがオリジナルのロジックブロックで発生したとみなされた後にエラーを分析することができる。
【００２６】
回路の複製部分を一時停止させるトリガ条件のセットアップを可能にするために、トリガロジック３３０が回路に挿入される。トリガロジックを制御するために、１つ又はそれ以上のコントローラも挿入することができる。トリガロジック３３０は、２つの出力、すなわちブレークポイント３１８及び遅延一時停止３２８を有する。ブレークポイント３１８により、クロック制御ロジック３１４の進行を停止することができる。遅延一時停止３２８により、遅延ロジック３１２の進行を停止することができる。
【００２７】
複製ロジックブロック３０４へのクロック信号３２２を制御するために、クロック制御ロジック３１４が挿入される。クロック制御ロジック３１４は、ある条件が存在するときに、複製ロジックブロック３０４へのクロック３２２を一時停止させて、複製ロジックの実行を停止させることを可能にする一般的なロジック及び回路要素を含む。クロック制御ロジック３１４はまた、エラーを分析するために、クロック単位で複製ロジック全体のシングルステップを可能にすることができる。ブレークポイント３１８は、トリガ条件が発生したときなどある条件が存在するときに、クロックを一時停止させるように設定することができる。
【００２８】
図４は、本発明の実施形態によるクロック制御ロジック３１４の実施例を示している。通常動作中、回路のクロック制御を行うシステムクロック３１６は、ラッチ４００を通過して、複製ロジックブロック３０４へのクロック３２２として機能する。ブレークポイント３１８は、クロック３２２を一時停止させて、サイクル単位でのシングルステップを可能にするために、クロック制御信号３２０により制御することができるシステムクロック３１６のラッチバージョンにクロック３２２を切り替える。
【００２９】
上述のように、複製ロジック及びトリガロジックを用いたデバッグのための方法及び装置の実施形態について説明してきた。要約において記述された内容も含めて、本発明の例示の実施形態の上述の説明は網羅的なものではなく、又は開示された厳密な形式に本発明を限定するものではない。本発明の特定の実施形態及び実施例について本明細書では説明目的で記載されているが、当業者であれば理解されるように、様々な均等の変更形態が本発明の範囲内で実施可能である。これらの変更形態は、上述の詳細な説明の観点から本発明に対して行うことができる。添付の請求項で用いられる用語は、本明細書及び請求項で開示される特定の実施形態に本発明を限定するものと解釈すべきではない。むしろ、本発明の範囲は、添付の請求項によって完全に決定付けられるべきであり、請求項の解釈の確立された原則に従って解釈されるものとする。
【図面の簡単な説明】
【００３０】
【図１】本発明の実施形態を実装するために使用することのできるコンピュータシステムのブロック図である。
【図２】本発明の方法の実施形態を示すフローチャートである。
【図３】本発明の実施形態を実装する回路セクションの実施例を示す図である。
【図４】本発明の実施形態に従うクロック制御ロジックの実施例を示す図である。
【符号の説明】
【００３１】
２００  回路の表現をコンパイルする
２０１  トリガのために１つ又はそれ以上の信号を選択してトリガロジックを挿入する
２０２  複製のために回路の表現の一部分を選択する
２０４  回路の選択部分を複製する
２０６  回路の複製部分への入力を遅延させるために遅延ロジックを挿入する
２０８  回路の表現を再コンパイルする
２１０  トリガ信号の１つ又はそれ以上を選択する
２１２  選択された各トリガ信号の１つ又はそれ以上の状態を設定してトリガ条件をセットアップする
２１４  トリガ条件が発生したときに、レジスタの状態とトリガ条件をもたらしたステップのシーケンスとを記録する
【図１】
2008544337.tif 000003
【図２】
2008544337.tif 000004
【図３】
2008544337.tif 000005
【図４】
2008544337.tif 000006
【国際調査報告】
2008544337.tif 000007
2008544337.tif 000008
2008544337.tif 000009