From 8366710217d4f1a7b84164eaa715edc4378c8988 Mon Sep 17 00:00:00 2001 From: Benjamin Herrenschmidt Date: Sat, 13 Jun 2020 10:04:31 +1000 Subject: [PATCH] liteeth: Hook up LiteX LiteEth ethernet controller Currently only generated for Arty. Signed-off-by: Benjamin Herrenschmidt --- fpga/arty_a7.xdc | 104 +- fpga/top-arty.vhdl | 215 +- include/microwatt_soc.h | 4 + litedram/gen-src/sdram_init/main.c | 2 + litedram/generated/arty/litedram_core.init | 1946 +++++------ .../generated/nexys-video/litedram_core.init | 1946 +++++------ litedram/generated/sim/litedram_core.init | 1366 ++++---- liteeth/fusesoc-add-files.py | 27 + liteeth/gen-src/arty.yml | 15 + liteeth/gen-src/generate.sh | 30 + liteeth/generated/arty/liteeth_core.v | 3057 +++++++++++++++++ liteeth/liteeth.core | 15 + microwatt.core | 29 +- soc.vhdl | 27 +- syscon.vhdl | 14 +- 15 files changed, 6143 insertions(+), 2654 deletions(-) create mode 100644 liteeth/fusesoc-add-files.py create mode 100644 liteeth/gen-src/arty.yml create mode 100755 liteeth/gen-src/generate.sh create mode 100644 liteeth/generated/arty/liteeth_core.v create mode 100644 liteeth/liteeth.core diff --git a/fpga/arty_a7.xdc b/fpga/arty_a7.xdc index 34c27c9..54e0675 100644 --- a/fpga/arty_a7.xdc +++ b/fpga/arty_a7.xdc @@ -4,7 +4,7 @@ set_property -dict { PACKAGE_PIN E3 IOSTANDARD LVCMOS33 } [get_ports { ext_clk }]; -set_property -dict { PACKAGE_PIN C2 IOSTANDARD LVCMOS33 } [get_ports { ext_rst }]; +set_property -dict { PACKAGE_PIN C2 IOSTANDARD LVCMOS33 } [get_ports { ext_rst_n }]; set_property -dict { PACKAGE_PIN D10 IOSTANDARD LVCMOS33 } [get_ports { uart_main_tx }]; set_property -dict { PACKAGE_PIN A9 IOSTANDARD LVCMOS33 } [get_ports { uart_main_rx }]; @@ -26,6 +26,15 @@ set_property -dict { PACKAGE_PIN E1 IOSTANDARD LVCMOS33 } [get_ports { led0_b } set_property -dict { PACKAGE_PIN F6 IOSTANDARD LVCMOS33 } [get_ports { led0_g }]; set_property -dict { PACKAGE_PIN G6 IOSTANDARD LVCMOS33 } [get_ports { led0_r }]; +################################################################################ +# Normal LEDs +################################################################################ + +set_property -dict { PACKAGE_PIN H5 IOSTANDARD LVCMOS33 } [get_ports { led4 }]; +set_property -dict { PACKAGE_PIN J5 IOSTANDARD LVCMOS33 } [get_ports { led5 }]; +set_property -dict { PACKAGE_PIN T9 IOSTANDARD LVCMOS33 } [get_ports { led6 }]; +set_property -dict { PACKAGE_PIN T10 IOSTANDARD LVCMOS33 } [get_ports { led7 }]; + ################################################################################ # SPI Flash ################################################################################ @@ -41,6 +50,85 @@ set_property -dict { PACKAGE_PIN M14 IOSTANDARD LVCMOS33 } [get_ports { spi_flas set_property IOB true [get_cells -hierarchical -filter {NAME =~*/spi_rxtx/*sck_1*}] set_property IOB true [get_cells -hierarchical -filter {NAME =~*/spi_rxtx/input_delay_1.dat_i_l*}] +################################################################################ +# Ethernet (generated by LiteX) +################################################################################ + +# eth_ref_clk:0 +set_property LOC G18 [get_ports {eth_ref_clk}] +set_property IOSTANDARD LVCMOS33 [get_ports {eth_ref_clk}] + +# eth_clocks:0.tx +set_property LOC H16 [get_ports {eth_clocks_tx}] +set_property IOSTANDARD LVCMOS33 [get_ports {eth_clocks_tx}] + +# eth_clocks:0.rx +set_property LOC F15 [get_ports {eth_clocks_rx}] +set_property IOSTANDARD LVCMOS33 [get_ports {eth_clocks_rx}] + +# eth:0.rst_n +set_property LOC C16 [get_ports {eth_rst_n}] +set_property IOSTANDARD LVCMOS33 [get_ports {eth_rst_n}] + +# eth:0.mdio +set_property LOC K13 [get_ports {eth_mdio}] +set_property IOSTANDARD LVCMOS33 [get_ports {eth_mdio}] + +# eth:0.mdc +set_property LOC F16 [get_ports {eth_mdc}] +set_property IOSTANDARD LVCMOS33 [get_ports {eth_mdc}] + +# eth:0.rx_dv +set_property LOC G16 [get_ports {eth_rx_dv}] +set_property IOSTANDARD LVCMOS33 [get_ports {eth_rx_dv}] + +# eth:0.rx_er +set_property LOC C17 [get_ports {eth_rx_er}] +set_property IOSTANDARD LVCMOS33 [get_ports {eth_rx_er}] + +# eth:0.rx_data +set_property LOC D18 [get_ports {eth_rx_data[0]}] +set_property IOSTANDARD LVCMOS33 [get_ports {eth_rx_data[0]}] + +# eth:0.rx_data +set_property LOC E17 [get_ports {eth_rx_data[1]}] +set_property IOSTANDARD LVCMOS33 [get_ports {eth_rx_data[1]}] + +# eth:0.rx_data +set_property LOC E18 [get_ports {eth_rx_data[2]}] +set_property IOSTANDARD LVCMOS33 [get_ports {eth_rx_data[2]}] + +# eth:0.rx_data +set_property LOC G17 [get_ports {eth_rx_data[3]}] +set_property IOSTANDARD LVCMOS33 [get_ports {eth_rx_data[3]}] + +# eth:0.tx_en +set_property LOC H15 [get_ports {eth_tx_en}] +set_property IOSTANDARD LVCMOS33 [get_ports {eth_tx_en}] + +# eth:0.tx_data +set_property LOC H14 [get_ports {eth_tx_data[0]}] +set_property IOSTANDARD LVCMOS33 [get_ports {eth_tx_data[0]}] + +# eth:0.tx_data +set_property LOC J14 [get_ports {eth_tx_data[1]}] +set_property IOSTANDARD LVCMOS33 [get_ports {eth_tx_data[1]}] + +# eth:0.tx_data +set_property LOC J13 [get_ports {eth_tx_data[2]}] +set_property IOSTANDARD LVCMOS33 [get_ports {eth_tx_data[2]}] + +# eth:0.tx_data +set_property LOC H17 [get_ports {eth_tx_data[3]}] +set_property IOSTANDARD LVCMOS33 [get_ports {eth_tx_data[3]}] + +# eth:0.col +set_property LOC D17 [get_ports {eth_col}] +set_property IOSTANDARD LVCMOS33 [get_ports {eth_col}] + +# eth:0.crs +set_property LOC G14 [get_ports {eth_crs}] +set_property IOSTANDARD LVCMOS33 [get_ports {eth_crs}] ################################################################################ # DRAM (generated by LiteX) @@ -326,10 +414,22 @@ set_property CONFIG_MODE SPIx4 [current_design] create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports { ext_clk }]; +create_clock -name eth_rx_clk -period 40.0 [get_ports { eth_clocks_rx }] + +create_clock -name eth_tx_clk -period 40.0 [get_ports { eth_clocks_tx }] + +set_clock_groups -group [get_clocks -include_generated_clocks -of [get_nets system_clk]] -group [get_clocks -include_generated_clocks -of [get_nets eth_clocks_rx]] -asynchronous + +set_clock_groups -group [get_clocks -include_generated_clocks -of [get_nets system_clk]] -group [get_clocks -include_generated_clocks -of [get_nets eth_clocks_tx]] -asynchronous + +set_clock_groups -group [get_clocks -include_generated_clocks -of [get_nets eth_clocks_rx]] -group [get_clocks -include_generated_clocks -of [get_nets eth_clocks_tx]] -asynchronous + ################################################################################ -# False path constraints (from LiteX as they relate to LiteDRAM) +# False path constraints (from LiteX as they relate to LiteDRAM and LiteEth) ################################################################################ +set_false_path -quiet -through [get_nets -hierarchical -filter {mr_ff == TRUE}] + set_false_path -quiet -to [get_pins -filter {REF_PIN_NAME == PRE} -of_objects [get_cells -hierarchical -filter {ars_ff1 == TRUE || ars_ff2 == TRUE}]] set_max_delay 2 -quiet -from [get_pins -filter {REF_PIN_NAME == C} -of_objects [get_cells -hierarchical -filter {ars_ff1 == TRUE}]] -to [get_pins -filter {REF_PIN_NAME == D} -of_objects [get_cells -hierarchical -filter {ars_ff2 == TRUE}]] diff --git a/fpga/top-arty.vhdl b/fpga/top-arty.vhdl index c8d560a..d38ed76 100644 --- a/fpga/top-arty.vhdl +++ b/fpga/top-arty.vhdl @@ -21,11 +21,12 @@ entity toplevel is SPI_FLASH_OFFSET : integer := 4194304; SPI_FLASH_DEF_CKDV : natural := 1; SPI_FLASH_DEF_QUAD : boolean := true; - LOG_LENGTH : natural := 512 + LOG_LENGTH : natural := 512; + USE_LITEETH : boolean := false ); port( ext_clk : in std_ulogic; - ext_rst : in std_ulogic; + ext_rst_n : in std_ulogic; -- UART0 signals: uart_main_tx : out std_ulogic; @@ -35,6 +36,10 @@ entity toplevel is led0_b : out std_ulogic; led0_g : out std_ulogic; led0_r : out std_ulogic; + led4 : out std_ulogic; + led5 : out std_ulogic; + led6 : out std_ulogic; + led7 : out std_ulogic; -- SPI spi_flash_cs_n : out std_ulogic; @@ -44,6 +49,21 @@ entity toplevel is spi_flash_wp_n : inout std_ulogic; spi_flash_hold_n : inout std_ulogic; + -- Ethernet + eth_ref_clk : out std_ulogic; + eth_clocks_tx : in std_ulogic; + eth_clocks_rx : in std_ulogic; + eth_rst_n : out std_ulogic; + eth_mdio : inout std_ulogic; + eth_mdc : out std_ulogic; + eth_rx_dv : in std_ulogic; + eth_rx_er : in std_ulogic; + eth_rx_data : in std_ulogic_vector(3 downto 0); + eth_tx_en : out std_ulogic; + eth_tx_data : out std_ulogic_vector(3 downto 0); + eth_col : in std_ulogic; + eth_crs : in std_ulogic; + -- DRAM wires ddram_a : out std_ulogic_vector(13 downto 0); ddram_ba : out std_ulogic_vector(2 downto 0); @@ -70,20 +90,27 @@ architecture behaviour of toplevel is signal pll_rst : std_ulogic; -- Internal clock signals: - signal system_clk : std_ulogic; + signal system_clk : std_ulogic; signal system_clk_locked : std_ulogic; + signal eth_clk_locked : std_ulogic; - -- DRAM main data wishbone connection - signal wb_dram_in : wishbone_master_out; - signal wb_dram_out : wishbone_slave_out; - - -- DRAM control wishbone connection + -- External IOs from the SoC signal wb_ext_io_in : wb_io_master_out; signal wb_ext_io_out : wb_io_slave_out; signal wb_ext_is_dram_csr : std_ulogic; signal wb_ext_is_dram_init : std_ulogic; signal wb_ext_is_eth : std_ulogic; + -- DRAM main data wishbone connection + signal wb_dram_in : wishbone_master_out; + signal wb_dram_out : wishbone_slave_out; + + -- DRAM control wishbone connection + signal wb_dram_ctrl_out : wb_io_slave_out := wb_io_slave_out_init; + + -- LiteEth connection + signal ext_irq_eth : std_ulogic; + signal wb_eth_out : wb_io_slave_out := wb_io_slave_out_init; -- Control/status signal core_alt_reset : std_ulogic; @@ -142,7 +169,8 @@ begin SPI_FLASH_OFFSET => SPI_FLASH_OFFSET, SPI_FLASH_DEF_CKDV => SPI_FLASH_DEF_CKDV, SPI_FLASH_DEF_QUAD => SPI_FLASH_DEF_QUAD, - LOG_LENGTH => LOG_LENGTH + LOG_LENGTH => LOG_LENGTH, + USE_LITEETH => USE_LITEETH ) port map ( -- System signals @@ -160,6 +188,9 @@ begin spi_flash_sdat_oe => spi_sdat_oe, spi_flash_sdat_i => spi_sdat_i, + -- External interrupts + ext_irq_eth => ext_irq_eth, + -- DRAM wishbone wb_dram_in => wb_dram_in, wb_dram_out => wb_dram_out, @@ -167,6 +198,7 @@ begin wb_ext_io_out => wb_ext_io_out, wb_ext_is_dram_csr => wb_ext_is_dram_csr, wb_ext_is_dram_init => wb_ext_is_dram_init, + wb_ext_is_eth => wb_ext_is_eth, alt_reset => core_alt_reset ); @@ -217,8 +249,8 @@ begin port map( ext_clk => ext_clk, pll_clk => system_clk, - pll_locked_in => system_clk_locked, - ext_rst_in => ext_rst, + pll_locked_in => system_clk_locked and eth_clk_locked, + ext_rst_in => ext_rst_n, pll_rst_out => pll_rst, rst_out => soc_rst ); @@ -257,6 +289,7 @@ begin signal dram_init_done : std_ulogic; signal dram_init_error : std_ulogic; signal dram_sys_rst : std_ulogic; + signal rst_gen_rst : std_ulogic; begin -- Eventually dig out the frequency from the generator @@ -272,12 +305,22 @@ begin port map( ext_clk => ext_clk, pll_clk => system_clk, - pll_locked_in => '1', - ext_rst_in => ext_rst, + pll_locked_in => eth_clk_locked, + ext_rst_in => ext_rst_n, pll_rst_out => pll_rst, - rst_out => open + rst_out => rst_gen_rst ); + -- Generate SoC reset + soc_rst_gen: process(system_clk) + begin + if ext_rst_n = '0' then + soc_rst <= '1'; + elsif rising_edge(system_clk) then + soc_rst <= dram_sys_rst or not eth_clk_locked or not system_clk_locked; + end if; + end process; + dram: entity work.litedram_wrapper generic map( DRAM_ABITS => 24, @@ -289,14 +332,14 @@ begin clk_in => ext_clk, rst => pll_rst, system_clk => system_clk, - system_reset => soc_rst, + system_reset => dram_sys_rst, core_alt_reset => core_alt_reset, pll_locked => system_clk_locked, wb_in => wb_dram_in, wb_out => wb_dram_out, wb_ctrl_in => wb_ext_io_in, - wb_ctrl_out => wb_ext_io_out, + wb_ctrl_out => wb_dram_ctrl_out, wb_ctrl_is_csr => wb_ext_is_dram_csr, wb_ctrl_is_init => wb_ext_is_dram_init, @@ -326,6 +369,141 @@ begin end generate; + has_liteeth : if USE_LITEETH generate + + component liteeth_core port ( + sys_clock : in std_ulogic; + sys_reset : in std_ulogic; + mii_eth_clocks_tx : in std_ulogic; + mii_eth_clocks_rx : in std_ulogic; + mii_eth_rst_n : out std_ulogic; + mii_eth_mdio : in std_ulogic; + mii_eth_mdc : out std_ulogic; + mii_eth_rx_dv : in std_ulogic; + mii_eth_rx_er : in std_ulogic; + mii_eth_rx_data : in std_ulogic_vector(3 downto 0); + mii_eth_tx_en : out std_ulogic; + mii_eth_tx_data : out std_ulogic_vector(3 downto 0); + mii_eth_col : in std_ulogic; + mii_eth_crs : in std_ulogic; + wishbone_adr : in std_ulogic_vector(29 downto 0); + wishbone_dat_w : in std_ulogic_vector(31 downto 0); + wishbone_dat_r : out std_ulogic_vector(31 downto 0); + wishbone_sel : in std_ulogic_vector(3 downto 0); + wishbone_cyc : in std_ulogic; + wishbone_stb : in std_ulogic; + wishbone_ack : out std_ulogic; + wishbone_we : in std_ulogic; + wishbone_cti : in std_ulogic_vector(2 downto 0); + wishbone_bte : in std_ulogic_vector(1 downto 0); + wishbone_err : out std_ulogic; + interrupt : out std_ulogic + ); + end component; + + signal wb_eth_cyc : std_ulogic; + signal wb_eth_adr : std_ulogic_vector(29 downto 0); + + -- Change this to use a PLL instead of a BUFR to generate the 25Mhz + -- reference clock to the PHY. + constant USE_PLL : boolean := false; + begin + eth_use_pll: if USE_PLL generate + signal eth_clk_25 : std_ulogic; + signal eth_clkfb : std_ulogic; + begin + pll_eth : PLLE2_BASE + generic map ( + BANDWIDTH => "OPTIMIZED", + CLKFBOUT_MULT => 16, + CLKIN1_PERIOD => 10.0, + CLKOUT0_DIVIDE => 64, + DIVCLK_DIVIDE => 1, + STARTUP_WAIT => "FALSE") + port map ( + CLKOUT0 => eth_clk_25, + CLKOUT1 => open, + CLKOUT2 => open, + CLKOUT3 => open, + CLKOUT4 => open, + CLKOUT5 => open, + CLKFBOUT => eth_clkfb, + LOCKED => eth_clk_locked, + CLKIN1 => ext_clk, + PWRDWN => '0', + RST => pll_rst, + CLKFBIN => eth_clkfb); + + eth_clk_buf: BUFG + port map ( + I => eth_clk_25, + O => eth_ref_clk + ); + end generate; + + eth_use_bufr: if not USE_PLL generate + eth_clk_div: BUFR + generic map ( + BUFR_DIVIDE => "4" + ) + port map ( + I => system_clk, + O => eth_ref_clk, + CE => '1', + CLR => '0' + ); + eth_clk_locked <= '1'; + end generate; + + liteeth : liteeth_core + port map( + sys_clock => system_clk, + sys_reset => soc_rst, + mii_eth_clocks_tx => eth_clocks_tx, + mii_eth_clocks_rx => eth_clocks_rx, + mii_eth_rst_n => eth_rst_n, + mii_eth_mdio => eth_mdio, + mii_eth_mdc => eth_mdc, + mii_eth_rx_dv => eth_rx_dv, + mii_eth_rx_er => eth_rx_er, + mii_eth_rx_data => eth_rx_data, + mii_eth_tx_en => eth_tx_en, + mii_eth_tx_data => eth_tx_data, + mii_eth_col => eth_col, + mii_eth_crs => eth_crs, + wishbone_adr => wb_eth_adr, + wishbone_dat_w => wb_ext_io_in.dat, + wishbone_dat_r => wb_eth_out.dat, + wishbone_sel => wb_ext_io_in.sel, + wishbone_cyc => wb_eth_cyc, + wishbone_stb => wb_ext_io_in.stb, + wishbone_ack => wb_eth_out.ack, + wishbone_we => wb_ext_io_in.we, + wishbone_cti => "000", + wishbone_bte => "00", + wishbone_err => open, + interrupt => ext_irq_eth + ); + + -- Gate cyc with "chip select" from soc + wb_eth_cyc <= wb_ext_io_in.cyc and wb_ext_is_eth; + + -- Remove top address bits as liteeth decoder doesn't know about them + wb_eth_adr <= x"000" & "000" & wb_ext_io_in.adr(16 downto 2); + + -- LiteETH isn't pipelined + wb_eth_out.stall <= not wb_eth_out.ack; + + end generate; + + no_liteeth : if not USE_LITEETH generate + eth_clk_locked <= '1'; + ext_irq_eth <= '0'; + end generate; + + -- Mux WB response on the IO bus + wb_ext_io_out <= wb_eth_out when wb_ext_is_eth = '1' else wb_dram_ctrl_out; + leds_pwm : process(system_clk) begin if rising_edge(system_clk) then @@ -342,4 +520,9 @@ begin end if; end process; + led4 <= system_clk_locked; + led5 <= eth_clk_locked; + led6 <= not soc_rst; + led7 <= not spi_flash_cs_n; + end architecture behaviour; diff --git a/include/microwatt_soc.h b/include/microwatt_soc.h index fd83840..2d09f74 100644 --- a/include/microwatt_soc.h +++ b/include/microwatt_soc.h @@ -15,6 +15,8 @@ #define XICS_ICS_BASE 0xc0005000 /* Interrupt controller */ #define SPI_FCTRL_BASE 0xc0006000 /* SPI flash controller registers */ #define DRAM_CTRL_BASE 0xc8000000 /* LiteDRAM control registers */ +#define LETH_CSR_BASE 0xc8020000 /* LiteEth CSR registers */ +#define LETH_SRAM_BASE 0xc8030000 /* LiteEth MMIO space */ #define SPI_FLASH_BASE 0xf0000000 /* SPI Flash memory map */ #define DRAM_INIT_BASE 0xff000000 /* Internal DRAM init firmware */ @@ -22,6 +24,7 @@ * Interrupt numbers */ #define IRQ_UART0 0 +#define IRQ_ETHERNET 1 /* * Register definitions for the syscon registers @@ -33,6 +36,7 @@ #define SYS_REG_INFO_HAS_DRAM (1ull << 1) #define SYS_REG_INFO_HAS_BRAM (1ull << 2) #define SYS_REG_INFO_HAS_SPI_FLASH (1ull << 3) +#define SYS_REG_INFO_HAS_LITEETH (1ull << 4) #define SYS_REG_BRAMINFO 0x10 #define SYS_REG_BRAMINFO_SIZE_MASK 0xfffffffffffffull #define SYS_REG_DRAMINFO 0x18 diff --git a/litedram/gen-src/sdram_init/main.c b/litedram/gen-src/sdram_init/main.c index 386332c..dd3b507 100644 --- a/litedram/gen-src/sdram_init/main.c +++ b/litedram/gen-src/sdram_init/main.c @@ -260,6 +260,8 @@ uint64_t main(void) printf("BRAM "); if (ftr & SYS_REG_INFO_HAS_SPI_FLASH) printf("SPIFLASH "); + if (ftr & SYS_REG_INFO_HAS_LITEETH) + printf("ETHERNET "); printf("\n"); if (ftr & SYS_REG_INFO_HAS_BRAM) { val = readq(SYSCON_BASE + SYS_REG_BRAMINFO) & SYS_REG_BRAMINFO_SIZE_MASK; diff --git a/litedram/generated/arty/litedram_core.init b/litedram/generated/arty/litedram_core.init index 84033c5..b75722c 100644 --- a/litedram/generated/arty/litedram_core.init +++ b/litedram/generated/arty/litedram_core.init @@ -527,11 +527,11 @@ f88100d83be10020 f8e100f038c100d8 f90100f87fe3fb78 f9410108f9210100 -6000000048001af9 +6000000048001b0d 7fe3fb787c7e1b78 -6000000048001611 +6000000048001625 7fc3f378382100b0 -00000000480020b8 +00000000480020cc 0000028001000000 000000004e800020 0000000000000000 @@ -540,555 +540,288 @@ f9410108f9210100 0000000000000000 3842a5203c4c0001 7d8000267c0802a6 -9181000848001ff5 -48001505f821fed1 +9181000848002009 +48001519f821fed1 3c62ffff60000000 -4bffff3938637b78 +4bffff3938637b88 548400023880ffff 7c8026ea7c0004ac 3fe0c0003c62ffff -63ff000838637b98 +63ff000838637ba8 3c62ffff4bffff15 -38637bb87bff0020 +38637bc87bff0020 7c0004ac4bffff05 73e900017fe0feea 3c62ffff41820010 -4bfffee938637bd0 +4bfffee938637be0 4e00000073e90002 3c62ffff41820010 -4bfffed138637bd8 +4bfffed138637be8 4d80000073e90004 3c62ffff41820010 -4bfffeb938637be0 +4bfffeb938637bf0 4d00000073e90008 3c62ffff41820010 -4bfffea138637be8 -3b7b7f683f62ffff -4bfffe917f63db78 -3c80c000418e0028 -7884002060840010 -7c8026ea7c0004ac -7884b5823c62ffff -4bfffe6938637bf8 -3c80c0004192004c -7884002060840018 -7c8026ea7c0004ac -788460223c62ffff -4bfffe4138637c10 -608400303c80c000 +4bfffea138637bf8 +4182001073e90010 +38637c083c62ffff +3f62ffff4bfffe8d +7f63db783b7b7f88 +418e00284bfffe7d +608400103c80c000 7c0004ac78840020 3c62ffff7c8026ea -38637c287884b282 -3d20c0004bfffe1d -7929002061290020 -7d204eea7c0004ac -792906003c80000f -3c62ffff60844240 -38637c407c892392 -418a02584bfffded -63bd00383fa0c000 -7c0004ac7bbd0020 -3d40c0007fa0eeea -614a600439200002 -7c0004ac794a0020 -3fe0c0007d2057aa -63ff60003920ff9f -7c0004ac7bff0020 -7c0004ac7d20ffaa -579c063e7f80feaa -7fc0feaa7c0004ac -7c0004ac57de063e -4bfffd3d7fe0feaa -3c62ffff57ff063e -7fc5f3787fe6fb78 -38637c607f84e378 -7f89f3784bfffd65 -2f8900007d29fb78 -7f89f038419e0164 -2f8900ff7d29f838 -2b9c0001419e0154 -2b9e0002409e0374 -2b9e0020419e000c -3bffffe8409e0134 -2b9f000157ff063e -3fe0c000419d0124 -63ff600039200035 -7c0004ac7bff0020 -3fc0c0007d20ffaa -63de60043b400002 -7c0004ac7bde0020 -7c0004ac7f40f7aa -7c0004ac7d20ffaa -4bfffc957f80feaa -3c62ffff579c063e -38637c807f84e378 -738900024bfffcc5 -3c62ffff40820090 -4bfffcb138637ca0 -7f40f7aa7c0004ac -7c0004ac39200006 -4bfffc557d20ffaa +38637c187884b582 +4192004c4bfffe55 +608400183c80c000 +7c0004ac78840020 +3c62ffff7c8026ea +38637c3078846022 +3c80c0004bfffe2d +7884002060840030 +7c8026ea7c0004ac +7884b2823c62ffff +4bfffe0938637c48 +612900203d20c000 +7c0004ac79290020 +3c80000f7d204eea +6084424079290600 +7c8923923c62ffff +4bfffdd938637c60 +3fa0c000418a0258 +7bbd002063bd0038 +7fa0eeea7c0004ac +392000023d40c000 +794a0020614a6004 +7d2057aa7c0004ac +3920ff9f3fe0c000 +7bff002063ff6000 +7d20ffaa7c0004ac +7f80feaa7c0004ac +7c0004ac579c063e +57de063e7fc0feaa +7fe0feaa7c0004ac +57ff063e4bfffd29 +7fe6fb783c62ffff +7f84e3787fc5f378 +4bfffd5138637c80 +7d29fb787f89f378 +419e01642f890000 +7d29f8387f89f038 +419e01542f8900ff +409e03742b9c0001 +419e000c2b9e0002 +409e01342b9e0020 +57ff063e3bffffe8 +419d01242b9f0001 +392000353fe0c000 +7bff002063ff6000 +7d20ffaa7c0004ac +3b4000023fc0c000 +7bde002063de6004 7f40f7aa7c0004ac -7c0004ac39200001 -392000007d20ffaa 7d20ffaa7c0004ac -7c0004ac639c0002 -7c0004ac7f80ffaa -4bfffc1d7d20f7aa -3b4000053b200002 -7f20f7aa7c0004ac -7f40ffaa7c0004ac 7f80feaa7c0004ac -4bfffbf5579c063e -4082ffdc73890001 -38637cb83c62ffff -3d40c0004bfffc25 -794a0020614a6008 -7d20562a7c0004ac -652920005529021e -7c0004ac61291f6b -7f63db787d20572a -7bbd00204bfffbf5 -7fa4eb783c62ffff -4bfffbe138637cc8 -7f63db783be00001 -419200284bfffbd5 -3c82ffff3ca2ffff -38a57ce83c62ffff -38637d0038847cf8 -48000fbd4bfffbb5 -418e002460000000 -38637d303c62ffff -386000004bfffb9d -3be0000048000144 -4bffffb03ba00000 -419e00842fbf0000 -38637d483c62ffff -3c9df0004bfffb75 -7884002038a00040 -4800137d38610070 -e921007060000000 -614a464c3d400002 -79290600794a83e4 -7fa95000614a457f -3c62ffff419e0080 -4bfffb3138637d60 -8941007688610077 -8901007489210075 -88c1007288e10073 -8881007088a10071 -3c62fffff8610060 -4bfffb0138637de0 -38637e103c62ffff -3c80ff004bfffaf5 -6084400038a0ffff -7884002054a50422 -480012f53c604000 -3c62ffff60000000 -4bfffac938637e30 -4bffff284bfffb49 -2f89000189210075 -a1210082409e0010 -419e00102f890015 -38637d803c62ffff -ebe100904bffff6c -3bc000003f02ffff -3b187d983b2100b0 -7bff00207fffea14 -7f89f040a12100a8 -80810088419d0034 -38637dc03c62ffff -4bfffae54bfffa65 -2fa3ffffe8610088 -38210130419eff58 -7d83812081810008 -3c9ff00048001b34 -7884002038a00038 -4800124d7f23cb78 -812100b060000000 -409e004c2f890001 -eb6100c0eb4100d0 -7fc4f378eb8100b8 -7f66db787f03c378 -3f9cf0007b450020 -7c9de2144bfff9fd -788400207b450020 -480012057f63db78 -a12100a660000000 -7bff00207fe9fa14 -7bde00203bde0001 -2b9c00204bffff50 -2b9e00ba409efdcc -2b9f0018409efdc4 -3c62ffff409efdbc -4bfff9a938637cb0 -000000004bfffd78 -0000088003000000 -612908043d20c800 -7c0004ac79290020 -3d40c8007c604f2a -614a080839200001 +579c063e4bfffc81 +7f84e3783c62ffff +4bfffcb138637ca0 +4082009073890002 +38637cc03c62ffff +7c0004ac4bfffc9d +392000067f40f7aa +7d20ffaa7c0004ac +7c0004ac4bfffc41 +392000017f40f7aa +7d20ffaa7c0004ac +7c0004ac39200000 +639c00027d20ffaa +7f80ffaa7c0004ac +7d20f7aa7c0004ac +3b2000024bfffc09 +7c0004ac3b400005 +7c0004ac7f20f7aa +7c0004ac7f40ffaa +579c063e7f80feaa +738900014bfffbe1 +3c62ffff4082ffdc +4bfffc1138637cd8 +614a60083d40c000 7c0004ac794a0020 -4e8000207d20572a -0000000000000000 -3863ffff00000000 -3923000178630020 -600000007d2903a6 -4e8000204200fffc -0000000000000000 -3d20c80000000000 -6129001439400001 -792900207d431830 +5529021e7d20562a +61291f6b65292000 +7d20572a7c0004ac +4bfffbe17f63db78 +3c62ffff7bbd0020 +38637ce87fa4eb78 +3be000014bfffbcd +4bfffbc17f63db78 +3ca2ffff41920028 +3c62ffff3c82ffff +38847d1838a57d08 +4bfffba138637d20 +6000000048000fbd +3c62ffff418e0024 +4bfffb8938637d50 +4800014438600000 +3ba000003be00000 +2fbf00004bffffb0 +3c62ffff419e0084 +4bfffb6138637d68 +38a000403c9df000 +3861007078840020 +600000004800137d +3d400002e9210070 +794a83e4614a464c +614a457f79290600 +419e00807fa95000 +38637d803c62ffff +886100774bfffb1d +8921007589410076 +88e1007389010074 +88a1007188c10072 +f861006088810070 +38637e003c62ffff +3c62ffff4bfffaed +4bfffae138637e30 +38a0ffff3c80ff00 +54a5042260844000 +3c60400078840020 +60000000480012f5 +38637e503c62ffff +4bfffb354bfffab5 +892100754bffff28 +409e00102f890001 +2f890015a1210082 +3c62ffff419e0010 +4bffff6c38637da0 +3f02ffffebe10090 +3b2100b03bc00000 +7fffea143b187db8 +a12100a87bff0020 +419d00347f89f040 +3c62ffff80810088 +4bfffa5138637de0 +e86100884bfffad1 +419eff582fa3ffff +8181000838210130 +48001b347d838120 +38a000383c9ff000 +7f23cb7878840020 +600000004800124d +2f890001812100b0 +eb4100d0409e004c +eb8100b8eb6100c0 +7f03c3787fc4f378 +7b4500207f66db78 +4bfff9e93f9cf000 +7b4500207c9de214 +7f63db7878840020 +6000000048001205 +7fe9fa14a12100a6 +3bde00017bff0020 +4bffff507bde0020 +409efdcc2b9c0020 +409efdc42b9e00ba +409efdbc2b9f0018 +38637cd03c62ffff +4bfffd784bfff995 +0300000000000000 +3d20c80000000880 +7929002061290804 7c604f2a7c0004ac -610800183d00c800 -7c0004ac79080020 -394000007d40472a -7d404f2a7c0004ac +392000013d40c800 +794a0020614a0808 +7d20572a7c0004ac +000000004e800020 +0000000000000000 +786300203863ffff +7d2903a639230001 +4200fffc60000000 000000004e800020 0000000000000000 394000013d20c800 7d43183061290014 7c0004ac79290020 3d00c8007c604f2a -790800206108001c +7908002061080018 7d40472a7c0004ac 7c0004ac39400000 4e8000207d404f2a 0000000000000000 -3d40c80000000000 -614a083439200025 -7c0004ac794a0020 -3d40c8007d20572a -614a083839200001 -7c0004ac794a0020 -4e8000207d20572a -0000000000000000 -8944000100000000 -794a45e489240000 -892400027d4a4b78 -7d2a5378792983e4 -7929c1e489240003 -552ac03e7d295378 -512a463e512a421e -7d401f2a7c0004ac -000000004e800020 -0000000000000000 -7c601e2a7c0004ac -7869c20278630020 -9924000298640003 -7863460278698402 -9864000099240001 +3d20c80000000000 +6129001439400001 +792900207d431830 +7c604f2a7c0004ac +6108001c3d00c800 +7c0004ac79080020 +394000007d40472a +7d404f2a7c0004ac 000000004e800020 0000000000000000 -38429d903c4c0001 -4800185d7c0802a6 -7c7e1b78f821ff21 -38637f003c62ffff -600000004bfff7b5 -390100603ca08020 -3940000460a50003 -7d1d43783920002a -38e0000478a50020 -7ce903a638c00000 -792907e07927f842 -7d2928387d2900d0 -78e900207d273a78 -38c600017ce831ae -394affff4200ffe0 -794a002139080004 -3d20c8004082ffc4 -6129080c3be00000 -7c0004ac79290020 -3d20c8007fe04f2a -7929002061290810 -7fe04f2a7c0004ac -4bfffd8d38600009 -4bfffdc13860000f -7fa4eb783c60c800 -7863002060630814 -3c60c8004bfffead -6063082c38810064 -4bfffe9978630020 -388100683c60c800 -7863002060630844 -3c60c8004bfffe85 -6063085c3881006c -4bfffe7178630020 -612908543d20c800 -7c0004ac79290020 -3d20c8007fe04f2a -7929002061290858 -7fe04f2a7c0004ac -392000173d40c800 -794a0020614a084c +392000253d40c800 +794a0020614a0834 7d20572a7c0004ac 392000013d40c800 -794a0020614a0850 +794a0020614a0838 7d20572a7c0004ac -6129083c3d20c800 -7c0004ac79290020 -3d20c8007fe04f2a -7929002061290840 -7fe04f2a7c0004ac -22de00017fc3f378 -213e00034bfffd0d -793500203ee2ffff -7d2907b47ed607b4 -3b0100703be00000 -7f3db2143af77f28 -7f5d4a147ebdaa14 -3860000f4bfffd75 -4bfffca93b800000 -7b890fa43b600001 -7c77482a7f04c378 -7d39e0ae4bfffde1 -7f89500089590010 -7d35e0ae409e0048 -7f895000895a0010 -3b9c0004409e0038 -409effc82bbc0010 -393f00012fbb0000 -409e00287d3c07b4 -419e001c2f890020 -7f9fe3787fc3f378 -4bffff8c4bfffcb9 -4bffffc83b600000 -38bf00017f9fe378 -7cbc07b47fc3f378 -213e00034bfffc99 -793500207eddb214 -7ebdaa147d2907b4 -4bfffcc97fbd4a14 -3b6000003860000f -3b4000014bfffbfd -7f04c3787b690fa4 -4bfffd357c77482a -895600107d39d8ae -409e00447f895000 -895d00107d35d8ae -409e00347f895000 -2bbb00103b7b0004 -2fba0000409effc8 -393c0001419e0028 -7d3c07b42f89001f -7fc3f378419d0018 -4bffff904bfffc11 -4bffffcc3b400000 -7fbfe2142f9f0020 -409e006c7fbd0e70 -38637f103c62ffff -600000004bfff4cd -3be000007fc3f378 -7f9fe8004bfffb8d -3d40c800419c0070 -614a080c39200000 -7c0004ac794a0020 -3d40c8007d20572a -794a0020614a0810 -7d20572a7c0004ac -4bfffaed3860000b -4bfffb213860000f -48001554382100e0 -3c62ffff7cbfe050 -7ca501947ca50e70 -38637f187fa4eb78 -4bfff4517ca507b4 -4bffff8460000000 -3bff00017fc3f378 -7fff07b44bfffb59 -000000004bffff7c -00000b8001000000 -384299e03c4c0001 -3d40c8007c0802a6 -3920000e614a0800 -f8010010794a0020 -7c0004acf821ffa1 -3c62ffff7d20572a -4bfff3f138637fd0 -3821006060000000 -7c0803a6e8010010 -000000004e800020 -0000008001000000 -384299883c4c0001 -3d40c8007c0802a6 -39200001614a0800 -f8010010794a0020 -7c0004acf821ffa1 -3c62ffff7d20572a -4bfff39938637f48 -3821006060000000 -7c0803a6e8010010 000000004e800020 -0000008001000000 -384299303c4c0001 -390000807c0802a6 -3d40aaaa7d0903a6 -614aaaaa3d204000 -f821ff8148001409 -3929000491490000 -4bfff3b54200fff8 -3940008060000000 -7d4903a63d00aaaa -3be000003d204000 -814900006108aaaa -419e000c7f8a4000 -7fff07b43bff0001 -4200ffe839290004 -3d40555539000080 -3d2040007d0903a6 -91490000614a5555 -4200fff839290004 -600000004bfff359 -3d00555539400080 -3d2040007d4903a6 -8149000061085555 -419e000c7f8a4000 -7fff07b43bff0001 -4200ffe839290004 -419e001c2fbf0000 -38a001003c62ffff -38637e487fe4fb78 -600000004bfff295 -3ce080203d000008 -60e700037d0903a6 -392000013d404000 -7928f84278e70020 -7d2900d0792907e0 -7d293838394a0004 -912afffc7d294278 -4bfff2c54200ffe4 -3d00000860000000 -7d0903a63ce08020 -3d40400060e70003 -392000013ba00000 -7928f84278e70020 +0000000000000000 +8924000089440001 +7d4a4b78794a45e4 +792983e489240002 +892400037d2a5378 +7d2953787929c1e4 +512a421e552ac03e +7c0004ac512a463e +4e8000207d401f2a +0000000000000000 +7c0004ac00000000 +786300207c601e2a +986400037869c202 +7869840299240002 +9924000178634602 +4e80002098640000 +0000000000000000 +3c4c000100000000 +7c0802a638429d7c +f821ff214800185d +3c62ffff7c7e1b78 +4bfff7a138637f20 +3ca0802060000000 +60a5000339010060 +3920002a39400004 +78a500207d1d4378 +38c0000038e00004 +7927f8427ce903a6 7d2900d0792907e0 -7d2942787d293838 -7f884840810a0000 -3bbd0001419e000c -394a00047fbd07b4 -2fbd00004200ffd4 -3c62ffff419e001c -7fa4eb783ca00008 -4bfff1e138637e70 -3920200060000000 -7d2903a639400000 -794800203d2a1000 -394a000139290002 -9109000079291764 -4bfff2254200ffe8 -3920200060000000 -7d2903a639400000 -3d2a10003bc00000 -8129000879291764 -7f8950005529043e -3bde0001419e000c -394a00017fde07b4 -2fbe00004200ffdc -3c62ffff419e001c -7fc4f37838a02000 -4bfff15938637e98 -7fffea1460000000 -7ffff21438600000 -409e00a42f9f0000 -38637ec03c62ffff -600000004bfff135 -3d4000047c9602a6 -7d4903a678840020 -3d49080039200000 -f92a0000794a1f24 -4200fff039290001 -7c9f20507ff602a6 -7fff23963fe06400 -600000004bfff169 -7d3602a67bff0020 -792900203d000004 -3d4040007d0903a6 -394a0008e90a0000 -7cb602a64200fff8 -3ca064007d254850 -3c62ffff7ca54b96 -38637ed07fe4fb78 -4bfff0a978a50060 -3860000160000000 -4800119c38210080 -0100000000000000 -3c4c000100000380 -7c0802a638429644 -f821fec1480010f5 -3bc000013fe0c800 -7bff002063ff0014 -386000004bfffc49 -7c0004ac4bfff72d -3f80c8007fc0ff2a -7b9c0020639c0020 -7fc0e72a7c0004ac -7c0004ac3ba00000 -386000017fa0ff2a -392000024bfff6fd -7d20ff2a7c0004ac -7fc0e72a7c0004ac -7fa0ff2a7c0004ac -3b8100703c62ffff -3e02ffff38637f88 -600000004bffeffd -fb8100803d22ffff -39297f983de2ffff -3e42ffff3dc2ffff -f92100983ae10063 -3be000003ac10061 -39ef7fa83a107f28 -3a527f6839ce7fb0 -3b20000139210064 -3ea0c8003e80c800 -39210068f9210088 -6294080c7f39f830 -7b33002062b50810 -f92100903bc00000 -3ba000003b000000 -7ab500207a940020 -7fbeeb7848000054 -419e029c2f9d000f -612900143d20c800 -7c0004ac79290020 -3d00c8007e604f2a -6108002439400001 -7c0004ac79080020 -394000007d40472a -7d404f2a7c0004ac -7f78db783bbd0001 -394100607fbd07b4 -3920002a39000004 -38e000047d5a5378 -7ce903a638c00000 -7927f8423ca08020 -792907e060a50003 -78a500207d2900d0 7d273a787d292838 -7cea31ae78e90020 -4200ffd438c60001 -394a00043908ffff -4082ffb879080021 -7c0004ac3b600000 -7c0004ac7f60a72a -386000097f60af2a -3860000f4bfff521 -3c60c8004bfff555 -606308147f44d378 -4bfff64178630020 -3c60c800e8810088 +7ce831ae78e90020 +4200ffe038c60001 +39080004394affff +4082ffc4794a0021 +3be000003d20c800 +792900206129080c +7fe04f2a7c0004ac +612908103d20c800 +7c0004ac79290020 +386000097fe04f2a +3860000f4bfffd8d +3c60c8004bfffdc1 +606308147fa4eb78 +4bfffead78630020 +388100643c60c800 786300206063082c -e88100904bfff62d -606308443c60c800 -4bfff61978630020 +3c60c8004bfffe99 +6063084438810068 +4bfffe8578630020 3881006c3c60c800 786300206063085c -3d20c8004bfff605 +3d20c8004bfffe71 7929002061290854 -7f604f2a7c0004ac +7fe04f2a7c0004ac 612908583d20c800 7c0004ac79290020 -3d40c8007f604f2a +3d40c8007fe04f2a 614a084c39200017 7c0004ac794a0020 3d40c8007d20572a @@ -1096,491 +829,760 @@ e88100904bfff62d 7c0004ac794a0020 3d20c8007d20572a 792900206129083c -7f604f2a7c0004ac +7fe04f2a7c0004ac 612908403d20c800 7c0004ac79290020 -e86100987f604f2a -7fe4fb787fa5eb78 -3b6000003b400020 -600000004bffedc5 -4bfff4897fe3fb78 -3860000f4bfff51d -4bfff4513a200001 -79480fa439400000 -f94100a0e8810080 -4bfff5857c70402a -88fc0001e94100a0 -7f8838007d1650ae -7d1750ae409e00a0 -7f88380088fc0003 -394a0004409e0090 -409effc02baa0010 -7de37b787e248b78 -600000004bffed55 -7fe3fb783b5affff -7b5a00214bfff461 -7f7b07b47f7b8a14 -7dc373784082ff80 -600000004bffed2d -7c0004ac39200000 -7c0004ac7d20a72a -3860000b7d20af2a -3860000f4bfff379 -7fe3fb784bfff3ad -7e4393784bfff531 -600000004bffecf5 -419cfd707f98d800 -4bfffd6c7f1bc378 -4bffff703a200000 -7fc5f3783c62ffff -38637fb87fe4fb78 -600000004bffecc5 -612900143d20c800 -7c0004ac79290020 -3d00c8007f204f2a -6108002039400001 -7c0004ac79080020 -394000007d40472a -7d404f2a7c0004ac -3d00c8007bde0020 -6108002438de0001 -394000017cc903a6 -38e0000079080020 -7fe3fb7842000034 -4bfff48d3af7ffff -3b9cffff7e439378 -600000004bffec4d -3ad6ffff2f9f0001 -3be00001419e0028 -7c0004ac4bfffc78 -7c0004ac7e604f2a -7c0004ac7d40472a -4bffffb47ce04f2a -3860000138210140 -0000000048000cd4 -0000128001000000 -384291b83c4c0001 -3c62ffff7c0802a6 -48000c9138637f70 -3f60c800f821ff71 -637b10003be00000 -4bffebd17b7b0020 -7c0004ac60000000 -3f40c8007fe0df2a -7b5a0020635a1004 -7fe0d72a7c0004ac -4bfff78d3fa0c800 -7bbd002063bd080c -7fe0ef2a7c0004ac -63de08103fc0c800 -7c0004ac7bde0020 -3f80c8007fe0f72a -639c08003920000c +7fc3f3787fe04f2a +4bfffd0d22de0001 +3ee2ffff213e0003 +7ed607b479350020 +3be000007d2907b4 +3af77f483b010070 +7ebdaa147f3db214 +4bfffd757f5d4a14 +3b8000003860000f +3b6000014bfffca9 +7f04c3787b890fa4 +4bfffde17c77482a +895900107d39e0ae +409e00487f895000 +895a00107d35e0ae +409e00387f895000 +2bbc00103b9c0004 +2fbb0000409effc8 +7d3c07b4393f0001 +2f890020409e0028 +7fc3f378419e001c +4bfffcb97f9fe378 +3b6000004bffff8c +7f9fe3784bffffc8 +7fc3f37838bf0001 +4bfffc997cbc07b4 +7eddb214213e0003 +7d2907b479350020 +7fbd4a147ebdaa14 +3860000f4bfffcc9 +4bfffbfd3b600000 +7b690fa43b400001 +7c77482a7f04c378 +7d39d8ae4bfffd35 +7f89500089560010 +7d35d8ae409e0044 +7f895000895d0010 +3b7b0004409e0034 +409effc82bbb0010 +419e00282fba0000 +2f89001f393c0001 +419d00187d3c07b4 +4bfffc117fc3f378 +3b4000004bffff90 +2f9f00204bffffcc +7fbd0e707fbfe214 +3c62ffff409e006c +4bfff4b938637f30 +7fc3f37860000000 +4bfffb8d3be00000 +419c00707f9fe800 +392000003d40c800 +794a0020614a080c +7d20572a7c0004ac +614a08103d40c800 +7c0004ac794a0020 +3860000b7d20572a +3860000f4bfffaed +382100e04bfffb21 +7cbfe05048001554 +7ca50e703c62ffff +7fa4eb787ca50194 +7ca507b438637f38 +600000004bfff43d +7fc3f3784bffff84 +4bfffb593bff0001 +4bffff7c7fff07b4 +0100000000000000 +3c4c000100000b80 +7c0802a6384299cc +614a08003d40c800 +794a00203920000e +f821ffa1f8010010 +7d20572a7c0004ac +38637ff03c62ffff +600000004bfff3dd +e801001038210060 +4e8000207c0803a6 +0100000000000000 +3c4c000100000080 +7c0802a638429974 +614a08003d40c800 +794a002039200001 +f821ffa1f8010010 +7d20572a7c0004ac +38637f683c62ffff +600000004bfff385 +e801001038210060 +4e8000207c0803a6 +0100000000000000 +3c4c000100000080 +7c0802a63842991c +7d0903a639000080 +3d2040003d40aaaa +48001409614aaaaa +91490000f821ff81 +4200fff839290004 +600000004bfff3a1 +3d00aaaa39400080 +3d2040007d4903a6 +6108aaaa3be00000 +7f8a400081490000 +3bff0001419e000c +392900047fff07b4 +390000804200ffe8 +7d0903a63d405555 +614a55553d204000 +3929000491490000 +4bfff3454200fff8 +3940008060000000 +7d4903a63d005555 +610855553d204000 +7f8a400081490000 +3bff0001419e000c +392900047fff07b4 +2fbf00004200ffe8 +3c62ffff419e001c +7fe4fb7838a00100 +4bfff28138637e68 +3d00000860000000 +7d0903a63ce08020 +3d40400060e70003 +78e7002039200001 +792907e07928f842 +394a00047d2900d0 +7d2942787d293838 +4200ffe4912afffc +600000004bfff2b1 +3ce080203d000008 +60e700037d0903a6 +3ba000003d404000 +78e7002039200001 +792907e07928f842 +7d2938387d2900d0 +810a00007d294278 +419e000c7f884840 +7fbd07b43bbd0001 +4200ffd4394a0004 +419e001c2fbd0000 +3ca000083c62ffff +38637e907fa4eb78 +600000004bfff1cd +3940000039202000 +3d2a10007d2903a6 +3929000279480020 +79291764394a0001 +4200ffe891090000 +600000004bfff211 +3940000039202000 +3bc000007d2903a6 +792917643d2a1000 +5529043e81290008 +419e000c7f895000 +7fde07b43bde0001 +4200ffdc394a0001 +419e001c2fbe0000 +38a020003c62ffff +38637eb87fc4f378 +600000004bfff145 +386000007fffea14 +2f9f00007ffff214 +3c62ffff409e00a4 +4bfff12138637ee0 +7c9602a660000000 +788400203d400004 +392000007d4903a6 +794a1f243d490800 +39290001f92a0000 +7ff602a64200fff0 +3fe064007c9f2050 +4bfff1557fff2396 +7bff002060000000 +3d0000047d3602a6 +7d0903a679290020 +e90a00003d404000 +4200fff8394a0008 +7d2548507cb602a6 +7ca54b963ca06400 +7fe4fb783c62ffff +78a5006038637ef0 +600000004bfff095 +3821008038600001 +000000004800119c +0000038001000000 +384296303c4c0001 +480010f57c0802a6 +3fe0c800f821fec1 +63ff00143bc00001 +4bfffc497bff0020 +4bfff72d38600000 +7fc0ff2a7c0004ac +639c00203f80c800 7c0004ac7b9c0020 -386000007d20e72a -4bfff2096063c350 -7fe0ef2a7c0004ac -7fe0f72a7c0004ac -7c0004ac3920000e -386027107d20e72a -392002004bfff1e5 -7d20ef2a7c0004ac +3ba000007fc0e72a +7fa0ff2a7c0004ac +4bfff6fd38600001 7c0004ac39200002 -3860000f7d20f72a -7c0004ac4bfff189 -392000037fe0ef2a +7c0004ac7d20ff2a +7c0004ac7fc0e72a +3c62ffff7fa0ff2a +38637fa83b810070 +4bffefe93e02ffff +3d22ffff60000000 +3de2fffffb810080 +3dc2ffff39297fb8 +3ae100633e42ffff +3ac10061f9210098 +3a107f483be00000 +39ce7fd039ef7fc8 +392100643a527f88 +3e80c8003b200001 +f92100883ea0c800 +7f39f83039210068 +62b508106294080c +3bc000007b330020 +3b000000f9210090 +7a9400203ba00000 +480000547ab50020 +2f9d000f7fbeeb78 +3d20c800419e029c +7929002061290014 +7e604f2a7c0004ac +394000013d00c800 +7908002061080024 +7d40472a7c0004ac +7c0004ac39400000 +3bbd00017d404f2a +7fbd07b47f78db78 +3900000439410060 +7d5a53783920002a +38c0000038e00004 +3ca080207ce903a6 +60a500037927f842 +7d2900d0792907e0 +7d29283878a50020 +78e900207d273a78 +38c600017cea31ae +3908ffff4200ffd4 +79080021394a0004 +3b6000004082ffb8 +7f60a72a7c0004ac +7f60af2a7c0004ac +4bfff52138600009 +4bfff5553860000f +7f44d3783c60c800 +7863002060630814 +e88100884bfff641 +6063082c3c60c800 +4bfff62d78630020 +3c60c800e8810090 +7863002060630844 +3c60c8004bfff619 +6063085c3881006c +4bfff60578630020 +612908543d20c800 +7c0004ac79290020 +3d20c8007f604f2a +7929002061290858 +7f604f2a7c0004ac +392000173d40c800 +794a0020614a084c +7d20572a7c0004ac +392000013d40c800 +794a0020614a0850 +7d20572a7c0004ac +6129083c3d20c800 +7c0004ac79290020 +3d20c8007f604f2a +7929002061290840 +7f604f2a7c0004ac +7fa5eb78e8610098 +3b4000207fe4fb78 +4bffedb13b600000 +7fe3fb7860000000 +4bfff51d4bfff489 +3a2000013860000f +394000004bfff451 +e881008079480fa4 +7c70402af94100a0 +e94100a04bfff585 +7d1650ae88fc0001 +409e00a07f883800 +88fc00037d1750ae +409e00907f883800 +2baa0010394a0004 +7e248b78409effc0 +4bffed417de37b78 +3b5affff60000000 +4bfff4617fe3fb78 +7f7b8a147b5a0021 +4082ff807f7b07b4 +4bffed197dc37378 +3920000060000000 +7d20a72a7c0004ac +7d20af2a7c0004ac +4bfff3793860000b +4bfff3ad3860000f +4bfff5317fe3fb78 +4bffece17e439378 +7f98d80060000000 +7f1bc378419cfd70 +3a2000004bfffd6c +3c62ffff4bffff70 +7fe4fb787fc5f378 +4bffecb138637fd8 +3d20c80060000000 +7929002061290014 +7f204f2a7c0004ac +394000013d00c800 +7908002061080020 +7d40472a7c0004ac +7c0004ac39400000 +7bde00207d404f2a +38de00013d00c800 +7cc903a661080024 +7908002039400001 +4200003438e00000 +3af7ffff7fe3fb78 +7e4393784bfff48d +4bffec393b9cffff +2f9f000160000000 +419e00283ad6ffff +4bfffc783be00001 +7e604f2a7c0004ac +7d40472a7c0004ac +7ce04f2a7c0004ac +382101404bffffb4 +48000cd438600001 +0100000000000000 +3c4c000100001280 +7c0802a6384291a4 +38637f903c62ffff +f821ff7148000c91 +3be000003f60c800 +7b7b0020637b1000 +600000004bffebbd +7fe0df2a7c0004ac +635a10043f40c800 +7c0004ac7b5a0020 +3fa0c8007fe0d72a +63bd080c4bfff78d +7c0004ac7bbd0020 +3fc0c8007fe0ef2a +7bde002063de0810 +7fe0f72a7c0004ac +3920000c3f80c800 +7b9c0020639c0800 +7d20e72a7c0004ac +6063c35038600000 +7c0004ac4bfff209 +7c0004ac7fe0ef2a +3920000e7fe0f72a +7d20e72a7c0004ac +4bfff1e538602710 +7c0004ac39200200 +392000027d20ef2a 7d20f72a7c0004ac -4bfff16d3860000f -7c0004ac39200006 -3b8000017d20ef2a -7f80f72a7c0004ac -4bfff14d3860000f -7c0004ac39200920 -7c0004ac7d20ef2a -3860000f7fe0f72a -386000c84bfff131 -392004004bfff165 +4bfff1893860000f +7fe0ef2a7c0004ac +7c0004ac39200003 +3860000f7d20f72a +392000064bfff16d +7d20ef2a7c0004ac +7c0004ac3b800001 +3860000f7f80f72a +392009204bfff14d 7d20ef2a7c0004ac 7fe0f72a7c0004ac -4bfff10d38600003 -4bfff141386000c8 -4bfff6cd4bfffa15 -2c2300004bfff721 -7c0004ac4082001c -7c0004ac7f80df2a -382100907f80d72a -7c0004ac48000b64 -386000017f80df2a -000000004bffffec -0000068001000000 -384290083c4c0001 -600000003d20c000 -7929002061292000 -3d20c000f9228048 -7929002061290020 -7d204eea7c0004ac -792906003d40001c -7d295392614a2000 -394a0018e9428048 -7c0004ac3929ffff -4e8000207d2057ea -0000000000000000 -3c4c000100000000 -6000000038428fa4 -39290010e9228048 -7d204eea7c0004ac -4082ffe871290008 -e94280485469063e +4bfff1313860000f +4bfff165386000c8 +7c0004ac39200400 +7c0004ac7d20ef2a +386000037fe0f72a +386000c84bfff10d +4bfffa154bfff141 +4bfff7214bfff6cd +4082001c2c230000 +7f80df2a7c0004ac +7f80d72a7c0004ac +48000b6438210090 +7f80df2a7c0004ac +4bffffec38600001 +0100000000000000 +3c4c000100000680 +3d20c00038428ff4 +6129200060000000 +f922806879290020 +612900203d20c000 +7c0004ac79290020 +3d40001c7d204eea +614a200079290600 +e94280687d295392 +3929ffff394a0018 7d2057ea7c0004ac 000000004e800020 0000000000000000 -38428f603c4c0001 -fbc1fff07c0802a6 -3bc3fffffbe1fff8 -f821ffd1f8010010 -2fbf00008ffe0001 -38210030409e0010 -48000a8c38600000 -409e000c2b9f000a -4bffff813860000d -4bffff797fe3fb78 -000000004bffffd0 -0000028001000000 -408200082c240000 -2b8500243881fff0 -38600000f8640000 -3cc000014d9d0020 -60c6260078c683e4 -89490000e9240000 -419d002c2b8a0020 -70e800017cc75436 -2fa5000040820014 -38a0000a409e0054 -392900014800005c -4bffffccf9240000 -409e00382fa50000 -38a0000a2b8a0030 -89490001409e003c -409e00302f8a0078 -38a0001089490001 -409e00202f8a0078 -f924000039290002 -2f85001048000014 -2b8a0030409e000c -38600000419effd8 -38c9ffd048000030 -2b8a000954ca063e -7cc90734419d0034 -4c9c00207f892800 -7c6519d238e70001 -7c691a14f8e40000 -89270000e8e40000 -409effc82fa90000 -3949ff9f4e800020 +38428f903c4c0001 +e922806860000000 +7c0004ac39290010 +712900087d204eea +5469063e4082ffe8 +7c0004ace9428068 +4e8000207d2057ea +0000000000000000 +3c4c000100000000 +7c0802a638428f4c +fbe1fff8fbc1fff0 +f80100103bc3ffff +8ffe0001f821ffd1 +409e00102fbf0000 +3860000038210030 +2b9f000a48000a8c +3860000d409e000c +7fe3fb784bffff81 +4bffffd04bffff79 +0100000000000000 +2c24000000000280 +3881fff040820008 +f86400002b850024 +4d9d002038600000 +78c683e43cc00001 +e924000060c62600 +2b8a002089490000 +7cc75436419d002c +4082001470e80001 +409e00542fa50000 +4800005c38a0000a +f924000039290001 +2fa500004bffffcc +2b8a0030409e0038 +409e003c38a0000a +2f8a007889490001 +89490001409e0030 +2f8a007838a00010 +39290002409e0020 +48000014f9240000 +409e000c2f850010 +419effd82b8a0030 +4800003038600000 +54ca063e38c9ffd0 +419d00342b8a0009 +7f8928007cc90734 +38e700014c9c0020 +f8e400007c6519d2 +e8e400007c691a14 +2fa9000089270000 +4e800020409effc8 +554a063e3949ff9f +419d00102b8a0019 +7d2907343929ffa9 +3949ffbf4bffffbc 2b8a0019554a063e -3929ffa9419d0010 -4bffffbc7d290734 -554a063e3949ffbf -4d9d00202b8a0019 -4bffffe43929ffc9 -0000000000000000 -3920000000000000 -2f8a00007d4348ae -7d234b78409e000c -392900014e800020 -000000004bffffe8 -0000000000000000 -3900000078aae8c2 -7d2903a6392a0001 -78a9e8c242000030 -1d29fff8792a1f24 -7c8452147d035214 -392000007ca92a14 -7d4903a639450001 -4e80002042000018 -7d23412a7d24402a -4bffffc439080008 -7d4849ae7d4448ae -4bffffdc39290001 -0000000000000000 -3923ff9f00000000 -4d9d00202b890019 -7c6307b43863ffe0 -000000004e800020 +3929ffc94d9d0020 +000000004bffffe4 +0000000000000000 +7d4348ae39200000 +409e000c2f8a0000 +4e8000207d234b78 +4bffffe839290001 +0000000000000000 +78aae8c200000000 +392a000139000000 +420000307d2903a6 +792a1f2478a9e8c2 +7d0352141d29fff8 +7ca92a147c845214 +3945000139200000 +420000187d4903a6 +7d24402a4e800020 +390800087d23412a +7d4448ae4bffffc4 +392900017d4849ae +000000004bffffdc +0000000000000000 +2b8900193923ff9f +3863ffe04d9d0020 +4e8000207c6307b4 0000000000000000 -38428d103c4c0001 -3d2037367c0802a6 -612935347d908026 -65293332792907c6 -6129313091810008 -f821ffa1480007d9 -7cde33787c7d1b78 -f92100203be00000 -612964633d206665 -65296261792907c6 -f921002861293938 -2fa900007ca92b78 -2fbf0000409e0080 -3be00001409e0008 -386000007fbf2040 -2e270000419d0058 -7f65f3923b9fffff -7ca928507d3bf1d2 -886500207ca12a14 -4bffff4141920010 -5463063e60000000 -e93d00002fbb0000 -7c69e1ae7f65db78 -409effc83b9cffff -38600001e93d0000 -fbfd00007fe9fa14 -8181000838210060 -480007747d908120 -409e00142b9e0010 -3bff00017929e102 -4bffff687fff07b4 -4bfffff07d29f392 -0300000000000000 -3c4c000100000580 -7c0802a638428c04 -f821ffb1480006e9 -7c7f1b78eb630000 -7cbd2b787c9c2378 -7fa3eb783bc00000 -600000004bfffe0d -409d00147fa3f040 -7d3b5050e95f0000 -419c00107fa9e040 -3860000138210050 -7d3df0ae480006f0 -992a00003bde0001 -39290001e93f0000 -4bffffb8f93f0000 +3c4c000100000000 +7c0802a638428cfc +7d9080263d203736 +792907c661293534 +9181000865293332 +480007d961293130 +7c7d1b78f821ffa1 +3be000007cde3378 +3d206665f9210020 +792907c661296463 +6129393865296261 +7ca92b78f9210028 +409e00802fa90000 +409e00082fbf0000 +7fbf20403be00001 +419d005838600000 +3b9fffff2e270000 +7d3bf1d27f65f392 +7ca12a147ca92850 +4192001088650020 +600000004bffff41 +2fbb00005463063e +7f65db78e93d0000 +3b9cffff7c69e1ae +e93d0000409effc8 +7fe9fa1438600001 +38210060fbfd0000 +7d90812081810008 +2b9e001048000774 +7929e102409e0014 +7fff07b43bff0001 +7d29f3924bffff68 +000000004bfffff0 +0000058003000000 +38428bf03c4c0001 +480006e97c0802a6 +eb630000f821ffb1 +7c9c23787c7f1b78 +3bc000007cbd2b78 +4bfffe0d7fa3eb78 +7fa3f04060000000 +e95f0000409d0014 +7fa9e0407d3b5050 +38210050419c0010 +480006f038600001 +3bde00017d3df0ae +e93f0000992a0000 +f93f000039290001 +000000004bffffb8 +0000058001000000 +38428b703c4c0001 +480006617c0802a6 +7c7d1b78f821ffa1 +7ca32b787c9b2378 +38a0000a38800000 +eb5d00007cde3378 +7d1943787cfc3b78 +4bfffc497d3f4b78 +3940000060000000 +2fbe00007c6307b4 +2faa0000409e006c +39400001409e0008 +7f8348007d3f5214 +409d00447d2a07b4 +2f8300007c6a1850 +3929000178690020 +3d408000419c0010 +409e00087f835000 +2c29000139200001 +418200143929ffff +7d5a3850e8fd0000 +419c00307faad840 +3860000038210060 +2b9c001048000604 +7bdee102409e0014 +7d4a07b4394a0001 +7fdee3924bffff7c +9b2700004bfffff0 +394a0001e95d0000 +4bffffa8f95d0000 0100000000000000 -3c4c000100000580 -7c0802a638428b84 -f821ffa148000661 -7c9b23787c7d1b78 -388000007ca32b78 -7cde337838a0000a -7cfc3b78eb5d0000 -7d3f4b787d194378 -600000004bfffc49 -7c6307b439400000 -409e006c2fbe0000 -409e00082faa0000 -7d3f521439400001 -7d2a07b47f834800 -7c6a1850409d0044 -786900202f830000 -419c001039290001 -7f8350003d408000 -39200001409e0008 -3929ffff2c290001 -e8fd000041820014 -7faad8407d5a3850 -38210060419c0030 -4800060438600000 -409e00142b9c0010 -394a00017bdee102 -4bffff7c7d4a07b4 -4bfffff07fdee392 -e95d00009b270000 -f95d0000394a0001 -000000004bffffa8 -0000078001000000 -38428a883c4c0001 -480005397c0802a6 -7c741b79f821fed1 -38600000f8610060 -2fa4000041820068 -39210040419e0060 -3ac4ffff3e42ffff -f92100703b410020 -3ae0000060000000 -3a527ff839228040 -f92100783ba10060 -ebc1006089250000 +3c4c000100000780 +7c0802a638428a74 +f821fed148000539 +f86100607c741b79 +4182006838600000 +419e00602fa40000 +6000000039210040 +3b4100203ac4ffff +60000000f9210070 +392280603ae00000 +3ba100603a428018 +89250000f9210078 +2fa90000ebc10060 +7ff4f050419e0010 +419c00207fbfb040 +993e000039200000 +7e941850e8610060 +382101307e8307b4 +2b89002548000508 +409e048839450001 +8925000038e00000 +f8a10068e9010070 +7d2741ae7cea07b4 +8d25000139070001 +2b8900647d0807b4 +2b890069419e0058 +2b890075419e0050 +2b890078419e0048 +2b890058419e0040 +2b890070419e0038 +2b890063419e0030 +2b890073419e0028 +2b890025419e0020 +2b89004f419e0018 +2b89006f419e0010 +409eff8838e70001 +2b890025394a0002 +7d1a42147d4a07b4 +992800207d5a5214 +409e00209aea0020 +f9210060393e0001 +993e000039200025 +38a90002e9210068 +892100414bffff04 +3a2600087fffb050 +3a600030eb660000 +3929ffd23b010042 +4082039c712900fd +3b2000043aa00000 +3a0000013b800000 +7ddb00d039e0002d +2b89006c48000108 +88f8000138d80001 +419d0118419e033c +419e02402b890063 +2b89004f419d0038 +2b890058419e01e8 +3949ffd0419e0188 +2b8a0009554a063e +395c0001419d00c4 +993c00207f81e214 +480000b0795c0020 +419e03042b890068 +419e000c2b890069 +409effc82b890064 +7d41e2142b890075 +7f6adb789aea0020 +57291838419e0034 +7e0948363929ffff +418200207f694839 +e921006099e80000 +f921006039290001 +7d52482a7b291f24 +e88100607dca5038 +38e0000a7d465378 +7f45d378f9410080 +7e689b7839200000 +7c9e20507fa3eb78 +4bfffc9d7c84f850 +e9410080e8810060 +38c0000a7ea7ab78 +7d4553787c9e2050 +7fa3eb787c84f850 +3b1800014bfffaed +e901006089380000 419e00102fa90000 -7fbfb0407ff4f050 -39200000419c0020 -e8610060993e0000 -7e8307b47e941850 -4800050838210130 -394500012b890025 -38e00000409e0488 -e901007089250000 -7cea07b4f8a10068 -390700017d2741ae -7d0807b48d250001 -419e00582b890064 -419e00502b890069 -419e00482b890075 -419e00402b890078 -419e00382b890058 -419e00302b890070 -419e00282b890063 -419e00202b890073 -419e00182b890025 -419e00102b89004f -38e700012b89006f -394a0002409eff88 -7d4a07b42b890025 -7d5a52147d1a4214 -9aea002099280020 -393e0001409e0020 -39200025f9210060 -e9210068993e0000 -4bffff0438a90002 -7fffb05089210041 -eb6600003a260008 -3b0100423a600030 -712900fd3929ffd2 -3aa000004082039c -3b8000003b200004 -39e0002d3a000001 -480001087ddb00d0 -38d800012b89006c -419e033c88f80001 -2b890063419d0118 -419d0038419e0240 -419e01e82b89004f -419e01882b890058 -554a063e3949ffd0 -419d00c42b8a0009 -7f81e214395c0001 -795c0020993c0020 -2b890068480000b0 -2b890069419e0304 -2b890064419e000c -2b890075409effc8 -9aea00207d41e214 -419e00347f6adb78 -3929ffff57291838 -7f6948397e094836 -99e8000041820020 -39290001e9210060 -7b291f24f9210060 -7dca50387d52482a -7d465378e8810060 -f941008038e0000a -392000007f45d378 -7fa3eb787e689b78 -7c84f8507c9e2050 -e88100604bfffc9d -7ea7ab78e9410080 -7c9e205038c0000a -7c84f8507d455378 -4bfffaed7fa3eb78 -893800003b180001 -2fa90000e9010060 -7d5e4050419e0010 -419dfee47fbf5040 -4bfffe907e268b78 -419e016c2b890073 -2b89006f419d006c -2b890070419e00d4 -7d21e214409efef0 -7f66db7838e00010 -9ae900207c8af850 -3920000239000020 -7fa3eb787f45d378 -e88100604bfffc0d -7fa3eb78e8a10078 -7c84f8507c9e2050 -e88100604bfffb75 -38c000107ea7ab78 -7c9e20507f65db78 -2b8900784bffff5c -2b89007a419e0018 -2b890075419e01cc -3aa000014bfffeb8 +7fbf50407d5e4050 +7e268b78419dfee4 +2b8900734bfffe90 +419d006c419e016c +419e00d42b89006f +409efef02b890070 38e000107d21e214 -7e689b787c8af850 -7b291f249ae90020 -7fa3eb787f45d378 -392000007d72482a -7d665b787f6b5838 -4bfffb89f9610080 +7c8af8507f66db78 +390000209ae90020 +7f45d37839200002 +4bfffc0d7fa3eb78 +e8a10078e8810060 +7c9e20507fa3eb78 +4bfffb757c84f850 7ea7ab78e8810060 -7c9e205038c00010 -7d655b78e9610080 -7d21e2144bfffeec -7c8af85038e00008 +7f65db7838c00010 +4bffff5c7c9e2050 +419e00182b890078 +419e01cc2b89007a +4bfffeb82b890075 +7d21e2143aa00001 +7c8af85038e00010 9ae900207e689b78 7f45d3787b291f24 7d72482a7fa3eb78 7f6b583839200000 f96100807d665b78 -e88100604bfffb35 -38c000087ea7ab78 -4bffffac7c9e2050 -390000207d21e214 -38c0000138e0000a -7f45d3789ae90020 -7c8af85039200000 -4bfffaf97fa3eb78 -9b690000e9210060 -39290001e9210060 -4bfffe6cf9210060 -38a0000a7d21e214 -f9410088f9010090 -7f43d37838800000 -4bfff73d9ae90020 -f861008060000000 -4bfff8617f63db78 -e921008060000000 -409d00407fa91840 -e94100887c634850 -2fa30000e9010090 -7d4af85039230001 -39200001409e0008 -e8c100602c290001 -418200103929ffff -7faa38407ce83050 -e8810060419d0020 -7fa3eb787f65db78 -7c84f8507c9e2050 -4bfffdd44bfff9cd -98e6000038e00020 -38e70001e8e10060 -4bffffb4f8e10060 -3b2000082b87006c -7cd83378409efdb0 -2b8700684bfffda8 -409efd9c3b200002 -3b2000017cd83378 -3b2000084bfffd90 -3a6000204bfffd88 -4bfffc603b010041 -7d455378993e0000 -39290001e9210060 -4bfffb24f9210060 -0100000000000000 -f9c1ff7000001280 -fa01ff80f9e1ff78 -fa41ff90fa21ff88 -fa81ffa0fa61ff98 -fac1ffb0faa1ffa8 -fb01ffc0fae1ffb8 -fb41ffd0fb21ffc8 -fb81ffe0fb61ffd8 -fbc1fff0fba1ffe8 -f8010010fbe1fff8 -e9c1ff704e800020 -ea01ff80e9e1ff78 -ea41ff90ea21ff88 -ea81ffa0ea61ff98 -eac1ffb0eaa1ffa8 -eb01ffc0eae1ffb8 -eb41ffd0eb21ffc8 -eb81ffe0eb61ffd8 -eba1ffe8e8010010 -ebc1fff07c0803a6 -4e800020ebe1fff8 -e8010010ebc1fff0 -7c0803a6ebe1fff8 -000000004e800020 +e88100604bfffb89 +38c000107ea7ab78 +e96100807c9e2050 +4bfffeec7d655b78 +38e000087d21e214 +7e689b787c8af850 +7b291f249ae90020 +7fa3eb787f45d378 +392000007d72482a +7d665b787f6b5838 +4bfffb35f9610080 +7ea7ab78e8810060 +7c9e205038c00008 +7d21e2144bffffac +38e0000a39000020 +9ae9002038c00001 +392000007f45d378 +7fa3eb787c8af850 +e92100604bfffaf9 +e92100609b690000 +f921006039290001 +7d21e2144bfffe6c +f901009038a0000a +38800000f9410088 +9ae900207f43d378 +600000004bfff73d +7f63db78f8610080 +600000004bfff861 +7fa91840e9210080 +7c634850409d0040 +e9010090e9410088 +392300012fa30000 +409e00087d4af850 +2c29000139200001 +3929ffffe8c10060 +7ce8305041820010 +419d00207faa3840 +7f65db78e8810060 +7c9e20507fa3eb78 +4bfff9cd7c84f850 +38e000204bfffdd4 +e8e1006098e60000 +f8e1006038e70001 +2b87006c4bffffb4 +409efdb03b200008 +4bfffda87cd83378 +3b2000022b870068 +7cd83378409efd9c +4bfffd903b200001 +4bfffd883b200008 +3b0100413a600020 +993e00004bfffc60 +e92100607d455378 +f921006039290001 +000000004bfffb24 +0000128001000000 +f9e1ff78f9c1ff70 +fa21ff88fa01ff80 +fa61ff98fa41ff90 +faa1ffa8fa81ffa0 +fae1ffb8fac1ffb0 +fb21ffc8fb01ffc0 +fb61ffd8fb41ffd0 +fba1ffe8fb81ffe0 +fbe1fff8fbc1fff0 +4e800020f8010010 +e9e1ff78e9c1ff70 +ea21ff88ea01ff80 +ea61ff98ea41ff90 +eaa1ffa8ea81ffa0 +eae1ffb8eac1ffb0 +eb21ffc8eb01ffc0 +eb61ffd8eb41ffd0 +e8010010eb81ffe0 +7c0803a6eba1ffe8 +ebe1fff8ebc1fff0 +ebc1fff04e800020 +ebe1fff8e8010010 +4e8000207c0803a6 6d6f636c65570a0a 63694d206f742065 2120747461776f72 @@ -1597,6 +1599,8 @@ e8010010ebc1fff0 000000204d415242 4853414c46495053 0000000000000020 +54454e5245485445 +0000000000000020 2020202020202020 203a4d4152422020 000a424b20646c25 diff --git a/litedram/generated/nexys-video/litedram_core.init b/litedram/generated/nexys-video/litedram_core.init index 84033c5..b75722c 100644 --- a/litedram/generated/nexys-video/litedram_core.init +++ b/litedram/generated/nexys-video/litedram_core.init @@ -527,11 +527,11 @@ f88100d83be10020 f8e100f038c100d8 f90100f87fe3fb78 f9410108f9210100 -6000000048001af9 +6000000048001b0d 7fe3fb787c7e1b78 -6000000048001611 +6000000048001625 7fc3f378382100b0 -00000000480020b8 +00000000480020cc 0000028001000000 000000004e800020 0000000000000000 @@ -540,555 +540,288 @@ f9410108f9210100 0000000000000000 3842a5203c4c0001 7d8000267c0802a6 -9181000848001ff5 -48001505f821fed1 +9181000848002009 +48001519f821fed1 3c62ffff60000000 -4bffff3938637b78 +4bffff3938637b88 548400023880ffff 7c8026ea7c0004ac 3fe0c0003c62ffff -63ff000838637b98 +63ff000838637ba8 3c62ffff4bffff15 -38637bb87bff0020 +38637bc87bff0020 7c0004ac4bffff05 73e900017fe0feea 3c62ffff41820010 -4bfffee938637bd0 +4bfffee938637be0 4e00000073e90002 3c62ffff41820010 -4bfffed138637bd8 +4bfffed138637be8 4d80000073e90004 3c62ffff41820010 -4bfffeb938637be0 +4bfffeb938637bf0 4d00000073e90008 3c62ffff41820010 -4bfffea138637be8 -3b7b7f683f62ffff -4bfffe917f63db78 -3c80c000418e0028 -7884002060840010 -7c8026ea7c0004ac -7884b5823c62ffff -4bfffe6938637bf8 -3c80c0004192004c -7884002060840018 -7c8026ea7c0004ac -788460223c62ffff -4bfffe4138637c10 -608400303c80c000 +4bfffea138637bf8 +4182001073e90010 +38637c083c62ffff +3f62ffff4bfffe8d +7f63db783b7b7f88 +418e00284bfffe7d +608400103c80c000 7c0004ac78840020 3c62ffff7c8026ea -38637c287884b282 -3d20c0004bfffe1d -7929002061290020 -7d204eea7c0004ac -792906003c80000f -3c62ffff60844240 -38637c407c892392 -418a02584bfffded -63bd00383fa0c000 -7c0004ac7bbd0020 -3d40c0007fa0eeea -614a600439200002 -7c0004ac794a0020 -3fe0c0007d2057aa -63ff60003920ff9f -7c0004ac7bff0020 -7c0004ac7d20ffaa -579c063e7f80feaa -7fc0feaa7c0004ac -7c0004ac57de063e -4bfffd3d7fe0feaa -3c62ffff57ff063e -7fc5f3787fe6fb78 -38637c607f84e378 -7f89f3784bfffd65 -2f8900007d29fb78 -7f89f038419e0164 -2f8900ff7d29f838 -2b9c0001419e0154 -2b9e0002409e0374 -2b9e0020419e000c -3bffffe8409e0134 -2b9f000157ff063e -3fe0c000419d0124 -63ff600039200035 -7c0004ac7bff0020 -3fc0c0007d20ffaa -63de60043b400002 -7c0004ac7bde0020 -7c0004ac7f40f7aa -7c0004ac7d20ffaa -4bfffc957f80feaa -3c62ffff579c063e -38637c807f84e378 -738900024bfffcc5 -3c62ffff40820090 -4bfffcb138637ca0 -7f40f7aa7c0004ac -7c0004ac39200006 -4bfffc557d20ffaa +38637c187884b582 +4192004c4bfffe55 +608400183c80c000 +7c0004ac78840020 +3c62ffff7c8026ea +38637c3078846022 +3c80c0004bfffe2d +7884002060840030 +7c8026ea7c0004ac +7884b2823c62ffff +4bfffe0938637c48 +612900203d20c000 +7c0004ac79290020 +3c80000f7d204eea +6084424079290600 +7c8923923c62ffff +4bfffdd938637c60 +3fa0c000418a0258 +7bbd002063bd0038 +7fa0eeea7c0004ac +392000023d40c000 +794a0020614a6004 +7d2057aa7c0004ac +3920ff9f3fe0c000 +7bff002063ff6000 +7d20ffaa7c0004ac +7f80feaa7c0004ac +7c0004ac579c063e +57de063e7fc0feaa +7fe0feaa7c0004ac +57ff063e4bfffd29 +7fe6fb783c62ffff +7f84e3787fc5f378 +4bfffd5138637c80 +7d29fb787f89f378 +419e01642f890000 +7d29f8387f89f038 +419e01542f8900ff +409e03742b9c0001 +419e000c2b9e0002 +409e01342b9e0020 +57ff063e3bffffe8 +419d01242b9f0001 +392000353fe0c000 +7bff002063ff6000 +7d20ffaa7c0004ac +3b4000023fc0c000 +7bde002063de6004 7f40f7aa7c0004ac -7c0004ac39200001 -392000007d20ffaa 7d20ffaa7c0004ac -7c0004ac639c0002 -7c0004ac7f80ffaa -4bfffc1d7d20f7aa -3b4000053b200002 -7f20f7aa7c0004ac -7f40ffaa7c0004ac 7f80feaa7c0004ac -4bfffbf5579c063e -4082ffdc73890001 -38637cb83c62ffff -3d40c0004bfffc25 -794a0020614a6008 -7d20562a7c0004ac -652920005529021e -7c0004ac61291f6b -7f63db787d20572a -7bbd00204bfffbf5 -7fa4eb783c62ffff -4bfffbe138637cc8 -7f63db783be00001 -419200284bfffbd5 -3c82ffff3ca2ffff -38a57ce83c62ffff -38637d0038847cf8 -48000fbd4bfffbb5 -418e002460000000 -38637d303c62ffff -386000004bfffb9d -3be0000048000144 -4bffffb03ba00000 -419e00842fbf0000 -38637d483c62ffff -3c9df0004bfffb75 -7884002038a00040 -4800137d38610070 -e921007060000000 -614a464c3d400002 -79290600794a83e4 -7fa95000614a457f -3c62ffff419e0080 -4bfffb3138637d60 -8941007688610077 -8901007489210075 -88c1007288e10073 -8881007088a10071 -3c62fffff8610060 -4bfffb0138637de0 -38637e103c62ffff -3c80ff004bfffaf5 -6084400038a0ffff -7884002054a50422 -480012f53c604000 -3c62ffff60000000 -4bfffac938637e30 -4bffff284bfffb49 -2f89000189210075 -a1210082409e0010 -419e00102f890015 -38637d803c62ffff -ebe100904bffff6c -3bc000003f02ffff -3b187d983b2100b0 -7bff00207fffea14 -7f89f040a12100a8 -80810088419d0034 -38637dc03c62ffff -4bfffae54bfffa65 -2fa3ffffe8610088 -38210130419eff58 -7d83812081810008 -3c9ff00048001b34 -7884002038a00038 -4800124d7f23cb78 -812100b060000000 -409e004c2f890001 -eb6100c0eb4100d0 -7fc4f378eb8100b8 -7f66db787f03c378 -3f9cf0007b450020 -7c9de2144bfff9fd -788400207b450020 -480012057f63db78 -a12100a660000000 -7bff00207fe9fa14 -7bde00203bde0001 -2b9c00204bffff50 -2b9e00ba409efdcc -2b9f0018409efdc4 -3c62ffff409efdbc -4bfff9a938637cb0 -000000004bfffd78 -0000088003000000 -612908043d20c800 -7c0004ac79290020 -3d40c8007c604f2a -614a080839200001 +579c063e4bfffc81 +7f84e3783c62ffff +4bfffcb138637ca0 +4082009073890002 +38637cc03c62ffff +7c0004ac4bfffc9d +392000067f40f7aa +7d20ffaa7c0004ac +7c0004ac4bfffc41 +392000017f40f7aa +7d20ffaa7c0004ac +7c0004ac39200000 +639c00027d20ffaa +7f80ffaa7c0004ac +7d20f7aa7c0004ac +3b2000024bfffc09 +7c0004ac3b400005 +7c0004ac7f20f7aa +7c0004ac7f40ffaa +579c063e7f80feaa +738900014bfffbe1 +3c62ffff4082ffdc +4bfffc1138637cd8 +614a60083d40c000 7c0004ac794a0020 -4e8000207d20572a -0000000000000000 -3863ffff00000000 -3923000178630020 -600000007d2903a6 -4e8000204200fffc -0000000000000000 -3d20c80000000000 -6129001439400001 -792900207d431830 +5529021e7d20562a +61291f6b65292000 +7d20572a7c0004ac +4bfffbe17f63db78 +3c62ffff7bbd0020 +38637ce87fa4eb78 +3be000014bfffbcd +4bfffbc17f63db78 +3ca2ffff41920028 +3c62ffff3c82ffff +38847d1838a57d08 +4bfffba138637d20 +6000000048000fbd +3c62ffff418e0024 +4bfffb8938637d50 +4800014438600000 +3ba000003be00000 +2fbf00004bffffb0 +3c62ffff419e0084 +4bfffb6138637d68 +38a000403c9df000 +3861007078840020 +600000004800137d +3d400002e9210070 +794a83e4614a464c +614a457f79290600 +419e00807fa95000 +38637d803c62ffff +886100774bfffb1d +8921007589410076 +88e1007389010074 +88a1007188c10072 +f861006088810070 +38637e003c62ffff +3c62ffff4bfffaed +4bfffae138637e30 +38a0ffff3c80ff00 +54a5042260844000 +3c60400078840020 +60000000480012f5 +38637e503c62ffff +4bfffb354bfffab5 +892100754bffff28 +409e00102f890001 +2f890015a1210082 +3c62ffff419e0010 +4bffff6c38637da0 +3f02ffffebe10090 +3b2100b03bc00000 +7fffea143b187db8 +a12100a87bff0020 +419d00347f89f040 +3c62ffff80810088 +4bfffa5138637de0 +e86100884bfffad1 +419eff582fa3ffff +8181000838210130 +48001b347d838120 +38a000383c9ff000 +7f23cb7878840020 +600000004800124d +2f890001812100b0 +eb4100d0409e004c +eb8100b8eb6100c0 +7f03c3787fc4f378 +7b4500207f66db78 +4bfff9e93f9cf000 +7b4500207c9de214 +7f63db7878840020 +6000000048001205 +7fe9fa14a12100a6 +3bde00017bff0020 +4bffff507bde0020 +409efdcc2b9c0020 +409efdc42b9e00ba +409efdbc2b9f0018 +38637cd03c62ffff +4bfffd784bfff995 +0300000000000000 +3d20c80000000880 +7929002061290804 7c604f2a7c0004ac -610800183d00c800 -7c0004ac79080020 -394000007d40472a -7d404f2a7c0004ac +392000013d40c800 +794a0020614a0808 +7d20572a7c0004ac +000000004e800020 +0000000000000000 +786300203863ffff +7d2903a639230001 +4200fffc60000000 000000004e800020 0000000000000000 394000013d20c800 7d43183061290014 7c0004ac79290020 3d00c8007c604f2a -790800206108001c +7908002061080018 7d40472a7c0004ac 7c0004ac39400000 4e8000207d404f2a 0000000000000000 -3d40c80000000000 -614a083439200025 -7c0004ac794a0020 -3d40c8007d20572a -614a083839200001 -7c0004ac794a0020 -4e8000207d20572a -0000000000000000 -8944000100000000 -794a45e489240000 -892400027d4a4b78 -7d2a5378792983e4 -7929c1e489240003 -552ac03e7d295378 -512a463e512a421e -7d401f2a7c0004ac -000000004e800020 -0000000000000000 -7c601e2a7c0004ac -7869c20278630020 -9924000298640003 -7863460278698402 -9864000099240001 +3d20c80000000000 +6129001439400001 +792900207d431830 +7c604f2a7c0004ac +6108001c3d00c800 +7c0004ac79080020 +394000007d40472a +7d404f2a7c0004ac 000000004e800020 0000000000000000 -38429d903c4c0001 -4800185d7c0802a6 -7c7e1b78f821ff21 -38637f003c62ffff -600000004bfff7b5 -390100603ca08020 -3940000460a50003 -7d1d43783920002a -38e0000478a50020 -7ce903a638c00000 -792907e07927f842 -7d2928387d2900d0 -78e900207d273a78 -38c600017ce831ae -394affff4200ffe0 -794a002139080004 -3d20c8004082ffc4 -6129080c3be00000 -7c0004ac79290020 -3d20c8007fe04f2a -7929002061290810 -7fe04f2a7c0004ac -4bfffd8d38600009 -4bfffdc13860000f -7fa4eb783c60c800 -7863002060630814 -3c60c8004bfffead -6063082c38810064 -4bfffe9978630020 -388100683c60c800 -7863002060630844 -3c60c8004bfffe85 -6063085c3881006c -4bfffe7178630020 -612908543d20c800 -7c0004ac79290020 -3d20c8007fe04f2a -7929002061290858 -7fe04f2a7c0004ac -392000173d40c800 -794a0020614a084c +392000253d40c800 +794a0020614a0834 7d20572a7c0004ac 392000013d40c800 -794a0020614a0850 +794a0020614a0838 7d20572a7c0004ac -6129083c3d20c800 -7c0004ac79290020 -3d20c8007fe04f2a -7929002061290840 -7fe04f2a7c0004ac -22de00017fc3f378 -213e00034bfffd0d -793500203ee2ffff -7d2907b47ed607b4 -3b0100703be00000 -7f3db2143af77f28 -7f5d4a147ebdaa14 -3860000f4bfffd75 -4bfffca93b800000 -7b890fa43b600001 -7c77482a7f04c378 -7d39e0ae4bfffde1 -7f89500089590010 -7d35e0ae409e0048 -7f895000895a0010 -3b9c0004409e0038 -409effc82bbc0010 -393f00012fbb0000 -409e00287d3c07b4 -419e001c2f890020 -7f9fe3787fc3f378 -4bffff8c4bfffcb9 -4bffffc83b600000 -38bf00017f9fe378 -7cbc07b47fc3f378 -213e00034bfffc99 -793500207eddb214 -7ebdaa147d2907b4 -4bfffcc97fbd4a14 -3b6000003860000f -3b4000014bfffbfd -7f04c3787b690fa4 -4bfffd357c77482a -895600107d39d8ae -409e00447f895000 -895d00107d35d8ae -409e00347f895000 -2bbb00103b7b0004 -2fba0000409effc8 -393c0001419e0028 -7d3c07b42f89001f -7fc3f378419d0018 -4bffff904bfffc11 -4bffffcc3b400000 -7fbfe2142f9f0020 -409e006c7fbd0e70 -38637f103c62ffff -600000004bfff4cd -3be000007fc3f378 -7f9fe8004bfffb8d -3d40c800419c0070 -614a080c39200000 -7c0004ac794a0020 -3d40c8007d20572a -794a0020614a0810 -7d20572a7c0004ac -4bfffaed3860000b -4bfffb213860000f -48001554382100e0 -3c62ffff7cbfe050 -7ca501947ca50e70 -38637f187fa4eb78 -4bfff4517ca507b4 -4bffff8460000000 -3bff00017fc3f378 -7fff07b44bfffb59 -000000004bffff7c -00000b8001000000 -384299e03c4c0001 -3d40c8007c0802a6 -3920000e614a0800 -f8010010794a0020 -7c0004acf821ffa1 -3c62ffff7d20572a -4bfff3f138637fd0 -3821006060000000 -7c0803a6e8010010 -000000004e800020 -0000008001000000 -384299883c4c0001 -3d40c8007c0802a6 -39200001614a0800 -f8010010794a0020 -7c0004acf821ffa1 -3c62ffff7d20572a -4bfff39938637f48 -3821006060000000 -7c0803a6e8010010 000000004e800020 -0000008001000000 -384299303c4c0001 -390000807c0802a6 -3d40aaaa7d0903a6 -614aaaaa3d204000 -f821ff8148001409 -3929000491490000 -4bfff3b54200fff8 -3940008060000000 -7d4903a63d00aaaa -3be000003d204000 -814900006108aaaa -419e000c7f8a4000 -7fff07b43bff0001 -4200ffe839290004 -3d40555539000080 -3d2040007d0903a6 -91490000614a5555 -4200fff839290004 -600000004bfff359 -3d00555539400080 -3d2040007d4903a6 -8149000061085555 -419e000c7f8a4000 -7fff07b43bff0001 -4200ffe839290004 -419e001c2fbf0000 -38a001003c62ffff -38637e487fe4fb78 -600000004bfff295 -3ce080203d000008 -60e700037d0903a6 -392000013d404000 -7928f84278e70020 -7d2900d0792907e0 -7d293838394a0004 -912afffc7d294278 -4bfff2c54200ffe4 -3d00000860000000 -7d0903a63ce08020 -3d40400060e70003 -392000013ba00000 -7928f84278e70020 +0000000000000000 +8924000089440001 +7d4a4b78794a45e4 +792983e489240002 +892400037d2a5378 +7d2953787929c1e4 +512a421e552ac03e +7c0004ac512a463e +4e8000207d401f2a +0000000000000000 +7c0004ac00000000 +786300207c601e2a +986400037869c202 +7869840299240002 +9924000178634602 +4e80002098640000 +0000000000000000 +3c4c000100000000 +7c0802a638429d7c +f821ff214800185d +3c62ffff7c7e1b78 +4bfff7a138637f20 +3ca0802060000000 +60a5000339010060 +3920002a39400004 +78a500207d1d4378 +38c0000038e00004 +7927f8427ce903a6 7d2900d0792907e0 -7d2942787d293838 -7f884840810a0000 -3bbd0001419e000c -394a00047fbd07b4 -2fbd00004200ffd4 -3c62ffff419e001c -7fa4eb783ca00008 -4bfff1e138637e70 -3920200060000000 -7d2903a639400000 -794800203d2a1000 -394a000139290002 -9109000079291764 -4bfff2254200ffe8 -3920200060000000 -7d2903a639400000 -3d2a10003bc00000 -8129000879291764 -7f8950005529043e -3bde0001419e000c -394a00017fde07b4 -2fbe00004200ffdc -3c62ffff419e001c -7fc4f37838a02000 -4bfff15938637e98 -7fffea1460000000 -7ffff21438600000 -409e00a42f9f0000 -38637ec03c62ffff -600000004bfff135 -3d4000047c9602a6 -7d4903a678840020 -3d49080039200000 -f92a0000794a1f24 -4200fff039290001 -7c9f20507ff602a6 -7fff23963fe06400 -600000004bfff169 -7d3602a67bff0020 -792900203d000004 -3d4040007d0903a6 -394a0008e90a0000 -7cb602a64200fff8 -3ca064007d254850 -3c62ffff7ca54b96 -38637ed07fe4fb78 -4bfff0a978a50060 -3860000160000000 -4800119c38210080 -0100000000000000 -3c4c000100000380 -7c0802a638429644 -f821fec1480010f5 -3bc000013fe0c800 -7bff002063ff0014 -386000004bfffc49 -7c0004ac4bfff72d -3f80c8007fc0ff2a -7b9c0020639c0020 -7fc0e72a7c0004ac -7c0004ac3ba00000 -386000017fa0ff2a -392000024bfff6fd -7d20ff2a7c0004ac -7fc0e72a7c0004ac -7fa0ff2a7c0004ac -3b8100703c62ffff -3e02ffff38637f88 -600000004bffeffd -fb8100803d22ffff -39297f983de2ffff -3e42ffff3dc2ffff -f92100983ae10063 -3be000003ac10061 -39ef7fa83a107f28 -3a527f6839ce7fb0 -3b20000139210064 -3ea0c8003e80c800 -39210068f9210088 -6294080c7f39f830 -7b33002062b50810 -f92100903bc00000 -3ba000003b000000 -7ab500207a940020 -7fbeeb7848000054 -419e029c2f9d000f -612900143d20c800 -7c0004ac79290020 -3d00c8007e604f2a -6108002439400001 -7c0004ac79080020 -394000007d40472a -7d404f2a7c0004ac -7f78db783bbd0001 -394100607fbd07b4 -3920002a39000004 -38e000047d5a5378 -7ce903a638c00000 -7927f8423ca08020 -792907e060a50003 -78a500207d2900d0 7d273a787d292838 -7cea31ae78e90020 -4200ffd438c60001 -394a00043908ffff -4082ffb879080021 -7c0004ac3b600000 -7c0004ac7f60a72a -386000097f60af2a -3860000f4bfff521 -3c60c8004bfff555 -606308147f44d378 -4bfff64178630020 -3c60c800e8810088 +7ce831ae78e90020 +4200ffe038c60001 +39080004394affff +4082ffc4794a0021 +3be000003d20c800 +792900206129080c +7fe04f2a7c0004ac +612908103d20c800 +7c0004ac79290020 +386000097fe04f2a +3860000f4bfffd8d +3c60c8004bfffdc1 +606308147fa4eb78 +4bfffead78630020 +388100643c60c800 786300206063082c -e88100904bfff62d -606308443c60c800 -4bfff61978630020 +3c60c8004bfffe99 +6063084438810068 +4bfffe8578630020 3881006c3c60c800 786300206063085c -3d20c8004bfff605 +3d20c8004bfffe71 7929002061290854 -7f604f2a7c0004ac +7fe04f2a7c0004ac 612908583d20c800 7c0004ac79290020 -3d40c8007f604f2a +3d40c8007fe04f2a 614a084c39200017 7c0004ac794a0020 3d40c8007d20572a @@ -1096,491 +829,760 @@ e88100904bfff62d 7c0004ac794a0020 3d20c8007d20572a 792900206129083c -7f604f2a7c0004ac +7fe04f2a7c0004ac 612908403d20c800 7c0004ac79290020 -e86100987f604f2a -7fe4fb787fa5eb78 -3b6000003b400020 -600000004bffedc5 -4bfff4897fe3fb78 -3860000f4bfff51d -4bfff4513a200001 -79480fa439400000 -f94100a0e8810080 -4bfff5857c70402a -88fc0001e94100a0 -7f8838007d1650ae -7d1750ae409e00a0 -7f88380088fc0003 -394a0004409e0090 -409effc02baa0010 -7de37b787e248b78 -600000004bffed55 -7fe3fb783b5affff -7b5a00214bfff461 -7f7b07b47f7b8a14 -7dc373784082ff80 -600000004bffed2d -7c0004ac39200000 -7c0004ac7d20a72a -3860000b7d20af2a -3860000f4bfff379 -7fe3fb784bfff3ad -7e4393784bfff531 -600000004bffecf5 -419cfd707f98d800 -4bfffd6c7f1bc378 -4bffff703a200000 -7fc5f3783c62ffff -38637fb87fe4fb78 -600000004bffecc5 -612900143d20c800 -7c0004ac79290020 -3d00c8007f204f2a -6108002039400001 -7c0004ac79080020 -394000007d40472a -7d404f2a7c0004ac -3d00c8007bde0020 -6108002438de0001 -394000017cc903a6 -38e0000079080020 -7fe3fb7842000034 -4bfff48d3af7ffff -3b9cffff7e439378 -600000004bffec4d -3ad6ffff2f9f0001 -3be00001419e0028 -7c0004ac4bfffc78 -7c0004ac7e604f2a -7c0004ac7d40472a -4bffffb47ce04f2a -3860000138210140 -0000000048000cd4 -0000128001000000 -384291b83c4c0001 -3c62ffff7c0802a6 -48000c9138637f70 -3f60c800f821ff71 -637b10003be00000 -4bffebd17b7b0020 -7c0004ac60000000 -3f40c8007fe0df2a -7b5a0020635a1004 -7fe0d72a7c0004ac -4bfff78d3fa0c800 -7bbd002063bd080c -7fe0ef2a7c0004ac -63de08103fc0c800 -7c0004ac7bde0020 -3f80c8007fe0f72a -639c08003920000c +7fc3f3787fe04f2a +4bfffd0d22de0001 +3ee2ffff213e0003 +7ed607b479350020 +3be000007d2907b4 +3af77f483b010070 +7ebdaa147f3db214 +4bfffd757f5d4a14 +3b8000003860000f +3b6000014bfffca9 +7f04c3787b890fa4 +4bfffde17c77482a +895900107d39e0ae +409e00487f895000 +895a00107d35e0ae +409e00387f895000 +2bbc00103b9c0004 +2fbb0000409effc8 +7d3c07b4393f0001 +2f890020409e0028 +7fc3f378419e001c +4bfffcb97f9fe378 +3b6000004bffff8c +7f9fe3784bffffc8 +7fc3f37838bf0001 +4bfffc997cbc07b4 +7eddb214213e0003 +7d2907b479350020 +7fbd4a147ebdaa14 +3860000f4bfffcc9 +4bfffbfd3b600000 +7b690fa43b400001 +7c77482a7f04c378 +7d39d8ae4bfffd35 +7f89500089560010 +7d35d8ae409e0044 +7f895000895d0010 +3b7b0004409e0034 +409effc82bbb0010 +419e00282fba0000 +2f89001f393c0001 +419d00187d3c07b4 +4bfffc117fc3f378 +3b4000004bffff90 +2f9f00204bffffcc +7fbd0e707fbfe214 +3c62ffff409e006c +4bfff4b938637f30 +7fc3f37860000000 +4bfffb8d3be00000 +419c00707f9fe800 +392000003d40c800 +794a0020614a080c +7d20572a7c0004ac +614a08103d40c800 +7c0004ac794a0020 +3860000b7d20572a +3860000f4bfffaed +382100e04bfffb21 +7cbfe05048001554 +7ca50e703c62ffff +7fa4eb787ca50194 +7ca507b438637f38 +600000004bfff43d +7fc3f3784bffff84 +4bfffb593bff0001 +4bffff7c7fff07b4 +0100000000000000 +3c4c000100000b80 +7c0802a6384299cc +614a08003d40c800 +794a00203920000e +f821ffa1f8010010 +7d20572a7c0004ac +38637ff03c62ffff +600000004bfff3dd +e801001038210060 +4e8000207c0803a6 +0100000000000000 +3c4c000100000080 +7c0802a638429974 +614a08003d40c800 +794a002039200001 +f821ffa1f8010010 +7d20572a7c0004ac +38637f683c62ffff +600000004bfff385 +e801001038210060 +4e8000207c0803a6 +0100000000000000 +3c4c000100000080 +7c0802a63842991c +7d0903a639000080 +3d2040003d40aaaa +48001409614aaaaa +91490000f821ff81 +4200fff839290004 +600000004bfff3a1 +3d00aaaa39400080 +3d2040007d4903a6 +6108aaaa3be00000 +7f8a400081490000 +3bff0001419e000c +392900047fff07b4 +390000804200ffe8 +7d0903a63d405555 +614a55553d204000 +3929000491490000 +4bfff3454200fff8 +3940008060000000 +7d4903a63d005555 +610855553d204000 +7f8a400081490000 +3bff0001419e000c +392900047fff07b4 +2fbf00004200ffe8 +3c62ffff419e001c +7fe4fb7838a00100 +4bfff28138637e68 +3d00000860000000 +7d0903a63ce08020 +3d40400060e70003 +78e7002039200001 +792907e07928f842 +394a00047d2900d0 +7d2942787d293838 +4200ffe4912afffc +600000004bfff2b1 +3ce080203d000008 +60e700037d0903a6 +3ba000003d404000 +78e7002039200001 +792907e07928f842 +7d2938387d2900d0 +810a00007d294278 +419e000c7f884840 +7fbd07b43bbd0001 +4200ffd4394a0004 +419e001c2fbd0000 +3ca000083c62ffff +38637e907fa4eb78 +600000004bfff1cd +3940000039202000 +3d2a10007d2903a6 +3929000279480020 +79291764394a0001 +4200ffe891090000 +600000004bfff211 +3940000039202000 +3bc000007d2903a6 +792917643d2a1000 +5529043e81290008 +419e000c7f895000 +7fde07b43bde0001 +4200ffdc394a0001 +419e001c2fbe0000 +38a020003c62ffff +38637eb87fc4f378 +600000004bfff145 +386000007fffea14 +2f9f00007ffff214 +3c62ffff409e00a4 +4bfff12138637ee0 +7c9602a660000000 +788400203d400004 +392000007d4903a6 +794a1f243d490800 +39290001f92a0000 +7ff602a64200fff0 +3fe064007c9f2050 +4bfff1557fff2396 +7bff002060000000 +3d0000047d3602a6 +7d0903a679290020 +e90a00003d404000 +4200fff8394a0008 +7d2548507cb602a6 +7ca54b963ca06400 +7fe4fb783c62ffff +78a5006038637ef0 +600000004bfff095 +3821008038600001 +000000004800119c +0000038001000000 +384296303c4c0001 +480010f57c0802a6 +3fe0c800f821fec1 +63ff00143bc00001 +4bfffc497bff0020 +4bfff72d38600000 +7fc0ff2a7c0004ac +639c00203f80c800 7c0004ac7b9c0020 -386000007d20e72a -4bfff2096063c350 -7fe0ef2a7c0004ac -7fe0f72a7c0004ac -7c0004ac3920000e -386027107d20e72a -392002004bfff1e5 -7d20ef2a7c0004ac +3ba000007fc0e72a +7fa0ff2a7c0004ac +4bfff6fd38600001 7c0004ac39200002 -3860000f7d20f72a -7c0004ac4bfff189 -392000037fe0ef2a +7c0004ac7d20ff2a +7c0004ac7fc0e72a +3c62ffff7fa0ff2a +38637fa83b810070 +4bffefe93e02ffff +3d22ffff60000000 +3de2fffffb810080 +3dc2ffff39297fb8 +3ae100633e42ffff +3ac10061f9210098 +3a107f483be00000 +39ce7fd039ef7fc8 +392100643a527f88 +3e80c8003b200001 +f92100883ea0c800 +7f39f83039210068 +62b508106294080c +3bc000007b330020 +3b000000f9210090 +7a9400203ba00000 +480000547ab50020 +2f9d000f7fbeeb78 +3d20c800419e029c +7929002061290014 +7e604f2a7c0004ac +394000013d00c800 +7908002061080024 +7d40472a7c0004ac +7c0004ac39400000 +3bbd00017d404f2a +7fbd07b47f78db78 +3900000439410060 +7d5a53783920002a +38c0000038e00004 +3ca080207ce903a6 +60a500037927f842 +7d2900d0792907e0 +7d29283878a50020 +78e900207d273a78 +38c600017cea31ae +3908ffff4200ffd4 +79080021394a0004 +3b6000004082ffb8 +7f60a72a7c0004ac +7f60af2a7c0004ac +4bfff52138600009 +4bfff5553860000f +7f44d3783c60c800 +7863002060630814 +e88100884bfff641 +6063082c3c60c800 +4bfff62d78630020 +3c60c800e8810090 +7863002060630844 +3c60c8004bfff619 +6063085c3881006c +4bfff60578630020 +612908543d20c800 +7c0004ac79290020 +3d20c8007f604f2a +7929002061290858 +7f604f2a7c0004ac +392000173d40c800 +794a0020614a084c +7d20572a7c0004ac +392000013d40c800 +794a0020614a0850 +7d20572a7c0004ac +6129083c3d20c800 +7c0004ac79290020 +3d20c8007f604f2a +7929002061290840 +7f604f2a7c0004ac +7fa5eb78e8610098 +3b4000207fe4fb78 +4bffedb13b600000 +7fe3fb7860000000 +4bfff51d4bfff489 +3a2000013860000f +394000004bfff451 +e881008079480fa4 +7c70402af94100a0 +e94100a04bfff585 +7d1650ae88fc0001 +409e00a07f883800 +88fc00037d1750ae +409e00907f883800 +2baa0010394a0004 +7e248b78409effc0 +4bffed417de37b78 +3b5affff60000000 +4bfff4617fe3fb78 +7f7b8a147b5a0021 +4082ff807f7b07b4 +4bffed197dc37378 +3920000060000000 +7d20a72a7c0004ac +7d20af2a7c0004ac +4bfff3793860000b +4bfff3ad3860000f +4bfff5317fe3fb78 +4bffece17e439378 +7f98d80060000000 +7f1bc378419cfd70 +3a2000004bfffd6c +3c62ffff4bffff70 +7fe4fb787fc5f378 +4bffecb138637fd8 +3d20c80060000000 +7929002061290014 +7f204f2a7c0004ac +394000013d00c800 +7908002061080020 +7d40472a7c0004ac +7c0004ac39400000 +7bde00207d404f2a +38de00013d00c800 +7cc903a661080024 +7908002039400001 +4200003438e00000 +3af7ffff7fe3fb78 +7e4393784bfff48d +4bffec393b9cffff +2f9f000160000000 +419e00283ad6ffff +4bfffc783be00001 +7e604f2a7c0004ac +7d40472a7c0004ac +7ce04f2a7c0004ac +382101404bffffb4 +48000cd438600001 +0100000000000000 +3c4c000100001280 +7c0802a6384291a4 +38637f903c62ffff +f821ff7148000c91 +3be000003f60c800 +7b7b0020637b1000 +600000004bffebbd +7fe0df2a7c0004ac +635a10043f40c800 +7c0004ac7b5a0020 +3fa0c8007fe0d72a +63bd080c4bfff78d +7c0004ac7bbd0020 +3fc0c8007fe0ef2a +7bde002063de0810 +7fe0f72a7c0004ac +3920000c3f80c800 +7b9c0020639c0800 +7d20e72a7c0004ac +6063c35038600000 +7c0004ac4bfff209 +7c0004ac7fe0ef2a +3920000e7fe0f72a +7d20e72a7c0004ac +4bfff1e538602710 +7c0004ac39200200 +392000027d20ef2a 7d20f72a7c0004ac -4bfff16d3860000f -7c0004ac39200006 -3b8000017d20ef2a -7f80f72a7c0004ac -4bfff14d3860000f -7c0004ac39200920 -7c0004ac7d20ef2a -3860000f7fe0f72a -386000c84bfff131 -392004004bfff165 +4bfff1893860000f +7fe0ef2a7c0004ac +7c0004ac39200003 +3860000f7d20f72a +392000064bfff16d +7d20ef2a7c0004ac +7c0004ac3b800001 +3860000f7f80f72a +392009204bfff14d 7d20ef2a7c0004ac 7fe0f72a7c0004ac -4bfff10d38600003 -4bfff141386000c8 -4bfff6cd4bfffa15 -2c2300004bfff721 -7c0004ac4082001c -7c0004ac7f80df2a -382100907f80d72a -7c0004ac48000b64 -386000017f80df2a -000000004bffffec -0000068001000000 -384290083c4c0001 -600000003d20c000 -7929002061292000 -3d20c000f9228048 -7929002061290020 -7d204eea7c0004ac -792906003d40001c -7d295392614a2000 -394a0018e9428048 -7c0004ac3929ffff -4e8000207d2057ea -0000000000000000 -3c4c000100000000 -6000000038428fa4 -39290010e9228048 -7d204eea7c0004ac -4082ffe871290008 -e94280485469063e +4bfff1313860000f +4bfff165386000c8 +7c0004ac39200400 +7c0004ac7d20ef2a +386000037fe0f72a +386000c84bfff10d +4bfffa154bfff141 +4bfff7214bfff6cd +4082001c2c230000 +7f80df2a7c0004ac +7f80d72a7c0004ac +48000b6438210090 +7f80df2a7c0004ac +4bffffec38600001 +0100000000000000 +3c4c000100000680 +3d20c00038428ff4 +6129200060000000 +f922806879290020 +612900203d20c000 +7c0004ac79290020 +3d40001c7d204eea +614a200079290600 +e94280687d295392 +3929ffff394a0018 7d2057ea7c0004ac 000000004e800020 0000000000000000 -38428f603c4c0001 -fbc1fff07c0802a6 -3bc3fffffbe1fff8 -f821ffd1f8010010 -2fbf00008ffe0001 -38210030409e0010 -48000a8c38600000 -409e000c2b9f000a -4bffff813860000d -4bffff797fe3fb78 -000000004bffffd0 -0000028001000000 -408200082c240000 -2b8500243881fff0 -38600000f8640000 -3cc000014d9d0020 -60c6260078c683e4 -89490000e9240000 -419d002c2b8a0020 -70e800017cc75436 -2fa5000040820014 -38a0000a409e0054 -392900014800005c -4bffffccf9240000 -409e00382fa50000 -38a0000a2b8a0030 -89490001409e003c -409e00302f8a0078 -38a0001089490001 -409e00202f8a0078 -f924000039290002 -2f85001048000014 -2b8a0030409e000c -38600000419effd8 -38c9ffd048000030 -2b8a000954ca063e -7cc90734419d0034 -4c9c00207f892800 -7c6519d238e70001 -7c691a14f8e40000 -89270000e8e40000 -409effc82fa90000 -3949ff9f4e800020 +38428f903c4c0001 +e922806860000000 +7c0004ac39290010 +712900087d204eea +5469063e4082ffe8 +7c0004ace9428068 +4e8000207d2057ea +0000000000000000 +3c4c000100000000 +7c0802a638428f4c +fbe1fff8fbc1fff0 +f80100103bc3ffff +8ffe0001f821ffd1 +409e00102fbf0000 +3860000038210030 +2b9f000a48000a8c +3860000d409e000c +7fe3fb784bffff81 +4bffffd04bffff79 +0100000000000000 +2c24000000000280 +3881fff040820008 +f86400002b850024 +4d9d002038600000 +78c683e43cc00001 +e924000060c62600 +2b8a002089490000 +7cc75436419d002c +4082001470e80001 +409e00542fa50000 +4800005c38a0000a +f924000039290001 +2fa500004bffffcc +2b8a0030409e0038 +409e003c38a0000a +2f8a007889490001 +89490001409e0030 +2f8a007838a00010 +39290002409e0020 +48000014f9240000 +409e000c2f850010 +419effd82b8a0030 +4800003038600000 +54ca063e38c9ffd0 +419d00342b8a0009 +7f8928007cc90734 +38e700014c9c0020 +f8e400007c6519d2 +e8e400007c691a14 +2fa9000089270000 +4e800020409effc8 +554a063e3949ff9f +419d00102b8a0019 +7d2907343929ffa9 +3949ffbf4bffffbc 2b8a0019554a063e -3929ffa9419d0010 -4bffffbc7d290734 -554a063e3949ffbf -4d9d00202b8a0019 -4bffffe43929ffc9 -0000000000000000 -3920000000000000 -2f8a00007d4348ae -7d234b78409e000c -392900014e800020 -000000004bffffe8 -0000000000000000 -3900000078aae8c2 -7d2903a6392a0001 -78a9e8c242000030 -1d29fff8792a1f24 -7c8452147d035214 -392000007ca92a14 -7d4903a639450001 -4e80002042000018 -7d23412a7d24402a -4bffffc439080008 -7d4849ae7d4448ae -4bffffdc39290001 -0000000000000000 -3923ff9f00000000 -4d9d00202b890019 -7c6307b43863ffe0 -000000004e800020 +3929ffc94d9d0020 +000000004bffffe4 +0000000000000000 +7d4348ae39200000 +409e000c2f8a0000 +4e8000207d234b78 +4bffffe839290001 +0000000000000000 +78aae8c200000000 +392a000139000000 +420000307d2903a6 +792a1f2478a9e8c2 +7d0352141d29fff8 +7ca92a147c845214 +3945000139200000 +420000187d4903a6 +7d24402a4e800020 +390800087d23412a +7d4448ae4bffffc4 +392900017d4849ae +000000004bffffdc +0000000000000000 +2b8900193923ff9f +3863ffe04d9d0020 +4e8000207c6307b4 0000000000000000 -38428d103c4c0001 -3d2037367c0802a6 -612935347d908026 -65293332792907c6 -6129313091810008 -f821ffa1480007d9 -7cde33787c7d1b78 -f92100203be00000 -612964633d206665 -65296261792907c6 -f921002861293938 -2fa900007ca92b78 -2fbf0000409e0080 -3be00001409e0008 -386000007fbf2040 -2e270000419d0058 -7f65f3923b9fffff -7ca928507d3bf1d2 -886500207ca12a14 -4bffff4141920010 -5463063e60000000 -e93d00002fbb0000 -7c69e1ae7f65db78 -409effc83b9cffff -38600001e93d0000 -fbfd00007fe9fa14 -8181000838210060 -480007747d908120 -409e00142b9e0010 -3bff00017929e102 -4bffff687fff07b4 -4bfffff07d29f392 -0300000000000000 -3c4c000100000580 -7c0802a638428c04 -f821ffb1480006e9 -7c7f1b78eb630000 -7cbd2b787c9c2378 -7fa3eb783bc00000 -600000004bfffe0d -409d00147fa3f040 -7d3b5050e95f0000 -419c00107fa9e040 -3860000138210050 -7d3df0ae480006f0 -992a00003bde0001 -39290001e93f0000 -4bffffb8f93f0000 +3c4c000100000000 +7c0802a638428cfc +7d9080263d203736 +792907c661293534 +9181000865293332 +480007d961293130 +7c7d1b78f821ffa1 +3be000007cde3378 +3d206665f9210020 +792907c661296463 +6129393865296261 +7ca92b78f9210028 +409e00802fa90000 +409e00082fbf0000 +7fbf20403be00001 +419d005838600000 +3b9fffff2e270000 +7d3bf1d27f65f392 +7ca12a147ca92850 +4192001088650020 +600000004bffff41 +2fbb00005463063e +7f65db78e93d0000 +3b9cffff7c69e1ae +e93d0000409effc8 +7fe9fa1438600001 +38210060fbfd0000 +7d90812081810008 +2b9e001048000774 +7929e102409e0014 +7fff07b43bff0001 +7d29f3924bffff68 +000000004bfffff0 +0000058003000000 +38428bf03c4c0001 +480006e97c0802a6 +eb630000f821ffb1 +7c9c23787c7f1b78 +3bc000007cbd2b78 +4bfffe0d7fa3eb78 +7fa3f04060000000 +e95f0000409d0014 +7fa9e0407d3b5050 +38210050419c0010 +480006f038600001 +3bde00017d3df0ae +e93f0000992a0000 +f93f000039290001 +000000004bffffb8 +0000058001000000 +38428b703c4c0001 +480006617c0802a6 +7c7d1b78f821ffa1 +7ca32b787c9b2378 +38a0000a38800000 +eb5d00007cde3378 +7d1943787cfc3b78 +4bfffc497d3f4b78 +3940000060000000 +2fbe00007c6307b4 +2faa0000409e006c +39400001409e0008 +7f8348007d3f5214 +409d00447d2a07b4 +2f8300007c6a1850 +3929000178690020 +3d408000419c0010 +409e00087f835000 +2c29000139200001 +418200143929ffff +7d5a3850e8fd0000 +419c00307faad840 +3860000038210060 +2b9c001048000604 +7bdee102409e0014 +7d4a07b4394a0001 +7fdee3924bffff7c +9b2700004bfffff0 +394a0001e95d0000 +4bffffa8f95d0000 0100000000000000 -3c4c000100000580 -7c0802a638428b84 -f821ffa148000661 -7c9b23787c7d1b78 -388000007ca32b78 -7cde337838a0000a -7cfc3b78eb5d0000 -7d3f4b787d194378 -600000004bfffc49 -7c6307b439400000 -409e006c2fbe0000 -409e00082faa0000 -7d3f521439400001 -7d2a07b47f834800 -7c6a1850409d0044 -786900202f830000 -419c001039290001 -7f8350003d408000 -39200001409e0008 -3929ffff2c290001 -e8fd000041820014 -7faad8407d5a3850 -38210060419c0030 -4800060438600000 -409e00142b9c0010 -394a00017bdee102 -4bffff7c7d4a07b4 -4bfffff07fdee392 -e95d00009b270000 -f95d0000394a0001 -000000004bffffa8 -0000078001000000 -38428a883c4c0001 -480005397c0802a6 -7c741b79f821fed1 -38600000f8610060 -2fa4000041820068 -39210040419e0060 -3ac4ffff3e42ffff -f92100703b410020 -3ae0000060000000 -3a527ff839228040 -f92100783ba10060 -ebc1006089250000 +3c4c000100000780 +7c0802a638428a74 +f821fed148000539 +f86100607c741b79 +4182006838600000 +419e00602fa40000 +6000000039210040 +3b4100203ac4ffff +60000000f9210070 +392280603ae00000 +3ba100603a428018 +89250000f9210078 +2fa90000ebc10060 +7ff4f050419e0010 +419c00207fbfb040 +993e000039200000 +7e941850e8610060 +382101307e8307b4 +2b89002548000508 +409e048839450001 +8925000038e00000 +f8a10068e9010070 +7d2741ae7cea07b4 +8d25000139070001 +2b8900647d0807b4 +2b890069419e0058 +2b890075419e0050 +2b890078419e0048 +2b890058419e0040 +2b890070419e0038 +2b890063419e0030 +2b890073419e0028 +2b890025419e0020 +2b89004f419e0018 +2b89006f419e0010 +409eff8838e70001 +2b890025394a0002 +7d1a42147d4a07b4 +992800207d5a5214 +409e00209aea0020 +f9210060393e0001 +993e000039200025 +38a90002e9210068 +892100414bffff04 +3a2600087fffb050 +3a600030eb660000 +3929ffd23b010042 +4082039c712900fd +3b2000043aa00000 +3a0000013b800000 +7ddb00d039e0002d +2b89006c48000108 +88f8000138d80001 +419d0118419e033c +419e02402b890063 +2b89004f419d0038 +2b890058419e01e8 +3949ffd0419e0188 +2b8a0009554a063e +395c0001419d00c4 +993c00207f81e214 +480000b0795c0020 +419e03042b890068 +419e000c2b890069 +409effc82b890064 +7d41e2142b890075 +7f6adb789aea0020 +57291838419e0034 +7e0948363929ffff +418200207f694839 +e921006099e80000 +f921006039290001 +7d52482a7b291f24 +e88100607dca5038 +38e0000a7d465378 +7f45d378f9410080 +7e689b7839200000 +7c9e20507fa3eb78 +4bfffc9d7c84f850 +e9410080e8810060 +38c0000a7ea7ab78 +7d4553787c9e2050 +7fa3eb787c84f850 +3b1800014bfffaed +e901006089380000 419e00102fa90000 -7fbfb0407ff4f050 -39200000419c0020 -e8610060993e0000 -7e8307b47e941850 -4800050838210130 -394500012b890025 -38e00000409e0488 -e901007089250000 -7cea07b4f8a10068 -390700017d2741ae -7d0807b48d250001 -419e00582b890064 -419e00502b890069 -419e00482b890075 -419e00402b890078 -419e00382b890058 -419e00302b890070 -419e00282b890063 -419e00202b890073 -419e00182b890025 -419e00102b89004f -38e700012b89006f -394a0002409eff88 -7d4a07b42b890025 -7d5a52147d1a4214 -9aea002099280020 -393e0001409e0020 -39200025f9210060 -e9210068993e0000 -4bffff0438a90002 -7fffb05089210041 -eb6600003a260008 -3b0100423a600030 -712900fd3929ffd2 -3aa000004082039c -3b8000003b200004 -39e0002d3a000001 -480001087ddb00d0 -38d800012b89006c -419e033c88f80001 -2b890063419d0118 -419d0038419e0240 -419e01e82b89004f -419e01882b890058 -554a063e3949ffd0 -419d00c42b8a0009 -7f81e214395c0001 -795c0020993c0020 -2b890068480000b0 -2b890069419e0304 -2b890064419e000c -2b890075409effc8 -9aea00207d41e214 -419e00347f6adb78 -3929ffff57291838 -7f6948397e094836 -99e8000041820020 -39290001e9210060 -7b291f24f9210060 -7dca50387d52482a -7d465378e8810060 -f941008038e0000a -392000007f45d378 -7fa3eb787e689b78 -7c84f8507c9e2050 -e88100604bfffc9d -7ea7ab78e9410080 -7c9e205038c0000a -7c84f8507d455378 -4bfffaed7fa3eb78 -893800003b180001 -2fa90000e9010060 -7d5e4050419e0010 -419dfee47fbf5040 -4bfffe907e268b78 -419e016c2b890073 -2b89006f419d006c -2b890070419e00d4 -7d21e214409efef0 -7f66db7838e00010 -9ae900207c8af850 -3920000239000020 -7fa3eb787f45d378 -e88100604bfffc0d -7fa3eb78e8a10078 -7c84f8507c9e2050 -e88100604bfffb75 -38c000107ea7ab78 -7c9e20507f65db78 -2b8900784bffff5c -2b89007a419e0018 -2b890075419e01cc -3aa000014bfffeb8 +7fbf50407d5e4050 +7e268b78419dfee4 +2b8900734bfffe90 +419d006c419e016c +419e00d42b89006f +409efef02b890070 38e000107d21e214 -7e689b787c8af850 -7b291f249ae90020 -7fa3eb787f45d378 -392000007d72482a -7d665b787f6b5838 -4bfffb89f9610080 +7c8af8507f66db78 +390000209ae90020 +7f45d37839200002 +4bfffc0d7fa3eb78 +e8a10078e8810060 +7c9e20507fa3eb78 +4bfffb757c84f850 7ea7ab78e8810060 -7c9e205038c00010 -7d655b78e9610080 -7d21e2144bfffeec -7c8af85038e00008 +7f65db7838c00010 +4bffff5c7c9e2050 +419e00182b890078 +419e01cc2b89007a +4bfffeb82b890075 +7d21e2143aa00001 +7c8af85038e00010 9ae900207e689b78 7f45d3787b291f24 7d72482a7fa3eb78 7f6b583839200000 f96100807d665b78 -e88100604bfffb35 -38c000087ea7ab78 -4bffffac7c9e2050 -390000207d21e214 -38c0000138e0000a -7f45d3789ae90020 -7c8af85039200000 -4bfffaf97fa3eb78 -9b690000e9210060 -39290001e9210060 -4bfffe6cf9210060 -38a0000a7d21e214 -f9410088f9010090 -7f43d37838800000 -4bfff73d9ae90020 -f861008060000000 -4bfff8617f63db78 -e921008060000000 -409d00407fa91840 -e94100887c634850 -2fa30000e9010090 -7d4af85039230001 -39200001409e0008 -e8c100602c290001 -418200103929ffff -7faa38407ce83050 -e8810060419d0020 -7fa3eb787f65db78 -7c84f8507c9e2050 -4bfffdd44bfff9cd -98e6000038e00020 -38e70001e8e10060 -4bffffb4f8e10060 -3b2000082b87006c -7cd83378409efdb0 -2b8700684bfffda8 -409efd9c3b200002 -3b2000017cd83378 -3b2000084bfffd90 -3a6000204bfffd88 -4bfffc603b010041 -7d455378993e0000 -39290001e9210060 -4bfffb24f9210060 -0100000000000000 -f9c1ff7000001280 -fa01ff80f9e1ff78 -fa41ff90fa21ff88 -fa81ffa0fa61ff98 -fac1ffb0faa1ffa8 -fb01ffc0fae1ffb8 -fb41ffd0fb21ffc8 -fb81ffe0fb61ffd8 -fbc1fff0fba1ffe8 -f8010010fbe1fff8 -e9c1ff704e800020 -ea01ff80e9e1ff78 -ea41ff90ea21ff88 -ea81ffa0ea61ff98 -eac1ffb0eaa1ffa8 -eb01ffc0eae1ffb8 -eb41ffd0eb21ffc8 -eb81ffe0eb61ffd8 -eba1ffe8e8010010 -ebc1fff07c0803a6 -4e800020ebe1fff8 -e8010010ebc1fff0 -7c0803a6ebe1fff8 -000000004e800020 +e88100604bfffb89 +38c000107ea7ab78 +e96100807c9e2050 +4bfffeec7d655b78 +38e000087d21e214 +7e689b787c8af850 +7b291f249ae90020 +7fa3eb787f45d378 +392000007d72482a +7d665b787f6b5838 +4bfffb35f9610080 +7ea7ab78e8810060 +7c9e205038c00008 +7d21e2144bffffac +38e0000a39000020 +9ae9002038c00001 +392000007f45d378 +7fa3eb787c8af850 +e92100604bfffaf9 +e92100609b690000 +f921006039290001 +7d21e2144bfffe6c +f901009038a0000a +38800000f9410088 +9ae900207f43d378 +600000004bfff73d +7f63db78f8610080 +600000004bfff861 +7fa91840e9210080 +7c634850409d0040 +e9010090e9410088 +392300012fa30000 +409e00087d4af850 +2c29000139200001 +3929ffffe8c10060 +7ce8305041820010 +419d00207faa3840 +7f65db78e8810060 +7c9e20507fa3eb78 +4bfff9cd7c84f850 +38e000204bfffdd4 +e8e1006098e60000 +f8e1006038e70001 +2b87006c4bffffb4 +409efdb03b200008 +4bfffda87cd83378 +3b2000022b870068 +7cd83378409efd9c +4bfffd903b200001 +4bfffd883b200008 +3b0100413a600020 +993e00004bfffc60 +e92100607d455378 +f921006039290001 +000000004bfffb24 +0000128001000000 +f9e1ff78f9c1ff70 +fa21ff88fa01ff80 +fa61ff98fa41ff90 +faa1ffa8fa81ffa0 +fae1ffb8fac1ffb0 +fb21ffc8fb01ffc0 +fb61ffd8fb41ffd0 +fba1ffe8fb81ffe0 +fbe1fff8fbc1fff0 +4e800020f8010010 +e9e1ff78e9c1ff70 +ea21ff88ea01ff80 +ea61ff98ea41ff90 +eaa1ffa8ea81ffa0 +eae1ffb8eac1ffb0 +eb21ffc8eb01ffc0 +eb61ffd8eb41ffd0 +e8010010eb81ffe0 +7c0803a6eba1ffe8 +ebe1fff8ebc1fff0 +ebc1fff04e800020 +ebe1fff8e8010010 +4e8000207c0803a6 6d6f636c65570a0a 63694d206f742065 2120747461776f72 @@ -1597,6 +1599,8 @@ e8010010ebc1fff0 000000204d415242 4853414c46495053 0000000000000020 +54454e5245485445 +0000000000000020 2020202020202020 203a4d4152422020 000a424b20646c25 diff --git a/litedram/generated/sim/litedram_core.init b/litedram/generated/sim/litedram_core.init index cd9dd30..f5bcd28 100644 --- a/litedram/generated/sim/litedram_core.init +++ b/litedram/generated/sim/litedram_core.init @@ -527,11 +527,11 @@ f88100d83be10020 f8e100f038c100d8 f90100f87fe3fb78 f9410108f9210100 -6000000048001119 +600000004800112d 7fe3fb787c7e1b78 -6000000048000c31 +6000000048000c45 7fc3f378382100b0 -00000000480016d8 +00000000480016ec 0000028001000000 000000004e800020 0000000000000000 @@ -540,731 +540,733 @@ f9410108f9210100 0000000000000000 38429a203c4c0001 7d8000267c0802a6 -9181000848001615 -48000b25f821fed1 +9181000848001629 +48000b39f821fed1 3c62ffff60000000 -4bffff3938637c98 +4bffff3938637ca8 548400023880ffff 7c8026ea7c0004ac 3fe0c0003c62ffff -63ff000838637cb8 +63ff000838637cc8 3c62ffff4bffff15 -38637cd87bff0020 +38637ce87bff0020 7c0004ac4bffff05 73e900017fe0feea 3c62ffff41820010 -4bfffee938637cf0 +4bfffee938637d00 4e00000073e90002 3c62ffff41820010 -4bfffed138637cf8 +4bfffed138637d08 4d80000073e90004 3c62ffff41820010 -4bfffeb938637d00 +4bfffeb938637d10 4d00000073e90008 3c62ffff41820010 -4bfffea138637d08 -3b62804060000000 -4bfffe917f63db78 -3c80c000418e0028 -7884002060840010 -7c8026ea7c0004ac -7884b5823c62ffff -4bfffe6938637d18 -3c80c0004192004c -7884002060840018 -7c8026ea7c0004ac -788460223c62ffff -4bfffe4138637d30 -608400303c80c000 +4bfffea138637d18 +4182001073e90010 +38637d283c62ffff +600000004bfffe8d +7f63db783b628060 +418e00284bfffe7d +608400103c80c000 7c0004ac78840020 3c62ffff7c8026ea -38637d487884b282 -3d20c0004bfffe1d -7929002061290020 -7d204eea7c0004ac -792906003c80000f -3c62ffff60844240 -38637d607c892392 -418a02584bfffded -63bd00383fa0c000 -7c0004ac7bbd0020 -3d40c0007fa0eeea -614a600439200002 -7c0004ac794a0020 -3fe0c0007d2057aa -63ff60003920ff9f -7c0004ac7bff0020 -7c0004ac7d20ffaa -579c063e7f80feaa -7fc0feaa7c0004ac -7c0004ac57de063e -4bfffd3d7fe0feaa -3c62ffff57ff063e -7fc5f3787fe6fb78 -38637d807f84e378 -7f89f3784bfffd65 -2f8900007d29fb78 -7f89f038419e0164 -2f8900ff7d29f838 -2b9c0001419e0154 -2b9e0002409e0374 -2b9e0020419e000c -3bffffe8409e0134 -2b9f000157ff063e -3fe0c000419d0124 -63ff600039200035 -7c0004ac7bff0020 -3fc0c0007d20ffaa -63de60043b400002 -7c0004ac7bde0020 -7c0004ac7f40f7aa -7c0004ac7d20ffaa -4bfffc957f80feaa -3c62ffff579c063e -38637da07f84e378 -738900024bfffcc5 -3c62ffff40820090 -4bfffcb138637dc0 -7f40f7aa7c0004ac -7c0004ac39200006 -4bfffc557d20ffaa +38637d387884b582 +4192004c4bfffe55 +608400183c80c000 +7c0004ac78840020 +3c62ffff7c8026ea +38637d5078846022 +3c80c0004bfffe2d +7884002060840030 +7c8026ea7c0004ac +7884b2823c62ffff +4bfffe0938637d68 +612900203d20c000 +7c0004ac79290020 +3c80000f7d204eea +6084424079290600 +7c8923923c62ffff +4bfffdd938637d80 +3fa0c000418a0258 +7bbd002063bd0038 +7fa0eeea7c0004ac +392000023d40c000 +794a0020614a6004 +7d2057aa7c0004ac +3920ff9f3fe0c000 +7bff002063ff6000 +7d20ffaa7c0004ac +7f80feaa7c0004ac +7c0004ac579c063e +57de063e7fc0feaa +7fe0feaa7c0004ac +57ff063e4bfffd29 +7fe6fb783c62ffff +7f84e3787fc5f378 +4bfffd5138637da0 +7d29fb787f89f378 +419e01642f890000 +7d29f8387f89f038 +419e01542f8900ff +409e03742b9c0001 +419e000c2b9e0002 +409e01342b9e0020 +57ff063e3bffffe8 +419d01242b9f0001 +392000353fe0c000 +7bff002063ff6000 +7d20ffaa7c0004ac +3b4000023fc0c000 +7bde002063de6004 7f40f7aa7c0004ac -7c0004ac39200001 -392000007d20ffaa 7d20ffaa7c0004ac -7c0004ac639c0002 -7c0004ac7f80ffaa -4bfffc1d7d20f7aa -3b4000053b200002 -7f20f7aa7c0004ac -7f40ffaa7c0004ac 7f80feaa7c0004ac -4bfffbf5579c063e -4082ffdc73890001 -38637dd83c62ffff -3d40c0004bfffc25 -794a0020614a6008 -7d20562a7c0004ac -652920005529021e -7c0004ac61291f6b -7f63db787d20572a -7bbd00204bfffbf5 -7fa4eb783c62ffff -4bfffbe138637de8 -7f63db783be00001 -419200284bfffbd5 -3c82ffff3ca2ffff -38a57e083c62ffff -38637e2038847e18 -480006054bfffbb5 -418e002460000000 -38637e503c62ffff -386000004bfffb9d -3be0000048000144 -4bffffb03ba00000 -419e00842fbf0000 -38637e683c62ffff -3c9df0004bfffb75 -7884002038a00040 -4800099d38610070 -e921007060000000 -614a464c3d400002 -79290600794a83e4 -7fa95000614a457f -3c62ffff419e0080 -4bfffb3138637e80 -8941007688610077 -8901007489210075 -88c1007288e10073 -8881007088a10071 -3c62fffff8610060 -4bfffb0138637f00 -38637f303c62ffff -3c80ff004bfffaf5 -6084400038a0ffff -7884002054a50422 -480009153c604000 -3c62ffff60000000 -4bfffac938637f50 -4bffff284bfffb49 -2f89000189210075 -a1210082409e0010 -419e00102f890015 -38637ea03c62ffff -ebe100904bffff6c -3bc000003f02ffff -3b187eb83b2100b0 -7bff00207fffea14 -7f89f040a12100a8 -80810088419d0034 -38637ee03c62ffff -4bfffae54bfffa65 -2fa3ffffe8610088 -38210130419eff58 -7d83812081810008 -3c9ff00048001154 -7884002038a00038 -4800086d7f23cb78 -812100b060000000 -409e004c2f890001 -eb6100c0eb4100d0 -7fc4f378eb8100b8 -7f66db787f03c378 -3f9cf0007b450020 -7c9de2144bfff9fd -788400207b450020 -480008257f63db78 -a12100a660000000 -7bff00207fe9fa14 -7bde00203bde0001 -2b9c00204bffff50 -2b9e00ba409efdcc -2b9f0018409efdc4 -3c62ffff409efdbc -4bfff9a938637dd0 -000000004bfffd78 -0000088003000000 -612908043d20c800 -7c0004ac79290020 -3d40c8007c604f2a -614a080839200001 +579c063e4bfffc81 +7f84e3783c62ffff +4bfffcb138637dc0 +4082009073890002 +38637de03c62ffff +7c0004ac4bfffc9d +392000067f40f7aa +7d20ffaa7c0004ac +7c0004ac4bfffc41 +392000017f40f7aa +7d20ffaa7c0004ac +7c0004ac39200000 +639c00027d20ffaa +7f80ffaa7c0004ac +7d20f7aa7c0004ac +3b2000024bfffc09 +7c0004ac3b400005 +7c0004ac7f20f7aa +7c0004ac7f40ffaa +579c063e7f80feaa +738900014bfffbe1 +3c62ffff4082ffdc +4bfffc1138637df8 +614a60083d40c000 7c0004ac794a0020 -4e8000207d20572a -0000000000000000 -3c4c000100000000 -7c0802a638429414 -614a08003d40c800 -794a00203920000e -f821ffa1f8010010 +5529021e7d20562a +61291f6b65292000 7d20572a7c0004ac -3862806060000000 -600000004bfff925 -e801001038210060 -4e8000207c0803a6 -0100000000000000 -3c4c000100000080 -7c0802a6384293bc -614a08003d40c800 -794a002039200001 -f821ffa1f8010010 +4bfffbe17f63db78 +3c62ffff7bbd0020 +38637e087fa4eb78 +3be000014bfffbcd +4bfffbc17f63db78 +3ca2ffff41920028 +3c62ffff3c82ffff +38847e3838a57e28 +4bfffba138637e40 +6000000048000605 +3c62ffff418e0024 +4bfffb8938637e70 +4800014438600000 +3ba000003be00000 +2fbf00004bffffb0 +3c62ffff419e0084 +4bfffb6138637e88 +38a000403c9df000 +3861007078840020 +600000004800099d +3d400002e9210070 +794a83e4614a464c +614a457f79290600 +419e00807fa95000 +38637ea03c62ffff +886100774bfffb1d +8921007589410076 +88e1007389010074 +88a1007188c10072 +f861006088810070 +38637f203c62ffff +3c62ffff4bfffaed +4bfffae138637f50 +38a0ffff3c80ff00 +54a5042260844000 +3c60400078840020 +6000000048000915 +38637f703c62ffff +4bfffb354bfffab5 +892100754bffff28 +409e00102f890001 +2f890015a1210082 +3c62ffff419e0010 +4bffff6c38637ec0 +3f02ffffebe10090 +3b2100b03bc00000 +7fffea143b187ed8 +a12100a87bff0020 +419d00347f89f040 +3c62ffff80810088 +4bfffa5138637f00 +e86100884bfffad1 +419eff582fa3ffff +8181000838210130 +480011547d838120 +38a000383c9ff000 +7f23cb7878840020 +600000004800086d +2f890001812100b0 +eb4100d0409e004c +eb8100b8eb6100c0 +7f03c3787fc4f378 +7b4500207f66db78 +4bfff9e93f9cf000 +7b4500207c9de214 +7f63db7878840020 +6000000048000825 +7fe9fa14a12100a6 +3bde00017bff0020 +4bffff507bde0020 +409efdcc2b9c0020 +409efdc42b9e00ba +409efdbc2b9f0018 +38637df03c62ffff +4bfffd784bfff995 +0300000000000000 +3d20c80000000880 +7929002061290804 +7c604f2a7c0004ac +392000013d40c800 +794a0020614a0808 7d20572a7c0004ac -3862802060000000 -600000004bfff8cd -e801001038210060 -4e8000207c0803a6 -0100000000000000 -3c4c000100000080 -7c0802a638429364 -7d0903a639000080 -3d2040003d40aaaa -48000f5d614aaaaa -91490000f821ff81 -4200fff839290004 -600000004bfff8e9 -3d00aaaa39400080 -3d2040007d4903a6 -6108aaaa3be00000 -7f8a400081490000 -3bff0001419e000c -392900047fff07b4 -390000804200ffe8 -7d0903a63d405555 -614a55553d204000 +000000004e800020 +0000000000000000 +384294003c4c0001 +3d40c8007c0802a6 +3920000e614a0800 +f8010010794a0020 +7c0004acf821ffa1 +600000007d20572a +4bfff91138628080 +3821006060000000 +7c0803a6e8010010 +000000004e800020 +0000008001000000 +384293a83c4c0001 +3d40c8007c0802a6 +39200001614a0800 +f8010010794a0020 +7c0004acf821ffa1 +600000007d20572a +4bfff8b938628040 +3821006060000000 +7c0803a6e8010010 +000000004e800020 +0000008001000000 +384293503c4c0001 +390000807c0802a6 +3d40aaaa7d0903a6 +614aaaaa3d204000 +f821ff8148000f5d 3929000491490000 -4bfff88d4200fff8 +4bfff8d54200fff8 3940008060000000 -7d4903a63d005555 -610855553d204000 -7f8a400081490000 -3bff0001419e000c -392900047fff07b4 -2fbf00004200ffe8 -3c62ffff419e001c -7fe4fb7838a00100 -4bfff7c938637f68 +7d4903a63d00aaaa +3be000003d204000 +814900006108aaaa +419e000c7f8a4000 +7fff07b43bff0001 +4200ffe839290004 +3d40555539000080 +3d2040007d0903a6 +91490000614a5555 +4200fff839290004 +600000004bfff879 +3d00555539400080 +3d2040007d4903a6 +8149000061085555 +419e000c7f8a4000 +7fff07b43bff0001 +4200ffe839290004 +419e001c2fbf0000 +38a001003c62ffff +38637f887fe4fb78 +600000004bfff7b5 +3ce0802039000100 +60e700037d0903a6 +392000013d404000 +7928f84278e70020 +7d2900d0792907e0 +7d293838394a0004 +912afffc7d294278 +4bfff7e54200ffe4 3900010060000000 7d0903a63ce08020 3d40400060e70003 -78e7002039200001 -792907e07928f842 -394a00047d2900d0 +392000013ba00000 +7928f84278e70020 +7d2900d0792907e0 7d2942787d293838 -4200ffe4912afffc -600000004bfff7f9 -3ce0802039000100 -60e700037d0903a6 -3ba000003d404000 -78e7002039200001 -792907e07928f842 -7d2938387d2900d0 -810a00007d294278 -419e000c7f884840 -7fbd07b43bbd0001 -4200ffd4394a0004 -419e001c2fbd0000 -38a001003c62ffff -38637f907fa4eb78 -600000004bfff715 -3940000039200020 -3d2a10007d2903a6 -3929000279480020 -79291764394a0001 -4200ffe891090000 -600000004bfff759 -3940000039200020 -3bc000007d2903a6 -792917643d2a1000 -5529043e81290008 -419e000c7f895000 -7fde07b43bde0001 -4200ffdc394a0001 -419e001c2fbe0000 -38a000203c62ffff -38637fb87fc4f378 -600000004bfff68d -386000007fffea14 -2f9f00007ffff214 -3c62ffff409e00ac -4bfff66938637fe0 -7c9602a660000000 -7884002039400080 -392000007d4903a6 -794a1f243d490800 -39290001f92a0000 -7ff602a64200fff0 -3fe0000c7c9f2050 -7fff239663ff8000 -600000004bfff699 -7d3602a67bff0020 -7929002039000080 -3d4040007d0903a6 -394a0008e90a0000 -7cb602a64200fff8 -3ca0000c7d254850 -3c62ffff60a58000 -7fe4fb787ca54b96 -78a5032038637ff0 -600000004bfff5d5 -3821008038600001 -0000000048000ce8 -0000038001000000 -384290703c4c0001 -600000007c0802a6 -48000c6938628048 -3f60c800f821ff71 -637b10003be00000 -4bfff5897b7b0020 -7c0004ac60000000 -3f40c8007fe0df2a -7b5a0020635a1004 -7fe0d72a7c0004ac -4bfffc113fa0c800 -7bbd002063bd080c -7fe0ef2a7c0004ac -63de08103fc0c800 -7c0004ac7bde0020 -3d20c8007fe0f72a -612908003940000c -7c0004ac79290020 -7c0004ac7d404f2a -7c0004ac7fe0ef2a -3940000e7fe0f72a +7f884840810a0000 +3bbd0001419e000c +394a00047fbd07b4 +2fbd00004200ffd4 +3c62ffff419e001c +7fa4eb7838a00100 +4bfff70138637fb0 +3920002060000000 +7d2903a639400000 +794800203d2a1000 +394a000139290002 +9109000079291764 +4bfff7454200ffe8 +3920002060000000 +7d2903a639400000 +3d2a10003bc00000 +8129000879291764 +7f8950005529043e +3bde0001419e000c +394a00017fde07b4 +2fbe00004200ffdc +3c62ffff419e001c +7fc4f37838a00020 +4bfff67938637fd8 +7fffea1460000000 +7ffff21438600000 +409e00ac2f9f0000 +3862800060000000 +600000004bfff655 +394000807c9602a6 +7d4903a678840020 +3d49080039200000 +f92a0000794a1f24 +4200fff039290001 +7c9f20507ff602a6 +63ff80003fe0000c +4bfff6857fff2396 +7bff002060000000 +390000807d3602a6 +7d0903a679290020 +e90a00003d404000 +4200fff8394a0008 +7d2548507cb602a6 +60a580003ca0000c +7ca54b9660000000 +386280107fe4fb78 +4bfff5c178a50320 +3860000160000000 +48000ce838210080 +0100000000000000 +3c4c000100000380 +7c0802a63842905c +3862806860000000 +f821ff7148000c69 +3be000003f60c800 +7b7b0020637b1000 +600000004bfff575 +7fe0df2a7c0004ac +635a10043f40c800 +7c0004ac7b5a0020 +3fa0c8007fe0d72a +63bd080c4bfffc11 +7c0004ac7bbd0020 +3fc0c8007fe0ef2a +7bde002063de0810 +7fe0f72a7c0004ac +3940000c3d20c800 +7929002061290800 7d404f2a7c0004ac -7c0004ac39200200 -392000027d20ef2a -7d20f72a7c0004ac -4bfffb553860000f 7fe0ef2a7c0004ac -7c0004ac39200003 -3860000f7d20f72a -392000064bfffb39 +7fe0f72a7c0004ac +7c0004ac3940000e +392002007d404f2a 7d20ef2a7c0004ac -7c0004ac3b800001 -3860000f7f80f72a -392009204bfffb19 +7c0004ac39200002 +3860000f7d20f72a +7c0004ac4bfffb55 +392000037fe0ef2a +7d20f72a7c0004ac +4bfffb393860000f +7c0004ac39200006 +3b8000017d20ef2a +7f80f72a7c0004ac +4bfffb193860000f +7c0004ac39200920 +7c0004ac7d20ef2a +3860000f7fe0f72a +392004004bfffafd 7d20ef2a7c0004ac 7fe0f72a7c0004ac -4bfffafd3860000f -7c0004ac39200400 -7c0004ac7d20ef2a -386000037fe0f72a -4bfffb794bfffae1 -2c2300004bfffbcd -7c0004ac4082001c -7c0004ac7f80df2a -382100907f80d72a -7c0004ac48000b64 -386000017f80df2a -000000004bffffec -0000068001000000 -38428ee83c4c0001 -600000003d20c000 -7929002061292000 -3d20c000f92280d8 -7929002061290020 -7d204eea7c0004ac -792906003d40001c -7d295392614a2000 -394a0018e94280d8 -7c0004ac3929ffff -4e8000207d2057ea -0000000000000000 -3c4c000100000000 -6000000038428e84 -39290010e92280d8 -7d204eea7c0004ac -4082ffe871290008 -e94280d85469063e +4bfffae138600003 +4bfffbcd4bfffb79 +4082001c2c230000 +7f80df2a7c0004ac +7f80d72a7c0004ac +48000b6438210090 +7f80df2a7c0004ac +4bffffec38600001 +0100000000000000 +3c4c000100000680 +3d20c00038428ed4 +6129200060000000 +f92280f879290020 +612900203d20c000 +7c0004ac79290020 +3d40001c7d204eea +614a200079290600 +e94280f87d295392 +3929ffff394a0018 7d2057ea7c0004ac 000000004e800020 0000000000000000 -38428e403c4c0001 -fbc1fff07c0802a6 -3bc3fffffbe1fff8 -f821ffd1f8010010 -2fbf00008ffe0001 -38210030409e0010 -48000a8c38600000 -409e000c2b9f000a -4bffff813860000d -4bffff797fe3fb78 -000000004bffffd0 -0000028001000000 -408200082c240000 -2b8500243881fff0 -38600000f8640000 -3cc000014d9d0020 -60c6260078c683e4 -89490000e9240000 -419d002c2b8a0020 -70e800017cc75436 -2fa5000040820014 -38a0000a409e0054 -392900014800005c -4bffffccf9240000 -409e00382fa50000 -38a0000a2b8a0030 -89490001409e003c -409e00302f8a0078 -38a0001089490001 -409e00202f8a0078 -f924000039290002 -2f85001048000014 -2b8a0030409e000c -38600000419effd8 -38c9ffd048000030 -2b8a000954ca063e -7cc90734419d0034 -4c9c00207f892800 -7c6519d238e70001 -7c691a14f8e40000 -89270000e8e40000 -409effc82fa90000 -3949ff9f4e800020 +38428e703c4c0001 +e92280f860000000 +7c0004ac39290010 +712900087d204eea +5469063e4082ffe8 +7c0004ace94280f8 +4e8000207d2057ea +0000000000000000 +3c4c000100000000 +7c0802a638428e2c +fbe1fff8fbc1fff0 +f80100103bc3ffff +8ffe0001f821ffd1 +409e00102fbf0000 +3860000038210030 +2b9f000a48000a8c +3860000d409e000c +7fe3fb784bffff81 +4bffffd04bffff79 +0100000000000000 +2c24000000000280 +3881fff040820008 +f86400002b850024 +4d9d002038600000 +78c683e43cc00001 +e924000060c62600 +2b8a002089490000 +7cc75436419d002c +4082001470e80001 +409e00542fa50000 +4800005c38a0000a +f924000039290001 +2fa500004bffffcc +2b8a0030409e0038 +409e003c38a0000a +2f8a007889490001 +89490001409e0030 +2f8a007838a00010 +39290002409e0020 +48000014f9240000 +409e000c2f850010 +419effd82b8a0030 +4800003038600000 +54ca063e38c9ffd0 +419d00342b8a0009 +7f8928007cc90734 +38e700014c9c0020 +f8e400007c6519d2 +e8e400007c691a14 +2fa9000089270000 +4e800020409effc8 +554a063e3949ff9f +419d00102b8a0019 +7d2907343929ffa9 +3949ffbf4bffffbc 2b8a0019554a063e -3929ffa9419d0010 -4bffffbc7d290734 -554a063e3949ffbf -4d9d00202b8a0019 -4bffffe43929ffc9 -0000000000000000 -3920000000000000 -2f8a00007d4348ae -7d234b78409e000c -392900014e800020 -000000004bffffe8 -0000000000000000 -3900000078aae8c2 -7d2903a6392a0001 -78a9e8c242000030 -1d29fff8792a1f24 -7c8452147d035214 -392000007ca92a14 -7d4903a639450001 -4e80002042000018 -7d23412a7d24402a -4bffffc439080008 -7d4849ae7d4448ae -4bffffdc39290001 -0000000000000000 -3923ff9f00000000 -4d9d00202b890019 -7c6307b43863ffe0 -000000004e800020 +3929ffc94d9d0020 +000000004bffffe4 +0000000000000000 +7d4348ae39200000 +409e000c2f8a0000 +4e8000207d234b78 +4bffffe839290001 +0000000000000000 +78aae8c200000000 +392a000139000000 +420000307d2903a6 +792a1f2478a9e8c2 +7d0352141d29fff8 +7ca92a147c845214 +3945000139200000 +420000187d4903a6 +7d24402a4e800020 +390800087d23412a +7d4448ae4bffffc4 +392900017d4849ae +000000004bffffdc +0000000000000000 +2b8900193923ff9f +3863ffe04d9d0020 +4e8000207c6307b4 0000000000000000 -38428bf03c4c0001 -3d2037367c0802a6 -612935347d908026 -65293332792907c6 -6129313091810008 -f821ffa1480007d9 -7cde33787c7d1b78 -f92100203be00000 -612964633d206665 -65296261792907c6 -f921002861293938 -2fa900007ca92b78 -2fbf0000409e0080 -3be00001409e0008 -386000007fbf2040 -2e270000419d0058 -7f65f3923b9fffff -7ca928507d3bf1d2 -886500207ca12a14 -4bffff4141920010 -5463063e60000000 -e93d00002fbb0000 -7c69e1ae7f65db78 -409effc83b9cffff -38600001e93d0000 -fbfd00007fe9fa14 -8181000838210060 -480007747d908120 -409e00142b9e0010 -3bff00017929e102 -4bffff687fff07b4 -4bfffff07d29f392 -0300000000000000 -3c4c000100000580 -7c0802a638428ae4 -f821ffb1480006e9 -7c7f1b78eb630000 -7cbd2b787c9c2378 -7fa3eb783bc00000 -600000004bfffe0d -409d00147fa3f040 -7d3b5050e95f0000 -419c00107fa9e040 -3860000138210050 -7d3df0ae480006f0 -992a00003bde0001 -39290001e93f0000 -4bffffb8f93f0000 +3c4c000100000000 +7c0802a638428bdc +7d9080263d203736 +792907c661293534 +9181000865293332 +480007d961293130 +7c7d1b78f821ffa1 +3be000007cde3378 +3d206665f9210020 +792907c661296463 +6129393865296261 +7ca92b78f9210028 +409e00802fa90000 +409e00082fbf0000 +7fbf20403be00001 +419d005838600000 +3b9fffff2e270000 +7d3bf1d27f65f392 +7ca12a147ca92850 +4192001088650020 +600000004bffff41 +2fbb00005463063e +7f65db78e93d0000 +3b9cffff7c69e1ae +e93d0000409effc8 +7fe9fa1438600001 +38210060fbfd0000 +7d90812081810008 +2b9e001048000774 +7929e102409e0014 +7fff07b43bff0001 +7d29f3924bffff68 +000000004bfffff0 +0000058003000000 +38428ad03c4c0001 +480006e97c0802a6 +eb630000f821ffb1 +7c9c23787c7f1b78 +3bc000007cbd2b78 +4bfffe0d7fa3eb78 +7fa3f04060000000 +e95f0000409d0014 +7fa9e0407d3b5050 +38210050419c0010 +480006f038600001 +3bde00017d3df0ae +e93f0000992a0000 +f93f000039290001 +000000004bffffb8 +0000058001000000 +38428a503c4c0001 +480006617c0802a6 +7c7d1b78f821ffa1 +7ca32b787c9b2378 +38a0000a38800000 +eb5d00007cde3378 +7d1943787cfc3b78 +4bfffc497d3f4b78 +3940000060000000 +2fbe00007c6307b4 +2faa0000409e006c +39400001409e0008 +7f8348007d3f5214 +409d00447d2a07b4 +2f8300007c6a1850 +3929000178690020 +3d408000419c0010 +409e00087f835000 +2c29000139200001 +418200143929ffff +7d5a3850e8fd0000 +419c00307faad840 +3860000038210060 +2b9c001048000604 +7bdee102409e0014 +7d4a07b4394a0001 +7fdee3924bffff7c +9b2700004bfffff0 +394a0001e95d0000 +4bffffa8f95d0000 0100000000000000 -3c4c000100000580 -7c0802a638428a64 -f821ffa148000661 -7c9b23787c7d1b78 -388000007ca32b78 -7cde337838a0000a -7cfc3b78eb5d0000 -7d3f4b787d194378 -600000004bfffc49 -7c6307b439400000 -409e006c2fbe0000 -409e00082faa0000 -7d3f521439400001 -7d2a07b47f834800 -7c6a1850409d0044 -786900202f830000 -419c001039290001 -7f8350003d408000 -39200001409e0008 -3929ffff2c290001 -e8fd000041820014 -7faad8407d5a3850 -38210060419c0030 -4800060438600000 -409e00142b9c0010 -394a00017bdee102 -4bffff7c7d4a07b4 -4bfffff07fdee392 -e95d00009b270000 -f95d0000394a0001 -000000004bffffa8 -0000078001000000 -384289683c4c0001 -480005397c0802a6 -7c741b79f821fed1 -38600000f8610060 -2fa4000041820068 -39210040419e0060 -3ac4ffff60000000 -f92100703b410020 -3ae0000060000000 -3a428088392280d0 -f92100783ba10060 -ebc1006089250000 +3c4c000100000780 +7c0802a638428954 +f821fed148000539 +f86100607c741b79 +4182006838600000 +419e00602fa40000 +6000000039210040 +3b4100203ac4ffff +60000000f9210070 +392280f03ae00000 +3ba100603a4280a8 +89250000f9210078 +2fa90000ebc10060 +7ff4f050419e0010 +419c00207fbfb040 +993e000039200000 +7e941850e8610060 +382101307e8307b4 +2b89002548000508 +409e048839450001 +8925000038e00000 +f8a10068e9010070 +7d2741ae7cea07b4 +8d25000139070001 +2b8900647d0807b4 +2b890069419e0058 +2b890075419e0050 +2b890078419e0048 +2b890058419e0040 +2b890070419e0038 +2b890063419e0030 +2b890073419e0028 +2b890025419e0020 +2b89004f419e0018 +2b89006f419e0010 +409eff8838e70001 +2b890025394a0002 +7d1a42147d4a07b4 +992800207d5a5214 +409e00209aea0020 +f9210060393e0001 +993e000039200025 +38a90002e9210068 +892100414bffff04 +3a2600087fffb050 +3a600030eb660000 +3929ffd23b010042 +4082039c712900fd +3b2000043aa00000 +3a0000013b800000 +7ddb00d039e0002d +2b89006c48000108 +88f8000138d80001 +419d0118419e033c +419e02402b890063 +2b89004f419d0038 +2b890058419e01e8 +3949ffd0419e0188 +2b8a0009554a063e +395c0001419d00c4 +993c00207f81e214 +480000b0795c0020 +419e03042b890068 +419e000c2b890069 +409effc82b890064 +7d41e2142b890075 +7f6adb789aea0020 +57291838419e0034 +7e0948363929ffff +418200207f694839 +e921006099e80000 +f921006039290001 +7d52482a7b291f24 +e88100607dca5038 +38e0000a7d465378 +7f45d378f9410080 +7e689b7839200000 +7c9e20507fa3eb78 +4bfffc9d7c84f850 +e9410080e8810060 +38c0000a7ea7ab78 +7d4553787c9e2050 +7fa3eb787c84f850 +3b1800014bfffaed +e901006089380000 419e00102fa90000 -7fbfb0407ff4f050 -39200000419c0020 -e8610060993e0000 -7e8307b47e941850 -4800050838210130 -394500012b890025 -38e00000409e0488 -e901007089250000 -7cea07b4f8a10068 -390700017d2741ae -7d0807b48d250001 -419e00582b890064 -419e00502b890069 -419e00482b890075 -419e00402b890078 -419e00382b890058 -419e00302b890070 -419e00282b890063 -419e00202b890073 -419e00182b890025 -419e00102b89004f -38e700012b89006f -394a0002409eff88 -7d4a07b42b890025 -7d5a52147d1a4214 -9aea002099280020 -393e0001409e0020 -39200025f9210060 -e9210068993e0000 -4bffff0438a90002 -7fffb05089210041 -eb6600003a260008 -3b0100423a600030 -712900fd3929ffd2 -3aa000004082039c -3b8000003b200004 -39e0002d3a000001 -480001087ddb00d0 -38d800012b89006c -419e033c88f80001 -2b890063419d0118 -419d0038419e0240 -419e01e82b89004f -419e01882b890058 -554a063e3949ffd0 -419d00c42b8a0009 -7f81e214395c0001 -795c0020993c0020 -2b890068480000b0 -2b890069419e0304 -2b890064419e000c -2b890075409effc8 -9aea00207d41e214 -419e00347f6adb78 -3929ffff57291838 -7f6948397e094836 -99e8000041820020 -39290001e9210060 -7b291f24f9210060 -7dca50387d52482a -7d465378e8810060 -f941008038e0000a -392000007f45d378 -7fa3eb787e689b78 -7c84f8507c9e2050 -e88100604bfffc9d -7ea7ab78e9410080 -7c9e205038c0000a -7c84f8507d455378 -4bfffaed7fa3eb78 -893800003b180001 -2fa90000e9010060 -7d5e4050419e0010 -419dfee47fbf5040 -4bfffe907e268b78 -419e016c2b890073 -2b89006f419d006c -2b890070419e00d4 -7d21e214409efef0 -7f66db7838e00010 -9ae900207c8af850 -3920000239000020 -7fa3eb787f45d378 -e88100604bfffc0d -7fa3eb78e8a10078 -7c84f8507c9e2050 -e88100604bfffb75 -38c000107ea7ab78 -7c9e20507f65db78 -2b8900784bffff5c -2b89007a419e0018 -2b890075419e01cc -3aa000014bfffeb8 +7fbf50407d5e4050 +7e268b78419dfee4 +2b8900734bfffe90 +419d006c419e016c +419e00d42b89006f +409efef02b890070 38e000107d21e214 -7e689b787c8af850 -7b291f249ae90020 -7fa3eb787f45d378 -392000007d72482a -7d665b787f6b5838 -4bfffb89f9610080 +7c8af8507f66db78 +390000209ae90020 +7f45d37839200002 +4bfffc0d7fa3eb78 +e8a10078e8810060 +7c9e20507fa3eb78 +4bfffb757c84f850 7ea7ab78e8810060 -7c9e205038c00010 -7d655b78e9610080 -7d21e2144bfffeec -7c8af85038e00008 +7f65db7838c00010 +4bffff5c7c9e2050 +419e00182b890078 +419e01cc2b89007a +4bfffeb82b890075 +7d21e2143aa00001 +7c8af85038e00010 9ae900207e689b78 7f45d3787b291f24 7d72482a7fa3eb78 7f6b583839200000 f96100807d665b78 -e88100604bfffb35 -38c000087ea7ab78 -4bffffac7c9e2050 -390000207d21e214 -38c0000138e0000a -7f45d3789ae90020 -7c8af85039200000 -4bfffaf97fa3eb78 -9b690000e9210060 -39290001e9210060 -4bfffe6cf9210060 -38a0000a7d21e214 -f9410088f9010090 -7f43d37838800000 -4bfff73d9ae90020 -f861008060000000 -4bfff8617f63db78 -e921008060000000 -409d00407fa91840 -e94100887c634850 -2fa30000e9010090 -7d4af85039230001 -39200001409e0008 -e8c100602c290001 -418200103929ffff -7faa38407ce83050 -e8810060419d0020 -7fa3eb787f65db78 -7c84f8507c9e2050 -4bfffdd44bfff9cd -98e6000038e00020 -38e70001e8e10060 -4bffffb4f8e10060 -3b2000082b87006c -7cd83378409efdb0 -2b8700684bfffda8 -409efd9c3b200002 -3b2000017cd83378 -3b2000084bfffd90 -3a6000204bfffd88 -4bfffc603b010041 -7d455378993e0000 -39290001e9210060 -4bfffb24f9210060 -0100000000000000 -f9c1ff7000001280 -fa01ff80f9e1ff78 -fa41ff90fa21ff88 -fa81ffa0fa61ff98 -fac1ffb0faa1ffa8 -fb01ffc0fae1ffb8 -fb41ffd0fb21ffc8 -fb81ffe0fb61ffd8 -fbc1fff0fba1ffe8 -f8010010fbe1fff8 -e9c1ff704e800020 -ea01ff80e9e1ff78 -ea41ff90ea21ff88 -ea81ffa0ea61ff98 -eac1ffb0eaa1ffa8 -eb01ffc0eae1ffb8 -eb41ffd0eb21ffc8 -eb81ffe0eb61ffd8 -eba1ffe8e8010010 -ebc1fff07c0803a6 -4e800020ebe1fff8 -e8010010ebc1fff0 -7c0803a6ebe1fff8 -000000004e800020 +e88100604bfffb89 +38c000107ea7ab78 +e96100807c9e2050 +4bfffeec7d655b78 +38e000087d21e214 +7e689b787c8af850 +7b291f249ae90020 +7fa3eb787f45d378 +392000007d72482a +7d665b787f6b5838 +4bfffb35f9610080 +7ea7ab78e8810060 +7c9e205038c00008 +7d21e2144bffffac +38e0000a39000020 +9ae9002038c00001 +392000007f45d378 +7fa3eb787c8af850 +e92100604bfffaf9 +e92100609b690000 +f921006039290001 +7d21e2144bfffe6c +f901009038a0000a +38800000f9410088 +9ae900207f43d378 +600000004bfff73d +7f63db78f8610080 +600000004bfff861 +7fa91840e9210080 +7c634850409d0040 +e9010090e9410088 +392300012fa30000 +409e00087d4af850 +2c29000139200001 +3929ffffe8c10060 +7ce8305041820010 +419d00207faa3840 +7f65db78e8810060 +7c9e20507fa3eb78 +4bfff9cd7c84f850 +38e000204bfffdd4 +e8e1006098e60000 +f8e1006038e70001 +2b87006c4bffffb4 +409efdb03b200008 +4bfffda87cd83378 +3b2000022b870068 +7cd83378409efd9c +4bfffd903b200001 +4bfffd883b200008 +3b0100413a600020 +993e00004bfffc60 +e92100607d455378 +f921006039290001 +000000004bfffb24 +0000128001000000 +f9e1ff78f9c1ff70 +fa21ff88fa01ff80 +fa61ff98fa41ff90 +faa1ffa8fa81ffa0 +fae1ffb8fac1ffb0 +fb21ffc8fb01ffc0 +fb61ffd8fb41ffd0 +fba1ffe8fb81ffe0 +fbe1fff8fbc1fff0 +4e800020f8010010 +e9e1ff78e9c1ff70 +ea21ff88ea01ff80 +ea61ff98ea41ff90 +eaa1ffa8ea81ffa0 +eae1ffb8eac1ffb0 +eb21ffc8eb01ffc0 +eb61ffd8eb41ffd0 +e8010010eb81ffe0 +7c0803a6eba1ffe8 +ebe1fff8ebc1fff0 +ebc1fff04e800020 +ebe1fff8e8010010 +4e8000207c0803a6 6d6f636c65570a0a 63694d206f742065 2120747461776f72 @@ -1281,6 +1283,8 @@ e8010010ebc1fff0 000000204d415242 4853414c46495053 0000000000000020 +54454e5245485445 +0000000000000020 2020202020202020 203a4d4152422020 000a424b20646c25 diff --git a/liteeth/fusesoc-add-files.py b/liteeth/fusesoc-add-files.py new file mode 100644 index 0000000..2775d16 --- /dev/null +++ b/liteeth/fusesoc-add-files.py @@ -0,0 +1,27 @@ +#!/usr/bin/python3 +from fusesoc.capi2.generator import Generator +import os +import sys +import pathlib + +class LiteEthGenerator(Generator): + def run(self): + board = self.config.get('board') + + # Collect a bunch of directory path + script_dir = os.path.dirname(sys.argv[0]) + gen_dir = os.path.join(script_dir, "generated", board) + + print("Adding LiteEth for board... ", board) + + # Add files to fusesoc + files = [] + f = os.path.join(gen_dir, "liteeth_core.v") + files.append({f : {'file_type' : 'verilogSource'}}) + + self.add_files(files) + +g = LiteEthGenerator() +g.run() +g.write() + diff --git a/liteeth/gen-src/arty.yml b/liteeth/gen-src/arty.yml new file mode 100644 index 0000000..7200a70 --- /dev/null +++ b/liteeth/gen-src/arty.yml @@ -0,0 +1,15 @@ +# This file is Copyright (c) 2020 Florent Kermarrec +# License: BSD + +# PHY ---------------------------------------------------------------------- +phy: LiteEthPHYMII +vendor: xilinx +# Core --------------------------------------------------------------------- +clk_freq: 100e6 +core: wishbone +endianness: little + +soc: + mem_map: + ethmac: 0x00010000 + csr_data_width: 32 diff --git a/liteeth/gen-src/generate.sh b/liteeth/gen-src/generate.sh new file mode 100755 index 0000000..805e0b8 --- /dev/null +++ b/liteeth/gen-src/generate.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +TARGETS=arty + +ME=$(realpath $0) +echo ME=$ME +MY_PATH=$(dirname $ME) +echo MYPATH=$MY_PATH +PARENT_PATH=$(realpath $MY_PATH/..) +echo PARENT=$PARENT_PATH +BUILD_PATH=$PARENT_PATH/build +mkdir -p $BUILD_PATH +GEN_PATH=$PARENT_PATH/generated +mkdir -p $GEN_PATH + +for i in $TARGETS +do + TARGET_BUILD_PATH=$BUILD_PATH/$i + TARGET_GEN_PATH=$GEN_PATH/$i + rm -rf $TARGET_BUILD_PATH + rm -rf $TARGET_GEN_PATH + mkdir -p $TARGET_BUILD_PATH + mkdir -p $TARGET_GEN_PATH + + echo "Generating $i in $TARGET_BUILD_PATH" + liteeth_gen --output-dir=$TARGET_BUILD_PATH $MY_PATH/$i.yml + + cp $TARGET_BUILD_PATH/gateware/liteeth_core.v $TARGET_GEN_PATH/ +done + diff --git a/liteeth/generated/arty/liteeth_core.v b/liteeth/generated/arty/liteeth_core.v new file mode 100644 index 0000000..5157a8f --- /dev/null +++ b/liteeth/generated/arty/liteeth_core.v @@ -0,0 +1,3057 @@ +//-------------------------------------------------------------------------------- +// Auto-generated by Migen (b1b2b29) & LiteX (20ff2462) on 2020-06-15 17:21:34 +//-------------------------------------------------------------------------------- +module liteeth_core( + input wire sys_clock, + input wire sys_reset, + input wire mii_eth_clocks_tx, + input wire mii_eth_clocks_rx, + output wire mii_eth_rst_n, + inout wire mii_eth_mdio, + output wire mii_eth_mdc, + input wire mii_eth_rx_dv, + input wire mii_eth_rx_er, + input wire [3:0] mii_eth_rx_data, + output reg mii_eth_tx_en, + output reg [3:0] mii_eth_tx_data, + input wire mii_eth_col, + input wire mii_eth_crs, + input wire [29:0] wishbone_adr, + output wire [31:0] wishbone_dat_r, + input wire [31:0] wishbone_dat_w, + input wire [3:0] wishbone_sel, + input wire wishbone_cyc, + input wire wishbone_stb, + output wire wishbone_ack, + input wire wishbone_we, + input wire [2:0] wishbone_cti, + input wire [1:0] wishbone_bte, + output wire wishbone_err, + output wire interrupt +); + +reg main_maccore_maccore_reset_storage = 1'd0; +reg main_maccore_maccore_reset_re = 1'd0; +reg [31:0] main_maccore_maccore_scratch_storage = 32'd305419896; +reg main_maccore_maccore_scratch_re = 1'd0; +wire [31:0] main_maccore_maccore_bus_errors_status; +wire main_maccore_maccore_bus_errors_we; +wire main_maccore_maccore_reset; +wire main_maccore_maccore_bus_error; +reg [31:0] main_maccore_maccore_bus_errors = 32'd0; +reg [13:0] main_maccore_maccore_adr = 14'd0; +reg main_maccore_maccore_we = 1'd0; +wire [31:0] main_maccore_maccore_dat_w; +wire [31:0] main_maccore_maccore_dat_r; +wire [29:0] main_maccore_maccore_wishbone_adr; +wire [31:0] main_maccore_maccore_wishbone_dat_w; +wire [31:0] main_maccore_maccore_wishbone_dat_r; +wire [3:0] main_maccore_maccore_wishbone_sel; +wire main_maccore_maccore_wishbone_cyc; +wire main_maccore_maccore_wishbone_stb; +reg main_maccore_maccore_wishbone_ack = 1'd0; +wire main_maccore_maccore_wishbone_we; +wire [2:0] main_maccore_maccore_wishbone_cti; +wire [1:0] main_maccore_maccore_wishbone_bte; +reg main_maccore_maccore_wishbone_err = 1'd0; +wire sys_clk; +wire sys_rst; +wire por_clk; +reg main_maccore_int_rst = 1'd1; +reg main_maccore_ethphy_reset_storage = 1'd0; +reg main_maccore_ethphy_reset_re = 1'd0; +wire eth_rx_clk; +wire eth_rx_rst; +wire eth_tx_clk; +wire eth_tx_rst; +wire main_maccore_ethphy_reset0; +wire main_maccore_ethphy_reset1; +reg [8:0] main_maccore_ethphy_counter = 9'd0; +wire main_maccore_ethphy_counter_done; +wire main_maccore_ethphy_counter_ce; +wire main_maccore_ethphy_liteethphymiitx_sink_sink_valid; +wire main_maccore_ethphy_liteethphymiitx_sink_sink_ready; +wire main_maccore_ethphy_liteethphymiitx_sink_sink_first; +wire main_maccore_ethphy_liteethphymiitx_sink_sink_last; +wire [7:0] main_maccore_ethphy_liteethphymiitx_sink_sink_payload_data; +wire main_maccore_ethphy_liteethphymiitx_sink_sink_payload_last_be; +wire main_maccore_ethphy_liteethphymiitx_sink_sink_payload_error; +wire main_maccore_ethphy_liteethphymiitx_converter_sink_valid; +wire main_maccore_ethphy_liteethphymiitx_converter_sink_ready; +reg main_maccore_ethphy_liteethphymiitx_converter_sink_first = 1'd0; +reg main_maccore_ethphy_liteethphymiitx_converter_sink_last = 1'd0; +wire [7:0] main_maccore_ethphy_liteethphymiitx_converter_sink_payload_data; +wire main_maccore_ethphy_liteethphymiitx_converter_source_valid; +wire main_maccore_ethphy_liteethphymiitx_converter_source_ready; +wire main_maccore_ethphy_liteethphymiitx_converter_source_first; +wire main_maccore_ethphy_liteethphymiitx_converter_source_last; +wire [3:0] main_maccore_ethphy_liteethphymiitx_converter_source_payload_data; +wire main_maccore_ethphy_liteethphymiitx_converter_converter_sink_valid; +wire main_maccore_ethphy_liteethphymiitx_converter_converter_sink_ready; +wire main_maccore_ethphy_liteethphymiitx_converter_converter_sink_first; +wire main_maccore_ethphy_liteethphymiitx_converter_converter_sink_last; +reg [7:0] main_maccore_ethphy_liteethphymiitx_converter_converter_sink_payload_data = 8'd0; +wire main_maccore_ethphy_liteethphymiitx_converter_converter_source_valid; +wire main_maccore_ethphy_liteethphymiitx_converter_converter_source_ready; +wire main_maccore_ethphy_liteethphymiitx_converter_converter_source_first; +wire main_maccore_ethphy_liteethphymiitx_converter_converter_source_last; +reg [3:0] main_maccore_ethphy_liteethphymiitx_converter_converter_source_payload_data = 4'd0; +wire main_maccore_ethphy_liteethphymiitx_converter_converter_source_payload_valid_token_count; +reg main_maccore_ethphy_liteethphymiitx_converter_converter_mux = 1'd0; +wire main_maccore_ethphy_liteethphymiitx_converter_converter_first; +wire main_maccore_ethphy_liteethphymiitx_converter_converter_last; +wire main_maccore_ethphy_liteethphymiitx_converter_source_source_valid; +wire main_maccore_ethphy_liteethphymiitx_converter_source_source_ready; +wire main_maccore_ethphy_liteethphymiitx_converter_source_source_first; +wire main_maccore_ethphy_liteethphymiitx_converter_source_source_last; +wire [3:0] main_maccore_ethphy_liteethphymiitx_converter_source_source_payload_data; +wire main_maccore_ethphy_liteethphymiirx_source_source_valid; +wire main_maccore_ethphy_liteethphymiirx_source_source_ready; +wire main_maccore_ethphy_liteethphymiirx_source_source_first; +wire main_maccore_ethphy_liteethphymiirx_source_source_last; +wire [7:0] main_maccore_ethphy_liteethphymiirx_source_source_payload_data; +reg main_maccore_ethphy_liteethphymiirx_source_source_payload_last_be = 1'd0; +reg main_maccore_ethphy_liteethphymiirx_source_source_payload_error = 1'd0; +reg main_maccore_ethphy_liteethphymiirx_converter_sink_valid = 1'd0; +wire main_maccore_ethphy_liteethphymiirx_converter_sink_ready; +reg main_maccore_ethphy_liteethphymiirx_converter_sink_first = 1'd0; +wire main_maccore_ethphy_liteethphymiirx_converter_sink_last; +reg [3:0] main_maccore_ethphy_liteethphymiirx_converter_sink_payload_data = 4'd0; +wire main_maccore_ethphy_liteethphymiirx_converter_source_valid; +wire main_maccore_ethphy_liteethphymiirx_converter_source_ready; +wire main_maccore_ethphy_liteethphymiirx_converter_source_first; +wire main_maccore_ethphy_liteethphymiirx_converter_source_last; +reg [7:0] main_maccore_ethphy_liteethphymiirx_converter_source_payload_data = 8'd0; +wire main_maccore_ethphy_liteethphymiirx_converter_converter_sink_valid; +wire main_maccore_ethphy_liteethphymiirx_converter_converter_sink_ready; +wire main_maccore_ethphy_liteethphymiirx_converter_converter_sink_first; +wire main_maccore_ethphy_liteethphymiirx_converter_converter_sink_last; +wire [3:0] main_maccore_ethphy_liteethphymiirx_converter_converter_sink_payload_data; +wire main_maccore_ethphy_liteethphymiirx_converter_converter_source_valid; +wire main_maccore_ethphy_liteethphymiirx_converter_converter_source_ready; +reg main_maccore_ethphy_liteethphymiirx_converter_converter_source_first = 1'd0; +reg main_maccore_ethphy_liteethphymiirx_converter_converter_source_last = 1'd0; +reg [7:0] main_maccore_ethphy_liteethphymiirx_converter_converter_source_payload_data = 8'd0; +reg [1:0] main_maccore_ethphy_liteethphymiirx_converter_converter_source_payload_valid_token_count = 2'd0; +reg main_maccore_ethphy_liteethphymiirx_converter_converter_demux = 1'd0; +wire main_maccore_ethphy_liteethphymiirx_converter_converter_load_part; +reg main_maccore_ethphy_liteethphymiirx_converter_converter_strobe_all = 1'd0; +wire main_maccore_ethphy_liteethphymiirx_converter_source_source_valid; +wire main_maccore_ethphy_liteethphymiirx_converter_source_source_ready; +wire main_maccore_ethphy_liteethphymiirx_converter_source_source_first; +wire main_maccore_ethphy_liteethphymiirx_converter_source_source_last; +wire [7:0] main_maccore_ethphy_liteethphymiirx_converter_source_source_payload_data; +reg main_maccore_ethphy_liteethphymiirx_converter_reset = 1'd0; +wire main_maccore_ethphy_mdc; +wire main_maccore_ethphy_oe; +wire main_maccore_ethphy_w; +reg [2:0] main_maccore_ethphy_storage = 3'd0; +reg main_maccore_ethphy_re = 1'd0; +reg main_maccore_ethphy_r = 1'd0; +reg main_maccore_ethphy_status = 1'd0; +wire main_maccore_ethphy_we; +wire main_maccore_ethphy_data_w; +wire main_maccore_ethphy_data_oe; +wire main_maccore_ethphy_data_r; +wire main_tx_gap_inserter_sink_valid; +reg main_tx_gap_inserter_sink_ready = 1'd0; +wire main_tx_gap_inserter_sink_first; +wire main_tx_gap_inserter_sink_last; +wire [7:0] main_tx_gap_inserter_sink_payload_data; +wire main_tx_gap_inserter_sink_payload_last_be; +wire main_tx_gap_inserter_sink_payload_error; +reg main_tx_gap_inserter_source_valid = 1'd0; +wire main_tx_gap_inserter_source_ready; +reg main_tx_gap_inserter_source_first = 1'd0; +reg main_tx_gap_inserter_source_last = 1'd0; +reg [7:0] main_tx_gap_inserter_source_payload_data = 8'd0; +reg main_tx_gap_inserter_source_payload_last_be = 1'd0; +reg main_tx_gap_inserter_source_payload_error = 1'd0; +reg [3:0] main_tx_gap_inserter_counter = 4'd0; +reg main_tx_gap_inserter_counter_reset = 1'd0; +reg main_tx_gap_inserter_counter_ce = 1'd0; +reg main_preamble_crc_status = 1'd1; +wire main_preamble_crc_we; +reg [31:0] main_preamble_errors_status = 32'd0; +wire main_preamble_errors_we; +reg [31:0] main_crc_errors_status = 32'd0; +wire main_crc_errors_we; +wire main_preamble_inserter_sink_valid; +reg main_preamble_inserter_sink_ready = 1'd0; +wire main_preamble_inserter_sink_first; +wire main_preamble_inserter_sink_last; +wire [7:0] main_preamble_inserter_sink_payload_data; +wire main_preamble_inserter_sink_payload_last_be; +wire main_preamble_inserter_sink_payload_error; +reg main_preamble_inserter_source_valid = 1'd0; +wire main_preamble_inserter_source_ready; +reg main_preamble_inserter_source_first = 1'd0; +reg main_preamble_inserter_source_last = 1'd0; +reg [7:0] main_preamble_inserter_source_payload_data = 8'd0; +wire main_preamble_inserter_source_payload_last_be; +reg main_preamble_inserter_source_payload_error = 1'd0; +reg [63:0] main_preamble_inserter_preamble = 64'd15372286728091293013; +reg [2:0] main_preamble_inserter_cnt = 3'd0; +reg main_preamble_inserter_clr_cnt = 1'd0; +reg main_preamble_inserter_inc_cnt = 1'd0; +wire main_preamble_checker_sink_valid; +reg main_preamble_checker_sink_ready = 1'd0; +wire main_preamble_checker_sink_first; +wire main_preamble_checker_sink_last; +wire [7:0] main_preamble_checker_sink_payload_data; +wire main_preamble_checker_sink_payload_last_be; +wire main_preamble_checker_sink_payload_error; +reg main_preamble_checker_source_valid = 1'd0; +wire main_preamble_checker_source_ready; +reg main_preamble_checker_source_first = 1'd0; +reg main_preamble_checker_source_last = 1'd0; +wire [7:0] main_preamble_checker_source_payload_data; +wire main_preamble_checker_source_payload_last_be; +reg main_preamble_checker_source_payload_error = 1'd0; +reg main_preamble_checker_error = 1'd0; +wire main_crc32_inserter_sink_valid; +reg main_crc32_inserter_sink_ready = 1'd0; +wire main_crc32_inserter_sink_first; +wire main_crc32_inserter_sink_last; +wire [7:0] main_crc32_inserter_sink_payload_data; +wire main_crc32_inserter_sink_payload_last_be; +wire main_crc32_inserter_sink_payload_error; +reg main_crc32_inserter_source_valid = 1'd0; +wire main_crc32_inserter_source_ready; +reg main_crc32_inserter_source_first = 1'd0; +reg main_crc32_inserter_source_last = 1'd0; +reg [7:0] main_crc32_inserter_source_payload_data = 8'd0; +reg main_crc32_inserter_source_payload_last_be = 1'd0; +reg main_crc32_inserter_source_payload_error = 1'd0; +reg [7:0] main_crc32_inserter_data0 = 8'd0; +wire [31:0] main_crc32_inserter_value; +wire main_crc32_inserter_error; +wire [7:0] main_crc32_inserter_data1; +wire [31:0] main_crc32_inserter_last; +reg [31:0] main_crc32_inserter_next = 32'd0; +reg [31:0] main_crc32_inserter_reg = 32'd4294967295; +reg main_crc32_inserter_ce = 1'd0; +reg main_crc32_inserter_reset = 1'd0; +reg [1:0] main_crc32_inserter_cnt = 2'd3; +wire main_crc32_inserter_cnt_done; +reg main_crc32_inserter_is_ongoing0 = 1'd0; +reg main_crc32_inserter_is_ongoing1 = 1'd0; +wire main_crc32_checker_sink_sink_valid; +reg main_crc32_checker_sink_sink_ready = 1'd0; +wire main_crc32_checker_sink_sink_first; +wire main_crc32_checker_sink_sink_last; +wire [7:0] main_crc32_checker_sink_sink_payload_data; +wire main_crc32_checker_sink_sink_payload_last_be; +wire main_crc32_checker_sink_sink_payload_error; +wire main_crc32_checker_source_source_valid; +wire main_crc32_checker_source_source_ready; +reg main_crc32_checker_source_source_first = 1'd0; +wire main_crc32_checker_source_source_last; +wire [7:0] main_crc32_checker_source_source_payload_data; +wire main_crc32_checker_source_source_payload_last_be; +reg main_crc32_checker_source_source_payload_error = 1'd0; +wire main_crc32_checker_error; +wire [7:0] main_crc32_checker_crc_data0; +wire [31:0] main_crc32_checker_crc_value; +wire main_crc32_checker_crc_error; +wire [7:0] main_crc32_checker_crc_data1; +wire [31:0] main_crc32_checker_crc_last; +reg [31:0] main_crc32_checker_crc_next = 32'd0; +reg [31:0] main_crc32_checker_crc_reg = 32'd4294967295; +reg main_crc32_checker_crc_ce = 1'd0; +reg main_crc32_checker_crc_reset = 1'd0; +reg main_crc32_checker_syncfifo_sink_valid = 1'd0; +wire main_crc32_checker_syncfifo_sink_ready; +wire main_crc32_checker_syncfifo_sink_first; +wire main_crc32_checker_syncfifo_sink_last; +wire [7:0] main_crc32_checker_syncfifo_sink_payload_data; +wire main_crc32_checker_syncfifo_sink_payload_last_be; +wire main_crc32_checker_syncfifo_sink_payload_error; +wire main_crc32_checker_syncfifo_source_valid; +wire main_crc32_checker_syncfifo_source_ready; +wire main_crc32_checker_syncfifo_source_first; +wire main_crc32_checker_syncfifo_source_last; +wire [7:0] main_crc32_checker_syncfifo_source_payload_data; +wire main_crc32_checker_syncfifo_source_payload_last_be; +wire main_crc32_checker_syncfifo_source_payload_error; +wire main_crc32_checker_syncfifo_syncfifo_we; +wire main_crc32_checker_syncfifo_syncfifo_writable; +wire main_crc32_checker_syncfifo_syncfifo_re; +wire main_crc32_checker_syncfifo_syncfifo_readable; +wire [11:0] main_crc32_checker_syncfifo_syncfifo_din; +wire [11:0] main_crc32_checker_syncfifo_syncfifo_dout; +reg [2:0] main_crc32_checker_syncfifo_level = 3'd0; +reg main_crc32_checker_syncfifo_replace = 1'd0; +reg [2:0] main_crc32_checker_syncfifo_produce = 3'd0; +reg [2:0] main_crc32_checker_syncfifo_consume = 3'd0; +reg [2:0] main_crc32_checker_syncfifo_wrport_adr = 3'd0; +wire [11:0] main_crc32_checker_syncfifo_wrport_dat_r; +wire main_crc32_checker_syncfifo_wrport_we; +wire [11:0] main_crc32_checker_syncfifo_wrport_dat_w; +wire main_crc32_checker_syncfifo_do_read; +wire [2:0] main_crc32_checker_syncfifo_rdport_adr; +wire [11:0] main_crc32_checker_syncfifo_rdport_dat_r; +wire [7:0] main_crc32_checker_syncfifo_fifo_in_payload_data; +wire main_crc32_checker_syncfifo_fifo_in_payload_last_be; +wire main_crc32_checker_syncfifo_fifo_in_payload_error; +wire main_crc32_checker_syncfifo_fifo_in_first; +wire main_crc32_checker_syncfifo_fifo_in_last; +wire [7:0] main_crc32_checker_syncfifo_fifo_out_payload_data; +wire main_crc32_checker_syncfifo_fifo_out_payload_last_be; +wire main_crc32_checker_syncfifo_fifo_out_payload_error; +wire main_crc32_checker_syncfifo_fifo_out_first; +wire main_crc32_checker_syncfifo_fifo_out_last; +reg main_crc32_checker_fifo_reset = 1'd0; +wire main_crc32_checker_fifo_in; +wire main_crc32_checker_fifo_out; +wire main_crc32_checker_fifo_full; +wire main_ps_preamble_error_i; +wire main_ps_preamble_error_o; +reg main_ps_preamble_error_toggle_i = 1'd0; +wire main_ps_preamble_error_toggle_o; +reg main_ps_preamble_error_toggle_o_r = 1'd0; +wire main_ps_crc_error_i; +wire main_ps_crc_error_o; +reg main_ps_crc_error_toggle_i = 1'd0; +wire main_ps_crc_error_toggle_o; +reg main_ps_crc_error_toggle_o_r = 1'd0; +wire main_padding_inserter_sink_valid; +reg main_padding_inserter_sink_ready = 1'd0; +wire main_padding_inserter_sink_first; +wire main_padding_inserter_sink_last; +wire [7:0] main_padding_inserter_sink_payload_data; +wire main_padding_inserter_sink_payload_last_be; +wire main_padding_inserter_sink_payload_error; +reg main_padding_inserter_source_valid = 1'd0; +wire main_padding_inserter_source_ready; +reg main_padding_inserter_source_first = 1'd0; +reg main_padding_inserter_source_last = 1'd0; +reg [7:0] main_padding_inserter_source_payload_data = 8'd0; +reg main_padding_inserter_source_payload_last_be = 1'd0; +reg main_padding_inserter_source_payload_error = 1'd0; +reg [15:0] main_padding_inserter_counter = 16'd1; +wire main_padding_inserter_counter_done; +reg main_padding_inserter_counter_reset = 1'd0; +reg main_padding_inserter_counter_ce = 1'd0; +wire main_padding_checker_sink_valid; +wire main_padding_checker_sink_ready; +wire main_padding_checker_sink_first; +wire main_padding_checker_sink_last; +wire [7:0] main_padding_checker_sink_payload_data; +wire main_padding_checker_sink_payload_last_be; +wire main_padding_checker_sink_payload_error; +wire main_padding_checker_source_valid; +wire main_padding_checker_source_ready; +wire main_padding_checker_source_first; +wire main_padding_checker_source_last; +wire [7:0] main_padding_checker_source_payload_data; +wire main_padding_checker_source_payload_last_be; +wire main_padding_checker_source_payload_error; +wire main_tx_last_be_sink_valid; +wire main_tx_last_be_sink_ready; +wire main_tx_last_be_sink_first; +wire main_tx_last_be_sink_last; +wire [7:0] main_tx_last_be_sink_payload_data; +wire main_tx_last_be_sink_payload_last_be; +wire main_tx_last_be_sink_payload_error; +wire main_tx_last_be_source_valid; +wire main_tx_last_be_source_ready; +reg main_tx_last_be_source_first = 1'd0; +wire main_tx_last_be_source_last; +wire [7:0] main_tx_last_be_source_payload_data; +reg main_tx_last_be_source_payload_last_be = 1'd0; +reg main_tx_last_be_source_payload_error = 1'd0; +reg main_tx_last_be_ongoing = 1'd1; +wire main_rx_last_be_sink_valid; +wire main_rx_last_be_sink_ready; +wire main_rx_last_be_sink_first; +wire main_rx_last_be_sink_last; +wire [7:0] main_rx_last_be_sink_payload_data; +wire main_rx_last_be_sink_payload_last_be; +wire main_rx_last_be_sink_payload_error; +wire main_rx_last_be_source_valid; +wire main_rx_last_be_source_ready; +wire main_rx_last_be_source_first; +wire main_rx_last_be_source_last; +wire [7:0] main_rx_last_be_source_payload_data; +reg main_rx_last_be_source_payload_last_be = 1'd0; +wire main_rx_last_be_source_payload_error; +wire main_tx_converter_sink_valid; +wire main_tx_converter_sink_ready; +wire main_tx_converter_sink_first; +wire main_tx_converter_sink_last; +wire [31:0] main_tx_converter_sink_payload_data; +wire [3:0] main_tx_converter_sink_payload_last_be; +wire [3:0] main_tx_converter_sink_payload_error; +wire main_tx_converter_source_valid; +wire main_tx_converter_source_ready; +wire main_tx_converter_source_first; +wire main_tx_converter_source_last; +wire [7:0] main_tx_converter_source_payload_data; +wire main_tx_converter_source_payload_last_be; +wire main_tx_converter_source_payload_error; +wire main_tx_converter_converter_sink_valid; +wire main_tx_converter_converter_sink_ready; +wire main_tx_converter_converter_sink_first; +wire main_tx_converter_converter_sink_last; +reg [39:0] main_tx_converter_converter_sink_payload_data = 40'd0; +wire main_tx_converter_converter_source_valid; +wire main_tx_converter_converter_source_ready; +wire main_tx_converter_converter_source_first; +wire main_tx_converter_converter_source_last; +reg [9:0] main_tx_converter_converter_source_payload_data = 10'd0; +wire main_tx_converter_converter_source_payload_valid_token_count; +reg [1:0] main_tx_converter_converter_mux = 2'd0; +wire main_tx_converter_converter_first; +wire main_tx_converter_converter_last; +wire main_tx_converter_source_source_valid; +wire main_tx_converter_source_source_ready; +wire main_tx_converter_source_source_first; +wire main_tx_converter_source_source_last; +wire [9:0] main_tx_converter_source_source_payload_data; +wire main_rx_converter_sink_valid; +wire main_rx_converter_sink_ready; +wire main_rx_converter_sink_first; +wire main_rx_converter_sink_last; +wire [7:0] main_rx_converter_sink_payload_data; +wire main_rx_converter_sink_payload_last_be; +wire main_rx_converter_sink_payload_error; +wire main_rx_converter_source_valid; +wire main_rx_converter_source_ready; +wire main_rx_converter_source_first; +wire main_rx_converter_source_last; +reg [31:0] main_rx_converter_source_payload_data = 32'd0; +reg [3:0] main_rx_converter_source_payload_last_be = 4'd0; +reg [3:0] main_rx_converter_source_payload_error = 4'd0; +wire main_rx_converter_converter_sink_valid; +wire main_rx_converter_converter_sink_ready; +wire main_rx_converter_converter_sink_first; +wire main_rx_converter_converter_sink_last; +wire [9:0] main_rx_converter_converter_sink_payload_data; +wire main_rx_converter_converter_source_valid; +wire main_rx_converter_converter_source_ready; +reg main_rx_converter_converter_source_first = 1'd0; +reg main_rx_converter_converter_source_last = 1'd0; +reg [39:0] main_rx_converter_converter_source_payload_data = 40'd0; +reg [2:0] main_rx_converter_converter_source_payload_valid_token_count = 3'd0; +reg [1:0] main_rx_converter_converter_demux = 2'd0; +wire main_rx_converter_converter_load_part; +reg main_rx_converter_converter_strobe_all = 1'd0; +wire main_rx_converter_source_source_valid; +wire main_rx_converter_source_source_ready; +wire main_rx_converter_source_source_first; +wire main_rx_converter_source_source_last; +wire [39:0] main_rx_converter_source_source_payload_data; +wire main_tx_cdc_sink_valid; +wire main_tx_cdc_sink_ready; +wire main_tx_cdc_sink_first; +wire main_tx_cdc_sink_last; +wire [31:0] main_tx_cdc_sink_payload_data; +wire [3:0] main_tx_cdc_sink_payload_last_be; +wire [3:0] main_tx_cdc_sink_payload_error; +wire main_tx_cdc_source_valid; +wire main_tx_cdc_source_ready; +wire main_tx_cdc_source_first; +wire main_tx_cdc_source_last; +wire [31:0] main_tx_cdc_source_payload_data; +wire [3:0] main_tx_cdc_source_payload_last_be; +wire [3:0] main_tx_cdc_source_payload_error; +wire main_tx_cdc_asyncfifo_we; +wire main_tx_cdc_asyncfifo_writable; +wire main_tx_cdc_asyncfifo_re; +wire main_tx_cdc_asyncfifo_readable; +wire [41:0] main_tx_cdc_asyncfifo_din; +wire [41:0] main_tx_cdc_asyncfifo_dout; +wire main_tx_cdc_graycounter0_ce; +(* dont_touch = "true" *) reg [6:0] main_tx_cdc_graycounter0_q = 7'd0; +wire [6:0] main_tx_cdc_graycounter0_q_next; +reg [6:0] main_tx_cdc_graycounter0_q_binary = 7'd0; +reg [6:0] main_tx_cdc_graycounter0_q_next_binary = 7'd0; +wire main_tx_cdc_graycounter1_ce; +(* dont_touch = "true" *) reg [6:0] main_tx_cdc_graycounter1_q = 7'd0; +wire [6:0] main_tx_cdc_graycounter1_q_next; +reg [6:0] main_tx_cdc_graycounter1_q_binary = 7'd0; +reg [6:0] main_tx_cdc_graycounter1_q_next_binary = 7'd0; +wire [6:0] main_tx_cdc_produce_rdomain; +wire [6:0] main_tx_cdc_consume_wdomain; +wire [5:0] main_tx_cdc_wrport_adr; +wire [41:0] main_tx_cdc_wrport_dat_r; +wire main_tx_cdc_wrport_we; +wire [41:0] main_tx_cdc_wrport_dat_w; +wire [5:0] main_tx_cdc_rdport_adr; +wire [41:0] main_tx_cdc_rdport_dat_r; +wire [31:0] main_tx_cdc_fifo_in_payload_data; +wire [3:0] main_tx_cdc_fifo_in_payload_last_be; +wire [3:0] main_tx_cdc_fifo_in_payload_error; +wire main_tx_cdc_fifo_in_first; +wire main_tx_cdc_fifo_in_last; +wire [31:0] main_tx_cdc_fifo_out_payload_data; +wire [3:0] main_tx_cdc_fifo_out_payload_last_be; +wire [3:0] main_tx_cdc_fifo_out_payload_error; +wire main_tx_cdc_fifo_out_first; +wire main_tx_cdc_fifo_out_last; +wire main_rx_cdc_sink_valid; +wire main_rx_cdc_sink_ready; +wire main_rx_cdc_sink_first; +wire main_rx_cdc_sink_last; +wire [31:0] main_rx_cdc_sink_payload_data; +wire [3:0] main_rx_cdc_sink_payload_last_be; +wire [3:0] main_rx_cdc_sink_payload_error; +wire main_rx_cdc_source_valid; +wire main_rx_cdc_source_ready; +wire main_rx_cdc_source_first; +wire main_rx_cdc_source_last; +wire [31:0] main_rx_cdc_source_payload_data; +wire [3:0] main_rx_cdc_source_payload_last_be; +wire [3:0] main_rx_cdc_source_payload_error; +wire main_rx_cdc_asyncfifo_we; +wire main_rx_cdc_asyncfifo_writable; +wire main_rx_cdc_asyncfifo_re; +wire main_rx_cdc_asyncfifo_readable; +wire [41:0] main_rx_cdc_asyncfifo_din; +wire [41:0] main_rx_cdc_asyncfifo_dout; +wire main_rx_cdc_graycounter0_ce; +(* dont_touch = "true" *) reg [6:0] main_rx_cdc_graycounter0_q = 7'd0; +wire [6:0] main_rx_cdc_graycounter0_q_next; +reg [6:0] main_rx_cdc_graycounter0_q_binary = 7'd0; +reg [6:0] main_rx_cdc_graycounter0_q_next_binary = 7'd0; +wire main_rx_cdc_graycounter1_ce; +(* dont_touch = "true" *) reg [6:0] main_rx_cdc_graycounter1_q = 7'd0; +wire [6:0] main_rx_cdc_graycounter1_q_next; +reg [6:0] main_rx_cdc_graycounter1_q_binary = 7'd0; +reg [6:0] main_rx_cdc_graycounter1_q_next_binary = 7'd0; +wire [6:0] main_rx_cdc_produce_rdomain; +wire [6:0] main_rx_cdc_consume_wdomain; +wire [5:0] main_rx_cdc_wrport_adr; +wire [41:0] main_rx_cdc_wrport_dat_r; +wire main_rx_cdc_wrport_we; +wire [41:0] main_rx_cdc_wrport_dat_w; +wire [5:0] main_rx_cdc_rdport_adr; +wire [41:0] main_rx_cdc_rdport_dat_r; +wire [31:0] main_rx_cdc_fifo_in_payload_data; +wire [3:0] main_rx_cdc_fifo_in_payload_last_be; +wire [3:0] main_rx_cdc_fifo_in_payload_error; +wire main_rx_cdc_fifo_in_first; +wire main_rx_cdc_fifo_in_last; +wire [31:0] main_rx_cdc_fifo_out_payload_data; +wire [3:0] main_rx_cdc_fifo_out_payload_last_be; +wire [3:0] main_rx_cdc_fifo_out_payload_error; +wire main_rx_cdc_fifo_out_first; +wire main_rx_cdc_fifo_out_last; +wire main_sink_valid; +wire main_sink_ready; +wire main_sink_first; +wire main_sink_last; +wire [31:0] main_sink_payload_data; +wire [3:0] main_sink_payload_last_be; +wire [3:0] main_sink_payload_error; +wire main_source_valid; +wire main_source_ready; +wire main_source_first; +wire main_source_last; +wire [31:0] main_source_payload_data; +wire [3:0] main_source_payload_last_be; +wire [3:0] main_source_payload_error; +wire [29:0] main_bus_adr; +wire [31:0] main_bus_dat_w; +wire [31:0] main_bus_dat_r; +wire [3:0] main_bus_sel; +wire main_bus_cyc; +wire main_bus_stb; +wire main_bus_ack; +wire main_bus_we; +wire [2:0] main_bus_cti; +wire [1:0] main_bus_bte; +wire main_bus_err; +wire main_writer_sink_sink_valid; +reg main_writer_sink_sink_ready = 1'd1; +wire main_writer_sink_sink_first; +wire main_writer_sink_sink_last; +wire [31:0] main_writer_sink_sink_payload_data; +wire [3:0] main_writer_sink_sink_payload_last_be; +wire [3:0] main_writer_sink_sink_payload_error; +wire main_writer_slot_status; +wire main_writer_slot_we; +wire [31:0] main_writer_length_status; +wire main_writer_length_we; +reg [31:0] main_writer_errors_status = 32'd0; +wire main_writer_errors_we; +wire main_writer_irq; +wire main_writer_available_status; +wire main_writer_available_pending; +wire main_writer_available_trigger; +reg main_writer_available_clear = 1'd0; +wire main_writer_status_re; +wire main_writer_status_r; +wire main_writer_status_we; +wire main_writer_status_w; +wire main_writer_pending_re; +wire main_writer_pending_r; +wire main_writer_pending_we; +wire main_writer_pending_w; +reg main_writer_storage = 1'd0; +reg main_writer_re = 1'd0; +reg [2:0] main_writer_inc = 3'd0; +reg [31:0] main_writer_counter = 32'd0; +reg main_writer_slot = 1'd0; +reg main_writer_slot_ce = 1'd0; +reg main_writer_ongoing = 1'd0; +reg main_writer_fifo_sink_valid = 1'd0; +wire main_writer_fifo_sink_ready; +reg main_writer_fifo_sink_first = 1'd0; +reg main_writer_fifo_sink_last = 1'd0; +wire main_writer_fifo_sink_payload_slot; +wire [31:0] main_writer_fifo_sink_payload_length; +wire main_writer_fifo_source_valid; +wire main_writer_fifo_source_ready; +wire main_writer_fifo_source_first; +wire main_writer_fifo_source_last; +wire main_writer_fifo_source_payload_slot; +wire [31:0] main_writer_fifo_source_payload_length; +wire main_writer_fifo_syncfifo_we; +wire main_writer_fifo_syncfifo_writable; +wire main_writer_fifo_syncfifo_re; +wire main_writer_fifo_syncfifo_readable; +wire [34:0] main_writer_fifo_syncfifo_din; +wire [34:0] main_writer_fifo_syncfifo_dout; +reg [1:0] main_writer_fifo_level = 2'd0; +reg main_writer_fifo_replace = 1'd0; +reg main_writer_fifo_produce = 1'd0; +reg main_writer_fifo_consume = 1'd0; +reg main_writer_fifo_wrport_adr = 1'd0; +wire [34:0] main_writer_fifo_wrport_dat_r; +wire main_writer_fifo_wrport_we; +wire [34:0] main_writer_fifo_wrport_dat_w; +wire main_writer_fifo_do_read; +wire main_writer_fifo_rdport_adr; +wire [34:0] main_writer_fifo_rdport_dat_r; +wire main_writer_fifo_fifo_in_payload_slot; +wire [31:0] main_writer_fifo_fifo_in_payload_length; +wire main_writer_fifo_fifo_in_first; +wire main_writer_fifo_fifo_in_last; +wire main_writer_fifo_fifo_out_payload_slot; +wire [31:0] main_writer_fifo_fifo_out_payload_length; +wire main_writer_fifo_fifo_out_first; +wire main_writer_fifo_fifo_out_last; +reg [8:0] main_writer_memory0_adr = 9'd0; +wire [31:0] main_writer_memory0_dat_r; +reg main_writer_memory0_we = 1'd0; +reg [31:0] main_writer_memory0_dat_w = 32'd0; +reg [8:0] main_writer_memory1_adr = 9'd0; +wire [31:0] main_writer_memory1_dat_r; +reg main_writer_memory1_we = 1'd0; +reg [31:0] main_writer_memory1_dat_w = 32'd0; +reg main_reader_source_source_valid = 1'd0; +wire main_reader_source_source_ready; +reg main_reader_source_source_first = 1'd0; +reg main_reader_source_source_last = 1'd0; +reg [31:0] main_reader_source_source_payload_data = 32'd0; +reg [3:0] main_reader_source_source_payload_last_be = 4'd0; +reg [3:0] main_reader_source_source_payload_error = 4'd0; +wire main_reader_start_re; +wire main_reader_start_r; +wire main_reader_start_we; +reg main_reader_start_w = 1'd0; +wire main_reader_ready_status; +wire main_reader_ready_we; +wire [1:0] main_reader_level_status; +wire main_reader_level_we; +reg main_reader_slot_storage = 1'd0; +reg main_reader_slot_re = 1'd0; +reg [10:0] main_reader_length_storage = 11'd0; +reg main_reader_length_re = 1'd0; +wire main_reader_irq; +wire main_reader_done_status; +reg main_reader_done_pending = 1'd0; +reg main_reader_done_trigger = 1'd0; +reg main_reader_done_clear = 1'd0; +wire main_reader_eventmanager_status_re; +wire main_reader_eventmanager_status_r; +wire main_reader_eventmanager_status_we; +wire main_reader_eventmanager_status_w; +wire main_reader_eventmanager_pending_re; +wire main_reader_eventmanager_pending_r; +wire main_reader_eventmanager_pending_we; +wire main_reader_eventmanager_pending_w; +reg main_reader_eventmanager_storage = 1'd0; +reg main_reader_eventmanager_re = 1'd0; +wire main_reader_fifo_sink_valid; +wire main_reader_fifo_sink_ready; +reg main_reader_fifo_sink_first = 1'd0; +reg main_reader_fifo_sink_last = 1'd0; +wire main_reader_fifo_sink_payload_slot; +wire [10:0] main_reader_fifo_sink_payload_length; +wire main_reader_fifo_source_valid; +reg main_reader_fifo_source_ready = 1'd0; +wire main_reader_fifo_source_first; +wire main_reader_fifo_source_last; +wire main_reader_fifo_source_payload_slot; +wire [10:0] main_reader_fifo_source_payload_length; +wire main_reader_fifo_syncfifo_we; +wire main_reader_fifo_syncfifo_writable; +wire main_reader_fifo_syncfifo_re; +wire main_reader_fifo_syncfifo_readable; +wire [13:0] main_reader_fifo_syncfifo_din; +wire [13:0] main_reader_fifo_syncfifo_dout; +reg [1:0] main_reader_fifo_level = 2'd0; +reg main_reader_fifo_replace = 1'd0; +reg main_reader_fifo_produce = 1'd0; +reg main_reader_fifo_consume = 1'd0; +reg main_reader_fifo_wrport_adr = 1'd0; +wire [13:0] main_reader_fifo_wrport_dat_r; +wire main_reader_fifo_wrport_we; +wire [13:0] main_reader_fifo_wrport_dat_w; +wire main_reader_fifo_do_read; +wire main_reader_fifo_rdport_adr; +wire [13:0] main_reader_fifo_rdport_dat_r; +wire main_reader_fifo_fifo_in_payload_slot; +wire [10:0] main_reader_fifo_fifo_in_payload_length; +wire main_reader_fifo_fifo_in_first; +wire main_reader_fifo_fifo_in_last; +wire main_reader_fifo_fifo_out_payload_slot; +wire [10:0] main_reader_fifo_fifo_out_payload_length; +wire main_reader_fifo_fifo_out_first; +wire main_reader_fifo_fifo_out_last; +reg [10:0] main_reader_counter = 11'd0; +wire [8:0] main_reader_memory0_adr; +wire [31:0] main_reader_memory0_dat_r; +wire [8:0] main_reader_memory1_adr; +wire [31:0] main_reader_memory1_dat_r; +wire main_ev_irq; +wire [29:0] main_sram0_bus_adr0; +wire [31:0] main_sram0_bus_dat_w0; +wire [31:0] main_sram0_bus_dat_r0; +wire [3:0] main_sram0_bus_sel0; +wire main_sram0_bus_cyc0; +wire main_sram0_bus_stb0; +reg main_sram0_bus_ack0 = 1'd0; +wire main_sram0_bus_we0; +wire [2:0] main_sram0_bus_cti0; +wire [1:0] main_sram0_bus_bte0; +reg main_sram0_bus_err0 = 1'd0; +wire [8:0] main_sram0_adr0; +wire [31:0] main_sram0_dat_r0; +wire [29:0] main_sram1_bus_adr0; +wire [31:0] main_sram1_bus_dat_w0; +wire [31:0] main_sram1_bus_dat_r0; +wire [3:0] main_sram1_bus_sel0; +wire main_sram1_bus_cyc0; +wire main_sram1_bus_stb0; +reg main_sram1_bus_ack0 = 1'd0; +wire main_sram1_bus_we0; +wire [2:0] main_sram1_bus_cti0; +wire [1:0] main_sram1_bus_bte0; +reg main_sram1_bus_err0 = 1'd0; +wire [8:0] main_sram1_adr0; +wire [31:0] main_sram1_dat_r0; +wire [29:0] main_sram0_bus_adr1; +wire [31:0] main_sram0_bus_dat_w1; +wire [31:0] main_sram0_bus_dat_r1; +wire [3:0] main_sram0_bus_sel1; +wire main_sram0_bus_cyc1; +wire main_sram0_bus_stb1; +reg main_sram0_bus_ack1 = 1'd0; +wire main_sram0_bus_we1; +wire [2:0] main_sram0_bus_cti1; +wire [1:0] main_sram0_bus_bte1; +reg main_sram0_bus_err1 = 1'd0; +wire [8:0] main_sram0_adr1; +wire [31:0] main_sram0_dat_r1; +reg [3:0] main_sram0_we = 4'd0; +wire [31:0] main_sram0_dat_w; +wire [29:0] main_sram1_bus_adr1; +wire [31:0] main_sram1_bus_dat_w1; +wire [31:0] main_sram1_bus_dat_r1; +wire [3:0] main_sram1_bus_sel1; +wire main_sram1_bus_cyc1; +wire main_sram1_bus_stb1; +reg main_sram1_bus_ack1 = 1'd0; +wire main_sram1_bus_we1; +wire [2:0] main_sram1_bus_cti1; +wire [1:0] main_sram1_bus_bte1; +reg main_sram1_bus_err1 = 1'd0; +wire [8:0] main_sram1_adr1; +wire [31:0] main_sram1_dat_r1; +reg [3:0] main_sram1_we = 4'd0; +wire [31:0] main_sram1_dat_w; +reg [3:0] main_slave_sel = 4'd0; +reg [3:0] main_slave_sel_r = 4'd0; +reg builder_state = 1'd0; +reg builder_next_state = 1'd0; +reg builder_liteethmacgap_state = 1'd0; +reg builder_liteethmacgap_next_state = 1'd0; +reg [1:0] builder_liteethmacpreambleinserter_state = 2'd0; +reg [1:0] builder_liteethmacpreambleinserter_next_state = 2'd0; +reg builder_liteethmacpreamblechecker_state = 1'd0; +reg builder_liteethmacpreamblechecker_next_state = 1'd0; +reg [1:0] builder_liteethmaccrc32inserter_state = 2'd0; +reg [1:0] builder_liteethmaccrc32inserter_next_state = 2'd0; +reg [1:0] builder_liteethmaccrc32checker_state = 2'd0; +reg [1:0] builder_liteethmaccrc32checker_next_state = 2'd0; +reg builder_liteethmacpaddinginserter_state = 1'd0; +reg builder_liteethmacpaddinginserter_next_state = 1'd0; +reg [2:0] builder_liteethmacsramwriter_state = 3'd0; +reg [2:0] builder_liteethmacsramwriter_next_state = 3'd0; +reg [31:0] main_writer_counter_t_next_value = 32'd0; +reg main_writer_counter_t_next_value_ce = 1'd0; +reg [31:0] main_writer_errors_status_f_next_value = 32'd0; +reg main_writer_errors_status_f_next_value_ce = 1'd0; +reg [1:0] builder_liteethmacsramreader_state = 2'd0; +reg [1:0] builder_liteethmacsramreader_next_state = 2'd0; +reg [10:0] main_reader_counter_next_value = 11'd0; +reg main_reader_counter_next_value_ce = 1'd0; +wire [29:0] builder_shared_adr; +wire [31:0] builder_shared_dat_w; +reg [31:0] builder_shared_dat_r = 32'd0; +wire [3:0] builder_shared_sel; +wire builder_shared_cyc; +wire builder_shared_stb; +reg builder_shared_ack = 1'd0; +wire builder_shared_we; +wire [2:0] builder_shared_cti; +wire [1:0] builder_shared_bte; +wire builder_shared_err; +wire builder_request; +wire builder_grant; +reg [1:0] builder_slave_sel = 2'd0; +reg [1:0] builder_slave_sel_r = 2'd0; +reg builder_error = 1'd0; +wire builder_wait; +wire builder_done; +reg [19:0] builder_count = 20'd1000000; +wire [13:0] builder_interface0_bank_bus_adr; +wire builder_interface0_bank_bus_we; +wire [31:0] builder_interface0_bank_bus_dat_w; +reg [31:0] builder_interface0_bank_bus_dat_r = 32'd0; +wire builder_csrbank0_reset0_re; +wire builder_csrbank0_reset0_r; +wire builder_csrbank0_reset0_we; +wire builder_csrbank0_reset0_w; +wire builder_csrbank0_scratch0_re; +wire [31:0] builder_csrbank0_scratch0_r; +wire builder_csrbank0_scratch0_we; +wire [31:0] builder_csrbank0_scratch0_w; +wire builder_csrbank0_bus_errors_re; +wire [31:0] builder_csrbank0_bus_errors_r; +wire builder_csrbank0_bus_errors_we; +wire [31:0] builder_csrbank0_bus_errors_w; +wire builder_csrbank0_sel; +wire [13:0] builder_interface1_bank_bus_adr; +wire builder_interface1_bank_bus_we; +wire [31:0] builder_interface1_bank_bus_dat_w; +reg [31:0] builder_interface1_bank_bus_dat_r = 32'd0; +wire builder_csrbank1_sram_writer_slot_re; +wire builder_csrbank1_sram_writer_slot_r; +wire builder_csrbank1_sram_writer_slot_we; +wire builder_csrbank1_sram_writer_slot_w; +wire builder_csrbank1_sram_writer_length_re; +wire [31:0] builder_csrbank1_sram_writer_length_r; +wire builder_csrbank1_sram_writer_length_we; +wire [31:0] builder_csrbank1_sram_writer_length_w; +wire builder_csrbank1_sram_writer_errors_re; +wire [31:0] builder_csrbank1_sram_writer_errors_r; +wire builder_csrbank1_sram_writer_errors_we; +wire [31:0] builder_csrbank1_sram_writer_errors_w; +wire builder_csrbank1_sram_writer_ev_enable0_re; +wire builder_csrbank1_sram_writer_ev_enable0_r; +wire builder_csrbank1_sram_writer_ev_enable0_we; +wire builder_csrbank1_sram_writer_ev_enable0_w; +wire builder_csrbank1_sram_reader_ready_re; +wire builder_csrbank1_sram_reader_ready_r; +wire builder_csrbank1_sram_reader_ready_we; +wire builder_csrbank1_sram_reader_ready_w; +wire builder_csrbank1_sram_reader_level_re; +wire [1:0] builder_csrbank1_sram_reader_level_r; +wire builder_csrbank1_sram_reader_level_we; +wire [1:0] builder_csrbank1_sram_reader_level_w; +wire builder_csrbank1_sram_reader_slot0_re; +wire builder_csrbank1_sram_reader_slot0_r; +wire builder_csrbank1_sram_reader_slot0_we; +wire builder_csrbank1_sram_reader_slot0_w; +wire builder_csrbank1_sram_reader_length0_re; +wire [10:0] builder_csrbank1_sram_reader_length0_r; +wire builder_csrbank1_sram_reader_length0_we; +wire [10:0] builder_csrbank1_sram_reader_length0_w; +wire builder_csrbank1_sram_reader_ev_enable0_re; +wire builder_csrbank1_sram_reader_ev_enable0_r; +wire builder_csrbank1_sram_reader_ev_enable0_we; +wire builder_csrbank1_sram_reader_ev_enable0_w; +wire builder_csrbank1_preamble_crc_re; +wire builder_csrbank1_preamble_crc_r; +wire builder_csrbank1_preamble_crc_we; +wire builder_csrbank1_preamble_crc_w; +wire builder_csrbank1_preamble_errors_re; +wire [31:0] builder_csrbank1_preamble_errors_r; +wire builder_csrbank1_preamble_errors_we; +wire [31:0] builder_csrbank1_preamble_errors_w; +wire builder_csrbank1_crc_errors_re; +wire [31:0] builder_csrbank1_crc_errors_r; +wire builder_csrbank1_crc_errors_we; +wire [31:0] builder_csrbank1_crc_errors_w; +wire builder_csrbank1_sel; +wire [13:0] builder_interface2_bank_bus_adr; +wire builder_interface2_bank_bus_we; +wire [31:0] builder_interface2_bank_bus_dat_w; +reg [31:0] builder_interface2_bank_bus_dat_r = 32'd0; +wire builder_csrbank2_crg_reset0_re; +wire builder_csrbank2_crg_reset0_r; +wire builder_csrbank2_crg_reset0_we; +wire builder_csrbank2_crg_reset0_w; +wire builder_csrbank2_mdio_w0_re; +wire [2:0] builder_csrbank2_mdio_w0_r; +wire builder_csrbank2_mdio_w0_we; +wire [2:0] builder_csrbank2_mdio_w0_w; +wire builder_csrbank2_mdio_r_re; +wire builder_csrbank2_mdio_r_r; +wire builder_csrbank2_mdio_r_we; +wire builder_csrbank2_mdio_r_w; +wire builder_csrbank2_sel; +wire [13:0] builder_adr; +wire builder_we; +wire [31:0] builder_dat_w; +wire [31:0] builder_dat_r; +reg [29:0] builder_array_muxed0 = 30'd0; +reg [31:0] builder_array_muxed1 = 32'd0; +reg [3:0] builder_array_muxed2 = 4'd0; +reg builder_array_muxed3 = 1'd0; +reg builder_array_muxed4 = 1'd0; +reg builder_array_muxed5 = 1'd0; +reg [2:0] builder_array_muxed6 = 3'd0; +reg [1:0] builder_array_muxed7 = 2'd0; +wire builder_rst_meta0; +wire builder_rst_meta1; +(* async_reg = "true", mr_ff = "true", dont_touch = "true" *) reg builder_xilinxmultiregimpl0_regs0 = 1'd0; +(* async_reg = "true", dont_touch = "true" *) reg builder_xilinxmultiregimpl0_regs1 = 1'd0; +(* async_reg = "true", mr_ff = "true", dont_touch = "true" *) reg builder_xilinxmultiregimpl1_regs0 = 1'd0; +(* async_reg = "true", dont_touch = "true" *) reg builder_xilinxmultiregimpl1_regs1 = 1'd0; +(* async_reg = "true", mr_ff = "true", dont_touch = "true" *) reg builder_xilinxmultiregimpl2_regs0 = 1'd0; +(* async_reg = "true", dont_touch = "true" *) reg builder_xilinxmultiregimpl2_regs1 = 1'd0; +(* async_reg = "true", mr_ff = "true", dont_touch = "true" *) reg [6:0] builder_xilinxmultiregimpl3_regs0 = 7'd0; +(* async_reg = "true", dont_touch = "true" *) reg [6:0] builder_xilinxmultiregimpl3_regs1 = 7'd0; +(* async_reg = "true", mr_ff = "true", dont_touch = "true" *) reg [6:0] builder_xilinxmultiregimpl4_regs0 = 7'd0; +(* async_reg = "true", dont_touch = "true" *) reg [6:0] builder_xilinxmultiregimpl4_regs1 = 7'd0; +(* async_reg = "true", mr_ff = "true", dont_touch = "true" *) reg [6:0] builder_xilinxmultiregimpl5_regs0 = 7'd0; +(* async_reg = "true", dont_touch = "true" *) reg [6:0] builder_xilinxmultiregimpl5_regs1 = 7'd0; +(* async_reg = "true", mr_ff = "true", dont_touch = "true" *) reg [6:0] builder_xilinxmultiregimpl6_regs0 = 7'd0; +(* async_reg = "true", dont_touch = "true" *) reg [6:0] builder_xilinxmultiregimpl6_regs1 = 7'd0; + +assign interrupt = main_ev_irq; +assign main_maccore_maccore_bus_error = builder_error; +assign main_maccore_maccore_reset = main_maccore_maccore_reset_re; +assign main_maccore_maccore_bus_errors_status = main_maccore_maccore_bus_errors; +assign main_maccore_maccore_dat_w = main_maccore_maccore_wishbone_dat_w; +assign main_maccore_maccore_wishbone_dat_r = main_maccore_maccore_dat_r; +always @(*) begin + main_maccore_maccore_we <= 1'd0; + main_maccore_maccore_wishbone_ack <= 1'd0; + builder_next_state <= 1'd0; + main_maccore_maccore_adr <= 14'd0; + builder_next_state <= builder_state; + case (builder_state) + 1'd1: begin + main_maccore_maccore_wishbone_ack <= 1'd1; + builder_next_state <= 1'd0; + end + default: begin + if ((main_maccore_maccore_wishbone_cyc & main_maccore_maccore_wishbone_stb)) begin + main_maccore_maccore_adr <= main_maccore_maccore_wishbone_adr; + main_maccore_maccore_we <= (main_maccore_maccore_wishbone_we & (main_maccore_maccore_wishbone_sel != 1'd0)); + builder_next_state <= 1'd1; + end + end + endcase +end +assign sys_clk = sys_clock; +assign por_clk = sys_clock; +assign sys_rst = main_maccore_int_rst; +assign eth_rx_clk = mii_eth_clocks_rx; +assign eth_tx_clk = mii_eth_clocks_tx; +assign main_maccore_ethphy_reset0 = (main_maccore_ethphy_reset_storage | main_maccore_ethphy_reset1); +assign mii_eth_rst_n = (~main_maccore_ethphy_reset0); +assign main_maccore_ethphy_counter_done = (main_maccore_ethphy_counter == 9'd256); +assign main_maccore_ethphy_counter_ce = (~main_maccore_ethphy_counter_done); +assign main_maccore_ethphy_reset1 = (~main_maccore_ethphy_counter_done); +assign main_maccore_ethphy_liteethphymiitx_converter_sink_valid = main_maccore_ethphy_liteethphymiitx_sink_sink_valid; +assign main_maccore_ethphy_liteethphymiitx_converter_sink_payload_data = main_maccore_ethphy_liteethphymiitx_sink_sink_payload_data; +assign main_maccore_ethphy_liteethphymiitx_sink_sink_ready = main_maccore_ethphy_liteethphymiitx_converter_sink_ready; +assign main_maccore_ethphy_liteethphymiitx_converter_source_ready = 1'd1; +assign main_maccore_ethphy_liteethphymiitx_converter_converter_sink_valid = main_maccore_ethphy_liteethphymiitx_converter_sink_valid; +assign main_maccore_ethphy_liteethphymiitx_converter_converter_sink_first = main_maccore_ethphy_liteethphymiitx_converter_sink_first; +assign main_maccore_ethphy_liteethphymiitx_converter_converter_sink_last = main_maccore_ethphy_liteethphymiitx_converter_sink_last; +assign main_maccore_ethphy_liteethphymiitx_converter_sink_ready = main_maccore_ethphy_liteethphymiitx_converter_converter_sink_ready; +always @(*) begin + main_maccore_ethphy_liteethphymiitx_converter_converter_sink_payload_data <= 8'd0; + main_maccore_ethphy_liteethphymiitx_converter_converter_sink_payload_data[3:0] <= main_maccore_ethphy_liteethphymiitx_converter_sink_payload_data[3:0]; + main_maccore_ethphy_liteethphymiitx_converter_converter_sink_payload_data[7:4] <= main_maccore_ethphy_liteethphymiitx_converter_sink_payload_data[7:4]; +end +assign main_maccore_ethphy_liteethphymiitx_converter_source_valid = main_maccore_ethphy_liteethphymiitx_converter_source_source_valid; +assign main_maccore_ethphy_liteethphymiitx_converter_source_first = main_maccore_ethphy_liteethphymiitx_converter_source_source_first; +assign main_maccore_ethphy_liteethphymiitx_converter_source_last = main_maccore_ethphy_liteethphymiitx_converter_source_source_last; +assign main_maccore_ethphy_liteethphymiitx_converter_source_source_ready = main_maccore_ethphy_liteethphymiitx_converter_source_ready; +assign {main_maccore_ethphy_liteethphymiitx_converter_source_payload_data} = main_maccore_ethphy_liteethphymiitx_converter_source_source_payload_data; +assign main_maccore_ethphy_liteethphymiitx_converter_source_source_valid = main_maccore_ethphy_liteethphymiitx_converter_converter_source_valid; +assign main_maccore_ethphy_liteethphymiitx_converter_converter_source_ready = main_maccore_ethphy_liteethphymiitx_converter_source_source_ready; +assign main_maccore_ethphy_liteethphymiitx_converter_source_source_first = main_maccore_ethphy_liteethphymiitx_converter_converter_source_first; +assign main_maccore_ethphy_liteethphymiitx_converter_source_source_last = main_maccore_ethphy_liteethphymiitx_converter_converter_source_last; +assign main_maccore_ethphy_liteethphymiitx_converter_source_source_payload_data = main_maccore_ethphy_liteethphymiitx_converter_converter_source_payload_data; +assign main_maccore_ethphy_liteethphymiitx_converter_converter_first = (main_maccore_ethphy_liteethphymiitx_converter_converter_mux == 1'd0); +assign main_maccore_ethphy_liteethphymiitx_converter_converter_last = (main_maccore_ethphy_liteethphymiitx_converter_converter_mux == 1'd1); +assign main_maccore_ethphy_liteethphymiitx_converter_converter_source_valid = main_maccore_ethphy_liteethphymiitx_converter_converter_sink_valid; +assign main_maccore_ethphy_liteethphymiitx_converter_converter_source_first = (main_maccore_ethphy_liteethphymiitx_converter_converter_sink_first & main_maccore_ethphy_liteethphymiitx_converter_converter_first); +assign main_maccore_ethphy_liteethphymiitx_converter_converter_source_last = (main_maccore_ethphy_liteethphymiitx_converter_converter_sink_last & main_maccore_ethphy_liteethphymiitx_converter_converter_last); +assign main_maccore_ethphy_liteethphymiitx_converter_converter_sink_ready = (main_maccore_ethphy_liteethphymiitx_converter_converter_last & main_maccore_ethphy_liteethphymiitx_converter_converter_source_ready); +always @(*) begin + main_maccore_ethphy_liteethphymiitx_converter_converter_source_payload_data <= 4'd0; + case (main_maccore_ethphy_liteethphymiitx_converter_converter_mux) + 1'd0: begin + main_maccore_ethphy_liteethphymiitx_converter_converter_source_payload_data <= main_maccore_ethphy_liteethphymiitx_converter_converter_sink_payload_data[3:0]; + end + default: begin + main_maccore_ethphy_liteethphymiitx_converter_converter_source_payload_data <= main_maccore_ethphy_liteethphymiitx_converter_converter_sink_payload_data[7:4]; + end + endcase +end +assign main_maccore_ethphy_liteethphymiitx_converter_converter_source_payload_valid_token_count = main_maccore_ethphy_liteethphymiitx_converter_converter_last; +assign main_maccore_ethphy_liteethphymiirx_converter_sink_last = (~mii_eth_rx_dv); +assign main_maccore_ethphy_liteethphymiirx_source_source_valid = main_maccore_ethphy_liteethphymiirx_converter_source_valid; +assign main_maccore_ethphy_liteethphymiirx_converter_source_ready = main_maccore_ethphy_liteethphymiirx_source_source_ready; +assign main_maccore_ethphy_liteethphymiirx_source_source_first = main_maccore_ethphy_liteethphymiirx_converter_source_first; +assign main_maccore_ethphy_liteethphymiirx_source_source_last = main_maccore_ethphy_liteethphymiirx_converter_source_last; +assign main_maccore_ethphy_liteethphymiirx_source_source_payload_data = main_maccore_ethphy_liteethphymiirx_converter_source_payload_data; +assign main_maccore_ethphy_liteethphymiirx_converter_converter_sink_valid = main_maccore_ethphy_liteethphymiirx_converter_sink_valid; +assign main_maccore_ethphy_liteethphymiirx_converter_converter_sink_first = main_maccore_ethphy_liteethphymiirx_converter_sink_first; +assign main_maccore_ethphy_liteethphymiirx_converter_converter_sink_last = main_maccore_ethphy_liteethphymiirx_converter_sink_last; +assign main_maccore_ethphy_liteethphymiirx_converter_sink_ready = main_maccore_ethphy_liteethphymiirx_converter_converter_sink_ready; +assign main_maccore_ethphy_liteethphymiirx_converter_converter_sink_payload_data = {main_maccore_ethphy_liteethphymiirx_converter_sink_payload_data}; +assign main_maccore_ethphy_liteethphymiirx_converter_source_valid = main_maccore_ethphy_liteethphymiirx_converter_source_source_valid; +assign main_maccore_ethphy_liteethphymiirx_converter_source_first = main_maccore_ethphy_liteethphymiirx_converter_source_source_first; +assign main_maccore_ethphy_liteethphymiirx_converter_source_last = main_maccore_ethphy_liteethphymiirx_converter_source_source_last; +assign main_maccore_ethphy_liteethphymiirx_converter_source_source_ready = main_maccore_ethphy_liteethphymiirx_converter_source_ready; +always @(*) begin + main_maccore_ethphy_liteethphymiirx_converter_source_payload_data <= 8'd0; + main_maccore_ethphy_liteethphymiirx_converter_source_payload_data[3:0] <= main_maccore_ethphy_liteethphymiirx_converter_source_source_payload_data[3:0]; + main_maccore_ethphy_liteethphymiirx_converter_source_payload_data[7:4] <= main_maccore_ethphy_liteethphymiirx_converter_source_source_payload_data[7:4]; +end +assign main_maccore_ethphy_liteethphymiirx_converter_source_source_valid = main_maccore_ethphy_liteethphymiirx_converter_converter_source_valid; +assign main_maccore_ethphy_liteethphymiirx_converter_converter_source_ready = main_maccore_ethphy_liteethphymiirx_converter_source_source_ready; +assign main_maccore_ethphy_liteethphymiirx_converter_source_source_first = main_maccore_ethphy_liteethphymiirx_converter_converter_source_first; +assign main_maccore_ethphy_liteethphymiirx_converter_source_source_last = main_maccore_ethphy_liteethphymiirx_converter_converter_source_last; +assign main_maccore_ethphy_liteethphymiirx_converter_source_source_payload_data = main_maccore_ethphy_liteethphymiirx_converter_converter_source_payload_data; +assign main_maccore_ethphy_liteethphymiirx_converter_converter_sink_ready = ((~main_maccore_ethphy_liteethphymiirx_converter_converter_strobe_all) | main_maccore_ethphy_liteethphymiirx_converter_converter_source_ready); +assign main_maccore_ethphy_liteethphymiirx_converter_converter_source_valid = main_maccore_ethphy_liteethphymiirx_converter_converter_strobe_all; +assign main_maccore_ethphy_liteethphymiirx_converter_converter_load_part = (main_maccore_ethphy_liteethphymiirx_converter_converter_sink_valid & main_maccore_ethphy_liteethphymiirx_converter_converter_sink_ready); +assign mii_eth_mdc = main_maccore_ethphy_storage[0]; +assign main_maccore_ethphy_data_oe = main_maccore_ethphy_storage[1]; +assign main_maccore_ethphy_data_w = main_maccore_ethphy_storage[2]; +assign main_tx_cdc_sink_valid = main_source_valid; +assign main_source_ready = main_tx_cdc_sink_ready; +assign main_tx_cdc_sink_first = main_source_first; +assign main_tx_cdc_sink_last = main_source_last; +assign main_tx_cdc_sink_payload_data = main_source_payload_data; +assign main_tx_cdc_sink_payload_last_be = main_source_payload_last_be; +assign main_tx_cdc_sink_payload_error = main_source_payload_error; +assign main_sink_valid = main_rx_cdc_source_valid; +assign main_rx_cdc_source_ready = main_sink_ready; +assign main_sink_first = main_rx_cdc_source_first; +assign main_sink_last = main_rx_cdc_source_last; +assign main_sink_payload_data = main_rx_cdc_source_payload_data; +assign main_sink_payload_last_be = main_rx_cdc_source_payload_last_be; +assign main_sink_payload_error = main_rx_cdc_source_payload_error; +assign main_ps_preamble_error_i = main_preamble_checker_error; +assign main_ps_crc_error_i = main_crc32_checker_error; +always @(*) begin + main_tx_gap_inserter_source_valid <= 1'd0; + main_tx_gap_inserter_source_first <= 1'd0; + main_tx_gap_inserter_source_last <= 1'd0; + main_tx_gap_inserter_source_payload_data <= 8'd0; + main_tx_gap_inserter_source_payload_last_be <= 1'd0; + main_tx_gap_inserter_source_payload_error <= 1'd0; + main_tx_gap_inserter_counter_reset <= 1'd0; + builder_liteethmacgap_next_state <= 1'd0; + main_tx_gap_inserter_counter_ce <= 1'd0; + main_tx_gap_inserter_sink_ready <= 1'd0; + builder_liteethmacgap_next_state <= builder_liteethmacgap_state; + case (builder_liteethmacgap_state) + 1'd1: begin + main_tx_gap_inserter_counter_ce <= 1'd1; + if ((main_tx_gap_inserter_counter == 4'd11)) begin + builder_liteethmacgap_next_state <= 1'd0; + end + end + default: begin + main_tx_gap_inserter_counter_reset <= 1'd1; + main_tx_gap_inserter_source_valid <= main_tx_gap_inserter_sink_valid; + main_tx_gap_inserter_sink_ready <= main_tx_gap_inserter_source_ready; + main_tx_gap_inserter_source_first <= main_tx_gap_inserter_sink_first; + main_tx_gap_inserter_source_last <= main_tx_gap_inserter_sink_last; + main_tx_gap_inserter_source_payload_data <= main_tx_gap_inserter_sink_payload_data; + main_tx_gap_inserter_source_payload_last_be <= main_tx_gap_inserter_sink_payload_last_be; + main_tx_gap_inserter_source_payload_error <= main_tx_gap_inserter_sink_payload_error; + if (((main_tx_gap_inserter_sink_valid & main_tx_gap_inserter_sink_last) & main_tx_gap_inserter_sink_ready)) begin + builder_liteethmacgap_next_state <= 1'd1; + end + end + endcase +end +assign main_preamble_inserter_source_payload_last_be = main_preamble_inserter_sink_payload_last_be; +always @(*) begin + builder_liteethmacpreambleinserter_next_state <= 2'd0; + main_preamble_inserter_source_last <= 1'd0; + main_preamble_inserter_source_payload_data <= 8'd0; + main_preamble_inserter_source_payload_error <= 1'd0; + main_preamble_inserter_clr_cnt <= 1'd0; + main_preamble_inserter_sink_ready <= 1'd0; + main_preamble_inserter_inc_cnt <= 1'd0; + main_preamble_inserter_source_valid <= 1'd0; + main_preamble_inserter_source_first <= 1'd0; + main_preamble_inserter_source_payload_data <= main_preamble_inserter_sink_payload_data; + builder_liteethmacpreambleinserter_next_state <= builder_liteethmacpreambleinserter_state; + case (builder_liteethmacpreambleinserter_state) + 1'd1: begin + main_preamble_inserter_source_valid <= 1'd1; + case (main_preamble_inserter_cnt) + 1'd0: begin + main_preamble_inserter_source_payload_data <= main_preamble_inserter_preamble[7:0]; + end + 1'd1: begin + main_preamble_inserter_source_payload_data <= main_preamble_inserter_preamble[15:8]; + end + 2'd2: begin + main_preamble_inserter_source_payload_data <= main_preamble_inserter_preamble[23:16]; + end + 2'd3: begin + main_preamble_inserter_source_payload_data <= main_preamble_inserter_preamble[31:24]; + end + 3'd4: begin + main_preamble_inserter_source_payload_data <= main_preamble_inserter_preamble[39:32]; + end + 3'd5: begin + main_preamble_inserter_source_payload_data <= main_preamble_inserter_preamble[47:40]; + end + 3'd6: begin + main_preamble_inserter_source_payload_data <= main_preamble_inserter_preamble[55:48]; + end + default: begin + main_preamble_inserter_source_payload_data <= main_preamble_inserter_preamble[63:56]; + end + endcase + if ((main_preamble_inserter_cnt == 3'd7)) begin + if (main_preamble_inserter_source_ready) begin + builder_liteethmacpreambleinserter_next_state <= 2'd2; + end + end else begin + main_preamble_inserter_inc_cnt <= main_preamble_inserter_source_ready; + end + end + 2'd2: begin + main_preamble_inserter_source_valid <= main_preamble_inserter_sink_valid; + main_preamble_inserter_sink_ready <= main_preamble_inserter_source_ready; + main_preamble_inserter_source_first <= main_preamble_inserter_sink_first; + main_preamble_inserter_source_last <= main_preamble_inserter_sink_last; + main_preamble_inserter_source_payload_error <= main_preamble_inserter_sink_payload_error; + if (((main_preamble_inserter_sink_valid & main_preamble_inserter_sink_last) & main_preamble_inserter_source_ready)) begin + builder_liteethmacpreambleinserter_next_state <= 1'd0; + end + end + default: begin + main_preamble_inserter_sink_ready <= 1'd1; + main_preamble_inserter_clr_cnt <= 1'd1; + if (main_preamble_inserter_sink_valid) begin + main_preamble_inserter_sink_ready <= 1'd0; + builder_liteethmacpreambleinserter_next_state <= 1'd1; + end + end + endcase +end +assign main_preamble_checker_source_payload_data = main_preamble_checker_sink_payload_data; +assign main_preamble_checker_source_payload_last_be = main_preamble_checker_sink_payload_last_be; +always @(*) begin + main_preamble_checker_source_last <= 1'd0; + main_preamble_checker_source_payload_error <= 1'd0; + main_preamble_checker_source_first <= 1'd0; + main_preamble_checker_error <= 1'd0; + builder_liteethmacpreamblechecker_next_state <= 1'd0; + main_preamble_checker_source_valid <= 1'd0; + main_preamble_checker_sink_ready <= 1'd0; + builder_liteethmacpreamblechecker_next_state <= builder_liteethmacpreamblechecker_state; + case (builder_liteethmacpreamblechecker_state) + 1'd1: begin + main_preamble_checker_source_valid <= main_preamble_checker_sink_valid; + main_preamble_checker_sink_ready <= main_preamble_checker_source_ready; + main_preamble_checker_source_first <= main_preamble_checker_sink_first; + main_preamble_checker_source_last <= main_preamble_checker_sink_last; + main_preamble_checker_source_payload_error <= main_preamble_checker_sink_payload_error; + if (((main_preamble_checker_source_valid & main_preamble_checker_source_last) & main_preamble_checker_source_ready)) begin + builder_liteethmacpreamblechecker_next_state <= 1'd0; + end + end + default: begin + main_preamble_checker_sink_ready <= 1'd1; + if (((main_preamble_checker_sink_valid & (~main_preamble_checker_sink_last)) & (main_preamble_checker_sink_payload_data == 8'd213))) begin + builder_liteethmacpreamblechecker_next_state <= 1'd1; + end + if ((main_preamble_checker_sink_valid & main_preamble_checker_sink_last)) begin + main_preamble_checker_error <= 1'd1; + end + end + endcase +end +assign main_crc32_inserter_cnt_done = (main_crc32_inserter_cnt == 1'd0); +assign main_crc32_inserter_data1 = main_crc32_inserter_data0; +assign main_crc32_inserter_last = main_crc32_inserter_reg; +assign main_crc32_inserter_value = (~{main_crc32_inserter_reg[0], main_crc32_inserter_reg[1], main_crc32_inserter_reg[2], main_crc32_inserter_reg[3], main_crc32_inserter_reg[4], main_crc32_inserter_reg[5], main_crc32_inserter_reg[6], main_crc32_inserter_reg[7], main_crc32_inserter_reg[8], main_crc32_inserter_reg[9], main_crc32_inserter_reg[10], main_crc32_inserter_reg[11], main_crc32_inserter_reg[12], main_crc32_inserter_reg[13], main_crc32_inserter_reg[14], main_crc32_inserter_reg[15], main_crc32_inserter_reg[16], main_crc32_inserter_reg[17], main_crc32_inserter_reg[18], main_crc32_inserter_reg[19], main_crc32_inserter_reg[20], main_crc32_inserter_reg[21], main_crc32_inserter_reg[22], main_crc32_inserter_reg[23], main_crc32_inserter_reg[24], main_crc32_inserter_reg[25], main_crc32_inserter_reg[26], main_crc32_inserter_reg[27], main_crc32_inserter_reg[28], main_crc32_inserter_reg[29], main_crc32_inserter_reg[30], main_crc32_inserter_reg[31]}); +assign main_crc32_inserter_error = (main_crc32_inserter_next != 32'd3338984827); +always @(*) begin + main_crc32_inserter_next <= 32'd0; + main_crc32_inserter_next[0] <= (((main_crc32_inserter_last[24] ^ main_crc32_inserter_last[30]) ^ main_crc32_inserter_data1[1]) ^ main_crc32_inserter_data1[7]); + main_crc32_inserter_next[1] <= (((((((main_crc32_inserter_last[25] ^ main_crc32_inserter_last[31]) ^ main_crc32_inserter_data1[0]) ^ main_crc32_inserter_data1[6]) ^ main_crc32_inserter_last[24]) ^ main_crc32_inserter_last[30]) ^ main_crc32_inserter_data1[1]) ^ main_crc32_inserter_data1[7]); + main_crc32_inserter_next[2] <= (((((((((main_crc32_inserter_last[26] ^ main_crc32_inserter_data1[5]) ^ main_crc32_inserter_last[25]) ^ main_crc32_inserter_last[31]) ^ main_crc32_inserter_data1[0]) ^ main_crc32_inserter_data1[6]) ^ main_crc32_inserter_last[24]) ^ main_crc32_inserter_last[30]) ^ main_crc32_inserter_data1[1]) ^ main_crc32_inserter_data1[7]); + main_crc32_inserter_next[3] <= (((((((main_crc32_inserter_last[27] ^ main_crc32_inserter_data1[4]) ^ main_crc32_inserter_last[26]) ^ main_crc32_inserter_data1[5]) ^ main_crc32_inserter_last[25]) ^ main_crc32_inserter_last[31]) ^ main_crc32_inserter_data1[0]) ^ main_crc32_inserter_data1[6]); + main_crc32_inserter_next[4] <= (((((((((main_crc32_inserter_last[28] ^ main_crc32_inserter_data1[3]) ^ main_crc32_inserter_last[27]) ^ main_crc32_inserter_data1[4]) ^ main_crc32_inserter_last[26]) ^ main_crc32_inserter_data1[5]) ^ main_crc32_inserter_last[24]) ^ main_crc32_inserter_last[30]) ^ main_crc32_inserter_data1[1]) ^ main_crc32_inserter_data1[7]); + main_crc32_inserter_next[5] <= (((((((((((((main_crc32_inserter_last[29] ^ main_crc32_inserter_data1[2]) ^ main_crc32_inserter_last[28]) ^ main_crc32_inserter_data1[3]) ^ main_crc32_inserter_last[27]) ^ main_crc32_inserter_data1[4]) ^ main_crc32_inserter_last[25]) ^ main_crc32_inserter_last[31]) ^ main_crc32_inserter_data1[0]) ^ main_crc32_inserter_data1[6]) ^ main_crc32_inserter_last[24]) ^ main_crc32_inserter_last[30]) ^ main_crc32_inserter_data1[1]) ^ main_crc32_inserter_data1[7]); + main_crc32_inserter_next[6] <= (((((((((((main_crc32_inserter_last[30] ^ main_crc32_inserter_data1[1]) ^ main_crc32_inserter_last[29]) ^ main_crc32_inserter_data1[2]) ^ main_crc32_inserter_last[28]) ^ main_crc32_inserter_data1[3]) ^ main_crc32_inserter_last[26]) ^ main_crc32_inserter_data1[5]) ^ main_crc32_inserter_last[25]) ^ main_crc32_inserter_last[31]) ^ main_crc32_inserter_data1[0]) ^ main_crc32_inserter_data1[6]); + main_crc32_inserter_next[7] <= (((((((((main_crc32_inserter_last[31] ^ main_crc32_inserter_data1[0]) ^ main_crc32_inserter_last[29]) ^ main_crc32_inserter_data1[2]) ^ main_crc32_inserter_last[27]) ^ main_crc32_inserter_data1[4]) ^ main_crc32_inserter_last[26]) ^ main_crc32_inserter_data1[5]) ^ main_crc32_inserter_last[24]) ^ main_crc32_inserter_data1[7]); + main_crc32_inserter_next[8] <= ((((((((main_crc32_inserter_last[0] ^ main_crc32_inserter_last[28]) ^ main_crc32_inserter_data1[3]) ^ main_crc32_inserter_last[27]) ^ main_crc32_inserter_data1[4]) ^ main_crc32_inserter_last[25]) ^ main_crc32_inserter_data1[6]) ^ main_crc32_inserter_last[24]) ^ main_crc32_inserter_data1[7]); + main_crc32_inserter_next[9] <= ((((((((main_crc32_inserter_last[1] ^ main_crc32_inserter_last[29]) ^ main_crc32_inserter_data1[2]) ^ main_crc32_inserter_last[28]) ^ main_crc32_inserter_data1[3]) ^ main_crc32_inserter_last[26]) ^ main_crc32_inserter_data1[5]) ^ main_crc32_inserter_last[25]) ^ main_crc32_inserter_data1[6]); + main_crc32_inserter_next[10] <= ((((((((main_crc32_inserter_last[2] ^ main_crc32_inserter_last[29]) ^ main_crc32_inserter_data1[2]) ^ main_crc32_inserter_last[27]) ^ main_crc32_inserter_data1[4]) ^ main_crc32_inserter_last[26]) ^ main_crc32_inserter_data1[5]) ^ main_crc32_inserter_last[24]) ^ main_crc32_inserter_data1[7]); + main_crc32_inserter_next[11] <= ((((((((main_crc32_inserter_last[3] ^ main_crc32_inserter_last[28]) ^ main_crc32_inserter_data1[3]) ^ main_crc32_inserter_last[27]) ^ main_crc32_inserter_data1[4]) ^ main_crc32_inserter_last[25]) ^ main_crc32_inserter_data1[6]) ^ main_crc32_inserter_last[24]) ^ main_crc32_inserter_data1[7]); + main_crc32_inserter_next[12] <= ((((((((((((main_crc32_inserter_last[4] ^ main_crc32_inserter_last[29]) ^ main_crc32_inserter_data1[2]) ^ main_crc32_inserter_last[28]) ^ main_crc32_inserter_data1[3]) ^ main_crc32_inserter_last[26]) ^ main_crc32_inserter_data1[5]) ^ main_crc32_inserter_last[25]) ^ main_crc32_inserter_data1[6]) ^ main_crc32_inserter_last[24]) ^ main_crc32_inserter_last[30]) ^ main_crc32_inserter_data1[1]) ^ main_crc32_inserter_data1[7]); + main_crc32_inserter_next[13] <= ((((((((((((main_crc32_inserter_last[5] ^ main_crc32_inserter_last[30]) ^ main_crc32_inserter_data1[1]) ^ main_crc32_inserter_last[29]) ^ main_crc32_inserter_data1[2]) ^ main_crc32_inserter_last[27]) ^ main_crc32_inserter_data1[4]) ^ main_crc32_inserter_last[26]) ^ main_crc32_inserter_data1[5]) ^ main_crc32_inserter_last[25]) ^ main_crc32_inserter_last[31]) ^ main_crc32_inserter_data1[0]) ^ main_crc32_inserter_data1[6]); + main_crc32_inserter_next[14] <= ((((((((((main_crc32_inserter_last[6] ^ main_crc32_inserter_last[31]) ^ main_crc32_inserter_data1[0]) ^ main_crc32_inserter_last[30]) ^ main_crc32_inserter_data1[1]) ^ main_crc32_inserter_last[28]) ^ main_crc32_inserter_data1[3]) ^ main_crc32_inserter_last[27]) ^ main_crc32_inserter_data1[4]) ^ main_crc32_inserter_last[26]) ^ main_crc32_inserter_data1[5]); + main_crc32_inserter_next[15] <= ((((((((main_crc32_inserter_last[7] ^ main_crc32_inserter_last[31]) ^ main_crc32_inserter_data1[0]) ^ main_crc32_inserter_last[29]) ^ main_crc32_inserter_data1[2]) ^ main_crc32_inserter_last[28]) ^ main_crc32_inserter_data1[3]) ^ main_crc32_inserter_last[27]) ^ main_crc32_inserter_data1[4]); + main_crc32_inserter_next[16] <= ((((((main_crc32_inserter_last[8] ^ main_crc32_inserter_last[29]) ^ main_crc32_inserter_data1[2]) ^ main_crc32_inserter_last[28]) ^ main_crc32_inserter_data1[3]) ^ main_crc32_inserter_last[24]) ^ main_crc32_inserter_data1[7]); + main_crc32_inserter_next[17] <= ((((((main_crc32_inserter_last[9] ^ main_crc32_inserter_last[30]) ^ main_crc32_inserter_data1[1]) ^ main_crc32_inserter_last[29]) ^ main_crc32_inserter_data1[2]) ^ main_crc32_inserter_last[25]) ^ main_crc32_inserter_data1[6]); + main_crc32_inserter_next[18] <= ((((((main_crc32_inserter_last[10] ^ main_crc32_inserter_last[31]) ^ main_crc32_inserter_data1[0]) ^ main_crc32_inserter_last[30]) ^ main_crc32_inserter_data1[1]) ^ main_crc32_inserter_last[26]) ^ main_crc32_inserter_data1[5]); + main_crc32_inserter_next[19] <= ((((main_crc32_inserter_last[11] ^ main_crc32_inserter_last[31]) ^ main_crc32_inserter_data1[0]) ^ main_crc32_inserter_last[27]) ^ main_crc32_inserter_data1[4]); + main_crc32_inserter_next[20] <= ((main_crc32_inserter_last[12] ^ main_crc32_inserter_last[28]) ^ main_crc32_inserter_data1[3]); + main_crc32_inserter_next[21] <= ((main_crc32_inserter_last[13] ^ main_crc32_inserter_last[29]) ^ main_crc32_inserter_data1[2]); + main_crc32_inserter_next[22] <= ((main_crc32_inserter_last[14] ^ main_crc32_inserter_last[24]) ^ main_crc32_inserter_data1[7]); + main_crc32_inserter_next[23] <= ((((((main_crc32_inserter_last[15] ^ main_crc32_inserter_last[25]) ^ main_crc32_inserter_data1[6]) ^ main_crc32_inserter_last[24]) ^ main_crc32_inserter_last[30]) ^ main_crc32_inserter_data1[1]) ^ main_crc32_inserter_data1[7]); + main_crc32_inserter_next[24] <= ((((((main_crc32_inserter_last[16] ^ main_crc32_inserter_last[26]) ^ main_crc32_inserter_data1[5]) ^ main_crc32_inserter_last[25]) ^ main_crc32_inserter_last[31]) ^ main_crc32_inserter_data1[0]) ^ main_crc32_inserter_data1[6]); + main_crc32_inserter_next[25] <= ((((main_crc32_inserter_last[17] ^ main_crc32_inserter_last[27]) ^ main_crc32_inserter_data1[4]) ^ main_crc32_inserter_last[26]) ^ main_crc32_inserter_data1[5]); + main_crc32_inserter_next[26] <= ((((((((main_crc32_inserter_last[18] ^ main_crc32_inserter_last[28]) ^ main_crc32_inserter_data1[3]) ^ main_crc32_inserter_last[27]) ^ main_crc32_inserter_data1[4]) ^ main_crc32_inserter_last[24]) ^ main_crc32_inserter_last[30]) ^ main_crc32_inserter_data1[1]) ^ main_crc32_inserter_data1[7]); + main_crc32_inserter_next[27] <= ((((((((main_crc32_inserter_last[19] ^ main_crc32_inserter_last[29]) ^ main_crc32_inserter_data1[2]) ^ main_crc32_inserter_last[28]) ^ main_crc32_inserter_data1[3]) ^ main_crc32_inserter_last[25]) ^ main_crc32_inserter_last[31]) ^ main_crc32_inserter_data1[0]) ^ main_crc32_inserter_data1[6]); + main_crc32_inserter_next[28] <= ((((((main_crc32_inserter_last[20] ^ main_crc32_inserter_last[30]) ^ main_crc32_inserter_data1[1]) ^ main_crc32_inserter_last[29]) ^ main_crc32_inserter_data1[2]) ^ main_crc32_inserter_last[26]) ^ main_crc32_inserter_data1[5]); + main_crc32_inserter_next[29] <= ((((((main_crc32_inserter_last[21] ^ main_crc32_inserter_last[31]) ^ main_crc32_inserter_data1[0]) ^ main_crc32_inserter_last[30]) ^ main_crc32_inserter_data1[1]) ^ main_crc32_inserter_last[27]) ^ main_crc32_inserter_data1[4]); + main_crc32_inserter_next[30] <= ((((main_crc32_inserter_last[22] ^ main_crc32_inserter_last[31]) ^ main_crc32_inserter_data1[0]) ^ main_crc32_inserter_last[28]) ^ main_crc32_inserter_data1[3]); + main_crc32_inserter_next[31] <= ((main_crc32_inserter_last[23] ^ main_crc32_inserter_last[29]) ^ main_crc32_inserter_data1[2]); +end +always @(*) begin + main_crc32_inserter_source_valid <= 1'd0; + main_crc32_inserter_source_first <= 1'd0; + main_crc32_inserter_source_last <= 1'd0; + main_crc32_inserter_source_payload_data <= 8'd0; + builder_liteethmaccrc32inserter_next_state <= 2'd0; + main_crc32_inserter_source_payload_last_be <= 1'd0; + main_crc32_inserter_source_payload_error <= 1'd0; + main_crc32_inserter_data0 <= 8'd0; + main_crc32_inserter_is_ongoing0 <= 1'd0; + main_crc32_inserter_sink_ready <= 1'd0; + main_crc32_inserter_is_ongoing1 <= 1'd0; + main_crc32_inserter_ce <= 1'd0; + main_crc32_inserter_reset <= 1'd0; + builder_liteethmaccrc32inserter_next_state <= builder_liteethmaccrc32inserter_state; + case (builder_liteethmaccrc32inserter_state) + 1'd1: begin + main_crc32_inserter_ce <= (main_crc32_inserter_sink_valid & main_crc32_inserter_source_ready); + main_crc32_inserter_data0 <= main_crc32_inserter_sink_payload_data; + main_crc32_inserter_source_valid <= main_crc32_inserter_sink_valid; + main_crc32_inserter_sink_ready <= main_crc32_inserter_source_ready; + main_crc32_inserter_source_first <= main_crc32_inserter_sink_first; + main_crc32_inserter_source_last <= main_crc32_inserter_sink_last; + main_crc32_inserter_source_payload_data <= main_crc32_inserter_sink_payload_data; + main_crc32_inserter_source_payload_last_be <= main_crc32_inserter_sink_payload_last_be; + main_crc32_inserter_source_payload_error <= main_crc32_inserter_sink_payload_error; + main_crc32_inserter_source_last <= 1'd0; + if (((main_crc32_inserter_sink_valid & main_crc32_inserter_sink_last) & main_crc32_inserter_source_ready)) begin + builder_liteethmaccrc32inserter_next_state <= 2'd2; + end + end + 2'd2: begin + main_crc32_inserter_source_valid <= 1'd1; + case (main_crc32_inserter_cnt) + 1'd0: begin + main_crc32_inserter_source_payload_data <= main_crc32_inserter_value[31:24]; + end + 1'd1: begin + main_crc32_inserter_source_payload_data <= main_crc32_inserter_value[23:16]; + end + 2'd2: begin + main_crc32_inserter_source_payload_data <= main_crc32_inserter_value[15:8]; + end + default: begin + main_crc32_inserter_source_payload_data <= main_crc32_inserter_value[7:0]; + end + endcase + if (main_crc32_inserter_cnt_done) begin + main_crc32_inserter_source_last <= 1'd1; + if (main_crc32_inserter_source_ready) begin + builder_liteethmaccrc32inserter_next_state <= 1'd0; + end + end + main_crc32_inserter_is_ongoing1 <= 1'd1; + end + default: begin + main_crc32_inserter_reset <= 1'd1; + main_crc32_inserter_sink_ready <= 1'd1; + if (main_crc32_inserter_sink_valid) begin + main_crc32_inserter_sink_ready <= 1'd0; + builder_liteethmaccrc32inserter_next_state <= 1'd1; + end + main_crc32_inserter_is_ongoing0 <= 1'd1; + end + endcase +end +assign main_crc32_checker_fifo_full = (main_crc32_checker_syncfifo_level == 3'd4); +assign main_crc32_checker_fifo_in = (main_crc32_checker_sink_sink_valid & ((~main_crc32_checker_fifo_full) | main_crc32_checker_fifo_out)); +assign main_crc32_checker_fifo_out = (main_crc32_checker_source_source_valid & main_crc32_checker_source_source_ready); +assign main_crc32_checker_syncfifo_sink_first = main_crc32_checker_sink_sink_first; +assign main_crc32_checker_syncfifo_sink_last = main_crc32_checker_sink_sink_last; +assign main_crc32_checker_syncfifo_sink_payload_data = main_crc32_checker_sink_sink_payload_data; +assign main_crc32_checker_syncfifo_sink_payload_last_be = main_crc32_checker_sink_sink_payload_last_be; +assign main_crc32_checker_syncfifo_sink_payload_error = main_crc32_checker_sink_sink_payload_error; +always @(*) begin + main_crc32_checker_syncfifo_sink_valid <= 1'd0; + main_crc32_checker_syncfifo_sink_valid <= main_crc32_checker_sink_sink_valid; + main_crc32_checker_syncfifo_sink_valid <= main_crc32_checker_fifo_in; +end +always @(*) begin + main_crc32_checker_sink_sink_ready <= 1'd0; + main_crc32_checker_sink_sink_ready <= main_crc32_checker_syncfifo_sink_ready; + main_crc32_checker_sink_sink_ready <= main_crc32_checker_fifo_in; +end +assign main_crc32_checker_source_source_valid = (main_crc32_checker_sink_sink_valid & main_crc32_checker_fifo_full); +assign main_crc32_checker_source_source_last = main_crc32_checker_sink_sink_last; +assign main_crc32_checker_syncfifo_source_ready = main_crc32_checker_fifo_out; +assign main_crc32_checker_source_source_payload_data = main_crc32_checker_syncfifo_source_payload_data; +assign main_crc32_checker_source_source_payload_last_be = main_crc32_checker_syncfifo_source_payload_last_be; +always @(*) begin + main_crc32_checker_source_source_payload_error <= 1'd0; + main_crc32_checker_source_source_payload_error <= main_crc32_checker_syncfifo_source_payload_error; + main_crc32_checker_source_source_payload_error <= (main_crc32_checker_sink_sink_payload_error | main_crc32_checker_crc_error); +end +assign main_crc32_checker_error = ((main_crc32_checker_source_source_valid & main_crc32_checker_source_source_last) & main_crc32_checker_crc_error); +assign main_crc32_checker_crc_data0 = main_crc32_checker_sink_sink_payload_data; +assign main_crc32_checker_crc_data1 = main_crc32_checker_crc_data0; +assign main_crc32_checker_crc_last = main_crc32_checker_crc_reg; +assign main_crc32_checker_crc_value = (~{main_crc32_checker_crc_reg[0], main_crc32_checker_crc_reg[1], main_crc32_checker_crc_reg[2], main_crc32_checker_crc_reg[3], main_crc32_checker_crc_reg[4], main_crc32_checker_crc_reg[5], main_crc32_checker_crc_reg[6], main_crc32_checker_crc_reg[7], main_crc32_checker_crc_reg[8], main_crc32_checker_crc_reg[9], main_crc32_checker_crc_reg[10], main_crc32_checker_crc_reg[11], main_crc32_checker_crc_reg[12], main_crc32_checker_crc_reg[13], main_crc32_checker_crc_reg[14], main_crc32_checker_crc_reg[15], main_crc32_checker_crc_reg[16], main_crc32_checker_crc_reg[17], main_crc32_checker_crc_reg[18], main_crc32_checker_crc_reg[19], main_crc32_checker_crc_reg[20], main_crc32_checker_crc_reg[21], main_crc32_checker_crc_reg[22], main_crc32_checker_crc_reg[23], main_crc32_checker_crc_reg[24], main_crc32_checker_crc_reg[25], main_crc32_checker_crc_reg[26], main_crc32_checker_crc_reg[27], main_crc32_checker_crc_reg[28], main_crc32_checker_crc_reg[29], main_crc32_checker_crc_reg[30], main_crc32_checker_crc_reg[31]}); +assign main_crc32_checker_crc_error = (main_crc32_checker_crc_next != 32'd3338984827); +always @(*) begin + main_crc32_checker_crc_next <= 32'd0; + main_crc32_checker_crc_next[0] <= (((main_crc32_checker_crc_last[24] ^ main_crc32_checker_crc_last[30]) ^ main_crc32_checker_crc_data1[1]) ^ main_crc32_checker_crc_data1[7]); + main_crc32_checker_crc_next[1] <= (((((((main_crc32_checker_crc_last[25] ^ main_crc32_checker_crc_last[31]) ^ main_crc32_checker_crc_data1[0]) ^ main_crc32_checker_crc_data1[6]) ^ main_crc32_checker_crc_last[24]) ^ main_crc32_checker_crc_last[30]) ^ main_crc32_checker_crc_data1[1]) ^ main_crc32_checker_crc_data1[7]); + main_crc32_checker_crc_next[2] <= (((((((((main_crc32_checker_crc_last[26] ^ main_crc32_checker_crc_data1[5]) ^ main_crc32_checker_crc_last[25]) ^ main_crc32_checker_crc_last[31]) ^ main_crc32_checker_crc_data1[0]) ^ main_crc32_checker_crc_data1[6]) ^ main_crc32_checker_crc_last[24]) ^ main_crc32_checker_crc_last[30]) ^ main_crc32_checker_crc_data1[1]) ^ main_crc32_checker_crc_data1[7]); + main_crc32_checker_crc_next[3] <= (((((((main_crc32_checker_crc_last[27] ^ main_crc32_checker_crc_data1[4]) ^ main_crc32_checker_crc_last[26]) ^ main_crc32_checker_crc_data1[5]) ^ main_crc32_checker_crc_last[25]) ^ main_crc32_checker_crc_last[31]) ^ main_crc32_checker_crc_data1[0]) ^ main_crc32_checker_crc_data1[6]); + main_crc32_checker_crc_next[4] <= (((((((((main_crc32_checker_crc_last[28] ^ main_crc32_checker_crc_data1[3]) ^ main_crc32_checker_crc_last[27]) ^ main_crc32_checker_crc_data1[4]) ^ main_crc32_checker_crc_last[26]) ^ main_crc32_checker_crc_data1[5]) ^ main_crc32_checker_crc_last[24]) ^ main_crc32_checker_crc_last[30]) ^ main_crc32_checker_crc_data1[1]) ^ main_crc32_checker_crc_data1[7]); + main_crc32_checker_crc_next[5] <= (((((((((((((main_crc32_checker_crc_last[29] ^ main_crc32_checker_crc_data1[2]) ^ main_crc32_checker_crc_last[28]) ^ main_crc32_checker_crc_data1[3]) ^ main_crc32_checker_crc_last[27]) ^ main_crc32_checker_crc_data1[4]) ^ main_crc32_checker_crc_last[25]) ^ main_crc32_checker_crc_last[31]) ^ main_crc32_checker_crc_data1[0]) ^ main_crc32_checker_crc_data1[6]) ^ main_crc32_checker_crc_last[24]) ^ main_crc32_checker_crc_last[30]) ^ main_crc32_checker_crc_data1[1]) ^ main_crc32_checker_crc_data1[7]); + main_crc32_checker_crc_next[6] <= (((((((((((main_crc32_checker_crc_last[30] ^ main_crc32_checker_crc_data1[1]) ^ main_crc32_checker_crc_last[29]) ^ main_crc32_checker_crc_data1[2]) ^ main_crc32_checker_crc_last[28]) ^ main_crc32_checker_crc_data1[3]) ^ main_crc32_checker_crc_last[26]) ^ main_crc32_checker_crc_data1[5]) ^ main_crc32_checker_crc_last[25]) ^ main_crc32_checker_crc_last[31]) ^ main_crc32_checker_crc_data1[0]) ^ main_crc32_checker_crc_data1[6]); + main_crc32_checker_crc_next[7] <= (((((((((main_crc32_checker_crc_last[31] ^ main_crc32_checker_crc_data1[0]) ^ main_crc32_checker_crc_last[29]) ^ main_crc32_checker_crc_data1[2]) ^ main_crc32_checker_crc_last[27]) ^ main_crc32_checker_crc_data1[4]) ^ main_crc32_checker_crc_last[26]) ^ main_crc32_checker_crc_data1[5]) ^ main_crc32_checker_crc_last[24]) ^ main_crc32_checker_crc_data1[7]); + main_crc32_checker_crc_next[8] <= ((((((((main_crc32_checker_crc_last[0] ^ main_crc32_checker_crc_last[28]) ^ main_crc32_checker_crc_data1[3]) ^ main_crc32_checker_crc_last[27]) ^ main_crc32_checker_crc_data1[4]) ^ main_crc32_checker_crc_last[25]) ^ main_crc32_checker_crc_data1[6]) ^ main_crc32_checker_crc_last[24]) ^ main_crc32_checker_crc_data1[7]); + main_crc32_checker_crc_next[9] <= ((((((((main_crc32_checker_crc_last[1] ^ main_crc32_checker_crc_last[29]) ^ main_crc32_checker_crc_data1[2]) ^ main_crc32_checker_crc_last[28]) ^ main_crc32_checker_crc_data1[3]) ^ main_crc32_checker_crc_last[26]) ^ main_crc32_checker_crc_data1[5]) ^ main_crc32_checker_crc_last[25]) ^ main_crc32_checker_crc_data1[6]); + main_crc32_checker_crc_next[10] <= ((((((((main_crc32_checker_crc_last[2] ^ main_crc32_checker_crc_last[29]) ^ main_crc32_checker_crc_data1[2]) ^ main_crc32_checker_crc_last[27]) ^ main_crc32_checker_crc_data1[4]) ^ main_crc32_checker_crc_last[26]) ^ main_crc32_checker_crc_data1[5]) ^ main_crc32_checker_crc_last[24]) ^ main_crc32_checker_crc_data1[7]); + main_crc32_checker_crc_next[11] <= ((((((((main_crc32_checker_crc_last[3] ^ main_crc32_checker_crc_last[28]) ^ main_crc32_checker_crc_data1[3]) ^ main_crc32_checker_crc_last[27]) ^ main_crc32_checker_crc_data1[4]) ^ main_crc32_checker_crc_last[25]) ^ main_crc32_checker_crc_data1[6]) ^ main_crc32_checker_crc_last[24]) ^ main_crc32_checker_crc_data1[7]); + main_crc32_checker_crc_next[12] <= ((((((((((((main_crc32_checker_crc_last[4] ^ main_crc32_checker_crc_last[29]) ^ main_crc32_checker_crc_data1[2]) ^ main_crc32_checker_crc_last[28]) ^ main_crc32_checker_crc_data1[3]) ^ main_crc32_checker_crc_last[26]) ^ main_crc32_checker_crc_data1[5]) ^ main_crc32_checker_crc_last[25]) ^ main_crc32_checker_crc_data1[6]) ^ main_crc32_checker_crc_last[24]) ^ main_crc32_checker_crc_last[30]) ^ main_crc32_checker_crc_data1[1]) ^ main_crc32_checker_crc_data1[7]); + main_crc32_checker_crc_next[13] <= ((((((((((((main_crc32_checker_crc_last[5] ^ main_crc32_checker_crc_last[30]) ^ main_crc32_checker_crc_data1[1]) ^ main_crc32_checker_crc_last[29]) ^ main_crc32_checker_crc_data1[2]) ^ main_crc32_checker_crc_last[27]) ^ main_crc32_checker_crc_data1[4]) ^ main_crc32_checker_crc_last[26]) ^ main_crc32_checker_crc_data1[5]) ^ main_crc32_checker_crc_last[25]) ^ main_crc32_checker_crc_last[31]) ^ main_crc32_checker_crc_data1[0]) ^ main_crc32_checker_crc_data1[6]); + main_crc32_checker_crc_next[14] <= ((((((((((main_crc32_checker_crc_last[6] ^ main_crc32_checker_crc_last[31]) ^ main_crc32_checker_crc_data1[0]) ^ main_crc32_checker_crc_last[30]) ^ main_crc32_checker_crc_data1[1]) ^ main_crc32_checker_crc_last[28]) ^ main_crc32_checker_crc_data1[3]) ^ main_crc32_checker_crc_last[27]) ^ main_crc32_checker_crc_data1[4]) ^ main_crc32_checker_crc_last[26]) ^ main_crc32_checker_crc_data1[5]); + main_crc32_checker_crc_next[15] <= ((((((((main_crc32_checker_crc_last[7] ^ main_crc32_checker_crc_last[31]) ^ main_crc32_checker_crc_data1[0]) ^ main_crc32_checker_crc_last[29]) ^ main_crc32_checker_crc_data1[2]) ^ main_crc32_checker_crc_last[28]) ^ main_crc32_checker_crc_data1[3]) ^ main_crc32_checker_crc_last[27]) ^ main_crc32_checker_crc_data1[4]); + main_crc32_checker_crc_next[16] <= ((((((main_crc32_checker_crc_last[8] ^ main_crc32_checker_crc_last[29]) ^ main_crc32_checker_crc_data1[2]) ^ main_crc32_checker_crc_last[28]) ^ main_crc32_checker_crc_data1[3]) ^ main_crc32_checker_crc_last[24]) ^ main_crc32_checker_crc_data1[7]); + main_crc32_checker_crc_next[17] <= ((((((main_crc32_checker_crc_last[9] ^ main_crc32_checker_crc_last[30]) ^ main_crc32_checker_crc_data1[1]) ^ main_crc32_checker_crc_last[29]) ^ main_crc32_checker_crc_data1[2]) ^ main_crc32_checker_crc_last[25]) ^ main_crc32_checker_crc_data1[6]); + main_crc32_checker_crc_next[18] <= ((((((main_crc32_checker_crc_last[10] ^ main_crc32_checker_crc_last[31]) ^ main_crc32_checker_crc_data1[0]) ^ main_crc32_checker_crc_last[30]) ^ main_crc32_checker_crc_data1[1]) ^ main_crc32_checker_crc_last[26]) ^ main_crc32_checker_crc_data1[5]); + main_crc32_checker_crc_next[19] <= ((((main_crc32_checker_crc_last[11] ^ main_crc32_checker_crc_last[31]) ^ main_crc32_checker_crc_data1[0]) ^ main_crc32_checker_crc_last[27]) ^ main_crc32_checker_crc_data1[4]); + main_crc32_checker_crc_next[20] <= ((main_crc32_checker_crc_last[12] ^ main_crc32_checker_crc_last[28]) ^ main_crc32_checker_crc_data1[3]); + main_crc32_checker_crc_next[21] <= ((main_crc32_checker_crc_last[13] ^ main_crc32_checker_crc_last[29]) ^ main_crc32_checker_crc_data1[2]); + main_crc32_checker_crc_next[22] <= ((main_crc32_checker_crc_last[14] ^ main_crc32_checker_crc_last[24]) ^ main_crc32_checker_crc_data1[7]); + main_crc32_checker_crc_next[23] <= ((((((main_crc32_checker_crc_last[15] ^ main_crc32_checker_crc_last[25]) ^ main_crc32_checker_crc_data1[6]) ^ main_crc32_checker_crc_last[24]) ^ main_crc32_checker_crc_last[30]) ^ main_crc32_checker_crc_data1[1]) ^ main_crc32_checker_crc_data1[7]); + main_crc32_checker_crc_next[24] <= ((((((main_crc32_checker_crc_last[16] ^ main_crc32_checker_crc_last[26]) ^ main_crc32_checker_crc_data1[5]) ^ main_crc32_checker_crc_last[25]) ^ main_crc32_checker_crc_last[31]) ^ main_crc32_checker_crc_data1[0]) ^ main_crc32_checker_crc_data1[6]); + main_crc32_checker_crc_next[25] <= ((((main_crc32_checker_crc_last[17] ^ main_crc32_checker_crc_last[27]) ^ main_crc32_checker_crc_data1[4]) ^ main_crc32_checker_crc_last[26]) ^ main_crc32_checker_crc_data1[5]); + main_crc32_checker_crc_next[26] <= ((((((((main_crc32_checker_crc_last[18] ^ main_crc32_checker_crc_last[28]) ^ main_crc32_checker_crc_data1[3]) ^ main_crc32_checker_crc_last[27]) ^ main_crc32_checker_crc_data1[4]) ^ main_crc32_checker_crc_last[24]) ^ main_crc32_checker_crc_last[30]) ^ main_crc32_checker_crc_data1[1]) ^ main_crc32_checker_crc_data1[7]); + main_crc32_checker_crc_next[27] <= ((((((((main_crc32_checker_crc_last[19] ^ main_crc32_checker_crc_last[29]) ^ main_crc32_checker_crc_data1[2]) ^ main_crc32_checker_crc_last[28]) ^ main_crc32_checker_crc_data1[3]) ^ main_crc32_checker_crc_last[25]) ^ main_crc32_checker_crc_last[31]) ^ main_crc32_checker_crc_data1[0]) ^ main_crc32_checker_crc_data1[6]); + main_crc32_checker_crc_next[28] <= ((((((main_crc32_checker_crc_last[20] ^ main_crc32_checker_crc_last[30]) ^ main_crc32_checker_crc_data1[1]) ^ main_crc32_checker_crc_last[29]) ^ main_crc32_checker_crc_data1[2]) ^ main_crc32_checker_crc_last[26]) ^ main_crc32_checker_crc_data1[5]); + main_crc32_checker_crc_next[29] <= ((((((main_crc32_checker_crc_last[21] ^ main_crc32_checker_crc_last[31]) ^ main_crc32_checker_crc_data1[0]) ^ main_crc32_checker_crc_last[30]) ^ main_crc32_checker_crc_data1[1]) ^ main_crc32_checker_crc_last[27]) ^ main_crc32_checker_crc_data1[4]); + main_crc32_checker_crc_next[30] <= ((((main_crc32_checker_crc_last[22] ^ main_crc32_checker_crc_last[31]) ^ main_crc32_checker_crc_data1[0]) ^ main_crc32_checker_crc_last[28]) ^ main_crc32_checker_crc_data1[3]); + main_crc32_checker_crc_next[31] <= ((main_crc32_checker_crc_last[23] ^ main_crc32_checker_crc_last[29]) ^ main_crc32_checker_crc_data1[2]); +end +assign main_crc32_checker_syncfifo_syncfifo_din = {main_crc32_checker_syncfifo_fifo_in_last, main_crc32_checker_syncfifo_fifo_in_first, main_crc32_checker_syncfifo_fifo_in_payload_error, main_crc32_checker_syncfifo_fifo_in_payload_last_be, main_crc32_checker_syncfifo_fifo_in_payload_data}; +assign {main_crc32_checker_syncfifo_fifo_out_last, main_crc32_checker_syncfifo_fifo_out_first, main_crc32_checker_syncfifo_fifo_out_payload_error, main_crc32_checker_syncfifo_fifo_out_payload_last_be, main_crc32_checker_syncfifo_fifo_out_payload_data} = main_crc32_checker_syncfifo_syncfifo_dout; +assign main_crc32_checker_syncfifo_sink_ready = main_crc32_checker_syncfifo_syncfifo_writable; +assign main_crc32_checker_syncfifo_syncfifo_we = main_crc32_checker_syncfifo_sink_valid; +assign main_crc32_checker_syncfifo_fifo_in_first = main_crc32_checker_syncfifo_sink_first; +assign main_crc32_checker_syncfifo_fifo_in_last = main_crc32_checker_syncfifo_sink_last; +assign main_crc32_checker_syncfifo_fifo_in_payload_data = main_crc32_checker_syncfifo_sink_payload_data; +assign main_crc32_checker_syncfifo_fifo_in_payload_last_be = main_crc32_checker_syncfifo_sink_payload_last_be; +assign main_crc32_checker_syncfifo_fifo_in_payload_error = main_crc32_checker_syncfifo_sink_payload_error; +assign main_crc32_checker_syncfifo_source_valid = main_crc32_checker_syncfifo_syncfifo_readable; +assign main_crc32_checker_syncfifo_source_first = main_crc32_checker_syncfifo_fifo_out_first; +assign main_crc32_checker_syncfifo_source_last = main_crc32_checker_syncfifo_fifo_out_last; +assign main_crc32_checker_syncfifo_source_payload_data = main_crc32_checker_syncfifo_fifo_out_payload_data; +assign main_crc32_checker_syncfifo_source_payload_last_be = main_crc32_checker_syncfifo_fifo_out_payload_last_be; +assign main_crc32_checker_syncfifo_source_payload_error = main_crc32_checker_syncfifo_fifo_out_payload_error; +assign main_crc32_checker_syncfifo_syncfifo_re = main_crc32_checker_syncfifo_source_ready; +always @(*) begin + main_crc32_checker_syncfifo_wrport_adr <= 3'd0; + if (main_crc32_checker_syncfifo_replace) begin + main_crc32_checker_syncfifo_wrport_adr <= (main_crc32_checker_syncfifo_produce - 1'd1); + end else begin + main_crc32_checker_syncfifo_wrport_adr <= main_crc32_checker_syncfifo_produce; + end +end +assign main_crc32_checker_syncfifo_wrport_dat_w = main_crc32_checker_syncfifo_syncfifo_din; +assign main_crc32_checker_syncfifo_wrport_we = (main_crc32_checker_syncfifo_syncfifo_we & (main_crc32_checker_syncfifo_syncfifo_writable | main_crc32_checker_syncfifo_replace)); +assign main_crc32_checker_syncfifo_do_read = (main_crc32_checker_syncfifo_syncfifo_readable & main_crc32_checker_syncfifo_syncfifo_re); +assign main_crc32_checker_syncfifo_rdport_adr = main_crc32_checker_syncfifo_consume; +assign main_crc32_checker_syncfifo_syncfifo_dout = main_crc32_checker_syncfifo_rdport_dat_r; +assign main_crc32_checker_syncfifo_syncfifo_writable = (main_crc32_checker_syncfifo_level != 3'd5); +assign main_crc32_checker_syncfifo_syncfifo_readable = (main_crc32_checker_syncfifo_level != 1'd0); +always @(*) begin + main_crc32_checker_fifo_reset <= 1'd0; + main_crc32_checker_crc_ce <= 1'd0; + main_crc32_checker_crc_reset <= 1'd0; + builder_liteethmaccrc32checker_next_state <= 2'd0; + builder_liteethmaccrc32checker_next_state <= builder_liteethmaccrc32checker_state; + case (builder_liteethmaccrc32checker_state) + 1'd1: begin + if ((main_crc32_checker_sink_sink_valid & main_crc32_checker_sink_sink_ready)) begin + main_crc32_checker_crc_ce <= 1'd1; + builder_liteethmaccrc32checker_next_state <= 2'd2; + end + end + 2'd2: begin + if ((main_crc32_checker_sink_sink_valid & main_crc32_checker_sink_sink_ready)) begin + main_crc32_checker_crc_ce <= 1'd1; + if (main_crc32_checker_sink_sink_last) begin + builder_liteethmaccrc32checker_next_state <= 1'd0; + end + end + end + default: begin + main_crc32_checker_crc_reset <= 1'd1; + main_crc32_checker_fifo_reset <= 1'd1; + builder_liteethmaccrc32checker_next_state <= 1'd1; + end + endcase +end +assign main_ps_preamble_error_o = (main_ps_preamble_error_toggle_o ^ main_ps_preamble_error_toggle_o_r); +assign main_ps_crc_error_o = (main_ps_crc_error_toggle_o ^ main_ps_crc_error_toggle_o_r); +assign main_padding_inserter_counter_done = (main_padding_inserter_counter >= 6'd59); +always @(*) begin + main_padding_inserter_source_valid <= 1'd0; + main_padding_inserter_source_first <= 1'd0; + main_padding_inserter_source_last <= 1'd0; + main_padding_inserter_source_payload_data <= 8'd0; + builder_liteethmacpaddinginserter_next_state <= 1'd0; + main_padding_inserter_source_payload_last_be <= 1'd0; + main_padding_inserter_source_payload_error <= 1'd0; + main_padding_inserter_counter_reset <= 1'd0; + main_padding_inserter_sink_ready <= 1'd0; + main_padding_inserter_counter_ce <= 1'd0; + builder_liteethmacpaddinginserter_next_state <= builder_liteethmacpaddinginserter_state; + case (builder_liteethmacpaddinginserter_state) + 1'd1: begin + main_padding_inserter_source_valid <= 1'd1; + main_padding_inserter_source_last <= main_padding_inserter_counter_done; + main_padding_inserter_source_payload_data <= 1'd0; + if ((main_padding_inserter_source_valid & main_padding_inserter_source_ready)) begin + main_padding_inserter_counter_ce <= 1'd1; + if (main_padding_inserter_counter_done) begin + main_padding_inserter_counter_reset <= 1'd1; + builder_liteethmacpaddinginserter_next_state <= 1'd0; + end + end + end + default: begin + main_padding_inserter_source_valid <= main_padding_inserter_sink_valid; + main_padding_inserter_sink_ready <= main_padding_inserter_source_ready; + main_padding_inserter_source_first <= main_padding_inserter_sink_first; + main_padding_inserter_source_last <= main_padding_inserter_sink_last; + main_padding_inserter_source_payload_data <= main_padding_inserter_sink_payload_data; + main_padding_inserter_source_payload_last_be <= main_padding_inserter_sink_payload_last_be; + main_padding_inserter_source_payload_error <= main_padding_inserter_sink_payload_error; + if ((main_padding_inserter_source_valid & main_padding_inserter_source_ready)) begin + main_padding_inserter_counter_ce <= 1'd1; + if (main_padding_inserter_sink_last) begin + if ((~main_padding_inserter_counter_done)) begin + main_padding_inserter_source_last <= 1'd0; + builder_liteethmacpaddinginserter_next_state <= 1'd1; + end else begin + main_padding_inserter_counter_reset <= 1'd1; + end + end + end + end + endcase +end +assign main_padding_checker_source_valid = main_padding_checker_sink_valid; +assign main_padding_checker_sink_ready = main_padding_checker_source_ready; +assign main_padding_checker_source_first = main_padding_checker_sink_first; +assign main_padding_checker_source_last = main_padding_checker_sink_last; +assign main_padding_checker_source_payload_data = main_padding_checker_sink_payload_data; +assign main_padding_checker_source_payload_last_be = main_padding_checker_sink_payload_last_be; +assign main_padding_checker_source_payload_error = main_padding_checker_sink_payload_error; +assign main_tx_last_be_source_valid = (main_tx_last_be_sink_valid & main_tx_last_be_ongoing); +assign main_tx_last_be_source_last = main_tx_last_be_sink_payload_last_be; +assign main_tx_last_be_source_payload_data = main_tx_last_be_sink_payload_data; +assign main_tx_last_be_sink_ready = main_tx_last_be_source_ready; +assign main_rx_last_be_source_valid = main_rx_last_be_sink_valid; +assign main_rx_last_be_sink_ready = main_rx_last_be_source_ready; +assign main_rx_last_be_source_first = main_rx_last_be_sink_first; +assign main_rx_last_be_source_last = main_rx_last_be_sink_last; +assign main_rx_last_be_source_payload_data = main_rx_last_be_sink_payload_data; +assign main_rx_last_be_source_payload_error = main_rx_last_be_sink_payload_error; +always @(*) begin + main_rx_last_be_source_payload_last_be <= 1'd0; + main_rx_last_be_source_payload_last_be <= main_rx_last_be_sink_payload_last_be; + main_rx_last_be_source_payload_last_be <= main_rx_last_be_sink_last; +end +assign main_tx_converter_converter_sink_valid = main_tx_converter_sink_valid; +assign main_tx_converter_converter_sink_first = main_tx_converter_sink_first; +assign main_tx_converter_converter_sink_last = main_tx_converter_sink_last; +assign main_tx_converter_sink_ready = main_tx_converter_converter_sink_ready; +always @(*) begin + main_tx_converter_converter_sink_payload_data <= 40'd0; + main_tx_converter_converter_sink_payload_data[7:0] <= main_tx_converter_sink_payload_data[7:0]; + main_tx_converter_converter_sink_payload_data[8] <= main_tx_converter_sink_payload_last_be[0]; + main_tx_converter_converter_sink_payload_data[9] <= main_tx_converter_sink_payload_error[0]; + main_tx_converter_converter_sink_payload_data[17:10] <= main_tx_converter_sink_payload_data[15:8]; + main_tx_converter_converter_sink_payload_data[18] <= main_tx_converter_sink_payload_last_be[1]; + main_tx_converter_converter_sink_payload_data[19] <= main_tx_converter_sink_payload_error[1]; + main_tx_converter_converter_sink_payload_data[27:20] <= main_tx_converter_sink_payload_data[23:16]; + main_tx_converter_converter_sink_payload_data[28] <= main_tx_converter_sink_payload_last_be[2]; + main_tx_converter_converter_sink_payload_data[29] <= main_tx_converter_sink_payload_error[2]; + main_tx_converter_converter_sink_payload_data[37:30] <= main_tx_converter_sink_payload_data[31:24]; + main_tx_converter_converter_sink_payload_data[38] <= main_tx_converter_sink_payload_last_be[3]; + main_tx_converter_converter_sink_payload_data[39] <= main_tx_converter_sink_payload_error[3]; +end +assign main_tx_converter_source_valid = main_tx_converter_source_source_valid; +assign main_tx_converter_source_first = main_tx_converter_source_source_first; +assign main_tx_converter_source_last = main_tx_converter_source_source_last; +assign main_tx_converter_source_source_ready = main_tx_converter_source_ready; +assign {main_tx_converter_source_payload_error, main_tx_converter_source_payload_last_be, main_tx_converter_source_payload_data} = main_tx_converter_source_source_payload_data; +assign main_tx_converter_source_source_valid = main_tx_converter_converter_source_valid; +assign main_tx_converter_converter_source_ready = main_tx_converter_source_source_ready; +assign main_tx_converter_source_source_first = main_tx_converter_converter_source_first; +assign main_tx_converter_source_source_last = main_tx_converter_converter_source_last; +assign main_tx_converter_source_source_payload_data = main_tx_converter_converter_source_payload_data; +assign main_tx_converter_converter_first = (main_tx_converter_converter_mux == 1'd0); +assign main_tx_converter_converter_last = (main_tx_converter_converter_mux == 2'd3); +assign main_tx_converter_converter_source_valid = main_tx_converter_converter_sink_valid; +assign main_tx_converter_converter_source_first = (main_tx_converter_converter_sink_first & main_tx_converter_converter_first); +assign main_tx_converter_converter_source_last = (main_tx_converter_converter_sink_last & main_tx_converter_converter_last); +assign main_tx_converter_converter_sink_ready = (main_tx_converter_converter_last & main_tx_converter_converter_source_ready); +always @(*) begin + main_tx_converter_converter_source_payload_data <= 10'd0; + case (main_tx_converter_converter_mux) + 1'd0: begin + main_tx_converter_converter_source_payload_data <= main_tx_converter_converter_sink_payload_data[9:0]; + end + 1'd1: begin + main_tx_converter_converter_source_payload_data <= main_tx_converter_converter_sink_payload_data[19:10]; + end + 2'd2: begin + main_tx_converter_converter_source_payload_data <= main_tx_converter_converter_sink_payload_data[29:20]; + end + default: begin + main_tx_converter_converter_source_payload_data <= main_tx_converter_converter_sink_payload_data[39:30]; + end + endcase +end +assign main_tx_converter_converter_source_payload_valid_token_count = main_tx_converter_converter_last; +assign main_rx_converter_converter_sink_valid = main_rx_converter_sink_valid; +assign main_rx_converter_converter_sink_first = main_rx_converter_sink_first; +assign main_rx_converter_converter_sink_last = main_rx_converter_sink_last; +assign main_rx_converter_sink_ready = main_rx_converter_converter_sink_ready; +assign main_rx_converter_converter_sink_payload_data = {main_rx_converter_sink_payload_error, main_rx_converter_sink_payload_last_be, main_rx_converter_sink_payload_data}; +assign main_rx_converter_source_valid = main_rx_converter_source_source_valid; +assign main_rx_converter_source_first = main_rx_converter_source_source_first; +assign main_rx_converter_source_last = main_rx_converter_source_source_last; +assign main_rx_converter_source_source_ready = main_rx_converter_source_ready; +always @(*) begin + main_rx_converter_source_payload_data <= 32'd0; + main_rx_converter_source_payload_data[7:0] <= main_rx_converter_source_source_payload_data[7:0]; + main_rx_converter_source_payload_data[15:8] <= main_rx_converter_source_source_payload_data[17:10]; + main_rx_converter_source_payload_data[23:16] <= main_rx_converter_source_source_payload_data[27:20]; + main_rx_converter_source_payload_data[31:24] <= main_rx_converter_source_source_payload_data[37:30]; +end +always @(*) begin + main_rx_converter_source_payload_last_be <= 4'd0; + main_rx_converter_source_payload_last_be[0] <= main_rx_converter_source_source_payload_data[8]; + main_rx_converter_source_payload_last_be[1] <= main_rx_converter_source_source_payload_data[18]; + main_rx_converter_source_payload_last_be[2] <= main_rx_converter_source_source_payload_data[28]; + main_rx_converter_source_payload_last_be[3] <= main_rx_converter_source_source_payload_data[38]; +end +always @(*) begin + main_rx_converter_source_payload_error <= 4'd0; + main_rx_converter_source_payload_error[0] <= main_rx_converter_source_source_payload_data[9]; + main_rx_converter_source_payload_error[1] <= main_rx_converter_source_source_payload_data[19]; + main_rx_converter_source_payload_error[2] <= main_rx_converter_source_source_payload_data[29]; + main_rx_converter_source_payload_error[3] <= main_rx_converter_source_source_payload_data[39]; +end +assign main_rx_converter_source_source_valid = main_rx_converter_converter_source_valid; +assign main_rx_converter_converter_source_ready = main_rx_converter_source_source_ready; +assign main_rx_converter_source_source_first = main_rx_converter_converter_source_first; +assign main_rx_converter_source_source_last = main_rx_converter_converter_source_last; +assign main_rx_converter_source_source_payload_data = main_rx_converter_converter_source_payload_data; +assign main_rx_converter_converter_sink_ready = ((~main_rx_converter_converter_strobe_all) | main_rx_converter_converter_source_ready); +assign main_rx_converter_converter_source_valid = main_rx_converter_converter_strobe_all; +assign main_rx_converter_converter_load_part = (main_rx_converter_converter_sink_valid & main_rx_converter_converter_sink_ready); +assign main_tx_cdc_asyncfifo_din = {main_tx_cdc_fifo_in_last, main_tx_cdc_fifo_in_first, main_tx_cdc_fifo_in_payload_error, main_tx_cdc_fifo_in_payload_last_be, main_tx_cdc_fifo_in_payload_data}; +assign {main_tx_cdc_fifo_out_last, main_tx_cdc_fifo_out_first, main_tx_cdc_fifo_out_payload_error, main_tx_cdc_fifo_out_payload_last_be, main_tx_cdc_fifo_out_payload_data} = main_tx_cdc_asyncfifo_dout; +assign main_tx_cdc_sink_ready = main_tx_cdc_asyncfifo_writable; +assign main_tx_cdc_asyncfifo_we = main_tx_cdc_sink_valid; +assign main_tx_cdc_fifo_in_first = main_tx_cdc_sink_first; +assign main_tx_cdc_fifo_in_last = main_tx_cdc_sink_last; +assign main_tx_cdc_fifo_in_payload_data = main_tx_cdc_sink_payload_data; +assign main_tx_cdc_fifo_in_payload_last_be = main_tx_cdc_sink_payload_last_be; +assign main_tx_cdc_fifo_in_payload_error = main_tx_cdc_sink_payload_error; +assign main_tx_cdc_source_valid = main_tx_cdc_asyncfifo_readable; +assign main_tx_cdc_source_first = main_tx_cdc_fifo_out_first; +assign main_tx_cdc_source_last = main_tx_cdc_fifo_out_last; +assign main_tx_cdc_source_payload_data = main_tx_cdc_fifo_out_payload_data; +assign main_tx_cdc_source_payload_last_be = main_tx_cdc_fifo_out_payload_last_be; +assign main_tx_cdc_source_payload_error = main_tx_cdc_fifo_out_payload_error; +assign main_tx_cdc_asyncfifo_re = main_tx_cdc_source_ready; +assign main_tx_cdc_graycounter0_ce = (main_tx_cdc_asyncfifo_writable & main_tx_cdc_asyncfifo_we); +assign main_tx_cdc_graycounter1_ce = (main_tx_cdc_asyncfifo_readable & main_tx_cdc_asyncfifo_re); +assign main_tx_cdc_asyncfifo_writable = (((main_tx_cdc_graycounter0_q[6] == main_tx_cdc_consume_wdomain[6]) | (main_tx_cdc_graycounter0_q[5] == main_tx_cdc_consume_wdomain[5])) | (main_tx_cdc_graycounter0_q[4:0] != main_tx_cdc_consume_wdomain[4:0])); +assign main_tx_cdc_asyncfifo_readable = (main_tx_cdc_graycounter1_q != main_tx_cdc_produce_rdomain); +assign main_tx_cdc_wrport_adr = main_tx_cdc_graycounter0_q_binary[5:0]; +assign main_tx_cdc_wrport_dat_w = main_tx_cdc_asyncfifo_din; +assign main_tx_cdc_wrport_we = main_tx_cdc_graycounter0_ce; +assign main_tx_cdc_rdport_adr = main_tx_cdc_graycounter1_q_next_binary[5:0]; +assign main_tx_cdc_asyncfifo_dout = main_tx_cdc_rdport_dat_r; +always @(*) begin + main_tx_cdc_graycounter0_q_next_binary <= 7'd0; + if (main_tx_cdc_graycounter0_ce) begin + main_tx_cdc_graycounter0_q_next_binary <= (main_tx_cdc_graycounter0_q_binary + 1'd1); + end else begin + main_tx_cdc_graycounter0_q_next_binary <= main_tx_cdc_graycounter0_q_binary; + end +end +assign main_tx_cdc_graycounter0_q_next = (main_tx_cdc_graycounter0_q_next_binary ^ main_tx_cdc_graycounter0_q_next_binary[6:1]); +always @(*) begin + main_tx_cdc_graycounter1_q_next_binary <= 7'd0; + if (main_tx_cdc_graycounter1_ce) begin + main_tx_cdc_graycounter1_q_next_binary <= (main_tx_cdc_graycounter1_q_binary + 1'd1); + end else begin + main_tx_cdc_graycounter1_q_next_binary <= main_tx_cdc_graycounter1_q_binary; + end +end +assign main_tx_cdc_graycounter1_q_next = (main_tx_cdc_graycounter1_q_next_binary ^ main_tx_cdc_graycounter1_q_next_binary[6:1]); +assign main_rx_cdc_asyncfifo_din = {main_rx_cdc_fifo_in_last, main_rx_cdc_fifo_in_first, main_rx_cdc_fifo_in_payload_error, main_rx_cdc_fifo_in_payload_last_be, main_rx_cdc_fifo_in_payload_data}; +assign {main_rx_cdc_fifo_out_last, main_rx_cdc_fifo_out_first, main_rx_cdc_fifo_out_payload_error, main_rx_cdc_fifo_out_payload_last_be, main_rx_cdc_fifo_out_payload_data} = main_rx_cdc_asyncfifo_dout; +assign main_rx_cdc_sink_ready = main_rx_cdc_asyncfifo_writable; +assign main_rx_cdc_asyncfifo_we = main_rx_cdc_sink_valid; +assign main_rx_cdc_fifo_in_first = main_rx_cdc_sink_first; +assign main_rx_cdc_fifo_in_last = main_rx_cdc_sink_last; +assign main_rx_cdc_fifo_in_payload_data = main_rx_cdc_sink_payload_data; +assign main_rx_cdc_fifo_in_payload_last_be = main_rx_cdc_sink_payload_last_be; +assign main_rx_cdc_fifo_in_payload_error = main_rx_cdc_sink_payload_error; +assign main_rx_cdc_source_valid = main_rx_cdc_asyncfifo_readable; +assign main_rx_cdc_source_first = main_rx_cdc_fifo_out_first; +assign main_rx_cdc_source_last = main_rx_cdc_fifo_out_last; +assign main_rx_cdc_source_payload_data = main_rx_cdc_fifo_out_payload_data; +assign main_rx_cdc_source_payload_last_be = main_rx_cdc_fifo_out_payload_last_be; +assign main_rx_cdc_source_payload_error = main_rx_cdc_fifo_out_payload_error; +assign main_rx_cdc_asyncfifo_re = main_rx_cdc_source_ready; +assign main_rx_cdc_graycounter0_ce = (main_rx_cdc_asyncfifo_writable & main_rx_cdc_asyncfifo_we); +assign main_rx_cdc_graycounter1_ce = (main_rx_cdc_asyncfifo_readable & main_rx_cdc_asyncfifo_re); +assign main_rx_cdc_asyncfifo_writable = (((main_rx_cdc_graycounter0_q[6] == main_rx_cdc_consume_wdomain[6]) | (main_rx_cdc_graycounter0_q[5] == main_rx_cdc_consume_wdomain[5])) | (main_rx_cdc_graycounter0_q[4:0] != main_rx_cdc_consume_wdomain[4:0])); +assign main_rx_cdc_asyncfifo_readable = (main_rx_cdc_graycounter1_q != main_rx_cdc_produce_rdomain); +assign main_rx_cdc_wrport_adr = main_rx_cdc_graycounter0_q_binary[5:0]; +assign main_rx_cdc_wrport_dat_w = main_rx_cdc_asyncfifo_din; +assign main_rx_cdc_wrport_we = main_rx_cdc_graycounter0_ce; +assign main_rx_cdc_rdport_adr = main_rx_cdc_graycounter1_q_next_binary[5:0]; +assign main_rx_cdc_asyncfifo_dout = main_rx_cdc_rdport_dat_r; +always @(*) begin + main_rx_cdc_graycounter0_q_next_binary <= 7'd0; + if (main_rx_cdc_graycounter0_ce) begin + main_rx_cdc_graycounter0_q_next_binary <= (main_rx_cdc_graycounter0_q_binary + 1'd1); + end else begin + main_rx_cdc_graycounter0_q_next_binary <= main_rx_cdc_graycounter0_q_binary; + end +end +assign main_rx_cdc_graycounter0_q_next = (main_rx_cdc_graycounter0_q_next_binary ^ main_rx_cdc_graycounter0_q_next_binary[6:1]); +always @(*) begin + main_rx_cdc_graycounter1_q_next_binary <= 7'd0; + if (main_rx_cdc_graycounter1_ce) begin + main_rx_cdc_graycounter1_q_next_binary <= (main_rx_cdc_graycounter1_q_binary + 1'd1); + end else begin + main_rx_cdc_graycounter1_q_next_binary <= main_rx_cdc_graycounter1_q_binary; + end +end +assign main_rx_cdc_graycounter1_q_next = (main_rx_cdc_graycounter1_q_next_binary ^ main_rx_cdc_graycounter1_q_next_binary[6:1]); +assign main_tx_converter_sink_valid = main_tx_cdc_source_valid; +assign main_tx_cdc_source_ready = main_tx_converter_sink_ready; +assign main_tx_converter_sink_first = main_tx_cdc_source_first; +assign main_tx_converter_sink_last = main_tx_cdc_source_last; +assign main_tx_converter_sink_payload_data = main_tx_cdc_source_payload_data; +assign main_tx_converter_sink_payload_last_be = main_tx_cdc_source_payload_last_be; +assign main_tx_converter_sink_payload_error = main_tx_cdc_source_payload_error; +assign main_tx_last_be_sink_valid = main_tx_converter_source_valid; +assign main_tx_converter_source_ready = main_tx_last_be_sink_ready; +assign main_tx_last_be_sink_first = main_tx_converter_source_first; +assign main_tx_last_be_sink_last = main_tx_converter_source_last; +assign main_tx_last_be_sink_payload_data = main_tx_converter_source_payload_data; +assign main_tx_last_be_sink_payload_last_be = main_tx_converter_source_payload_last_be; +assign main_tx_last_be_sink_payload_error = main_tx_converter_source_payload_error; +assign main_padding_inserter_sink_valid = main_tx_last_be_source_valid; +assign main_tx_last_be_source_ready = main_padding_inserter_sink_ready; +assign main_padding_inserter_sink_first = main_tx_last_be_source_first; +assign main_padding_inserter_sink_last = main_tx_last_be_source_last; +assign main_padding_inserter_sink_payload_data = main_tx_last_be_source_payload_data; +assign main_padding_inserter_sink_payload_last_be = main_tx_last_be_source_payload_last_be; +assign main_padding_inserter_sink_payload_error = main_tx_last_be_source_payload_error; +assign main_crc32_inserter_sink_valid = main_padding_inserter_source_valid; +assign main_padding_inserter_source_ready = main_crc32_inserter_sink_ready; +assign main_crc32_inserter_sink_first = main_padding_inserter_source_first; +assign main_crc32_inserter_sink_last = main_padding_inserter_source_last; +assign main_crc32_inserter_sink_payload_data = main_padding_inserter_source_payload_data; +assign main_crc32_inserter_sink_payload_last_be = main_padding_inserter_source_payload_last_be; +assign main_crc32_inserter_sink_payload_error = main_padding_inserter_source_payload_error; +assign main_preamble_inserter_sink_valid = main_crc32_inserter_source_valid; +assign main_crc32_inserter_source_ready = main_preamble_inserter_sink_ready; +assign main_preamble_inserter_sink_first = main_crc32_inserter_source_first; +assign main_preamble_inserter_sink_last = main_crc32_inserter_source_last; +assign main_preamble_inserter_sink_payload_data = main_crc32_inserter_source_payload_data; +assign main_preamble_inserter_sink_payload_last_be = main_crc32_inserter_source_payload_last_be; +assign main_preamble_inserter_sink_payload_error = main_crc32_inserter_source_payload_error; +assign main_tx_gap_inserter_sink_valid = main_preamble_inserter_source_valid; +assign main_preamble_inserter_source_ready = main_tx_gap_inserter_sink_ready; +assign main_tx_gap_inserter_sink_first = main_preamble_inserter_source_first; +assign main_tx_gap_inserter_sink_last = main_preamble_inserter_source_last; +assign main_tx_gap_inserter_sink_payload_data = main_preamble_inserter_source_payload_data; +assign main_tx_gap_inserter_sink_payload_last_be = main_preamble_inserter_source_payload_last_be; +assign main_tx_gap_inserter_sink_payload_error = main_preamble_inserter_source_payload_error; +assign main_maccore_ethphy_liteethphymiitx_sink_sink_valid = main_tx_gap_inserter_source_valid; +assign main_tx_gap_inserter_source_ready = main_maccore_ethphy_liteethphymiitx_sink_sink_ready; +assign main_maccore_ethphy_liteethphymiitx_sink_sink_first = main_tx_gap_inserter_source_first; +assign main_maccore_ethphy_liteethphymiitx_sink_sink_last = main_tx_gap_inserter_source_last; +assign main_maccore_ethphy_liteethphymiitx_sink_sink_payload_data = main_tx_gap_inserter_source_payload_data; +assign main_maccore_ethphy_liteethphymiitx_sink_sink_payload_last_be = main_tx_gap_inserter_source_payload_last_be; +assign main_maccore_ethphy_liteethphymiitx_sink_sink_payload_error = main_tx_gap_inserter_source_payload_error; +assign main_preamble_checker_sink_valid = main_maccore_ethphy_liteethphymiirx_source_source_valid; +assign main_maccore_ethphy_liteethphymiirx_source_source_ready = main_preamble_checker_sink_ready; +assign main_preamble_checker_sink_first = main_maccore_ethphy_liteethphymiirx_source_source_first; +assign main_preamble_checker_sink_last = main_maccore_ethphy_liteethphymiirx_source_source_last; +assign main_preamble_checker_sink_payload_data = main_maccore_ethphy_liteethphymiirx_source_source_payload_data; +assign main_preamble_checker_sink_payload_last_be = main_maccore_ethphy_liteethphymiirx_source_source_payload_last_be; +assign main_preamble_checker_sink_payload_error = main_maccore_ethphy_liteethphymiirx_source_source_payload_error; +assign main_crc32_checker_sink_sink_valid = main_preamble_checker_source_valid; +assign main_preamble_checker_source_ready = main_crc32_checker_sink_sink_ready; +assign main_crc32_checker_sink_sink_first = main_preamble_checker_source_first; +assign main_crc32_checker_sink_sink_last = main_preamble_checker_source_last; +assign main_crc32_checker_sink_sink_payload_data = main_preamble_checker_source_payload_data; +assign main_crc32_checker_sink_sink_payload_last_be = main_preamble_checker_source_payload_last_be; +assign main_crc32_checker_sink_sink_payload_error = main_preamble_checker_source_payload_error; +assign main_padding_checker_sink_valid = main_crc32_checker_source_source_valid; +assign main_crc32_checker_source_source_ready = main_padding_checker_sink_ready; +assign main_padding_checker_sink_first = main_crc32_checker_source_source_first; +assign main_padding_checker_sink_last = main_crc32_checker_source_source_last; +assign main_padding_checker_sink_payload_data = main_crc32_checker_source_source_payload_data; +assign main_padding_checker_sink_payload_last_be = main_crc32_checker_source_source_payload_last_be; +assign main_padding_checker_sink_payload_error = main_crc32_checker_source_source_payload_error; +assign main_rx_last_be_sink_valid = main_padding_checker_source_valid; +assign main_padding_checker_source_ready = main_rx_last_be_sink_ready; +assign main_rx_last_be_sink_first = main_padding_checker_source_first; +assign main_rx_last_be_sink_last = main_padding_checker_source_last; +assign main_rx_last_be_sink_payload_data = main_padding_checker_source_payload_data; +assign main_rx_last_be_sink_payload_last_be = main_padding_checker_source_payload_last_be; +assign main_rx_last_be_sink_payload_error = main_padding_checker_source_payload_error; +assign main_rx_converter_sink_valid = main_rx_last_be_source_valid; +assign main_rx_last_be_source_ready = main_rx_converter_sink_ready; +assign main_rx_converter_sink_first = main_rx_last_be_source_first; +assign main_rx_converter_sink_last = main_rx_last_be_source_last; +assign main_rx_converter_sink_payload_data = main_rx_last_be_source_payload_data; +assign main_rx_converter_sink_payload_last_be = main_rx_last_be_source_payload_last_be; +assign main_rx_converter_sink_payload_error = main_rx_last_be_source_payload_error; +assign main_rx_cdc_sink_valid = main_rx_converter_source_valid; +assign main_rx_converter_source_ready = main_rx_cdc_sink_ready; +assign main_rx_cdc_sink_first = main_rx_converter_source_first; +assign main_rx_cdc_sink_last = main_rx_converter_source_last; +assign main_rx_cdc_sink_payload_data = main_rx_converter_source_payload_data; +assign main_rx_cdc_sink_payload_last_be = main_rx_converter_source_payload_last_be; +assign main_rx_cdc_sink_payload_error = main_rx_converter_source_payload_error; +assign main_writer_sink_sink_valid = main_sink_valid; +assign main_sink_ready = main_writer_sink_sink_ready; +assign main_writer_sink_sink_first = main_sink_first; +assign main_writer_sink_sink_last = main_sink_last; +assign main_writer_sink_sink_payload_data = main_sink_payload_data; +assign main_writer_sink_sink_payload_last_be = main_sink_payload_last_be; +assign main_writer_sink_sink_payload_error = main_sink_payload_error; +assign main_source_valid = main_reader_source_source_valid; +assign main_reader_source_source_ready = main_source_ready; +assign main_source_first = main_reader_source_source_first; +assign main_source_last = main_reader_source_source_last; +assign main_source_payload_data = main_reader_source_source_payload_data; +assign main_source_payload_last_be = main_reader_source_source_payload_last_be; +assign main_source_payload_error = main_reader_source_source_payload_error; +always @(*) begin + main_writer_inc <= 3'd0; + case (main_writer_sink_sink_payload_last_be) + 1'd1: begin + main_writer_inc <= 1'd1; + end + 2'd2: begin + main_writer_inc <= 2'd2; + end + 3'd4: begin + main_writer_inc <= 2'd3; + end + default: begin + main_writer_inc <= 3'd4; + end + endcase +end +assign main_writer_fifo_sink_payload_slot = main_writer_slot; +assign main_writer_fifo_sink_payload_length = main_writer_counter; +assign main_writer_fifo_source_ready = main_writer_available_clear; +assign main_writer_available_trigger = main_writer_fifo_source_valid; +assign main_writer_slot_status = main_writer_fifo_source_payload_slot; +assign main_writer_length_status = main_writer_fifo_source_payload_length; +always @(*) begin + main_writer_memory0_we <= 1'd0; + main_writer_memory0_dat_w <= 32'd0; + main_writer_memory1_adr <= 9'd0; + main_writer_memory1_we <= 1'd0; + main_writer_memory0_adr <= 9'd0; + main_writer_memory1_dat_w <= 32'd0; + case (main_writer_slot) + 1'd0: begin + main_writer_memory0_adr <= main_writer_counter[31:2]; + main_writer_memory0_dat_w <= main_writer_sink_sink_payload_data; + if ((main_writer_sink_sink_valid & main_writer_ongoing)) begin + main_writer_memory0_we <= 4'd15; + end + end + 1'd1: begin + main_writer_memory1_adr <= main_writer_counter[31:2]; + main_writer_memory1_dat_w <= main_writer_sink_sink_payload_data; + if ((main_writer_sink_sink_valid & main_writer_ongoing)) begin + main_writer_memory1_we <= 4'd15; + end + end + endcase +end +assign main_writer_status_w = main_writer_available_status; +always @(*) begin + main_writer_available_clear <= 1'd0; + if ((main_writer_pending_re & main_writer_pending_r)) begin + main_writer_available_clear <= 1'd1; + end +end +assign main_writer_pending_w = main_writer_available_pending; +assign main_writer_irq = (main_writer_pending_w & main_writer_storage); +assign main_writer_available_status = main_writer_available_trigger; +assign main_writer_available_pending = main_writer_available_trigger; +assign main_writer_fifo_syncfifo_din = {main_writer_fifo_fifo_in_last, main_writer_fifo_fifo_in_first, main_writer_fifo_fifo_in_payload_length, main_writer_fifo_fifo_in_payload_slot}; +assign {main_writer_fifo_fifo_out_last, main_writer_fifo_fifo_out_first, main_writer_fifo_fifo_out_payload_length, main_writer_fifo_fifo_out_payload_slot} = main_writer_fifo_syncfifo_dout; +assign main_writer_fifo_sink_ready = main_writer_fifo_syncfifo_writable; +assign main_writer_fifo_syncfifo_we = main_writer_fifo_sink_valid; +assign main_writer_fifo_fifo_in_first = main_writer_fifo_sink_first; +assign main_writer_fifo_fifo_in_last = main_writer_fifo_sink_last; +assign main_writer_fifo_fifo_in_payload_slot = main_writer_fifo_sink_payload_slot; +assign main_writer_fifo_fifo_in_payload_length = main_writer_fifo_sink_payload_length; +assign main_writer_fifo_source_valid = main_writer_fifo_syncfifo_readable; +assign main_writer_fifo_source_first = main_writer_fifo_fifo_out_first; +assign main_writer_fifo_source_last = main_writer_fifo_fifo_out_last; +assign main_writer_fifo_source_payload_slot = main_writer_fifo_fifo_out_payload_slot; +assign main_writer_fifo_source_payload_length = main_writer_fifo_fifo_out_payload_length; +assign main_writer_fifo_syncfifo_re = main_writer_fifo_source_ready; +always @(*) begin + main_writer_fifo_wrport_adr <= 1'd0; + if (main_writer_fifo_replace) begin + main_writer_fifo_wrport_adr <= (main_writer_fifo_produce - 1'd1); + end else begin + main_writer_fifo_wrport_adr <= main_writer_fifo_produce; + end +end +assign main_writer_fifo_wrport_dat_w = main_writer_fifo_syncfifo_din; +assign main_writer_fifo_wrport_we = (main_writer_fifo_syncfifo_we & (main_writer_fifo_syncfifo_writable | main_writer_fifo_replace)); +assign main_writer_fifo_do_read = (main_writer_fifo_syncfifo_readable & main_writer_fifo_syncfifo_re); +assign main_writer_fifo_rdport_adr = main_writer_fifo_consume; +assign main_writer_fifo_syncfifo_dout = main_writer_fifo_rdport_dat_r; +assign main_writer_fifo_syncfifo_writable = (main_writer_fifo_level != 2'd2); +assign main_writer_fifo_syncfifo_readable = (main_writer_fifo_level != 1'd0); +always @(*) begin + main_writer_counter_t_next_value_ce <= 1'd0; + main_writer_ongoing <= 1'd0; + main_writer_errors_status_f_next_value <= 32'd0; + main_writer_fifo_sink_valid <= 1'd0; + main_writer_errors_status_f_next_value_ce <= 1'd0; + main_writer_slot_ce <= 1'd0; + builder_liteethmacsramwriter_next_state <= 3'd0; + main_writer_counter_t_next_value <= 32'd0; + builder_liteethmacsramwriter_next_state <= builder_liteethmacsramwriter_state; + case (builder_liteethmacsramwriter_state) + 1'd1: begin + if (main_writer_sink_sink_valid) begin + if ((main_writer_counter == 11'd1530)) begin + builder_liteethmacsramwriter_next_state <= 2'd3; + end else begin + main_writer_counter_t_next_value <= (main_writer_counter + main_writer_inc); + main_writer_counter_t_next_value_ce <= 1'd1; + main_writer_ongoing <= 1'd1; + end + if (main_writer_sink_sink_last) begin + if (((main_writer_sink_sink_payload_error & main_writer_sink_sink_payload_last_be) != 1'd0)) begin + builder_liteethmacsramwriter_next_state <= 2'd2; + end else begin + builder_liteethmacsramwriter_next_state <= 3'd4; + end + end + end + end + 2'd2: begin + main_writer_counter_t_next_value <= 1'd0; + main_writer_counter_t_next_value_ce <= 1'd1; + builder_liteethmacsramwriter_next_state <= 1'd0; + end + 2'd3: begin + if ((main_writer_sink_sink_valid & main_writer_sink_sink_last)) begin + builder_liteethmacsramwriter_next_state <= 3'd4; + end + end + 3'd4: begin + main_writer_counter_t_next_value <= 1'd0; + main_writer_counter_t_next_value_ce <= 1'd1; + main_writer_slot_ce <= 1'd1; + main_writer_fifo_sink_valid <= 1'd1; + builder_liteethmacsramwriter_next_state <= 1'd0; + end + default: begin + if (main_writer_sink_sink_valid) begin + if (main_writer_fifo_sink_ready) begin + main_writer_ongoing <= 1'd1; + main_writer_counter_t_next_value <= (main_writer_counter + main_writer_inc); + main_writer_counter_t_next_value_ce <= 1'd1; + builder_liteethmacsramwriter_next_state <= 1'd1; + end else begin + main_writer_errors_status_f_next_value <= (main_writer_errors_status + 1'd1); + main_writer_errors_status_f_next_value_ce <= 1'd1; + builder_liteethmacsramwriter_next_state <= 2'd3; + end + end + end + endcase +end +assign main_reader_fifo_sink_valid = main_reader_start_re; +assign main_reader_fifo_sink_payload_slot = main_reader_slot_storage; +assign main_reader_fifo_sink_payload_length = main_reader_length_storage; +assign main_reader_ready_status = main_reader_fifo_sink_ready; +assign main_reader_level_status = main_reader_fifo_level; +always @(*) begin + main_reader_source_source_payload_last_be <= 4'd0; + if (main_reader_source_source_last) begin + case (main_reader_fifo_source_payload_length[1:0]) + 1'd0: begin + main_reader_source_source_payload_last_be <= 4'd8; + end + 1'd1: begin + main_reader_source_source_payload_last_be <= 1'd1; + end + 2'd2: begin + main_reader_source_source_payload_last_be <= 2'd2; + end + 2'd3: begin + main_reader_source_source_payload_last_be <= 3'd4; + end + endcase + end +end +assign main_reader_memory0_adr = main_reader_counter[10:2]; +assign main_reader_memory1_adr = main_reader_counter[10:2]; +always @(*) begin + main_reader_source_source_payload_data <= 32'd0; + case (main_reader_fifo_source_payload_slot) + 1'd0: begin + main_reader_source_source_payload_data <= main_reader_memory0_dat_r; + end + 1'd1: begin + main_reader_source_source_payload_data <= main_reader_memory1_dat_r; + end + endcase +end +assign main_reader_eventmanager_status_w = main_reader_done_status; +always @(*) begin + main_reader_done_clear <= 1'd0; + if ((main_reader_eventmanager_pending_re & main_reader_eventmanager_pending_r)) begin + main_reader_done_clear <= 1'd1; + end +end +assign main_reader_eventmanager_pending_w = main_reader_done_pending; +assign main_reader_irq = (main_reader_eventmanager_pending_w & main_reader_eventmanager_storage); +assign main_reader_done_status = 1'd0; +assign main_reader_fifo_syncfifo_din = {main_reader_fifo_fifo_in_last, main_reader_fifo_fifo_in_first, main_reader_fifo_fifo_in_payload_length, main_reader_fifo_fifo_in_payload_slot}; +assign {main_reader_fifo_fifo_out_last, main_reader_fifo_fifo_out_first, main_reader_fifo_fifo_out_payload_length, main_reader_fifo_fifo_out_payload_slot} = main_reader_fifo_syncfifo_dout; +assign main_reader_fifo_sink_ready = main_reader_fifo_syncfifo_writable; +assign main_reader_fifo_syncfifo_we = main_reader_fifo_sink_valid; +assign main_reader_fifo_fifo_in_first = main_reader_fifo_sink_first; +assign main_reader_fifo_fifo_in_last = main_reader_fifo_sink_last; +assign main_reader_fifo_fifo_in_payload_slot = main_reader_fifo_sink_payload_slot; +assign main_reader_fifo_fifo_in_payload_length = main_reader_fifo_sink_payload_length; +assign main_reader_fifo_source_valid = main_reader_fifo_syncfifo_readable; +assign main_reader_fifo_source_first = main_reader_fifo_fifo_out_first; +assign main_reader_fifo_source_last = main_reader_fifo_fifo_out_last; +assign main_reader_fifo_source_payload_slot = main_reader_fifo_fifo_out_payload_slot; +assign main_reader_fifo_source_payload_length = main_reader_fifo_fifo_out_payload_length; +assign main_reader_fifo_syncfifo_re = main_reader_fifo_source_ready; +always @(*) begin + main_reader_fifo_wrport_adr <= 1'd0; + if (main_reader_fifo_replace) begin + main_reader_fifo_wrport_adr <= (main_reader_fifo_produce - 1'd1); + end else begin + main_reader_fifo_wrport_adr <= main_reader_fifo_produce; + end +end +assign main_reader_fifo_wrport_dat_w = main_reader_fifo_syncfifo_din; +assign main_reader_fifo_wrport_we = (main_reader_fifo_syncfifo_we & (main_reader_fifo_syncfifo_writable | main_reader_fifo_replace)); +assign main_reader_fifo_do_read = (main_reader_fifo_syncfifo_readable & main_reader_fifo_syncfifo_re); +assign main_reader_fifo_rdport_adr = main_reader_fifo_consume; +assign main_reader_fifo_syncfifo_dout = main_reader_fifo_rdport_dat_r; +assign main_reader_fifo_syncfifo_writable = (main_reader_fifo_level != 2'd2); +assign main_reader_fifo_syncfifo_readable = (main_reader_fifo_level != 1'd0); +always @(*) begin + builder_liteethmacsramreader_next_state <= 2'd0; + main_reader_source_source_last <= 1'd0; + main_reader_counter_next_value <= 11'd0; + main_reader_counter_next_value_ce <= 1'd0; + main_reader_source_source_valid <= 1'd0; + main_reader_done_trigger <= 1'd0; + main_reader_fifo_source_ready <= 1'd0; + builder_liteethmacsramreader_next_state <= builder_liteethmacsramreader_state; + case (builder_liteethmacsramreader_state) + 1'd1: begin + main_reader_source_source_valid <= 1'd1; + main_reader_source_source_last <= (main_reader_counter >= (main_reader_fifo_source_payload_length - 3'd4)); + if (main_reader_source_source_ready) begin + main_reader_counter_next_value <= (main_reader_counter + 3'd4); + main_reader_counter_next_value_ce <= 1'd1; + if (main_reader_source_source_last) begin + builder_liteethmacsramreader_next_state <= 2'd2; + end + end + end + 2'd2: begin + main_reader_fifo_source_ready <= 1'd1; + main_reader_done_trigger <= 1'd1; + builder_liteethmacsramreader_next_state <= 1'd0; + end + default: begin + main_reader_counter_next_value <= 1'd0; + main_reader_counter_next_value_ce <= 1'd1; + if (main_reader_fifo_source_valid) begin + builder_liteethmacsramreader_next_state <= 1'd1; + end + end + endcase +end +assign main_ev_irq = (main_writer_irq | main_reader_irq); +assign main_sram0_adr0 = main_sram0_bus_adr0[8:0]; +assign main_sram0_bus_dat_r0 = main_sram0_dat_r0; +assign main_sram1_adr0 = main_sram1_bus_adr0[8:0]; +assign main_sram1_bus_dat_r0 = main_sram1_dat_r0; +always @(*) begin + main_sram0_we <= 4'd0; + main_sram0_we[0] <= (((main_sram0_bus_cyc1 & main_sram0_bus_stb1) & main_sram0_bus_we1) & main_sram0_bus_sel1[0]); + main_sram0_we[1] <= (((main_sram0_bus_cyc1 & main_sram0_bus_stb1) & main_sram0_bus_we1) & main_sram0_bus_sel1[1]); + main_sram0_we[2] <= (((main_sram0_bus_cyc1 & main_sram0_bus_stb1) & main_sram0_bus_we1) & main_sram0_bus_sel1[2]); + main_sram0_we[3] <= (((main_sram0_bus_cyc1 & main_sram0_bus_stb1) & main_sram0_bus_we1) & main_sram0_bus_sel1[3]); +end +assign main_sram0_adr1 = main_sram0_bus_adr1[8:0]; +assign main_sram0_bus_dat_r1 = main_sram0_dat_r1; +assign main_sram0_dat_w = main_sram0_bus_dat_w1; +always @(*) begin + main_sram1_we <= 4'd0; + main_sram1_we[0] <= (((main_sram1_bus_cyc1 & main_sram1_bus_stb1) & main_sram1_bus_we1) & main_sram1_bus_sel1[0]); + main_sram1_we[1] <= (((main_sram1_bus_cyc1 & main_sram1_bus_stb1) & main_sram1_bus_we1) & main_sram1_bus_sel1[1]); + main_sram1_we[2] <= (((main_sram1_bus_cyc1 & main_sram1_bus_stb1) & main_sram1_bus_we1) & main_sram1_bus_sel1[2]); + main_sram1_we[3] <= (((main_sram1_bus_cyc1 & main_sram1_bus_stb1) & main_sram1_bus_we1) & main_sram1_bus_sel1[3]); +end +assign main_sram1_adr1 = main_sram1_bus_adr1[8:0]; +assign main_sram1_bus_dat_r1 = main_sram1_dat_r1; +assign main_sram1_dat_w = main_sram1_bus_dat_w1; +always @(*) begin + main_slave_sel <= 4'd0; + main_slave_sel[0] <= (main_bus_adr[10:9] == 1'd0); + main_slave_sel[1] <= (main_bus_adr[10:9] == 1'd1); + main_slave_sel[2] <= (main_bus_adr[10:9] == 2'd2); + main_slave_sel[3] <= (main_bus_adr[10:9] == 2'd3); +end +assign main_sram0_bus_adr0 = main_bus_adr; +assign main_sram0_bus_dat_w0 = main_bus_dat_w; +assign main_sram0_bus_sel0 = main_bus_sel; +assign main_sram0_bus_stb0 = main_bus_stb; +assign main_sram0_bus_we0 = main_bus_we; +assign main_sram0_bus_cti0 = main_bus_cti; +assign main_sram0_bus_bte0 = main_bus_bte; +assign main_sram1_bus_adr0 = main_bus_adr; +assign main_sram1_bus_dat_w0 = main_bus_dat_w; +assign main_sram1_bus_sel0 = main_bus_sel; +assign main_sram1_bus_stb0 = main_bus_stb; +assign main_sram1_bus_we0 = main_bus_we; +assign main_sram1_bus_cti0 = main_bus_cti; +assign main_sram1_bus_bte0 = main_bus_bte; +assign main_sram0_bus_adr1 = main_bus_adr; +assign main_sram0_bus_dat_w1 = main_bus_dat_w; +assign main_sram0_bus_sel1 = main_bus_sel; +assign main_sram0_bus_stb1 = main_bus_stb; +assign main_sram0_bus_we1 = main_bus_we; +assign main_sram0_bus_cti1 = main_bus_cti; +assign main_sram0_bus_bte1 = main_bus_bte; +assign main_sram1_bus_adr1 = main_bus_adr; +assign main_sram1_bus_dat_w1 = main_bus_dat_w; +assign main_sram1_bus_sel1 = main_bus_sel; +assign main_sram1_bus_stb1 = main_bus_stb; +assign main_sram1_bus_we1 = main_bus_we; +assign main_sram1_bus_cti1 = main_bus_cti; +assign main_sram1_bus_bte1 = main_bus_bte; +assign main_sram0_bus_cyc0 = (main_bus_cyc & main_slave_sel[0]); +assign main_sram1_bus_cyc0 = (main_bus_cyc & main_slave_sel[1]); +assign main_sram0_bus_cyc1 = (main_bus_cyc & main_slave_sel[2]); +assign main_sram1_bus_cyc1 = (main_bus_cyc & main_slave_sel[3]); +assign main_bus_ack = (((main_sram0_bus_ack0 | main_sram1_bus_ack0) | main_sram0_bus_ack1) | main_sram1_bus_ack1); +assign main_bus_err = (((main_sram0_bus_err0 | main_sram1_bus_err0) | main_sram0_bus_err1) | main_sram1_bus_err1); +assign main_bus_dat_r = (((({32{main_slave_sel_r[0]}} & main_sram0_bus_dat_r0) | ({32{main_slave_sel_r[1]}} & main_sram1_bus_dat_r0)) | ({32{main_slave_sel_r[2]}} & main_sram0_bus_dat_r1)) | ({32{main_slave_sel_r[3]}} & main_sram1_bus_dat_r1)); +assign builder_shared_adr = builder_array_muxed0; +assign builder_shared_dat_w = builder_array_muxed1; +assign builder_shared_sel = builder_array_muxed2; +assign builder_shared_cyc = builder_array_muxed3; +assign builder_shared_stb = builder_array_muxed4; +assign builder_shared_we = builder_array_muxed5; +assign builder_shared_cti = builder_array_muxed6; +assign builder_shared_bte = builder_array_muxed7; +assign wishbone_dat_r = builder_shared_dat_r; +assign wishbone_ack = (builder_shared_ack & (builder_grant == 1'd0)); +assign wishbone_err = (builder_shared_err & (builder_grant == 1'd0)); +assign builder_request = {wishbone_cyc}; +assign builder_grant = 1'd0; +always @(*) begin + builder_slave_sel <= 2'd0; + builder_slave_sel[0] <= (builder_shared_adr[29:14] == 1'd0); + builder_slave_sel[1] <= (builder_shared_adr[29:11] == 4'd8); +end +assign main_maccore_maccore_wishbone_adr = builder_shared_adr; +assign main_maccore_maccore_wishbone_dat_w = builder_shared_dat_w; +assign main_maccore_maccore_wishbone_sel = builder_shared_sel; +assign main_maccore_maccore_wishbone_stb = builder_shared_stb; +assign main_maccore_maccore_wishbone_we = builder_shared_we; +assign main_maccore_maccore_wishbone_cti = builder_shared_cti; +assign main_maccore_maccore_wishbone_bte = builder_shared_bte; +assign main_bus_adr = builder_shared_adr; +assign main_bus_dat_w = builder_shared_dat_w; +assign main_bus_sel = builder_shared_sel; +assign main_bus_stb = builder_shared_stb; +assign main_bus_we = builder_shared_we; +assign main_bus_cti = builder_shared_cti; +assign main_bus_bte = builder_shared_bte; +assign main_maccore_maccore_wishbone_cyc = (builder_shared_cyc & builder_slave_sel[0]); +assign main_bus_cyc = (builder_shared_cyc & builder_slave_sel[1]); +assign builder_shared_err = (main_maccore_maccore_wishbone_err | main_bus_err); +assign builder_wait = ((builder_shared_stb & builder_shared_cyc) & (~builder_shared_ack)); +always @(*) begin + builder_error <= 1'd0; + builder_shared_dat_r <= 32'd0; + builder_shared_ack <= 1'd0; + builder_shared_ack <= (main_maccore_maccore_wishbone_ack | main_bus_ack); + builder_shared_dat_r <= (({32{builder_slave_sel_r[0]}} & main_maccore_maccore_wishbone_dat_r) | ({32{builder_slave_sel_r[1]}} & main_bus_dat_r)); + if (builder_done) begin + builder_shared_dat_r <= 32'd4294967295; + builder_shared_ack <= 1'd1; + builder_error <= 1'd1; + end +end +assign builder_done = (builder_count == 1'd0); +assign builder_csrbank0_sel = (builder_interface0_bank_bus_adr[13:9] == 1'd0); +assign builder_csrbank0_reset0_r = builder_interface0_bank_bus_dat_w[0]; +assign builder_csrbank0_reset0_re = ((builder_csrbank0_sel & builder_interface0_bank_bus_we) & (builder_interface0_bank_bus_adr[1:0] == 1'd0)); +assign builder_csrbank0_reset0_we = ((builder_csrbank0_sel & (~builder_interface0_bank_bus_we)) & (builder_interface0_bank_bus_adr[1:0] == 1'd0)); +assign builder_csrbank0_scratch0_r = builder_interface0_bank_bus_dat_w[31:0]; +assign builder_csrbank0_scratch0_re = ((builder_csrbank0_sel & builder_interface0_bank_bus_we) & (builder_interface0_bank_bus_adr[1:0] == 1'd1)); +assign builder_csrbank0_scratch0_we = ((builder_csrbank0_sel & (~builder_interface0_bank_bus_we)) & (builder_interface0_bank_bus_adr[1:0] == 1'd1)); +assign builder_csrbank0_bus_errors_r = builder_interface0_bank_bus_dat_w[31:0]; +assign builder_csrbank0_bus_errors_re = ((builder_csrbank0_sel & builder_interface0_bank_bus_we) & (builder_interface0_bank_bus_adr[1:0] == 2'd2)); +assign builder_csrbank0_bus_errors_we = ((builder_csrbank0_sel & (~builder_interface0_bank_bus_we)) & (builder_interface0_bank_bus_adr[1:0] == 2'd2)); +assign builder_csrbank0_reset0_w = main_maccore_maccore_reset_storage; +assign builder_csrbank0_scratch0_w = main_maccore_maccore_scratch_storage[31:0]; +assign builder_csrbank0_bus_errors_w = main_maccore_maccore_bus_errors_status[31:0]; +assign main_maccore_maccore_bus_errors_we = builder_csrbank0_bus_errors_we; +assign builder_csrbank1_sel = (builder_interface1_bank_bus_adr[13:9] == 2'd2); +assign builder_csrbank1_sram_writer_slot_r = builder_interface1_bank_bus_dat_w[0]; +assign builder_csrbank1_sram_writer_slot_re = ((builder_csrbank1_sel & builder_interface1_bank_bus_we) & (builder_interface1_bank_bus_adr[4:0] == 1'd0)); +assign builder_csrbank1_sram_writer_slot_we = ((builder_csrbank1_sel & (~builder_interface1_bank_bus_we)) & (builder_interface1_bank_bus_adr[4:0] == 1'd0)); +assign builder_csrbank1_sram_writer_length_r = builder_interface1_bank_bus_dat_w[31:0]; +assign builder_csrbank1_sram_writer_length_re = ((builder_csrbank1_sel & builder_interface1_bank_bus_we) & (builder_interface1_bank_bus_adr[4:0] == 1'd1)); +assign builder_csrbank1_sram_writer_length_we = ((builder_csrbank1_sel & (~builder_interface1_bank_bus_we)) & (builder_interface1_bank_bus_adr[4:0] == 1'd1)); +assign builder_csrbank1_sram_writer_errors_r = builder_interface1_bank_bus_dat_w[31:0]; +assign builder_csrbank1_sram_writer_errors_re = ((builder_csrbank1_sel & builder_interface1_bank_bus_we) & (builder_interface1_bank_bus_adr[4:0] == 2'd2)); +assign builder_csrbank1_sram_writer_errors_we = ((builder_csrbank1_sel & (~builder_interface1_bank_bus_we)) & (builder_interface1_bank_bus_adr[4:0] == 2'd2)); +assign main_writer_status_r = builder_interface1_bank_bus_dat_w[0]; +assign main_writer_status_re = ((builder_csrbank1_sel & builder_interface1_bank_bus_we) & (builder_interface1_bank_bus_adr[4:0] == 2'd3)); +assign main_writer_status_we = ((builder_csrbank1_sel & (~builder_interface1_bank_bus_we)) & (builder_interface1_bank_bus_adr[4:0] == 2'd3)); +assign main_writer_pending_r = builder_interface1_bank_bus_dat_w[0]; +assign main_writer_pending_re = ((builder_csrbank1_sel & builder_interface1_bank_bus_we) & (builder_interface1_bank_bus_adr[4:0] == 3'd4)); +assign main_writer_pending_we = ((builder_csrbank1_sel & (~builder_interface1_bank_bus_we)) & (builder_interface1_bank_bus_adr[4:0] == 3'd4)); +assign builder_csrbank1_sram_writer_ev_enable0_r = builder_interface1_bank_bus_dat_w[0]; +assign builder_csrbank1_sram_writer_ev_enable0_re = ((builder_csrbank1_sel & builder_interface1_bank_bus_we) & (builder_interface1_bank_bus_adr[4:0] == 3'd5)); +assign builder_csrbank1_sram_writer_ev_enable0_we = ((builder_csrbank1_sel & (~builder_interface1_bank_bus_we)) & (builder_interface1_bank_bus_adr[4:0] == 3'd5)); +assign main_reader_start_r = builder_interface1_bank_bus_dat_w[0]; +assign main_reader_start_re = ((builder_csrbank1_sel & builder_interface1_bank_bus_we) & (builder_interface1_bank_bus_adr[4:0] == 3'd6)); +assign main_reader_start_we = ((builder_csrbank1_sel & (~builder_interface1_bank_bus_we)) & (builder_interface1_bank_bus_adr[4:0] == 3'd6)); +assign builder_csrbank1_sram_reader_ready_r = builder_interface1_bank_bus_dat_w[0]; +assign builder_csrbank1_sram_reader_ready_re = ((builder_csrbank1_sel & builder_interface1_bank_bus_we) & (builder_interface1_bank_bus_adr[4:0] == 3'd7)); +assign builder_csrbank1_sram_reader_ready_we = ((builder_csrbank1_sel & (~builder_interface1_bank_bus_we)) & (builder_interface1_bank_bus_adr[4:0] == 3'd7)); +assign builder_csrbank1_sram_reader_level_r = builder_interface1_bank_bus_dat_w[1:0]; +assign builder_csrbank1_sram_reader_level_re = ((builder_csrbank1_sel & builder_interface1_bank_bus_we) & (builder_interface1_bank_bus_adr[4:0] == 4'd8)); +assign builder_csrbank1_sram_reader_level_we = ((builder_csrbank1_sel & (~builder_interface1_bank_bus_we)) & (builder_interface1_bank_bus_adr[4:0] == 4'd8)); +assign builder_csrbank1_sram_reader_slot0_r = builder_interface1_bank_bus_dat_w[0]; +assign builder_csrbank1_sram_reader_slot0_re = ((builder_csrbank1_sel & builder_interface1_bank_bus_we) & (builder_interface1_bank_bus_adr[4:0] == 4'd9)); +assign builder_csrbank1_sram_reader_slot0_we = ((builder_csrbank1_sel & (~builder_interface1_bank_bus_we)) & (builder_interface1_bank_bus_adr[4:0] == 4'd9)); +assign builder_csrbank1_sram_reader_length0_r = builder_interface1_bank_bus_dat_w[10:0]; +assign builder_csrbank1_sram_reader_length0_re = ((builder_csrbank1_sel & builder_interface1_bank_bus_we) & (builder_interface1_bank_bus_adr[4:0] == 4'd10)); +assign builder_csrbank1_sram_reader_length0_we = ((builder_csrbank1_sel & (~builder_interface1_bank_bus_we)) & (builder_interface1_bank_bus_adr[4:0] == 4'd10)); +assign main_reader_eventmanager_status_r = builder_interface1_bank_bus_dat_w[0]; +assign main_reader_eventmanager_status_re = ((builder_csrbank1_sel & builder_interface1_bank_bus_we) & (builder_interface1_bank_bus_adr[4:0] == 4'd11)); +assign main_reader_eventmanager_status_we = ((builder_csrbank1_sel & (~builder_interface1_bank_bus_we)) & (builder_interface1_bank_bus_adr[4:0] == 4'd11)); +assign main_reader_eventmanager_pending_r = builder_interface1_bank_bus_dat_w[0]; +assign main_reader_eventmanager_pending_re = ((builder_csrbank1_sel & builder_interface1_bank_bus_we) & (builder_interface1_bank_bus_adr[4:0] == 4'd12)); +assign main_reader_eventmanager_pending_we = ((builder_csrbank1_sel & (~builder_interface1_bank_bus_we)) & (builder_interface1_bank_bus_adr[4:0] == 4'd12)); +assign builder_csrbank1_sram_reader_ev_enable0_r = builder_interface1_bank_bus_dat_w[0]; +assign builder_csrbank1_sram_reader_ev_enable0_re = ((builder_csrbank1_sel & builder_interface1_bank_bus_we) & (builder_interface1_bank_bus_adr[4:0] == 4'd13)); +assign builder_csrbank1_sram_reader_ev_enable0_we = ((builder_csrbank1_sel & (~builder_interface1_bank_bus_we)) & (builder_interface1_bank_bus_adr[4:0] == 4'd13)); +assign builder_csrbank1_preamble_crc_r = builder_interface1_bank_bus_dat_w[0]; +assign builder_csrbank1_preamble_crc_re = ((builder_csrbank1_sel & builder_interface1_bank_bus_we) & (builder_interface1_bank_bus_adr[4:0] == 4'd14)); +assign builder_csrbank1_preamble_crc_we = ((builder_csrbank1_sel & (~builder_interface1_bank_bus_we)) & (builder_interface1_bank_bus_adr[4:0] == 4'd14)); +assign builder_csrbank1_preamble_errors_r = builder_interface1_bank_bus_dat_w[31:0]; +assign builder_csrbank1_preamble_errors_re = ((builder_csrbank1_sel & builder_interface1_bank_bus_we) & (builder_interface1_bank_bus_adr[4:0] == 4'd15)); +assign builder_csrbank1_preamble_errors_we = ((builder_csrbank1_sel & (~builder_interface1_bank_bus_we)) & (builder_interface1_bank_bus_adr[4:0] == 4'd15)); +assign builder_csrbank1_crc_errors_r = builder_interface1_bank_bus_dat_w[31:0]; +assign builder_csrbank1_crc_errors_re = ((builder_csrbank1_sel & builder_interface1_bank_bus_we) & (builder_interface1_bank_bus_adr[4:0] == 5'd16)); +assign builder_csrbank1_crc_errors_we = ((builder_csrbank1_sel & (~builder_interface1_bank_bus_we)) & (builder_interface1_bank_bus_adr[4:0] == 5'd16)); +assign builder_csrbank1_sram_writer_slot_w = main_writer_slot_status; +assign main_writer_slot_we = builder_csrbank1_sram_writer_slot_we; +assign builder_csrbank1_sram_writer_length_w = main_writer_length_status[31:0]; +assign main_writer_length_we = builder_csrbank1_sram_writer_length_we; +assign builder_csrbank1_sram_writer_errors_w = main_writer_errors_status[31:0]; +assign main_writer_errors_we = builder_csrbank1_sram_writer_errors_we; +assign builder_csrbank1_sram_writer_ev_enable0_w = main_writer_storage; +assign builder_csrbank1_sram_reader_ready_w = main_reader_ready_status; +assign main_reader_ready_we = builder_csrbank1_sram_reader_ready_we; +assign builder_csrbank1_sram_reader_level_w = main_reader_level_status[1:0]; +assign main_reader_level_we = builder_csrbank1_sram_reader_level_we; +assign builder_csrbank1_sram_reader_slot0_w = main_reader_slot_storage; +assign builder_csrbank1_sram_reader_length0_w = main_reader_length_storage[10:0]; +assign builder_csrbank1_sram_reader_ev_enable0_w = main_reader_eventmanager_storage; +assign builder_csrbank1_preamble_crc_w = main_preamble_crc_status; +assign main_preamble_crc_we = builder_csrbank1_preamble_crc_we; +assign builder_csrbank1_preamble_errors_w = main_preamble_errors_status[31:0]; +assign main_preamble_errors_we = builder_csrbank1_preamble_errors_we; +assign builder_csrbank1_crc_errors_w = main_crc_errors_status[31:0]; +assign main_crc_errors_we = builder_csrbank1_crc_errors_we; +assign builder_csrbank2_sel = (builder_interface2_bank_bus_adr[13:9] == 1'd1); +assign builder_csrbank2_crg_reset0_r = builder_interface2_bank_bus_dat_w[0]; +assign builder_csrbank2_crg_reset0_re = ((builder_csrbank2_sel & builder_interface2_bank_bus_we) & (builder_interface2_bank_bus_adr[1:0] == 1'd0)); +assign builder_csrbank2_crg_reset0_we = ((builder_csrbank2_sel & (~builder_interface2_bank_bus_we)) & (builder_interface2_bank_bus_adr[1:0] == 1'd0)); +assign builder_csrbank2_mdio_w0_r = builder_interface2_bank_bus_dat_w[2:0]; +assign builder_csrbank2_mdio_w0_re = ((builder_csrbank2_sel & builder_interface2_bank_bus_we) & (builder_interface2_bank_bus_adr[1:0] == 1'd1)); +assign builder_csrbank2_mdio_w0_we = ((builder_csrbank2_sel & (~builder_interface2_bank_bus_we)) & (builder_interface2_bank_bus_adr[1:0] == 1'd1)); +assign builder_csrbank2_mdio_r_r = builder_interface2_bank_bus_dat_w[0]; +assign builder_csrbank2_mdio_r_re = ((builder_csrbank2_sel & builder_interface2_bank_bus_we) & (builder_interface2_bank_bus_adr[1:0] == 2'd2)); +assign builder_csrbank2_mdio_r_we = ((builder_csrbank2_sel & (~builder_interface2_bank_bus_we)) & (builder_interface2_bank_bus_adr[1:0] == 2'd2)); +assign builder_csrbank2_crg_reset0_w = main_maccore_ethphy_reset_storage; +assign main_maccore_ethphy_mdc = main_maccore_ethphy_storage[0]; +assign main_maccore_ethphy_oe = main_maccore_ethphy_storage[1]; +assign main_maccore_ethphy_w = main_maccore_ethphy_storage[2]; +assign builder_csrbank2_mdio_w0_w = main_maccore_ethphy_storage[2:0]; +assign builder_csrbank2_mdio_r_w = main_maccore_ethphy_status; +assign main_maccore_ethphy_we = builder_csrbank2_mdio_r_we; +assign builder_adr = main_maccore_maccore_adr; +assign builder_we = main_maccore_maccore_we; +assign builder_dat_w = main_maccore_maccore_dat_w; +assign main_maccore_maccore_dat_r = builder_dat_r; +assign builder_interface0_bank_bus_adr = builder_adr; +assign builder_interface1_bank_bus_adr = builder_adr; +assign builder_interface2_bank_bus_adr = builder_adr; +assign builder_interface0_bank_bus_we = builder_we; +assign builder_interface1_bank_bus_we = builder_we; +assign builder_interface2_bank_bus_we = builder_we; +assign builder_interface0_bank_bus_dat_w = builder_dat_w; +assign builder_interface1_bank_bus_dat_w = builder_dat_w; +assign builder_interface2_bank_bus_dat_w = builder_dat_w; +assign builder_dat_r = ((builder_interface0_bank_bus_dat_r | builder_interface1_bank_bus_dat_r) | builder_interface2_bank_bus_dat_r); +always @(*) begin + builder_array_muxed0 <= 30'd0; + case (builder_grant) + default: begin + builder_array_muxed0 <= wishbone_adr; + end + endcase +end +always @(*) begin + builder_array_muxed1 <= 32'd0; + case (builder_grant) + default: begin + builder_array_muxed1 <= wishbone_dat_w; + end + endcase +end +always @(*) begin + builder_array_muxed2 <= 4'd0; + case (builder_grant) + default: begin + builder_array_muxed2 <= wishbone_sel; + end + endcase +end +always @(*) begin + builder_array_muxed3 <= 1'd0; + case (builder_grant) + default: begin + builder_array_muxed3 <= wishbone_cyc; + end + endcase +end +always @(*) begin + builder_array_muxed4 <= 1'd0; + case (builder_grant) + default: begin + builder_array_muxed4 <= wishbone_stb; + end + endcase +end +always @(*) begin + builder_array_muxed5 <= 1'd0; + case (builder_grant) + default: begin + builder_array_muxed5 <= wishbone_we; + end + endcase +end +always @(*) begin + builder_array_muxed6 <= 3'd0; + case (builder_grant) + default: begin + builder_array_muxed6 <= wishbone_cti; + end + endcase +end +always @(*) begin + builder_array_muxed7 <= 2'd0; + case (builder_grant) + default: begin + builder_array_muxed7 <= wishbone_bte; + end + endcase +end +always @(*) begin + main_maccore_ethphy_status <= 1'd0; + main_maccore_ethphy_status <= main_maccore_ethphy_r; + main_maccore_ethphy_status <= builder_xilinxmultiregimpl0_regs1; +end +assign main_ps_preamble_error_toggle_o = builder_xilinxmultiregimpl1_regs1; +assign main_ps_crc_error_toggle_o = builder_xilinxmultiregimpl2_regs1; +assign main_tx_cdc_produce_rdomain = builder_xilinxmultiregimpl3_regs1; +assign main_tx_cdc_consume_wdomain = builder_xilinxmultiregimpl4_regs1; +assign main_rx_cdc_produce_rdomain = builder_xilinxmultiregimpl5_regs1; +assign main_rx_cdc_consume_wdomain = builder_xilinxmultiregimpl6_regs1; + +always @(posedge eth_rx_clk) begin + main_maccore_ethphy_liteethphymiirx_converter_reset <= (~mii_eth_rx_dv); + main_maccore_ethphy_liteethphymiirx_converter_sink_valid <= 1'd1; + main_maccore_ethphy_liteethphymiirx_converter_sink_payload_data <= mii_eth_rx_data; + if (main_maccore_ethphy_liteethphymiirx_converter_converter_source_ready) begin + main_maccore_ethphy_liteethphymiirx_converter_converter_strobe_all <= 1'd0; + end + if (main_maccore_ethphy_liteethphymiirx_converter_converter_load_part) begin + if (((main_maccore_ethphy_liteethphymiirx_converter_converter_demux == 1'd1) | main_maccore_ethphy_liteethphymiirx_converter_converter_sink_last)) begin + main_maccore_ethphy_liteethphymiirx_converter_converter_demux <= 1'd0; + main_maccore_ethphy_liteethphymiirx_converter_converter_strobe_all <= 1'd1; + end else begin + main_maccore_ethphy_liteethphymiirx_converter_converter_demux <= (main_maccore_ethphy_liteethphymiirx_converter_converter_demux + 1'd1); + end + end + if ((main_maccore_ethphy_liteethphymiirx_converter_converter_source_valid & main_maccore_ethphy_liteethphymiirx_converter_converter_source_ready)) begin + if ((main_maccore_ethphy_liteethphymiirx_converter_converter_sink_valid & main_maccore_ethphy_liteethphymiirx_converter_converter_sink_ready)) begin + main_maccore_ethphy_liteethphymiirx_converter_converter_source_first <= main_maccore_ethphy_liteethphymiirx_converter_converter_sink_first; + main_maccore_ethphy_liteethphymiirx_converter_converter_source_last <= main_maccore_ethphy_liteethphymiirx_converter_converter_sink_last; + end else begin + main_maccore_ethphy_liteethphymiirx_converter_converter_source_first <= 1'd0; + main_maccore_ethphy_liteethphymiirx_converter_converter_source_last <= 1'd0; + end + end else begin + if ((main_maccore_ethphy_liteethphymiirx_converter_converter_sink_valid & main_maccore_ethphy_liteethphymiirx_converter_converter_sink_ready)) begin + main_maccore_ethphy_liteethphymiirx_converter_converter_source_first <= (main_maccore_ethphy_liteethphymiirx_converter_converter_sink_first | main_maccore_ethphy_liteethphymiirx_converter_converter_source_first); + main_maccore_ethphy_liteethphymiirx_converter_converter_source_last <= (main_maccore_ethphy_liteethphymiirx_converter_converter_sink_last | main_maccore_ethphy_liteethphymiirx_converter_converter_source_last); + end + end + if (main_maccore_ethphy_liteethphymiirx_converter_converter_load_part) begin + case (main_maccore_ethphy_liteethphymiirx_converter_converter_demux) + 1'd0: begin + main_maccore_ethphy_liteethphymiirx_converter_converter_source_payload_data[3:0] <= main_maccore_ethphy_liteethphymiirx_converter_converter_sink_payload_data; + end + 1'd1: begin + main_maccore_ethphy_liteethphymiirx_converter_converter_source_payload_data[7:4] <= main_maccore_ethphy_liteethphymiirx_converter_converter_sink_payload_data; + end + endcase + end + if (main_maccore_ethphy_liteethphymiirx_converter_converter_load_part) begin + main_maccore_ethphy_liteethphymiirx_converter_converter_source_payload_valid_token_count <= (main_maccore_ethphy_liteethphymiirx_converter_converter_demux + 1'd1); + end + if (main_maccore_ethphy_liteethphymiirx_converter_reset) begin + main_maccore_ethphy_liteethphymiirx_converter_converter_demux <= 1'd0; + main_maccore_ethphy_liteethphymiirx_converter_converter_strobe_all <= 1'd0; + end + builder_liteethmacpreamblechecker_state <= builder_liteethmacpreamblechecker_next_state; + if (main_crc32_checker_crc_ce) begin + main_crc32_checker_crc_reg <= main_crc32_checker_crc_next; + end + if (main_crc32_checker_crc_reset) begin + main_crc32_checker_crc_reg <= 32'd4294967295; + end + if (((main_crc32_checker_syncfifo_syncfifo_we & main_crc32_checker_syncfifo_syncfifo_writable) & (~main_crc32_checker_syncfifo_replace))) begin + if ((main_crc32_checker_syncfifo_produce == 3'd4)) begin + main_crc32_checker_syncfifo_produce <= 1'd0; + end else begin + main_crc32_checker_syncfifo_produce <= (main_crc32_checker_syncfifo_produce + 1'd1); + end + end + if (main_crc32_checker_syncfifo_do_read) begin + if ((main_crc32_checker_syncfifo_consume == 3'd4)) begin + main_crc32_checker_syncfifo_consume <= 1'd0; + end else begin + main_crc32_checker_syncfifo_consume <= (main_crc32_checker_syncfifo_consume + 1'd1); + end + end + if (((main_crc32_checker_syncfifo_syncfifo_we & main_crc32_checker_syncfifo_syncfifo_writable) & (~main_crc32_checker_syncfifo_replace))) begin + if ((~main_crc32_checker_syncfifo_do_read)) begin + main_crc32_checker_syncfifo_level <= (main_crc32_checker_syncfifo_level + 1'd1); + end + end else begin + if (main_crc32_checker_syncfifo_do_read) begin + main_crc32_checker_syncfifo_level <= (main_crc32_checker_syncfifo_level - 1'd1); + end + end + if (main_crc32_checker_fifo_reset) begin + main_crc32_checker_syncfifo_level <= 3'd0; + main_crc32_checker_syncfifo_produce <= 3'd0; + main_crc32_checker_syncfifo_consume <= 3'd0; + end + builder_liteethmaccrc32checker_state <= builder_liteethmaccrc32checker_next_state; + if (main_ps_preamble_error_i) begin + main_ps_preamble_error_toggle_i <= (~main_ps_preamble_error_toggle_i); + end + if (main_ps_crc_error_i) begin + main_ps_crc_error_toggle_i <= (~main_ps_crc_error_toggle_i); + end + if (main_rx_converter_converter_source_ready) begin + main_rx_converter_converter_strobe_all <= 1'd0; + end + if (main_rx_converter_converter_load_part) begin + if (((main_rx_converter_converter_demux == 2'd3) | main_rx_converter_converter_sink_last)) begin + main_rx_converter_converter_demux <= 1'd0; + main_rx_converter_converter_strobe_all <= 1'd1; + end else begin + main_rx_converter_converter_demux <= (main_rx_converter_converter_demux + 1'd1); + end + end + if ((main_rx_converter_converter_source_valid & main_rx_converter_converter_source_ready)) begin + if ((main_rx_converter_converter_sink_valid & main_rx_converter_converter_sink_ready)) begin + main_rx_converter_converter_source_first <= main_rx_converter_converter_sink_first; + main_rx_converter_converter_source_last <= main_rx_converter_converter_sink_last; + end else begin + main_rx_converter_converter_source_first <= 1'd0; + main_rx_converter_converter_source_last <= 1'd0; + end + end else begin + if ((main_rx_converter_converter_sink_valid & main_rx_converter_converter_sink_ready)) begin + main_rx_converter_converter_source_first <= (main_rx_converter_converter_sink_first | main_rx_converter_converter_source_first); + main_rx_converter_converter_source_last <= (main_rx_converter_converter_sink_last | main_rx_converter_converter_source_last); + end + end + if (main_rx_converter_converter_load_part) begin + case (main_rx_converter_converter_demux) + 1'd0: begin + main_rx_converter_converter_source_payload_data[9:0] <= main_rx_converter_converter_sink_payload_data; + end + 1'd1: begin + main_rx_converter_converter_source_payload_data[19:10] <= main_rx_converter_converter_sink_payload_data; + end + 2'd2: begin + main_rx_converter_converter_source_payload_data[29:20] <= main_rx_converter_converter_sink_payload_data; + end + 2'd3: begin + main_rx_converter_converter_source_payload_data[39:30] <= main_rx_converter_converter_sink_payload_data; + end + endcase + end + if (main_rx_converter_converter_load_part) begin + main_rx_converter_converter_source_payload_valid_token_count <= (main_rx_converter_converter_demux + 1'd1); + end + main_rx_cdc_graycounter0_q_binary <= main_rx_cdc_graycounter0_q_next_binary; + main_rx_cdc_graycounter0_q <= main_rx_cdc_graycounter0_q_next; + if (eth_rx_rst) begin + main_maccore_ethphy_liteethphymiirx_converter_sink_valid <= 1'd0; + main_maccore_ethphy_liteethphymiirx_converter_converter_demux <= 1'd0; + main_maccore_ethphy_liteethphymiirx_converter_converter_strobe_all <= 1'd0; + main_maccore_ethphy_liteethphymiirx_converter_reset <= 1'd0; + main_crc32_checker_crc_reg <= 32'd4294967295; + main_crc32_checker_syncfifo_level <= 3'd0; + main_crc32_checker_syncfifo_produce <= 3'd0; + main_crc32_checker_syncfifo_consume <= 3'd0; + main_rx_converter_converter_demux <= 2'd0; + main_rx_converter_converter_strobe_all <= 1'd0; + main_rx_cdc_graycounter0_q <= 7'd0; + main_rx_cdc_graycounter0_q_binary <= 7'd0; + builder_liteethmacpreamblechecker_state <= 1'd0; + builder_liteethmaccrc32checker_state <= 2'd0; + end + builder_xilinxmultiregimpl6_regs0 <= main_rx_cdc_graycounter1_q; + builder_xilinxmultiregimpl6_regs1 <= builder_xilinxmultiregimpl6_regs0; +end + +always @(posedge eth_tx_clk) begin + mii_eth_tx_en <= main_maccore_ethphy_liteethphymiitx_converter_source_valid; + mii_eth_tx_data <= main_maccore_ethphy_liteethphymiitx_converter_source_payload_data; + if ((main_maccore_ethphy_liteethphymiitx_converter_converter_source_valid & main_maccore_ethphy_liteethphymiitx_converter_converter_source_ready)) begin + if (main_maccore_ethphy_liteethphymiitx_converter_converter_last) begin + main_maccore_ethphy_liteethphymiitx_converter_converter_mux <= 1'd0; + end else begin + main_maccore_ethphy_liteethphymiitx_converter_converter_mux <= (main_maccore_ethphy_liteethphymiitx_converter_converter_mux + 1'd1); + end + end + if (main_tx_gap_inserter_counter_reset) begin + main_tx_gap_inserter_counter <= 1'd0; + end else begin + if (main_tx_gap_inserter_counter_ce) begin + main_tx_gap_inserter_counter <= (main_tx_gap_inserter_counter + 1'd1); + end + end + builder_liteethmacgap_state <= builder_liteethmacgap_next_state; + if (main_preamble_inserter_clr_cnt) begin + main_preamble_inserter_cnt <= 1'd0; + end else begin + if (main_preamble_inserter_inc_cnt) begin + main_preamble_inserter_cnt <= (main_preamble_inserter_cnt + 1'd1); + end + end + builder_liteethmacpreambleinserter_state <= builder_liteethmacpreambleinserter_next_state; + if (main_crc32_inserter_is_ongoing0) begin + main_crc32_inserter_cnt <= 2'd3; + end else begin + if ((main_crc32_inserter_is_ongoing1 & (~main_crc32_inserter_cnt_done))) begin + main_crc32_inserter_cnt <= (main_crc32_inserter_cnt - main_crc32_inserter_source_ready); + end + end + if (main_crc32_inserter_ce) begin + main_crc32_inserter_reg <= main_crc32_inserter_next; + end + if (main_crc32_inserter_reset) begin + main_crc32_inserter_reg <= 32'd4294967295; + end + builder_liteethmaccrc32inserter_state <= builder_liteethmaccrc32inserter_next_state; + if (main_padding_inserter_counter_reset) begin + main_padding_inserter_counter <= 1'd0; + end else begin + if (main_padding_inserter_counter_ce) begin + main_padding_inserter_counter <= (main_padding_inserter_counter + 1'd1); + end + end + builder_liteethmacpaddinginserter_state <= builder_liteethmacpaddinginserter_next_state; + if ((main_tx_last_be_sink_valid & main_tx_last_be_sink_ready)) begin + if (main_tx_last_be_sink_last) begin + main_tx_last_be_ongoing <= 1'd1; + end else begin + if (main_tx_last_be_sink_payload_last_be) begin + main_tx_last_be_ongoing <= 1'd0; + end + end + end + if ((main_tx_converter_converter_source_valid & main_tx_converter_converter_source_ready)) begin + if (main_tx_converter_converter_last) begin + main_tx_converter_converter_mux <= 1'd0; + end else begin + main_tx_converter_converter_mux <= (main_tx_converter_converter_mux + 1'd1); + end + end + main_tx_cdc_graycounter1_q_binary <= main_tx_cdc_graycounter1_q_next_binary; + main_tx_cdc_graycounter1_q <= main_tx_cdc_graycounter1_q_next; + if (eth_tx_rst) begin + main_maccore_ethphy_liteethphymiitx_converter_converter_mux <= 1'd0; + main_crc32_inserter_reg <= 32'd4294967295; + main_crc32_inserter_cnt <= 2'd3; + main_padding_inserter_counter <= 16'd1; + main_tx_last_be_ongoing <= 1'd1; + main_tx_converter_converter_mux <= 2'd0; + main_tx_cdc_graycounter1_q <= 7'd0; + main_tx_cdc_graycounter1_q_binary <= 7'd0; + builder_liteethmacgap_state <= 1'd0; + builder_liteethmacpreambleinserter_state <= 2'd0; + builder_liteethmaccrc32inserter_state <= 2'd0; + builder_liteethmacpaddinginserter_state <= 1'd0; + end + builder_xilinxmultiregimpl3_regs0 <= main_tx_cdc_graycounter0_q; + builder_xilinxmultiregimpl3_regs1 <= builder_xilinxmultiregimpl3_regs0; +end + +always @(posedge por_clk) begin + main_maccore_int_rst <= sys_reset; +end + +always @(posedge sys_clk) begin + if ((main_maccore_maccore_bus_errors != 32'd4294967295)) begin + if (main_maccore_maccore_bus_error) begin + main_maccore_maccore_bus_errors <= (main_maccore_maccore_bus_errors + 1'd1); + end + end + builder_state <= builder_next_state; + if (main_maccore_ethphy_counter_ce) begin + main_maccore_ethphy_counter <= (main_maccore_ethphy_counter + 1'd1); + end + if (main_ps_preamble_error_o) begin + main_preamble_errors_status <= (main_preamble_errors_status + 1'd1); + end + if (main_ps_crc_error_o) begin + main_crc_errors_status <= (main_crc_errors_status + 1'd1); + end + main_ps_preamble_error_toggle_o_r <= main_ps_preamble_error_toggle_o; + main_ps_crc_error_toggle_o_r <= main_ps_crc_error_toggle_o; + main_tx_cdc_graycounter0_q_binary <= main_tx_cdc_graycounter0_q_next_binary; + main_tx_cdc_graycounter0_q <= main_tx_cdc_graycounter0_q_next; + main_rx_cdc_graycounter1_q_binary <= main_rx_cdc_graycounter1_q_next_binary; + main_rx_cdc_graycounter1_q <= main_rx_cdc_graycounter1_q_next; + if (main_writer_slot_ce) begin + main_writer_slot <= (main_writer_slot + 1'd1); + end + if (((main_writer_fifo_syncfifo_we & main_writer_fifo_syncfifo_writable) & (~main_writer_fifo_replace))) begin + main_writer_fifo_produce <= (main_writer_fifo_produce + 1'd1); + end + if (main_writer_fifo_do_read) begin + main_writer_fifo_consume <= (main_writer_fifo_consume + 1'd1); + end + if (((main_writer_fifo_syncfifo_we & main_writer_fifo_syncfifo_writable) & (~main_writer_fifo_replace))) begin + if ((~main_writer_fifo_do_read)) begin + main_writer_fifo_level <= (main_writer_fifo_level + 1'd1); + end + end else begin + if (main_writer_fifo_do_read) begin + main_writer_fifo_level <= (main_writer_fifo_level - 1'd1); + end + end + builder_liteethmacsramwriter_state <= builder_liteethmacsramwriter_next_state; + if (main_writer_counter_t_next_value_ce) begin + main_writer_counter <= main_writer_counter_t_next_value; + end + if (main_writer_errors_status_f_next_value_ce) begin + main_writer_errors_status <= main_writer_errors_status_f_next_value; + end + if (main_reader_done_clear) begin + main_reader_done_pending <= 1'd0; + end + if (main_reader_done_trigger) begin + main_reader_done_pending <= 1'd1; + end + if (((main_reader_fifo_syncfifo_we & main_reader_fifo_syncfifo_writable) & (~main_reader_fifo_replace))) begin + main_reader_fifo_produce <= (main_reader_fifo_produce + 1'd1); + end + if (main_reader_fifo_do_read) begin + main_reader_fifo_consume <= (main_reader_fifo_consume + 1'd1); + end + if (((main_reader_fifo_syncfifo_we & main_reader_fifo_syncfifo_writable) & (~main_reader_fifo_replace))) begin + if ((~main_reader_fifo_do_read)) begin + main_reader_fifo_level <= (main_reader_fifo_level + 1'd1); + end + end else begin + if (main_reader_fifo_do_read) begin + main_reader_fifo_level <= (main_reader_fifo_level - 1'd1); + end + end + builder_liteethmacsramreader_state <= builder_liteethmacsramreader_next_state; + if (main_reader_counter_next_value_ce) begin + main_reader_counter <= main_reader_counter_next_value; + end + main_sram0_bus_ack0 <= 1'd0; + if (((main_sram0_bus_cyc0 & main_sram0_bus_stb0) & (~main_sram0_bus_ack0))) begin + main_sram0_bus_ack0 <= 1'd1; + end + main_sram1_bus_ack0 <= 1'd0; + if (((main_sram1_bus_cyc0 & main_sram1_bus_stb0) & (~main_sram1_bus_ack0))) begin + main_sram1_bus_ack0 <= 1'd1; + end + main_sram0_bus_ack1 <= 1'd0; + if (((main_sram0_bus_cyc1 & main_sram0_bus_stb1) & (~main_sram0_bus_ack1))) begin + main_sram0_bus_ack1 <= 1'd1; + end + main_sram1_bus_ack1 <= 1'd0; + if (((main_sram1_bus_cyc1 & main_sram1_bus_stb1) & (~main_sram1_bus_ack1))) begin + main_sram1_bus_ack1 <= 1'd1; + end + main_slave_sel_r <= main_slave_sel; + builder_slave_sel_r <= builder_slave_sel; + if (builder_wait) begin + if ((~builder_done)) begin + builder_count <= (builder_count - 1'd1); + end + end else begin + builder_count <= 20'd1000000; + end + builder_interface0_bank_bus_dat_r <= 1'd0; + if (builder_csrbank0_sel) begin + case (builder_interface0_bank_bus_adr[1:0]) + 1'd0: begin + builder_interface0_bank_bus_dat_r <= builder_csrbank0_reset0_w; + end + 1'd1: begin + builder_interface0_bank_bus_dat_r <= builder_csrbank0_scratch0_w; + end + 2'd2: begin + builder_interface0_bank_bus_dat_r <= builder_csrbank0_bus_errors_w; + end + endcase + end + if (builder_csrbank0_reset0_re) begin + main_maccore_maccore_reset_storage <= builder_csrbank0_reset0_r; + end + main_maccore_maccore_reset_re <= builder_csrbank0_reset0_re; + if (builder_csrbank0_scratch0_re) begin + main_maccore_maccore_scratch_storage[31:0] <= builder_csrbank0_scratch0_r; + end + main_maccore_maccore_scratch_re <= builder_csrbank0_scratch0_re; + builder_interface1_bank_bus_dat_r <= 1'd0; + if (builder_csrbank1_sel) begin + case (builder_interface1_bank_bus_adr[4:0]) + 1'd0: begin + builder_interface1_bank_bus_dat_r <= builder_csrbank1_sram_writer_slot_w; + end + 1'd1: begin + builder_interface1_bank_bus_dat_r <= builder_csrbank1_sram_writer_length_w; + end + 2'd2: begin + builder_interface1_bank_bus_dat_r <= builder_csrbank1_sram_writer_errors_w; + end + 2'd3: begin + builder_interface1_bank_bus_dat_r <= main_writer_status_w; + end + 3'd4: begin + builder_interface1_bank_bus_dat_r <= main_writer_pending_w; + end + 3'd5: begin + builder_interface1_bank_bus_dat_r <= builder_csrbank1_sram_writer_ev_enable0_w; + end + 3'd6: begin + builder_interface1_bank_bus_dat_r <= main_reader_start_w; + end + 3'd7: begin + builder_interface1_bank_bus_dat_r <= builder_csrbank1_sram_reader_ready_w; + end + 4'd8: begin + builder_interface1_bank_bus_dat_r <= builder_csrbank1_sram_reader_level_w; + end + 4'd9: begin + builder_interface1_bank_bus_dat_r <= builder_csrbank1_sram_reader_slot0_w; + end + 4'd10: begin + builder_interface1_bank_bus_dat_r <= builder_csrbank1_sram_reader_length0_w; + end + 4'd11: begin + builder_interface1_bank_bus_dat_r <= main_reader_eventmanager_status_w; + end + 4'd12: begin + builder_interface1_bank_bus_dat_r <= main_reader_eventmanager_pending_w; + end + 4'd13: begin + builder_interface1_bank_bus_dat_r <= builder_csrbank1_sram_reader_ev_enable0_w; + end + 4'd14: begin + builder_interface1_bank_bus_dat_r <= builder_csrbank1_preamble_crc_w; + end + 4'd15: begin + builder_interface1_bank_bus_dat_r <= builder_csrbank1_preamble_errors_w; + end + 5'd16: begin + builder_interface1_bank_bus_dat_r <= builder_csrbank1_crc_errors_w; + end + endcase + end + if (builder_csrbank1_sram_writer_ev_enable0_re) begin + main_writer_storage <= builder_csrbank1_sram_writer_ev_enable0_r; + end + main_writer_re <= builder_csrbank1_sram_writer_ev_enable0_re; + if (builder_csrbank1_sram_reader_slot0_re) begin + main_reader_slot_storage <= builder_csrbank1_sram_reader_slot0_r; + end + main_reader_slot_re <= builder_csrbank1_sram_reader_slot0_re; + if (builder_csrbank1_sram_reader_length0_re) begin + main_reader_length_storage[10:0] <= builder_csrbank1_sram_reader_length0_r; + end + main_reader_length_re <= builder_csrbank1_sram_reader_length0_re; + if (builder_csrbank1_sram_reader_ev_enable0_re) begin + main_reader_eventmanager_storage <= builder_csrbank1_sram_reader_ev_enable0_r; + end + main_reader_eventmanager_re <= builder_csrbank1_sram_reader_ev_enable0_re; + builder_interface2_bank_bus_dat_r <= 1'd0; + if (builder_csrbank2_sel) begin + case (builder_interface2_bank_bus_adr[1:0]) + 1'd0: begin + builder_interface2_bank_bus_dat_r <= builder_csrbank2_crg_reset0_w; + end + 1'd1: begin + builder_interface2_bank_bus_dat_r <= builder_csrbank2_mdio_w0_w; + end + 2'd2: begin + builder_interface2_bank_bus_dat_r <= builder_csrbank2_mdio_r_w; + end + endcase + end + if (builder_csrbank2_crg_reset0_re) begin + main_maccore_ethphy_reset_storage <= builder_csrbank2_crg_reset0_r; + end + main_maccore_ethphy_reset_re <= builder_csrbank2_crg_reset0_re; + if (builder_csrbank2_mdio_w0_re) begin + main_maccore_ethphy_storage[2:0] <= builder_csrbank2_mdio_w0_r; + end + main_maccore_ethphy_re <= builder_csrbank2_mdio_w0_re; + if (sys_rst) begin + main_maccore_maccore_reset_storage <= 1'd0; + main_maccore_maccore_reset_re <= 1'd0; + main_maccore_maccore_scratch_storage <= 32'd305419896; + main_maccore_maccore_scratch_re <= 1'd0; + main_maccore_maccore_bus_errors <= 32'd0; + main_maccore_ethphy_reset_storage <= 1'd0; + main_maccore_ethphy_reset_re <= 1'd0; + main_maccore_ethphy_counter <= 9'd0; + main_maccore_ethphy_storage <= 3'd0; + main_maccore_ethphy_re <= 1'd0; + main_preamble_errors_status <= 32'd0; + main_crc_errors_status <= 32'd0; + main_tx_cdc_graycounter0_q <= 7'd0; + main_tx_cdc_graycounter0_q_binary <= 7'd0; + main_rx_cdc_graycounter1_q <= 7'd0; + main_rx_cdc_graycounter1_q_binary <= 7'd0; + main_writer_errors_status <= 32'd0; + main_writer_storage <= 1'd0; + main_writer_re <= 1'd0; + main_writer_counter <= 32'd0; + main_writer_slot <= 1'd0; + main_writer_fifo_level <= 2'd0; + main_writer_fifo_produce <= 1'd0; + main_writer_fifo_consume <= 1'd0; + main_reader_slot_re <= 1'd0; + main_reader_length_re <= 1'd0; + main_reader_done_pending <= 1'd0; + main_reader_eventmanager_storage <= 1'd0; + main_reader_eventmanager_re <= 1'd0; + main_reader_fifo_level <= 2'd0; + main_reader_fifo_produce <= 1'd0; + main_reader_fifo_consume <= 1'd0; + main_reader_counter <= 11'd0; + main_sram0_bus_ack0 <= 1'd0; + main_sram1_bus_ack0 <= 1'd0; + main_sram0_bus_ack1 <= 1'd0; + main_sram1_bus_ack1 <= 1'd0; + main_slave_sel_r <= 4'd0; + builder_state <= 1'd0; + builder_liteethmacsramwriter_state <= 3'd0; + builder_liteethmacsramreader_state <= 2'd0; + builder_slave_sel_r <= 2'd0; + builder_count <= 20'd1000000; + end + builder_xilinxmultiregimpl0_regs0 <= main_maccore_ethphy_data_r; + builder_xilinxmultiregimpl0_regs1 <= builder_xilinxmultiregimpl0_regs0; + builder_xilinxmultiregimpl1_regs0 <= main_ps_preamble_error_toggle_i; + builder_xilinxmultiregimpl1_regs1 <= builder_xilinxmultiregimpl1_regs0; + builder_xilinxmultiregimpl2_regs0 <= main_ps_crc_error_toggle_i; + builder_xilinxmultiregimpl2_regs1 <= builder_xilinxmultiregimpl2_regs0; + builder_xilinxmultiregimpl4_regs0 <= main_tx_cdc_graycounter1_q; + builder_xilinxmultiregimpl4_regs1 <= builder_xilinxmultiregimpl4_regs0; + builder_xilinxmultiregimpl5_regs0 <= main_rx_cdc_graycounter0_q; + builder_xilinxmultiregimpl5_regs1 <= builder_xilinxmultiregimpl5_regs0; +end + +assign mii_eth_mdio = main_maccore_ethphy_data_oe ? main_maccore_ethphy_data_w : 1'bz; +assign main_maccore_ethphy_data_r = mii_eth_mdio; + +reg [11:0] storage[0:4]; +reg [11:0] memdat; +always @(posedge eth_rx_clk) begin + if (main_crc32_checker_syncfifo_wrport_we) + storage[main_crc32_checker_syncfifo_wrport_adr] <= main_crc32_checker_syncfifo_wrport_dat_w; + memdat <= storage[main_crc32_checker_syncfifo_wrport_adr]; +end + +always @(posedge eth_rx_clk) begin +end + +assign main_crc32_checker_syncfifo_wrport_dat_r = memdat; +assign main_crc32_checker_syncfifo_rdport_dat_r = storage[main_crc32_checker_syncfifo_rdport_adr]; + +reg [41:0] storage_1[0:63]; +reg [5:0] memadr; +reg [5:0] memadr_1; +always @(posedge sys_clk) begin + if (main_tx_cdc_wrport_we) + storage_1[main_tx_cdc_wrport_adr] <= main_tx_cdc_wrport_dat_w; + memadr <= main_tx_cdc_wrport_adr; +end + +always @(posedge eth_tx_clk) begin + memadr_1 <= main_tx_cdc_rdport_adr; +end + +assign main_tx_cdc_wrport_dat_r = storage_1[memadr]; +assign main_tx_cdc_rdport_dat_r = storage_1[memadr_1]; + +reg [41:0] storage_2[0:63]; +reg [5:0] memadr_2; +reg [5:0] memadr_3; +always @(posedge eth_rx_clk) begin + if (main_rx_cdc_wrport_we) + storage_2[main_rx_cdc_wrport_adr] <= main_rx_cdc_wrport_dat_w; + memadr_2 <= main_rx_cdc_wrport_adr; +end + +always @(posedge sys_clk) begin + memadr_3 <= main_rx_cdc_rdport_adr; +end + +assign main_rx_cdc_wrport_dat_r = storage_2[memadr_2]; +assign main_rx_cdc_rdport_dat_r = storage_2[memadr_3]; + +reg [34:0] storage_3[0:1]; +reg [34:0] memdat_1; +always @(posedge sys_clk) begin + if (main_writer_fifo_wrport_we) + storage_3[main_writer_fifo_wrport_adr] <= main_writer_fifo_wrport_dat_w; + memdat_1 <= storage_3[main_writer_fifo_wrport_adr]; +end + +always @(posedge sys_clk) begin +end + +assign main_writer_fifo_wrport_dat_r = memdat_1; +assign main_writer_fifo_rdport_dat_r = storage_3[main_writer_fifo_rdport_adr]; + +reg [31:0] mem[0:381]; +reg [8:0] memadr_4; +reg [31:0] memdat_2; +always @(posedge sys_clk) begin + if (main_writer_memory0_we) + mem[main_writer_memory0_adr] <= main_writer_memory0_dat_w; + memadr_4 <= main_writer_memory0_adr; +end + +always @(posedge sys_clk) begin + memdat_2 <= mem[main_sram0_adr0]; +end + +assign main_writer_memory0_dat_r = mem[memadr_4]; +assign main_sram0_dat_r0 = memdat_2; + +reg [31:0] mem_1[0:381]; +reg [8:0] memadr_5; +reg [31:0] memdat_3; +always @(posedge sys_clk) begin + if (main_writer_memory1_we) + mem_1[main_writer_memory1_adr] <= main_writer_memory1_dat_w; + memadr_5 <= main_writer_memory1_adr; +end + +always @(posedge sys_clk) begin + memdat_3 <= mem_1[main_sram1_adr0]; +end + +assign main_writer_memory1_dat_r = mem_1[memadr_5]; +assign main_sram1_dat_r0 = memdat_3; + +reg [13:0] storage_4[0:1]; +reg [13:0] memdat_4; +always @(posedge sys_clk) begin + if (main_reader_fifo_wrport_we) + storage_4[main_reader_fifo_wrport_adr] <= main_reader_fifo_wrport_dat_w; + memdat_4 <= storage_4[main_reader_fifo_wrport_adr]; +end + +always @(posedge sys_clk) begin +end + +assign main_reader_fifo_wrport_dat_r = memdat_4; +assign main_reader_fifo_rdport_dat_r = storage_4[main_reader_fifo_rdport_adr]; + +reg [31:0] mem_2[0:381]; +reg [8:0] memadr_6; +always @(posedge sys_clk) begin +end + +always @(posedge sys_clk) begin + if (main_sram0_we[0]) + mem_2[main_sram0_adr1][7:0] <= main_sram0_dat_w[7:0]; + if (main_sram0_we[1]) + mem_2[main_sram0_adr1][15:8] <= main_sram0_dat_w[15:8]; + if (main_sram0_we[2]) + mem_2[main_sram0_adr1][23:16] <= main_sram0_dat_w[23:16]; + if (main_sram0_we[3]) + mem_2[main_sram0_adr1][31:24] <= main_sram0_dat_w[31:24]; + memadr_6 <= main_sram0_adr1; +end + +assign main_reader_memory0_dat_r = mem_2[main_reader_memory0_adr]; +assign main_sram0_dat_r1 = mem_2[memadr_6]; + +reg [31:0] mem_3[0:381]; +reg [8:0] memadr_7; +always @(posedge sys_clk) begin +end + +always @(posedge sys_clk) begin + if (main_sram1_we[0]) + mem_3[main_sram1_adr1][7:0] <= main_sram1_dat_w[7:0]; + if (main_sram1_we[1]) + mem_3[main_sram1_adr1][15:8] <= main_sram1_dat_w[15:8]; + if (main_sram1_we[2]) + mem_3[main_sram1_adr1][23:16] <= main_sram1_dat_w[23:16]; + if (main_sram1_we[3]) + mem_3[main_sram1_adr1][31:24] <= main_sram1_dat_w[31:24]; + memadr_7 <= main_sram1_adr1; +end + +assign main_reader_memory1_dat_r = mem_3[main_reader_memory1_adr]; +assign main_sram1_dat_r1 = mem_3[memadr_7]; + +(* ars_ff1 = "true", async_reg = "true" *) FDPE #( + .INIT(1'd1) +) FDPE ( + .C(eth_tx_clk), + .CE(1'd1), + .D(1'd0), + .PRE(main_maccore_ethphy_reset0), + .Q(builder_rst_meta0) +); + +(* ars_ff2 = "true", async_reg = "true" *) FDPE #( + .INIT(1'd1) +) FDPE_1 ( + .C(eth_tx_clk), + .CE(1'd1), + .D(builder_rst_meta0), + .PRE(main_maccore_ethphy_reset0), + .Q(eth_tx_rst) +); + +(* ars_ff1 = "true", async_reg = "true" *) FDPE #( + .INIT(1'd1) +) FDPE_2 ( + .C(eth_rx_clk), + .CE(1'd1), + .D(1'd0), + .PRE(main_maccore_ethphy_reset0), + .Q(builder_rst_meta1) +); + +(* ars_ff2 = "true", async_reg = "true" *) FDPE #( + .INIT(1'd1) +) FDPE_3 ( + .C(eth_rx_clk), + .CE(1'd1), + .D(builder_rst_meta1), + .PRE(main_maccore_ethphy_reset0), + .Q(eth_rx_rst) +); + +endmodule diff --git a/liteeth/liteeth.core b/liteeth/liteeth.core new file mode 100644 index 0000000..6a5c719 --- /dev/null +++ b/liteeth/liteeth.core @@ -0,0 +1,15 @@ +CAPI=2: + +name : :microwatt:liteeth:0 + +generators: + liteeth_gen: + interpreter: python3 + command: fusesoc-add-files.py + description: Generate a liteeth ethernet controller + usage: | + liteeth_gen adds the pre-generated LiteX LiteEth memory controller + based on the board type. + + Parameters: + board: The board type (arty) diff --git a/microwatt.core b/microwatt.core index 83d7762..4f9820a 100644 --- a/microwatt.core +++ b/microwatt.core @@ -100,6 +100,9 @@ filesets: litedram: depend : [":microwatt:litedram"] + liteeth: + depend : [":microwatt:liteeth"] + targets: nexys_a7: default_tool: vivado @@ -141,7 +144,7 @@ targets: - no_bram - spi_flash_offset=10485760 - log_length=2048 - generate: [dram_nexys_video] + generate: [litedram_nexys_video] tools: vivado: {part : xc7a200tsbg484-1} toplevel : toplevel @@ -163,16 +166,17 @@ targets: arty_a7-35: default_tool: vivado - filesets: [core, arty_a7, soc, fpga, debug_xilinx, litedram, xilinx_specific] + filesets: [core, arty_a7, soc, fpga, debug_xilinx, litedram, liteeth, xilinx_specific] parameters : - memory_size - ram_init_file - use_litedram=true + - use_liteeth=true - disable_flatten_core - no_bram - spi_flash_offset=3145728 - log_length=512 - generate: [dram_arty] + generate: [litedram_arty, liteeth_arty] tools: vivado: {part : xc7a35ticsg324-1L} toplevel : toplevel @@ -194,16 +198,17 @@ targets: arty_a7-100: default_tool: vivado - filesets: [core, arty_a7, soc, fpga, debug_xilinx, litedram, xilinx_specific] + filesets: [core, arty_a7, soc, fpga, debug_xilinx, litedram, liteeth, xilinx_specific] parameters: - memory_size - ram_init_file - use_litedram=true + - use_liteeth=true - disable_flatten_core - no_bram - spi_flash_offset=4194304 - log_length=2048 - generate: [dram_arty] + generate: [litedram_arty, liteeth_arty] tools: vivado: {part : xc7a100ticsg324-1L} toplevel : toplevel @@ -230,11 +235,15 @@ targets: toplevel: core generate: - dram_arty: + litedram_arty: generator: litedram_gen parameters: {board : arty} - dram_nexys_video: + liteeth_arty: + generator: liteeth_gen + parameters: {board : arty} + + litedram_nexys_video: generator: litedram_gen parameters: {board : nexys-video} @@ -279,6 +288,12 @@ parameters: paramtype : generic default : false + use_liteeth: + datatype : bool + description : Use liteEth + paramtype : generic + default : false + no_bram: datatype : bool description : No internal block RAM (only DRAM and init code carrying payload) diff --git a/soc.vhdl b/soc.vhdl index c3b47bc..04ac176 100644 --- a/soc.vhdl +++ b/soc.vhdl @@ -29,6 +29,12 @@ use work.wishbone_types.all; -- External IO bus: -- 0xc8000000: LiteDRAM control (CSRs) +-- 0xc8020000: LiteEth CSRs (*) +-- 0xc8030000: LiteEth MMIO (*) + +-- (*) LiteEth must be a single aligned 32KB block as the CSRs and MMIOs +-- are actually decoded as a single wishbone which LiteEth will +-- internally split based on bit 16. -- (**) DRAM init code is currently special and goes to the external -- IO bus, this will be fixed when it's moved out of litedram and @@ -37,6 +43,7 @@ use work.wishbone_types.all; -- Interrupt numbers: -- -- 0 : UART0 +-- 1 : Ethernet entity soc is generic ( @@ -53,7 +60,8 @@ entity soc is SPI_FLASH_OFFSET : integer := 0; SPI_FLASH_DEF_CKDV : natural := 2; SPI_FLASH_DEF_QUAD : boolean := false; - LOG_LENGTH : natural := 512 + LOG_LENGTH : natural := 512; + HAS_LITEETH : boolean := false ); port( rst : in std_ulogic; @@ -68,6 +76,10 @@ entity soc is wb_ext_io_out : in wb_io_slave_out := wb_io_slave_out_init; wb_ext_is_dram_csr : out std_ulogic; wb_ext_is_dram_init : out std_ulogic; + wb_ext_is_eth : out std_ulogic; + + -- External interrupts + ext_irq_eth : in std_ulogic := '0'; -- UART0 signals: uart0_txd : out std_ulogic; @@ -181,6 +193,7 @@ architecture behaviour of soc is SLAVE_IO_EXTERNAL, SLAVE_IO_NONE); signal slave_io_dbg : slave_io_type; + begin resets: process(system_clk) @@ -298,6 +311,7 @@ begin wb_io_in.cyc <= wb_master_out.cyc; wb_master_in <= wb_io_out; end case; + end process slave_top_intercon; -- IO wishbone slave 64->32 bits converter @@ -499,6 +513,7 @@ begin wb_ext_is_dram_csr <= '0'; wb_ext_is_dram_init <= '0'; + wb_ext_is_eth <= '0'; -- Default response, ack & return all 1's wb_sio_in.dat <= (others => '1'); @@ -520,6 +535,12 @@ begin elsif wb_sio_out.adr(23 downto 16) = x"00" and HAS_DRAM then wb_ext_is_dram_csr <= '1'; ext_valid := true; + elsif wb_sio_out.adr(23 downto 16) = x"02" and HAS_LITEETH then + wb_ext_is_eth <= '1'; + ext_valid := true; + elsif wb_sio_out.adr(23 downto 16) = x"03" and HAS_LITEETH then + wb_ext_is_eth <= '1'; + ext_valid := true; end if; if ext_valid then wb_ext_io_in.cyc <= wb_sio_out.cyc; @@ -564,7 +585,8 @@ begin DRAM_INIT_SIZE => DRAM_INIT_SIZE, CLK_FREQ => CLK_FREQ, HAS_SPI_FLASH => HAS_SPI_FLASH, - SPI_FLASH_OFFSET => SPI_FLASH_OFFSET + SPI_FLASH_OFFSET => SPI_FLASH_OFFSET, + HAS_LITEETH => HAS_LITEETH ) port map( clk => system_clk, @@ -657,6 +679,7 @@ begin begin int_level_in <= (others => '0'); int_level_in(0) <= uart0_irq; + int_level_in(1) <= ext_irq_eth; end process; -- BRAM Memory slave diff --git a/syscon.vhdl b/syscon.vhdl index 96053b5..86e53ba 100644 --- a/syscon.vhdl +++ b/syscon.vhdl @@ -16,7 +16,8 @@ entity syscon is DRAM_SIZE : integer; DRAM_INIT_SIZE : integer; HAS_SPI_FLASH : boolean; - SPI_FLASH_OFFSET : integer + SPI_FLASH_OFFSET : integer; + HAS_LITEETH : boolean ); port ( clk : in std_ulogic; @@ -56,6 +57,7 @@ architecture behaviour of syscon is constant SYS_REG_INFO_HAS_DRAM : integer := 1; constant SYS_REG_INFO_HAS_BRAM : integer := 2; constant SYS_REG_INFO_HAS_SPIF : integer := 3; + constant SYS_REG_INFO_HAS_LETH : integer := 4; -- BRAMINFO contains the BRAM size in the bottom 52 bits -- DRAMINFO contains the DRAM size if any in the bottom 52 bits @@ -89,6 +91,7 @@ architecture behaviour of syscon is signal info_has_bram : std_ulogic; signal info_has_uart : std_ulogic; signal info_has_spif : std_ulogic; + signal info_has_leth : std_ulogic; signal info_clk : std_ulogic_vector(39 downto 0); signal info_fl_off : std_ulogic_vector(31 downto 0); @@ -102,16 +105,19 @@ begin core_reset <= reg_ctrl(SYS_REG_CTRL_CORE_RESET); -- Info register is hard wired - info_has_uart <= '1' when HAS_UART else '0'; - info_has_dram <= '1' when HAS_DRAM else '0'; + info_has_uart <= '1' when HAS_UART else '0'; + info_has_dram <= '1' when HAS_DRAM else '0'; info_has_bram <= '1' when BRAM_SIZE /= 0 else '0'; - info_has_spif <= '1' when HAS_SPI_FLASH else '0'; + info_has_spif <= '1' when HAS_SPI_FLASH else '0'; + info_has_leth <= '1' when HAS_LITEETH else '0'; info_clk <= std_ulogic_vector(to_unsigned(CLK_FREQ, 40)); reg_info <= (SYS_REG_INFO_HAS_UART => info_has_uart, SYS_REG_INFO_HAS_DRAM => info_has_dram, SYS_REG_INFO_HAS_BRAM => info_has_bram, SYS_REG_INFO_HAS_SPIF => info_has_spif, + SYS_REG_INFO_HAS_LETH => info_has_leth, others => '0'); + reg_braminfo <= x"000" & std_ulogic_vector(to_unsigned(BRAM_SIZE, 52)); reg_draminfo <= x"000" & std_ulogic_vector(to_unsigned(DRAM_SIZE, 52)) when HAS_DRAM else (others => '0');