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,)