增加一个随机错误包的发送

This commit is contained in:
2025-07-17 19:11:18 +08:00
parent 9ce68a25dc
commit 7659bdf51a
2 changed files with 91 additions and 4 deletions

View File

@@ -7,14 +7,15 @@
`define ENABLE_DET_ERR_TEST `define ENABLE_DET_ERR_TEST
`define ENABLE_SM1_SEND_TEST `define ENABLE_SM1_SEND_TEST
//`define ENABLE_SMx_SEND_TEST //`define ENABLE_SMx_SEND_TEST
`define ENABLE_ERR_PKT1_TEST
//`define ENABLE_EXCHG_DATA_SEQ0_TEST //`define ENABLE_EXCHG_DATA_SEQ0_TEST
//`define ENABLE_EXCHG_DATA_SEQ1_TEST //`define ENABLE_EXCHG_DATA_SEQ1_TEST
//`define ENABLE_EXCHG_DATA_SEQ2_TEST //`define ENABLE_EXCHG_DATA_SEQ2_TEST
//`define ENABLE_EXCHG_DATA_SEQ3_TEST //`define ENABLE_EXCHG_DATA_SEQ3_TEST
//`define ENABLE_BC_R_TEST `define ENABLE_BC_R_TEST
//`define ENABLE_BC_W_TEST `define ENABLE_BC_W_TEST
//`define ENABLE_BC_RW_TEST //`define ENABLE_BC_RW_TEST
//`define ENABLE_SYNC_TEST //`define ENABLE_SYNC_TEST
@@ -299,7 +300,7 @@ always @(posedge clock or posedge _reset_deadline_ind) begin
else begin else begin
_deadline_ind_ctr <= _deadline_ind_ctr + 1; _deadline_ind_ctr <= _deadline_ind_ctr + 1;
end end
if (_deadline_ind_ctr >= 10000) begin if (_deadline_ind_ctr >= 20000) begin
_deadline_ind <= 1; _deadline_ind <= 1;
end end
else begin else begin
@@ -956,7 +957,7 @@ initial begin
//嗅探 //嗅探
_t_start = $realtime; _t_start = $realtime;
#1000 #1000
$fdisplay(spidata_file, "\n\n测试用例发送嗅探包,需要在波形文件里检查"); $fdisplay(spidata_file, "\n\n测试用例发送错误嗅探包");
`include "detect_err_pkt.vh" `include "detect_err_pkt.vh"
@@ -1043,6 +1044,46 @@ initial begin
`endif `endif
`ifdef ENABLE_ERR_PKT1_TEST
begin:ERR_PKT1_TESTCASE
//嗅探
_t_start = $realtime;
#1000
$fdisplay(spidata_file, "\n\n测试用例发送错误数据包");
`include "err_pkt1.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;
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
/*--------------------------------------------------------------------------------------------------------- /*---------------------------------------------------------------------------------------------------------
测试用例 测试用例
1. 交换数据sm0~sm7 1. 交换数据sm0~sm7

View File

@@ -340,6 +340,52 @@ if __name__ == '__main__':
+genReadAckPktCode(gen_file_def, sm_idx)) +genReadAckPktCode(gen_file_def, sm_idx))
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
#-------------------------------------------------------------------------
#>>>>>>错误的数据包1
genPkt.clean()
data = list()
'''
for i in range(128):
data.append(random.randint(0, 255))
'''
data = data + [0x57, 0x17, 0xfd, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x40]
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_pkt1"
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)
#-------------------------------------------------------------------------
#>>>>>>错误的数据包2
genPkt.clean()
data = list()
for i in range(256):
data.append(random.randint(0, 255))
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)
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
#>>>>>>普通数据包 sm1 #>>>>>>普通数据包 sm1
genPkt.clean() genPkt.clean()