调整同步的测试用例

This commit is contained in:
2025-05-28 10:34:26 +08:00
parent af0c0ec8fc
commit f42e4c3dfa
2 changed files with 31 additions and 46 deletions

View File

@@ -11,6 +11,8 @@
//`define ENABLE_EXCHG_DATA_SEQ2_TEST //`define ENABLE_EXCHG_DATA_SEQ2_TEST
//`define ENABLE_EXCHG_DATA_BC_TEST //`define ENABLE_EXCHG_DATA_BC_TEST
`define ENABLE_SYNC_TEST `define ENABLE_SYNC_TEST
`define ENABLE_SYNC_SIG0_TEST
`define ENABLE_SYNC_SIG1_TEST
module ShinTopSpiTb( module ShinTopSpiTb(
@@ -950,7 +952,7 @@ initial begin
---------------------------------------------------------------------------------------------------------*/ ---------------------------------------------------------------------------------------------------------*/
// 同步 // 同步
begin:SYNC_TESTCASE begin:SYNC_TESTCASE0
_t_start = $time; _t_start = $time;
#1000 #1000
@@ -986,40 +988,16 @@ initial begin
spi_trans( (16'h25), (`SPI_WRITE), (2), (`IF_IDX(0)) ); //清除替换时间戳替换地址寄存器 spi_trans( (16'h25), (`SPI_WRITE), (2), (`IF_IDX(0)) ); //清除替换时间戳替换地址寄存器
_t_end = $time;
$fdisplay(spidata_file, "该测试用例运行时间:%2tns", (_t_end - _t_start) / 1000);
end
`endif
`ifdef ENABLE_SYNC_SIG0_TEST
begin:SYNC_TESTCASE1
_t_start = $time;
#1000
`include "sync_sig_pkt.vh" `include "sync_sig_pkt.vh"
`DEF_sync_sig_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)) );
spi_trans( (16'h0100), (`SPI_READ), (8), (`IF_IDX(0)));
_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) +
(rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);
/*
$fdisplay(spidata_file, "读取时间:%d\n", _temp_time);
*/
_temp_time = _temp_time + 32'h3000;
/*
$fdisplay(spidata_file, "读取时间:%2h %2h %2h\n",
(_temp_time & 8'hff),
((_temp_time >> 8) & 8'hff),
((_temp_time >> 16) & 8'hff));
*/
$fdisplay(spidata_file, "<<发包:");
`DEF_sync_sig_pkt(txBuf);
txBuf[16 + 3 + 12] = (_temp_time & 8'hff);
txBuf[17 + 3 + 12] = (_temp_time >> 8) & 8'hff;
txBuf[18 + 3 + 12] = (_temp_time >> 16) & 8'hff;
spi_trans( (`MST_TX_ADDR), (`SPI_WRITE), (`DEF_sync_sig_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_sync_sig_pkt_len), (`IF_IDX(0)) );//读一下SM0的切换地址将fifo弹出
//spi_trans( (16'h0100), (`SPI_READ), (32), (`IF_IDX(0)) ); //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(1)) );
@@ -1027,8 +1005,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)) );
/*
#10000 #100000
//清脉冲 //清脉冲
txBuf[0+3] = 0; //负载0x122 sync0脉冲宽度 txBuf[0+3] = 0; //负载0x122 sync0脉冲宽度
txBuf[1+3] = 0; //负载0x123 txBuf[1+3] = 0; //负载0x123
@@ -1042,11 +1020,14 @@ initial begin
spi_trans( (16'h0122), (`SPI_WRITE), (8), (`IF_IDX(2)) ); //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(3)) ); //slv2
spi_trans( (16'h0122), (`SPI_WRITE), (8), (`IF_IDX(4)) ); //slv2 spi_trans( (16'h0122), (`SPI_WRITE), (8), (`IF_IDX(4)) ); //slv2
*/
#100000
_t_end = $time; _t_end = $time;
$fdisplay(spidata_file, "该测试用例运行时间:%2tns", (_t_end - _t_start) / 1000); $fdisplay(spidata_file, "该测试用例运行时间:%2tns", (_t_end - _t_start) / 1000);
end end
`endif
`ifdef ENABLE_SYNC_SIG1_TEST
begin:SYNC_TESTCASE2 begin:SYNC_TESTCASE2
_t_start = $time; _t_start = $time;
#1000 #1000
@@ -1075,7 +1056,7 @@ initial begin
spi_trans( (16'h40), (`SPI_WRITE), (1), (`IF_IDX(1)) );//复位从站2 spi_trans( (16'h40), (`SPI_WRITE), (1), (`IF_IDX(1)) );//复位从站2
*/ */
#2000000 #1000000
$display("Testcase Finished! Time Out !!!"); $display("Testcase Finished! Time Out !!!");
$fclose(spidata_file); $fclose(spidata_file);
$stop; $stop;

View File

@@ -432,20 +432,26 @@ if __name__ == '__main__':
genPkt.clean() genPkt.clean()
genPkt.setPktType(0) genPkt.setPktType(0)
genPkt.addBeforeExc(
'''spi_trans( (16'h0100), (`SPI_READ), (8), (`IF_IDX(0)));\n'''
+ '''_temp_time = rxBuf[3] + (rxBuf[4] << 8) + (rxBuf[5] << 16) + (rxBuf[6] << 24) + (rxBuf[7] << 32) + (rxBuf[8] << 40) + (rxBuf[9] << 48) + (rxBuf[10] << 56);\n'''
+ '''_temp_time = _temp_time + 32'h2000;\n\n''')
#subPkt参数索引、索引类型、地址、命令、长度、数据 #subPkt参数索引、索引类型、地址、命令、长度、数据
data = bytearray(b"\0" * 100) data = [0,] * 100 #bytearray(b"\0" * 100)
data[0] = 0xff #地址0x120 data[0] = 0xff #地址0x120
data[2] = 0xa data[2] = 0xa
data[4] = 0xa data[4] = 0xa
data[6] = 0xa data[6] = 0xa
data[8] = 0xa data[8] = 0xa
data[16] = 0x00 #地址0x130, sync同步点 data[16] = '''(_temp_time & 8'hff)''' #地址0x130, sync同步点
data[17] = 0x00 #地址0x131 data[17] = '''(_temp_time >> 8) & 8'hff''' #地址0x131
#data[18] = 0x10 data[18] = '''(_temp_time >> 16) & 8'hff'''
data[19] = '''(_temp_time >> 24) & 8'hff'''
data[24] = 0x80 #地址0x138, sync周期 4B data[24] = 0x00 #地址0x138, sync周期 4B
data[25] = 0x00 #地址0x139 data[25] = 0x10 #地址0x139
data[28] = 0x81 #sync1偏移 data[28] = 0x81 #sync1偏移
data[29] = 0x0 data[29] = 0x0
@@ -456,7 +462,6 @@ if __name__ == '__main__':
genPkt.addSubPkt(random.randint(0, 2048), 0, 0x120, 0xe, 0x28, data) genPkt.addSubPkt(random.randint(0, 2048), 0, 0x120, 0xe, 0x28, data)
gen_file_def = "sync_sig_pkt" gen_file_def = "sync_sig_pkt"
'''
sm_idx = 0 sm_idx = 0
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx) genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
@@ -464,7 +469,6 @@ if __name__ == '__main__':
+genTrgTransPktCode(gen_file_def, sm_idx) +genTrgTransPktCode(gen_file_def, sm_idx)
+genReadAckPktCode(gen_file_def, sm_idx)) +genReadAckPktCode(gen_file_def, sm_idx))
'''
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)