增加看门狗测试代码

This commit is contained in:
2025-07-02 18:40:31 +08:00
parent 9e77f9b0e5
commit 41d5adbdaa
2 changed files with 102 additions and 4 deletions

View File

@@ -26,8 +26,10 @@
//`define ENABLE_EBMMU_TC3_TEST //`define ENABLE_EBMMU_TC3_TEST
//`define ENABLE_EBMMU_TC4_TEST //`define ENABLE_EBMMU_TC4_TEST
//`define ENABLE_EBMMU_TC5_TEST //`define ENABLE_EBMMU_TC5_TEST
`define ENABLE_EBMMU_TC6_TEST //`define ENABLE_EBMMU_TC6_TEST
`define ENABLE_EBMMU_TC7_TEST //`define ENABLE_EBMMU_TC7_TEST
`define ENABLE_WD_TC1_TEST
module ShinTopSpiTb( module ShinTopSpiTb(
@@ -792,6 +794,15 @@ initial begin
spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(2)) ); spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(2)) );
spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(3)) ); spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(3)) );
spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(4)) ); spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(4)) );
$fdisplay(spidata_file, "-中断改为脉冲模式");
txBuf[3] = 8'h10;
txBuf[4] = 8'h80;
spi_trans( (16'h7c), (`SPI_WRITE), (2), (`IF_IDX(0)) );
spi_trans( (16'h7c), (`SPI_WRITE), (2), (`IF_IDX(1)) );
spi_trans( (16'h7c), (`SPI_WRITE), (2), (`IF_IDX(2)) );
spi_trans( (16'h7c), (`SPI_WRITE), (2), (`IF_IDX(3)) );
spi_trans( (16'h7c), (`SPI_WRITE), (2), (`IF_IDX(4)) );
end end
`endif `endif
@@ -1430,6 +1441,20 @@ initial begin
end end
`endif `endif
`ifdef ENABLE_WD_TC1_TEST
begin:WD_TC7_TEST
_t_start = $realtime;
#1000
$fdisplay(spidata_file, "\n\n测试用例 Watchdog 测试用1");
$display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp);
`include "wd_tc1.vh"
_t_end = $realtime;
$fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start);
end
`endif
#1000000 #1000000
$display("Testcase Finished! Time Out !!!"); $display("Testcase Finished! Time Out !!!");
$fclose(spidata_file); $fclose(spidata_file);

View File

@@ -232,6 +232,25 @@ def genCheckInsertTimeCode():
+ '''$fdisplay(spidata_file, "--检查时间戳插入");\n'''\ + '''$fdisplay(spidata_file, "--检查时间戳插入");\n'''\
+ '''spi_trans( (16'h24), (`SPI_READ), (2), (`IF_IDX(0)) ); //检查替换时间戳替换地址寄存器\n''' + '''spi_trans( (16'h24), (`SPI_READ), (2), (`IF_IDX(0)) ); //检查替换时间戳替换地址寄存器\n'''
def genIFRwDataCode(dev, addr, isWrite = False, data_len=0, data = None):
if isWrite == True:
if (data == None) or (len(data) == 0):
data=list()
code = ''
idx = 3
for item in data:
code = code + '''txBuf[%d]=8'h%02x;\n'''%(idx, item & 0xff)
idx = idx + 1
code = code + '''spi_trans( (16'h%04x), (`SPI_WRITE), (%d), (`IF_IDX(%d)) );\n'''%(addr, data_len, dev)
return code
else:
code = ''
code = code + '''spi_trans( (16'h%04x), (`SPI_READ), (%d), (`IF_IDX(%d)) );\n'''%(addr, data_len, dev)
return code
def genSlvSMWriteData(dev, sm, data_len, data = None): def genSlvSMWriteData(dev, sm, data_len, data = None):
smaddr = list() smaddr = list()
for i in range(8): for i in range(8):
@@ -1527,8 +1546,7 @@ if __name__ == '__main__':
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------- #--------------------------------------------------------------------------
#-------------------------------------------------------------------------
#>>>>>>设置EB-MMU,测试用例7 #>>>>>>设置EB-MMU,测试用例7
genPkt.clean() genPkt.clean()
genPkt.setPktType(0) genPkt.setPktType(0)
@@ -1661,6 +1679,61 @@ if __name__ == '__main__':
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#--------------------------------------------------------------------------
#>>>>>> 测试用例1 看门狗测试
genPkt.clean()
genPkt.setPktType(0)
data = 1<<1 ##使能看门狗1
data0 = [data&0xff, (data>>8)&0xff, (data>>16)&0xff, (data>>24)&0xff]
data = 0x100 ##看门狗的超时值
data1 = [data&0xff, (data>>8)&0xff, (data>>16)&0xff, (data>>24)&0xff]
data = 0xffffffff ##清除中断
data2 = [data&0xff, (data>>8)&0xff, (data>>16)&0xff, (data>>24)&0xff]
genPkt.addBeforeExc( genIFRwDataCode(1, 0x404, True, 4, data0)
+ genIFRwDataCode(1, 0x40C, True, 4, data1)
+ genIFRwDataCode(1, 0x078, True, 4, data2)
+ genIFRwDataCode(2, 0x078, True, 4, data2)
+ genIFRwDataCode(3, 0x078, True, 4, data2)
+ genIFRwDataCode(4, 0x078, True, 4, data2)
+ genIFRwDataCode(1, 0x400, True, 4, [0xff, 0xff, 0xff, 0xff])
+ genIFRwDataCode(0, 0x074, False, 0x04)
+ genIFRwDataCode(1, 0x074, False, 0x04)
+ genIFRwDataCode(2, 0x074, False, 0x04)
+ genIFRwDataCode(3, 0x074, False, 0x04)
+ genIFRwDataCode(4, 0x074, False, 0x04)
+ genIFRwDataCode(1, 0x400, False, 0x04))
#genPkt.addBeforeExc( genIFRwDataCode(1, 0x078, True, 4, [0xff, 0xff, 0xff, 0xff]))
data = [0,] * 2
data[0] = 0x80
data[1] = 0x00
genPkt.addSubPkt(0x0, 0, 0x302, 0xe, 2, data)
data = [0,] * 0x50
#subPkt参数索引、索引类型、地址、命令、长度、数据
genPkt.addSubPkt(1, 0, 0x800, 0x1, 0x50, data)
gen_file_def = "wd_tc1"
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)
+genIFRwDataCode(1, 0x800, False, 0x80)
+genIFRwDataCode(0, 0x074, False, 0x04)
+genIFRwDataCode(1, 0x074, False, 0x04)
+genIFRwDataCode(2, 0x074, False, 0x04)
+genIFRwDataCode(3, 0x074, False, 0x04)
+genIFRwDataCode(4, 0x074, False, 0x04)
+genIFRwDataCode(1, 0x400, False, 0x04))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)