包处理 - 2022.1 简体中文

Versal ACAP AI 引擎编程环境 用户指南 (UG1076)

Document ID
UG1076
Release Date
2022-05-25
Version
2022.1 简体中文

包的前 32 位码字必须始终为包报头,用于按下表所示对多个位字段进行编码。

表 1. 包的位字段
字段
4-0 Packet ID
11-5 7'b0000000
14-12 Packet Type
15 1'b0
20-16 Source Row
27-21 Source Column
30-28 3'b000
31 Odd parity of bits[30:0]

“Packet ID”(包 ID)是由编译器基于布线要求分配的。“Packet Type”(包类型)可以是要插入的任意 3 位模式,用于识别包的类型。“Source Row”(源码行)和“Source Column”(源码列)表示 AI 引擎 tile(拼块)坐标,包即源自该坐标。按约定,源自可编程逻辑 (PL) 的包的源码行和列为 -1,-1。

您负责在每个包开始时构造和发送相应的包报头。在接收侧,需先接收到包报头并解码后,才能读取数据。

以下运算有助于在 AI 引擎内核中对包报头进行汇编或反汇编。

void writeHeader(output_pktstream *str, unsigned int pcktType, unsigned int ID);
void writeHeader(output_pktstream *str, unsigned int pcktType, unsigned int ID, bool tlast);


uint32 getPacketid(input_pktstream *w, int index);
uint32 getPacketid(output_pktstream *w, int index);

writeHeader API 允许以给定包 ID 和包类型来对包报头进行汇编。使用执行此 API 的 AI 引擎拼块的坐标来自动插入源码行和列。

getPacketid API 允许在输入或输出包串流数据结构上查询编译器分配的包 ID。索引实参表示 graph 规范中的拆分或合并分支边沿。

重要: 在 PL 内核中不支持 writeHeader()getPacketid() API。
重要: generateHeader API 已弃用,并替换为 writeHeader API。

如需了解更多详情,请参阅 显式包切换