修改测试用例,采用自动化程序判别寄存器是否正确,尚未全部完成
This commit is contained in:
@@ -204,32 +204,32 @@ class GenPkt(object):
|
||||
|
||||
|
||||
|
||||
def genWriteTransLenCode(gen_name, sm_idx):
|
||||
def genWriteTransLenCode(gen_name, sm_idx, wlog=True):
|
||||
return '''\n//写入发送长度\n'''\
|
||||
+ '''$fdisplay(spidata_file, "--写数据交换长度");\n'''\
|
||||
+ '''`DEF_%s_sm(txBuf);\n'''%(gen_name, )\
|
||||
+ '''spi_trans( (`MST_TX%d_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(0)) );\n'''%(sm_idx,)\
|
||||
+ '''spi_trans( (`MST_RX%d_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(0)) );\n'''%(sm_idx,)
|
||||
+ '''%s( (`MST_TX%d_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx,)\
|
||||
+ '''%s( (`MST_RX%d_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx,)
|
||||
|
||||
def genWriteTransPktCode(gen_name, sm_idx):
|
||||
def genWriteTransPktCode(gen_name, sm_idx, wlog=True):
|
||||
return '''\n$fdisplay(spidata_file, "<<发包:");\n'''\
|
||||
+ '''`DEF_%s(txBuf);\n'''%(gen_name, )\
|
||||
+ '''spi_trans( (`MST_TX%d_ADDR), (`SPI_WRITE), (`DEF_%s_len), (`IF_IDX(0)) );\n'''%(sm_idx, gen_name, )
|
||||
+ '''%s( (`MST_TX%d_ADDR), (`SPI_WRITE), (`DEF_%s_len), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx, gen_name, )
|
||||
|
||||
def genTrgTransPktCode(gen_name, sm_idx):
|
||||
def genTrgTransPktCode(gen_name, sm_idx, wlog=True):
|
||||
return '''\n//请求发送\n'''\
|
||||
+ '''$fdisplay(spidata_file, "--请求发送");\n'''\
|
||||
+ '''txBuf[0+3] = `MST_TX_TRIGGER(%d);\n'''%(sm_idx, )\
|
||||
+ '''spi_trans( (16'h20), (`SPI_WRITE), (1), (`IF_IDX(0)) );\n'''
|
||||
+ '''%s( (16'h20), (`SPI_WRITE), (1), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", )
|
||||
|
||||
def genReadAckPktCode(gen_name, sm_idx):
|
||||
def genReadAckPktCode(gen_name, sm_idx, wlog=True):
|
||||
return '''\n//等待回包\n'''\
|
||||
+ '''_reset_deadline_ind = 1;\n'''\
|
||||
+ '''@(posedge isResp or posedge _deadline_ind) #5 begin end\n'''\
|
||||
+ '''$fdisplay(spidata_file, ">>回包:");\n'''\
|
||||
+ '''spi_trans( (`MST_RX%d_ADDR), (`SPI_READ), (`DEF_%s_len), (`IF_IDX(0)) );\n'''%(sm_idx, gen_name,)
|
||||
+ '''%s( (`MST_RX%d_ADDR), (`SPI_READ), (`DEF_%s_len), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx, gen_name,)
|
||||
|
||||
def genEnableInsertTimeCode(pos, enableTime=True, enableDelay=True):
|
||||
def genEnableInsertTimeCode(pos, enableTime=True, enableDelay=True, wlog=True):
|
||||
data = pos & 0x3fff
|
||||
if enableTime:
|
||||
data = data | 0x8000
|
||||
@@ -239,22 +239,22 @@ def genEnableInsertTimeCode(pos, enableTime=True, enableDelay=True):
|
||||
+ '''$fdisplay(spidata_file, "--增加时间戳插入");\n'''\
|
||||
+ '''txBuf[0+3] = 8'h%x;\n'''%(data & 0xff, )\
|
||||
+ '''txBuf[1+3] = 8'h%x;\n'''%((data >> 8) & 0xff, )\
|
||||
+ '''spi_trans( (16'h24), (`SPI_WRITE), (2), (`IF_IDX(0)) );\n'''
|
||||
+ '''%s( (16'h24), (`SPI_WRITE), (2), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans",)
|
||||
|
||||
def genDisableInsertTimeCode():
|
||||
def genDisableInsertTimeCode(wlog=True):
|
||||
return '''\n//清除替换时间戳替换地址\n'''\
|
||||
+ '''$fdisplay(spidata_file, "--清除时间戳插入");\n'''\
|
||||
+ '''txBuf[0+3] = 8'h00;\n'''\
|
||||
+ '''txBuf[1+3] = 8'h00;\n'''\
|
||||
+ '''spi_trans( (16'h24), (`SPI_WRITE), (2), (`IF_IDX(0)) ); //清除替换时间戳替换地址寄存器\n'''
|
||||
+ '''%s( (16'h24), (`SPI_WRITE), (2), (`IF_IDX(0)) ); //清除替换时间戳替换地址寄存器\n'''%("`SPI_TRANS" if wlog else "spi_trans", )
|
||||
|
||||
def genCheckInsertTimeCode():
|
||||
def genCheckInsertTimeCode(wlog=True):
|
||||
return '''\n//检查替换时间戳替换地址\n'''\
|
||||
+ '''$fdisplay(spidata_file, "--检查时间戳插入");\n'''\
|
||||
+ '''spi_trans( (16'h24), (`SPI_READ), (2), (`IF_IDX(0)) ); //检查替换时间戳替换地址寄存器\n'''
|
||||
+ '''%s( (16'h24), (`SPI_READ), (2), (`IF_IDX(0)) ); //检查替换时间戳替换地址寄存器\n'''%("`SPI_TRANS" if wlog else "spi_trans", )
|
||||
|
||||
|
||||
def genIFRwDataCode(dev, addr, isWrite = False, data_len=0, data = None):
|
||||
def genIFRwDataCode(dev, addr, isWrite = False, data_len=0, data = None, wlog=True):
|
||||
if isWrite == True:
|
||||
if (data == None) or (len(data) == 0):
|
||||
data=list()
|
||||
@@ -265,14 +265,14 @@ def genIFRwDataCode(dev, addr, isWrite = False, data_len=0, data = None):
|
||||
code = code + '''txBuf[%d]=8'h%02x;\n'''%(idx, item & 0xff)
|
||||
idx = idx + 1
|
||||
|
||||
code = code + '''spi_trans( (16'h%04x), (`SPI_WRITE), (%d), (`IF_IDX(%d)) );\n'''%(addr, data_len, dev)
|
||||
code = code + '''%s( (16'h%04x), (`SPI_WRITE), (%d), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", addr, data_len, dev)
|
||||
return code
|
||||
else:
|
||||
code = ''
|
||||
code = code + '''spi_trans( (16'h%04x), (`SPI_READ), (%d), (`IF_IDX(%d)) );\n'''%(addr, data_len, dev)
|
||||
code = code + '''%s( (16'h%04x), (`SPI_READ), (%d), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", addr, data_len, dev)
|
||||
return code
|
||||
|
||||
def genSlvSMWriteData(dev, sm, data_len, data = None):
|
||||
def genSlvSMWriteData(dev, sm, data_len, data = None, wlog=True):
|
||||
smaddr = list()
|
||||
for i in range(8):
|
||||
smaddr.append(0x300 + i * 4 + 2)
|
||||
@@ -292,15 +292,15 @@ def genSlvSMWriteData(dev, sm, data_len, data = None):
|
||||
|
||||
code = '''txBuf[3] = 8'h%02x;\n'''%(data_len & 0xff, )\
|
||||
+ '''txBuf[4] = 8'h%02x;\n'''%(int(data_len/256) & 0xff,)\
|
||||
+ '''spi_trans((16'h0%04x), (`SPI_WRITE), (2), (`IF_IDX(%d)) );\n'''%(smaddr[sm], dev)
|
||||
+ '''%s((16'h0%04x), (`SPI_WRITE), (2), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", smaddr[sm], dev)
|
||||
|
||||
for i in range(data_len):
|
||||
code = code + '''txBuf[%d + 3] = 8'h%02x;\n'''%(i, data[i])
|
||||
|
||||
code = code + '''spi_trans( (16'h%04x), (`SPI_WRITE), (%d), (`IF_IDX(%d)) );\n'''%(0x800 + sm * 2048, data_len, dev)
|
||||
code = code + '''%s( (16'h%04x), (`SPI_WRITE), (%d), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", 0x800 + sm * 2048, data_len, dev)
|
||||
return code
|
||||
|
||||
def genSlvSMReadData(dev, sm, data_len):
|
||||
def genSlvSMReadData(dev, sm, data_len, wlog=True):
|
||||
if not ((sm == 0) or (sm == 2) or (sm == 4) or (sm == 6)):
|
||||
#写入数据,lvds读;这个空间是lvds写,mcu读
|
||||
return ''
|
||||
@@ -308,7 +308,7 @@ def genSlvSMReadData(dev, sm, data_len):
|
||||
return ''
|
||||
|
||||
code = ""
|
||||
code = code + '''spi_trans( (16'h%04x), (`SPI_READ), (%d), (`IF_IDX(%d)) );\n'''%(0x800 + sm * 2048, data_len, dev)
|
||||
code = code + '''%s( (16'h%04x), (`SPI_READ), (%d), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", 0x800 + sm * 2048, data_len, dev)
|
||||
|
||||
return code
|
||||
|
||||
@@ -329,6 +329,20 @@ if __name__ == '__main__':
|
||||
+genReadAckPktCode(gen_file_def, sm_idx))
|
||||
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#>>>>>>嗅探数据包2
|
||||
genPkt.clean()
|
||||
genPkt.setPktType(1)
|
||||
gen_file_def = "detect_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)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#>>>>>>错误的嗅探数据包
|
||||
genPkt.clean()
|
||||
|
||||
Reference in New Issue
Block a user