エミュレーション・デバッギング 検証プロセスにおいて、エミュレーションは従来のFPGAプロトタイピングよりもずっと早く実用化されました。例えば、シミュレーション・アクセラレーションは主なSoCブロックが実用化されてからすぐに注目されました。そのため、HDLシミュレーションに戻らずにエミュレーション実行中に問題を追跡してバグを発見できる高機能デバッギングが必要となります。こうした要求に応えるために、アルデックのHES-DVM™は次のようなツールと機能をすべて用意しています。 デバッグ・プローブ : HVD技術で100%信号表示を保証 トリガとブレークポイント : デバッグ・プロセスの制御、解析対象デバッグ・データを絞り込み メモリ表示機能 : エミュレートされたデザインのメモリブロックに読み書きアクセスするインタフェース HWデバッガ・ツール : デバッグ機能全部をカバーするGUIフロントエンド HES Debug API : C/C++コードからあらゆるデバッグ関数を制御可能なユニークな機能 デバッグ・プローブ デバッグ・プローブ機能は、エミュレーションを実行しながらデザインの信号値をキャプチャし、波形データベースに保存して、後でデバッグするのに必要とされます。 デバッグ・プローブについては、HES-DVMはスタティック・プローブとダイナミック・プローブの2種類をサポートしています。そのため、速度と可視性の絶妙なバランスを取る設定が可能です。どちらのケースでもHES-DVMは自動RTLソースコード計測とトゥルーRTLビューをサポートし、信号名、データタイプ、階層パスはHDLシミュレータと同じようにすべて保持・表示されます。デバッグ・プローブのサンプリングにはデザイン・クロックの1つが使用されますが、ユーザーは使うクロックを実行中にも変更できます。HES-DVMがサポートする波形フォーマットは、ASDBとFSDBの2種類で、前者はアルデックのRiviera-PROやActive-HDLに、後者はSynopsysのVerdiに読み込ませることができます。VCD波形はASDBから変換することで得られます。デバッギング・データはエミュレータ・ボードから高速PCIeホスト・インタフェースを使って取得可能です。 主要機能: エミュレートされたデザインのトゥルーRTLビュー 自動RTLコード計測 色々なデバッギング・ツールと互換(ASDB, FDSB, VCDの波形) 実行中の再構成 PCIeのホスト接続でデバッギング・データの高速転送 スタティック・プローブ スタティック・プローブ機能はオンチップ・ロジックアナライザとして実現されるので、ロジックアナライザ特有の機能が使えます。アルデック独自の実装であるAdvanced Logic Analyzer (ALA) は、マルチFPGA構成でもシームレスに動作し、さらに各FPGAに搭載のフレキシブル・サンプル・バッファとPCIe経由で高いスループットのホスト・インタフェースをサポートしています。 スタティック・プローブは合成実行前に、デザインの設定フローの中で選択しなければなりません。ALAは最大256 Kbitというかつてない容量のデバッグ・プローブを用意し、それらをどのFPGAパーティションにも分散させることができます。スタティック・プローブはデータグループとトリガグループに分類可能で、エミュレーション実行時間で選択・設定できます。 データグループ トリガグループ グループ数 16 32 グループごとのプローブ数 16 Kbit 256 Bit 合計プローブ数 256 Kbit 8 Kbit さらに、ユーザーはプローブ条件式やサンプルキャプチャの時間範囲指定などでデバッギング・プロセスをチューンアップできます。どんな場面でも、デバッグ・バッファがすべてロードされるときにエミュレーション・クロックを自動停止させることができるので、ALAはサンプルに抜けがないことを保証できます。 主要機能: 高速、アットスピードのデバッグ – FPGAのオンチップ・サンプル・バッファでプロービング マルチFPGA構成のサポート フレキシブル・プローブ – データグループを選択可能、最大容量 実行中にサンプリング・クロックを設定可 サンプル条件式で強力なフィルタリング サンプル抜けのない連続キャプチャ・モード デザインのロジックを各パーティションに自動統合 ダイナミック・プローブ ダイナミック・プローブは100%の可視化を実現するもので、独自のHVD(Hardware-based Visibility Debugging)技術をベースにしています。HVDアルゴリズムは自動解析でベース・プローブを発見します。これはデザインの信号の最小のサブセットで、100%可視化するのにハードウェアからキャプチャする必要があるものです。 ダイナミック・プローブの最大の利点は、ユーザーはどの信号が所定の問題を解析するのに必要か前もって知る必要がない、というところです。代わりに、エミュレーション実行時間中にデバッグ用信号をデザインの中から選ぶことができます。HVDは予約済みの基本信号を拡張することで、どのデザイン・ノードでも確実に可視化することができます。 主要機能: HVD技術で賢いプローブとデータセット取得量最小化 RTL名に自動マッピング ダイナミックな対話式プローブ選択 オンデマンドでプロセス有効化・無効化 対話式プレゼンテーションのダウンロード ウェブセミナー視聴 トリガとブレークポイント 複雑なSoCをデバッグする場合、デバッグ・データをキャプチャするかどうか決める際色々な条件をチェックする必要があります。数百万もの信号がありデバッグ・データはどんなエミュレータでも処理しきれないくらいの量になるので、デザインのデータセットをすべて(信号の100%)捕まえるのは現実的ではありません。トリガとブレークポイントはデバッグ・プロセスをより賢く進め、うまく制御するためのものです。トリガは、ロジックアナライザと同じように、集めたスタティック・プローブのサンプルをリリースするためのもので、ブレークポイントはエミュレーション・クロックを停止してユーザーに制御を返します。 アルデックのHES-DVMでは、スタティック・プローブで複雑な条件のトリガやブレークポイントを、ダイナミック・プローブでソフト・ブレークポイントを作れるようになっています。条件はブール式かシーケンス式で、比較演算子も全種類使えます。トリガとブレークポイントの条件はすべて、実行時間中に有効化・無効化・再設定などが可能です。 主要機能: トリガ・ポート多数(32) マルチFPGA構成のサポート ブール式・シーケンス式 プログラマブル・カウンタ トリガ位置を設定可能 トリガとブレークポイントをエミュレーション速度でチェック メモリ表示機能 メモリ・ブロックはどんなデジタル回路設計にも存在します。SoC内部では、ローカル・データストレージとしてだけでなく、マイクロプロセッサのサブシステムのキー要素としても頻繁に使われています。それゆえ、メモリの中味を確認できるかどうかはハードウェアでも組込みソフトウェアでも検証の際に不可欠なものです。メモリ・ビューワはハードウェア開発者にとってもソフトウェア開発者にとっても、まず何より大切なツールになりつつあります。 HES-DVMはオンチップ・メモリのデータをエミュレーション中に読み書きできるようにするデバッグ用のバックドア・インタフェースを持つモデルを用意しています。また、色々な標準的メモリ・モデルを豊富に揃えたライブラリがあり、サイズに応じてFPGAのRAMブロックや、外付けのオンボードDDR3メモリにマッピングすることができます。エミュレーション中、RTLソースコードから派生する階層名から所定のメモリが選択されます。実際のFPGAのインプリメントに関係なく、物理アドレスとデータ構造はユーザーインタフェースに保存されます。 主要機能: デザインのエミュレーション設定実行中にHES-DVMでメモリ・フローが利用可能 メモリ・モデルにデバッグ用バックドア・インタフェースあり エミュレーション実行時間中に読み書きアクセス可 エミュレーション中のメモリは元のRTLの階層パスから特定 物理アドレスとデータ構造を利用してメモリ内容にアクセス データファイルでシングルセル・アクセスとブロック・アクセス プログラムとSoC起動時のデータメモリ初期化に便利 HWデバッガ HWデバッガはエミュレーション・デバッギング機能すべてにGUIから呼び出しできるようになっています。エミュレーション・ターゲットへの接続にはTCP/IPソケットを使用するので、エミュレーション・ホストのワークステーションからでも、さらにはデスクトップ・コンピュータからリモート接続することもできます。HWデバッガはLinux版とMS Windows版があり、クロスプラットフォーム環境も構築可能です。 主要機能: すべてのデバッグ機能(プローブ、トリガ、ブレークポイント、サンプリング・クロックなど)にGUI付属 エミュレーション・クロックの制御(停止、実行、実行期間・〜まで実行など) ファイルの読み書き機能や豊富な表示オプション(radix, value, string)を持つメモリ・ビューワ デザイン構造と信号のRTLビュー 選択されたダイナミック・プローブと現在の値のリスト ランタイム・オプションの再設定 スクリプト・コマンドでの自動化 HES Debug API HES Debug APIは「C言語」インタフェースを持つライブラリで、CやC++のオブジェクトをリンクできるアプリケーションでなら何でも使えます。ライブラリはHES-DVMのデバッグ機能をすべてサポートするので、HWデバッガのGUIの代わりにもなります。HES Debug APIは、オンチップ・メモリの初期化や、内部レジスタのプローブ、ブレークポイントの動的構成などもできる強力で対話式のテストベンチの開発にも便利です。この独自機能を使うことで、検証エンジニアはエミュレーション中のデザインをブラックボックスとして扱う必要がなくなります。 主要機能: テストベンチやアプリケーション(C/C++, SystemC, SV DPI-C, Tcl, Pythonなど)に簡単に組み込めるC言語API エミュレーションでホワイトボックスでのテスト手法が可能 デバッグ・プローブやエミュレーション中のメモリにダイレクトアクセス 高負荷のアプリケーションに向けた高速インタフェース