diff --git a/tb/shinTest/ShinTopSpiTb.v b/tb/shinTest/ShinTopSpiTb.v index adfb873..4b434c8 100644 --- a/tb/shinTest/ShinTopSpiTb.v +++ b/tb/shinTest/ShinTopSpiTb.v @@ -1,9 +1,10 @@ `timescale 1 ns / 1 ps `define ENABLE_REG_RW_TEST -`define ENABLE_DET_TEST -`define ENABLE_SET_ADDR_TEST -`define ENABLE_INT_INIT_TEST +//`define ENABLE_DET_TEST +//`define ENABLE_SET_ADDR_TEST +//`define ENABLE_INT_INIT_TEST +`define ENABLE_DET_ERR_TEST //`define ENABLE_SM1_SEND_TEST //`define ENABLE_SMx_SEND_TEST @@ -16,7 +17,7 @@ //`define ENABLE_BC_W_TEST //`define ENABLE_BC_RW_TEST -`define ENABLE_SYNC_TEST +//`define ENABLE_SYNC_TEST //`define ENABLE_SYNC_SIG0_TEST //`define ENABLE_SYNC_SIG1_TEST //`define ENABLE_RESET_TEST @@ -29,7 +30,7 @@ //`define ENABLE_EBMMU_TC6_TEST //`define ENABLE_EBMMU_TC7_TEST -`define ENABLE_WD_TC1_TEST +//`define ENABLE_WD_TC1_TEST module ShinTopSpiTb( @@ -914,6 +915,19 @@ initial begin end `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 begin:SM1_SEND_TESTCASE diff --git a/tb/shinTest/gen_pkt.py b/tb/shinTest/gen_pkt.py index 08a774e..a28bd2c 100755 --- a/tb/shinTest/gen_pkt.py +++ b/tb/shinTest/gen_pkt.py @@ -1,6 +1,7 @@ #!/usr/bin/env python #encoding=utf-8 import random +import copy class GenPkt(object): def __init__(self): @@ -10,12 +11,14 @@ class GenPkt(object): self.pkt_type = 0 self.pkt_sub_pkt = 0 self.sub_pkt = list() + self.pkt_data = None def clean(self): self.pkt_buf = list() #bytearray(b'\0' * 2048) self.pkt_type = 0 self.pkt_sub_pkt = 0 self.sub_pkt = list() + self.pkt_data = None def setPktType(self, type): if (type != 0) and (type != 1): @@ -23,6 +26,16 @@ class GenPkt(object): else: 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): 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)) i = 4 - if self.pkt_type == 1: + if (self.pkt_type == 1): pkt_len = 4 ''' self.pkt_buf[0] = 0 @@ -70,6 +83,12 @@ class GenPkt(object): self.pkt_buf.append(self.pkt_type & 0x3) self.pkt_buf.append(0x3f) 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: #for i in range(pkt_len): ''' @@ -263,7 +282,7 @@ def genSlvSMWriteData(dev, sm, data_len, data = None): if (data != None) and (len(data) != 0) and (len(data) < data_len): return '' - + if (data == None) or (len(data) == 0): data = list() for i in range(data_len): @@ -301,6 +320,19 @@ if __name__ == '__main__': gen_file_def = "detect_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) + + #------------------------------------------------------------------------- + #>>>>>>错误的嗅探数据包 + 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)