Merge branch 'eb_dev' into ShinTop
This commit is contained in:
@@ -1,15 +1,16 @@
|
||||
`timescale 1 ns / 1 ps
|
||||
|
||||
//`define ENABLE_REG_RW_TEST
|
||||
`define ENABLE_REG_RW_TEST
|
||||
`define ENABLE_DET_TEST
|
||||
`define ENABLE_SET_ADDR_TEST
|
||||
//`define ENABLE_SM1_SEND_TEST
|
||||
//`define ENABLE_SMx_SEND_TEST
|
||||
`define ENABLE_EXCHG_DATA_SEQ_TEST
|
||||
//`define ENABLE_EXCHG_DATA_SEQ0_TEST
|
||||
//`define ENABLE_EXCHG_DATA_SEQ1_TEST
|
||||
//`define ENABLE_EXCHG_DATA_SEQ2_TEST
|
||||
`define ENABLE_EXCHG_DATA_BC_TEST
|
||||
//`define ENABLE_SYNC_TEST
|
||||
//`define ENABLE_EXCHG_DATA_BC_TEST
|
||||
`define ENABLE_SYNC_TEST
|
||||
|
||||
module ShinTopSpiTb(
|
||||
|
||||
@@ -37,6 +38,9 @@ module ShinTopSpiTb(
|
||||
integer c_line;
|
||||
integer _pos;
|
||||
integer _len;
|
||||
integer _t_start;
|
||||
integer _t_end;
|
||||
reg [63:0] _temp_time;
|
||||
|
||||
wire [4:0] isSoftReset;
|
||||
|
||||
@@ -228,31 +232,47 @@ initial begin
|
||||
reset <= 0;
|
||||
|
||||
`ifdef ENABLE_REG_RW_TEST
|
||||
#1000000
|
||||
`endif
|
||||
|
||||
`ifdef ENABLE_DET_TESTENABLE_SM1_SEND_TEST
|
||||
#900000
|
||||
`endif
|
||||
`ifdef ENABLE_DET_TEST
|
||||
`endif
|
||||
|
||||
`ifdef ENABLE_SET_ADDR_TEST
|
||||
#900000
|
||||
`endif
|
||||
|
||||
`ifdef ENABLE_SM1_SEND_TEST
|
||||
#500000
|
||||
`endif
|
||||
|
||||
`ifdef ENABLE_SMx_SEND_TEST
|
||||
#1000000
|
||||
`endif
|
||||
|
||||
`ifdef ENABLE_EXCHG_DATA_SEQ_TEST
|
||||
`ifdef ENABLE_EXCHG_DATA_SEQ0_TEST
|
||||
#3500000
|
||||
`endif
|
||||
`ifdef ENABLE_EXCHG_DATA_SEQ1_TEST
|
||||
#3500000
|
||||
`endif
|
||||
`ifdef ENABLE_EXCHG_DATA_SEQ2_TEST
|
||||
#6000000
|
||||
`endif
|
||||
`ifdef ENABLE_EXCHG_DATA_BC_TEST
|
||||
#2000000
|
||||
`endif
|
||||
`endif
|
||||
`ifdef ENABLE_SYNC_TEST
|
||||
#3000000
|
||||
#500000
|
||||
#10000000
|
||||
`endif
|
||||
|
||||
|
||||
//#20000000
|
||||
#5000000
|
||||
#1000000
|
||||
|
||||
$display("Time Out !!!");
|
||||
$fclose(spidata_file);
|
||||
@@ -557,12 +577,15 @@ initial begin
|
||||
测试用例
|
||||
1. 从IP中读取寄存器,上电后的寄存器期望值为0
|
||||
---------------------------------------------------------------------------------------------------------*/
|
||||
_t_start = $time;
|
||||
$fdisplay(spidata_file, "测试用例:从IP中读取寄存器,上电后的寄存器期望值为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(2)) );
|
||||
spi_trans( (16'h00), (`SPI_READ), (64), (`IF_IQSPI(3)) );
|
||||
spi_trans( (16'h00), (`SPI_READ), (64), (`IF_IQSPI(4)) );
|
||||
_t_end = $time;
|
||||
$fdisplay(spidata_file, "该测试用例运行时间:%2tns", (_t_end - _t_start) / 1000);
|
||||
`endif
|
||||
|
||||
|
||||
@@ -620,9 +643,9 @@ initial begin
|
||||
/*---------------------------------------------------------------------------------------------------------
|
||||
测试用例3
|
||||
---------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
//嗅探
|
||||
#10000
|
||||
_t_start = $time;
|
||||
#1000
|
||||
$fdisplay(spidata_file, "\n\n测试用例:发送嗅探包,需要在波形文件里检查");
|
||||
begin
|
||||
$fdisplay(spidata_file, "--->>>嗅探前,检查链路状态寄存器");
|
||||
@@ -655,23 +678,25 @@ initial begin
|
||||
spi_trans( (`MST_RX_ADDR), (`SPI_READ), (`DEF_detect_pkt_len), (`IF_IDX(0)) );//读一下SM0的切换地址,将fifo弹出
|
||||
|
||||
end
|
||||
`endif
|
||||
|
||||
// 顺序索引
|
||||
//#50000
|
||||
#50000
|
||||
#50000
|
||||
#1000
|
||||
$fdisplay(spidata_file, "--->>>嗅探后,检查链路状态寄存器");
|
||||
//spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(0)) );
|
||||
spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(1)) );
|
||||
spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(2)) );
|
||||
spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(3)) );
|
||||
spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(4)) );
|
||||
_t_end = $time;
|
||||
$fdisplay(spidata_file, "该测试用例运行时间:%2tns", (_t_end - _t_start) / 1000);
|
||||
`endif
|
||||
|
||||
`ifdef ENABLE_SET_ADDR_TEST
|
||||
/*---------------------------------------------------------------------------------------------------------
|
||||
测试用例
|
||||
---------------------------------------------------------------------------------------------------------*/
|
||||
_t_start = $time;
|
||||
$fdisplay(spidata_file, "\n\n测试用例:设置顺序索引");
|
||||
$display("index @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp);
|
||||
|
||||
@@ -721,6 +746,9 @@ initial begin
|
||||
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 = $time;
|
||||
$fdisplay(spidata_file, "该测试用例运行时间:%2tns", (_t_end - _t_start) / 1000);
|
||||
`endif
|
||||
|
||||
`ifdef ENABLE_DET_TEST
|
||||
@@ -728,6 +756,7 @@ initial begin
|
||||
测试用例
|
||||
---------------------------------------------------------------------------------------------------------*/
|
||||
//嗅探
|
||||
_t_start = $time;
|
||||
#1000
|
||||
$fdisplay(spidata_file, "\n\n测试用例:发送嗅探包,需要在波形文件里检查");
|
||||
begin
|
||||
@@ -767,18 +796,21 @@ initial begin
|
||||
spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(2)) );
|
||||
spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(3)) );
|
||||
spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(4)) );
|
||||
_t_end = $time;
|
||||
$fdisplay(spidata_file, "该测试用例运行时间:%2tns", (_t_end - _t_start) / 1000);
|
||||
`endif
|
||||
|
||||
|
||||
`ifdef ENABLE_SM1_SEND_TEST
|
||||
_t_start = $time;
|
||||
begin
|
||||
$fdisplay(spidata_file, "嗅探:使用SM1");
|
||||
$fdisplay(spidata_file, "\n嗅探:使用SM1");
|
||||
$fdisplay(spidata_file, "--->>>嗅探前,检查链路状态寄存器");
|
||||
//spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(0)) );
|
||||
spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(1)) );
|
||||
spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(2)) );
|
||||
spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(3)) );
|
||||
spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(4)) );
|
||||
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
|
||||
@@ -800,16 +832,49 @@ initial begin
|
||||
spi_trans( (`MST_RX1_ADDR), (`SPI_READ), (`DEF_detect_pkt_len), (`IF_IDX(0)) );//读一下SM0的切换地址,将fifo弹出
|
||||
end
|
||||
|
||||
|
||||
// 顺序索引
|
||||
$fdisplay(spidata_file, "--->>>嗅探后,检查链路状态寄存器");
|
||||
//spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(0)) );
|
||||
spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(1)) );
|
||||
spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(2)) );
|
||||
spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(3)) );
|
||||
spi_trans( (16'h00c0), (`SPI_READ), (6), (`IF_IDX(4)) );
|
||||
//spi_trans( (16'h00c0), (`SPI_READ), (4), (`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)) );
|
||||
|
||||
`endif
|
||||
|
||||
`ifdef ENABLE_SMx_SEND_TEST
|
||||
#1000
|
||||
$display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp);
|
||||
begin
|
||||
$fdisplay(spidata_file, "\n广播写:使用SM3");
|
||||
$fdisplay(spidata_file, "--->>>SM3广播写");
|
||||
|
||||
`include "sm3_pkt.vh"
|
||||
|
||||
`DEF_sm3_pkt_sm(txBuf);
|
||||
spi_trans( (`MST_TX3_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(0)) );
|
||||
spi_trans( (`MST_RX3_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(0)) );
|
||||
|
||||
$fdisplay(spidata_file, "<<发包:");
|
||||
`DEF_sm3_pkt(txBuf);
|
||||
spi_trans( (`MST_TX3_ADDR), (`SPI_WRITE), (`DEF_sm3_pkt_len), (`IF_IDX(0)) ); //写入SM1
|
||||
//发布请求
|
||||
txBuf[0+3] = `MST_TX_TRIGGER(3);//`MST_TX_TRG;//`MST_TX_TRIGGER(1);
|
||||
spi_trans( (16'h20), (`SPI_WRITE), (1), (`IF_IDX(0)) );//发送SM0 接收SM0, 请求发送
|
||||
@(posedge isResp) #5 begin end
|
||||
|
||||
$fdisplay(spidata_file, ">>回包:");
|
||||
spi_trans( (`MST_RX3_ADDR), (`SPI_READ), (`DEF_sm3_pkt_len), (`IF_IDX(0)) );//读一下SM0的切换地址,将fifo弹出
|
||||
end
|
||||
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 = $time;
|
||||
$fdisplay(spidata_file, "该测试用例运行时间:%2tns", (_t_end - _t_start) / 1000);
|
||||
`endif
|
||||
|
||||
`ifdef ENABLE_EXCHG_DATA_SEQ_TEST
|
||||
/*---------------------------------------------------------------------------------------------------------
|
||||
@@ -823,6 +888,7 @@ initial begin
|
||||
---------------------------------------------------------------------------------------------------------*/
|
||||
$fdisplay(spidata_file, "\n\n测试用例:交换数据");
|
||||
`ifdef ENABLE_EXCHG_DATA_SEQ0_TEST
|
||||
_t_start = $time;
|
||||
#1000
|
||||
$display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp);
|
||||
|
||||
@@ -845,9 +911,12 @@ initial begin
|
||||
$fdisplay(spidata_file, ">>回包:");
|
||||
spi_trans( (`MST_RX_ADDR), (`SPI_READ), (`DEF_seq_0_pkt_len), (`IF_IDX(0)) );//读一下SM0的切换地址,将fifo弹出
|
||||
end
|
||||
_t_end = $time;
|
||||
$fdisplay(spidata_file, "该测试用例运行时间:%2tns", (_t_end - _t_start) / 1000);
|
||||
`endif
|
||||
|
||||
`ifdef ENABLE_EXCHG_DATA_SEQ1_TEST
|
||||
_t_start = $time;
|
||||
#1000
|
||||
$display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp);
|
||||
begin
|
||||
@@ -870,13 +939,17 @@ initial begin
|
||||
spi_trans( (`MST_RX_ADDR), (`SPI_READ), (`DEF_seq_1_pkt_len), (`IF_IDX(0)) );//读一下SM0的切换地址,将fifo弹出
|
||||
end
|
||||
|
||||
spi_trans( (16'h1800), (`SPI_READ), (64), (`IF_IDX(1)) );
|
||||
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)) );
|
||||
spi_trans( (16'h1800), (`SPI_READ), (64), (`IF_IDX(1)) );
|
||||
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 = $time;
|
||||
$fdisplay(spidata_file, "该测试用例运行时间:%2tns", (_t_end - _t_start) / 1000);
|
||||
`endif
|
||||
|
||||
`ifdef ENABLE_EXCHG_DATA_SEQ2_TEST
|
||||
_t_start = $time;
|
||||
#1000
|
||||
$display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp);
|
||||
begin
|
||||
@@ -936,10 +1009,14 @@ initial begin
|
||||
$fdisplay(spidata_file, ">>回包:");
|
||||
spi_trans( (`MST_RX_ADDR), (`SPI_READ), (`DEF_seq_2_pkt_len), (`IF_IDX(0)) );//读一下SM0的切换地址,将fifo弹出
|
||||
end
|
||||
_t_end = $time;
|
||||
$fdisplay(spidata_file, "该测试用例运行时间:%2tns", (_t_end - _t_start) / 1000);
|
||||
`endif
|
||||
|
||||
`endif
|
||||
|
||||
`ifdef ENABLE_EXCHG_DATA_BC_TEST
|
||||
_t_start = $time;
|
||||
#1000
|
||||
$fdisplay(spidata_file, "\n\n测试用例:广播交换数据");
|
||||
$display("read&write @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp);
|
||||
@@ -950,7 +1027,8 @@ initial begin
|
||||
`DEF_bc_r_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)) );
|
||||
|
||||
`ifdef ENABLE_EXCHG_DATA_BC_TEST
|
||||
`endif
|
||||
$fdisplay(spidata_file, "<<发包:");
|
||||
`DEF_bc_r_pkt(txBuf);
|
||||
spi_trans( (`MST_TX_ADDR), (`SPI_WRITE), (`DEF_bc_r_pkt_len), (`IF_IDX(0)) ); //写入SM1
|
||||
@@ -985,10 +1063,13 @@ initial begin
|
||||
$fdisplay(spidata_file, ">>回包:");
|
||||
spi_trans( (`MST_RX_ADDR), (`SPI_READ), (`DEF_bc_w_pkt_len), (`IF_IDX(0)) );//读一下SM0的切换地址,将fifo弹出
|
||||
end
|
||||
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)) );
|
||||
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 = $time;
|
||||
$fdisplay(spidata_file, "该测试用例运行时间:%2tns", (_t_end - _t_start) / 1000);
|
||||
`endif
|
||||
|
||||
|
||||
@@ -998,6 +1079,7 @@ initial begin
|
||||
1. 测试 同步(sync) 和 同步输出 (sync_out)
|
||||
---------------------------------------------------------------------------------------------------------*/
|
||||
// 同步
|
||||
_t_start = $time;
|
||||
#1000
|
||||
|
||||
$display("sync @ %d", s_ShinTop_Mst.interface__io_cReg_timeStamp);
|
||||
@@ -1032,14 +1114,37 @@ initial begin
|
||||
|
||||
spi_trans( (16'h25), (`SPI_WRITE), (2), (`IF_IDX(0)) ); //清除替换时间戳替换地址寄存器
|
||||
|
||||
|
||||
|
||||
|
||||
`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 + 1500;
|
||||
/*
|
||||
$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);
|
||||
//spi_trans( (16'h1000), (`SPI_WRITE), (8'h94), (`IF_IDX(0)) ); //写入SM1
|
||||
|
||||
txBuf[15] = (_temp_time & 8'hff);
|
||||
txBuf[16] = (_temp_time >> 8) & 8'hff;
|
||||
txBuf[17] = (_temp_time >> 16) & 8'hff;
|
||||
|
||||
spi_trans( (`MST_TX_ADDR), (`SPI_WRITE), (`DEF_sync_sig_pkt_len), (`IF_IDX(0)) ); //写入SM1
|
||||
|
||||
//发布请求
|
||||
@@ -1049,38 +1154,43 @@ initial begin
|
||||
$fdisplay(spidata_file, ">>回包:");
|
||||
spi_trans( (`MST_RX_ADDR), (`SPI_READ), (`DEF_sync_sig_pkt_len), (`IF_IDX(0)) );//读一下SM0的切换地址,将fifo弹出
|
||||
end
|
||||
|
||||
|
||||
//spi_trans( (16'h0100), (`SPI_READ), (32), (`IF_IDX(0)) );
|
||||
spi_trans( (16'h0100), (`SPI_READ), (32), (`IF_IDX(1)) );
|
||||
spi_trans( (16'h0130), (`SPI_READ), (32), (`IF_IDX(1)) );
|
||||
spi_trans( (16'h0100), (`SPI_READ), (32), (`IF_IDX(2)) );
|
||||
spi_trans( (16'h0130), (`SPI_READ), (32), (`IF_IDX(2)) );
|
||||
spi_trans( (16'h0100), (`SPI_READ), (32), (`IF_IDX(3)) );
|
||||
spi_trans( (16'h0130), (`SPI_READ), (32), (`IF_IDX(3)) );
|
||||
spi_trans( (16'h0100), (`SPI_READ), (32), (`IF_IDX(4)) );
|
||||
spi_trans( (16'h0130), (`SPI_READ), (32), (`IF_IDX(4)) );
|
||||
//spi_trans( (16'h0100), (`SPI_READ), (32), (`IF_IDX(0)) );
|
||||
spi_trans( (16'h0100), (`SPI_READ), (32), (`IF_IDX(1)) );
|
||||
spi_trans( (16'h0130), (`SPI_READ), (32), (`IF_IDX(1)) );
|
||||
spi_trans( (16'h0100), (`SPI_READ), (32), (`IF_IDX(2)) );
|
||||
spi_trans( (16'h0130), (`SPI_READ), (32), (`IF_IDX(2)) );
|
||||
spi_trans( (16'h0100), (`SPI_READ), (32), (`IF_IDX(3)) );
|
||||
spi_trans( (16'h0130), (`SPI_READ), (32), (`IF_IDX(3)) );
|
||||
spi_trans( (16'h0100), (`SPI_READ), (32), (`IF_IDX(4)) );
|
||||
spi_trans( (16'h0130), (`SPI_READ), (32), (`IF_IDX(4)) );
|
||||
|
||||
#10000
|
||||
//清脉冲
|
||||
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
|
||||
|
||||
#50000
|
||||
//复位系统
|
||||
txBuf[0+3] = 8'h01;
|
||||
spi_trans( (16'h40), (`SPI_WRITE), (1), (`IF_IDX(0)) );//复位主站
|
||||
spi_trans( (16'h40), (`SPI_WRITE), (1), (`IF_IDX(1)) );//复位从站2
|
||||
#10000
|
||||
//清脉冲
|
||||
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
|
||||
|
||||
/*
|
||||
#50000
|
||||
//复位系统
|
||||
txBuf[0+3] = 8'h01;
|
||||
spi_trans( (16'h40), (`SPI_WRITE), (1), (`IF_IDX(0)) );//复位主站
|
||||
spi_trans( (16'h40), (`SPI_WRITE), (1), (`IF_IDX(1)) );//复位从站2
|
||||
*/
|
||||
|
||||
_t_end = $time;
|
||||
$fdisplay(spidata_file, "该测试用例运行时间:%2tns", (_t_end - _t_start) / 1000);
|
||||
`endif
|
||||
|
||||
end
|
||||
|
||||
@@ -220,7 +220,7 @@ if __name__ == '__main__':
|
||||
genPkt.gen("./generated/shin/seq_1_pkt.vh", 1)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#>>>>>>读
|
||||
#>>>>>>普通数据包2
|
||||
genPkt.clean()
|
||||
genPkt.setPktType(0)
|
||||
|
||||
@@ -235,8 +235,27 @@ if __name__ == '__main__':
|
||||
genPkt.addSubPkt(4, 0, 0x031e, 0x0, 2, b"\0"*2)
|
||||
|
||||
genPkt.gen("./generated/shin/seq_2_pkt.vh", 1)
|
||||
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#>>>>>>交换数据 SMx
|
||||
genPkt.clean()
|
||||
genPkt.setPktType(0)
|
||||
|
||||
#subPkt参数:索引、索引类型、地址、命令、长度、数据
|
||||
data = bytearray(b"\0" * 10)
|
||||
data[0] = 16
|
||||
data[1] = 0
|
||||
genPkt.addSubPkt(random.randint(0, 2048), 0, 0x0302, 0xe, 2, data) #0x030a, 0xe, 2, data)
|
||||
|
||||
data = bytearray(b"\0"*100)
|
||||
for i in range(100):
|
||||
data[i] = i + 1
|
||||
genPkt.addSubPkt(random.randint(0, 2048), 0, 0x0800, 0xe, 16, data) #0x1800, 0xe, 16, data)
|
||||
|
||||
genPkt.gen("./generated/shin/sm3_pkt.vh", 1)
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#>>>>>>同步数据包
|
||||
genPkt.clean()
|
||||
@@ -251,25 +270,23 @@ if __name__ == '__main__':
|
||||
genPkt.setPktType(0)
|
||||
|
||||
#subPkt参数:索引、索引类型、地址、命令、长度、数据
|
||||
data = bytearray(b"\0" * 0x28)
|
||||
data = bytearray(b"\0" * 100)
|
||||
data[0] = 0xff #地址0x120
|
||||
|
||||
data[16] = 0x00 #地址0x130, sync同步点
|
||||
data[17] = 0xf0 #地址0x131
|
||||
data[17] = 0x80 #地址0x131
|
||||
#data[18] = 0x10
|
||||
|
||||
data[24] = 0x00 #地址0x138, sync周期 4B
|
||||
data[25] = 0x20 #地址0x139
|
||||
data[24] = 0x80 #地址0x138, sync周期 4B
|
||||
data[25] = 0x00 #地址0x139
|
||||
|
||||
data[28] = 0x0a #sync1偏移
|
||||
data[28] = 0x01 #sync1偏移
|
||||
data[29] = 0x0
|
||||
|
||||
data[36] = 0x80 #sync3偏移
|
||||
data[36] = 0x02 #sync3偏移
|
||||
data[37] = 0x00
|
||||
|
||||
genPkt.addSubPkt(0x2, 0, 0x120, 0x1, 0x28, data)
|
||||
genPkt.addSubPkt(0x1, 0, 0x120, 0x1, 0x28, data)
|
||||
genPkt.addSubPkt(0x4, 0, 0x120, 0x1, 0x28, data)
|
||||
genPkt.addSubPkt(random.randint(0, 2048), 0, 0x120, 0xe, 0x28, data)
|
||||
|
||||
|
||||
genPkt.gen("./generated/shin/sync_sig_pkt.vh", 1)
|
||||
@@ -326,6 +343,9 @@ if __name__ == '__main__':
|
||||
genPkt.addSubPkt(random.randint(0, 2048), 0, 0x0800, 0xe, 32, data)
|
||||
|
||||
genPkt.gen("./generated/shin/bc_w_pkt.vh", 1)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user