diff --git a/tb/shinTest/ShinTopSpiTb.v b/tb/shinTest/ShinTopSpiTb.v index d6f73b7..6ad0db6 100644 --- a/tb/shinTest/ShinTopSpiTb.v +++ b/tb/shinTest/ShinTopSpiTb.v @@ -589,7 +589,7 @@ always @(posedge sck) begin end else begin bitCnt <= bitCnt + 1; end - if ( isAQspi ) begin + if ( idx >= (`ALL_DEV_NUM * 3) ) begin if( &bitCnt ) begin byteCnt <= byteCnt +1; transCnt <= transCnt + 1; @@ -638,7 +638,7 @@ task spi_trans( input [15:0] saddress, input [7:0] scmd, input [12:0] slength,in begin txBuf[0] <= saddress[15:8]; txBuf[1] <= saddress[7:0]; - if (isAQspi) begin + if (sidx >=(`ALL_DEV_NUM * 3)) begin txBuf[2] <= (scmd | slength[12:8]); txBuf[3] <= slength[7:0]; length <= slength + 4; @@ -658,15 +658,16 @@ task spi_trans( input [15:0] saddress, input [7:0] scmd, input [12:0] slength,in @( negedge isBusy) #1000 begin //$fwrite(spidata_file, "------------%5t------------\n", $realtime); - $fwrite(spidata_file, "T:%t \tdev:%4d, addr:0x%02h%02h, %s, len:%4d\n", + $fwrite(spidata_file, "T:%t \tdev:%4d(%4d), addr:0x%02h%02h, %s, len:%4d (0x%02h%02h)\n", $realtime, - sidx % (`ALL_DEV_NUM), + sidx % (`ALL_DEV_NUM), sidx, txBuf[0], txBuf[1], (((txBuf[2] & 8'h80) == 0)? "Write":" Read"), - slength); + slength, + txBuf[2], txBuf[3]); - if (isAQspi) begin _pos = 4; end + if (sidx >=(`ALL_DEV_NUM * 3)) begin _pos = 4; end else begin _pos = 3; end if ( ((saddress == 16'h0800) @@ -847,10 +848,31 @@ always @(negedge io_int_sig[4]) begin $fdisplay(spidata_file, "**SLV3 INT CLEAR: %t", $realtime); end +//`define USING_IQSPI +//`define USING_ESPI +//`define USING_EQSPI +`define USING_AQSPI +`ifdef USING_IQSPI + `define INTERFACE_IDX 0//internal spi + `define ARRAY_IDX_OFF 3 +`endif + +`ifdef USING_ESPI + `define INTERFACE_IDX (`ALL_DEV_NUM)//internal spi + `define ARRAY_IDX_OFF 3 +`endif + +`ifdef USING_EQSPI + `define INTERFACE_IDX (`ALL_DEV_NUM * 2)//internal spi + `define ARRAY_IDX_OFF 3 +`endif + +`ifdef USING_AQSPI + `define INTERFACE_IDX (`ALL_DEV_NUM * 3)//internal spi + `define ARRAY_IDX_OFF 4 +`endif -`define INTERFACE_IDX 0 //(`ALL_DEV_NUM * 2)//internal spi -`define ARRAY_IDX_OFF 3 `define IF_IDX(idx) ((`INTERFACE_IDX)+(idx)) `define IF_IQSPI(idx) ((idx)) `define IF_OQSPI(idx) ((`ALL_DEV_NUM * 2) + (idx)) @@ -931,7 +953,7 @@ task wait_comm_finished(input [16:0] dev_idx); txBuf[6] = 8'h00; length = 8'h07; - idx = `IF_IQSPI(dev_idx); + idx = dev_idx; #5 @(negedge sck) @@ -948,7 +970,7 @@ task wait_comm_finished(input [16:0] dev_idx); while (is_run == 1) begin txBuf[0] = 8'h00; txBuf[1] = 8'h74; - if (isAQspi) begin + if (dev_idx >=(`ALL_DEV_NUM * 3)) begin txBuf[2] <= (`SPI_READ | 8'h0); txBuf[3] <= 8'h04; length = 8'h08; @@ -960,7 +982,7 @@ task wait_comm_finished(input [16:0] dev_idx); end - idx = `IF_IDX(dev_idx); + idx = dev_idx; #5 @(negedge sck) @@ -1019,32 +1041,32 @@ initial begin begin:SETTING_INTERFACE if ((`INTERFACE_IDX) == `ALL_DEV_NUM) begin - $fdisplay(spidata_file, "\n\n从内部QSPI配置使用外部的SPI接口访问EasyBus"); - txBuf[`ARRAY_IDX_OFF] = 8'h01; + $fdisplay(spidata_file, "\n\n从SPI配置使用SPI接口访问EasyBus"); + txBuf[3] = 8'h01; spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(0)) ); spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(1)) ); spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(2)) ); spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(3)) ); spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(4)) ); end else if ((`INTERFACE_IDX) == (`ALL_DEV_NUM * 2)) begin - $fdisplay(spidata_file, "\n\n从内部QSPI配置使用外部的QSPI接口访问EasyBus"); - txBuf[`ARRAY_IDX_OFF] = 8'h02; + $fdisplay(spidata_file, "\n\n从SPI配置使用2 QSPI接口访问EasyBus"); + txBuf[3] = 8'h02; spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(0)) ); spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(1)) ); spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(2)) ); spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(3)) ); spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(4)) ); end else if ((`INTERFACE_IDX) == (`ALL_DEV_NUM * 3)) begin - $fdisplay(spidata_file, "\n\n从内部QSPI配置使用外部的ASPI接口访问EasyBus"); - txBuf[`ARRAY_IDX_OFF] = 8'h03; + $fdisplay(spidata_file, "\n\n从SPI配置使用ASPI接口访问EasyBus"); + txBuf[3] = 8'h03; spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(0)) ); spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(1)) ); spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(2)) ); spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(3)) ); spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(4)) ); end else begin - $fdisplay(spidata_file, "\n\n从内部QSPI接口访问EasyBus"); - txBuf[`ARRAY_IDX_OFF] = 8'h00; + $fdisplay(spidata_file, "\n\n从SPI配置使用0 QSPI接口访问EasyBus"); + txBuf[3] = 8'h00; spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(0)) ); spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(1)) ); spi_trans( (16'h09), (`SPI_WRITE), (1), (`IF_OSPI(2)) ); diff --git a/tb/shinTest/pyutils/GenPkt.py b/tb/shinTest/pyutils/GenPkt.py index 59571a2..054d7de 100644 --- a/tb/shinTest/pyutils/GenPkt.py +++ b/tb/shinTest/pyutils/GenPkt.py @@ -241,7 +241,7 @@ def genTrgTransPktCode(gen_name, sm_idx, wlog=True, dev_idx=0): def genReadAckPktCode(gen_name, sm_idx, wlog=True, dev_idx=0): return '''\n//等待回包\n'''\ - + '''wait_comm_finished(%d);\n'''%(dev_idx, )\ + + '''wait_comm_finished(`IF_IDX(%d));\n'''%(dev_idx, )\ + f'''$fdisplay(spidata_file, ">>读取回包,使用SM{sm_idx}:");\n'''\ + '''%s( (`MST_RX%d_ADDR), (`SPI_READ), (`DEF_%s_len), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx, gen_name, dev_idx) @@ -278,6 +278,8 @@ def genIFRwDataCode(dev, addr, isWrite = False, data_len=0, data = None, wlog=Tr spi_api = "IF_OSPI" elif iface == 2: spi_api = "IF_OQSPI" + elif iface == 3: + spi_api = "IF_AQSPI" else: spi_api = "IF_IDX" @@ -286,9 +288,9 @@ def genIFRwDataCode(dev, addr, isWrite = False, data_len=0, data = None, wlog=Tr data=list() code = '' - idx = 3 + idx = 0 for item in data: - code = code + '''txBuf[%d]=8'h%02x;\n'''%(idx, item & 0xff) + code = code + '''txBuf[`ARRAY_IDX_OFF+%d]=8'h%02x;\n'''%(idx, item & 0xff) idx = idx + 1 code = code + '''%s( (16'h%04x), (`SPI_WRITE), (%d), (`%s(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", addr, data_len, spi_api, dev)