Merge branch 'mp_eb_dev' of github.com:whutddk/RISCV-MAC-SWICH into mp_eb_dev

This commit is contained in:
Ruige
2025-09-09 16:11:57 +08:00
10 changed files with 110 additions and 15 deletions

View File

@@ -54,6 +54,20 @@ testShin:
vvp -N ./tb/build/shinTest.iverilog -lxt2 -fst || true vvp -N ./tb/build/shinTest.iverilog -lxt2 -fst || true
python3 ./tb/shinTest/check_testcase.py 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: testShinClk:
python3 ./tb/shinTest/gen_pkt_clk.py --dev1 0 92 --dev2 0 -92 -8b10b python3 ./tb/shinTest/gen_pkt_clk.py --dev1 0 92 --dev2 0 -92 -8b10b
mkdir -p generated/log mkdir -p generated/log

View File

@@ -23,6 +23,16 @@ testShin_vcs:
python3 ./shinTest/check_testcase.py 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: testShinClk_vcs:
python3 ./shinTest/gen_pkt_clk.py --dev1 0 90 --dev2 0 -90 python3 ./shinTest/gen_pkt_clk.py --dev1 0 90 --dev2 0 -90
mkdir -p generated/log mkdir -p generated/log
@@ -33,7 +43,7 @@ testShinClk_vcs:
mv spi_trans_data.txt generated/spi_trans_data1.txt mv spi_trans_data.txt generated/spi_trans_data1.txt
mv generated/wave.vcd generated/wave1.vcd mv generated/wave.vcd generated/wave1.vcd
\ \
python3 ./shinTest/gen_pkt_clk.py --dev1 45 180 --dev3 25 -180 -8b10b python3 ./shinTest/gen_pkt_clk.py --dev1 45 180 --dev3 70 -180 -8b10b
mkdir -p generated/log mkdir -p generated/log
rm -rf generated/log/* rm -rf generated/log/*
${VCS} -f ./shinTestClk_vcs.f ${VCS} -f ./shinTestClk_vcs.f
@@ -51,7 +61,7 @@ testShinClk_vcs:
mv spi_trans_data.txt generated/spi_trans_data3.txt mv spi_trans_data.txt generated/spi_trans_data3.txt
mv generated/wave.vcd generated/wave3.vcd mv generated/wave.vcd generated/wave3.vcd
\ \
python3 ./shinTest/gen_pkt_clk.py --dev1 45 186 --dev3 25 -186 python3 ./shinTest/gen_pkt_clk.py --dev1 60 186 --dev3 15 -186
mkdir -p generated/log mkdir -p generated/log
rm -rf generated/log/* rm -rf generated/log/*
${VCS} -f ./shinTestClk_vcs.f ${VCS} -f ./shinTestClk_vcs.f
@@ -60,7 +70,7 @@ testShinClk_vcs:
mv spi_trans_data.txt generated/spi_trans_data4.txt mv spi_trans_data.txt generated/spi_trans_data4.txt
mv generated/wave.vcd generated/wave4.vcd mv generated/wave.vcd generated/wave4.vcd
\ \
python3 ./shinTest/gen_pkt_clk.py --dev1 45 187 --dev3 25 -187 python3 ./shinTest/gen_pkt_clk.py --dev1 80 187 --dev2 30 -187
mkdir -p generated/log mkdir -p generated/log
rm -rf generated/log/* rm -rf generated/log/*
${VCS} -f ./shinTestClk_vcs.f ${VCS} -f ./shinTestClk_vcs.f
@@ -69,7 +79,7 @@ testShinClk_vcs:
mv spi_trans_data.txt generated/spi_trans_data5.txt mv spi_trans_data.txt generated/spi_trans_data5.txt
mv generated/wave.vcd generated/wave5.vcd mv generated/wave.vcd generated/wave5.vcd
\ \
python3 ./shinTest/gen_pkt_clk.py --dev1 45 188 --dev3 25 -188 -8b10b python3 ./shinTest/gen_pkt_clk.py --dev1 70 188 --dev3 223 -188 -8b10b
mkdir -p generated/log mkdir -p generated/log
rm -rf generated/log/* rm -rf generated/log/*
${VCS} -f ./shinTestClk_vcs.f ${VCS} -f ./shinTestClk_vcs.f

View File

@@ -607,7 +607,7 @@ always @(posedge sck) begin
rxBuf[byteCnt] <= exChangeRegi; rxBuf[byteCnt] <= exChangeRegi;
//$display("spi read out %x", exChangeRegi); //$display("spi read out %x", exChangeRegi);
end end
if( txBuf[2] === 8'h80 & nextByteCnt >= 4) begin if( txBuf[2] === 8'h80 & nextByteCnt >= 3) begin
exChangeRegi <= isQspi ? {exChangeRegi[3:0], qspi_mux_miso} : {exChangeRegi[6:0], spi_mux_miso}; exChangeRegi <= isQspi ? {exChangeRegi[3:0], qspi_mux_miso} : {exChangeRegi[6:0], spi_mux_miso};
end else begin end else begin
exChangeRegi <= 0; exChangeRegi <= 0;
@@ -627,7 +627,7 @@ end
//mst slv0~slv3的 内部qspi调用即设置 //mst slv0~slv3的 内部qspi调用即设置
//sidx为0~4外部spi为5~9外部qspi为10~15 //sidx为0~4外部spi为5~9外部qspi为10~15
task spi_trans( input [15:0] saddress, input [7:0] scmd, input [12:0] slength,input [16:0] sidx ); task spi_trans( input [15:0] saddress, input [7:0] scmd, input [12:0] slength, input [16:0] sidx );
begin begin
txBuf[0] <= saddress[15:8]; txBuf[0] <= saddress[15:8];
txBuf[1] <= saddress[7:0]; txBuf[1] <= saddress[7:0];

View File

@@ -2,14 +2,28 @@
#encoding=utf-8 #encoding=utf-8
from pyutils import * from pyutils import *
from testcase import environment, rwregs, ebmmu, errorPkt, watchdog, broadcast, sync, base, mac from testcase import environment, rwregs, ebmmu, errorPkt, watchdog, broadcast, sync, base, mac
import argparse
if __name__ == '__main__': 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.gen_slv_dev_num(4)
environment.set_using_8b10b(args.use_8b10b)
environment.bringup() environment.bringup()
#add_tc_2_runlist(rwregs.tc1()) #add_tc_2_runlist(rwregs.tc1())
''' #'''
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())
@@ -50,6 +64,8 @@ if __name__ == '__main__':
add_tc_2_runlist(errorPkt.tc38()) add_tc_2_runlist(errorPkt.tc38())
#''' #'''
#add_tc_2_runlist(rwregs.tc2())
#''' #'''
add_tc_2_runlist(base.tc1()) add_tc_2_runlist(base.tc1())
add_tc_2_runlist(base.tc2()) add_tc_2_runlist(base.tc2())

View File

@@ -1,5 +1,5 @@
from pyutils import * from pyutils import *
from .environment import *
def tc1(): def tc1():
genPkt = GenPkt() genPkt = GenPkt()
@@ -510,6 +510,8 @@ def tc8():
+"\n#5000\n" +"\n#5000\n"
+genIFRwDataCode(0, 0x09, True, 1, [0, ], False, iface=1) +genIFRwDataCode(0, 0x09, True, 1, [0, ], False, iface=1)
+genIFRwDataCode(2, 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("--读取中断") +genMessageCode("--读取中断")
+genIFRwDataCode(0, 0x74, False, 4) +genIFRwDataCode(0, 0x74, False, 4)
@@ -2118,6 +2120,8 @@ def tc28():
+"#5000" +"#5000"
+genIFRwDataCode(0, 0x09, True, 1, [0, ], False, iface=1) +genIFRwDataCode(0, 0x09, True, 1, [0, ], False, iface=1)
+genIFRwDataCode(4, 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("--读取中断") +genMessageCode("--读取中断")
+genIFRwDataCode(0, 0x74, False, 4) +genIFRwDataCode(0, 0x74, False, 4)
@@ -2332,6 +2336,8 @@ def tc28():
+"#5000" +"#5000"
+genIFRwDataCode(0, 0x09, True, 1, [0, ], False, iface=1) +genIFRwDataCode(0, 0x09, True, 1, [0, ], False, iface=1)
+genIFRwDataCode(4, 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("--读取中断") +genMessageCode("--读取中断")
+genIFRwDataCode(0, 0x74, False, 4) +genIFRwDataCode(0, 0x74, False, 4)

View File

@@ -3,8 +3,7 @@ from pyutils import *
global_dev_num = 4 global_dev_num = 4
global_setting_dev_clk = dict() global_setting_dev_clk = dict()
global_using_8b10b = False
def bringup(): def bringup():
gen_file_def = "sys_bringup" gen_file_def = "sys_bringup"
@@ -30,6 +29,12 @@ def bringup():
+genIFRwDataCode(2, 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(3, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
+genIFRwDataCode(4, 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, ] main_dev = [0x01, ]
@@ -404,4 +409,18 @@ def __gen_slv_clk(clk, ph, period):
def teardown(): def teardown():
#add_tc_2_runlist("") #add_tc_2_runlist("")
pass 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)

View File

@@ -30,3 +30,31 @@ def tc1():
+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)
return gen_file_def 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

View File

@@ -1,5 +1,5 @@
from pyutils import * from pyutils import *
from .environment import *
def tc1(): def tc1():
genPkt = GenPkt() genPkt = GenPkt()
@@ -822,6 +822,7 @@ def tc5():
+genIFRwDataCode(3, 0xc0, False, 4) +genIFRwDataCode(3, 0xc0, False, 4)
+genIFRwDataCode(4, 0x09, True, 1, [0, ], False, iface=1) +genIFRwDataCode(4, 0x09, True, 1, [0, ], False, iface=1)
+using_proper_code(4)
+genIFRwDataCode(4, 0x00, True, 1, [0x2, ]) +genIFRwDataCode(4, 0x00, True, 1, [0x2, ])
+genIFRwDataCode(4, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff]) +genIFRwDataCode(4, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff])
@@ -1319,9 +1320,10 @@ def tc7():
genPkt.addBeforeExc("\n#5000\n" genPkt.addBeforeExc("\n#5000\n"
+genIFRwDataCode(0, 0x09, True, 1, [0, ], False, iface=1) +genIFRwDataCode(0, 0x09, True, 1, [0, ], False, iface=1)
+using_proper_code(0)
+genIFRwDataCode(0, 0x74, False, 4) +genIFRwDataCode(0, 0x74, False, 4)
+genIFRwDataCode(0, 0x40, False, 4) #+genIFRwDataCode(0, 0x40, False, 4)
+genIFRwDataCode(0, 0x00, True, 1, [0x1, ]) +genIFRwDataCode(0, 0x00, True, 1, [0x1, ])
) )

View File

@@ -3,7 +3,7 @@
16'h0316 8'h00 16'h0002 8'h8c 8'h00 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'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'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'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
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

View File

@@ -16,7 +16,7 @@
16'h0306 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'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'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'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