From de1b353b0aec312575f1664113025ddd236eda76 Mon Sep 17 00:00:00 2001 From: bacon Date: Fri, 8 Aug 2025 00:58:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E4=BB=BF=E7=9C=9F=E4=B8=AD=E9=87=87?= =?UTF-8?q?=E7=94=A8SPI=E7=9A=84=E6=96=B9=E5=BC=8F=E8=AF=BB=E5=8F=96?= =?UTF-8?q?=E4=B8=BB=E7=AB=99=E7=9A=84=E4=B8=AD=E6=96=AD=EF=BC=8C=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E6=98=AF=E5=90=A6=E5=AE=8C=E6=88=90=E9=80=9A=E8=AE=AF?= =?UTF-8?q?=EF=BC=8C=E6=B5=8B=E8=AF=95=E5=9F=BA=E6=9C=AC=E5=8F=AF=E7=94=A8?= =?UTF-8?q?=EF=BC=8C=E4=BD=86=E6=98=AF=E9=9C=80=E8=A6=81=E6=8F=90=E5=8D=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tb/shinTest/ShinTopSpiTb.v | 66 +++++++++++++++++++++++++++++++++++ tb/shinTest/pyutils/GenPkt.py | 2 +- 2 files changed, 67 insertions(+), 1 deletion(-) diff --git a/tb/shinTest/ShinTopSpiTb.v b/tb/shinTest/ShinTopSpiTb.v index 4a8f2bc..4dcd653 100644 --- a/tb/shinTest/ShinTopSpiTb.v +++ b/tb/shinTest/ShinTopSpiTb.v @@ -721,6 +721,72 @@ task f_write(input [31:0] logh, input [15:0] saddress, input [7:0] scmd, input [ end endtask +task wait_comm_finished(); + begin:WAIT_COMM_FINISHED_CODE + real st; + integer is_run; + + st = $realtime; + is_run = 1; + + txBuf[0] = 8'h00; + txBuf[1] = 8'h78; + txBuf[2] = `SPI_WRITE; + txBuf[3] = 8'h03; + + length = 8'h04; + idx = `IF_IQSPI(0); + + #5 + @(negedge sck) + isReq <= 1; + @(posedge sck) #5 + isReq <= 0; + + @( negedge isBusy) #1000 + begin + + end + + + while (is_run == 1) begin + txBuf[0] = 8'h00; + txBuf[1] = 8'h74; + txBuf[2] = `SPI_READ; + + length = 8'h07; + idx = `IF_IQSPI(0); + + #5 + @(negedge sck) + isReq <= 1; + @(posedge sck) #5 + isReq <= 0; + + @( negedge isBusy) #1000 + begin + + end + #2000 + //$display("%x %x", rxBuf[3], rxBuf[6]); + if ((rxBuf[3] & 8'h02) == 8'h02) + begin + $display("1111111111"); + is_run = 0; + end + if ((rxBuf[6] & 8'h60) != 8'h00) + begin + $display("222222222"); + is_run = 0; + end + if (($realtime - st) >= 1000000.0) + begin + $display("333333333"); + //is_run = 0; + end + end + end +endtask initial begin diff --git a/tb/shinTest/pyutils/GenPkt.py b/tb/shinTest/pyutils/GenPkt.py index fca4655..0736367 100644 --- a/tb/shinTest/pyutils/GenPkt.py +++ b/tb/shinTest/pyutils/GenPkt.py @@ -235,7 +235,7 @@ def genTrgTransPktCode(gen_name, sm_idx, wlog=True): def genReadAckPktCode(gen_name, sm_idx, wlog=True): return '''\n//等待回包\n'''\ + '''_reset_deadline_ind = 1;\n'''\ - + '''@(posedge isResp or posedge _deadline_ind) #5 begin end\n'''\ + + '''wait_comm_finished();\n'''\ + f'''$fdisplay(spidata_file, ">>读取回包,使用SM{sm_idx}:");\n'''\ + '''%s( (`MST_RX%d_ADDR), (`SPI_READ), (`DEF_%s_len), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx, gen_name,)