diff --git a/tb/shinTest/ShinTopSpiTb.v b/tb/shinTest/ShinTopSpiTb.v index 8328ba1..1e27607 100644 --- a/tb/shinTest/ShinTopSpiTb.v +++ b/tb/shinTest/ShinTopSpiTb.v @@ -853,6 +853,34 @@ initial begin spi_trans( (`MST_RX_ADDR), (`SPI_READ), (`DEF_bc_r_pkt_len), (`IF_IDX(0)) );//读一下SM0的切换地址,将fifo弹出 end + + #1000 + $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); + begin + $fdisplay(spidata_file, "\n--->>>广播写"); + `include "bc_w_pkt.vh" + + `DEF_bc_w_pkt_sm(txBuf); + spi_trans( (`MST_TX_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(0)) ); + spi_trans( (`MST_RX_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(0)) ); + + `DEF_bc_w_pkt(txBuf); + spi_trans( (`MST_TX_ADDR), (`SPI_WRITE), (`DEF_bc_w_pkt_len), (`IF_IDX(0)) ); //写入SM1 + //发布请求 + txBuf[0+3] = `MST_TX_TRG; + spi_trans( (16'h20), (`SPI_WRITE), (1), (`IF_IDX(0)) );//发送SM0 接收SM0, 请求发送 + @(posedge isResp) #5 begin end + + $fdisplay(spidata_file, ">>回包:"); + spi_trans( (`MST_RX_ADDR), (`SPI_READ), (`DEF_bc_w_pkt_len), (`IF_IDX(0)) );//读一下SM0的切换地址,将fifo弹出 + end + /* + spi_trans( (16'h0800), (`SPI_READ), (32), (`IF_IDX(1)) ); + spi_trans( (16'h0800), (`SPI_READ), (32), (`IF_IDX(2)) ); + spi_trans( (16'h0800), (`SPI_READ), (32), (`IF_IDX(3)) ); + spi_trans( (16'h0800), (`SPI_READ), (32), (`IF_IDX(4)) ); + */ + /*--------------------------------------------------------------------------------------------------------- 测试用例 1. 测试 同步(sync) 和 同步输出 (sync_out) diff --git a/tb/shinTest/gen_pkt.py b/tb/shinTest/gen_pkt.py index 15bf0af..f7fe0b4 100755 --- a/tb/shinTest/gen_pkt.py +++ b/tb/shinTest/gen_pkt.py @@ -309,6 +309,25 @@ if __name__ == '__main__': genPkt.gen("./generated/shin/bc_r_pkt.vh", 1) + #------------------------------------------------------------------------- + #>>>>>>广播写 + genPkt.clean() + genPkt.setPktType(0) + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + data = bytearray(b"\0" * 2) + data[0] = 32 + data[1] = 0 + genPkt.addSubPkt(random.randint(0, 2048), 0, 0x0302, 0xe, 2, data) + + data = bytearray(b"\0"*100) + for i in range(100): + data[i] = i + 1 + genPkt.addSubPkt(random.randint(0, 2048), 0, 0x0800, 0xe, 32, data) + + genPkt.gen("./generated/shin/bc_w_pkt.vh", 1) + +