From b7f5fe5749527d3d24b454ddfc65a2d264f01f3f Mon Sep 17 00:00:00 2001 From: bacon Date: Mon, 25 Aug 2025 00:32:52 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0=E6=B5=8B=E8=AF=95=E7=94=A8?= =?UTF-8?q?=E4=BE=8B=EF=BC=9B2.=E5=A2=9E=E5=8A=A0=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E7=94=9F=E6=88=90=E4=BB=8E=E7=AB=99=E6=95=B0=E9=87=8F=E7=9A=84?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=EF=BC=8C=E5=8F=AF=E6=9B=B4=E6=94=B9=E6=88=90?= =?UTF-8?q?=E4=BB=BB=E6=84=8F=E7=9A=84=E4=BB=8E=E7=AB=99=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tb/shinTest/ShinTopSpiTb.v | 11 +- tb/shinTest/gen_pkt.py | 12 +- tb/shinTest/testcase/base.py | 67 +++++++- tb/shinTest/testcase/environment.py | 133 ++++++++++++++++ tb/shinTest/testcase/errorPkt.py | 237 +++++++++++++++++++++++++++- tb/shinTest/testcase/watchdog.py | 2 + 6 files changed, 450 insertions(+), 12 deletions(-) diff --git a/tb/shinTest/ShinTopSpiTb.v b/tb/shinTest/ShinTopSpiTb.v index 9bfe261..451d2cc 100644 --- a/tb/shinTest/ShinTopSpiTb.v +++ b/tb/shinTest/ShinTopSpiTb.v @@ -40,6 +40,10 @@ module ShinTopSpiTb( reg [15:0] multiCLK; + +`include "dev_predef.vh" + +`ifdef DEFINE_SLAVE_DEVICE `define DEV_NUM 4 //slave num `define ALL_DEV_NUM (`DEV_NUM + 1) // slave + master `define SPI_CSN_NUM (`ALL_DEV_NUM * 3) @@ -74,7 +78,7 @@ module ShinTopSpiTb( ( spi_miso[2] & ~`ESPI_CSN(2)) |\ ( spi_miso[3] & ~`ESPI_CSN(3)) |\ ( spi_miso[4] & ~`ESPI_CSN(4)) - +`endif wire [(`DEV_NUM - 1):0] dDat_w; wire [(`DEV_NUM - 1):0] uDat_w; @@ -156,6 +160,9 @@ ShinTop s_ShinTop_Mst( .io_uniCode(0) ); +`include "slave_dev_def.vh" + +`ifdef DEFINE_SLAVE_DEVICE ShinTop s_ShinTop_slv0( .clock(clock), .reset(reset | isSoftReset[1]), @@ -359,7 +366,7 @@ ShinTop s_ShinTop_slv3( .io_hwSerial(`HW_SERIAL), .io_uniCode(0) ); - +`endif initial begin clock = 0; diff --git a/tb/shinTest/gen_pkt.py b/tb/shinTest/gen_pkt.py index 41ad222..961f68b 100755 --- a/tb/shinTest/gen_pkt.py +++ b/tb/shinTest/gen_pkt.py @@ -4,17 +4,18 @@ from pyutils import * from testcase import environment, readregs, ebmmu, errorPkt, watchdog, broadcast, sync, base if __name__ == '__main__': + environment.gen_slv_dev_num(4) environment.bringup() - #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(base.tc1()) - #add_tc_2_runlist(base.tc2()) - #add_tc_2_runlist(base.tc3()) + 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()) @@ -36,6 +37,7 @@ if __name__ == '__main__': #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(broadcast.tc1()) #add_tc_2_runlist(broadcast.tc2()) @@ -48,7 +50,7 @@ if __name__ == '__main__': #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(sync.tc7()) diff --git a/tb/shinTest/testcase/base.py b/tb/shinTest/testcase/base.py index 13a26c5..6e0b106 100644 --- a/tb/shinTest/testcase/base.py +++ b/tb/shinTest/testcase/base.py @@ -1655,4 +1655,69 @@ def tc24(): genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap) - return gen_file_def \ No newline at end of file + 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 + diff --git a/tb/shinTest/testcase/environment.py b/tb/shinTest/testcase/environment.py index 84e30ab..4d06940 100644 --- a/tb/shinTest/testcase/environment.py +++ b/tb/shinTest/testcase/environment.py @@ -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 \ No newline at end of file diff --git a/tb/shinTest/testcase/errorPkt.py b/tb/shinTest/testcase/errorPkt.py index a57cb2e..0b12991 100644 --- a/tb/shinTest/testcase/errorPkt.py +++ b/tb/shinTest/testcase/errorPkt.py @@ -331,10 +331,10 @@ def tc5(): 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): 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): data.append(random.randint(0, 255)) data = data + [0, 0] @@ -364,7 +364,51 @@ def tc5(): 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 data = [0,] * 32 @@ -405,8 +449,193 @@ def tc5(): +genIFRwDataCode(3, 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)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1, True, gen_file_def_ap) return gen_file_def - diff --git a/tb/shinTest/testcase/watchdog.py b/tb/shinTest/testcase/watchdog.py index 46cf8c6..ee7d7c9 100644 --- a/tb/shinTest/testcase/watchdog.py +++ b/tb/shinTest/testcase/watchdog.py @@ -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, False, 0x04) +genIFRwDataCode(1, 0x300 + slave_sm_id * 4, True, 1, [0, ]) + +"#800000\n" + +genIFRwDataCode(1, 0x400, False, 0x04) +genTcEndFrameCode(gen_file_def)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1)