diff --git a/tb/shinTest/gen_pkt.py b/tb/shinTest/gen_pkt.py index e38ae93..6352af6 100755 --- a/tb/shinTest/gen_pkt.py +++ b/tb/shinTest/gen_pkt.py @@ -18,7 +18,7 @@ if __name__ == '__main__': #add_tc_2_runlist(base.tc4()) #add_tc_2_runlist(base.tc5()) #add_tc_2_runlist(base.tc6()) - #add_tc_2_runlist(base.tc7()) + add_tc_2_runlist(base.tc7()) #add_tc_2_runlist(base.tc8()) #add_tc_2_runlist(base.tc9()) #add_tc_2_runlist(base.tc10()) @@ -26,6 +26,16 @@ if __name__ == '__main__': #add_tc_2_runlist(base.tc12()) #add_tc_2_runlist(base.tc13()) #add_tc_2_runlist(base.tc14()) + #add_tc_2_runlist(base.tc15()) + #add_tc_2_runlist(base.tc16()) + #add_tc_2_runlist(base.tc17()) + #add_tc_2_runlist(base.tc18()) + #add_tc_2_runlist(base.tc19()) + #add_tc_2_runlist(base.tc20()) + #add_tc_2_runlist(base.tc21()) + #add_tc_2_runlist(base.tc22()) + add_tc_2_runlist(base.tc23()) + #add_tc_2_runlist(broadcast.tc1()) diff --git a/tb/shinTest/testcase/base.py b/tb/shinTest/testcase/base.py index ba396ba..8c55515 100644 --- a/tb/shinTest/testcase/base.py +++ b/tb/shinTest/testcase/base.py @@ -1126,4 +1126,266 @@ def tc14(): genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap) + return gen_file_def + + +def tc_wr_sm(tc_id, wr_sm_idx): + genPkt = GenPkt() + + gen_file_def = f"base_tc{tc_id}_wr_sm{wr_sm_idx}" + sm_idx = 0 + tc_des = f"读写SM{wr_sm_idx}缓冲区超过缓冲区的元素上限,期望结果,超出缓冲区的数据不被接收,工作计数不加。\\n" \ + + "检查是否真的写入,子报文的状态。目前即使SM0、2、4、6满了,处于溢出状态,硬件难以判断是否能提交数据。\\n"\ + + "目前只要地址、长度正确,即使无法写入,工作计数也会加1。工作计数不能反应报文与SMx的互动关系。" + + #------------------------------------------------------------------------- + #>>>>>>普通数据包3 + genPkt.clean() + genPkt.setPktType(0) + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + genPkt.addSubPkt(0, 0, 0x0302 + wr_sm_idx * 0x4, 0xe, 2, [32, 0]) + genPkt.addSubPkt(0, 0, 0x0800 + wr_sm_idx * 0x0800, 0xe, 32, list(range(0, 32))) + genPkt.addSubPkt(0, 0, 0x0800 + wr_sm_idx * 0x0800, 0xe, 32, list(range(32, 64))) + genPkt.addSubPkt(0, 0, 0x0800 + wr_sm_idx * 0x0800, 0xe, 32, list(range(64, 96))) + genPkt.addSubPkt(0, 0, 0x0800 + wr_sm_idx * 0x0800, 0xe, 32, list(range(96, 128))) + genPkt.addSubPkt(0, 0, 0x0800 + wr_sm_idx * 0x0800, 0xe, 32, list(range(128, 160))) + genPkt.addSubPkt(0, 0, 0x0800 + wr_sm_idx * 0x0800, 0xe, 32, list(range(160, 192))) + genPkt.addSubPkt(0, 0, 0x0800 + wr_sm_idx * 0x0800, 0xe, 32, list(range(192, 224))) + genPkt.addSubPkt(0, 0, 0x0800 + wr_sm_idx * 0x0800, 0xe, 32, list(range(224, 256))) + + 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) + + +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) + + +genSlvSMReadData(1, wr_sm_idx, 32) + +genSlvSMReadData(2, wr_sm_idx, 32) + +genSlvSMReadData(3, wr_sm_idx, 32) + +genSlvSMReadData(4, wr_sm_idx, 32) + + +genSlvSMReadData(1, wr_sm_idx, 32) + +genSlvSMReadData(2, wr_sm_idx, 32) + +genSlvSMReadData(3, wr_sm_idx, 32) + +genSlvSMReadData(4, wr_sm_idx, 32) + + +genSlvSMReadData(1, wr_sm_idx, 32) + +genSlvSMReadData(2, wr_sm_idx, 32) + +genSlvSMReadData(3, wr_sm_idx, 32) + +genSlvSMReadData(4, wr_sm_idx, 32) + + +genSlvSMReadData(1, wr_sm_idx, 32) + +genSlvSMReadData(2, wr_sm_idx, 32) + +genSlvSMReadData(3, wr_sm_idx, 32) + +genSlvSMReadData(4, wr_sm_idx, 32) + + +genSlvSMReadData(1, wr_sm_idx, 32) + +genSlvSMReadData(2, wr_sm_idx, 32) + +genSlvSMReadData(3, wr_sm_idx, 32) + +genSlvSMReadData(4, wr_sm_idx, 32) + + +genTcEndFrameCode(gen_file_def)) + + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + + return gen_file_def + + +def tc_rd_sm(tc_id, rd_sm_idx): + genPkt = GenPkt() + + gen_file_def = f"base_tc{tc_id}_rd_sm{rd_sm_idx}" + sm_idx = 0 + tc_des = f"读写SM{rd_sm_idx}缓冲区超过缓冲区的元素上限,期望结果,超出缓冲区的数据不被接收,工作计数不加。\\n" \ + + "检查是否真的写入,子报文的状态。目前即使SM1、3、5、7空了,没有数据,硬件难以判断是否存在数据。\\n"\ + + "目前只要地址、长度正确,即使无法读取,工作计数也会加1。工作计数不能反应报文与SMx的互动关系。" + + #------------------------------------------------------------------------- + #>>>>>>普通数据包3 + genPkt.clean() + genPkt.setPktType(0) + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + #genPkt.addSubPkt(0, 0, 0x0302, 0xd, 2, [32, 0]) + genPkt.addSubPkt(0, 0, 0x0800 + rd_sm_idx * 0x0800, 0xd, 32, [0,]*32) + genPkt.addSubPkt(0, 0, 0x0800 + rd_sm_idx * 0x0800, 0xd, 32, [0,]*32) + genPkt.addSubPkt(0, 0, 0x0800 + rd_sm_idx * 0x0800, 0xd, 32, [0,]*32) + genPkt.addSubPkt(0, 0, 0x0800 + rd_sm_idx * 0x0800, 0xd, 32, [0,]*32) + genPkt.addSubPkt(0, 0, 0x0800 + rd_sm_idx * 0x0800, 0xd, 32, [0,]*32) + genPkt.addSubPkt(0, 0, 0x0800 + rd_sm_idx * 0x0800, 0xd, 32, [0,]*32) + genPkt.addSubPkt(0, 0, 0x0800 + rd_sm_idx * 0x0800, 0xd, 32, [0,]*32) + genPkt.addSubPkt(0, 0, 0x0800 + rd_sm_idx * 0x0800, 0xd, 32, [0,]*32) + sm_idx = 0 + + genPkt.addBeforeExc(genTcStartFrameCode(gen_file_def, tc_des) + +genSlvSMWriteData(1, rd_sm_idx, 32, list(range(0, 32))) + +genSlvSMWriteData(1, rd_sm_idx, 32, list(range(32, 64))) + +genSlvSMWriteData(1, rd_sm_idx, 32, list(range(64, 96))) + +genSlvSMWriteData(1, rd_sm_idx, 32, list(range(96, 128))) + +genSlvSMWriteData(1, rd_sm_idx, 32, list(range(128, 160))) + +genSlvSMWriteData(1, rd_sm_idx, 32, list(range(160, 192))) + +genSlvSMWriteData(1, rd_sm_idx, 32, list(range(192, 224))) + +genSlvSMWriteData(1, rd_sm_idx, 32, list(range(224, 256))) + + +genSlvSMWriteData(2, rd_sm_idx, 32, list(range(0, 32))) + +genSlvSMWriteData(2, rd_sm_idx, 32, list(range(32, 64))) + +genSlvSMWriteData(2, rd_sm_idx, 32, list(range(64, 96))) + +genSlvSMWriteData(2, rd_sm_idx, 32, list(range(96, 128))) + +genSlvSMWriteData(2, rd_sm_idx, 32, list(range(128, 160))) + +genSlvSMWriteData(2, rd_sm_idx, 32, list(range(160, 192))) + +genSlvSMWriteData(2, rd_sm_idx, 32, list(range(192, 224))) + +genSlvSMWriteData(2, rd_sm_idx, 32, list(range(224, 256))) + + +genSlvSMWriteData(3, rd_sm_idx, 32, list(range(0, 32))) + +genSlvSMWriteData(3, rd_sm_idx, 32, list(range(32, 64))) + +genSlvSMWriteData(3, rd_sm_idx, 32, list(range(64, 96))) + +genSlvSMWriteData(3, rd_sm_idx, 32, list(range(96, 128))) + +genSlvSMWriteData(3, rd_sm_idx, 32, list(range(128, 160))) + +genSlvSMWriteData(3, rd_sm_idx, 32, list(range(160, 192))) + +genSlvSMWriteData(3, rd_sm_idx, 32, list(range(192, 224))) + +genSlvSMWriteData(3, rd_sm_idx, 32, list(range(224, 256))) + + + +genSlvSMWriteData(4, rd_sm_idx, 32, list(range(0, 32))) + +genSlvSMWriteData(4, rd_sm_idx, 32, list(range(32, 64))) + +genSlvSMWriteData(4, rd_sm_idx, 32, list(range(64, 96))) + +genSlvSMWriteData(4, rd_sm_idx, 32, list(range(96, 128))) + +genSlvSMWriteData(4, rd_sm_idx, 32, list(range(128, 160))) + +genSlvSMWriteData(4, rd_sm_idx, 32, list(range(160, 192))) + +genSlvSMWriteData(4, rd_sm_idx, 32, list(range(192, 224))) + +genSlvSMWriteData(4, rd_sm_idx, 32, list(range(224, 256))) + ) + + genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx) + +genWriteTransPktCode(gen_file_def, sm_idx) + +genTrgTransPktCode(gen_file_def, sm_idx) + +genReadAckPktCode(gen_file_def, sm_idx) + + +genMessageCode("--读取中断") + +genIFRwDataCode(0, 0x74, False, 4) + +genIFRwDataCode(1, 0x74, False, 4) + +genIFRwDataCode(2, 0x74, False, 4) + +genIFRwDataCode(3, 0x74, False, 4) + +genIFRwDataCode(4, 0x74, False, 4) + + +genMessageCode("--清除中断") + +genIFRwDataCode(0, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff]) + +genIFRwDataCode(1, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff]) + +genIFRwDataCode(2, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff]) + +genIFRwDataCode(3, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff]) + +genIFRwDataCode(4, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff]) + + +genMessageCode("--读取中断") + +genIFRwDataCode(0, 0x74, False, 4) + +genIFRwDataCode(1, 0x74, False, 4) + +genIFRwDataCode(2, 0x74, False, 4) + +genIFRwDataCode(3, 0x74, False, 4) + +genIFRwDataCode(4, 0x74, False, 4) + + +genTcEndFrameCode(gen_file_def)) + + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + + return gen_file_def + + +def tc15(): + return tc_wr_sm(15, 0) + +def tc16(): + return tc_rd_sm(16, 1) + +def tc17(): + return tc_wr_sm(17, 2) + +def tc18(): + return tc_rd_sm(18, 3) + +def tc19(): + return tc_wr_sm(19, 4) + +def tc20(): + return tc_rd_sm(20, 5) + +def tc21(): + return tc_wr_sm(21, 6) + +def tc22(): + return tc_rd_sm(22, 7) + +def tc23(): + genPkt = GenPkt() + + gen_file_def = "base_tc23" + sm_idx = 0 + tc_des = "使用广播读写命令,读取SM0的长度寄存器;测试工作计数。\\n" + + #------------------------------------------------------------------------- + #>>>>>>普通数据包2 + genPkt.clean() + genPkt.setPktType(0) + + genPkt.addBeforeExc(genTcStartFrameCode(gen_file_def, tc_des) + ) + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + genPkt.addSubPkt(0, 0, 0x0302, 0xf, 2, [32, 0]) + + 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) + + +genMessageCode("--读取中断") + +genIFRwDataCode(0, 0x74, False, 4) + +genIFRwDataCode(1, 0x74, False, 4) + +genIFRwDataCode(2, 0x74, False, 4) + +genIFRwDataCode(3, 0x74, False, 4) + +genIFRwDataCode(4, 0x74, False, 4) + + +genMessageCode("--清除中断") + +genIFRwDataCode(0, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff]) + +genIFRwDataCode(1, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff]) + +genIFRwDataCode(2, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff]) + +genIFRwDataCode(3, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff]) + +genIFRwDataCode(4, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff]) + + +genMessageCode("--读取中断") + +genIFRwDataCode(0, 0x74, False, 4) + +genIFRwDataCode(1, 0x74, False, 4) + +genIFRwDataCode(2, 0x74, False, 4) + +genIFRwDataCode(3, 0x74, False, 4) + +genIFRwDataCode(4, 0x74, False, 4) + + +genTcEndFrameCode(gen_file_def)) + + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def \ No newline at end of file