为多相位模拟增加命令行,增加8b10b切换的测试
This commit is contained in:
@@ -2337,9 +2337,13 @@ def tc28():
|
||||
+genIFRwDataCode(0, 0x74, False, 4)
|
||||
+genIFRwDataCode(4, 0x74, False, 4)
|
||||
|
||||
+genMessageCode("--读取中断使能")
|
||||
+genIFRwDataCode(0, 0x70, False, 4)
|
||||
+genIFRwDataCode(4, 0x70, False, 4)
|
||||
+genMessageCode("--配置中断")
|
||||
#+genIFRwDataCode(0, 0x70, False, 4)
|
||||
#+genIFRwDataCode(4, 0x70, False, 4)
|
||||
+genIFRwDataCode(0, 0x70, True, 4, [0x03, 0x00, 0x00, 0xf0])
|
||||
+genIFRwDataCode(4, 0x70, True, 4, [0x00, 0x00, 0x00, 0xf0])
|
||||
+genIFRwDataCode(0, 0x7c, True, 2, [0x10, 0x80])
|
||||
+genIFRwDataCode(4, 0x7c, True, 2, [0x10, 0x80])
|
||||
|
||||
+genMessageCode("--配置主从站")
|
||||
+genIFRwDataCode(0, 0x00, True, 1, [0x01, ])
|
||||
|
||||
@@ -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("")
|
||||
|
||||
@@ -1,21 +1,32 @@
|
||||
from pyutils import *
|
||||
from .environment import *
|
||||
|
||||
import time
|
||||
import random
|
||||
|
||||
def tc1():
|
||||
random.seed(int(time.time() * 1000))
|
||||
genPkt = GenPkt()
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#>>>>>>嗅探数据包1,正常的嗅探数据包
|
||||
genPkt.clean()
|
||||
genPkt.setPktType(1)
|
||||
gen_file_def = "regtest_tc01"
|
||||
sm_idx = 0
|
||||
tc_des = "测试寄存器的读写状态,将系统改为8B10B进行通信\\n"
|
||||
|
||||
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx)
|
||||
+genWriteTransPktCode(gen_file_def, sm_idx)
|
||||
+genTrgTransPktCode(gen_file_def, sm_idx)
|
||||
+genReadAckPktCode(gen_file_def, sm_idx))
|
||||
genPkt = GenPkt()
|
||||
genPkt.clean()
|
||||
|
||||
dev_num = get_slv_dev_num()
|
||||
|
||||
genPkt.addBeforeExc(genTcStartFrameCode(gen_file_def, tc_des))
|
||||
|
||||
change_8b10b_code = ""
|
||||
for i in range(dev_num + 1):
|
||||
change_8b10b_code = change_8b10b_code + genIFRwDataCode(i, 0x004c, True, 2, [0x1, 0x59])\
|
||||
+genIFRwDataCode(i, 0x004c, False, 2)
|
||||
|
||||
|
||||
genPkt.addAfterExc(#genWriteTransLenCode(gen_file_def, sm_idx)
|
||||
#+genWriteTransPktCode(gen_file_def, sm_idx)
|
||||
#+genTrgTransPktCode(gen_file_def, sm_idx)
|
||||
#+genReadAckPktCode(gen_file_def, sm_idx)
|
||||
change_8b10b_code
|
||||
+genTcEndFrameCode(gen_file_def))
|
||||
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
|
||||
return gen_file_def
|
||||
|
||||
Reference in New Issue
Block a user