From a4594f77de0444a45a5f3652282f8a645e14e349 Mon Sep 17 00:00:00 2001 From: bacon Date: Fri, 20 Jun 2025 15:08:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=96=B0=E7=9A=84=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E7=94=A8=E4=BE=8B,=E6=93=8D=E4=BD=9CSM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tb/shinTest/ShinTopSpiTb.v | 60 +++++++++++++++++++- tb/shinTest/gen_pkt.py | 109 +++++++++++++++++++++++++++++++++++++ 2 files changed, 166 insertions(+), 3 deletions(-) diff --git a/tb/shinTest/ShinTopSpiTb.v b/tb/shinTest/ShinTopSpiTb.v index 61aa2dc..7cff8eb 100644 --- a/tb/shinTest/ShinTopSpiTb.v +++ b/tb/shinTest/ShinTopSpiTb.v @@ -21,9 +21,10 @@ //`define ENABLE_SYNC_SIG1_TEST //`define ENABLE_RESET_TEST -`define ENABLE_EBMMU_TC1_TEST -`define ENABLE_EBMMU_TC2_TEST -`define ENABLE_EBMMU_TC3_TEST +//`define ENABLE_EBMMU_TC1_TEST +//`define ENABLE_EBMMU_TC2_TEST +//`define ENABLE_EBMMU_TC3_TEST +`define ENABLE_EBMMU_TC4_TEST module ShinTopSpiTb( @@ -1355,6 +1356,59 @@ initial begin end `endif +`ifdef ENABLE_EBMMU_TC4_TEST + begin:EBMMU_TC4_TEST + _t_start = $realtime; + #1000 + $fdisplay(spidata_file, "\n\n测试用例: ebmmu 测试用4"); + $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); + + txBuf[3] = 8'h80; + txBuf[4] = 8'h00; + spi_trans((16'h0306), (`SPI_WRITE), (2), (`IF_IDX(1)) );//dev1_sm1 + + txBuf[3] = 8'h98; + txBuf[4] = 8'h00; + spi_trans((16'h030e), (`SPI_WRITE), (2), (`IF_IDX(2)) );//dev2_sm3 + + txBuf[3] = 8'h81; + txBuf[4] = 8'h00; + spi_trans((16'h0316), (`SPI_WRITE), (2), (`IF_IDX(3)) );//dev2_sm3 + + txBuf[3] = 8'h8c; + txBuf[4] = 8'h00; + spi_trans((16'h031e), (`SPI_WRITE), (2), (`IF_IDX(4)) );//dev2_sm3 + + + for (integer i=0; i < 128; i++) begin + txBuf[i + 3] = i + 1; + end + spi_trans( (16'h1000), (`SPI_WRITE), (128), (`IF_IDX(1)) ); + + for (integer i=0; i < 152; i++) begin + txBuf[i + 3] = i + 2; + end + spi_trans( (16'h2000), (`SPI_WRITE), (152), (`IF_IDX(2)) ); + + for (integer i=0; i < 129; i++) begin + txBuf[i + 3] = i + 3; + end + spi_trans( (16'h3000), (`SPI_WRITE), (129), (`IF_IDX(3)) ); + + for (integer i=0; i < 140; i++) begin + txBuf[i + 3] = i + 4; + end + spi_trans( (16'h4000), (`SPI_WRITE), (140), (`IF_IDX(4)) ); + + `include "ebmmu_tc4_settings.vh" + + `include "ebmmu_tc4_read.vh" + + _t_end = $realtime; + $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); + end +`endif + #1000000 $display("Testcase Finished! Time Out !!!"); $fclose(spidata_file); diff --git a/tb/shinTest/gen_pkt.py b/tb/shinTest/gen_pkt.py index 411eaa5..566461e 100755 --- a/tb/shinTest/gen_pkt.py +++ b/tb/shinTest/gen_pkt.py @@ -1215,3 +1215,112 @@ if __name__ == '__main__': +genReadAckPktCode(gen_file_def, sm_idx)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + + #------------------------------------------------------------------------- + #>>>>>>设置EB-MMU + genPkt.clean() + genPkt.setPktType(0) + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + data = [0,] * 30 + + data[0] = 0x58 #0x1e + 0xa + data[1] = 0x00 + data[2] = 0x00 + data[3] = 0x10 + + data[4] = 0x00 + data[5] = 0x10 + + data[6] = 0x80 + data[7] = 0x00 + + data[8] = 0x01 + data[9] = 0x01 + + genPkt.addSubPkt(0x1, 0, 0x021e, 0x1, 10, data) + + + data = [0,] * 30 + data[0] = 0x58 + 0x80 + data[1] = 0x00 + data[2] = 0x00 + data[3] = 0x10 + + data[4] = 0x00 + data[5] = 0x20 + + data[6] = 0x98 + data[7] = 0x00 + + data[8] = 0x01 + data[9] = 0x01 + genPkt.addSubPkt(0x2, 0, 0x021e, 0x1, 10, data) + + + data = [0,] * 30 + + data[0] = 0x58 + 0x80 + 0x98 + data[1] = 0x00 + data[2] = 0x00 + data[3] = 0x10 + + data[4] = 0x00 + data[5] = 0x30 + + data[6] = 0x81 + data[7] = 0x00 + + data[8] = 0x01 + data[9] = 0x01 + genPkt.addSubPkt(0x3, 0, 0x021e, 0x1, 10, data) + + data = [0,] * 30 + + data[0] = 0x58 + 0x80 + 0x98 + 0x81 + data[1] = 0x00 + data[2] = 0x00 + data[3] = 0x10 + + data[4] = 0x00 + data[5] = 0x40 + + data[6] = 0x8c + data[7] = 0x00 + + data[8] = 0x01 + data[9] = 0x01 + genPkt.addSubPkt(0x4, 0, 0x021e, 0x1, 10, data) + + + gen_file_def = "ebmmu_tc4_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设置 + genPkt.clean() + genPkt.setPktType(0) + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + data = [0,] * 550 + + genPkt.addSubPkt(0x1000, 2, 0x0058, 0x0, 0x80+0x98+0x81+0x8c, data) + + gen_file_def = "ebmmu_tc4_read" + 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) +