From b45f6230ec8adf41b3b5a9b31c024b59400aa6b9 Mon Sep 17 00:00:00 2001 From: bacon Date: Tue, 22 Jul 2025 08:55:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=94=99=E8=AF=AF=E5=8C=85?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B2,=E5=8F=91=E7=8E=B0?= =?UTF-8?q?=E4=B8=8D=E8=83=BD=E8=A2=AB=E4=BB=8E=E7=AB=99=E6=AD=A3=E5=B8=B8?= =?UTF-8?q?=E5=A4=8D=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tb/shinTest/ShinTopSpiTb.v | 60 ++++++++++++++++++++++++++++++++++++++ tb/shinTest/gen_pkt.py | 30 ++++++++++++++++++- 2 files changed, 89 insertions(+), 1 deletion(-) 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)