AI エンジン シミュレータのイベントは、特定時点でのシステムの情報を提供します。タイム スタンプ、タイプ、およびデータ値に関連付けられているイベントをペイロードと呼びます。ペイロードの解釈は、イベント タイプによって異なります。タイム スタンプを使用すると、イベントの順序付け、因果関係の計算、および一連のイベントでの検証実行が可能になります。
イベント モデリングにおいて、AI エンジン アレイの重要なモジュールは、プロセッサ コア、DMA、ロック モジュール、メモリ、および I/O ストリームです。各モジュールは、イベント ジェネレーター/レスポンダーと見なすことができます。各モジュールは、イベントを受信し、そのイベントに応答します。応答として、新しいイベントが生成されることもあります。イベントは、イベント ジェネレーターに基づいて分類されます。タイム スタンプは、イベント定義に含まれません。各イベントは、そのイベントに関連付けられているペイロードに記述されます。各 AI エンジン、メモリ、DMA、またはロックは、AI エンジン配列内の列と行の二次元インデックス <col, row> を使用してアドレス指定できます。次の表に、AI エンジン イベントの一部を示します。すべてのイベントにはタイム スタンプがあります (ここでは省略)。
イベント名 | 値 | 説明 |
---|---|---|
CORE_RESET | <col, row> | コア <col, row> がリセットから解放され、PC0 からコードを実行開始する。 |
CORE_WAIT | <col, row> | コア <col, row> はロック、ストリーム入力、またはメモリ応答を待機する。 |
CORE_READY | <col, row> | ストールが処理された後、コア <col, row> の準備が整う。 |
ACQ_READ_LOCK_REQ ACQ_WRITE_LOCK_REQ |
<col, row, lockid, dir, pc, info> | コア <col, row> が隣接するいずれか 1 つのメモリ ブロックへのロックを要求する。<pc> は現在のプログラム カウンター。<info> は記号を使用した情報。 |
REL_LOCK_REQ | <col, row, lockid, dir> | コア <col, row> が隣接するロック モジュールのロックを解放する。 |
CORE_READ_REQ | <col, row, address, dir, port, bank, data, pcinfo, addrinfo> | コア <col, row> がメモリ アドレスで読み出しを要求する。アドレスは、メモリの特定場所の 15 ビット アドレス。まとめて、<dir、address> で 17 ビット アドレスを形成する。<dir> フィールドは、方向 [E、W、N、S] を指定する。<port> はロードポート (A、B) を指定し、<bank> は奇数または偶数バンクへのアクセスを指定する。プログラム変数や <pc> 値に関する記号情報は、イベントで入手可能。 |
CORE_WRITE_REQ | <col, row, address, dir, bank, data, size.pcinfo, addrinfo> | コア <col, row> が特定の 15 ビット アドレスにデータを書き込む。<dir> は、アクセスされるメモリの方向を指定する。<pc> 値およびデータ シンボルに関する記号情報は、イベントで入手可能。 |
PC_CHANGE | <col, row, pc, info> | コア <col, row> は <pc> 値の変化を示す。ループを識別するのに有効。 |
DMA_S2MM_ACQ_LOCK | <col, row, ch> | DMA がロックを要求する。<ch> フィールドは DMA チャネル数を表す。サポートされるチャネルは 0 と 1。 |
DMA_S2MM_IDLE | <col, row, bd, ch> | DMA 1 はアイドル ステート。<bd> はバッファー ディスクリプター。 |
DMA_S2MM_START | <col, row, bd, ch, start> | 開始アドレスで DMA 転送を開始する。 |
DMA_S2MM_DONE | <col, row, bd, ch> | 終了アドレスで DMA 転送を終了する。 |
DMA_S2MM_LOCKSTALL | <col, row, bd, ch> | ロックされるまで DMA はストールする。 |
DMA_S2MM_LOCKSTALL_RELEASE | <col, row, bd, ch> | DMA がロックされ、ストール状態から解放される。 |
DMA_MM2S_ACQ_LOCK | <col, row, ch> | DMA <col, row> がロックを要求する。 |
DMA_MM2S_IDLE | <col, row, ch> | DMA <col, row> はアイドル状態。 |
DMA_MM2S_START | <col, row, bd, ch, start> | 開始アドレスの <col, row> で DMA 転送を開始する。<bd> はバッファー ディスクリプター。 |
DMA_MM2S_DONE | <col, row, bd, ch> | 終了アドレスの <col, row> で DMA 転送を終了する。<bd> はバッファー ディスクリプター。 |
DMA_MM2S_LOCKSTALL | <col, row, bd, ch> | ロックされるまで DMA はストールする。 |
DMA_MM2S_LOCKSTALL_RELEASE | <col, row, bd, ch> | DMA がロックされ、ストール状態から解放される。 |
I/O | <dir, id, data > | I/O イベントは、入力ストリーム上の新しいデータを表す。<dir> [E, W, N, S] と <id> [0–15] で物理ストリームを表し、データ フィールドではストリームに現れる 32 ビット データを表す。 |
DATA_HEAD | <col, row, name, netid, pktid, idx> | コア <col, row> が、net <netid> 上で <name> 配線を使用してパケット交換データ ヘッダーを転送する。このパケットには、パケット ID <pktid> がある。<idx> は予約されている。 |
DATA_START | <col, row, name,netid, pktid, idx> | データ ペイロード (パケット交換または回路交換のいずれか) が開始する。すべてのフィールドは、DATA_HEAD フィールドの情報に従う。 |
DATA_RESUME | <col, row, name,netid, pktid, idx> | ストールから解放されたデータ ペイロードが再開した。すべてのフィールドは、DATA_HEAD フィールドの情報に従う。 |
DATA_STALL | <col, row, name, netid, idx> | データ ペイロードがパケット ペイロードの途中でストールした。すべてのフィールドは、DATA_HEAD フィールドの情報に従う。 |
DATA_END | <col, row, name, netid, idx> | データ ペイロード (パケット交換または回路交換のいずれか) が終了する。すべてのフィールドは、DATA_HEAD フィールドの情報に従う。 |
PL_TO_SHIM, SHIM_TO_PL |
<name, col, channelId, data0, data1, tlast> | PL と AI エンジン アレイ インターフェイス (SHIM) 間のデータ移動。name は PL ブロック名。 |
PL2PL、PL2PL_E | <name, port, data0, data1, tlast, tkeep> | PL ポート動作の開始/終了。name と port は PL ブロックの名前とポート。 |
DM_READ_REQ | <col, row, portname> | メモリ モジュールのポートでの読み出し要求イベント。読み出しポートは、コア、DMA、またはメモリ マップド AXI4 インターフェイスの読み出し要求ポート。 |
DM_WRITE_REQ | <col, row, portname> | メモリ モジュールのポートでの書き込み要求イベント。書き込みポートは、コア、DMA、またはメモリ マップド AXI4 インターフェイスの書き込み要求ポート。 |
DM_BANK_CONFLICT | <col, row, bankid, bank> | メモリ モジュールの同じバンクに複数の要求が送信されたため、バンクの競合を示す。 |