为多相位模拟增加命令行,增加8b10b切换的测试

This commit is contained in:
2025-09-08 16:47:30 +08:00
parent a63e14e6f6
commit 9c43daf51e
8 changed files with 155 additions and 41 deletions

View File

@@ -2,6 +2,9 @@ from pyutils import *
global_dev_num = 4
global_setting_dev_clk = dict()
def bringup():
gen_file_def = "sys_bringup"
@@ -177,7 +180,8 @@ def bringup():
add_tc_2_runlist(gen_file_def)
def __GenDevice(id, TerminateNode = False, diffclk = False):
def __GenDevice(id, TerminateNode = False):
global global_setting_dev_clk
dout_code = "dDat_w[%d]"%(id + 1, )
din_code = "uDat_w[%d]"%(id + 1, )
if TerminateNode:
@@ -186,9 +190,13 @@ def __GenDevice(id, TerminateNode = False, diffclk = False):
clk = "multiCLK[0]"
multiclk = "multiCLK"
if diffclk:
clk = "multiCLK2[0]"
multiclk = "multiCLK2"
try:
v = global_setting_dev_clk[id + 1]
clk = "multiCLK%d[0]"%(id + 1, )
multiclk = "multiCLK%d"%(id + 1, )
except:
pass
code_device = ("\tShinTop s_ShinTop_slv%d(\n"%(id, )
+"\t.clock(%s),\n"%(clk, )
@@ -244,6 +252,12 @@ def __GenDevice(id, TerminateNode = False, diffclk = False):
return code_device
def __gen_slv_dev_predef(num):
global global_setting_dev_clk
code_for_clk = ""
for k in global_setting_dev_clk:
code_for_clk = code_for_clk + "reg [15:0] multiCLK%d;\n"%(k, )
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"
@@ -289,7 +303,7 @@ def __gen_slv_dev_predef(num):
gen_file_def = "dev_predef"
code = code_predef + code_qspi_mux_init + code_spi_mux_init
code = code_for_clk + code_predef + code_qspi_mux_init + code_spi_mux_init
genPkt.addAfterExc(code)
@@ -336,18 +350,57 @@ def gen_slv_dev_for_clk(num):
code = ""
for id in range(num - 1):
if id == 1:
code = code + __GenDevice(id, diffclk = True)
else:
code = code + __GenDevice(id)
code = code + __GenDevice(id)
code = code + __GenDevice(num - 1, True)
genPkt.addAfterExc(code)
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
def set_dev_clk(cfg):
global global_setting_dev_clk
global_setting_dev_clk = cfg
code_for_clk = ""
for k in global_setting_dev_clk:
v = global_setting_dev_clk[k]
ph = int(8 * 1000000 * v[0] / 360.0)
period = int(1000000 + v[1])
code_for_clk = code_for_clk + __gen_slv_clk(k, ph, period)
genPkt = GenPkt()
genPkt.clean()
gen_file_def = "slave_dev_clk"
genPkt.addAfterExc(code_for_clk)
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
def __gen_slv_clk(clk, ph, period):
slv_code =(
""
#"\tinitial begin\n"
#+"\t\tforever begin #%d clock%d <= ~clock%d; end\n"%(period * 8, clk, clk)
#+"\tend\n\n"
+"\tgenerate\n"
+"\tfor( genvar i = 0; i < 16; i = i + 1 ) begin\n"
+"\t\tinitial begin\n"
+ "\t\t\t//相位信息\n"
+ "\t\t\t#%d\n"%(ph)
+ "\t\t\tmultiCLK%d[i] = 0;\n"%(clk, )
+ "\t\t\tfor( integer j = 0; j < i; j = j + 1 ) begin\n"
+ "\t\t\t\t#%d\n"%(period, )
+ "\t\t\t\t;\n"
+ "\t\t\tend\n"
+ "\t\t\tforever begin #%d multiCLK%d[i] <= ~multiCLK%d[i]; end\n"%(period * 8, clk, clk)
+"\t\tend\n"
+"\tend\n"
+"\tendgenerate\n")
return slv_code
def teardown():
#add_tc_2_runlist("")