备份代码,几个问题:1.打印消息超过63个设备后,设备号正确,但是从0开始;2.128个设备的话,末尾的2个设备不正确,不知道为什么
This commit is contained in:
@@ -31,6 +31,16 @@ testShinClk_vcs:
|
|||||||
${SIM}
|
${SIM}
|
||||||
python3 ./shinTest/check_testcase.py
|
python3 ./shinTest/check_testcase.py
|
||||||
|
|
||||||
|
|
||||||
|
testShinMany_vcs:
|
||||||
|
python3 ./shinTest/gen_pkt_many_dev.py
|
||||||
|
mkdir -p generated/log
|
||||||
|
rm -rf generated/log/*
|
||||||
|
@echo "Available CPUs: ${CPU_COUNT}"
|
||||||
|
${VCS} -f ./shinTest_vcs.f
|
||||||
|
${SIM}
|
||||||
|
python3 ./shinTest/check_testcase.py
|
||||||
|
|
||||||
sim:
|
sim:
|
||||||
${SIM}
|
${SIM}
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,9 @@ module ShinTopSpiTb(
|
|||||||
reg clock2;
|
reg clock2;
|
||||||
reg [15:0] multiCLK2;
|
reg [15:0] multiCLK2;
|
||||||
|
|
||||||
|
reg clock3;
|
||||||
|
reg [15:0] multiCLK3;
|
||||||
|
|
||||||
|
|
||||||
`include "dev_predef.vh"
|
`include "dev_predef.vh"
|
||||||
|
|
||||||
@@ -425,26 +428,46 @@ endgenerate
|
|||||||
//如果频率差到-184ppm,参数是: 7998528/ 999816/7998528 [failed]
|
//如果频率差到-184ppm,参数是: 7998528/ 999816/7998528 [failed]
|
||||||
|
|
||||||
initial begin
|
initial begin
|
||||||
forever begin #7998560 clock2 <= ~clock2; end
|
forever begin #7998552 clock2 <= ~clock2; end
|
||||||
end
|
end
|
||||||
|
|
||||||
generate
|
generate
|
||||||
for( genvar i = 0; i < 16; i = i + 1 ) begin
|
for( genvar i = 0; i < 16; i = i + 1 ) begin
|
||||||
initial begin
|
initial begin
|
||||||
//相位信息
|
//相位信息
|
||||||
#250000
|
#750000
|
||||||
multiCLK2[i] = 0;
|
multiCLK2[i] = 0;
|
||||||
for( integer j = 0; j < i; j = j + 1 ) begin
|
for( integer j = 0; j < i; j = j + 1 ) begin
|
||||||
#999820
|
#999819
|
||||||
;
|
;
|
||||||
end
|
end
|
||||||
forever begin #7998560 multiCLK2[i] <= ~multiCLK2[i]; end
|
forever begin #7998552 multiCLK2[i] <= ~multiCLK2[i]; end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
endgenerate
|
endgenerate
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
initial begin
|
||||||
|
forever begin #7998552 clock3 <= ~clock3; end
|
||||||
|
end
|
||||||
|
|
||||||
|
generate
|
||||||
|
for( genvar i = 0; i < 16; i = i + 1 ) begin
|
||||||
|
initial begin
|
||||||
|
//相位信息
|
||||||
|
#750000
|
||||||
|
multiCLK3[i] = 0;
|
||||||
|
for( integer j = 0; j < i; j = j + 1 ) begin
|
||||||
|
#999819
|
||||||
|
;
|
||||||
|
end
|
||||||
|
forever begin #7998552 multiCLK3[i] <= ~multiCLK3[i]; end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
endgenerate
|
||||||
|
|
||||||
|
|
||||||
initial
|
initial
|
||||||
begin
|
begin
|
||||||
spidata_file = $fopen("spi_trans_data.txt", "w");
|
spidata_file = $fopen("spi_trans_data.txt", "w");
|
||||||
|
|||||||
140
tb/shinTest/gen_pkt_many_dev.py
Executable file
140
tb/shinTest/gen_pkt_many_dev.py
Executable file
@@ -0,0 +1,140 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
#encoding=utf-8
|
||||||
|
from pyutils import *
|
||||||
|
from testcase import environment, rwregs, ebmmu, errorPkt, watchdog, broadcast, sync, base, mac, manydev
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
environment.gen_slv_dev_num(128)
|
||||||
|
environment.bringup()
|
||||||
|
|
||||||
|
|
||||||
|
add_tc_2_runlist(manydev.tc1())
|
||||||
|
|
||||||
|
'''
|
||||||
|
add_tc_2_runlist(errorPkt.tc1())
|
||||||
|
add_tc_2_runlist(errorPkt.tc2())
|
||||||
|
add_tc_2_runlist(errorPkt.tc3())
|
||||||
|
add_tc_2_runlist(errorPkt.tc4())
|
||||||
|
add_tc_2_runlist(errorPkt.tc5())
|
||||||
|
add_tc_2_runlist(errorPkt.tc6())
|
||||||
|
add_tc_2_runlist(errorPkt.tc7())
|
||||||
|
add_tc_2_runlist(errorPkt.tc8())
|
||||||
|
add_tc_2_runlist(errorPkt.tc9())
|
||||||
|
add_tc_2_runlist(errorPkt.tc10())
|
||||||
|
add_tc_2_runlist(errorPkt.tc11())
|
||||||
|
add_tc_2_runlist(errorPkt.tc12())
|
||||||
|
add_tc_2_runlist(errorPkt.tc13())
|
||||||
|
add_tc_2_runlist(errorPkt.tc14())
|
||||||
|
add_tc_2_runlist(errorPkt.tc15())
|
||||||
|
add_tc_2_runlist(errorPkt.tc16())
|
||||||
|
add_tc_2_runlist(errorPkt.tc17())
|
||||||
|
add_tc_2_runlist(errorPkt.tc18())
|
||||||
|
add_tc_2_runlist(errorPkt.tc19())
|
||||||
|
add_tc_2_runlist(errorPkt.tc20())
|
||||||
|
add_tc_2_runlist(errorPkt.tc21())
|
||||||
|
add_tc_2_runlist(errorPkt.tc22())
|
||||||
|
add_tc_2_runlist(errorPkt.tc23())
|
||||||
|
add_tc_2_runlist(errorPkt.tc24())
|
||||||
|
add_tc_2_runlist(errorPkt.tc25())
|
||||||
|
add_tc_2_runlist(errorPkt.tc26())
|
||||||
|
add_tc_2_runlist(errorPkt.tc27())
|
||||||
|
add_tc_2_runlist(errorPkt.tc28())
|
||||||
|
add_tc_2_runlist(errorPkt.tc29())
|
||||||
|
add_tc_2_runlist(errorPkt.tc30())
|
||||||
|
add_tc_2_runlist(errorPkt.tc31())
|
||||||
|
add_tc_2_runlist(errorPkt.tc32())
|
||||||
|
add_tc_2_runlist(errorPkt.tc33())
|
||||||
|
add_tc_2_runlist(errorPkt.tc34())
|
||||||
|
add_tc_2_runlist(errorPkt.tc35())
|
||||||
|
add_tc_2_runlist(errorPkt.tc36())
|
||||||
|
add_tc_2_runlist(errorPkt.tc37())
|
||||||
|
add_tc_2_runlist(errorPkt.tc38())
|
||||||
|
#'''
|
||||||
|
|
||||||
|
'''
|
||||||
|
add_tc_2_runlist(base.tc1())
|
||||||
|
add_tc_2_runlist(base.tc2())
|
||||||
|
add_tc_2_runlist(base.tc3())
|
||||||
|
add_tc_2_runlist(base.tc4())
|
||||||
|
add_tc_2_runlist(base.tc5())
|
||||||
|
add_tc_2_runlist(base.tc6())
|
||||||
|
add_tc_2_runlist(base.tc7())
|
||||||
|
add_tc_2_runlist(base.tc8())
|
||||||
|
add_tc_2_runlist(base.tc9())
|
||||||
|
add_tc_2_runlist(base.tc10())
|
||||||
|
add_tc_2_runlist(base.tc11())
|
||||||
|
add_tc_2_runlist(base.tc12())
|
||||||
|
add_tc_2_runlist(base.tc13())
|
||||||
|
add_tc_2_runlist(base.tc14())
|
||||||
|
add_tc_2_runlist(base.tc15())
|
||||||
|
add_tc_2_runlist(base.tc16())
|
||||||
|
add_tc_2_runlist(base.tc17())
|
||||||
|
add_tc_2_runlist(base.tc18())
|
||||||
|
add_tc_2_runlist(base.tc19())
|
||||||
|
add_tc_2_runlist(base.tc20())
|
||||||
|
add_tc_2_runlist(base.tc21())
|
||||||
|
add_tc_2_runlist(base.tc22())
|
||||||
|
add_tc_2_runlist(base.tc23())
|
||||||
|
add_tc_2_runlist(base.tc24())
|
||||||
|
add_tc_2_runlist(base.tc25())
|
||||||
|
add_tc_2_runlist(base.tc26())
|
||||||
|
add_tc_2_runlist(base.tc27())
|
||||||
|
add_tc_2_runlist(base.tc28())
|
||||||
|
|
||||||
|
add_tc_2_runlist(base.tc29())
|
||||||
|
add_tc_2_runlist(base.tc30())
|
||||||
|
#'''
|
||||||
|
|
||||||
|
|
||||||
|
'''
|
||||||
|
add_tc_2_runlist(broadcast.tc1())
|
||||||
|
add_tc_2_runlist(broadcast.tc2())
|
||||||
|
add_tc_2_runlist(broadcast.tc3())
|
||||||
|
#'''
|
||||||
|
|
||||||
|
|
||||||
|
#add_tc_2_runlist(sync.tc1())
|
||||||
|
#add_tc_2_runlist(sync.tc2())
|
||||||
|
#add_tc_2_runlist(sync.tc3())
|
||||||
|
#add_tc_2_runlist(sync.tc4())
|
||||||
|
#add_tc_2_runlist(sync.tc5())
|
||||||
|
#add_tc_2_runlist(sync.tc6())
|
||||||
|
#add_tc_2_runlist(sync.tc7())
|
||||||
|
|
||||||
|
'''
|
||||||
|
add_tc_2_runlist(ebmmu.tc1())
|
||||||
|
add_tc_2_runlist(ebmmu.tc2())
|
||||||
|
add_tc_2_runlist(ebmmu.tc3())
|
||||||
|
add_tc_2_runlist(ebmmu.tc4())
|
||||||
|
add_tc_2_runlist(ebmmu.tc5())
|
||||||
|
add_tc_2_runlist(ebmmu.tc6())
|
||||||
|
add_tc_2_runlist(ebmmu.tc7())
|
||||||
|
add_tc_2_runlist(ebmmu.tc8())
|
||||||
|
add_tc_2_runlist(ebmmu.tc9())
|
||||||
|
add_tc_2_runlist(ebmmu.tc10())
|
||||||
|
add_tc_2_runlist(ebmmu.tc11())
|
||||||
|
add_tc_2_runlist(ebmmu.tc12())
|
||||||
|
add_tc_2_runlist(ebmmu.tc13())
|
||||||
|
add_tc_2_runlist(ebmmu.tc14())
|
||||||
|
add_tc_2_runlist(ebmmu.tc15())
|
||||||
|
add_tc_2_runlist(ebmmu.tc16())
|
||||||
|
add_tc_2_runlist(ebmmu.tc17())
|
||||||
|
add_tc_2_runlist(ebmmu.tc18())
|
||||||
|
add_tc_2_runlist(ebmmu.tc19())
|
||||||
|
#'''
|
||||||
|
|
||||||
|
#add_tc_2_runlist(watchdog.tc1())
|
||||||
|
#add_tc_2_runlist(watchdog.tc2())
|
||||||
|
|
||||||
|
#add_tc_2_runlist(mac.tc1())
|
||||||
|
#add_tc_2_runlist(mac.tc2())
|
||||||
|
#add_tc_2_runlist(mac.tc3())
|
||||||
|
#add_tc_2_runlist(mac.tc4())
|
||||||
|
#add_tc_2_runlist(mac.tc5())
|
||||||
|
#add_tc_2_runlist(mac.tc6())
|
||||||
|
#add_tc_2_runlist(mac.tc7())
|
||||||
|
|
||||||
|
environment.teardown()
|
||||||
|
|
||||||
|
gen_tc_runlist()
|
||||||
|
|
||||||
@@ -6,4 +6,5 @@ from .watchdog import *
|
|||||||
from .broadcast import *
|
from .broadcast import *
|
||||||
from .sync import *
|
from .sync import *
|
||||||
from .environment import *
|
from .environment import *
|
||||||
from .mac import *
|
from .mac import *
|
||||||
|
from .manydev import *
|
||||||
|
|||||||
133
tb/shinTest/testcase/manydev.py
Normal file
133
tb/shinTest/testcase/manydev.py
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
from pyutils import *
|
||||||
|
|
||||||
|
|
||||||
|
def tc1():
|
||||||
|
genPkt = GenPkt()
|
||||||
|
|
||||||
|
dev = 128
|
||||||
|
|
||||||
|
gen_file_def = "manydev_tc01"
|
||||||
|
sm_idx = 0
|
||||||
|
tc_des = f"{dev}个设备, 准备一下开发环境,发送一个广播包。\\n"
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
#>>>>>>普通数据包 sm1,2个读
|
||||||
|
genPkt.clean()
|
||||||
|
genPkt.setPktType(1)
|
||||||
|
|
||||||
|
set_if_code = ""
|
||||||
|
for i in range(dev - 4):
|
||||||
|
set_if_code = set_if_code + genIFRwDataCode(i + 5, 0x09, True, 1, [0, ], False, iface=1)
|
||||||
|
|
||||||
|
clear_int_code = ""
|
||||||
|
for i in range(dev + 1):
|
||||||
|
clear_int_code = clear_int_code + genIFRwDataCode(i, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
|
||||||
|
|
||||||
|
read_int_code = ""
|
||||||
|
for i in range(dev + 1):
|
||||||
|
read_int_code = read_int_code + genIFRwDataCode(i, 0x74, False, 4)
|
||||||
|
|
||||||
|
init_slave_code = ""
|
||||||
|
for i in range(dev):
|
||||||
|
init_slave_code = init_slave_code + genIFRwDataCode(1 + i, 0x0, True, 1, [0x2, ]) + genIFRwDataCode(1 + i, 0x7c, True, 2, [0x10, 0x80])
|
||||||
|
|
||||||
|
read_dev_code = ""
|
||||||
|
for i in range(dev + 1):
|
||||||
|
read_dev_code = read_dev_code + genIFRwDataCode(i, 0x0, False, 1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
genPkt.addBeforeExc(genTcStartFrameCode(gen_file_def, tc_des)
|
||||||
|
+genMessageCode("--清除中断")
|
||||||
|
+set_if_code
|
||||||
|
+init_slave_code
|
||||||
|
+clear_int_code
|
||||||
|
+read_int_code
|
||||||
|
+read_dev_code
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
+clear_int_code
|
||||||
|
)
|
||||||
|
|
||||||
|
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
|
||||||
|
|
||||||
|
genPkt.clean()
|
||||||
|
genPkt.setPktType(0)
|
||||||
|
|
||||||
|
gen_file_def_ap = gen_file_def + "_step02"
|
||||||
|
sm_idx = 0
|
||||||
|
|
||||||
|
data = [0x3f, 0xff]
|
||||||
|
genPkt.addSubPkt(0x0, 0, 0x0, 0xb, 2, data)
|
||||||
|
|
||||||
|
genPkt.addAfterExc(genMessageCode("--设置顺序地址")
|
||||||
|
+genWriteTransLenCode(gen_file_def_ap, sm_idx)
|
||||||
|
+genWriteTransPktCode(gen_file_def_ap, sm_idx)
|
||||||
|
+genTrgTransPktCode(gen_file_def_ap, sm_idx)
|
||||||
|
+ "#10000000"
|
||||||
|
+genReadAckPktCode(gen_file_def_ap, sm_idx)
|
||||||
|
|
||||||
|
|
||||||
|
+genMessageCode("--清除主中断")
|
||||||
|
+genIFRwDataCode(0, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
)
|
||||||
|
|
||||||
|
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
|
||||||
|
|
||||||
|
|
||||||
|
genPkt.clean()
|
||||||
|
genPkt.setPktType(1)
|
||||||
|
gen_file_def_ap = gen_file_def+"_step03"
|
||||||
|
sm_idx = 0
|
||||||
|
|
||||||
|
genPkt.addBeforeExc(genMessageCode("--设置环境,进行第二次嗅探"))
|
||||||
|
|
||||||
|
|
||||||
|
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx)
|
||||||
|
+genWriteTransPktCode(gen_file_def_ap, sm_idx)
|
||||||
|
+genTrgTransPktCode(gen_file_def_ap, sm_idx)
|
||||||
|
+genReadAckPktCode(gen_file_def_ap, sm_idx)
|
||||||
|
|
||||||
|
+clear_int_code
|
||||||
|
)
|
||||||
|
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
genPkt.clean()
|
||||||
|
genPkt.setPktType(0)
|
||||||
|
gen_file_def_ap = gen_file_def+"_step04"
|
||||||
|
sm_idx = 0
|
||||||
|
|
||||||
|
for i in range(dev):
|
||||||
|
genPkt.addSubPkt(i + 1, 0, 0x1000, 0x0, 2, [0, 0])
|
||||||
|
|
||||||
|
prepare_data_code = ""
|
||||||
|
for i in range(dev):
|
||||||
|
prepare_data_code = prepare_data_code + genSlvSMWriteData(i + 1, 1, 2, [i, i + 1])
|
||||||
|
|
||||||
|
genPkt.addBeforeExc(prepare_data_code)
|
||||||
|
|
||||||
|
genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx)
|
||||||
|
+genWriteTransPktCode(gen_file_def_ap, sm_idx)
|
||||||
|
+genTrgTransPktCode(gen_file_def_ap, sm_idx)
|
||||||
|
+ "#10000000"
|
||||||
|
+genReadAckPktCode(gen_file_def_ap, sm_idx)
|
||||||
|
|
||||||
|
+clear_int_code
|
||||||
|
|
||||||
|
+genTcEndFrameCode(gen_file_def)
|
||||||
|
)
|
||||||
|
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
|
||||||
|
|
||||||
|
|
||||||
|
return gen_file_def
|
||||||
Reference in New Issue
Block a user