调整同步的测试用例
This commit is contained in:
@@ -11,6 +11,8 @@
|
||||
//`define ENABLE_EXCHG_DATA_SEQ2_TEST
|
||||
//`define ENABLE_EXCHG_DATA_BC_TEST
|
||||
`define ENABLE_SYNC_TEST
|
||||
`define ENABLE_SYNC_SIG0_TEST
|
||||
`define ENABLE_SYNC_SIG1_TEST
|
||||
|
||||
module ShinTopSpiTb(
|
||||
|
||||
@@ -950,7 +952,7 @@ initial begin
|
||||
---------------------------------------------------------------------------------------------------------*/
|
||||
// 同步
|
||||
|
||||
begin:SYNC_TESTCASE
|
||||
begin:SYNC_TESTCASE0
|
||||
_t_start = $time;
|
||||
#1000
|
||||
|
||||
@@ -986,40 +988,16 @@ initial begin
|
||||
|
||||
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"
|
||||
`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), (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(4)) );
|
||||
|
||||
/*
|
||||
#10000
|
||||
|
||||
#100000
|
||||
//清脉冲
|
||||
txBuf[0+3] = 0; //负载0x122 sync0脉冲宽度
|
||||
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(3)) ); //slv2
|
||||
spi_trans( (16'h0122), (`SPI_WRITE), (8), (`IF_IDX(4)) ); //slv2
|
||||
*/
|
||||
|
||||
#100000
|
||||
_t_end = $time;
|
||||
$fdisplay(spidata_file, "该测试用例运行时间:%2tns", (_t_end - _t_start) / 1000);
|
||||
end
|
||||
`endif
|
||||
|
||||
`ifdef ENABLE_SYNC_SIG1_TEST
|
||||
begin:SYNC_TESTCASE2
|
||||
_t_start = $time;
|
||||
#1000
|
||||
@@ -1075,7 +1056,7 @@ initial begin
|
||||
spi_trans( (16'h40), (`SPI_WRITE), (1), (`IF_IDX(1)) );//复位从站2
|
||||
*/
|
||||
|
||||
#2000000
|
||||
#1000000
|
||||
$display("Testcase Finished! Time Out !!!");
|
||||
$fclose(spidata_file);
|
||||
$stop;
|
||||
|
||||
@@ -432,20 +432,26 @@ if __name__ == '__main__':
|
||||
genPkt.clean()
|
||||
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参数:索引、索引类型、地址、命令、长度、数据
|
||||
data = bytearray(b"\0" * 100)
|
||||
data = [0,] * 100 #bytearray(b"\0" * 100)
|
||||
data[0] = 0xff #地址0x120
|
||||
data[2] = 0xa
|
||||
data[4] = 0xa
|
||||
data[6] = 0xa
|
||||
data[8] = 0xa
|
||||
|
||||
data[16] = 0x00 #地址0x130, sync同步点
|
||||
data[17] = 0x00 #地址0x131
|
||||
#data[18] = 0x10
|
||||
data[16] = '''(_temp_time & 8'hff)''' #地址0x130, sync同步点
|
||||
data[17] = '''(_temp_time >> 8) & 8'hff''' #地址0x131
|
||||
data[18] = '''(_temp_time >> 16) & 8'hff'''
|
||||
data[19] = '''(_temp_time >> 24) & 8'hff'''
|
||||
|
||||
data[24] = 0x80 #地址0x138, sync周期 4B
|
||||
data[25] = 0x00 #地址0x139
|
||||
data[24] = 0x00 #地址0x138, sync周期 4B
|
||||
data[25] = 0x10 #地址0x139
|
||||
|
||||
data[28] = 0x81 #sync1偏移
|
||||
data[29] = 0x0
|
||||
@@ -456,7 +462,6 @@ if __name__ == '__main__':
|
||||
genPkt.addSubPkt(random.randint(0, 2048), 0, 0x120, 0xe, 0x28, data)
|
||||
|
||||
gen_file_def = "sync_sig_pkt"
|
||||
'''
|
||||
sm_idx = 0
|
||||
|
||||
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
|
||||
@@ -464,7 +469,6 @@ if __name__ == '__main__':
|
||||
+genTrgTransPktCode(gen_file_def, sm_idx)
|
||||
+genReadAckPktCode(gen_file_def, sm_idx))
|
||||
|
||||
'''
|
||||
|
||||
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user