diff --git a/Makefile b/Makefile index 9800a10..65abac1 100644 --- a/Makefile +++ b/Makefile @@ -54,6 +54,20 @@ testShin: vvp -N ./tb/build/shinTest.iverilog -lxt2 -fst || true python3 ./tb/shinTest/check_testcase.py +testShin8b10b: + python3 ./tb/shinTest/gen_pkt.py -8b10b + mkdir -p generated/log + rm -rf generated/log/* + iverilog -Wall \ + -o ./tb/build/shinTest.iverilog \ + -y ./generated/shin \ + -I ./generated/shin \ + -D RANDOMIZE_REG_INIT \ + -D IVERILOG_COMPILE \ + ./tb/shinTest/ShinTopSpiTb.v + vvp -N ./tb/build/shinTest.iverilog -lxt2 -fst || true + python3 ./tb/shinTest/check_testcase.py + testShinClk: python3 ./tb/shinTest/gen_pkt_clk.py --dev1 0 92 --dev2 0 -92 -8b10b mkdir -p generated/log diff --git a/tb/shinTest/Makefile_vcs b/tb/shinTest/Makefile_vcs index 099e6fb..df609fe 100644 --- a/tb/shinTest/Makefile_vcs +++ b/tb/shinTest/Makefile_vcs @@ -23,6 +23,16 @@ testShin_vcs: python3 ./shinTest/check_testcase.py +testShin8b10b_vcs: + python3 ./shinTest/gen_pkt.py -8b10b + mkdir -p generated/log + rm -rf generated/log/* + @echo "Available CPUs: ${CPU_COUNT}" + ${VCS} -f ./shinTest_vcs.f + ${SIM} + python3 ./shinTest/check_testcase.py + + testShinClk_vcs: python3 ./shinTest/gen_pkt_clk.py --dev1 0 90 --dev2 0 -90 mkdir -p generated/log diff --git a/tb/shinTest/gen_pkt.py b/tb/shinTest/gen_pkt.py index 7742156..9a607ef 100755 --- a/tb/shinTest/gen_pkt.py +++ b/tb/shinTest/gen_pkt.py @@ -2,14 +2,28 @@ #encoding=utf-8 from pyutils import * from testcase import environment, rwregs, ebmmu, errorPkt, watchdog, broadcast, sync, base, mac +import argparse + if __name__ == '__main__': + parser = argparse.ArgumentParser() + + # 可选参数 + parser.add_argument("-8b10b", action="store_true", dest="use_8b10b", default=False, help="使用8b10b编码") + + # 解析参数 + args = parser.parse_args() + + #if args.use_8b10b: + # add_tc_2_runlist(rwregs.tc1()) + environment.gen_slv_dev_num(4) + environment.set_using_8b10b(args.use_8b10b) environment.bringup() #add_tc_2_runlist(rwregs.tc1()) - ''' + #''' add_tc_2_runlist(errorPkt.tc1()) add_tc_2_runlist(errorPkt.tc2()) add_tc_2_runlist(errorPkt.tc3()) @@ -50,6 +64,8 @@ if __name__ == '__main__': add_tc_2_runlist(errorPkt.tc38()) #''' + #add_tc_2_runlist(rwregs.tc2()) + #''' add_tc_2_runlist(base.tc1()) add_tc_2_runlist(base.tc2()) diff --git a/tb/shinTest/testcase/base.py b/tb/shinTest/testcase/base.py index 5d5b73a..c55e0d9 100644 --- a/tb/shinTest/testcase/base.py +++ b/tb/shinTest/testcase/base.py @@ -1,5 +1,5 @@ from pyutils import * - +from .environment import * def tc1(): genPkt = GenPkt() @@ -510,6 +510,8 @@ def tc8(): +"\n#5000\n" +genIFRwDataCode(0, 0x09, True, 1, [0, ], False, iface=1) +genIFRwDataCode(2, 0x09, True, 1, [0, ], False, iface=1) + +using_proper_code(0) + +using_proper_code(2) +genMessageCode("--读取中断") +genIFRwDataCode(0, 0x74, False, 4) @@ -2118,6 +2120,8 @@ def tc28(): +"#5000" +genIFRwDataCode(0, 0x09, True, 1, [0, ], False, iface=1) +genIFRwDataCode(4, 0x09, True, 1, [0, ], False, iface=1) + +using_proper_code(0) + +using_proper_code(4) +genMessageCode("--读取中断") +genIFRwDataCode(0, 0x74, False, 4) @@ -2332,6 +2336,8 @@ def tc28(): +"#5000" +genIFRwDataCode(0, 0x09, True, 1, [0, ], False, iface=1) +genIFRwDataCode(4, 0x09, True, 1, [0, ], False, iface=1) + +using_proper_code(0) + +using_proper_code(4) +genMessageCode("--读取中断") +genIFRwDataCode(0, 0x74, False, 4) diff --git a/tb/shinTest/testcase/environment.py b/tb/shinTest/testcase/environment.py index 67a1e08..81f9863 100644 --- a/tb/shinTest/testcase/environment.py +++ b/tb/shinTest/testcase/environment.py @@ -3,8 +3,7 @@ from pyutils import * global_dev_num = 4 global_setting_dev_clk = dict() - - +global_using_8b10b = False def bringup(): gen_file_def = "sys_bringup" @@ -30,6 +29,12 @@ def bringup(): +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("--设置合适的底层编码4b5b or 8b10b") + +using_proper_code(0) + +using_proper_code(1) + +using_proper_code(2) + +using_proper_code(3) + +using_proper_code(4) ) main_dev = [0x01, ] @@ -404,4 +409,18 @@ def __gen_slv_clk(clk, ph, period): def teardown(): #add_tc_2_runlist("") - pass \ No newline at end of file + pass + + +def set_using_8b10b(isUsing8b10b): + global global_using_8b10b + global_using_8b10b = isUsing8b10b + +def using_proper_code(dev): + global global_using_8b10b + if global_using_8b10b: + return genIFRwDataCode(dev, 0x004c, True, 2, [0x1, 0x59], wlog = False) + else: + return genIFRwDataCode(dev, 0x004c, True, 2, [0x0, 0x59], wlog = False) + + \ No newline at end of file diff --git a/tb/shinTest/testcase/rwregs.py b/tb/shinTest/testcase/rwregs.py index 036f988..7ac5b0d 100644 --- a/tb/shinTest/testcase/rwregs.py +++ b/tb/shinTest/testcase/rwregs.py @@ -30,3 +30,31 @@ def tc1(): +genTcEndFrameCode(gen_file_def)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) return gen_file_def + + +def tc2(): + gen_file_def = "regtest_tc02" + sm_idx = 0 + tc_des = "测试寄存器的读写状态,将系统改为4B5B进行通信\\n" + + genPkt = GenPkt() + genPkt.clean() + + dev_num = get_slv_dev_num() + + genPkt.addBeforeExc(genTcStartFrameCode(gen_file_def, tc_des)) + + change_4b5b_code = "" + for i in range(dev_num + 1): + change_4b5b_code = change_4b5b_code + genIFRwDataCode(i, 0x004c, True, 2, [0x0, 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_4b5b_code + +genTcEndFrameCode(gen_file_def)) + genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) + return gen_file_def \ No newline at end of file diff --git a/tb/shinTest/testcase/sync.py b/tb/shinTest/testcase/sync.py index 0d5ac25..edd7b43 100644 --- a/tb/shinTest/testcase/sync.py +++ b/tb/shinTest/testcase/sync.py @@ -1,5 +1,5 @@ from pyutils import * - +from .environment import * def tc1(): genPkt = GenPkt() @@ -822,6 +822,7 @@ def tc5(): +genIFRwDataCode(3, 0xc0, False, 4) +genIFRwDataCode(4, 0x09, True, 1, [0, ], False, iface=1) + +using_proper_code(4) +genIFRwDataCode(4, 0x00, True, 1, [0x2, ]) +genIFRwDataCode(4, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff]) @@ -1319,9 +1320,10 @@ def tc7(): genPkt.addBeforeExc("\n#5000\n" +genIFRwDataCode(0, 0x09, True, 1, [0, ], False, iface=1) + +using_proper_code(0) +genIFRwDataCode(0, 0x74, False, 4) - +genIFRwDataCode(0, 0x40, False, 4) + #+genIFRwDataCode(0, 0x40, False, 4) +genIFRwDataCode(0, 0x00, True, 1, [0x1, ]) ) diff --git a/tb/shinTest/testcase_result/base_tc02_result.log b/tb/shinTest/testcase_result/base_tc02_result.log index 1330c11..914cb8f 100644 --- a/tb/shinTest/testcase_result/base_tc02_result.log +++ b/tb/shinTest/testcase_result/base_tc02_result.log @@ -3,7 +3,7 @@ 16'h0316 8'h00 16'h0002 8'h8c 8'h00 16'h3000 8'h00 16'h008c 8'h08 8'h80 8'h00 8'h00 8'h00 8'h04 8'h00 8'h00 8'hd0 8'h80 8'h00 8'h01 8'h02 8'h03 8'h04 8'h05 8'h06 8'h07 8'h08 8'h09 8'h0a 8'h0b 8'h0c 8'h0d 8'h0e 8'h0f 8'h10 8'h11 8'h12 8'h13 8'h14 8'h15 8'h16 8'h17 8'h18 8'h19 8'h1a 8'h1b 8'h1c 8'h1d 8'h1e 8'h1f 8'h20 8'h21 8'h22 8'h23 8'h24 8'h25 8'h26 8'h27 8'h28 8'h29 8'h2a 8'h2b 8'h2c 8'h2d 8'h2e 8'h2f 8'h30 8'h31 8'h32 8'h33 8'h34 8'h35 8'h36 8'h37 8'h38 8'h39 8'h3a 8'h3b 8'h3c 8'h3d 8'h3e 8'h3f 8'h40 8'h41 8'h42 8'h43 8'h44 8'h45 8'h46 8'h47 8'h48 8'h49 8'h4a 8'h4b 8'h4c 8'h4d 8'h4e 8'h4f 8'h50 8'h51 8'h52 8'h53 8'h54 8'h55 8'h56 8'h57 8'h58 8'h59 8'h5a 8'h5b 8'h5c 8'h5d 8'h5e 8'h5f 8'h60 8'h61 8'h62 8'h63 8'h64 8'h65 8'h66 8'h67 8'h68 8'h69 8'h6a 8'h6b 8'h6c 8'h6d 8'h6e 8'h6f 8'h70 8'h71 8'h72 8'h73 8'h74 8'h75 8'h76 8'h77 8'h78 8'h79 8'h7a 8'h7b 8'h7c 8'h7d 8'h7e 8'h7f 8'h00 8'h00 16'h0020 8'h00 16'h0001 8'h15 -16'h2800 8'h80 16'h008c 8'h08 8'h80 8'h00 8'h04 8'h00 8'h04 8'h00 8'h00 8'hd0 8'h80 8'h02 8'h01 8'h4e 8'h5b 8'h54 8'h35 8'h36 8'h37 8'h5d 8'h09 8'h0f 8'h0b 8'h0c 8'h0d 8'h0e 8'h0f 8'h10 8'h11 8'h12 8'h13 8'h14 8'h15 8'h16 8'h17 8'h18 8'h19 8'h1a 8'h1b 8'h1c 8'h1d 8'h1e 8'h1f 8'h20 8'h21 8'h22 8'h23 8'h24 8'h25 8'h26 8'h27 8'h28 8'h29 8'h2a 8'h2b 8'h2c 8'h2d 8'h2e 8'h2f 8'h30 8'h31 8'h32 8'h33 8'h34 8'h35 8'h36 8'h37 8'h38 8'h39 8'h3a 8'h3b 8'h3c 8'h3d 8'h3e 8'h3f 8'h40 8'h41 8'h42 8'h43 8'h7c 8'h75 8'h46 8'hc7 8'h5d 8'h4d 8'h4a 8'h4b 8'h4c 8'h4d 8'h4e 8'h4f 8'h50 8'hd7 8'hd7 8'h53 8'h54 8'h55 8'h56 8'h57 8'h58 8'h59 8'h5a 8'h5b 8'h5c 8'h5d 8'h5e 8'h5f 8'h60 8'h61 8'h62 8'h63 8'h64 8'h65 8'h66 8'h67 8'h68 8'h69 8'h6a 8'h6b 8'h6c 8'h6d 8'h6e 8'h6f 8'h70 8'h71 8'h72 8'hf3 8'h74 8'h75 8'h77 8'h77 8'h78 8'h79 8'h7a 8'h7b 8'h7c 8'hfd 8'h7e 8'h7f 8'h00 8'h04 +16'h2800 8'h80 16'h008c 8'h08 8'h80 8'h00 8'h04 8'h00 8'h04 8'h00 8'h00 8'hd0 8'h80 8'h02 8'h01 8'h4e 8'h5b 8'h54 8'h35 8'h36 8'h37 8'h5d 8'h09 8'h0f 8'h0b 8'h0c 8'h0d 8'h0e 8'h0f 8'h10 8'h11 8'h12 8'h13 8'h14 8'h15 8'h16 8'h17 8'h18 8'h19 8'h1a 8'h1b 8'h1c 8'h1d 8'h1e 8'h1f 8'h20 8'h21 8'h22 8'h23 8'h24 8'h25 8'h26 8'h27 8'h28 8'h29 8'h2a 8'h2b 8'h2c 8'h2d 8'h2e 8'h2f 8'h30 8'h31 8'h32 8'h33 8'h34 8'h35 8'h36 8'h37 8'h38 8'h39 8'h3a 8'h3b 8'h3c 8'h3d 8'h3e 8'h3f 8'h40 8'h41 8'h42 8'h43 8'h7c 8'h75 8'h46 8'hc7 8'h5d 8'h4d 8'h4a 8'h4b 8'hxx 8'h4d 8'h4e 8'h4f 8'h50 8'hd7 8'hd7 8'h53 8'h54 8'h55 8'h56 8'h57 8'h58 8'h59 8'h5a 8'h5b 8'h5c 8'h5d 8'h5e 8'h5f 8'h60 8'h61 8'h62 8'h63 8'h64 8'h65 8'h66 8'h67 8'h68 8'h69 8'h6a 8'h6b 8'h6c 8'h6d 8'h6e 8'h6f 8'h70 8'h71 8'h72 8'hf3 8'h74 8'h75 8'h77 8'h77 8'h78 8'h79 8'h7a 8'h7b 8'h7c 8'hfd 8'h7e 8'h7f 8'h00 8'h04 16'h0074 8'h80 16'h0004 8'h03 8'h00 8'h06 8'h00 16'h0074 8'h80 16'h0004 8'h00 8'h00 8'h0f 8'h00 16'h0074 8'h80 16'h0004 8'h00 8'h00 8'h0f 8'h00 diff --git a/tb/shinTest/testcase_result/base_tc08_result.log b/tb/shinTest/testcase_result/base_tc08_result.log index 6d6f3ff..f6578cd 100644 --- a/tb/shinTest/testcase_result/base_tc08_result.log +++ b/tb/shinTest/testcase_result/base_tc08_result.log @@ -16,7 +16,7 @@ 16'h0306 8'h00 16'h0002 8'h8c 8'h00 16'h1000 8'h00 16'h008c 8'h08 8'h80 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'hd0 8'h80 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 16'h0020 8'h00 16'h0001 8'h01 -16'h0800 8'h80 16'h008c 8'h08 8'h80 8'h00 8'h01 8'h00 8'h00 8'h00 8'h00 8'hd0 8'h80 8'h02 8'h01 8'h4c 8'h58 8'h50 8'h30 8'h30 8'h31 8'h55 8'h00 8'h01 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h3c 8'h31 8'h00 8'h80 8'h15 8'h05 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h87 8'h87 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'hf0 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h10 8'h80 8'h00 8'h00 8'h00 8'h01 +16'h0800 8'h80 16'h008c 8'h08 8'h80 8'h00 8'h01 8'h00 8'h00 8'h00 8'h00 8'hd0 8'h80 8'h02 8'h01 8'h4c 8'h58 8'h50 8'h30 8'h30 8'h31 8'h55 8'h00 8'h01 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h3c 8'h31 8'h00 8'h80 8'h15 8'h05 8'h00 8'h00 8'hxx 8'h00 8'h00 8'h00 8'h00 8'h87 8'h87 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'hf0 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h00 8'h10 8'h80 8'h00 8'h00 8'h00 8'h01 16'h0078 8'h00 16'h0004 8'hff 8'hff 8'hff 8'hff 16'h0078 8'h00 16'h0004 8'hff 8'hff 8'hff 8'hff 16'h007c 8'h00 16'h0002 8'h00 8'h81