From 1e42bb84d2dea654ef71c6bd52791991f512219a Mon Sep 17 00:00:00 2001 From: bacon Date: Thu, 7 Aug 2025 12:23:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=96=B0=E7=9A=84=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E7=94=A8=E4=BE=8B,=E6=B5=8B=E8=AF=95=E9=80=9A?= =?UTF-8?q?=E8=BF=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tb/shinTest/gen_pkt.py | 1 + tb/shinTest/testcase/ebmmu.py | 334 ++++++++++++++++++++++++++++++++++ 2 files changed, 335 insertions(+) diff --git a/tb/shinTest/gen_pkt.py b/tb/shinTest/gen_pkt.py index 731e471..7144571 100755 --- a/tb/shinTest/gen_pkt.py +++ b/tb/shinTest/gen_pkt.py @@ -67,6 +67,7 @@ if __name__ == '__main__': #add_tc_2_runlist(ebmmu.tc16()) #add_tc_2_runlist(ebmmu.tc17()) add_tc_2_runlist(ebmmu.tc18()) + add_tc_2_runlist(ebmmu.tc19()) add_tc_2_runlist(watchdog.tc1()) diff --git a/tb/shinTest/testcase/ebmmu.py b/tb/shinTest/testcase/ebmmu.py index 6d8bae9..71c5389 100644 --- a/tb/shinTest/testcase/ebmmu.py +++ b/tb/shinTest/testcase/ebmmu.py @@ -3865,3 +3865,337 @@ def tc18(): genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap) return gen_file_def +def tc19(): + genPkt = GenPkt() + + gen_file_def = "ebmmu_tc19" + sm_idx = 0 + tc_des = "测试16个ebmmu全配置下运行,每1个ebmmu对应一个sm,映射8个字节。映射了sm0/2/4/6,\\n" \ + + "然后映射sm1/3/5/7,共64个字节,4个从设备总共256个字节。\\n"\ + + "每个ebmmu必须对齐、足长的写入,对应的sm才能正常工作。\\n"\ + + "检查内容:ebmmu工作状态、回包工作计数、SMx的状态、中断状态、统计信息、相关时序" + + genPkt.clean() + genPkt.setPktType(0) + + addr = 0x20000000 + addr_off = 0x0 + sm_size = 8 + + + sm_vaddr = 0x10000000 + sm_addr_off = 0x0 + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + data = [0,] * 256 + + taddr = addr + addr_off + ebmmu_offset = 0 + for i in range(8): + setting_ebmmu_regs(data, ebmmu_offset, + taddr + ebmmu_offset * 1, + 0x301 + ebmmu_offset * 4, + 1, + 0x1, + 0x1 + ) + print(ebmmu_offset, hex(taddr + ebmmu_offset * 1), hex(0x301 + ebmmu_offset * 4), hex(1)) + ebmmu_offset = ebmmu_offset + 1 + + addr_off = addr_off + ebmmu_offset * 1 + + + tsm_vaddr = sm_vaddr + sm_addr_off + for i in range(4): + setting_ebmmu_regs(data, ebmmu_offset, + tsm_vaddr + i * sm_size, + 0x0800 + i * 0x1000, sm_size, 0x2, 0x1) + print(ebmmu_offset, hex(tsm_vaddr + i * sm_size), hex(0x0800 + i * 0x1000), hex(sm_size)) + ebmmu_offset = ebmmu_offset + 1 + + sm_addr_off = sm_addr_off + 4 * sm_size + tsm_vaddr = sm_vaddr + sm_addr_off + for i in range(4): + setting_ebmmu_regs(data, ebmmu_offset, + tsm_vaddr + i * sm_size, + 0x1000 + i * 0x1000, sm_size, 0x1, 0x1) + print(ebmmu_offset, hex(tsm_vaddr + i * sm_size), hex(0x1000 + i * 0x1000), hex(sm_size)) + ebmmu_offset = ebmmu_offset + 1 + sm_addr_off = sm_addr_off + 4 * sm_size + + genPkt.addSubPkt(0x1, 0, 0x0200, 0x1, 160, data) + + data = [0,] * 256 + taddr = addr + addr_off + ebmmu_offset = 0 + for i in range(8): + setting_ebmmu_regs(data, ebmmu_offset, + taddr + ebmmu_offset * 1, + 0x301 + ebmmu_offset * 4, + 1, + 0x1, + 0x1 + ) + print(ebmmu_offset, hex(taddr + ebmmu_offset * 1), hex(0x301 + ebmmu_offset * 4), hex(1)) + ebmmu_offset = ebmmu_offset + 1 + + addr_off = addr_off + ebmmu_offset * 1 + + + tsm_vaddr = sm_vaddr + sm_addr_off + for i in range(4): + setting_ebmmu_regs(data, ebmmu_offset, + tsm_vaddr + i * sm_size, + 0x0800 + i * 0x1000, sm_size, 0x2, 0x1) + print(ebmmu_offset, hex(tsm_vaddr + i * sm_size), hex(0x0800 + i * 0x1000), hex(sm_size)) + ebmmu_offset = ebmmu_offset + 1 + + sm_addr_off = sm_addr_off + 4 * sm_size + tsm_vaddr = sm_vaddr + sm_addr_off + for i in range(4): + setting_ebmmu_regs(data, ebmmu_offset, + tsm_vaddr + i * sm_size, + 0x1000 + i * 0x1000, sm_size, 0x1, 0x1) + print(ebmmu_offset, hex(tsm_vaddr + i * sm_size), hex(0x1000 + i * 0x1000), hex(sm_size)) + ebmmu_offset = ebmmu_offset + 1 + sm_addr_off = sm_addr_off + 4 * sm_size + + genPkt.addSubPkt(0x2, 0, 0x0200, 0x1, 160, data) + + data = [0,] * 256 + taddr = addr + addr_off + ebmmu_offset = 0 + for i in range(8): + setting_ebmmu_regs(data, ebmmu_offset, + taddr + ebmmu_offset * 1, + 0x301 + ebmmu_offset * 4, + 1, + 0x1, + 0x1 + ) + print(ebmmu_offset, hex(taddr + ebmmu_offset * 1), hex(0x301 + ebmmu_offset * 4), hex(1)) + ebmmu_offset = ebmmu_offset + 1 + + addr_off = addr_off + ebmmu_offset * 1 + + + tsm_vaddr = sm_vaddr + sm_addr_off + for i in range(4): + setting_ebmmu_regs(data, ebmmu_offset, + tsm_vaddr + i * sm_size, + 0x0800 + i * 0x1000, sm_size, 0x2, 0x1) + print(ebmmu_offset, hex(tsm_vaddr + i * sm_size), hex(0x0800 + i * 0x1000), hex(sm_size)) + ebmmu_offset = ebmmu_offset + 1 + + sm_addr_off = sm_addr_off + 4 * sm_size + tsm_vaddr = sm_vaddr + sm_addr_off + for i in range(4): + setting_ebmmu_regs(data, ebmmu_offset, + tsm_vaddr + i * sm_size, + 0x1000 + i * 0x1000, sm_size, 0x1, 0x1) + print(ebmmu_offset, hex(tsm_vaddr + i * sm_size), hex(0x1000 + i * 0x1000), hex(sm_size)) + ebmmu_offset = ebmmu_offset + 1 + sm_addr_off = sm_addr_off + 4 * sm_size + + genPkt.addSubPkt(0x3, 0, 0x0200, 0x1, 160, data) + + + data = [0,] * 256 + taddr = addr + addr_off + ebmmu_offset = 0 + for i in range(8): + setting_ebmmu_regs(data, ebmmu_offset, + taddr + ebmmu_offset * 1, + 0x301 + ebmmu_offset * 4, + 1, + 0x1, + 0x1 + ) + print(ebmmu_offset, hex(taddr + ebmmu_offset * 1), hex(0x301 + ebmmu_offset * 4), hex(1)) + ebmmu_offset = ebmmu_offset + 1 + + addr_off = addr_off + ebmmu_offset * 1 + + + tsm_vaddr = sm_vaddr + sm_addr_off + for i in range(4): + setting_ebmmu_regs(data, ebmmu_offset, + tsm_vaddr + i * sm_size, + 0x0800 + i * 0x1000, sm_size, 0x2, 0x1) + print(ebmmu_offset, hex(tsm_vaddr + i * sm_size), hex(0x0800 + i * 0x1000), hex(sm_size)) + ebmmu_offset = ebmmu_offset + 1 + + sm_addr_off = sm_addr_off + 4 * sm_size + tsm_vaddr = sm_vaddr + sm_addr_off + for i in range(4): + setting_ebmmu_regs(data, ebmmu_offset, + tsm_vaddr + i * sm_size, + 0x1000 + i * 0x1000, sm_size, 0x1, 0x1) + print(ebmmu_offset, hex(tsm_vaddr + i * sm_size), hex(0x1000 + i * 0x1000), hex(sm_size)) + ebmmu_offset = ebmmu_offset + 1 + sm_addr_off = sm_addr_off + 4 * sm_size + + 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, 0x306, 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, 0x30e, 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, 0x316, 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) + + ''' + data = [0,] * 2 + data[0] = (sm_size >> 0) & 0xff + data[1] = (sm_size >> 8) & 0xff + genPkt.addSubPkt(0x0, 0, 0x31e, 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) + +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) + ) + + 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 = gen_file_def + "_rw" + sm_idx = 0 + + genPkt.addSubPkt(0x1000, 2, 0, 0x2, sm_size * 8 * 4, list(range(sm_size * 8 * 4))) + genPkt.addSubPkt(0x2000, 2, 0, 0x0, 8 * 4, [0, ] * 32) + + genPkt.addBeforeExc(genSlvSMWriteData(1, 1, sm_size, list(range(0, sm_size))) + +genSlvSMWriteData(1, 3, sm_size, list(range(0, sm_size * 2, 2))) + +genSlvSMWriteData(1, 5, sm_size, list(range(0, sm_size * 3, 3))) + +genSlvSMWriteData(1, 7, sm_size, list(range(0, sm_size * 4, 4))) + +genSlvSMWriteData(2, 1, sm_size, list(range(0, sm_size * 5, 5))) + +genSlvSMWriteData(2, 3, sm_size, list(range(0, sm_size * 6, 6))) + +genSlvSMWriteData(2, 5, sm_size, list(range(0, sm_size * 7, 7))) + +genSlvSMWriteData(2, 7, sm_size, list(range(0, sm_size * 8, 8))) + +genSlvSMWriteData(3, 1, sm_size, list(range(0, sm_size * 9, 9))) + +genSlvSMWriteData(3, 3, sm_size, list(range(0, sm_size * 8, 8))) + +genSlvSMWriteData(3, 5, sm_size, list(range(0, sm_size * 7, 7))) + +genSlvSMWriteData(3, 7, sm_size, list(range(0, sm_size * 6, 6))) + +genSlvSMWriteData(4, 1, sm_size, list(range(0, sm_size * 5, 5))) + +genSlvSMWriteData(4, 3, sm_size, list(range(0, sm_size * 4, 4))) + +genSlvSMWriteData(4, 5, sm_size, list(range(0, sm_size * 3, 3))) + +genSlvSMWriteData(4, 7, sm_size, list(range(0, sm_size * 2, 2))) + ) + + 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, 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) + + +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, True, gen_file_def_ap) + return gen_file_def + + + +