增加生成从站造SM数据的python代码,生成verilog测试代码;修改相关的测试用例;修改打印的输出信息

This commit is contained in:
2025-06-26 16:37:12 +08:00
parent 672cc519bb
commit 18170d00da
2 changed files with 83 additions and 45 deletions

View File

@@ -9,7 +9,7 @@
`define ENABLE_EXCHG_DATA_SEQ0_TEST `define ENABLE_EXCHG_DATA_SEQ0_TEST
//`define ENABLE_EXCHG_DATA_SEQ1_TEST //`define ENABLE_EXCHG_DATA_SEQ1_TEST
//`define ENABLE_EXCHG_DATA_SEQ2_TEST `define ENABLE_EXCHG_DATA_SEQ2_TEST
//`define ENABLE_EXCHG_DATA_SEQ3_TEST //`define ENABLE_EXCHG_DATA_SEQ3_TEST
//`define ENABLE_BC_R_TEST //`define ENABLE_BC_R_TEST
@@ -17,9 +17,9 @@
//`define ENABLE_BC_RW_TEST //`define ENABLE_BC_RW_TEST
`define ENABLE_SYNC_TEST `define ENABLE_SYNC_TEST
`define ENABLE_SYNC_SIG0_TEST //`define ENABLE_SYNC_SIG0_TEST
`define ENABLE_SYNC_SIG1_TEST //`define ENABLE_SYNC_SIG1_TEST
`define ENABLE_RESET_TEST //`define ENABLE_RESET_TEST
//`define ENABLE_EBMMU_TC1_TEST //`define ENABLE_EBMMU_TC1_TEST
//`define ENABLE_EBMMU_TC2_TEST //`define ENABLE_EBMMU_TC2_TEST
@@ -458,6 +458,35 @@ task spi_trans( input [15:0] saddress, input [7:0] scmd, input [12:0] slength,in
end end
end end
begin:PRINT_PKT_COMMENT
integer dev;
integer addr_type;
integer addr;
integer cmd;
integer len;
if (scmd == 0) begin
addr_type = txBuf[_pos + 1] & 8'h3;
dev = txBuf[_pos] * 256 + ((txBuf[_pos + 1] >> 2) & 8'hff);
addr = txBuf[_pos + 2] * 256 + (txBuf[_pos + 3] & 8'hff);
cmd = (txBuf[_pos + 4] >> 4) & 8'h0f;
len = (txBuf[_pos + 4] & 8'h0f) * 256 + (txBuf[_pos + 5] & 8'hff);
end else begin
addr_type = rxBuf[_pos + 1] & 8'h3;
dev = rxBuf[_pos] * 256 + ((rxBuf[_pos + 1] >> 2) & 8'hff);
addr = rxBuf[_pos + 2] * 256 + (rxBuf[_pos + 3] & 8'hff);
cmd = (rxBuf[_pos + 4] >> 4) & 8'h0f;
len = (rxBuf[_pos + 4] & 8'h0f) * 256 + (rxBuf[_pos + 5] & 8'hff);
end
if (addr_type == 0)
$fwrite(spidata_file, "// type:%3d dev:%3d addr:0x%04x cmd:0x%1x len:%3d", addr_type, dev, addr[15:0], cmd[3:0], len);
else begin
addr = dev * 65536 + addr;
$fwrite(spidata_file, "// type:%3d addr:0x08x cmd:0x%1x len:%3d", addr_type, addr, cmd[3:0], len);
end
end
$fwrite(spidata_file, "\n{{ "); $fwrite(spidata_file, "\n{{ ");
_pos = _pos + 6; _pos = _pos + 6;
for (integer _k = 0; _k < _len; _k++) begin for (integer _k = 0; _k < _len; _k++) begin
@@ -991,43 +1020,6 @@ initial begin
$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);
txBuf[3] = 8'h80;
txBuf[4] = 8'h00;
spi_trans((16'h0306), (`SPI_WRITE), (2), (`IF_IDX(1)) );//dev1_sm1
txBuf[3] = 8'h98;
txBuf[4] = 8'h00;
spi_trans((16'h030e), (`SPI_WRITE), (2), (`IF_IDX(2)) );//dev2_sm3
txBuf[3] = 8'h81;
txBuf[4] = 8'h00;
spi_trans((16'h0316), (`SPI_WRITE), (2), (`IF_IDX(3)) );//dev2_sm3
txBuf[3] = 8'h8c;
txBuf[4] = 8'h00;
spi_trans((16'h031e), (`SPI_WRITE), (2), (`IF_IDX(4)) );//dev2_sm3
for (integer i=0; i < 128; i++) begin
txBuf[i + 3] = i + 1;
end
spi_trans( (16'h1000), (`SPI_WRITE), (128), (`IF_IDX(1)) );
for (integer i=0; i < 152; i++) begin
txBuf[i + 3] = i + 2;
end
spi_trans( (16'h2000), (`SPI_WRITE), (152), (`IF_IDX(2)) );
for (integer i=0; i < 129; i++) begin
txBuf[i + 3] = i + 3;
end
spi_trans( (16'h3000), (`SPI_WRITE), (129), (`IF_IDX(3)) );
for (integer i=0; i < 140; i++) begin
txBuf[i + 3] = i + 4;
end
spi_trans( (16'h4000), (`SPI_WRITE), (140), (`IF_IDX(4)) );
`include "seq_2_pkt.vh" `include "seq_2_pkt.vh"
_t_end = $realtime; _t_end = $realtime;

View File

@@ -232,6 +232,47 @@ def genCheckInsertTimeCode():
+ '''$fdisplay(spidata_file, "--检查时间戳插入");\n'''\ + '''$fdisplay(spidata_file, "--检查时间戳插入");\n'''\
+ '''spi_trans( (16'h24), (`SPI_READ), (2), (`IF_IDX(0)) ); //检查替换时间戳替换地址寄存器\n''' + '''spi_trans( (16'h24), (`SPI_READ), (2), (`IF_IDX(0)) ); //检查替换时间戳替换地址寄存器\n'''
def genSlvSMWriteData(dev, sm, data_len, data = None):
smaddr = list()
for i in range(8):
smaddr.append(0x300 + i * 4 + 2)
if not ((sm == 1) or (sm == 3) or (sm == 5) or (sm == 7)):
#写入数据lvds读这个空间是lvds写mcu读
return ''
if data_len > 2032:
return ''
if (data != None) and (len(data) != 0) and (len(data) < data_len):
return ''
if (data == None) or (len(data) == 0):
data = list()
for i in range(data_len):
data.append((i + dev) & 0xff)
code = '''txBuf[3] = 8'h%02x;\n'''%(data_len & 0xff, )\
+ '''txBuf[4] = 8'h%02x;\n'''%(int(data_len/256) & 0xff,)\
+ '''spi_trans((16'h0%04x), (`SPI_WRITE), (2), (`IF_IDX(%d)) );\n'''%(smaddr[sm], dev)
for i in range(data_len):
code = code + '''txBuf[%d + 3] = 8'h%02x;\n'''%(i, data[i])
code = code + '''spi_trans( (16'h%04x), (`SPI_WRITE), (%d), (`IF_IDX(%d)) );\n'''%(0x800 + sm * 2048, data_len, dev)
return code
def genSlvSMReadData(dev, sm, data_len):
if not ((sm == 0) or (sm == 2) or (sm == 4) or (sm == 6)):
#写入数据lvds读这个空间是lvds写mcu读
return ''
if data_len > 2032:
return ''
code = ""
code = code + '''spi_trans( (16'h%04x), (`SPI_READ), (%d), (`IF_IDX(%d)) );\n'''%(0x800 + sm * 2048, data_len, dev)
return code
if __name__ == '__main__': if __name__ == '__main__':
genPkt = GenPkt() genPkt = GenPkt()
@@ -419,11 +460,16 @@ if __name__ == '__main__':
genPkt.clean() genPkt.clean()
genPkt.setPktType(0) genPkt.setPktType(0)
genPkt.addBeforeExc( genSlvSMWriteData(3, 1, 129)
+ genSlvSMWriteData(4, 1, 140)
+ genSlvSMWriteData(1, 1, 128)
+ genSlvSMWriteData(2, 1, 152))
#subPkt参数索引、索引类型、地址、命令、长度、数据 #subPkt参数索引、索引类型、地址、命令、长度、数据
genPkt.addSubPkt(3, 0, 0x3000, 0x0, 129, b"\0"*129) genPkt.addSubPkt(3, 0, 0x1000, 0x0, 129, b"\0"*129)
genPkt.addSubPkt(4, 0, 0x4000, 0x0, 140, b"\0"*140) genPkt.addSubPkt(4, 0, 0x1000, 0x0, 140, b"\0"*140)
genPkt.addSubPkt(1, 0, 0x1000, 0x0, 128, b"\0"*128) genPkt.addSubPkt(1, 0, 0x1000, 0x0, 128, b"\0"*128)
genPkt.addSubPkt(2, 0, 0x2000, 0x0, 152, b"\0"*152) genPkt.addSubPkt(2, 0, 0x1000, 0x0, 152, b"\0"*152)
genPkt.addSubPkt(1, 0, 0x0306, 0x0, 2, b"\0"*2) genPkt.addSubPkt(1, 0, 0x0306, 0x0, 2, b"\0"*2)
genPkt.addSubPkt(2, 0, 0x030e, 0x0, 2, b"\0"*2) genPkt.addSubPkt(2, 0, 0x030e, 0x0, 2, b"\0"*2)
genPkt.addSubPkt(3, 0, 0x0316, 0x0, 2, b"\0"*2) genPkt.addSubPkt(3, 0, 0x0316, 0x0, 2, b"\0"*2)