JP6653756B2 - 回路設計をデバッグするための方法および回路 - Google Patents

回路設計をデバッグするための方法および回路 Download PDF

Info

Publication number
JP6653756B2
JP6653756B2 JP2018521372A JP2018521372A JP6653756B2 JP 6653756 B2 JP6653756 B2 JP 6653756B2 JP 2018521372 A JP2018521372 A JP 2018521372A JP 2018521372 A JP2018521372 A JP 2018521372A JP 6653756 B2 JP6653756 B2 JP 6653756B2
Authority
JP
Japan
Prior art keywords
protocol
circuit design
circuit
data
signals
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018521372A
Other languages
English (en)
Other versions
JP2018537762A (ja
Inventor
シェレ,グラハム・エフ
ヤン,イ−フア・イー
ジェイムズ−ロックスビー,フィリップ・ビィ
シューマッハー,ポール・アール
リサグフト,パトリック
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xilinx Inc
Original Assignee
Xilinx Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xilinx Inc filed Critical Xilinx Inc
Publication of JP2018537762A publication Critical patent/JP2018537762A/ja
Application granted granted Critical
Publication of JP6653756B2 publication Critical patent/JP6653756B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/31703Comparison aspects, e.g. signature analysis, comparators
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3177Testing of logic operation, e.g. by logic analysers

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Debugging And Monitoring (AREA)

Description

この開示は一般に、ロジック回路を試験することに関し、より特定的には、回路設計をデバッグすることに関する。
背景
プログラマブル集積回路(integrated circuit:IC)は、指定されたロジック機能を行なうようにユーザによってプログラムされ得る。フィールドプログラマブルゲートアレイ(field programmable gate array:FPGA)として知られている一種のプログラマブルICは典型的には、プログラマブル相互接続部とプログラマブルロジックとを有するプログラマブルタイルのアレイに配置されたプログラマブルリソースを含む。プログラマブル相互接続部は典型的には、プログラマブル相互接続点(programmable interconnect point:PIP)によって相互接続されたさまざまな長さの多数の相互接続線を含む。プログラマブルロジックは、たとえば関数発生器、レジスタ、演算ロジックなどを含み得るプログラマブル素子を使用して、回路設計のロジックを実現する。プログラマブル相互接続部およびプログラマブルロジックは典型的には、プログラマブル素子がどのように構成されるかを定義する内部構成メモリセルに構成データのストリームをロードすることによって、プログラムされる。構成データは、外部デバイスによって、メモリから(たとえば外部PROMから)読出され、またはFPGAに書込まれ得る。個々のメモリセルの集団状態が次に、FPGAの機能を決定する。
回路設計を開発する過程で、当該回路設計は一般に、物理的な実装およびデプロイメントに先立って、動作および性能を査定するために試験される。回路設計の試験は、当該回路設計の特定用途向け集積回路(application specific integrated circuit:ASIC)実現化例における回路モジュールの動作を観察すること、ソフトウェアベースのシミュレーションモデルを使用して回路モジュールをシミュレートすること、または、プログラマブルIC上で回路モジュールをエミュレートすることを伴う場合がある。回路設計をエミュレートする際、プログラマブルIC上のプログラマブルリソースは、当該回路設計を実現するように構成される。いくつかの実現化例では、回路設計の動作は、ASICによって実現された回路モジュールのシミュレーション、エミュレーション、および/または動作の組合せを使用してモデル化されてもよい。一例として、回路設計の第1の回路モジュールが、当該回路設計の第2の回路モジュールのエミュレーションと同時にシミュレートされてもよい。試験中、試験データが、回路設計のシミュレートされた/エミュレートされた/ASICによって実現された回路モジュールに提供され、データ信号が、回路設計のさまざまなノードから取り込まれる。データ信号は、回路設計のシミュレーションモデルを実行するように構成されたソフトウェアデバッギングツールによって、シミュレートされた回路設計へ入力され、当該回路設計から取り込まれてもよい。データは、たとえばプログラマブルICまたはASICダイに含まれるか接続された統合ロジックアナライザ回路を含むさまざまな回路を使用して、プログラマブルIC上でエミュレートされた、またはASICとして実現された回路設計へ入力され、当該回路設計から取り込まれてもよい。
概要
さまざまな例示的な実現化例が、回路設計をデバッグすることに向けられる。例示的な一実現化例によれば、回路設計をデバッグするための方法が開示される。動作中に回路設計によって生成された1組の信号について、波形データが取り込まれる。1組の信号について、それぞれのデータ構造が生成され、信号についての波形データがデータ構造に格納される。1組の信号によって実現される通信チャネルが識別される。データ構造に格納された波形データは、1つ以上の通信チャネルについての1組の信号におけるトランザクションレベルイベントの位置を突き止めるために分析される。1組のトランザクションレベルイベントの位置を示すデータが出力される。
オプションで、方法はさらに、ユーザクエリによって指定された1組の基準について1組のトランザクションレベルイベントをサーチするように構成された拡張可能アプリケーションプログラムインターフェイス(application program interface:API)を提供するステップを含んでいてもよい。
オプションで、方法はさらに、ユーザインターフェイスを介して入力されたユーザクエリに応答して、ユーザクエリによって指定された1組の基準に整合する1組の信号の一部を、データ構造に基づいて、拡張可能APIを使用して識別するステップを含んでいてもよい。
オプションで、1組のトランザクションレベルイベントを識別するステップは、回路設計に含まれるメタデータ、回路設計における信号の名前、またはそれらの組合せに基づいて、識別された通信チャネルによって実現されるプロトコルを識別するステップを含んでいてもよい。識別されたプロトコルについて、アプリケーションプログラムインターフェイス(API)が提供されてもよく、APIは、1組の信号についてのデータ構造から、プロトコルについてのトランザクションレベルイベントを識別するように構成される。識別されたプロトコルのうちの1つを実現する通信チャネルについて、当該通信チャネルについてのトランザクションレベルイベントを判断するためにプロトコルについて提供されたAPIが、実行されてもよい。
オプションで、プロトコルについてのAPIを提供するステップは、プロトコルについてのAPIをAPIライブラリから検索するステップを含んでいてもよい。
オプションで、通信チャネルのうちの少なくとも1つは、1組の信号における複数の信号に関連付けられてもよく、通信チャネルについてのトランザクションレベルイベントは、データトランザクション、回路設計に含まれるプロセッサによって実行されるプログラムの命令、またはそれらの組合せを含んでいてもよい。
オプションで、方法はさらに、識別されたトランザクションのうちの少なくとも1つのトランザクションについて、識別されたプロトコルのうちの異なるプロトコルを実現する通信チャネルのうちの2つの通信チャネル間のインターフェイスを越えて、当該1つのトランザクションを追跡するステップを含んでいてもよい。少なくとも1つのトランザクションを追跡するステップは、回路設計におけるメタデータに基づいて行なわれてもよい。
オプションで、少なくとも1つの通信チャネルについて、当該通信チャネルについて判断されたトランザクションレベルイベントは、第1のプロトコルについての第1の1組のトランザクションを含んでいてもよい。方法はさらに、第1の1組のトランザクションから、第2のプロトコルについての第2の1組のトランザクションを識別するステップを含んでいてもよく、第2のプロトコルは、第1のプロトコルと比較して、より高いレベルのプロトコルである。
オプションで、第2のプロトコルは、ビデオフレーム、ネットワーキングパケット、またはCPU命令の通信のために構成されてもよい。
オプションで、方法はさらに、1組のトランザクションレベルイベントに基づいて、回路設計における複数の回路モジュールについての1組の性能メトリックを判断するステップを含んでいてもよい。回路モジュールについての1組の性能メトリックは、ユーザインターフェイスを介して表示されてもよい。
オプションで、1組の性能メトリックは、待ち時間、タイミングスラック、消費電力、信号ジッタ、スループット、データ転送サイズ、またはそれらの組合せを含んでいてもよい。
オプションで、方法はさらに、少なくとも1つの性能メトリックについて、ユーザによって指定された期間にわたる当該性能メトリックの最小値、最大値、および平均値を求めるステップを含んでいてもよい。
オプションで、方法はさらに、グラフィカルユーザインターフェイス(graphical user interface:GUI)ウィンドウにおいて、1組の信号についての波形の図形表現と、当該波形におけるトランザクションレベルイベントを識別する可視マーカーと、1つ以上の検出されたプロトコル違反の位置およびタイプを識別する可視マーカーとを表示するステップを含んでいてもよい。
オプションで、方法はさらに、回路設計の動作をシミュレートするステップを含んでいてもよい。
オプションで、方法はさらに、回路設計を実現するようにプログラマブル集積回路(IC)のプログラマブルリソースを構成するステップと、プログラマブルIC上で統合ロジックアナライザを使用し、波形データを取り込み、波形データをコンピュータシステムへ通信するステップとを含んでいてもよい。
例示的な一実現化例によれば、回路設計をデバッグするための装置が開示される。装置は、1つ以上のプロセッサ回路と、プロセッサ回路に結合されたメモリ回路とを含む、コンピューティング構成を含む。1組の命令がメモリ回路に格納される。命令は、プロセッサ回路によって実行されると、動作中に回路設計によって生成された1組の信号についての波形データを取り込み、波形データをメモリに格納するように、プロセッサ回路を構成する。プロセッサ回路はさらに、波形データから、1組の信号についてのそれぞれのデータ構造を生成するように構成される。プロセッサ回路はまた、1組の信号によって実現される通信チャネルを識別するように構成される。通信チャネルの各々について、プロセッサ回路は、データ構造に基づいて、通信チャネルについての1組のトランザクションレベルイベントを識別する。プロセッサ回路は、1組のトランザクションレベルイベントを示すデータをメモリ回路に格納するように構成される。
オプションで、装置はさらに、コンピューティング構成に通信可能に結合されたプログラマブル集積回路(IC)を含んでいてもよい。1組の命令はさらに、1つ以上のプロセッサ回路に、回路設計を実現するようにプログラマブルICのプログラマブルリソースをプログラムさせてもよい。
オプションで、1つ以上のプロセッサ回路によって通信チャネルについての1組のトランザクションレベルイベントを識別することは、回路設計に含まれるメタデータ、回路設計における信号の名前、またはそれらの組合せに基づいて、識別された通信チャネルによって実現されるプロトコルを識別することを含んでいてもよい。識別されたプロトコルについて、アプリケーションプログラムインターフェイス(API)が提供されてもよく、APIは、1組の信号についてのデータ構造から、プロトコルについてのトランザクションレベルイベントを識別するように構成される。識別されたプロトコルのうちの1つを実現する通信チャネルについて、当該通信チャネルについてのトランザクションレベルイベントを判断するためにプロトコルについて提供されたAPIが、実行されてもよい。
オプションで、1組の命令はさらに、プロセッサに、識別されたトランザクションレベルイベントに基づいて、回路設計についての1組の性能メトリックを判断させてもよく、1組の性能メトリックは、待ち時間、タイミングスラック、消費電力、信号ジッタ、スループット、データ転送サイズ、またはそれらの組合せを含む。
オプションで、1組の命令はさらに、プロセッサにユーザインターフェイスを提供させてもよい。ユーザインターフェイスを介して入力されたユーザクエリに応答して、プロセッサは、ユーザクエリによって指定された1組の基準に整合する1組の信号の一部を、データ構造に基づいて識別し、拡張可能APIを使用して、識別された部分の図形表現を表示してもよい。
他の特徴は、詳細な説明および請求項を検討すれば、認識されるであろう。
図面の簡単な説明
開示された方法および回路のさまざまな局面および特徴は、以下の詳細な説明を検討し、図面を参照することによって明らかとなるであろう。
回路設計をデバッグするための例示的なプロセスを示す図である。 トランザクションレベルイベントを識別するための例示的なプロセスを示す図である。 識別されたトランザクションレベルイベントに基づいた回路設計の分析のための例示的なプロセスを示す図である。 複数のプロトコル層についてトランザクションを識別するための例示的なプロセスを示す図である。 1つ以上の実施形態に従った、デバッギングツールを提供するように構成された例示的なコンピューティングデバイスを示す図である。 1つ以上の実現化例に従った、統合ロジックアナライザ回路を有する例示的なプログラマブルICを示す図である。
詳細な説明
以下の説明では、多くの特定の詳細が、ここに提示される特定の例を説明するために述べられる。しかしながら、1つ以上の他の例および/またはこれらの例の変形が、以下に与えられる特定の詳細がすべてなくても実践されるということが、当業者には明らかであるはずである。他の例では、ここでの例の説明を不明瞭にしないように、周知の特徴は詳細には説明されていない。
デバッギングは、回路設計開発の欠くことのできない部分である。プログラマブルIC上に実現される回路設計をデバッグすることは典型的には、回路設計のシミュレーションおよび/またはエミュレーションを介してプログラマブルICの動作を試験することを伴う。回路設計をデバッグする際の1つの難点は、通信チャネル/インターフェイスの動作をデバッグして、当該動作が、たとえば通信チャネルまたはインターフェイスによって使用されるプロトコルのすべての要件に準拠することを保証することを伴う。いくつかの通信プロトコルは、通信チャネルを実現するために、多数のデータおよび制御信号を使用する。たとえば、高度拡張可能インターフェイス(Advanced Extensible Interface:AXI)チャネルは、さまざまなクロック信号およびリセット信号、書込アドレス信号、書込データ信号、書込応答信号、読出アドレス信号、読出データ信号、および/または低電力インターフェイス信号によって形成される。現在、開発者らは、サンプリングされたデータ信号の波形を目視検査し、通信チャネルと、各通信チャネル上で行なわれたトランザクションレベルイベント(たとえば、データトランザクションまたはプロセッサ命令)とを手動で識別して、高レベルの動作を評価し、および/または、プロトコル違反が生じたかどうかを判断する。同様に、開発者らは、波形を目視検査して回路設計の性能を査定しなければならない。トランザクションの数が増加するにつれて、波形の目視検査はますます難しくなる。
トランザクションレベルでの回路設計のデバッギングのための方法および装置が開示される。回路設計の動作中に回路設計によって生成された1組の信号について、波形データが取り込まれる。1組の信号は、たとえば、ソフトウェアベースのシミュレーションモデルにおいて回路設計をシミュレートすること、および/またはプログラマブルIC上で回路設計をエミュレートすることによって生成されてもよい。データ信号についての波形が、データ信号の1つ以上のアナログ特性(たとえば、電圧、位相、または振幅)を連続する時点でサンプリングすることによって取り込まれてもよい。1組の信号のうちの各信号について、それぞれのデータ構造が生成され、当該信号についての波形データがデータ構造に格納される。1組の信号によって実現される通信チャネルが識別される。データ構造に格納された波形データは、1つ以上の通信チャネルについてのデータ信号におけるトランザクションレベルイベントの位置を突き止めるために分析される。トランザクションレベルイベントは、たとえば、通信チャネル上の個々のデータトランザクション、プロセッサ回路によって実行される個々の命令、または、プログラマブルロジックにおいて実現されるハードウェア加速機能を含んでいてもよい。1組のトランザクションレベルイベントの位置を示すデータが出力される。
通信チャネルについてのトランザクションレベルイベントは、さまざまな分析プロセスを使用して位置を突き止められてもよい。いくつかの実現化例では、まず、通信チャネルによって実現されるプロトコルが識別される。プロトコルは、AXI、周辺コンポーネント相互接続エクスプレス(Peripheral Component Interconnect Express:PCIe)、ユニバーサルシリアルバス(Universal Serial Bus:USB)、IEEE1394、および/またはシリアルアタッチドSCSIを含むものの、それらに限定されない。プロトコルは、たとえば、回路設計に含まれるメタデータ、回路設計における信号の名前、ユーザ入力、またはそれらの組合せに基づいて識別されてもよい。識別されたプロトコルの各々について、それぞれのアプリケーションプログラムインターフェイス(API)が提供される。各APIは、データ構造からプロトコルについてのトランザクションレベルイベントを識別するように構成される。通信プロトコルについてのAPIは、たとえば、APIをAPIライブラリから検索することによって提供されてもよい。プロトコルを実現する通信チャネルの各々について、APIは、通信チャネルについてのデータ信号におけるトランザクションレベルイベントの位置を突き止めるために実行される。
いくつかの実現化例では、デバッギングツールが、1組の取り込まれたデータ信号からトランザクションレベルイベントを識別するように構成される。デバッギングツールは、たとえば、グラフィカルユーザインターフェイス(GUI)ウィンドウを介したユーザによる目視検査および/または分析のために、波形の図形表現を、波形におけるトランザクションレベルイベントを識別する可視マーカーとともに生成し表示するように構成されてもよい。トランザクションレベルイベントの図示が、ユーザによる波形の目視検査を支援してもよい。たとえば、可視マーカーは、通信チャネルを介して通信されるデータトランザクションの始点および終点を識別するために、通信チャネルについての波形に追加されてもよい。
別の例として、デバッギングツールは、異なるプロトコルを実現する複数のリンクした通信チャネルを越えてデータトランザクションを追跡してもよい。参照しやすくするために、異なるプロトコルを実現する通信チャネルを越えて通信されるデータトランザクションは、異種トランザクションと呼ばれてもよい。いくつかの実現化例では、デバッギングツールは、異種トランザクションを、表示された波形の図形表現で図形化する。たとえば、デバッギングツールは、ユーザによって選択された異種トランザクションに対応する表示された波形のすべての部分を強調表示してもよい。異種トランザクションは、さまざまなプロセスを使用して追跡されてもよい。いくつかの実現化例では、異種トランザクションは、たとえば異なるデータチャネル間のインターフェイス接続を示す、回路設計におけるメタデータに基づいて追跡されてもよい。
いくつかの実現化例では、デバッギングツールは、回路設計の動作を査定するためにトランザクションレベルイベントを分析するように構成されてもよい。たとえば、デバッギングツールは、1つ以上の通信プロトコルへの準拠について、取り込まれたデータ信号のうちの1つ以上を評価するように構成されてもよい。いくつかの実現化例では、デバッギングツールはまた、1つ以上の回路モジュールまたは取り込まれたデータ信号についてのプロトコル違反の図形表示を、GUIウィンドウを介して生成し表示してもよい。たとえば、表示される取り込まれたデータ信号の図形表現は、検出されたプロトコル違反の位置およびタイプを識別する可視マーカーで補足されてもよい。
これに加えて、またはこれに代えて、デバッギングツールは、回路設計のさまざまな性能メトリックを査定するために、トランザクションレベルイベントおよび/またはデータ構造を分析するように構成されてもよい。性能メトリックはたとえば、待ち時間、タイミングスラック、消費電力、信号ジッタ、クロックジッタ、スループット、バイトカウント、ビートカウント、アイドル周期、データ転送のサイズ、またはそれらの組合せを含んでいてもよい。
いくつかの実現化例では、デバッギングツールは、回路モジュールのうちの1つ以上についてのさまざまな性能メトリックを査定するために、取り込まれたデータ信号を分析するように構成される。性能メトリックはたとえば、スループット、待ち時間、タイミングスラック、消費電力、信号ジッタ、クロックジッタ、スループット、バイトカウント、ビートカウント、アイドル周期、データ転送のサイズ、1秒あたりの命令、1周期あたりの命令、キャッシュミス、またはそれらの組合せを含んでいてもよい。いくつかの実現化例では、デバッギングツールはさらに、指定された期間における、性能メトリックのうちの1つ以上についての最小値、最大値、平均値、および変化率を求めてもよい。デバッギングツールは、通信チャネルについての性能メトリックを、当該チャネルについての波形の図形表現と並べて、GUIウィンドウに表示するように構成されてもよい。
いくつかの実現化例では、デバッギングツールは、トランザクションレベルイベントをサーチするための拡張可能APIを提供する。APIは、それが、1組の予め規定されたサーチに加えて、トランザクションレベルイベントのカスタマイズされたクエリを行なうために、ユーザによって適合され得る、という点で拡張可能である。いくつかの実現化例では、デバッギングツールは、トランザクションレベルイベントのカスタマイズされたクエリのための拡張可能APIを構成するために、GUIウィンドウをユーザに提供する。トランザクションレベルイベントのカスタマイズされたクエリは、試験中の回路設計に特に関心があるシナリオについて、ユーザがトランザクションレベルイベントを容易にサーチすることを可能にしてもよい。例示的な一例として、三重モジュール式冗長(triple modular redundancy:TMR)回路を実現する回路設計のために、冗長回路が異なる結果を生み出すトランザクションを識別することを設計者が望む場合がある。デバッギングツールは、GUIウィンドウを介して入力されたクエリに整合するトランザクションレベルイベントに対応する波形の部分を強調表示するように構成されてもよい。
いくつかの実現化例では、デバッギングツールは、識別されたトランザクションレベルイベントから、1つ以上の上位層プロトコルについてのトランザクションを識別するように構成されてもよい。たとえば、下位層プロトコルについての多くの個々のデータトランザクションは、上位層プロトコルによって行なわれるより大きいデータトランザクションに対応してもよい。たとえば、トランザクションレベルイベントは、たとえばイーサネット(登録商標)パケット、ビデオストリームのフレーム、および/またはCPUコールスタックに対応するトランザクションレベルイベントのサブセットへとグループ化されてもよい。
試験中の回路設計の動作中に生成されたさまざまな信号についての波形データが、さまざまなハードウェアまたはソフトウェアベースの監視インターフェイスを使用して取り込まれてもよい。監視インターフェイスは、たとえば、デバッギングツールによって実現されるソフトウェアプロセス、または、回路設計をエミュレートするために使用されるプログラマブルICに含まれる監視回路(たとえば統合ロジックアナライザ)を含んでいてもよい。いくつかの実現化例では、監視回路は、プログラマブルICに実装された、または結合されたハードワイヤード回路であってもよい。いくつかの他の実現化例では、監視回路は、回路設計においてインスタンス化され、エミュレート中の1つ以上の回路モジュールとともにプログラマブルICのプログラマブルリソースに実装されてもよい。
いくつかのプログラマブルICは、1組のプログラマブルリソースに結合されたプロセッサを含んでいてもよい。プログラマブルリソースは、回路設計のハードウェア部分を実現するように構成されてもよく、プロセッサは、回路設計のソフトウェア部分を実現するように構成されてもよい。いくつかの実現化例では、プロセッサは、回路設計の1組の信号についての波形データを取り込むようにプログラムされてもよい。
ここで図面を参照して、図1は、回路設計をデバッグするための例示的なプロセスを示す。ブロック102で、回路設計の動作がシミュレートおよび/またはエミュレートされる。シミュレーション/エミュレーション中、ブロック104で、回路設計のさまざまなノードで生成された1組のデータ信号についての波形が取り込まれ、波形ファイル106に格納される。いくつかの実現化例では、ブロック104でメタデータ108も検索されてもよい。メタデータ108は、たとえば、回路設計の回路モジュールまたはデータ信号のさまざまな特性を指定してもよい。メタデータは、たとえば、信号および/または回路モジュールの命名規則、回路モジュール間のネット接続、ならびに/もしくは、回路設計における回路モジュール用の構成設定に基づいて取得されてもよい。ブロック110で、波形ファイルが構文解析され、1組のデータ信号の各々についてそれぞれの波形データを格納するために、データ構造が生成される。ブロック114で、通信チャネルが識別される。ブロック114で、トランザクションレベルイベント116も、データ構造112、メタデータ108、またはそれらの組合せに基づいて、各通信チャネルについて識別される。通信チャネルおよびトランザクションレベルイベントの識別は、図2を参照してより詳細に説明される。ブロック118で、トランザクションレベルでの回路設計の性能およびまたは動作を査定するために、トランザクションレベルイベントが分析される。前述のように、分析は、たとえば、プロトコル違反を識別すること、異種トランザクションを追跡すること、1つ以上の性能メトリックを評価すること、または、トランザクションレベルイベント116のユーザ指定クエリを行なうことを含んでいてもよい。
図2は、トランザクションレベルイベントを識別するための例示的なプロセスを示す。ブロック202で、回路設計によって生成された1組のデータ信号において、通信チャネルが識別される。ブロック204で、通信チャネルに関連付けられたプロトコルが識別される。通信チャネルおよび/またはプロトコルは、たとえば、回路設計に含まれるメタデータに基づいて識別されてもよい。たとえば、データ信号の命名および回路設計の階層構造が、通信チャネルを識別し、その通信チャネルによってどの通信プロトコルが実現されるかを示してもよい。これに代えて、いくつかの実現化例では、通信チャネルおよび/またはプロトコルは、回路設計からのメタデータなしで識別されてもよい。たとえば、チャネル命名および回路設計の階層構造が、たとえばパターン整合および/または原因分析を使用して、1組の取り込まれた波形から推測されてもよい。
ブロック206で、識別されたプロトコルの各々について、それぞれのAPIが提供される。APIは、データ構造から、特定のプロトコルについてのトランザクションレベルイベントを識別するように構成される。例示的な一例として、AXI通信チャネルのデータトランザクションは、AXI信号VALID、READY、RLAST、およびWLASTの値に基づいて識別されてもよい。たとえば、AXIデータトランザクションの開始位置は、VALIDまたはREADY信号のアサーションによって識別され得る。AXI読出トランザクションの終了位置は、RLAST信号がアサートされ消去されることによって識別され得る。AXI書込トランザクションの終了位置は、WLAST信号がアサートされ、次にBRESPがアサートされることによって識別され得る。通信プロトコルについてのAPIは、たとえば、複数の通信プロトコルについてのそれぞれのAPIを有するAPIライブラリから提供されてもよい。ブロック208で、データ構造は、識別された通信チャネルについてのトランザクションレベルイベントを判断するために、提供されたAPIを使用して処理される。
図3は、識別されたトランザクションレベルイベントに基づいた回路設計の分析のための例示的なプロセスを示す。前述のように、トランザクションレベルイベントおよび/または信号データ構造は、回路設計の性能および/または動作を査定するために分析されてもよい。この例では、分析は多くの静的分析プロセスを含み、それらは、ブロック304、306、および308で、ユーザによる対話なしで自動的に行なわれ得る。
ブロック304で、トランザクションレベルイベント302、および/または信号データ構造303における波形データが、1つ以上の通信プロトコルの違反を検出するためにサーチされる。プロトコル違反が検出され得る態様は、各通信プロトコルによって指定されるデータトランザクションの要件/制限に依存する。一例として、AXIプロトコルは、固定バーストモードトランザクションの長さが16ビート未満であることを要求する。AXI違反の別の例として、ARVALID信号がアサートされ、かつARREADY信号がローである場合、ARADDR、ARBURST、ARCACHE、ARID、ARLEN、ARLOCK、ARPROT、ARSIZE、ARQOS、およびARREGION信号は、安定した状態を保たなければならない。いくつかの実現化例では、特定の通信プロトコルの違反を検出するための基準が、たとえば、複数の通信プロトコルのためのそれぞれの組の試験基準を有するライブラリから検索されてもよい。
ブロック306で、異種トランザクションが、異なる通信チャネルを越えて追跡される。前述のように、異種トランザクションは、さまざまなプロセスを使用して追跡されてもよい。いくつかの実現化例では、異種トランザクションは、たとえば、異なる通信チャネル間のインターフェイス接続を示す、回路設計におけるメタデータに基づいて追跡されてもよい。いくつかの他の実現化例では、2つの通信チャネルの命名規則が、当該2つの通信チャネルがリンクされていることを示してもよい。
ブロック308で、回路設計の性能メトリックが評価される。前述のように、性能メトリックは、たとえば、スループット、待ち時間、タイミングスラック、消費電力、信号ジッタ、クロックジッタ、スループット、バイトカウント、ビートカウント、アイドル周期、データ転送のサイズ、1秒あたりの命令、1周期あたりの命令、キャッシュミス、またはそれらのさまざまな組合せを含んでいてもよい。個々のトランザクション、個々の通信チャネル、および/または回路設計における個々の回路モジュールについて、性能が評価されてもよい。これに加えて、またはこれに代えて、性能メトリックは、トランザクション、通信チャネル、および/または回路モジュールの組合せについて、性能を評価してもよい。たとえば、ある性能メトリックは、異種トランザクションに使用された複数の通信チャネルについて、当該トランザクションのスループットを分析し、どの通信チャネルが当該トランザクションの全体的スループットを制限しているかを判断してもよい。
この例では、ブロック310、312、および314で動的分析も行なわれる。動的分析は、ユーザ入力に応答してリアルタイムで動的に構成され、それにより、ユーザによってカスタマイズされた分析が行なわれることを可能にする。ブロック310で、GUIウィンドウが提供される。GUIウィンドウは、ユーザによる目視検査および/またはデバッギングのために、シミュレーションデータおよび/または分析結果を表示するように構成されてもよい。たとえば、前述のように、デバッギングツールのGUIウィンドウが、取り込まれた波形、性能メトリック、プロトコル違反、および/または識別された異種トランザクションの図形表現を表示するように構成されてもよい。加えて、GUIウィンドウは、ユーザによるカスタマイズされたクエリおよび/またはデバッギングのための入力およびディスプレイインターフェイスを含む。GUIを介したユーザ入力に応答して、プロセスは、たとえばブロック312および314で、当該ユーザ入力によって要求された動作を行なう。この例では、ブロック312で、トランザクションレベルイベントおよび/または信号データ構造は、ユーザのために指定されたカスタマイズされたサーチクエリについてサーチされる。当該サーチクエリに整合する波形の部分が、ブロック310で提供されたGUIウィンドウに表示されてもよい。前述のように、トランザクションレベルイベントおよび/または信号データ構造の、ユーザによってカスタマイズされたクエリは、試験中の回路設計の状況においてのみ関連するシナリオに対応する波形の部分をユーザが容易に識別できるようにしてもよい。この例では、ユーザ入力に応答して、ブロック314でシンボリックデバッギングも実行される。シンボリックデバッガはたとえば、回路設計に含まれるプロセッサによる個々のHLL命令の実行に応答して始動されたデータトランザクションを識別してもよい。
いくつかの実現化例では、たとえば、開放型システム間相互接続(open system interconnection:OSI)モデルにおいて抽象化層を実現するために使用される通信プロトコルを含む多層の通信プロトコルについて、トランザクションが識別されてもよい。図4は、複数の層のプロトコルについてトランザクションを識別するための例示的なプロセスを示す。ブロック402で、たとえば図2を参照して説明されたようなデータ構造に基づいて、第1の1組のトランザクションが、下位層プロトコルについて識別される。ブロック404で、第1の1組のトランザクションに基づいて、第2の1組のトランザクションが、上位層プロトコルについて識別される。たとえば、上位層プロトコルのトランザクションは、下位層プロトコルについての第1の1組のトランザクションのうちの複数のトランザクションを使用して行なわれてもよい。上位層プロトコルについてのトランザクションは、図2を参照して説明されたものと同様の態様で、プロトコルについてのAPIを生成することによって識別されてもよい。ブロック406で、第2の1組のトランザクションが分析される。第2の1組のトランザクションは、図3のトランザクションレベルイベントの分析を参照して説明されたように分析されてもよい。このプロセスは、たとえば第2の1組のトランザクションに基づいて、さらなる上位層プロトコルについてのトランザクションを識別するために、繰り返されてもよい。
図5は、1つ以上の実施形態に従った、デバッギングツールを提供するように構成された例示的なコンピュータシステムを示す。この例では、コンピュータシステム500は、すべてホストバス515に結合された、1つ以上のプロセッサ505と、メモリ/ストレージ構成510と、入力デバイス530と、表示デバイス535と、ネットワークアダプタ545との構成を含む。構成500は、回路基板上の別々のコンポーネントで実現されてもよく、または、集積回路内に内部で実現されてもよい。集積回路内に内部で実現される場合、プロセッサコンピューティングデバイスは、別名マイクロコントローラとして知られている。
コンピュータシステム500のアーキテクチャは、当業者によって認識されるような実現要件に依存する。プロセッサ505は、1つ以上の汎用プロセッサ、または、1つ以上の汎用プロセッサと好適なコプロセッサとの組合せ、または、1つ以上の専用プロセッサ(たとえば、RISC、CISC、パイプライン型など)であってもよい。メモリ/ストレージ構成510は典型的には、マルチレベルのキャッシュメモリと、メインメモリとを含む。メモリ/ストレージ構成510は、磁気ディスク(図示せず)、フラッシュ、EPROM、または他の不揮発性データストレージによって提供されるような、ローカルおよび/またはリモートの永続ストレージを含んでいてもよい。
メモリ/ストレージデバイス510はプログラムコード565を含み、それは、プロセッサ505によって実行されると、上述のようにデバッギングアプリケーション555を実現する。プログラムコード565は、磁気または光ディスクまたはテープ、電子ストレージデバイスといったさまざまなコンピュータ読取可能記憶媒体または配信チャネルを介して、もしくは、ネットワークアダプタ545に結合されたネットワークを通したアプリケーションサービスとして、格納され提供されてもよい。動作中、デバッギングアプリケーション555は、デバッギングデータ560(たとえば、波形データ、データ構造、および/またはトランザクションレベルイベント)をメモリ/ストレージデバイス510に格納する。デバッギングのための上述されたようなGUIウィンドウが、表示デバイス535を介して提供されてもよい。
当業者であれば、1つ以上のプロセッサと、プログラムコードを有して構成されたメモリ構成とを含む、さまざまな代替的なコンピューティング構成が、ここに開示されるプロセスおよびデータ構造をホストするのに好適であろう、ということを理解するであろう。加えて、プロセスは、磁気または光ディスクまたはテープ、電子ストレージデバイスといったさまざまなコンピュータ読取可能記憶媒体または配信チャネルを介して、もしくは、ネットワークを通したアプリケーションサービスとして、提供されてもよい。
図6は、1つ以上の実現化例に従った、統合ロジックアナライザ回路を有する例示的なプログラマブルICを示す。プログラマブルICはまた、システムオンチップ(System On Chip:SOC)と呼ばれてもよく、それは、プロセッササブシステム610と、プログラマブルロジックサブシステム630とを含む。この例では、プログラマブルICはまた、電力および/または安全管理のためのさまざまな回路を有するサブシステム640と、外部回路とのデータの通信のための入力/出力(I/O)サブシステム650とを含む。サブシステム610、630、640、および650は、複数の半導体ダイを使用して形成され、上述の例で説明されたようにICパッケージにおいて相互接続されてもよい。
プロセッシングサブシステム610は、ユーザプログラムの実行を介して、回路設計のソフトウェア部分を実現するようにプログラムされてもよい。これに代えて、またはこれに加えて、プログラムは、プログラマブルリソース632において実現された部分回路設計の1つ以上のポートへデータ信号を生成するように構成された1つ以上のトラフィックジェネレータを実現してもよい。プログラムは、構成データストリームの一部として指定されてもよく、もしくは、オンチップまたはオフチップデータストレージデバイスから検索されてもよい。プロセッシングサブシステム610は、1つ以上のソフトウエアプログラムを実行するためのさまざまな回路612、614、616、および618を含んでいてもよい。回路612、614、616、および618は、たとえば、1つ以上のプロセッサコア、浮動小数点ユニット(floating point unit:FPU)、割込処理ユニット、オンチップメモリ、メモリキャッシュ、および/またはキャッシュコヒーレント相互接続部を含んでいてもよい。
プログラマブルIC602のプログラマブルロジックサブシステム630は、前述のように部分回路設計およびトラフィック発生回路を実現するようにプログラムされてもよい。たとえば、プログラマブルロジックサブシステムは多くのプログラマブルリソース632を含んでいてもよく、それらは、構成データストリームにおいて指定された1組の回路を実現するようにプログラムされてもよい。プログラマブルリソース632は、プログラマブル相互接続回路と、プログラマブルロジック回路と、構成メモリセルとを含む。プログラマブルロジックは、たとえば関数発生器、レジスタ、演算ロジックなどを含み得るプログラマブル素子を使用して、回路設計のロジックを実現する。プログラマブル相互接続回路は、プログラマブル相互接続点(PIP)によって相互接続されたさまざまな長さの多数の相互接続線を含んでいてもよい。
プログラマブルリソース632は、プログラマブル相互接続回路およびプログラマブルロジック回路がどのように構成されるかを定義する構成メモリセルに構成データストリームをロードすることによって、プログラムされてもよい。個々のメモリセルの集団状態が次に、プログラマブルリソース632の機能を決定する。構成データは、外部デバイスによって、メモリから(たとえば、外部PROMから)読出され、またはプログラマブルIC602に書込まれ得る。いくつかの実現化例では、構成データは、プログラマブルロジックサブシステム630に含まれる構成コントローラ634によって、構成メモリセルにロードされてもよい。いくつかの他の実現化例では、構成データは、プロセッササブシステム610によって実行される起動プロセスによって、構成メモリセルにロードされてもよい。
プログラマブルIC602は、プロセッシングサブシステム610を、プログラマブルロジックサブシステム630内に実現された回路と相互接続するためのさまざまな回路を含んでいてもよい。この例では、プログラマブルIC602は、プロセッシングサブシステム610のさまざまなデータポートとプログラマブルロジックサブシステム630との間でデータ信号をルーティングできるコアスイッチ626を含む。コアスイッチ626はまた、プロセッシングサブシステム610またはプログラマブルロジックサブシステム630のいずれかと、内部データバスなどのプログラマブルICのさまざまな他の回路との間で、データ信号をルーティングしてもよい。これに代えて、またはこれに加えて、プロセッシングサブシステム610は、コアスイッチ626を迂回してプログラマブルロジックサブシステムに直接接続するためのインターフェイスを含んでいてもよい。そのようなインターフェイスは、たとえば、ARMによって公開されたようなAMBA AXIプロトコル仕様(AXI)を使用して実現されてもよい。
いくつかの実現化例では、プロセッシングサブシステム610およびプログラマブルロジックサブシステム630はまた、メモリコントローラ621を介して、オンチップメモリ622またはオフチップメモリ(図示せず)のメモリ位置へ読出または書込を行なってもよい。メモリコントローラ621は、16ビット、32ビット、ECC付き16ビットなどの、デュアルデータレート(Dual Data Rate:DDR)2、DDR3、低電力(Low Power:LP)DDR2タイプのメモリを含むもののこれらに限定されない、1つ以上の異なるタイプのメモリ回路と通信するように実現され得る。メモリコントローラ621が通信できる異なるメモリタイプのリストは例示のためにのみ提供されており、限定として、または網羅的であるよう意図されてはいない。図6に示すように、プログラマブルIC602は、メモリ管理ユニット620と、特定のメモリ位置にアクセスするために、サブシステム610および630によって使用される仮想メモリアドレスを、メモリコントローラ621によって使用される物理メモリアドレスへ変換するための変換索引バッファ624とを含んでいてもよい。
この例では、プログラマブルICは、外部回路とのデータの通信のためのI/Oサブシステム650を含む。I/Oサブシステム650は、たとえば、フラッシュメモリタイプのI/Oデバイス、より高い性能のI/Oデバイス、より低い性能のインターフェイス、デバッギングI/Oデバイス、および/または、RAM I/Oデバイスを含む、さまざまなタイプのI/Oデバイスまたはインターフェイスを含んでいてもよい。
I/Oサブシステム650は、660Aおよび660Bとして図示された1つ以上のフラッシュメモリインターフェイス660を含んでいてもよい。たとえば、フラッシュメモリインターフェイス660のうちの1つ以上は、4ビット通信用に構成されたクアッドシリアル周辺インターフェイス(Quad-Serial Peripheral Interface:QSPI)として実現され得る。フラッシュメモリインターフェイス660のうちの1つ以上は、パラレル8ビットNOR/SRAMタイプのインターフェイスとして実現され得る。フラッシュメモリインターフェイス660のうちの1つ以上は、8ビットおよび/または16ビット通信用に構成されたNANDインターフェイスとして実現され得る。説明された特定のインターフェイスは、限定のためではなく例示のために提供される、ということが理解されるべきである。異なるビット幅を有する他のインターフェイスを使用することができる。
I/Oサブシステム650は、フラッシュメモリインターフェイス660よりも高いレベルの性能を提供する1つ以上のインターフェイス662を含み得る。インターフェイス662A〜662Cの各々は、DMAコントローラ664A〜664Cにそれぞれ結合され得る。たとえば、インターフェイス662のうちの1つ以上は、ユニバーサルシリアルバス(USB)タイプのインターフェイスとして実現され得る。インターフェイス662のうちの1つ以上は、ギガビットイーサネットタイプのインターフェイスとして実現され得る。インターフェイス662のうちの1つ以上は、セキュアデジタル(Secure Digital:SD)タイプのインターフェイスとして実現され得る。インターフェイス662のうちの1つ以上は、PCIeインターフェイスとして実現され得る。
I/Oサブシステム650はまた、インターフェイス662よりも低いレベルの性能を提供する、インターフェイス666A〜666Dなどの1つ以上のインターフェイス666を含んでいてもよい。たとえば、インターフェイス666のうちの1つ以上は、汎用I/O(General Purpose I/O:GPIO)タイプのインターフェイスとして実現され得る。インターフェイス666のうちの1つ以上は、汎用非同期送受信機(Universal Asynchronous Receiver/Transmitter:UART)タイプのインターフェイスとして実現され得る。インターフェイス666のうちの1つ以上は、シリアル周辺インターフェイス(SPI)バスタイプのインターフェイスの形で実現され得る。インターフェイス666のうちの1つ以上は、コントローラエリアネットワーク(Controller-Area-Network:CAN)タイプのインターフェイス、および/またはICタイプのインターフェイスの形で実現され得る。インターフェイス666のうちの1つ以上はまた、トリプルタイマカウンタ(Triple Timer Counter:TTC)および/またはウォッチドッグタイマ(Watchdog Timer:WDT)タイプのインターフェイスの形で実現され得る。
I/Oサブシステム650は、プロセッサJTAG(PJTAG)インターフェイス668Aおよび追跡インターフェイス668Bなどの1つ以上のデバッグインターフェイス668を含み得る。PJTAGインターフェイス668Aは、プログラマブルIC602のための外部デバッグインターフェイスを提供できる。追跡インターフェイス668Bは、プロセッシングサブシステム610またはプログラマブルロジックサブシステム630からデバッグ情報、たとえば追跡情報を受信するためのポートを提供できる。
図示されるように、インターフェイス660、662、666、および668の各々は、マルチプレクサ670に結合され得る。マルチプレクサ670は、プログラマブルIC602の外部ピン、たとえば、内部にプログラマブルIC602が配置されているパッケージのボールへ直接ルーティングされるか結合され得る、複数の出力を提供する。たとえば、プログラマブルIC602のI/Oピンは、インターフェイス660、662、666、および668間で共有され得る。ユーザは、インターフェイス660〜668のどれを使用するか、ひいてはマルチプレクサ670を介してプログラマブルIC602のI/Oピンに結合するかを選択するために、構成データストリームを介してマルチプレクサ670を構成することができる。I/Oサブシステム650はまた、プログラマブルロジックサブシステムのプログラマブルロジック回路にインターフェイス662〜668を接続するためのファブリックマルチプレクサI/O(fabric multiplexer I/O:FMIO)インターフェイス(図示せず)を含んでいてもよい。これに加えて、またはこれに代えて、プログラマブルロジックサブシステム630は、プログラマブルロジック内で1つ以上のI/O回路を実現するように構成され得る。この例では、プログラマブルIC602は、電力および/または安全管理用のさまざまな回路を有するサブシステム640を含む。たとえば、サブシステム640は、プログラマブルIC602のさまざまなサブシステムに電力を供給するために使用される1つ以上の電圧ドメインを監視し維持するように構成された電力管理ユニット646を含んでいてもよい。いくつかの実現化例では、電力管理ユニット646は、消費電力を減少させるために、使用中のサブシステムへの電力を停止することなく、アイドル中の個々のサブシステムの電力を停止してもよい。
サブシステム640はまた、正しい動作を保証するようにサブシステムのステータスを監視するための安全回路を含んでいてもよい。たとえば、サブシステム640は、(たとえばステータスレジスタ644において示されるような)さまざまなサブシステムのステータスを監視するように構成された1つ以上のリアルタイムプロセッサ642を含んでいてもよい。リアルタイムプロセッサ642は、エラーの検出に応答して多くのタスクを行なうように構成されてもよい。たとえば、いくつかのエラーについて、リアルタイムプロセッサ642は、エラーの検出に応答して警告を生成してもよい。別の例として、リアルタイムプロセッサ642は、サブシステムを正しい動作へ復元しようとしてサブシステムをリセットしてもよい。サブシステム640は、さまざまなサブシステムを相互接続するために使用され得るスイッチネットワーク648を含む。たとえば、スイッチネットワーク648は、さまざまなサブシステム610、630、および640をI/Oサブシステム650のさまざまなインターフェイスへ接続するように構成されてもよい。いくつかのアプリケーションでは、スイッチネットワーク648はまた、監視されることになっているサブシステムからリアルタイムプロセッサ642を分離するために使用されてもよい。そのような分離は、リアルタイムプロセッサ642が他のサブシステムで生じるエラーの影響を受けないことを保証するように、あるアプリケーション規格(たとえば、IEC−61508 SIL3規格またはISO−26262規格)によって要求されてもよい。
統合ロジックアナライザ回路680は、プログラマブルIC602におけるサブシステム610、630、640、または650のうちの1つ以上に含まれる、もしくはそれらの間に接続されたデータバスのデータを調査するように構成される。いくつかの実現化例では、データバス上で送信された信号のサンプルが、スイッチ648を通る信号経路682を通して統合ロジックアナライザ回路680に提供されてもよい。これに加えて、またはこれに代えて、統合ロジックアナライザ回路680は、データバス上で送信された信号のサンプルを専用信号線(図示せず)を通して受信してもよい。統合ロジックアナライザ回路680は、JTAGインターフェイス668といったI/Oサブシステム650における1つ以上の通信回路を介して、試験データ入力またはデバッグ制御信号を受信し、サンプリングされたデータ信号を出力してもよい。いくつかの実現化例では、統合ロジックアナライザ回路680は、スイッチ648を通る信号経路を介して、I/Oサブシステム650における通信回路に結合される。これに代えて、またはこれに加えて、統合ロジックアナライザ回路680は、専用信号線(たとえば点線の信号線684)を介して、I/Oサブシステム650における通信回路に直接結合されてもよい。
開示された方法および回路は、さまざまなシステムおよびアプリケーションに適用可能であると考えられる。他の局面および特徴は、明細書を検討すれば、当業者には明らかになるであろう。局面および特徴は場合によっては個々の図面で説明され得るが、組合せが明確に図示されていなくても、または組合せとして明確に説明されていなくても、1つの図面からの特徴を別の図面の特徴と組合せることができる、ということが理解されるであろう。開示されたプロセスおよび回路のうちのさまざまなものが、ソフトウェアを実行するように構成された1つ以上のプロセッサとして、特定用途向け集積回路(ASIC)として、またはプログラマブルロジックデバイス上のロジックとして実現されてもよい。明細書および図面は単なる例示として考えられ、この発明の真の範囲は請求項によって示される、ということが意図される。

Claims (14)

  1. 路設計をシミュレートすること、または前記回路設計をエミュレートすることによって生成された1組の信号についての波形データを取り込むステップと、
    前記1組の信号について、コンピュータシステムのメモリ回路にデータ構造を生成し、前記信号についての波形データを前記データ構造に格納するステップと、
    前記コンピュータシステムのプロセッサ回路によって、前記回路設計に含まれるメタデータに基づいて、前記1組の信号に関連付けられた通信チャネルを識別するステップと、
    1つ以上の通信チャネルについての1組のトランザクションレベルイベントの位置を突き止めるために、前記データ構造に格納された波形データを分析するステップと、
    前記1組のトランザクションレベルイベントの位置を示すデータを出力するステップと
    前記1組のトランザクションレベルイベントに基づいて、前記回路設計における複数の回路モジュールについての1組の性能メトリックを判断するステップと、
    前記回路モジュールについての前記1組の性能メトリックを、ユーザインターフェイスを介して表示するステップとを含む、方法。
  2. ユーザクエリによって指定された1組の基準について前記1組のトランザクションレベルイベントをサーチするように構成された拡張可能アプリケーションプログラムインターフェイス(API)を提供するステップをさらに含む、請求項1に記載の方法。
  3. ユーザインターフェイスを介して入力されたユーザクエリに応答して、前記ユーザクエリによって指定された1組の基準に整合する前記1組の信号の一部を、前記データ構造に基づいて、前記拡張可能APIを使用して識別するステップをさらに含む、請求項2に記載の方法。
  4. 前記分析するステップは、
    前記回路設計に含まれるメタデータ、前記回路設計における信号の名前、またはそれらの組合せに基づいて、識別された前記通信チャネルによって実現されるプロトコルを識別するステップと、
    識別された前記プロトコルについてのアプリケーションプログラムインターフェイス(API)を提供するステップとを含み、前記APIは、前記1組の信号についての前記データ構造から、前記プロトコルについてのトランザクションレベルイベントを識別するように構成され、さらに、
    識別された前記プロトコルのうちの1つを実現する通信チャネルについて、前記通信チャネルについてのトランザクションレベルイベントを判断するために前記プロトコルについて提供された前記APIを実行するステップを含む、請求項1に記載の方法。
  5. 前記プロトコルについての前記APIを提供するステップは、前記プロトコルについての前記APIをAPIライブラリから検索するステップを含む、請求項4に記載の方法。
  6. 前記通信チャネルのうちの少なくとも1つは、前記1組の信号における複数の信号に関連付けられ、
    前記通信チャネルについての前記トランザクションレベルイベントは、データトランザクション、前記回路設計に含まれるプロセッサによって実行されるプログラムの命令、またはそれらの組合せを含む、請求項4に記載の方法。
  7. 識別されたトランザクションのうちの少なくとも1つのトランザクションについて、識別された前記プロトコルのうちの異なるプロトコルを実現する前記通信チャネルのうちの2つの通信チャネル間のインターフェイスを越えて、前記1つのトランザクションを追跡するステップをさらに含み、
    前記少なくとも1つのトランザクションを追跡するステップは、前記回路設計におけるメタデータに基づいて行なわれる、請求項4に記載の方法。
  8. 少なくとも1つの通信チャネルについて、前記通信チャネルについて判断された前記トランザクションレベルイベントは、第1のプロトコルについての第1の1組のトランザクションを含み、
    前記方法は、前記第1の1組のトランザクションから、第2のプロトコルについての第2の1組のトランザクションを識別するステップをさらに含み、前記第2のプロトコルは、前記第1のプロトコルと比較して、より高いレベルのプロトコルである、請求項1に記載の方法。
  9. 前記第2のプロトコルは、ビデオフレーム、ネットワーキングパケット、またはCPU命令の通信のために構成される、請求項8に記載の方法。
  10. 前記1組の性能メトリックは、待ち時間、タイミングスラック、消費電力、信号ジッタ、スループット、データ転送サイズ、またはそれらの組合せを含む、請求項に記載の方法。
  11. 少なくとも1つの性能メトリックについて、ユーザによって指定された期間にわたる前記性能メトリックの最小値、最大値、および平均値を求めるステップをさらに含む、請求項に記載の方法。
  12. グラフィカルユーザインターフェイス(GUI)ウィンドウにおいて、
    前記1組の信号についての波形の図形表現と、
    前記波形における前記トランザクションレベルイベントを識別する可視マーカーと、
    1つ以上の検出されたプロトコル違反の位置およびタイプを識別する可視マーカーとを表示するステップをさらに含む、請求項1に記載の方法。
  13. 前記回路設計の動作をシミュレートするステップをさらに含む、請求項1に記載の方法。
  14. 前記回路設計を実現するようにプログラマブル集積回路(IC)のプログラマブルリソースを構成するステップと、
    前記プログラマブルIC上で統合ロジックアナライザを使用し、前記波形データを取り込み、前記波形データを前記コンピュータシステムへ通信するステップとをさらに含む、請求項1に記載の方法。
JP2018521372A 2015-10-27 2016-09-09 回路設計をデバッグするための方法および回路 Active JP6653756B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/924,090 2015-10-27
US14/924,090 US9678150B2 (en) 2015-10-27 2015-10-27 Methods and circuits for debugging circuit designs
PCT/US2016/051103 WO2017074568A1 (en) 2015-10-27 2016-09-09 Methods and circuits for debugging circuit designs

Publications (2)

Publication Number Publication Date
JP2018537762A JP2018537762A (ja) 2018-12-20
JP6653756B2 true JP6653756B2 (ja) 2020-02-26

Family

ID=57047289

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018521372A Active JP6653756B2 (ja) 2015-10-27 2016-09-09 回路設計をデバッグするための方法および回路

Country Status (6)

Country Link
US (1) US9678150B2 (ja)
EP (1) EP3369015B1 (ja)
JP (1) JP6653756B2 (ja)
KR (1) KR102596638B1 (ja)
CN (1) CN108351907B (ja)
WO (1) WO2017074568A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10474515B2 (en) * 2017-05-10 2019-11-12 Intel IP Corporation Debugging translation block and debugging architecture
US10740186B2 (en) * 2017-05-15 2020-08-11 The Boeing Company High data integrity processing system
US10816600B1 (en) * 2017-11-28 2020-10-27 Xilinx, Inc. Protocol analysis and visualization during simulation
US11556162B2 (en) * 2018-03-16 2023-01-17 Advanced Micro Devices, Inc. Per-instruction energy debugging using instruction sampling hardware
US11042564B1 (en) * 2018-09-27 2021-06-22 Xilinx, Inc. Transaction associations in waveform displays
US11475191B2 (en) * 2019-05-15 2022-10-18 International Business Machines Corporation Generating and adding additional control information to logic under test to facilitate debugging and comprehension of a simulation
US11302412B2 (en) * 2019-06-03 2022-04-12 Advantest Corporation Systems and methods for simulated device testing using a memory-based communication protocol
CN112257360B (zh) * 2020-10-21 2024-04-16 海光信息技术股份有限公司 用于数据波形的调试方法、装置、调试系统以及存储介质
CN112379658A (zh) * 2020-11-10 2021-02-19 华东师范大学 一种片上can控制器调试系统

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7283944B2 (en) * 2003-12-15 2007-10-16 Springsoft, Inc. Circuit simulation bus transaction analysis
US7129745B2 (en) * 2004-05-19 2006-10-31 Altera Corporation Apparatus and methods for adjusting performance of integrated circuits
CN101029918B (zh) * 2007-01-23 2011-03-16 北京芯技佳易微电子科技有限公司 一种基于可编程器件的可控集成电路测试系统及方法
US20110289373A1 (en) * 2007-01-31 2011-11-24 Klein Russell A Electornic Design Emulation Display Tool
CN101320065B (zh) * 2008-07-22 2010-06-02 中国科学院长春光学精密机械与物理研究所 航天光学遥感器成像电路的仿真测试方法
US8032329B2 (en) * 2008-09-04 2011-10-04 Sonics, Inc. Method and system to monitor, debug, and analyze performance of an electronic design
JP5605959B2 (ja) * 2009-11-10 2014-10-15 フリースケール セミコンダクター インコーポレイテッド プロトコル事象を記録するためのアドバンスド通信制御ユニットおよび方法
WO2012087330A2 (en) * 2010-12-23 2012-06-28 Intel Corporation Test, validation, and debug architecture
US9135213B2 (en) * 2011-01-13 2015-09-15 Xilinx, Inc. Extending a processor system within an integrated circuit and offloading processes to process-specific circuits
US10776233B2 (en) * 2011-10-28 2020-09-15 Teradyne, Inc. Programmable test instrument
US8533655B1 (en) * 2011-11-15 2013-09-10 Xilinx, Inc. Method and apparatus for capturing data samples with test circuitry
US9582625B2 (en) * 2012-06-22 2017-02-28 Mentor Graphics Corporation Test bench transaction synchronization in a debugging environment
US8848850B2 (en) * 2012-09-25 2014-09-30 Intel Corporation Pulse width modulation receiver circuitry
US20150091907A1 (en) * 2013-09-27 2015-04-02 Byte Paradigm Sprl Method and system for storing waveform data

Also Published As

Publication number Publication date
EP3369015B1 (en) 2021-03-03
KR20180072700A (ko) 2018-06-29
US20170115348A1 (en) 2017-04-27
US9678150B2 (en) 2017-06-13
CN108351907B (zh) 2022-04-01
WO2017074568A1 (en) 2017-05-04
JP2018537762A (ja) 2018-12-20
KR102596638B1 (ko) 2023-10-31
EP3369015A1 (en) 2018-09-05
CN108351907A (zh) 2018-07-31

Similar Documents

Publication Publication Date Title
JP6653756B2 (ja) 回路設計をデバッグするための方法および回路
US10503848B2 (en) Target capture and replay in emulation
US9037911B2 (en) Debug state machines and methods of their operation
US9977758B1 (en) Device profiling for tuning OpenCL applications on programmable integrated circuits
US6961872B2 (en) Microcomputer and debugging system
US10078113B1 (en) Methods and circuits for debugging data bus communications
US8683265B2 (en) Debug state machine cross triggering
US10678976B2 (en) Generic protocol analyzer for circuit design verification
US10664563B2 (en) Concurrent testbench and software driven verification
JP2004178591A (ja) ダイナミック・トレース用プログレッシブ拡張圧縮マスク
CN115686655A (zh) 用于gpu ip验证的联合仿真系统
US20040103336A1 (en) Apparatus for alignment of data collected from multiple pipe stages with heterogeneous retention policies in an unprotected pipeline
US10664637B2 (en) Testbench restoration based on capture and replay
US9581643B1 (en) Methods and circuits for testing partial circuit designs
CN117076337B (zh) 一种数据传输方法、装置、电子设备及可读存储介质
Lei et al. Validating direct memory access interfaces with conformance checking
US20060288254A1 (en) Multi-Port Trace Data Handling
US9864830B1 (en) Method and apparatus for placement and routing of circuit designs
US10970442B1 (en) Method of debugging hardware and firmware of data storage
CN115629928B (zh) 一种面向类脑处理器的软硬协同验证方法及系统
US9946624B1 (en) Systems and methods to capture data signals from a dynamic circuit
US11295052B1 (en) Time correlation in hybrid emulation system
Du et al. FPGA-controlled PCBA power-on self-test using processor's debug features
Zheng et al. Protocol-guided analysis of post-silicon traces under limited observability
CN114169287A (zh) 生成验证环境的连接示意图的方法、电子设备及存储介质

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under article 34 pct

Free format text: JAPANESE INTERMEDIATE CODE: A529

Effective date: 20180425

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190830

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20190830

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20191224

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191224

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200107

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200128

R150 Certificate of patent or registration of utility model

Ref document number: 6653756

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250