バックナンバーはこちら

today&tomorrow

Technology Update

  • T&T HOME
  • Technology Update
  • インプリメンテーションIPベース・デザインおよびSoCを簡単にデバッグする方法:Verdi Transaction Debug Platform

2019 vol.112

インプリメンテーションIPベース・デザインおよびSoCを簡単にデバッグする方法:Verdi Transaction Debug Platform

この問題は、Verdiの検索機能を使用して解決できます。Verdiのツールバーから検索機能を呼び出すと、次のようなダイアログ・ボックスが表示されます。

画像

図2.1:検索ダイアログ・ボックスからクエリ式を実行

上図に示したクエリ式を実行すると、エンドポイント0および1のすべてのINおよびOUTトランザクションを見つけることができます。

このクエリを実行すると、一致したオブジェクト/トランザクションが表示されます(図2.2)。

画像

図2.2:Verdi Protocol Analyzerでオブジェクト/トランザクションを検索した結果

トランザクションを選択すると中央部分の表示が同期され、対応する属性がテーブルの[Details]タブに表示されます。

クエリの説明:
(endpoint_number==0 || endpoint_number==1) && xact_type==”IN_TRANSACTION”
xact_type==”OUT_TRANSACTION”

このクエリは属性値を使用して作成しています。Verdi Protocol Analyzerは多くの演算子をサポートしており、複雑なクエリを作成してトランザクションを検索できます。これらのクエリは汎用性が高く、保存して再利用できます。

問題3:リンク層で最後に送受信したLCRD_AとLGOOD_7を見つける

リンク・コマンドは、リンク・レベルのデータ・インテグリティ、フロー制御、およびリンク・パワー・マネージメントに使用します。リンク・コマンドの長さは8シンボルと決まっており、同じシンボルを繰り返して送信することでエラー耐性を高めています。LGOODは、受信したヘッダ・パケットおよびヘッダ・シーケンス番号にACK(肯定応答)を返すために使用するリンク・コマンドです。LGOODにはシーケンス番号が付きます(Lgood_0~Lgood_7。SSPの場合はLgood_0~Lgood_15)。LCRD_Xはリンク・フロー制御に使用するリンク・コマンドで、4つのインデックスが付きます(LCRD_A、LCRD_B、LCRD_C、LCRD_D)。

この問題も検索機能を使って解決できます。この例では、リンク層トランザクションおよびそれぞれの対応する属性に対してクエリを定義します。VIPはこれらの属性をFSDBでサポートしており、これらを使用してクエリを作成できます。クエリ式の意味は以下のとおりです。

クエリの説明:
(word_info=~”LCRD_A” || word_info=~”LGOOD_7”) && channel==”Rx”

ここでは、対応するリンク層オブジェクトの数値情報を格納する「word_info」属性と結合演算子を使用しています。また、受信したオブジェクトのみを検索対象とするために「channel」属性を使用してオブジェクトにフィルタを適用しています。「channel == ”Tx”」とすると、送信されたオブジェクトが検索対象となります。上記のクエリを実行すると、フィルタ条件を満たすすべてのオブジェクトが検索結果ウィンドウに表示されます(図3.1)。これらのオブジェクトは開始時刻でソートされるため、検索結果を下にスクロールすると、最後のLCRD_AとLGOOD_7をすぐに見つけることができます(図3.1でハイライト表示したオブジェクト)。

画像

図3.1:Verdi Protocol AnalyzerでLCRD_AとLGOOD_7を検索した結果

統合型Verdi Transaction Debug Platform

統合型Verdi Transaction Debug Platformでは、Verdi Protocol Analyzerと波形ビューア、ソースコード・ビューア、ログ・ファイル・ビューアが同期して動作します。図4.1内の矢印は、1つの統合型プラットフォームでこれらのデバッグ・ツールが連携するようすを示しています。

画像

図4.1:統合型Verdi Transaction Debug Platform

統合型Verdi Transaction Debug Platformでは、複数ツールのすべての機能が1つのプラットフォーム上で同期して動作するため、複雑なシナリオにも対応できます。この統合プラットフォームでは、信号レベル、ソースコード・レベル、または抽象度の高いトランザクション・レベルの可視化によってバグの根本原因を容易に見つけることができます。

まとめ

USBプロトコルは階層型アーキテクチャで非常に複雑なため、プロトコル階層全体にまたがる問題を単なる信号やログ・メッセージだけを使用してデバッグするのは困難を極めます。しかもパケットはインオーダーで送受信されないため、プロトコルに関する問題を信号レベルだけで特定するのは容易ではありません。シノプシスの検証用IP(VIP)はいずれもVerdi Protocol Analyzerにネイティブに統合され、すべてのパケット/リンク層オブジェクトおよびデバイスが送信してホストが受信したすべての転送/トランザクションに関するそれぞれの意味を可視化できます。

参考文献
[1] Reversible Debugging Software, University of Cambridge,
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.370.9611

カテゴリートップ