1.增加测试用例;2.增加自动生成从站数量的代码,可更改成任意的从站数量
This commit is contained in:
@@ -40,6 +40,10 @@ module ShinTopSpiTb(
|
|||||||
|
|
||||||
reg [15:0] multiCLK;
|
reg [15:0] multiCLK;
|
||||||
|
|
||||||
|
|
||||||
|
`include "dev_predef.vh"
|
||||||
|
|
||||||
|
`ifdef DEFINE_SLAVE_DEVICE
|
||||||
`define DEV_NUM 4 //slave num
|
`define DEV_NUM 4 //slave num
|
||||||
`define ALL_DEV_NUM (`DEV_NUM + 1) // slave + master
|
`define ALL_DEV_NUM (`DEV_NUM + 1) // slave + master
|
||||||
`define SPI_CSN_NUM (`ALL_DEV_NUM * 3)
|
`define SPI_CSN_NUM (`ALL_DEV_NUM * 3)
|
||||||
@@ -74,7 +78,7 @@ module ShinTopSpiTb(
|
|||||||
( spi_miso[2] & ~`ESPI_CSN(2)) |\
|
( spi_miso[2] & ~`ESPI_CSN(2)) |\
|
||||||
( spi_miso[3] & ~`ESPI_CSN(3)) |\
|
( spi_miso[3] & ~`ESPI_CSN(3)) |\
|
||||||
( spi_miso[4] & ~`ESPI_CSN(4))
|
( spi_miso[4] & ~`ESPI_CSN(4))
|
||||||
|
`endif
|
||||||
wire [(`DEV_NUM - 1):0] dDat_w;
|
wire [(`DEV_NUM - 1):0] dDat_w;
|
||||||
wire [(`DEV_NUM - 1):0] uDat_w;
|
wire [(`DEV_NUM - 1):0] uDat_w;
|
||||||
|
|
||||||
@@ -156,6 +160,9 @@ ShinTop s_ShinTop_Mst(
|
|||||||
.io_uniCode(0)
|
.io_uniCode(0)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
`include "slave_dev_def.vh"
|
||||||
|
|
||||||
|
`ifdef DEFINE_SLAVE_DEVICE
|
||||||
ShinTop s_ShinTop_slv0(
|
ShinTop s_ShinTop_slv0(
|
||||||
.clock(clock),
|
.clock(clock),
|
||||||
.reset(reset | isSoftReset[1]),
|
.reset(reset | isSoftReset[1]),
|
||||||
@@ -359,7 +366,7 @@ ShinTop s_ShinTop_slv3(
|
|||||||
.io_hwSerial(`HW_SERIAL),
|
.io_hwSerial(`HW_SERIAL),
|
||||||
.io_uniCode(0)
|
.io_uniCode(0)
|
||||||
);
|
);
|
||||||
|
`endif
|
||||||
|
|
||||||
initial begin
|
initial begin
|
||||||
clock = 0;
|
clock = 0;
|
||||||
|
|||||||
@@ -4,17 +4,18 @@ from pyutils import *
|
|||||||
from testcase import environment, readregs, ebmmu, errorPkt, watchdog, broadcast, sync, base
|
from testcase import environment, readregs, ebmmu, errorPkt, watchdog, broadcast, sync, base
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
environment.gen_slv_dev_num(4)
|
||||||
environment.bringup()
|
environment.bringup()
|
||||||
|
|
||||||
#add_tc_2_runlist(errorPkt.tc1())
|
#add_tc_2_runlist(errorPkt.tc1())
|
||||||
#add_tc_2_runlist(errorPkt.tc2())
|
#add_tc_2_runlist(errorPkt.tc2())
|
||||||
#add_tc_2_runlist(errorPkt.tc3())
|
#add_tc_2_runlist(errorPkt.tc3())
|
||||||
#add_tc_2_runlist(errorPkt.tc4())
|
#add_tc_2_runlist(errorPkt.tc4())
|
||||||
#add_tc_2_runlist(errorPkt.tc5())
|
#add_tc_2_runlist(errorPkt.tc5())
|
||||||
|
#add_tc_2_runlist(errorPkt.tc6())
|
||||||
|
|
||||||
#add_tc_2_runlist(base.tc1())
|
add_tc_2_runlist(base.tc1())
|
||||||
#add_tc_2_runlist(base.tc2())
|
add_tc_2_runlist(base.tc2())
|
||||||
#add_tc_2_runlist(base.tc3())
|
add_tc_2_runlist(base.tc3())
|
||||||
#add_tc_2_runlist(base.tc4())
|
#add_tc_2_runlist(base.tc4())
|
||||||
#add_tc_2_runlist(base.tc5())
|
#add_tc_2_runlist(base.tc5())
|
||||||
#add_tc_2_runlist(base.tc6())
|
#add_tc_2_runlist(base.tc6())
|
||||||
@@ -36,6 +37,7 @@ if __name__ == '__main__':
|
|||||||
#add_tc_2_runlist(base.tc22())
|
#add_tc_2_runlist(base.tc22())
|
||||||
#add_tc_2_runlist(base.tc23())
|
#add_tc_2_runlist(base.tc23())
|
||||||
#add_tc_2_runlist(base.tc24())
|
#add_tc_2_runlist(base.tc24())
|
||||||
|
#add_tc_2_runlist(base.tc25())
|
||||||
|
|
||||||
#add_tc_2_runlist(broadcast.tc1())
|
#add_tc_2_runlist(broadcast.tc1())
|
||||||
#add_tc_2_runlist(broadcast.tc2())
|
#add_tc_2_runlist(broadcast.tc2())
|
||||||
@@ -48,7 +50,7 @@ if __name__ == '__main__':
|
|||||||
#add_tc_2_runlist(sync.tc4())
|
#add_tc_2_runlist(sync.tc4())
|
||||||
#add_tc_2_runlist(sync.tc5())
|
#add_tc_2_runlist(sync.tc5())
|
||||||
#add_tc_2_runlist(sync.tc6())
|
#add_tc_2_runlist(sync.tc6())
|
||||||
add_tc_2_runlist(sync.tc7())
|
#add_tc_2_runlist(sync.tc7())
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1655,4 +1655,69 @@ def tc24():
|
|||||||
|
|
||||||
|
|
||||||
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
|
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
|
||||||
return gen_file_def
|
return gen_file_def
|
||||||
|
|
||||||
|
|
||||||
|
def tc25():
|
||||||
|
genPkt = GenPkt()
|
||||||
|
|
||||||
|
gen_file_def = "base_tc25"
|
||||||
|
sm_idx = 0
|
||||||
|
tc_des = "发送一个包,内涵多个子包,包括所有的命令。\\n"
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
#>>>>>>普通数据包 sm1,2个读
|
||||||
|
genPkt.clean()
|
||||||
|
genPkt.setPktType(0)
|
||||||
|
|
||||||
|
#subPkt参数:索引、索引类型、地址、命令、长度、数据
|
||||||
|
genPkt.addSubPkt(0x00, 0, 0x00, 0xc, 12, [0, ] * 12)
|
||||||
|
genPkt.addSubPkt(0x01, 0, 0x00, 0x0, 32, [0, ] * 32)
|
||||||
|
genPkt.addSubPkt(0x02, 0, 0x302, 0x1, 2, [0x10, 0])
|
||||||
|
genPkt.addSubPkt(0x02, 0, 0x800, 0x1, 0x10, list(range(0x10)))
|
||||||
|
genPkt.addSubPkt(0x01, 0, 0x302, 0x2, 2, [0x20, 0])
|
||||||
|
genPkt.addSubPkt(0x02, 0, 0x00, 0xb, 2, [0x00, 0x00])
|
||||||
|
genPkt.addSubPkt(0x00, 0, 0x70, 0xd, 4, [0, 0, 0, 0])
|
||||||
|
genPkt.addSubPkt(0x00, 0, 0x30a, 0xe, 2, [0x20, 0x00])
|
||||||
|
genPkt.addSubPkt(0x00, 0, 0xc0, 0xf, 2, [0x00, 0x00])
|
||||||
|
|
||||||
|
|
||||||
|
sm_idx = 1
|
||||||
|
genPkt.addBeforeExc(genTcStartFrameCode(gen_file_def, tc_des)
|
||||||
|
+genEnableInsertTimeCode(0xa))
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
+genIFRwDataCode(2, 0x800, False, 0x10)
|
||||||
|
|
||||||
|
+genMessageCode("--读取中断")
|
||||||
|
+genIFRwDataCode(0, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(1, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(2, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(3, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(4, 0x74, False, 4)
|
||||||
|
|
||||||
|
+genMessageCode("--清除中断")
|
||||||
|
+genIFRwDataCode(0, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
+genIFRwDataCode(1, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
+genIFRwDataCode(2, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
+genIFRwDataCode(3, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
+genIFRwDataCode(4, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
|
||||||
|
+genMessageCode("--读取中断")
|
||||||
|
+genIFRwDataCode(0, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(1, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(2, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(3, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(4, 0x74, False, 4)
|
||||||
|
|
||||||
|
+genTcEndFrameCode(gen_file_def))
|
||||||
|
|
||||||
|
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
|
||||||
|
|
||||||
|
return gen_file_def
|
||||||
|
|
||||||
|
|||||||
@@ -172,8 +172,141 @@ def bringup():
|
|||||||
|
|
||||||
add_tc_2_runlist(gen_file_def)
|
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():
|
def teardown():
|
||||||
#add_tc_2_runlist("")
|
#add_tc_2_runlist("")
|
||||||
pass
|
pass
|
||||||
@@ -331,10 +331,10 @@ def tc5():
|
|||||||
data.append(random.randint(0, 255))
|
data.append(random.randint(0, 255))
|
||||||
'''
|
'''
|
||||||
|
|
||||||
data = data + [0x1a, 0x40, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x80]
|
data = data + [0x1a, 0x40, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x40]
|
||||||
for i in range(64):
|
for i in range(64):
|
||||||
data.append(random.randint(0, 255))
|
data.append(random.randint(0, 255))
|
||||||
data = data + [0, 0, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x40]
|
data = data + [0, 0, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x50]
|
||||||
for i in range(64):
|
for i in range(64):
|
||||||
data.append(random.randint(0, 255))
|
data.append(random.randint(0, 255))
|
||||||
data = data + [0, 0]
|
data = data + [0, 0]
|
||||||
@@ -364,7 +364,51 @@ def tc5():
|
|||||||
|
|
||||||
genPkt.clean()
|
genPkt.clean()
|
||||||
|
|
||||||
gen_file_def_ap = gen_file_def + "_rw"
|
gen_file_def_ap = gen_file_def + "_rw01"
|
||||||
|
sm_idx = 0
|
||||||
|
|
||||||
|
data = [0,] * 32
|
||||||
|
genPkt.addSubPkt(0, 0, 0, 0xd, 32, data)
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
+genMessageCode("--数据包状态寄存器")
|
||||||
|
+genIFRwDataCode(0, 0x22, False, 2)
|
||||||
|
+genIFRwDataCode(0, 0x22, True, 2, [0xff, 0xff])
|
||||||
|
+genIFRwDataCode(0, 0x22, False, 2)
|
||||||
|
|
||||||
|
+genMessageCode("--读取统计寄存器")
|
||||||
|
+genIFRwDataCode(0, 0x80, False, 24)
|
||||||
|
+genIFRwDataCode(0, 0xa0, False, 24)
|
||||||
|
|
||||||
|
+genMessageCode("--读取中断")
|
||||||
|
+genIFRwDataCode(0, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(1, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(2, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(3, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(4, 0x74, False, 4)
|
||||||
|
|
||||||
|
+genMessageCode("--清除中断")
|
||||||
|
+genIFRwDataCode(0, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
+genIFRwDataCode(1, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
+genIFRwDataCode(2, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
+genIFRwDataCode(3, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
+genIFRwDataCode(4, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
|
||||||
|
+genMessageCode("--读取中断")
|
||||||
|
+genIFRwDataCode(0, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(1, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(2, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(3, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(4, 0x74, False, 4)
|
||||||
|
)
|
||||||
|
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
|
||||||
|
|
||||||
|
genPkt.clean()
|
||||||
|
gen_file_def_ap = gen_file_def + "_rw02"
|
||||||
sm_idx = 0
|
sm_idx = 0
|
||||||
|
|
||||||
data = [0,] * 32
|
data = [0,] * 32
|
||||||
@@ -405,8 +449,193 @@ def tc5():
|
|||||||
+genIFRwDataCode(3, 0x74, False, 4)
|
+genIFRwDataCode(3, 0x74, False, 4)
|
||||||
+genIFRwDataCode(4, 0x74, False, 4)
|
+genIFRwDataCode(4, 0x74, False, 4)
|
||||||
|
|
||||||
|
+genIFRwDataCode(0, 0x7c, False, 2)
|
||||||
|
+genIFRwDataCode(1, 0x7c, False, 2)
|
||||||
|
+genIFRwDataCode(2, 0x7c, False, 2)
|
||||||
|
+genIFRwDataCode(3, 0x7c, False, 2)
|
||||||
|
+genIFRwDataCode(4, 0x7c, False, 2)
|
||||||
|
|
||||||
|
+genTcEndFrameCode(gen_file_def))
|
||||||
|
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
|
||||||
|
|
||||||
|
|
||||||
|
return gen_file_def
|
||||||
|
|
||||||
|
|
||||||
|
def tc6():
|
||||||
|
random.seed(int(time.time() * 1000))
|
||||||
|
genPkt = GenPkt()
|
||||||
|
|
||||||
|
gen_file_def = "error_pkt_tc06"
|
||||||
|
sm_idx = 0
|
||||||
|
tc_des = ("发送错误的数据包,导致设备出问题。出问题后,恢复错误,其中误操作的寄存器全部恢复正常。\\n"
|
||||||
|
"清除错误后,数据应该恢复正常。"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
genPkt.clean()
|
||||||
|
genPkt.addSubPkt(0x0, 0x0, 0x302, 0xe, 2, [0x20, 0x00])
|
||||||
|
|
||||||
|
genPkt.addBeforeExc(genTcStartFrameCode(gen_file_def, tc_des)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
|
||||||
|
+genMessageCode("--读取中断")
|
||||||
|
+genIFRwDataCode(0, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(1, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(2, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(3, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(4, 0x74, False, 4)
|
||||||
|
|
||||||
|
+genMessageCode("--清除中断")
|
||||||
|
+genIFRwDataCode(0, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
+genIFRwDataCode(1, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
+genIFRwDataCode(2, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
+genIFRwDataCode(3, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
+genIFRwDataCode(4, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
|
||||||
|
+genMessageCode("--读取中断")
|
||||||
|
+genIFRwDataCode(0, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(1, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(2, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(3, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(4, 0x74, False, 4)
|
||||||
|
)
|
||||||
|
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
|
||||||
|
|
||||||
|
genPkt.clean()
|
||||||
|
|
||||||
|
data = list()
|
||||||
|
|
||||||
|
'''
|
||||||
|
00 04 03 02 20 02 // type: 0 dev: 1 addr:0x0302 cmd:0x2 len: 2
|
||||||
|
{{ 20 00 }}
|
||||||
|
00 02
|
||||||
|
|
||||||
|
00 00 03 0a e0 02 // type: 0 dev: 0 addr:0x030a cmd:0xe len: 2
|
||||||
|
{{ 20 00 }}
|
||||||
|
00 04
|
||||||
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
data = data + [0x1a, 0x40, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x40]
|
||||||
|
for i in range(64):
|
||||||
|
data.append(random.randint(0, 255))
|
||||||
|
data = data + [0x00, 0x00]
|
||||||
|
|
||||||
|
data = data + [0x00, 0x00, 0x03, 0x02, 0xe0, 0x02, 0x40, 0x01, 0x00, 0x00]
|
||||||
|
|
||||||
|
#data = data + [0x00, 0x0c, 0x00, 0xc0, 0x00, 0x80]
|
||||||
|
for i in range(128):
|
||||||
|
data.append(random.randint(0, 255))
|
||||||
|
data = data + [0, 0]
|
||||||
|
|
||||||
|
genPkt.setPkt(2, data)
|
||||||
|
|
||||||
|
sm_idx = 0
|
||||||
|
genPkt.addBeforeExc(genMessageCode("--读取统计寄存器")
|
||||||
|
+genIFRwDataCode(0, 0x80, False, 24)
|
||||||
|
+genIFRwDataCode(0, 0xa0, False, 24)
|
||||||
|
+genIFRwDataCode(1, 0x80, False, 24)
|
||||||
|
+genIFRwDataCode(1, 0xa0, False, 24)
|
||||||
|
)
|
||||||
|
|
||||||
|
gen_file_def_ap = gen_file_def + "_rw01"
|
||||||
|
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)
|
||||||
|
|
||||||
|
+genMessageCode("--数据包状态寄存器")
|
||||||
|
+genIFRwDataCode(0, 0x22, False, 2)
|
||||||
|
+genIFRwDataCode(0, 0x22, True, 2, [0xff, 0xff])
|
||||||
|
+genIFRwDataCode(0, 0x22, False, 2)
|
||||||
|
|
||||||
|
+genMessageCode("--读取统计寄存器")
|
||||||
|
+genIFRwDataCode(0, 0x80, False, 24)
|
||||||
|
+genIFRwDataCode(0, 0xa0, False, 24)
|
||||||
|
+genIFRwDataCode(1, 0x80, False, 24)
|
||||||
|
+genIFRwDataCode(1, 0xa0, False, 24)
|
||||||
|
|
||||||
|
|
||||||
|
+genMessageCode("--读取中断")
|
||||||
|
+genIFRwDataCode(0, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(1, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(2, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(3, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(4, 0x74, False, 4)
|
||||||
|
|
||||||
|
+genMessageCode("--清除中断")
|
||||||
|
+genIFRwDataCode(0, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
+genIFRwDataCode(1, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
+genIFRwDataCode(2, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
+genIFRwDataCode(3, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
+genIFRwDataCode(4, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
|
||||||
|
+genMessageCode("--读取中断")
|
||||||
|
+genIFRwDataCode(0, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(1, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(2, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(3, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(4, 0x74, False, 4)
|
||||||
|
)
|
||||||
|
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
|
||||||
|
|
||||||
|
genPkt.clean()
|
||||||
|
|
||||||
|
gen_file_def_ap = gen_file_def + "_rw02"
|
||||||
|
sm_idx = 0
|
||||||
|
|
||||||
|
data = [0,] * 32
|
||||||
|
genPkt.addSubPkt(1, 0, 0x302, 0x0, 2, data)
|
||||||
|
genPkt.addSubPkt(2, 0, 0x302, 0x0, 2, data)
|
||||||
|
genPkt.addSubPkt(3, 0, 0x302, 0x0, 2, data)
|
||||||
|
genPkt.addSubPkt(4, 0, 0x302, 0x0, 2, data)
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
+genMessageCode("--数据包状态寄存器")
|
||||||
|
+genIFRwDataCode(0, 0x22, False, 2)
|
||||||
|
+genIFRwDataCode(0, 0x22, True, 2, [0xff, 0xff])
|
||||||
|
+genIFRwDataCode(0, 0x22, False, 2)
|
||||||
|
|
||||||
|
#+genMessageCode("--读取统计寄存器")
|
||||||
|
#+genIFRwDataCode(0, 0x80, False, 24)
|
||||||
|
#+genIFRwDataCode(0, 0xa0, False, 24)
|
||||||
|
|
||||||
|
+genMessageCode("--读取中断")
|
||||||
|
+genIFRwDataCode(0, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(1, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(2, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(3, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(4, 0x74, False, 4)
|
||||||
|
|
||||||
|
+genMessageCode("--清除中断")
|
||||||
|
+genIFRwDataCode(0, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
+genIFRwDataCode(1, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
+genIFRwDataCode(2, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
+genIFRwDataCode(3, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
+genIFRwDataCode(4, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
|
|
||||||
|
+genMessageCode("--读取中断")
|
||||||
|
+genIFRwDataCode(0, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(1, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(2, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(3, 0x74, False, 4)
|
||||||
|
+genIFRwDataCode(4, 0x74, False, 4)
|
||||||
|
|
||||||
+genTcEndFrameCode(gen_file_def))
|
+genTcEndFrameCode(gen_file_def))
|
||||||
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
|
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap)
|
||||||
|
|
||||||
return gen_file_def
|
return gen_file_def
|
||||||
|
|
||||||
|
|||||||
@@ -69,6 +69,8 @@ def watchdog_test_sm_wr_timeout(tc_id, wd_id):
|
|||||||
+genIFRwDataCode(1, 0x400, True, 4, [0xff, 0xff, 0xff, 0xff])
|
+genIFRwDataCode(1, 0x400, True, 4, [0xff, 0xff, 0xff, 0xff])
|
||||||
+genIFRwDataCode(1, 0x400, False, 0x04)
|
+genIFRwDataCode(1, 0x400, False, 0x04)
|
||||||
+genIFRwDataCode(1, 0x300 + slave_sm_id * 4, True, 1, [0, ])
|
+genIFRwDataCode(1, 0x300 + slave_sm_id * 4, True, 1, [0, ])
|
||||||
|
+"#800000\n"
|
||||||
|
+genIFRwDataCode(1, 0x400, False, 0x04)
|
||||||
+genTcEndFrameCode(gen_file_def))
|
+genTcEndFrameCode(gen_file_def))
|
||||||
|
|
||||||
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
|
genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)
|
||||||
|
|||||||
Reference in New Issue
Block a user