采用新的测试架构,使用python不仅生成测试用例的数据,也生成相关的固定无变化的代码

This commit is contained in:
2025-05-28 09:02:30 +08:00
parent 28898cde92
commit 6672cef0b0
2 changed files with 44 additions and 61 deletions

View File

@@ -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)) );

View File

@@ -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)