采用新的生成包的机制
This commit is contained in:
@@ -269,6 +269,7 @@ initial begin
|
|||||||
#3000000
|
#3000000
|
||||||
#500000
|
#500000
|
||||||
#1000000
|
#1000000
|
||||||
|
#2000000
|
||||||
//#10000000
|
//#10000000
|
||||||
`endif
|
`endif
|
||||||
|
|
||||||
@@ -1214,6 +1215,22 @@ initial begin
|
|||||||
_t_end = $time;
|
_t_end = $time;
|
||||||
$fdisplay(spidata_file, "该测试用例运行时间:%2tns", (_t_end - _t_start) / 1000);
|
$fdisplay(spidata_file, "该测试用例运行时间:%2tns", (_t_end - _t_start) / 1000);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
begin:SYNC_TESTCASE2
|
||||||
|
_t_start = $time;
|
||||||
|
#1000
|
||||||
|
|
||||||
|
`include "sync_sig2_pkt.vh"
|
||||||
|
|
||||||
|
//spi_trans( (16'h0100), (`SPI_READ), (32), (`IF_IDX(0)) );
|
||||||
|
spi_trans( (16'h0100), (`SPI_READ), (16'h48), (`IF_IDX(1)) );
|
||||||
|
spi_trans( (16'h0100), (`SPI_READ), (16'h48), (`IF_IDX(2)) );
|
||||||
|
spi_trans( (16'h0100), (`SPI_READ), (16'h48), (`IF_IDX(3)) );
|
||||||
|
spi_trans( (16'h0100), (`SPI_READ), (16'h48), (`IF_IDX(4)) );
|
||||||
|
|
||||||
|
_t_end = $time;
|
||||||
|
$fdisplay(spidata_file, "该测试用例运行时间:%2tns", (_t_end - _t_start) / 1000);
|
||||||
|
end
|
||||||
`endif
|
`endif
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -23,9 +23,12 @@ class GenPkt(object):
|
|||||||
else:
|
else:
|
||||||
self.pkt_type = type
|
self.pkt_type = type
|
||||||
|
|
||||||
def addSentence(self, str):
|
def addBeforeExc(self, str):
|
||||||
self.sub_pkt.append([1, 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):
|
def addSubPkt(self, dev_idx, ptype, addr, cmd, len, data):
|
||||||
if (len > 2032):
|
if (len > 2032):
|
||||||
print('Error, bad subpkt len:%d', len)
|
print('Error, bad subpkt len:%d', len)
|
||||||
@@ -161,17 +164,27 @@ class GenPkt(object):
|
|||||||
f.write(define_str + "(array) \\\n")
|
f.write(define_str + "(array) \\\n")
|
||||||
for _k in range(i):
|
for _k in range(i):
|
||||||
if _k < (i - 1):
|
if _k < (i - 1):
|
||||||
f.write("\tarray``[%d]=8'h%02X;\\\n"%(3 + _k, self.pkt_buf[_k]))
|
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:
|
else:
|
||||||
f.write("\tarray``[%d]=8'h%02X;\n"%(3 + _k, self.pkt_buf[_k]))
|
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:
|
else:
|
||||||
for _k in range(i):
|
for _k in range(i):
|
||||||
if type(self.pkt_buf[_k]) == int:
|
f.write("txBuf[%d]=8'h%02X;\n"%(3 + _k, self.pkt_buf[_k]))
|
||||||
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()
|
f.close()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#def genAfterExc(gen, )
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
genPkt = GenPkt()
|
genPkt = GenPkt()
|
||||||
|
|
||||||
@@ -364,8 +377,13 @@ if __name__ == '__main__':
|
|||||||
#>>>>>>设置同步信号的数据包2
|
#>>>>>>设置同步信号的数据包2
|
||||||
genPkt.clean()
|
genPkt.clean()
|
||||||
genPkt.setPktType(0)
|
genPkt.setPktType(0)
|
||||||
|
gen_file_def = "sync_sig2_pkt"
|
||||||
|
sm_idx = 0
|
||||||
|
|
||||||
genPkt.addSentence(''' ''')
|
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参数:索引、索引类型、地址、命令、长度、数据
|
#subPkt参数:索引、索引类型、地址、命令、长度、数据
|
||||||
data = [0,] * 100 #bytearray(b"\0" * 100)
|
data = [0,] * 100 #bytearray(b"\0" * 100)
|
||||||
@@ -375,23 +393,69 @@ if __name__ == '__main__':
|
|||||||
data[6] = 0xa
|
data[6] = 0xa
|
||||||
data[8] = 0xa
|
data[8] = 0xa
|
||||||
|
|
||||||
data[16] = 0x00 #地址0x130, sync同步点
|
data[16] = '''(_temp_time & 8'hff)''' #地址0x130, sync同步点
|
||||||
data[17] = 0x00 #地址0x131
|
data[17] = '''(_temp_time >> 8) & 8'hff''' #地址0x131
|
||||||
#data[18] = 0x10
|
data[18] = '''(_temp_time >> 16) & 8'hff'''
|
||||||
|
data[19] = '''(_temp_time >> 24) & 8'hff'''
|
||||||
|
|
||||||
data[24] = 0x80 #地址0x138, sync周期 4B
|
data[24] = 0x80 #地址0x138, sync周期 4B
|
||||||
data[25] = 0x00 #地址0x139
|
data[25] = 0x00 #地址0x139
|
||||||
|
|
||||||
data[28] = 0x81 #sync1偏移
|
data[28] = 0x0 #sync1偏移
|
||||||
data[29] = 0x0
|
data[29] = 0x0
|
||||||
|
|
||||||
data[36] = 0x20#sync3偏移
|
data[36] = 0x0#sync3偏移
|
||||||
data[37] = 0x00
|
data[37] = 0x0
|
||||||
|
|
||||||
genPkt.addSubPkt(0, 0, 0x120, 0xe, 0x28, data)
|
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)
|
genPkt.addSubPkt(3, 0, 0x120, 0x1, 0x28, data)
|
||||||
|
|
||||||
genPkt.gen("./generated/shin/sync_sig2_pkt.vh", 1)
|
genPkt.addAfterExc(
|
||||||
|
'''\n//写入发送长度\n'''
|
||||||
|
+ '''`DEF_%s_sm(txBuf);\n'''%(gen_file_def, )
|
||||||
|
+ '''spi_trans( (`MST_TX%d_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(0)) );\n'''%(sm_idx,)
|
||||||
|
+ '''spi_trans( (`MST_RX%d_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(0)) );\n'''%(sm_idx,)
|
||||||
|
+ '''\n$fdisplay(spidata_file, "<<发包:");\n'''
|
||||||
|
+ '''`DEF_%s(txBuf);\n'''%(gen_file_def, )
|
||||||
|
+ '''spi_trans( (`MST_TX%d_ADDR), (`SPI_WRITE), (`DEF_%s_len), (`IF_IDX(0)) );\n'''%(sm_idx, gen_file_def, )
|
||||||
|
|
||||||
|
#+ '''//写入替换时间戳替换地址\n'''
|
||||||
|
#+ '''txBuf[0+3] = 8'h0c;\n'''
|
||||||
|
#+ '''txBuf[1+3] = 8'hc0;\n'''
|
||||||
|
#+ '''spi_trans( (16'h24), (`SPI_WRITE), (2), (`IF_IDX(0)) );\n'''
|
||||||
|
|
||||||
|
+ '''\n//请求发送\n'''
|
||||||
|
+ '''txBuf[0+3] = `MST_TX_TRIGGER(%d);\n'''%(sm_idx, )
|
||||||
|
+ '''spi_trans( (16'h20), (`SPI_WRITE), (1), (`IF_IDX(0)) );\n'''
|
||||||
|
|
||||||
|
+ '''\n//等待回包\n'''
|
||||||
|
+ '''@(posedge isResp) #5 begin end\n'''
|
||||||
|
+ '''$fdisplay(spidata_file, ">>回包:");\n'''
|
||||||
|
+ '''spi_trans( (`MST_RX%d_ADDR), (`SPI_READ), (`DEF_%s_len), (`IF_IDX(0)) );\n'''%(sm_idx, gen_file_def,))
|
||||||
|
|
||||||
|
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def,), 1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user