Merge branch 'feature/clk3_shift_allow' into mp_eb_dev

# Conflicts:
#	src/main/scala/backBoard/ebus/CDRIn.scala
#	tb/shinTest/ShinTopSpiTb.v
#	tb/shinTest/gen_pkt.py
#	tb/shinTest/testcase/base.py
#	tb/shinTest/testcase/environment.py
This commit is contained in:
RuigeLee
2025-09-05 16:01:52 +08:00
61 changed files with 2510 additions and 605 deletions

View File

@@ -221,31 +221,31 @@ class GenPkt(object):
def genWriteTransLenCode(gen_name, sm_idx, wlog=True):
def genWriteTransLenCode(gen_name, sm_idx, wlog=True, dev_idx=0):
return '''\n//写入发送长度\n'''\
+ '''$fdisplay(spidata_file, "--写数据交换长度");\n'''\
+ '''`DEF_%s_sm(txBuf);\n'''%(gen_name, )\
+ '''%s( (`MST_TX%d_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx,)\
+ '''%s( (`MST_RX%d_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx,)
+ '''%s( (`MST_TX%d_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx, dev_idx)\
+ '''%s( (`MST_RX%d_LEN_ADDR), (`SPI_WRITE), (2), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx, dev_idx)
def genWriteTransPktCode(gen_name, sm_idx, wlog=True):
def genWriteTransPktCode(gen_name, sm_idx, wlog=True, dev_idx=0):
return f'''\n$fdisplay(spidata_file, "<<准备发包使用SM{sm_idx}");\n'''\
+ '''`DEF_%s(txBuf);\n'''%(gen_name, )\
+ '''%s( (`MST_TX%d_ADDR), (`SPI_WRITE), (`DEF_%s_len), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx, gen_name, )
+ '''%s( (`MST_TX%d_ADDR), (`SPI_WRITE), (`DEF_%s_len), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx, gen_name, dev_idx)
def genTrgTransPktCode(gen_name, sm_idx, wlog=True):
def genTrgTransPktCode(gen_name, sm_idx, wlog=True, dev_idx=0):
return '''\n//请求发送\n'''\
+ '''$fdisplay(spidata_file, "--请求发送");\n'''\
+ '''txBuf[0+3] = `MST_TX_TRIGGER(%d);\n'''%(sm_idx, )\
+ '''%s( (16'h20), (`SPI_WRITE), (1), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", )
+ '''%s( (16'h20), (`SPI_WRITE), (1), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", dev_idx)
def genReadAckPktCode(gen_name, sm_idx, wlog=True):
def genReadAckPktCode(gen_name, sm_idx, wlog=True, dev_idx=0):
return '''\n//等待回包\n'''\
+ '''wait_comm_finished();\n'''\
+ '''wait_comm_finished(%d);\n'''%(dev_idx, )\
+ f'''$fdisplay(spidata_file, ">>读取回包使用SM{sm_idx}");\n'''\
+ '''%s( (`MST_RX%d_ADDR), (`SPI_READ), (`DEF_%s_len), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx, gen_name,)
+ '''%s( (`MST_RX%d_ADDR), (`SPI_READ), (`DEF_%s_len), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", sm_idx, gen_name, dev_idx)
def genEnableInsertTimeCode(pos, enableTime=True, enableDelay=True, wlog=True):
def genEnableInsertTimeCode(pos, enableTime=True, enableDelay=True, wlog=True, dev_idx=0):
data = pos & 0x3fff
if enableTime:
data = data | 0x8000
@@ -255,19 +255,19 @@ def genEnableInsertTimeCode(pos, enableTime=True, enableDelay=True, wlog=True):
+ '''$fdisplay(spidata_file, "--增加时间戳插入");\n'''\
+ '''txBuf[0+3] = 8'h%x;\n'''%(data & 0xff, )\
+ '''txBuf[1+3] = 8'h%x;\n'''%((data >> 8) & 0xff, )\
+ '''%s( (16'h24), (`SPI_WRITE), (2), (`IF_IDX(0)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans",)
+ '''%s( (16'h24), (`SPI_WRITE), (2), (`IF_IDX(%d)) );\n'''%("`SPI_TRANS" if wlog else "spi_trans", dev_idx)
def genDisableInsertTimeCode(wlog=True):
def genDisableInsertTimeCode(wlog=True, dev_idx=0):
return '''\n//清除替换时间戳替换地址\n'''\
+ '''$fdisplay(spidata_file, "--清除时间戳插入");\n'''\
+ '''txBuf[0+3] = 8'h00;\n'''\
+ '''txBuf[1+3] = 8'h00;\n'''\
+ '''%s( (16'h24), (`SPI_WRITE), (2), (`IF_IDX(0)) ); //清除替换时间戳替换地址寄存器\n'''%("`SPI_TRANS" if wlog else "spi_trans", )
+ '''%s( (16'h24), (`SPI_WRITE), (2), (`IF_IDX(%d)) ); //清除替换时间戳替换地址寄存器\n'''%("`SPI_TRANS" if wlog else "spi_trans", dev_idx)
def genCheckInsertTimeCode(wlog=True):
def genCheckInsertTimeCode(wlog=True, dev_idx=0):
return '''\n//检查替换时间戳替换地址\n'''\
+ '''$fdisplay(spidata_file, "--检查时间戳插入");\n'''\
+ '''%s( (16'h24), (`SPI_READ), (2), (`IF_IDX(0)) ); //检查替换时间戳替换地址寄存器\n'''%("`SPI_TRANS" if wlog else "spi_trans", )
+ '''%s( (16'h24), (`SPI_READ), (2), (`IF_IDX(%d)) ); //检查替换时间戳替换地址寄存器\n'''%("`SPI_TRANS" if wlog else "spi_trans", dev_idx)
def genIFRwDataCode(dev, addr, isWrite = False, data_len=0, data = None, wlog=True, iface=5):
@@ -400,58 +400,3 @@ def genTcEndFrameCode(tcname):
def genMessageCode(msg):
return f'''\t\t$fdisplay(spidata_file, "{msg}");\n'''
def genAddNewDev(devIndex):
dev_code = ("ShinTop s_ShinTop_slv3(\n"
" .clock(clock),\n"
" .reset(reset | isSoftReset[4]),\n"
"\n"
" .io_multiCLK_0(multiCLK[0]),\n"
" .io_multiCLK_1(multiCLK[1]),\n"
" .io_multiCLK_2(multiCLK[2]),\n"
" .io_multiCLK_3(multiCLK[3]),\n"
" .io_multiCLK_4(multiCLK[4]),\n"
" .io_multiCLK_5(multiCLK[5]),\n"
" .io_multiCLK_6(multiCLK[6]),\n"
" .io_multiCLK_7(multiCLK[7]),\n"
" .io_multiCLK_8(multiCLK[8]),\n"
" .io_multiCLK_9(multiCLK[9]),\n"
" .io_multiCLK_10(multiCLK[10]),\n"
" .io_multiCLK_11(multiCLK[11]),\n"
" .io_multiCLK_12(multiCLK[12]),\n"
" .io_multiCLK_13(multiCLK[13]),\n"
" .io_multiCLK_14(multiCLK[14]),\n"
" .io_multiCLK_15(multiCLK[15]),\n"
"\n"
" .io_dDatIn(dDat_w[3]),\n"
" .io_dDatOut(),\n"
" .io_uDatIn(1'b0),\n"
" .io_uDatOut(uDat_w[3]),\n"
"\n"
" .io_iqspi_sck(qspi_sck),\n"
" .io_iqspi_mosi(qspi_mosi),\n"
" .io_iqspi_miso(qspi_miso[4*4+3:4*4]),\n"
" .io_iqspi_isDirIn(),\n"
" .io_iqspi_csn(spi_csn[4]),\n"
"\n"
" .io_ospi_sck (spi_sck),\n"
" .io_ospi_mosi(spi_mosi),\n"
" .io_ospi_miso(spi_miso[4]),\n"
" .io_ospi_csn (spi_csn[9]),\n"
"\n"
" .io_oqspi_sck(qspi_sck),\n"
" .io_oqspi_mosi(qspi_mosi),\n"
" .io_oqspi_miso(qspi_miso[4*9+3:4*9]),\n"
" .io_oqspi_isDirIn(),\n"
" .io_oqspi_csn(spi_csn[14]),\n"
"\n"
" .io_isSoftReset(isSoftReset[4]),\n"
" .io_interrupt(io_int_sig[4]),\n"
" .io_latchPin_0(latch0),\n"
" .io_latchPin_1(latch1),\n"
" .io_hwSerial(0),\n"
" .io_uniCode(0)\n"
");\n"
)