根据用户反映,现有的FAST通用输出引擎模块(GOE.v)在某种情况下无法有效处理Metadata0中定义的discard位(第61位)。目前该bug已经修复,新版本GOE代码(GOE-v1-1.0.v)已经上传网站(www.fastswitch.org),请正在使用FAST流水线的用户及时更新GOE-v1-1.1.v代码。
附:GOE模块代码升级说明
FAST 平台的流水线通过UM实现,FAST 的UM主要由5部分组成,包含用户定义解析(UDP),用户定义关键字提取(UKE),通用查表引擎(GME),用户定义动作(UDA)和通用输出引擎(GOE)5个流水线模块,如图1所示。

图1 GOE模块
此次对FAST流水线UM中的GOE模块进行了升级,GOE模块之前主要是完成数据的转发功能,即输入的数据直接转发输出。目前GOE模块实现了根据Metadata的丢弃位丢弃报文分组的功能,即当丢弃位为1时,丢弃此报文分组;丢弃位为0时,转发报文分组。Metadata定义如下表所示。
表1列车数据类型与TSN数据类型映射表
信号名称 |
宽度 |
功能 |
使用情况 |
TTL |
[127:124] |
初始为每经过一模块减1 |
未使用 |
IngressPort |
[123:120] |
分组的原始输入端口号 |
在CDP、Nmac_ctrl、UM、Cpu_ctrl模块中都有处理 |
Length |
[119:108] |
分组长度,包含MetaData,最长为4K,最短为60字节(去掉CRC域的最小以太网帧长度) |
在CDP、Cpu_ctrl、Nmac_ctrl模块中的很多子模块中都有做处理;例如:增加删减两拍Metadata时。 |
SrcModuleID |
[107:100] |
报文通信时,源功能模块的ID |
在mux_4stream子模块中将来自端口的报文,该值都置为0。 |
DstModuleID |
[99:92] |
1来自端口,5来自CPU
|
|
Seq_Num |
[91:80] |
报文接收序号,由FPGA OS在分组接收时标记,每个输入接口维护一个独立的序列号 |
未使用 |
EgressPort |
63 |
分组的最终输出端口号 |
在CDP、Nmac_ctrl、Cpu_ctrl、UM模块中都有处理;例如在dmux_4stream子模块中,根据该值决定其转发端口
|
Pkt_Src |
63 |
表示进入硬件流水线的分组来源,0:来自网络接口,1:来自cpu |
未使用 |
Pkt_Dst |
62 |
表示分组离开硬件流水线的目的,0:送网络接口发出;1:送cpu处理 |
在trans_ctrl模块中,根据其值确定报文的转发方向 |
Discard |
61 |
1:指示GOE模块丢弃该分组;0:GOE模块正常转发该分组 |
在GOE模块中,根据其值进行报文弃丢或转发处理 |
Priority |
[60:58] |
分组优先级,默认最低优先级(000) |
未使用 |
FlowID |
[57:44] |
分组属于的流ID,最大16K |
未使用 |
TimeStamp |
[43:0] |
报文接收时间戳,由FPGA OS在分组接收时标记 |
在CDP模块中有提取处理 |