diff --git a/tb/shinTest/ShinTopSpiTb.v b/tb/shinTest/ShinTopSpiTb.v index 41beb94..d9e4981 100644 --- a/tb/shinTest/ShinTopSpiTb.v +++ b/tb/shinTest/ShinTopSpiTb.v @@ -666,25 +666,7 @@ initial begin $fdisplay(spidata_file, "--->>>嗅探"); `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 #1000 @@ -776,22 +758,7 @@ initial begin $fdisplay(spidata_file, "--->>>嗅探"); //设置SM1在写入0x3地址触发enq - `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; - 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弹出 + `include "detect_pkt.vh" $fdisplay(spidata_file, "--->>>嗅探后,检查链路状态寄存器"); //spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(0)) ); diff --git a/tb/shinTest/gen_pkt.py b/tb/shinTest/gen_pkt.py index 87bfe11..d4875ca 100755 --- a/tb/shinTest/gen_pkt.py +++ b/tb/shinTest/gen_pkt.py @@ -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__': genPkt = GenPkt() #------------------------------------------------------------------------- #>>>>>>嗅探数据包 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 @@ -378,7 +412,7 @@ if __name__ == '__main__': genPkt.clean() genPkt.setPktType(0) gen_file_def = "sync_sig2_pkt" - sm_idx = 0 + sm_idx = 3 genPkt.addBeforeExc( '''spi_trans( (16'h0100), (`SPI_READ), (8), (`IF_IDX(0)));\n''' @@ -427,33 +461,15 @@ if __name__ == '__main__': data[28] = 0x0 #sync1偏移 data[29] = 0x0 - data[36] = 0x0#sync3偏移 + data[36] = 0x0 #sync3偏移 data[37] = 0x0 genPkt.addSubPkt(3, 0, 0x120, 0x1, 0x28, data) - genPkt.addAfterExc( - '''\n//写入发送长度\n''' - + '''`DEF_%s_sm(txBuf);\n'''%(gen_file_def, ) - + '''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,) - + '''\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.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)