1.增加测试用例;2.增加自动生成从站数量的代码,可更改成任意的从站数量
This commit is contained in:
@@ -172,8 +172,141 @@ def bringup():
|
||||
|
||||
add_tc_2_runlist(gen_file_def)
|
||||
|
||||
def __GenDevice(id, TerminateNode = False):
|
||||
dout_code = "dDat_w[%d]"%(id + 1, )
|
||||
din_code = "uDat_w[%d]"%(id + 1, )
|
||||
if TerminateNode:
|
||||
dout_code = ""
|
||||
din_code = "1'b0"
|
||||
|
||||
code_device = ("\tShinTop s_ShinTop_slv%d(\n"%(id, )
|
||||
+"\t.clock(clock),\n"
|
||||
+"\t.reset(reset | isSoftReset[%d]),\n\n"%(id + 1,)
|
||||
|
||||
+"\t.io_multiCLK_0(multiCLK[0]),\n"
|
||||
+"\t.io_multiCLK_1(multiCLK[1]),\n"
|
||||
+"\t.io_multiCLK_2(multiCLK[2]),\n"
|
||||
+"\t.io_multiCLK_3(multiCLK[3]),\n"
|
||||
+"\t.io_multiCLK_4(multiCLK[4]),\n"
|
||||
+"\t.io_multiCLK_5(multiCLK[5]),\n"
|
||||
+"\t.io_multiCLK_6(multiCLK[6]),\n"
|
||||
+"\t.io_multiCLK_7(multiCLK[7]),\n"
|
||||
+"\t.io_multiCLK_8(multiCLK[8]),\n"
|
||||
+"\t.io_multiCLK_9(multiCLK[9]),\n"
|
||||
+"\t.io_multiCLK_10(multiCLK[10]),\n"
|
||||
+"\t.io_multiCLK_11(multiCLK[11]),\n"
|
||||
+"\t.io_multiCLK_12(multiCLK[12]),\n"
|
||||
+"\t.io_multiCLK_13(multiCLK[13]),\n"
|
||||
+"\t.io_multiCLK_14(multiCLK[14]),\n"
|
||||
+"\t.io_multiCLK_15(multiCLK[15]),\n\n"
|
||||
|
||||
+"\t.io_dDatIn(dDat_w[%d]),\n"%(id, )
|
||||
+"\t.io_dDatOut(%s),\n"%(dout_code, )
|
||||
+"\t.io_uDatIn(%s),\n"%(din_code, )
|
||||
+"\t.io_uDatOut(uDat_w[%d]),\n\n"%(id, )
|
||||
|
||||
+"\t.io_iqspi_sck(qspi_sck),\n"
|
||||
+"\t.io_iqspi_mosi(qspi_mosi),\n"
|
||||
+"\t.io_iqspi_miso(`IQSPI_MISO(%d)),\n"%(id + 1, )
|
||||
+"\t.io_iqspi_isDirIn(),\n"
|
||||
+"\t.io_iqspi_csn(`IQSPI_CSN(%d)),\n\n"%(id + 1, )
|
||||
|
||||
+"\t.io_ospi_sck (spi_sck),\n"
|
||||
+"\t.io_ospi_mosi(spi_mosi),\n"
|
||||
+"\t.io_ospi_miso(spi_miso[%d]),\n"%(id + 1, )
|
||||
+"\t.io_ospi_csn (`ESPI_CSN(%d)),\n\n"%(id + 1, )
|
||||
|
||||
+"\t.io_oqspi_sck(qspi_sck),\n"
|
||||
+"\t.io_oqspi_mosi(qspi_mosi),\n"
|
||||
+"\t.io_oqspi_miso(`EQSPI_MISO(%d)),\n"%(id + 1, )
|
||||
+"\t.io_oqspi_isDirIn(),\n"
|
||||
+"\t.io_oqspi_csn(`EQSPI_CSN(%d)),\n\n"%(id + 1, )
|
||||
|
||||
+"\t.io_isSoftReset(isSoftReset[%d]),\n"%(id + 1, )
|
||||
+"\t.io_interrupt(io_int_sig[%d]),\n"%(id + 1, )
|
||||
+"\t.io_latchPin_0(latch0),\n"
|
||||
+"\t.io_latchPin_1(latch1),\n"
|
||||
+"\t.io_hwSerial(`HW_SERIAL),\n"
|
||||
+"\t.io_uniCode(0)\n"
|
||||
+"\t);\n\n\n"
|
||||
)
|
||||
return code_device
|
||||
|
||||
def __gen_slv_dev_predef(num):
|
||||
code_predef =("`define DEV_NUM %d //slave num\n"%(num, )
|
||||
+"`define ALL_DEV_NUM (`DEV_NUM + 1) // slave + master\n"
|
||||
+"`define SPI_CSN_NUM (`ALL_DEV_NUM * 3)\n"
|
||||
|
||||
+"`define HW_SERIAL 0 //48'h31303050584c //(48'h4c5850303031)\n"
|
||||
+"`define IQSPI_PINS(N) (`N*4+3):(`N*4)\n"
|
||||
+"`define EQSPI_PINS(N) ((`N + `ALL_DEV_NUM)*4+3):((`N + `ALL_DEV_NUM)*4)\n"
|
||||
+"`define IQSPI_MISO(N) qspi_miso[`IQSPI_PINS(`N)]\n"
|
||||
+"`define EQSPI_MISO(N) qspi_miso[`EQSPI_PINS(`N)]\n"
|
||||
|
||||
+"`define IQSPI_CSN_NUM(id) (`id)\n"
|
||||
+"`define ESPI_CSN_NUM(id) ((`id)+(`ALL_DEV_NUM))\n"
|
||||
+"`define EQSPI_CSN_NUM(id) ((`id)+(`ALL_DEV_NUM)*2)\n"
|
||||
|
||||
+"`define IQSPI_CSN(id) spi_csn[`IQSPI_CSN_NUM(`id)]\n"
|
||||
+"`define ESPI_CSN(id) spi_csn[`ESPI_CSN_NUM(`id)]\n"
|
||||
+"`define EQSPI_CSN(id) spi_csn[`EQSPI_CSN_NUM(`id)]\n"
|
||||
)
|
||||
|
||||
code_qspi_mux_init = "`define QSPI_MUX_MISO_INIT \\\n"
|
||||
code_qspi_mux_init_item = ""
|
||||
for i in range(num):
|
||||
code_qspi_mux_init_item = code_qspi_mux_init_item + "\t\t(`IQSPI_MISO(%d) & ~{4{`IQSPI_CSN(%d)}}) |\\\n"%(i, i)
|
||||
code_qspi_mux_init_item = code_qspi_mux_init_item + "\t\t(`IQSPI_MISO(%d) & ~{4{`IQSPI_CSN(%d)}}) |\\\n"%(num, num)
|
||||
|
||||
for i in range(num):
|
||||
code_qspi_mux_init_item = code_qspi_mux_init_item + "\t\t(`EQSPI_MISO(%d) & ~{4{`EQSPI_CSN(%d)}}) |\\\n"%(i, i)
|
||||
code_qspi_mux_init_item = code_qspi_mux_init_item + "\t\t(`EQSPI_MISO(%d) & ~{4{`EQSPI_CSN(%d)}})\n\n"%(num, num)
|
||||
|
||||
code_qspi_mux_init = code_qspi_mux_init + code_qspi_mux_init_item
|
||||
|
||||
|
||||
code_spi_mux_init = "`define SPI_MUX_MISO_INIT \\\n"
|
||||
code_spi_mux_init_item = ""
|
||||
for i in range(num):
|
||||
code_spi_mux_init_item = code_spi_mux_init_item + "\t\t( spi_miso[%d] & ~`ESPI_CSN(%d)) |\\\n"%(i, i)
|
||||
code_spi_mux_init_item = code_spi_mux_init_item + "\t\t( spi_miso[%d] & ~`ESPI_CSN(%d))\n\n"%(num, num)
|
||||
code_spi_mux_init = code_spi_mux_init + code_spi_mux_init_item
|
||||
|
||||
genPkt = GenPkt()
|
||||
|
||||
genPkt.clean()
|
||||
|
||||
gen_file_def = "dev_predef"
|
||||
|
||||
code = code_predef + code_qspi_mux_init + code_spi_mux_init
|
||||
|
||||
genPkt.addAfterExc(code)
|
||||
|
||||
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
|
||||
|
||||
|
||||
def gen_slv_dev_num(num):
|
||||
__gen_slv_dev_predef(num)
|
||||
|
||||
genPkt = GenPkt()
|
||||
|
||||
genPkt.clean()
|
||||
|
||||
gen_file_def = "slave_dev_def"
|
||||
|
||||
code = ""
|
||||
for id in range(num - 1):
|
||||
code = code + __GenDevice(id)
|
||||
code = code + __GenDevice(num - 1, True)
|
||||
|
||||
genPkt.addAfterExc(code)
|
||||
|
||||
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def teardown():
|
||||
#add_tc_2_runlist("")
|
||||
pass
|
||||
Reference in New Issue
Block a user