diff --git a/tb/shinTest/ShinTopSpiTb.v b/tb/shinTest/ShinTopSpiTb.v index 00ed6be..f997b25 100644 --- a/tb/shinTest/ShinTopSpiTb.v +++ b/tb/shinTest/ShinTopSpiTb.v @@ -10,6 +10,7 @@ //`define ENABLE_SMx_SEND_TEST //`define ENABLE_ERR_PKT1_TEST `define ENABLE_ERR_PKT2_TEST +//`define ENABLE_ERR_PKT3_TEST //`define ENABLE_EXCHG_DATA_SEQ0_TEST //`define ENABLE_EXCHG_DATA_SEQ1_TEST @@ -1146,6 +1147,65 @@ initial begin spi_trans( (16'h74), (`SPI_READ), (4), (`IF_IDX(4)) ); + $fdisplay(spidata_file, "-清除中断"); + txBuf[3] = 8'h00; + txBuf[4] = 8'h00; + txBuf[5] = 8'h00; + txBuf[6] = 8'h60; + spi_trans( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(0)) ); + spi_trans( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(1)) ); + spi_trans( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(2)) ); + spi_trans( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(3)) ); + spi_trans( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(4)) ); + + $fdisplay(spidata_file, "-再次检查中断"); + spi_trans( (16'h74), (`SPI_READ), (4), (`IF_IDX(0)) ); + spi_trans( (16'h74), (`SPI_READ), (4), (`IF_IDX(1)) ); + spi_trans( (16'h74), (`SPI_READ), (4), (`IF_IDX(2)) ); + spi_trans( (16'h74), (`SPI_READ), (4), (`IF_IDX(3)) ); + spi_trans( (16'h74), (`SPI_READ), (4), (`IF_IDX(4)) ); + + #5000 + $fdisplay(spidata_file, "-清除中断"); + txBuf[3] = 8'h00; + txBuf[4] = 8'h00; + txBuf[5] = 8'h00; + txBuf[6] = 8'h60; + spi_trans( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(0)) ); + spi_trans( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(1)) ); + spi_trans( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(2)) ); + spi_trans( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(3)) ); + spi_trans( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(4)) ); + + $fdisplay(spidata_file, "-再次检查中断"); + spi_trans( (16'h74), (`SPI_READ), (4), (`IF_IDX(0)) ); + spi_trans( (16'h74), (`SPI_READ), (4), (`IF_IDX(1)) ); + spi_trans( (16'h74), (`SPI_READ), (4), (`IF_IDX(2)) ); + spi_trans( (16'h74), (`SPI_READ), (4), (`IF_IDX(3)) ); + spi_trans( (16'h74), (`SPI_READ), (4), (`IF_IDX(4)) ); + end +`endif + +`ifdef ENABLE_ERR_PKT3_TEST + begin:ERR_PKT3_TESTCASE + //嗅探 + _t_start = $realtime; + #1000 + $fdisplay(spidata_file, "\n\n测试用例:发送错误数据包3"); + + `include "err_pkt3.vh" + + _t_end = $realtime; + $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); + + $fdisplay(spidata_file, "-检查中断"); + spi_trans( (16'h74), (`SPI_READ), (4), (`IF_IDX(0)) ); + spi_trans( (16'h74), (`SPI_READ), (4), (`IF_IDX(1)) ); + spi_trans( (16'h74), (`SPI_READ), (4), (`IF_IDX(2)) ); + spi_trans( (16'h74), (`SPI_READ), (4), (`IF_IDX(3)) ); + spi_trans( (16'h74), (`SPI_READ), (4), (`IF_IDX(4)) ); + + $fdisplay(spidata_file, "-清除中断"); txBuf[3] = 8'h00; txBuf[4] = 8'h00; diff --git a/tb/shinTest/gen_pkt.py b/tb/shinTest/gen_pkt.py index e29785e..ae06995 100755 --- a/tb/shinTest/gen_pkt.py +++ b/tb/shinTest/gen_pkt.py @@ -372,12 +372,40 @@ if __name__ == '__main__': #>>>>>>错误的数据包2 genPkt.clean() + data = list() + ''' + for i in range(128): + data.append(random.randint(0, 255)) + ''' + + data = data + [0xb2, 0x4e, 0xd3, 0xe2, 0xa8, 0xd3, 0x86, 0x01, 0x44, 0x3f] + for i in range(64): + data.append(random.randint(0, 255)) + data = data + [0, 0, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x40] + for i in range(64): + data.append(random.randint(0, 255)) + data = data + [0, 0] + + genPkt.setPkt(2, data) + gen_file_def = "err_pkt2" + sm_idx = 0 + + genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx) + +genWriteTransPktCode(gen_file_def, sm_idx) + +genTrgTransPktCode(gen_file_def, sm_idx) + +genReadAckPktCode(gen_file_def, sm_idx)) + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + + #------------------------------------------------------------------------- + #>>>>>>错误的数据包3 + genPkt.clean() + data = list() for i in range(256): data.append(random.randint(0, 255)) genPkt.setPkt(2, data) - gen_file_def = "err_pkt2" + gen_file_def = "err_pkt3" sm_idx = 0 genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)