提交 809d9d8b 编写于 作者: 饶先宏's avatar 饶先宏

202108301847

上级 ad1c8f30
Assembler report for de1_riscv
Sun Aug 29 18:52:14 2021
Mon Aug 30 18:42:51 2021
Quartus II 64-Bit Version 13.1.0 Build 162 10/23/2013 SJ Full Version
......@@ -37,7 +37,7 @@ applicable agreement for further details.
+---------------------------------------------------------------+
; Assembler Summary ;
+-----------------------+---------------------------------------+
; Assembler Status ; Successful - Sun Aug 29 18:52:14 2021 ;
; Assembler Status ; Successful - Mon Aug 30 18:42:50 2021 ;
; Revision Name ; de1_riscv ;
; Top-level Entity Name ; de1_riscv ;
; Family ; Cyclone V ;
......@@ -92,8 +92,8 @@ applicable agreement for further details.
; Option ; Setting ;
+----------------+--------------------------------------------------------------------+
; Device ; 5CSEMA5F31C6 ;
; JTAG usercode ; 0x01326DBA ;
; Checksum ; 0x01326DBA ;
; JTAG usercode ; 0x02745756 ;
; Checksum ; 0x02745756 ;
+----------------+--------------------------------------------------------------------+
......@@ -103,13 +103,13 @@ applicable agreement for further details.
Info: *******************************************************************
Info: Running Quartus II 64-Bit Assembler
Info: Version 13.1.0 Build 162 10/23/2013 SJ Full Version
Info: Processing started: Sun Aug 29 18:52:05 2021
Info: Processing started: Mon Aug 30 18:42:31 2021
Info: Command: quartus_asm --read_settings_files=off --write_settings_files=off de1_riscv -c de1_riscv
Info (115030): Assembler is generating device programming files
Info: Quartus II 64-Bit Assembler was successful. 0 errors, 0 warnings
Info: Peak virtual memory: 4803 megabytes
Info: Processing ended: Sun Aug 29 18:52:14 2021
Info: Elapsed time: 00:00:09
Info: Total CPU time (on all processors): 00:00:09
Info: Peak virtual memory: 673 megabytes
Info: Processing ended: Mon Aug 30 18:42:51 2021
Info: Elapsed time: 00:00:20
Info: Total CPU time (on all processors): 00:00:19
Sun Aug 29 18:52:30 2021
Mon Aug 30 18:43:39 2021
因为 它太大了无法显示 source diff 。你可以改为 查看blob
Fitter Status : Successful - Sun Aug 29 18:52:02 2021
Fitter Status : Successful - Mon Aug 30 18:42:25 2021
Quartus II 64-Bit Version : 13.1.0 Build 162 10/23/2013 SJ Full Version
Revision Name : de1_riscv
Top-level Entity Name : de1_riscv
Family : Cyclone V
Device : 5CSEMA5F31C6
Timing Models : Preliminary
Logic utilization (in ALMs) : 2,653 / 32,070 ( 8 % )
Total registers : 2042
Logic utilization (in ALMs) : 2,789 / 32,070 ( 9 % )
Total registers : 1998
Total pins : 204 / 457 ( 45 % )
Total virtual pins : 0
Total block memory bits : 82,944 / 4,065,280 ( 2 % )
Total block memory bits : 1,067,008 / 4,065,280 ( 26 % )
Total DSP Blocks : 10 / 87 ( 11 % )
Total HSSI RX PCSs : 0
Total HSSI PMA RX Deserializers : 0
Total HSSI TX PCSs : 0
Total HSSI TX Channels : 0
Total PLLs : 0 / 6 ( 0 % )
Total PLLs : 1 / 6 ( 17 % )
Total DLLs : 0 / 4 ( 0 % )
Flow report for de1_riscv
Sun Aug 29 18:52:29 2021
Mon Aug 30 18:43:38 2021
Quartus II 64-Bit Version 13.1.0 Build 162 10/23/2013 SJ Full Version
......@@ -40,24 +40,24 @@ applicable agreement for further details.
+-------------------------------------------------------------------------------+
; Flow Summary ;
+---------------------------------+---------------------------------------------+
; Flow Status ; Successful - Sun Aug 29 18:52:14 2021 ;
; Flow Status ; Successful - Mon Aug 30 18:42:50 2021 ;
; Quartus II 64-Bit Version ; 13.1.0 Build 162 10/23/2013 SJ Full Version ;
; Revision Name ; de1_riscv ;
; Top-level Entity Name ; de1_riscv ;
; Family ; Cyclone V ;
; Device ; 5CSEMA5F31C6 ;
; Timing Models ; Preliminary ;
; Logic utilization (in ALMs) ; 2,653 / 32,070 ( 8 % ) ;
; Total registers ; 2042 ;
; Logic utilization (in ALMs) ; 2,789 / 32,070 ( 9 % ) ;
; Total registers ; 1998 ;
; Total pins ; 204 / 457 ( 45 % ) ;
; Total virtual pins ; 0 ;
; Total block memory bits ; 82,944 / 4,065,280 ( 2 % ) ;
; Total block memory bits ; 1,067,008 / 4,065,280 ( 26 % ) ;
; Total DSP Blocks ; 10 / 87 ( 11 % ) ;
; Total HSSI RX PCSs ; 0 ;
; Total HSSI PMA RX Deserializers ; 0 ;
; Total HSSI TX PCSs ; 0 ;
; Total HSSI TX Channels ; 0 ;
; Total PLLs ; 0 / 6 ( 0 % ) ;
; Total PLLs ; 1 / 6 ( 17 % ) ;
; Total DLLs ; 0 / 4 ( 0 % ) ;
+---------------------------------+---------------------------------------------+
......@@ -67,7 +67,7 @@ applicable agreement for further details.
+-------------------+---------------------+
; Option ; Setting ;
+-------------------+---------------------+
; Start date & time ; 08/29/2021 18:50:58 ;
; Start date & time ; 08/30/2021 18:39:31 ;
; Main task ; Compilation ;
; Revision Name ; de1_riscv ;
+-------------------+---------------------+
......@@ -78,7 +78,7 @@ applicable agreement for further details.
+-------------------------------------+---------------------------------------+---------------+--------------+------------+
; Assignment Name ; Value ; Default Value ; Entity Name ; Section Id ;
+-------------------------------------+---------------------------------------+---------------+--------------+------------+
; COMPILER_SIGNATURE_ID ; 101574253398716.163023425830188 ; -- ; -- ; -- ;
; COMPILER_SIGNATURE_ID ; 621136229624.163031997154204 ; -- ; -- ; -- ;
; IP_TOOL_ENV ; mwpim ; -- ; clk100M ; -- ;
; IP_TOOL_ENV ; mwpim ; -- ; clk100M ; -- ;
; IP_TOOL_ENV ; mwpim ; -- ; clk100M_0002 ; -- ;
......@@ -93,6 +93,8 @@ applicable agreement for further details.
; IP_TOOL_NAME ; LPM_MULT ; -- ; -- ; -- ;
; IP_TOOL_NAME ; RAM: 2-PORT ; -- ; -- ; -- ;
; IP_TOOL_NAME ; FIFO ; -- ; -- ; -- ;
; IP_TOOL_NAME ; RAM: 1-PORT ; -- ; -- ; -- ;
; IP_TOOL_NAME ; RAM: 1-PORT ; -- ; -- ; -- ;
; IP_TOOL_NAME ; altera_pll ; -- ; clk100M ; -- ;
; IP_TOOL_NAME ; altera_pll ; -- ; clk100M ; -- ;
; IP_TOOL_NAME ; altera_pll ; -- ; clk100M_0002 ; -- ;
......@@ -107,6 +109,8 @@ applicable agreement for further details.
; IP_TOOL_VERSION ; 13.1 ; -- ; -- ; -- ;
; IP_TOOL_VERSION ; 13.1 ; -- ; -- ; -- ;
; IP_TOOL_VERSION ; 13.1 ; -- ; -- ; -- ;
; IP_TOOL_VERSION ; 13.1 ; -- ; -- ; -- ;
; IP_TOOL_VERSION ; 13.1 ; -- ; -- ; -- ;
; IP_TOOL_VERSION ; 13.1 ; -- ; clk100M ; -- ;
; IP_TOOL_VERSION ; 13.1 ; -- ; clk100M ; -- ;
; IP_TOOL_VERSION ; 13.1 ; -- ; clk100M_0002 ; -- ;
......@@ -125,6 +129,8 @@ applicable agreement for further details.
; MISC_FILE ; clk/clk100M_sim/clk100M.vo ; -- ; -- ; -- ;
; MISC_FILE ; regfile/regfile_2_bb.v ; -- ; -- ; -- ;
; MISC_FILE ; uart/uart_fifo_bb.v ; -- ; -- ; -- ;
; MISC_FILE ; ram/ram16kB_bb.v ; -- ; -- ; -- ;
; MISC_FILE ; ram/ram128kB_bb.v ; -- ; -- ; -- ;
; PARTITION_COLOR ; 16764057 ; -- ; -- ; Top ;
; PARTITION_FITTER_PRESERVATION_LEVEL ; PLACEMENT_AND_ROUTING ; -- ; -- ; Top ;
; PARTITION_NETLIST_TYPE ; SOURCE ; -- ; -- ; Top ;
......@@ -140,11 +146,11 @@ applicable agreement for further details.
+---------------------------+--------------+-------------------------+---------------------+------------------------------------+
; Module Name ; Elapsed Time ; Average Processors Used ; Peak Virtual Memory ; Total CPU Time (on all processors) ;
+---------------------------+--------------+-------------------------+---------------------+------------------------------------+
; Analysis & Synthesis ; 00:00:15 ; 1.6 ; 4881 MB ; 00:00:15 ;
; Fitter ; 00:00:47 ; 1.7 ; 6787 MB ; 00:01:22 ;
; Assembler ; 00:00:09 ; 1.0 ; 4803 MB ; 00:00:09 ;
; TimeQuest Timing Analyzer ; 00:00:14 ; 2.3 ; 5401 MB ; 00:00:25 ;
; Total ; 00:01:25 ; -- ; -- ; 00:02:11 ;
; Analysis & Synthesis ; 00:00:34 ; 1.0 ; 698 MB ; 00:00:33 ;
; Fitter ; 00:02:17 ; 1.4 ; 2347 MB ; 00:02:57 ;
; Assembler ; 00:00:19 ; 1.0 ; 673 MB ; 00:00:19 ;
; TimeQuest Timing Analyzer ; 00:00:46 ; 1.5 ; 1179 MB ; 00:01:03 ;
; Total ; 00:03:56 ; -- ; -- ; 00:04:52 ;
+---------------------------+--------------+-------------------------+---------------------+------------------------------------+
......@@ -153,10 +159,10 @@ applicable agreement for further details.
+---------------------------+------------------+-----------+------------+----------------+
; Module Name ; Machine Hostname ; OS Name ; OS Version ; Processor type ;
+---------------------------+------------------+-----------+------------+----------------+
; Analysis & Synthesis ; DESKTOP-I91JIJO ; Windows 7 ; 6.2 ; x86_64 ;
; Fitter ; DESKTOP-I91JIJO ; Windows 7 ; 6.2 ; x86_64 ;
; Assembler ; DESKTOP-I91JIJO ; Windows 7 ; 6.2 ; x86_64 ;
; TimeQuest Timing Analyzer ; DESKTOP-I91JIJO ; Windows 7 ; 6.2 ; x86_64 ;
; Analysis & Synthesis ; RG6MXLMTA6KAGXI ; Windows 7 ; 6.1 ; x86_64 ;
; Fitter ; RG6MXLMTA6KAGXI ; Windows 7 ; 6.1 ; x86_64 ;
; Assembler ; RG6MXLMTA6KAGXI ; Windows 7 ; 6.1 ; x86_64 ;
; TimeQuest Timing Analyzer ; RG6MXLMTA6KAGXI ; Windows 7 ; 6.1 ; x86_64 ;
+---------------------------+------------------+-----------+------------+----------------+
......
<sld_project_info>
<project>
<hash md5_digest_80b="a10354c7aacc91a72b47"/>
<hash md5_digest_80b="347fbbdd10ff5f21590c"/>
</project>
<file_info>
<file device="5CSEMA5F31C6" path="de1_riscv.sof" usercode="0xFFFFFFFF"/>
......
因为 它太大了无法显示 source diff 。你可以改为 查看blob
Analysis & Synthesis Status : Successful - Sun Aug 29 18:51:14 2021
Analysis & Synthesis Status : Successful - Mon Aug 30 18:40:06 2021
Quartus II 64-Bit Version : 13.1.0 Build 162 10/23/2013 SJ Full Version
Revision Name : de1_riscv
Top-level Entity Name : de1_riscv
Family : Cyclone V
Logic utilization (in ALMs) : N/A
Total registers : 1857
Total registers : 1839
Total pins : 204
Total virtual pins : 0
Total block memory bits : 83,465
Total block memory bits : 1,067,744
Total DSP Blocks : 10
Total HSSI RX PCSs : 0
Total HSSI PMA RX Deserializers : 0
Total HSSI TX PCSs : 0
Total HSSI TX Channels : 0
Total PLLs : 0
Total PLLs : 1
Total DLLs : 0
......@@ -511,4 +511,6 @@ set_global_assignment -name QIP_FILE clk/clk100M.qip
set_global_assignment -name SIP_FILE clk/clk100M.sip
set_global_assignment -name QIP_FILE regfile/regfile_2.qip
set_global_assignment -name QIP_FILE uart/uart_fifo.qip
set_global_assignment -name QIP_FILE ram/ram16kB.qip
set_global_assignment -name QIP_FILE ram/ram128kB.qip
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top
\ No newline at end of file
因为 它太大了无法显示 source diff 。你可以改为 查看blob
......@@ -2,52 +2,84 @@
TimeQuest Timing Analyzer Summary
------------------------------------------------------------
Type : Slow 1100mV 85C Model Setup 'CLOCK_50'
Slack : 3.899
Type : Slow 1100mV 85C Model Setup 'clk100|clk100m_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk'
Slack : 6.023
TNS : 0.000
Type : Slow 1100mV 85C Model Hold 'CLOCK_50'
Slack : 0.265
Type : Slow 1100mV 85C Model Hold 'clk100|clk100m_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk'
Slack : 0.242
TNS : 0.000
Type : Slow 1100mV 85C Model Minimum Pulse Width 'clk100|clk100m_inst|altera_pll_i|general[0].gpll~FRACTIONAL_PLL|vcoph[0]'
Slack : 1.666
TNS : 0.000
Type : Slow 1100mV 85C Model Minimum Pulse Width 'clk100|clk100m_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk'
Slack : 8.761
TNS : 0.000
Type : Slow 1100mV 85C Model Minimum Pulse Width 'CLOCK_50'
Slack : 8.877
Slack : 9.670
TNS : 0.000
Type : Slow 1100mV 0C Model Setup 'clk100|clk100m_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk'
Slack : 5.710
TNS : 0.000
Type : Slow 1100mV 0C Model Hold 'clk100|clk100m_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk'
Slack : 0.220
TNS : 0.000
Type : Slow 1100mV 0C Model Setup 'CLOCK_50'
Slack : 3.693
Type : Slow 1100mV 0C Model Minimum Pulse Width 'clk100|clk100m_inst|altera_pll_i|general[0].gpll~FRACTIONAL_PLL|vcoph[0]'
Slack : 1.666
TNS : 0.000
Type : Slow 1100mV 0C Model Hold 'CLOCK_50'
Slack : 0.255
Type : Slow 1100mV 0C Model Minimum Pulse Width 'clk100|clk100m_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk'
Slack : 8.736
TNS : 0.000
Type : Slow 1100mV 0C Model Minimum Pulse Width 'CLOCK_50'
Slack : 8.902
Slack : 9.673
TNS : 0.000
Type : Fast 1100mV 85C Model Setup 'CLOCK_50'
Slack : 10.143
Type : Fast 1100mV 85C Model Setup 'clk100|clk100m_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk'
Slack : 11.255
TNS : 0.000
Type : Fast 1100mV 85C Model Hold 'CLOCK_50'
Slack : 0.166
Type : Fast 1100mV 85C Model Hold 'clk100|clk100m_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk'
Slack : 0.148
TNS : 0.000
Type : Fast 1100mV 85C Model Minimum Pulse Width 'clk100|clk100m_inst|altera_pll_i|general[0].gpll~FRACTIONAL_PLL|vcoph[0]'
Slack : 1.666
TNS : 0.000
Type : Fast 1100mV 85C Model Minimum Pulse Width 'clk100|clk100m_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk'
Slack : 8.881
TNS : 0.000
Type : Fast 1100mV 85C Model Minimum Pulse Width 'CLOCK_50'
Slack : 8.476
Slack : 9.336
TNS : 0.000
Type : Fast 1100mV 0C Model Setup 'clk100|clk100m_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk'
Slack : 11.824
TNS : 0.000
Type : Fast 1100mV 0C Model Hold 'clk100|clk100m_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk'
Slack : 0.134
TNS : 0.000
Type : Fast 1100mV 0C Model Setup 'CLOCK_50'
Slack : 10.761
Type : Fast 1100mV 0C Model Minimum Pulse Width 'clk100|clk100m_inst|altera_pll_i|general[0].gpll~FRACTIONAL_PLL|vcoph[0]'
Slack : 1.666
TNS : 0.000
Type : Fast 1100mV 0C Model Hold 'CLOCK_50'
Slack : 0.145
Type : Fast 1100mV 0C Model Minimum Pulse Width 'clk100|clk100m_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk'
Slack : 8.884
TNS : 0.000
Type : Fast 1100mV 0C Model Minimum Pulse Width 'CLOCK_50'
Slack : 8.433
Slack : 9.286
TNS : 0.000
------------------------------------------------------------
......@@ -3,7 +3,7 @@
// This code is generated by Terasic System Builder
//=======================================================
`define USECLOCK50
`define USECLOCK50_1
module de1_riscv(
......@@ -136,13 +136,13 @@ module de1_riscv(
assign bReadData =
((readaddr & 32'hffffff00) == 32'hF0000000) ? bReadDataKey : (
((readaddr & 32'hffffc000) == 32'h00000000) ? bReadDataRam : (
((readaddr & 32'hff000000) == 32'h00000000) ? bReadDataRam : (
((readaddr & 32'hffffff00) == 32'hF0000100) ? bReadDataUart : (32'hffffffff)
)
);
wire [10:0] ramaddr;
assign ramaddr = wWrite?bWriteAddr[12:2]:bReadAddr[12:2];
wire [29:0] ramaddr;
assign ramaddr = wWrite?bWriteAddr[31:2]:bReadAddr[31:2];
wire [4:0] regno;
wire [3:0] regena;
......@@ -182,7 +182,7 @@ module de1_riscv(
regfile regs(regno, regena, wClk, regwrdata, regwren, regrddata);
regfile regs2(regno2, regena2, wClk, regwrdata2, regwren2, regrddata2);
ram8kb ram(ramaddr, ~bWriteMask, wClk, bWriteData, ((bWriteAddr & 32'hffffc000) == 0)?wWrite:1'b0, bReadDataRam);
ram128kB ram(ramaddr, ~bWriteMask, wClk, bWriteData, ((bWriteAddr & 32'hff000000) == 0)?wWrite:1'b0, bReadDataRam);
riscv_core core(wClk, nwReset, wWrite, bWriteAddr, bWriteData, bWriteMask, wRead, bReadAddr, bReadData,
regno, regena, regwrdata, regwren, (lastregno == 0) ? 0 : regrddata,
regno2, regena2, regwrdata2, regwren2, (lastregno2 == 0) ? 0 : regrddata2
......
set_global_assignment -name IP_TOOL_NAME "RAM: 1-PORT"
set_global_assignment -name IP_TOOL_VERSION "13.1"
set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "ram128kB.v"]
set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "ram128kB_bb.v"]
// megafunction wizard: %RAM: 1-PORT%
// GENERATION: STANDARD
// VERSION: WM1.0
// MODULE: altsyncram
// ============================================================
// File Name: ram128kB.v
// Megafunction Name(s):
// altsyncram
//
// Simulation Library Files(s):
// altera_mf
// ============================================================
// ************************************************************
// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE!
//
// 13.1.0 Build 162 10/23/2013 SJ Full Version
// ************************************************************
//Copyright (C) 1991-2013 Altera Corporation
//Your use of Altera Corporation's design tools, logic functions
//and other software and tools, and its AMPP partner logic
//functions, and any output files from any of the foregoing
//(including device programming or simulation files), and any
//associated documentation or information are expressly subject
//to the terms and conditions of the Altera Program License
//Subscription Agreement, Altera MegaCore Function License
//Agreement, or other applicable license agreement, including,
//without limitation, that your use is for the sole purpose of
//programming logic devices manufactured by Altera and sold by
//Altera or its authorized distributors. Please refer to the
//applicable agreement for further details.
// synopsys translate_off
`timescale 1 ps / 1 ps
// synopsys translate_on
module ram128kB (
address,
byteena,
clock,
data,
wren,
q);
input [14:0] address;
input [3:0] byteena;
input clock;
input [31:0] data;
input wren;
output [31:0] q;
`ifndef ALTERA_RESERVED_QIS
// synopsys translate_off
`endif
tri1 [3:0] byteena;
tri1 clock;
`ifndef ALTERA_RESERVED_QIS
// synopsys translate_on
`endif
wire [31:0] sub_wire0;
wire [31:0] q = sub_wire0[31:0];
altsyncram altsyncram_component (
.address_a (address),
.byteena_a (byteena),
.clock0 (clock),
.data_a (data),
.wren_a (wren),
.q_a (sub_wire0),
.aclr0 (1'b0),
.aclr1 (1'b0),
.address_b (1'b1),
.addressstall_a (1'b0),
.addressstall_b (1'b0),
.byteena_b (1'b1),
.clock1 (1'b1),
.clocken0 (1'b1),
.clocken1 (1'b1),
.clocken2 (1'b1),
.clocken3 (1'b1),
.data_b (1'b1),
.eccstatus (),
.q_b (),
.rden_a (1'b1),
.rden_b (1'b1),
.wren_b (1'b0));
defparam
altsyncram_component.byte_size = 8,
altsyncram_component.clock_enable_input_a = "BYPASS",
altsyncram_component.clock_enable_output_a = "BYPASS",
altsyncram_component.init_file = "../test_code/test.mif",
altsyncram_component.intended_device_family = "Cyclone V",
altsyncram_component.lpm_hint = "ENABLE_RUNTIME_MOD=NO",
altsyncram_component.lpm_type = "altsyncram",
altsyncram_component.numwords_a = 32768,
altsyncram_component.operation_mode = "SINGLE_PORT",
altsyncram_component.outdata_aclr_a = "NONE",
altsyncram_component.outdata_reg_a = "UNREGISTERED",
altsyncram_component.power_up_uninitialized = "FALSE",
altsyncram_component.read_during_write_mode_port_a = "NEW_DATA_NO_NBE_READ",
altsyncram_component.widthad_a = 15,
altsyncram_component.width_a = 32,
altsyncram_component.width_byteena_a = 4;
endmodule
// ============================================================
// CNX file retrieval info
// ============================================================
// Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0"
// Retrieval info: PRIVATE: AclrAddr NUMERIC "0"
// Retrieval info: PRIVATE: AclrByte NUMERIC "0"
// Retrieval info: PRIVATE: AclrData NUMERIC "0"
// Retrieval info: PRIVATE: AclrOutput NUMERIC "0"
// Retrieval info: PRIVATE: BYTE_ENABLE NUMERIC "1"
// Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8"
// Retrieval info: PRIVATE: BlankMemory NUMERIC "0"
// Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0"
// Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0"
// Retrieval info: PRIVATE: Clken NUMERIC "0"
// Retrieval info: PRIVATE: DataBusSeparated NUMERIC "1"
// Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0"
// Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A"
// Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0"
// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone V"
// Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0"
// Retrieval info: PRIVATE: JTAG_ID STRING "NONE"
// Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0"
// Retrieval info: PRIVATE: MIFfilename STRING "../test_code/test.mif"
// Retrieval info: PRIVATE: NUMWORDS_A NUMERIC "32768"
// Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0"
// Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_A NUMERIC "3"
// Retrieval info: PRIVATE: RegAddr NUMERIC "1"
// Retrieval info: PRIVATE: RegData NUMERIC "1"
// Retrieval info: PRIVATE: RegOutput NUMERIC "0"
// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0"
// Retrieval info: PRIVATE: SingleClock NUMERIC "1"
// Retrieval info: PRIVATE: UseDQRAM NUMERIC "1"
// Retrieval info: PRIVATE: WRCONTROL_ACLR_A NUMERIC "0"
// Retrieval info: PRIVATE: WidthAddr NUMERIC "15"
// Retrieval info: PRIVATE: WidthData NUMERIC "32"
// Retrieval info: PRIVATE: rden NUMERIC "0"
// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all
// Retrieval info: CONSTANT: BYTE_SIZE NUMERIC "8"
// Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS"
// Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS"
// Retrieval info: CONSTANT: INIT_FILE STRING "../test_code/test.mif"
// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone V"
// Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO"
// Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram"
// Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "32768"
// Retrieval info: CONSTANT: OPERATION_MODE STRING "SINGLE_PORT"
// Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE"
// Retrieval info: CONSTANT: OUTDATA_REG_A STRING "UNREGISTERED"
// Retrieval info: CONSTANT: POWER_UP_UNINITIALIZED STRING "FALSE"
// Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_A STRING "NEW_DATA_NO_NBE_READ"
// Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "15"
// Retrieval info: CONSTANT: WIDTH_A NUMERIC "32"
// Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "4"
// Retrieval info: USED_PORT: address 0 0 15 0 INPUT NODEFVAL "address[14..0]"
// Retrieval info: USED_PORT: byteena 0 0 4 0 INPUT VCC "byteena[3..0]"
// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT VCC "clock"
// Retrieval info: USED_PORT: data 0 0 32 0 INPUT NODEFVAL "data[31..0]"
// Retrieval info: USED_PORT: q 0 0 32 0 OUTPUT NODEFVAL "q[31..0]"
// Retrieval info: USED_PORT: wren 0 0 0 0 INPUT NODEFVAL "wren"
// Retrieval info: CONNECT: @address_a 0 0 15 0 address 0 0 15 0
// Retrieval info: CONNECT: @byteena_a 0 0 4 0 byteena 0 0 4 0
// Retrieval info: CONNECT: @clock0 0 0 0 0 clock 0 0 0 0
// Retrieval info: CONNECT: @data_a 0 0 32 0 data 0 0 32 0
// Retrieval info: CONNECT: @wren_a 0 0 0 0 wren 0 0 0 0
// Retrieval info: CONNECT: q 0 0 32 0 @q_a 0 0 32 0
// Retrieval info: GEN_FILE: TYPE_NORMAL ram128kB.v TRUE
// Retrieval info: GEN_FILE: TYPE_NORMAL ram128kB.inc FALSE
// Retrieval info: GEN_FILE: TYPE_NORMAL ram128kB.cmp FALSE
// Retrieval info: GEN_FILE: TYPE_NORMAL ram128kB.bsf FALSE
// Retrieval info: GEN_FILE: TYPE_NORMAL ram128kB_inst.v FALSE
// Retrieval info: GEN_FILE: TYPE_NORMAL ram128kB_bb.v TRUE
// Retrieval info: LIB_FILE: altera_mf
// megafunction wizard: %RAM: 1-PORT%VBB%
// GENERATION: STANDARD
// VERSION: WM1.0
// MODULE: altsyncram
// ============================================================
// File Name: ram128kB.v
// Megafunction Name(s):
// altsyncram
//
// Simulation Library Files(s):
// altera_mf
// ============================================================
// ************************************************************
// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE!
//
// 13.1.0 Build 162 10/23/2013 SJ Full Version
// ************************************************************
//Copyright (C) 1991-2013 Altera Corporation
//Your use of Altera Corporation's design tools, logic functions
//and other software and tools, and its AMPP partner logic
//functions, and any output files from any of the foregoing
//(including device programming or simulation files), and any
//associated documentation or information are expressly subject
//to the terms and conditions of the Altera Program License
//Subscription Agreement, Altera MegaCore Function License
//Agreement, or other applicable license agreement, including,
//without limitation, that your use is for the sole purpose of
//programming logic devices manufactured by Altera and sold by
//Altera or its authorized distributors. Please refer to the
//applicable agreement for further details.
module ram128kB (
address,
byteena,
clock,
data,
wren,
q);
input [14:0] address;
input [3:0] byteena;
input clock;
input [31:0] data;
input wren;
output [31:0] q;
`ifndef ALTERA_RESERVED_QIS
// synopsys translate_off
`endif
tri1 [3:0] byteena;
tri1 clock;
`ifndef ALTERA_RESERVED_QIS
// synopsys translate_on
`endif
endmodule
// ============================================================
// CNX file retrieval info
// ============================================================
// Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0"
// Retrieval info: PRIVATE: AclrAddr NUMERIC "0"
// Retrieval info: PRIVATE: AclrByte NUMERIC "0"
// Retrieval info: PRIVATE: AclrData NUMERIC "0"
// Retrieval info: PRIVATE: AclrOutput NUMERIC "0"
// Retrieval info: PRIVATE: BYTE_ENABLE NUMERIC "1"
// Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8"
// Retrieval info: PRIVATE: BlankMemory NUMERIC "0"
// Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0"
// Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0"
// Retrieval info: PRIVATE: Clken NUMERIC "0"
// Retrieval info: PRIVATE: DataBusSeparated NUMERIC "1"
// Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0"
// Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A"
// Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0"
// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone V"
// Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0"
// Retrieval info: PRIVATE: JTAG_ID STRING "NONE"
// Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0"
// Retrieval info: PRIVATE: MIFfilename STRING "../test_code/test.mif"
// Retrieval info: PRIVATE: NUMWORDS_A NUMERIC "32768"
// Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0"
// Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_A NUMERIC "3"
// Retrieval info: PRIVATE: RegAddr NUMERIC "1"
// Retrieval info: PRIVATE: RegData NUMERIC "1"
// Retrieval info: PRIVATE: RegOutput NUMERIC "0"
// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0"
// Retrieval info: PRIVATE: SingleClock NUMERIC "1"
// Retrieval info: PRIVATE: UseDQRAM NUMERIC "1"
// Retrieval info: PRIVATE: WRCONTROL_ACLR_A NUMERIC "0"
// Retrieval info: PRIVATE: WidthAddr NUMERIC "15"
// Retrieval info: PRIVATE: WidthData NUMERIC "32"
// Retrieval info: PRIVATE: rden NUMERIC "0"
// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all
// Retrieval info: CONSTANT: BYTE_SIZE NUMERIC "8"
// Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS"
// Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS"
// Retrieval info: CONSTANT: INIT_FILE STRING "../test_code/test.mif"
// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone V"
// Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO"
// Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram"
// Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "32768"
// Retrieval info: CONSTANT: OPERATION_MODE STRING "SINGLE_PORT"
// Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE"
// Retrieval info: CONSTANT: OUTDATA_REG_A STRING "UNREGISTERED"
// Retrieval info: CONSTANT: POWER_UP_UNINITIALIZED STRING "FALSE"
// Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_A STRING "NEW_DATA_NO_NBE_READ"
// Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "15"
// Retrieval info: CONSTANT: WIDTH_A NUMERIC "32"
// Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "4"
// Retrieval info: USED_PORT: address 0 0 15 0 INPUT NODEFVAL "address[14..0]"
// Retrieval info: USED_PORT: byteena 0 0 4 0 INPUT VCC "byteena[3..0]"
// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT VCC "clock"
// Retrieval info: USED_PORT: data 0 0 32 0 INPUT NODEFVAL "data[31..0]"
// Retrieval info: USED_PORT: q 0 0 32 0 OUTPUT NODEFVAL "q[31..0]"
// Retrieval info: USED_PORT: wren 0 0 0 0 INPUT NODEFVAL "wren"
// Retrieval info: CONNECT: @address_a 0 0 15 0 address 0 0 15 0
// Retrieval info: CONNECT: @byteena_a 0 0 4 0 byteena 0 0 4 0
// Retrieval info: CONNECT: @clock0 0 0 0 0 clock 0 0 0 0
// Retrieval info: CONNECT: @data_a 0 0 32 0 data 0 0 32 0
// Retrieval info: CONNECT: @wren_a 0 0 0 0 wren 0 0 0 0
// Retrieval info: CONNECT: q 0 0 32 0 @q_a 0 0 32 0
// Retrieval info: GEN_FILE: TYPE_NORMAL ram128kB.v TRUE
// Retrieval info: GEN_FILE: TYPE_NORMAL ram128kB.inc FALSE
// Retrieval info: GEN_FILE: TYPE_NORMAL ram128kB.cmp FALSE
// Retrieval info: GEN_FILE: TYPE_NORMAL ram128kB.bsf FALSE
// Retrieval info: GEN_FILE: TYPE_NORMAL ram128kB_inst.v FALSE
// Retrieval info: GEN_FILE: TYPE_NORMAL ram128kB_bb.v TRUE
// Retrieval info: LIB_FILE: altera_mf
set_global_assignment -name IP_TOOL_NAME "RAM: 1-PORT"
set_global_assignment -name IP_TOOL_VERSION "13.1"
set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "ram16kB.v"]
set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "ram16kB_bb.v"]
// megafunction wizard: %RAM: 1-PORT%
// GENERATION: STANDARD
// VERSION: WM1.0
// MODULE: altsyncram
// ============================================================
// File Name: ram16kB.v
// Megafunction Name(s):
// altsyncram
//
// Simulation Library Files(s):
// altera_mf
// ============================================================
// ************************************************************
// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE!
//
// 13.1.0 Build 162 10/23/2013 SJ Full Version
// ************************************************************
//Copyright (C) 1991-2013 Altera Corporation
//Your use of Altera Corporation's design tools, logic functions
//and other software and tools, and its AMPP partner logic
//functions, and any output files from any of the foregoing
//(including device programming or simulation files), and any
//associated documentation or information are expressly subject
//to the terms and conditions of the Altera Program License
//Subscription Agreement, Altera MegaCore Function License
//Agreement, or other applicable license agreement, including,
//without limitation, that your use is for the sole purpose of
//programming logic devices manufactured by Altera and sold by
//Altera or its authorized distributors. Please refer to the
//applicable agreement for further details.
// synopsys translate_off
`timescale 1 ps / 1 ps
// synopsys translate_on
module ram16kB (
address,
byteena,
clock,
data,
wren,
q);
input [11:0] address;
input [3:0] byteena;
input clock;
input [31:0] data;
input wren;
output [31:0] q;
`ifndef ALTERA_RESERVED_QIS
// synopsys translate_off
`endif
tri1 [3:0] byteena;
tri1 clock;
`ifndef ALTERA_RESERVED_QIS
// synopsys translate_on
`endif
wire [31:0] sub_wire0;
wire [31:0] q = sub_wire0[31:0];
altsyncram altsyncram_component (
.address_a (address),
.byteena_a (byteena),
.clock0 (clock),
.data_a (data),
.wren_a (wren),
.q_a (sub_wire0),
.aclr0 (1'b0),
.aclr1 (1'b0),
.address_b (1'b1),
.addressstall_a (1'b0),
.addressstall_b (1'b0),
.byteena_b (1'b1),
.clock1 (1'b1),
.clocken0 (1'b1),
.clocken1 (1'b1),
.clocken2 (1'b1),
.clocken3 (1'b1),
.data_b (1'b1),
.eccstatus (),
.q_b (),
.rden_a (1'b1),
.rden_b (1'b1),
.wren_b (1'b0));
defparam
altsyncram_component.byte_size = 8,
altsyncram_component.clock_enable_input_a = "BYPASS",
altsyncram_component.clock_enable_output_a = "BYPASS",
altsyncram_component.init_file = "../test_code/test.mif",
altsyncram_component.intended_device_family = "Cyclone V",
altsyncram_component.lpm_hint = "ENABLE_RUNTIME_MOD=NO",
altsyncram_component.lpm_type = "altsyncram",
altsyncram_component.numwords_a = 4096,
altsyncram_component.operation_mode = "SINGLE_PORT",
altsyncram_component.outdata_aclr_a = "NONE",
altsyncram_component.outdata_reg_a = "UNREGISTERED",
altsyncram_component.power_up_uninitialized = "FALSE",
altsyncram_component.read_during_write_mode_port_a = "NEW_DATA_NO_NBE_READ",
altsyncram_component.widthad_a = 12,
altsyncram_component.width_a = 32,
altsyncram_component.width_byteena_a = 4;
endmodule
// ============================================================
// CNX file retrieval info
// ============================================================
// Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0"
// Retrieval info: PRIVATE: AclrAddr NUMERIC "0"
// Retrieval info: PRIVATE: AclrByte NUMERIC "0"
// Retrieval info: PRIVATE: AclrData NUMERIC "0"
// Retrieval info: PRIVATE: AclrOutput NUMERIC "0"
// Retrieval info: PRIVATE: BYTE_ENABLE NUMERIC "1"
// Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8"
// Retrieval info: PRIVATE: BlankMemory NUMERIC "0"
// Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0"
// Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0"
// Retrieval info: PRIVATE: Clken NUMERIC "0"
// Retrieval info: PRIVATE: DataBusSeparated NUMERIC "1"
// Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0"
// Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A"
// Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0"
// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone V"
// Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0"
// Retrieval info: PRIVATE: JTAG_ID STRING "NONE"
// Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0"
// Retrieval info: PRIVATE: MIFfilename STRING "../test_code/test.mif"
// Retrieval info: PRIVATE: NUMWORDS_A NUMERIC "4096"
// Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0"
// Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_A NUMERIC "3"
// Retrieval info: PRIVATE: RegAddr NUMERIC "1"
// Retrieval info: PRIVATE: RegData NUMERIC "1"
// Retrieval info: PRIVATE: RegOutput NUMERIC "0"
// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0"
// Retrieval info: PRIVATE: SingleClock NUMERIC "1"
// Retrieval info: PRIVATE: UseDQRAM NUMERIC "1"
// Retrieval info: PRIVATE: WRCONTROL_ACLR_A NUMERIC "0"
// Retrieval info: PRIVATE: WidthAddr NUMERIC "12"
// Retrieval info: PRIVATE: WidthData NUMERIC "32"
// Retrieval info: PRIVATE: rden NUMERIC "0"
// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all
// Retrieval info: CONSTANT: BYTE_SIZE NUMERIC "8"
// Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS"
// Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS"
// Retrieval info: CONSTANT: INIT_FILE STRING "../test_code/test.mif"
// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone V"
// Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO"
// Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram"
// Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "4096"
// Retrieval info: CONSTANT: OPERATION_MODE STRING "SINGLE_PORT"
// Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE"
// Retrieval info: CONSTANT: OUTDATA_REG_A STRING "UNREGISTERED"
// Retrieval info: CONSTANT: POWER_UP_UNINITIALIZED STRING "FALSE"
// Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_A STRING "NEW_DATA_NO_NBE_READ"
// Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "12"
// Retrieval info: CONSTANT: WIDTH_A NUMERIC "32"
// Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "4"
// Retrieval info: USED_PORT: address 0 0 12 0 INPUT NODEFVAL "address[11..0]"
// Retrieval info: USED_PORT: byteena 0 0 4 0 INPUT VCC "byteena[3..0]"
// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT VCC "clock"
// Retrieval info: USED_PORT: data 0 0 32 0 INPUT NODEFVAL "data[31..0]"
// Retrieval info: USED_PORT: q 0 0 32 0 OUTPUT NODEFVAL "q[31..0]"
// Retrieval info: USED_PORT: wren 0 0 0 0 INPUT NODEFVAL "wren"
// Retrieval info: CONNECT: @address_a 0 0 12 0 address 0 0 12 0
// Retrieval info: CONNECT: @byteena_a 0 0 4 0 byteena 0 0 4 0
// Retrieval info: CONNECT: @clock0 0 0 0 0 clock 0 0 0 0
// Retrieval info: CONNECT: @data_a 0 0 32 0 data 0 0 32 0
// Retrieval info: CONNECT: @wren_a 0 0 0 0 wren 0 0 0 0
// Retrieval info: CONNECT: q 0 0 32 0 @q_a 0 0 32 0
// Retrieval info: GEN_FILE: TYPE_NORMAL ram16kB.v TRUE
// Retrieval info: GEN_FILE: TYPE_NORMAL ram16kB.inc FALSE
// Retrieval info: GEN_FILE: TYPE_NORMAL ram16kB.cmp FALSE
// Retrieval info: GEN_FILE: TYPE_NORMAL ram16kB.bsf FALSE
// Retrieval info: GEN_FILE: TYPE_NORMAL ram16kB_inst.v FALSE
// Retrieval info: GEN_FILE: TYPE_NORMAL ram16kB_bb.v TRUE
// Retrieval info: LIB_FILE: altera_mf
// megafunction wizard: %RAM: 1-PORT%VBB%
// GENERATION: STANDARD
// VERSION: WM1.0
// MODULE: altsyncram
// ============================================================
// File Name: ram16kB.v
// Megafunction Name(s):
// altsyncram
//
// Simulation Library Files(s):
// altera_mf
// ============================================================
// ************************************************************
// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE!
//
// 13.1.0 Build 162 10/23/2013 SJ Full Version
// ************************************************************
//Copyright (C) 1991-2013 Altera Corporation
//Your use of Altera Corporation's design tools, logic functions
//and other software and tools, and its AMPP partner logic
//functions, and any output files from any of the foregoing
//(including device programming or simulation files), and any
//associated documentation or information are expressly subject
//to the terms and conditions of the Altera Program License
//Subscription Agreement, Altera MegaCore Function License
//Agreement, or other applicable license agreement, including,
//without limitation, that your use is for the sole purpose of
//programming logic devices manufactured by Altera and sold by
//Altera or its authorized distributors. Please refer to the
//applicable agreement for further details.
module ram16kB (
address,
byteena,
clock,
data,
wren,
q);
input [11:0] address;
input [3:0] byteena;
input clock;
input [31:0] data;
input wren;
output [31:0] q;
`ifndef ALTERA_RESERVED_QIS
// synopsys translate_off
`endif
tri1 [3:0] byteena;
tri1 clock;
`ifndef ALTERA_RESERVED_QIS
// synopsys translate_on
`endif
endmodule
// ============================================================
// CNX file retrieval info
// ============================================================
// Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0"
// Retrieval info: PRIVATE: AclrAddr NUMERIC "0"
// Retrieval info: PRIVATE: AclrByte NUMERIC "0"
// Retrieval info: PRIVATE: AclrData NUMERIC "0"
// Retrieval info: PRIVATE: AclrOutput NUMERIC "0"
// Retrieval info: PRIVATE: BYTE_ENABLE NUMERIC "1"
// Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8"
// Retrieval info: PRIVATE: BlankMemory NUMERIC "0"
// Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0"
// Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0"
// Retrieval info: PRIVATE: Clken NUMERIC "0"
// Retrieval info: PRIVATE: DataBusSeparated NUMERIC "1"
// Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0"
// Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A"
// Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0"
// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone V"
// Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0"
// Retrieval info: PRIVATE: JTAG_ID STRING "NONE"
// Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0"
// Retrieval info: PRIVATE: MIFfilename STRING "../test_code/test.mif"
// Retrieval info: PRIVATE: NUMWORDS_A NUMERIC "4096"
// Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0"
// Retrieval info: PRIVATE: READ_DURING_WRITE_MODE_PORT_A NUMERIC "3"
// Retrieval info: PRIVATE: RegAddr NUMERIC "1"
// Retrieval info: PRIVATE: RegData NUMERIC "1"
// Retrieval info: PRIVATE: RegOutput NUMERIC "0"
// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0"
// Retrieval info: PRIVATE: SingleClock NUMERIC "1"
// Retrieval info: PRIVATE: UseDQRAM NUMERIC "1"
// Retrieval info: PRIVATE: WRCONTROL_ACLR_A NUMERIC "0"
// Retrieval info: PRIVATE: WidthAddr NUMERIC "12"
// Retrieval info: PRIVATE: WidthData NUMERIC "32"
// Retrieval info: PRIVATE: rden NUMERIC "0"
// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all
// Retrieval info: CONSTANT: BYTE_SIZE NUMERIC "8"
// Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS"
// Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS"
// Retrieval info: CONSTANT: INIT_FILE STRING "../test_code/test.mif"
// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone V"
// Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO"
// Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram"
// Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "4096"
// Retrieval info: CONSTANT: OPERATION_MODE STRING "SINGLE_PORT"
// Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE"
// Retrieval info: CONSTANT: OUTDATA_REG_A STRING "UNREGISTERED"
// Retrieval info: CONSTANT: POWER_UP_UNINITIALIZED STRING "FALSE"
// Retrieval info: CONSTANT: READ_DURING_WRITE_MODE_PORT_A STRING "NEW_DATA_NO_NBE_READ"
// Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "12"
// Retrieval info: CONSTANT: WIDTH_A NUMERIC "32"
// Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "4"
// Retrieval info: USED_PORT: address 0 0 12 0 INPUT NODEFVAL "address[11..0]"
// Retrieval info: USED_PORT: byteena 0 0 4 0 INPUT VCC "byteena[3..0]"
// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT VCC "clock"
// Retrieval info: USED_PORT: data 0 0 32 0 INPUT NODEFVAL "data[31..0]"
// Retrieval info: USED_PORT: q 0 0 32 0 OUTPUT NODEFVAL "q[31..0]"
// Retrieval info: USED_PORT: wren 0 0 0 0 INPUT NODEFVAL "wren"
// Retrieval info: CONNECT: @address_a 0 0 12 0 address 0 0 12 0
// Retrieval info: CONNECT: @byteena_a 0 0 4 0 byteena 0 0 4 0
// Retrieval info: CONNECT: @clock0 0 0 0 0 clock 0 0 0 0
// Retrieval info: CONNECT: @data_a 0 0 32 0 data 0 0 32 0
// Retrieval info: CONNECT: @wren_a 0 0 0 0 wren 0 0 0 0
// Retrieval info: CONNECT: q 0 0 32 0 @q_a 0 0 32 0
// Retrieval info: GEN_FILE: TYPE_NORMAL ram16kB.v TRUE
// Retrieval info: GEN_FILE: TYPE_NORMAL ram16kB.inc FALSE
// Retrieval info: GEN_FILE: TYPE_NORMAL ram16kB.cmp FALSE
// Retrieval info: GEN_FILE: TYPE_NORMAL ram16kB.bsf FALSE
// Retrieval info: GEN_FILE: TYPE_NORMAL ram16kB_inst.v FALSE
// Retrieval info: GEN_FILE: TYPE_NORMAL ram16kB_bb.v TRUE
// Retrieval info: LIB_FILE: altera_mf
因为 它太大了无法显示 source diff 。你可以改为 查看blob
......@@ -90,7 +90,8 @@ module uart_ctrl(
reg [15:0] lastdiv;
reg [15:0] newdiv;
reg [2:0] ctrlstate;
reg [7:0] ctrlstate;
reg [15:0] waitclk;
always @(posedge wClk)
if (~nwReset) begin
uart_read <= 1'b0;
......@@ -101,6 +102,7 @@ module uart_ctrl(
recv_buf_data <= 8'b0;
uart_write_data <= 16'b0;
ctrlstate <= 0;
waitclk <= 0;
lastdiv <= 50000000 / 38400;
end else begin
uart_read <= 1'b0;
......@@ -123,7 +125,7 @@ module uart_ctrl(
uart_write <= 1'b1;
uart_write_data <= newdiv;
lastdiv <= newdiv;
ctrlstate <= 4;
ctrlstate <= 1;
end
end else if (ctrlstate == 1) begin
ctrlstate <= 0;
......@@ -133,8 +135,6 @@ module uart_ctrl(
recv_buf_data <= uart_read_data[7:0];
recv_buf_write <= 1'b1;
ctrlstate <= 0;
end else if (ctrlstate == 4) begin
ctrlstate <= 0;
end
end
......@@ -147,7 +147,7 @@ module uart_ctrl(
[16] -- recv buffer empty
[26:17] -- recv buffer used
*/
assign ctl_state = {5'b0, recv_buf_used, recv_buf_empty, 5'b0, send_buf_used, send_buf_full};
assign ctl_state = {4'b0, recv_buf_used, recv_buf_full, recv_buf_empty, 4'b0, send_buf_used, send_buf_empty, send_buf_full};
/* 读命令处理 */
reg [31:0] readdata;
......
......@@ -51,7 +51,7 @@ DEFINE_GUID(CLSID_HDL4SE_RISCV_RAM, 0xee3409b2, 0x6d04, 0x42b3, 0xa4, 0x4d, 0x7f
// {2E577C6B-2FF1-425E-90B3-947EB523B863}
DEFINE_GUID(CLSID_HDL4SE_RISCV_REGFILE, 0x2e577c6b, 0x2ff1, 0x425e, 0x90, 0xb3, 0x94, 0x7e, 0xb5, 0x23, 0xb8, 0x63);
#define RAMSIZE 2048
#define RAMSIZE 32768
#endif
......
......@@ -92,8 +92,8 @@ enum riscv_core_state {
RISCVSTATE_INIT_REGX2,
RISCVSTATE_READ_INST,
RISCVSTATE_READ_REGS,
RISCVSTATE_WRITE_RD,
RISCVSTATE_EXEC_INST,
RISCVSTATE_WRITE_RD,
RISCVSTATE_WAIT_LD,
RISCVSTATE_WAIT_ST,
RISCVSTATE_WAIT_DIV
......@@ -165,6 +165,12 @@ DEFINE_FUNC(riscv_core_gen_ldaddr, "state, pc, instr, regrddata") {
imm = sign_expand(imm, 11);
rdaddr = rs1 + imm;
vput(ldaddr, rdaddr);
if (rdaddr & 3) {
unsigned int func3 = (instr >> 12) & 0x7;
if (func3 == 2) {
printf("read a unaligned addr %08x, %08x, %d, %08x, %08x\n", vget(pc), instr, rdaddr & 3, rs1, imm);
}
}
}
}
} END_DEFINE_FUNC
......@@ -463,7 +469,7 @@ DEFINE_FUNC(riscv_core_gen_dstreg, "state, instr, ldaddr, readreg, bReadData, pc
case 1: v = (v >> 8) & 0xffff; break;
case 2: v = (v >> 16) & 0xffff; break;
case 3: {
printf("No support for load 16bit in more than one word\n");
printf("No support for load 16bit in more than one word[pc=%08x, instr=%08x, ldaddr=%d]\n", vget(pc), instr, ldaddr);
exit(-8);
}break;
}
......@@ -472,7 +478,7 @@ DEFINE_FUNC(riscv_core_gen_dstreg, "state, instr, ldaddr, readreg, bReadData, pc
break;
case 2:/*lw*/
if (ldaddr != 0) {
printf("No support for load 16bit in more than one word\n");
printf("No support for load 32bit in more than one word[pc=%08x, instr=%08x, ldaddr=%d]\n", vget(pc), instr, ldaddr);
exit(-9);
}
RISCV_SETDSTREG(readreg, v);
......@@ -492,7 +498,7 @@ DEFINE_FUNC(riscv_core_gen_dstreg, "state, instr, ldaddr, readreg, bReadData, pc
case 1: v = (v >> 8) & 0xffff; break;
case 2: v = (v >> 16) & 0xffff; break;
case 3: {
printf("No support for load 16bit in more than one word\n");
printf("No support for load 16bit in more than one word[pc=%08x, instr=%08x, ldaddr=%d]\n", vget(pc), instr, ldaddr);
exit(-8);
}break;
}
......
......@@ -133,7 +133,8 @@ DEFINE_FUNC(riscv_ram_setup, "") {
| (pobj->rambyteena & 2 ? 0x0000ff00 : 0)
| (pobj->rambyteena & 4 ? 0x00ff0000 : 0)
| (pobj->rambyteena & 8 ? 0xff000000 : 0);
pobj->ram[pobj->ramaddr] = (pobj->ram[pobj->ramaddr] & (~mask))
if (pobj->ramaddr < RAMSIZE)
pobj->ram[pobj->ramaddr] = (pobj->ram[pobj->ramaddr] & (~mask))
| (pobj->ramwrdata & mask);
}
pobj->ramwren = 0;
......@@ -158,28 +159,19 @@ static int loadExecImage(unsigned char* data, int maxlen)
}
else {
int len;
int i;
unsigned int temp[16];
if (addr >= maxlen - 16) {
printf("loadExecImage failed, address [%08x] overflow\n", addr);
exit(-5);
}
len = sscanf(line, "%02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X",
(unsigned int*)(data + addr + 0),
(unsigned int*)(data + addr + 1),
(unsigned int*)(data + addr + 2),
(unsigned int*)(data + addr + 3),
(unsigned int*)(data + addr + 4),
(unsigned int*)(data + addr + 5),
(unsigned int*)(data + addr + 6),
(unsigned int*)(data + addr + 7),
(unsigned int*)(data + addr + 8),
(unsigned int*)(data + addr + 9),
(unsigned int*)(data + addr + 10),
(unsigned int*)(data + addr + 11),
(unsigned int*)(data + addr + 12),
(unsigned int*)(data + addr + 13),
(unsigned int*)(data + addr + 14),
(unsigned int*)(data + addr + 15)
);
&temp[0], &temp[1], &temp[2], &temp[3],
&temp[4], &temp[5], &temp[6], &temp[7],
&temp[8], &temp[9], &temp[10], &temp[11],
&temp[12], &temp[13], &temp[14], &temp[15]);
for (i = 0; i < len; i++)
data[addr + i] = temp[i];
addr += len;
}
}
......@@ -218,11 +210,11 @@ MODULE_INIT(riscv_ram)
pobj->ramwren = 0;
PORT_IN(clock, 1);
PORT_IN(wren, 1);
PORT_IN(address, 11);
PORT_IN(address, 30);
PORT_IN(data, 32);
PORT_IN(byteena, 4);
GPORT_OUT(q, 32, riscv_ram_gen_q);
REG(lastaddr, 11);
REG(lastaddr, 30);
CLKTICK_FUNC(riscv_ram_clktick);
SETUP_FUNC(riscv_ram_setup);
DEINIT_FUNC(riscv_ram_deinit);
......
......@@ -99,6 +99,7 @@ int main(int argc, char* argv[])
objectCall2(vcdfile, AddSignal, "/top/core", "instr");
objectCall2(vcdfile, AddSignal, "/top/core", "state");
objectCall2(vcdfile, AddSignal, "/top/core", "wRead");
objectCall2(vcdfile, AddSignal, "/top/core", "bReadAddr");
objectCall2(vcdfile, AddSignal, "/top/core", "bReadData");
objectCall2(vcdfile, AddSignal, "/top/core", "wWrite");
objectCall2(vcdfile, AddSignal, "/top/core", "bWriteAddr");
......
......@@ -31,7 +31,7 @@
/*
* Created by HDL4SE @ Sun Aug 29 17:30:02 2021
* Created by HDL4SE @ Mon Aug 30 13:49:51 2021
* Don't edit it.
*/
......@@ -59,6 +59,7 @@ IDLIST
VID(regrddata),
VID(regrddata2),
VID(ram_dot_byteena), /* port:ram(ram8kb).byteena, 1 */
VID(ram_dot_wren), /* port:ram(ram8kb).wren, 4 */
VID(bReadDataRam),
VID(bReadDataKey),
VID(wWrite),
......@@ -86,24 +87,29 @@ DEFINE_FUNC(top_gen_ram_dot_byteena, "bWriteMask, ") { /* port:ram(ram8kb).bytee
vputs(ram_dot_byteena, ~(vgets(bWriteMask)));
} END_DEFINE_FUNC
DEFINE_FUNC(top_gen_ram_dot_wren, "bWriteAddr, wWrite, ") { /* port:ram(ram8kb).wren, 4 */
vputs(ram_dot_wren, (((vgets(bWriteAddr)) & (0xff000000)) == (0))?(vgets(wWrite)):(0));
} END_DEFINE_FUNC
DEFINE_FUNC(top_gen_bReadData, "bReadAddr_out, bReadDataKey, bReadDataRam, ") {
vputs(bReadData, (((vgets(bReadAddr_out)) & (0xffffff00)) == (0xf0000000))?(vgets(bReadDataKey)):((((vgets(bReadAddr_out)) & (0xffffc000)) == (0))?(vgets(bReadDataRam)):(0xffffffff)));
vputs(bReadData, (((vgets(bReadAddr_out)) & (0xffffff00)) == (0xf0000000))?(vgets(bReadDataKey)):((((vgets(bReadAddr_out)) & (0xff000000)) == (0))?(vgets(bReadDataRam)):(0xffffffff)));
} END_DEFINE_FUNC
DEFINE_FUNC(top_gen_ramaddr, "wWrite, bWriteAddr, bReadAddr, ") {
vputs(ramaddr, (vgets(wWrite))?((vget(bWriteAddr) >> 2) & 0x7ff):((vget(bReadAddr) >> 2) & 0x7ff));
vputs(ramaddr, (vgets(wWrite))?((vget(bWriteAddr) >> 2) & 0x3fffffff):((vget(bReadAddr) >> 2) & 0x3fffffff));
} END_DEFINE_FUNC
GEN_MODULE_INIT
PORT_IN (wClk, 1);
PORT_IN (nwReset, 1);
WIRE(bReadData, 32);
WIRE(ramaddr, 11);
WIRE(ramaddr, 30);
WIRE(wRead_out, 1);
WIRE(bReadAddr_out, 32);
WIRE(regrddata, 32);
WIRE(regrddata2, 32);
WIRE(ram_dot_byteena, 1);
WIRE(ram_dot_wren, 1);
WIRE(bReadDataRam, 32);
WIRE(bReadDataKey, 32);
WIRE(wWrite, 1);
......@@ -139,7 +145,7 @@ GEN_MODULE_INIT
CELL_INST("EE3409B2-6D04-42B3-A44D-7F2444DDC00D", /* ram8kb */
"ram",
"",
"ramaddr, ram_dot_byteena, wClk, bWriteData, wWrite, bReadDataRam");
"ramaddr, ram_dot_byteena, wClk, bWriteData, ram_dot_wren, bReadDataRam");
CELL_INST("2925e2cf-dd49-4155-b31d-41d48f0f98dc", /* digitled */
"led",
"",
......@@ -151,6 +157,7 @@ GEN_MODULE_INIT
", regno, regena, regwrdata, regwren, regrddata, regno2, regena2, regwrdata2, regwren2"
", regrddata2");
GEN_FUNC("ram_dot_byteena", top_gen_ram_dot_byteena);
GEN_FUNC("ram_dot_wren", top_gen_ram_dot_wren);
GEN_FUNC("bReadData", top_gen_bReadData);
GEN_FUNC("ramaddr", top_gen_ramaddr);
END_GEN_MODULE_INIT
......
#include <stdio.h>
#define UARTADDRESS (unsigned int *)0xf0000100
/*
......@@ -11,24 +10,26 @@
[16] -- recv buffer empty
[26:17] -- recv buffer used
*/
/*
int _write(int fd, char* buf, int len)
int uart_write(char* buf, int len)
{
volatile int j;
volatile unsigned int* uart = UARTADDRESS;
unsigned int state;
int i;
i = 0;
while (i < len) {
state = uart[2];
if ((state & 1) == 0) {
uart[1] = (unsigned int)(unsigned char)buf[i];
if ((state & 2) != 0) {
uart[1] = buf[i];
i++;
}
}
return len;
}
int _read(int fd, char* buf, int len)
int uart_read(char* buf, int len)
{
volatile unsigned int* uart = UARTADDRESS;
unsigned int state;
......@@ -38,20 +39,21 @@ int _read(int fd, char* buf, int len)
i = 0;
do {
state = uart[2];
if ( (state & (1 << 16)) == 0) {
if ((state & (1 << 16)) == 0) {
state >>= 17;
if (state == 0)
continue;
if (len > state)
len = state;
for (i = 0; i < len; i++) {
buf[i] = uart[0];
for (i = 0; i < len; i++) {
buf[i] = uart[0];
}
}
else {
return 0;
}
} while (i == 0);
return i;
}
*/
const unsigned int segcode[10] =
{
0x3F,
......@@ -71,10 +73,51 @@ unsigned int num2seg(unsigned int num)
return segcode[num % 10];
}
int int2s(char* buf, int num)
{
int i;
int len;
int sign;
len = 0;
sign = 0;
if (num < 0) {
num = -num;
sign = 0;
}
while (num > 0) {
buf[len++] = (num % 10) + '0';
num /= 10;
}
if (sign)
buf[len++] = '-';
for (i = 0; i < len / 2; i++) {
int di = len - 1 - i;
char temp;
temp = buf[i];
buf[i] = buf[di];
buf[di] = temp;
}
buf[len] = 0;
return len;
}
int _strcat(char* s, const char* t)
{
char* ss = s;
while (*s)
s++;
while (*t)
*s++ = *t++;
*s++ = 0;
return s - ss;
}
int main(int argc, char* argv[])
{
unsigned long long count, ctemp;
long recvcount, recvcountseg;
int countit = 1;
volatile unsigned int* ledkey = (unsigned int*)0xF0000000;
volatile unsigned int* leddata = (unsigned int*)0xf0000010;
volatile unsigned int* uart = UARTADDRESS;
......@@ -82,27 +125,27 @@ int main(int argc, char* argv[])
leddata[0] = 0x6f7f077d;
leddata[1] = 0x6d664f5b;
uart[4] = 50000000 / 115200;
recvcount = 0;
recvcountseg = 0;
do {
unsigned int key;
unsigned int uartstate;
#if 0
uartstate = uart[2];
if (uartstate & 0x80) { /*rrdy*/
uart[1] = uart[0]; /* writeback */
uart[2] = 0;
continue;
char buf[256];
char* msg = "Hello, World!";
int len;
#if 1
len = uart_read(buf, 255);
if (len > 0) {
uart_write(buf, len);
recvcount += len;
recvcountseg += len;
}
#else
uartstate = uart[2];
if ((uartstate & 0x10000) == 0) {
unsigned int uartdata;
uartdata = uart[0];
if (uartdata & 0x80000000) {
uart[1] = '#';
}
uart[1] = uartdata;
continue;
if (recvcountseg >= 1000) {
int i;
int len;
len = int2s(buf, recvcount);
len = _strcat(buf, " bytes received\r\n");
uart_write(buf, len);
recvcountseg = 0;
}
#endif
key = *ledkey;
......@@ -126,7 +169,7 @@ int main(int argc, char* argv[])
if (countit)
count++;
ctemp = count;
ctemp = recvcountseg;//count;
leddata[0] = num2seg(ctemp) |
((num2seg(ctemp / 10ll)) << 8) |
((num2seg(ctemp / 100ll)) << 16) |
......
@00000074
93 07 00 00 63 88 07 00 37 15 00 00 13 05 05 C9
6F 00 90 46 67 80 00 00 97 11 00 00 93 81 C1 7A
13 85 41 C4 13 86 01 C6 33 06 A6 40 93 05 00 00
EF 00 10 1F 17 15 00 00 13 05 45 C4 63 08 05 00
17 15 00 00 13 05 C5 BD EF 00 10 43 EF 00 90 13
03 25 01 00 93 05 41 00 13 06 00 00 EF 00 C0 0A
6F 00 50 0F 13 01 01 FF 23 24 81 00 83 C7 41 C4
93 07 00 00 63 88 07 00 37 15 00 00 13 05 85 03
6F 10 00 01 67 80 00 00 97 31 00 00 93 81 41 A7
13 85 41 C3 13 86 01 C5 33 06 A6 40 93 05 00 00
EF 00 90 59 17 15 00 00 13 05 C5 FE 63 08 05 00
17 15 00 00 13 05 45 F8 EF 00 90 7D EF 00 10 4E
03 25 01 00 93 05 41 00 13 06 00 00 EF 00 00 40
6F 00 D0 49 13 01 01 FF 23 24 81 00 83 C7 41 C3
23 26 11 00 63 92 07 02 93 07 00 00 63 8A 07 00
37 15 00 00 13 05 05 00 97 00 00 00 E7 00 00 00
93 07 10 00 23 82 F1 C4 83 20 C1 00 03 24 81 00
37 25 00 00 13 05 45 2C 97 00 00 00 E7 00 00 00
93 07 10 00 23 8A F1 C2 83 20 C1 00 03 24 81 00
13 01 01 01 67 80 00 00 93 07 00 00 63 8C 07 00
37 15 00 00 93 85 81 C4 13 05 05 00 17 03 00 00
67 00 00 00 67 80 00 00 13 01 01 FE 23 2E 81 00
13 04 01 02 23 26 A4 FE 03 27 C4 FE 93 07 A0 00
B3 77 F7 02 17 17 00 00 03 27 47 31 93 97 27 00
B3 07 F7 00 83 A7 07 00 13 85 07 00 03 24 C1 01
13 01 01 02 67 80 00 00 13 01 01 FB 23 26 11 04
23 24 81 04 23 22 91 04 13 04 01 05 23 2E A4 FA
23 2C B4 FA 93 07 10 00 23 22 F4 FE B7 07 00 F0
23 20 F4 FE B7 07 00 F0 93 87 07 01 23 2E F4 FC
B7 07 00 F0 93 87 07 10 23 2C F4 FC 93 07 00 00
13 08 00 00 23 24 F4 FE 23 26 04 FF 83 27 C4 FD
37 07 7F 6F 13 07 D7 77 23 A0 E7 00 83 27 C4 FD
93 87 47 00 37 57 66 6D 13 07 B7 F5 23 A0 E7 00
83 27 84 FD 93 87 07 01 13 07 20 1B 23 A0 E7 00
83 27 84 FD 93 87 87 00 83 A7 07 00 23 2A F4 FC
03 27 44 FD B7 07 01 00 B3 77 F7 00 63 9E 07 02
83 27 84 FD 83 A7 07 00 23 22 F4 FC 83 27 44 FC
63 DA 07 00 83 27 84 FD 93 87 47 00 13 07 30 02
23 A0 E7 00 83 27 84 FD 93 87 47 00 03 27 44 FC
23 A0 E7 00 6F 00 C0 33 83 27 04 FE 83 A7 07 00
23 28 F4 FC 83 27 04 FD 93 F7 17 00 63 8C 07 00
37 25 00 00 93 85 81 C3 13 05 45 2C 17 03 00 00
67 00 00 00 67 80 00 00 13 01 01 FD 23 26 81 02
13 04 01 03 23 2E A4 FC 23 2C B4 FC B7 07 00 F0
93 87 07 10 23 24 F4 FE 23 26 04 FE 6F 00 80 04
83 27 84 FE 93 87 87 00 83 A7 07 00 23 22 F4 FE
83 27 44 FE 93 F7 27 00 63 86 07 02 83 27 C4 FE
03 27 C4 FD B3 07 F7 00 03 C7 07 00 83 27 84 FE
93 87 47 00 23 A0 E7 00 83 27 C4 FE 93 87 17 00
23 26 F4 FE 03 27 C4 FE 83 27 84 FD E3 4A F7 FA
83 27 84 FD 13 85 07 00 03 24 C1 02 13 01 01 03
67 80 00 00 13 01 01 FD 23 26 81 02 13 04 01 03
23 2E A4 FC 23 2C B4 FC B7 07 00 F0 93 87 07 10
23 24 F4 FE 83 27 84 FD 63 46 F0 00 93 07 00 00
6F 00 C0 09 23 26 04 FE 83 27 84 FE 93 87 87 00
83 A7 07 00 23 22 F4 FE 03 27 44 FE B7 07 01 00
B3 77 F7 00 63 92 07 06 83 27 44 FE 93 D7 17 01
23 22 F4 FE 83 27 84 FD 03 27 44 FE 63 76 F7 00
83 27 44 FE 23 2C F4 FC 23 26 04 FE 6F 00 C0 02
83 27 84 FE 83 A6 07 00 83 27 C4 FE 03 27 C4 FD
B3 07 F7 00 13 F7 F6 0F 23 80 E7 00 83 27 C4 FE
93 87 17 00 23 26 F4 FE 03 27 C4 FE 83 27 84 FD
E3 48 F7 FC 6F 00 C0 00 93 07 00 00 6F 00 00 01
83 27 C4 FE E3 8A 07 F6 83 27 C4 FE 13 85 07 00
03 24 C1 02 13 01 01 03 67 80 00 00 13 01 01 FE
23 2E 81 00 13 04 01 02 23 26 A4 FE 03 27 C4 FE
93 07 A0 00 B3 77 F7 02 37 17 00 00 13 07 87 17
93 97 27 00 B3 07 F7 00 83 A7 07 00 13 85 07 00
03 24 C1 01 13 01 01 02 67 80 00 00 13 01 01 FC
23 2E 81 02 13 04 01 04 23 26 A4 FC 23 24 B4 FC
23 24 04 FE 23 22 04 FE 83 27 84 FC 63 DE 07 04
83 27 84 FC B3 07 F0 40 23 24 F4 FC 23 22 04 FE
6F 00 80 04 03 27 84 FC 93 07 A0 00 B3 67 F7 02
13 F7 F7 0F 83 27 84 FE 93 86 17 00 23 24 D4 FE
93 86 07 00 83 27 C4 FC B3 87 D7 00 13 07 07 03
13 77 F7 0F 23 80 E7 00 03 27 84 FC 93 07 A0 00
B3 47 F7 02 23 24 F4 FC 83 27 84 FC E3 4C F0 FA
83 27 44 FE 63 82 07 02 83 27 84 FE 13 87 17 00
23 24 E4 FE 13 87 07 00 83 27 C4 FC B3 87 E7 00
13 07 D0 02 23 80 E7 00 23 26 04 FE 6F 00 C0 06
83 27 84 FE 13 87 F7 FF 83 27 C4 FE B3 07 F7 40
23 20 F4 FE 83 27 C4 FE 03 27 C4 FC B3 07 F7 00
83 C7 07 00 A3 0F F4 FC 83 27 04 FE 03 27 C4 FC
33 07 F7 00 83 27 C4 FE 83 26 C4 FC B3 87 F6 00
03 47 07 00 23 80 E7 00 83 27 04 FE 03 27 C4 FC
B3 07 F7 00 03 47 F4 FD 23 80 E7 00 83 27 C4 FE
93 87 17 00 23 26 F4 FE 83 27 84 FE 13 D7 F7 01
B3 07 F7 00 93 D7 17 40 13 87 07 00 83 27 C4 FE
E3 C0 E7 F8 83 27 84 FE 03 27 C4 FC B3 07 F7 00
23 80 07 00 83 27 84 FE 13 85 07 00 03 24 C1 03
13 01 01 04 67 80 00 00 13 01 01 FD 23 26 81 02
13 04 01 03 23 2E A4 FC 23 2C B4 FC 83 27 C4 FD
23 26 F4 FE 6F 00 00 01 83 27 C4 FD 93 87 17 00
23 2E F4 FC 83 27 C4 FD 83 C7 07 00 E3 96 07 FE
6F 00 40 02 03 27 84 FD 93 07 17 00 23 2C F4 FC
83 27 C4 FD 93 86 17 00 23 2E D4 FC 03 47 07 00
23 80 E7 00 83 27 84 FD 83 C7 07 00 E3 9C 07 FC
83 27 C4 FD 13 87 17 00 23 2E E4 FC 23 80 07 00
03 27 C4 FD 83 27 C4 FE B3 07 F7 40 13 85 07 00
03 24 C1 02 13 01 01 03 67 80 00 00 13 01 01 EA
23 2E 11 14 23 2C 81 14 23 2A 91 14 13 04 01 16
23 26 A4 EA 23 24 B4 EA 93 07 10 00 23 2E F4 FC
B7 07 00 F0 23 2C F4 FC B7 07 00 F0 93 87 07 01
23 2A F4 FC B7 07 00 F0 93 87 07 10 23 28 F4 FC
93 07 00 00 13 08 00 00 23 24 F4 FE 23 26 04 FF
6F 00 40 07 83 27 04 FD 93 F7 27 00 63 86 07 00
23 22 04 FE 6F 00 00 06 83 27 04 FD 93 F7 47 00
63 88 07 00 93 07 10 00 23 22 F4 FE 6F 00 80 04
83 27 04 FD 93 F7 87 00 63 8C 07 00 83 27 84 FD
93 87 07 01 13 07 20 1B 23 A0 E7 00 6F 00 40 2C
83 27 04 FD 93 F7 07 01 63 8E 07 00 83 27 84 FD
93 87 07 01 37 17 00 00 13 07 87 45 23 A0 E7 00
6F 00 00 2A 83 27 44 FE 63 8A 07 02 03 26 84 FE
83 26 C4 FE 13 05 10 00 93 05 00 00 33 07 A6 00
13 08 07 00 33 38 C8 00 B3 87 B6 00 B3 06 F8 00
93 87 06 00 23 24 E4 FE 23 26 F4 FE 03 27 84 FE
83 27 C4 FE 23 24 E4 FC 23 26 F4 FC 83 27 84 FC
13 85 07 00 EF F0 5F DF 93 04 05 00 03 27 84 FC
83 27 C4 FC 13 06 A0 00 93 06 00 00 13 05 07 00
93 85 07 00 EF 00 00 23 13 07 05 00 93 87 05 00
93 07 07 00 13 85 07 00 EF F0 1F DC 93 07 05 00
93 97 87 00 B3 E4 F4 00 03 27 84 FC 83 27 C4 FC
13 06 40 06 93 06 00 00 13 05 07 00 93 85 07 00
EF 00 40 1F 13 07 05 00 93 87 05 00 93 07 07 00
13 85 07 00 EF F0 5F D8 93 07 05 00 93 97 07 01
B3 E4 F4 00 03 27 84 FC 83 27 C4 FC 13 06 80 3E
93 06 00 00 13 05 07 00 93 85 07 00 EF 00 80 1B
83 27 44 FD 37 07 7F 6F 13 07 D7 77 23 A0 E7 00
83 27 44 FD 93 87 47 00 37 57 66 6D 13 07 B7 F5
23 A0 E7 00 83 27 04 FD 93 87 07 01 13 07 20 1B
23 A0 E7 00 23 22 04 FE 23 20 04 FE B7 17 00 00
93 87 07 1A 23 26 F4 FC 93 07 84 EB 93 05 F0 0F
13 85 07 00 EF F0 1F C5 23 24 A4 FC 83 27 84 FC
63 5A F0 02 93 07 84 EB 83 25 84 FC 13 85 07 00
EF F0 9F BA 03 27 44 FE 83 27 84 FC B3 07 F7 00
23 22 F4 FE 03 27 04 FE 83 27 84 FC B3 07 F7 00
23 20 F4 FE 03 27 04 FE 93 07 70 3E 63 D2 E7 04
93 07 84 EB 83 25 44 FE 13 85 07 00 EF F0 1F D1
23 22 A4 FC 13 07 84 EB B7 17 00 00 93 85 07 1B
13 05 07 00 EF F0 5F E5 23 22 A4 FC 93 07 84 EB
83 25 44 FC 13 85 07 00 EF F0 1F B4 23 20 04 FE
83 27 84 FD 83 A7 07 00 23 20 F4 FC 83 27 04 FC
93 F7 17 00 63 8C 07 00 93 07 00 00 13 08 00 00
23 24 F4 FE 23 26 04 FF 6F 00 40 07 83 27 04 FC
93 F7 27 00 63 86 07 00 23 2E 04 FC 6F 00 00 06
83 27 04 FC 93 F7 47 00 63 88 07 00 93 07 10 00
23 2E F4 FC 6F 00 80 04 83 27 04 FC 93 F7 87 00
63 8C 07 00 83 27 04 FD 93 87 07 01 13 07 20 1B
23 A0 E7 00 6F 00 40 2C 83 27 04 FC 93 F7 07 01
63 8E 07 00 83 27 04 FD 93 87 07 01 37 17 00 00
13 07 87 45 23 A0 E7 00 6F 00 00 2A 83 27 C4 FD
63 8A 07 02 03 26 84 FE 83 26 C4 FE 13 05 10 00
93 05 00 00 33 07 A6 00 13 08 07 00 33 38 C8 00
B3 87 B6 00 B3 06 F8 00 93 87 06 00 23 24 E4 FE
23 26 F4 FE 83 27 04 FE 23 2C F4 FA 93 D7 F7 41
23 2E F4 FA 83 27 84 FB 13 85 07 00 EF F0 1F BB
93 04 05 00 03 27 84 FB 83 27 C4 FB 13 06 A0 00
93 06 00 00 13 05 07 00 93 85 07 00 EF 00 00 23
13 07 05 00 93 87 05 00 93 07 07 00 13 85 07 00
EF F0 9F D4 93 07 05 00 93 97 87 01 33 E7 F4 00
83 27 C4 FD 23 A0 E7 00 03 27 84 FC 83 27 C4 FC
37 26 00 00 13 06 06 71 93 06 00 00 13 05 07 00
93 85 07 00 EF 00 00 17 13 07 05 00 93 87 05 00
23 24 E4 FC 23 26 F4 FC 83 27 84 FC 13 85 07 00
EF F0 9F CF 93 04 05 00 03 27 84 FC 83 27 C4 FC
13 06 A0 00 93 06 00 00 13 05 07 00 93 85 07 00
EF 00 40 13 13 07 05 00 93 87 05 00 93 07 07 00
13 85 07 00 EF F0 5F CC 93 07 05 00 93 97 87 00
B3 E4 F4 00 03 27 84 FC 83 27 C4 FC 13 06 40 06
93 06 00 00 13 05 07 00 93 85 07 00 EF 00 80 0F
13 07 05 00 93 87 05 00 93 07 07 00 13 85 07 00
EF F0 9F C8 93 07 05 00 93 97 07 01 B3 E4 F4 00
03 27 84 FC 83 27 C4 FC 13 06 80 3E 93 06 00 00
13 05 07 00 93 85 07 00 EF 00 C0 0B 13 07 05 00
93 87 05 00 93 07 07 00 13 85 07 00 EF F0 DF C4
93 07 05 00 13 97 87 01 83 27 C4 FD 93 87 47 00
33 E7 E4 00 23 A0 E7 00 03 27 84 FC 83 27 C4 FC
37 26 00 00 13 06 06 71 93 06 00 00 13 05 07 00
93 85 07 00 EF 00 00 07 13 07 05 00 93 87 05 00
23 24 E4 FC 23 26 F4 FC 83 27 84 FC 13 85 07 00
EF F0 9F BF 93 04 05 00 03 27 84 FC 83 27 C4 FC
13 06 A0 00 93 06 00 00 13 05 07 00 93 85 07 00
EF 00 40 03 13 07 05 00 93 87 05 00 93 07 07 00
13 85 07 00 EF F0 5F BC 93 07 05 00 13 97 87 00
83 27 C4 FD 93 87 87 00 33 E7 E4 00 23 A0 E7 00
6F F0 1F C7 13 03 05 00 93 88 05 00 13 07 06 00
13 08 05 00 93 87 05 00 63 92 06 28 B7 15 00 00
93 85 85 DF 63 F6 C8 0E B7 06 01 00 63 78 D6 0C
93 36 06 10 93 C6 16 00 93 96 36 00 33 55 D6 00
B3 85 A5 00 83 C5 05 00 13 05 00 02 B3 86 D5 00
B3 05 D5 40 63 0C D5 00 B3 97 B8 00 B3 56 D3 00
33 17 B6 00 B3 E7 F6 00 33 18 B3 00 93 55 07 01
33 D3 B7 02 13 16 07 01 13 56 06 01 B3 F7 B7 02
13 05 03 00 B3 08 66 02 93 96 07 01 93 57 08 01
B3 E7 D7 00 63 FE 17 01 B3 87 E7 00 13 05 F3 FF
63 E8 E7 00 63 F6 17 01 13 05 E3 FF B3 87 E7 00
B3 87 17 41 B3 D8 B7 02 13 18 08 01 13 58 08 01
B3 F7 B7 02 B3 06 16 03 93 97 07 01 33 68 F8 00
93 87 08 00 63 7C D8 00 33 08 07 01 93 87 F8 FF
63 66 E8 00 63 74 D8 00 93 87 E8 FF 13 15 05 01
33 65 F5 00 93 05 00 00 67 80 00 00 37 05 00 01
93 06 00 01 E3 6C A6 F2 93 06 80 01 6F F0 1F F3
63 14 06 00 73 00 10 00 B7 07 01 00 63 70 F6 0C
93 36 06 10 93 C6 16 00 93 96 36 00 B3 57 D6 00
B3 85 F5 00 83 C7 05 00 B3 87 D7 00 93 06 00 02
B3 85 F6 40 63 96 F6 0A B3 87 C8 40 93 05 10 00
93 58 07 01 33 DE 17 03 13 16 07 01 13 56 06 01
93 56 08 01 B3 F7 17 03 13 05 0E 00 33 03 C6 03
93 97 07 01 B3 E7 F6 00 63 FE 67 00 B3 87 E7 00
13 05 FE FF 63 E8 E7 00 63 F6 67 00 13 05 EE FF
B3 87 E7 00 B3 87 67 40 33 D3 17 03 13 18 08 01
13 58 08 01 B3 F7 17 03 B3 06 66 02 93 97 07 01
33 68 F8 00 93 07 03 00 63 7C D8 00 33 08 07 01
93 07 F3 FF 63 66 E8 00 63 74 D8 00 93 07 E3 FF
13 15 05 01 33 65 F5 00 67 80 00 00 B7 07 00 01
93 06 00 01 E3 64 F6 F4 93 06 80 01 6F F0 1F F4
33 17 B6 00 B3 D6 F8 00 13 55 07 01 B3 57 F3 00
33 18 B3 00 33 D3 A6 02 13 16 07 01 B3 98 B8 00
13 56 06 01 B3 E7 17 01 B3 F6 A6 02 B3 08 66 02
93 95 06 01 93 D6 07 01 B3 E6 B6 00 93 05 03 00
63 FE 16 01 B3 86 E6 00 93 05 F3 FF 63 E8 E6 00
63 F6 16 01 93 05 E3 FF B3 86 E6 00 B3 86 16 41
B3 D8 A6 02 93 97 07 01 93 D7 07 01 B3 F6 A6 02
33 06 16 03 93 96 06 01 B3 E7 D7 00 93 86 08 00
63 FE C7 00 B3 87 E7 00 93 86 F8 FF 63 E8 E7 00
63 F6 C7 00 93 86 E8 FF B3 87 E7 00 93 95 05 01
B3 87 C7 40 B3 E5 D5 00 6F F0 9F EB 63 E6 D5 18
B7 07 01 00 63 F4 F6 04 13 B7 06 10 13 47 17 00
13 17 37 00 B7 17 00 00 B3 D5 E6 00 93 87 87 DF
B3 87 B7 00 83 C7 07 00 B3 87 E7 00 13 07 00 02
B3 05 F7 40 63 16 F7 02 13 05 10 00 E3 EE 16 E1
33 35 C3 00 13 45 15 00 67 80 00 00 B7 07 00 01
13 07 00 01 E3 E0 F6 FC 13 07 80 01 6F F0 9F FB
33 57 F6 00 B3 96 B6 00 B3 66 D7 00 33 D7 F8 00
B3 98 B8 00 B3 57 F3 00 B3 E7 17 01 93 D8 06 01
B3 5E 17 03 13 98 06 01 13 58 08 01 33 16 B6 00
33 77 17 03 33 0E D8 03 13 15 07 01 13 D7 07 01
33 67 A7 00 13 85 0E 00 63 7E C7 01 33 07 D7 00
13 85 FE FF 63 68 D7 00 63 76 C7 01 13 85 EE FF
33 07 D7 00 33 07 C7 41 33 5E 17 03 93 97 07 01
93 D7 07 01 33 77 17 03 33 08 C8 03 13 17 07 01
B3 E7 E7 00 13 07 0E 00 63 FE 07 01 B3 87 D7 00
13 07 FE FF 63 E8 D7 00 63 F6 07 01 13 07 EE FF
B3 87 D7 00 13 15 05 01 37 0E 01 00 33 65 E5 00
93 06 FE FF 33 77 D5 00 B3 87 07 41 B3 76 D6 00
13 58 05 01 13 56 06 01 B3 08 D7 02 B3 06 D8 02
33 07 C7 02 33 08 C8 02 33 06 D7 00 13 D7 08 01
33 07 C7 00 63 74 D7 00 33 08 C8 01 93 56 07 01
B3 86 06 01 63 E6 D7 02 E3 9E D7 CE B7 07 01 00
93 87 F7 FF 33 77 F7 00 13 17 07 01 B3 F8 F8 00
33 13 B3 00 33 07 17 01 93 05 00 00 E3 7E E3 CC
13 05 F5 FF 6F F0 1F CD 93 05 00 00 13 05 00 00
67 80 00 00 13 01 01 FF 93 05 00 00 23 24 81 00
23 26 11 00 13 04 05 00 EF 00 40 19 03 A5 81 C3
83 27 C5 03 63 84 07 00 E7 80 07 00 13 05 04 00
EF 00 40 3A 13 01 01 FF 23 24 81 00 23 20 21 01
37 14 00 00 37 19 00 00 93 07 C4 02 13 09 C9 02
33 09 F9 40 23 26 11 00 23 22 91 00 13 59 29 40
63 00 09 02 13 04 C4 02 93 04 00 00 83 27 04 00
93 84 14 00 13 04 44 00 E7 80 07 00 E3 18 99 FE
37 14 00 00 37 19 00 00 93 07 C4 02 13 09 49 03
33 09 F9 40 13 59 29 40 63 00 09 02 13 04 C4 02
EF F0 DF B7 93 07 05 00 93 97 87 00 B3 E4 F4 00
03 27 84 FB 83 27 C4 FB 13 06 40 06 93 06 00 00
13 05 07 00 93 85 07 00 EF 00 40 1F 13 07 05 00
93 87 05 00 93 07 07 00 13 85 07 00 EF F0 1F B4
93 07 05 00 93 97 07 01 B3 E4 F4 00 03 27 84 FB
83 27 C4 FB 13 06 80 3E 93 06 00 00 13 05 07 00
93 85 07 00 EF 00 80 1B 13 07 05 00 93 87 05 00
93 07 07 00 13 85 07 00 EF F0 5F B0 93 07 05 00
93 97 87 01 33 E7 F4 00 83 27 44 FD 23 A0 E7 00
03 27 84 FB 83 27 C4 FB 37 26 00 00 13 06 06 71
93 06 00 00 13 05 07 00 93 85 07 00 EF 00 00 17
13 07 05 00 93 87 05 00 23 2C E4 FA 23 2E F4 FA
83 27 84 FB 13 85 07 00 EF F0 5F AB 93 04 05 00
03 27 84 FB 83 27 C4 FB 13 06 A0 00 93 06 00 00
13 05 07 00 93 85 07 00 EF 00 40 13 13 07 05 00
93 87 05 00 93 07 07 00 13 85 07 00 EF F0 1F A8
93 07 05 00 93 97 87 00 B3 E4 F4 00 03 27 84 FB
83 27 C4 FB 13 06 40 06 93 06 00 00 13 05 07 00
93 85 07 00 EF 00 80 0F 13 07 05 00 93 87 05 00
93 07 07 00 13 85 07 00 EF F0 5F A4 93 07 05 00
93 97 07 01 B3 E4 F4 00 03 27 84 FB 83 27 C4 FB
13 06 80 3E 93 06 00 00 13 05 07 00 93 85 07 00
EF 00 C0 0B 13 07 05 00 93 87 05 00 93 07 07 00
13 85 07 00 EF F0 9F A0 93 07 05 00 13 97 87 01
83 27 44 FD 93 87 47 00 33 E7 E4 00 23 A0 E7 00
03 27 84 FB 83 27 C4 FB 37 26 00 00 13 06 06 71
93 06 00 00 13 05 07 00 93 85 07 00 EF 00 00 07
13 07 05 00 93 87 05 00 23 2C E4 FA 23 2E F4 FA
83 27 84 FB 13 85 07 00 EF F0 5F 9B 93 04 05 00
03 27 84 FB 83 27 C4 FB 13 06 A0 00 93 06 00 00
13 05 07 00 93 85 07 00 EF 00 40 03 13 07 05 00
93 87 05 00 93 07 07 00 13 85 07 00 EF F0 1F 98
93 07 05 00 13 97 87 00 83 27 44 FD 93 87 87 00
33 E7 E4 00 23 A0 E7 00 6F F0 5F C2 13 03 05 00
93 88 05 00 13 07 06 00 13 08 05 00 93 87 05 00
63 92 06 28 B7 15 00 00 93 85 45 1C 63 F6 C8 0E
B7 06 01 00 63 78 D6 0C 93 36 06 10 93 C6 16 00
93 96 36 00 33 55 D6 00 B3 85 A5 00 83 C5 05 00
13 05 00 02 B3 86 D5 00 B3 05 D5 40 63 0C D5 00
B3 97 B8 00 B3 56 D3 00 33 17 B6 00 B3 E7 F6 00
33 18 B3 00 93 55 07 01 33 D3 B7 02 13 16 07 01
13 56 06 01 B3 F7 B7 02 13 05 03 00 B3 08 66 02
93 96 07 01 93 57 08 01 B3 E7 D7 00 63 FE 17 01
B3 87 E7 00 13 05 F3 FF 63 E8 E7 00 63 F6 17 01
13 05 E3 FF B3 87 E7 00 B3 87 17 41 B3 D8 B7 02
13 18 08 01 13 58 08 01 B3 F7 B7 02 B3 06 16 03
93 97 07 01 33 68 F8 00 93 87 08 00 63 7C D8 00
33 08 07 01 93 87 F8 FF 63 66 E8 00 63 74 D8 00
93 87 E8 FF 13 15 05 01 33 65 F5 00 93 05 00 00
67 80 00 00 37 05 00 01 93 06 00 01 E3 6C A6 F2
93 06 80 01 6F F0 1F F3 63 14 06 00 73 00 10 00
B7 07 01 00 63 70 F6 0C 93 36 06 10 93 C6 16 00
93 96 36 00 B3 57 D6 00 B3 85 F5 00 83 C7 05 00
B3 87 D7 00 93 06 00 02 B3 85 F6 40 63 96 F6 0A
B3 87 C8 40 93 05 10 00 93 58 07 01 33 DE 17 03
13 16 07 01 13 56 06 01 93 56 08 01 B3 F7 17 03
13 05 0E 00 33 03 C6 03 93 97 07 01 B3 E7 F6 00
63 FE 67 00 B3 87 E7 00 13 05 FE FF 63 E8 E7 00
63 F6 67 00 13 05 EE FF B3 87 E7 00 B3 87 67 40
33 D3 17 03 13 18 08 01 13 58 08 01 B3 F7 17 03
B3 06 66 02 93 97 07 01 33 68 F8 00 93 07 03 00
63 7C D8 00 33 08 07 01 93 07 F3 FF 63 66 E8 00
63 74 D8 00 93 07 E3 FF 13 15 05 01 33 65 F5 00
67 80 00 00 B7 07 00 01 93 06 00 01 E3 64 F6 F4
93 06 80 01 6F F0 1F F4 33 17 B6 00 B3 D6 F8 00
13 55 07 01 B3 57 F3 00 33 18 B3 00 33 D3 A6 02
13 16 07 01 B3 98 B8 00 13 56 06 01 B3 E7 17 01
B3 F6 A6 02 B3 08 66 02 93 95 06 01 93 D6 07 01
B3 E6 B6 00 93 05 03 00 63 FE 16 01 B3 86 E6 00
93 05 F3 FF 63 E8 E6 00 63 F6 16 01 93 05 E3 FF
B3 86 E6 00 B3 86 16 41 B3 D8 A6 02 93 97 07 01
93 D7 07 01 B3 F6 A6 02 33 06 16 03 93 96 06 01
B3 E7 D7 00 93 86 08 00 63 FE C7 00 B3 87 E7 00
93 86 F8 FF 63 E8 E7 00 63 F6 C7 00 93 86 E8 FF
B3 87 E7 00 93 95 05 01 B3 87 C7 40 B3 E5 D5 00
6F F0 9F EB 63 E6 D5 18 B7 07 01 00 63 F4 F6 04
13 B7 06 10 13 47 17 00 13 17 37 00 B7 17 00 00
B3 D5 E6 00 93 87 47 1C B3 87 B7 00 83 C7 07 00
B3 87 E7 00 13 07 00 02 B3 05 F7 40 63 16 F7 02
13 05 10 00 E3 EE 16 E1 33 35 C3 00 13 45 15 00
67 80 00 00 B7 07 00 01 13 07 00 01 E3 E0 F6 FC
13 07 80 01 6F F0 9F FB 33 57 F6 00 B3 96 B6 00
B3 66 D7 00 33 D7 F8 00 B3 98 B8 00 B3 57 F3 00
B3 E7 17 01 93 D8 06 01 B3 5E 17 03 13 98 06 01
13 58 08 01 33 16 B6 00 33 77 17 03 33 0E D8 03
13 15 07 01 13 D7 07 01 33 67 A7 00 13 85 0E 00
63 7E C7 01 33 07 D7 00 13 85 FE FF 63 68 D7 00
63 76 C7 01 13 85 EE FF 33 07 D7 00 33 07 C7 41
33 5E 17 03 93 97 07 01 93 D7 07 01 33 77 17 03
33 08 C8 03 13 17 07 01 B3 E7 E7 00 13 07 0E 00
63 FE 07 01 B3 87 D7 00 13 07 FE FF 63 E8 D7 00
63 F6 07 01 13 07 EE FF B3 87 D7 00 13 15 05 01
37 0E 01 00 33 65 E5 00 93 06 FE FF 33 77 D5 00
B3 87 07 41 B3 76 D6 00 13 58 05 01 13 56 06 01
B3 08 D7 02 B3 06 D8 02 33 07 C7 02 33 08 C8 02
33 06 D7 00 13 D7 08 01 33 07 C7 00 63 74 D7 00
33 08 C8 01 93 56 07 01 B3 86 06 01 63 E6 D7 02
E3 9E D7 CE B7 07 01 00 93 87 F7 FF 33 77 F7 00
13 17 07 01 B3 F8 F8 00 33 13 B3 00 33 07 17 01
93 05 00 00 E3 7E E3 CC 13 05 F5 FF 6F F0 1F CD
93 05 00 00 13 05 00 00 67 80 00 00 13 01 01 FF
93 05 00 00 23 24 81 00 23 26 11 00 13 04 05 00
EF 00 40 19 03 A5 81 C2 83 27 C5 03 63 84 07 00
E7 80 07 00 13 05 04 00 EF 00 40 3A 13 01 01 FF
23 24 81 00 23 20 21 01 37 24 00 00 37 29 00 00
93 07 04 2F 13 09 09 2F 33 09 F9 40 23 26 11 00
23 22 91 00 13 59 29 40 63 00 09 02 13 04 04 2F
93 04 00 00 83 27 04 00 93 84 14 00 13 04 44 00
E7 80 07 00 E3 18 99 FE 83 20 C1 00 03 24 81 00
83 24 41 00 03 29 01 00 13 01 01 01 67 80 00 00
13 03 F0 00 13 07 05 00 63 7E C3 02 93 77 F7 00
63 90 07 0A 63 92 05 08 93 76 06 FF 13 76 F6 00
B3 86 E6 00 23 20 B7 00 23 22 B7 00 23 24 B7 00
23 26 B7 00 13 07 07 01 E3 66 D7 FE 63 14 06 00
67 80 00 00 B3 06 C3 40 93 96 26 00 97 02 00 00
B3 86 56 00 67 80 C6 00 23 07 B7 00 A3 06 B7 00
23 06 B7 00 A3 05 B7 00 23 05 B7 00 A3 04 B7 00
23 04 B7 00 A3 03 B7 00 23 03 B7 00 A3 02 B7 00
23 02 B7 00 A3 01 B7 00 23 01 B7 00 A3 00 B7 00
23 00 B7 00 67 80 00 00 93 F5 F5 0F 93 96 85 00
B3 E5 D5 00 93 96 05 01 B3 E5 D5 00 6F F0 DF F6
93 96 27 00 97 02 00 00 B3 86 56 00 93 82 00 00
E7 80 06 FA 93 80 02 00 93 87 07 FF 33 07 F7 40
33 06 F6 00 E3 78 C3 F6 6F F0 DF F3 13 01 01 FD
23 2C 41 01 03 AA 81 C3 23 20 21 03 23 26 11 02
03 29 8A 14 23 24 81 02 23 22 91 02 23 2E 31 01
23 2A 51 01 23 28 61 01 23 26 71 01 23 24 81 01
63 00 09 04 13 0B 05 00 93 8B 05 00 93 0A 10 00
93 09 F0 FF 83 24 49 00 13 84 F4 FF 63 42 04 02
93 94 24 00 B3 04 99 00 63 84 0B 04 83 A7 44 10
63 80 77 05 13 04 F4 FF 93 84 C4 FF E3 16 34 FF
83 20 C1 02 03 24 81 02 83 24 41 02 03 29 01 02
83 29 C1 01 03 2A 81 01 83 2A 41 01 03 2B 01 01
83 2B C1 00 03 2C 81 00 13 01 01 03 67 80 00 00
83 27 49 00 83 A6 44 00 93 87 F7 FF 63 8E 87 04
23 A2 04 00 E3 88 06 FA 83 27 89 18 33 97 8A 00
03 2C 49 00 B3 77 F7 00 63 92 07 02 E7 80 06 00
03 27 49 00 83 27 8A 14 63 14 87 01 E3 84 27 F9
E3 88 07 F8 13 89 07 00 6F F0 DF F5 83 27 C9 18
83 A5 44 08 33 77 F7 00 63 1C 07 00 13 05 0B 00
E7 80 06 00 6F F0 DF FC 23 22 89 00 6F F0 9F FA
13 85 05 00 E7 80 06 00 6F F0 9F FB 13 01 01 FF
23 24 81 00 B7 17 00 00 37 14 00 00 93 87 47 03
13 04 84 03 33 04 F4 40 23 22 91 00 23 26 11 00
93 54 24 40 63 80 04 02 13 04 C4 FF 33 04 F4 00
83 27 04 00 93 84 F4 FF 13 04 C4 FF E7 80 07 00
E3 98 04 FE 83 20 C1 00 03 24 81 00 83 24 41 00
13 01 01 01 67 80 00 00 93 05 05 00 93 06 00 00
13 06 00 00 13 05 00 00 6F 00 40 00 03 A7 81 C3
83 27 87 14 63 8C 07 04 03 A7 47 00 13 08 F0 01
63 4E E8 06 13 18 27 00 63 06 05 02 33 83 07 01
23 24 C3 08 83 A8 87 18 13 06 10 00 33 16 E6 00
B3 E8 C8 00 23 A4 17 19 23 24 D3 10 93 06 20 00
63 04 D5 02 13 07 17 00 23 A2 E7 00 B3 87 07 01
23 A4 B7 00 13 05 00 00 67 80 00 00 93 07 C7 14
23 24 F7 14 6F F0 5F FA 83 A6 C7 18 13 07 17 00
23 A2 E7 00 B3 E6 C6 00 23 A6 D7 18 B3 87 07 01
23 A4 B7 00 13 05 00 00 67 80 00 00 13 05 F0 FF
67 80 00 00 93 08 D0 05 73 00 00 00 63 44 05 00
6F 00 00 00 13 01 01 FF 23 24 81 00 13 04 05 00
23 26 11 00 33 04 80 40 EF 00 C0 00 23 20 85 00
6F 00 00 00 03 A5 01 C4 67 80 00 00
@00000DD0
E7 80 07 00 E3 18 99 FE 37 24 00 00 37 29 00 00
93 07 04 2F 13 09 89 2F 33 09 F9 40 13 59 29 40
63 00 09 02 13 04 04 2F 93 04 00 00 83 27 04 00
93 84 14 00 13 04 44 00 E7 80 07 00 E3 18 99 FE
83 20 C1 00 03 24 81 00 83 24 41 00 03 29 01 00
13 01 01 01 67 80 00 00 13 03 F0 00 13 07 05 00
63 7E C3 02 93 77 F7 00 63 90 07 0A 63 92 05 08
93 76 06 FF 13 76 F6 00 B3 86 E6 00 23 20 B7 00
23 22 B7 00 23 24 B7 00 23 26 B7 00 13 07 07 01
E3 66 D7 FE 63 14 06 00 67 80 00 00 B3 06 C3 40
93 96 26 00 97 02 00 00 B3 86 56 00 67 80 C6 00
23 07 B7 00 A3 06 B7 00 23 06 B7 00 A3 05 B7 00
23 05 B7 00 A3 04 B7 00 23 04 B7 00 A3 03 B7 00
23 03 B7 00 A3 02 B7 00 23 02 B7 00 A3 01 B7 00
23 01 B7 00 A3 00 B7 00 23 00 B7 00 67 80 00 00
93 F5 F5 0F 93 96 85 00 B3 E5 D5 00 93 96 05 01
B3 E5 D5 00 6F F0 DF F6 93 96 27 00 97 02 00 00
B3 86 56 00 93 82 00 00 E7 80 06 FA 93 80 02 00
93 87 07 FF 33 07 F7 40 33 06 F6 00 E3 78 C3 F6
6F F0 DF F3 13 01 01 FD 23 2C 41 01 03 AA 81 C2
23 20 21 03 23 26 11 02 03 29 8A 14 23 24 81 02
23 22 91 02 23 2E 31 01 23 2A 51 01 23 28 61 01
23 26 71 01 23 24 81 01 63 00 09 04 13 0B 05 00
93 8B 05 00 93 0A 10 00 93 09 F0 FF 83 24 49 00
13 84 F4 FF 63 42 04 02 93 94 24 00 B3 04 99 00
63 84 0B 04 83 A7 44 10 63 80 77 05 13 04 F4 FF
93 84 C4 FF E3 16 34 FF 83 20 C1 02 03 24 81 02
83 24 41 02 03 29 01 02 83 29 C1 01 03 2A 81 01
83 2A 41 01 03 2B 01 01 83 2B C1 00 03 2C 81 00
13 01 01 03 67 80 00 00 83 27 49 00 83 A6 44 00
93 87 F7 FF 63 8E 87 04 23 A2 04 00 E3 88 06 FA
83 27 89 18 33 97 8A 00 03 2C 49 00 B3 77 F7 00
63 92 07 02 E7 80 06 00 03 27 49 00 83 27 8A 14
63 14 87 01 E3 84 27 F9 E3 88 07 F8 13 89 07 00
6F F0 DF F5 83 27 C9 18 83 A5 44 08 33 77 F7 00
63 1C 07 00 13 05 0B 00 E7 80 06 00 6F F0 DF FC
23 22 89 00 6F F0 9F FA 13 85 05 00 E7 80 06 00
6F F0 9F FB 13 01 01 FF 23 24 81 00 B7 27 00 00
37 24 00 00 93 87 87 2F 13 04 C4 2F 33 04 F4 40
23 22 91 00 23 26 11 00 93 54 24 40 63 80 04 02
13 04 C4 FF 33 04 F4 00 83 27 04 00 93 84 F4 FF
13 04 C4 FF E7 80 07 00 E3 98 04 FE 83 20 C1 00
03 24 81 00 83 24 41 00 13 01 01 01 67 80 00 00
93 05 05 00 93 06 00 00 13 06 00 00 13 05 00 00
6F 00 40 00 03 A7 81 C2 83 27 87 14 63 8C 07 04
03 A7 47 00 13 08 F0 01 63 4E E8 06 13 18 27 00
63 06 05 02 33 83 07 01 23 24 C3 08 83 A8 87 18
13 06 10 00 33 16 E6 00 B3 E8 C8 00 23 A4 17 19
23 24 D3 10 93 06 20 00 63 04 D5 02 13 07 17 00
23 A2 E7 00 B3 87 07 01 23 A4 B7 00 13 05 00 00
67 80 00 00 93 07 C7 14 23 24 F7 14 6F F0 5F FA
83 A6 C7 18 13 07 17 00 23 A2 E7 00 B3 E6 C6 00
23 A6 D7 18 B3 87 07 01 23 A4 B7 00 13 05 00 00
67 80 00 00 13 05 F0 FF 67 80 00 00 93 08 D0 05
73 00 00 00 63 44 05 00 6F 00 00 00 13 01 01 FF
23 24 81 00 13 04 05 00 23 26 11 00 33 04 80 40
EF 00 C0 00 23 20 85 00 6F 00 00 00 03 A5 01 C3
67 80 00 00
@00001178
3F 00 00 00 06 00 00 00 5B 00 00 00 4F 00 00 00
66 00 00 00 6D 00 00 00 7D 00 00 00 07 00 00 00
7F 00 00 00 6F 00 00 00 00 01 02 02 03 03 03 03
04 04 04 04 04 04 04 04 05 05 05 05 05 05 05 05
05 05 05 05 05 05 05 05 06 06 06 06 06 06 06 06
7F 00 00 00 6F 00 00 00 48 65 6C 6C 6F 2C 20 57
6F 72 6C 64 21 00 00 00 20 62 79 74 65 73 20 72
65 63 65 69 76 65 64 0D 0A 00 00 00 00 01 02 02
03 03 03 03 04 04 04 04 04 04 04 04 05 05 05 05
05 05 05 05 05 05 05 05 05 05 05 05 06 06 06 06
06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06
06 06 06 06 06 06 06 06 07 07 07 07 07 07 07 07
06 06 06 06 06 06 06 06 06 06 06 06 07 07 07 07
07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07
07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07
07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07
07 07 07 07 07 07 07 07 08 08 08 08 08 08 08 08
07 07 07 07 07 07 07 07 07 07 07 07 08 08 08 08
08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
......@@ -232,17 +293,17 @@ B3 E8 C8 00 23 A4 17 19 23 24 D3 10 93 06 20 00
08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
08 08 08 08 08 08 08 08
@00001000
08 08 08 08 08 08 08 08 08 08 08 08
@000022C4
10 00 00 00 00 00 00 00 03 7A 52 00 01 7C 01 01
1B 0D 02 00 10 00 00 00 18 00 00 00 7C F5 FF FF
1B 0D 02 00 10 00 00 00 18 00 00 00 60 E6 FF FF
30 04 00 00 00 00 00 00 00 00 00 00
@0000102C
@000022F0
74 00 00 00 1C 01 00 00
@00001034
@000022F8
D8 00 00 00
@00001038
00 00 00 00 24 13 00 00 8C 13 00 00 F4 13 00 00
@00002300
00 00 00 00 EC 25 00 00 54 26 00 00 BC 26 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
......@@ -309,7 +370,5 @@ D8 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
@00001460
FF FF FF FF 00 00 00 00 00 00 00 00 D0 0D 00 00
@00001470
38 10 00 00 00 00 00 00 38 10 00 00
@00002728
00 23 00 00 00 00 00 00 00 23 00 00
:10007400930700006388070037150000130505C9BE
:100084006F00904667800000971100009381C17A49
:10009400138541C4138601C63306A64093050000A8
:1000A400EF00101F17150000130545C46308050071
:1000B400171500001305C5BDEF001043EF009013A2
:1000C400032501009305410013060000EF00C00A58
:1000D4006F00500F130101FF2324810083C741C423
:100074009307000063880700371500001305850304
:100084006F1000016780000097310000938141A741
:10009400138541C3138601C53306A64093050000AA
:1000A400EF009059171500001305C5FE63080500FD
:1000B40017150000130545F8EF00907DEF00104E72
:1000C400032501009305410013060000EF000040E2
:1000D4006F00D049130101FF2324810083C741C36A
:1000E400232611006392070293070000638A070026
:1000F400371500001305050097000000E700000015
:10010400930710002382F1C48320C10003248100DB
:1000F400372500001305452C97000000E700000099
:1001040093071000238AF1C28320C10003248100D5
:10011400130101016780000093070000638C07004E
:1001240037150000938581C41305050017030000EB
:100134006700000067800000130101FE232E810088
:10014400130401022326A4FE0327C4FE9307A00080
:10015400B377F70217170000032747319397270057
:10016400B307F70083A70700138507000324C10121
:100174001301010267800000130101FB232611040F
:10018400232481042322910413040105232EA4FAB9
:10019400232CB4FA930710002322F4FEB70700F0CF
:1001A4002320F4FEB70700F093870701232EF4FC05
:1001B400B70700F093870710232CF4FC9307000083
:1001C400130800002324F4FE232604FF8327C4FD20
:1001D40037077F6F1307D77723A0E7008327C4FD72
:1001E400938747003757666D1307B7F523A0E700D9
:1001F400832784FD938707011307201B23A0E700AF
:10020400832784FD9387870083A70700232AF4FCB0
:10021400032744FDB7070100B377F700639E070285
:10022400832784FD83A707002322F4FC832744FC4F
:1002340063DA0700832784FD93874700130730029E
:1002440023A0E700832784FD93874700032744FC0A
:1002540023A0E7006F00C033832704FE83A70700B1
:100264002328F4FC832704FD93F71700638C07000D
:1002740093070000130800002324F4FE232604FF40
:100284006F004007832704FD93F727006386070068
:10029400232204FE6F000006832704FD93F7470022
:1002A40063880700930710002322F4FE6F00800484
:1002B400832704FD93F78700638C0700832784FD5D
:1002C400938707011307201B23A0E7006F00402C2E
:1002D400832704FD93F70701638E0700832784FDBA
:1002E40093870701371700001307874523A0E7000A
:1002F4006F00002A832744FE638A0702032684FED4
:100304008326C4FE13051000930500003307A600DE
:10031400130807003338C800B387B600B306F800E3
:10032400938706002324E4FE2326F4FE032784FE99
:100334008327C4FE2324E4FC2326F4FC832784FCC3
:1003440013850700EFF05FDF93040500032784FCA7
:100354008327C4FC1306A0009306000013050700BE
:1003640093850700EF00002313070500938705001A
:100374009307070013850700EFF01FDC93070500C0
:1003840093978700B3E4F400032784FC8327C4FC19
:100394001306400693060000130507009385070023
:1003A400EF00401F1307050093870500930707001C
:1003B40013850700EFF05FD89307050093970701B3
:1003C400B3E4F400032784FC8327C4FC1306803EB3
:1003D400930600001305070093850700EF00801BB8
:1003E400130705009387050093070700138507008B
:1003F400EFF09FD4930705009397870133E7F40048
:100404008327C4FD23A0E700032784FC8327C4FCBF
:100414003726000013060671930600001305070033
:1004240093850700EF000017130705009387050065
:100434002324E4FC2326F4FC832784FC138507008F
:10044400EFF09FCF93040500032784FC8327C4FCAB
:100454001306A00093060000130507009385070008
:10046400EF00401313070500938705009307070067
:1004740013850700EFF05FCC93070500939787007F
:10048400B3E4F400032784FC8327C4FC130640066A
:10049400930600001305070093850700EF00800F03
:1004A40013070500938705009307070013850700CA
:1004B400EFF09FC89307050093970701B3E4F40096
:1004C400032784FC8327C4FC1306803E93060000A4
:1004D4001305070093850700EF00C00B1307050001
:1004E400938705009307070013850700EFF0DFC427
:1004F40093070500139787018327C4FD938747005B
:1005040033E7E40023A0E700032784FC8327C4FC2B
:100514003726000013060671930600001305070032
:1005240093850700EF000007130705009387050074
:100534002324E4FC2326F4FC832784FC138507008E
:10054400EFF09FBF93040500032784FC8327C4FCBA
:100554001306A00093060000130507009385070007
:10056400EF00400313070500938705009307070076
:1005740013850700EFF05FBC93070500139787000E
:100584008327C4FD9387870033E7E40023A0E700B3
:100594006FF01FC7130305009388050013070600B7
:1005A400130805009387050063920628B715000019
:1005B400938585DF63F6C80EB70601006378D60C11
:1005C4009336061093C61600939636003355D6001C
:1005D400B385A50083C5050013050002B386D500C5
:1005E400B305D540630CD500B397B800B356D30018
:1005F4003317B600B3E7F6003318B3009355070179
:1006040033D3B7021316070113560601B3F7B70223
:1006140013050300B3086602939607019357080174
:10062400B3E7D70063FE1701B387E7001305F3FFB1
:1006340063E8E70063F617011305E3FFB387E700F8
:10064400B3871741B3D8B702131808011358080128
:10065400B3F7B702B3061603939707013368F8009C
:1006640093870800637CD800330807019387F8FF59
:100674006366E8006374D8009387E8FF13150501E7
:100684003365F5009305000067800000370500011D
:1006940093060001E36CA6F2930680016FF01FF34A
:1006A4006314060073001000B70701006370F60CB2
:1006B4009336061093C6160093963600B357D600A9
:1006C400B385F50083C70500B387D70093060002FE
:1006D400B385F6406396F60AB387C84093051000C5
:1006E4009358070133DE1703131607011356060147
:1006F40093560801B3F7170313050E003303C6031B
:1007040093970701B3E7F60063FE6700B387E7003A
:100714001305FEFF63E8E70063F667001305EEFFC9
:10072400B387E700B387674033D31703131808016F
:1007340013580801B3F71703B3066602939707012A
:100744003368F80093070300637CD800330807017B
:100754009307F3FF6366E8006374D8009307E3FF2D
:10076400131505013365F50067800000B707000124
:1007740093060001E364F6F4930680016FF01FF41E
:100784003317B600B3D6F80013550701B357F30077
:100794003318B30033D3A60213160701B398B80075
:1007A40013560601B3E71701B3F6A602B3086602AF
:1007B4009395060193D60701B3E6B60093050300AB
:1007C40063FE1601B386E6009305F3FF63E8E600D3
:1007D40063F616019305E3FFB386E600B38616417C
:1007E400B3D8A6029397070193D70701B3F6A602DD
:1007F4003306160393960601B3E7D70093860800E1
:1008040063FEC700B387E7009386F8FF63E8E70059
:1008140063F6C7009386E8FFB387E7009395050165
:10082400B387C740B3E5D5006FF09FEB63E6D518F7
:10083400B707010063F4F60413B706101347170053
:1008440013173700B7170000B3D5E600938787DF87
:10085400B387B70083C70700B387E7001307000215
:10086400B305F7406316F70213051000E3EE16E133
:100874003335C3001345150067800000B707000136
:1008840013070001E3E0F6FC130780016FF09FFB00
:100894003357F600B396B600B366D70033D7F800E3
:1008A400B398B800B357F300B3E7170193D8060120
:1008B400B35E170313980601135808013316B600E4
:1008C40033771703330ED8031315070113D7070122
:1008D4003367A70013850E00637EC7013307D70073
:1008E4001385FEFF6368D7006376C7011385EEFFA7
:1008F4003307D7003307C741335E170393970701C4
:1009040093D70701337717033308C8031317070175
:10091400B3E7E70013070E0063FE0701B387D700B0
:100924001307FEFF63E8D70063F607011307EEFF22
:10093400B387D70013150501370E01003365E500B1
:100944009306FEFF3377D500B3870741B376D6000D
:100954001358050113560601B308D702B306D8028B
:100964003307C7023308C8023306D70013D7080178
:100974003307C7006374D7003308C80193560701CF
:10098400B386060163E6D702E39ED7CEB70701001C
:100994009387F7FF3377F70013170701B3F8F800CD
:1009A4003313B3003307170193050000E37EE3CC50
:1009B4001305F5FF6FF01FCD93050000130500002C
:1009C40067800000130101FF9305000023248100C8
:1009D4002326110013040500EF00401903A581C369
:1009E4008327C50363840700E78007001305040019
:1009F400EF00403A130101FF232481002320210149
:100A040037140000371900009307C4021309C90200
:100A14003309F94023261100232291001359294058
:100A2400630009021304C402930400008327040032
:100A34009384140013044400E7800700E31899FE2C
:100A440037140000371900009307C402130949033F
:100A54003309F94013592940630009021304C402FD
:100A640093040000832704009384140013044400B7
:100A7400E7800700E31899FE8320C1000324810066
:100A84008324410003290100130101016780000050
:100A94001303F00013070500637EC3029377F70086
:100AA4006390070A63920508937606FF1376F600AF
:100AB400B386E6002320B7002322B7002324B7001F
:100AC4002326B70013070701E366D7FE6314060065
:100AD40067800000B306C340939626009702000087
:100AE400B38656006780C6002307B700A306B70085
:100AF4002306B700A305B7002305B700A304B70076
:100B04002304B700A303B7002303B700A302B7006D
:100B14002302B700A301B7002301B700A300B70065
:100B24002300B7006780000093F5F50F93968500C6
:100B3400B3E5D50093960501B3E5D5006FF0DFF674
:100B44009396270097020000B38656009382000014
:100B5400E78006FA93800200938707FF3307F74084
:100B64003306F600E378C3F66FF0DFF3130101FDFB
:100B7400232C410103AA81C323202103232611022C
:100B840003298A142324810223229102232E310172
:100B9400232A510123286101232671012324810181
:100BA40063000904130B0500938B0500930A1000DE
:100BB4009309F0FF832449001384F4FF6342040281
:100BC40093942400B304990063840B0483A7441012
:100BD400638077051304F4FF9384C4FFE31634FFA2
:100BE4008320C102032481028324410203290102D8
:100BF4008329C101032A8101832A4101032B0101B5
:100C0400832BC100032C81001301010367800000C2
:100C14008327490083A644009387F7FF638E8704E4
:100C240023A20400E38806FA8327891833978A00ED
:100C3400032C4900B377F70063920702E7800600AC
:100C44000327490083278A1463148701E38427F95F
:100C5400E38807F8138907006FF0DFF58327C918C5
:100C640083A544083377F700631C070013050B00C2
:100C7400E78006006FF0DFFC232289006FF09FFA03
:100C840013850500E78006006FF09FFB130101FF49
:100C940023248100B717000037140000938747030B
:100CA400130484033304F440232291002326110007
:100CB40093542440638004021304C4FF3304F400F7
:100CC400832704009384F4FF1304C4FFE780070020
:100CD400E39804FE8320C10003248100832441009F
:100CE40013010101678000009305050093060000CD
:100CF40013060000130500006F00400003A781C322
:100D040083278714638C070403A747001308F001A3
:100D1400634EE806131827006306050233830701B0
:100D24002324C30883A88718130610003316E6008B
:100D3400B3E8C80023A417192324D3109306200072
:100D44006304D5021307170023A2E700B387070142
:100D540023A4B70013050000678000009307C7149D
:100D64002324F7146FF05FFA83A6C718130717003C
:100D740023A2E700B3E6C60023A6D718B38707016A
:100D840023A4B70013050000678000001305F0FFDB
:100D9400678000009308D0057300000063440500D9
:100DA4006F000000130101FF2324810013040500D8
:100DB4002326110033048040EF00C0002320850067
:0C0DC4006F00000003A501C46780000060
:100DD0003F000000060000005B0000004F00000024
:100DE000660000006D0000007D00000007000000AC
:100DF0007F0000006F0000000001020203030303F4
:100E0000040404040404040405050505050505059A
:100E1000050505050505050506060606060606067A
:100E20000606060606060606060606060606060662
:100E3000060606060606060607070707070707074A
:100E40000707070707070707070707070707070732
:100E50000707070707070707070707070707070722
:100E60000707070707070707070707070707070712
:100E700007070707070707070808080808080808FA
:100E800008080808080808080808080808080808E2
:100E900008080808080808080808080808080808D2
:100EA00008080808080808080808080808080808C2
:100EB00008080808080808080808080808080808B2
:100EC00008080808080808080808080808080808A2
:100ED0000808080808080808080808080808080892
:100EE0000808080808080808080808080808080882
:080EF0000808080808080808BA
:101000001000000000000000037A5200017C010182
:101010001B0D020010000000180000007CF5FFFF0F
:0C10200030040000000000000000000090
:08102C00740000001C0100002B
:04103400D8000000E0
:1010380000000000241300008C130000F4130000CB
:101048000000000000000000000000000000000098
:101058000000000000000000000000000000000088
:101068000000000000000000000000000000000078
:101078000000000000000000000000000000000068
:101088000000000000000000000000000000000058
:101098000000000000000000000000000000000048
:1010A8000000000000000000000000000000000038
:1010B8000000000000000000000000000000000028
:1010C8000000000000000000000000000000000018
:1010D8000000000000000000010000000000000007
:1010E8000E33CDAB34126DE6ECDE05000B000000CC
:1010F80000000000000000000000000000000000E8
:1011080000000000000000000000000000000000D7
:1011180000000000000000000000000000000000C7
:1011280000000000000000000000000000000000B7
:1011380000000000000000000000000000000000A7
:101148000000000000000000000000000000000097
:101158000000000000000000000000000000000087
:101168000000000000000000000000000000000077
:101178000000000000000000000000000000000067
:101188000000000000000000000000000000000057
:101198000000000000000000000000000000000047
:1011A8000000000000000000000000000000000037
:1011B8000000000000000000000000000000000027
:1011C8000000000000000000000000000000000017
:1011D8000000000000000000000000000000000007
:1011E80000000000000000000000000000000000F7
:1011F80000000000000000000000000000000000E7
:1012080000000000000000000000000000000000D6
:1012180000000000000000000000000000000000C6
:1012280000000000000000000000000000000000B6
:1012380000000000000000000000000000000000A6
:101248000000000000000000000000000000000096
:101258000000000000000000000000000000000086
:101268000000000000000000000000000000000076
:101278000000000000000000000000000000000066
:101288000000000000000000000000000000000056
:101298000000000000000000000000000000000046
:1012A8000000000000000000000000000000000036
:1012B8000000000000000000000000000000000026
:1012C8000000000000000000000000000000000016
:1012D8000000000000000000000000000000000006
:1012E80000000000000000000000000000000000F6
:1012F80000000000000000000000000000000000E6
:1013080000000000000000000000000000000000D5
:1013180000000000000000000000000000000000C5
:1013280000000000000000000000000000000000B5
:1013380000000000000000000000000000000000A5
:101348000000000000000000000000000000000095
:101358000000000000000000000000000000000085
:101368000000000000000000000000000000000075
:101378000000000000000000000000000000000065
:101388000000000000000000000000000000000055
:101398000000000000000000000000000000000045
:1013A8000000000000000000000000000000000035
:1013B8000000000000000000000000000000000025
:1013C8000000000000000000000000000000000015
:1013D8000000000000000000000000000000000005
:1013E80000000000000000000000000000000000F5
:1013F80000000000000000000000000000000000E5
:1014080000000000000000000000000000000000D4
:1014180000000000000000000000000000000000C4
:1014280000000000000000000000000000000000B4
:1014380000000000000000000000000000000000A4
:101448000000000000000000000000000000000094
:0814580000000000000000008C
:10146000FFFFFFFF0000000000000000D00D0000A3
:0C147000381000000000000038100000E0
:1001240037250000938581C31305452C1703000070
:100134006700000067800000130101FD232681028F
:1001440013040103232EA4FC232CB4FCB70700F0F2
:10015400938707102324F4FE232604FE6F008004F3
:10016400832784FE9387870083A707002322F4FE56
:10017400832744FE93F72700638607028327C4FE80
:100184000327C4FDB307F70003C70700832784FED2
:100194009387470023A0E7008327C4FE93871700B3
:1001A4002326F4FE0327C4FE832784FDE34AF7FADB
:1001B400832784FD138507000324C102130101036F
:1001C40067800000130101FD23268102130401034B
:1001D400232EA4FC232CB4FCB70700F0938707104C
:1001E4002324F4FE832784FD6346F0009307000074
:1001F4006F00C009232604FE832784FE93878700AB
:1002040083A707002322F4FE032744FEB707010057
:10021400B377F70063920706832744FE93D7170149
:100224002322F4FE832784FD032744FE6376F7002C
:10023400832744FE232CF4FC232604FE6F00C00213
:10024400832784FE83A607008327C4FE0327C4FDF7
:10025400B307F70013F7F60F2380E7008327C4FEE4
:10026400938717002326F4FE0327C4FE832784FD07
:10027400E348F7FC6F00C000930700006F00000123
:100284008327C4FEE38A07F68327C4FE1385070089
:100294000324C1021301010367800000130101FE5E
:1002A400232E8100130401022326A4FE0327C4FE87
:1002B4009307A000B377F7023717000013078717D7
:1002C40093972700B307F70083A707001385070058
:1002D4000324C1011301010267800000130101FC22
:1002E400232E8102130401042326A4FC2324B4FC3A
:1002F400232404FE232204FE832784FC63DE0704F4
:10030400832784FCB307F0402324F4FC232204FE57
:100314006F008004032784FC9307A000B367F702EF
:1003240013F7F70F832784FE938617002324D4FE44
:10033400938607008327C4FCB387D70013070703FA
:100344001377F70F2380E700032784FC9307A000AB
:10035400B347F7022324F4FC832784FCE34CF0FA2C
:10036400832744FE63820702832784FE13871700D2
:100374002324E4FE138707008327C4FCB387E70024
:100384001307D0022380E700232604FE6F00C00673
:10039400832784FE1387F7FF8327C4FEB307F74040
:1003A4002320F4FE8327C4FE0327C4FCB307F7000D
:1003B40083C70700A30FF4FC832704FE0327C4FCB0
:1003C4003307F7008327C4FE8326C4FCB387F600F3
:1003D400034707002380E700832704FE0327C4FCA8
:1003E400B307F7000347F4FD2380E7008327C4FE27
:1003F400938717002326F4FE832784FE13D7F7017F
:10040400B307F70093D71740138707008327C4FE69
:10041400E3C0E7F8832784FE0327C4FCB307F7008F
:1004240023800700832784FE138507000324C10368
:100434001301010467800000130101FD23268102DA
:1004440013040103232EA4FC232CB4FC8327C4FD32
:100454002326F4FE6F0000018327C4FD9387170051
:10046400232EF4FC8327C4FD83C70700E39607FE0D
:100474006F004002032784FD93071700232CF4FC2C
:100484008327C4FD93861700232ED4FC034707005B
:100494002380E700832784FD83C70700E39C07FCD0
:1004A4008327C4FD13871700232EE4FC2380070051
:1004B4000327C4FD8327C4FEB307F7401385070051
:1004C4000324C1021301010367800000130101EA40
:1004D400232E1114232C8114232A9114130401169E
:1004E4002326A4EA2324B4EA93071000232EF4FC61
:1004F400B70700F0232CF4FCB70700F0938707013B
:10050400232AF4FCB70700F0938707102328F4FC90
:1005140093070000130800002324F4FE232604FF9D
:10052400832744FD37077F6F1307D77723A0E7009E
:10053400832744FD938747003757666D1307B7F544
:1005440023A0E700832704FD938707011307201BDB
:1005540023A0E700232204FE232004FEB717000093
:100564009387071A2326F4FC930784EB9305F00F73
:1005740013850700EFF01FC52324A4FC832784FC04
:10058400635AF002930784EB832584FC13850700E8
:10059400EFF09FBA032744FE832784FCB307F700D8
:1005A4002322F4FE032704FE832784FCB307F70009
:1005B4002320F4FE032704FE9307703E63D2E7046E
:1005C400930784EB832544FE13850700EFF01FD1C6
:1005D4002322A4FC130784EBB71700009385071BA1
:1005E40013050700EFF05FE52322A4FC930784EBD7
:1005F400832544FC13850700EFF01FB4232004FE79
:10060400832784FD83A707002320F4FC832704FCAD
:1006140093F71700638C070093070000130800008A
:100624002324F4FE232604FF6F004007832704FCE1
:1006340093F7270063860700232E04FC6F0000064F
:10064400832704FC93F7470063880700930710008F
:10065400232EF4FC6F008004832704FC93F78700A7
:10066400638C0700832704FD938707011307201B6E
:1006740023A0E7006F00402C832704FC93F70701B5
:10068400638E0700832704FD938707013717000053
:100694001307874523A0E7006F00002A8327C4FDC2
:1006A400638A0702032684FE8326C4FE1305100012
:1006B400930500003307A600130807003338C80069
:1006C400B387B600B306F800938706002324E4FE3C
:1006D4002326F4FE832704FE232CF4FA93D7F74150
:1006E400232EF4FA832784FB13850700EFF01FBB46
:1006F40093040500032784FB8327C4FB1306A0008F
:10070400930600001305070093850700EF000023FC
:100714001307050093870500930707001385070057
:10072400EFF0DFB79307050093978700B3E4F40075
:10073400032784FB8327C4FB1306400693060000AB
:100744001305070093850700EF00401F13070500FA
:10075400938705009307070013850700EFF01FB484
:100764009307050093970701B3E4F400032784FB80
:100774008327C4FB1306803E93060000130507007D
:1007840093850700EF00801B13070500938705007E
:100794009307070013850700EFF05FB09307050088
:1007A4009397870133E7F400832744FD23A0E700F0
:1007B400032784FB8327C4FB372600001306067136
:1007C400930600001305070093850700EF00001748
:1007D4001307050093870500232CE4FA232EF4FA6B
:1007E400832784FB13850700EFF05FAB93040500B8
:1007F400032784FB8327C4FB1306A0009306000091
:100804001305070093850700EF0040131307050045
:10081400938705009307070013850700EFF01FA8CF
:100824009307050093978700B3E4F400032784FB40
:100834008327C4FB13064006930600001305070034
:1008440093850700EF00800F1307050093870500C9
:100854009307070013850700EFF05FA493070500D3
:1008640093970701B3E4F400032784FB8327C4FBB5
:100874001306803E930600001305070093850700C6
:10088400EF00C00B130705009387050093070700CB
:1008940013850700EFF09FA09307050013978701C6
:1008A400832744FD9387470033E7E40023A0E70050
:1008B400032784FB8327C4FB372600001306067135
:1008C400930600001305070093850700EF00000757
:1008D4001307050093870500232CE4FA232EF4FA6A
:1008E400832784FB13850700EFF05F9B93040500C7
:1008F400032784FB8327C4FB1306A0009306000090
:100904001305070093850700EF0040031307050054
:10091400938705009307070013850700EFF01F98DE
:100924009307050013978700832744FD9387870067
:1009340033E7E40023A0E7006FF05FC21303050070
:100944009388050013070600130805009387050024
:1009540063920628B71500009385451C63F6C80EFC
:10096400B70601006378D60C9336061093C61600BA
:10097400939636003355D600B385A50083C505008C
:1009840013050002B386D500B305D540630CD5002A
:10099400B397B800B356D3003317B600B3E7F600E5
:1009A4003318B3009355070133D3B7021316070165
:1009B40013560601B3F7B70213050300B308660222
:1009C4009396070193570801B3E7D70063FE170115
:1009D400B387E7001305F3FF63E8E70063F6170145
:1009E4001305E3FFB387E700B3871741B3D8B70212
:1009F4001318080113580801B3F7B702B306160316
:100A0400939707013368F80093870800637CD80044
:100A1400330807019387F8FF6366E8006374D8001E
:100A24009387E8FF131505013365F500930500006E
:100A3400678000003705000193060001E36CA6F20D
:100A4400930680016FF01FF3631406007300100017
:100A5400B70701006370F60C9336061093C61600B0
:100A640093963600B357D600B385F50083C70500C7
:100A7400B387D70093060002B385F6406396F60A5F
:100A8400B387C840930510009358070133DE17035A
:100A9400131607011356060193560801B3F71703FB
:100AA40013050E003303C60393970701B3E7F6005B
:100AB40063FE6700B387E7001305FEFF63E8E70002
:100AC40063F667001305EEFFB387E700B38767405B
:100AD40033D317031318080113580801B3F7170386
:100AE400B3066602939707013368F800930703007F
:100AF400637CD800330807019307F3FF6366E800BB
:100B04006374D8009307E3FF131505013365F500FB
:100B140067800000B707000193060001E364F6F460
:100B2400930680016FF01FF43317B600B3D6F800B4
:100B340013550701B357F3003318B30033D3A60298
:100B440013160701B398B80013560601B3E717014B
:100B5400B3F6A602B30866029395060193D607017D
:100B6400B3E6B6009305030063FE1601B386E60000
:100B74009305F3FF63E8E60063F616019305E3FFCC
:100B8400B386E600B3861641B3D8A602939707014D
:100B940093D70701B3F6A60233061603939606010C
:100BA400B3E7D7009386080063FEC700B387E70066
:100BB4009386F8FF63E8E70063F6C7009386E8FFCF
:100BC400B387E70093950501B387C740B3E5D50024
:100BD4006FF09FEB63E6D518B707010063F4F604E2
:100BE40013B706101347170013173700B717000081
:100BF400B3D5E6009387471CB387B70083C70700C4
:100C0400B387E70013070002B305F7406316F70242
:100C140013051000E3EE16E13335C3001345150048
:100C240067800000B707000113070001E3E0F6FC4A
:100C3400130780016FF09FFB3357F600B396B6009D
:100C4400B366D70033D7F800B398B800B357F300AE
:100C5400B3E7170193D80601B35E1703139806018F
:100C6400135808013316B60033771703330ED8032D
:100C74001315070113D707013367A70013850E0067
:100C8400637EC7013307D7001385FEFF6368D7006F
:100C94006376C7011385EEFF3307D7003307C741D7
:100CA400335E17039397070193D70701337717032D
:100CB4003308C80313170701B3E7E70013070E004F
:100CC40063FE0701B387D7001307FEFF63E8D7006D
:100CD40063F607011307EEFFB387D7001315050169
:100CE400370E01003365E5009306FEFF3377D50028
:100CF400B3870741B376D60013580501135606018E
:100D0400B308D702B306D8023307C7023308C802B0
:100D14003306D70013D708013307C7006374D7001D
:100D24003308C80193560701B386060163E6D70268
:100D3400E39ED7CEB70701009387F7FF3377F70019
:100D440013170701B3F8F8003313B300330717017F
:100D540093050000E37EE3CC1305F5FF6FF01FCD90
:100D6400930500001305000067800000130101FFD4
:100D74009305000023248100232611001304050099
:100D8400EF00401903A581C28327C50363840700CC
:100D9400E780070013050400EF00403A130101FF48
:100DA4002324810023202101372400003729000057
:100DB4009307042F1309092F3309F940232611003F
:100DC4002322910013592940630009021304042FBC
:100DD4009304000083270400938414001304440044
:100DE400E7800700E31899FE372400003729000044
:100DF4009307042F1309892F3309F9401359294004
:100E0400630009021304042F9304000083270400E1
:100E14009384140013044400E7800700E31899FE48
:100E24008320C1000324810083244100032901009D
:100E340013010101678000001303F000130705008C
:100E4400637EC3029377F7006390070A63920508F1
:100E5400937606FF1376F600B386E6002320B700E8
:100E64002322B7002324B7002326B7001307070162
:100E7400E366D7FE6314060067800000B306C34030
:100E84009396260097020000B38656006780C6003A
:100E94002307B700A306B7002306B700A305B700CE
:100EA4002305B700A304B7002304B700A303B700C6
:100EB4002303B700A302B7002302B700A301B700BE
:100EC4002301B700A300B7002300B7006780000028
:100ED40093F5F50F93968500B3E5D5009396050138
:100EE400B3E5D5006FF0DFF6939627009702000074
:100EF400B386560093820000E78006FA93800200CE
:100F0400938707FF3307F7403306F600E378C3F609
:100F14006FF0DFF3130101FD232C410103AA81C209
:100F2400232021032326110203298A142324810266
:100F340023229102232E3101232A51012328610106
:100F4400232671012324810163000904130B050086
:100F5400938B0500930A10009309F0FF8324490042
:100F64001384F4FF6342040293942400B3049900AD
:100F740063840B0483A74410638077051304F4FF90
:100F84009384C4FFE31634FF8320C1020324810247
:100F940083244102032901028329C101032A810117
:100FA400832A4101032B0101832BC100032C8100FF
:100FB40013010103678000008327490083A64400CE
:100FC4009387F7FF638E870423A20400E38806FA5D
:100FD4008327891833978A00032C4900B377F700D5
:100FE40063920702E78006000327490083278A14D7
:100FF40063148701E38427F9E38807F8138907005A
:101004006FF0DFF58327C91883A544083377F70009
:10101400631C070013050B00E78006006FF0DFFC7C
:10102400232289006FF09FFA13850500E7800600EC
:101034006FF09FFB130101FF23248100B7270000F9
:10104400372400009387872F1304C42F3304F440FC
:101054002322910023261100935424406380040228
:101064001304C4FF3304F400832704009384F4FFBF
:101074001304C4FFE7800700E39804FE8320C10043
:1010840003248100832441001301010167800000CF
:1010940093050500930600001306000013050000E5
:1010A4006F00400003A781C283278714638C070461
:1010B40003A747001308F001634EE806131827003E
:1010C40063060502338307012324C30883A8871812
:1010D400130610003316E600B3E8C80023A417195A
:1010E4002324D310930620006304D50213071700AA
:1010F40023A2E700B387070123A4B7001305000068
:10110400678000009307C7142324F7146FF05FFA75
:1011140083A6C7181307170023A2E700B3E6C60087
:1011240023A6D718B387070123A4B700130500002B
:10113400678000001305F0FF678000009308D00566
:1011440073000000634405006F000000130101FFF9
:101154002324810013040500232611003304804056
:10116400EF00C000232085006F00000003A501C329
:041174006780000090
:101178003F000000060000005B0000004F00000078
:10118800660000006D0000007D0000000700000000
:101198007F0000006F00000048656C6C6F2C2057C2
:1011A8006F726C642100000020627974657320728C
:1011B800656365697665640D0A0000000001020236
:1011C80003030303040404040404040405050505D7
:1011D80005050505050505050505050506060606B3
:1011E8000606060606060606060606060606060697
:1011F8000606060606060606060606060707070783
:101208000707070707070707070707070707070766
:101218000707070707070707070707070707070756
:101228000707070707070707070707070707070746
:101238000707070707070707070707070808080832
:101248000808080808080808080808080808080816
:101258000808080808080808080808080808080806
:1012680008080808080808080808080808080808F6
:1012780008080808080808080808080808080808E6
:1012880008080808080808080808080808080808D6
:1012980008080808080808080808080808080808C6
:1012A80008080808080808080808080808080808B6
:0C12B800080808080808080808080808CA
:1022C4001000000000000000037A5200017C0101AC
:1022D4001B0D0200100000001800000060E6FFFF64
:0C22E400300400000000000000000000BA
:0822F000740000001C01000055
:0422F800D80000000A
:1023000000000000EC25000054260000BC26000060
:1023100000000000000000000000000000000000BD
:1023200000000000000000000000000000000000AD
:10233000000000000000000000000000000000009D
:10234000000000000000000000000000000000008D
:10235000000000000000000000000000000000007D
:10236000000000000000000000000000000000006D
:10237000000000000000000000000000000000005D
:10238000000000000000000000000000000000004D
:10239000000000000000000000000000000000003D
:1023A000000000000000000001000000000000002C
:1023B0000E33CDAB34126DE6ECDE05000B000000F1
:1023C000000000000000000000000000000000000D
:1023D00000000000000000000000000000000000FD
:1023E00000000000000000000000000000000000ED
:1023F00000000000000000000000000000000000DD
:1024000000000000000000000000000000000000CC
:1024100000000000000000000000000000000000BC
:1024200000000000000000000000000000000000AC
:10243000000000000000000000000000000000009C
:10244000000000000000000000000000000000008C
:10245000000000000000000000000000000000007C
:10246000000000000000000000000000000000006C
:10247000000000000000000000000000000000005C
:10248000000000000000000000000000000000004C
:10249000000000000000000000000000000000003C
:1024A000000000000000000000000000000000002C
:1024B000000000000000000000000000000000001C
:1024C000000000000000000000000000000000000C
:1024D00000000000000000000000000000000000FC
:1024E00000000000000000000000000000000000EC
:1024F00000000000000000000000000000000000DC
:1025000000000000000000000000000000000000CB
:1025100000000000000000000000000000000000BB
:1025200000000000000000000000000000000000AB
:10253000000000000000000000000000000000009B
:10254000000000000000000000000000000000008B
:10255000000000000000000000000000000000007B
:10256000000000000000000000000000000000006B
:10257000000000000000000000000000000000005B
:10258000000000000000000000000000000000004B
:10259000000000000000000000000000000000003B
:1025A000000000000000000000000000000000002B
:1025B000000000000000000000000000000000001B
:1025C000000000000000000000000000000000000B
:1025D00000000000000000000000000000000000FB
:1025E00000000000000000000000000000000000EB
:1025F00000000000000000000000000000000000DB
:1026000000000000000000000000000000000000CA
:1026100000000000000000000000000000000000BA
:1026200000000000000000000000000000000000AA
:10263000000000000000000000000000000000009A
:10264000000000000000000000000000000000008A
:10265000000000000000000000000000000000007A
:10266000000000000000000000000000000000006A
:10267000000000000000000000000000000000005A
:10268000000000000000000000000000000000004A
:10269000000000000000000000000000000000003A
:1026A000000000000000000000000000000000002A
:1026B000000000000000000000000000000000001A
:1026C000000000000000000000000000000000000A
:1026D00000000000000000000000000000000000FA
:1026E00000000000000000000000000000000000EA
:1026F00000000000000000000000000000000000DA
:1027000000000000000000000000000000000000C9
:1027100000000000000000000000000000000000B9
:082720000000000000000000B1
:0C2728000023000000000000002300005F
:040000030000008C6D
:00000001FF
......@@ -10,40 +10,39 @@ ELF Header:
Version: 0x1
Entry point address: 0x8c
Start of program headers: 52 (bytes into file)
Start of section headers: 15852 (bytes into file)
Start of section headers: 16592 (bytes into file)
Flags: 0x0
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 2
Size of section headers: 40 (bytes)
Number of section headers: 23
Section header string table index: 22
Number of section headers: 22
Section header string table index: 21
Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[ 0] NULL 00000000 000000 000000 00 0 0 0
[ 1] .text PROGBITS 00000074 000074 000d5c 00 AX 0 0 4
[ 2] .rodata PROGBITS 00000dd0 000dd0 000128 00 A 0 0 4
[ 3] .eh_frame PROGBITS 00001000 001000 00002c 00 WA 0 0 4
[ 4] .init_array INIT_ARRAY 0000102c 00102c 000008 04 WA 0 0 4
[ 5] .fini_array FINI_ARRAY 00001034 001034 000004 04 WA 0 0 4
[ 6] .data PROGBITS 00001038 001038 000428 00 WA 0 0 8
[ 7] .got PROGBITS 00001460 001460 000010 04 WA 0 0 4
[ 8] .sdata PROGBITS 00001470 001470 00000c 00 WA 0 0 4
[ 9] .bss NOBITS 0000147c 00147c 00001c 00 WA 0 0 4
[10] .comment PROGBITS 00000000 00147c 000012 01 MS 0 0 1
[11] .riscv.attributes RISCV_ATTRIBUTE 00000000 00148e 000021 00 0 0 1
[12] .debug_aranges PROGBITS 00000000 0014af 000038 00 0 0 1
[13] .debug_info PROGBITS 00000000 0014e7 000839 00 0 0 1
[14] .debug_abbrev PROGBITS 00000000 001d20 000216 00 0 0 1
[15] .debug_line PROGBITS 00000000 001f36 000766 00 0 0 1
[16] .debug_str PROGBITS 00000000 00269c 000296 01 MS 0 0 1
[17] .debug_line_str PROGBITS 00000000 002932 0000b0 01 MS 0 0 1
[18] .debug_loclists PROGBITS 00000000 0029e2 000a99 00 0 0 1
[19] .debug_rnglists PROGBITS 00000000 00347b 000111 00 0 0 1
[20] .symtab SYMTAB 00000000 00358c 0004d0 10 21 52 4
[21] .strtab STRTAB 00000000 003a5c 0002a3 00 0 0 1
[22] .shstrtab STRTAB 00000000 003cff 0000ed 00 0 0 1
[ 1] .text PROGBITS 00000074 000074 001104 00 AX 0 0 4
[ 2] .rodata PROGBITS 00001178 001178 00014c 00 A 0 0 4
[ 3] .eh_frame PROGBITS 000022c4 0012c4 00002c 00 WA 0 0 4
[ 4] .init_array INIT_ARRAY 000022f0 0012f0 000008 04 WA 0 0 4
[ 5] .fini_array FINI_ARRAY 000022f8 0012f8 000004 04 WA 0 0 4
[ 6] .data PROGBITS 00002300 001300 000428 00 WA 0 0 8
[ 7] .sdata PROGBITS 00002728 001728 00000c 00 WA 0 0 4
[ 8] .bss NOBITS 00002734 001734 00001c 00 WA 0 0 4
[ 9] .comment PROGBITS 00000000 001734 000012 01 MS 0 0 1
[10] .riscv.attributes RISCV_ATTRIBUTE 00000000 001746 000026 00 0 0 1
[11] .debug_aranges PROGBITS 00000000 00176c 000038 00 0 0 1
[12] .debug_info PROGBITS 00000000 0017a4 000839 00 0 0 1
[13] .debug_abbrev PROGBITS 00000000 001fdd 000216 00 0 0 1
[14] .debug_line PROGBITS 00000000 0021f3 000766 00 0 0 1
[15] .debug_str PROGBITS 00000000 002959 00029a 01 MS 0 0 1
[16] .debug_line_str PROGBITS 00000000 002bf3 0000aa 01 MS 0 0 1
[17] .debug_loclists PROGBITS 00000000 002c9d 000a99 00 0 0 1
[18] .debug_rnglists PROGBITS 00000000 003736 000111 00 0 0 1
[19] .symtab SYMTAB 00000000 003848 0004f0 10 20 50 4
[20] .strtab STRTAB 00000000 003d38 0002b0 00 0 0 1
[21] .shstrtab STRTAB 00000000 003fe8 0000e8 00 0 0 1
Key to Flags:
W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
L (link order), O (extra OS processing required), G (group), T (TLS),
......@@ -54,13 +53,13 @@ There are no section groups in this file.
Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
LOAD 0x000000 0x00000000 0x00000000 0x00ef8 0x00ef8 R E 0x1000
LOAD 0x001000 0x00001000 0x00001000 0x0047c 0x00498 RW 0x1000
LOAD 0x000000 0x00000000 0x00000000 0x012c4 0x012c4 R E 0x1000
LOAD 0x0012c4 0x000022c4 0x000022c4 0x00470 0x0048c RW 0x1000
Section to Segment mapping:
Segment Sections...
00 .text .rodata
01 .eh_frame .init_array .fini_array .data .got .sdata .bss
01 .eh_frame .init_array .fini_array .data .sdata .bss
There is no dynamic section in this file.
......@@ -68,88 +67,90 @@ There are no relocations in this file.
The decoding of unwind sections for machine type RISC-V is not currently supported.
Symbol table '.symtab' contains 77 entries:
Symbol table '.symtab' contains 79 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00000074 0 SECTION LOCAL DEFAULT 1 .text
2: 00000dd0 0 SECTION LOCAL DEFAULT 2 .rodata
3: 00001000 0 SECTION LOCAL DEFAULT 3 .eh_frame
4: 0000102c 0 SECTION LOCAL DEFAULT 4 .init_array
5: 00001034 0 SECTION LOCAL DEFAULT 5 .fini_array
6: 00001038 0 SECTION LOCAL DEFAULT 6 .data
7: 00001460 0 SECTION LOCAL DEFAULT 7 .got
8: 00001470 0 SECTION LOCAL DEFAULT 8 .sdata
9: 0000147c 0 SECTION LOCAL DEFAULT 9 .bss
10: 00000000 0 SECTION LOCAL DEFAULT 10 .comment
11: 00000000 0 SECTION LOCAL DEFAULT 11 .riscv.attributes
12: 00000000 0 SECTION LOCAL DEFAULT 12 .debug_aranges
13: 00000000 0 SECTION LOCAL DEFAULT 13 .debug_info
14: 00000000 0 SECTION LOCAL DEFAULT 14 .debug_abbrev
15: 00000000 0 SECTION LOCAL DEFAULT 15 .debug_line
16: 00000000 0 SECTION LOCAL DEFAULT 16 .debug_str
17: 00000000 0 SECTION LOCAL DEFAULT 17 .debug_line_str
18: 00000000 0 SECTION LOCAL DEFAULT 18 .debug_loclists
19: 00000000 0 SECTION LOCAL DEFAULT 19 .debug_rnglists
20: 00000000 0 FILE LOCAL DEFAULT ABS __call_atexit.c
21: 00000074 24 FUNC LOCAL DEFAULT 1 register_fini
22: 00000000 0 FILE LOCAL DEFAULT ABS crtstuff.c
23: 00001000 0 OBJECT LOCAL DEFAULT 3 __EH_FRAME_BEGIN__
24: 000000d8 0 FUNC LOCAL DEFAULT 1 __do_global_dtors_aux
25: 0000147c 1 OBJECT LOCAL DEFAULT 9 completed.1
26: 00001034 0 OBJECT LOCAL DEFAULT 5 __do_global_dtor[...]
27: 0000011c 0 FUNC LOCAL DEFAULT 1 frame_dummy
28: 00001480 24 OBJECT LOCAL DEFAULT 9 object.0
29: 00001030 0 OBJECT LOCAL DEFAULT 4 __frame_dummy_in[...]
30: 00000000 0 FILE LOCAL DEFAULT ABS main_v2.c
2: 00001178 0 SECTION LOCAL DEFAULT 2 .rodata
3: 000022c4 0 SECTION LOCAL DEFAULT 3 .eh_frame
4: 000022f0 0 SECTION LOCAL DEFAULT 4 .init_array
5: 000022f8 0 SECTION LOCAL DEFAULT 5 .fini_array
6: 00002300 0 SECTION LOCAL DEFAULT 6 .data
7: 00002728 0 SECTION LOCAL DEFAULT 7 .sdata
8: 00002734 0 SECTION LOCAL DEFAULT 8 .bss
9: 00000000 0 SECTION LOCAL DEFAULT 9 .comment
10: 00000000 0 SECTION LOCAL DEFAULT 10 .riscv.attributes
11: 00000000 0 SECTION LOCAL DEFAULT 11 .debug_aranges
12: 00000000 0 SECTION LOCAL DEFAULT 12 .debug_info
13: 00000000 0 SECTION LOCAL DEFAULT 13 .debug_abbrev
14: 00000000 0 SECTION LOCAL DEFAULT 14 .debug_line
15: 00000000 0 SECTION LOCAL DEFAULT 15 .debug_str
16: 00000000 0 SECTION LOCAL DEFAULT 16 .debug_line_str
17: 00000000 0 SECTION LOCAL DEFAULT 17 .debug_loclists
18: 00000000 0 SECTION LOCAL DEFAULT 18 .debug_rnglists
19: 00000000 0 FILE LOCAL DEFAULT ABS __call_atexit.c
20: 00000074 24 FUNC LOCAL DEFAULT 1 register_fini
21: 00000000 0 FILE LOCAL DEFAULT ABS crtstuff.c
22: 000022c4 0 OBJECT LOCAL DEFAULT 3 __EH_FRAME_BEGIN__
23: 000000d8 0 FUNC LOCAL DEFAULT 1 __do_global_dtors_aux
24: 00002734 1 OBJECT LOCAL DEFAULT 8 completed.1
25: 000022f8 0 OBJECT LOCAL DEFAULT 5 __do_global_dtor[...]
26: 0000011c 0 FUNC LOCAL DEFAULT 1 frame_dummy
27: 00002738 24 OBJECT LOCAL DEFAULT 8 object.0
28: 000022f4 0 OBJECT LOCAL DEFAULT 4 __frame_dummy_in[...]
29: 00000000 0 FILE LOCAL DEFAULT ABS main_v2.c
30: 00000000 0 FILE LOCAL DEFAULT ABS libgcc2.c
31: 00000000 0 FILE LOCAL DEFAULT ABS libgcc2.c
32: 00000000 0 FILE LOCAL DEFAULT ABS libgcc2.c
33: 00000000 0 FILE LOCAL DEFAULT ABS exit.c
34: 00000000 0 FILE LOCAL DEFAULT ABS impure.c
35: 00001038 1064 OBJECT LOCAL DEFAULT 6 impure_data
36: 00000000 0 FILE LOCAL DEFAULT ABS init.c
37: 00000000 0 FILE LOCAL DEFAULT ABS fini.c
38: 00000000 0 FILE LOCAL DEFAULT ABS atexit.c
39: 00000000 0 FILE LOCAL DEFAULT ABS __atexit.c
40: 00000000 0 FILE LOCAL DEFAULT ABS sys_exit.c
41: 00000000 0 FILE LOCAL DEFAULT ABS errno.c
42: 00000000 0 FILE LOCAL DEFAULT ABS crtstuff.c
43: 00001028 0 OBJECT LOCAL DEFAULT 3 __FRAME_END__
44: 00000000 0 FILE LOCAL DEFAULT ABS
45: 00001038 0 NOTYPE LOCAL DEFAULT 5 __fini_array_end
46: 00001034 0 NOTYPE LOCAL DEFAULT 5 __fini_array_start
47: 00001034 0 NOTYPE LOCAL DEFAULT 4 __init_array_end
48: 0000102c 0 NOTYPE LOCAL DEFAULT 4 __preinit_array_end
49: 00001468 0 OBJECT LOCAL DEFAULT 7 _GLOBAL_OFFSET_TABLE_
50: 0000102c 0 NOTYPE LOCAL DEFAULT 4 __init_array_start
51: 0000102c 0 NOTYPE LOCAL DEFAULT 4 __preinit_array_start
52: 00001838 0 NOTYPE GLOBAL DEFAULT ABS __global_pointer$
53: 00000dd0 40 OBJECT GLOBAL DEFAULT 2 segcode
54: 00000dc8 8 FUNC GLOBAL DEFAULT 1 __errno
55: 00001470 0 NOTYPE GLOBAL DEFAULT 8 __SDATA_BEGIN__
56: 00001474 0 OBJECT GLOBAL HIDDEN 8 __dso_handle
57: 00001470 4 OBJECT GLOBAL DEFAULT 8 _global_impure_ptr
58: 000009f8 156 FUNC GLOBAL DEFAULT 1 __libc_init_array
59: 00000598 1072 FUNC GLOBAL HIDDEN 1 __udivdi3
60: 00000c90 92 FUNC GLOBAL DEFAULT 1 __libc_fini_array
61: 00000b70 288 FUNC GLOBAL DEFAULT 1 __call_exitprocs
62: 0000008c 76 FUNC GLOBAL DEFAULT 1 _start
63: 00000d00 152 FUNC GLOBAL DEFAULT 1 __register_exitproc
64: 00001498 0 NOTYPE GLOBAL DEFAULT 9 __BSS_END__
65: 0000147c 0 NOTYPE GLOBAL DEFAULT 9 __bss_start
66: 00000a94 220 FUNC GLOBAL DEFAULT 1 memset
67: 0000017c 1052 FUNC GLOBAL DEFAULT 1 main
68: 00000df8 256 OBJECT GLOBAL HIDDEN 2 __clz_tab
69: 00000cec 20 FUNC GLOBAL DEFAULT 1 atexit
70: 00001478 4 OBJECT GLOBAL DEFAULT 8 _impure_ptr
71: 00001038 0 NOTYPE GLOBAL DEFAULT 6 __DATA_BEGIN__
72: 0000013c 64 FUNC GLOBAL DEFAULT 1 num2seg
73: 0000147c 0 NOTYPE GLOBAL DEFAULT 8 _edata
74: 00001498 0 NOTYPE GLOBAL DEFAULT 9 _end
75: 000009c8 48 FUNC GLOBAL DEFAULT 1 exit
76: 00000d98 48 FUNC GLOBAL DEFAULT 1 _exit
32: 00000000 0 FILE LOCAL DEFAULT ABS exit.c
33: 00000000 0 FILE LOCAL DEFAULT ABS impure.c
34: 00002300 1064 OBJECT LOCAL DEFAULT 6 impure_data
35: 00000000 0 FILE LOCAL DEFAULT ABS init.c
36: 00000000 0 FILE LOCAL DEFAULT ABS fini.c
37: 00000000 0 FILE LOCAL DEFAULT ABS atexit.c
38: 00000000 0 FILE LOCAL DEFAULT ABS __atexit.c
39: 00000000 0 FILE LOCAL DEFAULT ABS sys_exit.c
40: 00000000 0 FILE LOCAL DEFAULT ABS errno.c
41: 00000000 0 FILE LOCAL DEFAULT ABS crtstuff.c
42: 000022ec 0 OBJECT LOCAL DEFAULT 3 __FRAME_END__
43: 00000000 0 FILE LOCAL DEFAULT ABS
44: 000022fc 0 NOTYPE LOCAL DEFAULT 5 __fini_array_end
45: 000022f8 0 NOTYPE LOCAL DEFAULT 5 __fini_array_start
46: 000022f8 0 NOTYPE LOCAL DEFAULT 4 __init_array_end
47: 000022f0 0 NOTYPE LOCAL DEFAULT 4 __preinit_array_end
48: 000022f0 0 NOTYPE LOCAL DEFAULT 4 __init_array_start
49: 000022f0 0 NOTYPE LOCAL DEFAULT 4 __preinit_array_start
50: 0000043c 148 FUNC GLOBAL DEFAULT 1 _strcat
51: 00002b00 0 NOTYPE GLOBAL DEFAULT ABS __global_pointer$
52: 00001178 40 OBJECT GLOBAL DEFAULT 2 segcode
53: 00001170 8 FUNC GLOBAL DEFAULT 1 __errno
54: 00002728 0 NOTYPE GLOBAL DEFAULT 7 __SDATA_BEGIN__
55: 0000013c 140 FUNC GLOBAL DEFAULT 1 uart_write
56: 0000272c 0 OBJECT GLOBAL HIDDEN 7 __dso_handle
57: 00002728 4 OBJECT GLOBAL DEFAULT 7 _global_impure_ptr
58: 00000da0 156 FUNC GLOBAL DEFAULT 1 __libc_init_array
59: 00000940 1072 FUNC GLOBAL HIDDEN 1 __udivdi3
60: 00001038 92 FUNC GLOBAL DEFAULT 1 __libc_fini_array
61: 000002e0 348 FUNC GLOBAL DEFAULT 1 int2s
62: 00000f18 288 FUNC GLOBAL DEFAULT 1 __call_exitprocs
63: 0000008c 76 FUNC GLOBAL DEFAULT 1 _start
64: 000010a8 152 FUNC GLOBAL DEFAULT 1 __register_exitproc
65: 00002750 0 NOTYPE GLOBAL DEFAULT 8 __BSS_END__
66: 00002734 0 NOTYPE GLOBAL DEFAULT 8 __bss_start
67: 00000e3c 220 FUNC GLOBAL DEFAULT 1 memset
68: 000004d0 1136 FUNC GLOBAL DEFAULT 1 main
69: 000011c4 256 OBJECT GLOBAL HIDDEN 2 __clz_tab
70: 00001094 20 FUNC GLOBAL DEFAULT 1 atexit
71: 00002730 4 OBJECT GLOBAL DEFAULT 7 _impure_ptr
72: 00002300 0 NOTYPE GLOBAL DEFAULT 6 __DATA_BEGIN__
73: 000002a0 64 FUNC GLOBAL DEFAULT 1 num2seg
74: 00002734 0 NOTYPE GLOBAL DEFAULT 7 _edata
75: 00002750 0 NOTYPE GLOBAL DEFAULT 8 _end
76: 000001c8 216 FUNC GLOBAL DEFAULT 1 uart_read
77: 00000d70 48 FUNC GLOBAL DEFAULT 1 exit
78: 00001140 48 FUNC GLOBAL DEFAULT 1 _exit
No version information found in this file.
Attribute Section: riscv
File Attributes
Tag_RISCV_stack_align: 16-bytes
Tag_RISCV_arch: "rv32i2p0_m2p0"
Tag_RISCV_arch: "rv32i2p0_m2p0_a2p0"
因为 它太大了无法显示 source diff 。你可以改为 查看blob
......@@ -3,5 +3,5 @@ riscv32-unknown-elf-gcc -Wl,-Ttest.ld main_v2.c -o test.elf
riscv32-unknown-elf-objcopy test.elf -O ihex test.hex
riscv32-unknown-elf-objcopy test.elf -O verilog test.cod
riscv32-unknown-elf-objdump -D -M no-aliases,numeric test.elf > test.txt
riscv32-unkonwn-readelf -a test.elf > test.info
riscv32-unknown-elf-readelf -a test.elf > test.info
因为 它太大了无法显示 source diff 。你可以改为 查看blob
......@@ -35,13 +35,13 @@
`define RISCVSTATE_INIT_REGX2 1
`define RISCVSTATE_READ_INST 2
`define RISCVSTATE_READ_REGS 3
`define RISCVSTATE_WRITE_RD 4
`define RISCVSTATE_EXEC_INST 5
`define RISCVSTATE_EXEC_INST 4
`define RISCVSTATE_WRITE_RD 5
`define RISCVSTATE_WAIT_LD 6
`define RISCVSTATE_WAIT_ST 7
`define RISCVSTATE_WAIT_DIV 8
`define RAMSIZE 2048
`define RAMSIZE 32768
(*
HDL4SE="LCOM",
......@@ -92,8 +92,8 @@ module riscv_core(
wire [4:0] rd = instr[11:7];
wire [2:0] func3 = instr[14:12];
reg cond;
wire signed [31:0] rs1 = regrddata;
wire signed [31:0] rs2 = regrddata2;
wire [31:0] rs1 = regrddata;
wire [31:0] rs2 = regrddata2;
wire signed [31:0] rs1_s = rs1;
wire signed [31:0] rs2_s = rs2;
wire signed [31:0] imm_s = imm;
......
......@@ -24,13 +24,15 @@ module riscv_core
output reg [32'h3:32'h0] regena2,
output reg [32'h1f:32'h0] regwrdata2,
output reg regwren2,
input [32'h1f:32'h0] regrddata
input [32'h1f:32'h0] regrddata2
)
;
wire [32'h4:32'h0] opcode;
wire [32'h4:32'h0] rd;
wire [32'h2:32'h0] func3;
wire [32'h1f:32'h0] rs1;
wire [32'h1f:32'h0] rs2;
wire [32'h1f:32'h0] rs1_s;
wire [32'h1f:32'h0] rs2_s;
wire [32'h1f:32'h0] imm_s;
......@@ -51,13 +53,15 @@ module riscv_core
assign bWriteAddr = writeaddr;
assign bWriteData = writedata;
assign bWriteMask = writemask;
assign div_result = (((rs2==32'h0))?(32'hffffffff):(div_result_r));
assign divs_result = (((rs2==32'h0))?(32'hffffffff):(divs_result_r));
assign mod_result = (((rs2==32'h0))?(rs1):(mod_result_r));
assign mods_result = (((rs2==32'h0))?(rs1):(mods_result_r));
assign div_result = div_result_r;
assign divs_result = divs_result_r;
assign mod_result = mod_result_r;
assign mods_result = mods_result_r;
assign opcode = instr [6:2] ;
assign rd = instr [11:7] ;
assign func3 = instr [14:12] ;
assign rs1 = regrddata;
assign rs2 = regrddata2;
assign rs1_s = rs1;
assign rs2_s = rs2;
assign imm_s = imm;
......@@ -86,7 +90,7 @@ module riscv_core
end
else
begin
if ((state==7))
if ((state==4))
begin
case (opcode)
5'h1b: pc <= (pc+imm);
......@@ -101,22 +105,16 @@ module riscv_core
if ((state==3))
instr <= bReadData;
always @(posedge wClk)
if ((state==7))
if ((state==4))
if ((opcode==5'h00))
readreg <= rd;
always @(posedge wClk)
if ((state==4))
rs1 <= regrddata;
always @(posedge wClk)
if ((state==5))
rs2 <= regrddata;
always @(posedge wClk)
if ((!(nwReset)))
begin
write <= 0;
end
else
if ((state==7))
if ((state==4))
begin
write <= 0;
if ((opcode==5'h08))
......@@ -184,29 +182,27 @@ module riscv_core
1: state <= 2;
2: state <= 3;
3: state <= 4;
4: state <= 5;
5: state <= 7;
6: state <= 2;
7: begin
5: state <= 2;
4: begin
if ((opcode==5'h00))
state <= 8;
state <= 6;
else
if ((opcode==5'h08))
state <= 9;
state <= 7;
else
if ((((opcode==5'h0c)&&instr [25] )&&func3 [2] ))
if (((((opcode==5'h0c)&&instr [25] )&&func3 [2] )&&(rs2!=0)))
begin
state <= 10;
state <= 8;
divclk <= 11;
end
else
state <= 6;
state <= 5;
end
8: state <= 6;
9: state <= 2;
10: begin
6: state <= 5;
7: state <= 2;
8: begin
if ((divclk==0))
state <= 6;
state <= 5;
else
divclk <= (divclk-1);
end
......@@ -214,17 +210,17 @@ module riscv_core
end
always @(posedge wClk)
if ((state==4))
if ((state==3))
begin
case (opcode)
5'h0d: imm <= {instr [31:12] ,12'b0};
5'h05: imm <= {instr [31:12] ,12'b0};
5'h1b: imm <= {{12{instr [31] }{,instr [19:12] ,instr [20] ,instr [30:21] ,1'b0};
5'h19: imm <= {{20{instr [31] }{,instr [31:20] };
5'h18: imm <= {{20{instr [31] }{,instr [7] ,instr [30:25] ,instr [11:8] ,1'b0};
5'h00: imm <= {{20{instr [31] }{,instr [31:20] };
5'h08: imm <= {{20{instr [31] }{,instr [31:25] ,instr [11:7] };
5'h04: imm <= {{20{instr [31] }{,instr [31:20] };
case (bReadData [6:2] )
5'h0d: imm <= {bReadData [31:12] ,12'b0};
5'h05: imm <= {bReadData [31:12] ,12'b0};
5'h1b: imm <= {{12{bReadData [31] }{,bReadData [19:12] ,bReadData [20] ,bReadData [30:21] ,1'b0};
5'h19: imm <= {{20{bReadData [31] }{,bReadData [31:20] };
5'h18: imm <= {{20{bReadData [31] }{,bReadData [7] ,bReadData [30:25] ,bReadData [11:8] ,1'b0};
5'h00: imm <= {{20{bReadData [31] }{,bReadData [31:20] };
5'h08: imm <= {{20{bReadData [31] }{,bReadData [31:25] ,bReadData [11:7] };
5'h04: imm <= {{20{bReadData [31] }{,bReadData [31:20] };
endcase
end
......@@ -235,36 +231,50 @@ module riscv_core
regwren = 0;
regena = 0;
regwrdata = 0;
regno2 = bReadData [24:20] ;
regwren2 = 0;
regena2 = 0;
regwrdata2 = 0;
end
4: begin
regno = instr [24:20] ;
regwren = 0;
regena = 0;
regwrdata = 0;
end
6: begin
5: begin
regwren = (((dstreg!=0))?(1):(0));
regno = dstreg;
regena = 4'hf;
regwrdata = dstvalue;
regwren2 = (((dstreg!=0))?(1):(0));
regno2 = dstreg;
regena2 = 4'hf;
regwrdata2 = dstvalue;
end
0: begin
regwren = 1;
regno = 1;
regena = 4'hf;
regwrdata = 32'h8c;
regwren2 = 1;
regno2 = 1;
regena2 = 4'hf;
regwrdata2 = 32'h8c;
end
1: begin
regwren = 1;
regno = 2;
regena = 4'hf;
regwrdata = ((2048*4)-16);
regwrdata = ((32768*4)-16);
regwren2 = 1;
regno2 = 2;
regena2 = 4'hf;
regwrdata2 = ((32768*4)-16);
end
default: begin
regwren = 0;
regno = 0;
regena = 0;
regwrdata = 0;
regwren2 = 0;
regno2 = 0;
regena2 = 0;
regwrdata2 = 0;
end
endcase
......@@ -274,7 +284,7 @@ module riscv_core
ldaddr <= pc;
end
else
if ((state==7))
if ((state==4))
begin
if ((opcode==5'h00))
begin
......@@ -283,7 +293,7 @@ module riscv_core
end
always @(posedge wClk)
case (state)
8: begin
6: begin
dstreg <= readreg;
case (func3)
0: begin
......@@ -326,42 +336,30 @@ module riscv_core
endcase
end
10: if ((divclk==0))
8: if ((divclk==0))
begin
dstreg <= 0;
case (func3 [1:0] )
0: begin
dstreg <= rd;
if ((rs2==0))
dstvalue <= 32'hffffffff;
else
dstvalue <= divs_result;
end
1: begin
dstreg <= rd;
if ((rs2==0))
dstvalue <= 32'hffffffff;
else
dstvalue <= div_result;
end
2: begin
dstreg <= rd;
if ((rs2==0))
dstvalue <= rs1;
else
dstvalue <= mods_result;
end
3: begin
dstreg <= rd;
if ((rs2==0))
dstvalue <= rs1;
else
dstvalue <= mod_result;
end
endcase
end
7: begin
4: begin
dstreg <= rd;
case (opcode)
5'h0d: begin
......@@ -410,20 +408,48 @@ module riscv_core
dstvalue <= mul_result [63:32] ;
end
4: begin
dstreg <= 0;
dstvalue <= 0;
if ((rs2==0))
begin
dstvalue <= 32'hffffffff;
end
else
begin
dstreg <= 0;
dstvalue <= 0;
end
end
5: begin
dstreg <= 0;
dstvalue <= 0;
if ((rs2==0))
begin
dstvalue <= 32'hffffffff;
end
else
begin
dstreg <= 0;
dstvalue <= 0;
end
end
6: begin
dstreg <= 0;
dstvalue <= 0;
if ((rs2==0))
begin
dstvalue <= rs1;
end
else
begin
dstreg <= 0;
dstvalue <= 0;
end
end
7: begin
dstreg <= 0;
dstvalue <= 0;
if ((rs2==0))
begin
dstvalue <= rs1;
end
else
begin
dstreg <= 0;
dstvalue <= 0;
end
end
endcase
......@@ -484,7 +510,7 @@ module riscv_core
bReadAddr = pc;
end
else
if ((state==7))
if ((state==4))
begin
if ((opcode==5'h00))
begin
......@@ -527,7 +553,7 @@ endmodule
*)
module ram8kb
(
input [32'ha:32'h0] address,
input [32'h1d:32'h0] address,
input [32'h3:32'h0] byteena,
input clock,
input [32'h1f:32'h0] data,
......@@ -600,7 +626,7 @@ module top
wire [32'h3:32'h0] bWriteMask;
wire wRead_out;
wire [32'h1f:32'h0] bReadAddr_out;
wire [32'ha:32'h0] ramaddr;
wire [32'h1d:32'h0] ramaddr;
wire [32'h4:32'h0] regno;
wire [32'h3:32'h0] regena;
wire [32'h1f:32'h0] regwrdata;
......@@ -611,15 +637,15 @@ module top
wire [32'h1f:32'h0] regwrdata2;
wire regwren2;
wire [32'h1f:32'h0] regrddata2;
assign bReadData = ((((bReadAddr_out&32'hffffff00)==32'hf0000000))?(bReadDataKey):(((((bReadAddr_out&32'hffffc000)==32'h0))?(bReadDataRam):(32'hffffffff))));
assign ramaddr = ((wWrite)?(bWriteAddr [12:2] ):(bReadAddr [12:2] ));
assign bReadData = ((((bReadAddr_out&32'hffffff00)==32'hf0000000))?(bReadDataKey):(((((bReadAddr_out&32'hff000000)==32'h0))?(bReadDataRam):(32'hffffffff))));
assign ramaddr = ((wWrite)?(bWriteAddr [31:2] ):(bReadAddr [31:2] ));
hdl4se_reg #( 32'h1 ) readcmd( wClk, wRead, wRead_out );
hdl4se_reg #( 32'h20 ) readaddr( wClk, bReadAddr, bReadAddr_out );
regfile regs( regno, regena, wClk, regwrdata, regwren, regrddata
);
regfile regs2( regno2, regena2, wClk, regwrdata2, regwren2, regrddata2
);
ram8kb ram( ramaddr, (~(bWriteMask)), wClk, bWriteData, wWrite, bReadDataRam
ram8kb ram( ramaddr, (~(bWriteMask)), wClk, bWriteData, ((((bWriteAddr&32'hff000000)==32'h0))?(wWrite):(0)), bReadDataRam
);
digitled led( wClk, nwReset, wWrite, bWriteAddr, bWriteData, bWriteMask
, wRead, bReadAddr, bReadDataKey );
......
......@@ -55,7 +55,7 @@ endmodule
softmodule="hdl4se"
*)
module ram8kb (
input [10:0] address,
input [29:0] address,
input [3:0] byteena,
input clock,
input [31:0] data,
......@@ -107,11 +107,11 @@ module top(input wClk, nwReset);
assign bReadData =
((bReadAddr_out & 32'hffffff00) == 32'hf0000000) ? bReadDataKey : (
((bReadAddr_out & 32'hffffc000) == 32'h00000000) ? bReadDataRam : (32'hffffffff)
((bReadAddr_out & 32'hff000000) == 32'h00000000) ? bReadDataRam : (32'hffffffff)
);
wire [10:0] ramaddr;
assign ramaddr = wWrite?bWriteAddr[12:2]:bReadAddr[12:2];
wire [29:0] ramaddr;
assign ramaddr = wWrite?bWriteAddr[31:2]:bReadAddr[31:2];
wire [4:0] regno;
wire [3:0] regena;
......@@ -126,7 +126,7 @@ module top(input wClk, nwReset);
regfile regs(regno, regena, wClk, regwrdata, regwren, regrddata);
regfile regs2(regno2, regena2, wClk, regwrdata2, regwren2, regrddata2);
ram8kb ram(ramaddr, ~bWriteMask, wClk, bWriteData, wWrite, bReadDataRam);
ram8kb ram(ramaddr, ~bWriteMask, wClk, bWriteData, ((bWriteAddr & 32'hff000000) == 0)?wWrite:1'b0, bReadDataRam);
digitled led(wClk, nwReset, wWrite, bWriteAddr, bWriteData, bWriteMask, wRead, bReadAddr, bReadDataKey);
riscv_core core(wClk, nwReset, wWrite, bWriteAddr, bWriteData, bWriteMask, wRead, bReadAddr, bReadData,
regno, regena, regwrdata, regwren, regrddata,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册