Files
eb001/tb/shinTest/gen_pkt.py

2286 lines
70 KiB
Python
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python
#encoding=utf-8
import random
import copy
import time
class GenPkt(object):
def __init__(self):
super(GenPkt, self).__init__()
self.pkt_buf = list() #bytearray(b'\0' * 2048)
self.pkt_type = 0
self.pkt_sub_pkt = 0
self.sub_pkt = list()
self.pkt_data = None
def clean(self):
self.pkt_buf = list() #bytearray(b'\0' * 2048)
self.pkt_type = 0
self.pkt_sub_pkt = 0
self.sub_pkt = list()
self.pkt_data = None
def setPktType(self, type):
if (type != 0) and (type != 1):
print('Error...set type failed:', type)
else:
self.pkt_type = type
def setPkt(self, type, data = None):
if (type != 0) and (type != 1):
if type == 2:
self.pkt_type = 2
self.pkt_data = copy.copy(data)
else:
print('Error...set type failed:', type)
else:
self.pkt_type = type
def addBeforeExc(self, str):
self.sub_pkt.append([1, str])
def addAfterExc(self, str):
self.sub_pkt.append([2, str])
def addSubPkt(self, dev_idx, ptype, addr, cmd, len, data):
if (len > 2032):
print('Error, bad subpkt len:%d', len)
return
if not (ptype in [0, 2]):
print('Error, bad subpkt type:', ptype)
return
if not (cmd in [0, 1, 2, 0xb, 0xc, 0xd, 0xe, 0xf]):
print('Error, bad cmd:', cmd)
return
self.pkt_sub_pkt = self.pkt_sub_pkt + 1
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:
if sp[0] != 0:
pass
else:
pkt_len = pkt_len + sp[5] + 8
if pkt_len > 2044:
print('Error, bad pkt_len:', pkt_len)
return
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)
elif (self.pkt_type == 2):
pkt_len = len(self.pkt_data)
for d in self.pkt_data:
self.pkt_buf.append(d)
i = pkt_len
#print("-----------------------------", filename, self.pkt_type, pkt_len, self.pkt_buf)
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:
if sp[0] != 0:
pass
#elif sp[0] == 0:
else:
#设备索引(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
#命令类型(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
#数据
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]
#工作计数
#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
print("pkt_len:%d, data_len:%d"%(pkt_len, pkt_len - 4))
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("/")
if (pos1 < -1):
pos1 = 0
else:
pos1 = pos1 + 1
pos2 = filename.rfind(".")
if (pos1 > pos2):
define_str = define_str + filename[pos1:]
else:
define_str = define_str + filename[pos1:pos2]
f.write(define_str + "_len \t%d\n"%(pkt_len))
f.write(define_str + "_sm(array) \\\n\tarray``[%d]=8'h%02X;\\\n\tarray``[%d]=8'h%02X;\n"%(
3, pkt_len & 0xff,
4, pkt_len >> 8
))
f.write(define_str + "(array) \\\n")
for _k in range(i):
if _k < (i - 1):
if type(self.pkt_buf[_k]) == int:
f.write("\tarray``[%d]=8'h%02X;\\\n"%(3 + _k, self.pkt_buf[_k]))
else:
f.write("\tarray``[%d]=%s;\\\n"%(3 + _k, self.pkt_buf[_k]))
else:
if type(self.pkt_buf[_k]) == int:
f.write("\tarray``[%d]=8'h%02X;\n"%(3 + _k, self.pkt_buf[_k]))
else:
f.write("\tarray``[%d]=%s;\n"%(3 + _k, self.pkt_buf[_k]))
for md in self.sub_pkt:
if md[0] == 2:
f.write("%s\n"%(md[1],))
else:
for _k in range(i):
f.write("txBuf[%d]=8'h%02X;\n"%(3 + _k, self.pkt_buf[_k]))
f.close()
def genWriteTransLenCode(gen_name, sm_idx, wlog=True):
return '''\n//写入发送长度\n'''\
+ '''$fdisplay(spidata_file, "--写数据交换长度");\n'''\
+ '''`DEF_%s_sm(txBuf);\n'''%(gen_name, )\
+ '''%s( (`MST_TX%d_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx,)\
+ '''%s( (`MST_RX%d_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx,)
def genWriteTransPktCode(gen_name, sm_idx, wlog=True):
return '''\n$fdisplay(spidata_file, "<<发包:");\n'''\
+ '''`DEF_%s(txBuf);\n'''%(gen_name, )\
+ '''%s( (`MST_TX%d_ADDR), (`SPI_WRITE), (`DEF_%s_len), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx, gen_name, )
def genTrgTransPktCode(gen_name, sm_idx, wlog=True):
return '''\n//请求发送\n'''\
+ '''$fdisplay(spidata_file, "--请求发送");\n'''\
+ '''txBuf[0+3] = `MST_TX_TRIGGER(%d);\n'''%(sm_idx, )\
+ '''%s( (16'h20), (`SPI_WRITE), (1), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", )
def genReadAckPktCode(gen_name, sm_idx, wlog=True):
return '''\n//等待回包\n'''\
+ '''_reset_deadline_ind = 1;\n'''\
+ '''@(posedge isResp or posedge _deadline_ind) #5 begin end\n'''\
+ '''$fdisplay(spidata_file, ">>回包:");\n'''\
+ '''%s( (`MST_RX%d_ADDR), (`SPI_READ), (`DEF_%s_len), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx, gen_name,)
def genEnableInsertTimeCode(pos, enableTime=True, enableDelay=True, wlog=True):
data = pos & 0x3fff
if enableTime:
data = data | 0x8000
if enableDelay:
data = data | 0x4000
return '''//写入替换时间戳替换地址\n'''\
+ '''$fdisplay(spidata_file, "--增加时间戳插入");\n'''\
+ '''txBuf[0+3] = 8'h%x;\n'''%(data & 0xff, )\
+ '''txBuf[1+3] = 8'h%x;\n'''%((data >> 8) & 0xff, )\
+ '''%s( (16'h24), (`SPI_WRITE), (2), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans",)
def genDisableInsertTimeCode(wlog=True):
return '''\n//清除替换时间戳替换地址\n'''\
+ '''$fdisplay(spidata_file, "--清除时间戳插入");\n'''\
+ '''txBuf[0+3] = 8'h00;\n'''\
+ '''txBuf[1+3] = 8'h00;\n'''\
+ '''%s( (16'h24), (`SPI_WRITE), (2), (`IF_IDX(0)) ); //清除替换时间戳替换地址寄存器\n'''%("`SPI_TRANS" if wlog else "spi_trans", )
def genCheckInsertTimeCode(wlog=True):
return '''\n//检查替换时间戳替换地址\n'''\
+ '''$fdisplay(spidata_file, "--检查时间戳插入");\n'''\
+ '''%s( (16'h24), (`SPI_READ), (2), (`IF_IDX(0)) ); //检查替换时间戳替换地址寄存器\n'''%("`SPI_TRANS" if wlog else "spi_trans", )
def genIFRwDataCode(dev, addr, isWrite = False, data_len=0, data = None, wlog=True):
if isWrite == True:
if (data == None) or (len(data) == 0):
data=list()
code = ''
idx = 3
for item in data:
code = code + '''txBuf[%d]=8'h%02x;\n'''%(idx, item & 0xff)
idx = idx + 1
code = code + '''%s( (16'h%04x), (`SPI_WRITE), (%d), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", addr, data_len, dev)
return code
else:
code = ''
code = code + '''%s( (16'h%04x), (`SPI_READ), (%d), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", addr, data_len, dev)
return code
def genSlvSMWriteData(dev, sm, data_len, data = None, wlog=True):
smaddr = list()
for i in range(8):
smaddr.append(0x300 + i * 4 + 2)
if not ((sm == 1) or (sm == 3) or (sm == 5) or (sm == 7)):
#写入数据lvds读这个空间是lvds写mcu读
return ''
if data_len > 2032:
return ''
if (data != None) and (len(data) != 0) and (len(data) < data_len):
return ''
if (data == None) or (len(data) == 0):
data = list()
for i in range(data_len):
data.append((i + dev) & 0xff)
code = '''txBuf[3] = 8'h%02x;\n'''%(data_len & 0xff, )\
+ '''txBuf[4] = 8'h%02x;\n'''%(int(data_len/256) & 0xff,)\
+ '''%s((16'h0%04x), (`SPI_WRITE), (2), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", smaddr[sm], dev)
for i in range(data_len):
code = code + '''txBuf[%d + 3] = 8'h%02x;\n'''%(i, data[i])
code = code + '''%s( (16'h%04x), (`SPI_WRITE), (%d), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", 0x800 + sm * 2048, data_len, dev)
return code
def genSlvSMReadData(dev, sm, data_len, wlog=True):
if not ((sm == 0) or (sm == 2) or (sm == 4) or (sm == 6)):
#写入数据lvds读这个空间是lvds写mcu读
return ''
if data_len > 2032:
return ''
code = ""
code = code + '''%s( (16'h%04x), (`SPI_READ), (%d), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", 0x800 + sm * 2048, data_len, dev)
return code
if __name__ == '__main__':
random.seed(int(time.time() * 1000))
genPkt = GenPkt()
#-------------------------------------------------------------------------
#>>>>>>嗅探数据包1正常的嗅探数据包
genPkt.clean()
genPkt.setPktType(1)
gen_file_def = "detect_pkt"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>嗅探数据包2正常的嗅探数据包
genPkt.clean()
genPkt.setPktType(1)
gen_file_def = "detect_pkt2"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>错误的嗅探数据包
genPkt.clean()
genPkt.setPkt(2, [0, 0, 0, 0])
gen_file_def = "detect_err_pkt"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>错误的数据包1
genPkt.clean()
data = list()
'''
for i in range(128):
data.append(random.randint(0, 255))
'''
data = data + [0x57, 0x17, 0xfd, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x40]
for i in range(64):
data.append(random.randint(0, 255))
data = data + [0, 0, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x40]
for i in range(64):
data.append(random.randint(0, 255))
data = data + [0, 0]
genPkt.setPkt(2, data)
gen_file_def = "err_pkt1"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>错误的数据包2
genPkt.clean()
data = list()
'''
for i in range(128):
data.append(random.randint(0, 255))
'''
data = data + [0xb2, 0x4e, 0xd3, 0xe2, 0xa8, 0xd3, 0x86, 0x01, 0x44, 0x3f]
for i in range(64):
data.append(random.randint(0, 255))
data = data + [0, 0, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x40]
for i in range(64):
data.append(random.randint(0, 255))
data = data + [0, 0]
genPkt.setPkt(2, data)
gen_file_def = "err_pkt2"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>错误的数据包3
genPkt.clean()
data = list()
for i in range(1024):
data.append(random.randint(0, 255))
genPkt.setPkt(2, data)
gen_file_def = "err_pkt3"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>普通数据包 sm12个读
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
#genPkt.addSubPkt(0x02, 0, 0x0830, 0x2, 56, None)
genPkt.addSubPkt(0x01, 0, 0x00, 0x0, 64, None)
genPkt.addSubPkt(0x03, 0, 0xc0, 0x0, 64, None)
#genPkt.addSubPkt(10, 2, 0x300, 0x2, 4, None)
#genPkt.addSubPkt(11, 1, 0x300, 0x2, 4, None)
gen_file_def = "sm1_pkt"
sm_idx = 1
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>普通数据包 sm2广播读
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
#genPkt.addSubPkt(0x02, 0, 0x0830, 0x2, 56, None)
genPkt.addSubPkt(0x01, 0, 0x00, 0xd, 128, None)
#genPkt.addSubPkt(10, 2, 0x300, 0x2, 4, None)
#genPkt.addSubPkt(11, 1, 0x300, 0x2, 4, None)
gen_file_def = "sm2_pkt"
sm_idx = 2
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>交换数据 SMx 两个广播写
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = bytearray(b"\0" * 10)
data[0] = 16
data[1] = 0
genPkt.addSubPkt(random.randint(0, 2048), 0, 0x0302, 0xe, 2, data) #0x030a, 0xe, 2, data)
data = bytearray(b"\0"*100)
for i in range(100):
data[i] = i + 1
genPkt.addSubPkt(random.randint(0, 2048), 0, 0x0800, 0xe, 16, data) #0x1800, 0xe, 16, data)
gen_file_def = "sm3_pkt"
sm_idx = 3
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>普通数据包一个读、一个写增加5个随机包需要在文件里确认)
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
#genPkt.addSubPkt(0x02, 0, 0x0830, 0x2, 56, None)
genPkt.addSubPkt(0x01, 0, 0x0840, 0x1, 56, None)
genPkt.addSubPkt(0x03, 0, 0x1040, 0x0, 56, None)
for i in range(5):
genPkt.addSubPkt(random.randint(100, 4000), 0,
random.randint(0, 65536), 0x0,
56, None)
#genPkt.addSubPkt(10, 2, 0x300, 0x2, 4, None)
#genPkt.addSubPkt(11, 1, 0x300, 0x2, 4, None)
gen_file_def = "seq_0_pkt"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>普通数据包0,用来操作sync
genPkt.clean()
genPkt.setPktType(0)
data = bytearray(b"\0"*100)
data[0] = 0 #0x0300
data[1] = 0 #0x0301
data[2] = 64 #0x302 长度1
data[3] = 0 #0x303 长度2
data[4] = 0
data[5] = 0
data[6] = 64
data[7] = 0
data[8] = 0
data[9] = 0
data[10] = 64
data[11] = 0
data[12] = 0
data[13] = 0
data[14] = 64
data[15] = 0
#subPkt参数索引、索引类型、地址、命令、长度、数据
genPkt.addSubPkt(0x02, 0, 0x0300, 0x1, 4, data) #sm0
genPkt.addSubPkt(0x01, 0, 0x0308, 0x1, 4, data) #sm2
genPkt.addSubPkt(0x03, 0, 0x0310, 0x1, 4, data) #sm4
genPkt.addSubPkt(0x04, 0, 0x0318, 0x1, 4, data) #sm6
data = bytearray(b"\0"*100)
for i in range(64):
data[i] = i
data[10] = ord('B')
data[11] = ord('A')
genPkt.addSubPkt(0x02, 0, 0x0800, 0x1, 64, data)
data = bytearray(b"\0"*100)
for i in range(64):
data[i] = i
data[11] = ord('B')
data[12] = ord('A')
genPkt.addSubPkt(0x01, 0, 0x1800, 0x1, 64, data)
data = bytearray(b"\0"*100)
for i in range(64):
data[i] = i
data[12] = ord('B')
data[13] = ord('A')
genPkt.addSubPkt(0x03, 0, 0x2800, 0x1, 64, data)
data = bytearray(b"\0"*100)
for i in range(64):
data[i] = i
data[13] = ord('B')
data[14] = ord('A')
genPkt.addSubPkt(0x04, 0, 0x3800, 0x1, 64, data)
gen_file_def = "seq_1_pkt"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>普通数据包2
genPkt.clean()
genPkt.setPktType(0)
genPkt.addBeforeExc( genSlvSMWriteData(3, 1, 129)
+ genSlvSMWriteData(4, 1, 140)
+ genSlvSMWriteData(1, 1, 128)
+ genSlvSMWriteData(2, 1, 152))
#subPkt参数索引、索引类型、地址、命令、长度、数据
genPkt.addSubPkt(3, 0, 0x1000, 0x0, 129, b"\0"*129)
genPkt.addSubPkt(4, 0, 0x1000, 0x0, 140, b"\0"*140)
genPkt.addSubPkt(1, 0, 0x1000, 0x0, 128, b"\0"*128)
genPkt.addSubPkt(2, 0, 0x1000, 0x0, 152, b"\0"*152)
genPkt.addSubPkt(1, 0, 0x0306, 0x0, 2, b"\0"*2)
genPkt.addSubPkt(2, 0, 0x030e, 0x0, 2, b"\0"*2)
genPkt.addSubPkt(3, 0, 0x0316, 0x0, 2, b"\0"*2)
genPkt.addSubPkt(4, 0, 0x031e, 0x0, 2, b"\0"*2)
gen_file_def = "seq_2_pkt"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>普通数据包3
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
genPkt.addSubPkt(3, 0, 0x0100, 0x2, 32, b"\0"*129)
genPkt.addSubPkt(4, 0, 0x0100, 0x2, 32, b"\0"*140)
genPkt.addSubPkt(1, 0, 0x0100, 0x2, 32, b"\0"*128)
genPkt.addSubPkt(2, 0, 0x0100, 0x2, 32, b"\0"*152)
genPkt.addSubPkt(2, 0, 0x0120, 0x2, 2, b"\x05"*32)
gen_file_def = "seq_3_pkt"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>同步数据包
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
genPkt.addSubPkt(0x0, 0, random.randint(0, 65535), 0xc, 12, b'\0'*12)
genPkt.addBeforeExc(genEnableInsertTimeCode(0xa))
gen_file_def = "sync_pkt"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx)
+genCheckInsertTimeCode()) #+genDisableInsertTimeCode())
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>设置同步信号的数据包,在波形中确认定时的有效性
genPkt.clean()
genPkt.setPktType(0)
genPkt.addBeforeExc(
'''spi_trans( (16'h0100), (`SPI_READ), (8), (`IF_IDX(0)));\n'''
+ '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n'''
+ '''_temp_time = _temp_time + 32'h2000;\n\n''')
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 100 #bytearray(b"\0" * 100)
data[0] = 0xff #地址0x120
data[2] = 0xa
data[4] = 0xa
data[6] = 0xa
data[8] = 0xa
data[16] = '''(_temp_time & 8'hff)''' #地址0x130, sync同步点
data[17] = '''(_temp_time >> 8) & 8'hff''' #地址0x131
data[18] = '''(_temp_time >> 16) & 8'hff'''
data[19] = '''(_temp_time >> 24) & 8'hff'''
data[24] = 0x00 #地址0x138, sync周期 4B
data[25] = 0x10 #地址0x139
data[28] = 0x81 #sync1偏移
data[29] = 0x0
data[36] = 0x20#sync3偏移
data[37] = 0x00
genPkt.addSubPkt(random.randint(0, 2048), 0, 0x120, 0xe, 0x28, data)
gen_file_def = "sync_sig_pkt"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>设置同步信号的数据包2
genPkt.clean()
genPkt.setPktType(0)
gen_file_def = "sync_sig2_pkt"
sm_idx = 3
genPkt.addBeforeExc(
'''spi_trans( (16'h0100), (`SPI_READ), (8), (`IF_IDX(0)));\n'''
+ '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n'''
+ '''_temp_time = _temp_time + 32'h3000;\n\n''')
#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] = '''(_temp_time & 8'hff)''' #地址0x130, sync同步点
data[17] = '''(_temp_time >> 8) & 8'hff''' #地址0x131
data[18] = '''(_temp_time >> 16) & 8'hff'''
data[19] = '''(_temp_time >> 24) & 8'hff'''
data[24] = 0x80 #地址0x138, sync周期 4B
data[25] = 0x00 #地址0x139
data[28] = 0x0 #sync1偏移
data[29] = 0x0
data[36] = 0x0#sync3偏移
data[37] = 0x0
genPkt.addSubPkt(0, 0, 0x120, 0xe, 0x28, data)
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] = '''(_temp_time & 8'hff)''' #地址0x130, sync同步点
data[17] = '''(_temp_time >> 8) & 8'hff''' #地址0x131
data[18] = '''(_temp_time >> 16) & 8'hff'''
data[19] = '''(_temp_time >> 24) & 8'hff'''
data[24] = 0x00 #地址0x138, sync周期 4B
data[25] = 0x01 #地址0x139
data[28] = 0x0 #sync1偏移
data[29] = 0x0
data[36] = 0x0 #sync3偏移
data[37] = 0x0
genPkt.addSubPkt(3, 0, 0x120, 0x1, 0x28, data)
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] = '''(_temp_time & 8'hff)''' #地址0x130, sync同步点
data[17] = '''(_temp_time >> 8) & 8'hff''' #地址0x131
data[18] = '''(_temp_time >> 16) & 8'hff'''
data[19] = '''(_temp_time >> 24) & 8'hff'''
data[24] = 0x00 #地址0x138, sync周期 4B
data[25] = 0x02 #地址0x139
data[28] = 0x0 #sync1偏移
data[29] = 0x0
data[36] = 0x0 #sync3偏移
data[37] = 0x0
genPkt.addSubPkt(4, 0, 0x120, 0x1, 0x28, data)
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def,), 1)
#-------------------------------------------------------------------------
#>>>>>>设置同步信号的数据包3
genPkt.clean()
genPkt.setPktType(0)
gen_file_def = "sync_sig3_pkt"
sm_idx = 3
genPkt.addBeforeExc(
'''spi_trans( (16'h0100), (`SPI_READ), (8), (`IF_IDX(0)));\n'''
+ '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n'''
+ '''_temp_time = _temp_time + 32'h3000;\n\n''')
#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] = '''(_temp_time & 8'hff)''' #地址0x130, sync同步点
data[17] = '''(_temp_time >> 8) & 8'hff''' #地址0x131
data[18] = '''(_temp_time >> 16) & 8'hff'''
data[19] = '''(_temp_time >> 24) & 8'hff'''
data[24] = 0x80 #地址0x138, sync周期 4B
data[25] = 0x00 #地址0x139
data[28] = 0x0 #sync1偏移
data[29] = 0x0
data[36] = 0x0#sync3偏移
data[37] = 0x0
genPkt.addSubPkt(0, 0, 0x120, 0xe, 0x28, data)
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] = '''(_temp_time & 8'hff)''' #地址0x130, sync同步点
data[17] = '''(_temp_time >> 8) & 8'hff''' #地址0x131
data[18] = '''(_temp_time >> 16) & 8'hff'''
data[19] = '''(_temp_time >> 24) & 8'hff'''
data[24] = 0x00 #地址0x138, sync周期 4B
data[25] = 0x01 #地址0x139
data[28] = 0x0 #sync1偏移
data[29] = 0x0
data[36] = 0x0 #sync3偏移
data[37] = 0x0
genPkt.addSubPkt(3, 0, 0x120, 0x1, 0x28, data)
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] = '''(_temp_time & 8'hff)''' #地址0x130, sync同步点
data[17] = '''(_temp_time >> 8) & 8'hff''' #地址0x131
data[18] = '''(_temp_time >> 16) & 8'hff'''
data[19] = '''(_temp_time >> 24) & 8'hff'''
data[24] = 0x00 #地址0x138, sync周期 4B
data[25] = 0x02 #地址0x139
data[28] = 0x0 #sync1偏移
data[29] = 0x0
data[36] = 0x0 #sync3偏移
data[37] = 0x0
genPkt.addSubPkt(4, 0, 0x120, 0x1, 0x28, data)
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] = '''(_temp_time & 8'hff)''' #地址0x130, sync同步点
data[17] = '''(_temp_time >> 8) & 8'hff''' #地址0x131
data[18] = '''(_temp_time >> 16) & 8'hff'''
data[19] = '''(_temp_time >> 24) & 8'hff'''
data[24] = 0x00 #地址0x138, sync周期 4B
data[25] = 0x04 #地址0x139genPkt.addBeforeExc(
data[28] = 0x0 #sync1偏移
data[29] = 0x0
data[36] = 0x0 #sync3偏移
data[37] = 0x0
genPkt.addSubPkt(2, 0, 0x120, 0x1, 0x28, data)
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def,), 1)
#-------------------------------------------------------------------------
#>>>>>>设置顺序地址
genPkt.clean()
genPkt.setPktType(0)
data = bytearray(b"\0" * 2)
data[0] = 0x3f
data[1] = 0xff
#subPkt参数索引、索引类型、地址、命令、长度、数据
genPkt.addSubPkt(0x0, 0, random.randint(0, 65535), 0xb, 2, data)
gen_file_def = "set_addr_pkt"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>广播读
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
genPkt.addSubPkt(0x0, 0, 0xc0, 0xd, 4, b"\0"*4)
genPkt.addSubPkt(0x1, 0, 0xc0, 0x0, 4, b"\0"*4)
genPkt.addSubPkt(0x2, 0, 0xc0, 0x0, 4, b"\0"*4)
genPkt.addSubPkt(0x3, 0, 0xc0, 0x0, 4, b"\0"*4)
genPkt.addSubPkt(0x4, 0, 0xc0, 0x0, 4, b"\0"*4)
genPkt.addSubPkt(random.randint(0, 2048), 0, 0xc0, 0xd, 4, b"\0"*4)
genPkt.addSubPkt(random.randint(0, 2048), 0, 0xc0, 0xd, 4, b"\0"*4)
genPkt.addSubPkt(random.randint(0, 2048), 0, 0xc0, 0xd, 4, b"\0"*4)
genPkt.addSubPkt(random.randint(0, 2048), 0, 0xc0, 0xd, 4, b"\0"*4)
gen_file_def = "bc_r_pkt"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>广播写
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = bytearray(b"\0" * 2)
data[0] = 32
data[1] = 0
genPkt.addSubPkt(random.randint(0, 2048), 0, 0x0302, 0xe, 2, data)
data = bytearray(b"\0"*100)
for i in range(100):
data[i] = i + 1
genPkt.addSubPkt(random.randint(0, 2048), 0, 0x0800, 0xe, 32, data)
gen_file_def = "bc_w_pkt"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>广播读写
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = bytearray(b"\0"*100)
for i in range(4):
data[i] = i + 1
genPkt.addSubPkt(random.randint(0, 2048), 0, 0x00c0, 0xf, 4, data)
gen_file_def = "bc_rw_pkt"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>设置EB-MMU 1
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 30
data[0] = 0x00
data[1] = 0x00
data[2] = 0x00
data[3] = 0x10
data[4] = 0x00
data[5] = 0x02
data[6] = 0x0a
data[7] = 0x00
data[8] = 0x03
data[9] = 0x01
genPkt.addSubPkt(0x1, 0, 0x0200, 0x1, 10, data)
data = [0,] * 30
data[0] = 0x0a
data[1] = 0x00
data[2] = 0x00
data[3] = 0x10
data[4] = 0x00
data[5] = 0x02
data[6] = 0x0a
data[7] = 0x00
data[8] = 0x03
data[9] = 0x01
genPkt.addSubPkt(0x2, 0, 0x0200, 0x1, 10, data)
data = [0,] * 30
data[0] = 0x14
data[1] = 0x00
data[2] = 0x00
data[3] = 0x10
data[4] = 0x00
data[5] = 0x02
data[6] = 0x0a
data[7] = 0x00
data[8] = 0x03
data[9] = 0x01
genPkt.addSubPkt(0x3, 0, 0x0200, 0x1, 10, data)
data = [0,] * 30
data[0] = 0x1e
data[1] = 0x00
data[2] = 0x00
data[3] = 0x10
data[4] = 0x00
data[5] = 0x02
data[6] = 0x0a
data[7] = 0x00
data[8] = 0x03
data[9] = 0x01
genPkt.addSubPkt(0x4, 0, 0x0200, 0x1, 10, data)
gen_file_def = "ebmmu_tc1_settings"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>读取EB-MMU的设置
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 40
genPkt.addSubPkt(0x01, 0, 0x0200, 0x0, 10, data)
genPkt.addSubPkt(0x02, 0, 0x0200, 0x0, 10, data)
genPkt.addSubPkt(0x03, 0, 0x0200, 0x0, 10, data)
genPkt.addSubPkt(0x04, 0, 0x0200, 0x0, 10, data)
gen_file_def = "ebmmu_tc1_seq_read"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>用EB-MMU方式读取EB-MMU设置
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 40
genPkt.addSubPkt(0x1000, 2, 0x0000, 0x0, 40, data)
gen_file_def = "ebmmu_tc1_read"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>设置EB-MMU 2
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 30
data[0] = 0x00
data[1] = 0x00
data[2] = 0x00
data[3] = 0x20
data[4] = 0x00
data[5] = 0x00
data[6] = 0x10
data[7] = 0x00
data[8] = 0x01
data[9] = 0x01
genPkt.addSubPkt(0x1, 0, 0x020a, 0x1, 10, data)
data = [0,] * 30
data[0] = 0x10
data[1] = 0x00
data[2] = 0x00
data[3] = 0x20
data[4] = 0x00
data[5] = 0x00
data[6] = 0x10
data[7] = 0x00
data[8] = 0x01
data[9] = 0x01
genPkt.addSubPkt(0x2, 0, 0x020a, 0x1, 10, data)
data = [0,] * 30
data[0] = 0x20
data[1] = 0x00
data[2] = 0x00
data[3] = 0x20
data[4] = 0x00
data[5] = 0x00
data[6] = 0x10
data[7] = 0x00
data[8] = 0x01
data[9] = 0x01
genPkt.addSubPkt(0x3, 0, 0x020a, 0x1, 10, data)
data = [0,] * 30
data[0] = 0x30
data[1] = 0x00
data[2] = 0x00
data[3] = 0x20
data[4] = 0x00
data[5] = 0x00
data[6] = 0x10
data[7] = 0x00
data[8] = 0x01
data[9] = 0x01
genPkt.addSubPkt(0x4, 0, 0x020a, 0x1, 10, data)
gen_file_def = "ebmmu_tc2_settings"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>读取数据
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 40
genPkt.addSubPkt(0x01, 0, 0x0000, 0x0, 16, data)
genPkt.addSubPkt(0x02, 0, 0x0000, 0x0, 16, data)
genPkt.addSubPkt(0x03, 0, 0x0000, 0x0, 16, data)
genPkt.addSubPkt(0x04, 0, 0x0000, 0x0, 16, data)
gen_file_def = "ebmmu_tc2_seq_read"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>用EB-MMU方式读取EB-MMU设置
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 100
genPkt.addSubPkt(0x2000, 2, 0x0000, 0x0, 0x40, data)
gen_file_def = "ebmmu_tc2_read"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>设置EB-MMU
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 30
data[0] = 0x1e + 0xa
data[1] = 0x00
data[2] = 0x00
data[3] = 0x10
data[4] = 0x00
data[5] = 0x00
data[6] = 0x0c
data[7] = 0x00
data[8] = 0x01
data[9] = 0x01
genPkt.addSubPkt(0x1, 0, 0x0214, 0x1, 10, data)
data = [0,] * 30
data[0] = 0x1e + 0xa + 0x0c
data[1] = 0x00
data[2] = 0x00
data[3] = 0x10
data[4] = 0x00
data[5] = 0x00
data[6] = 0x0c
data[7] = 0x00
data[8] = 0x01
data[9] = 0x01
genPkt.addSubPkt(0x2, 0, 0x0214, 0x1, 10, data)
data = [0,] * 30
data[0] = 0x1e + 0xa + 0x0c + 0x0c
data[1] = 0x00
data[2] = 0x00
data[3] = 0x10
data[4] = 0x00
data[5] = 0x00
data[6] = 0x0c
data[7] = 0x00
data[8] = 0x01
data[9] = 0x01
genPkt.addSubPkt(0x3, 0, 0x0214, 0x1, 10, data)
data = [0,] * 30
data[0] = 0x1e + 0xa + 0x0c + 0x0c + 0x0c
data[1] = 0x00
data[2] = 0x00
data[3] = 0x10
data[4] = 0x00
data[5] = 0x00
data[6] = 0x0c
data[7] = 0x00
data[8] = 0x01
data[9] = 0x01
genPkt.addSubPkt(0x4, 0, 0x0214, 0x1, 10, data)
gen_file_def = "ebmmu_tc3_settings"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>用EB-MMU方式读取EB-MMU设置
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 150
genPkt.addSubPkt(0x1000, 2, 0x0000, 0x0, 0x0c * 4 + 0x28, data)
gen_file_def = "ebmmu_tc3_read"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>设置EB-MMU
genPkt.clean()
genPkt.setPktType(0)
genPkt.addBeforeExc( genSlvSMWriteData(1, 1, 0x80)
+ genSlvSMWriteData(2, 3, 0x98)
+ genSlvSMWriteData(3, 5, 0x81)
+ genSlvSMWriteData(4, 7, 0x8c))
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 30
data[0] = 0x58 #0x1e + 0xa
data[1] = 0x00
data[2] = 0x00
data[3] = 0x10
data[4] = 0x00
data[5] = 0x10
data[6] = 0x80
data[7] = 0x00
data[8] = 0x01
data[9] = 0x01
genPkt.addSubPkt(0x1, 0, 0x021e, 0x1, 10, data)
data = [0,] * 30
addr = 0x58 + 0x80
data[0] = (addr) & 0xff
data[1] = (addr >> 8) & 0xff
data[2] = 0x00
data[3] = 0x10
data[4] = 0x00
data[5] = 0x20
data[6] = 0x98
data[7] = 0x00
data[8] = 0x01
data[9] = 0x01
genPkt.addSubPkt(0x2, 0, 0x021e, 0x1, 10, data)
data = [0,] * 30
addr = 0x58 + 0x80 + 0x98
data[0] = (addr) & 0xff
data[1] = (addr >> 8) & 0xff
data[2] = 0x00
data[3] = 0x10
data[4] = 0x00
data[5] = 0x30
data[6] = 0x81
data[7] = 0x00
data[8] = 0x01
data[9] = 0x01
genPkt.addSubPkt(0x3, 0, 0x021e, 0x1, 10, data)
data = [0,] * 30
addr = 0x58 + 0x80 + 0x98 + 0x81
data[0] = (addr) & 0xff
data[1] = (addr >> 8) & 0xff
data[2] = 0x00
data[3] = 0x10
data[4] = 0x00
data[5] = 0x40
data[6] = 0x8c
data[7] = 0x00
data[8] = 0x01
data[9] = 0x01
genPkt.addSubPkt(0x4, 0, 0x021e, 0x1, 10, data)
gen_file_def = "ebmmu_tc4_settings"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>用EB-MMU方式读取EB-MMU设置
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 550
genPkt.addSubPkt(0x1000, 2, 0x0058, 0x0, 0x80+0x98+0x81+0x8c, data)
gen_file_def = "ebmmu_tc4_read"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>用EB-MMU方式读取EB-MMU设置
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 550
genPkt.addSubPkt(0x1000, 2, 0x0058, 0x0, 0x80+0x98+0x81+0x8c, data)
gen_file_def = "ebmmu_tc5_read"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#--------------------------------------------------------------------------
#>>>>>>设置EB-MMU,测试用例6
genPkt.clean()
genPkt.setPktType(0)
addr_off = 0x58 + 0x80 + 0x98 + 0x81 + 0x8c
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 30
addr = addr_off + 0x0
#print(hex(addr))
data[0] = (addr & 0xff)
data[1] = (addr >> 8) & 0xff
data[2] = 0x00
data[3] = 0x10
data[4] = 0x00
data[5] = 0x08
data[6] = 0x80
data[7] = 0x00
data[8] = 0x03
data[9] = 0x01
genPkt.addSubPkt(0x1, 0, 0x0228, 0x1, 10, data)
data = [0,] * 30
addr = addr + 0x80
#print(hex(addr))
data[0] = (addr) & 0xff
data[1] = (addr >> 8) & 0xff
data[2] = 0x00
data[3] = 0x10
data[4] = 0x00
data[5] = 0x08
data[6] = 0x80
data[7] = 0x00
data[8] = 0x03
data[9] = 0x01
genPkt.addSubPkt(0x2, 0, 0x0228, 0x1, 10, data)
data = [0,] * 30
addr = addr + 0x80
#print(hex(addr))
data[0] = (addr) & 0xff
data[1] = (addr >> 8) & 0xff
data[2] = 0x00
data[3] = 0x10
data[4] = 0x00
data[5] = 0x08
data[6] = 0x80
data[7] = 0x00
data[8] = 0x03
data[9] = 0x01
genPkt.addSubPkt(0x3, 0, 0x0228, 0x1, 10, data)
data = [0,] * 30
addr = addr + 0x80
#print(hex(addr))
data[0] = (addr) & 0xff
data[1] = (addr >> 8) & 0xff
data[2] = 0x00
data[3] = 0x10
data[4] = 0x00
data[5] = 0x08
data[6] = 0x80
data[7] = 0x00
data[8] = 0x03
data[9] = 0x01
genPkt.addSubPkt(0x4, 0, 0x0228, 0x1, 10, data)
data = [0,] * 2
data[0] = 0x80
data[1] = 0x00
genPkt.addSubPkt(0x0, 0, 0x302, 0xe, 2, data)
gen_file_def = "ebmmu_tc6_settings"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>用EB-MMU方式读取EB-MMU设置
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 0x80 * 4
for i in range(0x80 * 4):
if i < 0x80:
data[i] = i & 0xff
elif i < 0x80+0x80:
data[i] = (i + 2 - 0x80) & 0xff
elif i < 0x80+0x80+0x80:
data[i] = (i + 3 - 0x80 - 0x80) & 0xff
else:
data[i] = (i + 5 - 0x80 - 0x80 - 0x80) & 0xff
genPkt.addSubPkt(0x1000, 2, addr_off, 0x1, 0x80 * 4, data)
gen_file_def = "ebmmu_tc6_write"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx)
+genSlvSMReadData(1, 0, 0x80)
+genSlvSMReadData(2, 0, 0x80)
+genSlvSMReadData(3, 0, 0x80)
+genSlvSMReadData(4, 0, 0x80))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#--------------------------------------------------------------------------
#>>>>>>设置EB-MMU,测试用例7
genPkt.clean()
genPkt.setPktType(0)
addr_off = 0x58 + 0x80 + 0x98 + 0x81 + 0x8c
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 30
addr = addr_off + 0x0
#print(hex(addr))
data[0] = (addr & 0xff)
data[1] = (addr >> 8) & 0xff
data[2] = 0x00
data[3] = 0x10
data[4] = 0x00
data[5] = 0x08
data[6] = 0x80
data[7] = 0x00
data[8] = 0x03
data[9] = 0x01
genPkt.addSubPkt(0x1, 0, 0x0228, 0x1, 10, data)
data = [0,] * 30
addr = addr + 0x80
#print(hex(addr))
data[0] = (addr) & 0xff
data[1] = (addr >> 8) & 0xff
data[2] = 0x00
data[3] = 0x10
data[4] = 0x00
data[5] = 0x08
data[6] = 0x80
data[7] = 0x00
data[8] = 0x03
data[9] = 0x00
genPkt.addSubPkt(0x2, 0, 0x0228, 0x1, 10, data)
data = [0,] * 30
addr = addr + 0x80
#print(hex(addr))
data[0] = (addr) & 0xff
data[1] = (addr >> 8) & 0xff
data[2] = 0x00
data[3] = 0x10
data[4] = 0x00
data[5] = 0x08
data[6] = 0x80
data[7] = 0x00
data[8] = 0x03
data[9] = 0x01
genPkt.addSubPkt(0x3, 0, 0x0228, 0x1, 10, data)
data = [0,] * 30
addr = addr + 0x80
#print(hex(addr))
data[0] = (addr) & 0xff
data[1] = (addr >> 8) & 0xff
data[2] = 0x00
data[3] = 0x10
data[4] = 0x00
data[5] = 0x08
data[6] = 0x80
data[7] = 0x00
data[8] = 0x03
data[9] = 0x00
genPkt.addSubPkt(0x4, 0, 0x0228, 0x1, 10, data)
data = [0,] * 2
data[0] = 0x80
data[1] = 0x00
genPkt.addSubPkt(0x0, 0, 0x302, 0xe, 2, data)
gen_file_def = "ebmmu_tc7_settings"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>用EB-MMU方式读取EB-MMU设置
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 0x80 * 4
for i in range(0x80 * 4):
if i < 0x80:
data[i] = i & 0xff
elif i < 0x80+0x80:
data[i] = (i + 2 - 0x80) & 0xff
elif i < 0x80+0x80+0x80:
data[i] = (i + 3 - 0x80 - 0x80) & 0xff
else:
data[i] = (i + 5 - 0x80 - 0x80 - 0x80) & 0xff
genPkt.addSubPkt(0x1000, 2, addr_off, 0x1, 0x80 * 4, data)
gen_file_def = "ebmmu_tc7_write"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx)
+genSlvSMReadData(1, 0, 0x80)
+genSlvSMReadData(2, 0, 0x80)
+genSlvSMReadData(3, 0, 0x80)
+genSlvSMReadData(4, 0, 0x80))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#--------------------------------------------------------------------------
#>>>>>>设置EB-MMU,测试用例8广播写检查权限
genPkt.clean()
genPkt.setPktType(0)
addr_off = 0x0
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
addr = addr_off + 0x0
#print(hex(addr))
data[0] = (addr & 0xff)
data[1] = (addr >> 8) & 0xff
data[2] = 0x00
data[3] = 0x10
data[4] = 0x00
data[5] = 0x08
data[6] = 0x80
data[7] = 0x00
data[8] = 0x01
data[9] = 0x01
genPkt.addSubPkt(0x1, 0, 0x0200, 0xe, 80, data)
data = [0,] * 2
data[0] = 0x80
data[1] = 0x00
genPkt.addSubPkt(0x0, 0, 0x302, 0xe, 2, data)
gen_file_def = "ebmmu_tc8_settings"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>用EB-MMU方式读取EB-MMU设置, 8
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [1,] * 0x80
genPkt.addSubPkt(0x1000, 2, addr_off, 0x1, 0x80, data)
gen_file_def = "ebmmu_tc8_write"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx)
+genIFRwDataCode(1, 0x300, False, 0x20)
+genIFRwDataCode(2, 0x300, False, 0x20)
+genIFRwDataCode(3, 0x300, False, 0x20)
+genIFRwDataCode(4, 0x300, False, 0x20)
+genSlvSMReadData(1, 0, 0x80)
+genSlvSMReadData(2, 0, 0x80)
+genSlvSMReadData(3, 0, 0x80)
+genSlvSMReadData(4, 0, 0x80)
)
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#--------------------------------------------------------------------------
#>>>>>>设置EB-MMU,测试用例9广播写检查权限
genPkt.clean()
genPkt.setPktType(0)
addr_off = 0x0
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
addr = addr_off + 0x0
#print(hex(addr))
data[0] = (addr & 0xff)
data[1] = (addr >> 8) & 0xff
data[2] = 0x00
data[3] = 0x10
data[4] = 0x00
data[5] = 0x08
data[6] = 0x00
data[7] = 0x01
data[8] = 0x02
data[9] = 0x01
genPkt.addSubPkt(0x1, 0, 0x0200, 0xe, 80, data)
data = [0,] * 2
data[0] = 0x00
data[1] = 0x01
genPkt.addSubPkt(0x0, 0, 0x302, 0xe, 2, data)
gen_file_def = "ebmmu_tc9_settings"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>用EB-MMU方式读取EB-MMU设置, 9
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0xa5,] * 0x100
data[-1] = 0x5a
genPkt.addSubPkt(0x1000, 2, addr_off, 0x1, 0x100, data)
gen_file_def = "ebmmu_tc9_write"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx)
+genIFRwDataCode(1, 0x300, False, 0x20)
+genIFRwDataCode(2, 0x300, False, 0x20)
+genIFRwDataCode(3, 0x300, False, 0x20)
+genIFRwDataCode(4, 0x300, False, 0x20)
+genSlvSMReadData(1, 0, 0x100)
+genSlvSMReadData(2, 0, 0x100)
+genSlvSMReadData(3, 0, 0x100)
+genSlvSMReadData(4, 0, 0x100)
)
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#--------------------------------------------------------------------------
#>>>>>>设置EB-MMU,测试用例10广播写检查权限
genPkt.clean()
genPkt.setPktType(0)
addr_off = 0x0
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
addr = addr_off + 0x0
#print(hex(addr))
data[0] = (addr & 0xff)
data[1] = (addr >> 8) & 0xff
data[2] = 0x00
data[3] = 0x10
data[4] = 0x00
data[5] = 0x08
data[6] = 0x00
data[7] = 0x01
data[8] = 0x02
data[9] = 0x01
genPkt.addSubPkt(0x1, 0, 0x0200, 0xe, 80, data)
data = [0,] * 2
data[0] = 0x00
data[1] = 0x01
genPkt.addSubPkt(0x0, 0, 0x302, 0xe, 2, data)
gen_file_def = "ebmmu_tc10_settings"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>用EB-MMU方式读取EB-MMU设置, 10两次写入em-mmu
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0xc3,] * 0x100
data[-1] = 0x3c
genPkt.addSubPkt(0x1000, 2, addr_off, 0x1, 0x100, data)
gen_file_def = "ebmmu_tc10_write"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx)
)
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0x81,] * 0x100
data[-1] = 0x18
genPkt.addSubPkt(0x1000, 2, addr_off, 0x1, 0x100, data)
gen_file_def = "ebmmu_tc10b_write"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx)
+genIFRwDataCode(1, 0x300, False, 0x20)
+genIFRwDataCode(2, 0x300, False, 0x20)
+genIFRwDataCode(3, 0x300, False, 0x20)
+genIFRwDataCode(4, 0x300, False, 0x20)
+genSlvSMReadData(1, 0, 0x100)
+genSlvSMReadData(1, 0, 0x100)
+genSlvSMReadData(2, 0, 0x100)
+genSlvSMReadData(2, 0, 0x100)
+genSlvSMReadData(3, 0, 0x100)
+genSlvSMReadData(3, 0, 0x100)
+genSlvSMReadData(4, 0, 0x100)
+genSlvSMReadData(4, 0, 0x100)
)
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#--------------------------------------------------------------------------
#>>>>>>设置EB-MMU,测试用例11检查权限
genPkt.clean()
genPkt.setPktType(0)
addr = 0x10000000
addr_off = 0x0
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
addr = addr + addr_off
#print(hex(addr))
data[0] = addr & 0xff
data[1] = (addr >> 8) & 0xff
data[2] = (addr >> 16) & 0xff
data[3] = (addr >> 24) & 0xff
data[4] = 0x00
data[5] = 0x10
data[6] = 0x00
data[7] = 0x01
data[8] = 0x01
data[9] = 0x01
genPkt.addSubPkt(0x1, 0, 0x0200, 0x1, 80, data)
#subPkt参数索引、索引类型、地址、命令、长度、数据
addr_off = addr_off + 0x100
data = [0,] * 256
addr = addr + addr_off
data[0] = addr & 0xff
data[1] = (addr >> 8) & 0xff
data[2] = (addr >> 16) & 0xff
data[3] = (addr >> 24) & 0xff
data[4] = 0x00
data[5] = 0x10
data[6] = 0x00
data[7] = 0x01
data[8] = 0x01
data[9] = 0x01
genPkt.addSubPkt(0x2, 0, 0x0200, 0x1, 80, data)
#subPkt参数索引、索引类型、地址、命令、长度、数据
addr_off = addr_off + 0x100
data = [0,] * 256
addr = addr + addr_off
data[0] = addr & 0xff
data[1] = (addr >> 8) & 0xff
data[2] = (addr >> 16) & 0xff
data[3] = (addr >> 24) & 0xff
data[4] = 0x00
data[5] = 0x10
data[6] = 0x00
data[7] = 0x01
data[8] = 0x01
data[9] = 0x01
genPkt.addSubPkt(0x3, 0, 0x0200, 0x1, 80, data)
#subPkt参数索引、索引类型、地址、命令、长度、数据
addr_off = addr_off + 0x100
data = [0,] * 256
addr = addr + addr_off
data[0] = addr & 0xff
data[1] = (addr >> 8) & 0xff
data[2] = (addr >> 16) & 0xff
data[3] = (addr >> 24) & 0xff
data[4] = 0x00
data[5] = 0x10
data[6] = 0x00
data[7] = 0x01
data[8] = 0x01
data[9] = 0x01
genPkt.addSubPkt(0x4, 0, 0x0200, 0x1, 80, data)
data = [0,] * 2
data[0] = 0x00
data[1] = 0x01
genPkt.addSubPkt(0x0, 0, 0x302, 0xe, 2, data)
gen_file_def = "ebmmu_tc11_settings"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>用EB-MMU方式读取EB-MMU设置, 11两次写入em-mmu
genPkt.clean()
genPkt.setPktType(0)
data0 = list(range(0x100))
data1 = list(range(0xff, -1, -1))
genPkt.addBeforeExc( genIFRwDataCode(1, 0x1000, True, 0x100, data0)
+ genIFRwDataCode(1, 0x1000, True, 0x100, data1)
+ genIFRwDataCode(2, 0x1000, True, 0x100, data1)
+ genIFRwDataCode(2, 0x1000, True, 0x100, data0)
+ genIFRwDataCode(3, 0x1000, True, 0x100, data0)
+ genIFRwDataCode(3, 0x1000, True, 0x100, data1)
+ genIFRwDataCode(4, 0x1000, True, 0x100, data1)
+ genIFRwDataCode(4, 0x1000, True, 0x100, data0))
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0, ] * 0x100 * 4
gen_file_def = "ebmmu_tc11_write"
sm_idx = 0
genPkt.addSubPkt(0x1000, 2, 0, 0x0, 0x100 * 4, data)
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx)
+genIFRwDataCode(1, 0x300, False, 0x20)
+genIFRwDataCode(2, 0x300, False, 0x20)
+genIFRwDataCode(3, 0x300, False, 0x20)
+genIFRwDataCode(4, 0x300, False, 0x20)
)
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0x0,] * 0x100 * 4
gen_file_def = "ebmmu_tc11b_write"
sm_idx = 0
genPkt.addSubPkt(0x1000, 2, 0, 0x0, 0x100 * 4, data)
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx)
+genIFRwDataCode(1, 0x300, False, 0x20)
+genIFRwDataCode(2, 0x300, False, 0x20)
+genIFRwDataCode(3, 0x300, False, 0x20)
+genIFRwDataCode(4, 0x300, False, 0x20)
)
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#--------------------------------------------------------------------------
#>>>>>> 测试用例1 看门狗测试
genPkt.clean()
genPkt.setPktType(0)
data = 1<<1 ##使能看门狗1
data0 = [data&0xff, (data>>8)&0xff, (data>>16)&0xff, (data>>24)&0xff]
data = 0x0010 ##看门狗的超时值
data1 = [data&0xff, (data>>8)&0xff, (data>>16)&0xff, (data>>24)&0xff]
data = 0xffffffff ##清除中断
data2 = [data&0xff, (data>>8)&0xff, (data>>16)&0xff, (data>>24)&0xff]
genPkt.addBeforeExc( genIFRwDataCode(1, 0x404, True, 4, data0)
+ genIFRwDataCode(1, 0x40C, True, 4, data1)
+ genIFRwDataCode(1, 0x078, True, 4, data2)
+ genIFRwDataCode(2, 0x078, True, 4, data2)
+ genIFRwDataCode(3, 0x078, True, 4, data2)
+ genIFRwDataCode(4, 0x078, True, 4, data2)
+ genIFRwDataCode(1, 0x400, True, 4, [0xff, 0xff, 0xff, 0xff])
+ genIFRwDataCode(0, 0x074, False, 0x04)
+ genIFRwDataCode(1, 0x074, False, 0x04)
+ genIFRwDataCode(2, 0x074, False, 0x04)
+ genIFRwDataCode(3, 0x074, False, 0x04)
+ genIFRwDataCode(4, 0x074, False, 0x04)
+ genIFRwDataCode(1, 0x400, False, 0x04))
#genPkt.addBeforeExc( genIFRwDataCode(1, 0x078, True, 4, [0xff, 0xff, 0xff, 0xff]))
data = [0,] * 2
data[0] = 0x80
data[1] = 0x00
genPkt.addSubPkt(0x0, 0, 0x302, 0xe, 2, data)
data = [0,] * 0x50
#subPkt参数索引、索引类型、地址、命令、长度、数据
genPkt.addSubPkt(1, 0, 0x800, 0x1, 0x50, data)
gen_file_def = "wd_tc1"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
+genWriteTransPktCode(gen_file_def, sm_idx)
+genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx)
+genIFRwDataCode(1, 0x800, False, 0x80)
+genIFRwDataCode(0, 0x074, False, 0x04)
+genIFRwDataCode(1, 0x074, False, 0x04)
+genIFRwDataCode(2, 0x074, False, 0x04)
+genIFRwDataCode(3, 0x074, False, 0x04)
+genIFRwDataCode(4, 0x074, False, 0x04)
+genIFRwDataCode(1, 0x400, False, 0x04))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)