整理测试代码

This commit is contained in:
2025-05-27 12:49:55 +08:00
parent c1e1f2446a
commit 5c8e58449d
2 changed files with 344 additions and 252 deletions

View File

@@ -6,13 +6,13 @@ class GenPkt(object):
def __init__(self):
super(GenPkt, self).__init__()
self.pkt_buf = bytearray(b'\0' * 2048)
self.pkt_buf = list() #bytearray(b'\0' * 2048)
self.pkt_type = 0
self.pkt_sub_pkt = 0
self.sub_pkt = list()
def clean(self):
self.pkt_buf = bytearray(b'\0' * 2048)
self.pkt_buf = list() #bytearray(b'\0' * 2048)
self.pkt_type = 0
self.pkt_sub_pkt = 0
self.sub_pkt = list()
@@ -23,6 +23,9 @@ class GenPkt(object):
else:
self.pkt_type = type
def addSentence(self, str):
self.sub_pkt.append([1, str])
def addSubPkt(self, dev_idx, ptype, addr, cmd, len, data):
if (len > 2032):
print('Error, bad subpkt len:%d', len)
@@ -35,12 +38,15 @@ class GenPkt(object):
return
self.pkt_sub_pkt = self.pkt_sub_pkt + 1
self.sub_pkt.append([dev_idx, ptype, addr, cmd, len, data])
self.sub_pkt.append([0, dev_idx, ptype, addr, cmd, len, data])
def gen(self, filename="pkt_verilog_test.v", filetype=0):
pkt_len = 4
for sp in self.sub_pkt:
pkt_len = pkt_len + sp[4] + 8
if sp[0] != 0:
pass
else:
pkt_len = pkt_len + sp[5] + 8
if pkt_len > 2048:
print('Error, bad pkt_len:', pkt_len)
@@ -51,58 +57,87 @@ class GenPkt(object):
i = 4
if self.pkt_type == 1:
pkt_len = 4
'''
self.pkt_buf[0] = 0
self.pkt_buf[1] = (self.pkt_type & 0x3)
self.pkt_buf[2] = 0x3f
self.pkt_buf[3] = 0xff
'''
self.pkt_buf.append(0)
self.pkt_buf.append(self.pkt_type & 0x3)
self.pkt_buf.append(0x3f)
self.pkt_buf.append(0xff)
else:
#for i in range(pkt_len):
'''
self.pkt_buf[0] = ((pkt_len - 4) >> 4) & 0xff
self.pkt_buf[1] = (((pkt_len - 4) << 4) & 0xf0) | (self.pkt_type & 0x3)
self.pkt_buf[2] = 0
self.pkt_buf[3] = 0
'''
self.pkt_buf.append(((pkt_len - 4) >> 4) & 0xff)
self.pkt_buf.append((((pkt_len - 4) << 4) & 0xf0) | (self.pkt_type & 0x3))
self.pkt_buf.append(0)
self.pkt_buf.append(0)
for sp in self.sub_pkt:
#设备索引(14bit)+类型(2bit)
temp = ((sp[0] & 0x3fff) << 2) | (sp[1] & 0x3)
self.pkt_buf[i] = (temp >> 8) & 0xff
i = i + 1
self.pkt_buf[i] = temp & 0xff
i = i + 1
#地址
self.pkt_buf[i] = (sp[2] >> 8) & 0xff
i = i + 1
self.pkt_buf[i] = sp[2] & 0xff
i = i + 1
#命令类型(4bit)+长度(12bit)
temp = (sp[3] << 12) | (sp[4] & 0xfff)
self.pkt_buf[i] = (temp >> 8) & 0xff
i = i + 1
self.pkt_buf[i] = temp & 0xff
i = i + 1
#工作计数
self.pkt_buf[i] = 0
i = i + 1
self.pkt_buf[i] = 0
i = i + 1
#数据
if sp[5] == None:
for _k in range(sp[4]):
self.pkt_buf[_k + i] = random.randint(0, 255)
if sp[0] != 0:
pass
#elif sp[0] == 0:
else:
for _k in range(sp[4]):
self.pkt_buf[_k + i] = sp[5][_k]
#设备索引(14bit)+类型(2bit)
temp = ((sp[1] & 0x3fff) << 2) | (sp[2] & 0x3)
#self.pkt_buf[i] = (temp >> 8) & 0xff
self.pkt_buf.append((temp >> 8) & 0xff)
i = i + 1
#self.pkt_buf[i] = temp & 0xff
self.pkt_buf.append(temp & 0xff)
i = i + 1
#地址
#self.pkt_buf[i] = (sp[3] >> 8) & 0xff
self.pkt_buf.append((sp[3] >> 8) & 0xff)
i = i + 1
#self.pkt_buf[i] = sp[3] & 0xff
self.pkt_buf.append(sp[3] & 0xff)
i = i + 1
i = i + sp[4]
#命令类型(4bit)+长度(12bit)
temp = (sp[4] << 12) | (sp[5] & 0xfff)
#self.pkt_buf[i] = (temp >> 8) & 0xff
self.pkt_buf.append((temp >> 8) & 0xff)
i = i + 1
#self.pkt_buf[i] = temp & 0xff
self.pkt_buf.append(temp & 0xff)
i = i + 1
#工作计数
#self.pkt_buf[i] = 0
self.pkt_buf.append(0)
i = i + 1
#self.pkt_buf[i] = 0
self.pkt_buf.append(0)
i = i + 1
#数据
if sp[6] == None:
for _k in range(sp[5]):
#self.pkt_buf[_k + i] = random.randint(0, 255)
self.pkt_buf.append(random.randint(0, 255))
else:
for _k in range(sp[5]):
#self.pkt_buf[_k + i] = sp[6][_k]
self.pkt_buf.append(sp[6][_k])
i = i + sp[5]
f = open(filename, "wt+")
if filetype == 1:
for md in self.sub_pkt:
if md[0] == 1:
f.write("%s\n"%(md[1],))
define_str = "`define DEF_"
pos1 = filename.rfind("/")
@@ -131,7 +166,10 @@ class GenPkt(object):
f.write("\tarray``[%d]=8'h%02X;\n"%(3 + _k, self.pkt_buf[_k]))
else:
for _k in range(i):
f.write("txBuf[%d]=8'h%02X;\n"%(3 + _k, self.pkt_buf[_k]))
if type(self.pkt_buf[_k]) == int:
f.write("txBuf[%d]=8'h%02X;\n"%(3 + _k, self.pkt_buf[_k]))
else:
f.write("txBuf[%d]=`%s;\n"%(3 + _k, self.pkt_buf[_k]))
f.close()
if __name__ == '__main__':
@@ -297,7 +335,7 @@ if __name__ == '__main__':
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = bytearray(b"\0" * 100)
data[0] = 0x0f #地址0x120
data[0] = 0xff #地址0x120
data[2] = 0xa
data[4] = 0xa
data[6] = 0xa
@@ -320,6 +358,41 @@ if __name__ == '__main__':
genPkt.gen("./generated/shin/sync_sig_pkt.vh", 1)
#-------------------------------------------------------------------------
#>>>>>>设置同步信号的数据包2
genPkt.clean()
genPkt.setPktType(0)
genPkt.addSentence(''' ''')
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 100 #bytearray(b"\0" * 100)
data[0] = 0x0f #地址0x120
data[2] = 0xa
data[4] = 0xa
data[6] = 0xa
data[8] = 0xa
data[16] = 0x00 #地址0x130, sync同步点
data[17] = 0x00 #地址0x131
#data[18] = 0x10
data[24] = 0x80 #地址0x138, sync周期 4B
data[25] = 0x00 #地址0x139
data[28] = 0x81 #sync1偏移
data[29] = 0x0
data[36] = 0x20#sync3偏移
data[37] = 0x00
genPkt.addSubPkt(0, 0, 0x120, 0xe, 0x28, data)
genPkt.addSubPkt(3, 0, 0x120, 0x1, 0x28, data)
genPkt.gen("./generated/shin/sync_sig2_pkt.vh", 1)
#-------------------------------------------------------------------------