From 1c842bbe32c33e8fca00aa10950276d77165b388 Mon Sep 17 00:00:00 2001 From: bacon Date: Tue, 20 May 2025 11:48:49 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=EF=BC=8C=E9=AA=8C=E8=AF=81=E5=97=85=E6=8E=A2=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tb/shinTest/ShinTopSpiTb.v | 60 +++++++++++++++++++++++++++++++------- 1 file changed, 50 insertions(+), 10 deletions(-) diff --git a/tb/shinTest/ShinTopSpiTb.v b/tb/shinTest/ShinTopSpiTb.v index 73191ff..fab86c6 100644 --- a/tb/shinTest/ShinTopSpiTb.v +++ b/tb/shinTest/ShinTopSpiTb.v @@ -528,11 +528,8 @@ initial begin end - - - // 顺序索引 - #50000 + //#50000 #50000 #50000 $fdisplay(spidata_file, "--->>>嗅探后,检查链路状态寄存器"); @@ -605,8 +602,6 @@ initial begin //读写 #50000 #50000 - #50000 - #50000 $fdisplay(spidata_file, "--->>>设置顺序地址后,检查顺序地址"); //spi_trans( (16'h0010), (`SPI_READ), (5), (`IF_IDX(0)) ); spi_trans( (16'h0000), (`SPI_READ), (16), (`IF_IDX(1)) ); @@ -614,7 +609,55 @@ initial begin spi_trans( (16'h0000), (`SPI_READ), (16), (`IF_IDX(3)) ); spi_trans( (16'h0000), (`SPI_READ), (16), (`IF_IDX(4)) ); - $fdisplay(spidata_file, "\n\n测试用例5-交换数据"); + + //嗅探 + #10000 + $fdisplay(spidata_file, "\n\n测试用例5-发送嗅探包,需要在波形文件里检查"); + begin + $fdisplay(spidata_file, "--->>>嗅探前,检查链路状态寄存器"); + //spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(0)) ); + spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(1)) ); + spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(2)) ); + spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(3)) ); + spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(4)) ); + + $fdisplay(spidata_file, "--->>>嗅探"); + //设置SM1在写入0x3地址触发enq + txBuf[0+3] = 8'h03; + txBuf[1+3] = 8'h00; + spi_trans( (16'h0202), (`SPI_WRITE), (2), (`IF_IDX(0)) ); + + //无子报文 + `include "detect_pkt.vh" + spi_trans( (16'h1000), (`SPI_WRITE), (4), (`IF_IDX(0)) ); //写入SM1 + + //发布请求 + txBuf[0+3] = 8'h04; + txBuf[1+3] = 8'h00; + spi_trans( (16'h21), (`SPI_WRITE), (2), (`IF_IDX(0)) );//写入长度 + + txBuf[0+3] = 8'h01; + spi_trans( (16'h20), (`SPI_WRITE), (1), (`IF_IDX(0)) );//发送SM0 接收SM0, 请求发送 + @(posedge isResp) #5 begin end + + end + + + // 顺序索引 + //#50000 + #50000 + #50000 + $fdisplay(spidata_file, "--->>>嗅探后,检查链路状态寄存器"); + //spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(0)) ); + spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(1)) ); + spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(2)) ); + spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(3)) ); + spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(4)) ); + + + #50000 + #50000 + $fdisplay(spidata_file, "\n\n测试用例6-交换数据"); $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); begin @@ -625,9 +668,6 @@ initial begin `include "seq_pkt.vh" spi_trans( (16'h1000), (`SPI_WRITE), (516), (`IF_IDX(0)) ); //写入SM1 - - - //发布请求 txBuf[0+3] = 8'h04; txBuf[1+3] = 8'h02; From 8bfae7914b7e2d02d9c75fb23d23b8553f8bf6ed Mon Sep 17 00:00:00 2001 From: bacon Date: Tue, 20 May 2025 15:12:07 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=EF=BC=8C=E7=94=A8=E4=BB=A5=E6=AD=A3=E7=A1=AE=E6=89=93=E5=8D=B0?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=BA=8F=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tb/shinTest/ShinTopSpiTb.v | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/tb/shinTest/ShinTopSpiTb.v b/tb/shinTest/ShinTopSpiTb.v index 2759d16..b64a6b4 100644 --- a/tb/shinTest/ShinTopSpiTb.v +++ b/tb/shinTest/ShinTopSpiTb.v @@ -399,7 +399,7 @@ task spi_trans( input [15:0] saddress, input [7:0] scmd, input [12:0] slength,in begin //$fwrite(spidata_file, "------------%5t------------\n", $time); $fwrite(spidata_file, "T:%2tns \tdev:%4d, addr:0x%02h%02h, %s, len:%4d\n", - $time/1000, sidx, txBuf[1], txBuf[0], + $time/1000, ((sidx >= 5)? ((sidx >= 10)? (sidx - 10):(sidx - 5)):sidx), txBuf[1], txBuf[0], ((txBuf[2] == 0)? "Write":" Read"), slength); for (integer i=0; i Date: Tue, 20 May 2025 16:03:20 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=88=86=E5=89=B2=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tb/shinTest/ShinTopSpiTb.v | 37 +++++++++++++------------------------ 1 file changed, 13 insertions(+), 24 deletions(-) diff --git a/tb/shinTest/ShinTopSpiTb.v b/tb/shinTest/ShinTopSpiTb.v index cd65420..6cdae78 100644 --- a/tb/shinTest/ShinTopSpiTb.v +++ b/tb/shinTest/ShinTopSpiTb.v @@ -430,17 +430,12 @@ endtask /*--------------------------------------------------------------------------------------------------------- - 测试用例1 - - ---------------------------------------------------------------------------------------------------------*/ initial begin #1000 $fdisplay(spidata_file, "测试用例1-从IP中读取寄存器,上电后的寄存器期望值为0"); - //spi_trans( (16'h00), (`SPI_READ), (1024), (`IF_IQSPI(0)) ); - //spi_trans( (16'h400), (`SPI_READ), (1024), (`IF_IQSPI(0)) ); spi_trans( (16'h00), (`SPI_READ), (64), (`IF_IQSPI(0)) ); spi_trans( (16'h00), (`SPI_READ), (64), (`IF_IQSPI(1)) ); spi_trans( (16'h00), (`SPI_READ), (64), (`IF_IQSPI(2)) ); @@ -470,10 +465,7 @@ initial begin /*--------------------------------------------------------------------------------------------------------- - 测试用例2 - - ---------------------------------------------------------------------------------------------------------*/ //设置主站从站 $fdisplay(spidata_file, "\n\n测试用例2-设置IP为主站或从站,并读取设置结果,期望:0主,1~4从"); @@ -552,10 +544,7 @@ initial begin spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(4)) ); /*--------------------------------------------------------------------------------------------------------- - -测试用例1 - - +测试用例4 ---------------------------------------------------------------------------------------------------------*/ $fdisplay(spidata_file, "\n\n测试用例4-设置顺序索引"); $display("index @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); @@ -626,7 +615,9 @@ initial begin spi_trans( (16'h0000), (`SPI_READ), (16), (`IF_IDX(3)) ); spi_trans( (16'h0000), (`SPI_READ), (16), (`IF_IDX(4)) ); - +/*--------------------------------------------------------------------------------------------------------- +测试用例5 +---------------------------------------------------------------------------------------------------------*/ //嗅探 #10000 $fdisplay(spidata_file, "\n\n测试用例5-发送嗅探包,需要在波形文件里检查"); @@ -672,7 +663,9 @@ initial begin spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(3)) ); spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(4)) ); - +/*--------------------------------------------------------------------------------------------------------- +测试用例6 +---------------------------------------------------------------------------------------------------------*/ #50000 #50000 $fdisplay(spidata_file, "\n\n测试用例6-交换数据"); @@ -696,6 +689,10 @@ initial begin spi_trans( (16'ha03), (`SPI_READ), (1), (`IF_IDX(0)) );//读一下SM0的切换地址,将fifo弹出 +/*--------------------------------------------------------------------------------------------------------- +测试用例7 +测试 同步(sync) 和 同步输出 (sync_out) +---------------------------------------------------------------------------------------------------------*/ // 同步 #90000 @@ -714,10 +711,8 @@ initial begin #90000 $display("sync @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); + $fdisplay(spidata_file, "\n\n测试用例-测试同步(sync)和同步输出(sync_out)"); begin - - - //设置SM1在写入 0x18 len触发enq txBuf[0+3] = 8'h18; txBuf[1+3] = 8'h00; @@ -747,8 +742,6 @@ initial begin - //设定sync信号 - //设置SM1在写入52 len触发enq txBuf[0+3] = 8'd52; txBuf[1+3] = 8'h00; @@ -765,8 +758,7 @@ initial begin spi_trans( (16'h833), (`SPI_READ), (1), (`IF_IDX(0)) );//读一下SM0的切换地址,将fifo弹出 end - - + //清脉冲 txBuf[0+3] = 0; //负载0x122 sync0脉冲宽度 txBuf[1+3] = 0; //负载0x123 @@ -777,9 +769,6 @@ initial begin txBuf[6+3] = 0; //负载0x128 sync3脉冲宽度 txBuf[7+3] = 0; //负载0x129 spi_trans( (16'h0122), (`SPI_WRITE), (8), (`IF_IDX(2)) ); //slv2 - - - end