diff --git a/tb/shinTest/gen_pkt.py b/tb/shinTest/gen_pkt.py index b01c24b..3cec86a 100755 --- a/tb/shinTest/gen_pkt.py +++ b/tb/shinTest/gen_pkt.py @@ -30,7 +30,7 @@ if __name__ == '__main__': sync.tc3() sync.tc4() - ebmmu.tc1() + add_tc_2_runlist(ebmmu.tc1()) ebmmu.tc2() ebmmu.tc3() ebmmu.tc4() diff --git a/tb/shinTest/pyutils/GenPkt.py b/tb/shinTest/pyutils/GenPkt.py index e28c6c8..62d2f3f 100644 --- a/tb/shinTest/pyutils/GenPkt.py +++ b/tb/shinTest/pyutils/GenPkt.py @@ -222,7 +222,7 @@ def genWriteTransLenCode(gen_name, sm_idx, wlog=True): + '''%s( (`MST_RX%d_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx,) def genWriteTransPktCode(gen_name, sm_idx, wlog=True): - return '''\n$fdisplay(spidata_file, "<<发包:");\n'''\ + return f'''\n$fdisplay(spidata_file, "<<准备发包,使用SM{sm_idx}:");\n'''\ + '''`DEF_%s(txBuf);\n'''%(gen_name, )\ + '''%s( (`MST_TX%d_ADDR), (`SPI_WRITE), (`DEF_%s_len), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx, gen_name, ) @@ -236,7 +236,7 @@ def genReadAckPktCode(gen_name, sm_idx, wlog=True): return '''\n//等待回包\n'''\ + '''_reset_deadline_ind = 1;\n'''\ + '''@(posedge isResp or posedge _deadline_ind) #5 begin end\n'''\ - + '''$fdisplay(spidata_file, ">>回包:");\n'''\ + + f'''$fdisplay(spidata_file, ">>读取回包,使用SM{sm_idx}:");\n'''\ + '''%s( (`MST_RX%d_ADDR), (`SPI_READ), (`DEF_%s_len), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx, gen_name,) def genEnableInsertTimeCode(pos, enableTime=True, enableDelay=True, wlog=True): @@ -317,7 +317,7 @@ def genSlvSMReadData(dev, sm, data_len, wlog=True): if data_len > 2032: return '' - code = "" + code = f'''$fdisplay(spidata_file, "--读取设备{dev} SM{sm} 中的数据,读取长度{data_len}B");\n''' code = code + '''%s( (16'h%04x), (`SPI_READ), (%d), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", 0x800 + sm * 2048, data_len, dev) return code diff --git a/tb/shinTest/testcase/ebmmu.py b/tb/shinTest/testcase/ebmmu.py index 38fdb7b..d8850d4 100644 --- a/tb/shinTest/testcase/ebmmu.py +++ b/tb/shinTest/testcase/ebmmu.py @@ -3,6 +3,12 @@ from pyutils import * def tc1(): genPkt = GenPkt() + gen_file_def = "ebmmu_tc01" + sm_idx = 0 + tc_des = "每个从站测试1个ebmmu,共4个mmu,从0x1000_0000位置向后对齐,每个设备占10个字节。\\n" \ + + "使用1包数据,将4个设备的数据一次性读上来。\\n"\ + + "检查内容:ebmmu工作状态、回包工作计数、SMx的状态、中断状态、统计信息、相关时序" + #------------------------------------------------------------------------- #>>>>>>设置EB-MMU 1 genPkt.clean() @@ -27,9 +33,7 @@ def tc1(): setting_ebmmu_regs(data, 0, 0x1000001e, 0x0200, 0x0a, 0x3, 0x1) genPkt.addSubPkt(0x4, 0, 0x0200, 0x1, 10, data) - - gen_file_def = "ebmmu_tc1_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) @@ -50,15 +54,15 @@ def tc1(): genPkt.addSubPkt(0x03, 0, 0x0200, 0x0, 10, data) genPkt.addSubPkt(0x04, 0, 0x0200, 0x0, 10, data) - gen_file_def = "ebmmu_tc1_seq_read" + gen_file_def_ap = "ebmmu_tc01_rw1" 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.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) + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap) #>>>>>>用EB-MMU方式读取EB-MMU设置 genPkt.clean() @@ -69,15 +73,17 @@ def tc1(): genPkt.addSubPkt(0x1000, 2, 0x0000, 0x0, 40, data) - gen_file_def = "ebmmu_tc1_read" + gen_file_def_ap = "ebmmu_tc1_rw2" 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.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) + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap) return gen_file_def @@ -1622,7 +1628,9 @@ def tc16(): gen_file_def = "ebmmu_tc16" sm_idx = 0 tc_des = "测试8个ebmmu全配置下运行,每两个ebmmu对应一个sm。每个ebmmu必须对齐、足长的写入,\\n" \ - + "对应的sm才能正常工作。两次写入数据,复位设备1的SM1,SM1状态复原,不能读取到有效的数据。" + + "对应的sm才能正常工作。两次写入数据,复位设备1的SM1,SM1状态复原,不能读取到有效的数据。\\n"\ + + "测试用例能成功运行完毕,除设备1的SM1,其余的SMx都能获得正确的数据。\\n\\n" \ + + "检查内容:ebmmu工作状态、回包工作计数、SMx的状态、中断状态、统计信息、相关时序" genPkt.clean() genPkt.setPktType(0)