修正测试用例的输出格式,同时检查打印的时间点与波形间的关系,确认没有误差

This commit is contained in:
2025-05-16 18:49:00 +08:00
parent d96760f8f5
commit eb6e5f5195

View File

@@ -24,6 +24,7 @@ module ShinTopSpiTb(
wire isResp; wire isResp;
integer spidata_file; integer spidata_file;
integer c_line;
ShinTop s_ShinTop_Mst( ShinTop s_ShinTop_Mst(
.clock(clock), .clock(clock),
@@ -353,16 +354,21 @@ 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", $time);
$fwrite(spidata_file, "dev:%d, addr:0x%02h%02h, cmd:%d, len:%d\n", sidx, txBuf[1], txBuf[0], txBuf[2], slength); $fwrite(spidata_file, "T:%2tns \tdev:%4d, addr:0x%02h%02h, cmd:%2d, len:%4d\n", $time/1000, sidx, txBuf[1], txBuf[0], txBuf[2], slength);
for (integer i=0; i<slength; i++) begin for (integer i=0; i<slength; i++) begin
$fwrite(spidata_file, "%02h ", txBuf[i + 3]); $fwrite(spidata_file, "%02h ", txBuf[i + 3]);
c_line = 0;
if ((i+1)%16 == 0) begin if ((i+1)%16 == 0) begin
$fwrite(spidata_file, "\n"); $fwrite(spidata_file, "\n");
c_line = 1;
end end
end end
if (c_line == 0) begin
$fwrite(spidata_file, "\n"); $fwrite(spidata_file, "\n");
end end
c_line = 0;
end
end end
endtask endtask
@@ -417,14 +423,14 @@ initial begin
#10000 #10000
$fdisplay(spidata_file, "\n\n测试用例3-发送嗅探包,需要在波形文件里检查"); $fdisplay(spidata_file, "\n\n测试用例3-发送嗅探包,需要在波形文件里检查");
begin begin
$fdisplay(spidata_file, "\t>>>嗅探前,检查链路状态寄存器"); $fdisplay(spidata_file, "--->>>嗅探前,检查链路状态寄存器");
spi_trans( (16'h0140), (`SPI_READ), (5), (`IF_IDX(0)) ); spi_trans( (16'h0140), (`SPI_READ), (5), (`IF_IDX(0)) );
spi_trans( (16'h0140), (`SPI_READ), (5), (`IF_IDX(1)) ); spi_trans( (16'h0140), (`SPI_READ), (5), (`IF_IDX(1)) );
spi_trans( (16'h0140), (`SPI_READ), (5), (`IF_IDX(2)) ); spi_trans( (16'h0140), (`SPI_READ), (5), (`IF_IDX(2)) );
spi_trans( (16'h0140), (`SPI_READ), (5), (`IF_IDX(3)) ); spi_trans( (16'h0140), (`SPI_READ), (5), (`IF_IDX(3)) );
spi_trans( (16'h0140), (`SPI_READ), (5), (`IF_IDX(4)) ); spi_trans( (16'h0140), (`SPI_READ), (5), (`IF_IDX(4)) );
$fdisplay(spidata_file, "\t>>>嗅探"); $fdisplay(spidata_file, "--->>>嗅探");
//设置SM1在写入0x3地址触发enq //设置SM1在写入0x3地址触发enq
txBuf[0+3] = 8'h03; txBuf[0+3] = 8'h03;
txBuf[1+3] = 8'h00; txBuf[1+3] = 8'h00;
@@ -460,7 +466,7 @@ initial begin
#50000 #50000
#50000 #50000
#50000 #50000
$fdisplay(spidata_file, "\t>>>嗅探后,检查链路状态寄存器"); $fdisplay(spidata_file, "--->>>嗅探后,检查链路状态寄存器");
spi_trans( (16'h0140), (`SPI_READ), (5), (`IF_IDX(0)) ); spi_trans( (16'h0140), (`SPI_READ), (5), (`IF_IDX(0)) );
spi_trans( (16'h0140), (`SPI_READ), (5), (`IF_IDX(1)) ); spi_trans( (16'h0140), (`SPI_READ), (5), (`IF_IDX(1)) );
spi_trans( (16'h0140), (`SPI_READ), (5), (`IF_IDX(2)) ); spi_trans( (16'h0140), (`SPI_READ), (5), (`IF_IDX(2)) );
@@ -472,7 +478,7 @@ initial begin
$display("index @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp); $display("index @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp);
begin begin
$fdisplay(spidata_file, "\t>>>设置顺序地址前,检查顺序地址"); $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), (32), (`IF_IDX(1)) ); spi_trans( (16'h0000), (`SPI_READ), (32), (`IF_IDX(1)) );
spi_trans( (16'h0000), (`SPI_READ), (32), (`IF_IDX(2)) ); spi_trans( (16'h0000), (`SPI_READ), (32), (`IF_IDX(2)) );
@@ -480,7 +486,7 @@ initial begin
spi_trans( (16'h0000), (`SPI_READ), (32), (`IF_IDX(4)) ); spi_trans( (16'h0000), (`SPI_READ), (32), (`IF_IDX(4)) );
$fdisplay(spidata_file, "\t>>>设置顺序地址"); $fdisplay(spidata_file, "--->>>设置顺序地址");
//设置SM1在写入0xd地址触发enq //设置SM1在写入0xd地址触发enq
txBuf[0+3] = 8'h0d; txBuf[0+3] = 8'h0d;
txBuf[1+3] = 8'h00; txBuf[1+3] = 8'h00;
@@ -524,7 +530,7 @@ initial begin
#50000 #50000
#50000 #50000
#50000 #50000
$fdisplay(spidata_file, "\t>>>设置顺序地址后,检查顺序地址"); $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), (32), (`IF_IDX(1)) ); spi_trans( (16'h0000), (`SPI_READ), (32), (`IF_IDX(1)) );
spi_trans( (16'h0000), (`SPI_READ), (32), (`IF_IDX(2)) ); spi_trans( (16'h0000), (`SPI_READ), (32), (`IF_IDX(2)) );