增加bug56的分支, 主站发送4个字节的00,从站异常的反应

This commit is contained in:
2025-07-14 17:06:58 +08:00
parent 8bd861a72d
commit 7b18543883
2 changed files with 53 additions and 7 deletions

View File

@@ -1,9 +1,10 @@
`timescale 1 ns / 1 ps `timescale 1 ns / 1 ps
`define ENABLE_REG_RW_TEST `define ENABLE_REG_RW_TEST
`define ENABLE_DET_TEST //`define ENABLE_DET_TEST
`define ENABLE_SET_ADDR_TEST //`define ENABLE_SET_ADDR_TEST
`define ENABLE_INT_INIT_TEST //`define ENABLE_INT_INIT_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
@@ -16,7 +17,7 @@
//`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
//`define ENABLE_SYNC_SIG0_TEST //`define ENABLE_SYNC_SIG0_TEST
//`define ENABLE_SYNC_SIG1_TEST //`define ENABLE_SYNC_SIG1_TEST
//`define ENABLE_RESET_TEST //`define ENABLE_RESET_TEST
@@ -29,7 +30,7 @@
//`define ENABLE_EBMMU_TC6_TEST //`define ENABLE_EBMMU_TC6_TEST
//`define ENABLE_EBMMU_TC7_TEST //`define ENABLE_EBMMU_TC7_TEST
`define ENABLE_WD_TC1_TEST //`define ENABLE_WD_TC1_TEST
module ShinTopSpiTb( module ShinTopSpiTb(
@@ -914,6 +915,19 @@ initial begin
end end
`endif `endif
`ifdef ENABLE_DET_ERR_TEST
begin:DET_ERR_TEST
//嗅探
_t_start = $realtime;
#1000
$fdisplay(spidata_file, "\n\n测试用例发送嗅探包需要在波形文件里检查");
`include "detect_err_pkt.vh"
_t_end = $realtime;
$fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start);
end
`endif
`ifdef ENABLE_SM1_SEND_TEST `ifdef ENABLE_SM1_SEND_TEST
begin:SM1_SEND_TESTCASE begin:SM1_SEND_TESTCASE

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env python #!/usr/bin/env python
#encoding=utf-8 #encoding=utf-8
import random import random
import copy
class GenPkt(object): class GenPkt(object):
def __init__(self): def __init__(self):
@@ -10,12 +11,14 @@ class GenPkt(object):
self.pkt_type = 0 self.pkt_type = 0
self.pkt_sub_pkt = 0 self.pkt_sub_pkt = 0
self.sub_pkt = list() self.sub_pkt = list()
self.pkt_data = None
def clean(self): def clean(self):
self.pkt_buf = list() #bytearray(b'\0' * 2048) self.pkt_buf = list() #bytearray(b'\0' * 2048)
self.pkt_type = 0 self.pkt_type = 0
self.pkt_sub_pkt = 0 self.pkt_sub_pkt = 0
self.sub_pkt = list() self.sub_pkt = list()
self.pkt_data = None
def setPktType(self, type): def setPktType(self, type):
if (type != 0) and (type != 1): if (type != 0) and (type != 1):
@@ -23,6 +26,16 @@ class GenPkt(object):
else: else:
self.pkt_type = type self.pkt_type = type
def setPkt(self, type, data = None):
if (type != 0) and (type != 1):
if type == 2:
self.pkt_type = 2
self.pkt_data = copy.copy(data)
else:
print('Error...set type failed:', type)
else:
self.pkt_type = type
def addBeforeExc(self, str): def addBeforeExc(self, str):
self.sub_pkt.append([1, str]) self.sub_pkt.append([1, str])
@@ -58,7 +71,7 @@ class GenPkt(object):
print("pkt_len:%d, data_len:%d"%(pkt_len, pkt_len - 4)) print("pkt_len:%d, data_len:%d"%(pkt_len, pkt_len - 4))
i = 4 i = 4
if self.pkt_type == 1: if (self.pkt_type == 1):
pkt_len = 4 pkt_len = 4
''' '''
self.pkt_buf[0] = 0 self.pkt_buf[0] = 0
@@ -70,6 +83,12 @@ class GenPkt(object):
self.pkt_buf.append(self.pkt_type & 0x3) self.pkt_buf.append(self.pkt_type & 0x3)
self.pkt_buf.append(0x3f) self.pkt_buf.append(0x3f)
self.pkt_buf.append(0xff) self.pkt_buf.append(0xff)
elif (self.pkt_type == 2):
pkt_len = len(self.pkt_data)
for d in self.pkt_data:
self.pkt_buf.append(d)
#print("-----------------------------", filename, self.pkt_type, pkt_len, self.pkt_buf)
else: else:
#for i in range(pkt_len): #for i in range(pkt_len):
''' '''
@@ -307,6 +326,19 @@ 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)
#-------------------------------------------------------------------------
#>>>>>>错误的嗅探数据包
genPkt.clean()
genPkt.setPkt(2, [0, 0, 0, 0])
gen_file_def = "detect_err_pkt"
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()