From 0ccad7f894de8aa4365af428eccedbe4e8c1b10a Mon Sep 17 00:00:00 2001 From: bacon Date: Fri, 30 May 2025 16:06:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=B9=BF=E6=92=AD=E8=AF=BB?= =?UTF-8?q?=E5=86=99=E7=9A=84=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B,?= =?UTF-8?q?=E4=BD=86=E6=98=AF=E6=B2=A1=E6=9C=89=E6=B5=8B=E8=AF=95=E9=80=9A?= =?UTF-8?q?=E8=BF=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tb/shinTest/ShinTopSpiTb.v | 48 ++++++++++++++++++++++++++------------ tb/shinTest/gen_pkt.py | 20 ++++++++++++++++ 2 files changed, 53 insertions(+), 15 deletions(-) diff --git a/tb/shinTest/ShinTopSpiTb.v b/tb/shinTest/ShinTopSpiTb.v index 15dd5c0..bd2860e 100644 --- a/tb/shinTest/ShinTopSpiTb.v +++ b/tb/shinTest/ShinTopSpiTb.v @@ -5,11 +5,15 @@ `define ENABLE_SET_ADDR_TEST //`define ENABLE_SM1_SEND_TEST //`define ENABLE_SMx_SEND_TEST -`define ENABLE_EXCHG_DATA_SEQ_TEST - //`define ENABLE_EXCHG_DATA_SEQ0_TEST - //`define ENABLE_EXCHG_DATA_SEQ1_TEST - //`define ENABLE_EXCHG_DATA_SEQ2_TEST - //`define ENABLE_EXCHG_DATA_BC_TEST + +//`define ENABLE_EXCHG_DATA_SEQ0_TEST +//`define ENABLE_EXCHG_DATA_SEQ1_TEST +//`define ENABLE_EXCHG_DATA_SEQ2_TEST + +`define ENABLE_BC_R_TEST +`define ENABLE_BC_W_TEST +//`define ENABLE_BC_RW_TEST + `define ENABLE_SYNC_TEST `define ENABLE_SYNC_SIG0_TEST `define ENABLE_SYNC_SIG1_TEST @@ -767,7 +771,6 @@ initial begin `endif -`ifdef ENABLE_EXCHG_DATA_SEQ_TEST /*--------------------------------------------------------------------------------------------------------- 测试用例 1. 交换数据sm0~sm7 @@ -777,7 +780,7 @@ initial begin 4. 寄存器单读/写/读写,寄存器广播读/写/读写 5. 以上交换数据的错误形式 ---------------------------------------------------------------------------------------------------------*/ - `ifdef ENABLE_EXCHG_DATA_SEQ0_TEST +`ifdef ENABLE_EXCHG_DATA_SEQ0_TEST begin:EXCHG_DATA_SEQ0_TESTCASE _t_start = $time; #1000 @@ -791,9 +794,9 @@ initial begin _t_end = $time; $fdisplay(spidata_file, "该测试用例运行时间:%2tns\n", (_t_end - _t_start) / 1000); end - `endif +`endif - `ifdef ENABLE_EXCHG_DATA_SEQ1_TEST +`ifdef ENABLE_EXCHG_DATA_SEQ1_TEST begin:EXCHG_DATA_SEQ1_TESTCASE _t_start = $time; #1000 @@ -809,9 +812,9 @@ initial begin _t_end = $time; $fdisplay(spidata_file, "该测试用例运行时间:%2tns\n", (_t_end - _t_start) / 1000); end - `endif +`endif - `ifdef ENABLE_EXCHG_DATA_SEQ2_TEST +`ifdef ENABLE_EXCHG_DATA_SEQ2_TEST begin:EXCHG_DATA_SEQ2_TESTCASE _t_start = $time; #1000 @@ -860,10 +863,9 @@ initial begin _t_end = $time; $fdisplay(spidata_file, "该测试用例运行时间:%2tns\n", (_t_end - _t_start) / 1000); end - `endif `endif -`ifdef ENABLE_EXCHG_DATA_BC_TEST +`ifdef ENABLE_BC_R_TEST begin:EXCHG_DATA_BC_R_TESTCASE _t_start = $time; @@ -877,9 +879,9 @@ initial begin _t_end = $time; $fdisplay(spidata_file, "该测试用例运行时间:%2tns\n", (_t_end - _t_start) / 1000); end +`endif - - +`ifdef ENABLE_BC_W_TEST begin:EXCHG_DATA_BC_W_TESTCASE _t_start = $time; #1000 @@ -898,6 +900,22 @@ initial begin end `endif +`ifdef ENABLE_BC_RW_TEST + begin:EXCHG_DATA_BC_RW_TESTCASE + _t_start = $time; + #1000 + $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); + + $fdisplay(spidata_file, "\n--->>>广播读写"); + `include "bc_rw_pkt.vh" + + spi_trans( (16'h0180), (`SPI_READ), (128), (`IF_IDX(1)) ); + + _t_end = $time; + $fdisplay(spidata_file, "该测试用例运行时间:%2tns\n", (_t_end - _t_start) / 1000); + end +`endif + `ifdef ENABLE_SYNC_TEST /*--------------------------------------------------------------------------------------------------------- diff --git a/tb/shinTest/gen_pkt.py b/tb/shinTest/gen_pkt.py index 4f2f408..c47d5c6 100755 --- a/tb/shinTest/gen_pkt.py +++ b/tb/shinTest/gen_pkt.py @@ -682,6 +682,26 @@ if __name__ == '__main__': genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + #------------------------------------------------------------------------- + #>>>>>>广播读写 + genPkt.clean() + genPkt.setPktType(0) + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + data = bytearray(b"\0"*100) + for i in range(4): + data[i] = i + 1 + genPkt.addSubPkt(random.randint(0, 2048), 0, 0x00c0, 0xf, 4, data) + + gen_file_def = " " + 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)