改写ebmmu_tc01的测试用例

This commit is contained in:
2025-07-31 11:00:04 +08:00
parent efc307df16
commit d5af1de45c
3 changed files with 28 additions and 20 deletions

View File

@@ -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()

View File

@@ -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

View File

@@ -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的SM1SM1状态复原不能读取到有效的数据。"
+ "对应的sm才能正常工作。两次写入数据复位设备1的SM1SM1状态复原不能读取到有效的数据。\\n"\
+ "测试用例能成功运行完毕除设备1的SM1其余的SMx都能获得正确的数据。\\n\\n" \
+ "检查内容ebmmu工作状态、回包工作计数、SMx的状态、中断状态、统计信息、相关时序"
genPkt.clean()
genPkt.setPktType(0)