Files
eb001/tb/shinTest/testcase/sync.py

464 lines
18 KiB
Python
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.
from pyutils import *
def tc1():
genPkt = GenPkt()
gen_file_def = "sync_tc01"
sm_idx = 0
tc_des = "发送时钟信息,完成后,从站的系统时间与主站时间完全同步。主站发送\\n" \
+ "自己的时钟和系统延迟,从站利用该信息进行校准自己的时钟。需要在波形软件里确认。\\n" \
+ "仅看通讯数据无法确定系统功能正常。"
#-------------------------------------------------------------------------
#>>>>>>同步数据包
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
genPkt.addSubPkt(0x0, 0, 0x0, 0xc, 12, b'\0'*12)
genPkt.addBeforeExc(genTcStartFrameCode(gen_file_def, tc_des)
+genEnableInsertTimeCode(0xa))
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()
+genMessageCode("--读取中断")
+genIFRwDataCode(0, 0x74, False, 4)
+genIFRwDataCode(1, 0x74, False, 4)
+genIFRwDataCode(2, 0x74, False, 4)
+genIFRwDataCode(3, 0x74, False, 4)
+genIFRwDataCode(4, 0x74, False, 4)
+genMessageCode("--清除中断")
+genIFRwDataCode(0, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
+genIFRwDataCode(1, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
+genIFRwDataCode(2, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
+genIFRwDataCode(3, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
+genIFRwDataCode(4, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
+genMessageCode("--读取中断")
+genIFRwDataCode(0, 0x74, False, 4)
+genIFRwDataCode(1, 0x74, False, 4)
+genIFRwDataCode(2, 0x74, False, 4)
+genIFRwDataCode(3, 0x74, False, 4)
+genIFRwDataCode(4, 0x74, False, 4)
+genTcEndFrameCode(gen_file_def)) #+genDisableInsertTimeCode())
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
return gen_file_def
def tc2():
genPkt = GenPkt()
gen_file_def = "sync_tc02"
sm_idx = 0
tc_des = "配置Sync信号为电平触发设置SYNC的同步周期SYNC1、SYNC3的偏移。\\n" \
+ "SYNC触发后需要手动清除SYNC信号。"
#-------------------------------------------------------------------------
#>>>>>>设置同步信号的数据包,在波形中确认定时的有效性
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
#28, 29, 30, 31
data[28] = 0x81 #sync1偏移
data[29] = 0x0
#32,33,34,35 #sync2偏移
#36,37,38,39
data[36] = 0x20 #sync3偏移
data[37] = 0x00
genPkt.addSubPkt(0, 0, 0x120, 0xe, 0x28, data)
sm_idx = 0
genPkt.addBeforeExc(genTcStartFrameCode(gen_file_def, tc_des)
)
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)
+"\n#1000000\n"
+genMessageCode("--读取中断")
+genIFRwDataCode(0, 0x74, False, 4)
+genIFRwDataCode(1, 0x74, False, 4)
+genIFRwDataCode(2, 0x74, False, 4)
+genIFRwDataCode(3, 0x74, False, 4)
+genIFRwDataCode(4, 0x74, False, 4)
+genMessageCode("--清除中断")
+genIFRwDataCode(0, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
+genIFRwDataCode(1, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
+genIFRwDataCode(2, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
+genIFRwDataCode(3, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
+genIFRwDataCode(4, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
+genMessageCode("--读取中断")
+genIFRwDataCode(0, 0x74, False, 4)
+genIFRwDataCode(1, 0x74, False, 4)
+genIFRwDataCode(2, 0x74, False, 4)
+genIFRwDataCode(3, 0x74, False, 4)
+genIFRwDataCode(4, 0x74, False, 4)
+genTcEndFrameCode(gen_file_def)
)
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
return gen_file_def
def tc3():
genPkt = GenPkt()
gen_file_def = "sync_tc03"
sm_idx = 0
tc_des = "SYNC信号采用脉冲触发4个设备3个周期先用广播包发送公共周期然后34设备单独指定周期。\\n" \
+ "需要在波形文件里查看。"
#-------------------------------------------------------------------------
#>>>>>>设置同步信号的数据包2
genPkt.clean()
genPkt.setPktType(0)
sm_idx = 3
genPkt.addBeforeExc(genTcStartFrameCode(gen_file_def, tc_des)
+ '''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)
+"#500000"
+genMessageCode("--读取中断")
+genIFRwDataCode(0, 0x74, False, 4)
+genIFRwDataCode(1, 0x74, False, 4)
+genIFRwDataCode(2, 0x74, False, 4)
+genIFRwDataCode(3, 0x74, False, 4)
+genIFRwDataCode(4, 0x74, False, 4)
+genMessageCode("--清除中断")
+genIFRwDataCode(0, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
+genIFRwDataCode(1, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
+genIFRwDataCode(2, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
+genIFRwDataCode(3, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
+genIFRwDataCode(4, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
+genMessageCode("--读取中断")
+genIFRwDataCode(0, 0x74, False, 4)
+genIFRwDataCode(1, 0x74, False, 4)
+genIFRwDataCode(2, 0x74, False, 4)
+genIFRwDataCode(3, 0x74, False, 4)
+genIFRwDataCode(4, 0x74, False, 4)
+genTcEndFrameCode(gen_file_def))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def,), 1)
return gen_file_def
def tc4():
genPkt = GenPkt()
gen_file_def = "sync_tc04"
sm_idx = 0
tc_des = "SYNC信号采用脉冲触发4个设备4个周期先用广播包发送公共周期然后342设备单独指定周期。\\n" \
+ "需要在波形文件里查看具体的效果。"
#-------------------------------------------------------------------------
#>>>>>>设置同步信号的数据包3
genPkt.clean()
genPkt.setPktType(0)
sm_idx = 3
genPkt.addBeforeExc(genTcStartFrameCode(gen_file_def, tc_des)
+ '''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)
+genMessageCode("--读取中断")
+genIFRwDataCode(0, 0x74, False, 4)
+genIFRwDataCode(1, 0x74, False, 4)
+genIFRwDataCode(2, 0x74, False, 4)
+genIFRwDataCode(3, 0x74, False, 4)
+genIFRwDataCode(4, 0x74, False, 4)
+genMessageCode("--清除中断")
+genIFRwDataCode(0, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
+genIFRwDataCode(1, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
+genIFRwDataCode(2, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
+genIFRwDataCode(3, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
+genIFRwDataCode(4, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
+genMessageCode("--读取中断")
+genIFRwDataCode(0, 0x74, False, 4)
+genIFRwDataCode(1, 0x74, False, 4)
+genIFRwDataCode(2, 0x74, False, 4)
+genIFRwDataCode(3, 0x74, False, 4)
+genIFRwDataCode(4, 0x74, False, 4)
+genTcEndFrameCode(gen_file_def))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def,), 1)
return gen_file_def
def tc5():
genPkt = GenPkt()
gen_file_def = "sync_tc05"
sm_idx = 0
tc_des = "发送时钟信息,完成后,从站的系统时间与主站时间完全同步。主站发送\\n" \
+ "自己的时钟和系统延迟,从站利用该信息进行校准自己的时钟。需要在波形软件里确认。\\n" \
+ "仅看通讯数据无法确定系统功能正常。"
#-------------------------------------------------------------------------
#>>>>>>同步数据包
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
genPkt.addSubPkt(0x0, 0, 0x0, 0xd, 10, [0, ] * 10)
genPkt.addSubPkt(0x0, 0, 0x0, 0xd, 10, [0, ] * 10)
genPkt.addSubPkt(0x0, 0, 0x0, 0xc, 12, [0, ] * 12)
genPkt.addBeforeExc(genTcStartFrameCode(gen_file_def, tc_des)
+genEnableInsertTimeCode(0xa + 18 + 18))
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()
+genMessageCode("--读取中断")
+genIFRwDataCode(0, 0x74, False, 4)
+genIFRwDataCode(1, 0x74, False, 4)
+genIFRwDataCode(2, 0x74, False, 4)
+genIFRwDataCode(3, 0x74, False, 4)
+genIFRwDataCode(4, 0x74, False, 4)
+genMessageCode("--清除中断")
+genIFRwDataCode(0, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
+genIFRwDataCode(1, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
+genIFRwDataCode(2, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
+genIFRwDataCode(3, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
+genIFRwDataCode(4, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
+genMessageCode("--读取中断")
+genIFRwDataCode(0, 0x74, False, 4)
+genIFRwDataCode(1, 0x74, False, 4)
+genIFRwDataCode(2, 0x74, False, 4)
+genIFRwDataCode(3, 0x74, False, 4)
+genIFRwDataCode(4, 0x74, False, 4)
+genTcEndFrameCode(gen_file_def)) #+genDisableInsertTimeCode())
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
return gen_file_def