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

2313 lines
85 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 = "ebmmu_tc01"
sm_idx = 0
tc_des = "每个从站都使用ebmmu[0]共4个mmu从0x1000_0000位置向后对齐每个设备占10个字节\\n" \
+ "映射0x200~0x20a中间无字节空洞。主站使用1包数据将4个设备的数据一次性读上来。\\n"\
+ "检查内容ebmmu工作状态、回包工作计数、SMx的状态、中断状态、统计信息、相关时序"
#-------------------------------------------------------------------------
#>>>>>>设置EB-MMU 1
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 30
setting_ebmmu_regs(data, 0, 0x10000000, 0x0200, 0x0a, 0x3, 0x1)
genPkt.addSubPkt(0x1, 0, 0x0200, 0x1, 10, data)
data = [0,] * 30
setting_ebmmu_regs(data, 0, 0x1000000a, 0x0200, 0x0a, 0x3, 0x1)
genPkt.addSubPkt(0x2, 0, 0x0200, 0x1, 10, data)
data = [0,] * 30
setting_ebmmu_regs(data, 0, 0x10000014, 0x0200, 0x0a, 0x3, 0x1)
genPkt.addSubPkt(0x3, 0, 0x0200, 0x1, 10, data)
data = [0,] * 30
setting_ebmmu_regs(data, 0, 0x1000001e, 0x0200, 0x0a, 0x3, 0x1)
genPkt.addSubPkt(0x4, 0, 0x0200, 0x1, 10, data)
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))
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_ap = gen_file_def + "_rw1"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx)
+genWriteTransPktCode(gen_file_def_ap, sm_idx)
+genTrgTransPktCode(gen_file_def_ap, sm_idx)
+genReadAckPktCode(gen_file_def_ap, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
#>>>>>>用EB-MMU方式读取EB-MMU设置
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 40
genPkt.addSubPkt(0x1000, 2, 0x0000, 0x0, 40, data)
gen_file_def_ap = gen_file_def + "_rw2"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx)
+genWriteTransPktCode(gen_file_def_ap, sm_idx)
+genTrgTransPktCode(gen_file_def_ap, sm_idx)
+genReadAckPktCode(gen_file_def_ap, sm_idx)
+genTcEndFrameCode(gen_file_def)
)
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
return gen_file_def
def tc2():
genPkt = GenPkt()
gen_file_def = "ebmmu_tc02"
sm_idx = 0
tc_des = "每个从站都使用ebmmu[1]共4个mmu从0x2000_0000位置向后对齐每个设备占16个字节\\n" \
+ "映射0x00~0x10中间无字节空洞。主站使用1包数据将4个设备的数据一次性读上来。\\n"\
+ "检查内容ebmmu工作状态、回包工作计数、SMx的状态、中断状态、统计信息、相关时序"
#-------------------------------------------------------------------------
#>>>>>>设置EB-MMU 2
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 30
setting_ebmmu_regs(data, 0, 0x20000000, 0x0000, 0x10, 0x1, 0x1)
genPkt.addSubPkt(0x1, 0, 0x020a, 0x1, 10, data)
data = [0,] * 30
setting_ebmmu_regs(data, 0, 0x20000010, 0x0000, 0x10, 0x1, 0x1)
genPkt.addSubPkt(0x2, 0, 0x020a, 0x1, 10, data)
data = [0,] * 30
setting_ebmmu_regs(data, 0, 0x20000020, 0x0000, 0x10, 0x1, 0x1)
genPkt.addSubPkt(0x3, 0, 0x020a, 0x1, 10, data)
data = [0,] * 30
setting_ebmmu_regs(data, 0, 0x20000030, 0x0000, 0x10, 0x1, 0x1)
genPkt.addSubPkt(0x4, 0, 0x020a, 0x1, 10, data)
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))
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_ap = gen_file_def + "_rw1"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx)
+genWriteTransPktCode(gen_file_def_ap, sm_idx)
+genTrgTransPktCode(gen_file_def_ap, sm_idx)
+genReadAckPktCode(gen_file_def_ap, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
#>>>>>>用EB-MMU方式读取EB-MMU设置
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 100
genPkt.addSubPkt(0x2000, 2, 0x0000, 0x0, 0x40, data)
gen_file_def_ap = gen_file_def + "_rw2"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx)
+genWriteTransPktCode(gen_file_def_ap, sm_idx)
+genTrgTransPktCode(gen_file_def_ap, sm_idx)
+genReadAckPktCode(gen_file_def_ap, sm_idx)
+genTcEndFrameCode(gen_file_def))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1,True, gen_file_def_ap)
return gen_file_def
def tc3():
genPkt = GenPkt()
gen_file_def = "ebmmu_tc03"
sm_idx = 0
tc_des = "每个从站都使用ebmmu[2]共4个mmu从0x1000_0028位置向后对齐每个设备占12个字节\\n" \
+ "映射0x00~0x0c, 中间无字节空洞。使用1包数据将4个设备的数据一次性读上来。\\n"\
+ "注意该测试用例读取时是从0x1000_0000开始读取的\\n"\
+ "检查内容ebmmu工作状态、回包工作计数、SMx的状态、中断状态、统计信息、相关时序"
#-------------------------------------------------------------------------
#>>>>>>设置EB-MMU 3
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 30
setting_ebmmu_regs(data, 0, 0x10000000, 0x0200, 0x0a, 0x3, 0x1)
genPkt.addSubPkt(0x1, 0, 0x0200, 0x1, 10, data)
data = [0,] * 30
setting_ebmmu_regs(data, 0, 0x1000000a, 0x0200, 0x0a, 0x3, 0x1)
genPkt.addSubPkt(0x2, 0, 0x0200, 0x1, 10, data)
data = [0,] * 30
setting_ebmmu_regs(data, 0, 0x10000014, 0x0200, 0x0a, 0x3, 0x1)
genPkt.addSubPkt(0x3, 0, 0x0200, 0x1, 10, data)
data = [0,] * 30
setting_ebmmu_regs(data, 0, 0x1000001e, 0x0200, 0x0a, 0x3, 0x1)
genPkt.addSubPkt(0x4, 0, 0x0200, 0x1, 10, data)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 30
setting_ebmmu_regs(data, 0, 0x1000001e+0xa, 0x0000, 0x0c, 0x1, 0x1)
genPkt.addSubPkt(0x1, 0, 0x0214, 0x1, 10, data)
data = [0,] * 30
setting_ebmmu_regs(data, 0, 0x1000001e+0xa+0xc, 0x0000, 0x0c, 0x1, 0x1)
genPkt.addSubPkt(0x2, 0, 0x0214, 0x1, 10, data)
data = [0,] * 30
setting_ebmmu_regs(data, 0, 0x1000001e+0xa+0xc+0xc, 0x0000, 0x0c, 0x1, 0x1)
genPkt.addSubPkt(0x3, 0, 0x0214, 0x1, 10, data)
data = [0,] * 30
setting_ebmmu_regs(data, 0, 0x1000001e+0xa+0xc+0xc+0xc, 0x0000, 0x0c, 0x1, 0x1)
genPkt.addSubPkt(0x4, 0, 0x0214, 0x1, 10, data)
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))
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_ap = "ebmmu_tc03_rw"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx)
+genWriteTransPktCode(gen_file_def_ap, sm_idx)
+genTrgTransPktCode(gen_file_def_ap, sm_idx)
+genReadAckPktCode(gen_file_def_ap, sm_idx)
+genTcEndFrameCode(gen_file_def))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
return gen_file_def
def tc4():
genPkt = GenPkt()
gen_file_def = "ebmmu_tc04"
sm_idx = 0
tc_des = "每个从站使用ebmmu[3]共4个mmu从0x1000_0058位置向后对齐\\n" \
+ "分别占用不同大小的空间。使用1包数据将4个设备的数据一次性读上来。\\n"\
+ "检查内容ebmmu工作状态、回包工作计数、SMx的状态、中断状态、统计信息、相关时序"
#-------------------------------------------------------------------------
#>>>>>>设置EB-MMU 4
genPkt.clean()
genPkt.setPktType(0)
genPkt.addBeforeExc(genTcStartFrameCode(gen_file_def, tc_des)
+ genSlvSMWriteData(1, 1, 0x80)
+ genSlvSMWriteData(2, 3, 0x98)
+ genSlvSMWriteData(3, 5, 0x81)
+ genSlvSMWriteData(4, 7, 0x8c))
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 30
setting_ebmmu_regs(data, 0, 0x10000058, 0x1000, 0x80, 0x1, 0x1)
genPkt.addSubPkt(0x1, 0, 0x021e, 0x1, 10, data)
data = [0,] * 30
addr = 0x58 + 0x80
setting_ebmmu_regs(data, 0, 0x10000000+addr, 0x2000, 0x98, 0x1, 0x1)
genPkt.addSubPkt(0x2, 0, 0x021e, 0x1, 10, data)
data = [0,] * 30
addr = 0x58 + 0x80 + 0x98
setting_ebmmu_regs(data, 0, 0x10000000+addr, 0x3000, 0x81, 0x1, 0x1)
genPkt.addSubPkt(0x3, 0, 0x021e, 0x1, 10, data)
data = [0,] * 30
addr = 0x58 + 0x80 + 0x98 + 0x81
setting_ebmmu_regs(data, 0, 0x10000000+addr, 0x4000, 0x8c, 0x1, 0x1)
genPkt.addSubPkt(0x4, 0, 0x021e, 0x1, 10, data)
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_ap = gen_file_def + "_rw"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx)
+genWriteTransPktCode(gen_file_def_ap, sm_idx)
+genTrgTransPktCode(gen_file_def_ap, sm_idx)
+genReadAckPktCode(gen_file_def_ap, sm_idx)
+genTcEndFrameCode(gen_file_def)
)
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
return gen_file_def
def tc5():
genPkt = GenPkt()
gen_file_def = "ebmmu_tc05"
sm_idx = 0
tc_des = "每个从站使用ebmmu[3]共4个mmu从0x1000_0058位置向后对齐\\n" \
+ "分别占用不同大小的空间。使用1包数据将4个设备的数据一次性读上来。由于从站没有数据读上来全是随机数据。\\n"
genPkt.clean()
genPkt.setPktType(0)
genPkt.addBeforeExc(genTcStartFrameCode(gen_file_def, tc_des))
'''
+ genSlvSMWriteData(1, 1, 0x80)
+ genSlvSMWriteData(2, 3, 0x98)
+ genSlvSMWriteData(3, 5, 0x81)
+ genSlvSMWriteData(4, 7, 0x8c))
'''
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 30
setting_ebmmu_regs(data, 0, 0x10000058, 0x1000, 0x80, 0x1, 0x1)
genPkt.addSubPkt(0x1, 0, 0x021e, 0x1, 10, data)
data = [0,] * 30
addr = 0x58 + 0x80
setting_ebmmu_regs(data, 0, 0x10000000+addr, 0x2000, 0x98, 0x1, 0x1)
genPkt.addSubPkt(0x2, 0, 0x021e, 0x1, 10, data)
data = [0,] * 30
addr = 0x58 + 0x80 + 0x98
setting_ebmmu_regs(data, 0, 0x10000000+addr, 0x3000, 0x81, 0x1, 0x1)
genPkt.addSubPkt(0x3, 0, 0x021e, 0x1, 10, data)
data = [0,] * 30
addr = 0x58 + 0x80 + 0x98 + 0x81
setting_ebmmu_regs(data, 0, 0x10000000+addr, 0x4000, 0x8c, 0x1, 0x1)
genPkt.addSubPkt(0x4, 0, 0x021e, 0x1, 10, data)
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设置 5
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 550
genPkt.addSubPkt(0x1000, 2, 0x0058, 0x0, 0x80+0x98+0x81+0x8c, data)
gen_file_def_ap = gen_file_def + "_rw"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx)
+genWriteTransPktCode(gen_file_def_ap, sm_idx)
+genTrgTransPktCode(gen_file_def_ap, sm_idx)
+genReadAckPktCode(gen_file_def_ap, sm_idx)
+genTcEndFrameCode(gen_file_def))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
return gen_file_def
def tc6():
genPkt = GenPkt()
gen_file_def = "ebmmu_tc06"
sm_idx = 0
tc_des = "每个从站测试1个ebmmu[2]共4个mmu从0x2000_0000位置向后对齐每个设备占12个字节。\\n" \
+ "使用1包数据将4个设备的数据一次性读上来。\\n"\
+ "检查内容ebmmu工作状态、回包工作计数、SMx的状态、中断状态、统计信息、相关时序"
#--------------------------------------------------------------------------
#>>>>>>设置EB-MMU,测试用例6
genPkt.clean()
genPkt.setPktType(0)
addr_off = 0x58 + 0x80 + 0x98 + 0x81 + 0x8c
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 30
addr = addr_off + 0x0
setting_ebmmu_regs(data, 0, 0x10000000+addr, 0x0800, 0x80, 0x3, 0x1)
genPkt.addSubPkt(0x1, 0, 0x0228, 0x1, 10, data)
data = [0,] * 30
addr = addr + 0x80
setting_ebmmu_regs(data, 0, 0x10000000+addr, 0x0800, 0x80, 0x3, 0x1)
genPkt.addSubPkt(0x2, 0, 0x0228, 0x1, 10, data)
data = [0,] * 30
addr = addr + 0x80
setting_ebmmu_regs(data, 0, 0x10000000+addr, 0x0800, 0x80, 0x3, 0x1)
genPkt.addSubPkt(0x3, 0, 0x0228, 0x1, 10, data)
data = [0,] * 30
addr = addr + 0x80
setting_ebmmu_regs(data, 0, 0x10000000+addr, 0x0800, 0x80, 0x3, 0x1)
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.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))
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_ap = "ebmmu_tc6_rw"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx)
+genWriteTransPktCode(gen_file_def_ap, sm_idx)
+genTrgTransPktCode(gen_file_def_ap, sm_idx)
+genReadAckPktCode(gen_file_def_ap, sm_idx)
+genSlvSMReadData(1, 0, 0x80)
+genSlvSMReadData(2, 0, 0x80)
+genSlvSMReadData(3, 0, 0x80)
+genSlvSMReadData(4, 0, 0x80)
+genTcEndFrameCode(gen_file_def))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
return gen_file_def
def tc7():
genPkt = GenPkt()
gen_file_def = "ebmmu_tc07"
sm_idx = 0
tc_des = "每个从站测试1个ebmmu[2]共4个mmu从0x2000_0000位置向后对齐每个设备占12个字节。\\n" \
+ "使用1包数据将4个设备的数据一次性读上来。\\n"\
+ "检查内容ebmmu工作状态、回包工作计数、SMx的状态、中断状态、统计信息、相关时序"
#--------------------------------------------------------------------------
#>>>>>>设置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))
setting_ebmmu_regs(data, 0, 0x10000000+addr, 0x0800, 0x80, 0x3, 0x1)
genPkt.addSubPkt(0x1, 0, 0x0228, 0x1, 10, data)
data = [0,] * 30
addr = addr + 0x80
#print(hex(addr))
setting_ebmmu_regs(data, 0, 0x10000000+addr, 0x0800, 0x80, 0x3, 0x0)
genPkt.addSubPkt(0x2, 0, 0x0228, 0x1, 10, data)
data = [0,] * 30
addr = addr + 0x80
setting_ebmmu_regs(data, 0, 0x10000000+addr, 0x0800, 0x80, 0x3, 0x1)
genPkt.addSubPkt(0x3, 0, 0x0228, 0x1, 10, data)
data = [0,] * 30
addr = addr + 0x80
setting_ebmmu_regs(data, 0, 0x10000000+addr, 0x0800, 0x80, 0x3, 0x0)
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.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))
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_ap = "ebmmu_tc7_rw"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx)
+genWriteTransPktCode(gen_file_def_ap, sm_idx)
+genTrgTransPktCode(gen_file_def_ap, sm_idx)
+genReadAckPktCode(gen_file_def_ap, sm_idx)
+genSlvSMReadData(1, 0, 0x80)
+genSlvSMReadData(2, 0, 0x80)
+genSlvSMReadData(3, 0, 0x80)
+genSlvSMReadData(4, 0, 0x80)
+genTcEndFrameCode(gen_file_def))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
return gen_file_def
def tc8():
genPkt = GenPkt()
gen_file_def = "ebmmu_tc08"
sm_idx = 0
tc_des = "每个从站测试1个ebmmu[2]共4个mmu从0x2000_0000位置向后对齐每个设备占12个字节。\\n" \
+ "使用1包数据将4个设备的数据一次性读上来。\\n"\
+ "检查内容ebmmu工作状态、回包工作计数、SMx的状态、中断状态、统计信息、相关时序"
#--------------------------------------------------------------------------
#>>>>>>设置EB-MMU,测试用例8广播写检查权限
genPkt.clean()
genPkt.setPktType(0)
addr_off = 0x0
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
addr = addr_off + 0x0
setting_ebmmu_regs(data, 0, 0x10000000+addr, 0x0800, 0x80, 0x1, 0x1)
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.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))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#>>>>>>用EB-MMU方式读取EB-MMU设置, 8
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
#data = [1,] * 0x80
data = [((i * 2) & 0xff) for i in range(0x80)]
genPkt.addSubPkt(0x1000, 2, addr_off, 0x1, 0x80, data)
gen_file_def_ap = "ebmmu_tc8_rw"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx)
+genWriteTransPktCode(gen_file_def_ap, sm_idx)
+genTrgTransPktCode(gen_file_def_ap, sm_idx)
+genReadAckPktCode(gen_file_def_ap, 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)
+genTcEndFrameCode(gen_file_def))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
return gen_file_def
def tc9():
genPkt = GenPkt()
gen_file_def = "ebmmu_tc09"
sm_idx = 0
tc_des = "每个从站测试1个ebmmu[2]共4个mmu从0x2000_0000位置向后对齐每个设备占12个字节。\\n" \
+ "使用1包数据将4个设备的数据一次性读上来。\\n"\
+ "检查内容ebmmu工作状态、回包工作计数、SMx的状态、中断状态、统计信息、相关时序"
#--------------------------------------------------------------------------
#>>>>>>设置EB-MMU,测试用例9广播写检查权限
genPkt.clean()
genPkt.setPktType(0)
addr_off = 0x0
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
addr = addr_off + 0x0
setting_ebmmu_regs(data, 0, 0x10000000+addr, 0x0800, 0x0100, 0x2, 0x1)
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)
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))
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
data = [((i + 5) & 0xff) for i in range(0x100)]
genPkt.addSubPkt(0x1000, 2, addr_off, 0x1, 0x100, data)
gen_file_def_ap = "ebmmu_tc9_rw"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx)
+genWriteTransPktCode(gen_file_def_ap, sm_idx)
+genTrgTransPktCode(gen_file_def_ap, sm_idx)
+genReadAckPktCode(gen_file_def_ap, 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)
+genTcEndFrameCode(gen_file_def)
)
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
return gen_file_def
def tc10():
genPkt = GenPkt()
gen_file_def = "ebmmu_tc10"
sm_idx = 0
tc_des = "每个从站测试1个ebmmu[2]共4个mmu从0x2000_0000位置向后对齐每个设备占12个字节。\\n" \
+ "使用1包数据将4个设备的数据一次性读上来。\\n"\
+ "检查内容ebmmu工作状态、回包工作计数、SMx的状态、中断状态、统计信息、相关时序"
#--------------------------------------------------------------------------
#>>>>>>设置EB-MMU,测试用例10广播写检查权限
genPkt.clean()
genPkt.setPktType(0)
addr_off = 0x0
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
addr = addr_off + 0x0
setting_ebmmu_regs(data, 0, 0x10000000+addr, 0x0800, 0x0100, 0x2, 0x1)
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)
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))
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
data = [((i + 0x80) & 0xff) for i in range(0x100)]
genPkt.addSubPkt(0x1000, 2, addr_off, 0x1, 0x100, data)
gen_file_def_ap = "ebmmu_tc10_rw01"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx)
+genWriteTransPktCode(gen_file_def_ap, sm_idx)
+genTrgTransPktCode(gen_file_def_ap, sm_idx)
+genReadAckPktCode(gen_file_def_ap, sm_idx)
)
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
#data = [0x81,] * 0x100
#data[-1] = 0x18
data = [((i + 0x40) & 0xff) for i in range(0x100)]
genPkt.addSubPkt(0x1000, 2, addr_off, 0x1, 0x100, data)
gen_file_def_ap = "ebmmu_tc10_rw02"
sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx)
+genWriteTransPktCode(gen_file_def_ap, sm_idx)
+genTrgTransPktCode(gen_file_def_ap, sm_idx)
+genReadAckPktCode(gen_file_def_ap, 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)
+genIFRwDataCode(1, 0x300, False, 0x20)
+genSlvSMReadData(1, 0, 0x100)
+genSlvSMReadData(2, 0, 0x100)
+genIFRwDataCode(2, 0x300, False, 0x20)
+genSlvSMReadData(2, 0, 0x100)
+genSlvSMReadData(3, 0, 0x100)
+genIFRwDataCode(3, 0x300, False, 0x20)
+genSlvSMReadData(3, 0, 0x100)
+genSlvSMReadData(4, 0, 0x100)
+genIFRwDataCode(4, 0x300, False, 0x20)
+genSlvSMReadData(4, 0, 0x100)
+genTcEndFrameCode(gen_file_def))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
return gen_file_def
def tc11():
genPkt = GenPkt()
gen_file_def = "ebmmu_tc11"
sm_idx = 0
tc_des = "每个从站测试1个ebmmu[2]共4个mmu从0x2000_0000位置向后对齐每个设备占12个字节。\\n" \
+ "使用1包数据将4个设备的数据一次性读上来。\\n"\
+ "检查内容ebmmu工作状态、回包工作计数、SMx的状态、中断状态、统计信息、相关时序"
#--------------------------------------------------------------------------
#>>>>>>设置EB-MMU,测试用例11检查权限
genPkt.clean()
genPkt.setPktType(0)
addr = 0x10000000
addr_off = 0x0
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
taddr = addr + addr_off
setting_ebmmu_regs(data, 0, taddr, 0x1000, 0x100, 0x1, 0x1)
genPkt.addSubPkt(0x1, 0, 0x0200, 0x1, 80, data)
#subPkt参数索引、索引类型、地址、命令、长度、数据
addr_off = addr_off + 0x100
data = [0,] * 256
taddr = addr + addr_off
#print(hex(taddr), hex(addr_off))
setting_ebmmu_regs(data, 0, taddr, 0x1000, 0x100, 0x1, 0x1)
genPkt.addSubPkt(0x2, 0, 0x0200, 0x1, 80, data)
#subPkt参数索引、索引类型、地址、命令、长度、数据
addr_off = addr_off + 0x100
data = [0,] * 256
taddr = addr + addr_off
#print(hex(taddr), hex(addr_off))
setting_ebmmu_regs(data, 0, taddr, 0x1000, 0x100, 0x1, 0x1)
genPkt.addSubPkt(0x3, 0, 0x0200, 0x1, 80, data)
#subPkt参数索引、索引类型、地址、命令、长度、数据
addr_off = addr_off + 0x100
data = [0,] * 256
taddr = addr + addr_off
#print(hex(taddr), hex(addr_off))
setting_ebmmu_regs(data, 0, taddr, 0x1000, 0x100, 0x1, 0x1)
genPkt.addSubPkt(0x4, 0, 0x0200, 0x1, 80, data)
data = [0,] * 2
data[0] = 0x00
data[1] = 0x01
genPkt.addSubPkt(0x0, 0, 0x306, 0xe, 2, 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))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#>>>>>>用EB-MMU方式读取EB-MMU设置, 11两次读出eb-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(2, 0x1000, True, 0x100, data1)
+ genIFRwDataCode(3, 0x1000, True, 0x100, data0)
+ genIFRwDataCode(4, 0x1000, True, 0x100, data1)
+ genIFRwDataCode(1, 0x300, False, 0x20)
+ genIFRwDataCode(2, 0x300, False, 0x20)
+ genIFRwDataCode(3, 0x300, False, 0x20)
+ genIFRwDataCode(4, 0x300, False, 0x20)
+ genIFRwDataCode(1, 0x1000, True, 0x100, data1)
+ genIFRwDataCode(2, 0x1000, True, 0x100, data0)
+ genIFRwDataCode(3, 0x1000, True, 0x100, data1)
+ genIFRwDataCode(4, 0x1000, True, 0x100, data0)
+ genIFRwDataCode(1, 0x300, False, 0x20)
+ genIFRwDataCode(2, 0x300, False, 0x20)
+ genIFRwDataCode(3, 0x300, False, 0x20)
+ genIFRwDataCode(4, 0x300, False, 0x20)
)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0, ] * 0x100 * 4
gen_file_def_ap = "ebmmu_tc11_rw01"
sm_idx = 0
genPkt.addSubPkt(0x1000, 2, 0, 0x0, 0x100 * 4, data)
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx)
+genWriteTransPktCode(gen_file_def_ap, sm_idx)
+genTrgTransPktCode(gen_file_def_ap, sm_idx)
+genReadAckPktCode(gen_file_def_ap, 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, True, gen_file_def_ap)
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0x0,] * 0x100 * 4
gen_file_def_ap = "ebmmu_tc11_rw02"
sm_idx = 0
genPkt.addSubPkt(0x1000, 2, 0, 0x0, 0x100 * 4, data)
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx)
+genWriteTransPktCode(gen_file_def_ap, sm_idx)
+genTrgTransPktCode(gen_file_def_ap, sm_idx)
+genReadAckPktCode(gen_file_def_ap, sm_idx)
+genIFRwDataCode(1, 0x300, False, 0x20)
+genIFRwDataCode(2, 0x300, False, 0x20)
+genIFRwDataCode(3, 0x300, False, 0x20)
+genIFRwDataCode(4, 0x300, False, 0x20)
+genTcEndFrameCode(gen_file_def)
)
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
return gen_file_def
def tc12():
genPkt = GenPkt()
gen_file_def = "ebmmu_tc12"
sm_idx = 0
tc_des = "每个从站测试1个ebmmu[2]共4个mmu从0x2000_0000位置向后对齐每个设备占12个字节。\\n" \
+ "使用1包数据将4个设备的数据一次性读上来。\\n"\
+ "检查内容ebmmu工作状态、回包工作计数、SMx的状态、中断状态、统计信息、相关时序"
#--------------------------------------------------------------------------
#>>>>>>设置EB-MMU,测试用例12检查权限
genPkt.clean()
genPkt.setPktType(0)
addr = 0x10000000
addr_off = 0x0
sm_size = 0x8
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
taddr = addr + addr_off
#print(hex(taddr), hex(addr_off))
setting_ebmmu_regs(data, 0, taddr, 0x1000, sm_size, 0x1, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
#print(hex(taddr), hex(addr_off))
setting_ebmmu_regs(data, 1, taddr, 0x2000, sm_size, 0x1, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
#print(hex(taddr), hex(addr_off))
setting_ebmmu_regs(data, 2, taddr, 0x3000, sm_size, 0x1, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
#print(hex(taddr), hex(addr_off))
setting_ebmmu_regs(data, 3, taddr, 0x4000, sm_size, 0x1, 0x1)
genPkt.addSubPkt(0x1, 0, 0x0200, 0x1, 80, data)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
addr_off = addr_off + sm_size
taddr = addr + addr_off
#print(hex(taddr), hex(addr_off))
setting_ebmmu_regs(data, 0, taddr, 0x1000, sm_size, 0x1, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
#print(hex(taddr), hex(addr_off))
setting_ebmmu_regs(data, 1, taddr, 0x2000, sm_size, 0x1, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
#print(hex(taddr), hex(addr_off))
setting_ebmmu_regs(data, 2, taddr, 0x3000, sm_size, 0x1, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
#print(hex(taddr), hex(addr_off))
setting_ebmmu_regs(data, 3, taddr, 0x4000, sm_size, 0x1, 0x1)
genPkt.addSubPkt(0x2, 0, 0x0200, 0x1, 80, data)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
addr_off = addr_off + sm_size
taddr = addr + addr_off
#print(hex(taddr), hex(addr_off))
setting_ebmmu_regs(data, 0, taddr, 0x1000, sm_size, 0x1, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
#print(hex(taddr), hex(addr_off))
setting_ebmmu_regs(data, 1, taddr, 0x2000, sm_size, 0x1, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
#print(hex(taddr), hex(addr_off))
setting_ebmmu_regs(data, 2, taddr, 0x3000, sm_size, 0x1, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
#print(hex(taddr), hex(addr_off))
setting_ebmmu_regs(data, 3, taddr, 0x4000, sm_size, 0x1, 0x1)
genPkt.addSubPkt(0x3, 0, 0x0200, 0x1, 80, data)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
addr_off = addr_off + sm_size
taddr = addr + addr_off
#print(hex(taddr), hex(addr_off))
setting_ebmmu_regs(data, 0, taddr, 0x1000, sm_size, 0x1, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
#print(hex(taddr), hex(addr_off))
setting_ebmmu_regs(data, 1, taddr, 0x2000, sm_size, 0x1, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
#print(hex(taddr), hex(addr_off))
setting_ebmmu_regs(data, 2, taddr, 0x3000, sm_size, 0x1, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
#print(hex(taddr), hex(addr_off))
setting_ebmmu_regs(data, 3, taddr, 0x4000, sm_size, 0x1, 0x1)
genPkt.addSubPkt(0x4, 0, 0x0200, 0x1, 80, data)
data = [0,] * 2
data[0] = (sm_size >> 0) & 0xff
data[1] = (sm_size >> 8) & 0xff
genPkt.addSubPkt(0x0, 0, 0x306, 0xe, 2, data)
data = [0,] * 2
data[0] = (sm_size >> 0) & 0xff
data[1] = (sm_size >> 8) & 0xff
genPkt.addSubPkt(0x0, 0, 0x30e, 0xe, 2, data)
data = [0,] * 2
data[0] = (sm_size >> 0) & 0xff
data[1] = (sm_size >> 8) & 0xff
genPkt.addSubPkt(0x0, 0, 0x316, 0xe, 2, data)
data = [0,] * 2
data[0] = (sm_size >> 0) & 0xff
data[1] = (sm_size >> 8) & 0xff
genPkt.addSubPkt(0x0, 0, 0x31e, 0xe, 2, 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))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#>>>>>>用EB-MMU方式读取EB-MMU设置, 12
genPkt.clean()
genPkt.setPktType(0)
data0 = list(range(0, sm_size))
data1 = list(range(1, sm_size + 1))
data2 = list(range(2, sm_size + 2))
data3 = list(range(3, sm_size + 3))
data4 = list(range(4, sm_size + 4))
data5 = list(range(5, sm_size + 5))
data6 = list(range(6, sm_size + 6))
data7 = list(range(7, sm_size + 7))
genPkt.addBeforeExc( genIFRwDataCode(1, 0x1000, True, sm_size, data0)
+ genIFRwDataCode(1, 0x2000, True, sm_size, data1)
+ genIFRwDataCode(1, 0x3000, True, sm_size, data2)
+ genIFRwDataCode(1, 0x4000, True, sm_size, data3)
+ genIFRwDataCode(2, 0x1000, True, sm_size, data4)
+ genIFRwDataCode(2, 0x2000, True, sm_size, data5)
+ genIFRwDataCode(2, 0x3000, True, sm_size, data6)
+ genIFRwDataCode(2, 0x4000, True, sm_size, data7)
+ genIFRwDataCode(3, 0x1000, True, sm_size, data7)
+ genIFRwDataCode(3, 0x2000, True, sm_size, data6)
+ genIFRwDataCode(3, 0x3000, True, sm_size, data5)
+ genIFRwDataCode(3, 0x4000, True, sm_size, data4)
+ genIFRwDataCode(4, 0x1000, True, sm_size, data3)
+ genIFRwDataCode(4, 0x2000, True, sm_size, data2)
+ genIFRwDataCode(4, 0x3000, True, sm_size, data1)
+ genIFRwDataCode(4, 0x4000, True, sm_size, data0)
)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0, ] * sm_size * 16
gen_file_def_ap = "ebmmu_tc12_rw"
sm_idx = 0
genPkt.addSubPkt(0x1000, 2, 0, 0x0, sm_size * 16, data)
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx)
+genWriteTransPktCode(gen_file_def_ap, sm_idx)
+genTrgTransPktCode(gen_file_def_ap, sm_idx)
+genReadAckPktCode(gen_file_def_ap, sm_idx)
+genIFRwDataCode(1, 0x300, False, 0x20)
+genIFRwDataCode(2, 0x300, False, 0x20)
+genIFRwDataCode(3, 0x300, False, 0x20)
+genIFRwDataCode(4, 0x300, False, 0x20)
+genTcEndFrameCode(gen_file_def)
)
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
return gen_file_def
def tc13():
genPkt = GenPkt()
gen_file_def = "ebmmu_tc13"
sm_idx = 0
tc_des = "每个从站测试1个ebmmu[2]共4个mmu从0x2000_0000位置向后对齐每个设备占12个字节。\\n" \
+ "使用1包数据将4个设备的数据一次性读上来。\\n"\
+ "检查内容ebmmu工作状态、回包工作计数、SMx的状态、中断状态、统计信息、相关时序"
#--------------------------------------------------------------------------
#>>>>>>设置EB-MMU,测试用例13检查权限
genPkt.clean()
genPkt.setPktType(0)
addr = 0x10000000
addr_off = 0x0
sm_size = 0x8
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
taddr = addr + addr_off
setting_ebmmu_regs(data, 0, taddr, 0x1000, sm_size / 2, 0x1, 0x1)
setting_ebmmu_regs(data, 1, taddr + sm_size / 2, 0x1000 + sm_size / 2, sm_size / 2, 0x1, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
setting_ebmmu_regs(data, 2, taddr, 0x2000, sm_size / 2, 0x1, 0x1)
setting_ebmmu_regs(data, 3, taddr + sm_size / 2, 0x2000 + sm_size / 2, sm_size / 2, 0x1, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
setting_ebmmu_regs(data, 4, taddr, 0x3000, sm_size / 2, 0x1, 0x1)
setting_ebmmu_regs(data, 5, taddr + sm_size / 2, 0x3000 + sm_size / 2, sm_size / 2, 0x1, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
#print(hex(taddr), hex(addr_off))
setting_ebmmu_regs(data, 6, taddr, 0x4000, sm_size / 2, 0x1, 0x1)
setting_ebmmu_regs(data, 7, taddr + sm_size / 2, 0x4000 + sm_size / 2, sm_size / 2, 0x1, 0x1)
genPkt.addSubPkt(0x1, 0, 0x0200, 0x1, 80, data)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
addr_off = addr_off + sm_size
taddr = addr + addr_off
setting_ebmmu_regs(data, 0, taddr, 0x1000, sm_size / 2, 0x1, 0x1)
setting_ebmmu_regs(data, 1, taddr + sm_size / 2, 0x1000 + sm_size / 2, sm_size / 2, 0x1, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
setting_ebmmu_regs(data, 2, taddr, 0x2000, sm_size / 2, 0x1, 0x1)
setting_ebmmu_regs(data, 3, taddr + sm_size / 2, 0x2000 + sm_size / 2, sm_size / 2, 0x1, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
setting_ebmmu_regs(data, 4, taddr, 0x3000, sm_size / 2, 0x1, 0x1)
setting_ebmmu_regs(data, 5, taddr + sm_size / 2, 0x3000 + sm_size / 2, sm_size / 2, 0x1, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
#print(hex(taddr), hex(addr_off))
setting_ebmmu_regs(data, 6, taddr, 0x4000, sm_size / 2, 0x1, 0x1)
setting_ebmmu_regs(data, 7, taddr + sm_size / 2, 0x4000 + sm_size / 2, sm_size / 2, 0x1, 0x1)
genPkt.addSubPkt(0x2, 0, 0x0200, 0x1, 80, data)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
addr_off = addr_off + sm_size
taddr = addr + addr_off
setting_ebmmu_regs(data, 0, taddr, 0x1000, sm_size / 2, 0x1, 0x1)
setting_ebmmu_regs(data, 1, taddr + sm_size / 2, 0x1000 + sm_size / 2, sm_size / 2, 0x1, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
setting_ebmmu_regs(data, 2, taddr, 0x2000, sm_size / 2, 0x1, 0x1)
setting_ebmmu_regs(data, 3, taddr + sm_size / 2, 0x2000 + sm_size / 2, sm_size / 2, 0x1, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
setting_ebmmu_regs(data, 4, taddr, 0x3000, sm_size / 2, 0x1, 0x1)
setting_ebmmu_regs(data, 5, taddr + sm_size / 2, 0x3000 + sm_size / 2, sm_size / 2, 0x1, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
#print(hex(taddr), hex(addr_off))
setting_ebmmu_regs(data, 6, taddr, 0x4000, sm_size / 2, 0x1, 0x1)
setting_ebmmu_regs(data, 7, taddr + sm_size / 2, 0x4000 + sm_size / 2, sm_size / 2, 0x1, 0x1)
genPkt.addSubPkt(0x3, 0, 0x0200, 0x1, 80, data)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
addr_off = addr_off + sm_size
taddr = addr + addr_off
setting_ebmmu_regs(data, 0, taddr, 0x1000, sm_size / 2, 0x1, 0x1)
setting_ebmmu_regs(data, 1, taddr + sm_size / 2, 0x1000 + sm_size / 2, sm_size / 2, 0x1, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
setting_ebmmu_regs(data, 2, taddr, 0x2000, sm_size / 2, 0x1, 0x1)
setting_ebmmu_regs(data, 3, taddr + sm_size / 2, 0x2000 + sm_size / 2, sm_size / 2, 0x1, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
setting_ebmmu_regs(data, 4, taddr, 0x3000, sm_size / 2, 0x1, 0x1)
setting_ebmmu_regs(data, 5, taddr + sm_size / 2, 0x3000 + sm_size / 2, sm_size / 2, 0x1, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
#print(hex(taddr), hex(addr_off))
setting_ebmmu_regs(data, 6, taddr, 0x4000, sm_size / 2, 0x1, 0x1)
setting_ebmmu_regs(data, 7, taddr + sm_size / 2, 0x4000 + sm_size / 2, sm_size / 2, 0x1, 0x1)
genPkt.addSubPkt(0x4, 0, 0x0200, 0x1, 80, data)
data = [0,] * 2
data[0] = (sm_size >> 0) & 0xff
data[1] = (sm_size >> 8) & 0xff
genPkt.addSubPkt(0x0, 0, 0x306, 0xe, 2, data)
data = [0,] * 2
data[0] = (sm_size >> 0) & 0xff
data[1] = (sm_size >> 8) & 0xff
genPkt.addSubPkt(0x0, 0, 0x30e, 0xe, 2, data)
data = [0,] * 2
data[0] = (sm_size >> 0) & 0xff
data[1] = (sm_size >> 8) & 0xff
genPkt.addSubPkt(0x0, 0, 0x316, 0xe, 2, data)
data = [0,] * 2
data[0] = (sm_size >> 0) & 0xff
data[1] = (sm_size >> 8) & 0xff
genPkt.addSubPkt(0x0, 0, 0x31e, 0xe, 2, 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))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#>>>>>>用EB-MMU方式读取EB-MMU设置, 12
genPkt.clean()
genPkt.setPktType(0)
data0 = list(range(0, sm_size))
data1 = list(range(1, sm_size + 1))
data2 = list(range(2, sm_size + 2))
data3 = list(range(3, sm_size + 3))
data4 = list(range(4, sm_size + 4))
data5 = list(range(5, sm_size + 5))
data6 = list(range(6, sm_size + 6))
data7 = list(range(7, sm_size + 7))
genPkt.addBeforeExc( genIFRwDataCode(1, 0x1000, True, sm_size, data0)
+ genIFRwDataCode(1, 0x2000, True, sm_size, data1)
+ genIFRwDataCode(1, 0x3000, True, sm_size, data2)
+ genIFRwDataCode(1, 0x4000, True, sm_size, data3)
+ genIFRwDataCode(2, 0x1000, True, sm_size, data4)
+ genIFRwDataCode(2, 0x2000, True, sm_size, data5)
+ genIFRwDataCode(2, 0x3000, True, sm_size, data6)
+ genIFRwDataCode(2, 0x4000, True, sm_size, data7)
+ genIFRwDataCode(3, 0x1000, True, sm_size, data7)
+ genIFRwDataCode(3, 0x2000, True, sm_size, data6)
+ genIFRwDataCode(3, 0x3000, True, sm_size, data5)
+ genIFRwDataCode(3, 0x4000, True, sm_size, data4)
+ genIFRwDataCode(4, 0x1000, True, sm_size, data3)
+ genIFRwDataCode(4, 0x2000, True, sm_size, data2)
+ genIFRwDataCode(4, 0x3000, True, sm_size, data1)
+ genIFRwDataCode(4, 0x4000, True, sm_size, data0)
)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0, ] * sm_size * 16
gen_file_def_ap = "ebmmu_tc13_rw"
sm_idx = 0
genPkt.addSubPkt(0x1000, 2, 0, 0x0, sm_size * 16, data)
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx)
+genWriteTransPktCode(gen_file_def_ap, sm_idx)
+genTrgTransPktCode(gen_file_def_ap, sm_idx)
+genReadAckPktCode(gen_file_def_ap, sm_idx)
+genIFRwDataCode(1, 0x300, False, 0x20)
+genIFRwDataCode(2, 0x300, False, 0x20)
+genIFRwDataCode(3, 0x300, False, 0x20)
+genIFRwDataCode(4, 0x300, False, 0x20)
+genTcEndFrameCode(gen_file_def)
)
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
return gen_file_def
def tc14():
genPkt = GenPkt()
gen_file_def = "ebmmu_tc14"
sm_idx = 0
tc_des = "每个从站测试1个ebmmu[2]共4个mmu从0x2000_0000位置向后对齐每个设备占12个字节。\\n" \
+ "使用1包数据将4个设备的数据一次性读上来。\\n"\
+ "检查内容ebmmu工作状态、回包工作计数、SMx的状态、中断状态、统计信息、相关时序"
#--------------------------------------------------------------------------
#>>>>>>设置EB-MMU,测试用例14检查权限
genPkt.clean()
genPkt.setPktType(0)
addr = 0x10000000
addr_off = 0x0
sm_size = 0x8
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
taddr = addr + addr_off
setting_ebmmu_regs(data, 0, taddr, 0x0800, sm_size, 0x2, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
setting_ebmmu_regs(data, 1, taddr, 0x1800, sm_size, 0x2, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
setting_ebmmu_regs(data, 2, taddr, 0x2800, sm_size, 0x2, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
setting_ebmmu_regs(data, 3, taddr, 0x3800, sm_size, 0x2, 0x1)
genPkt.addSubPkt(0x1, 0, 0x0200, 0x1, 80, data)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
addr_off = addr_off + sm_size
taddr = addr + addr_off
setting_ebmmu_regs(data, 0, taddr, 0x0800, sm_size, 0x2, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
setting_ebmmu_regs(data, 1, taddr, 0x1800, sm_size, 0x2, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
setting_ebmmu_regs(data, 2, taddr, 0x2800, sm_size, 0x2, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
setting_ebmmu_regs(data, 3, taddr, 0x3800, sm_size, 0x2, 0x1)
genPkt.addSubPkt(0x2, 0, 0x0200, 0x1, 80, data)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
addr_off = addr_off + sm_size
taddr = addr + addr_off
setting_ebmmu_regs(data, 0, taddr, 0x0800, sm_size, 0x2, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
setting_ebmmu_regs(data, 1, taddr, 0x1800, sm_size, 0x2, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
setting_ebmmu_regs(data, 2, taddr, 0x2800, sm_size, 0x2, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
setting_ebmmu_regs(data, 3, taddr, 0x3800, sm_size, 0x2, 0x1)
genPkt.addSubPkt(0x3, 0, 0x0200, 0x1, 80, data)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
addr_off = addr_off + sm_size
taddr = addr + addr_off
setting_ebmmu_regs(data, 0, taddr, 0x0800, sm_size, 0x2, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
setting_ebmmu_regs(data, 1, taddr, 0x1800, sm_size, 0x2, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
setting_ebmmu_regs(data, 2, taddr, 0x2800, sm_size, 0x2, 0x1)
addr_off = addr_off + sm_size
taddr = addr + addr_off
setting_ebmmu_regs(data, 3, taddr, 0x3800, sm_size, 0x2, 0x1)
genPkt.addSubPkt(0x4, 0, 0x0200, 0x1, 80, data)
data = [0,] * 2
data[0] = (sm_size >> 0) & 0xff
data[1] = (sm_size >> 8) & 0xff
genPkt.addSubPkt(0x0, 0, 0x302, 0xe, 2, data)
data = [0,] * 2
data[0] = (sm_size >> 0) & 0xff
data[1] = (sm_size >> 8) & 0xff
genPkt.addSubPkt(0x0, 0, 0x30a, 0xe, 2, data)
data = [0,] * 2
data[0] = (sm_size >> 0) & 0xff
data[1] = (sm_size >> 8) & 0xff
genPkt.addSubPkt(0x0, 0, 0x312, 0xe, 2, data)
data = [0,] * 2
data[0] = (sm_size >> 0) & 0xff
data[1] = (sm_size >> 8) & 0xff
genPkt.addSubPkt(0x0, 0, 0x31a, 0xe, 2, 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))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#>>>>>>用EB-MMU方式读取EB-MMU设置, 14
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [(i & 0xff) for i in range(sm_size * 16)]
gen_file_def_ap = "ebmmu_tc14_rw"
sm_idx = 0
genPkt.addSubPkt(0x1000, 2, 0, 0x1, sm_size * 16, data)
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx)
+genWriteTransPktCode(gen_file_def_ap, sm_idx)
+genTrgTransPktCode(gen_file_def_ap, sm_idx)
+genReadAckPktCode(gen_file_def_ap, 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, sm_size)
+genSlvSMReadData(1, 2, sm_size)
+genSlvSMReadData(1, 4, sm_size)
+genSlvSMReadData(1, 6, sm_size)
+genSlvSMReadData(2, 0, sm_size)
+genSlvSMReadData(2, 2, sm_size)
+genSlvSMReadData(2, 4, sm_size)
+genSlvSMReadData(2, 6, sm_size)
+genSlvSMReadData(3, 0, sm_size)
+genSlvSMReadData(3, 2, sm_size)
+genSlvSMReadData(3, 4, sm_size)
+genSlvSMReadData(3, 6, sm_size)
+genSlvSMReadData(4, 0, sm_size)
+genSlvSMReadData(4, 2, sm_size)
+genSlvSMReadData(4, 4, sm_size)
+genSlvSMReadData(4, 6, sm_size)
+genIFRwDataCode(1, 0x300, False, 0x20)
+genIFRwDataCode(2, 0x300, False, 0x20)
+genIFRwDataCode(3, 0x300, False, 0x20)
+genIFRwDataCode(4, 0x300, False, 0x20)
+genTcEndFrameCode(gen_file_def)
)
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
return gen_file_def
def tc15():
genPkt = GenPkt()
gen_file_def = "ebmmu_tc15"
sm_idx = 0
tc_des = "测试16个ebmmu全配置下运行每两个ebmmu对应一个sm。每个ebmmu必须对齐、足长的写入\\n" \
+ "对应的sm才能正常工作。QSPI/SPI侧能正常的读到相关的数据。"
#--------------------------------------------------------------------------
#>>>>>>设置EB-MMU,测试用例15检查权限
genPkt.clean()
genPkt.setPktType(0)
addr = 0x10000000
addr_off = 0x0
sm_size = 16
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
taddr = addr + addr_off
ebmmu_offset = 0
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x0800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x0800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
addr_off = addr_off + sm_size
taddr = addr + addr_off
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x1800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x0800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
addr_off = addr_off + sm_size
taddr = addr + addr_off
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x2800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x0800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
addr_off = addr_off + sm_size
taddr = addr + addr_off
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x3800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x0800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
genPkt.addSubPkt(0x1, 0, 0x0200, 0x1, 160, data)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
addr_off = addr_off + sm_size
taddr = addr + addr_off
ebmmu_offset = 0
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x0800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x0800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
addr_off = addr_off + sm_size
taddr = addr + addr_off
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x1800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x0800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
addr_off = addr_off + sm_size
taddr = addr + addr_off
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x2800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x0800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
addr_off = addr_off + sm_size
taddr = addr + addr_off
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x3800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x0800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
genPkt.addSubPkt(0x2, 0, 0x0200, 0x1, 160, data)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
addr_off = addr_off + sm_size
taddr = addr + addr_off
ebmmu_offset = 0
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x0800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x0800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
addr_off = addr_off + sm_size
taddr = addr + addr_off
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x1800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x0800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
addr_off = addr_off + sm_size
taddr = addr + addr_off
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x2800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x0800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
addr_off = addr_off + sm_size
taddr = addr + addr_off
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x3800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x0800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
genPkt.addSubPkt(0x3, 0, 0x0200, 0x1, 160, data)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
addr_off = addr_off + sm_size
taddr = addr + addr_off
ebmmu_offset = 0
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x0800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x0800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
addr_off = addr_off + sm_size
taddr = addr + addr_off
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x1800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x0800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
addr_off = addr_off + sm_size
taddr = addr + addr_off
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x2800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x0800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
addr_off = addr_off + sm_size
taddr = addr + addr_off
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x3800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x0800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
genPkt.addSubPkt(0x4, 0, 0x0200, 0x1, 160, data)
data = [0,] * 2
data[0] = (sm_size >> 0) & 0xff
data[1] = (sm_size >> 8) & 0xff
genPkt.addSubPkt(0x0, 0, 0x302, 0xe, 2, data)
data = [0,] * 2
data[0] = (sm_size >> 0) & 0xff
data[1] = (sm_size >> 8) & 0xff
genPkt.addSubPkt(0x0, 0, 0x30a, 0xe, 2, data)
data = [0,] * 2
data[0] = (sm_size >> 0) & 0xff
data[1] = (sm_size >> 8) & 0xff
genPkt.addSubPkt(0x0, 0, 0x312, 0xe, 2, data)
data = [0,] * 2
data[0] = (sm_size >> 0) & 0xff
data[1] = (sm_size >> 8) & 0xff
genPkt.addSubPkt(0x0, 0, 0x31a, 0xe, 2, data)
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))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#>>>>>>用EB-MMU方式读取EB-MMU设置, 15
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [(i & 0xff) for i in range(sm_size * 16)]
gen_file_def_ap = "ebmmu_tc15_rw"
sm_idx = 0
genPkt.addSubPkt(0x1000, 2, 0, 0x1, sm_size * 16, data)
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx)
+genWriteTransPktCode(gen_file_def_ap, sm_idx)
+genTrgTransPktCode(gen_file_def_ap, sm_idx)
+genReadAckPktCode(gen_file_def_ap, 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, sm_size)
+genSlvSMReadData(1, 2, sm_size)
+genSlvSMReadData(1, 4, sm_size)
+genSlvSMReadData(1, 6, sm_size)
+genSlvSMReadData(2, 0, sm_size)
+genSlvSMReadData(2, 2, sm_size)
+genSlvSMReadData(2, 4, sm_size)
+genSlvSMReadData(2, 6, sm_size)
+genSlvSMReadData(3, 0, sm_size)
+genSlvSMReadData(3, 2, sm_size)
+genSlvSMReadData(3, 4, sm_size)
+genSlvSMReadData(3, 6, sm_size)
+genSlvSMReadData(4, 0, sm_size)
+genSlvSMReadData(4, 2, sm_size)
+genSlvSMReadData(4, 4, sm_size)
+genSlvSMReadData(4, 6, sm_size)
+genIFRwDataCode(1, 0x300, False, 0x20)
+genIFRwDataCode(2, 0x300, False, 0x20)
+genIFRwDataCode(3, 0x300, False, 0x20)
+genIFRwDataCode(4, 0x300, False, 0x20)
+genTcEndFrameCode(gen_file_def)
)
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
return gen_file_def
def tc16():
genPkt = GenPkt()
gen_file_def = "ebmmu_tc16"
sm_idx = 0
tc_des = "测试16个ebmmu全配置下运行每两个ebmmu对应一个sm。每个ebmmu必须对齐、足长的写入\\n" \
+ "对应的sm才能正常工作。两次写入数据复位设备1的SM1SM1状态复原不能读取到有效的数据。\\n"\
+ "测试用例能成功运行完毕除设备1的SM1其余的SMx都能获得正确的数据。\\n\\n" \
+ "检查内容ebmmu工作状态、回包工作计数、SMx的状态、中断状态、统计信息、相关时序"
genPkt.clean()
genPkt.setPktType(0)
addr = 0x10000000
addr_off = 0x0
sm_size = 16
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
taddr = addr + addr_off
ebmmu_offset = 0
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x0800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x0800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
addr_off = addr_off + sm_size
taddr = addr + addr_off
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x1800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x1800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
addr_off = addr_off + sm_size
taddr = addr + addr_off
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x2800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset + i, hex(taddr + i * int(sm_size / 4)), hex(0x2800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
addr_off = addr_off + sm_size
taddr = addr + addr_off
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x3800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x3800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
genPkt.addSubPkt(0x1, 0, 0x0200, 0x1, 160, data)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
addr_off = addr_off + sm_size
taddr = addr + addr_off
ebmmu_offset = 0
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x0800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x0800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
addr_off = addr_off + sm_size
taddr = addr + addr_off
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x1800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x1800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
addr_off = addr_off + sm_size
taddr = addr + addr_off
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x2800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset + i, hex(taddr + i * int(sm_size / 4)), hex(0x2800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
addr_off = addr_off + sm_size
taddr = addr + addr_off
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x3800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x3800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
genPkt.addSubPkt(0x2, 0, 0x0200, 0x1, 160, data)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
addr_off = addr_off + sm_size
taddr = addr + addr_off
ebmmu_offset = 0
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x0800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x0800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
addr_off = addr_off + sm_size
taddr = addr + addr_off
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x1800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x1800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
addr_off = addr_off + sm_size
taddr = addr + addr_off
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x2800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset + i, hex(taddr + i * int(sm_size / 4)), hex(0x2800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
addr_off = addr_off + sm_size
taddr = addr + addr_off
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x3800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x3800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
genPkt.addSubPkt(0x3, 0, 0x0200, 0x1, 160, data)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [0,] * 256
addr_off = addr_off + sm_size
taddr = addr + addr_off
ebmmu_offset = 0
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x0800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x0800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
addr_off = addr_off + sm_size
taddr = addr + addr_off
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x1800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x1800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
addr_off = addr_off + sm_size
taddr = addr + addr_off
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x2800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset + i, hex(taddr + i * int(sm_size / 4)), hex(0x2800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
addr_off = addr_off + sm_size
taddr = addr + addr_off
for i in range(4):
setting_ebmmu_regs(data,
ebmmu_offset,
taddr + i * int(sm_size / 4),
0x3800 + i * int(sm_size / 4),
sm_size / 4,
0x2,
0x1
)
#print(ebmmu_offset, hex(taddr + i * int(sm_size / 4)), hex(0x3800 + i * int(sm_size / 4)))
ebmmu_offset = ebmmu_offset + 1
genPkt.addSubPkt(0x4, 0, 0x0200, 0x1, 160, data)
data = [0,] * 2
data[0] = (sm_size >> 0) & 0xff
data[1] = (sm_size >> 8) & 0xff
genPkt.addSubPkt(0x0, 0, 0x302, 0xe, 2, data)
data = [0,] * 2
data[0] = (sm_size >> 0) & 0xff
data[1] = (sm_size >> 8) & 0xff
genPkt.addSubPkt(0x0, 0, 0x30a, 0xe, 2, data)
data = [0,] * 2
data[0] = (sm_size >> 0) & 0xff
data[1] = (sm_size >> 8) & 0xff
genPkt.addSubPkt(0x0, 0, 0x312, 0xe, 2, data)
data = [0,] * 2
data[0] = (sm_size >> 0) & 0xff
data[1] = (sm_size >> 8) & 0xff
genPkt.addSubPkt(0x0, 0, 0x31a, 0xe, 2, data)
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))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#>>>>>>用EB-MMU方式读取EB-MMU设置, 15
genPkt.clean()
genPkt.setPktType(0)
#subPkt参数索引、索引类型、地址、命令、长度、数据
data = [(i & 0xff) for i in range(sm_size * 16)]
gen_file_def_ap = "ebmmu_tc16_rw"
sm_idx = 0
genPkt.addSubPkt(0x1000, 2, 0, 0x1, sm_size * 16, data)
data = [((i * 2)& 0xff) for i in range(sm_size * 16)]
genPkt.addSubPkt(0x1000, 2, 0, 0x1, sm_size * 16, data)
rst_data=[0x0, ]
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx)
+genWriteTransPktCode(gen_file_def_ap, sm_idx)
+genTrgTransPktCode(gen_file_def_ap, sm_idx)
+genReadAckPktCode(gen_file_def_ap, 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, sm_size)
+genSlvSMReadData(1, 2, sm_size)
+genSlvSMReadData(1, 4, sm_size)
+genSlvSMReadData(1, 6, sm_size)
+genSlvSMReadData(2, 0, sm_size)
+genSlvSMReadData(2, 2, sm_size)
+genSlvSMReadData(2, 4, sm_size)
+genSlvSMReadData(2, 6, sm_size)
+genSlvSMReadData(3, 0, sm_size)
+genSlvSMReadData(3, 2, sm_size)
+genSlvSMReadData(3, 4, sm_size)
+genSlvSMReadData(3, 6, sm_size)
+genSlvSMReadData(4, 0, sm_size)
+genSlvSMReadData(4, 2, sm_size)
+genSlvSMReadData(4, 4, sm_size)
+genSlvSMReadData(4, 6, sm_size)
+genIFRwDataCode(1, 0x300, False, 0x20)
+genIFRwDataCode(1, 0x300, True, 1, rst_data)
+genIFRwDataCode(1, 0x300, False, 0x20)
+genIFRwDataCode(2, 0x300, False, 0x20)
+genIFRwDataCode(3, 0x300, False, 0x20)
+genIFRwDataCode(4, 0x300, False, 0x20)
+genSlvSMReadData(1, 0, sm_size)
+genSlvSMReadData(1, 2, sm_size)
+genSlvSMReadData(1, 4, sm_size)
+genSlvSMReadData(1, 6, sm_size)
+genSlvSMReadData(2, 0, sm_size)
+genSlvSMReadData(2, 2, sm_size)
+genSlvSMReadData(2, 4, sm_size)
+genSlvSMReadData(2, 6, sm_size)
+genSlvSMReadData(3, 0, sm_size)
+genSlvSMReadData(3, 2, sm_size)
+genSlvSMReadData(3, 4, sm_size)
+genSlvSMReadData(3, 6, sm_size)
+genSlvSMReadData(4, 0, sm_size)
+genSlvSMReadData(4, 2, sm_size)
+genSlvSMReadData(4, 4, sm_size)
+genSlvSMReadData(4, 6, sm_size)
+genIFRwDataCode(1, 0x300, False, 0x20)
+genIFRwDataCode(2, 0x300, False, 0x20)
+genIFRwDataCode(3, 0x300, False, 0x20)
+genIFRwDataCode(4, 0x300, False, 0x20)
+genTcEndFrameCode(gen_file_def))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
return gen_file_def