diff --git a/tb/shinTest/ShinTopSpiTb.v b/tb/shinTest/ShinTopSpiTb.v index 669813a..8a4403d 100644 --- a/tb/shinTest/ShinTopSpiTb.v +++ b/tb/shinTest/ShinTopSpiTb.v @@ -6,37 +6,44 @@ `define ENABLE_DET2_TEST "generated/log/det2_tc.log" `define ENABLE_SET_ADDR_TEST "generated/log/set_addr_tc.log" `define ENABLE_INT_INIT_TEST "generated/log/int_init_tc.log" -//`define ENABLE_DET_ERR_TEST -`define ENABLE_SMx_SEND1_TEST "generated/log/sm_send1_tc.log" -`define ENABLE_SMx_SEND2_TEST "generated/log/sm_send2_tc.log" -`define ENABLE_SMx_SEND3_TEST "generated/log/sm_send3_tc.log" +//`define ENABLE_DET_ERR1_TEST "generated/log/det_err1_tc.log" +//`define ENABLE_SMx_SEND1_TEST "generated/log/sm_send1_tc.log" +//`define ENABLE_SMx_SEND2_TEST "generated/log/sm_send2_tc.log" +//`define ENABLE_SMx_SEND3_TEST "generated/log/sm_send3_tc.log" //`define ENABLE_ERR_PKT1_TEST "generated/log/err_pkt1_tc.log" //`define ENABLE_ERR_PKT2_TEST "generated/log/err_pkt2_tc.log" //`define ENABLE_ERR_PKT3_TEST "generated/log/err_pkt3_tc.log" -`define ENABLE_EXCHG_DATA_SEQ0_TEST "generated/log/exchg_data_seq0_tc.log" -`define ENABLE_EXCHG_DATA_SEQ1_TEST "generated/log/exchg_data_seq1_tc.log" -`define ENABLE_EXCHG_DATA_SEQ2_TEST "generated/log/exchg_data_seq2_tc.log" -`define ENABLE_EXCHG_DATA_SEQ3_TEST "generated/log/exchg_data_seq3_tc.log" +//`define ENABLE_EXCHG_DATA_SEQ0_TEST "generated/log/exchg_data_seq0_tc.log" +//`define ENABLE_EXCHG_DATA_SEQ1_TEST "generated/log/exchg_data_seq1_tc.log" +//`define ENABLE_EXCHG_DATA_SEQ2_TEST "generated/log/exchg_data_seq2_tc.log" +//`define ENABLE_EXCHG_DATA_SEQ3_TEST "generated/log/exchg_data_seq3_tc.log" -`define ENABLE_BC_R_TEST "generated/log/bc_r_tc.log" -`define ENABLE_BC_W_TEST "generated/log/bc_w_tc.log" -`define ENABLE_BC_RW_TEST "generated/log/bc_rw_tc.log" +//`define ENABLE_BC_R_TEST "generated/log/bc_r_tc.log" +//`define ENABLE_BC_W_TEST "generated/log/bc_w_tc.log" +//`define ENABLE_BC_RW_TEST "generated/log/bc_rw_tc.log" -`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_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_EBMMU_TR1_TEST "generated/log/ebmmu_tr1_tc.log" -`define ENABLE_EBMMU_TR2_TEST "generated/log/ebmmu_tr2_tc.log" -`define ENABLE_EBMMU_TR3_TEST "generated/log/ebmmu_tr3_tc.log" -`define ENABLE_EBMMU_TR4_TEST "generated/log/ebmmu_tr4_tc.log" -`define ENABLE_EBMMU_TR5_TEST "generated/log/ebmmu_tr5_tc.log" -`define ENABLE_EBMMU_TR6_TEST "generated/log/ebmmu_tr6_tc.log" -`define ENABLE_EBMMU_TR7_TEST "generated/log/ebmmu_tr7_tc.log" +//`define ENABLE_EBMMU_TR1_TEST "generated/log/ebmmu_tr1_tc.log" +//`define ENABLE_EBMMU_TR2_TEST "generated/log/ebmmu_tr2_tc.log" +//`define ENABLE_EBMMU_TR3_TEST "generated/log/ebmmu_tr3_tc.log" +//`define ENABLE_EBMMU_TR4_TEST "generated/log/ebmmu_tr4_tc.log" +//`define ENABLE_EBMMU_TR5_TEST "generated/log/ebmmu_tr5_tc.log" +//`define ENABLE_EBMMU_TR6_TEST "generated/log/ebmmu_tr6_tc.log" +//`define ENABLE_EBMMU_TR7_TEST "generated/log/ebmmu_tr7_tc.log" +//`define ENABLE_EBMMU_TR8_TEST "generated/log/ebmmu_tr8_tc.log" +//`define ENABLE_EBMMU_TR9_TEST "generated/log/ebmmu_tr9_tc.log" +`define ENABLE_EBMMU_TR10_TEST "generated/log/ebmmu_tr10_tc.log" +//`define ENABLE_EBMMU_TR11_TEST "generated/log/ebmmu_tr11_tc.log" +//`define ENABLE_EBMMU_TR12_TEST "generated/log/ebmmu_tr12_tc.log" +//`define ENABLE_EBMMU_TR13_TEST "generated/log/ebmmu_tr13_tc.log" +//`define ENABLE_EBMMU_TR14_TEST "generated/log/ebmmu_tr14_tc.log" -`define ENABLE_WD1_TEST "generated/log/wd1_tc.log" +//`define ENABLE_WD1_TEST "generated/log/wd1_tc.log" module ShinTopSpiTb( @@ -1040,9 +1047,9 @@ initial begin end `endif -`ifdef ENABLE_DET_ERR_TEST +`ifdef ENABLE_DET_ERR1_TEST begin:DET_ERR_TEST - `BEGIN_TESTCASE(`ENABLE_DET_ERR_TEST); + `BEGIN_TESTCASE(`ENABLE_DET_ERR1_TEST); //嗅探 _t_start = $realtime; #1000 @@ -1078,7 +1085,7 @@ initial begin `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(2)) ); `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(3)) ); `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(4)) ); - `END_TESTCASE(`ENABLE_DET_ERR_TEST); + `END_TESTCASE(`ENABLE_DET_ERR1_TEST); end `endif @@ -1784,6 +1791,65 @@ initial begin end `endif + +`ifdef ENABLE_EBMMU_TR8_TEST + begin:EBMMU_TR8_TEST + `BEGIN_TESTCASE(`ENABLE_EBMMU_TR8_TEST); + _t_start = $realtime; + #1000 + $fdisplay(spidata_file, "\n\n测试用例: ebmmu 测试用8"); + $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); + + `include "ebmmu_tc8_settings.vh" + + `include "ebmmu_tc8_write.vh" + + _t_end = $realtime; + $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); + `END_TESTCASE(`ENABLE_EBMMU_TR8_TEST); + end +`endif + + +`ifdef ENABLE_EBMMU_TR9_TEST + begin:EBMMU_TR9_TEST + `BEGIN_TESTCASE(`ENABLE_EBMMU_TR9_TEST); + _t_start = $realtime; + #1000 + $fdisplay(spidata_file, "\n\n测试用例: ebmmu 测试用9"); + $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); + + `include "ebmmu_tc9_settings.vh" + + `include "ebmmu_tc9_write.vh" + + _t_end = $realtime; + $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); + `END_TESTCASE(`ENABLE_EBMMU_TR9_TEST); + end +`endif + +`ifdef ENABLE_EBMMU_TR10_TEST + begin:EBMMU_TR10_TEST + `BEGIN_TESTCASE(`ENABLE_EBMMU_TR10_TEST); + _t_start = $realtime; + #1000 + $fdisplay(spidata_file, "\n\n测试用例: ebmmu 测试用10"); + $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); + + `include "ebmmu_tc10_settings.vh" + + `include "ebmmu_tc10_write.vh" + + `include "ebmmu_tc10b_write.vh" + + _t_end = $realtime; + $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); + `END_TESTCASE(`ENABLE_EBMMU_TR10_TEST); + end +`endif + + `ifdef ENABLE_WD1_TEST begin:WD1_TEST `BEGIN_TESTCASE(`ENABLE_WD1_TEST); diff --git a/tb/shinTest/gen_pkt.py b/tb/shinTest/gen_pkt.py index 0ecdfa3..826716a 100755 --- a/tb/shinTest/gen_pkt.py +++ b/tb/shinTest/gen_pkt.py @@ -318,7 +318,8 @@ if __name__ == '__main__': genPkt = GenPkt() #------------------------------------------------------------------------- - #>>>>>>嗅探数据包 + #>>>>>>嗅探数据包1,正常的嗅探数据包 + genPkt.clean() genPkt.setPktType(1) gen_file_def = "detect_pkt" sm_idx = 0 @@ -331,7 +332,7 @@ if __name__ == '__main__': #------------------------------------------------------------------------- - #>>>>>>嗅探数据包2 + #>>>>>>嗅探数据包2,正常的嗅探数据包 genPkt.clean() genPkt.setPktType(1) gen_file_def = "detect_pkt2" @@ -431,7 +432,7 @@ if __name__ == '__main__': genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) #------------------------------------------------------------------------- - #>>>>>>普通数据包 sm1 + #>>>>>>普通数据包 sm1,2个读 genPkt.clean() genPkt.setPktType(0) @@ -454,7 +455,7 @@ if __name__ == '__main__': #------------------------------------------------------------------------- - #>>>>>>普通数据包 sm2 + #>>>>>>普通数据包 sm2,广播读 genPkt.clean() genPkt.setPktType(0) @@ -476,7 +477,7 @@ if __name__ == '__main__': #------------------------------------------------------------------------- - #>>>>>>交换数据 SMx + #>>>>>>交换数据 SMx, 两个广播写 genPkt.clean() genPkt.setPktType(0) @@ -503,7 +504,7 @@ if __name__ == '__main__': #------------------------------------------------------------------------- - #>>>>>>普通数据包 + #>>>>>>普通数据包,一个读、一个写,增加5个随机包(需要在文件里确认) genPkt.clean() genPkt.setPktType(0) @@ -528,6 +529,7 @@ if __name__ == '__main__': +genReadAckPktCode(gen_file_def, sm_idx)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + #------------------------------------------------------------------------- #>>>>>>普通数据包0,用来操作sync genPkt.clean() @@ -679,7 +681,7 @@ if __name__ == '__main__': #------------------------------------------------------------------------- - #>>>>>>设置同步信号的数据包 + #>>>>>>设置同步信号的数据包,在波形中确认定时的有效性 genPkt.clean() genPkt.setPktType(0) @@ -1029,7 +1031,7 @@ if __name__ == '__main__': #------------------------------------------------------------------------- - #>>>>>>设置EB-MMU + #>>>>>>设置EB-MMU 1 genPkt.clean() genPkt.setPktType(0) @@ -1160,7 +1162,7 @@ if __name__ == '__main__': genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) #------------------------------------------------------------------------- - #>>>>>>设置EB-MMU + #>>>>>>设置EB-MMU 2 genPkt.clean() genPkt.setPktType(0) @@ -1537,7 +1539,6 @@ if __name__ == '__main__': genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) #-------------------------------------------------------------------------- - #------------------------------------------------------------------------- #>>>>>>设置EB-MMU,测试用例6 genPkt.clean() genPkt.setPktType(0) @@ -1801,6 +1802,257 @@ if __name__ == '__main__': genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + #-------------------------------------------------------------------------- + #>>>>>>设置EB-MMU,测试用例8,广播写,检查权限 + genPkt.clean() + genPkt.setPktType(0) + + addr_off = 0x0 + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + data = [0,] * 256 + + addr = addr_off + 0x0 + #print(hex(addr)) + data[0] = (addr & 0xff) + data[1] = (addr >> 8) & 0xff + data[2] = 0x00 + data[3] = 0x10 + + data[4] = 0x00 + data[5] = 0x08 + + data[6] = 0x80 + data[7] = 0x00 + + data[8] = 0x01 + data[9] = 0x01 + + + + genPkt.addSubPkt(0x1, 0, 0x0200, 0xe, 80, data) + + data = [0,] * 2 + data[0] = 0x80 + data[1] = 0x00 + genPkt.addSubPkt(0x0, 0, 0x302, 0xe, 2, data) + + gen_file_def = "ebmmu_tc8_settings" + 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.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + + #------------------------------------------------------------------------- + #>>>>>>用EB-MMU方式读取EB-MMU设置, 8 + genPkt.clean() + genPkt.setPktType(0) + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + data = [1,] * 0x80 + genPkt.addSubPkt(0x1000, 2, addr_off, 0x1, 0x80, data) + + gen_file_def = "ebmmu_tc8_write" + 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, 0x300, False, 0x20) + +genIFRwDataCode(2, 0x300, False, 0x20) + +genIFRwDataCode(3, 0x300, False, 0x20) + +genIFRwDataCode(4, 0x300, False, 0x20) + +genSlvSMReadData(1, 0, 0x80) + +genSlvSMReadData(2, 0, 0x80) + +genSlvSMReadData(3, 0, 0x80) + +genSlvSMReadData(4, 0, 0x80) + ) + + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + + + #-------------------------------------------------------------------------- + #>>>>>>设置EB-MMU,测试用例9,广播写,检查权限 + genPkt.clean() + genPkt.setPktType(0) + + addr_off = 0x0 + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + data = [0,] * 256 + + addr = addr_off + 0x0 + #print(hex(addr)) + data[0] = (addr & 0xff) + data[1] = (addr >> 8) & 0xff + data[2] = 0x00 + data[3] = 0x10 + + data[4] = 0x00 + data[5] = 0x08 + + data[6] = 0x00 + data[7] = 0x01 + + data[8] = 0x02 + data[9] = 0x01 + + + + genPkt.addSubPkt(0x1, 0, 0x0200, 0xe, 80, data) + + data = [0,] * 2 + data[0] = 0x00 + data[1] = 0x01 + genPkt.addSubPkt(0x0, 0, 0x302, 0xe, 2, data) + + gen_file_def = "ebmmu_tc9_settings" + 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.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + + #------------------------------------------------------------------------- + #>>>>>>用EB-MMU方式读取EB-MMU设置, 9 + genPkt.clean() + genPkt.setPktType(0) + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + data = [0xa5,] * 0x100 + data[-1] = 0x5a + genPkt.addSubPkt(0x1000, 2, addr_off, 0x1, 0x100, data) + + gen_file_def = "ebmmu_tc9_write" + 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, 0x300, False, 0x20) + +genIFRwDataCode(2, 0x300, False, 0x20) + +genIFRwDataCode(3, 0x300, False, 0x20) + +genIFRwDataCode(4, 0x300, False, 0x20) + +genSlvSMReadData(1, 0, 0x100) + +genSlvSMReadData(2, 0, 0x100) + +genSlvSMReadData(3, 0, 0x100) + +genSlvSMReadData(4, 0, 0x100) + ) + + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + + + #-------------------------------------------------------------------------- + #>>>>>>设置EB-MMU,测试用例10,广播写,检查权限 + genPkt.clean() + genPkt.setPktType(0) + + addr_off = 0x0 + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + data = [0,] * 256 + + addr = addr_off + 0x0 + #print(hex(addr)) + data[0] = (addr & 0xff) + data[1] = (addr >> 8) & 0xff + data[2] = 0x00 + data[3] = 0x10 + + data[4] = 0x00 + data[5] = 0x08 + + data[6] = 0x00 + data[7] = 0x01 + + data[8] = 0x02 + data[9] = 0x01 + + + + genPkt.addSubPkt(0x1, 0, 0x0200, 0xe, 80, data) + + data = [0,] * 2 + data[0] = 0x00 + data[1] = 0x01 + genPkt.addSubPkt(0x0, 0, 0x302, 0xe, 2, data) + + gen_file_def = "ebmmu_tc10_settings" + 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.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + + #------------------------------------------------------------------------- + #>>>>>>用EB-MMU方式读取EB-MMU设置, 10 + genPkt.clean() + genPkt.setPktType(0) + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + data = [0xc3,] * 0x100 + data[-1] = 0x3c + genPkt.addSubPkt(0x1000, 2, addr_off, 0x1, 0x100, data) + + gen_file_def = "ebmmu_tc10_write" + 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.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + + + #------------------------------------------------------------------------- + #>>>>>>用EB-MMU方式读取EB-MMU设置, 10 + genPkt.clean() + genPkt.setPktType(0) + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + data = [0x81,] * 0x100 + data[-1] = 0x18 + genPkt.addSubPkt(0x1000, 2, addr_off, 0x1, 0x100, data) + + gen_file_def = "ebmmu_tc10b_write" + 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, 0x300, False, 0x20) + +genIFRwDataCode(2, 0x300, False, 0x20) + +genIFRwDataCode(3, 0x300, False, 0x20) + +genIFRwDataCode(4, 0x300, False, 0x20) + +genSlvSMReadData(1, 0, 0x100) + +genSlvSMReadData(1, 0, 0x100) + +genSlvSMReadData(2, 0, 0x100) + +genSlvSMReadData(2, 0, 0x100) + +genSlvSMReadData(3, 0, 0x100) + +genSlvSMReadData(3, 0, 0x100) + +genSlvSMReadData(4, 0, 0x100) + +genSlvSMReadData(4, 0, 0x100) + ) + + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + + + #-------------------------------------------------------------------------- #>>>>>> 测试用例1 看门狗测试