From aa73bb3d99d5ee65bf9a9192ec82c941a26b0647 Mon Sep 17 00:00:00 2001 From: bacon Date: Thu, 26 Jun 2025 17:24:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E4=BB=A3=E7=A0=81=E9=94=99?= =?UTF-8?q?=E8=AF=AF,=E5=A2=9E=E5=8A=A0ebmmu=20=E6=B5=8B=E8=AF=95=E7=94=A8?= =?UTF-8?q?=E4=BE=8B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tb/shinTest/ShinTopSpiTb.v | 58 +++++++++++++------------------------- tb/shinTest/gen_pkt.py | 26 +++++++++++++++++ 2 files changed, 46 insertions(+), 38 deletions(-) diff --git a/tb/shinTest/ShinTopSpiTb.v b/tb/shinTest/ShinTopSpiTb.v index 8304563..580c433 100644 --- a/tb/shinTest/ShinTopSpiTb.v +++ b/tb/shinTest/ShinTopSpiTb.v @@ -7,9 +7,9 @@ //`define ENABLE_SM1_SEND_TEST //`define ENABLE_SMx_SEND_TEST -`define ENABLE_EXCHG_DATA_SEQ0_TEST +//`define ENABLE_EXCHG_DATA_SEQ0_TEST //`define ENABLE_EXCHG_DATA_SEQ1_TEST -`define ENABLE_EXCHG_DATA_SEQ2_TEST +//`define ENABLE_EXCHG_DATA_SEQ2_TEST //`define ENABLE_EXCHG_DATA_SEQ3_TEST //`define ENABLE_BC_R_TEST @@ -25,6 +25,7 @@ //`define ENABLE_EBMMU_TC2_TEST //`define ENABLE_EBMMU_TC3_TEST //`define ENABLE_EBMMU_TC4_TEST +`define ENABLE_EBMMU_TC5_TEST module ShinTopSpiTb( @@ -467,13 +468,13 @@ task spi_trans( input [15:0] saddress, input [7:0] scmd, input [12:0] slength,in if (scmd == 0) begin addr_type = txBuf[_pos + 1] & 8'h3; - dev = txBuf[_pos] * 256 + ((txBuf[_pos + 1] >> 2) & 8'hff); + dev = (txBuf[_pos] >> 2) * 256 + ((txBuf[_pos + 1] >> 2) & 8'hff); addr = txBuf[_pos + 2] * 256 + (txBuf[_pos + 3] & 8'hff); cmd = (txBuf[_pos + 4] >> 4) & 8'h0f; len = (txBuf[_pos + 4] & 8'h0f) * 256 + (txBuf[_pos + 5] & 8'hff); end else begin addr_type = rxBuf[_pos + 1] & 8'h3; - dev = rxBuf[_pos] * 256 + ((rxBuf[_pos + 1] >> 2) & 8'hff); + dev = (rxBuf[_pos] >> 2) * 256 + ((rxBuf[_pos + 1] >> 2) & 8'hff); addr = rxBuf[_pos + 2] * 256 + (rxBuf[_pos + 3] & 8'hff); cmd = (rxBuf[_pos + 4] >> 4) & 8'h0f; len = (rxBuf[_pos + 4] & 8'h0f) * 256 + (rxBuf[_pos + 5] & 8'hff); @@ -483,7 +484,7 @@ task spi_trans( input [15:0] saddress, input [7:0] scmd, input [12:0] slength,in $fwrite(spidata_file, "// type:%3d dev:%3d addr:0x%04x cmd:0x%1x len:%3d", addr_type, dev, addr[15:0], cmd[3:0], len); else begin addr = dev * 65536 + addr; - $fwrite(spidata_file, "// type:%3d addr:0x08x cmd:0x%1x len:%3d", addr_type, addr, cmd[3:0], len); + $fwrite(spidata_file, "// type:%3d addr:0x%08x cmd:0x%1x len:%3d", addr_type, addr, cmd[3:0], len); end end @@ -1368,47 +1369,28 @@ initial begin $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 + `include "ebmmu_tc4_settings.vh" - txBuf[3] = 8'h98; - txBuf[4] = 8'h00; - spi_trans((16'h030e), (`SPI_WRITE), (2), (`IF_IDX(2)) );//dev2_sm3 + `include "ebmmu_tc4_read.vh" - txBuf[3] = 8'h81; - txBuf[4] = 8'h00; - spi_trans((16'h0316), (`SPI_WRITE), (2), (`IF_IDX(3)) );//dev2_sm3 + _t_end = $realtime; + $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); + end +`endif - 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)) ); +`ifdef ENABLE_EBMMU_TC5_TEST + begin:EBMMU_TC5_TEST + _t_start = $realtime; + #1000 + $fdisplay(spidata_file, "\n\n测试用例: ebmmu 测试用4"); + $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); `include "ebmmu_tc4_settings.vh" `include "ebmmu_tc4_read.vh" + `include "ebmmu_tc5_read.vh" + _t_end = $realtime; $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); end diff --git a/tb/shinTest/gen_pkt.py b/tb/shinTest/gen_pkt.py index caaff8a..6809c54 100755 --- a/tb/shinTest/gen_pkt.py +++ b/tb/shinTest/gen_pkt.py @@ -1267,6 +1267,11 @@ if __name__ == '__main__': genPkt.clean() genPkt.setPktType(0) + genPkt.addBeforeExc( genSlvSMWriteData(1, 1, 0x80) + + genSlvSMWriteData(2, 3, 0x98) + + genSlvSMWriteData(3, 5, 0x81) + + genSlvSMWriteData(4, 7, 0x8c)) + #subPkt参数:索引、索引类型、地址、命令、长度、数据 data = [0,] * 30 @@ -1372,3 +1377,24 @@ if __name__ == '__main__': 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_tc5_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) +