diff --git a/tb/shinTest/ShinTopSpiTb.v b/tb/shinTest/ShinTopSpiTb.v index f8d2980..a977a33 100644 --- a/tb/shinTest/ShinTopSpiTb.v +++ b/tb/shinTest/ShinTopSpiTb.v @@ -754,64 +754,6 @@ initial begin end end -`ifdef ENABLE_CODE____ -/*--------------------------------------------------------------------------------------------------------- -测试用例 -1. 设置IP为主站或从站,并读取设置结果,期望:0主,1~4从 ----------------------------------------------------------------------------------------------------------*/ - begin:SETTING_DEV_ROLE - //设置主站从站 - $fdisplay(spidata_file, "\n\n测试用例:设置IP为主站或从站,并读取设置结果,期望:0主,1~4从"); - txBuf[0+3] = 8'h01; - spi_trans( (16'h00), (`SPI_WRITE), (1), (`IF_IDX(0)) ); - - #1000 - txBuf[0+3] = 8'h02; - spi_trans( (16'h0), (`SPI_WRITE), (1), (`IF_IDX(1)) ); - - #1000 - spi_trans( (16'h0), (`SPI_WRITE), (1), (`IF_IDX(2)) ); - - #1000 - spi_trans( (16'h0), (`SPI_WRITE), (1), (`IF_IDX(3)) ); - - #1000 - spi_trans( (16'h0), (`SPI_WRITE), (1), (`IF_IDX(4)) ); - - $fdisplay(spidata_file, "-设置完毕,检查接口寄存器"); - spi_trans( (16'h00), (`SPI_READ), (1), (`IF_IDX(0)) ); - spi_trans( (16'h00), (`SPI_READ), (1), (`IF_IDX(1)) ); - spi_trans( (16'h00), (`SPI_READ), (1), (`IF_IDX(2)) ); - spi_trans( (16'h00), (`SPI_READ), (1), (`IF_IDX(3)) ); - spi_trans( (16'h00), (`SPI_READ), (1), (`IF_IDX(4)) ); - /* - $display("------------------------------ start! %t", $realtime); - _reset_deadline_ind = 1; - @(posedge _deadline_ind) #5 begin end - $display("------------------------------ End! %t", $realtime); - */ - end -`endif - -`ifdef ENABLE_ENCRYPTION - begin:ENABLE_ENCRYPTION_TESTCASE - - $fdisplay(spidata_file, "\n\n测试用例:加密"); - `SETTING_ENCRYPTION; - spi_trans( (16'h50), (`SPI_WRITE), (17), (`IF_IDX(0)) ); - spi_trans( (16'h50), (`SPI_WRITE), (17), (`IF_IDX(1)) ); - spi_trans( (16'h50), (`SPI_WRITE), (17), (`IF_IDX(2)) ); - spi_trans( (16'h50), (`SPI_WRITE), (17), (`IF_IDX(3)) ); - spi_trans( (16'h50), (`SPI_WRITE), (17), (`IF_IDX(4)) ); - - spi_trans( (16'h50), (`SPI_READ), (17), (`IF_IDX(0)) ); - spi_trans( (16'h50), (`SPI_READ), (17), (`IF_IDX(1)) ); - spi_trans( (16'h50), (`SPI_READ), (17), (`IF_IDX(2)) ); - spi_trans( (16'h50), (`SPI_READ), (17), (`IF_IDX(3)) ); - spi_trans( (16'h50), (`SPI_READ), (17), (`IF_IDX(4)) ); - end -`endif - `ifdef ENABLE_INT_INIT_TEST begin:CHECK_INTERRUPT_SIG $fdisplay(spidata_file, "\n\n测试用例:检查设备的INTERRUPT信号"); @@ -919,720 +861,6 @@ initial begin end `endif -`ifdef ENABLE_DET1_TEST -/*--------------------------------------------------------------------------------------------------------- -测试用例3 ----------------------------------------------------------------------------------------------------------*/ - //嗅探 - begin:DETECT_DEV_TESTCASE - `BEGIN_TESTCASE(`ENABLE_DET1_TEST); - _t_start = $realtime; - #1000 - $fdisplay(spidata_file, "\n\n测试用例:发送嗅探包,需要在波形文件里检查"); - - $fdisplay(spidata_file, "-嗅探前,检查链路状态寄存器"); - //spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(0)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(4)) ); - - $fdisplay(spidata_file, "-嗅探"); - - `include "detect_pkt.vh" - - // 顺序索引 - //#50000 - #1000 - $fdisplay(spidata_file, "-嗅探后,检查链路状态寄存器"); - //spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(0)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(4)) ); - _t_end = $realtime; - $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); - `END_TESTCASE(`ENABLE_DET1_TEST); - end -`endif - -`ifdef ENABLE_SET_ADDR_TEST -/*--------------------------------------------------------------------------------------------------------- -测试用例 ----------------------------------------------------------------------------------------------------------*/ - begin:SET_ADDR_TESTCASE - `BEGIN_TESTCASE(`ENABLE_SET_ADDR_TEST); - _t_start = $realtime; - $fdisplay(spidata_file, "\n\n测试用例:设置顺序索引"); - $display("index @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); - - $fdisplay(spidata_file, "-设置顺序地址前,检查顺序地址"); - //spi_trans( (16'h0010), (`SPI_READ), (5), (`IF_IDX(0)) ); - `SPI_TRANS( (16'h0000), (`SPI_READ), (16), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h0000), (`SPI_READ), (16), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h0000), (`SPI_READ), (16), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h0000), (`SPI_READ), (16), (`IF_IDX(4)) ); - - $fdisplay(spidata_file, "-设置顺序地址"); - `include "set_addr_pkt.vh" - - //测试 - `SPI_TRANS( (16'hc0), (`SPI_READ), (6), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h0a), (`SPI_READ), (2), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h0a), (`SPI_READ), (2), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h0a), (`SPI_READ), (2), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h0a), (`SPI_READ), (2), (`IF_IDX(4)) ); - - //读写 - #1000 - $fdisplay(spidata_file, "-设置顺序地址后,检查顺序地址"); - `SPI_TRANS( (16'h0000), (`SPI_READ), (16), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h0000), (`SPI_READ), (16), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h0000), (`SPI_READ), (16), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h0000), (`SPI_READ), (16), (`IF_IDX(4)) ); - - _t_end = $realtime; - $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); - `END_TESTCASE(`ENABLE_SET_ADDR_TEST); - end -`endif - -`ifdef ENABLE_DET2_TEST -/*--------------------------------------------------------------------------------------------------------- -测试用例 ----------------------------------------------------------------------------------------------------------*/ - begin:DETECT_DEV_TESTCASE_2 - `BEGIN_TESTCASE(`ENABLE_DET2_TEST); - //嗅探 - _t_start = $realtime; - #1000 - $fdisplay(spidata_file, "\n\n测试用例:发送嗅探包,需要在波形文件里检查"); - - $fdisplay(spidata_file, "嗅探:使用SM0"); - $fdisplay(spidata_file, "-嗅探前,检查链路状态寄存器"); - //`SPI_TRANS( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(0)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(4)) ); - - $fdisplay(spidata_file, "-嗅探"); - //设置SM1在写入0x3地址触发enq - - `include "detect_pkt2.vh" - - $fdisplay(spidata_file, "-嗅探后,检查链路状态寄存器"); - //`SPI_TRANS( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(0)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(4)) ); - _t_end = $realtime; - $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); - `END_TESTCASE(`ENABLE_DET2_TEST); - end -`endif - -`ifdef ENABLE_DET_ERR1_TEST - begin:DET_ERR_TEST - `BEGIN_TESTCASE(`ENABLE_DET_ERR1_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); - - $fdisplay(spidata_file, "-检查中断"); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(0)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(4)) ); - - - $fdisplay(spidata_file, "-清除中断"); - txBuf[3] = 8'h00; - txBuf[4] = 8'h00; - txBuf[5] = 8'h00; - txBuf[6] = 8'h60; - `SPI_TRANS( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(0)) ); - `SPI_TRANS( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(4)) ); - - $fdisplay(spidata_file, "-再次检查中断"); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(0)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(4)) ); - `END_TESTCASE(`ENABLE_DET_ERR1_TEST); - end -`endif - -`ifdef ENABLE_SMx_SEND1_TEST - begin:SM1_SEND_TESTCASE - `BEGIN_TESTCASE(`ENABLE_SMx_SEND1_TEST); - _t_start = $realtime; - $fdisplay(spidata_file, "\n单读:使用SM1"); - $fdisplay(spidata_file, "-SM1:数据包"); - - `include "sm1_pkt.vh" - - _t_end = $realtime; - $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); - `END_TESTCASE(`ENABLE_SMx_SEND1_TEST); - end - -`endif - -`ifdef ENABLE_SMx_SEND2_TEST - - begin:SM2_SEND_TESTCASE - `BEGIN_TESTCASE(`ENABLE_SMx_SEND2_TEST); - _t_start = $realtime; - #1000 - $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); - - $fdisplay(spidata_file, "\n广播读:使用SM2"); - $fdisplay(spidata_file, "-广播读"); - - `include "sm2_pkt.vh" - - _t_end = $realtime; - $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); - `END_TESTCASE(`ENABLE_SMx_SEND2_TEST); - end -`endif - -`ifdef ENABLE_SMx_SEND3_TEST - begin:SM3_SEND_TESTCASE - `BEGIN_TESTCASE(`ENABLE_SMx_SEND3_TEST); - _t_start = $realtime; - #1000 - $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); - $fdisplay(spidata_file, "\n广播写:使用SM3"); - $fdisplay(spidata_file, "-SM3广播写"); - - `include "sm3_pkt.vh" - - `SPI_TRANS( (16'h0800), (`SPI_READ), (16), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h0800), (`SPI_READ), (16), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h0800), (`SPI_READ), (16), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h0800), (`SPI_READ), (16), (`IF_IDX(4)) ); - - _t_end = $realtime; - $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); - `END_TESTCASE(`ENABLE_SMx_SEND3_TEST); - end -`endif - - -`ifdef ENABLE_ERR_PKT1_TEST - begin:ERR_PKT1_TESTCASE - `BEGIN_TESTCASE(`ENABLE_ERR_PKT1_TEST); - //嗅探 - _t_start = $realtime; - #1000 - $fdisplay(spidata_file, "\n\n测试用例:发送错误数据包1"); - - `include "err_pkt1.vh" - - _t_end = $realtime; - $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); - - $fdisplay(spidata_file, "-检查中断"); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(0)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(4)) ); - - - $fdisplay(spidata_file, "-清除中断"); - txBuf[3] = 8'h00; - txBuf[4] = 8'h00; - txBuf[5] = 8'h00; - txBuf[6] = 8'h60; - `SPI_TRANS( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(0)) ); - `SPI_TRANS( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(4)) ); - - $fdisplay(spidata_file, "-再次检查中断"); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(0)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(4)) ); - `END_TESTCASE(`ENABLE_ERR_PKT1_TEST); - end -`endif - -`ifdef ENABLE_ERR_PKT2_TEST - begin:ERR_PKT2_TESTCASE - `BEGIN_TESTCASE(`ENABLE_ERR_PKT2_TEST); - //嗅探 - _t_start = $realtime; - #1000 - $fdisplay(spidata_file, "\n\n测试用例:发送错误数据包2"); - - `include "err_pkt2.vh" - - _t_end = $realtime; - $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); - - $fdisplay(spidata_file, "-检查中断"); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(0)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(4)) ); - - - $fdisplay(spidata_file, "-清除中断"); - txBuf[3] = 8'h00; - txBuf[4] = 8'h00; - txBuf[5] = 8'h00; - txBuf[6] = 8'h60; - `SPI_TRANS( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(0)) ); - `SPI_TRANS( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(4)) ); - - $fdisplay(spidata_file, "-再次检查中断"); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(0)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(4)) ); - `END_TESTCASE(`ENABLE_ERR_PKT2_TEST); - end -`endif - -`ifdef ENABLE_ERR_PKT3_TEST - begin:ERR_PKT3_TESTCASE - `BEGIN_TESTCASE(`ENABLE_ERR_PKT3_TEST); - //嗅探 - _t_start = $realtime; - #1000 - $fdisplay(spidata_file, "\n\n测试用例:发送错误数据包3"); - - `include "err_pkt3.vh" - - _t_end = $realtime; - $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); - - $fdisplay(spidata_file, "-检查中断"); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(0)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(4)) ); - - - $fdisplay(spidata_file, "-清除中断"); - txBuf[3] = 8'h00; - txBuf[4] = 8'h00; - txBuf[5] = 8'h00; - txBuf[6] = 8'h60; - `SPI_TRANS( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(0)) ); - `SPI_TRANS( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(4)) ); - - $fdisplay(spidata_file, "-再次检查中断"); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(0)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h74), (`SPI_READ), (4), (`IF_IDX(4)) ); - `END_TESTCASE(`ENABLE_ERR_PKT3_TEST); - end -`endif - - -/*--------------------------------------------------------------------------------------------------------- -测试用例 -1. 交换数据sm0~sm7 -2. 交换数据sm0~sm7 -3. 交换数据sm0~sm7(中断、状态) -4. 交换数据sm0~sm7(R/W/RW, BR/BW/BRW) -4. 寄存器单读/写/读写,寄存器广播读/写/读写 -5. 以上交换数据的错误形式 ----------------------------------------------------------------------------------------------------------*/ -`ifdef ENABLE_EXCHG_DATA_SEQ0_TEST - begin:EXCHG_DATA_SEQ0_TESTCASE - `BEGIN_TESTCASE(`ENABLE_EXCHG_DATA_SEQ0_TEST); - _t_start = $realtime; - #1000 - $fdisplay(spidata_file, "\n\n测试用例:交换数据sm0~sm7"); - $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); - - `include "seq_0_pkt.vh" - - _t_end = $realtime; - $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); - `END_TESTCASE(`ENABLE_EXCHG_DATA_SEQ0_TEST); - end -`endif - -`ifdef ENABLE_EXCHG_DATA_SEQ1_TEST - begin:EXCHG_DATA_SEQ1_TESTCASE - `BEGIN_TESTCASE(`ENABLE_EXCHG_DATA_SEQ1_TEST); - _t_start = $realtime; - #1000 - $fdisplay(spidata_file, "\n\n测试用例:交换数据写dev2_sm0/dev1_sm2/dev3_sm4/dev4_sm6"); - $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); - - `include "seq_1_pkt.vh" - - `SPI_TRANS( (16'h1800), (`SPI_READ), (64), (`IF_IDX(1)) ); - $fdisplay(spidata_file, "-嗅探前,检查链路状态寄存器"); - //`SPI_TRANS( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(0)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(4)) ); - - $fdisplay(spidata_file, "-嗅探"); - //设置SM1在写入0x3地址触发enq - - `include "detect_pkt.vh" - - $fdisplay(spidata_file, "-嗅探后,检查链路状态寄存器"); - //`SPI_TRANS( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(0)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(4)) ); - `SPI_TRANS( (16'h0800), (`SPI_READ), (64), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h2800), (`SPI_READ), (64), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h3800), (`SPI_READ), (64), (`IF_IDX(4)) ); - - _t_end = $realtime; - $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); - `END_TESTCASE(`ENABLE_EXCHG_DATA_SEQ1_TEST); - end -`endif - -`ifdef ENABLE_EXCHG_DATA_SEQ2_TEST - begin:EXCHG_DATA_SEQ2_TESTCASE - `BEGIN_TESTCASE(`ENABLE_EXCHG_DATA_SEQ2_TEST); - _t_start = $realtime; - #1000 - $fdisplay(spidata_file, "\n\n测试用例:交换数据读dev1_sm1/dev2_sm3/dev3_sm5/dev4_sm7"); - $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); - - `include "seq_2_pkt.vh" - - _t_end = $realtime; - $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); - `END_TESTCASE(`ENABLE_EXCHG_DATA_SEQ2_TEST); - end -`endif - -`ifdef ENABLE_EXCHG_DATA_SEQ3_TEST - begin:EXCHG_DATA_SEQ3_TESTCASE - `BEGIN_TESTCASE(`ENABLE_EXCHG_DATA_SEQ3_TEST); - _t_start = $realtime; - #1000 - $fdisplay(spidata_file, "\n\n测试用例:交换数据读写"); - $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); - - `include "seq_3_pkt.vh" - - _t_end = $realtime; - $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); - `END_TESTCASE(`ENABLE_EXCHG_DATA_SEQ3_TEST); - end -`endif - -`ifdef ENABLE_BC_R_TEST - - begin:EXCHG_DATA_BC_R_TESTCASE - `BEGIN_TESTCASE(`ENABLE_BC_R_TEST); - _t_start = $realtime; - #1000 - $fdisplay(spidata_file, "\n\n测试用例:广播读"); - $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); - - `include "bc_r_pkt.vh" - - _t_end = $realtime; - $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); - `END_TESTCASE(`ENABLE_BC_R_TEST); - end -`endif - -`ifdef ENABLE_BC_W_TEST - begin:EXCHG_DATA_BC_W_TESTCASE - `BEGIN_TESTCASE(`ENABLE_BC_W_TEST); - _t_start = $realtime; - #1000 - $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); - - $fdisplay(spidata_file, "\n\n测试用例:广播写"); - `include "bc_w_pkt.vh" - - `SPI_TRANS( (16'h0800), (`SPI_READ), (32), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h0800), (`SPI_READ), (32), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h0800), (`SPI_READ), (32), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h0800), (`SPI_READ), (32), (`IF_IDX(4)) ); - - _t_end = $realtime; - $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); - `END_TESTCASE(`ENABLE_BC_W_TEST); - end -`endif - -`ifdef ENABLE_BC_RW_TEST - begin:EXCHG_DATA_BC_RW_TESTCASE - `BEGIN_TESTCASE(`ENABLE_BC_RW_TEST); - _t_start = $realtime; - #1000 - $fdisplay(spidata_file, "\n\n测试用例:广播读写"); - $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); - - `include "bc_rw_pkt.vh" - - `SPI_TRANS( (16'h0180), (`SPI_READ), (128), (`IF_IDX(1)) ); - - _t_end = $realtime; - $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); - `END_TESTCASE(`ENABLE_BC_RW_TEST); - end -`endif - - -`ifdef ENABLE_SYNC_TEST -/*--------------------------------------------------------------------------------------------------------- -测试用例 -1. 测试 同步(sync) 和 同步输出 (sync_out) ----------------------------------------------------------------------------------------------------------*/ - // 同步 - - begin:SYNC_TESTCASE0 - `BEGIN_TESTCASE(`ENABLE_SYNC_TEST); - _t_start = $realtime; - #1000 - - $display("sync @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); - $fdisplay(spidata_file, "\n\n测试用例:测试同步(sync)和同步输出(sync_out)"); - - //设置SM1在写入 0x18 len触发enq - `include "sync_pkt.vh" - - _t_end = $realtime; - $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); - `END_TESTCASE(`ENABLE_SYNC_TEST); - end -`endif - -`ifdef ENABLE_SYNC_SIG0_TEST - begin:SYNC_TESTCASE1 - `BEGIN_TESTCASE(`ENABLE_SYNC_SIG0_TEST); - _t_start = $realtime; - #1000 - $fdisplay(spidata_file, "\n\n测试用例:测试同步信号(电平)"); - - `include "sync_sig_pkt.vh" - - //`SPI_TRANS( (16'h0100), (`SPI_READ), (32), (`IF_IDX(0)) ); - `SPI_TRANS( (16'h0100), (`SPI_READ), (16'h48), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h0100), (`SPI_READ), (16'h48), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h0100), (`SPI_READ), (16'h48), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h0100), (`SPI_READ), (16'h48), (`IF_IDX(4)) ); - - - #100000 - //清脉冲 - txBuf[0+3] = 0; //负载0x122 sync0脉冲宽度 - txBuf[1+3] = 0; //负载0x123 - txBuf[2+3] = 0; //负载0x124 sync1脉冲宽度 - txBuf[3+3] = 0; //负载0x125 - txBuf[4+3] = 0; //负载0x126 sync2脉冲宽度 - txBuf[5+3] = 0; //负载0x127 - txBuf[6+3] = 0; //负载0x128 sync3脉冲宽度 - txBuf[7+3] = 0; //负载0x129 - `SPI_TRANS( (16'h0122), (`SPI_WRITE), (8), (`IF_IDX(1)) ); //slv2 - `SPI_TRANS( (16'h0122), (`SPI_WRITE), (8), (`IF_IDX(2)) ); //slv2 - `SPI_TRANS( (16'h0122), (`SPI_WRITE), (8), (`IF_IDX(3)) ); //slv2 - `SPI_TRANS( (16'h0122), (`SPI_WRITE), (8), (`IF_IDX(4)) ); //slv2 - - #100000 - _t_end = $realtime; - $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); - `END_TESTCASE(`ENABLE_SYNC_SIG0_TEST); - end -`endif - -`ifdef ENABLE_SYNC_SIG1_TEST - begin:SYNC_TESTCASE2 - `BEGIN_TESTCASE(`ENABLE_SYNC_SIG1_TEST); - _t_start = $realtime; - #1000 - $fdisplay(spidata_file, "\n\n测试用例:测试同步信号(脉冲)"); - - `include "sync_sig2_pkt.vh" - - //`SPI_TRANS( (16'h0100), (`SPI_READ), (32), (`IF_IDX(0)) ); - `SPI_TRANS( (16'h0100), (`SPI_READ), (16'h48), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h0100), (`SPI_READ), (16'h48), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h0100), (`SPI_READ), (16'h48), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h0100), (`SPI_READ), (16'h48), (`IF_IDX(4)) ); - - _t_end = $realtime; - $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start); - `END_TESTCASE(`ENABLE_SYNC_SIG1_TEST); - end -`endif - -`ifdef ENABLE_RESET_TEST - begin:RESET_SYSTEM_TEST - `BEGIN_TESTCASE(`ENABLE_RESET_TEST); - $fdisplay(spidata_file, "\n\n测试用例:复位系统测试"); - txBuf[0+3] = 8'h0f; - txBuf[1+3] = 8'h00; - txBuf[2+3] = 8'h00; - txBuf[3+3] = 8'h80; - `SPI_TRANS( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(0)) ); - - - - #50000 - //复位系统 - $fdisplay(spidata_file, "-复位系统"); - txBuf[0+3] = 8'h01; - txBuf[0+4] = 8'h00; - txBuf[0+5] = 8'h66; - txBuf[0+6] = 8'h79; - `SPI_TRANS( (16'h40), (`SPI_WRITE), (4), (`IF_IDX(0)) );//复位主站 - `SPI_TRANS( (16'h40), (`SPI_WRITE), (4), (`IF_IDX(2)) );//复位从站2 - - - $fdisplay(spidata_file, "-配置系统"); - #50000 - txBuf[0+3] = 8'h01; - `SPI_TRANS( (16'h00), (`SPI_WRITE), (1), (`IF_IDX(0)) ); - - txBuf[0+3] = 8'h02; - `SPI_TRANS( (16'h00), (`SPI_WRITE), (1), (`IF_IDX(2)) ); - - #1000 - - $fdisplay(spidata_file, "\n广播读:使用SM2"); - $fdisplay(spidata_file, "-广播读"); - - `include "sm2_pkt.vh" - - - $fdisplay(spidata_file, "-嗅探:使用SM0"); - $fdisplay(spidata_file, "-嗅探前,检查链路状态寄存器"); - //`SPI_TRANS( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(0)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(4)) ); - - $fdisplay(spidata_file, "-嗅探"); - //设置SM1在写入0x3地址触发enq - - `include "detect_pkt.vh" - - $fdisplay(spidata_file, "-嗅探后,检查链路状态寄存器"); - //`SPI_TRANS( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(0)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(4)) ); - - - $fdisplay(spidata_file, "-设置顺序地址前,检查顺序地址"); - //`SPI_TRANS( (16'h0010), (`SPI_READ), (5), (`IF_IDX(0)) ); - `SPI_TRANS( (16'h0000), (`SPI_READ), (16), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h0000), (`SPI_READ), (16), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h0000), (`SPI_READ), (16), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h0000), (`SPI_READ), (16), (`IF_IDX(4)) ); - - $fdisplay(spidata_file, "-设置顺序地址"); - `include "set_addr_pkt.vh" - - //测试 - `SPI_TRANS( (16'hc0), (`SPI_READ), (6), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h0a), (`SPI_READ), (2), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h0a), (`SPI_READ), (2), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h0a), (`SPI_READ), (2), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h0a), (`SPI_READ), (2), (`IF_IDX(4)) ); - - //读写 - #1000 - $fdisplay(spidata_file, "-设置顺序地址后,检查顺序地址"); - `SPI_TRANS( (16'h0000), (`SPI_READ), (16), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h0000), (`SPI_READ), (16), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h0000), (`SPI_READ), (16), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h0000), (`SPI_READ), (16), (`IF_IDX(4)) ); - - #1000 - - $fdisplay(spidata_file, "\n广播读:使用SM2"); - $fdisplay(spidata_file, "-广播读"); - - `include "sm2_pkt.vh" - - - $fdisplay(spidata_file, "\n\n测试用例:测试同步(sync)和同步输出(sync_out)"); - - //设置SM1在写入 0x18 len触发enq - `include "sync_pkt.vh" - - /* - #1000 - $fdisplay(spidata_file, "\n\n测试用例:测试同步信号(电平)"); - - `include "sync_sig_pkt.vh" - - //`SPI_TRANS( (16'h0100), (`SPI_READ), (32), (`IF_IDX(0)) ); - `SPI_TRANS( (16'h0100), (`SPI_READ), (16'h48), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h0100), (`SPI_READ), (16'h48), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h0100), (`SPI_READ), (16'h48), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h0100), (`SPI_READ), (16'h48), (`IF_IDX(4)) ); - - #100000 - //清脉冲 - txBuf[0+3] = 0; //负载0x122 sync0脉冲宽度 - txBuf[1+3] = 0; //负载0x123 - txBuf[2+3] = 0; //负载0x124 sync1脉冲宽度 - txBuf[3+3] = 0; //负载0x125 - txBuf[4+3] = 0; //负载0x126 sync2脉冲宽度 - txBuf[5+3] = 0; //负载0x127 - txBuf[6+3] = 0; //负载0x128 sync3脉冲宽度 - txBuf[7+3] = 0; //负载0x129 - `SPI_TRANS( (16'h0122), (`SPI_WRITE), (8), (`IF_IDX(1)) ); //slv2 - `SPI_TRANS( (16'h0122), (`SPI_WRITE), (8), (`IF_IDX(2)) ); //slv2 - `SPI_TRANS( (16'h0122), (`SPI_WRITE), (8), (`IF_IDX(3)) ); //slv2 - `SPI_TRANS( (16'h0122), (`SPI_WRITE), (8), (`IF_IDX(4)) ); //slv2 - */ - - `include "sync_sig3_pkt.vh" - - //spi_trans( (16'h0100), (`SPI_READ), (32), (`IF_IDX(0)) ); - `SPI_TRANS( (16'h0100), (`SPI_READ), (16'h48), (`IF_IDX(1)) ); - `SPI_TRANS( (16'h0100), (`SPI_READ), (16'h48), (`IF_IDX(2)) ); - `SPI_TRANS( (16'h0100), (`SPI_READ), (16'h48), (`IF_IDX(3)) ); - `SPI_TRANS( (16'h0100), (`SPI_READ), (16'h48), (`IF_IDX(4)) ); - `END_TESTCASE(`ENABLE_RESET_TEST); - end -`endif - `include "tc_runlist.vh" #1000000 diff --git a/tb/shinTest/gen_pkt.py b/tb/shinTest/gen_pkt.py index f8f6293..84e1871 100755 --- a/tb/shinTest/gen_pkt.py +++ b/tb/shinTest/gen_pkt.py @@ -6,8 +6,8 @@ from testcase import environment, readregs, ebmmu, detect, errorPkt, watchdog, b if __name__ == '__main__': environment.bringup() - detect.tc1() - detect.tc2() + #detect.tc1() + #detect.tc2() #add_tc_2_runlist(errorPkt.tc1()) #add_tc_2_runlist(errorPkt.tc2()) diff --git a/tb/shinTest/testcase/environment.py b/tb/shinTest/testcase/environment.py index f51c975..f4f0fe8 100644 --- a/tb/shinTest/testcase/environment.py +++ b/tb/shinTest/testcase/environment.py @@ -86,15 +86,54 @@ def bringup(): genPkt.addBeforeExc(genMessageCode("--设置环境,进行第二次嗅探")) + int_data=[0x00, 0x00] + clear_int = [0xff, 0xff, 0xff, 0xff] genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx) +genWriteTransPktCode(gen_file_def_ap, sm_idx) +genTrgTransPktCode(gen_file_def_ap, sm_idx) +genReadAckPktCode(gen_file_def_ap, sm_idx) + +genMessageCode("--嗅探后检查链路状态寄存器") +genIFRwDataCode(1, 0xc0, False, 4) +genIFRwDataCode(2, 0xc0, False, 4) +genIFRwDataCode(3, 0xc0, False, 4) +genIFRwDataCode(4, 0xc0, False, 4) + + +genMessageCode("--设置中断为脉冲模式") + +genIFRwDataCode(0, 0x7c, True, 2, int_data) + +genIFRwDataCode(1, 0x7c, True, 2, int_data) + +genIFRwDataCode(2, 0x7c, True, 2, int_data) + +genIFRwDataCode(3, 0x7c, True, 2, int_data) + +genIFRwDataCode(4, 0x7c, True, 2, int_data) + + +genMessageCode("--清除中断") + +genIFRwDataCode(0, 0x78, True, 4, clear_int) + +genIFRwDataCode(1, 0x78, True, 4, clear_int) + +genIFRwDataCode(2, 0x78, True, 4, clear_int) + +genIFRwDataCode(3, 0x78, True, 4, clear_int) + +genIFRwDataCode(4, 0x78, True, 4, clear_int) + + +genMessageCode("--读取中断状态") + +genIFRwDataCode(0, 0x74, False, 4) + +genIFRwDataCode(1, 0x74, False, 4) + +genIFRwDataCode(2, 0x74, False, 4) + +genIFRwDataCode(3, 0x74, False, 4) + +genIFRwDataCode(4, 0x74, False, 4) + + +genMessageCode("--清除中断") + +genIFRwDataCode(0, 0x78, True, 4, clear_int) + +genIFRwDataCode(1, 0x78, True, 4, clear_int) + +genIFRwDataCode(2, 0x78, True, 4, clear_int) + +genIFRwDataCode(3, 0x78, True, 4, clear_int) + +genIFRwDataCode(4, 0x78, True, 4, clear_int) + + +genMessageCode("--读取中断状态") + +genIFRwDataCode(0, 0x74, False, 4) + +genIFRwDataCode(1, 0x74, False, 4) + +genIFRwDataCode(2, 0x74, False, 4) + +genIFRwDataCode(3, 0x74, False, 4) + +genIFRwDataCode(4, 0x74, False, 4) + +genTcEndFrameCode(gen_file_def) ) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)