采用新的测试架构,使用python不仅生成测试用例的数据,也生成相关的固定无变化的代码
This commit is contained in:
@@ -666,24 +666,6 @@ initial begin
|
|||||||
$fdisplay(spidata_file, "--->>>嗅探");
|
$fdisplay(spidata_file, "--->>>嗅探");
|
||||||
|
|
||||||
`include "detect_pkt.vh"
|
`include "detect_pkt.vh"
|
||||||
//设置SM1在写入0x4 len 触发enq
|
|
||||||
//设置SM0在读出0x4 len 触发deq
|
|
||||||
`DEF_detect_pkt_sm(txBuf);
|
|
||||||
spi_trans( (`MST_TX_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(0)) );
|
|
||||||
spi_trans( (`MST_RX_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(0)) );
|
|
||||||
|
|
||||||
//无子报文
|
|
||||||
$fdisplay(spidata_file, "<<发包:");
|
|
||||||
`DEF_detect_pkt(txBuf);
|
|
||||||
spi_trans( (`MST_TX_ADDR), (`SPI_WRITE), (`DEF_detect_pkt_len), (`IF_IDX(0)) ); //写入SM1
|
|
||||||
|
|
||||||
//发布请求
|
|
||||||
txBuf[0+3] = `MST_TX_TRG; //8'h01;
|
|
||||||
spi_trans( (16'h20), (`SPI_WRITE), (1), (`IF_IDX(0)) );//发送SM0 接收SM0, 请求发送
|
|
||||||
@(posedge isResp) #5 begin end
|
|
||||||
|
|
||||||
$fdisplay(spidata_file, ">>回包:");
|
|
||||||
spi_trans( (`MST_RX_ADDR), (`SPI_READ), (`DEF_detect_pkt_len), (`IF_IDX(0)) );//读一下SM0的切换地址,将fifo弹出
|
|
||||||
|
|
||||||
// 顺序索引
|
// 顺序索引
|
||||||
//#50000
|
//#50000
|
||||||
@@ -776,22 +758,7 @@ initial begin
|
|||||||
$fdisplay(spidata_file, "--->>>嗅探");
|
$fdisplay(spidata_file, "--->>>嗅探");
|
||||||
//设置SM1在写入0x3地址触发enq
|
//设置SM1在写入0x3地址触发enq
|
||||||
|
|
||||||
`DEF_detect_pkt_sm(txBuf);
|
`include "detect_pkt.vh"
|
||||||
spi_trans( (`MST_TX_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(0)) );
|
|
||||||
spi_trans( (`MST_RX_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(0)) );
|
|
||||||
|
|
||||||
//无子报文
|
|
||||||
$fdisplay(spidata_file, "<<发包:");
|
|
||||||
`DEF_detect_pkt(txBuf);
|
|
||||||
spi_trans( (`MST_TX_ADDR), (`SPI_WRITE), (`DEF_detect_pkt_len), (`IF_IDX(0)) ); //写入SM1
|
|
||||||
|
|
||||||
//发布请求
|
|
||||||
|
|
||||||
txBuf[0+3] = `MST_TX_TRG;
|
|
||||||
spi_trans( (16'h20), (`SPI_WRITE), (1), (`IF_IDX(0)) );//发送SM0 接收SM0, 请求发送
|
|
||||||
@(posedge isResp) #5 begin end
|
|
||||||
$fdisplay(spidata_file, ">>回包:");
|
|
||||||
spi_trans( (`MST_RX_ADDR), (`SPI_READ), (`DEF_detect_pkt_len), (`IF_IDX(0)) );//读一下SM0的切换地址,将fifo弹出
|
|
||||||
|
|
||||||
$fdisplay(spidata_file, "--->>>嗅探后,检查链路状态寄存器");
|
$fdisplay(spidata_file, "--->>>嗅探后,检查链路状态寄存器");
|
||||||
//spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(0)) );
|
//spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(0)) );
|
||||||
|
|||||||
@@ -184,14 +184,48 @@ class GenPkt(object):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#def genAfterExc(gen, )
|
#+ '''//写入替换时间戳替换地址\n'''
|
||||||
|
#+ '''txBuf[0+3] = 8'h0c;\n'''
|
||||||
|
#+ '''txBuf[1+3] = 8'hc0;\n'''
|
||||||
|
#+ '''spi_trans( (16'h24), (`SPI_WRITE), (2), (`IF_IDX(0)) );\n'''
|
||||||
|
|
||||||
|
def genWriteTransLenCode(gen_name, sm_idx):
|
||||||
|
return '''\n//写入发送长度\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,)
|
||||||
|
|
||||||
|
def genWriteTransPktCode(gen_name, sm_idx):
|
||||||
|
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, )
|
||||||
|
|
||||||
|
def genTrgTransPktCode(gen_name, sm_idx):
|
||||||
|
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'''
|
||||||
|
|
||||||
|
def genReadAckPktCode(gen_name, sm_idx):
|
||||||
|
return '''\n//等待回包\n'''\
|
||||||
|
+ '''@(posedge isResp) #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,)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
genPkt = GenPkt()
|
genPkt = GenPkt()
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#>>>>>>嗅探数据包
|
#>>>>>>嗅探数据包
|
||||||
genPkt.setPktType(1)
|
genPkt.setPktType(1)
|
||||||
genPkt.gen("./generated/shin/detect_pkt.vh", 1)
|
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)
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#>>>>>>普通数据包 sm1
|
#>>>>>>普通数据包 sm1
|
||||||
@@ -378,7 +412,7 @@ if __name__ == '__main__':
|
|||||||
genPkt.clean()
|
genPkt.clean()
|
||||||
genPkt.setPktType(0)
|
genPkt.setPktType(0)
|
||||||
gen_file_def = "sync_sig2_pkt"
|
gen_file_def = "sync_sig2_pkt"
|
||||||
sm_idx = 0
|
sm_idx = 3
|
||||||
|
|
||||||
genPkt.addBeforeExc(
|
genPkt.addBeforeExc(
|
||||||
'''spi_trans( (16'h0100), (`SPI_READ), (8), (`IF_IDX(0)));\n'''
|
'''spi_trans( (16'h0100), (`SPI_READ), (8), (`IF_IDX(0)));\n'''
|
||||||
@@ -427,33 +461,15 @@ if __name__ == '__main__':
|
|||||||
data[28] = 0x0 #sync1偏移
|
data[28] = 0x0 #sync1偏移
|
||||||
data[29] = 0x0
|
data[29] = 0x0
|
||||||
|
|
||||||
data[36] = 0x0#sync3偏移
|
data[36] = 0x0 #sync3偏移
|
||||||
data[37] = 0x0
|
data[37] = 0x0
|
||||||
|
|
||||||
genPkt.addSubPkt(3, 0, 0x120, 0x1, 0x28, data)
|
genPkt.addSubPkt(3, 0, 0x120, 0x1, 0x28, data)
|
||||||
|
|
||||||
genPkt.addAfterExc(
|
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
|
||||||
'''\n//写入发送长度\n'''
|
+genWriteTransPktCode(gen_file_def, sm_idx)
|
||||||
+ '''`DEF_%s_sm(txBuf);\n'''%(gen_file_def, )
|
+genTrgTransPktCode(gen_file_def, sm_idx)
|
||||||
+ '''spi_trans( (`MST_TX%d_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(0)) );\n'''%(sm_idx,)
|
+genReadAckPktCode(gen_file_def, sm_idx))
|
||||||
+ '''spi_trans( (`MST_RX%d_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(0)) );\n'''%(sm_idx,)
|
|
||||||
+ '''\n$fdisplay(spidata_file, "<<发包:");\n'''
|
|
||||||
+ '''`DEF_%s(txBuf);\n'''%(gen_file_def, )
|
|
||||||
+ '''spi_trans( (`MST_TX%d_ADDR), (`SPI_WRITE), (`DEF_%s_len), (`IF_IDX(0)) );\n'''%(sm_idx, gen_file_def, )
|
|
||||||
|
|
||||||
#+ '''//写入替换时间戳替换地址\n'''
|
|
||||||
#+ '''txBuf[0+3] = 8'h0c;\n'''
|
|
||||||
#+ '''txBuf[1+3] = 8'hc0;\n'''
|
|
||||||
#+ '''spi_trans( (16'h24), (`SPI_WRITE), (2), (`IF_IDX(0)) );\n'''
|
|
||||||
|
|
||||||
+ '''\n//请求发送\n'''
|
|
||||||
+ '''txBuf[0+3] = `MST_TX_TRIGGER(%d);\n'''%(sm_idx, )
|
|
||||||
+ '''spi_trans( (16'h20), (`SPI_WRITE), (1), (`IF_IDX(0)) );\n'''
|
|
||||||
|
|
||||||
+ '''\n//等待回包\n'''
|
|
||||||
+ '''@(posedge isResp) #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_file_def,))
|
|
||||||
|
|
||||||
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def,), 1)
|
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def,), 1)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user