uhd/host/tests/common/chdr_resource/hardcoded_packets.py
Wade Fife 19d7d1a6a5 rfnoc: Increase Ctrl SeqNum to 8 bits
Increase the control SeqNum field width from 6 bits to 8 bits. See the
updates to rfnoc_fpga.md for details.
2026-07-28 14:24:19 +02:00

195 lines
6.2 KiB
Python

#
# Copyright 2020 Ettus Research, a National Instruments Brand
#
# SPDX-License-Identifier: GPL-3.0-or-later
#
from uhd import chdr
from chdr_resource import rfnoc_packets_data
from chdr_resource import rfnoc_packets_ctrl_mgmt
CHDR_W = chdr.ChdrWidth.W64
def make_control_packet0():
header = chdr.ChdrHeader()
header.pkt_type = chdr.PacketType.CTRL
header.length = 20
header.dst_epid = 2
payload = chdr.CtrlPayload()
payload.src_epid = 1
payload.set_data([])
payload.req_size = 1
payload.op_code = chdr.CtrlOpCode.READ
return chdr.ChdrPacket(CHDR_W, header, payload)
def make_control_packet1():
header = chdr.ChdrHeader()
header.pkt_type = chdr.PacketType.CTRL
header.length = 24
header.dst_epid = 1
payload = chdr.CtrlPayload()
payload.src_epid = 2
payload.is_ack = True
payload.set_data([0x12C60100])
payload.req_size = 1
payload.op_code = chdr.CtrlOpCode.READ
return chdr.ChdrPacket(CHDR_W, header, payload)
def make_mgmt_packet0():
header = chdr.ChdrHeader()
header.pkt_type = chdr.PacketType.MGMT
header.length = 48
header.seq_num = 2
payload = chdr.MgmtPayload()
payload.set_header(1, (1 << 8) | (0 << 0), chdr.ChdrWidth.W64)
hop1 = chdr.MgmtHop()
hop1.add_op(chdr.MgmtOp(chdr.MgmtOpCode.NOP))
payload.add_hop(hop1)
hop2 = chdr.MgmtHop()
hop2.add_op(chdr.MgmtOp(chdr.MgmtOpCode.INFO_REQ, chdr.MgmtOpNodeInfo(0, 0, 0, 0)))
hop2.add_op(chdr.MgmtOp(chdr.MgmtOpCode.RETURN))
payload.add_hop(hop2)
hop3 = chdr.MgmtHop()
hop3.add_op(chdr.MgmtOp(chdr.MgmtOpCode.NOP))
payload.add_hop(hop3)
return chdr.ChdrPacket(CHDR_W, header, payload)
def make_mgmt_packet1():
header = chdr.ChdrHeader()
header.pkt_type = chdr.PacketType.MGMT
header.length = 48
header.seq_num = 3
payload = chdr.MgmtPayload()
payload.set_header(1, (1 << 8) | (0 << 0), chdr.ChdrWidth.W64)
hop1 = chdr.MgmtHop()
hop1.add_op(chdr.MgmtOp(chdr.MgmtOpCode.NOP))
payload.add_hop(hop1)
hop2 = chdr.MgmtHop()
hop2.add_op(chdr.MgmtOp(chdr.MgmtOpCode.CFG_WR_REQ, chdr.MgmtOpCfg(0x1, 0x2)))
hop2.add_op(chdr.MgmtOp(chdr.MgmtOpCode.RETURN))
payload.add_hop(hop2)
hop3 = chdr.MgmtHop()
hop3.add_op(chdr.MgmtOp(chdr.MgmtOpCode.NOP))
payload.add_hop(hop3)
return chdr.ChdrPacket(CHDR_W, header, payload)
def make_mgmt_packet2():
header = chdr.ChdrHeader()
header.pkt_type = chdr.PacketType.MGMT
header.length = 56
header.seq_num = 6
payload = chdr.MgmtPayload()
payload.set_header(1, (1 << 8) | (0 << 0), chdr.ChdrWidth.W64)
hop1 = chdr.MgmtHop()
hop1.add_op(chdr.MgmtOp(chdr.MgmtOpCode.NOP))
payload.add_hop(hop1)
hop2 = chdr.MgmtHop()
hop2.add_op(chdr.MgmtOp(chdr.MgmtOpCode.SEL_DEST, chdr.MgmtOpSelDest(3)))
payload.add_hop(hop2)
hop3 = chdr.MgmtHop()
hop3.add_op(chdr.MgmtOp(chdr.MgmtOpCode.INFO_REQ, 0))
hop3.add_op(chdr.MgmtOp(chdr.MgmtOpCode.RETURN, 0))
payload.add_hop(hop3)
hop4 = chdr.MgmtHop()
hop4.add_op(chdr.MgmtOp(chdr.MgmtOpCode.NOP, 0))
payload.add_hop(hop4)
return chdr.ChdrPacket(CHDR_W, header, payload)
def make_strs_packet0():
header = chdr.ChdrHeader()
header.pkt_type = chdr.PacketType.STRS
header.length = 40
header.dst_epid = 2
payload = chdr.StrsPayload()
payload.capacity_bytes = 163840
payload.src_epid = 3
payload.capacity_pkts = 16777215
return chdr.ChdrPacket(CHDR_W, header, payload)
def make_strs_packet1():
header = chdr.ChdrHeader()
header.pkt_type = chdr.PacketType.STRS
header.length = 40
header.dst_epid = 2
payload = chdr.StrsPayload()
payload.capacity_bytes = 163840
payload.src_epid = 3
payload.xfer_count_pkts = 1
payload.capacity_pkts = 16777215
payload.xfer_count_bytes = 8000
return chdr.ChdrPacket(CHDR_W, header, payload)
def make_strc_packet0():
header = chdr.ChdrHeader()
header.pkt_type = chdr.PacketType.STRC
header.length = 24
header.dst_epid = 3
payload = chdr.StrcPayload()
payload.num_pkts = 16777215
payload.op_code = chdr.StrcOpCode.INIT
payload.src_epid = 2
payload.num_bytes = 5120
return chdr.ChdrPacket(CHDR_W, header, payload)
def make_strc_packet1():
header = chdr.ChdrHeader()
header.pkt_type = chdr.PacketType.STRC
header.length = 24
header.dst_epid = 3
payload = chdr.StrcPayload()
payload.num_pkts = 21
payload.op_code = chdr.StrcOpCode.RESYNC
payload.src_epid = 2
payload.num_bytes = 168000
return chdr.ChdrPacket(CHDR_W, header, payload)
def make_data_packet0():
header = chdr.ChdrHeader()
header.pkt_type = chdr.PacketType.DATA_WITH_TS
header.length = 8000
header.dst_epid = 3
header.seq_num = 1
timestamp = 0x7C40C83
data_src = rfnoc_packets_data.peer1_9
data = bytes(data_src[(2 * 8) :])
return chdr.ChdrPacket(CHDR_W, header, data, timestamp)
def make_data_packet1():
header = chdr.ChdrHeader()
header.pkt_type = chdr.PacketType.DATA_WITH_TS
header.length = 4252
header.dst_epid = 3
header.eob = True
header.seq_num = 1716
timestamp = 0x21452B97
data_src = rfnoc_packets_data.eob_packet
data = bytes(data_src[(2 * 8) :])
return chdr.ChdrPacket(CHDR_W, header, data, timestamp)
packets = [
(make_control_packet0(), rfnoc_packets_ctrl_mgmt.peer0_19),
(make_control_packet1(), rfnoc_packets_ctrl_mgmt.peer1_17),
(make_mgmt_packet0(), rfnoc_packets_ctrl_mgmt.peer0_2),
(make_mgmt_packet1(), rfnoc_packets_ctrl_mgmt.peer0_3),
(make_mgmt_packet2(), rfnoc_packets_ctrl_mgmt.peer0_6),
(make_strs_packet0(), rfnoc_packets_data.peer0_5),
(make_strs_packet1(), rfnoc_packets_data.peer0_8),
(make_strc_packet0(), rfnoc_packets_data.peer1_5),
(make_strc_packet1(), rfnoc_packets_data.peer1_29),
(make_data_packet0(), rfnoc_packets_data.peer1_9),
(make_data_packet1(), rfnoc_packets_data.eob_packet),
]
names = [
"Control_Packet_0",
"Control_Packet_1",
"Management_Packet_0",
"Management_Packet_1",
"Management_Packet_2",
"Stream_Status_Packet_0",
"Stream_Status_Packet_1",
"Stream_Command_Packet_0",
"Stream_Command_Packet_1",
"Data_Packet_0",
"Data_Packet_1",
]