From 9cf5346b3da1c4cc534d983dae27748a29129f1b Mon Sep 17 00:00:00 2001 From: bacon Date: Wed, 30 Jul 2025 22:59:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AD=A5=E5=AE=9E=E7=8E=B0python?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E6=8C=82=E6=8E=A5.v=E6=96=87=E4=BB=B6=EF=BC=8C?= =?UTF-8?q?=E6=97=A0=E9=9C=80=E6=89=8B=E5=B7=A5=E5=86=99.v=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tb/shinTest/ShinTopSpiTb.v | 4 +- tb/shinTest/gen_pkt.py | 4 +- tb/shinTest/pyutils/GenPkt.py | 77 ++++++++-- tb/shinTest/testcase/base.py | 22 ++- tb/shinTest/testcase/broadcast.py | 6 + tb/shinTest/testcase/detect.py | 4 + tb/shinTest/testcase/ebmmu.py | 243 +++++++++++++++++++++++++++++- tb/shinTest/testcase/errorPkt.py | 9 +- tb/shinTest/testcase/readregs.py | 3 +- tb/shinTest/testcase/sync.py | 8 +- tb/shinTest/testcase/watchdog.py | 3 +- 11 files changed, 359 insertions(+), 24 deletions(-) diff --git a/tb/shinTest/ShinTopSpiTb.v b/tb/shinTest/ShinTopSpiTb.v index 0a223b1..6508444 100644 --- a/tb/shinTest/ShinTopSpiTb.v +++ b/tb/shinTest/ShinTopSpiTb.v @@ -42,7 +42,7 @@ //`define ENABLE_EBMMU_TR12_TEST "generated/log/ebmmu_tr12_tc.log" //`define ENABLE_EBMMU_TR13_TEST "generated/log/ebmmu_tr13_tc.log" //`define ENABLE_EBMMU_TR14_TEST "generated/log/ebmmu_tr14_tc.log" -`define ENABLE_EBMMU_TR15_TEST "generated/log/ebmmu_tr15_tc.log" +//`define ENABLE_EBMMU_TR15_TEST "generated/log/ebmmu_tr15_tc.log" //`define ENABLE_EBMMU_TR16_TEST "generated/log/ebmmu_tr16_tc.log" //`define ENABLE_EBMMU_TR17_TEST "generated/log/ebmmu_tr17_tc.log" //`define ENABLE_EBMMU_TR18_TEST "generated/log/ebmmu_tr18_tc.log" @@ -1976,6 +1976,8 @@ initial begin end `endif + `include "tc_runlist.vh" + #1000000 $display("Testcase Finished! Time Out !!!"); $fclose(spidata_file); diff --git a/tb/shinTest/gen_pkt.py b/tb/shinTest/gen_pkt.py index b4a6864..eff7268 100755 --- a/tb/shinTest/gen_pkt.py +++ b/tb/shinTest/gen_pkt.py @@ -38,14 +38,16 @@ if __name__ == '__main__': ebmmu.tc6() ebmmu.tc7() ebmmu.tc8() + ebmmu.tc9() ebmmu.tc10() ebmmu.tc11() ebmmu.tc12() ebmmu.tc13() ebmmu.tc14() ebmmu.tc15() + add_tc_2_runlist(ebmmu.tc16()) watchdog.tc1() - + gen_tc_runlist() diff --git a/tb/shinTest/pyutils/GenPkt.py b/tb/shinTest/pyutils/GenPkt.py index 93bb92d..e28c6c8 100644 --- a/tb/shinTest/pyutils/GenPkt.py +++ b/tb/shinTest/pyutils/GenPkt.py @@ -56,7 +56,7 @@ class GenPkt(object): self.pkt_sub_pkt = self.pkt_sub_pkt + 1 self.sub_pkt.append([0, dev_idx, ptype, addr, cmd, len, data]) - def gen(self, filename="pkt_verilog_test.v", filetype=0): + def gen(self, filename="pkt_verilog_test.v", filetype=0, appendgen=False, gen_name=None): pkt_len = 4 for sp in self.sub_pkt: if sp[0] != 0: @@ -155,24 +155,35 @@ class GenPkt(object): i = i + 1 #print("pkt_len:%d, data_len:%d"%(pkt_len, pkt_len - 4)) - f = open(filename, "wt+") + open_mode = "wt+" + if appendgen: + open_mode = "at" + f = open(filename, open_mode) if filetype == 1: for md in self.sub_pkt: if md[0] == 1: f.write("%s\n"%(md[1],)) define_str = "`define DEF_" - pos1 = filename.rfind("/") - if (pos1 < -1): - pos1 = 0 - else: - pos1 = pos1 + 1 + if appendgen and (gen_name == None): + print("Error, gen_name not define.") + raise "Error, gen_name not define." + + if not appendgen: + pos1 = filename.rfind("/") + if (pos1 < -1): + pos1 = 0 + else: + pos1 = pos1 + 1 - pos2 = filename.rfind(".") - if (pos1 > pos2): - define_str = define_str + filename[pos1:] + pos2 = filename.rfind(".") + if (pos1 > pos2): + define_str = define_str + filename[pos1:] + else: + define_str = define_str + filename[pos1:pos2] else: - define_str = define_str + filename[pos1:pos2] + define_str = define_str + gen_name + f.write(define_str + "_len \t%d\n"%(pkt_len)) f.write(define_str + "_sm(array) \\\n\tarray``[%d]=8'h%02X;\\\n\tarray``[%d]=8'h%02X;\n"%( @@ -329,4 +340,46 @@ def setting_ebmmu_regs(regmap, index, vaddr, raddr, size, p, enable): regmap[index * 0xa + 7] = (size >> 8) & 0xff regmap[index * 0xa + 8] = p & 0x3 - regmap[index * 0xa + 9] = enable & 0x1 \ No newline at end of file + regmap[index * 0xa + 9] = enable & 0x1 + + + +__run_list=list() +__pre_include_path='./generated/shin' +__pre_gen_log_path='./generated/log' +def add_tc_2_runlist(filename): + code_f = filename + '.vh' + if code_f in __run_list: + print("Error, Testcase duplicate name") + raise "DUPLICATE NAME" + __run_list.append(code_f) + +def gen_tc_runlist(): + runlist_file = __pre_include_path + '/tc_runlist.vh' + f = open(runlist_file, "wt+") + for tc in __run_list: + f.write(f'\t`include "{tc}"\n') + f.close() + + +def genTcStartFrameCode(tcname, des): + upper_name = tcname.upper() + code_str = f'''\tbegin:{upper_name}_TESTCASE\n'''\ + +f'''\t\t`BEGIN_TESTCASE("{__pre_gen_log_path}/{tcname}_tc.log");\n'''\ + +'''\t\t_t_start = $realtime;\n'''\ + +'''\t\t#1000\n'''\ + +f'''\t\t$fdisplay(spidata_file,"\\n\\n测试用例:{upper_name}");\n''' + + if len(des) > 0: + code_str = code_str + '''\t\t$fdisplay(spidata_file,"''' + '-' * 80 + '''");\n''' + code_str = code_str + f'''\t\t$fdisplay(spidata_file,"{des}");\n''' + code_str = code_str + '''\t\t$fdisplay(spidata_file,"''' + '-' * 80 + '''");\n''' + return code_str + +def genTcEndFrameCode(tcname): + upper_name = tcname.upper() + return f'''\t\t_t_end = $realtime;\n'''\ + +'''\t\t$fdisplay(spidata_file, "该测试用例运行时间:%t\\n", _t_end - _t_start);\n'''\ + +f'''\t\t`END_TESTCASE("{__pre_gen_log_path}/{tcname}_tc.log");\n'''\ + +'''\tend\n''' + \ No newline at end of file diff --git a/tb/shinTest/testcase/base.py b/tb/shinTest/testcase/base.py index ad88263..725f494 100644 --- a/tb/shinTest/testcase/base.py +++ b/tb/shinTest/testcase/base.py @@ -24,6 +24,9 @@ def tc1(): +genReadAckPktCode(gen_file_def, sm_idx)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + + return gen_file_def + def tc2(): genPkt = GenPkt() @@ -48,6 +51,9 @@ def tc2(): +genReadAckPktCode(gen_file_def, sm_idx)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + + def tc3(): genPkt = GenPkt() @@ -77,6 +83,9 @@ def tc3(): genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + + def tc4(): genPkt = GenPkt() #------------------------------------------------------------------------- @@ -105,6 +114,7 @@ def tc4(): +genReadAckPktCode(gen_file_def, sm_idx)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def def tc5(): genPkt = GenPkt() @@ -176,6 +186,8 @@ def tc5(): +genReadAckPktCode(gen_file_def, sm_idx)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + def tc6(): genPkt = GenPkt() @@ -209,6 +221,9 @@ def tc6(): genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + + def tc7(): genPkt = GenPkt() @@ -235,6 +250,9 @@ def tc7(): genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + + def tc8(): genPkt = GenPkt() #------------------------------------------------------------------------- @@ -257,4 +275,6 @@ def tc8(): +genTrgTransPktCode(gen_file_def, sm_idx) +genReadAckPktCode(gen_file_def, sm_idx)) - genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) \ No newline at end of file + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + + return gen_file_def diff --git a/tb/shinTest/testcase/broadcast.py b/tb/shinTest/testcase/broadcast.py index e841562..62451a9 100644 --- a/tb/shinTest/testcase/broadcast.py +++ b/tb/shinTest/testcase/broadcast.py @@ -29,6 +29,8 @@ def tc1(): +genReadAckPktCode(gen_file_def, sm_idx)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + def tc2(): @@ -58,6 +60,8 @@ def tc2(): +genReadAckPktCode(gen_file_def, sm_idx)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + def tc3(): genPkt = GenPkt() @@ -81,3 +85,5 @@ def tc3(): +genReadAckPktCode(gen_file_def, sm_idx)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + diff --git a/tb/shinTest/testcase/detect.py b/tb/shinTest/testcase/detect.py index 4cfec90..2a3cbb6 100644 --- a/tb/shinTest/testcase/detect.py +++ b/tb/shinTest/testcase/detect.py @@ -14,6 +14,7 @@ def tc1(): +genTrgTransPktCode(gen_file_def, sm_idx) +genReadAckPktCode(gen_file_def, sm_idx)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def def tc2(): genPkt = GenPkt() @@ -30,3 +31,6 @@ def tc2(): +genReadAckPktCode(gen_file_def, sm_idx)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + + diff --git a/tb/shinTest/testcase/ebmmu.py b/tb/shinTest/testcase/ebmmu.py index d025541..7b429c4 100644 --- a/tb/shinTest/testcase/ebmmu.py +++ b/tb/shinTest/testcase/ebmmu.py @@ -79,6 +79,9 @@ def tc1(): genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + + def tc2(): genPkt = GenPkt() @@ -157,6 +160,8 @@ def tc2(): +genReadAckPktCode(gen_file_def, sm_idx)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + def tc3(): @@ -215,6 +220,8 @@ def tc3(): +genReadAckPktCode(gen_file_def, sm_idx)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + def tc4(): genPkt = GenPkt() @@ -280,6 +287,8 @@ def tc4(): +genReadAckPktCode(gen_file_def, sm_idx)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + def tc5(): @@ -304,6 +313,8 @@ def tc5(): +genReadAckPktCode(gen_file_def, sm_idx)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + def tc6(): genPkt = GenPkt() @@ -385,6 +396,8 @@ def tc6(): +genSlvSMReadData(4, 0, 0x80)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + def tc7(): genPkt = GenPkt() @@ -468,6 +481,8 @@ def tc7(): +genSlvSMReadData(4, 0, 0x80)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + def tc8(): genPkt = GenPkt() @@ -528,6 +543,8 @@ def tc8(): ) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + def tc9(): @@ -590,6 +607,8 @@ def tc9(): ) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + def tc10(): @@ -680,6 +699,8 @@ def tc10(): ) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + def tc11(): @@ -754,13 +775,22 @@ def tc11(): genPkt.addBeforeExc( genIFRwDataCode(1, 0x1000, True, 0x100, data0) - + genIFRwDataCode(1, 0x1000, True, 0x100, data1) + genIFRwDataCode(2, 0x1000, True, 0x100, data1) - + genIFRwDataCode(2, 0x1000, True, 0x100, data0) + genIFRwDataCode(3, 0x1000, True, 0x100, data0) - + genIFRwDataCode(3, 0x1000, True, 0x100, data1) + genIFRwDataCode(4, 0x1000, True, 0x100, data1) - + genIFRwDataCode(4, 0x1000, True, 0x100, data0)) + + genIFRwDataCode(1, 0x300, False, 0x20) + + genIFRwDataCode(2, 0x300, False, 0x20) + + genIFRwDataCode(3, 0x300, False, 0x20) + + genIFRwDataCode(4, 0x300, False, 0x20) + + genIFRwDataCode(1, 0x1000, True, 0x100, data1) + + genIFRwDataCode(2, 0x1000, True, 0x100, data0) + + genIFRwDataCode(3, 0x1000, True, 0x100, data1) + + genIFRwDataCode(4, 0x1000, True, 0x100, data0) + + genIFRwDataCode(1, 0x300, False, 0x20) + + genIFRwDataCode(2, 0x300, False, 0x20) + + genIFRwDataCode(3, 0x300, False, 0x20) + + genIFRwDataCode(4, 0x300, False, 0x20) + ) #subPkt参数:索引、索引类型、地址、命令、长度、数据 data = [0, ] * 0x100 * 4 @@ -804,6 +834,8 @@ def tc11(): ) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + def tc12(): genPkt = GenPkt() @@ -1004,6 +1036,8 @@ def tc12(): ) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + def tc13(): @@ -1209,6 +1243,8 @@ def tc13(): ) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + def tc14(): genPkt = GenPkt() @@ -1382,6 +1418,8 @@ def tc14(): ) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + def tc15(): genPkt = GenPkt() @@ -1570,4 +1608,199 @@ def tc15(): +genIFRwDataCode(4, 0x300, False, 0x20) ) - genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) \ No newline at end of file + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + + +def tc16(): + genPkt = GenPkt() + + #-------------------------------------------------------------------------- + #>>>>>>设置EB-MMU,测试用例15,读,检查权限 + genPkt.clean() + genPkt.setPktType(0) + + addr = 0x10000000 + addr_off = 0x0 + sm_size = 16 + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + data = [0,] * 256 + + taddr = addr + addr_off + setting_ebmmu_regs(data, 0, taddr, 0x0800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 1, taddr + sm_size / 2, 0x0800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 2, taddr, 0x1800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 3, taddr + sm_size / 2, 0x1800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 4, taddr, 0x2800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 5, taddr + sm_size / 2, 0x2800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 6, taddr, 0x3800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 7, taddr + sm_size / 2, 0x3800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + genPkt.addSubPkt(0x1, 0, 0x0200, 0x1, 80, data) + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + data = [0,] * 256 + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 0, taddr, 0x0800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 1, taddr + sm_size / 2, 0x0800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 2, taddr, 0x1800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 3, taddr + sm_size / 2, 0x1800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 4, taddr, 0x2800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 5, taddr + sm_size / 2, 0x2800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 6, taddr, 0x3800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 7, taddr + sm_size / 2, 0x3800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + genPkt.addSubPkt(0x2, 0, 0x0200, 0x1, 80, data) + + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + data = [0,] * 256 + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 0, taddr, 0x0800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 1, taddr + sm_size / 2, 0x0800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 2, taddr, 0x1800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 3, taddr + sm_size / 2, 0x1800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 4, taddr, 0x2800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 5, taddr + sm_size / 2, 0x2800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 6, taddr, 0x3800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 7, taddr + sm_size / 2, 0x3800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + genPkt.addSubPkt(0x3, 0, 0x0200, 0x1, 80, data) + + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + data = [0,] * 256 + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 0, taddr, 0x0800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 1, taddr + sm_size / 2, 0x0800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 2, taddr, 0x1800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 3, taddr + sm_size / 2, 0x1800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 4, taddr, 0x2800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 5, taddr + sm_size / 2, 0x2800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + addr_off = addr_off + sm_size + taddr = addr + addr_off + setting_ebmmu_regs(data, 6, taddr, 0x3800, sm_size / 2, 0x2, 0x1) + setting_ebmmu_regs(data, 7, taddr + sm_size / 2, 0x3800 + sm_size / 2, sm_size / 2, 0x2, 0x1) + + genPkt.addSubPkt(0x4, 0, 0x0200, 0x1, 80, data) + + data = [0,] * 2 + data[0] = (sm_size >> 0) & 0xff + data[1] = (sm_size >> 8) & 0xff + genPkt.addSubPkt(0x0, 0, 0x302, 0xe, 2, data) + + data = [0,] * 2 + data[0] = (sm_size >> 0) & 0xff + data[1] = (sm_size >> 8) & 0xff + genPkt.addSubPkt(0x0, 0, 0x30a, 0xe, 2, data) + + data = [0,] * 2 + data[0] = (sm_size >> 0) & 0xff + data[1] = (sm_size >> 8) & 0xff + genPkt.addSubPkt(0x0, 0, 0x312, 0xe, 2, data) + + + data = [0,] * 2 + data[0] = (sm_size >> 0) & 0xff + data[1] = (sm_size >> 8) & 0xff + genPkt.addSubPkt(0x0, 0, 0x31a, 0xe, 2, data) + + + gen_file_def = "ebmmu_tc16" + sm_idx = 0 + tc_des = "一个非常牛叉的测试用例" + + 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)) + + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + + #>>>>>>用EB-MMU方式读取EB-MMU设置, 15 + genPkt.clean() + genPkt.setPktType(0) + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + data = [(i & 0xff) for i in range(sm_size * 16)] + + gen_file_def_ap = "ebmmu_tc16_rw" + sm_idx = 0 + + genPkt.addSubPkt(0x1000, 2, 0, 0x1, sm_size * 16, 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) + +genIFRwDataCode(1, 0x300, False, 0x20) + +genIFRwDataCode(2, 0x300, False, 0x20) + +genIFRwDataCode(3, 0x300, False, 0x20) + +genIFRwDataCode(4, 0x300, False, 0x20) + +genSlvSMReadData(1, 0, sm_size) + +genSlvSMReadData(1, 2, sm_size) + +genSlvSMReadData(1, 4, sm_size) + +genSlvSMReadData(1, 6, sm_size) + +genSlvSMReadData(2, 0, sm_size) + +genSlvSMReadData(2, 2, sm_size) + +genSlvSMReadData(2, 4, sm_size) + +genSlvSMReadData(2, 6, sm_size) + +genSlvSMReadData(3, 0, sm_size) + +genSlvSMReadData(3, 2, sm_size) + +genSlvSMReadData(3, 4, sm_size) + +genSlvSMReadData(3, 6, sm_size) + +genSlvSMReadData(4, 0, sm_size) + +genSlvSMReadData(4, 2, sm_size) + +genSlvSMReadData(4, 4, sm_size) + +genSlvSMReadData(4, 6, sm_size) + +genIFRwDataCode(1, 0x300, False, 0x20) + +genIFRwDataCode(2, 0x300, False, 0x20) + +genIFRwDataCode(3, 0x300, False, 0x20) + +genIFRwDataCode(4, 0x300, False, 0x20) + +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/errorPkt.py b/tb/shinTest/testcase/errorPkt.py index 394174f..84de903 100644 --- a/tb/shinTest/testcase/errorPkt.py +++ b/tb/shinTest/testcase/errorPkt.py @@ -31,6 +31,8 @@ def tc1(): +genTrgTransPktCode(gen_file_def, sm_idx) +genReadAckPktCode(gen_file_def, sm_idx)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + def tc2(): random.seed(int(time.time() * 1000)) @@ -62,6 +64,8 @@ def tc2(): +genTrgTransPktCode(gen_file_def, sm_idx) +genReadAckPktCode(gen_file_def, sm_idx)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + def tc3(): random.seed(int(time.time() * 1000)) @@ -83,6 +87,8 @@ def tc3(): +genTrgTransPktCode(gen_file_def, sm_idx) +genReadAckPktCode(gen_file_def, sm_idx)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + def tc4(): genPkt = GenPkt() @@ -98,4 +104,5 @@ def tc4(): +genWriteTransPktCode(gen_file_def, sm_idx) +genTrgTransPktCode(gen_file_def, sm_idx) +genReadAckPktCode(gen_file_def, sm_idx)) - genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) \ No newline at end of file + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def diff --git a/tb/shinTest/testcase/readregs.py b/tb/shinTest/testcase/readregs.py index a71bcfb..b6d5a83 100644 --- a/tb/shinTest/testcase/readregs.py +++ b/tb/shinTest/testcase/readregs.py @@ -18,4 +18,5 @@ def tc1(): +genTrgTransPktCode(gen_file_def, sm_idx) +genReadAckPktCode(gen_file_def, sm_idx)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) - print("it's a test") \ No newline at end of file + print("it's a test") + return gen_file_def diff --git a/tb/shinTest/testcase/sync.py b/tb/shinTest/testcase/sync.py index 6341517..98438cb 100644 --- a/tb/shinTest/testcase/sync.py +++ b/tb/shinTest/testcase/sync.py @@ -25,6 +25,7 @@ def tc1(): genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def def tc2(): @@ -73,6 +74,8 @@ def tc2(): genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def + def tc3(): @@ -166,6 +169,8 @@ def tc3(): +genReadAckPktCode(gen_file_def, sm_idx)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def,), 1) + return gen_file_def + def tc4(): @@ -280,4 +285,5 @@ def tc4(): +genTrgTransPktCode(gen_file_def, sm_idx) +genReadAckPktCode(gen_file_def, sm_idx)) - genPkt.gen("./generated/shin/%s.vh"%(gen_file_def,), 1) \ No newline at end of file + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def,), 1) + return gen_file_def diff --git a/tb/shinTest/testcase/watchdog.py b/tb/shinTest/testcase/watchdog.py index 2dd366a..986610f 100644 --- a/tb/shinTest/testcase/watchdog.py +++ b/tb/shinTest/testcase/watchdog.py @@ -56,4 +56,5 @@ def tc1(): +genIFRwDataCode(4, 0x074, False, 0x04) +genIFRwDataCode(1, 0x400, False, 0x04)) - genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) \ No newline at end of file + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def