From 59c1d4687650f71fd83e90c5ee029dc26315407f Mon Sep 17 00:00:00 2001 From: bacon Date: Fri, 1 Aug 2025 17:01:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0reset=E7=9A=84=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tb/shinTest/ShinTopSpiTb.v | 2 +- tb/shinTest/gen_pkt.py | 1 + tb/shinTest/testcase/base.py | 117 +++++++++++++++++++++++++++++++---- 3 files changed, 106 insertions(+), 14 deletions(-) diff --git a/tb/shinTest/ShinTopSpiTb.v b/tb/shinTest/ShinTopSpiTb.v index 4f13513..18e059e 100644 --- a/tb/shinTest/ShinTopSpiTb.v +++ b/tb/shinTest/ShinTopSpiTb.v @@ -26,7 +26,7 @@ //`define ENABLE_SYNC_TEST "generated/log/sync_tc.log" //`define ENABLE_SYNC_SIG0_TEST "generated/log/sync_sig0_tc.log" //`define ENABLE_SYNC_SIG1_TEST "generated/log/sync_sig1_tc.log" -`define ENABLE_RESET_TEST "generated/log/reset_tc.log" +//`define ENABLE_RESET_TEST "generated/log/reset_tc.log" //`define ENABLE_WD1_TEST "generated/log/wd1_tc.log" diff --git a/tb/shinTest/gen_pkt.py b/tb/shinTest/gen_pkt.py index 2a884ba..158d1e6 100755 --- a/tb/shinTest/gen_pkt.py +++ b/tb/shinTest/gen_pkt.py @@ -20,6 +20,7 @@ if __name__ == '__main__': base.tc6() base.tc7() base.tc8() + add_tc_2_runlist(base.tc9()) broadcast.tc1() broadcast.tc2() diff --git a/tb/shinTest/testcase/base.py b/tb/shinTest/testcase/base.py index 36da2e3..a8bc796 100644 --- a/tb/shinTest/testcase/base.py +++ b/tb/shinTest/testcase/base.py @@ -285,30 +285,121 @@ def tc9(): gen_file_def = "base_tc09" sm_idx = 0 - tc_des = "测试8个ebmmu全配置下运行,每两个ebmmu对应一个sm。每个ebmmu必须对齐、足长的写入,\\n" \ - + "对应的sm才能正常工作。两次写入数据,复位设备1的SM1,SM1状态复原,不能读取到有效的数据。\\n"\ - + "测试用例能成功运行完毕,除设备1的SM1,其余的SMx都能获得正确的数据。\\n\\n" \ - + "检查内容:ebmmu工作状态、回包工作计数、SMx的状态、中断状态、统计信息、相关时序" - #------------------------------------------------------------------------- + tc_des = "测试RESET,仅复位主站和2号设备;链路和网络被破坏;发送广播包只能到1,2;3,4收不到。\\n" \ + + "通过嗅探包、设置顺序地址命令等重新建立网络。" + #>>>>>>设置顺序地址 genPkt.clean() genPkt.setPktType(0) - data = bytearray(b"\0" * 2) - data[0] = 0x3f - data[1] = 0xff + reset_data = [0x01, 0x00, 0x66, 0x79] + main_dev = [0x01, ] + slave_dev = [0x02, ] + + genPkt.addBeforeExc(genTcStartFrameCode(gen_file_def, tc_des) + +genIFRwDataCode(0, 0x78, False, 4) + +genIFRwDataCode(0, 0x40, True, 4, reset_data) + +genIFRwDataCode(2, 0x40, True, 4, reset_data) + +genIFRwDataCode(0, 0x74, False, 4) + +genIFRwDataCode(2, 0x74, False, 4) + +"\n#5000\n" + +genIFRwDataCode(0, 0x00, True, 1, main_dev) + +genIFRwDataCode(2, 0x00, True, 1, slave_dev) + ) + + + data = [0,] * 128 + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 - genPkt.addSubPkt(0x0, 0, random.randint(0, 65535), 0xb, 2, data) + genPkt.addSubPkt(0x0, 0, 0x0, 0xd, 128, data) - - gen_file_def = "set_addr_pkt" + 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)) - + +genReadAckPktCode(gen_file_def, sm_idx) + ) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + #------------------------------------------------------------------------------ + genPkt.clean() + genPkt.setPktType(1) + + genPkt.addBeforeExc(genIFRwDataCode(1, 0xc0, False, 4) + +genIFRwDataCode(2, 0xc0, False, 4) + +genIFRwDataCode(3, 0xc0, False, 4) + +genIFRwDataCode(4, 0xc0, False, 4) + ) + + gen_file_def_ap = gen_file_def + "_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) + #+genTcEndFrameCode(gen_file_def) + +genIFRwDataCode(1, 0xc0, False, 4) + +genIFRwDataCode(2, 0xc0, False, 4) + +genIFRwDataCode(3, 0xc0, False, 4) + +genIFRwDataCode(4, 0xc0, False, 4) + ) + + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap) + + #------------------------------------------------------------------------------ + genPkt.clean() + genPkt.setPktType(0) + + gen_file_def_ap = gen_file_def + "_rw02" + sm_idx = 0 + + data = [0x3f, 0xff] + genPkt.addSubPkt(0x0, 0, 0x0, 0xb, 2, 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) + #+genTcEndFrameCode(gen_file_def) + +genIFRwDataCode(1, 0xc0, False, 4) + +genIFRwDataCode(2, 0xc0, False, 4) + +genIFRwDataCode(3, 0xc0, False, 4) + +genIFRwDataCode(4, 0xc0, False, 4) + ) + + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap) + + + #------------------------------------------------------------------------------ + genPkt.clean() + genPkt.setPktType(1) + + genPkt.addBeforeExc(genIFRwDataCode(1, 0xc0, False, 4) + +genIFRwDataCode(2, 0xc0, False, 4) + +genIFRwDataCode(3, 0xc0, False, 4) + +genIFRwDataCode(4, 0xc0, False, 4) + ) + + gen_file_def_ap = gen_file_def + "_rw03" + 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, 0xc0, False, 4) + +genIFRwDataCode(2, 0xc0, False, 4) + +genIFRwDataCode(3, 0xc0, False, 4) + +genIFRwDataCode(4, 0xc0, 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