修正INT的状态输出以及时间系统的输出

This commit is contained in:
2025-06-04 10:56:59 +08:00
parent 91f9c628f0
commit 73e02aa0ac

View File

@@ -236,6 +236,8 @@ initial begin
_reset_deactive = 1'b0; _reset_deactive = 1'b0;
$timeformat(-9, 2, " ns", 8);
spi_csn = ~15'b0; spi_csn = ~15'b0;
#100 #100
@@ -278,24 +280,6 @@ always @(negedge reset) begin
_reset_deactive <= 1'b1; _reset_deactive <= 1'b1;
end end
`define SCKFRE #640 `define SCKFRE #640
reg sck = 0; reg sck = 0;
@@ -432,9 +416,9 @@ task spi_trans( input [15:0] saddress, input [7:0] scmd, input [12:0] slength,in
@( negedge isBusy) #1000 @( negedge isBusy) #1000
begin begin
//$fwrite(spidata_file, "------------%5t------------\n", $time); //$fwrite(spidata_file, "------------%5t------------\n", $realtime);
$fwrite(spidata_file, "T:%2tns \tdev:%4d, addr:0x%02h%02h, %s, len:%4d\n", $fwrite(spidata_file, "T:%t \tdev:%4d, addr:0x%02h%02h, %s, len:%4d\n",
$time/1000, ((sidx >= 5)? ((sidx >= 10)? (sidx - 10):(sidx - 5)):sidx), txBuf[0], txBuf[1], $realtime, ((sidx >= 5)? ((sidx >= 10)? (sidx - 10):(sidx - 5)):sidx), txBuf[0], txBuf[1],
((txBuf[2] == 0)? "Write":" Read"), slength); ((txBuf[2] == 0)? "Write":" Read"), slength);
if ( ((saddress == 16'h0800) if ( ((saddress == 16'h0800)
@@ -509,54 +493,62 @@ task spi_trans( input [15:0] saddress, input [7:0] scmd, input [12:0] slength,in
endtask endtask
always @(posedge _reset_deactive) begin
if (io_int_sig[0]) $fdisplay(spidata_file, "MST INT SETUP: %t", $realtime);
if (io_int_sig[1]) $fdisplay(spidata_file, "SLV0 INT SETUP: %t", $realtime);
if (io_int_sig[2]) $fdisplay(spidata_file, "SLV1 INT SETUP: %t", $realtime);
if (io_int_sig[3]) $fdisplay(spidata_file, "SLV2 INT SETUP: %t", $realtime);
if (io_int_sig[4]) $fdisplay(spidata_file, "SLV3 INT SETUP: %t", $realtime);
end
always @(posedge io_int_sig[0]) begin always @(posedge io_int_sig[0]) begin
if (_reset_deactive == 1'b1) if (_reset_deactive == 1'b1)
$fdisplay(spidata_file, "MST INT SETUP: %tns", $time / 1000); $fdisplay(spidata_file, "MST INT SETUP: %t", $realtime);
end end
always @(posedge io_int_sig[1]) begin always @(posedge io_int_sig[1]) begin
if (_reset_deactive == 1'b1) if (_reset_deactive == 1'b1)
$fdisplay(spidata_file, "SLV0 INT SETUP: %tns", $time / 1000); $fdisplay(spidata_file, "SLV0 INT SETUP: %t", $realtime);
end end
always @(posedge io_int_sig[2]) begin always @(posedge io_int_sig[2]) begin
if (_reset_deactive == 1'b1) if (_reset_deactive == 1'b1)
$fdisplay(spidata_file, "SLV1 INT SETUP: %tns", $time / 1000); $fdisplay(spidata_file, "SLV1 INT SETUP: %t", $realtime);
end end
always @(posedge io_int_sig[3]) begin always @(posedge io_int_sig[3]) begin
if (_reset_deactive == 1'b1) if (_reset_deactive == 1'b1)
$fdisplay(spidata_file, "SLV2 INT SETUP: %tns", $time / 1000); $fdisplay(spidata_file, "SLV2 INT SETUP: %t", $realtime);
end end
always @(posedge io_int_sig[4]) begin always @(posedge io_int_sig[4]) begin
if (_reset_deactive == 1'b1) if (_reset_deactive == 1'b1)
$fdisplay(spidata_file, "SLV3 INT SETUP: %tns", $time / 1000); $fdisplay(spidata_file, "SLV3 INT SETUP: %t", $realtime);
end end
always @(negedge io_int_sig[0]) begin always @(negedge io_int_sig[0]) begin
if (_reset_deactive == 1'b1) if (_reset_deactive == 1'b1)
$fdisplay(spidata_file, "MST INT CLEAR: %tns", $time / 1000); $fdisplay(spidata_file, "MST INT CLEAR: %t", $realtime);
end end
always @(negedge io_int_sig[1]) begin always @(negedge io_int_sig[1]) begin
if (_reset_deactive == 1'b1) if (_reset_deactive == 1'b1)
$fdisplay(spidata_file, "SLV0 INT CLEAR: %tns", $time / 1000); $fdisplay(spidata_file, "SLV0 INT CLEAR: %t", $realtime);
end end
always @(negedge io_int_sig[2]) begin always @(negedge io_int_sig[2]) begin
if (_reset_deactive == 1'b1) if (_reset_deactive == 1'b1)
$fdisplay(spidata_file, "SLV1 INT CLEAR: %tns", $time / 1000); $fdisplay(spidata_file, "SLV1 INT CLEAR: %t", $realtime);
end end
always @(negedge io_int_sig[3]) begin always @(negedge io_int_sig[3]) begin
if (_reset_deactive == 1'b1) if (_reset_deactive == 1'b1)
$fdisplay(spidata_file, "SLV2 INT CLEAR: %tns", $time / 1000); $fdisplay(spidata_file, "SLV2 INT CLEAR: %t", $realtime);
end end
always @(negedge io_int_sig[4]) begin always @(negedge io_int_sig[4]) begin
if (_reset_deactive == 1'b1) if (_reset_deactive == 1'b1)
$fdisplay(spidata_file, "SLV3 INT CLEAR: %tns", $time / 1000); $fdisplay(spidata_file, "SLV3 INT CLEAR: %t", $realtime);
end end
@@ -603,15 +595,15 @@ initial begin
1. 从IP中读取寄存器上电后的寄存器期望值为0 1. 从IP中读取寄存器上电后的寄存器期望值为0
---------------------------------------------------------------------------------------------------------*/ ---------------------------------------------------------------------------------------------------------*/
begin:READ_REG_TESTCASE begin:READ_REG_TESTCASE
_t_start = $time; _t_start = $realtime;
$fdisplay(spidata_file, "测试用例从IP中读取寄存器上电后的寄存器期望值为0"); $fdisplay(spidata_file, "测试用例从IP中读取寄存器上电后的寄存器期望值为0");
spi_trans( (16'h00), (`SPI_READ), (64), (`IF_IQSPI(0)) ); spi_trans( (16'h00), (`SPI_READ), (64), (`IF_IQSPI(0)) );
spi_trans( (16'h00), (`SPI_READ), (64), (`IF_IQSPI(1)) ); spi_trans( (16'h00), (`SPI_READ), (64), (`IF_IQSPI(1)) );
spi_trans( (16'h00), (`SPI_READ), (64), (`IF_IQSPI(2)) ); spi_trans( (16'h00), (`SPI_READ), (64), (`IF_IQSPI(2)) );
spi_trans( (16'h00), (`SPI_READ), (64), (`IF_IQSPI(3)) ); spi_trans( (16'h00), (`SPI_READ), (64), (`IF_IQSPI(3)) );
spi_trans( (16'h00), (`SPI_READ), (64), (`IF_IQSPI(4)) ); spi_trans( (16'h00), (`SPI_READ), (64), (`IF_IQSPI(4)) );
_t_end = $time; _t_end = $realtime;
$fdisplay(spidata_file, "该测试用例运行时间:%2tns\n", (_t_end - _t_start) / 1000); $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start);
end end
`endif `endif
@@ -661,7 +653,7 @@ initial begin
#1000 #1000
spi_trans( (16'h0), (`SPI_WRITE), (1), (`IF_IDX(4)) ); spi_trans( (16'h0), (`SPI_WRITE), (1), (`IF_IDX(4)) );
$fdisplay(spidata_file, "--->>>设置完毕,检查接口寄存器"); $fdisplay(spidata_file, "-设置完毕,检查接口寄存器");
spi_trans( (16'h00), (`SPI_READ), (1), (`IF_IDX(0)) ); 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(1)) );
spi_trans( (16'h00), (`SPI_READ), (1), (`IF_IDX(2)) ); spi_trans( (16'h00), (`SPI_READ), (1), (`IF_IDX(2)) );
@@ -681,14 +673,14 @@ initial begin
if (io_int_sig[4]) $fdisplay(spidata_file, "SLV3 Interrupt!"); if (io_int_sig[4]) $fdisplay(spidata_file, "SLV3 Interrupt!");
end end
$fdisplay(spidata_file, "--->>>检查中断"); $fdisplay(spidata_file, "-检查中断");
spi_trans( (16'h70), (`SPI_READ), (14), (`IF_IDX(0)) ); spi_trans( (16'h70), (`SPI_READ), (14), (`IF_IDX(0)) );
spi_trans( (16'h70), (`SPI_READ), (14), (`IF_IDX(1)) ); spi_trans( (16'h70), (`SPI_READ), (14), (`IF_IDX(1)) );
spi_trans( (16'h70), (`SPI_READ), (14), (`IF_IDX(2)) ); spi_trans( (16'h70), (`SPI_READ), (14), (`IF_IDX(2)) );
spi_trans( (16'h70), (`SPI_READ), (14), (`IF_IDX(3)) ); spi_trans( (16'h70), (`SPI_READ), (14), (`IF_IDX(3)) );
spi_trans( (16'h70), (`SPI_READ), (14), (`IF_IDX(4)) ); spi_trans( (16'h70), (`SPI_READ), (14), (`IF_IDX(4)) );
$fdisplay(spidata_file, "--->>>清中断"); $fdisplay(spidata_file, "-清中断");
txBuf[0+3] = 8'h00; txBuf[0+3] = 8'h00;
txBuf[1+3] = 8'h00; txBuf[1+3] = 8'h00;
txBuf[2+3] = 8'h00; txBuf[2+3] = 8'h00;
@@ -699,7 +691,7 @@ initial begin
spi_trans( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(3)) ); spi_trans( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(3)) );
spi_trans( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(4)) ); spi_trans( (16'h78), (`SPI_WRITE), (4), (`IF_IDX(4)) );
$fdisplay(spidata_file, "--->>>检查中断"); $fdisplay(spidata_file, "-检查中断");
spi_trans( (16'h70), (`SPI_READ), (14), (`IF_IDX(0)) ); spi_trans( (16'h70), (`SPI_READ), (14), (`IF_IDX(0)) );
spi_trans( (16'h70), (`SPI_READ), (14), (`IF_IDX(1)) ); spi_trans( (16'h70), (`SPI_READ), (14), (`IF_IDX(1)) );
spi_trans( (16'h70), (`SPI_READ), (14), (`IF_IDX(2)) ); spi_trans( (16'h70), (`SPI_READ), (14), (`IF_IDX(2)) );
@@ -710,14 +702,14 @@ initial begin
begin:CHECK_INTERRUPT_CFG_REG begin:CHECK_INTERRUPT_CFG_REG
$fdisplay(spidata_file, "\n\n测试用例检查设备的INTERRUPT信号设置寄存器"); $fdisplay(spidata_file, "\n\n测试用例检查设备的INTERRUPT信号设置寄存器");
$fdisplay(spidata_file, "--->>>检查中断"); $fdisplay(spidata_file, "-检查中断");
spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(0)) ); spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(0)) );
spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(1)) ); spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(1)) );
spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(2)) ); spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(2)) );
spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(3)) ); spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(3)) );
spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(4)) ); spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(4)) );
$fdisplay(spidata_file, "--->>>设置中断"); $fdisplay(spidata_file, "-设置中断");
txBuf[0+3] = 8'h00; txBuf[0+3] = 8'h00;
txBuf[1+3] = 8'h00; txBuf[1+3] = 8'h00;
txBuf[2+3] = 8'h00; txBuf[2+3] = 8'h00;
@@ -728,14 +720,14 @@ initial begin
spi_trans( (16'h70), (`SPI_WRITE), (4), (`IF_IDX(3)) ); spi_trans( (16'h70), (`SPI_WRITE), (4), (`IF_IDX(3)) );
spi_trans( (16'h70), (`SPI_WRITE), (4), (`IF_IDX(4)) ); spi_trans( (16'h70), (`SPI_WRITE), (4), (`IF_IDX(4)) );
$fdisplay(spidata_file, "--->>>检查中断"); $fdisplay(spidata_file, "-检查中断");
spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(0)) ); spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(0)) );
spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(1)) ); spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(1)) );
spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(2)) ); spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(2)) );
spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(3)) ); spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(3)) );
spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(4)) ); spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(4)) );
$fdisplay(spidata_file, "--->>>设置中断"); $fdisplay(spidata_file, "-设置中断");
txBuf[0+3] = 8'h0F; txBuf[0+3] = 8'h0F;
txBuf[1+3] = 8'h00; txBuf[1+3] = 8'h00;
txBuf[2+3] = 8'h00; txBuf[2+3] = 8'h00;
@@ -746,7 +738,7 @@ initial begin
spi_trans( (16'h70), (`SPI_WRITE), (4), (`IF_IDX(3)) ); spi_trans( (16'h70), (`SPI_WRITE), (4), (`IF_IDX(3)) );
spi_trans( (16'h70), (`SPI_WRITE), (4), (`IF_IDX(4)) ); spi_trans( (16'h70), (`SPI_WRITE), (4), (`IF_IDX(4)) );
$fdisplay(spidata_file, "--->>>检查中断"); $fdisplay(spidata_file, "-检查中断");
spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(0)) ); spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(0)) );
spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(1)) ); spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(1)) );
spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(2)) ); spi_trans( (16'h70), (`SPI_READ), (4), (`IF_IDX(2)) );
@@ -761,32 +753,32 @@ initial begin
---------------------------------------------------------------------------------------------------------*/ ---------------------------------------------------------------------------------------------------------*/
//嗅探 //嗅探
begin:DETECT_DEV_TESTCASE begin:DETECT_DEV_TESTCASE
_t_start = $time; _t_start = $realtime;
#1000 #1000
$fdisplay(spidata_file, "\n\n测试用例发送嗅探包需要在波形文件里检查"); $fdisplay(spidata_file, "\n\n测试用例发送嗅探包需要在波形文件里检查");
$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)) );
spi_trans( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(1)) ); 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(2)) );
spi_trans( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(3)) ); spi_trans( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(3)) );
spi_trans( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(4)) ); spi_trans( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(4)) );
$fdisplay(spidata_file, "--->>>嗅探"); $fdisplay(spidata_file, "-嗅探");
`include "detect_pkt.vh" `include "detect_pkt.vh"
// 顺序索引 // 顺序索引
//#50000 //#50000
#1000 #1000
$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)) );
spi_trans( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(1)) ); 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(2)) );
spi_trans( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(3)) ); spi_trans( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(3)) );
spi_trans( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(4)) ); spi_trans( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(4)) );
_t_end = $time; _t_end = $realtime;
$fdisplay(spidata_file, "该测试用例运行时间:%2tns\n", (_t_end - _t_start) / 1000); $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start);
end end
`endif `endif
@@ -795,18 +787,18 @@ initial begin
测试用例 测试用例
---------------------------------------------------------------------------------------------------------*/ ---------------------------------------------------------------------------------------------------------*/
begin:SET_ADDR_TESTCASE begin:SET_ADDR_TESTCASE
_t_start = $time; _t_start = $realtime;
$fdisplay(spidata_file, "\n\n测试用例设置顺序索引"); $fdisplay(spidata_file, "\n\n测试用例设置顺序索引");
$display("index @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); $display("index @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp);
$fdisplay(spidata_file, "--->>>设置顺序地址前,检查顺序地址"); $fdisplay(spidata_file, "-设置顺序地址前,检查顺序地址");
//spi_trans( (16'h0010), (`SPI_READ), (5), (`IF_IDX(0)) ); //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(1)) );
spi_trans( (16'h0000), (`SPI_READ), (16), (`IF_IDX(2)) ); 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(3)) );
spi_trans( (16'h0000), (`SPI_READ), (16), (`IF_IDX(4)) ); spi_trans( (16'h0000), (`SPI_READ), (16), (`IF_IDX(4)) );
$fdisplay(spidata_file, "--->>>设置顺序地址"); $fdisplay(spidata_file, "-设置顺序地址");
`include "set_addr_pkt.vh" `include "set_addr_pkt.vh"
//测试 //测试
@@ -818,14 +810,14 @@ initial begin
//读写 //读写
#1000 #1000
$fdisplay(spidata_file, "--->>>设置顺序地址后,检查顺序地址"); $fdisplay(spidata_file, "-设置顺序地址后,检查顺序地址");
spi_trans( (16'h0000), (`SPI_READ), (16), (`IF_IDX(1)) ); 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(2)) );
spi_trans( (16'h0000), (`SPI_READ), (16), (`IF_IDX(3)) ); spi_trans( (16'h0000), (`SPI_READ), (16), (`IF_IDX(3)) );
spi_trans( (16'h0000), (`SPI_READ), (16), (`IF_IDX(4)) ); spi_trans( (16'h0000), (`SPI_READ), (16), (`IF_IDX(4)) );
_t_end = $time; _t_end = $realtime;
$fdisplay(spidata_file, "该测试用例运行时间:%2tns\n", (_t_end - _t_start) / 1000); $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start);
end end
`endif `endif
@@ -835,45 +827,45 @@ initial begin
---------------------------------------------------------------------------------------------------------*/ ---------------------------------------------------------------------------------------------------------*/
begin:DETECT_DEV_TESTCASE_2 begin:DETECT_DEV_TESTCASE_2
//嗅探 //嗅探
_t_start = $time; _t_start = $realtime;
#1000 #1000
$fdisplay(spidata_file, "\n\n测试用例发送嗅探包需要在波形文件里检查"); $fdisplay(spidata_file, "\n\n测试用例发送嗅探包需要在波形文件里检查");
$fdisplay(spidata_file, "嗅探使用SM0"); $fdisplay(spidata_file, "嗅探使用SM0");
$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)) );
spi_trans( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(1)) ); 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(2)) );
spi_trans( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(3)) ); spi_trans( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(3)) );
spi_trans( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(4)) ); spi_trans( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(4)) );
$fdisplay(spidata_file, "--->>>嗅探"); $fdisplay(spidata_file, "-嗅探");
//设置SM1在写入0x3地址触发enq //设置SM1在写入0x3地址触发enq
`include "detect_pkt.vh" `include "detect_pkt.vh"
$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)) );
spi_trans( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(1)) ); 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(2)) );
spi_trans( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(3)) ); spi_trans( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(3)) );
spi_trans( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(4)) ); spi_trans( (16'h00c0), (`SPI_READ), (4), (`IF_IDX(4)) );
_t_end = $time; _t_end = $realtime;
$fdisplay(spidata_file, "该测试用例运行时间:%2tns\n", (_t_end - _t_start) / 1000); $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start);
end end
`endif `endif
`ifdef ENABLE_SM1_SEND_TEST `ifdef ENABLE_SM1_SEND_TEST
begin:SM1_SEND_TESTCASE begin:SM1_SEND_TESTCASE
_t_start = $time; _t_start = $realtime;
$fdisplay(spidata_file, "\n单读使用SM1"); $fdisplay(spidata_file, "\n单读使用SM1");
$fdisplay(spidata_file, "--->>>SM1数据包"); $fdisplay(spidata_file, "-SM1数据包");
`include "sm1_pkt.vh" `include "sm1_pkt.vh"
_t_end = $time; _t_end = $realtime;
$fdisplay(spidata_file, "该测试用例运行时间:%2tns\n", (_t_end - _t_start) / 1000); $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start);
end end
`endif `endif
@@ -882,26 +874,26 @@ initial begin
begin:SM2_SEND_TESTCASE begin:SM2_SEND_TESTCASE
_t_start = $time; _t_start = $realtime;
#1000 #1000
$display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp);
$fdisplay(spidata_file, "\n广播读使用SM2"); $fdisplay(spidata_file, "\n广播读使用SM2");
$fdisplay(spidata_file, "--->>>广播读"); $fdisplay(spidata_file, "-广播读");
`include "sm2_pkt.vh" `include "sm2_pkt.vh"
_t_end = $time; _t_end = $realtime;
$fdisplay(spidata_file, "该测试用例运行时间:%2tns\n", (_t_end - _t_start) / 1000); $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start);
end end
begin:SM3_SEND_TESTCASE begin:SM3_SEND_TESTCASE
_t_start = $time; _t_start = $realtime;
#1000 #1000
$display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp);
$fdisplay(spidata_file, "\n广播写使用SM3"); $fdisplay(spidata_file, "\n广播写使用SM3");
$fdisplay(spidata_file, "--->>>SM3广播写"); $fdisplay(spidata_file, "-SM3广播写");
`include "sm3_pkt.vh" `include "sm3_pkt.vh"
@@ -910,8 +902,8 @@ initial begin
spi_trans( (16'h0800), (`SPI_READ), (16), (`IF_IDX(3)) ); spi_trans( (16'h0800), (`SPI_READ), (16), (`IF_IDX(3)) );
spi_trans( (16'h0800), (`SPI_READ), (16), (`IF_IDX(4)) ); spi_trans( (16'h0800), (`SPI_READ), (16), (`IF_IDX(4)) );
_t_end = $time; _t_end = $realtime;
$fdisplay(spidata_file, "该测试用例运行时间:%2tns\n", (_t_end - _t_start) / 1000); $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start);
end end
`endif `endif
@@ -927,21 +919,21 @@ initial begin
---------------------------------------------------------------------------------------------------------*/ ---------------------------------------------------------------------------------------------------------*/
`ifdef ENABLE_EXCHG_DATA_SEQ0_TEST `ifdef ENABLE_EXCHG_DATA_SEQ0_TEST
begin:EXCHG_DATA_SEQ0_TESTCASE begin:EXCHG_DATA_SEQ0_TESTCASE
_t_start = $time; _t_start = $realtime;
#1000 #1000
$fdisplay(spidata_file, "\n\n测试用例交换数据sm0~sm7"); $fdisplay(spidata_file, "\n\n测试用例交换数据sm0~sm7");
$display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp);
`include "seq_0_pkt.vh" `include "seq_0_pkt.vh"
_t_end = $time; _t_end = $realtime;
$fdisplay(spidata_file, "该测试用例运行时间:%2tns\n", (_t_end - _t_start) / 1000); $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start);
end end
`endif `endif
`ifdef ENABLE_EXCHG_DATA_SEQ1_TEST `ifdef ENABLE_EXCHG_DATA_SEQ1_TEST
begin:EXCHG_DATA_SEQ1_TESTCASE begin:EXCHG_DATA_SEQ1_TESTCASE
_t_start = $time; _t_start = $realtime;
#1000 #1000
$fdisplay(spidata_file, "\n\n测试用例交换数据写dev2_sm0/dev1_sm2/dev3_sm4/dev4_sm6"); $fdisplay(spidata_file, "\n\n测试用例交换数据写dev2_sm0/dev1_sm2/dev3_sm4/dev4_sm6");
$display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp);
@@ -953,14 +945,14 @@ initial begin
spi_trans( (16'h2800), (`SPI_READ), (64), (`IF_IDX(3)) ); spi_trans( (16'h2800), (`SPI_READ), (64), (`IF_IDX(3)) );
spi_trans( (16'h3800), (`SPI_READ), (64), (`IF_IDX(4)) ); spi_trans( (16'h3800), (`SPI_READ), (64), (`IF_IDX(4)) );
_t_end = $time; _t_end = $realtime;
$fdisplay(spidata_file, "该测试用例运行时间:%2tns\n", (_t_end - _t_start) / 1000); $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start);
end end
`endif `endif
`ifdef ENABLE_EXCHG_DATA_SEQ2_TEST `ifdef ENABLE_EXCHG_DATA_SEQ2_TEST
begin:EXCHG_DATA_SEQ2_TESTCASE begin:EXCHG_DATA_SEQ2_TESTCASE
_t_start = $time; _t_start = $realtime;
#1000 #1000
$fdisplay(spidata_file, "\n\n测试用例交换数据读dev1_sm1/dev2_sm3/dev3_sm5/dev4_sm7"); $fdisplay(spidata_file, "\n\n测试用例交换数据读dev1_sm1/dev2_sm3/dev3_sm5/dev4_sm7");
$display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp);
@@ -1004,43 +996,43 @@ initial begin
`include "seq_2_pkt.vh" `include "seq_2_pkt.vh"
_t_end = $time; _t_end = $realtime;
$fdisplay(spidata_file, "该测试用例运行时间:%2tns\n", (_t_end - _t_start) / 1000); $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start);
end end
`endif `endif
`ifdef ENABLE_EXCHG_DATA_SEQ3_TEST `ifdef ENABLE_EXCHG_DATA_SEQ3_TEST
begin:EXCHG_DATA_SEQ3_TESTCASE begin:EXCHG_DATA_SEQ3_TESTCASE
_t_start = $time; _t_start = $realtime;
#1000 #1000
$fdisplay(spidata_file, "\n\n测试用例交换数据读写"); $fdisplay(spidata_file, "\n\n测试用例交换数据读写");
$display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp);
`include "seq_3_pkt.vh" `include "seq_3_pkt.vh"
_t_end = $time; _t_end = $realtime;
$fdisplay(spidata_file, "该测试用例运行时间:%2tns\n", (_t_end - _t_start) / 1000); $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start);
end end
`endif `endif
`ifdef ENABLE_BC_R_TEST `ifdef ENABLE_BC_R_TEST
begin:EXCHG_DATA_BC_R_TESTCASE begin:EXCHG_DATA_BC_R_TESTCASE
_t_start = $time; _t_start = $realtime;
#1000 #1000
$fdisplay(spidata_file, "\n\n测试用例广播读"); $fdisplay(spidata_file, "\n\n测试用例广播读");
$display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp);
`include "bc_r_pkt.vh" `include "bc_r_pkt.vh"
_t_end = $time; _t_end = $realtime;
$fdisplay(spidata_file, "该测试用例运行时间:%2tns\n", (_t_end - _t_start) / 1000); $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start);
end end
`endif `endif
`ifdef ENABLE_BC_W_TEST `ifdef ENABLE_BC_W_TEST
begin:EXCHG_DATA_BC_W_TESTCASE begin:EXCHG_DATA_BC_W_TESTCASE
_t_start = $time; _t_start = $realtime;
#1000 #1000
$display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp);
@@ -1052,14 +1044,14 @@ initial begin
spi_trans( (16'h0800), (`SPI_READ), (32), (`IF_IDX(3)) ); spi_trans( (16'h0800), (`SPI_READ), (32), (`IF_IDX(3)) );
spi_trans( (16'h0800), (`SPI_READ), (32), (`IF_IDX(4)) ); spi_trans( (16'h0800), (`SPI_READ), (32), (`IF_IDX(4)) );
_t_end = $time; _t_end = $realtime;
$fdisplay(spidata_file, "该测试用例运行时间:%2tns\n", (_t_end - _t_start) / 1000); $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start);
end end
`endif `endif
`ifdef ENABLE_BC_RW_TEST `ifdef ENABLE_BC_RW_TEST
begin:EXCHG_DATA_BC_RW_TESTCASE begin:EXCHG_DATA_BC_RW_TESTCASE
_t_start = $time; _t_start = $realtime;
#1000 #1000
$fdisplay(spidata_file, "\n\n测试用例广播读写"); $fdisplay(spidata_file, "\n\n测试用例广播读写");
$display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); $display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp);
@@ -1068,8 +1060,8 @@ initial begin
spi_trans( (16'h0180), (`SPI_READ), (128), (`IF_IDX(1)) ); spi_trans( (16'h0180), (`SPI_READ), (128), (`IF_IDX(1)) );
_t_end = $time; _t_end = $realtime;
$fdisplay(spidata_file, "该测试用例运行时间:%2tns\n", (_t_end - _t_start) / 1000); $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start);
end end
`endif `endif
@@ -1082,7 +1074,7 @@ initial begin
// 同步 // 同步
begin:SYNC_TESTCASE0 begin:SYNC_TESTCASE0
_t_start = $time; _t_start = $realtime;
#1000 #1000
$display("sync @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); $display("sync @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp);
@@ -1091,14 +1083,14 @@ initial begin
//设置SM1在写入 0x18 len触发enq //设置SM1在写入 0x18 len触发enq
`include "sync_pkt.vh" `include "sync_pkt.vh"
_t_end = $time; _t_end = $realtime;
$fdisplay(spidata_file, "该测试用例运行时间:%2tns\n", (_t_end - _t_start) / 1000); $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start);
end end
`endif `endif
`ifdef ENABLE_SYNC_SIG0_TEST `ifdef ENABLE_SYNC_SIG0_TEST
begin:SYNC_TESTCASE1 begin:SYNC_TESTCASE1
_t_start = $time; _t_start = $realtime;
#1000 #1000
$fdisplay(spidata_file, "\n\n测试用例测试同步信号(电平)"); $fdisplay(spidata_file, "\n\n测试用例测试同步信号(电平)");
@@ -1127,14 +1119,14 @@ initial begin
spi_trans( (16'h0122), (`SPI_WRITE), (8), (`IF_IDX(4)) ); //slv2 spi_trans( (16'h0122), (`SPI_WRITE), (8), (`IF_IDX(4)) ); //slv2
#100000 #100000
_t_end = $time; _t_end = $realtime;
$fdisplay(spidata_file, "该测试用例运行时间:%2tns\n", (_t_end - _t_start) / 1000); $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start);
end end
`endif `endif
`ifdef ENABLE_SYNC_SIG1_TEST `ifdef ENABLE_SYNC_SIG1_TEST
begin:SYNC_TESTCASE2 begin:SYNC_TESTCASE2
_t_start = $time; _t_start = $realtime;
#1000 #1000
$fdisplay(spidata_file, "\n\n测试用例测试同步信号(脉冲)"); $fdisplay(spidata_file, "\n\n测试用例测试同步信号(脉冲)");
@@ -1146,8 +1138,8 @@ initial begin
spi_trans( (16'h0100), (`SPI_READ), (16'h48), (`IF_IDX(3)) ); spi_trans( (16'h0100), (`SPI_READ), (16'h48), (`IF_IDX(3)) );
spi_trans( (16'h0100), (`SPI_READ), (16'h48), (`IF_IDX(4)) ); spi_trans( (16'h0100), (`SPI_READ), (16'h48), (`IF_IDX(4)) );
_t_end = $time; _t_end = $realtime;
$fdisplay(spidata_file, "该测试用例运行时间:%2tns\n", (_t_end - _t_start) / 1000); $fdisplay(spidata_file, "该测试用例运行时间:%t\n", _t_end - _t_start);
end end
`endif `endif