diff --git a/tb/shinTest/gen_pkt.py b/tb/shinTest/gen_pkt.py index eff7268..b01c24b 100755 --- a/tb/shinTest/gen_pkt.py +++ b/tb/shinTest/gen_pkt.py @@ -44,7 +44,7 @@ if __name__ == '__main__': ebmmu.tc12() ebmmu.tc13() ebmmu.tc14() - ebmmu.tc15() + add_tc_2_runlist(ebmmu.tc15()) add_tc_2_runlist(ebmmu.tc16()) watchdog.tc1() diff --git a/tb/shinTest/testcase/ebmmu.py b/tb/shinTest/testcase/ebmmu.py index 7b429c4..38fdb7b 100644 --- a/tb/shinTest/testcase/ebmmu.py +++ b/tb/shinTest/testcase/ebmmu.py @@ -1423,6 +1423,11 @@ def tc14(): def tc15(): genPkt = GenPkt() + + gen_file_def = "ebmmu_tc15" + sm_idx = 0 + tc_des = "测试8个ebmmu全配置下运行,每两个ebmmu对应一个sm。每个ebmmu必须对齐、足长的写入,\\n" \ + + "对应的sm才能正常工作。QSPI/SPI侧能正常的读到相关的数据。" #-------------------------------------------------------------------------- #>>>>>>设置EB-MMU,测试用例15,读,检查权限 @@ -1555,205 +1560,9 @@ def tc15(): data[1] = (sm_size >> 8) & 0xff genPkt.addSubPkt(0x0, 0, 0x31a, 0xe, 2, data) - - gen_file_def = "ebmmu_tc15_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设置, 15 - genPkt.clean() - genPkt.setPktType(0) - - #subPkt参数:索引、索引类型、地址、命令、长度、数据 - data = [(i & 0xff) for i in range(sm_size * 16)] - - gen_file_def = "ebmmu_tc15_write" - sm_idx = 0 - - genPkt.addSubPkt(0x1000, 2, 0, 0x1, sm_size * 16, 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) - +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) - ) - - genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) - return gen_file_def - - -def tc16(): - genPkt = GenPkt() - - #-------------------------------------------------------------------------- - #>>>>>>设置EB-MMU,测试用例15,读,检查权限 - genPkt.clean() - genPkt.setPktType(0) - - addr = 0x10000000 - addr_off = 0x0 - sm_size = 16 - - #subPkt参数:索引、索引类型、地址、命令、长度、数据 - data = [0,] * 256 - - taddr = addr + addr_off - setting_ebmmu_regs(data, 0, taddr, 0x0800, sm_size / 2, 0x2, 0x1) - setting_ebmmu_regs(data, 1, taddr + sm_size / 2, 0x0800 + sm_size / 2, sm_size / 2, 0x2, 0x1) - - addr_off = addr_off + sm_size - taddr = addr + addr_off - setting_ebmmu_regs(data, 2, taddr, 0x1800, sm_size / 2, 0x2, 0x1) - setting_ebmmu_regs(data, 3, taddr + sm_size / 2, 0x1800 + sm_size / 2, sm_size / 2, 0x2, 0x1) - - addr_off = addr_off + sm_size - taddr = addr + addr_off - setting_ebmmu_regs(data, 4, taddr, 0x2800, sm_size / 2, 0x2, 0x1) - setting_ebmmu_regs(data, 5, taddr + sm_size / 2, 0x2800 + sm_size / 2, sm_size / 2, 0x2, 0x1) - - addr_off = addr_off + sm_size - taddr = addr + addr_off - setting_ebmmu_regs(data, 6, taddr, 0x3800, sm_size / 2, 0x2, 0x1) - setting_ebmmu_regs(data, 7, taddr + sm_size / 2, 0x3800 + sm_size / 2, sm_size / 2, 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 / 2, 0x2, 0x1) - setting_ebmmu_regs(data, 1, taddr + sm_size / 2, 0x0800 + sm_size / 2, sm_size / 2, 0x2, 0x1) - - addr_off = addr_off + sm_size - taddr = addr + addr_off - setting_ebmmu_regs(data, 2, taddr, 0x1800, sm_size / 2, 0x2, 0x1) - setting_ebmmu_regs(data, 3, taddr + sm_size / 2, 0x1800 + sm_size / 2, sm_size / 2, 0x2, 0x1) - - addr_off = addr_off + sm_size - taddr = addr + addr_off - setting_ebmmu_regs(data, 4, taddr, 0x2800, sm_size / 2, 0x2, 0x1) - setting_ebmmu_regs(data, 5, taddr + sm_size / 2, 0x2800 + sm_size / 2, sm_size / 2, 0x2, 0x1) - - addr_off = addr_off + sm_size - taddr = addr + addr_off - setting_ebmmu_regs(data, 6, taddr, 0x3800, sm_size / 2, 0x2, 0x1) - setting_ebmmu_regs(data, 7, taddr + sm_size / 2, 0x3800 + sm_size / 2, sm_size / 2, 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 / 2, 0x2, 0x1) - setting_ebmmu_regs(data, 1, taddr + sm_size / 2, 0x0800 + sm_size / 2, sm_size / 2, 0x2, 0x1) - - addr_off = addr_off + sm_size - taddr = addr + addr_off - setting_ebmmu_regs(data, 2, taddr, 0x1800, sm_size / 2, 0x2, 0x1) - setting_ebmmu_regs(data, 3, taddr + sm_size / 2, 0x1800 + sm_size / 2, sm_size / 2, 0x2, 0x1) - - addr_off = addr_off + sm_size - taddr = addr + addr_off - setting_ebmmu_regs(data, 4, taddr, 0x2800, sm_size / 2, 0x2, 0x1) - setting_ebmmu_regs(data, 5, taddr + sm_size / 2, 0x2800 + sm_size / 2, sm_size / 2, 0x2, 0x1) - - addr_off = addr_off + sm_size - taddr = addr + addr_off - setting_ebmmu_regs(data, 6, taddr, 0x3800, sm_size / 2, 0x2, 0x1) - setting_ebmmu_regs(data, 7, taddr + sm_size / 2, 0x3800 + sm_size / 2, sm_size / 2, 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 / 2, 0x2, 0x1) - setting_ebmmu_regs(data, 1, taddr + sm_size / 2, 0x0800 + sm_size / 2, sm_size / 2, 0x2, 0x1) - - addr_off = addr_off + sm_size - taddr = addr + addr_off - setting_ebmmu_regs(data, 2, taddr, 0x1800, sm_size / 2, 0x2, 0x1) - setting_ebmmu_regs(data, 3, taddr + sm_size / 2, 0x1800 + sm_size / 2, sm_size / 2, 0x2, 0x1) - - addr_off = addr_off + sm_size - taddr = addr + addr_off - setting_ebmmu_regs(data, 4, taddr, 0x2800, sm_size / 2, 0x2, 0x1) - setting_ebmmu_regs(data, 5, taddr + sm_size / 2, 0x2800 + sm_size / 2, sm_size / 2, 0x2, 0x1) - - addr_off = addr_off + sm_size - taddr = addr + addr_off - setting_ebmmu_regs(data, 6, taddr, 0x3800, sm_size / 2, 0x2, 0x1) - setting_ebmmu_regs(data, 7, taddr + sm_size / 2, 0x3800 + sm_size / 2, sm_size / 2, 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) - - - gen_file_def = "ebmmu_tc16" - sm_idx = 0 - tc_des = "一个非常牛叉的测试用例" - genPkt.addBeforeExc(genTcStartFrameCode(gen_file_def, tc_des)) - genPkt.addAfterExc( genWriteTransLenCode(gen_file_def, sm_idx) + 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)) @@ -1767,7 +1576,7 @@ def tc16(): #subPkt参数:索引、索引类型、地址、命令、长度、数据 data = [(i & 0xff) for i in range(sm_size * 16)] - gen_file_def_ap = "ebmmu_tc16_rw" + gen_file_def_ap = "ebmmu_tc15_rw" sm_idx = 0 genPkt.addSubPkt(0x1000, 2, 0, 0x1, sm_size * 16, data) @@ -1800,6 +1609,227 @@ def tc16(): +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 = "测试8个ebmmu全配置下运行,每两个ebmmu对应一个sm。每个ebmmu必须对齐、足长的写入,\\n" \ + + "对应的sm才能正常工作。两次写入数据,复位设备1的SM1,SM1状态复原,不能读取到有效的数据。" + + genPkt.clean() + genPkt.setPktType(0) + + addr = 0x10000000 + addr_off = 0x0 + sm_size = 16 + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + data = [0,] * 256 + + taddr = addr + addr_off + setting_ebmmu_regs(data, 0, taddr, 0x0800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 1, taddr + sm_size / 2, 0x0800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 2, taddr, 0x1800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 3, taddr + sm_size / 2, 0x1800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 4, taddr, 0x2800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 5, taddr + sm_size / 2, 0x2800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 6, taddr, 0x3800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 7, taddr + sm_size / 2, 0x3800 + sm_size / 2, sm_size / 2, 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 / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 1, taddr + sm_size / 2, 0x0800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 2, taddr, 0x1800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 3, taddr + sm_size / 2, 0x1800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 4, taddr, 0x2800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 5, taddr + sm_size / 2, 0x2800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 6, taddr, 0x3800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 7, taddr + sm_size / 2, 0x3800 + sm_size / 2, sm_size / 2, 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 / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 1, taddr + sm_size / 2, 0x0800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 2, taddr, 0x1800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 3, taddr + sm_size / 2, 0x1800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 4, taddr, 0x2800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 5, taddr + sm_size / 2, 0x2800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 6, taddr, 0x3800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 7, taddr + sm_size / 2, 0x3800 + sm_size / 2, sm_size / 2, 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 / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 1, taddr + sm_size / 2, 0x0800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 2, taddr, 0x1800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 3, taddr + sm_size / 2, 0x1800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 4, taddr, 0x2800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 5, taddr + sm_size / 2, 0x2800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 6, taddr, 0x3800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 7, taddr + sm_size / 2, 0x3800 + sm_size / 2, sm_size / 2, 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) + + + 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)