diff --git a/tb/shinTest/ShinTopSpiTb.v b/tb/shinTest/ShinTopSpiTb.v index 8a4403d..906b0d3 100644 --- a/tb/shinTest/ShinTopSpiTb.v +++ b/tb/shinTest/ShinTopSpiTb.v @@ -37,8 +37,8 @@ //`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_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" @@ -1849,6 +1849,26 @@ initial begin end `endif +`ifdef ENABLE_EBMMU_TR11_TEST + begin:EBMMU_TR11_TEST + `BEGIN_TESTCASE(`ENABLE_EBMMU_TR11_TEST); + _t_start = $realtime; + #1000 + $fdisplay(spidata_file, "\n\n测试用例: ebmmu 测试用11"); + $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); + + `include "ebmmu_tc11_settings.vh" + + `include "ebmmu_tc11_write.vh" + + `include "ebmmu_tc11b_write.vh" + + _t_end = $realtime; + $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); + `END_TESTCASE(`ENABLE_EBMMU_TR11_TEST); + end +`endif + `ifdef ENABLE_WD1_TEST begin:WD1_TEST diff --git a/tb/shinTest/gen_pkt.py b/tb/shinTest/gen_pkt.py index 826716a..a51f1ae 100755 --- a/tb/shinTest/gen_pkt.py +++ b/tb/shinTest/gen_pkt.py @@ -1997,7 +1997,7 @@ if __name__ == '__main__': genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) #------------------------------------------------------------------------- - #>>>>>>用EB-MMU方式读取EB-MMU设置, 10 + #>>>>>>用EB-MMU方式读取EB-MMU设置, 10,两次写入em-mmu genPkt.clean() genPkt.setPktType(0) @@ -2017,9 +2017,6 @@ if __name__ == '__main__': genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) - - #------------------------------------------------------------------------- - #>>>>>>用EB-MMU方式读取EB-MMU设置, 10 genPkt.clean() genPkt.setPktType(0) @@ -2050,6 +2047,180 @@ if __name__ == '__main__': ) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + + + + #-------------------------------------------------------------------------- + #>>>>>>设置EB-MMU,测试用例11,读,检查权限 + genPkt.clean() + genPkt.setPktType(0) + addr = 0x10000000 + + addr_off = 0x0 + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + data = [0,] * 256 + + addr = addr + addr_off + #print(hex(addr)) + data[0] = addr & 0xff + data[1] = (addr >> 8) & 0xff + data[2] = (addr >> 16) & 0xff + data[3] = (addr >> 24) & 0xff + + data[4] = 0x00 + data[5] = 0x10 + + data[6] = 0x00 + data[7] = 0x01 + + data[8] = 0x01 + data[9] = 0x01 + + genPkt.addSubPkt(0x1, 0, 0x0200, 0x1, 80, data) + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + addr_off = addr_off + 0x100 + data = [0,] * 256 + + addr = addr + addr_off + data[0] = addr & 0xff + data[1] = (addr >> 8) & 0xff + data[2] = (addr >> 16) & 0xff + data[3] = (addr >> 24) & 0xff + + data[4] = 0x00 + data[5] = 0x10 + + data[6] = 0x00 + data[7] = 0x01 + + data[8] = 0x01 + data[9] = 0x01 + + genPkt.addSubPkt(0x2, 0, 0x0200, 0x1, 80, data) + + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + addr_off = addr_off + 0x100 + data = [0,] * 256 + + addr = addr + addr_off + data[0] = addr & 0xff + data[1] = (addr >> 8) & 0xff + data[2] = (addr >> 16) & 0xff + data[3] = (addr >> 24) & 0xff + + + data[4] = 0x00 + data[5] = 0x10 + + data[6] = 0x00 + data[7] = 0x01 + + data[8] = 0x01 + data[9] = 0x01 + + genPkt.addSubPkt(0x3, 0, 0x0200, 0x1, 80, data) + + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + addr_off = addr_off + 0x100 + data = [0,] * 256 + + addr = addr + addr_off + data[0] = addr & 0xff + data[1] = (addr >> 8) & 0xff + data[2] = (addr >> 16) & 0xff + data[3] = (addr >> 24) & 0xff + + + data[4] = 0x00 + data[5] = 0x10 + + data[6] = 0x00 + data[7] = 0x01 + + data[8] = 0x01 + data[9] = 0x01 + + genPkt.addSubPkt(0x4, 0, 0x0200, 0x1, 80, data) + + data = [0,] * 2 + data[0] = 0x00 + data[1] = 0x01 + genPkt.addSubPkt(0x0, 0, 0x302, 0xe, 2, data) + + gen_file_def = "ebmmu_tc11_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设置, 11,两次写入em-mmu + genPkt.clean() + genPkt.setPktType(0) + + data0 = list(range(0x100)) + data1 = list(range(0xff, -1, -1)) + + + genPkt.addBeforeExc( genIFRwDataCode(1, 0x1000, True, 0x100, data0) + + genIFRwDataCode(1, 0x1000, True, 0x100, data1) + + genIFRwDataCode(2, 0x1000, True, 0x100, data1) + + genIFRwDataCode(2, 0x1000, True, 0x100, data0) + + genIFRwDataCode(3, 0x1000, True, 0x100, data0) + + genIFRwDataCode(3, 0x1000, True, 0x100, data1) + + genIFRwDataCode(4, 0x1000, True, 0x100, data1) + + genIFRwDataCode(4, 0x1000, True, 0x100, data0)) + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + data = [0, ] * 0x100 * 4 + + gen_file_def = "ebmmu_tc11_write" + sm_idx = 0 + + genPkt.addSubPkt(0x1000, 2, 0, 0x0, 0x100 * 4, data) + + 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) + ) + + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + + genPkt.clean() + genPkt.setPktType(0) + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + data = [0x0,] * 0x100 * 4 + + gen_file_def = "ebmmu_tc11b_write" + sm_idx = 0 + + genPkt.addSubPkt(0x1000, 2, 0, 0x0, 0x100 * 4, data) + + 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) + ) + + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)