From 1fe1959f8c406f0dbd5adb8ecad6d6abe8e41e1d Mon Sep 17 00:00:00 2001 From: bacon Date: Tue, 26 Aug 2025 17:35:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=96=B0=E7=9A=84=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E7=94=A8=E4=BE=8B,=E6=B5=8B=E8=AF=95sync=E5=AF=84?= =?UTF-8?q?=E5=AD=98=E5=99=A8=E7=BB=84=E7=9A=84=E6=97=B6=E9=97=B4=E8=AF=BB?= =?UTF-8?q?=E5=8F=96,=E4=BB=A5=E5=85=8D=E5=8F=91=E7=94=9F=E8=BF=9B?= =?UTF-8?q?=E4=BD=8D=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 1 + tb/shinTest/gen_pkt.py | 6 +- tb/shinTest/testcase/base.py | 98 ++++++++++++++++++- tb/shinTest/testcase/environment.py | 44 ++++----- tb/shinTest/testcase/errorPkt.py | 8 ++ .../testcase_result/base_tc02_result.log | 2 +- .../testcase_result/base_tc08_result.log | 8 +- 7 files changed, 135 insertions(+), 32 deletions(-) diff --git a/Makefile b/Makefile index 7125c4a..8b0779e 100644 --- a/Makefile +++ b/Makefile @@ -56,6 +56,7 @@ testShin: testFilter: ./tb/shinTest/test_filter.py + vcdFilter: gtkwave ./tb/build/test_filter.vcd 1>/dev/null 2>&1 & diff --git a/tb/shinTest/gen_pkt.py b/tb/shinTest/gen_pkt.py index 205764e..c80177b 100755 --- a/tb/shinTest/gen_pkt.py +++ b/tb/shinTest/gen_pkt.py @@ -4,8 +4,9 @@ from pyutils import * from testcase import environment, readregs, ebmmu, errorPkt, watchdog, broadcast, sync, base, mac if __name__ == '__main__': - environment.gen_slv_dev_num(10) + 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()) @@ -13,7 +14,7 @@ if __name__ == '__main__': #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.tc3()) #add_tc_2_runlist(base.tc4()) @@ -38,6 +39,7 @@ if __name__ == '__main__': #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(broadcast.tc1()) #add_tc_2_runlist(broadcast.tc2()) diff --git a/tb/shinTest/testcase/base.py b/tb/shinTest/testcase/base.py index 6e0b106..e766e24 100644 --- a/tb/shinTest/testcase/base.py +++ b/tb/shinTest/testcase/base.py @@ -483,15 +483,23 @@ def tc8(): genPkt.addBeforeExc(genTcStartFrameCode(gen_file_def, tc_des) +genIFRwDataCode(0, 0x78, False, 4) + +genIFRwDataCode(0, 0x40, True, 4, [0x01, 0x00, 0x66, 0x79]) +genIFRwDataCode(2, 0x40, True, 4, [0x01, 0x00, 0x66, 0x79]) + +"\n#5000\n" +genIFRwDataCode(0, 0x09, True, 1, [0, ], False, iface=1) +genIFRwDataCode(2, 0x09, True, 1, [0, ], False, iface=1) + + +genMessageCode("--读取中断") +genIFRwDataCode(0, 0x74, False, 4) +genIFRwDataCode(2, 0x74, False, 4) - +genIFRwDataCode(0, 0x40, False, 4) - +genIFRwDataCode(2, 0x40, False, 4) + + +genMessageCode("--读取中断使能") + +genIFRwDataCode(0, 0x70, False, 4) + +genIFRwDataCode(2, 0x70, False, 4) + + +genMessageCode("--配置主从站") +genIFRwDataCode(0, 0x00, True, 1, main_dev) +genIFRwDataCode(2, 0x00, True, 1, slave_dev) ) @@ -515,6 +523,10 @@ def tc8(): +genMessageCode("--清除中断") +genIFRwDataCode(0, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff]) +genIFRwDataCode(2, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff]) + + +genMessageCode("--配置中断模式") + +genIFRwDataCode(0, 0x7c, True, 2, [0x00, 0x81]) + +genIFRwDataCode(2, 0x7c, True, 2, [0x00, 0x81]) ) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) @@ -1721,3 +1733,85 @@ def tc25(): return gen_file_def + +def tc26(): + genPkt = GenPkt() + + gen_file_def = "base_tc26" + sm_idx = 0 + tc_des = "读取内部的时钟,看看是否有进位问题,导致读取的错误或不可靠。\\n" + + + #------------------------------------------------------------------------- + #>>>>>>普通数据包 sm1,2个读 + genPkt.clean() + genPkt.setPktType(0) + + #subPkt参数:索引、索引类型、地址、命令、长度、数据 + genPkt.addSubPkt(0x00, 0, 0x00, 0xc, 12, [0, ] * 12) + + + 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) + + +genMessageCode("--读取时间1") + +genIFRwDataCode(0, 0x100, False, 32) + +genIFRwDataCode(1, 0x100, False, 32) + +genIFRwDataCode(2, 0x100, False, 32) + +genIFRwDataCode(3, 0x100, False, 32) + +genIFRwDataCode(4, 0x100, False, 32) + + + +"#8000\n" + +genMessageCode("--读取时间2") + +genIFRwDataCode(0, 0x100, False, 32) + +genIFRwDataCode(1, 0x100, False, 32) + +genIFRwDataCode(2, 0x100, False, 32) + +genIFRwDataCode(3, 0x100, False, 32) + +genIFRwDataCode(4, 0x100, False, 32) + + + +genMessageCode("--读取时间3") + +genIFRwDataCode(0, 0x100, False, 8) + +genIFRwDataCode(0, 0x118, False, 8) + +genIFRwDataCode(1, 0x118, False, 8) + +genIFRwDataCode(2, 0x118, False, 8) + +genIFRwDataCode(3, 0x118, False, 8) + +genIFRwDataCode(4, 0x118, False, 8) + + + +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 4d06940..eddc305 100644 --- a/tb/shinTest/testcase/environment.py +++ b/tb/shinTest/testcase/environment.py @@ -100,10 +100,6 @@ def bringup(): genPkt.addBeforeExc(genMessageCode("--设置环境,进行第二次嗅探")) - int_data=[0x00, 0x81] - clear_int = [0xff, 0xff, 0xff, 0xff] - main_int_en = [0x03, 0x00, 0x00, 0xf0] - slave_int_en= [0x00, 0x00, 0x00, 0xf0] genPkt.addAfterExc(genWriteTransLenCode(gen_file_def_ap, sm_idx) +genWriteTransPktCode(gen_file_def_ap, sm_idx) @@ -117,25 +113,25 @@ def bringup(): +genIFRwDataCode(4, 0xc0, False, 4) +genMessageCode("--使能中断") - +genIFRwDataCode(0, 0x70, True, 4, main_int_en) - +genIFRwDataCode(1, 0x70, True, 4, slave_int_en) - +genIFRwDataCode(2, 0x70, True, 4, slave_int_en) - +genIFRwDataCode(3, 0x70, True, 4, slave_int_en) - +genIFRwDataCode(4, 0x70, True, 4, slave_int_en) + +genIFRwDataCode(0, 0x70, True, 4, [0x03, 0x00, 0x00, 0xf0]) + +genIFRwDataCode(1, 0x70, True, 4, [0x00, 0x00, 0x00, 0xf0]) + +genIFRwDataCode(2, 0x70, True, 4, [0x00, 0x00, 0x00, 0xf0]) + +genIFRwDataCode(3, 0x70, True, 4, [0x00, 0x00, 0x00, 0xf0]) + +genIFRwDataCode(4, 0x70, True, 4, [0x00, 0x00, 0x00, 0xf0]) +genMessageCode("--设置中断为脉冲模式") - +genIFRwDataCode(0, 0x7c, True, 2, int_data) - +genIFRwDataCode(1, 0x7c, True, 2, int_data) - +genIFRwDataCode(2, 0x7c, True, 2, int_data) - +genIFRwDataCode(3, 0x7c, True, 2, int_data) - +genIFRwDataCode(4, 0x7c, True, 2, int_data) + +genIFRwDataCode(0, 0x7c, True, 2, [0x00, 0x81]) + +genIFRwDataCode(1, 0x7c, True, 2, [0x00, 0x81]) + +genIFRwDataCode(2, 0x7c, True, 2, [0x00, 0x81]) + +genIFRwDataCode(3, 0x7c, True, 2, [0x00, 0x81]) + +genIFRwDataCode(4, 0x7c, True, 2, [0x00, 0x81]) +genMessageCode("--清除中断") - +genIFRwDataCode(0, 0x78, True, 4, clear_int) - +genIFRwDataCode(1, 0x78, True, 4, clear_int) - +genIFRwDataCode(2, 0x78, True, 4, clear_int) - +genIFRwDataCode(3, 0x78, True, 4, clear_int) - +genIFRwDataCode(4, 0x78, True, 4, clear_int) + +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) @@ -145,11 +141,11 @@ def bringup(): +genIFRwDataCode(4, 0x74, False, 4) +genMessageCode("--清除中断") - +genIFRwDataCode(0, 0x78, True, 4, clear_int) - +genIFRwDataCode(1, 0x78, True, 4, clear_int) - +genIFRwDataCode(2, 0x78, True, 4, clear_int) - +genIFRwDataCode(3, 0x78, True, 4, clear_int) - +genIFRwDataCode(4, 0x78, True, 4, clear_int) + +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) diff --git a/tb/shinTest/testcase/errorPkt.py b/tb/shinTest/testcase/errorPkt.py index 0b12991..59b14b3 100644 --- a/tb/shinTest/testcase/errorPkt.py +++ b/tb/shinTest/testcase/errorPkt.py @@ -160,18 +160,22 @@ def tc2(): +genTrgTransPktCode(gen_file_def_ap, sm_idx) +genReadAckPktCode(gen_file_def_ap, sm_idx) + +"\n#50000\n" + +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, clear_int) +genIFRwDataCode(1, 0x78, True, 4, clear_int) +genIFRwDataCode(2, 0x78, True, 4, clear_int) +genIFRwDataCode(3, 0x78, True, 4, clear_int) +genIFRwDataCode(4, 0x78, True, 4, clear_int) + +genMessageCode("--读取中断") +genIFRwDataCode(0, 0x74, False, 4) +genIFRwDataCode(1, 0x74, False, 4) +genIFRwDataCode(2, 0x74, False, 4) @@ -222,18 +226,22 @@ def tc3(): +genIFRwDataCode(0, 0x22, True, 2, [0xff, 0xff]) +genIFRwDataCode(0, 0x22, False, 2) + +"\n#50000\n" + +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) diff --git a/tb/shinTest/testcase_result/base_tc02_result.log b/tb/shinTest/testcase_result/base_tc02_result.log index 446b2e4..3f88a55 100644 --- a/tb/shinTest/testcase_result/base_tc02_result.log +++ b/tb/shinTest/testcase_result/base_tc02_result.log @@ -2,7 +2,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'h01 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'h02 8'h03 8'h04 8'h05 8'h06 8'h07 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'h5d 8'hc5 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'h01 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'h02 8'h03 8'h04 8'h05 8'h06 8'h07 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'h0074 8'h01 16'h0004 8'h03 8'h00 8'h06 8'h00 16'h0074 8'h01 16'h0004 8'h00 8'h00 8'h0f 8'h00 16'h0074 8'h01 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 9422fb7..97137a6 100644 --- a/tb/shinTest/testcase_result/base_tc08_result.log +++ b/tb/shinTest/testcase_result/base_tc08_result.log @@ -3,17 +3,19 @@ 16'h0040 8'h00 16'h0004 8'h01 8'h00 8'h66 8'h79 16'h0074 8'h01 16'h0004 8'h00 8'h00 8'h00 8'h80 16'h0074 8'h01 16'h0004 8'h00 8'h00 8'h00 8'h80 -16'h0040 8'h01 16'h0004 8'h00 8'h00 8'h00 8'h00 -16'h0040 8'h01 16'h0004 8'h00 8'h00 8'h00 8'h00 +16'h0070 8'h01 16'h0004 8'h00 8'h00 8'h00 8'he0 +16'h0070 8'h01 16'h0004 8'h00 8'h00 8'h00 8'he0 16'h0000 8'h00 16'h0001 8'h01 16'h0000 8'h00 16'h0001 8'h02 16'h0302 8'h00 16'h0002 8'h8c 8'h00 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'h01 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'h00 8'h00 8'h00 8'h00 8'h00 8'h00 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'h5d 8'hc0 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'h00 8'h81 8'h00 8'h00 8'h00 8'h01 +16'h0800 8'h01 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'h00 8'h00 8'h00 8'h00 8'h00 8'h00 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'h00 8'h81 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 +16'h007c 8'h00 16'h0002 8'h00 8'h81 16'h00c0 8'h01 16'h0004 8'h08 8'h00 8'h02 8'h00 16'h00c0 8'h01 16'h0004 8'h00 8'h00 8'h00 8'h00 16'h00c0 8'h01 16'h0004 8'h08 8'h00 8'h04 8'h00